Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'release/scripts/startup')
-rw-r--r--release/scripts/startup/bl_operators/animsys_update.py1
-rw-r--r--release/scripts/startup/bl_operators/image.py2
-rw-r--r--release/scripts/startup/bl_operators/nla.py9
-rw-r--r--release/scripts/startup/bl_operators/object.py8
-rw-r--r--release/scripts/startup/bl_operators/object_quick_effects.py12
-rw-r--r--release/scripts/startup/bl_operators/sequencer.py4
-rw-r--r--release/scripts/startup/bl_operators/uvcalc_follow_active.py4
-rw-r--r--release/scripts/startup/bl_operators/uvcalc_lightmap.py2
-rw-r--r--release/scripts/startup/bl_operators/uvcalc_smart_project.py4
-rw-r--r--release/scripts/startup/bl_operators/wm.py67
-rw-r--r--release/scripts/startup/bl_ui/properties_animviz.py36
-rw-r--r--release/scripts/startup/bl_ui/properties_data_armature.py70
-rw-r--r--release/scripts/startup/bl_ui/properties_data_bone.py86
-rw-r--r--release/scripts/startup/bl_ui/properties_data_camera.py28
-rw-r--r--release/scripts/startup/bl_ui/properties_data_curve.py111
-rw-r--r--release/scripts/startup/bl_ui/properties_data_empty.py12
-rw-r--r--release/scripts/startup/bl_ui/properties_data_lamp.py110
-rw-r--r--release/scripts/startup/bl_ui/properties_data_mesh.py83
-rw-r--r--release/scripts/startup/bl_ui/properties_data_metaball.py32
-rw-r--r--release/scripts/startup/bl_ui/properties_data_modifier.py381
-rw-r--r--release/scripts/startup/bl_ui/properties_data_speaker.py2
-rw-r--r--release/scripts/startup/bl_ui/properties_game.py229
-rw-r--r--release/scripts/startup/bl_ui/properties_material.py181
-rw-r--r--release/scripts/startup/bl_ui/properties_object.py98
-rw-r--r--release/scripts/startup/bl_ui/properties_object_constraint.py222
-rw-r--r--release/scripts/startup/bl_ui/properties_particle.py243
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_cloth.py60
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_common.py62
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_field.py62
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_fluid.py98
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_smoke.py44
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_softbody.py58
-rw-r--r--release/scripts/startup/bl_ui/properties_render.py151
-rw-r--r--release/scripts/startup/bl_ui/properties_scene.py44
-rw-r--r--release/scripts/startup/bl_ui/properties_texture.py267
-rw-r--r--release/scripts/startup/bl_ui/properties_world.py29
-rw-r--r--release/scripts/startup/bl_ui/space_console.py3
-rw-r--r--release/scripts/startup/bl_ui/space_dopesheet.py59
-rw-r--r--release/scripts/startup/bl_ui/space_graph.py57
-rw-r--r--release/scripts/startup/bl_ui/space_image.py87
-rw-r--r--release/scripts/startup/bl_ui/space_info.py134
-rw-r--r--release/scripts/startup/bl_ui/space_logic.py9
-rw-r--r--release/scripts/startup/bl_ui/space_nla.py41
-rw-r--r--release/scripts/startup/bl_ui/space_node.py17
-rw-r--r--release/scripts/startup/bl_ui/space_sequencer.py199
-rw-r--r--release/scripts/startup/bl_ui/space_text.py23
-rw-r--r--release/scripts/startup/bl_ui/space_time.py23
-rw-r--r--release/scripts/startup/bl_ui/space_userpref.py320
-rw-r--r--release/scripts/startup/bl_ui/space_userpref_keymap.py23
-rw-r--r--release/scripts/startup/bl_ui/space_view3d.py568
-rw-r--r--release/scripts/startup/bl_ui/space_view3d_toolbar.py54
51 files changed, 2417 insertions, 2112 deletions
diff --git a/release/scripts/startup/bl_operators/animsys_update.py b/release/scripts/startup/bl_operators/animsys_update.py
index 3710c57ac16..23b9cf13f07 100644
--- a/release/scripts/startup/bl_operators/animsys_update.py
+++ b/release/scripts/startup/bl_operators/animsys_update.py
@@ -685,7 +685,6 @@ data_path_update = [
]
-import bpy
from bpy.types import Operator
diff --git a/release/scripts/startup/bl_operators/image.py b/release/scripts/startup/bl_operators/image.py
index 9226cbed51b..2b190e1aee1 100644
--- a/release/scripts/startup/bl_operators/image.py
+++ b/release/scripts/startup/bl_operators/image.py
@@ -74,7 +74,7 @@ class EditExternally(Operator):
if not os.path.exists(filepath):
self.report({'ERROR'},
"Image path %r not found, image may be packed or "
- "unsaved." % filepath)
+ "unsaved" % filepath)
return {'CANCELLED'}
cmd = self._editor_guess(context) + [filepath]
diff --git a/release/scripts/startup/bl_operators/nla.py b/release/scripts/startup/bl_operators/nla.py
index c764f7d62f1..feb0016b1c7 100644
--- a/release/scripts/startup/bl_operators/nla.py
+++ b/release/scripts/startup/bl_operators/nla.py
@@ -271,7 +271,8 @@ class BakeAction(Operator):
class ClearUselessActions(Operator):
- '''Mark actions with no F-Curves for deletion after save+reload of file preserving "action libraries"'''
+ '''Mark actions with no F-Curves for deletion after save+reload of ''' \
+ '''file preserving "action libraries"'''
bl_idname = "anim.clear_useless_actions"
bl_label = "Clear Useless Actions"
bl_options = {'REGISTER', 'UNDO'}
@@ -292,12 +293,14 @@ class ClearUselessActions(Operator):
if ((self.only_unused is False) or
(action.use_fake_user and action.users == 1)):
- # if it has F-Curves, then it's a "action library" (i.e. walk, wave, jump, etc.)
+ # if it has F-Curves, then it's a "action library"
+ # (i.e. walk, wave, jump, etc.)
# and should be left alone as that's what fake users are for!
if not action.fcurves:
# mark action for deletion
action.user_clear()
removed += 1
- self.report({'INFO'}, "Removed %d empty and/or fake-user only Actions" % (removed))
+ self.report({'INFO'}, "Removed %d empty and/or fake-user only Actions"
+ % removed)
return {'FINISHED'}
diff --git a/release/scripts/startup/bl_operators/object.py b/release/scripts/startup/bl_operators/object.py
index 6c9f27afaa5..d7c6cfc0565 100644
--- a/release/scripts/startup/bl_operators/object.py
+++ b/release/scripts/startup/bl_operators/object.py
@@ -283,11 +283,11 @@ class ShapeTransfer(Operator):
),
('RELATIVE_FACE',
"Relative Face",
- "Calculate relative position (using faces).",
+ "Calculate relative position (using faces)",
),
('RELATIVE_EDGE',
"Relative Edge",
- "Calculate relative position (using edges).",
+ "Calculate relative position (using edges)",
),
),
name="Transformation Mode",
@@ -297,7 +297,7 @@ class ShapeTransfer(Operator):
use_clamp = BoolProperty(
name="Clamp Offset",
description=("Clamp the transformation to the distance each "
- "vertex moves in the original shape."),
+ "vertex moves in the original shape"),
default=False,
)
@@ -503,7 +503,7 @@ class ShapeTransfer(Operator):
ob_act, objects = objects[0], [ob_act]
if ob_act.type != 'MESH':
- self.report({'ERROR'}, "Other object is not a mesh.")
+ self.report({'ERROR'}, "Other object is not a mesh")
return {'CANCELLED'}
if ob_act.active_shape_key is None:
diff --git a/release/scripts/startup/bl_operators/object_quick_effects.py b/release/scripts/startup/bl_operators/object_quick_effects.py
index 48b547980d4..c13a04eb87a 100644
--- a/release/scripts/startup/bl_operators/object_quick_effects.py
+++ b/release/scripts/startup/bl_operators/object_quick_effects.py
@@ -77,7 +77,7 @@ class QuickFur(Operator):
if obj.type == 'MESH']
if not mesh_objects:
- self.report({'ERROR'}, "Select at least one mesh object.")
+ self.report({'ERROR'}, "Select at least one mesh object")
return {'CANCELLED'}
mat = bpy.data.materials.new("Fur Material")
@@ -157,7 +157,7 @@ class QuickExplode(Operator):
fade = BoolProperty(
name="Fade",
- description="Fade the pieces over time.",
+ description="Fade the pieces over time",
default=True,
)
@@ -307,7 +307,7 @@ class QuickSmoke(Operator):
show_flows = BoolProperty(
name="Render Smoke Objects",
- description="Keep the smoke objects visible during rendering.",
+ description="Keep the smoke objects visible during rendering",
default=False,
)
@@ -319,7 +319,7 @@ class QuickSmoke(Operator):
max_co = -min_co
if not mesh_objects:
- self.report({'ERROR'}, "Select at least one mesh object.")
+ self.report({'ERROR'}, "Select at least one mesh object")
return {'CANCELLED'}
for obj in mesh_objects:
@@ -428,7 +428,7 @@ class QuickFluid(Operator):
)
show_flows = BoolProperty(
name="Render Fluid Objects",
- description="Keep the fluid objects visible during rendering.",
+ description="Keep the fluid objects visible during rendering",
default=False,
)
start_baking = BoolProperty(
@@ -446,7 +446,7 @@ class QuickFluid(Operator):
max_co = Vector((-100000, -100000, -100000))
if not mesh_objects:
- self.report({'ERROR'}, "Select at least one mesh object.")
+ self.report({'ERROR'}, "Select at least one mesh object")
return {'CANCELLED'}
for obj in mesh_objects:
diff --git a/release/scripts/startup/bl_operators/sequencer.py b/release/scripts/startup/bl_operators/sequencer.py
index 856e182279a..53654ffbc6f 100644
--- a/release/scripts/startup/bl_operators/sequencer.py
+++ b/release/scripts/startup/bl_operators/sequencer.py
@@ -51,7 +51,7 @@ class SequencerCrossfadeSounds(Operator):
seq2 = None
break
if seq2 is None:
- self.report({'ERROR'}, "Select 2 sound strips.")
+ self.report({'ERROR'}, "Select 2 sound strips")
return {'CANCELLED'}
if seq1.frame_final_start > seq2.frame_final_start:
s = seq1
@@ -71,7 +71,7 @@ class SequencerCrossfadeSounds(Operator):
context.scene.frame_current = tempcfra
return {'FINISHED'}
else:
- self.report({'ERROR'}, "The selected strips don't overlap.")
+ self.report({'ERROR'}, "The selected strips don't overlap")
return {'CANCELLED'}
diff --git a/release/scripts/startup/bl_operators/uvcalc_follow_active.py b/release/scripts/startup/bl_operators/uvcalc_follow_active.py
index 6c258d094e8..05656f5397d 100644
--- a/release/scripts/startup/bl_operators/uvcalc_follow_active.py
+++ b/release/scripts/startup/bl_operators/uvcalc_follow_active.py
@@ -140,7 +140,7 @@ def extend(obj, operator, EXTEND_MODE):
face_act = me.faces.active
if face_act == -1:
- operator.report({'ERROR'}, "No active face.")
+ operator.report({'ERROR'}, "No active face")
return
face_sel = [f for f in me.faces if len(f.vertices) == 4 and f.select]
@@ -152,7 +152,7 @@ def extend(obj, operator, EXTEND_MODE):
break
if face_act_local_index == -1:
- operator.report({'ERROR'}, "Active face not selected.")
+ operator.report({'ERROR'}, "Active face not selected")
return
# Modes
diff --git a/release/scripts/startup/bl_operators/uvcalc_lightmap.py b/release/scripts/startup/bl_operators/uvcalc_lightmap.py
index 060fe400045..d9cdb1794c2 100644
--- a/release/scripts/startup/bl_operators/uvcalc_lightmap.py
+++ b/release/scripts/startup/bl_operators/uvcalc_lightmap.py
@@ -531,7 +531,7 @@ def unwrap(operator, context, **kwargs):
meshes = list({me for obj in context.selected_objects if obj.type == 'MESH' for me in (obj.data,) if me.faces and me.library is None})
if not meshes:
- operator.report({'ERROR'}, "No mesh object.")
+ operator.report({'ERROR'}, "No mesh object")
return {'CANCELLED'}
lightmap_uvpack(meshes, **kwargs)
diff --git a/release/scripts/startup/bl_operators/uvcalc_smart_project.py b/release/scripts/startup/bl_operators/uvcalc_smart_project.py
index 23838588f43..c4466e6453f 100644
--- a/release/scripts/startup/bl_operators/uvcalc_smart_project.py
+++ b/release/scripts/startup/bl_operators/uvcalc_smart_project.py
@@ -1070,11 +1070,11 @@ def main(context,
# We want to pack all in 1 go, so pack now
if USER_SHARE_SPACE:
-#XXX Window.DrawProgressBar(0.9, "Box Packing for all objects...")
+#XXX Window.DrawProgressBar(0.9, "Box Packing for all objects...")
packIslands(collected_islandList)
print("Smart Projection time: %.2f" % (time.time() - time1))
- # Window.DrawProgressBar(0.9, "Smart Projections done, time: %.2f sec." % (time.time() - time1))
+ # Window.DrawProgressBar(0.9, "Smart Projections done, time: %.2f sec" % (time.time() - time1))
if is_editmode:
bpy.ops.object.mode_set(mode='EDIT')
diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py
index aa09a088c4f..fae38eb1cef 100644
--- a/release/scripts/startup/bl_operators/wm.py
+++ b/release/scripts/startup/bl_operators/wm.py
@@ -218,7 +218,7 @@ class WM_OT_context_scale_int(Operator):
)
always_step = BoolProperty(
name="Always Step",
- description="Always adjust the value by a minimum of 1 when 'value' is not 1.0.",
+ description="Always adjust the value by a minimum of 1 when 'value' is not 1.0",
default=True,
)
@@ -567,7 +567,7 @@ doc_new = StringProperty(
)
data_path_iter = StringProperty(
- description="The data path relative to the context, must point to an iterable.")
+ description="The data path relative to the context, must point to an iterable")
data_path_item = StringProperty(
description="The data path from each iterable to the value (int or float)")
@@ -1144,6 +1144,67 @@ class WM_OT_sysinfo(Operator):
return {'FINISHED'}
+class WM_OT_get_messages(Operator):
+ bl_idname = "wm.get_messages"
+ bl_label = "Get Messages"
+
+ def _putMessage(self, messages, msg):
+ if len(msg):
+ messages[msg] = True
+
+ def _walkProperties(self, properties, messages):
+ for prop in properties:
+ self._putMessage(messages, prop.name)
+ self._putMessage(messages, prop.description)
+
+ if isinstance(prop, bpy.types.EnumProperty):
+ for item in prop.enum_items:
+ self._putMessage(messages, item.name)
+ self._putMessage(messages, item.description)
+
+ def _walkRNA(self, bl_rna, messages):
+ if bl_rna.name and bl_rna.name != bl_rna.identifier:
+ self._putMessage(messages, bl_rna.name)
+
+ if bl_rna.description:
+ self._putMessage(messages, bl_rna.description)
+
+ self._walkProperties(bl_rna.properties, messages)
+
+ def _walkClass(self, cls, messages):
+ self._walkRNA(cls.bl_rna, messages)
+
+ def _walk_keymap_hierarchy(self, hier, messages):
+ for lvl in hier:
+ self._putMessage(messages, lvl[0])
+
+ if lvl[3]:
+ self._walk_keymap_hierarchy(lvl[3], messages)
+
+ def execute(self, context):
+ messages = {}
+
+ for cls in type(bpy.context).__base__.__subclasses__():
+ self._walkClass(cls, messages)
+
+ for cls in bpy.types.Space.__subclasses__():
+ self._walkClass(cls, messages)
+
+ for cls in bpy.types.Operator.__subclasses__():
+ self._walkClass(cls, messages)
+
+ from bl_ui.space_userpref_keymap import KM_HIERARCHY
+
+ self._walk_keymap_hierarchy(KM_HIERARCHY, messages)
+
+ text = bpy.data.texts.new(name="messages.txt")
+ for message in messages:
+ text.write(message + "\n")
+ self._walkClass(bpy.types.SpaceDopeSheetEditor, messages)
+
+ return {'FINISHED'}
+
+
class WM_OT_copy_prev_settings(Operator):
'''Copy settings from previous version'''
bl_idname = "wm.copy_prev_settings"
@@ -1175,7 +1236,7 @@ class WM_OT_copy_prev_settings(Operator):
if bpy.data.is_saved is bpy.data.is_dirty is False:
bpy.ops.wm.read_homefile()
else:
- self.report({'INFO'}, "Reload Start-Up file to restore settings.")
+ self.report({'INFO'}, "Reload Start-Up file to restore settings")
return {'FINISHED'}
return {'CANCELLED'}
diff --git a/release/scripts/startup/bl_ui/properties_animviz.py b/release/scripts/startup/bl_ui/properties_animviz.py
index 3b33a7ccc61..499ea4c95d4 100644
--- a/release/scripts/startup/bl_ui/properties_animviz.py
+++ b/release/scripts/startup/bl_ui/properties_animviz.py
@@ -23,7 +23,7 @@
# NOTE:
# The specialised panel types are derived in their respective UI modules
# dont register these classes since they are only helpers.
-
+from blf import gettext as _
class MotionPathButtonsPanel():
bl_space_type = 'PROPERTIES'
@@ -43,23 +43,23 @@ class MotionPathButtonsPanel():
col = split.column()
sub = col.column(align=True)
if (mps.type == 'CURRENT_FRAME'):
- sub.prop(mps, "frame_before", text="Before")
- sub.prop(mps, "frame_after", text="After")
+ sub.prop(mps, "frame_before", text=_("Before"))
+ sub.prop(mps, "frame_after", text=_("After"))
elif (mps.type == 'RANGE'):
- sub.prop(mps, "frame_start", text="Start")
- sub.prop(mps, "frame_end", text="End")
+ sub.prop(mps, "frame_start", text=_("Start"))
+ sub.prop(mps, "frame_end", text=_("End"))
- sub.prop(mps, "frame_step", text="Step")
+ sub.prop(mps, "frame_step", text=_("Step"))
if bones:
col.row().prop(mps, "bake_location", expand=True)
col = split.column()
- col.label(text="Display:")
- col.prop(mps, "show_frame_numbers", text="Frame Numbers")
- col.prop(mps, "show_keyframe_highlight", text="Keyframes")
+ col.label(text=_("Display:"))
+ col.prop(mps, "show_frame_numbers", text=_("Frame Numbers"))
+ col.prop(mps, "show_keyframe_highlight", text=_("Keyframes"))
if bones:
- col.prop(mps, "show_keyframe_action_all", text="+ Non-Grouped Keyframes")
- col.prop(mps, "show_keyframe_numbers", text="Keyframe Numbers")
+ col.prop(mps, "show_keyframe_action_all", text=_("+ Non-Grouped Keyframes"))
+ col.prop(mps, "show_keyframe_numbers", text=_("Keyframe Numbers"))
# FIXME: this panel still needs to be ported so that it will work correctly with animviz
@@ -82,16 +82,16 @@ class OnionSkinButtonsPanel():
sub = col.column(align=True)
if arm.ghost_type == 'RANGE':
- sub.prop(arm, "ghost_frame_start", text="Start")
- sub.prop(arm, "ghost_frame_end", text="End")
- sub.prop(arm, "ghost_size", text="Step")
+ sub.prop(arm, "ghost_frame_start", text=_("Start"))
+ sub.prop(arm, "ghost_frame_end", text=_("End"))
+ sub.prop(arm, "ghost_size", text=_("Step"))
elif arm.ghost_type == 'CURRENT_FRAME':
- sub.prop(arm, "ghost_step", text="Range")
- sub.prop(arm, "ghost_size", text="Step")
+ sub.prop(arm, "ghost_step", text=_("Range"))
+ sub.prop(arm, "ghost_size", text=_("Step"))
col = split.column()
- col.label(text="Display:")
- col.prop(arm, "show_only_ghost_selected", text="Selected Only")
+ col.label(text=_("Display:"))
+ col.prop(arm, "show_only_ghost_selected", text=_("Selected Only"))
if __name__ == "__main__": # only for live edit.
import bpy
diff --git a/release/scripts/startup/bl_ui/properties_data_armature.py b/release/scripts/startup/bl_ui/properties_data_armature.py
index 463ba84470f..e5729a24b91 100644
--- a/release/scripts/startup/bl_ui/properties_data_armature.py
+++ b/release/scripts/startup/bl_ui/properties_data_armature.py
@@ -20,7 +20,7 @@
import bpy
from bpy.types import Panel, Menu
from rna_prop_ui import PropertyPanel
-
+from blf import gettext as _
class ArmatureButtonsPanel():
bl_space_type = 'PROPERTIES'
@@ -60,20 +60,21 @@ class DATA_PT_skeleton(ArmatureButtonsPanel, Panel):
layout.prop(arm, "pose_position", expand=True)
col = layout.column()
- col.label(text="Layers:")
+ col.label(text=_("Layers:"))
col.prop(arm, "layers", text="")
- col.label(text="Protected Layers:")
+ col.label(text=_("Protected Layers:"))
col.prop(arm, "layers_protected", text="")
layout.label(text="Deform:")
flow = layout.column_flow()
- flow.prop(arm, "use_deform_vertex_groups", text="Vertex Groups")
- flow.prop(arm, "use_deform_envelopes", text="Envelopes")
- flow.prop(arm, "use_deform_preserve_volume", text="Quaternion")
+ flow.prop(arm, "use_deform_vertex_groups", text=_("Vertex Groups"))
+ flow.prop(arm, "use_deform_envelopes", text=_("Envelopes"))
+ flow.prop(arm, "use_deform_preserve_volume", text=_("Quaternion"))
if context.scene.render.engine == "BLENDER_GAME":
layout.row().prop(arm, "vert_deformer", expand=True)
+
class DATA_PT_display(ArmatureButtonsPanel, Panel):
bl_label = "Display"
@@ -88,15 +89,15 @@ class DATA_PT_display(ArmatureButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.prop(arm, "show_names", text="Names")
- col.prop(arm, "show_axes", text="Axes")
- col.prop(arm, "show_bone_custom_shapes", text="Shapes")
+ col.prop(arm, "show_names", text=_("Names"))
+ col.prop(arm, "show_axes", text=_("Axes"))
+ col.prop(arm, "show_bone_custom_shapes", text=_("Shapes"))
col = split.column()
- col.prop(arm, "show_group_colors", text="Colors")
+ col.prop(arm, "show_group_colors", text=_("Colors"))
if ob:
- col.prop(ob, "show_x_ray", text="X-Ray")
- col.prop(arm, "use_deform_delay", text="Delay Refresh")
+ col.prop(ob, "show_x_ray", text=_("X-Ray"))
+ col.prop(arm, "use_deform_delay", text=_("Delay Refresh"))
class DATA_PT_bone_group_specials(Menu):
@@ -160,12 +161,12 @@ class DATA_PT_bone_groups(ArmatureButtonsPanel, Panel):
row.active = (ob.proxy is None)
sub = row.row(align=True)
- sub.operator("pose.group_assign", text="Assign")
- sub.operator("pose.group_unassign", text="Remove") # row.operator("pose.bone_group_remove_from", text="Remove")
+ sub.operator("pose.group_assign", text=_("Assign"))
+ sub.operator("pose.group_unassign", text=_("Remove")) # row.operator("pose.bone_group_remove_from", text=_("Remove"))
sub = row.row(align=True)
- sub.operator("pose.group_select", text="Select")
- sub.operator("pose.group_deselect", text="Deselect")
+ sub.operator("pose.group_select", text=_("Select"))
+ sub.operator("pose.group_deselect", text=_("Deselect"))
class DATA_PT_pose_library(ArmatureButtonsPanel, Panel):
@@ -185,11 +186,10 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, Panel):
layout.template_ID(ob, "pose_library", new="poselib.new", unlink="poselib.unlink")
if poselib:
-
- # list of poses in pose library
+ # list of poses in pose library
row = layout.row()
row.template_list(poselib, "pose_markers", poselib.pose_markers, "active_index", rows=5)
-
+
# column of operators for active pose
# - goes beside list
col = row.column(align=True)
@@ -206,9 +206,9 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, Panel):
if pose_marker_active is not None:
col.operator("poselib.pose_remove", icon='ZOOMOUT', text="").pose = pose_marker_active.name
col.operator("poselib.apply_pose", icon='ZOOM_SELECTED', text="").pose_index = poselib.pose_markers.active_index
-
- col.operator("poselib.action_sanitise", icon='HELP', text="") # XXX: put in menu?
-
+
+ col.operator("poselib.action_sanitise", icon='HELP', text="") # XXX: put in menu?
+
# properties for active marker
if pose_marker_active is not None:
layout.prop(pose_marker_active, "name")
@@ -230,16 +230,16 @@ class DATA_PT_ghost(ArmatureButtonsPanel, Panel):
col = split.column(align=True)
if arm.ghost_type == 'RANGE':
- col.prop(arm, "ghost_frame_start", text="Start")
- col.prop(arm, "ghost_frame_end", text="End")
- col.prop(arm, "ghost_size", text="Step")
+ col.prop(arm, "ghost_frame_start", text=_("Start"))
+ col.prop(arm, "ghost_frame_end", text=_("End"))
+ col.prop(arm, "ghost_size", text=_("Step"))
elif arm.ghost_type == 'CURRENT_FRAME':
- col.prop(arm, "ghost_step", text="Range")
- col.prop(arm, "ghost_size", text="Step")
+ col.prop(arm, "ghost_step", text=_("Range"))
+ col.prop(arm, "ghost_size", text=_("Step"))
col = split.column()
- col.label(text="Display:")
- col.prop(arm, "show_only_ghost_selected", text="Selected Only")
+ col.label(text=_("Display:"))
+ col.prop(arm, "show_only_ghost_selected", text=_("Selected Only"))
class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, Panel):
@@ -263,7 +263,7 @@ class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, Panel):
layout.prop(itasc, "mode", expand=True)
simulation = (itasc.mode == 'SIMULATION')
if simulation:
- layout.label(text="Reiteration:")
+ layout.label(text=_("Reiteration:"))
layout.prop(itasc, "reiteration_method", expand=True)
row = layout.row()
@@ -275,8 +275,8 @@ class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, Panel):
layout.prop(itasc, "use_auto_step")
row = layout.row()
if itasc.use_auto_step:
- row.prop(itasc, "step_min", text="Min")
- row.prop(itasc, "step_max", text="Max")
+ row.prop(itasc, "step_min", text=_("Min"))
+ row.prop(itasc, "step_max", text=_("Max"))
else:
row.prop(itasc, "step_count")
@@ -286,7 +286,7 @@ class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, Panel):
layout.prop(itasc, "velocity_max")
if itasc.solver == 'DLS':
row = layout.row()
- row.prop(itasc, "damping_max", text="Damp", slider=True)
+ row.prop(itasc, "damping_max", text=_("Damp"), slider=True)
row.prop(itasc, "damping_epsilon", text="Eps", slider=True)
from bl_ui.properties_animviz import (
@@ -314,8 +314,8 @@ class DATA_PT_motion_paths(MotionPathButtonsPanel, Panel):
layout.separator()
split = layout.split()
- split.operator("pose.paths_calculate", text="Calculate Paths")
- split.operator("pose.paths_clear", text="Clear Paths")
+ split.operator("pose.paths_calculate", text=_("Calculate Paths"))
+ split.operator("pose.paths_clear", text=_("Clear Paths"))
class DATA_PT_onion_skinning(OnionSkinButtonsPanel): # , Panel): # inherit from panel when ready
diff --git a/release/scripts/startup/bl_ui/properties_data_bone.py b/release/scripts/startup/bl_ui/properties_data_bone.py
index b3eaf88d5bf..2c9b31fd88d 100644
--- a/release/scripts/startup/bl_ui/properties_data_bone.py
+++ b/release/scripts/startup/bl_ui/properties_data_bone.py
@@ -21,7 +21,7 @@
import bpy
from bpy.types import Panel
from rna_prop_ui import PropertyPanel
-
+from blf import gettext as _
class BoneButtonsPanel():
bl_space_type = 'PROPERTIES'
@@ -76,14 +76,14 @@ class BONE_PT_transform(BoneButtonsPanel, Panel):
col = row.column()
if pchan.rotation_mode == 'QUATERNION':
- col.prop(pchan, "rotation_quaternion", text="Rotation")
+ col.prop(pchan, "rotation_quaternion", text=_("Rotation"))
elif pchan.rotation_mode == 'AXIS_ANGLE':
- #col.label(text="Rotation")
- #col.prop(pchan, "rotation_angle", text="Angle")
- #col.prop(pchan, "rotation_axis", text="Axis")
- col.prop(pchan, "rotation_axis_angle", text="Rotation")
+ #col.label(text=_("Rotation"))
+ #col.prop(pchan, "rotation_angle", text=_("Angle"))
+ #col.prop(pchan, "rotation_axis", text=_("Axis"))
+ col.prop(pchan, "rotation_axis_angle", text=_("Rotation"))
else:
- col.prop(pchan, "rotation_euler", text="Rotation")
+ col.prop(pchan, "rotation_euler", text=_("Rotation"))
row.column().prop(pchan, "scale")
@@ -97,7 +97,7 @@ class BONE_PT_transform(BoneButtonsPanel, Panel):
col = row.column()
sub = col.column(align=True)
- sub.label(text="Roll:")
+ sub.label(text=_("Roll:"))
sub.prop(bone, "roll", text="")
sub.label()
sub.prop(bone, "lock")
@@ -126,12 +126,12 @@ class BONE_PT_transform_locks(BoneButtonsPanel, Panel):
col = row.column()
if pchan.rotation_mode in {'QUATERNION', 'AXIS_ANGLE'}:
- col.prop(pchan, "lock_rotations_4d", text="Lock Rotation")
+ col.prop(pchan, "lock_rotations_4d", text=_("Lock Rotation"))
if pchan.lock_rotations_4d:
col.prop(pchan, "lock_rotation_w", text="W")
col.prop(pchan, "lock_rotation", text="")
else:
- col.prop(pchan, "lock_rotation", text="Rotation")
+ col.prop(pchan, "lock_rotation", text=_("Rotation"))
row.column().prop(pchan, "lock_scale")
@@ -155,17 +155,17 @@ class BONE_PT_relations(BoneButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Layers:")
+ col.label(text=_("Layers:"))
col.prop(bone, "layers", text="")
col.separator()
if ob and pchan:
- col.label(text="Bone Group:")
+ col.label(text=_("Bone Group:"))
col.prop_search(pchan, "bone_group", ob.pose, "bone_groups", text="")
col = split.column()
- col.label(text="Parent:")
+ col.label(text=_("Parent:"))
if context.bone:
col.prop(bone, "parent", text="")
else:
@@ -174,11 +174,11 @@ class BONE_PT_relations(BoneButtonsPanel, Panel):
sub = col.column()
sub.active = (bone.parent is not None)
sub.prop(bone, "use_connect")
- sub.prop(bone, "use_inherit_rotation", text="Inherit Rotation")
- sub.prop(bone, "use_inherit_scale", text="Inherit Scale")
+ sub.prop(bone, "use_inherit_rotation", text=_("Inherit Rotation"))
+ sub.prop(bone, "use_inherit_scale", text=_("Inherit Scale"))
sub = col.column()
sub.active = (not bone.parent or not bone.use_connect)
- sub.prop(bone, "use_local_location", text="Local Location")
+ sub.prop(bone, "use_local_location", text=_("Local Location"))
class BONE_PT_display(BoneButtonsPanel, Panel):
@@ -206,16 +206,16 @@ class BONE_PT_display(BoneButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.prop(bone, "show_wire", text="Wireframe")
- col.prop(bone, "hide", text="Hide")
+ col.prop(bone, "show_wire", text=_("Wireframe"))
+ col.prop(bone, "hide", text=_("Hide"))
if pchan:
col = split.column()
- col.label(text="Custom Shape:")
+ col.label(text=_("Custom Shape:"))
col.prop(pchan, "custom_shape", text="")
if pchan.custom_shape:
- col.prop_search(pchan, "custom_shape_transform", ob.pose, "bones", text="At")
+ col.prop_search(pchan, "custom_shape_transform", ob.pose, "bones", text=_("At"))
class BONE_PT_inverse_kinematics(BoneButtonsPanel, Panel):
@@ -241,13 +241,13 @@ class BONE_PT_inverse_kinematics(BoneButtonsPanel, Panel):
split.prop(pchan, "lock_ik_x", icon='LOCKED' if pchan.lock_ik_x else 'UNLOCKED', text="X")
split.active = pchan.is_in_ik_chain
row = split.row()
- row.prop(pchan, "ik_stiffness_x", text="Stiffness", slider=True)
+ row.prop(pchan, "ik_stiffness_x", text=_("Stiffness"), slider=True)
row.active = pchan.lock_ik_x == False and pchan.is_in_ik_chain
split = layout.split(percentage=0.25)
sub = split.row()
- sub.prop(pchan, "use_ik_limit_x", text="Limit")
+ sub.prop(pchan, "use_ik_limit_x", text=_("Limit"))
sub.active = pchan.lock_ik_x == False and pchan.is_in_ik_chain
sub = split.row(align=True)
sub.prop(pchan, "ik_min_x", text="")
@@ -258,13 +258,13 @@ class BONE_PT_inverse_kinematics(BoneButtonsPanel, Panel):
split.prop(pchan, "lock_ik_y", icon='LOCKED' if pchan.lock_ik_y else 'UNLOCKED', text="Y")
split.active = pchan.is_in_ik_chain
row = split.row()
- row.prop(pchan, "ik_stiffness_y", text="Stiffness", slider=True)
+ row.prop(pchan, "ik_stiffness_y", text=_("Stiffness"), slider=True)
row.active = pchan.lock_ik_y == False and pchan.is_in_ik_chain
split = layout.split(percentage=0.25)
sub = split.row()
- sub.prop(pchan, "use_ik_limit_y", text="Limit")
+ sub.prop(pchan, "use_ik_limit_y", text=_("Limit"))
sub.active = pchan.lock_ik_y == False and pchan.is_in_ik_chain
sub = split.row(align=True)
@@ -276,13 +276,13 @@ class BONE_PT_inverse_kinematics(BoneButtonsPanel, Panel):
split.prop(pchan, "lock_ik_z", icon='LOCKED' if pchan.lock_ik_z else 'UNLOCKED', text="Z")
split.active = pchan.is_in_ik_chain
sub = split.row()
- sub.prop(pchan, "ik_stiffness_z", text="Stiffness", slider=True)
+ sub.prop(pchan, "ik_stiffness_z", text=_("Stiffness"), slider=True)
sub.active = pchan.lock_ik_z == False and pchan.is_in_ik_chain
split = layout.split(percentage=0.25)
sub = split.row()
- sub.prop(pchan, "use_ik_limit_z", text="Limit")
+ sub.prop(pchan, "use_ik_limit_z", text=_("Limit"))
sub.active = pchan.lock_ik_z == False and pchan.is_in_ik_chain
sub = split.row(align=True)
sub.prop(pchan, "ik_min_z", text="")
@@ -290,7 +290,7 @@ class BONE_PT_inverse_kinematics(BoneButtonsPanel, Panel):
sub.active = pchan.lock_ik_z == False and pchan.use_ik_limit_z and pchan.is_in_ik_chain
split = layout.split(percentage=0.25)
- split.label(text="Stretch:")
+ split.label(text=_("Stretch:"))
sub = split.row()
sub.prop(pchan, "ik_stretch", text="", slider=True)
sub.active = pchan.is_in_ik_chain
@@ -298,15 +298,15 @@ class BONE_PT_inverse_kinematics(BoneButtonsPanel, Panel):
if ob.pose.ik_solver == 'ITASC':
split = layout.split()
col = split.column()
- col.prop(pchan, "use_ik_rotation_control", text="Control Rotation")
+ col.prop(pchan, "use_ik_rotation_control", text=_("Control Rotation"))
col.active = pchan.is_in_ik_chain
col = split.column()
- col.prop(pchan, "ik_rotation_weight", text="Weight", slider=True)
+ col.prop(pchan, "ik_rotation_weight", text=_("Weight"), slider=True)
col.active = pchan.is_in_ik_chain
# not supported yet
#row = layout.row()
- #row.prop(pchan, "use_ik_linear_control", text="Joint Size")
- #row.prop(pchan, "ik_linear_weight", text="Weight", slider=True)
+ #row.prop(pchan, "use_ik_linear_control", text=_("Joint Size"))
+ #row.prop(pchan, "ik_linear_weight", text=_("Weight"), slider=True)
class BONE_PT_deform(BoneButtonsPanel, Panel):
@@ -334,27 +334,27 @@ class BONE_PT_deform(BoneButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Envelope:")
+ col.label(text=_("Envelope:"))
sub = col.column(align=True)
- sub.prop(bone, "envelope_distance", text="Distance")
- sub.prop(bone, "envelope_weight", text="Weight")
- col.prop(bone, "use_envelope_multiply", text="Multiply")
+ sub.prop(bone, "envelope_distance", text=_("Distance"))
+ sub.prop(bone, "envelope_weight", text=_("Weight"))
+ col.prop(bone, "use_envelope_multiply", text=_("Multiply"))
sub = col.column(align=True)
- sub.label(text="Radius:")
- sub.prop(bone, "head_radius", text="Head")
- sub.prop(bone, "tail_radius", text="Tail")
+ sub.label(text=_("Radius:"))
+ sub.prop(bone, "head_radius", text=_("Head"))
+ sub.prop(bone, "tail_radius", text=_("Tail"))
col = split.column()
- col.label(text="Curved Bones:")
+ col.label(text=_("Curved Bones:"))
sub = col.column(align=True)
- sub.prop(bone, "bbone_segments", text="Segments")
- sub.prop(bone, "bbone_in", text="Ease In")
- sub.prop(bone, "bbone_out", text="Ease Out")
+ sub.prop(bone, "bbone_segments", text=_("Segments"))
+ sub.prop(bone, "bbone_in", text=_("Ease In"))
+ sub.prop(bone, "bbone_out", text=_("Ease Out"))
- col.label(text="Offset:")
+ col.label(text=_("Offset:"))
col.prop(bone, "use_cyclic_offset")
diff --git a/release/scripts/startup/bl_ui/properties_data_camera.py b/release/scripts/startup/bl_ui/properties_data_camera.py
index 5255af40951..0d79ec99789 100644
--- a/release/scripts/startup/bl_ui/properties_data_camera.py
+++ b/release/scripts/startup/bl_ui/properties_data_camera.py
@@ -20,7 +20,7 @@
import bpy
from bpy.types import Panel
from rna_prop_ui import PropertyPanel
-
+from blf import gettext as _
class CameraButtonsPanel():
bl_space_type = 'PROPERTIES'
@@ -91,16 +91,16 @@ class DATA_PT_camera(CameraButtonsPanel, Panel):
split = layout.split()
col = split.column(align=True)
- col.label(text="Shift:")
+ col.label(text=_("Shift:"))
col.prop(cam, "shift_x", text="X")
col.prop(cam, "shift_y", text="Y")
col = split.column(align=True)
- col.label(text="Clipping:")
- col.prop(cam, "clip_start", text="Start")
- col.prop(cam, "clip_end", text="End")
+ col.label(text=_("Clipping:"))
+ col.prop(cam, "clip_start", text=_("Start"))
+ col.prop(cam, "clip_end", text=_("End"))
- layout.label(text="Depth of Field:")
+ layout.label(text=_("Depth of Field:"))
split = layout.split()
split.prop(cam, "dof_object", text="")
@@ -109,7 +109,7 @@ class DATA_PT_camera(CameraButtonsPanel, Panel):
if cam.dof_object is not None:
col.enabled = False
- col.prop(cam, "dof_distance", text="Distance")
+ col.prop(cam, "dof_distance", text=_("Distance"))
class DATA_PT_camera_display(CameraButtonsPanel, Panel):
@@ -124,19 +124,19 @@ class DATA_PT_camera_display(CameraButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.prop(cam, "show_limits", text="Limits")
- col.prop(cam, "show_mist", text="Mist")
- col.prop(cam, "show_title_safe", text="Title Safe")
- col.prop(cam, "show_name", text="Name")
+ col.prop(cam, "show_limits", text=_("Limits"))
+ col.prop(cam, "show_mist", text=_("Mist"))
+ col.prop(cam, "show_title_safe", text=_("Title Safe"))
+ col.prop(cam, "show_name", text=_("Name"))
col.prop_menu_enum(cam, "show_guide")
col = split.column()
- col.prop(cam, "draw_size", text="Size")
+ col.prop(cam, "draw_size", text=_("Size"))
col.separator()
- col.prop(cam, "show_passepartout", text="Passepartout")
+ col.prop(cam, "show_passepartout", text=_("Passepartout"))
sub = col.column()
sub.active = cam.show_passepartout
- sub.prop(cam, "passepartout_alpha", text="Alpha", slider=True)
+ sub.prop(cam, "passepartout_alpha", text=_("Alpha"), slider=True)
class DATA_PT_custom_props_camera(CameraButtonsPanel, PropertyPanel, Panel):
diff --git a/release/scripts/startup/bl_ui/properties_data_curve.py b/release/scripts/startup/bl_ui/properties_data_curve.py
index 6448b9a5229..861359fbed4 100644
--- a/release/scripts/startup/bl_ui/properties_data_curve.py
+++ b/release/scripts/startup/bl_ui/properties_data_curve.py
@@ -20,7 +20,7 @@
import bpy
from bpy.types import Panel
from rna_prop_ui import PropertyPanel
-
+from blf import gettext as _
class CurveButtonsPanel():
bl_space_type = 'PROPERTIES'
@@ -67,7 +67,7 @@ class DATA_PT_context_curve(CurveButtonsPanel, Panel):
class DATA_PT_shape_curve(CurveButtonsPanel, Panel):
- bl_label = "Shape"
+ bl_label = _("Shape")
def draw(self, context):
layout = self.layout
@@ -85,17 +85,17 @@ class DATA_PT_shape_curve(CurveButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Resolution:")
+ col.label(text=_("Resolution:"))
sub = col.column(align=True)
- sub.prop(curve, "resolution_u", text="Preview U")
- sub.prop(curve, "render_resolution_u", text="Render U")
+ sub.prop(curve, "resolution_u", text=_("Preview U"))
+ sub.prop(curve, "render_resolution_u", text=_("Render U"))
if is_curve:
- col.label(text="Twisting:")
+ col.label(text=_("Twisting:"))
col.prop(curve, "twist_mode", text="")
- col.prop(curve, "twist_smooth", text="Smooth")
+ col.prop(curve, "twist_smooth", text=_("Smooth"))
if is_text:
- col.label(text="Display:")
- col.prop(curve, "use_fast_edit", text="Fast Editing")
+ col.label(text=_("Display:"))
+ col.prop(curve, "use_fast_edit", text=_("Fast Editing"))
col = split.column()
@@ -103,16 +103,15 @@ class DATA_PT_shape_curve(CurveButtonsPanel, Panel):
sub = col.column()
sub.label(text="")
sub = col.column(align=True)
- sub.prop(curve, "resolution_v", text="Preview V")
- sub.prop(curve, "render_resolution_v", text="Render V")
+ sub.prop(curve, "resolution_v", text=_("Preview V"))
+ sub.prop(curve, "render_resolution_v", text=_("Render V"))
if (is_curve or is_text):
- col.label(text="Fill:")
+ col.label(text=_("Fill:"))
sub = col.column()
sub.active = (curve.dimensions == '2D' or (curve.bevel_object is None and curve.dimensions == '3D'))
- sub.prop(curve, "use_fill_front")
- sub.prop(curve, "use_fill_back")
- col.prop(curve, "use_fill_deform", text="Fill Deformed")
+ sub.prop(curve, "fill_mode", text="")
+ col.prop(curve, "use_fill_deform", text=_("Fill Deformed"))
class DATA_PT_curve_texture_space(CurveButtonsPanel, Panel):
@@ -130,8 +129,8 @@ class DATA_PT_curve_texture_space(CurveButtonsPanel, Panel):
row.prop(curve, "use_uv_as_generated")
row = layout.row()
- row.column().prop(curve, "texspace_location", text="Location")
- row.column().prop(curve, "texspace_size", text="Size")
+ row.column().prop(curve, "texspace_location", text=_("Location"))
+ row.column().prop(curve, "texspace_size", text=_("Size"))
class DATA_PT_geometry_curve(CurveButtonsPanel, Panel):
@@ -153,17 +152,17 @@ class DATA_PT_geometry_curve(CurveButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Modification:")
+ col.label(text=_("Modification:"))
col.prop(curve, "offset")
col.prop(curve, "extrude")
- col.label(text="Taper Object:")
+ col.label(text=_("Taper Object:"))
col.prop(curve, "taper_object", text="")
col = split.column()
- col.label(text="Bevel:")
- col.prop(curve, "bevel_depth", text="Depth")
- col.prop(curve, "bevel_resolution", text="Resolution")
- col.label(text="Bevel Object:")
+ col.label(text=_("Bevel:"))
+ col.prop(curve, "bevel_depth", text=_("Depth"))
+ col.prop(curve, "bevel_resolution", text=_("Resolution"))
+ col.label(text=_("Bevel Object:"))
col.prop(curve, "bevel_object", text="")
@@ -183,7 +182,7 @@ class DATA_PT_pathanim(CurveButtonsPanelCurve, Panel):
layout.active = curve.use_path
col = layout.column()
- layout.prop(curve, "path_duration", text="Frames")
+ layout.prop(curve, "path_duration", text=_("Frames"))
layout.prop(curve, "eval_time")
split = layout.split()
@@ -195,7 +194,7 @@ class DATA_PT_pathanim(CurveButtonsPanelCurve, Panel):
col = split.column()
col.prop(curve, "use_radius")
- col.prop(curve, "use_time_offset", text="Offset Children")
+ col.prop(curve, "use_time_offset", text=_("Offset Children"))
class DATA_PT_active_spline(CurveButtonsPanelActive, Panel):
@@ -216,20 +215,20 @@ class DATA_PT_active_spline(CurveButtonsPanelActive, Panel):
# These settings are below but its easier to have
# poly's set aside since they use so few settings
col = split.column()
- col.label(text="Cyclic:")
+ col.label(text=_("Cyclic:"))
col.prop(act_spline, "use_smooth")
col = split.column()
col.prop(act_spline, "use_cyclic_u", text="U")
else:
col = split.column()
- col.label(text="Cyclic:")
+ col.label(text=_("Cyclic:"))
if act_spline.type == 'NURBS':
- col.label(text="Bezier:")
- col.label(text="Endpoint:")
- col.label(text="Order:")
+ col.label(text=_("Bezier:"))
+ col.label(text=_("Endpoint:"))
+ col.label(text=_("Order:"))
- col.label(text="Resolution:")
+ col.label(text=_("Resolution:"))
col = split.column()
col.prop(act_spline, "use_cyclic_u", text="U")
@@ -262,9 +261,9 @@ class DATA_PT_active_spline(CurveButtonsPanelActive, Panel):
col = split.column()
col.active = (curve.dimensions == '3D')
- col.label(text="Interpolation:")
- col.prop(act_spline, "tilt_interpolation", text="Tilt")
- col.prop(act_spline, "radius_interpolation", text="Radius")
+ col.label(text=_("Interpolation:"))
+ col.prop(act_spline, "tilt_interpolation", text=_("Tilt"))
+ col.prop(act_spline, "radius_interpolation", text=_("Radius"))
layout.prop(act_spline, "use_smooth")
@@ -283,16 +282,16 @@ class DATA_PT_font(CurveButtonsPanel, Panel):
char = context.curve.edit_format
row = layout.split(percentage=0.25)
- row.label(text="Regular")
+ row.label(text=_("Regular"))
row.template_ID(text, "font", open="font.open", unlink="font.unlink")
row = layout.split(percentage=0.25)
- row.label(text="Bold")
+ row.label(text=_("Bold"))
row.template_ID(text, "font_bold", open="font.open", unlink="font.unlink")
row = layout.split(percentage=0.25)
- row.label(text="Italic")
+ row.label(text=_("Italic"))
row.template_ID(text, "font_italic", open="font.open", unlink="font.unlink")
row = layout.split(percentage=0.25)
- row.label(text="Bold & Italic")
+ row.label(text=_("Bold & Italic"))
row.template_ID(text, "font_bold_italic", open="font.open", unlink="font.unlink")
#layout.prop(text, "font")
@@ -300,36 +299,36 @@ class DATA_PT_font(CurveButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.prop(text, "size", text="Size")
+ col.prop(text, "size", text=_("Size"))
col = split.column()
col.prop(text, "shear")
split = layout.split()
col = split.column()
- col.label(text="Object Font:")
+ col.label(text=_("Object Font:"))
col.prop(text, "family", text="")
col = split.column()
- col.label(text="Text on Curve:")
+ col.label(text=_("Text on Curve:"))
col.prop(text, "follow_curve", text="")
split = layout.split()
col = split.column()
colsub = col.column(align=True)
- colsub.label(text="Underline:")
- colsub.prop(text, "underline_position", text="Position")
- colsub.prop(text, "underline_height", text="Thickness")
+ colsub.label(text=_("Underline:"))
+ colsub.prop(text, "underline_position", text=_("Position"))
+ colsub.prop(text, "underline_height", text=_("Thickness"))
col = split.column()
- col.label(text="Character:")
+ col.label(text=_("Character:"))
col.prop(char, "use_bold")
col.prop(char, "use_italic")
col.prop(char, "use_underline")
row = layout.row()
- row.prop(text, "small_caps_scale", text="Small Caps")
+ row.prop(text, "small_caps_scale", text=_("Small Caps"))
row.prop(char, "use_small_caps")
@@ -345,19 +344,19 @@ class DATA_PT_paragraph(CurveButtonsPanel, Panel):
text = context.curve
- layout.label(text="Align:")
+ layout.label(text=_("Align:"))
layout.prop(text, "align", expand=True)
split = layout.split()
col = split.column(align=True)
- col.label(text="Spacing:")
- col.prop(text, "space_character", text="Character")
- col.prop(text, "space_word", text="Word")
- col.prop(text, "space_line", text="Line")
+ col.label(text=_("Spacing:"))
+ col.prop(text, "space_character", text=_("Character"))
+ col.prop(text, "space_word", text=_("Word"))
+ col.prop(text, "space_line", text=_("Line"))
col = split.column(align=True)
- col.label(text="Offset:")
+ col.label(text=_("Offset:"))
col.prop(text, "offset_x", text="X")
col.prop(text, "offset_y", text="Y")
@@ -389,13 +388,13 @@ class DATA_PT_text_boxes(CurveButtonsPanel, Panel):
col = split.column(align=True)
- col.label(text="Dimensions:")
- col.prop(box, "width", text="Width")
- col.prop(box, "height", text="Height")
+ col.label(text=_("Dimensions:"))
+ col.prop(box, "width", text=_("Width"))
+ col.prop(box, "height", text=_("Height"))
col = split.column(align=True)
- col.label(text="Offset:")
+ col.label(text=_("Offset:"))
col.prop(box, "x", text="X")
col.prop(box, "y", text="Y")
diff --git a/release/scripts/startup/bl_ui/properties_data_empty.py b/release/scripts/startup/bl_ui/properties_data_empty.py
index c781873e16c..b6fa6d8e839 100644
--- a/release/scripts/startup/bl_ui/properties_data_empty.py
+++ b/release/scripts/startup/bl_ui/properties_data_empty.py
@@ -19,7 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.types import Panel
-
+from blf import gettext as _
class DataButtonsPanel():
bl_space_type = 'PROPERTIES'
@@ -39,17 +39,17 @@ class DATA_PT_empty(DataButtonsPanel, Panel):
ob = context.object
- layout.prop(ob, "empty_draw_type", text="Display")
+ layout.prop(ob, "empty_draw_type", text=_("Display"))
if ob.empty_draw_type == 'IMAGE':
layout.template_ID(ob, "data", open="image.open", unlink="image.unlink")
- layout.prop(ob, "color", text="Transparency", index=3, slider=True)
+ layout.prop(ob, "color", text=_("Transparency"), index=3, slider=True)
row = layout.row(align=True)
- row.prop(ob, "empty_image_offset", text="Offset X", index=0)
- row.prop(ob, "empty_image_offset", text="Offset Y", index=1)
+ row.prop(ob, "empty_image_offset", text=_("Offset X"), index=0)
+ row.prop(ob, "empty_image_offset", text=_("Offset Y"), index=1)
- layout.prop(ob, "empty_draw_size", text="Size")
+ layout.prop(ob, "empty_draw_size", text=_("Size"))
if __name__ == "__main__": # only for live edit.
bpy.utils.register_module(__name__)
diff --git a/release/scripts/startup/bl_ui/properties_data_lamp.py b/release/scripts/startup/bl_ui/properties_data_lamp.py
index 4ff180f74fb..93ed8ca369b 100644
--- a/release/scripts/startup/bl_ui/properties_data_lamp.py
+++ b/release/scripts/startup/bl_ui/properties_data_lamp.py
@@ -20,10 +20,10 @@
import bpy
from bpy.types import Menu, Panel
from rna_prop_ui import PropertyPanel
-
+from blf import gettext as _
class LAMP_MT_sunsky_presets(Menu):
- bl_label = "Sun & Sky Presets"
+ bl_label = _("Sun & Sky Presets")
preset_subdir = "sunsky"
preset_operator = "script.execute_preset"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -93,15 +93,15 @@ class DATA_PT_lamp(DataButtonsPanel, Panel):
sub.prop(lamp, "energy")
if lamp.type in {'POINT', 'SPOT'}:
- sub.label(text="Falloff:")
+ sub.label(text=_("Falloff:"))
sub.prop(lamp, "falloff_type", text="")
sub.prop(lamp, "distance")
if lamp.falloff_type == 'LINEAR_QUADRATIC_WEIGHTED':
- col.label(text="Attenuation Factors:")
+ col.label(text=_("Attenuation Factors:"))
sub = col.column(align=True)
- sub.prop(lamp, "linear_attenuation", slider=True, text="Linear")
- sub.prop(lamp, "quadratic_attenuation", slider=True, text="Quadratic")
+ sub.prop(lamp, "linear_attenuation", slider=True, text=_("Linear"))
+ sub.prop(lamp, "quadratic_attenuation", slider=True, text=_("Quadratic"))
col.prop(lamp, "use_sphere")
@@ -111,7 +111,7 @@ class DATA_PT_lamp(DataButtonsPanel, Panel):
col = split.column()
col.prop(lamp, "use_negative")
- col.prop(lamp, "use_own_layer", text="This Layer Only")
+ col.prop(lamp, "use_own_layer", text=_("This Layer Only"))
col.prop(lamp, "use_specular")
col.prop(lamp, "use_diffuse")
@@ -139,34 +139,34 @@ class DATA_PT_sunsky(DataButtonsPanel, Panel):
row = layout.row()
row.active = lamp.use_sky or lamp.use_atmosphere
- row.prop(lamp, "atmosphere_turbidity", text="Turbidity")
+ row.prop(lamp, "atmosphere_turbidity", text=_("Turbidity"))
split = layout.split()
col = split.column()
col.active = lamp.use_sky
- col.label(text="Blending:")
+ col.label(text=_("Blending:"))
sub = col.column()
sub.prop(lamp, "sky_blend_type", text="")
- sub.prop(lamp, "sky_blend", text="Factor")
+ sub.prop(lamp, "sky_blend", text=_("Factor"))
- col.label(text="Color Space:")
+ col.label(text=_("Color Space:"))
sub = col.column()
sub.row().prop(lamp, "sky_color_space", expand=True)
- sub.prop(lamp, "sky_exposure", text="Exposure")
+ sub.prop(lamp, "sky_exposure", text=_("Exposure"))
col = split.column()
col.active = lamp.use_sky
- col.label(text="Horizon:")
+ col.label(text=_("Horizon:"))
sub = col.column()
- sub.prop(lamp, "horizon_brightness", text="Brightness")
- sub.prop(lamp, "spread", text="Spread")
+ sub.prop(lamp, "horizon_brightness", text=_("Brightness"))
+ sub.prop(lamp, "spread", text=_("Spread"))
- col.label(text="Sun:")
+ col.label(text=_("Sun:"))
sub = col.column()
- sub.prop(lamp, "sun_brightness", text="Brightness")
- sub.prop(lamp, "sun_size", text="Size")
- sub.prop(lamp, "backscattered_light", slider=True, text="Back Light")
+ sub.prop(lamp, "sun_brightness", text=_("Brightness"))
+ sub.prop(lamp, "sun_size", text=_("Size"))
+ sub.prop(lamp, "backscattered_light", slider=True, text=_("Back Light"))
layout.separator()
@@ -176,16 +176,16 @@ class DATA_PT_sunsky(DataButtonsPanel, Panel):
col = split.column()
col.active = lamp.use_atmosphere
- col.label(text="Intensity:")
- col.prop(lamp, "sun_intensity", text="Sun")
- col.prop(lamp, "atmosphere_distance_factor", text="Distance")
+ col.label(text=_("Intensity:"))
+ col.prop(lamp, "sun_intensity", text=_("Sun"))
+ col.prop(lamp, "atmosphere_distance_factor", text=_("Distance"))
col = split.column()
col.active = lamp.use_atmosphere
- col.label(text="Scattering:")
+ col.label(text=_("Scattering:"))
sub = col.column(align=True)
- sub.prop(lamp, "atmosphere_inscattering", slider=True, text="Inscattering")
- sub.prop(lamp, "atmosphere_extinction", slider=True, text="Extinction")
+ sub.prop(lamp, "atmosphere_inscattering", slider=True, text=_("Inscattering"))
+ sub.prop(lamp, "atmosphere_extinction", slider=True, text=_("Extinction"))
class DATA_PT_shadow(DataButtonsPanel, Panel):
@@ -209,15 +209,15 @@ class DATA_PT_shadow(DataButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Form factor sampling:")
+ col.label(text=_("Form factor sampling:"))
sub = col.row(align=True)
if lamp.shape == 'SQUARE':
- sub.prop(lamp, "shadow_ray_samples_x", text="Samples")
+ sub.prop(lamp, "shadow_ray_samples_x", text=_("Samples"))
elif lamp.shape == 'RECTANGLE':
- sub.prop(lamp, "shadow_ray_samples_x", text="Samples X")
- sub.prop(lamp, "shadow_ray_samples_y", text="Samples Y")
+ sub.prop(lamp, "shadow_ray_samples_x", text=_("Samples X"))
+ sub.prop(lamp, "shadow_ray_samples_y", text=_("Samples Y"))
if lamp.shadow_method != 'NOSHADOW':
split = layout.split()
@@ -226,34 +226,34 @@ class DATA_PT_shadow(DataButtonsPanel, Panel):
col.prop(lamp, "shadow_color", text="")
col = split.column()
- col.prop(lamp, "use_shadow_layer", text="This Layer Only")
+ col.prop(lamp, "use_shadow_layer", text=_("This Layer Only"))
col.prop(lamp, "use_only_shadow")
if lamp.shadow_method == 'RAY_SHADOW':
split = layout.split()
col = split.column()
- col.label(text="Sampling:")
+ col.label(text=_("Sampling:"))
if lamp.type in {'POINT', 'SUN', 'SPOT'}:
sub = col.row()
- sub.prop(lamp, "shadow_ray_samples", text="Samples")
- sub.prop(lamp, "shadow_soft_size", text="Soft Size")
+ sub.prop(lamp, "shadow_ray_samples", text=_("Samples"))
+ sub.prop(lamp, "shadow_soft_size", text=_("Soft Size"))
elif lamp.type == 'AREA':
sub = col.row(align=True)
if lamp.shape == 'SQUARE':
- sub.prop(lamp, "shadow_ray_samples_x", text="Samples")
+ sub.prop(lamp, "shadow_ray_samples_x", text=_("Samples"))
elif lamp.shape == 'RECTANGLE':
- sub.prop(lamp, "shadow_ray_samples_x", text="Samples X")
- sub.prop(lamp, "shadow_ray_samples_y", text="Samples Y")
+ sub.prop(lamp, "shadow_ray_samples_x", text=_("Samples X"))
+ sub.prop(lamp, "shadow_ray_samples_y", text=_("Samples Y"))
col.row().prop(lamp, "shadow_ray_sample_method", expand=True)
if lamp.shadow_ray_sample_method == 'ADAPTIVE_QMC':
- layout.prop(lamp, "shadow_adaptive_threshold", text="Threshold")
+ layout.prop(lamp, "shadow_adaptive_threshold", text=_("Threshold"))
if lamp.type == 'AREA' and lamp.shadow_ray_sample_method == 'CONSTANT_JITTERED':
row = layout.row()
@@ -263,44 +263,44 @@ class DATA_PT_shadow(DataButtonsPanel, Panel):
elif lamp.shadow_method == 'BUFFER_SHADOW':
col = layout.column()
- col.label(text="Buffer Type:")
+ col.label(text=_("Buffer Type:"))
col.row().prop(lamp, "shadow_buffer_type", expand=True)
if lamp.shadow_buffer_type in {'REGULAR', 'HALFWAY', 'DEEP'}:
split = layout.split()
col = split.column()
- col.label(text="Filter Type:")
+ col.label(text=_("Filter Type:"))
col.prop(lamp, "shadow_filter_type", text="")
sub = col.column(align=True)
- sub.prop(lamp, "shadow_buffer_soft", text="Soft")
- sub.prop(lamp, "shadow_buffer_bias", text="Bias")
+ sub.prop(lamp, "shadow_buffer_soft", text=_("Soft"))
+ sub.prop(lamp, "shadow_buffer_bias", text=_("Bias"))
col = split.column()
- col.label(text="Sample Buffers:")
+ col.label(text=_("Sample Buffers:"))
col.prop(lamp, "shadow_sample_buffers", text="")
sub = col.column(align=True)
- sub.prop(lamp, "shadow_buffer_size", text="Size")
- sub.prop(lamp, "shadow_buffer_samples", text="Samples")
+ sub.prop(lamp, "shadow_buffer_size", text=_("Size"))
+ sub.prop(lamp, "shadow_buffer_samples", text=_("Samples"))
if lamp.shadow_buffer_type == 'DEEP':
col.prop(lamp, "compression_threshold")
elif lamp.shadow_buffer_type == 'IRREGULAR':
- layout.prop(lamp, "shadow_buffer_bias", text="Bias")
+ layout.prop(lamp, "shadow_buffer_bias", text=_("Bias"))
split = layout.split()
col = split.column()
- col.prop(lamp, "use_auto_clip_start", text="Autoclip Start")
+ col.prop(lamp, "use_auto_clip_start", text=_("Autoclip Start"))
sub = col.column()
sub.active = not lamp.use_auto_clip_start
- sub.prop(lamp, "shadow_buffer_clip_start", text="Clip Start")
+ sub.prop(lamp, "shadow_buffer_clip_start", text=_("Clip Start"))
col = split.column()
- col.prop(lamp, "use_auto_clip_end", text="Autoclip End")
+ col.prop(lamp, "use_auto_clip_end", text=_("Autoclip End"))
sub = col.column()
sub.active = not lamp.use_auto_clip_end
- sub.prop(lamp, "shadow_buffer_clip_end", text=" Clip End")
+ sub.prop(lamp, "shadow_buffer_clip_end", text=_(" Clip End"))
class DATA_PT_area(DataButtonsPanel, Panel):
@@ -325,8 +325,8 @@ class DATA_PT_area(DataButtonsPanel, Panel):
if (lamp.shape == 'SQUARE'):
sub.prop(lamp, "size")
elif (lamp.shape == 'RECTANGLE'):
- sub.prop(lamp, "size", text="Size X")
- sub.prop(lamp, "size_y", text="Size Y")
+ sub.prop(lamp, "size", text=_("Size X"))
+ sub.prop(lamp, "size_y", text=_("Size Y"))
class DATA_PT_spot(DataButtonsPanel, Panel):
@@ -348,8 +348,8 @@ class DATA_PT_spot(DataButtonsPanel, Panel):
col = split.column()
sub = col.column()
- sub.prop(lamp, "spot_size", text="Size")
- sub.prop(lamp, "spot_blend", text="Blend", slider=True)
+ sub.prop(lamp, "spot_size", text=_("Size"))
+ sub.prop(lamp, "spot_blend", text=_("Blend"), slider=True)
col.prop(lamp, "use_square")
col.prop(lamp, "show_cone")
@@ -358,9 +358,9 @@ class DATA_PT_spot(DataButtonsPanel, Panel):
col.prop(lamp, "use_halo")
sub = col.column(align=True)
sub.active = lamp.use_halo
- sub.prop(lamp, "halo_intensity", text="Intensity")
+ sub.prop(lamp, "halo_intensity", text=_("Intensity"))
if lamp.shadow_method == 'BUFFER_SHADOW':
- sub.prop(lamp, "halo_step", text="Step")
+ sub.prop(lamp, "halo_step", text=_("Step"))
class DATA_PT_falloff_curve(DataButtonsPanel, Panel):
diff --git a/release/scripts/startup/bl_ui/properties_data_mesh.py b/release/scripts/startup/bl_ui/properties_data_mesh.py
index 75df7dad5f2..37c91370979 100644
--- a/release/scripts/startup/bl_ui/properties_data_mesh.py
+++ b/release/scripts/startup/bl_ui/properties_data_mesh.py
@@ -20,10 +20,10 @@
import bpy
from bpy.types import Menu, Panel
from rna_prop_ui import PropertyPanel
-
+from blf import gettext as _
class MESH_MT_vertex_group_specials(Menu):
- bl_label = "Vertex Group Specials"
+ bl_label = _("Vertex Group Specials")
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
def draw(self, context):
@@ -34,7 +34,11 @@ class MESH_MT_vertex_group_specials(Menu):
layout.operator("object.vertex_group_copy_to_linked", icon='LINK_AREA')
layout.operator("object.vertex_group_copy_to_selected", icon='LINK_AREA')
layout.operator("object.vertex_group_mirror", icon='ARROW_LEFTRIGHT')
- layout.operator("object.vertex_group_remove", icon='X', text="Delete All").all = True
+ layout.operator("object.vertex_group_remove", icon='X', text=_("Delete All")).all = True
+ layout.separator()
+ layout.operator("object.vertex_group_lock", icon='LOCK', text="Lock All").action = 'SELECT'
+ layout.operator("object.vertex_group_lock", icon='UNLOCK', text="UnLock All").action = 'DESELECT'
+ layout.operator("object.vertex_group_lock", icon='LOCK', text="Lock Invert All").action = 'INVERT'
class MESH_MT_shape_key_specials(Menu):
@@ -47,7 +51,7 @@ class MESH_MT_shape_key_specials(Menu):
layout.operator("object.shape_key_transfer", icon='COPY_ID') # icon is not ideal
layout.operator("object.join_shapes", icon='COPY_ID') # icon is not ideal
layout.operator("object.shape_key_mirror", icon='ARROW_LEFTRIGHT')
- op = layout.operator("object.shape_key_add", icon='ZOOMIN', text="New Shape From Mix")
+ op = layout.operator("object.shape_key_add", icon='ZOOMIN', text=_("New Shape From Mix"))
op.from_mix = True
@@ -95,7 +99,7 @@ class DATA_PT_normals(MeshButtonsPanel, Panel):
col.prop(mesh, "use_auto_smooth")
sub = col.column()
sub.active = mesh.use_auto_smooth
- sub.prop(mesh, "auto_smooth_angle", text="Angle")
+ sub.prop(mesh, "auto_smooth_angle", text=_("Angle"))
split.prop(mesh, "show_double_sided")
@@ -116,8 +120,8 @@ class DATA_PT_texture_space(MeshButtonsPanel, Panel):
layout.prop(mesh, "use_auto_texspace")
row = layout.row()
- row.column().prop(mesh, "texspace_location", text="Location")
- row.column().prop(mesh, "texspace_size", text="Size")
+ row.column().prop(mesh, "texspace_location", text=_("Location"))
+ row.column().prop(mesh, "texspace_size", text=_("Size"))
class DATA_PT_vertex_groups(MeshButtonsPanel, Panel):
@@ -159,14 +163,14 @@ class DATA_PT_vertex_groups(MeshButtonsPanel, Panel):
row = layout.row()
sub = row.row(align=True)
- sub.operator("object.vertex_group_assign", text="Assign")
- sub.operator("object.vertex_group_remove_from", text="Remove")
+ sub.operator("object.vertex_group_assign", text=_("Assign"))
+ sub.operator("object.vertex_group_remove_from", text=_("Remove"))
sub = row.row(align=True)
- sub.operator("object.vertex_group_select", text="Select")
- sub.operator("object.vertex_group_deselect", text="Deselect")
+ sub.operator("object.vertex_group_select", text=_("Select"))
+ sub.operator("object.vertex_group_deselect", text=_("Deselect"))
- layout.prop(context.tool_settings, "vertex_group_weight", text="Weight")
+ layout.prop(context.tool_settings, "vertex_group_weight", text=_("Weight"))
class DATA_PT_shape_keys(MeshButtonsPanel, Panel):
@@ -246,13 +250,13 @@ class DATA_PT_shape_keys(MeshButtonsPanel, Panel):
col = split.column(align=True)
col.active = enable_edit_value
- col.label(text="Range:")
- col.prop(kb, "slider_min", text="Min")
- col.prop(kb, "slider_max", text="Max")
+ col.label(text=_("Range:"))
+ col.prop(kb, "slider_min", text=_("Min"))
+ col.prop(kb, "slider_max", text=_("Max"))
col = split.column(align=True)
col.active = enable_edit_value
- col.label(text="Blend:")
+ col.label(text=_("Blend:"))
col.prop_search(kb, "vertex_group", ob, "vertex_groups", text="")
col.prop_search(kb, "relative_key", key, "key_blocks", text="")
@@ -285,53 +289,6 @@ class DATA_PT_uv_texture(MeshButtonsPanel, Panel):
layout.prop(lay, "name")
-class DATA_PT_texface(MeshButtonsPanel, Panel):
- bl_label = "Texture Face"
- COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
-
- @classmethod
- def poll(cls, context):
- obj = context.object
- return (context.mode == 'EDIT_MESH') and obj and obj.type == 'MESH'
-
- def draw(self, context):
- layout = self.layout
- col = layout.column()
-
- me = context.mesh
-
- tf = me.faces.active_tface
-
- if tf:
- if context.scene.render.engine != 'BLENDER_GAME':
- col.label(text="Options only supported in Game Engine")
-
- split = layout.split()
- col = split.column()
-
- col.prop(tf, "use_image")
- col.prop(tf, "use_light")
- col.prop(tf, "hide")
- col.prop(tf, "use_collision")
-
- col.prop(tf, "use_blend_shared")
- col.prop(tf, "use_twoside")
- col.prop(tf, "use_object_color")
-
- col = split.column()
-
- col.prop(tf, "use_halo")
- col.prop(tf, "use_billboard")
- col.prop(tf, "use_shadow_cast")
- col.prop(tf, "use_bitmap_text")
- col.prop(tf, "use_alpha_sort")
-
- col = layout.column()
- col.prop(tf, "blend_type")
- else:
- col.label(text="No UV Texture")
-
-
class DATA_PT_vertex_colors(MeshButtonsPanel, Panel):
bl_label = "Vertex Colors"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
diff --git a/release/scripts/startup/bl_ui/properties_data_metaball.py b/release/scripts/startup/bl_ui/properties_data_metaball.py
index cd894e60dbb..693cb697544 100644
--- a/release/scripts/startup/bl_ui/properties_data_metaball.py
+++ b/release/scripts/startup/bl_ui/properties_data_metaball.py
@@ -20,7 +20,7 @@
import bpy
from bpy.types import Panel
from rna_prop_ui import PropertyPanel
-
+from blf import gettext as _
class DataButtonsPanel():
bl_space_type = 'PROPERTIES'
@@ -60,16 +60,16 @@ class DATA_PT_metaball(DataButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Resolution:")
+ col.label(text=_("Resolution:"))
sub = col.column(align=True)
- sub.prop(mball, "resolution", text="View")
- sub.prop(mball, "render_resolution", text="Render")
+ sub.prop(mball, "resolution", text=_("View"))
+ sub.prop(mball, "render_resolution", text=_("Render"))
col = split.column()
- col.label(text="Settings:")
- col.prop(mball, "threshold", text="Threshold")
+ col.label(text=_("Settings:"))
+ col.prop(mball, "threshold", text=_("Threshold"))
- layout.label(text="Update:")
+ layout.label(text=_("Update:"))
layout.prop(mball, "update_method", expand=True)
@@ -86,8 +86,8 @@ class DATA_PT_mball_texture_space(DataButtonsPanel, Panel):
layout.prop(mball, "use_auto_texspace")
row = layout.row()
- row.column().prop(mball, "texspace_location", text="Location")
- row.column().prop(mball, "texspace_size", text="Size")
+ row.column().prop(mball, "texspace_location", text=_("Location"))
+ row.column().prop(mball, "texspace_size", text=_("Size"))
class DATA_PT_metaball_element(DataButtonsPanel, Panel):
@@ -107,25 +107,25 @@ class DATA_PT_metaball_element(DataButtonsPanel, Panel):
split = layout.split()
col = split.column(align=True)
- col.label(text="Settings:")
- col.prop(metaelem, "stiffness", text="Stiffness")
- col.prop(metaelem, "use_negative", text="Negative")
- col.prop(metaelem, "hide", text="Hide")
+ col.label(text=_("Settings:"))
+ col.prop(metaelem, "stiffness", text=_("Stiffness"))
+ col.prop(metaelem, "use_negative", text=_("Negative"))
+ col.prop(metaelem, "hide", text=_("Hide"))
col = split.column(align=True)
if metaelem.type in {'CUBE', 'ELLIPSOID'}:
- col.label(text="Size:")
+ col.label(text=_("Size:"))
col.prop(metaelem, "size_x", text="X")
col.prop(metaelem, "size_y", text="Y")
col.prop(metaelem, "size_z", text="Z")
elif metaelem.type == 'TUBE':
- col.label(text="Size:")
+ col.label(text=_("Size:"))
col.prop(metaelem, "size_x", text="X")
elif metaelem.type == 'PLANE':
- col.label(text="Size:")
+ col.label(text=_("Size:"))
col.prop(metaelem, "size_x", text="X")
col.prop(metaelem, "size_y", text="Y")
diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 169cbd8c228..9669bd0e0dd 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -19,7 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.types import Panel
-
+from blf import gettext as _
class ModifierButtonsPanel():
bl_space_type = 'PROPERTIES'
@@ -51,14 +51,14 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Object:")
+ col.label(text=_("Object:"))
col.prop(md, "object", text="")
col.prop(md, "use_deform_preserve_volume")
col = split.column()
- col.label(text="Bind To:")
- col.prop(md, "use_vertex_groups", text="Vertex Groups")
- col.prop(md, "use_bone_envelopes", text="Bone Envelopes")
+ col.label(text=_("Bind To:"))
+ col.prop(md, "use_vertex_groups", text=_("Vertex Groups"))
+ col.prop(md, "use_bone_envelopes", text=_("Bone Envelopes"))
layout.separator()
@@ -92,11 +92,11 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
col.separator()
- col.prop(md, "use_merge_vertices", text="Merge")
+ col.prop(md, "use_merge_vertices", text=_("Merge"))
sub = col.column()
sub.active = md.use_merge_vertices
- sub.prop(md, "use_merge_vertices_cap", text="First Last")
- sub.prop(md, "merge_threshold", text="Distance")
+ sub.prop(md, "use_merge_vertices_cap", text=_("First Last"))
+ sub.prop(md, "merge_threshold", text=_("Distance"))
col = split.column()
col.prop(md, "use_relative_offset")
@@ -122,7 +122,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
split.prop(md, "width")
split.prop(md, "use_only_vertices")
- layout.label(text="Limit Method:")
+ layout.label(text=_("Limit Method:"))
layout.row().prop(md, "limit_method", expand=True)
if md.limit_method == 'ANGLE':
layout.prop(md, "angle_limit")
@@ -133,11 +133,11 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Operation:")
+ col.label(text=_("Operation:"))
col.prop(md, "operation", text="")
col = split.column()
- col.label(text="Object:")
+ col.label(text=_("Object:"))
col.prop(md, "object", text="")
def BUILD(self, layout, ob, md):
@@ -156,7 +156,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
def CAST(self, layout, ob, md):
split = layout.split(percentage=0.25)
- split.label(text="Cast Type:")
+ split.label(text=_("Cast Type:"))
split.prop(md, "cast_type", text="")
split = layout.split(percentage=0.25)
@@ -175,52 +175,52 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Vertex Group:")
+ col.label(text=_("Vertex Group:"))
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
col = split.column()
- col.label(text="Control Object:")
+ col.label(text=_("Control Object:"))
col.prop(md, "object", text="")
if md.object:
col.prop(md, "use_transform")
def CLOTH(self, layout, ob, md):
- layout.label(text="Settings can be found inside the Physics context")
+ layout.label(text=_("Settings can be found inside the Physics context"))
def COLLISION(self, layout, ob, md):
- layout.label(text="Settings can be found inside the Physics context")
+ layout.label(text=_("Settings can be found inside the Physics context"))
def CURVE(self, layout, ob, md):
split = layout.split()
col = split.column()
- col.label(text="Object:")
+ col.label(text=_("Object:"))
col.prop(md, "object", text="")
col = split.column()
- col.label(text="Vertex Group:")
+ col.label(text=_("Vertex Group:"))
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
- layout.label(text="Deformation Axis:")
+ layout.label(text=_("Deformation Axis:"))
layout.row().prop(md, "deform_axis", expand=True)
def DECIMATE(self, layout, ob, md):
layout.prop(md, "ratio")
- layout.label(text="Face Count: %s" % str(md.face_count))
+ layout.label(text=_("Face Count")+": %s" % str(md.face_count))
def DISPLACE(self, layout, ob, md):
split = layout.split()
col = split.column()
- col.label(text="Texture:")
+ col.label(text=_("Texture:"))
col.template_ID(md, "texture", new="texture.new")
- col.label(text="Vertex Group:")
+ col.label(text=_("Vertex Group:"))
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
col = split.column()
- col.label(text="Direction:")
+ col.label(text=_("Direction:"))
col.prop(md, "direction", text="")
- col.label(text="Texture Coordinates:")
+ col.label(text=_("Texture Coordinates:"))
col.prop(md, "texture_coords", text="")
if md.texture_coords == 'OBJECT':
- layout.prop(md, "texture_coords_object", text="Object")
+ layout.prop(md, "texture_coords_object", text=_("Object"))
elif md.texture_coords == 'UV' and ob.type == 'MESH':
layout.prop_search(md, "uv_layer", ob.data, "uv_textures")
@@ -237,23 +237,23 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.prop(md, "use_edge_angle", text="Edge Angle")
+ col.prop(md, "use_edge_angle", text=_("Edge Angle"))
sub = col.column()
sub.active = md.use_edge_angle
sub.prop(md, "split_angle")
- split.prop(md, "use_edge_sharp", text="Sharp Edges")
+ split.prop(md, "use_edge_sharp", text=_("Sharp Edges"))
def EXPLODE(self, layout, ob, md):
split = layout.split()
col = split.column()
- col.label(text="Vertex group:")
+ col.label(text=_("Vertex group:"))
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
sub = col.column()
sub.active = bool(md.vertex_group)
sub.prop(md, "protect")
- col.label(text="Particle UV")
+ col.label(text=_("Particle UV"))
col.prop_search(md, "particle_uv", ob.data, "uv_textures", text="")
col = split.column()
@@ -263,22 +263,22 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
col.prop(md, "show_dead")
col.prop(md, "use_size")
- layout.operator("object.explode_refresh", text="Refresh")
+ layout.operator("object.explode_refresh", text=_("Refresh"))
def FLUID_SIMULATION(self, layout, ob, md):
- layout.label(text="Settings can be found inside the Physics context")
+ layout.label(text=_("Settings can be found inside the Physics context"))
def HOOK(self, layout, ob, md):
split = layout.split()
col = split.column()
- col.label(text="Object:")
+ col.label(text=_("Object:"))
col.prop(md, "object", text="")
if md.object and md.object.type == 'ARMATURE':
- col.label(text="Bone:")
+ col.label(text=_("Bone:"))
col.prop_search(md, "subtarget", md.object.data, "bones", text="")
col = split.column()
- col.label(text="Vertex Group:")
+ col.label(text=_("Vertex Group:"))
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
layout.separator()
@@ -290,38 +290,38 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
col.prop(md, "force", slider=True)
col = split.column()
- col.operator("object.hook_reset", text="Reset")
- col.operator("object.hook_recenter", text="Recenter")
+ col.operator("object.hook_reset", text=_("Reset"))
+ col.operator("object.hook_recenter", text=_("Recenter"))
if ob.mode == 'EDIT':
layout.separator()
row = layout.row()
- row.operator("object.hook_select", text="Select")
- row.operator("object.hook_assign", text="Assign")
+ row.operator("object.hook_select", text=_("Select"))
+ row.operator("object.hook_assign", text=_("Assign"))
def LATTICE(self, layout, ob, md):
split = layout.split()
col = split.column()
- col.label(text="Object:")
+ col.label(text=_("Object:"))
col.prop(md, "object", text="")
col = split.column()
- col.label(text="Vertex Group:")
+ col.label(text=_("Vertex Group:"))
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
def MASK(self, layout, ob, md):
split = layout.split()
col = split.column()
- col.label(text="Mode:")
+ col.label(text=_("Mode:"))
col.prop(md, "mode", text="")
col = split.column()
if md.mode == 'ARMATURE':
- col.label(text="Armature:")
+ col.label(text=_("Armature:"))
col.prop(md, "armature", text="")
elif md.mode == 'VERTEX_GROUP':
- col.label(text="Vertex Group:")
+ col.label(text=_("Vertex Group:"))
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
sub = col.column()
@@ -333,11 +333,11 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
col = split.column()
sub = col.column()
- sub.label(text="Object:")
+ sub.label(text=_("Object:"))
sub.prop(md, "object", text="")
sub.active = not md.is_bound
col = split.column()
- col.label(text="Vertex Group:")
+ col.label(text=_("Vertex Group:"))
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
sub = col.column()
@@ -347,9 +347,9 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
layout.separator()
if md.is_bound:
- layout.operator("object.meshdeform_bind", text="Unbind")
+ layout.operator("object.meshdeform_bind", text=_("Unbind"))
else:
- layout.operator("object.meshdeform_bind", text="Bind")
+ layout.operator("object.meshdeform_bind", text=_("Bind"))
row = layout.row()
row.prop(md, "precision")
@@ -359,19 +359,19 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
split = layout.split(percentage=0.25)
col = split.column()
- col.label(text="Axis:")
+ col.label(text=_("Axis:"))
col.prop(md, "use_x")
col.prop(md, "use_y")
col.prop(md, "use_z")
col = split.column()
- col.label(text="Options:")
- col.prop(md, "use_mirror_merge", text="Merge")
- col.prop(md, "use_clip", text="Clipping")
- col.prop(md, "use_mirror_vertex_groups", text="Vertex Groups")
+ col.label(text=_("Options:"))
+ col.prop(md, "use_mirror_merge", text=_("Merge"))
+ col.prop(md, "use_clip", text=_("Clipping"))
+ col.prop(md, "use_mirror_vertex_groups", text=_("Vertex Groups"))
col = split.column()
- col.label(text="Textures:")
+ col.label(text=_("Textures:"))
col.prop(md, "use_mirror_u", text="U")
col.prop(md, "use_mirror_v", text="V")
@@ -379,25 +379,29 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
if md.use_mirror_merge == True:
col.prop(md, "merge_threshold")
- col.label(text="Mirror Object:")
+ col.label(text=_("Mirror Object:"))
col.prop(md, "mirror_object", text="")
+ def NAVMESH(self, layout, ob, md):
+ layout.operator("object.assign_navpolygon")
+ layout.operator("object.assign_new_navpolygon")
+
def MULTIRES(self, layout, ob, md):
layout.row().prop(md, "subdivision_type", expand=True)
split = layout.split()
col = split.column()
- col.prop(md, "levels", text="Preview")
- col.prop(md, "sculpt_levels", text="Sculpt")
- col.prop(md, "render_levels", text="Render")
+ col.prop(md, "levels", text=_("Preview"))
+ col.prop(md, "sculpt_levels", text=_("Sculpt"))
+ col.prop(md, "render_levels", text=_("Render"))
col = split.column()
col.enabled = ob.mode != 'EDIT'
- col.operator("object.multires_subdivide", text="Subdivide")
- col.operator("object.multires_higher_levels_delete", text="Delete Higher")
- col.operator("object.multires_reshape", text="Reshape")
- col.operator("object.multires_base_apply", text="Apply Base")
+ col.operator("object.multires_subdivide", text=_("Subdivide"))
+ col.operator("object.multires_higher_levels_delete", text=_("Delete Higher"))
+ col.operator("object.multires_reshape", text=_("Reshape"))
+ col.operator("object.multires_base_apply", text=_("Apply Base"))
col.prop(md, "use_subsurf_uv")
col.prop(md, "show_only_control_edges")
@@ -406,34 +410,34 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
col = layout.column()
row = col.row()
if md.is_external:
- row.operator("object.multires_external_pack", text="Pack External")
+ row.operator("object.multires_external_pack", text=_("Pack External"))
row.label()
row = col.row()
row.prop(md, "filepath", text="")
else:
- row.operator("object.multires_external_save", text="Save External...")
+ row.operator("object.multires_external_save", text=_("Save External..."))
row.label()
def PARTICLE_INSTANCE(self, layout, ob, md):
layout.prop(md, "object")
- layout.prop(md, "particle_system_index", text="Particle System")
+ layout.prop(md, "particle_system_index", text=_("Particle System"))
split = layout.split()
col = split.column()
- col.label(text="Create From:")
+ col.label(text=_("Create From:"))
col.prop(md, "use_normal")
col.prop(md, "use_children")
col.prop(md, "use_size")
col = split.column()
- col.label(text="Show Particles When:")
+ col.label(text=_("Show Particles When:"))
col.prop(md, "show_alive")
col.prop(md, "show_unborn")
col.prop(md, "show_dead")
layout.separator()
- layout.prop(md, "use_path", text="Create Along Paths")
+ layout.prop(md, "use_path", text=_("Create Along Paths"))
split = layout.split()
split.active = md.use_path
@@ -443,17 +447,17 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
col = split.column()
col.prop(md, "position", slider=True)
- col.prop(md, "random_position", text="Random", slider=True)
+ col.prop(md, "random_position", text=_("Random"), slider=True)
def PARTICLE_SYSTEM(self, layout, ob, md):
- layout.label(text="Settings can be found inside the Particle context")
+ layout.label(text=_("Settings can be found inside the Particle context"))
def SCREW(self, layout, ob, md):
split = layout.split()
col = split.column()
col.prop(md, "axis")
- col.prop(md, "object", text="AxisOb")
+ col.prop(md, "object", text=_("AxisOb"))
col.prop(md, "angle")
col.prop(md, "steps")
col.prop(md, "render_steps")
@@ -472,10 +476,10 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
def SHRINKWRAP(self, layout, ob, md):
split = layout.split()
col = split.column()
- col.label(text="Target:")
+ col.label(text=_("Target:"))
col.prop(md, "target", text="")
col = split.column()
- col.label(text="Vertex Group:")
+ col.label(text=_("Vertex Group:"))
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
split = layout.split()
@@ -485,28 +489,28 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
col.prop(md, "subsurf_levels")
col = split.column()
- col.label(text="Mode:")
+ col.label(text=_("Mode:"))
col.prop(md, "wrap_method", text="")
if md.wrap_method == 'PROJECT':
split = layout.split(percentage=0.25)
col = split.column()
- col.label(text="Axis:")
+ col.label(text=_("Axis:"))
col.prop(md, "use_project_x")
col.prop(md, "use_project_y")
col.prop(md, "use_project_z")
col = split.column()
- col.label(text="Direction:")
+ col.label(text=_("Direction:"))
col.prop(md, "use_negative_direction")
col.prop(md, "use_positive_direction")
col = split.column()
- col.label(text="Cull Faces:")
+ col.label(text=_("Cull Faces:"))
col.prop(md, "cull_face", expand=True)
- layout.label(text="Auxiliary Target:")
+ layout.label(text=_("Auxiliary Target:"))
layout.prop(md, "auxiliary_target", text="")
elif md.wrap_method == 'NEAREST_SURFACEPOINT':
@@ -516,24 +520,24 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Mode:")
+ col.label(text=_("Mode:"))
col.prop(md, "deform_method", text="")
col = split.column()
- col.label(text="Vertex Group:")
+ col.label(text=_("Vertex Group:"))
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
split = layout.split()
col = split.column()
- col.label(text="Origin:")
+ col.label(text=_("Origin:"))
col.prop(md, "origin", text="")
sub = col.column()
sub.active = (md.origin is not None)
sub.prop(md, "use_relative")
col = split.column()
- col.label(text="Deform:")
+ col.label(text=_("Deform:"))
col.prop(md, "factor")
col.prop(md, "limits", slider=True)
if md.deform_method in {'TAPER', 'STRETCH'}:
@@ -541,13 +545,13 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
col.prop(md, "lock_y")
def SMOKE(self, layout, ob, md):
- layout.label(text="Settings can be found inside the Physics context")
+ layout.label(text=_("Settings can be found inside the Physics context"))
def SMOOTH(self, layout, ob, md):
split = layout.split(percentage=0.25)
col = split.column()
- col.label(text="Axis:")
+ col.label(text=_("Axis:"))
col.prop(md, "use_x")
col.prop(md, "use_y")
col.prop(md, "use_z")
@@ -555,11 +559,11 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
col = split.column()
col.prop(md, "factor")
col.prop(md, "iterations")
- col.label(text="Vertex Group:")
+ col.label(text=_("Vertex Group:"))
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
def SOFT_BODY(self, layout, ob, md):
- layout.label(text="Settings can be found inside the Physics context")
+ layout.label(text=_("Settings can be found inside the Physics context"))
def SOLIDIFY(self, layout, ob, md):
split = layout.split()
@@ -568,19 +572,19 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
col.prop(md, "thickness")
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
- col.label(text="Crease:")
- col.prop(md, "edge_crease_inner", text="Inner")
- col.prop(md, "edge_crease_outer", text="Outer")
- col.prop(md, "edge_crease_rim", text="Rim")
- col.label(text="Material Index Offset:")
+ col.label(text=_("Crease:"))
+ col.prop(md, "edge_crease_inner", text=_("Inner"))
+ col.prop(md, "edge_crease_outer", text=_("Outer"))
+ col.prop(md, "edge_crease_rim", text=_("Rim"))
+ col.label(text=_("Material Index Offset:"))
col = split.column()
col.prop(md, "offset")
sub = col.column()
sub.active = bool(md.vertex_group)
- sub.prop(md, "invert_vertex_group", text="Invert")
- sub.prop(md, "thickness_vertex_group", text="Factor")
+ sub.prop(md, "invert_vertex_group", text=_("Invert"))
+ sub.prop(md, "thickness_vertex_group", text=_("Factor"))
col.prop(md, "use_even_offset")
col.prop(md, "use_quality_normals")
@@ -591,65 +595,64 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
row.prop(md, "material_offset", text="")
row = row.row()
row.active = md.use_rim
- row.prop(md, "material_offset_rim", text="Rim")
+ row.prop(md, "material_offset_rim", text=_("Rim"))
def SUBSURF(self, layout, ob, md):
layout.row().prop(md, "subdivision_type", expand=True)
split = layout.split()
col = split.column()
- col.label(text="Subdivisions:")
- col.prop(md, "levels", text="View")
- col.prop(md, "render_levels", text="Render")
+ col.label(text=_("Subdivisions:"))
+ col.prop(md, "levels", text=_("View"))
+ col.prop(md, "render_levels", text=_("Render"))
col = split.column()
- col.label(text="Options:")
+ col.label(text=_("Options:"))
col.prop(md, "use_subsurf_uv")
col.prop(md, "show_only_control_edges")
def SURFACE(self, layout, ob, md):
- layout.label(text="Settings can be found inside the Physics context")
+ layout.label(text=_("Settings can be found inside the Physics context"))
def UV_PROJECT(self, layout, ob, md):
- if ob.type == 'MESH':
- split = layout.split()
+ split = layout.split()
- col = split.column()
- col.label(text="Image:")
- col.prop(md, "image", text="")
+ col = split.column()
+ col.label(text=_("Image:"))
+ col.prop(md, "image", text="")
- col = split.column()
- col.label(text="UV Layer:")
- col.prop_search(md, "uv_layer", ob.data, "uv_textures", text="")
+ col = split.column()
+ col.label(text=_("UV Layer:"))
+ col.prop_search(md, "uv_layer", ob.data, "uv_textures", text="")
- split = layout.split()
- col = split.column()
- col.prop(md, "use_image_override")
- col.prop(md, "projector_count", text="Projectors")
- for proj in md.projectors:
- col.prop(proj, "object", text="")
+ split = layout.split()
+ col = split.column()
+ col.prop(md, "use_image_override")
+ col.prop(md, "projector_count", text=_("Projectors"))
+ for proj in md.projectors:
+ col.prop(proj, "object", text="")
- col = split.column()
- sub = col.column(align=True)
- sub.prop(md, "aspect_x", text="Aspect X")
- sub.prop(md, "aspect_y", text="Aspect Y")
+ col = split.column()
+ sub = col.column(align=True)
+ sub.prop(md, "aspect_x", text=_("Aspect X"))
+ sub.prop(md, "aspect_y", text=_("Aspect Y"))
- sub = col.column(align=True)
- sub.prop(md, "scale_x", text="Scale X")
- sub.prop(md, "scale_y", text="Scale Y")
+ sub = col.column(align=True)
+ sub.prop(md, "scale_x", text=_("Scale X"))
+ sub.prop(md, "scale_y", text=_("Scale Y"))
def WARP(self, layout, ob, md):
use_falloff = (md.falloff_type != 'NONE')
split = layout.split()
col = split.column()
- col.label(text="From:")
+ col.label(text=_("From:"))
col.prop(md, "object_from", text="")
col.prop(md, "use_volume_preserve")
col = split.column()
- col.label(text="To:")
+ col.label(text=_("To:"))
col.prop(md, "object_to", text="")
col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
@@ -668,15 +671,15 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
# 2 new columns
split = layout.split()
col = split.column()
- col.label(text="Texture:")
+ col.label(text=_("Texture:"))
col.prop(md, "texture", text="")
col = split.column()
- col.label(text="Texture Coordinates:")
+ col.label(text=_("Texture Coordinates:"))
col.prop(md, "texture_coords", text="")
if md.texture_coords == 'OBJECT':
- layout.prop(md, "texture_coords_object", text="Object")
+ layout.prop(md, "texture_coords_object", text=_("Object"))
elif md.texture_coords == 'UV' and ob.type == 'MESH':
layout.prop_search(md, "uv_layer", ob.data, "uv_textures")
@@ -684,7 +687,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Motion:")
+ col.label(text=_("Motion:"))
col.prop(md, "use_x")
col.prop(md, "use_y")
col.prop(md, "use_cyclic")
@@ -700,18 +703,18 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Time:")
+ col.label(text=_("Time:"))
sub = col.column(align=True)
- sub.prop(md, "time_offset", text="Offset")
- sub.prop(md, "lifetime", text="Life")
- col.prop(md, "damping_time", text="Damping")
+ sub.prop(md, "time_offset", text=_("Offset"))
+ sub.prop(md, "lifetime", text=_("Life"))
+ col.prop(md, "damping_time", text=_("Damping"))
col = split.column()
- col.label(text="Position:")
+ col.label(text=_("Position:"))
sub = col.column(align=True)
sub.prop(md, "start_position_x", text="X")
sub.prop(md, "start_position_y", text="Y")
- col.prop(md, "falloff_radius", text="Falloff")
+ col.prop(md, "falloff_radius", text=_("Falloff"))
layout.separator()
@@ -719,7 +722,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
layout.prop_search(md, "vertex_group", ob, "vertex_groups")
split = layout.split(percentage=0.33)
col = split.column()
- col.label(text="Texture")
+ col.label(text=_("Texture"))
col = split.column()
col.template_ID(md, "texture", new="texture.new")
layout.prop(md, "texture_coords")
@@ -740,5 +743,119 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
col.prop(md, "width", slider=True)
col.prop(md, "narrowness", slider=True)
+ @staticmethod
+ def vertex_weight_mask(layout, ob, md):
+ layout.label(text="Influence/Mask Options:")
+
+ split = layout.split(percentage=0.4)
+ split.label(text="Global Influence:")
+ split.prop(md, "mask_constant", text="")
+
+ if not md.mask_texture:
+ split = layout.split(percentage=0.4)
+ split.label(text="Vertex Group Mask:")
+ split.prop_search(md, "mask_vertex_group", ob, "vertex_groups", text="")
+
+ if not md.mask_vertex_group:
+ split = layout.split(percentage=0.4)
+ split.label(text="Texture Mask:")
+ split.template_ID(md, "mask_texture", new="texture.new")
+ if md.mask_texture:
+ split = layout.split()
+
+ col = split.column()
+ col.label(text="Texture Coordinates:")
+ col.prop(md, "mask_tex_mapping", text="")
+
+ col = split.column()
+ col.label(text="Use Channel:")
+ col.prop(md, "mask_tex_use_channel", text="")
+
+ if md.mask_tex_mapping == 'OBJECT':
+ layout.prop(md, "mask_tex_map_object", text="Object")
+ elif md.mask_tex_mapping == 'UV' and ob.type == 'MESH':
+ layout.prop_search(md, "mask_tex_uv_layer", ob.data, "uv_textures")
+
+ def VERTEX_WEIGHT_EDIT(self, layout, ob, md):
+ split = layout.split()
+ col = split.column()
+ col.label(text="Vertex Group:")
+ col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
+
+ col = split.column()
+ col.label(text="Default Weight:")
+ col.prop(md, "default_weight", text="")
+
+ layout.prop(md, "falloff_type")
+ if md.falloff_type == 'CURVE':
+ col = layout.column()
+ col.template_curve_mapping(md, "map_curve")
+
+ split = layout.split(percentage=0.4)
+ split.prop(md, "use_add")
+ row = split.row()
+ row.active = md.use_add
+ row.prop(md, "add_threshold")
+
+ split = layout.split(percentage=0.4)
+ split.prop(md, "use_remove")
+ row = split.row()
+ row.active = md.use_remove
+ row.prop(md, "remove_threshold")
+
+ # Common mask options
+ layout.separator()
+ self.vertex_weight_mask(layout, ob, md)
+
+ def VERTEX_WEIGHT_MIX(self, layout, ob, md):
+ split = layout.split()
+
+ col = split.column()
+ col.label(text="Vertex Group A:")
+ col.prop_search(md, "vertex_group_a", ob, "vertex_groups", text="")
+ col.label(text="Default Weight A:")
+ col.prop(md, "default_weight_a", text="")
+
+ col.label(text="Mix Mode:")
+ col.prop(md, "mix_mode", text="")
+
+ col = split.column()
+ col.label(text="Vertex Group B:")
+ col.prop_search(md, "vertex_group_b", ob, "vertex_groups", text="")
+ col.label(text="Default Weight B:")
+ col.prop(md, "default_weight_b", text="")
+
+ col.label(text="Mix Set:")
+ col.prop(md, "mix_set", text="")
+
+ # Common mask options
+ layout.separator()
+ self.vertex_weight_mask(layout, ob, md)
+
+ def VERTEX_WEIGHT_PROXIMITY(self, layout, ob, md):
+ split = layout.split()
+
+ col = split.column()
+ col.label(text="Vertex Group:")
+ col.prop_search(md, "vertex_group", ob, "vertex_groups", text="")
+
+ col = split.column()
+ col.label(text="Target Object:")
+ col.prop(md, "target", text="")
+
+ layout.row().prop(md, "proximity_mode", expand=True)
+ if md.proximity_mode == 'GEOMETRY':
+ layout.row().prop(md, "proximity_geometry", expand=True)
+
+ row = layout.row()
+ row.prop(md, "min_dist")
+ row.prop(md, "max_dist")
+
+ layout.prop(md, "falloff_type")
+
+ # Common mask options
+ layout.separator()
+ self.vertex_weight_mask(layout, ob, md)
+
if __name__ == "__main__": # only for live edit.
bpy.utils.register_module(__name__)
diff --git a/release/scripts/startup/bl_ui/properties_data_speaker.py b/release/scripts/startup/bl_ui/properties_data_speaker.py
index 657c0fe652a..a1b86b51f5f 100644
--- a/release/scripts/startup/bl_ui/properties_data_speaker.py
+++ b/release/scripts/startup/bl_ui/properties_data_speaker.py
@@ -81,7 +81,7 @@ class DATA_PT_distance(DataButtonsPanel, bpy.types.Panel):
speaker = context.speaker
split = layout.split()
-
+
col = split.column()
col.label("Volume:")
col.prop(speaker, "volume_min", text="Minimum")
diff --git a/release/scripts/startup/bl_ui/properties_game.py b/release/scripts/startup/bl_ui/properties_game.py
index 161e4b10cff..95ae54c4597 100644
--- a/release/scripts/startup/bl_ui/properties_game.py
+++ b/release/scripts/startup/bl_ui/properties_game.py
@@ -19,7 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.types import Panel
-
+from blf import gettext as _
class PhysicsButtonsPanel():
bl_space_type = 'PROPERTIES'
@@ -54,7 +54,7 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, Panel):
col = split.column()
col.prop(game, "use_actor")
col.prop(game, "use_ghost")
- col.prop(ob, "hide_render", text="Invisible") # out of place but useful
+ col.prop(ob, "hide_render", text=_("Invisible")) # out of place but useful
col = split.column()
col.prop(game, "use_material_physics_fh")
@@ -66,7 +66,7 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Attributes:")
+ col.label(text=_("Attributes:"))
col.prop(game, "mass")
col.prop(game, "radius")
col.prop(game, "form_factor")
@@ -81,29 +81,29 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Velocity:")
+ col.label(text=_("Velocity:"))
sub = col.column(align=True)
- sub.prop(game, "velocity_min", text="Minimum")
- sub.prop(game, "velocity_max", text="Maximum")
+ sub.prop(game, "velocity_min", text=_("Minimum"))
+ sub.prop(game, "velocity_max", text=_("Maximum"))
col = split.column()
- col.label(text="Damping:")
+ col.label(text=_("Damping:"))
sub = col.column(align=True)
- sub.prop(game, "damping", text="Translation", slider=True)
- sub.prop(game, "rotation_damping", text="Rotation", slider=True)
+ sub.prop(game, "damping", text=_("Translation"), slider=True)
+ sub.prop(game, "rotation_damping", text=_("Rotation"), slider=True)
layout.separator()
split = layout.split()
col = split.column()
- col.label(text="Lock Translation:")
+ col.label(text=_("Lock Translation:"))
col.prop(game, "lock_location_x", text="X")
col.prop(game, "lock_location_y", text="Y")
col.prop(game, "lock_location_z", text="Z")
col = split.column()
- col.label(text="Lock Rotation:")
+ col.label(text=_("Lock Rotation:"))
col.prop(game, "lock_rotation_x", text="X")
col.prop(game, "lock_rotation_y", text="Y")
col.prop(game, "lock_rotation_z", text="Z")
@@ -112,21 +112,21 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, Panel):
col = layout.column()
col.prop(game, "use_actor")
col.prop(game, "use_ghost")
- col.prop(ob, "hide_render", text="Invisible")
+ col.prop(ob, "hide_render", text=_("Invisible"))
layout.separator()
split = layout.split()
col = split.column()
- col.label(text="Attributes:")
+ col.label(text=_("Attributes:"))
col.prop(game, "mass")
col.prop(soft, "weld_threshold")
col.prop(soft, "location_iterations")
col.prop(soft, "linear_stiffness", slider=True)
col.prop(soft, "dynamic_friction", slider=True)
col.prop(soft, "collision_margin", slider=True)
- col.prop(soft, "use_bending_constraints", text="Bending Constraints")
+ col.prop(soft, "use_bending_constraints", text=_("Bending Constraints"))
col = split.column()
col.prop(soft, "use_shape_match")
@@ -136,25 +136,25 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, Panel):
col.separator()
- col.label(text="Cluster Collision:")
+ col.label(text=_("Cluster Collision:"))
col.prop(soft, "use_cluster_rigid_to_softbody")
col.prop(soft, "use_cluster_soft_to_softbody")
sub = col.column()
sub.active = (soft.use_cluster_rigid_to_softbody or soft.use_cluster_soft_to_softbody)
- sub.prop(soft, "cluster_iterations", text="Iterations")
+ sub.prop(soft, "cluster_iterations", text=_("Iterations"))
elif game.physics_type == 'STATIC':
col = layout.column()
col.prop(game, "use_actor")
col.prop(game, "use_ghost")
- col.prop(ob, "hide_render", text="Invisible")
+ col.prop(ob, "hide_render", text=_("Invisible"))
layout.separator()
split = layout.split()
col = split.column()
- col.label(text="Attributes:")
+ col.label(text=_("Attributes:"))
col.prop(game, "radius")
col = split.column()
@@ -165,7 +165,7 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, Panel):
subsub.prop(game, "friction_coefficients", text="", slider=True)
elif game.physics_type in {'SENSOR', 'INVISIBLE', 'NO_COLLISION', 'OCCLUDE'}:
- layout.prop(ob, "hide_render", text="Invisible")
+ layout.prop(ob, "hide_render", text=_("Invisible"))
class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel, Panel):
@@ -189,11 +189,38 @@ class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel, Panel):
game = context.active_object.game
layout.active = game.use_collision_bounds
- layout.prop(game, "collision_bounds_type", text="Bounds")
+ layout.prop(game, "collision_bounds_type", text=_("Bounds"))
row = layout.row()
- row.prop(game, "collision_margin", text="Margin", slider=True)
- row.prop(game, "use_collision_compound", text="Compound")
+ row.prop(game, "collision_margin", text=_("Margin"), slider=True)
+ row.prop(game, "use_collision_compound", text=_("Compound"))
+
+
+class PHYSICS_PT_game_obstacles(PhysicsButtonsPanel, Panel):
+ bl_label = "Create Obstacle"
+ COMPAT_ENGINES = {'BLENDER_GAME'}
+
+ @classmethod
+ def poll(cls, context):
+ game = context.object.game
+ rd = context.scene.render
+ return (game.physics_type in ('DYNAMIC', 'RIGID_BODY', 'SENSOR', 'SOFT_BODY', 'STATIC')) and (rd.engine in cls.COMPAT_ENGINES)
+
+ def draw_header(self, context):
+ game = context.active_object.game
+
+ self.layout.prop(game, "create_obstacle", text="")
+
+ def draw(self, context):
+ layout = self.layout
+
+ game = context.active_object.game
+
+ layout.active = game.create_obstacle
+
+ row = layout.row()
+ row.prop(game, "obstacle_radius", text="Radius")
+ row.label()
class RenderButtonsPanel():
@@ -215,7 +242,7 @@ class RENDER_PT_game(RenderButtonsPanel, Panel):
layout = self.layout
row = layout.row()
- row.operator("view3d.game_start", text="Start")
+ row.operator("view3d.game_start", text=_("Start"))
row.label()
@@ -233,20 +260,20 @@ class RENDER_PT_game_player(RenderButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Resolution:")
+ col.label(text=_("Resolution:"))
sub = col.column(align=True)
sub.prop(gs, "resolution_x", slider=False, text="X")
sub.prop(gs, "resolution_y", slider=False, text="Y")
col = split.column()
- col.label(text="Quality:")
+ col.label(text=_("Quality:"))
sub = col.column(align=True)
- sub.prop(gs, "depth", text="Bit Depth", slider=False)
- sub.prop(gs, "frequency", text="FPS", slider=False)
+ sub.prop(gs, "depth", text=_("Bit Depth"), slider=False)
+ sub.prop(gs, "frequency", text=_("FPS"), slider=False)
# framing:
col = layout.column()
- col.label(text="Framing:")
+ col.label(text=_("Framing:"))
col.row().prop(gs, "frame_type", expand=True)
if gs.frame_type == 'LETTERBOX':
col.prop(gs, "frame_color", text="")
@@ -272,7 +299,7 @@ class RENDER_PT_game_stereo(RenderButtonsPanel, Panel):
# dome:
elif stereo_mode == 'DOME':
- layout.prop(gs, "dome_mode", text="Dome Type")
+ layout.prop(gs, "dome_mode", text=_("Dome Type"))
dome_type = gs.dome_mode
@@ -283,23 +310,23 @@ class RENDER_PT_game_stereo(RenderButtonsPanel, Panel):
dome_type == 'TRUNCATED_FRONT':
col = split.column()
- col.prop(gs, "dome_buffer_resolution", text="Resolution", slider=True)
+ col.prop(gs, "dome_buffer_resolution", text=_("Resolution"), slider=True)
col.prop(gs, "dome_angle", slider=True)
col = split.column()
- col.prop(gs, "dome_tesselation", text="Tesselation")
+ col.prop(gs, "dome_tesselation", text=_("Tesselation"))
col.prop(gs, "dome_tilt")
elif dome_type == 'PANORAM_SPH':
col = split.column()
- col.prop(gs, "dome_buffer_resolution", text="Resolution", slider=True)
+ col.prop(gs, "dome_buffer_resolution", text=_("Resolution"), slider=True)
col = split.column()
- col.prop(gs, "dome_tesselation", text="Tesselation")
+ col.prop(gs, "dome_tesselation", text=_("Tesselation"))
else: # cube map
col = split.column()
- col.prop(gs, "dome_buffer_resolution", text="Resolution", slider=True)
+ col.prop(gs, "dome_buffer_resolution", text=_("Resolution"), slider=True)
col = split.column()
@@ -321,15 +348,15 @@ class RENDER_PT_game_shading(RenderButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.prop(gs, "use_glsl_lights", text="Lights")
- col.prop(gs, "use_glsl_shaders", text="Shaders")
- col.prop(gs, "use_glsl_shadows", text="Shadows")
- col.prop(gs, "use_glsl_color_management", text="Color Management")
+ col.prop(gs, "use_glsl_lights", text=_("Lights"))
+ col.prop(gs, "use_glsl_shaders", text=_("Shaders"))
+ col.prop(gs, "use_glsl_shadows", text=_("Shadows"))
+ col.prop(gs, "use_glsl_color_management", text=_("Color Management"))
col = split.column()
- col.prop(gs, "use_glsl_ramps", text="Ramps")
- col.prop(gs, "use_glsl_nodes", text="Nodes")
- col.prop(gs, "use_glsl_extra_textures", text="Extra Textures")
+ col.prop(gs, "use_glsl_ramps", text=_("Ramps"))
+ col.prop(gs, "use_glsl_nodes", text=_("Nodes"))
+ col.prop(gs, "use_glsl_extra_textures", text=_("Extra Textures"))
class RENDER_PT_game_performance(RenderButtonsPanel, Panel):
@@ -344,7 +371,7 @@ class RENDER_PT_game_performance(RenderButtonsPanel, Panel):
row = col.row()
row.prop(gs, "use_frame_rate")
row.prop(gs, "use_display_lists")
-
+
col.prop(gs, "restrict_animation_updates")
@@ -357,11 +384,75 @@ class RENDER_PT_game_display(RenderButtonsPanel, Panel):
gs = context.scene.game_settings
flow = layout.column_flow()
- flow.prop(gs, "show_debug_properties", text="Debug Properties")
- flow.prop(gs, "show_framerate_profile", text="Framerate and Profile")
- flow.prop(gs, "show_physics_visualization", text="Physics Visualization")
+ flow.prop(gs, "show_debug_properties", text=_("Debug Properties"))
+ flow.prop(gs, "show_framerate_profile", text=_("Framerate and Profile"))
+ flow.prop(gs, "show_physics_visualization", text=_("Physics Visualization"))
flow.prop(gs, "use_deprecation_warnings")
- flow.prop(gs, "show_mouse", text="Mouse Cursor")
+ flow.prop(gs, "show_mouse", text=_("Mouse Cursor"))
+
+
+class SceneButtonsPanel():
+ bl_space_type = 'PROPERTIES'
+ bl_region_type = 'WINDOW'
+ bl_context = "scene"
+
+
+class SCENE_PT_game_navmesh(SceneButtonsPanel, bpy.types.Panel):
+ bl_label = "Navigation mesh"
+ bl_default_closed = True
+ COMPAT_ENGINES = {'BLENDER_GAME'}
+
+ @classmethod
+ def poll(cls, context):
+ scene = context.scene
+ return (scene and scene.render.engine in cls.COMPAT_ENGINES)
+
+ def draw(self, context):
+ layout = self.layout
+
+ rd = context.scene.game_settings.recast_data
+
+ layout.operator("object.create_navmesh", text='Build navigation mesh')
+
+ col = layout.column()
+ col.label(text="Rasterization:")
+ row = col.row()
+ row.prop(rd, "cell_size")
+ row.prop(rd, "cell_height")
+
+ col = layout.column()
+ col.label(text="Agent:")
+ split = col.split()
+
+ col = split.column()
+ col.prop(rd, "agent_height", text="Height")
+ col.prop(rd, "agent_radius", text="Radius")
+
+ col = split.column()
+ col.prop(rd, "max_slope")
+ col.prop(rd, "max_climb")
+
+ col = layout.column()
+ col.label(text="Region:")
+ row = col.row()
+ row.prop(rd, "region_min_size")
+ row.prop(rd, "region_merge_size")
+
+ col = layout.column()
+ col.label(text="Polygonization:")
+ split = col.split()
+
+ col = split.column()
+ col.prop(rd, "edge_max_len")
+ col.prop(rd, "edge_max_error")
+
+ split.prop(rd, "verts_per_poly")
+
+ col = layout.column()
+ col.label(text="Detail Mesh:")
+ row = col.row()
+ row.prop(rd, "sample_dist")
+ row.prop(rd, "sample_max_error")
class WorldButtonsPanel():
@@ -455,37 +546,57 @@ class WORLD_PT_game_physics(WorldButtonsPanel, Panel):
layout.prop(gs, "physics_engine")
if gs.physics_engine != 'NONE':
- layout.prop(gs, "physics_gravity", text="Gravity")
+ layout.prop(gs, "physics_gravity", text=_("Gravity"))
split = layout.split()
col = split.column()
- col.label(text="Physics Steps:")
+ col.label(text=_("Physics Steps:"))
sub = col.column(align=True)
- sub.prop(gs, "physics_step_max", text="Max")
- sub.prop(gs, "physics_step_sub", text="Substeps")
- col.prop(gs, "fps", text="FPS")
+ sub.prop(gs, "physics_step_max", text=_("Max"))
+ sub.prop(gs, "physics_step_sub", text=_("Substeps"))
+ col.prop(gs, "fps", text=_("FPS"))
col = split.column()
- col.label(text="Logic Steps:")
- col.prop(gs, "logic_step_max", text="Max")
+ col.label(text=_("Logic Steps:"))
+ col.prop(gs, "logic_step_max", text=_("Max"))
col = layout.column()
- col.prop(gs, "use_occlusion_culling", text="Occlusion Culling")
+ col.prop(gs, "use_occlusion_culling", text=_("Occlusion Culling"))
sub = col.column()
sub.active = gs.use_occlusion_culling
- sub.prop(gs, "occlusion_culling_resolution", text="Resolution")
+ sub.prop(gs, "occlusion_culling_resolution", text=_("Resolution"))
else:
split = layout.split()
col = split.column()
- col.label(text="Physics Steps:")
- col.prop(gs, "fps", text="FPS")
+ col.label(text=_("Physics Steps:"))
+ col.prop(gs, "fps", text=_("FPS"))
col = split.column()
- col.label(text="Logic Steps:")
- col.prop(gs, "logic_step_max", text="Max")
+ col.label(text=_("Logic Steps:"))
+ col.prop(gs, "logic_step_max", text=_("Max"))
+
+
+class WORLD_PT_game_physics_obstacles(WorldButtonsPanel, Panel):
+ bl_label = "Obstacle simulation"
+ COMPAT_ENGINES = {'BLENDER_GAME'}
+
+ @classmethod
+ def poll(cls, context):
+ scene = context.scene
+ return (scene.world and scene.render.engine in cls.COMPAT_ENGINES)
+
+ def draw(self, context):
+ layout = self.layout
+
+ gs = context.scene.game_settings
+
+ layout.prop(gs, "obstacle_simulation", text="Type")
+ if gs.obstacle_simulation != 'NONE':
+ layout.prop(gs, "level_height")
+ layout.prop(gs, "show_obstacle_simulation")
if __name__ == "__main__": # only for live edit.
bpy.utils.register_module(__name__)
diff --git a/release/scripts/startup/bl_ui/properties_material.py b/release/scripts/startup/bl_ui/properties_material.py
index 13ce92f084c..7b04c990c6a 100644
--- a/release/scripts/startup/bl_ui/properties_material.py
+++ b/release/scripts/startup/bl_ui/properties_material.py
@@ -20,7 +20,7 @@
import bpy
from bpy.types import Menu, Panel
from rna_prop_ui import PropertyPanel
-
+from blf import gettext as _
def active_node_mat(mat):
# TODO, 2.4x has a pipeline section, for 2.5 we need to communicate
@@ -114,9 +114,9 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel, Panel):
if ob.mode == 'EDIT':
row = layout.row(align=True)
- row.operator("object.material_slot_assign", text="Assign")
- row.operator("object.material_slot_select", text="Select")
- row.operator("object.material_slot_deselect", text="Deselect")
+ row.operator("object.material_slot_assign", text=_("Assign"))
+ row.operator("object.material_slot_select", text=_("Select"))
+ row.operator("object.material_slot_deselect", text=_("Deselect"))
split = layout.split(percentage=0.65)
@@ -142,7 +142,7 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel, Panel):
if mat.active_node_material:
row.prop(mat.active_node_material, "name", text="")
else:
- row.label(text="No material node selected")
+ row.label(text=_("No material node selected"))
class MATERIAL_PT_preview(MaterialButtonsPanel, Panel):
@@ -197,8 +197,8 @@ class MATERIAL_PT_pipeline(MaterialButtonsPanel, Panel):
col = split.column()
col.active = mat_type
- col.prop(mat, "use_cast_shadows_only", text="Cast Only")
- col.prop(mat, "shadow_cast_alpha", text="Casting Alpha")
+ col.prop(mat, "use_cast_shadows_only", text=_("Cast Only"))
+ col.prop(mat, "shadow_cast_alpha", text=_("Casting Alpha"))
col.prop(mat, "use_cast_buffer_shadows")
col.prop(mat, "use_cast_approximate")
col.prop(mat, "pass_index")
@@ -225,12 +225,12 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel, Panel):
col.prop(mat, "diffuse_color", text="")
sub = col.column()
sub.active = (not mat.use_shadeless)
- sub.prop(mat, "diffuse_intensity", text="Intensity")
+ sub.prop(mat, "diffuse_intensity", text=_("Intensity"))
col = split.column()
col.active = (not mat.use_shadeless)
col.prop(mat, "diffuse_shader", text="")
- col.prop(mat, "use_diffuse_ramp", text="Ramp")
+ col.prop(mat, "use_diffuse_ramp", text=_("Ramp"))
col = layout.column()
col.active = (not mat.use_shadeless)
@@ -240,12 +240,12 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel, Panel):
col.prop(mat, "darkness")
elif mat.diffuse_shader == 'TOON':
row = col.row()
- row.prop(mat, "diffuse_toon_size", text="Size")
- row.prop(mat, "diffuse_toon_smooth", text="Smooth")
+ row.prop(mat, "diffuse_toon_size", text=_("Size"))
+ row.prop(mat, "diffuse_toon_smooth", text=_("Smooth"))
elif mat.diffuse_shader == 'FRESNEL':
row = col.row()
- row.prop(mat, "diffuse_fresnel", text="Fresnel")
- row.prop(mat, "diffuse_fresnel_factor", text="Factor")
+ row.prop(mat, "diffuse_fresnel", text=_("Fresnel"))
+ row.prop(mat, "diffuse_fresnel_factor", text=_("Factor"))
if mat.use_diffuse_ramp:
col = layout.column()
@@ -255,10 +255,10 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel, Panel):
col.separator()
row = col.row()
- row.prop(mat, "diffuse_ramp_input", text="Input")
- row.prop(mat, "diffuse_ramp_blend", text="Blend")
+ row.prop(mat, "diffuse_ramp_input", text=_("Input"))
+ row.prop(mat, "diffuse_ramp_blend", text=_("Blend"))
- col.prop(mat, "diffuse_ramp_factor", text="Factor")
+ col.prop(mat, "diffuse_ramp_factor", text=_("Factor"))
class MATERIAL_PT_specular(MaterialButtonsPanel, Panel):
@@ -282,25 +282,25 @@ class MATERIAL_PT_specular(MaterialButtonsPanel, Panel):
col = split.column()
col.prop(mat, "specular_color", text="")
- col.prop(mat, "specular_intensity", text="Intensity")
+ col.prop(mat, "specular_intensity", text=_("Intensity"))
col = split.column()
col.prop(mat, "specular_shader", text="")
- col.prop(mat, "use_specular_ramp", text="Ramp")
+ col.prop(mat, "use_specular_ramp", text=_("Ramp"))
col = layout.column()
if mat.specular_shader in {'COOKTORR', 'PHONG'}:
- col.prop(mat, "specular_hardness", text="Hardness")
+ col.prop(mat, "specular_hardness", text=_("Hardness"))
elif mat.specular_shader == 'BLINN':
row = col.row()
- row.prop(mat, "specular_hardness", text="Hardness")
- row.prop(mat, "specular_ior", text="IOR")
+ row.prop(mat, "specular_hardness", text=_("Hardness"))
+ row.prop(mat, "specular_ior", text=_("IOR"))
elif mat.specular_shader == 'WARDISO':
- col.prop(mat, "specular_slope", text="Slope")
+ col.prop(mat, "specular_slope", text=_("Slope"))
elif mat.specular_shader == 'TOON':
row = col.row()
- row.prop(mat, "specular_toon_size", text="Size")
- row.prop(mat, "specular_toon_smooth", text="Smooth")
+ row.prop(mat, "specular_toon_size", text=_("Size"))
+ row.prop(mat, "specular_toon_smooth", text=_("Smooth"))
if mat.use_specular_ramp:
layout.separator()
@@ -308,10 +308,10 @@ class MATERIAL_PT_specular(MaterialButtonsPanel, Panel):
layout.separator()
row = layout.row()
- row.prop(mat, "specular_ramp_input", text="Input")
- row.prop(mat, "specular_ramp_blend", text="Blend")
+ row.prop(mat, "specular_ramp_input", text=_("Input"))
+ row.prop(mat, "specular_ramp_blend", text=_("Blend"))
- layout.prop(mat, "specular_ramp_factor", text="Factor")
+ layout.prop(mat, "specular_ramp_factor", text=_("Factor"))
class MATERIAL_PT_shading(MaterialButtonsPanel, Panel):
@@ -384,14 +384,14 @@ class MATERIAL_PT_transp(MaterialButtonsPanel, Panel):
col.prop(mat, "alpha")
row = col.row()
row.active = (base_mat.transparency_method != 'MASK') and (not mat.use_shadeless)
- row.prop(mat, "specular_alpha", text="Specular")
+ row.prop(mat, "specular_alpha", text=_("Specular"))
col = split.column()
col.active = (not mat.use_shadeless)
col.prop(rayt, "fresnel")
sub = col.column()
sub.active = rayt.fresnel > 0
- sub.prop(rayt, "fresnel_factor", text="Blend")
+ sub.prop(rayt, "fresnel_factor", text=_("Blend"))
if base_mat.transparency_method == 'RAYTRACE':
layout.separator()
@@ -406,12 +406,12 @@ class MATERIAL_PT_transp(MaterialButtonsPanel, Panel):
col.prop(rayt, "depth")
col = split.column()
- col.label(text="Gloss:")
- col.prop(rayt, "gloss_factor", text="Amount")
+ col.label(text=_("Gloss:"))
+ col.prop(rayt, "gloss_factor", text=_("Amount"))
sub = col.column()
sub.active = rayt.gloss_factor < 1.0
- sub.prop(rayt, "gloss_threshold", text="Threshold")
- sub.prop(rayt, "gloss_samples", text="Samples")
+ sub.prop(rayt, "gloss_threshold", text=_("Threshold"))
+ sub.prop(rayt, "gloss_samples", text=_("Samples"))
class MATERIAL_PT_mirror(MaterialButtonsPanel, Panel):
@@ -448,28 +448,28 @@ class MATERIAL_PT_mirror(MaterialButtonsPanel, Panel):
col.prop(raym, "fresnel")
sub = col.column()
sub.active = raym.fresnel > 0
- sub.prop(raym, "fresnel_factor", text="Blend")
+ sub.prop(raym, "fresnel_factor", text=_("Blend"))
split = layout.split()
col = split.column()
col.separator()
col.prop(raym, "depth")
- col.prop(raym, "distance", text="Max Dist")
+ col.prop(raym, "distance", text=_("Max Dist"))
col.separator()
sub = col.split(percentage=0.4)
sub.active = raym.distance > 0.0
- sub.label(text="Fade To:")
+ sub.label(text=_("Fade To:"))
sub.prop(raym, "fade_to", text="")
col = split.column()
- col.label(text="Gloss:")
- col.prop(raym, "gloss_factor", text="Amount")
+ col.label(text=_("Gloss:"))
+ col.prop(raym, "gloss_factor", text=_("Amount"))
sub = col.column()
sub.active = raym.gloss_factor < 1.0
- sub.prop(raym, "gloss_threshold", text="Threshold")
- sub.prop(raym, "gloss_samples", text="Samples")
- sub.prop(raym, "gloss_anisotropic", text="Anisotropic")
+ sub.prop(raym, "gloss_threshold", text=_("Threshold"))
+ sub.prop(raym, "gloss_samples", text=_("Samples"))
+ sub.prop(raym, "gloss_anisotropic", text=_("Anisotropic"))
class MATERIAL_PT_sss(MaterialButtonsPanel, Panel):
@@ -510,18 +510,18 @@ class MATERIAL_PT_sss(MaterialButtonsPanel, Panel):
col.prop(sss, "ior")
col.prop(sss, "scale")
col.prop(sss, "color", text="")
- col.prop(sss, "radius", text="RGB Radius", expand=True)
+ col.prop(sss, "radius", text=_("RGB Radius"), expand=True)
col = split.column()
sub = col.column(align=True)
- sub.label(text="Blend:")
- sub.prop(sss, "color_factor", text="Color")
- sub.prop(sss, "texture_factor", text="Texture")
- sub.label(text="Scattering Weight:")
+ sub.label(text=_("Blend:"))
+ sub.prop(sss, "color_factor", text=_("Color"))
+ sub.prop(sss, "texture_factor", text=_("Texture"))
+ sub.label(text=_("Scattering Weight:"))
sub.prop(sss, "front")
sub.prop(sss, "back")
col.separator()
- col.prop(sss, "error_threshold", text="Error")
+ col.prop(sss, "error_threshold", text=_("Error"))
class MATERIAL_PT_halo(MaterialButtonsPanel, Panel):
@@ -561,7 +561,7 @@ class MATERIAL_PT_halo(MaterialButtonsPanel, Panel):
col.prop(halo, "hardness")
col.prop(halo, "add")
- layout.label(text="Options:")
+ layout.label(text=_("Options:"))
split = layout.split()
col = split.column()
@@ -603,18 +603,46 @@ class MATERIAL_PT_flare(MaterialButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.prop(halo, "flare_size", text="Size")
- col.prop(halo, "flare_boost", text="Boost")
- col.prop(halo, "flare_seed", text="Seed")
+ col.prop(halo, "flare_size", text=_("Size"))
+ col.prop(halo, "flare_boost", text=_("Boost"))
+ col.prop(halo, "flare_seed", text=_("Seed"))
col = split.column()
- col.prop(halo, "flare_subflare_count", text="Subflares")
- col.prop(halo, "flare_subflare_size", text="Subsize")
+ col.prop(halo, "flare_subflare_count", text=_("Subflares"))
+ col.prop(halo, "flare_subflare_size", text=_("Subsize"))
+
+
+class MATERIAL_PT_game_settings(MaterialButtonsPanel, bpy.types.Panel):
+ bl_label = "Game Settings"
+ COMPAT_ENGINES = {'BLENDER_GAME'}
+ @classmethod
+ def poll(cls, context):
+ return context.material and (context.scene.render.engine in cls.COMPAT_ENGINES)
-class MATERIAL_PT_physics(MaterialButtonsPanel, Panel):
+ def draw(self, context):
+ layout = self.layout
+ game = context.material.game_settings # dont use node material
+
+ row = layout.row()
+ row.prop(game, "back_culling")
+ row.prop(game, "invisible")
+ row.prop(game, "text")
+
+ row = layout.row()
+ row.label(text="Alpha Blend:")
+ row.label(text="Face Orientation:")
+ row = layout.row()
+ row.prop(game,"alpha_blend",text="")
+ row.prop(game,"face_orientation",text="")
+
+class MATERIAL_PT_physics(MaterialButtonsPanel, bpy.types.Panel):
bl_label = "Physics"
COMPAT_ENGINES = {'BLENDER_GAME'}
+
+ def draw_header(self, context):
+ game = context.material.game_settings
+ self.layout.prop(game, "physics", text="")
@classmethod
def poll(cls, context):
@@ -622,6 +650,7 @@ class MATERIAL_PT_physics(MaterialButtonsPanel, Panel):
def draw(self, context):
layout = self.layout
+ layout.active = context.material.game_settings.physics
phys = context.material.physics # dont use node material
@@ -631,7 +660,7 @@ class MATERIAL_PT_physics(MaterialButtonsPanel, Panel):
row.prop(phys, "elasticity", slider=True)
row = layout.row()
- row.label(text="Force Field:")
+ row.label(text=_("Force Field:"))
row = layout.row()
row.prop(phys, "fh_force")
@@ -663,10 +692,10 @@ class MATERIAL_PT_strand(MaterialButtonsPanel, Panel):
col = split.column()
sub = col.column(align=True)
- sub.label(text="Size:")
- sub.prop(tan, "root_size", text="Root")
- sub.prop(tan, "tip_size", text="Tip")
- sub.prop(tan, "size_min", text="Minimum")
+ sub.label(text=_("Size:"))
+ sub.prop(tan, "root_size", text=_("Root"))
+ sub.prop(tan, "tip_size", text=_("Tip"))
+ sub.prop(tan, "size_min", text=_("Minimum"))
sub.prop(tan, "use_blender_units")
sub = col.column()
sub.active = (not mat.use_shadeless)
@@ -674,7 +703,7 @@ class MATERIAL_PT_strand(MaterialButtonsPanel, Panel):
col.prop(tan, "shape")
col = split.column()
- col.label(text="Shading:")
+ col.label(text=_("Shading:"))
col.prop(tan, "width_fade")
ob = context.object
if ob and ob.type == 'MESH':
@@ -684,9 +713,9 @@ class MATERIAL_PT_strand(MaterialButtonsPanel, Panel):
col.separator()
sub = col.column()
sub.active = (not mat.use_shadeless)
- sub.label("Surface diffuse:")
+ sub.label(_("Surface diffuse:"))
sub = col.column()
- sub.prop(tan, "blend_distance", text="Distance")
+ sub.prop(tan, "blend_distance", text=_("Distance"))
class MATERIAL_PT_options(MaterialButtonsPanel, Panel):
@@ -719,11 +748,11 @@ class MATERIAL_PT_options(MaterialButtonsPanel, Panel):
sub.prop(mat, "offset_z")
sub.active = mat.use_transparency and mat.transparency_method == 'Z_TRANSPARENCY'
sub = col.column(align=True)
- sub.label(text="Light Group:")
+ sub.label(text=_("Light Group:"))
sub.prop(mat, "light_group", text="")
row = sub.row()
row.active = bool(mat.light_group)
- row.prop(mat, "use_light_group_exclusive", text="Exclusive")
+ row.prop(mat, "use_light_group_exclusive", text=_("Exclusive"))
col = split.column()
col.prop(mat, "use_face_texture")
@@ -758,12 +787,12 @@ class MATERIAL_PT_shadow(MaterialButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.prop(mat, "use_shadows", text="Receive")
- col.prop(mat, "use_transparent_shadows", text="Receive Transparent")
+ col.prop(mat, "use_shadows", text=_("Receive"))
+ col.prop(mat, "use_transparent_shadows", text=_("Receive Transparent"))
if simple_material(base_mat):
- col.prop(mat, "use_cast_shadows_only", text="Cast Only")
- col.prop(mat, "shadow_cast_alpha", text="Casting Alpha")
- col.prop(mat, "use_only_shadow", text="Shadows Only")
+ col.prop(mat, "use_cast_shadows_only", text=_("Cast Only"))
+ col.prop(mat, "shadow_cast_alpha", text=_("Casting Alpha"))
+ col.prop(mat, "use_only_shadow", text=_("Shadows Only"))
sub = col.column()
sub.active = mat.use_only_shadow
sub.prop(mat, "shadow_only_type", text="")
@@ -773,11 +802,11 @@ class MATERIAL_PT_shadow(MaterialButtonsPanel, Panel):
col.prop(mat, "use_cast_buffer_shadows")
sub = col.column()
sub.active = mat.use_cast_buffer_shadows
- sub.prop(mat, "shadow_buffer_bias", text="Buffer Bias")
- col.prop(mat, "use_ray_shadow_bias", text="Auto Ray Bias")
+ sub.prop(mat, "shadow_buffer_bias", text=_("Buffer Bias"))
+ col.prop(mat, "use_ray_shadow_bias", text=_("Auto Ray Bias"))
sub = col.column()
sub.active = (not mat.use_ray_shadow_bias)
- sub.prop(mat, "shadow_ray_bias", text="Ray Bias")
+ sub.prop(mat, "shadow_ray_bias", text=_("Ray Bias"))
if simple_material(base_mat):
col.prop(mat, "use_cast_approximate")
@@ -890,7 +919,7 @@ class MATERIAL_PT_volume_lighting(VolumeButtonsPanel, Panel):
sub = col.column()
sub.enabled = True
sub.active = False
- sub.label("Light Cache Enabled")
+ sub.label(_("Light Cache Enabled"))
col.prop(vol, "cache_resolution")
sub = col.column(align=True)
@@ -929,7 +958,7 @@ class MATERIAL_PT_volume_integration(VolumeButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Step Calculation:")
+ col.label(text=_("Step Calculation:"))
col.prop(vol, "step_method", text="")
col = col.column(align=True)
col.prop(vol, "step_size")
@@ -964,11 +993,11 @@ class MATERIAL_PT_volume_options(VolumeButtonsPanel, Panel):
col.prop(mat, "use_mist")
col = split.column()
- col.label(text="Light Group:")
+ col.label(text=_("Light Group:"))
col.prop(mat, "light_group", text="")
row = col.row()
row.active = bool(mat.light_group)
- row.prop(mat, "use_light_group_exclusive", text="Exclusive")
+ row.prop(mat, "use_light_group_exclusive", text=_("Exclusive"))
class MATERIAL_PT_custom_props(MaterialButtonsPanel, PropertyPanel, Panel):
diff --git a/release/scripts/startup/bl_ui/properties_object.py b/release/scripts/startup/bl_ui/properties_object.py
index 0779debb102..a099189eed6 100644
--- a/release/scripts/startup/bl_ui/properties_object.py
+++ b/release/scripts/startup/bl_ui/properties_object.py
@@ -20,7 +20,7 @@
import bpy
from bpy.types import Panel
from rna_prop_ui import PropertyPanel
-
+from blf import gettext as _
class ObjectButtonsPanel():
bl_space_type = 'PROPERTIES'
@@ -55,14 +55,14 @@ class OBJECT_PT_transform(ObjectButtonsPanel, Panel):
row.column().prop(ob, "location")
if ob.rotation_mode == 'QUATERNION':
- row.column().prop(ob, "rotation_quaternion", text="Rotation")
+ row.column().prop(ob, "rotation_quaternion", text=_("Rotation"))
elif ob.rotation_mode == 'AXIS_ANGLE':
- #row.column().label(text="Rotation")
- #row.column().prop(pchan, "rotation_angle", text="Angle")
- #row.column().prop(pchan, "rotation_axis", text="Axis")
- row.column().prop(ob, "rotation_axis_angle", text="Rotation")
+ #row.column().label(text=_("Rotation"))
+ #row.column().prop(pchan, "rotation_angle", text=_("Angle"))
+ #row.column().prop(pchan, "rotation_axis", text=_("Axis"))
+ row.column().prop(ob, "rotation_axis_angle", text=_("Rotation"))
else:
- row.column().prop(ob, "rotation_euler", text="Rotation")
+ row.column().prop(ob, "rotation_euler", text=_("Rotation"))
row.column().prop(ob, "scale")
@@ -82,15 +82,15 @@ class OBJECT_PT_delta_transform(ObjectButtonsPanel, Panel):
row.column().prop(ob, "delta_location")
if ob.rotation_mode == 'QUATERNION':
- row.column().prop(ob, "delta_rotation_quaternion", text="Rotation")
+ row.column().prop(ob, "delta_rotation_quaternion", text=_("Rotation"))
elif ob.rotation_mode == 'AXIS_ANGLE':
- #row.column().label(text="Rotation")
- #row.column().prop(pchan, "delta_rotation_angle", text="Angle")
- #row.column().prop(pchan, "delta_rotation_axis", text="Axis")
- #row.column().prop(ob, "delta_rotation_axis_angle", text="Rotation")
- row.column().label(text="Not for Axis-Angle")
+ #row.column().label(text=_("Rotation"))
+ #row.column().prop(pchan, "delta_rotation_angle", text=_("Angle"))
+ #row.column().prop(pchan, "delta_rotation_axis", text=_("Axis"))
+ #row.column().prop(ob, "delta_rotation_axis_angle", text=_("Rotation"))
+ row.column().label(text=_("Not for Axis-Angle"))
else:
- row.column().prop(ob, "delta_rotation_euler", text="Rotation")
+ row.column().prop(ob, "delta_rotation_euler", text=_("Rotation"))
row.column().prop(ob, "delta_scale")
@@ -107,18 +107,18 @@ class OBJECT_PT_transform_locks(ObjectButtonsPanel, Panel):
row = layout.row()
col = row.column()
- col.prop(ob, "lock_location", text="Location")
+ col.prop(ob, "lock_location", text=_("Location"))
col = row.column()
if ob.rotation_mode in {'QUATERNION', 'AXIS_ANGLE'}:
- col.prop(ob, "lock_rotations_4d", text="Rotation")
+ col.prop(ob, "lock_rotations_4d", text=_("Rotation"))
if ob.lock_rotations_4d:
col.prop(ob, "lock_rotation_w", text="W")
col.prop(ob, "lock_rotation", text="")
else:
- col.prop(ob, "lock_rotation", text="Rotation")
+ col.prop(ob, "lock_rotation", text=_("Rotation"))
- row.column().prop(ob, "lock_scale", text="Scale")
+ row.column().prop(ob, "lock_scale", text=_("Scale"))
class OBJECT_PT_relations(ObjectButtonsPanel, Panel):
@@ -137,7 +137,7 @@ class OBJECT_PT_relations(ObjectButtonsPanel, Panel):
col.prop(ob, "pass_index")
col = split.column()
- col.label(text="Parent:")
+ col.label(text=_("Parent:"))
col.prop(ob, "parent", text="")
sub = col.column()
@@ -157,7 +157,7 @@ class OBJECT_PT_groups(ObjectButtonsPanel, Panel):
ob = context.object
row = layout.row(align=True)
- row.operator("object.group_link", text="Add to Group")
+ row.operator("object.group_link", text=_("Add to Group"))
row.operator("object.group_add", text="", icon='ZOOMIN')
# XXX, this is bad practice, yes, I wrote it :( - campbell
@@ -176,12 +176,12 @@ class OBJECT_PT_groups(ObjectButtonsPanel, Panel):
split = col.box().split()
col = split.column()
- col.prop(group, "layers", text="Dupli")
+ col.prop(group, "layers", text=_("Dupli"))
col = split.column()
col.prop(group, "dupli_offset", text="")
- prop = col.operator("wm.context_set_value", text="From Cursor")
+ prop = col.operator("wm.context_set_value", text=_("From Cursor"))
prop.data_path = "object.users_group[%d].dupli_offset" % index
prop.value = value
index += 1
@@ -197,11 +197,11 @@ class OBJECT_PT_display(ObjectButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.prop(ob, "draw_type", text="Type")
+ col.prop(ob, "draw_type", text=_("Type"))
col = split.column()
row = col.row()
- row.prop(ob, "show_bounds", text="Bounds")
+ row.prop(ob, "show_bounds", text=_("Bounds"))
sub = row.row()
sub.active = ob.show_bounds
sub.prop(ob, "draw_bounds_type", text="")
@@ -209,16 +209,16 @@ class OBJECT_PT_display(ObjectButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.prop(ob, "show_name", text="Name")
- col.prop(ob, "show_axis", text="Axis")
- col.prop(ob, "show_wire", text="Wire")
- col.prop(ob, "color", text="Object Color")
+ col.prop(ob, "show_name", text=_("Name"))
+ col.prop(ob, "show_axis", text=_("Axis"))
+ col.prop(ob, "show_wire", text=_("Wire"))
+ col.prop(ob, "color", text=_("Object Color"))
col = split.column()
- col.prop(ob, "show_texture_space", text="Texture Space")
- col.prop(ob, "show_x_ray", text="X-Ray")
+ col.prop(ob, "show_texture_space", text=_("Texture Space"))
+ col.prop(ob, "show_x_ray", text=_("X-Ray"))
if ob.type == 'MESH':
- col.prop(ob, "show_transparent", text="Transparency")
+ col.prop(ob, "show_transparent", text=_("Transparency"))
class OBJECT_PT_duplication(ObjectButtonsPanel, Panel):
@@ -235,26 +235,26 @@ class OBJECT_PT_duplication(ObjectButtonsPanel, Panel):
split = layout.split()
col = split.column(align=True)
- col.prop(ob, "dupli_frames_start", text="Start")
- col.prop(ob, "dupli_frames_end", text="End")
+ col.prop(ob, "dupli_frames_start", text=_("Start"))
+ col.prop(ob, "dupli_frames_end", text=_("End"))
col = split.column(align=True)
- col.prop(ob, "dupli_frames_on", text="On")
- col.prop(ob, "dupli_frames_off", text="Off")
+ col.prop(ob, "dupli_frames_on", text=_("On"))
+ col.prop(ob, "dupli_frames_off", text=_("Off"))
- layout.prop(ob, "use_dupli_frames_speed", text="Speed")
+ layout.prop(ob, "use_dupli_frames_speed", text=_("Speed"))
elif ob.dupli_type == 'VERTS':
- layout.prop(ob, "use_dupli_vertices_rotation", text="Rotation")
+ layout.prop(ob, "use_dupli_vertices_rotation", text=_("Rotation"))
elif ob.dupli_type == 'FACES':
row = layout.row()
- row.prop(ob, "use_dupli_faces_scale", text="Scale")
- row.prop(ob, "dupli_faces_scale", text="Inherit Scale")
+ row.prop(ob, "use_dupli_faces_scale", text=_("Scale"))
+ row.prop(ob, "dupli_faces_scale", text=_("Inherit Scale"))
elif ob.dupli_type == 'GROUP':
- layout.prop(ob, "dupli_group", text="Group")
+ layout.prop(ob, "dupli_group", text=_("Group"))
# XXX: the following options are all quite buggy, ancient hacks that should be dropped
@@ -271,21 +271,21 @@ class OBJECT_PT_animation(ObjectButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Time Offset:")
- col.prop(ob, "use_time_offset_edit", text="Edit")
+ col.label(text=_("Time Offset:"))
+ col.prop(ob, "use_time_offset_edit", text=_("Edit"))
row = col.row()
- row.prop(ob, "use_time_offset_parent", text="Parent")
+ row.prop(ob, "use_time_offset_parent", text=_("Parent"))
row.active = (ob.parent is not None)
row = col.row()
row.prop(ob, "use_slow_parent")
row.active = (ob.parent is not None)
- col.prop(ob, "time_offset", text="Offset")
+ col.prop(ob, "time_offset", text=_("Offset"))
# XXX: these are still used for a few curve-related tracking features
col = split.column()
- col.label(text="Tracking Axes:")
- col.prop(ob, "track_axis", text="Axis")
- col.prop(ob, "up_axis", text="Up Axis")
+ col.label(text=_("Tracking Axes:"))
+ col.prop(ob, "track_axis", text=_("Axis"))
+ col.prop(ob, "up_axis", text=_("Up Axis"))
from bl_ui.properties_animviz import (
@@ -312,8 +312,8 @@ class OBJECT_PT_motion_paths(MotionPathButtonsPanel, Panel):
layout.separator()
row = layout.row()
- row.operator("object.paths_calculate", text="Calculate Paths")
- row.operator("object.paths_clear", text="Clear Paths")
+ row.operator("object.paths_calculate", text=_("Calculate Paths"))
+ row.operator("object.paths_clear", text=_("Clear Paths"))
class OBJECT_PT_onion_skinning(OnionSkinButtonsPanel): # , Panel): # inherit from panel when ready
diff --git a/release/scripts/startup/bl_ui/properties_object_constraint.py b/release/scripts/startup/bl_ui/properties_object_constraint.py
index 05fac2026a0..e7385d3926b 100644
--- a/release/scripts/startup/bl_ui/properties_object_constraint.py
+++ b/release/scripts/startup/bl_ui/properties_object_constraint.py
@@ -19,7 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.types import Panel
-
+from blf import gettext as _
class ConstraintButtonsPanel():
bl_space_type = 'PROPERTIES'
@@ -43,7 +43,7 @@ class ConstraintButtonsPanel():
split = layout.split(percentage=0.2)
- split.label(text="Space:")
+ split.label(text=_("Space:"))
row = split.row()
if target:
@@ -60,21 +60,21 @@ class ConstraintButtonsPanel():
if con.target and subtargets:
if con.target.type == 'ARMATURE':
- layout.prop_search(con, "subtarget", con.target.data, "bones", text="Bone")
+ layout.prop_search(con, "subtarget", con.target.data, "bones", text=_("Bone"))
if hasattr(con, "head_tail"):
row = layout.row()
- row.label(text="Head/Tail:")
+ row.label(text=_("Head/Tail:"))
row.prop(con, "head_tail", text="")
elif con.target.type in {'MESH', 'LATTICE'}:
- layout.prop_search(con, "subtarget", con.target, "vertex_groups", text="Vertex Group")
+ layout.prop_search(con, "subtarget", con.target, "vertex_groups", text=_("Vertex Group"))
def ik_template(self, layout, con):
# only used for iTaSC
layout.prop(con, "pole_target")
if con.pole_target and con.pole_target.type == 'ARMATURE':
- layout.prop_search(con, "pole_subtarget", con.pole_target.data, "bones", text="Bone")
+ layout.prop_search(con, "pole_subtarget", con.pole_target.data, "bones", text=_("Bone"))
if con.pole_target:
row = layout.row()
@@ -96,19 +96,19 @@ class ConstraintButtonsPanel():
split = layout.split()
col = split.column()
- col.label(text="Location:")
+ col.label(text=_("Location:"))
col.prop(con, "use_location_x", text="X")
col.prop(con, "use_location_y", text="Y")
col.prop(con, "use_location_z", text="Z")
col = split.column()
- col.label(text="Rotation:")
+ col.label(text=_("Rotation:"))
col.prop(con, "use_rotation_x", text="X")
col.prop(con, "use_rotation_y", text="Y")
col.prop(con, "use_rotation_z", text="Z")
col = split.column()
- col.label(text="Scale:")
+ col.label(text=_("Scale:"))
col.prop(con, "use_scale_x", text="X")
col.prop(con, "use_scale_y", text="Y")
col.prop(con, "use_scale_z", text="Z")
@@ -121,11 +121,11 @@ class ConstraintButtonsPanel():
self.target_template(layout, con)
row = layout.row()
- row.label(text="To:")
+ row.label(text=_("To:"))
row.prop(con, "track_axis", expand=True)
row = layout.row()
- row.prop(con, "up_axis", text="Up")
+ row.prop(con, "up_axis", text=_("Up"))
row.prop(con, "use_target_z")
self.space_template(layout, con)
@@ -140,7 +140,7 @@ class ConstraintButtonsPanel():
layout.prop(con, "pole_target")
if con.pole_target and con.pole_target.type == 'ARMATURE':
- layout.prop_search(con, "pole_subtarget", con.pole_target.data, "bones", text="Bone")
+ layout.prop_search(con, "pole_subtarget", con.pole_target.data, "bones", text=_("Bone"))
if con.pole_target:
row = layout.row()
@@ -152,11 +152,11 @@ class ConstraintButtonsPanel():
col.prop(con, "iterations")
col.prop(con, "chain_count")
- col.label(text="Weight:")
- col.prop(con, "weight", text="Position", slider=True)
+ col.label(text=_("Weight:"))
+ col.prop(con, "weight", text=_("Position"), slider=True)
sub = col.column()
sub.active = con.use_rotation
- sub.prop(con, "orient_weight", text="Rotation", slider=True)
+ sub.prop(con, "orient_weight", text=_("Rotation"), slider=True)
col = split.column()
col.prop(con, "use_tail")
@@ -170,16 +170,16 @@ class ConstraintButtonsPanel():
self.ik_template(layout, con)
row = layout.row()
- row.label(text="Axis Ref:")
+ row.label(text=_("Axis Ref:"))
row.prop(con, "reference_axis", expand=True)
split = layout.split(percentage=0.33)
split.row().prop(con, "use_location")
row = split.row()
- row.prop(con, "weight", text="Weight", slider=True)
+ row.prop(con, "weight", text=_("Weight"), slider=True)
row.active = con.use_location
split = layout.split(percentage=0.33)
row = split.row()
- row.label(text="Lock:")
+ row.label(text=_("Lock:"))
row = split.row()
row.prop(con, "lock_location_x", text="X")
row.prop(con, "lock_location_y", text="Y")
@@ -189,11 +189,11 @@ class ConstraintButtonsPanel():
split = layout.split(percentage=0.33)
split.row().prop(con, "use_rotation")
row = split.row()
- row.prop(con, "orient_weight", text="Weight", slider=True)
+ row.prop(con, "orient_weight", text=_("Weight"), slider=True)
row.active = con.use_rotation
split = layout.split(percentage=0.33)
row = split.row()
- row.label(text="Lock:")
+ row.label(text=_("Lock:"))
row = split.row()
row.prop(con, "lock_rotation_x", text="X")
row.prop(con, "lock_rotation_y", text="Y")
@@ -207,8 +207,8 @@ class ConstraintButtonsPanel():
layout.prop(con, "limit_mode")
row = layout.row()
- row.prop(con, "weight", text="Weight", slider=True)
- row.prop(con, "distance", text="Distance", slider=True)
+ row.prop(con, "weight", text=_("Weight"), slider=True)
+ row.prop(con, "distance", text=_("Distance"), slider=True)
def FOLLOW_PATH(self, context, layout, con):
self.target_template(layout, con)
@@ -222,16 +222,16 @@ class ConstraintButtonsPanel():
col = split.column()
col.prop(con, "use_fixed_location")
if con.use_fixed_location:
- col.prop(con, "offset_factor", text="Offset")
+ col.prop(con, "offset_factor", text=_("Offset"))
else:
col.prop(con, "offset")
row = layout.row()
- row.label(text="Forward:")
+ row.label(text=_("Forward:"))
row.prop(con, "forward_axis", expand=True)
row = layout.row()
- row.prop(con, "up_axis", text="Up")
+ row.prop(con, "up_axis", text=_("Up"))
row.label()
def LIMIT_ROTATION(self, context, layout, con):
@@ -241,27 +241,27 @@ class ConstraintButtonsPanel():
col.prop(con, "use_limit_x")
sub = col.column()
sub.active = con.use_limit_x
- sub.prop(con, "min_x", text="Min")
- sub.prop(con, "max_x", text="Max")
+ sub.prop(con, "min_x", text=_("Min"))
+ sub.prop(con, "max_x", text=_("Max"))
col = split.column(align=True)
col.prop(con, "use_limit_y")
sub = col.column()
sub.active = con.use_limit_y
- sub.prop(con, "min_y", text="Min")
- sub.prop(con, "max_y", text="Max")
+ sub.prop(con, "min_y", text=_("Min"))
+ sub.prop(con, "max_y", text=_("Max"))
col = split.column(align=True)
col.prop(con, "use_limit_z")
sub = col.column()
sub.active = con.use_limit_z
- sub.prop(con, "min_z", text="Min")
- sub.prop(con, "max_z", text="Max")
+ sub.prop(con, "min_z", text=_("Min"))
+ sub.prop(con, "max_z", text=_("Max"))
layout.prop(con, "use_transform_limit")
row = layout.row()
- row.label(text="Convert:")
+ row.label(text=_("Convert:"))
row.prop(con, "owner_space", text="")
def LIMIT_LOCATION(self, context, layout, con):
@@ -302,7 +302,7 @@ class ConstraintButtonsPanel():
row.label()
row = layout.row()
- row.label(text="Convert:")
+ row.label(text=_("Convert:"))
row.prop(con, "owner_space", text="")
def LIMIT_SCALE(self, context, layout, con):
@@ -343,7 +343,7 @@ class ConstraintButtonsPanel():
row.label()
row = layout.row()
- row.label(text="Convert:")
+ row.label(text=_("Convert:"))
row.prop(con, "owner_space", text="")
def COPY_ROTATION(self, context, layout, con):
@@ -355,19 +355,19 @@ class ConstraintButtonsPanel():
col.prop(con, "use_x", text="X")
sub = col.column()
sub.active = con.use_x
- sub.prop(con, "invert_x", text="Invert")
+ sub.prop(con, "invert_x", text=_("Invert"))
col = split.column()
col.prop(con, "use_y", text="Y")
sub = col.column()
sub.active = con.use_y
- sub.prop(con, "invert_y", text="Invert")
+ sub.prop(con, "invert_y", text=_("Invert"))
col = split.column()
col.prop(con, "use_z", text="Z")
sub = col.column()
sub.active = con.use_z
- sub.prop(con, "invert_z", text="Invert")
+ sub.prop(con, "invert_z", text=_("Invert"))
layout.prop(con, "use_offset")
@@ -382,19 +382,19 @@ class ConstraintButtonsPanel():
col.prop(con, "use_x", text="X")
sub = col.column()
sub.active = con.use_x
- sub.prop(con, "invert_x", text="Invert")
+ sub.prop(con, "invert_x", text=_("Invert"))
col = split.column()
col.prop(con, "use_y", text="Y")
sub = col.column()
sub.active = con.use_y
- sub.prop(con, "invert_y", text="Invert")
+ sub.prop(con, "invert_y", text=_("Invert"))
col = split.column()
col.prop(con, "use_z", text="Z")
sub = col.column()
sub.active = con.use_z
- sub.prop(con, "invert_z", text="Invert")
+ sub.prop(con, "invert_z", text=_("Invert"))
layout.prop(con, "use_offset")
@@ -415,7 +415,7 @@ class ConstraintButtonsPanel():
def MAINTAIN_VOLUME(self, context, layout, con):
row = layout.row()
- row.label(text="Free:")
+ row.label(text=_("Free:"))
row.prop(con, "free_axis", expand=True)
layout.prop(con, "volume")
@@ -439,28 +439,28 @@ class ConstraintButtonsPanel():
split = layout.split()
col = split.column(align=True)
- col.label(text="Action Length:")
- col.prop(con, "frame_start", text="Start")
- col.prop(con, "frame_end", text="End")
+ col.label(text=_("Action Length:"))
+ col.prop(con, "frame_start", text=_("Start"))
+ col.prop(con, "frame_end", text=_("End"))
col = split.column(align=True)
- col.label(text="Target Range:")
- col.prop(con, "min", text="Min")
- col.prop(con, "max", text="Max")
+ col.label(text=_("Target Range:"))
+ col.prop(con, "min", text=_("Min"))
+ col.prop(con, "max", text=_("Max"))
row = layout.row()
- row.label(text="Convert:")
+ row.label(text=_("Convert:"))
row.prop(con, "target_space", text="")
def LOCKED_TRACK(self, context, layout, con):
self.target_template(layout, con)
row = layout.row()
- row.label(text="To:")
+ row.label(text=_("To:"))
row.prop(con, "track_axis", expand=True)
row = layout.row()
- row.label(text="Lock:")
+ row.label(text=_("Lock:"))
row.prop(con, "lock_axis", expand=True)
def LIMIT_DISTANCE(self, context, layout, con):
@@ -471,7 +471,7 @@ class ConstraintButtonsPanel():
col.operator("constraint.limitdistance_reset")
row = layout.row()
- row.label(text="Clamp Region:")
+ row.label(text=_("Clamp Region:"))
row.prop(con, "limit_mode", text="")
row = layout.row()
@@ -482,16 +482,16 @@ class ConstraintButtonsPanel():
self.target_template(layout, con)
row = layout.row()
- row.prop(con, "rest_length", text="Rest Length")
- row.operator("constraint.stretchto_reset", text="Reset")
+ row.prop(con, "rest_length", text=_("Rest Length"))
+ row.operator("constraint.stretchto_reset", text=_("Reset"))
- layout.prop(con, "bulge", text="Volume Variation")
+ layout.prop(con, "bulge", text=_("Volume Variation"))
row = layout.row()
- row.label(text="Volume:")
+ row.label(text=_("Volume:"))
row.prop(con, "volume", expand=True)
- row.label(text="Plane:")
+ row.label(text=_("Plane:"))
row.prop(con, "keep_axis", expand=True)
def FLOOR(self, context, layout, con):
@@ -504,7 +504,7 @@ class ConstraintButtonsPanel():
layout.prop(con, "offset")
row = layout.row()
- row.label(text="Min/Max:")
+ row.label(text=_("Min/Max:"))
row.prop(con, "floor_location", expand=True)
self.space_template(layout, con)
@@ -516,113 +516,113 @@ class ConstraintButtonsPanel():
layout.prop(con, "child")
row = layout.row()
- row.prop(con, "use_linked_collision", text="Linked Collision")
- row.prop(con, "show_pivot", text="Display Pivot")
+ row.prop(con, "use_linked_collision", text=_("Linked Collision"))
+ row.prop(con, "show_pivot", text=_("Display Pivot"))
split = layout.split()
col = split.column(align=True)
- col.label(text="Pivot:")
+ col.label(text=_("Pivot:"))
col.prop(con, "pivot_x", text="X")
col.prop(con, "pivot_y", text="Y")
col.prop(con, "pivot_z", text="Z")
col = split.column(align=True)
- col.label(text="Axis:")
+ col.label(text=_("Axis:"))
col.prop(con, "axis_x", text="X")
col.prop(con, "axis_y", text="Y")
col.prop(con, "axis_z", text="Z")
if con.pivot_type == 'CONE_TWIST':
- layout.label(text="Limits:")
+ layout.label(text=_("Limits:"))
split = layout.split()
col = split.column()
- col.prop(con, "use_angular_limit_x", text="Angle X")
+ col.prop(con, "use_angular_limit_x", text=_("Angle X"))
sub = col.column()
sub.active = con.use_angular_limit_x
sub.prop(con, "limit_angle_max_x", text="")
col = split.column()
- col.prop(con, "use_angular_limit_y", text="Angle Y")
+ col.prop(con, "use_angular_limit_y", text=_("Angle Y"))
sub = col.column()
sub.active = con.use_angular_limit_y
sub.prop(con, "limit_angle_max_y", text="")
col = split.column()
- col.prop(con, "use_angular_limit_z", text="Angle Z")
+ col.prop(con, "use_angular_limit_z", text=_("Angle Z"))
sub = col.column()
sub.active = con.use_angular_limit_z
sub.prop(con, "limit_angle_max_z", text="")
elif con.pivot_type == 'GENERIC_6_DOF':
- layout.label(text="Limits:")
+ layout.label(text=_("Limits:"))
split = layout.split()
col = split.column(align=True)
col.prop(con, "use_limit_x", text="X")
sub = col.column()
sub.active = con.use_limit_x
- sub.prop(con, "limit_min_x", text="Min")
- sub.prop(con, "limit_max_x", text="Max")
+ sub.prop(con, "limit_min_x", text=_("Min"))
+ sub.prop(con, "limit_max_x", text=_("Max"))
col = split.column(align=True)
col.prop(con, "use_limit_y", text="Y")
sub = col.column()
sub.active = con.use_limit_y
- sub.prop(con, "limit_min_y", text="Min")
- sub.prop(con, "limit_max_y", text="Max")
+ sub.prop(con, "limit_min_y", text=_("Min"))
+ sub.prop(con, "limit_max_y", text=_("Max"))
col = split.column(align=True)
col.prop(con, "use_limit_z", text="Z")
sub = col.column()
sub.active = con.use_limit_z
- sub.prop(con, "limit_min_z", text="Min")
- sub.prop(con, "limit_max_z", text="Max")
+ sub.prop(con, "limit_min_z", text=_("Min"))
+ sub.prop(con, "limit_max_z", text=_("Max"))
split = layout.split()
col = split.column(align=True)
- col.prop(con, "use_angular_limit_x", text="Angle X")
+ col.prop(con, "use_angular_limit_x", text=_("Angle X"))
sub = col.column()
sub.active = con.use_angular_limit_x
- sub.prop(con, "limit_angle_min_x", text="Min")
- sub.prop(con, "limit_angle_max_x", text="Max")
+ sub.prop(con, "limit_angle_min_x", text=_("Min"))
+ sub.prop(con, "limit_angle_max_x", text=_("Max"))
col = split.column(align=True)
- col.prop(con, "use_angular_limit_y", text="Angle Y")
+ col.prop(con, "use_angular_limit_y", text=_("Angle Y"))
sub = col.column()
sub.active = con.use_angular_limit_y
- sub.prop(con, "limit_angle_min_y", text="Min")
- sub.prop(con, "limit_angle_max_y", text="Max")
+ sub.prop(con, "limit_angle_min_y", text=_("Min"))
+ sub.prop(con, "limit_angle_max_y", text=_("Max"))
col = split.column(align=True)
- col.prop(con, "use_angular_limit_z", text="Angle Z")
+ col.prop(con, "use_angular_limit_z", text=_("Angle Z"))
sub = col.column()
sub.active = con.use_angular_limit_z
- sub.prop(con, "limit_angle_min_z", text="Min")
- sub.prop(con, "limit_angle_max_z", text="Max")
+ sub.prop(con, "limit_angle_min_z", text=_("Min"))
+ sub.prop(con, "limit_angle_max_z", text=_("Max"))
elif con.pivot_type == 'HINGE':
- layout.label(text="Limits:")
+ layout.label(text=_("Limits:"))
split = layout.split()
row = split.row(align=True)
col = row.column()
- col.prop(con, "use_angular_limit_x", text="Angle X")
+ col.prop(con, "use_angular_limit_x", text=_("Angle X"))
col = row.column()
col.active = con.use_angular_limit_x
- col.prop(con, "limit_angle_min_x", text="Min")
+ col.prop(con, "limit_angle_min_x", text=_("Min"))
col = row.column()
col.active = con.use_angular_limit_x
- col.prop(con, "limit_angle_max_x", text="Max")
+ col.prop(con, "limit_angle_max_x", text=_("Max"))
def CLAMP_TO(self, context, layout, con):
self.target_template(layout, con)
row = layout.row()
- row.label(text="Main Axis:")
+ row.label(text=_("Main Axis:"))
row.prop(con, "main_axis", expand=True)
layout.prop(con, "use_cyclic")
@@ -630,32 +630,32 @@ class ConstraintButtonsPanel():
def TRANSFORM(self, context, layout, con):
self.target_template(layout, con)
- layout.prop(con, "use_motion_extrapolate", text="Extrapolate")
+ layout.prop(con, "use_motion_extrapolate", text=_("Extrapolate"))
col = layout.column()
- col.row().label(text="Source:")
+ col.row().label(text=_("Source:"))
col.row().prop(con, "map_from", expand=True)
split = layout.split()
sub = split.column(align=True)
sub.label(text="X:")
- sub.prop(con, "from_min_x", text="Min")
- sub.prop(con, "from_max_x", text="Max")
+ sub.prop(con, "from_min_x", text=_("Min"))
+ sub.prop(con, "from_max_x", text=_("Max"))
sub = split.column(align=True)
sub.label(text="Y:")
- sub.prop(con, "from_min_y", text="Min")
- sub.prop(con, "from_max_y", text="Max")
+ sub.prop(con, "from_min_y", text=_("Min"))
+ sub.prop(con, "from_max_y", text=_("Max"))
sub = split.column(align=True)
sub.label(text="Z:")
- sub.prop(con, "from_min_z", text="Min")
- sub.prop(con, "from_max_z", text="Max")
+ sub.prop(con, "from_min_z", text=_("Min"))
+ sub.prop(con, "from_max_z", text=_("Max"))
col = layout.column()
row = col.row()
- row.label(text="Source to Destination Mapping:")
+ row.label(text=_("Source to Destination Mapping:"))
# note: chr(187) is the ASCII arrow ( >> ). Blender Text Editor can't
# open it. Thus we are using the hardcoded value instead.
@@ -674,7 +674,7 @@ class ConstraintButtonsPanel():
split = layout.split()
col = split.column()
- col.label(text="Destination:")
+ col.label(text=_("Destination:"))
col.row().prop(con, "map_to", expand=True)
split = layout.split()
@@ -683,22 +683,22 @@ class ConstraintButtonsPanel():
col.label(text="X:")
sub = col.column(align=True)
- sub.prop(con, "to_min_x", text="Min")
- sub.prop(con, "to_max_x", text="Max")
+ sub.prop(con, "to_min_x", text=_("Min"))
+ sub.prop(con, "to_max_x", text=_("Max"))
col = split.column()
col.label(text="Y:")
sub = col.column(align=True)
- sub.prop(con, "to_min_y", text="Min")
- sub.prop(con, "to_max_y", text="Max")
+ sub.prop(con, "to_min_y", text=_("Min"))
+ sub.prop(con, "to_max_y", text=_("Max"))
col = split.column()
col.label(text="Z:")
sub = col.column(align=True)
- sub.prop(con, "to_min_z", text="Min")
- sub.prop(con, "to_max_z", text="Max")
+ sub.prop(con, "to_min_z", text=_("Min"))
+ sub.prop(con, "to_max_z", text=_("Max"))
self.space_template(layout, con)
@@ -718,20 +718,20 @@ class ConstraintButtonsPanel():
self.target_template(layout, con)
row = layout.row()
- row.label(text="To:")
+ row.label(text=_("To:"))
row.prop(con, "track_axis", expand=True)
def SPLINE_IK(self, context, layout, con):
self.target_template(layout, con)
col = layout.column()
- col.label(text="Spline Fitting:")
+ col.label(text=_("Spline Fitting:"))
col.prop(con, "chain_count")
col.prop(con, "use_even_divisions")
col.prop(con, "use_chain_offset")
col = layout.column()
- col.label(text="Chain Scaling:")
+ col.label(text=_("Chain Scaling:"))
col.prop(con, "use_y_stretch")
col.prop(con, "xz_scale_mode")
col.prop(con, "use_curve_radius")
@@ -741,20 +741,20 @@ class ConstraintButtonsPanel():
if con.target:
col = layout.column()
- col.prop(con, "offset", text="Pivot Offset")
+ col.prop(con, "offset", text=_("Pivot Offset"))
else:
col = layout.column()
col.prop(con, "use_relative_location")
if con.use_relative_location:
- col.prop(con, "offset", text="Relative Pivot Point")
+ col.prop(con, "offset", text=_("Relative Pivot Point"))
else:
- col.prop(con, "offset", text="Absolute Pivot Point")
+ col.prop(con, "offset", text=_("Absolute Pivot Point"))
col = layout.column()
- col.prop(con, "rotation_range", text="Pivot When")
+ col.prop(con, "rotation_range", text=_("Pivot When"))
def SCRIPT(self, context, layout, con):
- layout.label("Blender 2.5 has no py-constraints")
+ layout.label( _("Blender 2.5 has no py-constraints") )
class OBJECT_PT_constraints(ConstraintButtonsPanel, Panel):
@@ -773,7 +773,7 @@ class OBJECT_PT_constraints(ConstraintButtonsPanel, Panel):
if ob.mode == 'POSE':
box = layout.box()
box.alert = True
- box.label(icon='INFO', text="See Bone Constraints tab to Add Constraints to active bone")
+ box.label(icon='INFO', text=_("See Bone Constraints tab to Add Constraints to active bone"))
else:
layout.operator_menu_enum("object.constraint_add", "type")
diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py
index 6f58f060504..6424f6dca44 100644
--- a/release/scripts/startup/bl_ui/properties_particle.py
+++ b/release/scripts/startup/bl_ui/properties_particle.py
@@ -20,6 +20,7 @@
import bpy
from bpy.types import Panel
from rna_prop_ui import PropertyPanel
+from blf import gettext as _
from bl_ui.properties_physics_common import (
point_cache_ui,
@@ -108,17 +109,17 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel):
layout.template_ID(context.space_data, "pin_id")
if part.is_fluid:
- layout.label(text="Settings used for fluid.")
+ layout.label(text=_("Settings used for fluid"))
return
- layout.prop(part, "type", text="Type")
+ layout.prop(part, "type", text=_("Type"))
elif not psys.settings:
split = layout.split(percentage=0.32)
col = split.column()
- col.label(text="Name:")
- col.label(text="Settings:")
+ col.label(text=_("Name:"))
+ col.label(text=_("Settings:"))
col = split.column()
col.prop(psys, "name", text="")
@@ -128,10 +129,10 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel):
split = layout.split(percentage=0.32)
col = split.column()
- col.label(text="Name:")
+ col.label(text=_("Name:"))
if part.is_fluid == False:
- col.label(text="Settings:")
- col.label(text="Type:")
+ col.label(text=_("Settings:"))
+ col.label(text=_("Type:"))
col = split.column()
col.prop(psys, "name", text="")
@@ -141,11 +142,11 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel):
row.template_ID(psys, "settings", new="particle.new")
#row = layout.row()
- #row.label(text="Viewport")
- #row.label(text="Render")
+ #row.label(text=_("Viewport"))
+ #row.label(text=_("Render"))
if part.is_fluid:
- layout.label(text=str(part.count) + " fluid particles for this frame.")
+ layout.label(text=str(part.count) + " fluid particles for this frame")
return
row = col.row()
@@ -157,7 +158,7 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel):
split = layout.split(percentage=0.65)
if part.type == 'HAIR':
if psys is not None and psys.is_edited:
- split.operator("particle.edited_clear", text="Free Edit")
+ split.operator("particle.edited_clear", text=_("Free Edit"))
else:
row = split.row()
row.enabled = particle_panel_enabled(context, psys)
@@ -174,7 +175,7 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel):
elif psys is not None and part.type == 'REACTOR':
split.enabled = particle_panel_enabled(context, psys)
split.prop(psys, "reactor_target_object")
- split.prop(psys, "reactor_target_particle_system", text="Particle System")
+ split.prop(psys, "reactor_target_particle_system", text=_("Particle System"))
class PARTICLE_PT_emission(ParticleButtonsPanel, Panel):
@@ -221,7 +222,7 @@ class PARTICLE_PT_emission(ParticleButtonsPanel, Panel):
col.prop(part, "lifetime")
col.prop(part, "lifetime_random", slider=True)
- layout.label(text="Emit From:")
+ layout.label(text=_("Emit From:"))
layout.prop(part, "emit_from", expand=True)
row = layout.row()
@@ -239,11 +240,11 @@ class PARTICLE_PT_emission(ParticleButtonsPanel, Panel):
row = layout.row()
if part.distribution == 'JIT':
- row.prop(part, "userjit", text="Particles/Face")
- row.prop(part, "jitter_factor", text="Jittering Amount", slider=True)
+ row.prop(part, "userjit", text=_("Particles/Face"))
+ row.prop(part, "jitter_factor", text=_("Jittering Amount"), slider=True)
elif part.distribution == 'GRID':
row.prop(part, "grid_resolution")
- row.prop(part, "grid_random", text="Random", slider=True)
+ row.prop(part, "grid_random", text=_("Random"), slider=True)
class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, Panel):
@@ -284,22 +285,22 @@ class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Material:")
+ col.label(text=_("Material:"))
sub = col.column(align=True)
- sub.prop(cloth, "pin_stiffness", text="Stiffness")
+ sub.prop(cloth, "pin_stiffness", text=_("Stiffness"))
sub.prop(cloth, "mass")
- sub.prop(cloth, "bending_stiffness", text="Bending")
+ sub.prop(cloth, "bending_stiffness", text=_("Bending"))
sub.prop(cloth, "internal_friction", slider=True)
sub.prop(cloth, "collider_friction", slider=True)
col = split.column()
- col.label(text="Damping:")
+ col.label(text=_("Damping:"))
sub = col.column(align=True)
- sub.prop(cloth, "spring_damping", text="Spring")
- sub.prop(cloth, "air_damping", text="Air")
+ sub.prop(cloth, "spring_damping", text=_("Spring"))
+ sub.prop(cloth, "air_damping", text=_("Air"))
- col.label(text="Quality:")
- col.prop(cloth, "quality", text="Steps", slider=True)
+ col.label(text=_("Quality:"))
+ col.prop(cloth, "quality", text=_("Steps"), slider=True)
class PARTICLE_PT_cache(ParticleButtonsPanel, Panel):
@@ -355,17 +356,17 @@ class PARTICLE_PT_velocity(ParticleButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Emitter Geometry:")
+ col.label(text=_("Emitter Geometry:"))
col.prop(part, "normal_factor")
sub = col.column(align=True)
sub.prop(part, "tangent_factor")
sub.prop(part, "tangent_phase", slider=True)
col = split.column()
- col.label(text="Emitter Object:")
+ col.label(text=_("Emitter Object:"))
col.prop(part, "object_align_factor", text="")
- layout.label(text="Other:")
+ layout.label(text=_("Other:"))
row = layout.row()
if part.emit_from == 'PARTICLE':
row.prop(part, "particle_factor")
@@ -406,21 +407,21 @@ class PARTICLE_PT_rotation(ParticleButtonsPanel, Panel):
layout.enabled = particle_panel_enabled(context, psys)
row = layout.row()
- row.label(text="Initial Rotation:")
+ row.label(text=_("Initial Rotation:"))
row.prop(part, "use_dynamic_rotation")
split = layout.split()
col = split.column(align=True)
col.prop(part, "rotation_mode", text="")
- col.prop(part, "rotation_factor_random", slider=True, text="Random")
+ col.prop(part, "rotation_factor_random", slider=True, text=_("Random"))
col = split.column(align=True)
col.prop(part, "phase_factor", slider=True)
- col.prop(part, "phase_factor_random", text="Random", slider=True)
+ col.prop(part, "phase_factor_random", text=_("Random"), slider=True)
col = layout.column()
- col.label(text="Angular Velocity:")
+ col.label(text=_("Angular Velocity:"))
col.row().prop(part, "angular_velocity_mode", expand=True)
if part.angular_velocity_mode != 'NONE':
@@ -461,19 +462,19 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
if part.physics_type != 'NO':
col = row.column(align=True)
col.prop(part, "mass")
- col.prop(part, "use_multiply_size_mass", text="Multiply mass with size")
+ col.prop(part, "use_multiply_size_mass", text=_("Multiply mass with size"))
if part.physics_type in {'NEWTON', 'FLUID'}:
split = layout.split()
col = split.column()
- col.label(text="Forces:")
+ col.label(text=_("Forces:"))
col.prop(part, "brownian_factor")
col.prop(part, "drag_factor", slider=True)
col.prop(part, "damping", slider=True)
col = split.column()
- col.label(text="Integration:")
+ col.label(text=_("Integration:"))
col.prop(part, "integrator", text="")
col.prop(part, "timestep")
col.prop(part, "subframes")
@@ -488,13 +489,13 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Fluid properties:")
- col.prop(fluid, "stiffness", text="Stiffness")
- col.prop(fluid, "linear_viscosity", text="Viscosity")
- col.prop(fluid, "buoyancy", text="Buoancy", slider=True)
+ col.label(text=_("Fluid properties:"))
+ col.prop(fluid, "stiffness", text=_("Stiffness"))
+ col.prop(fluid, "linear_viscosity", text=_("Viscosity"))
+ col.prop(fluid, "buoyancy", text=_("Buoancy"), slider=True)
col = split.column()
- col.label(text="Advanced:")
+ col.label(text=_("Advanced:"))
sub = col.row()
sub.prop(fluid, "repulsion", slider=fluid.factor_repulsion)
@@ -515,8 +516,8 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Springs:")
- col.prop(fluid, "spring_force", text="Force")
+ col.label(text=_("Springs:"))
+ col.prop(fluid, "spring_force", text=_("Force"))
col.prop(fluid, "use_viscoelastic_springs")
sub = col.column(align=True)
sub.active = fluid.use_viscoelastic_springs
@@ -524,7 +525,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
sub.prop(fluid, "plasticity", slider=True)
col = split.column()
- col.label(text="Advanced:")
+ col.label(text=_("Advanced:"))
sub = col.row()
sub.prop(fluid, "rest_length", slider=fluid.factor_rest_length)
sub.prop(fluid, "factor_rest_length", text="")
@@ -532,7 +533,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
sub = col.column()
sub.active = fluid.use_viscoelastic_springs
sub.prop(fluid, "use_initial_rest_length")
- sub.prop(fluid, "spring_frames", text="Frames")
+ sub.prop(fluid, "spring_frames", text=_("Frames"))
elif part.physics_type == 'KEYED':
split = layout.split()
@@ -541,11 +542,11 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
row = layout.row()
col = row.column()
col.active = not psys.use_keyed_timing
- col.prop(part, "keyed_loops", text="Loops")
+ col.prop(part, "keyed_loops", text=_("Loops"))
if psys:
- row.prop(psys, "use_keyed_timing", text="Use Timing")
+ row.prop(psys, "use_keyed_timing", text=_("Use Timing"))
- layout.label(text="Keys:")
+ layout.label(text=_("Keys:"))
elif part.physics_type == 'BOIDS':
boids = part.boids
@@ -581,7 +582,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
row = layout.row()
col = row.column(align=True)
- col.label(text="Battle:")
+ col.label(text=_("Battle:"))
col.prop(boids, "health")
col.prop(boids, "strength")
col.prop(boids, "aggression")
@@ -589,16 +590,16 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
col.prop(boids, "range")
col = row.column()
- col.label(text="Misc:")
+ col.label(text=_("Misc:"))
col.prop(boids, "bank", slider=True)
col.prop(boids, "pitch", slider=True)
col.prop(boids, "height", slider=True)
if psys and part.physics_type in {'KEYED', 'BOIDS', 'FLUID'}:
if part.physics_type == 'BOIDS':
- layout.label(text="Relations:")
+ layout.label(text=_("Relations:"))
elif part.physics_type == 'FLUID':
- layout.label(text="Fluid interaction:")
+ layout.label(text=_("Fluid interaction:"))
row = layout.row()
row.template_list(psys, "targets", psys, "active_particle_target_index")
@@ -621,7 +622,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
#doesn't work yet
#col.alert = key.valid
col.prop(key, "object", text="")
- col.prop(key, "system", text="System")
+ col.prop(key, "system", text=_("System"))
col = row.column()
col.active = psys.use_keyed_timing
col.prop(key, "time")
@@ -631,7 +632,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
#doesn't work yet
#sub.alert = key.valid
sub.prop(key, "object", text="")
- sub.prop(key, "system", text="System")
+ sub.prop(key, "system", text=_("System"))
layout.prop(key, "alliance", expand=True)
elif part.physics_type == 'FLUID':
@@ -639,7 +640,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, Panel):
#doesn't work yet
#sub.alert = key.valid
sub.prop(key, "object", text="")
- sub.prop(key, "system", text="System")
+ sub.prop(key, "system", text=_("System"))
class PARTICLE_PT_boidbrain(ParticleButtonsPanel, Panel):
@@ -678,7 +679,7 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel, Panel):
state = boids.active_boid_state
- #layout.prop(state, "name", text="State name")
+ #layout.prop(state, "name", text=_("State name"))
row = layout.row()
row.prop(state, "ruleset_type")
@@ -721,7 +722,7 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel, Panel):
row.prop(rule, "use_predict")
row.prop(rule, "fear_factor")
elif rule.type == 'FOLLOW_PATH':
- row.label(text="Not yet functional.")
+ row.label(text=_("Not yet functional"))
elif rule.type == 'AVOID_COLLISION':
row.prop(rule, "use_avoid")
row.prop(rule, "use_avoid_collision")
@@ -800,14 +801,14 @@ class PARTICLE_PT_render(ParticleButtonsPanel, Panel):
sub.active = (part.use_render_adaptive is True and part.use_strand_primitive is False)
sub.prop(part, "adaptive_pixel")
col.prop(part, "use_hair_bspline")
- col.prop(part, "render_step", text="Steps")
+ col.prop(part, "render_step", text=_("Steps"))
col = split.column()
- col.label(text="Timing:")
+ col.label(text=_("Timing:"))
col.prop(part, "use_absolute_path_time")
- col.prop(part, "path_start", text="Start", slider=not part.use_absolute_path_time)
- col.prop(part, "path_end", text="End", slider=not part.use_absolute_path_time)
- col.prop(part, "length_random", text="Random", slider=True)
+ col.prop(part, "path_start", text=_("Start"), slider=not part.use_absolute_path_time)
+ col.prop(part, "path_end", text=_("End"), slider=not part.use_absolute_path_time)
+ col.prop(part, "length_random", text=_("Random"), slider=True)
row = layout.row()
col = row.column()
@@ -864,30 +865,30 @@ class PARTICLE_PT_render(ParticleButtonsPanel, Panel):
elif part.render_type == 'BILLBOARD':
ob = context.object
- col.label(text="Align:")
+ col.label(text=_("Align:"))
row = layout.row()
row.prop(part, "billboard_align", expand=True)
- row.prop(part, "lock_billboard", text="Lock")
+ row.prop(part, "lock_billboard", text=_("Lock"))
row = layout.row()
row.prop(part, "billboard_object")
row = layout.row()
col = row.column(align=True)
- col.label(text="Tilt:")
- col.prop(part, "billboard_tilt", text="Angle", slider=True)
- col.prop(part, "billboard_tilt_random", text="Random", slider=True)
+ col.label(text=_("Tilt:"))
+ col.prop(part, "billboard_tilt", text=_("Angle"), slider=True)
+ col.prop(part, "billboard_tilt_random", text=_("Random"), slider=True)
col = row.column()
col.prop(part, "billboard_offset")
row = layout.row()
col = row.column()
- col.prop(part, "billboard_size", text="Scale")
+ col.prop(part, "billboard_size", text=_("Scale"))
if part.billboard_align == 'VEL':
col = row.column(align=True)
- col.label("Velocity Scale:")
- col.prop(part, "billboard_velocity_head", text="Head")
- col.prop(part, "billboard_velocity_tail", text="Tail")
+ col.label(_("Velocity Scale:"))
+ col.prop(part, "billboard_velocity_head", text=_("Head"))
+ col.prop(part, "billboard_velocity_tail", text=_("Tail"))
if psys:
col = layout.column()
@@ -895,8 +896,8 @@ class PARTICLE_PT_render(ParticleButtonsPanel, Panel):
col.prop_search(psys, "billboard_time_index_uv", ob.data, "uv_textures")
split = layout.split(percentage=0.33)
- split.label(text="Split uv's:")
- split.prop(part, "billboard_uv_split", text="Number of splits")
+ split.label(text=_("Split uv's:"))
+ split.prop(part, "billboard_uv_split", text=_("Number of splits"))
if psys:
col = layout.column()
@@ -904,9 +905,9 @@ class PARTICLE_PT_render(ParticleButtonsPanel, Panel):
col.prop_search(psys, "billboard_split_uv", ob.data, "uv_textures")
row = col.row()
- row.label(text="Animate:")
+ row.label(text=_("Animate:"))
row.prop(part, "billboard_animation", text="")
- row.label(text="Offset:")
+ row.label(text=_("Offset:"))
row.prop(part, "billboard_offset_split", text="")
if part.render_type == 'HALO' or part.render_type == 'LINE' or part.render_type == 'BILLBOARD':
@@ -914,10 +915,10 @@ class PARTICLE_PT_render(ParticleButtonsPanel, Panel):
col = row.column()
col.prop(part, "trail_count")
if part.trail_count > 1:
- col.prop(part, "use_absolute_path_time", text="Length in frames")
+ col.prop(part, "use_absolute_path_time", text=_("Length in frames"))
col = row.column()
- col.prop(part, "path_end", text="Length", slider=not part.use_absolute_path_time)
- col.prop(part, "length_random", text="Random", slider=True)
+ col.prop(part, "path_end", text=_("Length"), slider=not part.use_absolute_path_time)
+ col.prop(part, "length_random", text=_("Random"), slider=True)
else:
col = row.column()
col.label(text="")
@@ -965,11 +966,11 @@ class PARTICLE_PT_draw(ParticleButtonsPanel, Panel):
if part.draw_percentage != 100 and psys is not None:
if part.type == 'HAIR':
if psys.use_hair_dynamics and psys.point_cache.is_baked == False:
- layout.row().label(text="Display percentage makes dynamics inaccurate without baking!")
+ layout.row().label(text=_("Display percentage makes dynamics inaccurate without baking!"))
else:
phystype = part.physics_type
if phystype != 'NO' and phystype != 'KEYED' and psys.point_cache.is_baked == False:
- layout.row().label(text="Display percentage makes dynamics inaccurate without baking!")
+ layout.row().label(text=_("Display percentage makes dynamics inaccurate without baking!"))
row = layout.row()
col = row.column()
@@ -980,11 +981,11 @@ class PARTICLE_PT_draw(ParticleButtonsPanel, Panel):
col.prop(part, "show_health")
col = row.column(align=True)
- col.label(text="Color:")
+ col.label(text=_("Color:"))
col.prop(part, "draw_color", text="")
sub = col.row()
sub.active = part.draw_color in ('VELOCITY', 'ACCELERATION')
- sub.prop(part, "color_maximum", text="Max")
+ sub.prop(part, "color_maximum", text=_("Max"))
if (path):
col.prop(part, "draw_step")
@@ -1013,24 +1014,24 @@ class PARTICLE_PT_children(ParticleButtonsPanel, Panel):
row = layout.row()
col = row.column(align=True)
- col.prop(part, "child_nbr", text="Display")
- col.prop(part, "rendered_child_count", text="Render")
+ col.prop(part, "child_nbr", text=_("Display"))
+ col.prop(part, "rendered_child_count", text=_("Render"))
if part.child_type == 'INTERPOLATED':
col = row.column()
if psys:
- col.prop(psys, "child_seed", text="Seed")
+ col.prop(psys, "child_seed", text=_("Seed"))
col.prop(part, "virtual_parents", slider=True)
col.prop(part, "create_long_hair_children")
else:
col = row.column(align=True)
- col.prop(part, "child_size", text="Size")
- col.prop(part, "child_size_random", text="Random")
+ col.prop(part, "child_size", text=_("Size"))
+ col.prop(part, "child_size_random", text=_("Random"))
split = layout.split()
col = split.column()
- col.label(text="Effects:")
+ col.label(text=_("Effects:"))
sub = col.column(align=True)
sub.prop(part, "clump_factor", slider=True)
@@ -1042,38 +1043,38 @@ class PARTICLE_PT_children(ParticleButtonsPanel, Panel):
if part.child_type == 'SIMPLE':
sub = col.column(align=True)
- sub.prop(part, "child_radius", text="Radius")
- sub.prop(part, "child_roundness", text="Roundness", slider=True)
+ sub.prop(part, "child_radius", text=_("Radius"))
+ sub.prop(part, "child_roundness", text=_("Roundness"), slider=True)
if psys:
- sub.prop(psys, "child_seed", text="Seed")
+ sub.prop(psys, "child_seed", text=_("Seed"))
elif part.virtual_parents > 0.0:
sub = col.column(align=True)
- sub.label(text="Parting not")
- sub.label(text="available with")
- sub.label(text="virtual parents.")
+ sub.label(text=_("Parting not"))
+ sub.label(text=_("available with"))
+ sub.label(text=_("virtual parents"))
else:
sub = col.column(align=True)
- sub.prop(part, "child_parting_factor", text="Parting", slider=True)
- sub.prop(part, "child_parting_min", text="Min")
- sub.prop(part, "child_parting_max", text="Max")
+ sub.prop(part, "child_parting_factor", text=_("Parting"), slider=True)
+ sub.prop(part, "child_parting_min", text=_("Min"))
+ sub.prop(part, "child_parting_max", text=_("Max"))
col = split.column()
- col.label(text="Roughness:")
+ col.label(text=_("Roughness:"))
sub = col.column(align=True)
- sub.prop(part, "roughness_1", text="Uniform")
- sub.prop(part, "roughness_1_size", text="Size")
+ sub.prop(part, "roughness_1", text=_("Uniform"))
+ sub.prop(part, "roughness_1_size", text=_("Size"))
sub = col.column(align=True)
sub.prop(part, "roughness_endpoint", "Endpoint")
sub.prop(part, "roughness_end_shape")
sub = col.column(align=True)
- sub.prop(part, "roughness_2", text="Random")
- sub.prop(part, "roughness_2_size", text="Size")
+ sub.prop(part, "roughness_2", text=_("Random"))
+ sub.prop(part, "roughness_2_size", text=_("Size"))
sub.prop(part, "roughness_2_threshold", slider=True)
- layout.row().label(text="Kink:")
+ layout.row().label(text=_("Kink:"))
layout.row().prop(part, "kink", expand=True)
split = layout.split()
@@ -1082,7 +1083,7 @@ class PARTICLE_PT_children(ParticleButtonsPanel, Panel):
col = split.column()
sub = col.column(align=True)
sub.prop(part, "kink_amplitude")
- sub.prop(part, "kink_amplitude_clump", text="Clump", slider=True)
+ sub.prop(part, "kink_amplitude_clump", text=_("Clump"), slider=True)
col.prop(part, "kink_flat", slider=True)
col = split.column()
sub = col.column(align=True)
@@ -1123,25 +1124,25 @@ class PARTICLE_PT_force_fields(ParticleButtonsPanel, Panel):
row = layout.row()
row.prop(part, "use_self_effect")
- row.prop(part, "effector_amount", text="Amount")
+ row.prop(part, "effector_amount", text=_("Amount"))
split = layout.split(percentage=0.2)
- split.label(text="Type 1:")
+ split.label(text=_("Type 1:"))
split.prop(part.force_field_1, "type", text="")
basic_force_field_settings_ui(self, context, part.force_field_1)
if part.force_field_1.type != 'NONE':
- layout.label(text="Falloff:")
+ layout.label(text=_("Falloff:"))
basic_force_field_falloff_ui(self, context, part.force_field_1)
if part.force_field_1.type != 'NONE':
layout.label(text="")
split = layout.split(percentage=0.2)
- split.label(text="Type 2:")
+ split.label(text=_("Type 2:"))
split.prop(part.force_field_2, "type", text="")
basic_force_field_settings_ui(self, context, part.force_field_2)
if part.force_field_2.type != 'NONE':
- layout.label(text="Falloff:")
+ layout.label(text=_("Falloff:"))
basic_force_field_falloff_ui(self, context, part.force_field_2)
@@ -1163,56 +1164,56 @@ class PARTICLE_PT_vertexgroups(ParticleButtonsPanel, Panel):
psys = context.particle_system
row = layout.row()
- row.label(text="Vertex Group")
- row.label(text="Negate")
+ row.label(text=_("Vertex Group"))
+ row.label(text=_("Negate"))
row = layout.row()
- row.prop_search(psys, "vertex_group_density", ob, "vertex_groups", text="Density")
+ row.prop_search(psys, "vertex_group_density", ob, "vertex_groups", text=_("Density"))
row.prop(psys, "invert_vertex_group_density", text="")
# Commented out vertex groups don't work and are still waiting for better implementation
# row = layout.row()
- # row.prop_search(psys, "vertex_group_velocity", ob, "vertex_groups", text="Velocity")
+ # row.prop_search(psys, "vertex_group_velocity", ob, "vertex_groups", text=_("Velocity"))
# row.prop(psys, "invert_vertex_group_velocity", text="")
row = layout.row()
- row.prop_search(psys, "vertex_group_length", ob, "vertex_groups", text="Length")
+ row.prop_search(psys, "vertex_group_length", ob, "vertex_groups", text=_("Length"))
row.prop(psys, "invert_vertex_group_length", text="")
row = layout.row()
- row.prop_search(psys, "vertex_group_clump", ob, "vertex_groups", text="Clump")
+ row.prop_search(psys, "vertex_group_clump", ob, "vertex_groups", text=_("Clump"))
row.prop(psys, "invert_vertex_group_clump", text="")
row = layout.row()
- row.prop_search(psys, "vertex_group_kink", ob, "vertex_groups", text="Kink")
+ row.prop_search(psys, "vertex_group_kink", ob, "vertex_groups", text=_("Kink"))
row.prop(psys, "invert_vertex_group_kink", text="")
row = layout.row()
- row.prop_search(psys, "vertex_group_roughness_1", ob, "vertex_groups", text="Roughness 1")
+ row.prop_search(psys, "vertex_group_roughness_1", ob, "vertex_groups", text=_("Roughness 1"))
row.prop(psys, "invert_vertex_group_roughness_1", text="")
row = layout.row()
- row.prop_search(psys, "vertex_group_roughness_2", ob, "vertex_groups", text="Roughness 2")
+ row.prop_search(psys, "vertex_group_roughness_2", ob, "vertex_groups", text=_("Roughness 2"))
row.prop(psys, "invert_vertex_group_roughness_2", text="")
row = layout.row()
- row.prop_search(psys, "vertex_group_roughness_end", ob, "vertex_groups", text="Roughness End")
+ row.prop_search(psys, "vertex_group_roughness_end", ob, "vertex_groups", text=_("Roughness End"))
row.prop(psys, "invert_vertex_group_roughness_end", text="")
# row = layout.row()
- # row.prop_search(psys, "vertex_group_size", ob, "vertex_groups", text="Size")
+ # row.prop_search(psys, "vertex_group_size", ob, "vertex_groups", text=_("Size"))
# row.prop(psys, "invert_vertex_group_size", text="")
# row = layout.row()
- # row.prop_search(psys, "vertex_group_tangent", ob, "vertex_groups", text="Tangent")
+ # row.prop_search(psys, "vertex_group_tangent", ob, "vertex_groups", text=_("Tangent"))
# row.prop(psys, "invert_vertex_group_tangent", text="")
# row = layout.row()
- # row.prop_search(psys, "vertex_group_rotation", ob, "vertex_groups", text="Rotation")
+ # row.prop_search(psys, "vertex_group_rotation", ob, "vertex_groups", text=_("Rotation"))
# row.prop(psys, "invert_vertex_group_rotation", text="")
# row = layout.row()
- # row.prop_search(psys, "vertex_group_field", ob, "vertex_groups", text="Field")
+ # row.prop_search(psys, "vertex_group_field", ob, "vertex_groups", text=_("Field"))
# row.prop(psys, "invert_vertex_group_field", text="")
diff --git a/release/scripts/startup/bl_ui/properties_physics_cloth.py b/release/scripts/startup/bl_ui/properties_physics_cloth.py
index d5427d8bae8..de74d1473c8 100644
--- a/release/scripts/startup/bl_ui/properties_physics_cloth.py
+++ b/release/scripts/startup/bl_ui/properties_physics_cloth.py
@@ -19,7 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.types import Menu, Panel
-
+from blf import gettext as _
from bl_ui.properties_physics_common import (
point_cache_ui,
@@ -71,50 +71,50 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel, Panel):
col = split.column()
- col.label(text="Presets:")
+ col.label(text=_("Presets:"))
sub = col.row(align=True)
sub.menu("CLOTH_MT_presets", text=bpy.types.CLOTH_MT_presets.bl_label)
sub.operator("cloth.preset_add", text="", icon="ZOOMIN")
sub.operator("cloth.preset_add", text="", icon="ZOOMOUT").remove_active = True
- col.label(text="Quality:")
- col.prop(cloth, "quality", text="Steps", slider=True)
+ col.label(text=_("Quality:"))
+ col.prop(cloth, "quality", text=_("Steps"), slider=True)
- col.label(text="Material:")
+ col.label(text=_("Material:"))
col.prop(cloth, "mass")
- col.prop(cloth, "structural_stiffness", text="Structural")
- col.prop(cloth, "bending_stiffness", text="Bending")
+ col.prop(cloth, "structural_stiffness", text=_("Structural"))
+ col.prop(cloth, "bending_stiffness", text=_("Bending"))
col = split.column()
- col.label(text="Damping:")
- col.prop(cloth, "spring_damping", text="Spring")
- col.prop(cloth, "air_damping", text="Air")
+ col.label(text=_("Damping:"))
+ col.prop(cloth, "spring_damping", text=_("Spring"))
+ col.prop(cloth, "air_damping", text=_("Air"))
- col.prop(cloth, "use_pin_cloth", text="Pinning")
+ col.prop(cloth, "use_pin_cloth", text=_("Pinning"))
sub = col.column()
sub.active = cloth.use_pin_cloth
sub.prop_search(cloth, "vertex_group_mass", ob, "vertex_groups", text="")
- sub.prop(cloth, "pin_stiffness", text="Stiffness")
+ sub.prop(cloth, "pin_stiffness", text=_("Stiffness"))
- col.label(text="Pre roll:")
- col.prop(cloth, "pre_roll", text="Frame")
+ col.label(text=_("Pre roll:"))
+ col.prop(cloth, "pre_roll", text=_("Frame"))
# Disabled for now
"""
if cloth.vertex_group_mass:
- layout.label(text="Goal:")
+ layout.label(text=_("Goal:"))
col = layout.column_flow()
- col.prop(cloth, "goal_default", text="Default")
- col.prop(cloth, "goal_spring", text="Stiffness")
- col.prop(cloth, "goal_friction", text="Friction")
+ col.prop(cloth, "goal_default", text=_("Default"))
+ col.prop(cloth, "goal_spring", text=_("Stiffness"))
+ col.prop(cloth, "goal_friction", text=_("Friction"))
"""
key = ob.data.shape_keys
if key:
- col.label(text="Rest Shape Key:")
+ col.label(text=_("Rest Shape Key:"))
col.prop_search(cloth, "rest_shape_key", key, "key_blocks", text="")
@@ -156,18 +156,18 @@ class PHYSICS_PT_cloth_collision(PhysicButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.prop(cloth, "collision_quality", slider=True, text="Quality")
- col.prop(cloth, "distance_min", slider=True, text="Distance")
- col.prop(cloth, "repel_force", slider=True, text="Repel")
- col.prop(cloth, "distance_repel", slider=True, text="Repel Distance")
+ col.prop(cloth, "collision_quality", slider=True, text=_("Quality"))
+ col.prop(cloth, "distance_min", slider=True, text=_("Distance"))
+ col.prop(cloth, "repel_force", slider=True, text=_("Repel"))
+ col.prop(cloth, "distance_repel", slider=True, text=_("Repel Distance"))
col.prop(cloth, "friction")
col = split.column()
- col.prop(cloth, "use_self_collision", text="Self Collision")
+ col.prop(cloth, "use_self_collision", text=_("Self Collision"))
sub = col.column()
sub.active = cloth.use_self_collision
- sub.prop(cloth, "self_collision_quality", slider=True, text="Quality")
- sub.prop(cloth, "self_distance_min", slider=True, text="Distance")
+ sub.prop(cloth, "self_collision_quality", slider=True, text=_("Quality"))
+ sub.prop(cloth, "self_distance_min", slider=True, text=_("Distance"))
layout.prop(cloth, "group")
@@ -198,14 +198,14 @@ class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Structural Stiffness:")
+ col.label(text=_("Structural Stiffness:"))
col.prop_search(cloth, "vertex_group_structural_stiffness", ob, "vertex_groups", text="")
- col.prop(cloth, "structural_stiffness_max", text="Max")
+ col.prop(cloth, "structural_stiffness_max", text=_("Max"))
col = split.column()
- col.label(text="Bending Stiffness:")
+ col.label(text=_("Bending Stiffness:"))
col.prop_search(cloth, "vertex_group_bending", ob, "vertex_groups", text="")
- col.prop(cloth, "bending_stiffness_max", text="Max")
+ col.prop(cloth, "bending_stiffness_max", text=_("Max"))
class PHYSICS_PT_cloth_field_weights(PhysicButtonsPanel, Panel):
diff --git a/release/scripts/startup/bl_ui/properties_physics_common.py b/release/scripts/startup/bl_ui/properties_physics_common.py
index 59033813eb1..fb8c9989262 100644
--- a/release/scripts/startup/bl_ui/properties_physics_common.py
+++ b/release/scripts/startup/bl_ui/properties_physics_common.py
@@ -20,7 +20,7 @@
import bpy
from bpy.types import Panel
-
+from blf import gettext as _
class PhysicButtonsPanel():
bl_space_type = 'PROPERTIES'
@@ -53,28 +53,28 @@ class PHYSICS_PT_add(PhysicButtonsPanel, Panel):
ob = context.object
layout = self.layout
- layout.label("Enable physics for:")
+ layout.label(_("Enable physics for:"))
split = layout.split()
col = split.column()
if(context.object.field.type == 'NONE'):
- col.operator("object.forcefield_toggle", text="Force Field", icon='FORCE_FORCE')
+ col.operator("object.forcefield_toggle", text=_("Force Field"), icon='FORCE_FORCE')
else:
- col.operator("object.forcefield_toggle", text="Force Field", icon='X')
+ col.operator("object.forcefield_toggle", text=_("Force Field"), icon='X')
if(ob.type == 'MESH'):
- physics_add(self, col, context.collision, "Collision", 'COLLISION', 'MOD_PHYSICS', False)
- physics_add(self, col, context.cloth, "Cloth", 'CLOTH', 'MOD_CLOTH', True)
+ physics_add(self, col, context.collision, _("Collision"), 'COLLISION', 'MOD_PHYSICS', False)
+ physics_add(self, col, context.cloth, _("Cloth"), 'CLOTH', 'MOD_CLOTH', True)
physics_add(self, col, context.dynamic_paint, "Dynamic Paint", 'DYNAMIC_PAINT', 'MOD_DYNAMICPAINT', True)
col = split.column()
if(ob.type == 'MESH' or ob.type == 'LATTICE'or ob.type == 'CURVE'):
- physics_add(self, col, context.soft_body, "Soft Body", 'SOFT_BODY', 'MOD_SOFT', True)
+ physics_add(self, col, context.soft_body, _("Soft Body"), 'SOFT_BODY', 'MOD_SOFT', True)
if(ob.type == 'MESH'):
- physics_add(self, col, context.fluid, "Fluid", 'FLUID_SIMULATION', 'MOD_FLUIDSIM', True)
- physics_add(self, col, context.smoke, "Smoke", 'SMOKE', 'MOD_SMOKE', True)
+ physics_add(self, col, context.fluid, _("Fluid"), 'FLUID_SIMULATION', 'MOD_FLUIDSIM', True)
+ physics_add(self, col, context.smoke, _("Smoke"), 'SMOKE', 'MOD_SMOKE', True)
#cachetype can be 'PSYS' 'HAIR' 'SMOKE' etc
@@ -96,11 +96,11 @@ def point_cache_ui(self, context, cache, enabled, cachetype):
if cache.use_external:
split = layout.split(percentage=0.80)
- split.prop(cache, "name", text="File Name")
+ split.prop(cache, "name", text=_("File Name"))
split.prop(cache, "index", text="")
row = layout.row()
- row.label(text="File Path:")
+ row.label(text=_("File Path:"))
row.prop(cache, "use_library_path", "Use Lib Path")
layout.prop(cache, "filepath", text="")
@@ -109,13 +109,13 @@ def point_cache_ui(self, context, cache, enabled, cachetype):
else:
if cachetype in {'SMOKE', 'DYNAMIC_PAINT'}:
if not bpy.data.is_saved:
- layout.label(text="Cache is disabled until the file is saved")
+ layout.label(text=_("Cache is disabled until the file is saved"))
layout.enabled = False
if cache.use_disk_cache:
- layout.prop(cache, "name", text="File Name")
+ layout.prop(cache, "name", text=_("File Name"))
else:
- layout.prop(cache, "name", text="Cache Name")
+ layout.prop(cache, "name", text=_("Cache Name"))
row = layout.row(align=True)
@@ -143,7 +143,7 @@ def point_cache_ui(self, context, cache, enabled, cachetype):
row = layout.row()
row.enabled = enabled and bpy.data.is_saved
row.active = cache.use_disk_cache
- row.label(text="Compression:")
+ row.label(text=_("Compression:"))
row.prop(cache, "compression", expand=True)
layout.separator()
@@ -153,22 +153,22 @@ def point_cache_ui(self, context, cache, enabled, cachetype):
col = split.column()
if cache.is_baked == True:
- col.operator("ptcache.free_bake", text="Free Bake")
+ col.operator("ptcache.free_bake", text=_("Free Bake"))
else:
- col.operator("ptcache.bake", text="Bake").bake = True
+ col.operator("ptcache.bake", text=_("Bake")).bake = True
sub = col.row()
sub.enabled = (cache.frames_skipped or cache.is_outdated) and enabled
- sub.operator("ptcache.bake", text="Calculate To Frame").bake = False
+ sub.operator("ptcache.bake", text=_("Calculate To Frame")).bake = False
sub = col.column()
sub.enabled = enabled
- sub.operator("ptcache.bake_from_cache", text="Current Cache to Bake")
+ sub.operator("ptcache.bake_from_cache", text=_("Current Cache to Bake"))
col = split.column()
- col.operator("ptcache.bake_all", text="Bake All Dynamics").bake = True
- col.operator("ptcache.free_bake_all", text="Free All Bakes")
- col.operator("ptcache.bake_all", text="Update All To Frame").bake = False
+ col.operator("ptcache.bake_all", text=_("Bake All Dynamics")).bake = True
+ col.operator("ptcache.free_bake_all", text=_("Free All Bakes"))
+ col.operator("ptcache.bake_all", text=_("Update All To Frame")).bake = False
def effector_weights_ui(self, context, weights):
@@ -216,7 +216,7 @@ def basic_force_field_settings_ui(self, context, field):
col = split.column()
if field.type == 'DRAG':
- col.prop(field, "linear_drag", text="Linear")
+ col.prop(field, "linear_drag", text=_("Linear"))
else:
col.prop(field, "strength")
@@ -224,12 +224,12 @@ def basic_force_field_settings_ui(self, context, field):
col.prop(field, "size")
col.prop(field, "flow")
elif field.type == 'HARMONIC':
- col.prop(field, "harmonic_damping", text="Damping")
+ col.prop(field, "harmonic_damping", text=_("Damping"))
col.prop(field, "rest_length")
elif field.type == 'VORTEX' and field.shape != 'POINT':
col.prop(field, "inflow")
elif field.type == 'DRAG':
- col.prop(field, "quadratic_drag", text="Quadratic")
+ col.prop(field, "quadratic_drag", text=_("Quadratic"))
else:
col.prop(field, "flow")
@@ -238,19 +238,19 @@ def basic_force_field_settings_ui(self, context, field):
sub.prop(field, "noise")
sub.prop(field, "seed")
if field.type == 'TURBULENCE':
- col.prop(field, "use_global_coords", text="Global")
+ col.prop(field, "use_global_coords", text=_("Global"))
elif field.type == 'HARMONIC':
col.prop(field, "use_multiple_springs")
split = layout.split()
col = split.column()
- col.label(text="Effect point:")
+ col.label(text=_("Effect point:"))
col.prop(field, "apply_to_location")
col.prop(field, "apply_to_rotation")
col = split.column()
- col.label(text="Collision:")
+ col.label(text=_("Collision:"))
col.prop(field, "use_absorption")
@@ -266,7 +266,7 @@ def basic_force_field_falloff_ui(self, context, field):
col.prop(field, "z_direction", text="")
col = split.column()
- col.prop(field, "falloff_power", text="Power")
+ col.prop(field, "falloff_power", text=_("Power"))
split = layout.split()
col = split.column()
@@ -274,14 +274,14 @@ def basic_force_field_falloff_ui(self, context, field):
row.prop(field, "use_min_distance", text="")
sub = row.row()
sub.active = field.use_min_distance
- sub.prop(field, "distance_min", text="Minimum")
+ sub.prop(field, "distance_min", text=_("Minimum"))
col = split.column()
row = col.row(align=True)
row.prop(field, "use_max_distance", text="")
sub = row.row()
sub.active = field.use_max_distance
- sub.prop(field, "distance_max", text="Maximum")
+ sub.prop(field, "distance_max", text=_("Maximum"))
if __name__ == "__main__": # only for live edit.
bpy.utils.register_module(__name__)
diff --git a/release/scripts/startup/bl_ui/properties_physics_field.py b/release/scripts/startup/bl_ui/properties_physics_field.py
index e1dc4d04378..937df5c0ad9 100644
--- a/release/scripts/startup/bl_ui/properties_physics_field.py
+++ b/release/scripts/startup/bl_ui/properties_physics_field.py
@@ -19,7 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.types import Panel
-
+from blf import gettext as _
from bl_ui.properties_physics_common import (
basic_force_field_settings_ui,
@@ -54,13 +54,13 @@ class PHYSICS_PT_field(PhysicButtonsPanel, Panel):
field = ob.field
split = layout.split(percentage=0.2)
- split.label(text="Type:")
+ split.label(text=_("Type:"))
split.prop(field, "type", text="")
if field.type not in {'NONE', 'GUIDE', 'TEXTURE'}:
split = layout.split(percentage=0.2)
- split.label(text="Shape:")
+ split.label(text=_("Shape:"))
split.prop(field, "shape", text="")
split = layout.split()
@@ -76,7 +76,7 @@ class PHYSICS_PT_field(PhysicButtonsPanel, Panel):
col.prop(field, "use_guide_path_weight")
col = split.column()
- col.label(text="Clumping:")
+ col.label(text=_("Clumping:"))
col.prop(field, "guide_clump_amount")
col.prop(field, "guide_clump_shape")
@@ -117,7 +117,7 @@ class PHYSICS_PT_field(PhysicButtonsPanel, Panel):
if field.type not in {'NONE', 'GUIDE'}:
- layout.label(text="Falloff:")
+ layout.label(text=_("Falloff:"))
layout.prop(field, "falloff_type", expand=True)
basic_force_field_falloff_ui(self, context, field)
@@ -128,20 +128,20 @@ class PHYSICS_PT_field(PhysicButtonsPanel, Panel):
split = layout.split(percentage=0.35)
col = split.column()
- col.label(text="Angular:")
- col.prop(field, "use_radial_min", text="Use Minimum")
- col.prop(field, "use_radial_max", text="Use Maximum")
+ col.label(text=_("Angular:"))
+ col.prop(field, "use_radial_min", text=_("Use Minimum"))
+ col.prop(field, "use_radial_max", text=_("Use Maximum"))
col = split.column()
- col.prop(field, "radial_falloff", text="Power")
+ col.prop(field, "radial_falloff", text=_("Power"))
sub = col.column()
sub.active = field.use_radial_min
- sub.prop(field, "radial_min", text="Angle")
+ sub.prop(field, "radial_min", text=_("Angle"))
sub = col.column()
sub.active = field.use_radial_max
- sub.prop(field, "radial_max", text="Angle")
+ sub.prop(field, "radial_max", text=_("Angle"))
elif field.falloff_type == 'TUBE':
layout.separator()
@@ -149,20 +149,20 @@ class PHYSICS_PT_field(PhysicButtonsPanel, Panel):
split = layout.split(percentage=0.35)
col = split.column()
- col.label(text="Radial:")
- col.prop(field, "use_radial_min", text="Use Minimum")
- col.prop(field, "use_radial_max", text="Use Maximum")
+ col.label(text=_("Radial:"))
+ col.prop(field, "use_radial_min", text=_("Use Minimum"))
+ col.prop(field, "use_radial_max", text=_("Use Maximum"))
col = split.column()
- col.prop(field, "radial_falloff", text="Power")
+ col.prop(field, "radial_falloff", text=_("Power"))
sub = col.column()
sub.active = field.use_radial_min
- sub.prop(field, "radial_min", text="Distance")
+ sub.prop(field, "radial_min", text=_("Distance"))
sub = col.column()
sub.active = field.use_radial_max
- sub.prop(field, "radial_max", text="Distance")
+ sub.prop(field, "radial_max", text=_("Distance"))
class PHYSICS_PT_collision(PhysicButtonsPanel, Panel):
@@ -192,31 +192,31 @@ class PHYSICS_PT_collision(PhysicButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Particle:")
+ col.label(text=_("Particle:"))
col.prop(settings, "permeability", slider=True)
col.prop(settings, "stickness")
col.prop(settings, "use_particle_kill")
- col.label(text="Particle Damping:")
+ col.label(text=_("Particle Damping:"))
sub = col.column(align=True)
- sub.prop(settings, "damping_factor", text="Factor", slider=True)
- sub.prop(settings, "damping_random", text="Random", slider=True)
+ sub.prop(settings, "damping_factor", text=_("Factor"), slider=True)
+ sub.prop(settings, "damping_random", text=_("Random"), slider=True)
- col.label(text="Particle Friction:")
+ col.label(text=_("Particle Friction:"))
sub = col.column(align=True)
- sub.prop(settings, "friction_factor", text="Factor", slider=True)
- sub.prop(settings, "friction_random", text="Random", slider=True)
+ sub.prop(settings, "friction_factor", text=_("Factor"), slider=True)
+ sub.prop(settings, "friction_random", text=_("Random"), slider=True)
col = split.column()
- col.label(text="Soft Body and Cloth:")
+ col.label(text=_("Soft Body and Cloth:"))
sub = col.column(align=True)
- sub.prop(settings, "thickness_outer", text="Outer", slider=True)
- sub.prop(settings, "thickness_inner", text="Inner", slider=True)
+ sub.prop(settings, "thickness_outer", text=_("Outer"), slider=True)
+ sub.prop(settings, "thickness_inner", text=_("Inner"), slider=True)
- col.label(text="Soft Body Damping:")
- col.prop(settings, "damping", text="Factor", slider=True)
+ col.label(text=_("Soft Body Damping:"))
+ col.prop(settings, "damping", text=_("Factor"), slider=True)
- col.label(text="Force Fields:")
- col.prop(settings, "absorption", text="Absorption")
+ col.label(text=_("Force Fields:"))
+ col.prop(settings, "absorption", text=_("Absorption"))
if __name__ == "__main__": # only for live edit.
bpy.utils.register_module(__name__)
diff --git a/release/scripts/startup/bl_ui/properties_physics_fluid.py b/release/scripts/startup/bl_ui/properties_physics_fluid.py
index 46893af3582..c89d7ec9755 100644
--- a/release/scripts/startup/bl_ui/properties_physics_fluid.py
+++ b/release/scripts/startup/bl_ui/properties_physics_fluid.py
@@ -19,7 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.types import Panel
-
+from blf import gettext as _
class PhysicButtonsPanel():
bl_space_type = 'PROPERTIES'
@@ -46,7 +46,7 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
row = layout.row()
if fluid is None:
- row.label("built without fluids")
+ row.label(_("Built without fluids"))
return
row.prop(fluid, "type")
@@ -58,28 +58,28 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
layout.active = fluid.use
if fluid.type == 'DOMAIN':
- layout.operator("fluid.bake", text="Bake (Req. Memory: %s)" % fluid.memory_estimate, icon='MOD_FLUIDSIM')
+ layout.operator("fluid.bake", text=_("Bake (Req. Memory:")+" %s)" % fluid.memory_estimate, icon='MOD_FLUIDSIM')
split = layout.split()
col = split.column()
- col.label(text="Resolution:")
- col.prop(fluid, "resolution", text="Final")
- col.label(text="Render Display:")
+ col.label(text=_("Resolution:"))
+ col.prop(fluid, "resolution", text=_("Final"))
+ col.label(text=_("Render Display:"))
col.prop(fluid, "render_display_mode", text="")
col = split.column()
col.label()
- col.prop(fluid, "preview_resolution", text="Preview")
- col.label(text="Viewport Display:")
+ col.prop(fluid, "preview_resolution", text=_("Preview"))
+ col.label(text=_("Viewport Display:"))
col.prop(fluid, "viewport_display_mode", text="")
split = layout.split()
col = split.column()
- col.label(text="Time:")
+ col.label(text=_("Time:"))
sub = col.column(align=True)
- sub.prop(fluid, "start_time", text="Start")
- sub.prop(fluid, "end_time", text="End")
+ sub.prop(fluid, "start_time", text=_("Start"))
+ sub.prop(fluid, "end_time", text=_("End"))
col = split.column()
col.label()
@@ -92,36 +92,36 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Volume Initialization:")
+ col.label(text=_("Volume Initialization:"))
col.prop(fluid, "volume_initialization", text="")
col.prop(fluid, "use_animated_mesh")
col = split.column()
- col.label(text="Initial Velocity:")
+ col.label(text=_("Initial Velocity:"))
col.prop(fluid, "initial_velocity", text="")
elif fluid.type == 'OBSTACLE':
split = layout.split()
col = split.column()
- col.label(text="Volume Initialization:")
+ col.label(text=_("Volume Initialization:"))
col.prop(fluid, "volume_initialization", text="")
col.prop(fluid, "use_animated_mesh")
col = split.column()
- col.label(text="Slip Type:")
+ col.label(text=_("Slip Type:"))
col.prop(fluid, "slip_type", text="")
if fluid.slip_type == 'PARTIALSLIP':
- col.prop(fluid, "partial_slip_factor", slider=True, text="Amount")
+ col.prop(fluid, "partial_slip_factor", slider=True, text=_("Amount"))
- col.label(text="Impact:")
- col.prop(fluid, "impact_factor", text="Factor")
+ col.label(text=_("Impact:"))
+ col.prop(fluid, "impact_factor", text=_("Factor"))
elif fluid.type == 'INFLOW':
split = layout.split()
col = split.column()
- col.label(text="Volume Initialization:")
+ col.label(text=_("Volume Initialization:"))
col.prop(fluid, "volume_initialization", text="")
col.prop(fluid, "use_animated_mesh")
row = col.row()
@@ -129,14 +129,14 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
row.prop(fluid, "use_local_coords")
col = split.column()
- col.label(text="Inflow Velocity:")
+ col.label(text=_("Inflow Velocity:"))
col.prop(fluid, "inflow_velocity", text="")
elif fluid.type == 'OUTFLOW':
split = layout.split()
col = split.column()
- col.label(text="Volume Initialization:")
+ col.label(text=_("Volume Initialization:"))
col.prop(fluid, "volume_initialization", text="")
col.prop(fluid, "use_animated_mesh")
@@ -146,12 +146,12 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Influence:")
- col.prop(fluid, "particle_influence", text="Size")
- col.prop(fluid, "alpha_influence", text="Alpha")
+ col.label(text=_("Influence:"))
+ col.prop(fluid, "particle_influence", text=_("Size"))
+ col.prop(fluid, "alpha_influence", text=_("Alpha"))
col = split.column()
- col.label(text="Type:")
+ col.label(text=_("Type:"))
col.prop(fluid, "use_drops")
col.prop(fluid, "use_floats")
col.prop(fluid, "show_tracer")
@@ -167,24 +167,24 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel):
col.prop(fluid, "use_reverse_frames")
col = split.column()
- col.label(text="Time:")
+ col.label(text=_("Time:"))
sub = col.column(align=True)
- sub.prop(fluid, "start_time", text="Start")
- sub.prop(fluid, "end_time", text="End")
+ sub.prop(fluid, "start_time", text=_("Start"))
+ sub.prop(fluid, "end_time", text=_("End"))
split = layout.split()
col = split.column()
- col.label(text="Attraction Force:")
+ col.label(text=_("Attraction Force:"))
sub = col.column(align=True)
- sub.prop(fluid, "attraction_strength", text="Strength")
- sub.prop(fluid, "attraction_radius", text="Radius")
+ sub.prop(fluid, "attraction_strength", text=_("Strength"))
+ sub.prop(fluid, "attraction_radius", text=_("Radius"))
col = split.column()
- col.label(text="Velocity Force:")
+ col.label(text=_("Velocity Force:"))
sub = col.column(align=True)
- sub.prop(fluid, "velocity_strength", text="Strength")
- sub.prop(fluid, "velocity_radius", text="Radius")
+ sub.prop(fluid, "velocity_strength", text=_("Strength"))
+ sub.prop(fluid, "velocity_radius", text=_("Radius"))
class PHYSICS_PT_domain_gravity(PhysicButtonsPanel, Panel):
@@ -206,33 +206,33 @@ class PHYSICS_PT_domain_gravity(PhysicButtonsPanel, Panel):
col = split.column()
if scene.use_gravity:
- col.label(text="Using Scene Gravity", icon="SCENE_DATA")
+ col.label(text=_("Using Scene Gravity"), icon="SCENE_DATA")
sub = col.column()
sub.enabled = False
sub.prop(fluid, "gravity", text="")
else:
- col.label(text="Gravity:")
+ col.label(text=_("Gravity:"))
col.prop(fluid, "gravity", text="")
if scene.unit_settings.system != 'NONE':
- col.label(text="Using Scene Size Units", icon="SCENE_DATA")
+ col.label(text=_("Using Scene Size Units"), icon="SCENE_DATA")
sub = col.column()
sub.enabled = False
- sub.prop(fluid, "simulation_scale", text="Metres")
+ sub.prop(fluid, "simulation_scale", text=_("Metres"))
else:
- col.label(text="Real World Size:")
- col.prop(fluid, "simulation_scale", text="Metres")
+ col.label(text=_("Real World Size:"))
+ col.prop(fluid, "simulation_scale", text=_("Metres"))
col = split.column()
- col.label(text="Viscosity Presets:")
+ col.label(text=_("Viscosity Presets:"))
sub = col.column(align=True)
sub.prop(fluid, "viscosity_preset", text="")
if fluid.viscosity_preset == 'MANUAL':
- sub.prop(fluid, "viscosity_base", text="Base")
- sub.prop(fluid, "viscosity_exponent", text="Exponent", slider=True)
+ sub.prop(fluid, "viscosity_base", text=_("Base"))
+ sub.prop(fluid, "viscosity_exponent", text=_("Exponent"), slider=True)
- col.label(text="Optimization:")
+ col.label(text=_("Optimization:"))
col.prop(fluid, "grid_levels", slider=True)
col.prop(fluid, "compressibility", slider=True)
@@ -254,16 +254,16 @@ class PHYSICS_PT_domain_boundary(PhysicButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Slip Type:")
+ col.label(text=_("Slip Type:"))
col.prop(fluid, "slip_type", text="")
if fluid.slip_type == 'PARTIALSLIP':
- col.prop(fluid, "partial_slip_factor", slider=True, text="Amount")
+ col.prop(fluid, "partial_slip_factor", slider=True, text=_("Amount"))
col.prop(fluid, "surface_noobs")
col = split.column()
- col.label(text="Surface:")
- col.prop(fluid, "surface_smooth", text="Smoothing")
- col.prop(fluid, "surface_subdivisions", text="Subdivisions")
+ col.label(text=_("Surface:"))
+ col.prop(fluid, "surface_smooth", text=_("Smoothing"))
+ col.prop(fluid, "surface_subdivisions", text=_("Subdivisions"))
class PHYSICS_PT_domain_particles(PhysicButtonsPanel, Panel):
diff --git a/release/scripts/startup/bl_ui/properties_physics_smoke.py b/release/scripts/startup/bl_ui/properties_physics_smoke.py
index 771a778380d..61c477b6d49 100644
--- a/release/scripts/startup/bl_ui/properties_physics_smoke.py
+++ b/release/scripts/startup/bl_ui/properties_physics_smoke.py
@@ -19,7 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.types import Panel
-
+from blf import gettext as _
from bl_ui.properties_physics_common import (
point_cache_ui,
@@ -59,23 +59,23 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel, Panel):
split.enabled = not domain.point_cache.is_baked
col = split.column()
- col.label(text="Resolution:")
- col.prop(domain, "resolution_max", text="Divisions")
- col.label(text="Time:")
- col.prop(domain, "time_scale", text="Scale")
- col.label(text="Border Collisions:")
+ col.label(text=_("Resolution:"))
+ col.prop(domain, "resolution_max", text=_("Divisions"))
+ col.label(text=_("Time:"))
+ col.prop(domain, "time_scale", text=_("Scale"))
+ col.label(text=_("Border Collisions:"))
col.prop(domain, "collision_extents", text="")
col = split.column()
- col.label(text="Behavior:")
+ col.label(text=_("Behavior:"))
col.prop(domain, "alpha")
- col.prop(domain, "beta", text="Temp. Diff.")
+ col.prop(domain, "beta", text=_("Temp. Diff."))
col.prop(domain, "vorticity")
- col.prop(domain, "use_dissolve_smoke", text="Dissolve")
+ col.prop(domain, "use_dissolve_smoke", text=_("Dissolve"))
sub = col.column()
sub.active = domain.use_dissolve_smoke
- sub.prop(domain, "dissolve_speed", text="Time")
- sub.prop(domain, "use_dissolve_smoke_log", text="Slow")
+ sub.prop(domain, "dissolve_speed", text=_("Time"))
+ sub.prop(domain, "use_dissolve_smoke_log", text_("Slow"))
elif md.smoke_type == 'FLOW':
@@ -85,20 +85,20 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel, Panel):
col = split.column()
col.prop(flow, "use_outflow")
- col.label(text="Particle System:")
+ col.label(text=_("Particle System:"))
col.prop_search(flow, "particle_system", ob, "particle_systems", text="")
sub = col.column()
sub.active = not md.flow_settings.use_outflow
- sub.prop(flow, "initial_velocity", text="Initial Velocity")
+ sub.prop(flow, "initial_velocity", text=_("Initial Velocity"))
sub = sub.column()
sub.active = flow.initial_velocity
- sub.prop(flow, "velocity_factor", text="Multiplier")
+ sub.prop(flow, "velocity_factor", text=_("Multiplier"))
sub = split.column()
sub.active = not md.flow_settings.use_outflow
- sub.label(text="Initial Values:")
+ sub.label(text=_("Initial Values:"))
sub.prop(flow, "use_absolute")
sub.prop(flow, "density")
sub.prop(flow, "temperature")
@@ -121,14 +121,14 @@ class PHYSICS_PT_smoke_groups(PhysicButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Flow Group:")
+ col.label(text=_("Flow Group:"))
col.prop(group, "fluid_group", text="")
- #col.label(text="Effector Group:")
+ #col.label(text=_("Effector Group:"))
#col.prop(group, "effector_group", text="")
col = split.column()
- col.label(text="Collision Group:")
+ col.label(text=_("Collision Group:"))
col.prop(group, "collision_group", text="")
@@ -157,12 +157,12 @@ class PHYSICS_PT_smoke_highres(PhysicButtonsPanel, Panel):
split.enabled = not md.point_cache.is_baked
col = split.column()
- col.label(text="Resolution:")
- col.prop(md, "amplify", text="Divisions")
+ col.label(text=_("Resolution:"))
+ col.prop(md, "amplify", text=_("Divisions"))
col.prop(md, "smooth_emitter")
col = split.column()
- col.label(text="Noise Method:")
+ col.label(text=_("Noise Method:"))
col.row().prop(md, "noise_type", text="")
col.prop(md, "strength")
@@ -184,7 +184,7 @@ class PHYSICS_PT_smoke_cache(PhysicButtonsPanel, Panel):
md = context.smoke.domain_settings
cache = md.point_cache
- layout.label(text="Compression:")
+ layout.label(text=_("Compression:"))
layout.prop(md, "point_cache_compress_type", expand=True)
point_cache_ui(self, context, cache, (cache.is_baked is False), 'SMOKE')
diff --git a/release/scripts/startup/bl_ui/properties_physics_softbody.py b/release/scripts/startup/bl_ui/properties_physics_softbody.py
index 0b55ccf9516..5449e54c6e6 100644
--- a/release/scripts/startup/bl_ui/properties_physics_softbody.py
+++ b/release/scripts/startup/bl_ui/properties_physics_softbody.py
@@ -19,7 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.types import Panel
-
+from blf import gettext as _
from bl_ui.properties_physics_common import (
point_cache_ui,
@@ -62,13 +62,13 @@ class PHYSICS_PT_softbody(PhysicButtonsPanel, Panel):
split.enabled = softbody_panel_enabled(md)
col = split.column()
- col.label(text="Object:")
+ col.label(text=_("Object:"))
col.prop(softbody, "friction")
col.prop(softbody, "mass")
- col.prop_search(softbody, "vertex_group_mass", ob, "vertex_groups", text="Mass:")
+ col.prop_search(softbody, "vertex_group_mass", ob, "vertex_groups", text=_("Mass:"))
col = split.column()
- col.label(text="Simulation:")
+ col.label(text=_("Simulation:"))
col.prop(softbody, "speed")
@@ -114,18 +114,18 @@ class PHYSICS_PT_softbody_goal(PhysicButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Goal Strengths:")
- col.prop(softbody, "goal_default", text="Default")
+ col.label(text=_("Goal Strengths:"))
+ col.prop(softbody, "goal_default", text=_("Default"))
sub = col.column(align=True)
- sub.prop(softbody, "goal_min", text="Minimum")
- sub.prop(softbody, "goal_max", text="Maximum")
+ sub.prop(softbody, "goal_min", text=_("Minimum"))
+ sub.prop(softbody, "goal_max", text=_("Maximum"))
col = split.column()
- col.label(text="Goal Settings:")
- col.prop(softbody, "goal_spring", text="Stiffness")
- col.prop(softbody, "goal_friction", text="Damping")
+ col.label(text=_("Goal Settings:"))
+ col.prop(softbody, "goal_spring", text=_("Stiffness"))
+ col.prop(softbody, "goal_friction", text=_("Damping"))
- layout.prop_search(softbody, "vertex_group_goal", ob, "vertex_groups", text="Vertex Group")
+ layout.prop_search(softbody, "vertex_group_goal", ob, "vertex_groups", text=_("Vertex Group"))
class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, Panel):
@@ -154,14 +154,14 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Springs:")
+ col.label(text=_("Springs:"))
col.prop(softbody, "pull")
col.prop(softbody, "push")
col.prop(softbody, "damping")
col.prop(softbody, "plastic")
col.prop(softbody, "bend")
- col.prop(softbody, "spring_length", text="Length")
- col.prop_search(softbody, "vertex_group_spring", ob, "vertex_groups", text="Springs:")
+ col.prop(softbody, "spring_length", text=_("Length"))
+ col.prop_search(softbody, "vertex_group_spring", ob, "vertex_groups", text=_("Springs:"))
col = split.column()
col.prop(softbody, "use_stiff_quads")
@@ -169,16 +169,16 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, Panel):
sub.active = softbody.use_stiff_quads
sub.prop(softbody, "shear")
- col.label(text="Aerodynamics:")
+ col.label(text=_("Aerodynamics:"))
col.row().prop(softbody, "aerodynamics_type", expand=True)
- col.prop(softbody, "aero", text="Factor")
+ col.prop(softbody, "aero", text=_("Factor"))
#sub = col.column()
#sub.enabled = softbody.aero > 0
- col.label(text="Collision:")
- col.prop(softbody, "use_edge_collision", text="Edge")
- col.prop(softbody, "use_face_collision", text="Face")
+ col.label(text=_("Collision:"))
+ col.prop(softbody, "use_edge_collision", text=_("Edge"))
+ col.prop(softbody, "use_face_collision", text=_("Face"))
class PHYSICS_PT_softbody_collision(PhysicButtonsPanel, Panel):
@@ -203,14 +203,14 @@ class PHYSICS_PT_softbody_collision(PhysicButtonsPanel, Panel):
layout.active = softbody.use_self_collision and softbody_panel_enabled(md)
- layout.label(text="Collision Ball Size Calculation:")
+ layout.label(text=_("Collision Ball Size Calculation:"))
layout.prop(softbody, "collision_type", expand=True)
col = layout.column(align=True)
- col.label(text="Ball:")
- col.prop(softbody, "ball_size", text="Size")
- col.prop(softbody, "ball_stiff", text="Stiffness")
- col.prop(softbody, "ball_damp", text="Dampening")
+ col.label(text=_("Ball:"))
+ col.prop(softbody, "ball_size", text=_("Size"))
+ col.prop(softbody, "ball_stiff", text=_("Stiffness"))
+ col.prop(softbody, "ball_damp", text=_("Dampening"))
class PHYSICS_PT_softbody_solver(PhysicButtonsPanel, Panel):
@@ -233,18 +233,18 @@ class PHYSICS_PT_softbody_solver(PhysicButtonsPanel, Panel):
split = layout.split()
col = split.column(align=True)
- col.label(text="Step Size:")
+ col.label(text=_("Step Size:"))
col.prop(softbody, "step_min")
col.prop(softbody, "step_max")
- col.prop(softbody, "use_auto_step", text="Auto-Step")
+ col.prop(softbody, "use_auto_step", text=_("Auto-Step"))
col = split.column()
col.prop(softbody, "error_threshold")
- col.label(text="Helpers:")
+ col.label(text=_("Helpers:"))
col.prop(softbody, "choke")
col.prop(softbody, "fuzzy")
- layout.label(text="Diagnostics:")
+ layout.label(text=_("Diagnostics:"))
layout.prop(softbody, "use_diagnose")
layout.prop(softbody, "use_estimate_matrix")
diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py
index 395cfc6934e..1e9c15eedae 100644
--- a/release/scripts/startup/bl_ui/properties_render.py
+++ b/release/scripts/startup/bl_ui/properties_render.py
@@ -19,6 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.types import Menu, Panel
+from blf import gettext as _
class RENDER_MT_presets(Menu):
@@ -64,10 +65,10 @@ class RENDER_PT_render(RenderButtonsPanel, Panel):
rd = context.scene.render
row = layout.row()
- row.operator("render.render", text="Image", icon='RENDER_STILL')
- row.operator("render.render", text="Animation", icon='RENDER_ANIMATION').animation = True
+ row.operator("render.render", text=_("Image"), icon='RENDER_STILL')
+ row.operator("render.render", text=_("Animation"), icon='RENDER_ANIMATION').animation = True
- layout.prop(rd, "display_mode", text="Display")
+ layout.prop(rd, "display_mode", text=_("Display"))
class RENDER_PT_layers(RenderButtonsPanel, Panel):
@@ -97,25 +98,25 @@ class RENDER_PT_layers(RenderButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.prop(scene, "layers", text="Scene")
+ col.prop(scene, "layers", text=_("Scene"))
col.label(text="")
- col.prop(rl, "light_override", text="Light")
- col.prop(rl, "material_override", text="Material")
+ col.prop(rl, "light_override", text=_("Light"))
+ col.prop(rl, "material_override", text=_("Material"))
col = split.column()
- col.prop(rl, "layers", text="Layer")
- col.label(text="Mask Layers:")
+ col.prop(rl, "layers", text=_("Layer"))
+ col.label(text=_("Mask Layers:"))
col.prop(rl, "layers_zmask", text="")
layout.separator()
- layout.label(text="Include:")
+ layout.label(text=_("Include:"))
split = layout.split()
col = split.column()
col.prop(rl, "use_zmask")
row = col.row()
- row.prop(rl, "invert_zmask", text="Negate")
+ row.prop(rl, "invert_zmask", text=_("Negate"))
row.active = rl.use_zmask
col.prop(rl, "use_all_z")
@@ -134,7 +135,7 @@ class RENDER_PT_layers(RenderButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Passes:")
+ col.label(text=_("Passes:"))
col.prop(rl, "use_pass_combined")
col.prop(rl, "use_pass_z")
col.prop(rl, "use_pass_vector")
@@ -193,29 +194,29 @@ class RENDER_PT_dimensions(RenderButtonsPanel, Panel):
col = split.column()
sub = col.column(align=True)
- sub.label(text="Resolution:")
+ sub.label(text=_("Resolution:"))
sub.prop(rd, "resolution_x", text="X")
sub.prop(rd, "resolution_y", text="Y")
sub.prop(rd, "resolution_percentage", text="")
- sub.label(text="Aspect Ratio:")
+ sub.label(text=_("Aspect Ratio:"))
sub.prop(rd, "pixel_aspect_x", text="X")
sub.prop(rd, "pixel_aspect_y", text="Y")
row = col.row()
- row.prop(rd, "use_border", text="Border")
+ row.prop(rd, "use_border", text=_("Border"))
sub = row.row()
sub.active = rd.use_border
- sub.prop(rd, "use_crop_to_border", text="Crop")
+ sub.prop(rd, "use_crop_to_border", text=_("Crop"))
col = split.column()
sub = col.column(align=True)
- sub.label(text="Frame Range:")
- sub.prop(scene, "frame_start", text="Start")
- sub.prop(scene, "frame_end", text="End")
- sub.prop(scene, "frame_step", text="Step")
+ sub.label(text=_("Frame Range:"))
+ sub.prop(scene, "frame_start")
+ sub.prop(scene, "frame_end")
+ sub.prop(scene, "frame_step")
- sub.label(text="Frame Rate:")
+ sub.label(text=_("Frame Rate:"))
if rd.fps_base == 1:
fps_rate = round(rd.fps / rd.fps_base)
else:
@@ -225,7 +226,7 @@ class RENDER_PT_dimensions(RenderButtonsPanel, Panel):
custom_framerate = (fps_rate not in {23.98, 24, 25, 29.97, 30, 50, 59.94, 60})
if custom_framerate == True:
- fps_label_text = "Custom (" + str(fps_rate) + " fps)"
+ fps_label_text = _("Custom (") + str(fps_rate) + " fps)"
else:
fps_label_text = str(fps_rate) + " fps"
@@ -235,10 +236,10 @@ class RENDER_PT_dimensions(RenderButtonsPanel, Panel):
sub.prop(rd, "fps")
sub.prop(rd, "fps_base", text="/")
subrow = sub.row(align=True)
- subrow.label(text="Time Remapping:")
+ subrow.label(text=_("Time Remapping:"))
subrow = sub.row(align=True)
- subrow.prop(rd, "frame_map_old", text="Old")
- subrow.prop(rd, "frame_map_new", text="New")
+ subrow.prop(rd, "frame_map_old", text=_("Old"))
+ subrow.prop(rd, "frame_map_new", text=_("New"))
class RENDER_PT_antialiasing(RenderButtonsPanel, Panel):
@@ -266,7 +267,7 @@ class RENDER_PT_antialiasing(RenderButtonsPanel, Panel):
col = split.column()
col.prop(rd, "pixel_filter_type", text="")
- col.prop(rd, "filter_size", text="Size")
+ col.prop(rd, "filter_size", text=_("Size"))
class RENDER_PT_motion_blur(RenderButtonsPanel, Panel):
@@ -308,15 +309,15 @@ class RENDER_PT_shading(RenderButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.prop(rd, "use_textures", text="Textures")
- col.prop(rd, "use_shadows", text="Shadows")
- col.prop(rd, "use_sss", text="Subsurface Scattering")
- col.prop(rd, "use_envmaps", text="Environment Map")
+ col.prop(rd, "use_textures", text=_("Textures"))
+ col.prop(rd, "use_shadows", text=_("Shadows"))
+ col.prop(rd, "use_sss", text=_("Subsurface Scattering"))
+ col.prop(rd, "use_envmaps", text=_("Environment Map"))
col = split.column()
- col.prop(rd, "use_raytrace", text="Ray Tracing")
+ col.prop(rd, "use_raytrace", text=_("Ray Tracing"))
col.prop(rd, "use_color_management")
- col.prop(rd, "alpha_mode", text="Alpha")
+ col.prop(rd, "alpha_mode", text=_("Alpha"))
class RENDER_PT_performance(RenderButtonsPanel, Panel):
@@ -332,18 +333,18 @@ class RENDER_PT_performance(RenderButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Threads:")
+ col.label(text=_("Threads:"))
col.row().prop(rd, "threads_mode", expand=True)
sub = col.column()
sub.enabled = rd.threads_mode == 'FIXED'
sub.prop(rd, "threads")
sub = col.column(align=True)
- sub.label(text="Tiles:")
+ sub.label(text=_("Tiles:"))
sub.prop(rd, "parts_x", text="X")
sub.prop(rd, "parts_y", text="Y")
col = split.column()
- col.label(text="Memory:")
+ col.label(text=_("Memory:"))
sub = col.column()
sub.enabled = not (rd.use_border or rd.use_full_sample)
sub.prop(rd, "use_save_buffers")
@@ -353,13 +354,13 @@ class RENDER_PT_performance(RenderButtonsPanel, Panel):
sub.prop(rd, "use_free_unused_nodes")
sub = col.column()
sub.active = rd.use_raytrace
- sub.label(text="Acceleration structure:")
+ sub.label(text=_("Acceleration structure:"))
sub.prop(rd, "raytrace_method", text="")
if rd.raytrace_method == 'OCTREE':
- sub.prop(rd, "octree_resolution", text="Resolution")
+ sub.prop(rd, "octree_resolution", text=_("Resolution"))
else:
- sub.prop(rd, "use_instances", text="Instances")
- sub.prop(rd, "use_local_coords", text="Local Coordinates")
+ sub.prop(rd, "use_instances", text=_("Instances"))
+ sub.prop(rd, "use_local_coords", text=_("Local Coordinates"))
class RENDER_PT_post_processing(RenderButtonsPanel, Panel):
@@ -378,24 +379,24 @@ class RENDER_PT_post_processing(RenderButtonsPanel, Panel):
col.prop(rd, "use_compositing")
col.prop(rd, "use_sequencer")
- split.prop(rd, "dither_intensity", text="Dither", slider=True)
+ split.prop(rd, "dither_intensity", text=_("Dither"), slider=True)
layout.separator()
split = layout.split()
col = split.column()
- col.prop(rd, "use_fields", text="Fields")
+ col.prop(rd, "use_fields", text=_("Fields"))
sub = col.column()
sub.active = rd.use_fields
sub.row().prop(rd, "field_order", expand=True)
- sub.prop(rd, "use_fields_still", text="Still")
+ sub.prop(rd, "use_fields_still", text=_("Still"))
col = split.column()
col.prop(rd, "use_edge_enhance")
sub = col.column()
sub.active = rd.use_edge_enhance
- sub.prop(rd, "edge_threshold", text="Threshold", slider=True)
+ sub.prop(rd, "edge_threshold", text=_("Threshold"), slider=True)
sub.prop(rd, "edge_color", text="")
@@ -419,26 +420,26 @@ class RENDER_PT_stamp(RenderButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.prop(rd, "use_stamp_time", text="Time")
- col.prop(rd, "use_stamp_date", text="Date")
- col.prop(rd, "use_stamp_render_time", text="RenderTime")
- col.prop(rd, "use_stamp_frame", text="Frame")
- col.prop(rd, "use_stamp_scene", text="Scene")
- col.prop(rd, "use_stamp_camera", text="Camera")
- col.prop(rd, "use_stamp_lens", text="Lens")
- col.prop(rd, "use_stamp_filename", text="Filename")
- col.prop(rd, "use_stamp_marker", text="Marker")
- col.prop(rd, "use_stamp_sequencer_strip", text="Seq. Strip")
+ col.prop(rd, "use_stamp_time", text=_("Time"))
+ col.prop(rd, "use_stamp_date", text=_("Date"))
+ col.prop(rd, "use_stamp_render_time", text=_("RenderTime"))
+ col.prop(rd, "use_stamp_frame", text=_("Frame"))
+ col.prop(rd, "use_stamp_scene", text=_("Scene"))
+ col.prop(rd, "use_stamp_camera", text=_("Camera"))
+ col.prop(rd, "use_stamp_lens", text=_("Lens"))
+ col.prop(rd, "use_stamp_filename", text=_("Filename"))
+ col.prop(rd, "use_stamp_marker", text=_("Marker"))
+ col.prop(rd, "use_stamp_sequencer_strip", text=_("Seq. Strip"))
col = split.column()
col.active = rd.use_stamp
col.prop(rd, "stamp_foreground", slider=True)
col.prop(rd, "stamp_background", slider=True)
col.separator()
- col.prop(rd, "stamp_font_size", text="Font Size")
+ col.prop(rd, "stamp_font_size", text=_("Font Size"))
row = layout.split(percentage=0.2)
- row.prop(rd, "use_stamp_note", text="Note")
+ row.prop(rd, "use_stamp_note", text=_("Note"))
sub = row.row()
sub.active = rd.use_stamp_note
sub.prop(rd, "stamp_note_text", text="")
@@ -460,7 +461,7 @@ class RENDER_PT_output(RenderButtonsPanel, Panel):
col = split.column()
col.prop(rd, "file_format", text="")
- col.row().prop(rd, "color_mode", text="Color", expand=True)
+ col.row().prop(rd, "color_mode", text=_("Color"), expand=True)
col = split.column()
col.prop(rd, "use_file_extension")
@@ -471,11 +472,11 @@ class RENDER_PT_output(RenderButtonsPanel, Panel):
layout.prop(rd, "file_quality", slider=True)
if file_format == 'PNG':
- layout.prop(rd, "file_quality", slider=True, text="Compression")
+ layout.prop(rd, "file_quality", slider=True, text=_("Compression"))
if file_format in {'OPEN_EXR', 'MULTILAYER'}:
row = layout.row()
- row.prop(rd, "exr_codec", text="Codec")
+ row.prop(rd, "exr_codec", text=_("Codec"))
if file_format == 'OPEN_EXR':
row = layout.row()
@@ -486,7 +487,7 @@ class RENDER_PT_output(RenderButtonsPanel, Panel):
elif file_format == 'JPEG2000':
split = layout.split()
col = split.column()
- col.label(text="Depth:")
+ col.label(text=_("Depth:"))
col.row().prop(rd, "jpeg2k_depth", expand=True)
col = split.column()
@@ -499,13 +500,13 @@ class RENDER_PT_output(RenderButtonsPanel, Panel):
split.label("FIXME: hard coded Non-Linear, Gamma:1.0")
'''
col = split.column()
- col.prop(rd, "use_cineon_log", text="Convert to Log")
+ col.prop(rd, "use_cineon_log", text=_("Convert to Log"))
col = split.column(align=True)
col.active = rd.use_cineon_log
- col.prop(rd, "cineon_black", text="Black")
- col.prop(rd, "cineon_white", text="White")
- col.prop(rd, "cineon_gamma", text="Gamma")
+ col.prop(rd, "cineon_black", text=_("Black"))
+ col.prop(rd, "cineon_white", text=_("White"))
+ col.prop(rd, "cineon_gamma", text=_("Gamma"))
'''
elif file_format == 'TIFF':
@@ -517,11 +518,11 @@ class RENDER_PT_output(RenderButtonsPanel, Panel):
elif file_format == 'QUICKTIME_QTKIT':
split = layout.split()
col = split.column()
- col.prop(rd, "quicktime_codec_type", text="Video Codec")
- col.prop(rd, "quicktime_codec_spatial_quality", text="Quality")
+ col.prop(rd, "quicktime_codec_type", text=_("Video Codec"))
+ col.prop(rd, "quicktime_codec_spatial_quality", text=_("Quality"))
# Audio
- col.prop(rd, "quicktime_audiocodec_type", text="Audio Codec")
+ col.prop(rd, "quicktime_audiocodec_type", text=_("Audio Codec"))
if rd.quicktime_audiocodec_type != 'No audio':
split = layout.split()
if rd.quicktime_audiocodec_type == 'LPCM':
@@ -559,7 +560,7 @@ class RENDER_PT_encoding(RenderButtonsPanel, Panel):
rd = context.scene.render
- layout.menu("RENDER_MT_ffmpeg_presets", text="Presets")
+ layout.menu("RENDER_MT_ffmpeg_presets", text=_("Presets"))
split = layout.split()
split.prop(rd, "ffmpeg_format")
@@ -575,22 +576,22 @@ class RENDER_PT_encoding(RenderButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Rate:")
- col.prop(rd, "ffmpeg_minrate", text="Minimum")
- col.prop(rd, "ffmpeg_maxrate", text="Maximum")
- col.prop(rd, "ffmpeg_buffersize", text="Buffer")
+ col.label(text=_("Rate:"))
+ col.prop(rd, "ffmpeg_minrate", text=_("Minimum"))
+ col.prop(rd, "ffmpeg_maxrate", text=_("Maximum"))
+ col.prop(rd, "ffmpeg_buffersize", text=_("Buffer"))
col = split.column()
col.prop(rd, "ffmpeg_autosplit")
- col.label(text="Mux:")
- col.prop(rd, "ffmpeg_muxrate", text="Rate")
- col.prop(rd, "ffmpeg_packetsize", text="Packet Size")
+ col.label(text=_("Mux:"))
+ col.prop(rd, "ffmpeg_muxrate", text=_("Rate"))
+ col.prop(rd, "ffmpeg_packetsize", text=_("Packet Size"))
layout.separator()
# Audio:
if rd.ffmpeg_format not in {'MP3'}:
- layout.prop(rd, "ffmpeg_audio_codec", text="Audio Codec")
+ layout.prop(rd, "ffmpeg_audio_codec", text=_("Audio Codec"))
row = layout.row()
row.prop(rd, "ffmpeg_audio_bitrate")
@@ -632,7 +633,7 @@ class RENDER_PT_bake(RenderButtonsPanel, Panel):
col = split.column()
col.prop(rd, "use_bake_clear")
col.prop(rd, "bake_margin")
- col.prop(rd, "bake_quad_split", text="Split")
+ col.prop(rd, "bake_quad_split", text=_("Split"))
col = split.column()
col.prop(rd, "use_bake_selected_to_active")
diff --git a/release/scripts/startup/bl_ui/properties_scene.py b/release/scripts/startup/bl_ui/properties_scene.py
index 66f967bb6e1..c82b4ac69dc 100644
--- a/release/scripts/startup/bl_ui/properties_scene.py
+++ b/release/scripts/startup/bl_ui/properties_scene.py
@@ -20,7 +20,7 @@
import bpy
from bpy.types import Operator, Panel
from rna_prop_ui import PropertyPanel
-
+from blf import gettext as _
class SceneButtonsPanel():
bl_space_type = 'PROPERTIES'
@@ -41,7 +41,7 @@ class SCENE_PT_scene(SceneButtonsPanel, Panel):
scene = context.scene
layout.prop(scene, "camera")
- layout.prop(scene, "background_set", text="Background")
+ layout.prop(scene, "background_set", text=_("Background"))
class SCENE_PT_audio(SceneButtonsPanel, Panel):
@@ -59,15 +59,15 @@ class SCENE_PT_audio(SceneButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label("Listener:")
+ col.label(_("Listener:"))
col.prop(scene, "audio_distance_model", text="")
- col.prop(scene, "audio_doppler_speed", text="Speed")
- col.prop(scene, "audio_doppler_factor", text="Doppler")
+ col.prop(scene, "audio_doppler_speed", text=_("Speed"))
+ col.prop(scene, "audio_doppler_factor", text=_("Doppler"))
col = split.column()
- col.label("Format:")
+ col.label(_("Format:"))
col.prop(rd, "ffmpeg_audio_channels", text="")
- col.prop(rd, "ffmpeg_audio_mixrate", text="Rate")
+ col.prop(rd, "ffmpeg_audio_mixrate", text=_("Rate"))
layout.operator("sound.mixdown")
@@ -86,7 +86,7 @@ class SCENE_PT_unit(SceneButtonsPanel, Panel):
row = layout.row()
row.active = (unit.system != 'NONE')
- row.prop(unit, "scale_length", text="Scale")
+ row.prop(unit, "scale_length", text=_("Scale"))
row.prop(unit, "use_separate")
@@ -115,11 +115,11 @@ class SCENE_PT_keying_sets(SceneButtonsPanel, Panel):
subcol = col.column()
subcol.operator_context = 'INVOKE_DEFAULT'
- op = subcol.operator("anim.keying_set_export", text="Export to File")
+ op = subcol.operator("anim.keying_set_export", text=_("Export to File"))
op.filepath = "keyingset.py"
col = row.column()
- col.label(text="Keyframing Settings:")
+ col.label(text=_("Keyframing Settings:"))
col.prop(ks, "bl_options")
@@ -138,7 +138,7 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel, Panel):
ks = scene.keying_sets.active
row = layout.row()
- row.label(text="Paths:")
+ row.label(text=_("Paths:"))
row = layout.row()
@@ -152,20 +152,20 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel, Panel):
ksp = ks.paths.active
if ksp:
col = layout.column()
- col.label(text="Target:")
+ col.label(text=_("Target:"))
col.template_any_ID(ksp, "id", "id_type")
col.template_path_builder(ksp, "data_path", ksp.id)
row = layout.row()
col = row.column()
- col.label(text="Array Target:")
+ col.label(text=_("Array Target:"))
col.prop(ksp, "use_entire_array")
if ksp.use_entire_array is False:
col.prop(ksp, "array_index")
col = row.column()
- col.label(text="F-Curve Grouping:")
+ col.label(text=_("F-Curve Grouping:"))
col.prop(ksp, "group_method")
if ksp.group_method == 'NAMED':
col.prop(ksp, "group")
@@ -209,14 +209,14 @@ class SCENE_PT_simplify(SceneButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.prop(rd, "simplify_subdivision", text="Subdivision")
- col.prop(rd, "simplify_child_particles", text="Child Particles")
+ col.prop(rd, "simplify_subdivision", text=_("Subdivision"))
+ col.prop(rd, "simplify_child_particles", text=_("Child Particles"))
col.prop(rd, "use_simplify_triangulate")
col = split.column()
- col.prop(rd, "simplify_shadow_samples", text="Shadow Samples")
- col.prop(rd, "simplify_ao_sss", text="AO and SSS")
+ col.prop(rd, "simplify_shadow_samples", text=_("Shadow Samples"))
+ col.prop(rd, "simplify_ao_sss", text=_("AO and SSS"))
class SCENE_PT_custom_props(SceneButtonsPanel, PropertyPanel, Panel):
@@ -228,22 +228,22 @@ class SCENE_PT_custom_props(SceneButtonsPanel, PropertyPanel, Panel):
class ANIM_OT_keying_set_export(Operator):
- "Export Keying Set to a python script."
+ "Export Keying Set to a python script"
bl_idname = "anim.keying_set_export"
bl_label = "Export Keying Set..."
- filepath = bpy.props.StringProperty(name="File Path", description="Filepath to write file to.")
+ filepath = bpy.props.StringProperty(name="File Path", description="Filepath to write file to")
filter_folder = bpy.props.BoolProperty(name="Filter folders", description="", default=True, options={'HIDDEN'})
filter_text = bpy.props.BoolProperty(name="Filter text", description="", default=True, options={'HIDDEN'})
filter_python = bpy.props.BoolProperty(name="Filter python", description="", default=True, options={'HIDDEN'})
def execute(self, context):
if not self.filepath:
- raise Exception("Filepath not set.")
+ raise Exception("Filepath not set")
f = open(self.filepath, "w")
if not f:
- raise Exception("Could not open file.")
+ raise Exception("Could not open file")
scene = context.scene
ks = scene.keying_sets.active
diff --git a/release/scripts/startup/bl_ui/properties_texture.py b/release/scripts/startup/bl_ui/properties_texture.py
index 34f5a948ee7..c5f8708040f 100644
--- a/release/scripts/startup/bl_ui/properties_texture.py
+++ b/release/scripts/startup/bl_ui/properties_texture.py
@@ -20,6 +20,7 @@
import bpy
from bpy.types import Menu, Panel
from rna_prop_ui import PropertyPanel
+from blf import gettext as _
class TEXTURE_MT_specials(Menu):
@@ -143,11 +144,11 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel, Panel):
if tex.use_nodes:
if slot:
- split.label(text="Output:")
+ split.label(text=_("Output:"))
split.prop(slot, "output_node", text="")
else:
- split.label(text="Type:")
+ split.label(text=_("Type:"))
split.prop(tex, "type", text="")
@@ -178,21 +179,21 @@ class TEXTURE_PT_colors(TextureButtonsPanel, Panel):
tex = context.texture
- layout.prop(tex, "use_color_ramp", text="Ramp")
+ layout.prop(tex, "use_color_ramp", text=_("Ramp"))
if tex.use_color_ramp:
layout.template_color_ramp(tex, "color_ramp", expand=True)
split = layout.split()
col = split.column()
- col.label(text="RGB Multiply:")
+ col.label(text=_("RGB Multiply:"))
sub = col.column(align=True)
sub.prop(tex, "factor_red", text="R")
sub.prop(tex, "factor_green", text="G")
sub.prop(tex, "factor_blue", text="B")
col = split.column()
- col.label(text="Adjust:")
+ col.label(text=_("Adjust:"))
col.prop(tex, "intensity")
col.prop(tex, "contrast")
col.prop(tex, "saturation")
@@ -235,17 +236,17 @@ class TEXTURE_PT_clouds(TextureTypePanel, Panel):
tex = context.texture
layout.prop(tex, "cloud_type", expand=True)
- layout.label(text="Noise:")
- layout.prop(tex, "noise_type", text="Type", expand=True)
- layout.prop(tex, "noise_basis", text="Basis")
+ layout.label(text=_("Noise:"))
+ layout.prop(tex, "noise_type", text=_("Type"), expand=True)
+ layout.prop(tex, "noise_basis", text=_("Basis"))
split = layout.split()
col = split.column()
- col.prop(tex, "noise_scale", text="Size")
- col.prop(tex, "noise_depth", text="Depth")
+ col.prop(tex, "noise_scale", text=_("Size"))
+ col.prop(tex, "noise_depth", text=_("Depth"))
- split.prop(tex, "nabla", text="Nabla")
+ split.prop(tex, "nabla", text=_("Nabla"))
class TEXTURE_PT_wood(TextureTypePanel, Panel):
@@ -263,15 +264,15 @@ class TEXTURE_PT_wood(TextureTypePanel, Panel):
col = layout.column()
col.active = tex.wood_type in {'RINGNOISE', 'BANDNOISE'}
- col.label(text="Noise:")
- col.row().prop(tex, "noise_type", text="Type", expand=True)
- layout.prop(tex, "noise_basis", text="Basis")
+ col.label(text=_("Noise:"))
+ col.row().prop(tex, "noise_type", text=_("Type"), expand=True)
+ layout.prop(tex, "noise_basis", text=_("Basis"))
split = layout.split()
split.active = tex.wood_type in {'RINGNOISE', 'BANDNOISE'}
col = split.column()
- col.prop(tex, "noise_scale", text="Size")
+ col.prop(tex, "noise_scale", text=_("Size"))
col.prop(tex, "turbulence")
split.prop(tex, "nabla")
@@ -289,15 +290,15 @@ class TEXTURE_PT_marble(TextureTypePanel, Panel):
layout.prop(tex, "marble_type", expand=True)
layout.prop(tex, "noise_basis_2", expand=True)
- layout.label(text="Noise:")
- layout.prop(tex, "noise_type", text="Type", expand=True)
- layout.prop(tex, "noise_basis", text="Basis")
+ layout.label(text=_("Noise:"))
+ layout.prop(tex, "noise_type", text=_("Type"), expand=True)
+ layout.prop(tex, "noise_basis", text=_("Basis"))
split = layout.split()
col = split.column()
- col.prop(tex, "noise_scale", text="Size")
- col.prop(tex, "noise_depth", text="Depth")
+ col.prop(tex, "noise_scale", text=_("Size"))
+ col.prop(tex, "noise_depth", text=_("Depth"))
col = split.column()
col.prop(tex, "turbulence")
@@ -315,7 +316,7 @@ class TEXTURE_PT_magic(TextureTypePanel, Panel):
tex = context.texture
row = layout.row()
- row.prop(tex, "noise_depth", text="Depth")
+ row.prop(tex, "noise_depth", text=_("Depth"))
row.prop(tex, "turbulence")
@@ -348,12 +349,12 @@ class TEXTURE_PT_stucci(TextureTypePanel, Panel):
tex = context.texture
layout.prop(tex, "stucci_type", expand=True)
- layout.label(text="Noise:")
- layout.prop(tex, "noise_type", text="Type", expand=True)
- layout.prop(tex, "noise_basis", text="Basis")
+ layout.label(text=_("Noise:"))
+ layout.prop(tex, "noise_type", text=_("Type"), expand=True)
+ layout.prop(tex, "noise_basis", text=_("Basis"))
row = layout.row()
- row.prop(tex, "noise_scale", text="Size")
+ row.prop(tex, "noise_scale", text=_("Size"))
row.prop(tex, "turbulence")
@@ -371,13 +372,13 @@ class TEXTURE_PT_image(TextureTypePanel, Panel):
def texture_filter_common(tex, layout):
- layout.label(text="Filter:")
+ layout.label(text=_("Filter:"))
layout.prop(tex, "filter_type", text="")
if tex.use_mipmap and tex.filter_type in {'AREA', 'EWA', 'FELINE'}:
if tex.filter_type == 'FELINE':
- layout.prop(tex, "filter_probes", text="Probes")
+ layout.prop(tex, "filter_probes", text=_("Probes"))
else:
- layout.prop(tex, "filter_eccentricity", text="Eccentricity")
+ layout.prop(tex, "filter_eccentricity", text=_("Eccentricity"))
layout.prop(tex, "filter_size")
layout.prop(tex, "use_filter_size_min")
@@ -399,12 +400,12 @@ class TEXTURE_PT_image_sampling(TextureTypePanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Alpha:")
- col.prop(tex, "use_alpha", text="Use")
- col.prop(tex, "use_calculate_alpha", text="Calculate")
- col.prop(tex, "invert_alpha", text="Invert")
+ col.label(text=_("Alpha:"))
+ col.prop(tex, "use_alpha", text=_("Use"))
+ col.prop(tex, "use_calculate_alpha", text=_("Calculate"))
+ col.prop(tex, "invert_alpha", text=_("Invert"))
col.separator()
- col.prop(tex, "use_flip_axis", text="Flip X/Y Axis")
+ col.prop(tex, "use_flip_axis", text=_("Flip X/Y Axis"))
col = split.column()
@@ -445,12 +446,12 @@ class TEXTURE_PT_image_mapping(TextureTypePanel, Panel):
if tex.extension == 'REPEAT':
col = split.column(align=True)
- col.label(text="Repeat:")
+ col.label(text=_("Repeat:"))
col.prop(tex, "repeat_x", text="X")
col.prop(tex, "repeat_y", text="Y")
col = split.column(align=True)
- col.label(text="Mirror:")
+ col.label(text=_("Mirror:"))
row = col.row()
row.prop(tex, "use_mirror_x", text="X")
row.active = (tex.repeat_x > 1)
@@ -462,11 +463,11 @@ class TEXTURE_PT_image_mapping(TextureTypePanel, Panel):
elif tex.extension == 'CHECKER':
col = split.column(align=True)
row = col.row()
- row.prop(tex, "use_checker_even", text="Even")
- row.prop(tex, "use_checker_odd", text="Odd")
+ row.prop(tex, "use_checker_even", text=_("Even"))
+ row.prop(tex, "use_checker_odd", text=_("Odd"))
col = split.column()
- col.prop(tex, "checker_distance", text="Distance")
+ col.prop(tex, "checker_distance", text=_("Distance"))
layout.separator()
@@ -474,12 +475,12 @@ class TEXTURE_PT_image_mapping(TextureTypePanel, Panel):
col = split.column(align=True)
#col.prop(tex, "crop_rectangle")
- col.label(text="Crop Minimum:")
+ col.label(text=_("Crop Minimum:"))
col.prop(tex, "crop_min_x", text="X")
col.prop(tex, "crop_min_y", text="Y")
col = split.column(align=True)
- col.label(text="Crop Maximum:")
+ col.label(text=_("Crop Maximum:"))
col.prop(tex, "crop_max_x", text="X")
col.prop(tex, "crop_max_y", text="Y")
@@ -517,9 +518,9 @@ class TEXTURE_PT_envmap(TextureTypePanel, Panel):
col = split.column(align=True)
- col.label(text="Clipping:")
- col.prop(env, "clip_start", text="Start")
- col.prop(env, "clip_end", text="End")
+ col.label(text=_("Clipping:"))
+ col.prop(env, "clip_start", text=_("Start"))
+ col.prop(env, "clip_end", text=_("End"))
class TEXTURE_PT_envmap_sampling(TextureTypePanel, Panel):
@@ -551,7 +552,7 @@ class TEXTURE_PT_musgrave(TextureTypePanel, Panel):
split = layout.split()
col = split.column()
- col.prop(tex, "dimension_max", text="Dimension")
+ col.prop(tex, "dimension_max", text=_("Dimension"))
col.prop(tex, "lacunarity")
col.prop(tex, "octaves")
@@ -560,16 +561,16 @@ class TEXTURE_PT_musgrave(TextureTypePanel, Panel):
if musgrave_type in {'HETERO_TERRAIN', 'RIDGED_MULTIFRACTAL', 'HYBRID_MULTIFRACTAL'}:
col.prop(tex, "offset")
if musgrave_type in {'MULTIFRACTAL', 'RIDGED_MULTIFRACTAL', 'HYBRID_MULTIFRACTAL'}:
- col.prop(tex, "noise_intensity", text="Intensity")
+ col.prop(tex, "noise_intensity", text=_("Intensity"))
if musgrave_type in {'RIDGED_MULTIFRACTAL', 'HYBRID_MULTIFRACTAL'}:
col.prop(tex, "gain")
- layout.label(text="Noise:")
+ layout.label(text=_("Noise:"))
- layout.prop(tex, "noise_basis", text="Basis")
+ layout.prop(tex, "noise_basis", text=_("Basis"))
row = layout.row()
- row.prop(tex, "noise_scale", text="Size")
+ row.prop(tex, "noise_scale", text=_("Size"))
row.prop(tex, "nabla")
@@ -586,26 +587,26 @@ class TEXTURE_PT_voronoi(TextureTypePanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Distance Metric:")
+ col.label(text=_("Distance Metric:"))
col.prop(tex, "distance_metric", text="")
sub = col.column()
sub.active = tex.distance_metric == 'MINKOVSKY'
- sub.prop(tex, "minkovsky_exponent", text="Exponent")
- col.label(text="Coloring:")
+ sub.prop(tex, "minkovsky_exponent", text=_("Exponent"))
+ col.label(text=_("Coloring:"))
col.prop(tex, "color_mode", text="")
- col.prop(tex, "noise_intensity", text="Intensity")
+ col.prop(tex, "noise_intensity", text=_("Intensity"))
col = split.column()
sub = col.column(align=True)
- sub.label(text="Feature Weights:")
+ sub.label(text=_("Feature Weights:"))
sub.prop(tex, "weight_1", text="1", slider=True)
sub.prop(tex, "weight_2", text="2", slider=True)
sub.prop(tex, "weight_3", text="3", slider=True)
sub.prop(tex, "weight_4", text="4", slider=True)
- layout.label(text="Noise:")
+ layout.label(text=_("Noise:"))
row = layout.row()
- row.prop(tex, "noise_scale", text="Size")
+ row.prop(tex, "noise_scale", text=_("Size"))
row.prop(tex, "nabla")
@@ -620,13 +621,13 @@ class TEXTURE_PT_distortednoise(TextureTypePanel, Panel):
tex = context.texture
layout.prop(tex, "noise_distortion")
- layout.prop(tex, "noise_basis", text="Basis")
+ layout.prop(tex, "noise_basis", text=_("Basis"))
split = layout.split()
col = split.column()
- col.prop(tex, "distortion", text="Distortion")
- col.prop(tex, "noise_scale", text="Size")
+ col.prop(tex, "distortion", text=_("Distortion"))
+ col.prop(tex, "noise_scale", text=_("Size"))
split.prop(tex, "nabla")
@@ -693,26 +694,26 @@ class TEXTURE_PT_pointdensity(TextureButtonsPanel, Panel):
col = split.column()
if pd.point_source == 'PARTICLE_SYSTEM':
- col.label(text="Object:")
+ col.label(text=_("Object:"))
col.prop(pd, "object", text="")
sub = col.column()
sub.enabled = bool(pd.object)
if pd.object:
- sub.label(text="System:")
+ sub.label(text=_("System:"))
sub.prop_search(pd, "particle_system", pd.object, "particle_systems", text="")
- sub.label(text="Cache:")
+ sub.label(text=_("Cache:"))
sub.prop(pd, "particle_cache_space", text="")
else:
- col.label(text="Object:")
+ col.label(text=_("Object:"))
col.prop(pd, "object", text="")
- col.label(text="Cache:")
+ col.label(text=_("Cache:"))
col.prop(pd, "vertex_cache_space", text="")
col.separator()
if pd.point_source == 'PARTICLE_SYSTEM':
- col.label(text="Color Source:")
+ col.label(text=_("Color Source:"))
col.prop(pd, "color_source", text="")
if pd.color_source in {'PARTICLE_SPEED', 'PARTICLE_VELOCITY'}:
col.prop(pd, "speed_scale")
@@ -722,7 +723,7 @@ class TEXTURE_PT_pointdensity(TextureButtonsPanel, Panel):
col = split.column()
col.label()
col.prop(pd, "radius")
- col.label(text="Falloff:")
+ col.label(text=_("Falloff:"))
col.prop(pd, "falloff", text="")
if pd.falloff == 'SOFT':
col.prop(pd, "falloff_soft")
@@ -733,7 +734,7 @@ class TEXTURE_PT_pointdensity(TextureButtonsPanel, Panel):
if pd.use_falloff_curve:
col = layout.column()
- col.label(text="Falloff Curve")
+ col.label(text=_("Falloff Curve"))
col.template_curve_mapping(pd, "falloff_curve", brush=False)
@@ -762,9 +763,9 @@ class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Influence:")
+ col.label(text=_("Influence:"))
col.prop(pd, "turbulence_influence", text="")
- col.label(text="Noise Basis:")
+ col.label(text=_("Noise Basis:"))
col.prop(pd, "noise_basis", text="")
col = split.column()
@@ -801,7 +802,7 @@ class TEXTURE_PT_mapping(TextureSlotPanel, Panel):
if not isinstance(idblock, bpy.types.Brush):
split = layout.split(percentage=0.3)
col = split.column()
- col.label(text="Coordinates:")
+ col.label(text=_("Coordinates:"))
col = split.column()
col.prop(tex, "texture_coords", text="")
@@ -810,12 +811,12 @@ class TEXTURE_PT_mapping(TextureSlotPanel, Panel):
ob = context.object
if ob and ob.type == 'MESH':
split = layout.split(percentage=0.3)
- split.label(text="Mesh:")
+ split.label(text=_("Mesh:"))
split.prop(ob.data, "texco_mesh", text="")
"""
elif tex.texture_coords == 'UV':
split = layout.split(percentage=0.3)
- split.label(text="Layer:")
+ split.label(text=_("Layer:"))
ob = context.object
if ob and ob.type == 'MESH':
split.prop_search(tex, "uv_layer", ob.data, "uv_textures", text="")
@@ -824,12 +825,12 @@ class TEXTURE_PT_mapping(TextureSlotPanel, Panel):
elif tex.texture_coords == 'OBJECT':
split = layout.split(percentage=0.3)
- split.label(text="Object:")
+ split.label(text=_("Object:"))
split.prop(tex, "object", text="")
if isinstance(idblock, bpy.types.Brush):
if context.sculpt_object:
- layout.label(text="Brush Mapping:")
+ layout.label(text=_("Brush Mapping:"))
layout.prop(tex, "map_mode", expand=True)
row = layout.row()
@@ -838,7 +839,7 @@ class TEXTURE_PT_mapping(TextureSlotPanel, Panel):
else:
if isinstance(idblock, bpy.types.Material):
split = layout.split(percentage=0.3)
- split.label(text="Projection:")
+ split.label(text=_("Projection:"))
split.prop(tex, "mapping", text="")
split = layout.split()
@@ -900,111 +901,111 @@ class TEXTURE_PT_influence(TextureSlotPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Diffuse:")
- factor_but(col, "use_map_diffuse", "diffuse_factor", "Intensity")
- factor_but(col, "use_map_color_diffuse", "diffuse_color_factor", "Color")
- factor_but(col, "use_map_alpha", "alpha_factor", "Alpha")
- factor_but(col, "use_map_translucency", "translucency_factor", "Translucency")
+ col.label(text=_("Diffuse:"))
+ factor_but(col, "use_map_diffuse", "diffuse_factor", _("Intensity"))
+ factor_but(col, "use_map_color_diffuse", "diffuse_color_factor", _("Color"))
+ factor_but(col, "use_map_alpha", "alpha_factor", _("Alpha"))
+ factor_but(col, "use_map_translucency", "translucency_factor", _("Translucency"))
- col.label(text="Specular:")
- factor_but(col, "use_map_specular", "specular_factor", "Intensity")
- factor_but(col, "use_map_color_spec", "specular_color_factor", "Color")
- factor_but(col, "use_map_hardness", "hardness_factor", "Hardness")
+ col.label(text=_("Specular:"))
+ factor_but(col, "use_map_specular", "specular_factor", _("Intensity"))
+ factor_but(col, "use_map_color_spec", "specular_color_factor", _("Color"))
+ factor_but(col, "use_map_hardness", "hardness_factor", _("Hardness"))
col = split.column()
- col.label(text="Shading:")
- factor_but(col, "use_map_ambient", "ambient_factor", "Ambient")
- factor_but(col, "use_map_emit", "emit_factor", "Emit")
- factor_but(col, "use_map_mirror", "mirror_factor", "Mirror")
- factor_but(col, "use_map_raymir", "raymir_factor", "Ray Mirror")
+ col.label(text=_("Shading:"))
+ factor_but(col, "use_map_ambient", "ambient_factor", _("Ambient"))
+ factor_but(col, "use_map_emit", "emit_factor", _("Emit"))
+ factor_but(col, "use_map_mirror", "mirror_factor", _("Mirror"))
+ factor_but(col, "use_map_raymir", "raymir_factor", _("Ray Mirror"))
- col.label(text="Geometry:")
+ col.label(text=_("Geometry:"))
# XXX replace 'or' when displacement is fixed to not rely on normal influence value.
- sub_tmp = factor_but(col, "use_map_normal", "normal_factor", "Normal")
+ sub_tmp = factor_but(col, "use_map_normal", "normal_factor", _("Normal"))
sub_tmp.active = (tex.use_map_normal or tex.use_map_displacement)
# END XXX
- factor_but(col, "use_map_warp", "warp_factor", "Warp")
- factor_but(col, "use_map_displacement", "displacement_factor", "Displace")
+ factor_but(col, "use_map_warp", "warp_factor", _("Warp"))
+ factor_but(col, "use_map_displacement", "displacement_factor", _("Displace"))
#sub = col.column()
#sub.active = tex.use_map_translucency or tex.map_emit or tex.map_alpha or tex.map_raymir or tex.map_hardness or tex.map_ambient or tex.map_specularity or tex.map_reflection or tex.map_mirror
- #sub.prop(tex, "default_value", text="Amount", slider=True)
+ #sub.prop(tex, "default_value", text=_("Amount"), slider=True)
elif idblock.type == 'HALO':
- layout.label(text="Halo:")
+ layout.label(text=_("Halo:"))
split = layout.split()
col = split.column()
- factor_but(col, "use_map_color_diffuse", "diffuse_color_factor", "Color")
- factor_but(col, "use_map_alpha", "alpha_factor", "Alpha")
+ factor_but(col, "use_map_color_diffuse", "diffuse_color_factor", _("Color"))
+ factor_but(col, "use_map_alpha", "alpha_factor", _("Alpha"))
col = split.column()
- factor_but(col, "use_map_raymir", "raymir_factor", "Size")
- factor_but(col, "use_map_hardness", "hardness_factor", "Hardness")
- factor_but(col, "use_map_translucency", "translucency_factor", "Add")
+ factor_but(col, "use_map_raymir", "raymir_factor", _("Size"))
+ factor_but(col, "use_map_hardness", "hardness_factor", _("Hardness"))
+ factor_but(col, "use_map_translucency", "translucency_factor", _("Add"))
elif idblock.type == 'VOLUME':
split = layout.split()
col = split.column()
- factor_but(col, "use_map_density", "density_factor", "Density")
- factor_but(col, "use_map_emission", "emission_factor", "Emission")
- factor_but(col, "use_map_scatter", "scattering_factor", "Scattering")
- factor_but(col, "use_map_reflect", "reflection_factor", "Reflection")
+ factor_but(col, "use_map_density", "density_factor", _("Density"))
+ factor_but(col, "use_map_emission", "emission_factor", _("Emission"))
+ factor_but(col, "use_map_scatter", "scattering_factor", _("Scattering"))
+ factor_but(col, "use_map_reflect", "reflection_factor", _("Reflection"))
col = split.column()
col.label(text=" ")
- factor_but(col, "use_map_color_emission", "emission_color_factor", "Emission Color")
- factor_but(col, "use_map_color_transmission", "transmission_color_factor", "Transmission Color")
- factor_but(col, "use_map_color_reflection", "reflection_color_factor", "Reflection Color")
+ factor_but(col, "use_map_color_emission", "emission_color_factor", _("Emission Color"))
+ factor_but(col, "use_map_color_transmission", "transmission_color_factor", _("Transmission Color"))
+ factor_but(col, "use_map_color_reflection", "reflection_color_factor", _("Reflection Color"))
elif isinstance(idblock, bpy.types.Lamp):
split = layout.split()
col = split.column()
- factor_but(col, "use_map_color", "color_factor", "Color")
+ factor_but(col, "use_map_color", "color_factor", _("Color"))
col = split.column()
- factor_but(col, "use_map_shadow", "shadow_factor", "Shadow")
+ factor_but(col, "use_map_shadow", "shadow_factor", _("Shadow"))
elif isinstance(idblock, bpy.types.World):
split = layout.split()
col = split.column()
- factor_but(col, "use_map_blend", "blend_factor", "Blend")
- factor_but(col, "use_map_horizon", "horizon_factor", "Horizon")
+ factor_but(col, "use_map_blend", "blend_factor", _("Blend"))
+ factor_but(col, "use_map_horizon", "horizon_factor", _("Horizon"))
col = split.column()
- factor_but(col, "use_map_zenith_up", "zenith_up_factor", "Zenith Up")
- factor_but(col, "use_map_zenith_down", "zenith_down_factor", "Zenith Down")
+ factor_but(col, "use_map_zenith_up", "zenith_up_factor", _("Zenith Up"))
+ factor_but(col, "use_map_zenith_down", "zenith_down_factor", _("Zenith Down"))
elif isinstance(idblock, bpy.types.ParticleSettings):
split = layout.split()
col = split.column()
- col.label(text="General:")
- factor_but(col, "use_map_time", "time_factor", "Time")
- factor_but(col, "use_map_life", "life_factor", "Lifetime")
- factor_but(col, "use_map_density", "density_factor", "Density")
- factor_but(col, "use_map_size", "size_factor", "Size")
+ col.label(text=_("General:"))
+ factor_but(col, "use_map_time", "time_factor", _("Time"))
+ factor_but(col, "use_map_life", "life_factor", _("Lifetime"))
+ factor_but(col, "use_map_density", "density_factor", _("Density"))
+ factor_but(col, "use_map_size", "size_factor", _("Size"))
col = split.column()
- col.label(text="Physics:")
- factor_but(col, "use_map_velocity", "velocity_factor", "Velocity")
- factor_but(col, "use_map_damp", "damp_factor", "Damp")
- factor_but(col, "use_map_gravity", "gravity_factor", "Gravity")
- factor_but(col, "use_map_field", "field_factor", "Force Fields")
+ col.label(text=_("Physics:"))
+ factor_but(col, "use_map_velocity", "velocity_factor", _("Velocity"))
+ factor_but(col, "use_map_damp", "damp_factor", _("Damp"))
+ factor_but(col, "use_map_gravity", "gravity_factor", _("Gravity"))
+ factor_but(col, "use_map_field", "field_factor", _("Force Fields"))
- layout.label(text="Hair:")
+ layout.label(text=_("Hair:"))
split = layout.split()
col = split.column()
- factor_but(col, "use_map_length", "length_factor", "Length")
- factor_but(col, "use_map_clump", "clump_factor", "Clump")
+ factor_but(col, "use_map_length", "length_factor", _("Length"))
+ factor_but(col, "use_map_clump", "clump_factor", _("Clump"))
col = split.column()
- factor_but(col, "use_map_kink", "kink_factor", "Kink")
- factor_but(col, "use_map_rough", "rough_factor", "Rough")
+ factor_but(col, "use_map_kink", "kink_factor", _("Kink"))
+ factor_but(col, "use_map_rough", "rough_factor", _("Rough"))
layout.separator()
@@ -1012,32 +1013,32 @@ class TEXTURE_PT_influence(TextureSlotPanel, Panel):
split = layout.split()
col = split.column()
- col.prop(tex, "blend_type", text="Blend")
+ col.prop(tex, "blend_type", text=_("Blend"))
col.prop(tex, "use_rgb_to_intensity")
# color is used on grayscale textures even when use_rgb_to_intensity is disabled.
col.prop(tex, "color", text="")
col = split.column()
- col.prop(tex, "invert", text="Negative")
+ col.prop(tex, "invert", text=_("Negative"))
col.prop(tex, "use_stencil")
if isinstance(idblock, bpy.types.Material) or isinstance(idblock, bpy.types.World):
- col.prop(tex, "default_value", text="DVar", slider=True)
+ col.prop(tex, "default_value", text=_("DVar"), slider=True)
if isinstance(idblock, bpy.types.Material):
- layout.label(text="Bump Mapping:")
+ layout.label(text=_("Bump Mapping:"))
# only show bump settings if activated but not for normalmap images
row = layout.row()
sub = row.row()
sub.active = (tex.use_map_normal or tex.use_map_warp) and not (tex.texture.type == 'IMAGE' and (tex.texture.use_normal_map or tex.texture.use_derivative_map))
- sub.prop(tex, "bump_method", text="Method")
+ sub.prop(tex, "bump_method", text=_("Method"))
# the space setting is supported for: derivmaps + bumpmaps (DEFAULT,BEST_QUALITY), not for normalmaps
sub = row.row()
sub.active = (tex.use_map_normal or tex.use_map_warp) and not (tex.texture.type == 'IMAGE' and tex.texture.use_normal_map) and ((tex.bump_method in {'BUMP_DEFAULT', 'BUMP_BEST_QUALITY'}) or (tex.texture.type == 'IMAGE' and tex.texture.use_derivative_map))
- sub.prop(tex, "bump_objectspace", text="Space")
+ sub.prop(tex, "bump_objectspace", text=_("Space"))
class TEXTURE_PT_custom_props(TextureButtonsPanel, PropertyPanel, Panel):
diff --git a/release/scripts/startup/bl_ui/properties_world.py b/release/scripts/startup/bl_ui/properties_world.py
index 71ee03296a0..916667ea400 100644
--- a/release/scripts/startup/bl_ui/properties_world.py
+++ b/release/scripts/startup/bl_ui/properties_world.py
@@ -20,6 +20,7 @@
import bpy
from bpy.types import Panel
from rna_prop_ui import PropertyPanel
+from blf import gettext as _
class WorldButtonsPanel():
@@ -115,12 +116,12 @@ class WORLD_PT_ambient_occlusion(WorldButtonsPanel, Panel):
layout.active = light.use_ambient_occlusion
split = layout.split()
- split.prop(light, "ao_factor", text="Factor")
+ split.prop(light, "ao_factor", text=_("Factor"))
split.prop(light, "ao_blend_type", text="")
class WORLD_PT_environment_lighting(WorldButtonsPanel, Panel):
- bl_label = "Environment Lighting"
+ bl_label = _("Environment Lighting")
COMPAT_ENGINES = {'BLENDER_RENDER'}
def draw_header(self, context):
@@ -134,7 +135,7 @@ class WORLD_PT_environment_lighting(WorldButtonsPanel, Panel):
layout.active = light.use_environment_light
split = layout.split()
- split.prop(light, "environment_energy", text="Energy")
+ split.prop(light, "environment_energy", text=_("Energy"))
split.prop(light, "environment_color", text="")
@@ -153,11 +154,11 @@ class WORLD_PT_indirect_lighting(WorldButtonsPanel, Panel):
layout.active = light.use_indirect_light and light.gather_method == 'APPROXIMATE'
split = layout.split()
- split.prop(light, "indirect_factor", text="Factor")
- split.prop(light, "indirect_bounces", text="Bounces")
+ split.prop(light, "indirect_factor", text=_("Factor"))
+ split.prop(light, "indirect_bounces", text=_("Bounces"))
if light.gather_method == 'RAYTRACE':
- layout.label(text="Only works with Approximate gather method")
+ layout.label(text=_("Only works with Approximate gather method"))
class WORLD_PT_gather(WorldButtonsPanel, Panel):
@@ -175,18 +176,18 @@ class WORLD_PT_gather(WorldButtonsPanel, Panel):
split = layout.split()
col = split.column()
- col.label(text="Attenuation:")
+ col.label(text=_("Attenuation:"))
if light.gather_method == 'RAYTRACE':
col.prop(light, "distance")
col.prop(light, "use_falloff")
sub = col.row()
sub.active = light.use_falloff
- sub.prop(light, "falloff_strength", text="Strength")
+ sub.prop(light, "falloff_strength", text=_("Strength"))
if light.gather_method == 'RAYTRACE':
col = split.column()
- col.label(text="Sampling:")
+ col.label(text=_("Sampling:"))
col.prop(light, "sample_method", text="")
sub = col.column()
@@ -201,9 +202,9 @@ class WORLD_PT_gather(WorldButtonsPanel, Panel):
if light.gather_method == 'APPROXIMATE':
col = split.column()
- col.label(text="Sampling:")
+ col.label(text=_("Sampling:"))
col.prop(light, "passes")
- col.prop(light, "error_threshold", text="Error")
+ col.prop(light, "error_threshold", text=_("Error"))
col.prop(light, "use_cache")
col.prop(light, "correction")
@@ -257,11 +258,11 @@ class WORLD_PT_stars(WorldButtonsPanel, Panel):
col = split.column()
col.prop(world.star_settings, "size")
- col.prop(world.star_settings, "color_random", text="Colors")
+ col.prop(world.star_settings, "color_random", text=_("Colors"))
col = split.column()
- col.prop(world.star_settings, "distance_min", text="Min. Dist")
- col.prop(world.star_settings, "average_separation", text="Separation")
+ col.prop(world.star_settings, "distance_min", text=_("Min. Dist"))
+ col.prop(world.star_settings, "average_separation", text=_("Separation"))
class WORLD_PT_custom_props(WorldButtonsPanel, PropertyPanel, Panel):
diff --git a/release/scripts/startup/bl_ui/space_console.py b/release/scripts/startup/bl_ui/space_console.py
index cbbefa01a3c..bb0cf6eda2c 100644
--- a/release/scripts/startup/bl_ui/space_console.py
+++ b/release/scripts/startup/bl_ui/space_console.py
@@ -20,6 +20,7 @@
import bpy
from bpy.types import Header, Menu, Operator
from bpy.props import StringProperty
+from blf import gettext as _
class CONSOLE_HT_header(Header):
@@ -33,7 +34,7 @@ class CONSOLE_HT_header(Header):
if context.area.show_menus:
layout.menu("CONSOLE_MT_console")
- layout.operator("console.autocomplete", text="Autocomplete")
+ layout.operator("console.autocomplete", text=_("Autocomplete"))
class CONSOLE_MT_console(Menu):
diff --git a/release/scripts/startup/bl_ui/space_dopesheet.py b/release/scripts/startup/bl_ui/space_dopesheet.py
index 90dcc99e6d7..580a4e7f1b6 100644
--- a/release/scripts/startup/bl_ui/space_dopesheet.py
+++ b/release/scripts/startup/bl_ui/space_dopesheet.py
@@ -20,6 +20,7 @@
import bpy
from bpy.types import Header, Menu
+from blf import gettext as _
#######################################
@@ -117,7 +118,7 @@ class DOPESHEET_HT_header(Header):
row.menu("DOPESHEET_MT_gpencil_frame")
layout.prop(st, "mode", text="")
- layout.prop(st.dopesheet, "show_summary", text="Summary")
+ layout.prop(st.dopesheet, "show_summary", text=_("Summary"))
if st.mode == 'DOPESHEET':
dopesheet_filter(layout, context)
@@ -153,9 +154,9 @@ class DOPESHEET_MT_view(Menu):
layout.prop(st, "use_marker_sync")
if st.show_seconds:
- layout.operator("anim.time_toggle", text="Show Frames")
+ layout.operator("anim.time_toggle", text=_("Show Frames"))
else:
- layout.operator("anim.time_toggle", text="Show Seconds")
+ layout.operator("anim.time_toggle", text=_("Show Seconds"))
layout.separator()
layout.operator("anim.previewrange_set")
@@ -180,22 +181,22 @@ class DOPESHEET_MT_select(Menu):
# This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None
layout.operator("action.select_all_toggle")
- layout.operator("action.select_all_toggle", text="Invert Selection").invert = True
+ layout.operator("action.select_all_toggle", text=_("Invert Selection")).invert = True
layout.separator()
layout.operator("action.select_border")
- layout.operator("action.select_border", text="Border Axis Range").axis_range = True
+ layout.operator("action.select_border", text=_("Border Axis Range")).axis_range = True
layout.separator()
- layout.operator("action.select_column", text="Columns on Selected Keys").mode = 'KEYS'
- layout.operator("action.select_column", text="Column on Current Frame").mode = 'CFRA'
+ layout.operator("action.select_column", text=_("Columns on Selected Keys")).mode = 'KEYS'
+ layout.operator("action.select_column", text=_("Column on Current Frame")).mode = 'CFRA'
- layout.operator("action.select_column", text="Columns on Selected Markers").mode = 'MARKERS_COLUMN'
- layout.operator("action.select_column", text="Between Selected Markers").mode = 'MARKERS_BETWEEN'
+ layout.operator("action.select_column", text=_("Columns on Selected Markers")).mode = 'MARKERS_COLUMN'
+ layout.operator("action.select_column", text=_("Between Selected Markers")).mode = 'MARKERS_BETWEEN'
layout.separator()
- layout.operator("action.select_leftright", text="Before Current Frame").mode = 'LEFT'
- layout.operator("action.select_leftright", text="After Current Frame").mode = 'RIGHT'
+ layout.operator("action.select_leftright", text=_("Before Current Frame")).mode = 'LEFT'
+ layout.operator("action.select_leftright", text=_("After Current Frame")).mode = 'RIGHT'
# FIXME: grease pencil mode isn't supported for these yet, so skip for that mode only
if context.space_data.mode != 'GPENCIL':
@@ -217,14 +218,14 @@ class DOPESHEET_MT_marker(Menu):
#layout.operator_context = 'EXEC_REGION_WIN'
- layout.operator("marker.add", "Add Marker")
- layout.operator("marker.duplicate", text="Duplicate Marker")
- layout.operator("marker.delete", text="Delete Marker")
+ layout.operator("marker.add", _("Add Marker"))
+ layout.operator("marker.duplicate", text=_("Duplicate Marker"))
+ layout.operator("marker.delete", text=_("Delete Marker"))
layout.separator()
- layout.operator("marker.rename", text="Rename Marker")
- layout.operator("marker.move", text="Grab/Move Marker")
+ layout.operator("marker.rename", text=_("Rename Marker"))
+ layout.operator("marker.move", text=_("Grab/Move Marker"))
if st.mode in {'ACTION', 'SHAPEKEY'} and st.action:
layout.separator()
@@ -254,14 +255,14 @@ class DOPESHEET_MT_channel(Menu):
layout.separator()
layout.operator("anim.channels_editable_toggle")
- layout.operator_menu_enum("action.extrapolation_type", "type", text="Extrapolation Mode")
+ layout.operator_menu_enum("action.extrapolation_type", "type", text=_("Extrapolation Mode"))
layout.separator()
layout.operator("anim.channels_expand")
layout.operator("anim.channels_collapse")
layout.separator()
- layout.operator_menu_enum("anim.channels_move", "direction", text="Move...")
+ layout.operator_menu_enum("anim.channels_move", "direction", text=_("Move..."))
layout.separator()
layout.operator("anim.channels_fcurves_enable")
@@ -273,10 +274,10 @@ class DOPESHEET_MT_key(Menu):
def draw(self, context):
layout = self.layout
- layout.menu("DOPESHEET_MT_key_transform", text="Transform")
+ layout.menu("DOPESHEET_MT_key_transform", text=_("Transform"))
- layout.operator_menu_enum("action.snap", "type", text="Snap")
- layout.operator_menu_enum("action.mirror", "type", text="Mirror")
+ layout.operator_menu_enum("action.snap", "type", text=_("Snap"))
+ layout.operator_menu_enum("action.mirror", "type", text=_("Mirror"))
layout.separator()
layout.operator("action.keyframe_insert")
@@ -286,9 +287,9 @@ class DOPESHEET_MT_key(Menu):
layout.operator("action.delete")
layout.separator()
- layout.operator_menu_enum("action.keyframe_type", "type", text="Keyframe Type")
- layout.operator_menu_enum("action.handle_type", "type", text="Handle Type")
- layout.operator_menu_enum("action.interpolation_type", "type", text="Interpolation Mode")
+ layout.operator_menu_enum("action.keyframe_type", "type", text=_("Keyframe Type"))
+ layout.operator_menu_enum("action.handle_type", "type", text=_("Handle Type"))
+ layout.operator_menu_enum("action.interpolation_type", "type", text=_("Interpolation Mode"))
layout.separator()
layout.operator("action.clean")
@@ -305,10 +306,10 @@ class DOPESHEET_MT_key_transform(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("transform.transform", text="Grab/Move").mode = 'TIME_TRANSLATE'
- layout.operator("transform.transform", text="Extend").mode = 'TIME_EXTEND'
- layout.operator("transform.transform", text="Slide").mode = 'TIME_SLIDE'
- layout.operator("transform.transform", text="Scale").mode = 'TIME_SCALE'
+ layout.operator("transform.transform", text=_("Grab/Move")).mode = 'TIME_TRANSLATE'
+ layout.operator("transform.transform", text=_("Extend")).mode = 'TIME_EXTEND'
+ layout.operator("transform.transform", text=_("Slide")).mode = 'TIME_SLIDE'
+ layout.operator("transform.transform", text=_("Scale")).mode = 'TIME_SCALE'
#######################################
@@ -347,7 +348,7 @@ class DOPESHEET_MT_gpencil_frame(Menu):
def draw(self, context):
layout = self.layout
- layout.menu("DOPESHEET_MT_key_transform", text="Transform")
+ layout.menu("DOPESHEET_MT_key_transform", text=_("Transform"))
#layout.operator_menu_enum("action.snap", "type", text="Snap")
#layout.operator_menu_enum("action.mirror", "type", text="Mirror")
diff --git a/release/scripts/startup/bl_ui/space_graph.py b/release/scripts/startup/bl_ui/space_graph.py
index d4b8c415a7f..fd50d60bd45 100644
--- a/release/scripts/startup/bl_ui/space_graph.py
+++ b/release/scripts/startup/bl_ui/space_graph.py
@@ -20,6 +20,7 @@
import bpy
from bpy.types import Header, Menu
+from blf import gettext as _
class GRAPH_HT_header(Header):
@@ -82,9 +83,9 @@ class GRAPH_MT_view(Menu):
layout.separator()
if st.show_handles:
- layout.operator("graph.handles_view_toggle", icon='CHECKBOX_HLT', text="Show All Handles")
+ layout.operator("graph.handles_view_toggle", icon='CHECKBOX_HLT', text=_("Show All Handles"))
else:
- layout.operator("graph.handles_view_toggle", icon='CHECKBOX_DEHLT', text="Show All Handles")
+ layout.operator("graph.handles_view_toggle", icon='CHECKBOX_DEHLT', text=_("Show All Handles"))
layout.prop(st, "use_only_selected_curves_handles")
layout.prop(st, "use_only_selected_keyframe_handles")
layout.operator("anim.time_toggle")
@@ -112,23 +113,23 @@ class GRAPH_MT_select(Menu):
# This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None
layout.operator("graph.select_all_toggle")
- layout.operator("graph.select_all_toggle", text="Invert Selection").invert = True
+ layout.operator("graph.select_all_toggle", text=_("Invert Selection")).invert = True
layout.separator()
layout.operator("graph.select_border")
- layout.operator("graph.select_border", text="Border Axis Range").axis_range = True
- layout.operator("graph.select_border", text="Border (Include Handles)").include_handles = True
+ layout.operator("graph.select_border", text=_("Border Axis Range")).axis_range = True
+ layout.operator("graph.select_border", text=_("Border (Include Handles)")).include_handles = True
layout.separator()
- layout.operator("graph.select_column", text="Columns on Selected Keys").mode = 'KEYS'
- layout.operator("graph.select_column", text="Column on Current Frame").mode = 'CFRA'
+ layout.operator("graph.select_column", text=_("Columns on Selected Keys")).mode = 'KEYS'
+ layout.operator("graph.select_column", text=_("Column on Current Frame")).mode = 'CFRA'
- layout.operator("graph.select_column", text="Columns on Selected Markers").mode = 'MARKERS_COLUMN'
- layout.operator("graph.select_column", text="Between Selected Markers").mode = 'MARKERS_BETWEEN'
+ layout.operator("graph.select_column", text=_("Columns on Selected Markers")).mode = 'MARKERS_COLUMN'
+ layout.operator("graph.select_column", text=_("Between Selected Markers")).mode = 'MARKERS_BETWEEN'
layout.separator()
- layout.operator("graph.select_leftright", text="Before Current Frame").mode = 'LEFT'
- layout.operator("graph.select_leftright", text="After Current Frame").mode = 'RIGHT'
+ layout.operator("graph.select_leftright", text=_("Before Current Frame")).mode = 'LEFT'
+ layout.operator("graph.select_leftright", text=_("After Current Frame")).mode = 'RIGHT'
layout.separator()
layout.operator("graph.select_more")
@@ -146,14 +147,14 @@ class GRAPH_MT_marker(Menu):
#layout.operator_context = 'EXEC_REGION_WIN'
- layout.operator("marker.add", "Add Marker")
- layout.operator("marker.duplicate", text="Duplicate Marker")
- layout.operator("marker.delete", text="Delete Marker")
+ layout.operator("marker.add", _("Add Marker"))
+ layout.operator("marker.duplicate", text=_("Duplicate Marker"))
+ layout.operator("marker.delete", text=_("Delete Marker"))
layout.separator()
- layout.operator("marker.rename", text="Rename Marker")
- layout.operator("marker.move", text="Grab/Move Marker")
+ layout.operator("marker.rename", text=_("Rename Marker"))
+ layout.operator("marker.move", text=_("Grab/Move Marker"))
# TODO: pose markers for action edit mode only?
@@ -176,14 +177,14 @@ class GRAPH_MT_channel(Menu):
layout.separator()
layout.operator("anim.channels_editable_toggle")
layout.operator("anim.channels_visibility_set")
- layout.operator_menu_enum("graph.extrapolation_type", "type", text="Extrapolation Mode")
+ layout.operator_menu_enum("graph.extrapolation_type", "type", text=_("Extrapolation Mode"))
layout.separator()
layout.operator("anim.channels_expand")
layout.operator("anim.channels_collapse")
layout.separator()
- layout.operator_menu_enum("anim.channels_move", "direction", text="Move...")
+ layout.operator_menu_enum("anim.channels_move", "direction", text=_("Move..."))
layout.separator()
layout.operator("anim.channels_fcurves_enable")
@@ -195,10 +196,10 @@ class GRAPH_MT_key(Menu):
def draw(self, context):
layout = self.layout
- layout.menu("GRAPH_MT_key_transform", text="Transform")
+ layout.menu("GRAPH_MT_key_transform", text=_("Transform"))
- layout.operator_menu_enum("graph.snap", "type", text="Snap")
- layout.operator_menu_enum("graph.mirror", "type", text="Mirror")
+ layout.operator_menu_enum("graph.snap", "type", text=_("Snap"))
+ layout.operator_menu_enum("graph.mirror", "type", text=_("Mirror"))
layout.separator()
layout.operator("graph.keyframe_insert")
@@ -210,8 +211,8 @@ class GRAPH_MT_key(Menu):
layout.operator("graph.delete")
layout.separator()
- layout.operator_menu_enum("graph.handle_type", "type", text="Handle Type")
- layout.operator_menu_enum("graph.interpolation_type", "type", text="Interpolation Mode")
+ layout.operator_menu_enum("graph.handle_type", "type", text=_("Handle Type"))
+ layout.operator_menu_enum("graph.interpolation_type", "type", text=_("Interpolation Mode"))
layout.separator()
layout.operator("graph.clean")
@@ -224,7 +225,7 @@ class GRAPH_MT_key(Menu):
layout.operator("graph.paste")
layout.separator()
- layout.operator("graph.euler_filter", text="Discontinuity (Euler) Filter")
+ layout.operator("graph.euler_filter", text=_("Discontinuity (Euler) Filter"))
class GRAPH_MT_key_transform(Menu):
@@ -233,10 +234,10 @@ class GRAPH_MT_key_transform(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("transform.translate", text="Grab/Move")
- layout.operator("transform.transform", text="Extend").mode = 'TIME_EXTEND'
- layout.operator("transform.rotate", text="Rotate")
- layout.operator("transform.resize", text="Scale")
+ layout.operator("transform.translate", text=_("Grab/Move"))
+ layout.operator("transform.transform", text=_("Extend")).mode = 'TIME_EXTEND'
+ layout.operator("transform.rotate", text=_("Rotate"))
+ layout.operator("transform.resize", text=_("Scale"))
if __name__ == "__main__": # only for live edit.
bpy.utils.register_module(__name__)
diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py
index 97b5d8457e0..f5be25d14f6 100644
--- a/release/scripts/startup/bl_ui/space_image.py
+++ b/release/scripts/startup/bl_ui/space_image.py
@@ -19,6 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.types import Header, Menu, Panel
+from blf import gettext as _
class BrushButtonsPanel():
@@ -64,7 +65,7 @@ class IMAGE_MT_view(Menu):
ratios = [[1, 8], [1, 4], [1, 2], [1, 1], [2, 1], [4, 1], [8, 1]]
for a, b in ratios:
- text = "Zoom %d:%d" % (a, b)
+ text = _("Zoom") + " %d:%d" % (a, b)
layout.operator("image.view_zoom_ratio", text=text).ratio = a / b
layout.separator()
@@ -92,7 +93,7 @@ class IMAGE_MT_select(Menu):
layout.separator()
layout.operator("uv.select_all")
- layout.operator("uv.select_all", text="Inverse").action = 'INVERT'
+ layout.operator("uv.select_all", text=_("Inverse")).action = 'INVERT'
layout.operator("uv.unlink_selected")
layout.separator()
@@ -122,12 +123,12 @@ class IMAGE_MT_image(Menu):
layout.operator("image.save")
layout.operator("image.save_as")
- layout.operator("image.save_as", text="Save a Copy").copy = True
+ layout.operator("image.save_as", text=_("Save a Copy")).copy = True
if ima.source == 'SEQUENCE':
layout.operator("image.save_sequence")
- layout.operator("image.external_edit", "Edit Externally")
+ layout.operator("image.external_edit", _("Edit Externally"))
layout.separator()
@@ -145,7 +146,7 @@ class IMAGE_MT_image(Menu):
# this could be done in operator poll too
if ima.is_dirty:
if ima.source in {'FILE', 'GENERATED'} and ima.type != 'MULTILAYER':
- layout.operator("image.pack", text="Pack As PNG").as_png = True
+ layout.operator("image.pack", text=_("Pack As PNG")).as_png = True
layout.separator()
@@ -158,23 +159,23 @@ class IMAGE_MT_image_invert(Menu):
def draw(self, context):
layout = self.layout
- op = layout.operator("image.invert", text="Invert Image Colors")
+ op = layout.operator("image.invert", text=_("Invert Image Colors"))
op.invert_r = True
op.invert_g = True
op.invert_b = True
layout.separator()
- op = layout.operator("image.invert", text="Invert Red Channel")
+ op = layout.operator("image.invert", text=_("Invert Red Channel"))
op.invert_r = True
- op = layout.operator("image.invert", text="Invert Green Channel")
+ op = layout.operator("image.invert", text=_("Invert Green Channel"))
op.invert_g = True
- op = layout.operator("image.invert", text="Invert Blue Channel")
+ op = layout.operator("image.invert", text=_("Invert Blue Channel"))
op.invert_b = True
- op = layout.operator("image.invert", text="Invert Alpha Channel")
+ op = layout.operator("image.invert", text=_("Invert Alpha Channel"))
op.invert_a = True
@@ -185,8 +186,8 @@ class IMAGE_MT_uvs_showhide(Menu):
layout = self.layout
layout.operator("uv.reveal")
- layout.operator("uv.hide", text="Hide Selected")
- layout.operator("uv.hide", text="Hide Unselected").unselected = True
+ layout.operator("uv.hide", text=_("Hide Selected"))
+ layout.operator("uv.hide", text=_("Hide Unselected")).unselected = True
class IMAGE_MT_uvs_transform(Menu):
@@ -211,14 +212,14 @@ class IMAGE_MT_uvs_snap(Menu):
layout = self.layout
layout.operator_context = 'EXEC_REGION_WIN'
- layout.operator("uv.snap_selected", text="Selected to Pixels").target = 'PIXELS'
- layout.operator("uv.snap_selected", text="Selected to Cursor").target = 'CURSOR'
- layout.operator("uv.snap_selected", text="Selected to Adjacent Unselected").target = 'ADJACENT_UNSELECTED'
+ layout.operator("uv.snap_selected", text=_("Selected to Pixels")).target = 'PIXELS'
+ layout.operator("uv.snap_selected", text=_("Selected to Cursor")).target = 'CURSOR'
+ layout.operator("uv.snap_selected", text=_("Selected to Adjacent Unselected")).target = 'ADJACENT_UNSELECTED'
layout.separator()
- layout.operator("uv.snap_cursor", text="Cursor to Pixels").target = 'PIXELS'
- layout.operator("uv.snap_cursor", text="Cursor to Selected").target = 'SELECTED'
+ layout.operator("uv.snap_cursor", text=_("Cursor to Pixels")).target = 'PIXELS'
+ layout.operator("uv.snap_cursor", text=_("Cursor to Selected")).target = 'SELECTED'
class IMAGE_MT_uvs_mirror(Menu):
@@ -228,8 +229,8 @@ class IMAGE_MT_uvs_mirror(Menu):
layout = self.layout
layout.operator_context = 'EXEC_REGION_WIN'
- layout.operator("transform.mirror", text="X Axis").constraint_axis[0] = True
- layout.operator("transform.mirror", text="Y Axis").constraint_axis[1] = True
+ layout.operator("transform.mirror", text=_("X Axis")).constraint_axis[0] = True
+ layout.operator("transform.mirror", text=_("Y Axis")).constraint_axis[1] = True
class IMAGE_MT_uvs_weldalign(Menu):
@@ -259,7 +260,7 @@ class IMAGE_MT_uvs(Menu):
layout.prop(uv, "use_live_unwrap")
layout.operator("uv.unwrap")
- layout.operator("uv.pin", text="Unpin").clear = True
+ layout.operator("uv.pin", text=_("Unpin")).clear = True
layout.operator("uv.pin")
layout.separator()
@@ -299,32 +300,32 @@ class IMAGE_MT_uvs_select_mode(Menu):
# do smart things depending on whether uv_select_sync is on
if toolsettings.use_uv_select_sync:
- prop = layout.operator("wm.context_set_value", text="Vertex", icon='VERTEXSEL')
+ prop = layout.operator("wm.context_set_value", text=_("Vertex"), icon='VERTEXSEL')
prop.value = "(True, False, False)"
prop.data_path = "tool_settings.mesh_select_mode"
- prop = layout.operator("wm.context_set_value", text="Edge", icon='EDGESEL')
+ prop = layout.operator("wm.context_set_value", text=_("Edge"), icon='EDGESEL')
prop.value = "(False, True, False)"
prop.data_path = "tool_settings.mesh_select_mode"
- prop = layout.operator("wm.context_set_value", text="Face", icon='FACESEL')
+ prop = layout.operator("wm.context_set_value", text=_("Face"), icon='FACESEL')
prop.value = "(False, False, True)"
prop.data_path = "tool_settings.mesh_select_mode"
else:
- prop = layout.operator("wm.context_set_string", text="Vertex", icon='UV_VERTEXSEL')
+ prop = layout.operator("wm.context_set_string", text=_("Vertex"), icon='UV_VERTEXSEL')
prop.value = "VERTEX"
prop.data_path = "tool_settings.uv_select_mode"
- prop = layout.operator("wm.context_set_string", text="Edge", icon='UV_EDGESEL')
+ prop = layout.operator("wm.context_set_string", text=_("Edge"), icon='UV_EDGESEL')
prop.value = "EDGE"
prop.data_path = "tool_settings.uv_select_mode"
- prop = layout.operator("wm.context_set_string", text="Face", icon='UV_FACESEL')
+ prop = layout.operator("wm.context_set_string", text=_("Face"), icon='UV_FACESEL')
prop.value = "FACE"
prop.data_path = "tool_settings.uv_select_mode"
- prop = layout.operator("wm.context_set_string", text="Island", icon='UV_ISLANDSEL')
+ prop = layout.operator("wm.context_set_string", text=_("Island"), icon='UV_ISLANDSEL')
prop.value = "ISLAND"
prop.data_path = "tool_settings.uv_select_mode"
@@ -356,9 +357,9 @@ class IMAGE_HT_header(Header):
sub.menu("IMAGE_MT_select")
if ima and ima.is_dirty:
- sub.menu("IMAGE_MT_image", text="Image*")
+ sub.menu("IMAGE_MT_image", text=_("Image*"))
else:
- sub.menu("IMAGE_MT_image", text="Image")
+ sub.menu("IMAGE_MT_image", text=_("Image"))
if show_uvedit:
sub.menu("IMAGE_MT_uvs")
@@ -596,22 +597,22 @@ class IMAGE_PT_view_properties(Panel):
col = split.column()
if ima:
- col.prop(ima, "display_aspect", text="Aspect Ratio")
+ col.prop(ima, "display_aspect", text=_("Aspect Ratio"))
col = split.column()
- col.label(text="Coordinates:")
- col.prop(sima, "show_repeat", text="Repeat")
+ col.label(text=_("Coordinates:"))
+ col.prop(sima, "show_repeat", text=_("Repeat"))
if show_uvedit:
- col.prop(uvedit, "show_normalized_coords", text="Normalized")
+ col.prop(uvedit, "show_normalized_coords", text=_("Normalized"))
elif show_uvedit:
- col.label(text="Coordinates:")
- col.prop(uvedit, "show_normalized_coords", text="Normalized")
+ col.label(text=_("Coordinates:"))
+ col.prop(uvedit, "show_normalized_coords", text=_("Normalized"))
if show_uvedit:
col = layout.column()
- col.label("Cursor Location:")
+ col.label(_("Cursor Location:"))
col.row().prop(uvedit, "cursor_location", text="")
col.separator()
@@ -623,11 +624,11 @@ class IMAGE_PT_view_properties(Panel):
col = split.column()
col.prop(uvedit, "show_faces")
- col.prop(uvedit, "show_smooth_edges", text="Smooth")
- col.prop(uvedit, "show_modified_edges", text="Modified")
+ col.prop(uvedit, "show_smooth_edges", text=_("Smooth"))
+ col.prop(uvedit, "show_modified_edges", text=_("Modified"))
col = split.column()
- col.prop(uvedit, "show_stretch", text="Stretch")
+ col.prop(uvedit, "show_stretch", text=_("Stretch"))
sub = col.column()
sub.active = uvedit.show_stretch
sub.row().prop(uvedit, "draw_stretch_type", expand=True)
@@ -669,12 +670,12 @@ class IMAGE_PT_paint(Panel):
row.prop(brush, "jitter", slider=True)
row.prop(brush, "use_pressure_jitter", toggle=True, text="")
- col.prop(brush, "blend", text="Blend")
+ col.prop(brush, "blend", text=_("Blend"))
if brush.image_tool == 'CLONE':
col.separator()
- col.prop(brush, "clone_image", text="Image")
- col.prop(brush, "clone_alpha", text="Alpha")
+ col.prop(brush, "clone_image", text=_("Image"))
+ col.prop(brush, "clone_alpha", text=_("Alpha"))
class IMAGE_PT_tools_brush_texture(BrushButtonsPanel, Panel):
@@ -728,7 +729,7 @@ class IMAGE_PT_paint_stroke(BrushButtonsPanel, Panel):
layout.prop(brush, "use_space")
row = layout.row(align=True)
row.active = brush.use_space
- row.prop(brush, "spacing", text="Distance", slider=True)
+ row.prop(brush, "spacing", text=_("Distance"), slider=True)
row.prop(brush, "use_pressure_spacing", toggle=True, text="")
layout.prop(brush, "use_wrap")
diff --git a/release/scripts/startup/bl_ui/space_info.py b/release/scripts/startup/bl_ui/space_info.py
index 7f5a5f231cf..3e6abaa8ea3 100644
--- a/release/scripts/startup/bl_ui/space_info.py
+++ b/release/scripts/startup/bl_ui/space_info.py
@@ -19,6 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.types import Header, Menu, Operator
+from blf import gettext as _
class INFO_HT_header(Header):
@@ -45,7 +46,7 @@ class INFO_HT_header(Header):
sub.menu("INFO_MT_help")
if window.screen.show_fullscreen:
- layout.operator("screen.back_to_previous", icon='SCREEN_BACK', text="Back to Previous")
+ layout.operator("screen.back_to_previous", icon='SCREEN_BACK', text=_("Back to Previous"))
layout.separator()
else:
layout.template_ID(context.window, "screen", new="screen.new", unlink="screen.delete")
@@ -73,11 +74,11 @@ class INFO_HT_header(Header):
"""
sinfo = context.space_data
row = layout.row(align=True)
- row.prop(sinfo, "show_report_debug", text="Debug")
- row.prop(sinfo, "show_report_info", text="Info")
- row.prop(sinfo, "show_report_operator", text="Operators")
- row.prop(sinfo, "show_report_warning", text="Warnings")
- row.prop(sinfo, "show_report_error", text="Errors")
+ row.prop(sinfo, "show_report_debug", text=_("Debug"))
+ row.prop(sinfo, "show_report_info", text=_("Info"))
+ row.prop(sinfo, "show_report_operator", text=_("Operators"))
+ row.prop(sinfo, "show_report_warning", text=_("Warnings"))
+ row.prop(sinfo, "show_report_error", text=_("Errors"))
row = layout.row()
row.enabled = sinfo.show_report_operator
@@ -106,25 +107,25 @@ class INFO_MT_file(Menu):
layout = self.layout
layout.operator_context = 'EXEC_AREA'
- layout.operator("wm.read_homefile", text="New", icon='NEW')
+ layout.operator("wm.read_homefile", text=_("New"), icon='NEW')
layout.operator_context = 'INVOKE_AREA'
- layout.operator("wm.open_mainfile", text="Open...", icon='FILE_FOLDER')
+ layout.operator("wm.open_mainfile", text=_("Open..."), icon='FILE_FOLDER')
layout.menu("INFO_MT_file_open_recent")
layout.operator("wm.recover_last_session", icon='RECOVER_LAST')
- layout.operator("wm.recover_auto_save", text="Recover Auto Save...")
+ layout.operator("wm.recover_auto_save", text=_("Recover Auto Save..."))
layout.separator()
layout.operator_context = 'INVOKE_AREA'
- layout.operator("wm.save_mainfile", text="Save", icon='FILE_TICK').check_existing = False
+ layout.operator("wm.save_mainfile", text=_("Save"), icon='FILE_TICK').check_existing = False
layout.operator_context = 'INVOKE_AREA'
- layout.operator("wm.save_as_mainfile", text="Save As...")
+ layout.operator("wm.save_as_mainfile", text=_("Save As..."))
layout.operator_context = 'INVOKE_AREA'
- layout.operator("wm.save_as_mainfile", text="Save Copy...").copy = True
+ layout.operator("wm.save_as_mainfile", text=_("Save Copy...")).copy = True
layout.separator()
- layout.operator("screen.userpref_show", text="User Preferences...", icon='PREFERENCES')
+ layout.operator("screen.userpref_show", text=_("User Preferences..."), icon='PREFERENCES')
layout.operator_context = 'EXEC_AREA'
layout.operator("wm.save_homefile")
@@ -133,8 +134,8 @@ class INFO_MT_file(Menu):
layout.separator()
layout.operator_context = 'INVOKE_AREA'
- layout.operator("wm.link_append", text="Link")
- props = layout.operator("wm.link_append", text="Append")
+ layout.operator("wm.link_append", text=_("Link"))
+ props = layout.operator("wm.link_append", text=_("Append"))
props.link = False
props.instance_groups = False
@@ -150,7 +151,7 @@ class INFO_MT_file(Menu):
layout.separator()
layout.operator_context = 'EXEC_AREA'
- layout.operator("wm.quit_blender", text="Quit", icon='QUIT')
+ layout.operator("wm.quit_blender", text=_("Quit"), icon='QUIT')
class INFO_MT_file_import(Menu):
@@ -177,8 +178,8 @@ class INFO_MT_file_external_data(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("file.pack_all", text="Pack into .blend file")
- layout.operator("file.unpack_all", text="Unpack into Files")
+ layout.operator("file.pack_all", text=_("Pack into .blend file"))
+ layout.operator("file.unpack_all", text=_("Unpack into Files"))
layout.separator()
@@ -196,17 +197,17 @@ class INFO_MT_mesh_add(Menu):
layout = self.layout
layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("mesh.primitive_plane_add", icon='MESH_PLANE', text="Plane")
- layout.operator("mesh.primitive_cube_add", icon='MESH_CUBE', text="Cube")
- layout.operator("mesh.primitive_circle_add", icon='MESH_CIRCLE', text="Circle")
- layout.operator("mesh.primitive_uv_sphere_add", icon='MESH_UVSPHERE', text="UV Sphere")
- layout.operator("mesh.primitive_ico_sphere_add", icon='MESH_ICOSPHERE', text="Icosphere")
- layout.operator("mesh.primitive_cylinder_add", icon='MESH_CYLINDER', text="Cylinder")
- layout.operator("mesh.primitive_cone_add", icon='MESH_CONE', text="Cone")
+ layout.operator("mesh.primitive_plane_add", icon='MESH_PLANE', text=_("Plane"))
+ layout.operator("mesh.primitive_cube_add", icon='MESH_CUBE', text=_("Cube"))
+ layout.operator("mesh.primitive_circle_add", icon='MESH_CIRCLE', text=_("Circle"))
+ layout.operator("mesh.primitive_uv_sphere_add", icon='MESH_UVSPHERE', text=_("UV Sphere"))
+ layout.operator("mesh.primitive_ico_sphere_add", icon='MESH_ICOSPHERE', text=_("Icosphere"))
+ layout.operator("mesh.primitive_cylinder_add", icon='MESH_CYLINDER', text=_("Cylinder"))
+ layout.operator("mesh.primitive_cone_add", icon='MESH_CONE', text=_("Cone"))
layout.separator()
- layout.operator("mesh.primitive_grid_add", icon='MESH_GRID', text="Grid")
- layout.operator("mesh.primitive_monkey_add", icon='MESH_MONKEY', text="Monkey")
- layout.operator("mesh.primitive_torus_add", text="Torus", icon='MESH_TORUS')
+ layout.operator("mesh.primitive_grid_add", icon='MESH_GRID', text=_("Grid"))
+ layout.operator("mesh.primitive_monkey_add", icon='MESH_MONKEY', text=_("Monkey"))
+ layout.operator("mesh.primitive_torus_add", text=_("Torus"), icon='MESH_TORUS')
class INFO_MT_curve_add(Menu):
@@ -217,11 +218,11 @@ class INFO_MT_curve_add(Menu):
layout = self.layout
layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("curve.primitive_bezier_curve_add", icon='CURVE_BEZCURVE', text="Bezier")
- layout.operator("curve.primitive_bezier_circle_add", icon='CURVE_BEZCIRCLE', text="Circle")
- layout.operator("curve.primitive_nurbs_curve_add", icon='CURVE_NCURVE', text="Nurbs Curve")
- layout.operator("curve.primitive_nurbs_circle_add", icon='CURVE_NCIRCLE', text="Nurbs Circle")
- layout.operator("curve.primitive_nurbs_path_add", icon='CURVE_PATH', text="Path")
+ layout.operator("curve.primitive_bezier_curve_add", icon='CURVE_BEZCURVE', text=_("Bezier"))
+ layout.operator("curve.primitive_bezier_circle_add", icon='CURVE_BEZCIRCLE', text=_("Circle"))
+ layout.operator("curve.primitive_nurbs_curve_add", icon='CURVE_NCURVE', text=_("Nurbs Curve"))
+ layout.operator("curve.primitive_nurbs_circle_add", icon='CURVE_NCIRCLE', text=_("Nurbs Circle"))
+ layout.operator("curve.primitive_nurbs_path_add", icon='CURVE_PATH', text=_("Path"))
class INFO_MT_edit_curve_add(Menu):
@@ -248,12 +249,12 @@ class INFO_MT_surface_add(Menu):
layout = self.layout
layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("surface.primitive_nurbs_surface_curve_add", icon='SURFACE_NCURVE', text="NURBS Curve")
- layout.operator("surface.primitive_nurbs_surface_circle_add", icon='SURFACE_NCIRCLE', text="NURBS Circle")
- layout.operator("surface.primitive_nurbs_surface_surface_add", icon='SURFACE_NSURFACE', text="NURBS Surface")
- layout.operator("surface.primitive_nurbs_surface_cylinder_add", icon='SURFACE_NCYLINDER', text="NURBS Cylinder")
- layout.operator("surface.primitive_nurbs_surface_sphere_add", icon='SURFACE_NSPHERE', text="NURBS Sphere")
- layout.operator("surface.primitive_nurbs_surface_torus_add", icon='SURFACE_NTORUS', text="NURBS Torus")
+ layout.operator("surface.primitive_nurbs_surface_curve_add", icon='SURFACE_NCURVE', text=_("NURBS Curve"))
+ layout.operator("surface.primitive_nurbs_surface_circle_add", icon='SURFACE_NCIRCLE', text=_("NURBS Circle"))
+ layout.operator("surface.primitive_nurbs_surface_surface_add", icon='SURFACE_NSURFACE', text=_("NURBS Surface"))
+ layout.operator("surface.primitive_nurbs_surface_cylinder_add", icon='SURFACE_NCYLINDER', text=_("NURBS Cylinder"))
+ layout.operator("surface.primitive_nurbs_surface_sphere_add", icon='SURFACE_NSPHERE', text=_("NURBS Sphere"))
+ layout.operator("surface.primitive_nurbs_surface_torus_add", icon='SURFACE_NTORUS', text=_("NURBS Torus"))
class INFO_MT_armature_add(Menu):
@@ -264,7 +265,7 @@ class INFO_MT_armature_add(Menu):
layout = self.layout
layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("object.armature_add", text="Single Bone", icon='BONE_DATA')
+ layout.operator("object.armature_add", text=_("Single Bone"), icon='BONE_DATA')
class INFO_MT_add(Menu):
@@ -275,39 +276,39 @@ class INFO_MT_add(Menu):
layout.operator_context = 'EXEC_SCREEN'
- #layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='OUTLINER_OB_MESH')
+ #layout.operator_menu_enum("object.mesh_add", "type", text=_("Mesh"), icon='OUTLINER_OB_MESH')
layout.menu("INFO_MT_mesh_add", icon='OUTLINER_OB_MESH')
- #layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='OUTLINER_OB_CURVE')
+ #layout.operator_menu_enum("object.curve_add", "type", text=_("Curve"), icon='OUTLINER_OB_CURVE')
layout.menu("INFO_MT_curve_add", icon='OUTLINER_OB_CURVE')
- #layout.operator_menu_enum("object.surface_add", "type", text="Surface", icon='OUTLINER_OB_SURFACE')
+ #layout.operator_menu_enum("object.surface_add", "type", text=_("Surface"), icon='OUTLINER_OB_SURFACE')
layout.menu("INFO_MT_surface_add", icon='OUTLINER_OB_SURFACE')
- layout.operator_menu_enum("object.metaball_add", "type", text="Metaball", icon='OUTLINER_OB_META')
+ layout.operator_menu_enum("object.metaball_add", "type", text=_("Metaball"), icon='OUTLINER_OB_META')
layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("object.text_add", text="Text", icon='OUTLINER_OB_FONT')
+ layout.operator("object.text_add", text=_("Text"), icon='OUTLINER_OB_FONT')
layout.separator()
layout.menu("INFO_MT_armature_add", icon='OUTLINER_OB_ARMATURE')
- layout.operator("object.add", text="Lattice", icon='OUTLINER_OB_LATTICE').type = 'LATTICE'
- layout.operator("object.add", text="Empty", icon='OUTLINER_OB_EMPTY').type = 'EMPTY'
+ layout.operator("object.add", text=_("Lattice"), icon='OUTLINER_OB_LATTICE').type = 'LATTICE'
+ layout.operator("object.add", text=_("Empty"), icon='OUTLINER_OB_EMPTY').type = 'EMPTY'
layout.separator()
- layout.operator("object.speaker_add", text="Speaker", icon='OUTLINER_OB_SPEAKER')
+ layout.operator("object.speaker_add", text=_("Speaker"), icon='OUTLINER_OB_SPEAKER')
layout.separator()
- layout.operator("object.camera_add", text="Camera", icon='OUTLINER_OB_CAMERA')
+ layout.operator("object.camera_add", text=_("Camera"), icon='OUTLINER_OB_CAMERA')
layout.operator_context = 'EXEC_SCREEN'
- layout.operator_menu_enum("object.lamp_add", "type", text="Lamp", icon='OUTLINER_OB_LAMP')
+ layout.operator_menu_enum("object.lamp_add", "type", text=_("Lamp"), icon='OUTLINER_OB_LAMP')
layout.separator()
- layout.operator_menu_enum("object.effector_add", "type", text="Force Field", icon='OUTLINER_OB_EMPTY')
+ layout.operator_menu_enum("object.effector_add", "type", text=_("Force Field"), icon='OUTLINER_OB_EMPTY')
layout.separator()
if(len(bpy.data.groups) > 10):
layout.operator_context = 'INVOKE_DEFAULT'
- layout.operator("object.group_instance_add", text="Group Instance...", icon='OUTLINER_OB_EMPTY')
+ layout.operator("object.group_instance_add", text=_("Group Instance..."), icon='OUTLINER_OB_EMPTY')
else:
- layout.operator_menu_enum("object.group_instance_add", "group", text="Group Instance", icon='OUTLINER_OB_EMPTY')
+ layout.operator_menu_enum("object.group_instance_add", "group", text=_("Group Instance"), icon='OUTLINER_OB_EMPTY')
class INFO_MT_game(Menu):
@@ -337,13 +338,13 @@ class INFO_MT_render(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("render.render", text="Render Image", icon='RENDER_STILL')
- layout.operator("render.render", text="Render Animation", icon='RENDER_ANIMATION').animation = True
+ layout.operator("render.render", text=_("Render Image"), icon='RENDER_STILL')
+ layout.operator("render.render", text=_("Render Animation"), icon='RENDER_ANIMATION').animation = True
layout.separator()
- layout.operator("render.opengl", text="OpenGL Render Image")
- layout.operator("render.opengl", text="OpenGL Render Animation").animation = True
+ layout.operator("render.opengl", text=_("OpenGL Render Image"))
+ layout.operator("render.opengl", text=_("OpenGL Render Animation")).animation = True
layout.separator()
@@ -359,27 +360,28 @@ class INFO_MT_help(Menu):
layout = self.layout
- layout.operator("wm.url_open", text="Manual", icon='HELP').url = 'http://wiki.blender.org/index.php/Doc:Manual'
- layout.operator("wm.url_open", text="Release Log", icon='URL').url = 'http://www.blender.org/development/release-logs/blender-259/'
+ layout.operator("wm.url_open", text=_("Manual"), icon='HELP').url = 'http://wiki.blender.org/index.php/Doc:Manual'
+ layout.operator("wm.url_open", text=_("Release Log"), icon='URL').url = 'http://www.blender.org/development/release-logs/blender-259/'
layout.separator()
- layout.operator("wm.url_open", text="Blender Website", icon='URL').url = 'http://www.blender.org/'
- layout.operator("wm.url_open", text="Blender e-Shop", icon='URL').url = 'http://www.blender.org/e-shop'
- layout.operator("wm.url_open", text="Developer Community", icon='URL').url = 'http://www.blender.org/community/get-involved/'
- layout.operator("wm.url_open", text="User Community", icon='URL').url = 'http://www.blender.org/community/user-community/'
+ layout.operator("wm.url_open", text=_("Blender Website"), icon='URL').url = 'http://www.blender.org/'
+ layout.operator("wm.url_open", text=_("Blender e-Shop"), icon='URL').url = 'http://www.blender.org/e-shop'
+ layout.operator("wm.url_open", text=_("Developer Community"), icon='URL').url = 'http://www.blender.org/community/get-involved/'
+ layout.operator("wm.url_open", text=_("User Community"), icon='URL').url = 'http://www.blender.org/community/user-community/'
layout.separator()
- layout.operator("wm.url_open", text="Report a Bug", icon='URL').url = 'http://projects.blender.org/tracker/?atid=498&group_id=9&func=browse'
+ layout.operator("wm.url_open", text=_("Report a Bug"), icon='URL').url = 'http://projects.blender.org/tracker/?atid=498&group_id=9&func=browse'
layout.separator()
- layout.operator("wm.url_open", text="Python API Reference", icon='URL').url = bpy.types.WM_OT_doc_view._prefix
+ layout.operator("wm.url_open", text=_("Python API Reference"), icon='URL').url = bpy.types.WM_OT_doc_view._prefix
layout.operator("help.operator_cheat_sheet", icon='TEXT')
layout.operator("wm.sysinfo", icon='TEXT')
layout.separator()
if sys.platform[:3] == "win":
layout.operator("wm.console_toggle", icon='CONSOLE')
layout.separator()
- layout.operator("anim.update_data_paths", text="FCurve/Driver Version fix", icon='HELP')
+ layout.operator("anim.update_data_paths", text=_("FCurve/Driver Version fix"), icon='HELP')
+ layout.operator("logic.texface_convert", text="TexFace to Material Convert", icon='GAME')
layout.separator()
layout.operator("wm.splash", icon='BLENDER')
diff --git a/release/scripts/startup/bl_ui/space_logic.py b/release/scripts/startup/bl_ui/space_logic.py
index 869a91124d3..b1149913d17 100644
--- a/release/scripts/startup/bl_ui/space_logic.py
+++ b/release/scripts/startup/bl_ui/space_logic.py
@@ -19,6 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.types import Header, Menu, Panel
+from blf import gettext as _
class LOGIC_PT_properties(Panel):
@@ -37,7 +38,7 @@ class LOGIC_PT_properties(Panel):
ob = context.active_object
game = ob.game
- layout.operator("object.game_property_new", text="Add Game Property", icon='ZOOMIN')
+ layout.operator("object.game_property_new", text=_("Add Game Property"), icon='ZOOMIN')
for i, prop in enumerate(game.properties):
@@ -56,9 +57,9 @@ class LOGIC_MT_logicbricks_add(Menu):
def draw(self, context):
layout = self.layout
- layout.operator_menu_enum("logic.sensor_add", "type", text="Sensor")
- layout.operator_menu_enum("logic.controller_add", "type", text="Controller")
- layout.operator_menu_enum("logic.actuator_add", "type", text="Actuator")
+ layout.operator_menu_enum("logic.sensor_add", "type", text=_("Sensor"))
+ layout.operator_menu_enum("logic.controller_add", "type", text=_("Controller"))
+ layout.operator_menu_enum("logic.actuator_add", "type", text=_("Actuator"))
class LOGIC_HT_header(Header):
diff --git a/release/scripts/startup/bl_ui/space_nla.py b/release/scripts/startup/bl_ui/space_nla.py
index ffead81c507..8a4b0a61291 100644
--- a/release/scripts/startup/bl_ui/space_nla.py
+++ b/release/scripts/startup/bl_ui/space_nla.py
@@ -20,6 +20,7 @@
import bpy
from bpy.types import Header, Menu
+from blf import gettext as _
class NLA_HT_header(Header):
@@ -62,7 +63,7 @@ class NLA_MT_view(Menu):
layout.prop(st, "use_realtime_update")
layout.prop(st, "show_frame_indicator")
- layout.operator("anim.time_toggle", text="Show Frames" if st.show_seconds else "Show Seconds")
+ layout.operator("anim.time_toggle", text=_("Show Frames") if st.show_seconds else _("Show Seconds"))
layout.prop(st, "show_strip_curves")
@@ -87,33 +88,33 @@ class NLA_MT_select(Menu):
# This is a bit misleading as the operator's default text is "Select All" while it actually *toggles* All/None
layout.operator("nla.select_all_toggle")
- layout.operator("nla.select_all_toggle", text="Invert Selection").invert = True
+ layout.operator("nla.select_all_toggle", text=_("Invert Selection")).invert = True
layout.separator()
layout.operator("nla.select_border")
- layout.operator("nla.select_border", text="Border Axis Range").axis_range = True
+ layout.operator("nla.select_border", text=_("Border Axis Range")).axis_range = True
layout.separator()
- layout.operator("nla.select_leftright", text="Before Current Frame").mode = 'LEFT'
- layout.operator("nla.select_leftright", text="After Current Frame").mode = 'RIGHT'
+ layout.operator("nla.select_leftright", text=_("Before Current Frame")).mode = 'LEFT'
+ layout.operator("nla.select_leftright", text=_("After Current Frame")).mode = 'RIGHT'
class NLA_MT_marker(Menu):
- bl_label = "Marker"
+ bl_label = _("Marker")
def draw(self, context):
layout = self.layout
#layout.operator_context = 'EXEC_REGION_WIN'
- layout.operator("marker.add", "Add Marker")
- layout.operator("marker.duplicate", text="Duplicate Marker")
- layout.operator("marker.delete", text="Delete Marker")
+ layout.operator("marker.add", _("Add Marker"))
+ layout.operator("marker.duplicate", text=_("Duplicate Marker"))
+ layout.operator("marker.delete", text=_("Delete Marker"))
layout.separator()
- layout.operator("marker.rename", text="Rename Marker")
- layout.operator("marker.move", text="Grab/Move Marker")
+ layout.operator("marker.rename", text=_("Rename Marker"))
+ layout.operator("marker.move", text=_("Grab/Move Marker"))
class NLA_MT_edit(Menu):
@@ -124,9 +125,9 @@ class NLA_MT_edit(Menu):
scene = context.scene
- layout.menu("NLA_MT_edit_transform", text="Transform")
+ layout.menu("NLA_MT_edit_transform", text=_("Transform"))
- layout.operator_menu_enum("nla.snap", "type", text="Snap")
+ layout.operator_menu_enum("nla.snap", "type", text=_("Snap"))
layout.separator()
layout.operator("nla.duplicate")
@@ -148,14 +149,14 @@ class NLA_MT_edit(Menu):
# TODO: this really belongs more in a "channel" (or better, "track") menu
layout.separator()
- layout.operator_menu_enum("anim.channels_move", "direction", text="Track Ordering...")
+ layout.operator_menu_enum("anim.channels_move", "direction", text=_("Track Ordering..."))
layout.separator()
# TODO: names of these tools for 'tweakmode' need changing?
if scene.is_nla_tweakmode:
- layout.operator("nla.tweakmode_exit", text="Stop Tweaking Strip Actions")
+ layout.operator("nla.tweakmode_exit", text=_("Stop Tweaking Strip Actions"))
else:
- layout.operator("nla.tweakmode_enter", text="Start Tweaking Strip Actions")
+ layout.operator("nla.tweakmode_enter", text=_("Start Tweaking Strip Actions"))
class NLA_MT_add(Menu):
@@ -174,7 +175,7 @@ class NLA_MT_add(Menu):
layout.separator()
layout.operator("nla.tracks_add")
- layout.operator("nla.tracks_add", text="Add Tracks Above Selected").above_selected = True
+ layout.operator("nla.tracks_add", text=_("Add Tracks Above Selected")).above_selected = True
class NLA_MT_edit_transform(Menu):
@@ -183,9 +184,9 @@ class NLA_MT_edit_transform(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("transform.translate", text="Grab/Move")
- layout.operator("transform.transform", text="Extend").mode = 'TIME_EXTEND'
- layout.operator("transform.transform", text="Scale").mode = 'TIME_SCALE'
+ layout.operator("transform.translate", text=_("Grab/Move"))
+ layout.operator("transform.transform", text=_("Extend")).mode = 'TIME_EXTEND'
+ layout.operator("transform.transform", text=_("Scale")).mode = 'TIME_SCALE'
if __name__ == "__main__": # only for live edit.
bpy.utils.register_module(__name__)
diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py
index 708017ba749..0808ddf769a 100644
--- a/release/scripts/startup/bl_ui/space_node.py
+++ b/release/scripts/startup/bl_ui/space_node.py
@@ -19,6 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.types import Header, Menu, Panel
+from blf import gettext as _
class NODE_HT_header(Header):
@@ -61,7 +62,7 @@ class NODE_HT_header(Header):
elif snode.tree_type == 'COMPOSITING':
layout.prop(snode_id, "use_nodes")
- layout.prop(snode_id.render, "use_free_unused_nodes", text="Free Unused")
+ layout.prop(snode_id.render, "use_free_unused_nodes", text=_("Free Unused"))
layout.prop(snode, "show_backdrop")
if snode.show_backdrop:
row = layout.row(align=True)
@@ -92,9 +93,9 @@ class NODE_MT_view(Menu):
if context.space_data.show_backdrop:
layout.separator()
- layout.operator("node.backimage_move", text="Backdrop move")
- layout.operator("node.backimage_zoom", text="Backdrop zoom in").factor = 1.2
- layout.operator("node.backimage_zoom", text="Backdrop zoom out").factor = 0.833
+ layout.operator("node.backimage_move", text=_("Backdrop move"))
+ layout.operator("node.backimage_zoom", text=_("Backdrop zoom in")).factor = 1.2
+ layout.operator("node.backimage_zoom", text=_("Backdrop zoom out")).factor = 0.833
layout.separator()
@@ -137,7 +138,7 @@ class NODE_MT_node(Menu):
layout.separator()
layout.operator("node.link_make")
- layout.operator("node.link_make", text="Make and Replace Links").replace = True
+ layout.operator("node.link_make", text=_("Make and Replace Links")).replace = True
layout.operator("node.links_cut")
layout.separator()
@@ -180,13 +181,13 @@ class NODE_PT_properties(Panel):
snode = context.space_data
layout.active = snode.show_backdrop
layout.prop(snode, "backdrop_channels", text="")
- layout.prop(snode, "backdrop_zoom", text="Zoom")
+ layout.prop(snode, "backdrop_zoom", text=_("Zoom"))
col = layout.column(align=True)
- col.label(text="Offset:")
+ col.label(text=_("Offset:"))
col.prop(snode, "backdrop_x", text="X")
col.prop(snode, "backdrop_y", text="Y")
- col.operator("node.backimage_move", text="Move")
+ col.operator("node.backimage_move", text=_("Move"))
if __name__ == "__main__": # only for live edit.
bpy.utils.register_module(__name__)
diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py
index 36f606da635..a9a5eae3179 100644
--- a/release/scripts/startup/bl_ui/space_sequencer.py
+++ b/release/scripts/startup/bl_ui/space_sequencer.py
@@ -19,6 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.types import Header, Menu, Panel
+from blf import gettext as _
def act_strip(context):
@@ -64,9 +65,9 @@ class SEQUENCER_HT_header(Header):
elif st.view_type == 'SEQUENCER_PREVIEW':
layout.separator()
layout.operator("sequencer.refresh_all")
- layout.prop(st, "display_channel", text="Channel")
+ layout.prop(st, "display_channel", text=_("Channel"))
else:
- layout.prop(st, "display_channel", text="Channel")
+ layout.prop(st, "display_channel", text=_("Channel"))
ed = context.scene.sequence_editor
if ed:
@@ -101,11 +102,11 @@ class SEQUENCER_MT_view(Menu):
layout.separator()
if st.view_type in {'SEQUENCER', 'SEQUENCER_PREVIEW'}:
- layout.operator("sequencer.view_all", text='View all Sequences')
+ layout.operator("sequencer.view_all", text=_('View all Sequences'))
if st.view_type in {'PREVIEW', 'SEQUENCER_PREVIEW'}:
layout.operator_context = 'INVOKE_REGION_PREVIEW'
- layout.operator("sequencer.view_all_preview", text='Fit preview in window')
- layout.operator("sequencer.view_zoom_ratio", text='Show preview 1:1').ratio = 1.0
+ layout.operator("sequencer.view_all_preview", text=_('Fit preview in window'))
+ layout.operator("sequencer.view_zoom_ratio", text=_('Show preview 1:1')).ratio = 1.0
layout.operator_context = 'INVOKE_DEFAULT'
# # XXX, invokes in the header view
@@ -114,9 +115,9 @@ class SEQUENCER_MT_view(Menu):
layout.operator("sequencer.view_selected")
if st.show_frames:
- layout.operator("anim.time_toggle", text="Show Seconds")
+ layout.operator("anim.time_toggle", text=_("Show Seconds"))
else:
- layout.operator("anim.time_toggle", text="Show Frames")
+ layout.operator("anim.time_toggle", text=_("Show Frames"))
layout.prop(st, "show_frame_indicator")
if st.display_mode == 'IMAGE':
@@ -138,12 +139,12 @@ class SEQUENCER_MT_select(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("sequencer.select_active_side", text="Strips to the Left").side = 'LEFT'
- layout.operator("sequencer.select_active_side", text="Strips to the Right").side = 'RIGHT'
+ layout.operator("sequencer.select_active_side", text=_("Strips to the Left")).side = 'LEFT'
+ layout.operator("sequencer.select_active_side", text=_("Strips to the Right")).side = 'RIGHT'
layout.separator()
- layout.operator("sequencer.select_handles", text="Surrounding Handles").side = 'BOTH'
- layout.operator("sequencer.select_handles", text="Left Handle").side = 'LEFT'
- layout.operator("sequencer.select_handles", text="Right Handle").side = 'RIGHT'
+ layout.operator("sequencer.select_handles", text=_("Surrounding Handles")).side = 'BOTH'
+ layout.operator("sequencer.select_handles", text=_("Left Handle")).side = 'LEFT'
+ layout.operator("sequencer.select_handles", text=_("Right Handle")).side = 'RIGHT'
layout.separator()
layout.operator("sequencer.select_linked")
layout.operator("sequencer.select_all_toggle")
@@ -158,14 +159,14 @@ class SEQUENCER_MT_marker(Menu):
#layout.operator_context = 'EXEC_REGION_WIN'
- layout.operator("marker.add", "Add Marker")
- layout.operator("marker.duplicate", text="Duplicate Marker")
- layout.operator("marker.delete", text="Delete Marker")
+ layout.operator("marker.add", _("Add Marker"))
+ layout.operator("marker.duplicate", text=_("Duplicate Marker"))
+ layout.operator("marker.delete", text=_("Delete Marker"))
layout.separator()
- layout.operator("marker.rename", text="Rename Marker")
- layout.operator("marker.move", text="Grab/Move Marker")
+ layout.operator("marker.rename", text=_("Rename Marker"))
+ layout.operator("marker.move", text=_("Grab/Move Marker"))
#layout.operator("sequencer.sound_strip_add", text="Transform Markers") # toggle, will be rna - (sseq->flag & SEQ_MARKER_TRANS)
@@ -180,7 +181,7 @@ class SEQUENCER_MT_change(Menu):
layout.operator_menu_enum("sequencer.change_effect_input", "swap")
layout.operator_menu_enum("sequencer.change_effect_type", "type")
- layout.operator("sequencer.change_path", text="Path/Files")
+ layout.operator("sequencer.change_path", text=_("Path/Files"))
class SEQUENCER_MT_add(Menu):
@@ -192,13 +193,13 @@ class SEQUENCER_MT_add(Menu):
if len(bpy.data.scenes) > 10:
layout.operator_context = 'INVOKE_DEFAULT'
- layout.operator("sequencer.scene_strip_add", text="Scene...")
+ layout.operator("sequencer.scene_strip_add", text=_("Scene..."))
else:
- layout.operator_menu_enum("sequencer.scene_strip_add", "scene", text="Scene...")
+ layout.operator_menu_enum("sequencer.scene_strip_add", "scene", text=_("Scene..."))
- layout.operator("sequencer.movie_strip_add", text="Movie")
- layout.operator("sequencer.image_strip_add", text="Image")
- layout.operator("sequencer.sound_strip_add", text="Sound")
+ layout.operator("sequencer.movie_strip_add", text=_("Movie"))
+ layout.operator("sequencer.image_strip_add", text=_("Image"))
+ layout.operator("sequencer.sound_strip_add", text=_("Sound"))
layout.menu("SEQUENCER_MT_add_effect")
@@ -210,22 +211,22 @@ class SEQUENCER_MT_add_effect(Menu):
layout = self.layout
layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("sequencer.effect_strip_add", text="Add").type = 'ADD'
- layout.operator("sequencer.effect_strip_add", text="Subtract").type = 'SUBTRACT'
- layout.operator("sequencer.effect_strip_add", text="Alpha Over").type = 'ALPHA_OVER'
- layout.operator("sequencer.effect_strip_add", text="Alpha Under").type = 'ALPHA_UNDER'
- layout.operator("sequencer.effect_strip_add", text="Cross").type = 'CROSS'
- layout.operator("sequencer.effect_strip_add", text="Gamma Cross").type = 'GAMMA_CROSS'
- layout.operator("sequencer.effect_strip_add", text="Multiply").type = 'MULTIPLY'
- layout.operator("sequencer.effect_strip_add", text="Over Drop").type = 'OVER_DROP'
- layout.operator("sequencer.effect_strip_add", text="Plugin").type = 'PLUGIN'
- layout.operator("sequencer.effect_strip_add", text="Wipe").type = 'WIPE'
- layout.operator("sequencer.effect_strip_add", text="Glow").type = 'GLOW'
- layout.operator("sequencer.effect_strip_add", text="Transform").type = 'TRANSFORM'
- layout.operator("sequencer.effect_strip_add", text="Color").type = 'COLOR'
- layout.operator("sequencer.effect_strip_add", text="Speed Control").type = 'SPEED'
- layout.operator("sequencer.effect_strip_add", text="Multicam Selector").type = 'MULTICAM'
- layout.operator("sequencer.effect_strip_add", text="Adjustment Layer").type = 'ADJUSTMENT'
+ layout.operator("sequencer.effect_strip_add", text=_("Add")).type = 'ADD'
+ layout.operator("sequencer.effect_strip_add", text=_("Subtract")).type = 'SUBTRACT'
+ layout.operator("sequencer.effect_strip_add", text=_("Alpha Over")).type = 'ALPHA_OVER'
+ layout.operator("sequencer.effect_strip_add", text=_("Alpha Under")).type = 'ALPHA_UNDER'
+ layout.operator("sequencer.effect_strip_add", text=_("Cross")).type = 'CROSS'
+ layout.operator("sequencer.effect_strip_add", text=_("Gamma Cross")).type = 'GAMMA_CROSS'
+ layout.operator("sequencer.effect_strip_add", text=_("Multiply")).type = 'MULTIPLY'
+ layout.operator("sequencer.effect_strip_add", text=_("Over Drop")).type = 'OVER_DROP'
+ layout.operator("sequencer.effect_strip_add", text=_("Plugin")).type = 'PLUGIN'
+ layout.operator("sequencer.effect_strip_add", text=_("Wipe")).type = 'WIPE'
+ layout.operator("sequencer.effect_strip_add", text=_("Glow")).type = 'GLOW'
+ layout.operator("sequencer.effect_strip_add", text=_("Transform")).type = 'TRANSFORM'
+ layout.operator("sequencer.effect_strip_add", text=_("Color")).type = 'COLOR'
+ layout.operator("sequencer.effect_strip_add", text=_("Speed Control")).type = 'SPEED'
+ layout.operator("sequencer.effect_strip_add", text=_("Multicam Selector")).type = 'MULTICAM'
+ layout.operator("sequencer.effect_strip_add", text=_("Adjustment Layer")).type = 'ADJUSTMENT'
class SEQUENCER_MT_strip(Menu):
@@ -236,13 +237,13 @@ class SEQUENCER_MT_strip(Menu):
layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("transform.transform", text="Grab/Move").mode = 'TRANSLATION'
- layout.operator("transform.transform", text="Grab/Extend from frame").mode = 'TIME_EXTEND'
+ layout.operator("transform.transform", text=_("Grab/Move")).mode = 'TRANSLATION'
+ layout.operator("transform.transform", text=_("Grab/Extend from frame")).mode = 'TIME_EXTEND'
# uiItemO(layout, NULL, 0, "sequencer.strip_snap"); // TODO - add this operator
layout.separator()
- layout.operator("sequencer.cut", text="Cut (hard) at frame").type = 'HARD'
- layout.operator("sequencer.cut", text="Cut (soft) at frame").type = 'SOFT'
+ layout.operator("sequencer.cut", text=_("Cut (hard) at frame")).type = 'HARD'
+ layout.operator("sequencer.cut", text=_("Cut (soft) at frame")).type = 'SOFT'
layout.operator("sequencer.images_separate")
layout.operator("sequencer.offset_clear")
layout.operator("sequencer.deinterlace_selected_movies")
@@ -296,7 +297,7 @@ class SEQUENCER_MT_strip(Menu):
layout.operator("sequencer.mute")
layout.operator("sequencer.unmute")
- layout.operator("sequencer.mute", text="Mute Deselected Strips").unselected = True
+ layout.operator("sequencer.mute", text=_("Mute Deselected Strips")).unselected = True
layout.operator("sequencer.snap")
@@ -344,21 +345,21 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel, Panel):
strip = act_strip(context)
split = layout.split(percentage=0.3)
- split.label(text="Name:")
+ split.label(text=_("Name:"))
split.prop(strip, "name", text="")
split = layout.split(percentage=0.3)
- split.label(text="Type:")
+ split.label(text=_("Type:"))
split.prop(strip, "type", text="")
split = layout.split(percentage=0.3)
- split.label(text="Blend:")
+ split.label(text=_("Blend:"))
split.prop(strip, "blend_type", text="")
row = layout.row(align=True)
sub = row.row()
sub.active = (not strip.mute)
- sub.prop(strip, "blend_alpha", text="Opacity", slider=True)
+ sub.prop(strip, "blend_alpha", text=_("Opacity"), slider=True)
row.prop(strip, "mute", toggle=True, icon='RESTRICT_VIEW_ON' if strip.mute else 'RESTRICT_VIEW_OFF', text="")
row.prop(strip, "lock", toggle=True, icon='LOCKED' if strip.lock else 'UNLOCKED', text="")
@@ -371,13 +372,13 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel, Panel):
col = layout.column(align=True)
row = col.row()
- row.label(text="Final Length: %s" % bpy.utils.smpte_from_frame(strip.frame_final_duration))
+ row.label(text=_("Final Length")+": %s" % bpy.utils.smpte_from_frame(strip.frame_final_duration))
row = col.row()
row.active = (frame_current >= strip.frame_start and frame_current <= strip.frame_start + strip.frame_duration)
- row.label(text="Playhead: %d" % (frame_current - strip.frame_start))
+ row.label(text=_("Playhead")+": %d" % (frame_current - strip.frame_start))
- col.label(text="Frame Offset %d:%d" % (strip.frame_offset_start, strip.frame_offset_end))
- col.label(text="Frame Still %d:%d" % (strip.frame_still_start, strip.frame_still_end))
+ col.label(text=_("Frame Offset")+" %d:%d" % (strip.frame_offset_start, strip.frame_offset_end))
+ col.label(text=_("Frame Still")+" %d:%d" % (strip.frame_still_start, strip.frame_still_end))
elem = False
@@ -387,9 +388,9 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel, Panel):
elem = strip.elements[0]
if elem and elem.orig_width > 0 and elem.orig_height > 0:
- col.label(text="Orig Dim: %dx%d" % (elem.orig_width, elem.orig_height))
+ col.label(text=_("Orig Dim")+": %dx%d" % (elem.orig_width, elem.orig_height))
else:
- col.label(text="Orig Dim: None")
+ col.label(text=_("Orig Dim: None"))
class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel):
@@ -429,7 +430,7 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel):
col = layout.column()
col.prop(strip, "transition_type")
- col.label(text="Direction:")
+ col.label(text=_("Direction:"))
col.row().prop(strip, "direction", expand=True)
col = layout.column()
@@ -449,13 +450,13 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel):
row.prop(strip, "use_only_boost")
elif strip.type == 'SPEED':
- layout.prop(strip, "use_default_fade", "Stretch to input strip length")
+ layout.prop(strip, "use_default_fade", _("Stretch to input strip length"))
if not strip.use_default_fade:
layout.prop(strip, "use_as_speed")
if strip.use_as_speed:
layout.prop(strip, "speed_factor")
else:
- layout.prop(strip, "speed_factor", text="Frame number")
+ layout.prop(strip, "speed_factor", text=_("Frame number"))
layout.prop(strip, "scale_to_length")
#doesn't work currently
@@ -473,7 +474,7 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel):
sub.operator("screen.animation_play", text="", icon='PAUSE' if context.screen.is_animation_playing else 'PLAY')
- row.label("Cut To")
+ row.label(_("Cut To"))
for i in range(1, strip.channel):
row.operator("sequencer.cut_multicam", text=str(i)).camera = i
@@ -481,17 +482,17 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel):
if strip.type == 'SPEED':
col.prop(strip, "multiply_speed")
elif strip.type in {'CROSS', 'GAMMA_CROSS', 'PLUGIN', 'WIPE'}:
- col.prop(strip, "use_default_fade", "Default fade")
+ col.prop(strip, "use_default_fade", _("Default fade"))
if not strip.use_default_fade:
- col.prop(strip, "effect_fader", text="Effect fader")
+ col.prop(strip, "effect_fader", text=_("Effect fader"))
- layout.prop(strip, "use_translation", text="Image Offset:")
+ layout.prop(strip, "use_translation", text=_("Image Offset:"))
if strip.use_translation:
col = layout.column(align=True)
col.prop(strip.transform, "offset_x", text="X")
col.prop(strip.transform, "offset_y", text="Y")
- layout.prop(strip, "use_crop", text="Image Crop:")
+ layout.prop(strip, "use_crop", text=_("Image Crop:"))
if strip.use_crop:
col = layout.column(align=True)
col.prop(strip.crop, "max_y")
@@ -506,7 +507,7 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel):
col.prop(strip, "interpolation")
col.prop(strip, "translation_unit")
col = layout.column(align=True)
- col.label(text="Position:")
+ col.label(text=_("Position:"))
col.prop(strip, "translate_start_x", text="X")
col.prop(strip, "translate_start_y", text="Y")
@@ -516,18 +517,18 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, Panel):
col.prop(strip, "use_uniform_scale")
if (strip.use_uniform_scale):
col = layout.column(align=True)
- col.prop(strip, "scale_start_x", text="Scale")
+ col.prop(strip, "scale_start_x", text=_("Scale"))
else:
col = layout.column(align=True)
- col.label(text="Scale:")
+ col.label(text=_("Scale:"))
col.prop(strip, "scale_start_x", text="X")
col.prop(strip, "scale_start_y", text="Y")
layout.separator()
col = layout.column(align=True)
- col.label(text="Rotation:")
- col.prop(strip, "rotation_start", text="Rotation")
+ col.label(text=_("Rotation:"))
+ col.prop(strip, "rotation_start", text=_("Rotation"))
class SEQUENCER_PT_input(SequencerButtonsPanel, Panel):
@@ -560,7 +561,7 @@ class SEQUENCER_PT_input(SequencerButtonsPanel, Panel):
if seq_type == 'IMAGE':
split = layout.split(percentage=0.2)
col = split.column()
- col.label(text="Path:")
+ col.label(text=_("Path:"))
col = split.column()
col.prop(strip, "directory", text="")
@@ -570,7 +571,7 @@ class SEQUENCER_PT_input(SequencerButtonsPanel, Panel):
if elem:
split = layout.split(percentage=0.2)
col = split.column()
- col.label(text="File:")
+ col.label(text=_("File:"))
col = split.column()
col.prop(elem, "filename", text="") # strip.elements[0] could be a fallback
@@ -580,22 +581,22 @@ class SEQUENCER_PT_input(SequencerButtonsPanel, Panel):
elif seq_type == 'MOVIE':
split = layout.split(percentage=0.2)
col = split.column()
- col.label(text="Path:")
+ col.label(text=_("Path:"))
col = split.column()
col.prop(strip, "filepath", text="")
- col.prop(strip, "mpeg_preseek", text="MPEG Preseek")
- col.prop(strip, "streamindex", text="Stream Index")
+ col.prop(strip, "mpeg_preseek", text=_("MPEG Preseek"))
+ col.prop(strip, "streamindex", text=_("Stream Index"))
# TODO, sound???
# end drawing filename
- layout.prop(strip, "use_translation", text="Image Offset:")
+ layout.prop(strip, "use_translation", text=_("Image Offset:"))
if strip.use_translation:
col = layout.column(align=True)
col.prop(strip.transform, "offset_x", text="X")
col.prop(strip.transform, "offset_y", text="Y")
- layout.prop(strip, "use_crop", text="Image Crop:")
+ layout.prop(strip, "use_crop", text=_("Image Crop:"))
if strip.use_crop:
col = layout.column(align=True)
col.prop(strip.crop, "max_y")
@@ -605,14 +606,14 @@ class SEQUENCER_PT_input(SequencerButtonsPanel, Panel):
if not isinstance(strip, bpy.types.EffectSequence):
col = layout.column(align=True)
- col.label(text="Trim Duration (hard):")
- col.prop(strip, "animation_offset_start", text="Start")
- col.prop(strip, "animation_offset_end", text="End")
+ col.label(text=_("Trim Duration (hard):"))
+ col.prop(strip, "animation_offset_start", text=_("Start"))
+ col.prop(strip, "animation_offset_end", text=_("End"))
col = layout.column(align=True)
- col.label(text="Trim Duration (soft):")
- col.prop(strip, "frame_offset_start", text="Start")
- col.prop(strip, "frame_offset_end", text="End")
+ col.label(text=_("Trim Duration (soft):"))
+ col.prop(strip, "frame_offset_start", text=_("Start"))
+ col.prop(strip, "frame_offset_end", text=_("End"))
class SEQUENCER_PT_sound(SequencerButtonsPanel, Panel):
@@ -641,9 +642,9 @@ class SEQUENCER_PT_sound(SequencerButtonsPanel, Panel):
row = layout.row()
if strip.sound.packed_file:
- row.operator("sound.unpack", icon='PACKAGE', text="Unpack")
+ row.operator("sound.unpack", icon='PACKAGE', text=_("Unpack"))
else:
- row.operator("sound.pack", icon='UGLYPACKAGE', text="Pack")
+ row.operator("sound.pack", icon='UGLYPACKAGE', text=_("Pack"))
row.prop(strip.sound, "use_memory_cache")
@@ -654,8 +655,8 @@ class SEQUENCER_PT_sound(SequencerButtonsPanel, Panel):
col = layout.column(align=True)
col.label(text="Trim Duration:")
- col.prop(strip, "animation_offset_start", text="Start")
- col.prop(strip, "animation_offset_end", text="End")
+ col.prop(strip, "animation_offset_start", text=_("Start"))
+ col.prop(strip, "animation_offset_end", text=_("End"))
class SEQUENCER_PT_scene(SequencerButtonsPanel, Panel):
@@ -683,13 +684,13 @@ class SEQUENCER_PT_scene(SequencerButtonsPanel, Panel):
if scene:
layout.prop(scene.render, "use_sequencer")
- layout.label(text="Camera Override")
+ layout.label(text=_("Camera Override"))
layout.template_ID(strip, "scene_camera")
if scene:
sta = scene.frame_start
end = scene.frame_end
- layout.label(text="Original frame range: %d-%d (%d)" % (sta, end, end - sta + 1))
+ layout.label(text=_("Original frame range")+": %d-%d (%d)" % (sta, end, end - sta + 1))
class SEQUENCER_PT_filter(SequencerButtonsPanel, Panel):
@@ -717,22 +718,22 @@ class SEQUENCER_PT_filter(SequencerButtonsPanel, Panel):
strip = act_strip(context)
col = layout.column()
- col.label(text="Video:")
+ col.label(text=_("Video:"))
col.prop(strip, "strobe")
row = layout.row()
- row.label(text="Flip:")
+ row.label(text=_("Flip:"))
row.prop(strip, "use_flip_x", text="X")
row.prop(strip, "use_flip_y", text="Y")
col = layout.column()
- col.prop(strip, "use_reverse_frames", text="Backwards")
+ col.prop(strip, "use_reverse_frames", text=_("Backwards"))
col.prop(strip, "use_deinterlace")
col = layout.column()
- col.label(text="Colors:")
- col.prop(strip, "color_saturation", text="Saturation")
- col.prop(strip, "color_multiply", text="Multiply")
+ col.label(text=_("Colors:"))
+ col.prop(strip, "color_saturation", text=_("Saturation"))
+ col.prop(strip, "color_multiply", text=_("Multiply"))
col.prop(strip, "use_premultiply")
col.prop(strip, "use_float")
@@ -743,15 +744,15 @@ class SEQUENCER_PT_filter(SequencerButtonsPanel, Panel):
col = row.column()
col.template_color_wheel(strip.color_balance, "lift", value_slider=False, cubic=True)
col.row().prop(strip.color_balance, "lift")
- col.prop(strip.color_balance, "invert_lift", text="Inverse")
+ col.prop(strip.color_balance, "invert_lift", text=_("Inverse"))
col = row.column()
col.template_color_wheel(strip.color_balance, "gamma", value_slider=False, lock_luminosity=True, cubic=True)
col.row().prop(strip.color_balance, "gamma")
- col.prop(strip.color_balance, "invert_gamma", text="Inverse")
+ col.prop(strip.color_balance, "invert_gamma", text=_("Inverse"))
col = row.column()
col.template_color_wheel(strip.color_balance, "gain", value_slider=False, lock_luminosity=True, cubic=True)
col.row().prop(strip.color_balance, "gain")
- col.prop(strip.color_balance, "invert_gain", text="Inverse")
+ col.prop(strip.color_balance, "invert_gain", text=_("Inverse"))
class SEQUENCER_PT_proxy(SequencerButtonsPanel, Panel):
@@ -794,18 +795,18 @@ class SEQUENCER_PT_proxy(SequencerButtonsPanel, Panel):
row.prop(strip.proxy, "build_100")
col = layout.column()
- col.label(text="Build JPEG quality")
+ col.label(text=_("Build JPEG quality"))
col.prop(strip.proxy, "quality")
if strip.type == "MOVIE":
col = layout.column()
- col.label(text="Use timecode index:")
+ col.label(text=_("Use timecode index:"))
col.prop(strip.proxy, "timecode")
class SEQUENCER_PT_preview(SequencerButtonsPanel_Output, Panel):
- bl_label = "Scene Preview/Render"
+ bl_label = _("Scene Preview/Render")
bl_space_type = 'SEQUENCE_EDITOR'
bl_region_type = 'UI'
@@ -815,7 +816,7 @@ class SEQUENCER_PT_preview(SequencerButtonsPanel_Output, Panel):
col = layout.column()
col.active = False # Currently only opengl preview works!
- col.prop(render, "use_sequencer_gl_preview", text="Open GL Preview")
+ col.prop(render, "use_sequencer_gl_preview", text=_("Open GL Preview"))
col = layout.column()
#col.active = render.use_sequencer_gl_preview
col.prop(render, "sequencer_gl_preview", text="")
diff --git a/release/scripts/startup/bl_ui/space_text.py b/release/scripts/startup/bl_ui/space_text.py
index 12e07c19ca1..cd72d42857b 100644
--- a/release/scripts/startup/bl_ui/space_text.py
+++ b/release/scripts/startup/bl_ui/space_text.py
@@ -19,6 +19,7 @@
# <pep8-80 compliant>
import bpy
from bpy.types import Header, Menu, Panel
+from blf import gettext as _
class TEXT_HT_header(Header):
@@ -66,13 +67,13 @@ class TEXT_HT_header(Header):
row = layout.row()
if text.filepath:
if text.is_dirty:
- row.label(text="File: *%r (unsaved)" % text.filepath)
+ row.label(text=_("File")+": *%r " % text.filepath+_("(unsaved)"))
else:
- row.label(text="File: %r" % text.filepath)
+ row.label(text=_("File")+": %r" % text.filepath)
else:
- row.label(text="Text: External"
+ row.label(text=_("Text: External")
if text.library
- else "Text: Internal")
+ else _("Text: Internal"))
class TEXT_PT_properties(Panel):
@@ -136,8 +137,8 @@ class TEXT_PT_find(Panel):
# settings
layout.prop(st, "use_match_case")
row = layout.row()
- row.prop(st, "use_find_wrap", text="Wrap")
- row.prop(st, "use_find_all", text="All")
+ row.prop(st, "use_find_wrap", text=_("Wrap"))
+ row.prop(st, "use_find_all", text=_("All"))
class TEXT_MT_view(Menu):
@@ -156,10 +157,10 @@ class TEXT_MT_view(Menu):
layout.separator()
layout.operator("text.move",
- text="Top of File",
+ text=_("Top of File"),
).type = 'FILE_TOP'
layout.operator("text.move",
- text="Bottom of File",
+ text=_("Bottom of File"),
).type = 'FILE_BOTTOM'
@@ -248,10 +249,10 @@ class TEXT_MT_edit_to3d(Menu):
layout = self.layout
layout.operator("text.to_3d_object",
- text="One Object",
+ text=_("One Object"),
).split_lines = False
layout.operator("text.to_3d_object",
- text="One Object Per Line",
+ text=_("One Object Per Line"),
).split_lines = True
@@ -282,7 +283,7 @@ class TEXT_MT_edit(Menu):
layout.separator()
layout.operator("text.jump")
- layout.operator("text.properties", text="Find...")
+ layout.operator("text.properties", text=_("Find..."))
layout.separator()
diff --git a/release/scripts/startup/bl_ui/space_time.py b/release/scripts/startup/bl_ui/space_time.py
index 396ad035f31..afcc4d250e2 100644
--- a/release/scripts/startup/bl_ui/space_time.py
+++ b/release/scripts/startup/bl_ui/space_time.py
@@ -19,6 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.types import Header, Menu
+from blf import gettext as _
class TIME_HT_header(Header):
@@ -43,11 +44,11 @@ class TIME_HT_header(Header):
row = layout.row(align=True)
if not scene.use_preview_range:
- row.prop(scene, "frame_start", text="Start")
- row.prop(scene, "frame_end", text="End")
+ row.prop(scene, "frame_start", text=_("Start"))
+ row.prop(scene, "frame_end", text=_("End"))
else:
- row.prop(scene, "frame_preview_start", text="Start")
- row.prop(scene, "frame_preview_end", text="End")
+ row.prop(scene, "frame_preview_start", text=_("Start"))
+ row.prop(scene, "frame_preview_end", text=_("End"))
layout.prop(scene, "frame_current", text="")
@@ -143,14 +144,14 @@ class TIME_MT_frame(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("marker.add", text="Add Marker")
- layout.operator("marker.duplicate", text="Duplicate Marker")
- layout.operator("marker.delete", text="Delete Marker")
+ layout.operator("marker.add", text=_("Add Marker"))
+ layout.operator("marker.duplicate", text=_("Duplicate Marker"))
+ layout.operator("marker.delete", text=_("Delete Marker"))
layout.separator()
- layout.operator("marker.rename", text="Rename Marker")
- layout.operator("marker.move", text="Grab/Move Marker")
+ layout.operator("marker.rename", text=_("Rename Marker"))
+ layout.operator("marker.move", text=_("Grab/Move Marker"))
layout.separator()
@@ -182,8 +183,8 @@ class TIME_MT_playback(Menu):
layout.separator()
- layout.prop(scene, "use_frame_drop", text="Frame Dropping")
- layout.prop(scene, "use_audio_sync", text="AV-sync", icon='SPEAKER')
+ layout.prop(scene, "use_frame_drop", text=_("Frame Dropping"))
+ layout.prop(scene, "use_audio_sync", text=_("AV-sync"), icon='SPEAKER')
layout.prop(scene, "use_audio")
layout.prop(scene, "use_audio_scrub")
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index 13edc3471d2..d0e7ae5e609 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -23,6 +23,7 @@ import os
import addon_utils
from bpy.props import StringProperty, BoolProperty, EnumProperty
+from blf import gettext as _
def ui_items_general(col, context):
@@ -65,10 +66,10 @@ def opengl_lamp_buttons(column, lamp):
col = split.column()
col.active = lamp.use
row = col.row()
- row.label(text="Diffuse:")
+ row.label(text=_("Diffuse:"))
row.prop(lamp, "diffuse_color", text="")
row = col.row()
- row.label(text="Specular:")
+ row.label(text=_("Specular:"))
row.prop(lamp, "specular_color", text="")
col = split.column()
@@ -86,7 +87,7 @@ class USERPREF_HT_header(Header):
userpref = context.user_preferences
layout.operator_context = 'EXEC_AREA'
- layout.operator("wm.save_homefile", text="Save As Default")
+ layout.operator("wm.save_homefile", text=_("Save As Default"))
layout.operator_context = 'INVOKE_DEFAULT'
@@ -127,7 +128,7 @@ class USERPREF_MT_appconfigs(Menu):
preset_operator = "wm.appconfig_activate"
def draw(self, context):
- self.layout.operator("wm.appconfig_default", text="Blender (default)")
+ self.layout.operator("wm.appconfig_default", text=_("Blender (default)"))
# now draw the presets
Menu.draw_preset(self, context)
@@ -142,12 +143,12 @@ class USERPREF_MT_splash(Menu):
row = split.row()
row.label("")
row = split.row()
- row.label("Interaction:")
+ row.label(_("Interaction:"))
# XXX, no redraws
# text = bpy.path.display_name(context.window_manager.keyconfigs.active.name)
# if not text:
# text = "Blender (default)"
- row.menu("USERPREF_MT_appconfigs", text="Preset")
+ row.menu("USERPREF_MT_appconfigs", text=_("Preset"))
class USERPREF_PT_interface(Panel):
@@ -170,13 +171,13 @@ class USERPREF_PT_interface(Panel):
row = layout.row()
col = row.column()
- col.label(text="Display:")
+ col.label(text=_("Display:"))
col.prop(view, "show_tooltips")
col.prop(view, "show_tooltips_python")
- col.prop(view, "show_object_info", text="Object Info")
+ col.prop(view, "show_object_info", text=_("Object Info"))
col.prop(view, "show_large_cursors")
- col.prop(view, "show_view_name", text="View Name")
- col.prop(view, "show_playback_fps", text="Playback FPS")
+ col.prop(view, "show_view_name", text=_("View Name"))
+ col.prop(view, "show_playback_fps", text=_("Playback FPS"))
col.prop(view, "use_global_scene")
col.prop(view, "object_origin_size")
@@ -184,18 +185,18 @@ class USERPREF_PT_interface(Panel):
col.separator()
col.separator()
- col.prop(view, "show_mini_axis", text="Display Mini Axis")
+ col.prop(view, "show_mini_axis", text=_("Display Mini Axis"))
sub = col.column()
sub.active = view.show_mini_axis
- sub.prop(view, "mini_axis_size", text="Size")
- sub.prop(view, "mini_axis_brightness", text="Brightness")
+ sub.prop(view, "mini_axis_size", text=_("Size"))
+ sub.prop(view, "mini_axis_brightness", text=_("Brightness"))
col.separator()
row.separator()
row.separator()
col = row.column()
- col.label(text="View Manipulation:")
+ col.label(text=_("View Manipulation:"))
col.prop(view, "use_mouse_auto_depth")
col.prop(view, "use_zoom_to_mouse")
col.prop(view, "use_rotate_around_active")
@@ -211,8 +212,8 @@ class USERPREF_PT_interface(Panel):
col.separator()
col.separator()
- col.label(text="2D Viewports:")
- col.prop(view, "view2d_grid_spacing_min", text="Minimum Grid Spacing")
+ col.label(text=_("2D Viewports:"))
+ col.prop(view, "view2d_grid_spacing_min", text=_("Minimum Grid Spacing"))
col.prop(view, "timecode_style")
row.separator()
@@ -228,19 +229,19 @@ class USERPREF_PT_interface(Panel):
col.prop(view, "show_manipulator")
sub = col.column()
sub.active = view.show_manipulator
- sub.prop(view, "manipulator_size", text="Size")
- sub.prop(view, "manipulator_handle_size", text="Handle Size")
- sub.prop(view, "manipulator_hotspot", text="Hotspot")
+ sub.prop(view, "manipulator_size", text=_("Size"))
+ sub.prop(view, "manipulator_handle_size", text=_("Handle Size"))
+ sub.prop(view, "manipulator_hotspot", text=_("Hotspot"))
col.separator()
col.separator()
col.separator()
- col.label(text="Menus:")
+ col.label(text=_("Menus:"))
col.prop(view, "use_mouse_over_open")
- col.label(text="Menu Open Delay:")
- col.prop(view, "open_toplevel_delay", text="Top Level")
- col.prop(view, "open_sublevel_delay", text="Sub Level")
+ col.label(text=_("Menu Open Delay:"))
+ col.prop(view, "open_toplevel_delay", text=_("Top Level"))
+ col.prop(view, "open_sublevel_delay", text=_("Sub Level"))
col.separator()
@@ -267,97 +268,97 @@ class USERPREF_PT_edit(Panel):
row = layout.row()
col = row.column()
- col.label(text="Link Materials To:")
+ col.label(text=_("Link Materials To:"))
col.prop(edit, "material_link", text="")
col.separator()
col.separator()
col.separator()
- col.label(text="New Objects:")
+ col.label(text=_("New Objects:"))
col.prop(edit, "use_enter_edit_mode")
- col.label(text="Align To:")
+ col.label(text=_("Align To:"))
col.prop(edit, "object_align", text="")
col.separator()
col.separator()
col.separator()
- col.label(text="Undo:")
+ col.label(text=_("Undo:"))
col.prop(edit, "use_global_undo")
- col.prop(edit, "undo_steps", text="Steps")
- col.prop(edit, "undo_memory_limit", text="Memory Limit")
+ col.prop(edit, "undo_steps", text=_("Steps"))
+ col.prop(edit, "undo_memory_limit", text=_("Memory Limit"))
row.separator()
row.separator()
col = row.column()
- col.label(text="Grease Pencil:")
- col.prop(edit, "grease_pencil_manhattan_distance", text="Manhattan Distance")
- col.prop(edit, "grease_pencil_euclidean_distance", text="Euclidean Distance")
+ col.label(text=_("Grease Pencil:"))
+ col.prop(edit, "grease_pencil_manhattan_distance", text=_("Manhattan Distance"))
+ col.prop(edit, "grease_pencil_euclidean_distance", text=_("Euclidean Distance"))
#col.prop(edit, "use_grease_pencil_simplify_stroke", text="Simplify Stroke")
- col.prop(edit, "grease_pencil_eraser_radius", text="Eraser Radius")
- col.prop(edit, "use_grease_pencil_smooth_stroke", text="Smooth Stroke")
+ col.prop(edit, "grease_pencil_eraser_radius", text=_("Eraser Radius"))
+ col.prop(edit, "use_grease_pencil_smooth_stroke", text=_("Smooth Stroke"))
col.separator()
col.separator()
col.separator()
- col.label(text="Playback:")
+ col.label(text=_("Playback:"))
col.prop(edit, "use_negative_frames")
row.separator()
row.separator()
col = row.column()
- col.label(text="Keyframing:")
+ col.label(text=_("Keyframing:"))
col.prop(edit, "use_visual_keying")
- col.prop(edit, "use_keyframe_insert_needed", text="Only Insert Needed")
+ col.prop(edit, "use_keyframe_insert_needed", text=_("Only Insert Needed"))
col.separator()
- col.prop(edit, "use_auto_keying", text="Auto Keyframing:")
+ col.prop(edit, "use_auto_keying", text=_("Auto Keyframing:"))
sub = col.column()
# sub.active = edit.use_keyframe_insert_auto # incorrect, timeline can enable
- sub.prop(edit, "use_keyframe_insert_available", text="Only Insert Available")
+ sub.prop(edit, "use_keyframe_insert_available", text=_("Only Insert Available"))
col.separator()
- col.label(text="New F-Curve Defaults:")
- col.prop(edit, "keyframe_new_interpolation_type", text="Interpolation")
- col.prop(edit, "keyframe_new_handle_type", text="Handles")
- col.prop(edit, "use_insertkey_xyz_to_rgb", text="XYZ to RGB")
+ col.label(text=_("New F-Curve Defaults:"))
+ col.prop(edit, "keyframe_new_interpolation_type", text=_("Interpolation"))
+ col.prop(edit, "keyframe_new_handle_type", text=_("Handles"))
+ col.prop(edit, "use_insertkey_xyz_to_rgb", text=_("XYZ to RGB"))
col.separator()
col.separator()
col.separator()
- col.label(text="Transform:")
+ col.label(text=_("Transform:"))
col.prop(edit, "use_drag_immediately")
row.separator()
row.separator()
col = row.column()
- col.prop(edit, "sculpt_paint_overlay_color", text="Sculpt Overlay Color")
+ col.prop(edit, "sculpt_paint_overlay_color", text=_("Sculpt Overlay Color"))
col.separator()
col.separator()
col.separator()
- col.label(text="Duplicate Data:")
- col.prop(edit, "use_duplicate_mesh", text="Mesh")
- col.prop(edit, "use_duplicate_surface", text="Surface")
- col.prop(edit, "use_duplicate_curve", text="Curve")
- col.prop(edit, "use_duplicate_text", text="Text")
- col.prop(edit, "use_duplicate_metaball", text="Metaball")
- col.prop(edit, "use_duplicate_armature", text="Armature")
- col.prop(edit, "use_duplicate_lamp", text="Lamp")
- col.prop(edit, "use_duplicate_material", text="Material")
- col.prop(edit, "use_duplicate_texture", text="Texture")
- #col.prop(edit, "use_duplicate_fcurve", text="F-Curve")
- col.prop(edit, "use_duplicate_action", text="Action")
- col.prop(edit, "use_duplicate_particle", text="Particle")
+ col.label(text=_("Duplicate Data:"))
+ col.prop(edit, "use_duplicate_mesh", text=_("Mesh"))
+ col.prop(edit, "use_duplicate_surface", text=_("Surface"))
+ col.prop(edit, "use_duplicate_curve", text=_("Curve"))
+ col.prop(edit, "use_duplicate_text", text=_("Text"))
+ col.prop(edit, "use_duplicate_metaball", text=_("Metaball"))
+ col.prop(edit, "use_duplicate_armature", text=_("Armature"))
+ col.prop(edit, "use_duplicate_lamp", text=_("Lamp"))
+ col.prop(edit, "use_duplicate_material", text=_("Material"))
+ col.prop(edit, "use_duplicate_texture", text=_("Texture"))
+ #col.prop(edit, "use_duplicate_fcurve", text=_("F-Curve"))
+ col.prop(edit, "use_duplicate_action", text=_("Action"))
+ col.prop(edit, "use_duplicate_particle", text=_("Particle"))
class USERPREF_PT_system(Panel):
@@ -384,11 +385,11 @@ class USERPREF_PT_system(Panel):
colsplit = column.split(percentage=0.85)
col = colsplit.column()
- col.label(text="General:")
+ col.label(text=_("General:"))
col.prop(system, "dpi")
col.prop(system, "frame_server_port")
- col.prop(system, "scrollback", text="Console Scrollback")
- col.prop(system, "author", text="Author")
+ col.prop(system, "scrollback", text=_("Console Scrollback"))
+ col.prop(system, "author", text=_("Author"))
col.prop(system, "use_scripts_auto_execute")
col.prop(system, "use_tabs_as_spaces")
@@ -396,80 +397,66 @@ class USERPREF_PT_system(Panel):
col.separator()
col.separator()
- col.label(text="Sound:")
+ col.label(text=_("Sound:"))
col.row().prop(system, "audio_device", expand=True)
sub = col.column()
sub.active = system.audio_device != 'NONE'
#sub.prop(system, "use_preview_images")
- sub.prop(system, "audio_channels", text="Channels")
- sub.prop(system, "audio_mixing_buffer", text="Mixing Buffer")
- sub.prop(system, "audio_sample_rate", text="Sample Rate")
- sub.prop(system, "audio_sample_format", text="Sample Format")
+ sub.prop(system, "audio_channels", text=_("Channels"))
+ sub.prop(system, "audio_mixing_buffer", text=_("Mixing Buffer"))
+ sub.prop(system, "audio_sample_rate", text=_("Sample Rate"))
+ sub.prop(system, "audio_sample_format", text=_("Sample Format"))
col.separator()
col.separator()
col.separator()
- col.label(text="Screencast:")
+ col.label(text=_("Screencast:"))
col.prop(system, "screencast_fps")
col.prop(system, "screencast_wait_time")
col.separator()
col.separator()
col.separator()
- #column = split.column()
- #colsplit = column.split(percentage=0.85)
-
- # No translation in 2.5 yet
- #col.prop(system, "language")
- #col.label(text="Translate:")
- #col.prop(system, "use_translate_tooltips", text="Tooltips")
- #col.prop(system, "use_translate_buttons", text="Labels")
- #col.prop(system, "use_translate_toolbox", text="Toolbox")
-
- #col.separator()
-
- #col.prop(system, "use_textured_fonts")
-
# 2. Column
column = split.column()
colsplit = column.split(percentage=0.85)
col = colsplit.column()
- col.label(text="OpenGL:")
+ col.label(text=_("OpenGL:"))
col.prop(system, "gl_clip_alpha", slider=True)
col.prop(system, "use_mipmaps")
- col.label(text="Anisotropic Filtering")
+ col.label(text=_("Anisotropic Filtering"))
col.prop(system, "anisotropic_filter", text="")
col.prop(system, "use_vertex_buffer_objects")
#Anti-aliasing is disabled as it breaks broder/lasso select
#col.prop(system, "use_antialiasing")
- col.label(text="Window Draw Method:")
+ col.label(text=_("Window Draw Method:"))
col.prop(system, "window_draw_method", text="")
- col.label(text="Text Draw Options:")
+ col.label(text=_("Text Draw Options:"))
col.prop(system, "use_text_antialiasing")
- col.label(text="Textures:")
- col.prop(system, "gl_texture_limit", text="Limit Size")
- col.prop(system, "texture_time_out", text="Time Out")
- col.prop(system, "texture_collection_rate", text="Collection Rate")
+ col.label(text=_("Textures:"))
+ col.prop(system, "gl_texture_limit", text=_("Limit Size"))
+ col.prop(system, "texture_time_out", text=_("Time Out"))
+ col.prop(system, "texture_collection_rate", text=_("Collection Rate"))
col.separator()
col.separator()
col.separator()
- col.label(text="Sequencer:")
+ col.label(text=_("Sequencer:"))
col.prop(system, "prefetch_frames")
col.prop(system, "memory_cache_limit")
# 3. Column
column = split.column()
- column.label(text="Solid OpenGL lights:")
+ column.label(text=_("Solid OpenGL lights:"))
split = column.split(percentage=0.1)
split.label()
- split.label(text="Colors:")
- split.label(text="Direction:")
+ split.label(text=_("Colors:"))
+ split.label(text=_("Direction:"))
lamp = system.solid_lights[0]
opengl_lamp_buttons(column, lamp)
@@ -481,21 +468,27 @@ class USERPREF_PT_system(Panel):
opengl_lamp_buttons(column, lamp)
column.separator()
- column.separator()
- column.separator()
- column.label(text="Color Picker Type:")
+ column.label(text=_("Color Picker Type:"))
column.row().prop(system, "color_picker_type", text="")
column.separator()
- column.separator()
- column.separator()
- column.prop(system, "use_weight_color_range", text="Custom Weight Paint Range")
+ column.prop(system, "use_weight_color_range", text=_("Custom Weight Paint Range"))
sub = column.column()
sub.active = system.use_weight_color_range
sub.template_color_ramp(system, "weight_color_range", expand=True)
+ column.separator()
+
+ column.prop(system, "use_international_fonts")
+ if system.use_international_fonts:
+ column.prop(system, "language")
+ row = column.row()
+ row.label(text="Translate:")
+ row.prop(system, "use_translate_interface", text="Interface")
+ row.prop(system, "use_translate_tooltips", text="Tooltips")
+
class USERPREF_PT_theme(Panel):
bl_space_type = 'USER_PREFERENCES'
@@ -557,71 +550,71 @@ class USERPREF_PT_theme(Panel):
col = split.column()
ui = theme.user_interface.wcol_regular
- col.label(text="Regular:")
+ col.label(text=_("Regular:"))
ui_items_general(col, ui)
ui = theme.user_interface.wcol_tool
- col.label(text="Tool:")
+ col.label(text=_("Tool:"))
ui_items_general(col, ui)
ui = theme.user_interface.wcol_radio
- col.label(text="Radio Buttons:")
+ col.label(text=_("Radio Buttons:"))
ui_items_general(col, ui)
ui = theme.user_interface.wcol_text
- col.label(text="Text:")
+ col.label(text=_("Text:"))
ui_items_general(col, ui)
ui = theme.user_interface.wcol_option
- col.label(text="Option:")
+ col.label(text=_("Option:"))
ui_items_general(col, ui)
ui = theme.user_interface.wcol_toggle
- col.label(text="Toggle:")
+ col.label(text=_("Toggle:"))
ui_items_general(col, ui)
ui = theme.user_interface.wcol_num
- col.label(text="Number Field:")
+ col.label(text=_("Number Field:"))
ui_items_general(col, ui)
ui = theme.user_interface.wcol_numslider
- col.label(text="Value Slider:")
+ col.label(text=_("Value Slider:"))
ui_items_general(col, ui)
ui = theme.user_interface.wcol_box
- col.label(text="Box:")
+ col.label(text=_("Box:"))
ui_items_general(col, ui)
ui = theme.user_interface.wcol_menu
- col.label(text="Menu:")
+ col.label(text=_("Menu:"))
ui_items_general(col, ui)
ui = theme.user_interface.wcol_pulldown
- col.label(text="Pulldown:")
+ col.label(text=_("Pulldown:"))
ui_items_general(col, ui)
ui = theme.user_interface.wcol_menu_back
- col.label(text="Menu Back:")
+ col.label(text=_("Menu Back:"))
ui_items_general(col, ui)
ui = theme.user_interface.wcol_menu_item
- col.label(text="Menu Item:")
+ col.label(text=_("Menu Item:"))
ui_items_general(col, ui)
ui = theme.user_interface.wcol_scroll
- col.label(text="Scroll Bar:")
+ col.label(text=_("Scroll Bar:"))
ui_items_general(col, ui)
ui = theme.user_interface.wcol_progress
- col.label(text="Progress Bar:")
+ col.label(text=_("Progress Bar:"))
ui_items_general(col, ui)
ui = theme.user_interface.wcol_list_item
- col.label(text="List Item:")
+ col.label(text=_("List Item:"))
ui_items_general(col, ui)
ui = theme.user_interface.wcol_state
- col.label(text="State:")
+ col.label(text=_("State:"))
row = col.row()
@@ -657,7 +650,7 @@ class USERPREF_PT_theme(Panel):
col = split.column()
for i, ui in enumerate(theme.bone_color_sets):
- col.label(text="Color Set %d:" % (i + 1)) # i starts from 0
+ col.label(text=_("Color Set")+" %d:" % (i + 1)) # i starts from 0
row = col.row()
@@ -700,22 +693,22 @@ class USERPREF_PT_file(Panel):
split = layout.split(percentage=0.7)
col = split.column()
- col.label(text="File Paths:")
+ col.label(text=_("File Paths:"))
colsplit = col.split(percentage=0.95)
col1 = colsplit.split(percentage=0.3)
sub = col1.column()
- sub.label(text="Fonts:")
- sub.label(text="Textures:")
- sub.label(text="Texture Plugins:")
- sub.label(text="Sequence Plugins:")
- sub.label(text="Render Output:")
- sub.label(text="Scripts:")
- sub.label(text="Sounds:")
- sub.label(text="Temp:")
- sub.label(text="Image Editor:")
- sub.label(text="Animation Player:")
+ sub.label(text=_("Fonts:"))
+ sub.label(text=_("Textures:"))
+ sub.label(text=_("Texture Plugins:"))
+ sub.label(text=_("Sequence Plugins:"))
+ sub.label(text=_("Render Output:"))
+ sub.label(text=_("Scripts:"))
+ sub.label(text=_("Sounds:"))
+ sub.label(text=_("Temp:"))
+ sub.label(text=_("Image Editor:"))
+ sub.label(text=_("Animation Player:"))
sub = col1.column()
sub.prop(paths, "font_directory", text="")
@@ -732,7 +725,7 @@ class USERPREF_PT_file(Panel):
subsplit.prop(paths, "animation_player", text="")
col = split.column()
- col.label(text="Save & Load:")
+ col.label(text=_("Save & Load:"))
col.prop(paths, "use_relative_paths")
col.prop(paths, "use_file_compression")
col.prop(paths, "use_load_ui")
@@ -747,11 +740,11 @@ class USERPREF_PT_file(Panel):
col.prop(paths, "save_version")
col.prop(paths, "recent_files")
col.prop(paths, "use_save_preview_images")
- col.label(text="Auto Save:")
+ col.label(text=_("Auto Save:"))
col.prop(paths, "use_auto_save_temporary_files")
sub = col.column()
sub.active = paths.use_auto_save_temporary_files
- sub.prop(paths, "auto_save_time", text="Timer (mins)")
+ sub.prop(paths, "auto_save_time", text=_("Timer (mins)"))
from bl_ui.space_userpref_keymap import InputKeyMapPanel
@@ -773,7 +766,18 @@ class USERPREF_MT_ndof_settings(Menu):
layout.separator()
layout.label(text="orbit options")
- layout.prop(input_prefs, "ndof_orbit_invert_axes")
+ if input_prefs.view_rotate_method == 'TRACKBALL':
+ layout.prop(input_prefs, "ndof_roll_invert_axis")
+ layout.prop(input_prefs, "ndof_tilt_invert_axis")
+ layout.prop(input_prefs, "ndof_rotate_invert_axis")
+ else:
+ layout.prop(input_prefs, "ndof_orbit_invert_axes")
+
+ layout.separator()
+ layout.label(text="pan options")
+ layout.prop(input_prefs, "ndof_panx_invert_axis")
+ layout.prop(input_prefs, "ndof_pany_invert_axis")
+ layout.prop(input_prefs, "ndof_panz_invert_axis")
layout.separator()
layout.label(text="fly options")
@@ -796,7 +800,7 @@ class USERPREF_PT_input(Panel, InputKeyMapPanel):
col = row.column()
sub = col.column()
- sub.label(text="Presets:")
+ sub.label(text=_("Presets:"))
subrow = sub.row(align=True)
subrow.menu("USERPREF_MT_interaction_presets", text=bpy.types.USERPREF_MT_interaction_presets.bl_label)
@@ -804,19 +808,19 @@ class USERPREF_PT_input(Panel, InputKeyMapPanel):
subrow.operator("wm.interaction_preset_add", text="", icon='ZOOMOUT').remove_active = True
sub.separator()
- sub.label(text="Mouse:")
+ sub.label(text=_("Mouse:"))
sub1 = sub.column()
sub1.active = (inputs.select_mouse == 'RIGHT')
sub1.prop(inputs, "use_mouse_emulate_3_button")
sub.prop(inputs, "use_mouse_continuous")
sub.prop(inputs, "drag_threshold")
- sub.label(text="Select With:")
+ sub.label(text=_("Select With:"))
sub.row().prop(inputs, "select_mouse", expand=True)
sub = col.column()
- sub.label(text="Double Click:")
- sub.prop(inputs, "mouse_double_click_time", text="Speed")
+ sub.label(text=_("Double Click:"))
+ sub.prop(inputs, "mouse_double_click_time", text=_("Speed"))
sub.separator()
@@ -824,10 +828,10 @@ class USERPREF_PT_input(Panel, InputKeyMapPanel):
sub.separator()
- sub.label(text="Orbit Style:")
+ sub.label(text=_("Orbit Style:"))
sub.row().prop(inputs, "view_rotate_method", expand=True)
- sub.label(text="Zoom Style:")
+ sub.label(text=_("Zoom Style:"))
sub.row().prop(inputs, "view_zoom_method", text="")
if inputs.view_zoom_method in {'DOLLY', 'CONTINUE'}:
sub.row().prop(inputs, "view_zoom_axis", expand=True)
@@ -838,8 +842,8 @@ class USERPREF_PT_input(Panel, InputKeyMapPanel):
#col.separator()
sub = col.column()
- sub.label(text="Mouse Wheel:")
- sub.prop(inputs, "invert_zoom_wheel", text="Invert Wheel Zoom Direction")
+ sub.label(text=_("Mouse Wheel:"))
+ sub.prop(inputs, "invert_zoom_wheel", text=_("Invert Wheel Zoom Direction"))
#sub.prop(view, "wheel_scroll_lines", text="Scroll Lines")
col.separator()
@@ -877,9 +881,9 @@ class USERPREF_MT_addons_dev_guides(Menu):
# menu to open webpages with addons development guides
def draw(self, context):
layout = self.layout
- layout.operator('wm.url_open', text='API Concepts', icon='URL').url = 'http://wiki.blender.org/index.php/Dev:2.5/Py/API/Intro'
- layout.operator('wm.url_open', text='Addon Guidelines', icon='URL').url = 'http://wiki.blender.org/index.php/Dev:2.5/Py/Scripts/Guidelines/Addons'
- layout.operator('wm.url_open', text='How to share your addon', icon='URL').url = 'http://wiki.blender.org/index.php/Dev:Py/Sharing'
+ layout.operator('wm.url_open', text=_('API Concepts'), icon='URL').url = 'http://wiki.blender.org/index.php/Dev:2.5/Py/API/Intro'
+ layout.operator('wm.url_open', text=_('Addon Guidelines'), icon='URL').url = 'http://wiki.blender.org/index.php/Dev:2.5/Py/Scripts/Guidelines/Addons'
+ layout.operator('wm.url_open', text=_('How to share your addon'), icon='URL').url = 'http://wiki.blender.org/index.php/Dev:Py/Sharing'
class USERPREF_PT_addons(Panel):
@@ -934,10 +938,10 @@ class USERPREF_PT_addons(Panel):
split = layout.split(percentage=0.2)
col = split.column()
col.prop(context.window_manager, "addon_search", text="", icon='VIEWZOOM')
- col.label(text="Categories")
+ col.label(text=_("Categories"))
col.prop(context.window_manager, "addon_filter", expand=True)
- col.label(text="Supported Level")
+ col.label(text=_("Supported Level"))
col.prop(context.window_manager, "addon_support", expand=True)
col = split.column()
@@ -1014,23 +1018,23 @@ class USERPREF_PT_addons(Panel):
if info["show_expanded"]:
if info["description"]:
split = colsub.row().split(percentage=0.15)
- split.label(text='Description:')
+ split.label(text=_('Description:'))
split.label(text=info["description"])
if info["location"]:
split = colsub.row().split(percentage=0.15)
- split.label(text='Location:')
+ split.label(text=_('Location:'))
split.label(text=info["location"])
if info["author"]:
split = colsub.row().split(percentage=0.15)
- split.label(text='Author:')
+ split.label(text=_('Author:'))
split.label(text=info["author"])
if info["version"]:
split = colsub.row().split(percentage=0.15)
- split.label(text='Version:')
+ split.label(text=_('Version:'))
split.label(text='.'.join(str(x) for x in info["version"]))
if info["warning"]:
split = colsub.row().split(percentage=0.15)
- split.label(text="Warning:")
+ split.label(text=_("Warning:"))
split.label(text=' ' + info["warning"], icon='ERROR')
user_addon = USERPREF_PT_addons.is_user_addon(mod, user_addon_paths)
@@ -1038,13 +1042,13 @@ class USERPREF_PT_addons(Panel):
if tot_row:
split = colsub.row().split(percentage=0.15)
- split.label(text="Internet:")
+ split.label(text=_("Internet:"))
if info["wiki_url"]:
- split.operator("wm.url_open", text="Link to the Wiki", icon='HELP').url = info["wiki_url"]
+ split.operator("wm.url_open", text=_("Link to the Wiki"), icon='HELP').url = info["wiki_url"]
if info["tracker_url"]:
- split.operator("wm.url_open", text="Report a Bug", icon='URL').url = info["tracker_url"]
+ split.operator("wm.url_open", text=_("Report a Bug"), icon='URL').url = info["tracker_url"]
if user_addon:
- split.operator("wm.addon_remove", text="Remove", icon='CANCEL').module = mod.__name__
+ split.operator("wm.addon_remove", text=_("Remove"), icon='CANCEL').module = mod.__name__
for i in range(4 - tot_row):
split.separator()
@@ -1056,7 +1060,7 @@ class USERPREF_PT_addons(Panel):
if missing_modules and filter in {"All", "Enabled"}:
col.column().separator()
- col.column().label(text="Missing script files")
+ col.column().label(text=_("Missing script files"))
module_names = {mod.__name__ for mod, info in addons}
for module_name in sorted(missing_modules):
@@ -1093,8 +1097,8 @@ class WM_OT_addon_enable(Operator):
if info_ver > bpy.app.version:
self.report({'WARNING'}, ("This script was written Blender "
"version %d.%d.%d and might not "
- "function (correctly).\n"
- "The script is enabled though.") %
+ "function (correctly), "
+ "though it is enabled") %
info_ver)
return {'FINISHED'}
else:
diff --git a/release/scripts/startup/bl_ui/space_userpref_keymap.py b/release/scripts/startup/bl_ui/space_userpref_keymap.py
index 9ed1591cbf3..f8d77a1604b 100644
--- a/release/scripts/startup/bl_ui/space_userpref_keymap.py
+++ b/release/scripts/startup/bl_ui/space_userpref_keymap.py
@@ -20,6 +20,7 @@
import bpy
from bpy.types import Menu, Operator, OperatorProperties
import os
+from blf import gettext as _
KM_HIERARCHY = [
@@ -131,7 +132,7 @@ class USERPREF_MT_keyconfigs(Menu):
preset_operator = "wm.keyconfig_activate"
def draw(self, context):
- props = self.layout.operator("wm.context_set_value", text="Blender (default)")
+ props = self.layout.operator("wm.context_set_value", text=_("Blender (default)"))
props.data_path = "window_manager.keyconfigs.active"
props.value = "context.window_manager.keyconfigs.default"
@@ -182,7 +183,7 @@ class InputKeyMapPanel:
row = col.row()
row.prop(km, "show_expanded_children", text="", emboss=False)
- row.label(text=km.name)
+ row.label(text=_(km.name))
row.label()
row.label()
@@ -190,7 +191,7 @@ class InputKeyMapPanel:
if km.is_modal:
row.label(text="", icon='LINKED')
if km.is_user_modified:
- row.operator("wm.keymap_restore", text="Restore")
+ row.operator("wm.keymap_restore", text=_("Restore"))
else:
row.label()
@@ -201,7 +202,7 @@ class InputKeyMapPanel:
subcol = self.indented_layout(col, level + 1)
subrow = subcol.row()
subrow.prop(km, "show_expanded_items", text="", emboss=False)
- subrow.label(text="%s (Global)" % km.name)
+ subrow.label(text="%s " % _(km.name) + _("(Global)") )
else:
km.show_expanded_items = True
@@ -213,7 +214,7 @@ class InputKeyMapPanel:
# "Add New" at end of keymap item list
col = self.indented_layout(col, level + 1)
subcol = col.split(percentage=0.2).column()
- subcol.operator("wm.keyitem_add", text="Add New", icon='ZOOMIN')
+ subcol.operator("wm.keyitem_add", text=_("Add New"), icon='ZOOMIN')
col.separator()
@@ -261,7 +262,7 @@ class InputKeyMapPanel:
if km.is_modal:
row.prop(kmi, "propvalue", text="")
else:
- row.label(text=kmi.name)
+ row.label(text=_(kmi.name))
row = split.row()
row.prop(kmi, "map_type", text="")
@@ -350,7 +351,7 @@ class InputKeyMapPanel:
row.label()
if km.is_user_modified:
- row.operator("wm.keymap_restore", text="Restore")
+ row.operator("wm.keymap_restore", text=_("Restore"))
else:
row.label()
@@ -360,7 +361,7 @@ class InputKeyMapPanel:
# "Add New" at end of keymap item list
col = self.indented_layout(layout, 1)
subcol = col.split(percentage=0.2).column()
- subcol.operator("wm.keyitem_add", text="Add New", icon='ZOOMIN')
+ subcol.operator("wm.keyitem_add", text=_("Add New"), icon='ZOOMIN')
def draw_hierarchy(self, display_keymaps, layout):
for entry in KM_HIERARCHY:
@@ -381,7 +382,7 @@ class InputKeyMapPanel:
#row.prop_search(wm.keyconfigs, "active", wm, "keyconfigs", text="Key Config:")
text = bpy.path.display_name(context.window_manager.keyconfigs.active.name)
if not text:
- text = "Blender (default)"
+ text = _("Blender (default)")
row.menu("USERPREF_MT_keyconfigs", text=text)
row.operator("wm.keyconfig_preset_add", text="", icon="ZOOMIN")
row.operator("wm.keyconfig_preset_add", text="", icon="ZOOMOUT").remove_active = True
@@ -423,7 +424,7 @@ def export_properties(prefix, properties, lines=None):
class WM_OT_keyconfig_test(Operator):
"Test keyconfig for conflicts"
bl_idname = "wm.keyconfig_test"
- bl_label = "Test Key Configuration for Conflicts"
+ bl_label = _("Test Key Configuration for Conflicts")
def testEntry(self, kc, entry, src=None, parent=None):
result = False
@@ -597,7 +598,7 @@ class WM_OT_keyconfig_import(Operator):
class WM_OT_keyconfig_export(Operator):
"Export key configuration to a python script"
bl_idname = "wm.keyconfig_export"
- bl_label = "Export Key Configuration..."
+ bl_label = _("Export Key Configuration...")
filepath = StringProperty(
name="File Path",
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index 9f96df1eb66..2e86e875bab 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -19,6 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.types import Header, Menu, Operator, Panel
+from blf import gettext as _
class VIEW3D_HT_header(Header):
@@ -124,9 +125,9 @@ class ShowHideMenu():
def draw(self, context):
layout = self.layout
- layout.operator("%s.reveal" % self._operator_name, text="Show Hidden")
- layout.operator("%s.hide" % self._operator_name, text="Hide Selected")
- layout.operator("%s.hide" % self._operator_name, text="Hide Unselected").unselected = True
+ layout.operator("%s.reveal" % self._operator_name, text=_("Show Hidden"))
+ layout.operator("%s.hide" % self._operator_name, text=_("Hide Selected"))
+ layout.operator("%s.hide" % self._operator_name, text=_("Hide Unselected")).unselected = True
class VIEW3D_MT_transform(Menu):
@@ -145,35 +146,35 @@ class VIEW3D_MT_transform(Menu):
layout.separator()
- layout.operator("transform.tosphere", text="To Sphere")
- layout.operator("transform.shear", text="Shear")
- layout.operator("transform.warp", text="Warp")
- layout.operator("transform.push_pull", text="Push/Pull")
+ layout.operator("transform.tosphere", text=_("To Sphere"))
+ layout.operator("transform.shear", text=_("Shear"))
+ layout.operator("transform.warp", text=_("Warp"))
+ layout.operator("transform.push_pull", text=_("Push/Pull"))
layout.separator()
- layout.operator("transform.translate", text="Move Texture Space").texture_space = True
- layout.operator("transform.resize", text="Scale Texture Space").texture_space = True
+ layout.operator("transform.translate", text=_("Move Texture Space")).texture_space = True
+ layout.operator("transform.resize", text=_("Scale Texture Space")).texture_space = True
layout.separator()
obj = context.object
if obj.type == 'ARMATURE' and obj.mode in {'EDIT', 'POSE'} and obj.data.draw_type in {'BBONE', 'ENVELOPE'}:
- layout.operator("transform.transform", text="Scale Envelope/BBone").mode = 'BONE_SIZE'
+ layout.operator("transform.transform", text=_("Scale Envelope/BBone")).mode = 'BONE_SIZE'
if context.edit_object and context.edit_object.type == 'ARMATURE':
layout.operator("armature.align")
else:
layout.operator_context = 'EXEC_REGION_WIN'
- layout.operator("transform.transform", text="Align to Transform Orientation").mode = 'ALIGN' # XXX see alignmenu() in edit.c of b2.4x to get this working
+ layout.operator("transform.transform", text=_("Align to Transform Orientation")).mode = 'ALIGN' # XXX see alignmenu() in edit.c of b2.4x to get this working
layout.separator()
layout.operator_context = 'EXEC_AREA'
- layout.operator("object.origin_set", text="Geometry to Origin").type = 'GEOMETRY_ORIGIN'
- layout.operator("object.origin_set", text="Origin to Geometry").type = 'ORIGIN_GEOMETRY'
- layout.operator("object.origin_set", text="Origin to 3D Cursor").type = 'ORIGIN_CURSOR'
+ layout.operator("object.origin_set", text=_("Geometry to Origin")).type = 'GEOMETRY_ORIGIN'
+ layout.operator("object.origin_set", text=_("Origin to Geometry")).type = 'ORIGIN_GEOMETRY'
+ layout.operator("object.origin_set", text=_("Origin to 3D Cursor")).type = 'ORIGIN_CURSOR'
layout.separator()
@@ -191,32 +192,32 @@ class VIEW3D_MT_mirror(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("transform.mirror", text="Interactive Mirror")
+ layout.operator("transform.mirror", text=_("Interactive Mirror"))
layout.separator()
layout.operator_context = 'INVOKE_REGION_WIN'
- props = layout.operator("transform.mirror", text="X Global")
+ props = layout.operator("transform.mirror", text=_("X Global"))
props.constraint_axis = (True, False, False)
props.constraint_orientation = 'GLOBAL'
- props = layout.operator("transform.mirror", text="Y Global")
+ props = layout.operator("transform.mirror", text=_("Y Global"))
props.constraint_axis = (False, True, False)
props.constraint_orientation = 'GLOBAL'
- props = layout.operator("transform.mirror", text="Z Global")
+ props = layout.operator("transform.mirror", text=_("Z Global"))
props.constraint_axis = (False, False, True)
props.constraint_orientation = 'GLOBAL'
if context.edit_object:
layout.separator()
- props = layout.operator("transform.mirror", text="X Local")
+ props = layout.operator("transform.mirror", text=_("X Local"))
props.constraint_axis = (True, False, False)
props.constraint_orientation = 'LOCAL'
- props = layout.operator("transform.mirror", text="Y Local")
+ props = layout.operator("transform.mirror", text=_("Y Local"))
props.constraint_axis = (False, True, False)
props.constraint_orientation = 'LOCAL'
- props = layout.operator("transform.mirror", text="Z Local")
+ props = layout.operator("transform.mirror", text=_("Z Local"))
props.constraint_axis = (False, False, True)
props.constraint_orientation = 'LOCAL'
@@ -229,15 +230,15 @@ class VIEW3D_MT_snap(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("view3d.snap_selected_to_grid", text="Selection to Grid")
- layout.operator("view3d.snap_selected_to_cursor", text="Selection to Cursor")
+ layout.operator("view3d.snap_selected_to_grid", text=_("Selection to Grid"))
+ layout.operator("view3d.snap_selected_to_cursor", text=_("Selection to Cursor"))
layout.separator()
- layout.operator("view3d.snap_cursor_to_selected", text="Cursor to Selected")
- layout.operator("view3d.snap_cursor_to_center", text="Cursor to Center")
- layout.operator("view3d.snap_cursor_to_grid", text="Cursor to Grid")
- layout.operator("view3d.snap_cursor_to_active", text="Cursor to Active")
+ layout.operator("view3d.snap_cursor_to_selected", text=_("Cursor to Selected"))
+ layout.operator("view3d.snap_cursor_to_center", text=_("Cursor to Center"))
+ layout.operator("view3d.snap_cursor_to_grid", text=_("Cursor to Grid"))
+ layout.operator("view3d.snap_cursor_to_active", text=_("Cursor to Active"))
class VIEW3D_MT_uv_map(Menu):
@@ -263,7 +264,7 @@ class VIEW3D_MT_uv_map(Menu):
layout.separator()
layout.operator("uv.project_from_view")
- layout.operator("uv.project_from_view", text="Project from View (Bounds)").scale_to_bounds = True
+ layout.operator("uv.project_from_view", text=_("Project from View (Bounds)")).scale_to_bounds = True
layout.separator()
@@ -284,15 +285,15 @@ class VIEW3D_MT_view(Menu):
layout.separator()
- layout.operator("view3d.viewnumpad", text="Camera").type = 'CAMERA'
- layout.operator("view3d.viewnumpad", text="Top").type = 'TOP'
- layout.operator("view3d.viewnumpad", text="Bottom").type = 'BOTTOM'
- layout.operator("view3d.viewnumpad", text="Front").type = 'FRONT'
- layout.operator("view3d.viewnumpad", text="Back").type = 'BACK'
- layout.operator("view3d.viewnumpad", text="Right").type = 'RIGHT'
- layout.operator("view3d.viewnumpad", text="Left").type = 'LEFT'
+ layout.operator("view3d.viewnumpad", text=_("Camera")).type = 'CAMERA'
+ layout.operator("view3d.viewnumpad", text=_("Top")).type = 'TOP'
+ layout.operator("view3d.viewnumpad", text=_("Bottom")).type = 'BOTTOM'
+ layout.operator("view3d.viewnumpad", text=_("Front")).type = 'FRONT'
+ layout.operator("view3d.viewnumpad", text=_("Back")).type = 'BACK'
+ layout.operator("view3d.viewnumpad", text=_("Right")).type = 'RIGHT'
+ layout.operator("view3d.viewnumpad", text=_("Left")).type = 'LEFT'
- layout.menu("VIEW3D_MT_view_cameras", text="Cameras")
+ layout.menu("VIEW3D_MT_view_cameras", text=_("Cameras"))
layout.separator()
@@ -307,22 +308,22 @@ class VIEW3D_MT_view(Menu):
layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("view3d.clip_border", text="Clipping Border...")
- layout.operator("view3d.zoom_border", text="Zoom Border...")
+ layout.operator("view3d.clip_border", text=_("Clipping Border..."))
+ layout.operator("view3d.zoom_border", text=_("Zoom Border..."))
layout.separator()
- layout.operator("view3d.layers", text="Show All Layers").nr = 0
+ layout.operator("view3d.layers", text=_("Show All Layers")).nr = 0
layout.separator()
- layout.operator("view3d.localview", text="View Global/Local")
+ layout.operator("view3d.localview", text=_("View Global/Local"))
layout.operator("view3d.view_selected")
layout.operator("view3d.view_all")
layout.separator()
- layout.operator("screen.animation_play", text="Playback Animation")
+ layout.operator("screen.animation_play", text=_("Playback Animation"))
layout.separator()
@@ -345,9 +346,9 @@ class VIEW3D_MT_view_navigation(Menu):
layout.separator()
- layout.operator("view3d.zoom", text="Zoom In").delta = 1
- layout.operator("view3d.zoom", text="Zoom Out").delta = -1
- layout.operator("view3d.zoom_camera_1_to_1", text="Zoom Camera 1:1")
+ layout.operator("view3d.zoom", text=_("Zoom In")).delta = 1
+ layout.operator("view3d.zoom", text=_("Zoom Out")).delta = -1
+ layout.operator("view3d.zoom_camera_1_to_1", text=_("Zoom Camera 1:1"))
layout.separator()
@@ -364,8 +365,8 @@ class VIEW3D_MT_view_align(Menu):
layout.separator()
- layout.operator("view3d.view_all", text="Center Cursor and View All").center = True
- layout.operator("view3d.camera_to_view", text="Align Active Camera to View")
+ layout.operator("view3d.view_all", text=_("Center Cursor and View All")).center = True
+ layout.operator("view3d.camera_to_view", text=_("Align Active Camera to View"))
layout.operator("view3d.view_selected")
layout.operator("view3d.view_center_cursor")
@@ -376,22 +377,22 @@ class VIEW3D_MT_view_align_selected(Menu):
def draw(self, context):
layout = self.layout
- props = layout.operator("view3d.viewnumpad", text="Top")
+ props = layout.operator("view3d.viewnumpad", text=_("Top"))
props.align_active = True
props.type = 'TOP'
- props = layout.operator("view3d.viewnumpad", text="Bottom")
+ props = layout.operator("view3d.viewnumpad", text=_("Bottom"))
props.align_active = True
props.type = 'BOTTOM'
- props = layout.operator("view3d.viewnumpad", text="Front")
+ props = layout.operator("view3d.viewnumpad", text=_("Front"))
props.align_active = True
props.type = 'FRONT'
- props = layout.operator("view3d.viewnumpad", text="Back")
+ props = layout.operator("view3d.viewnumpad", text=_("Back"))
props.align_active = True
props.type = 'BACK'
- props = layout.operator("view3d.viewnumpad", text="Right")
+ props = layout.operator("view3d.viewnumpad", text=_("Right"))
props.align_active = True
props.type = 'RIGHT'
- props = layout.operator("view3d.viewnumpad", text="Left")
+ props = layout.operator("view3d.viewnumpad", text=_("Left"))
props.align_active = True
props.type = 'LEFT'
@@ -403,7 +404,7 @@ class VIEW3D_MT_view_cameras(Menu):
layout = self.layout
layout.operator("view3d.object_as_camera")
- layout.operator("view3d.viewnumpad", text="Active Camera").type = 'CAMERA'
+ layout.operator("view3d.viewnumpad", text=_("Active Camera")).type = 'CAMERA'
# ********** Select menus, suffix from context.mode **********
@@ -419,19 +420,19 @@ class VIEW3D_MT_select_object(Menu):
layout.separator()
- layout.operator("object.select_all", text="Select/Deselect All")
- layout.operator("object.select_inverse", text="Inverse")
- layout.operator("object.select_random", text="Random")
- layout.operator("object.select_mirror", text="Mirror")
- layout.operator("object.select_by_layer", text="Select All by Layer")
- layout.operator_menu_enum("object.select_by_type", "type", text="Select All by Type...")
- layout.operator("object.select_camera", text="Select Camera")
+ layout.operator("object.select_all", text=_("Select/Deselect All"))
+ layout.operator("object.select_inverse", text=_("Inverse"))
+ layout.operator("object.select_random", text=_("Random"))
+ layout.operator("object.select_mirror", text=_("Mirror"))
+ layout.operator("object.select_by_layer", text=_("Select All by Layer"))
+ layout.operator_menu_enum("object.select_by_type", "type", text=_("Select All by Type..."))
+ layout.operator("object.select_camera", text=_("Select Camera"))
layout.separator()
- layout.operator_menu_enum("object.select_grouped", "type", text="Grouped")
- layout.operator_menu_enum("object.select_linked", "type", text="Linked")
- layout.operator("object.select_pattern", text="Select Pattern...")
+ layout.operator_menu_enum("object.select_grouped", "type", text=_("Grouped"))
+ layout.operator_menu_enum("object.select_linked", "type", text=_("Linked"))
+ layout.operator("object.select_pattern", text=_("Select Pattern..."))
class VIEW3D_MT_select_pose(Menu):
@@ -444,31 +445,31 @@ class VIEW3D_MT_select_pose(Menu):
layout.separator()
- layout.operator("pose.select_all", text="Select/Deselect All")
- layout.operator("pose.select_inverse", text="Inverse")
- layout.operator("pose.select_flip_active", text="Flip Active")
- layout.operator("pose.select_constraint_target", text="Constraint Target")
- layout.operator("pose.select_linked", text="Linked")
+ layout.operator("pose.select_all", text=_("Select/Deselect All"))
+ layout.operator("pose.select_inverse", text=_("Inverse"))
+ layout.operator("pose.select_flip_active", text=_("Flip Active"))
+ layout.operator("pose.select_constraint_target", text=_("Constraint Target"))
+ layout.operator("pose.select_linked", text=_("Linked"))
layout.separator()
- layout.operator("pose.select_hierarchy", text="Parent").direction = 'PARENT'
- layout.operator("pose.select_hierarchy", text="Child").direction = 'CHILD'
+ layout.operator("pose.select_hierarchy", text=_("Parent")).direction = 'PARENT'
+ layout.operator("pose.select_hierarchy", text=_("Child")).direction = 'CHILD'
layout.separator()
- props = layout.operator("pose.select_hierarchy", text="Extend Parent")
+ props = layout.operator("pose.select_hierarchy", text=_("Extend Parent"))
props.extend = True
props.direction = 'PARENT'
- props = layout.operator("pose.select_hierarchy", text="Extend Child")
+ props = layout.operator("pose.select_hierarchy", text=_("Extend Child"))
props.extend = True
props.direction = 'CHILD'
layout.separator()
- layout.operator_menu_enum("pose.select_grouped", "type", text="Grouped")
- layout.operator("object.select_pattern", text="Select Pattern...")
+ layout.operator_menu_enum("pose.select_grouped", "type", text=_("Grouped"))
+ layout.operator("object.select_pattern", text=_("Select Pattern..."))
class VIEW3D_MT_select_particle(Menu):
@@ -481,7 +482,7 @@ class VIEW3D_MT_select_particle(Menu):
layout.separator()
- layout.operator("particle.select_all", text="Select/Deselect All")
+ layout.operator("particle.select_all", text=_("Select/Deselect All"))
layout.operator("particle.select_linked")
layout.operator("particle.select_inverse")
@@ -492,8 +493,8 @@ class VIEW3D_MT_select_particle(Menu):
layout.separator()
- layout.operator("particle.select_roots", text="Roots")
- layout.operator("particle.select_tips", text="Tips")
+ layout.operator("particle.select_roots", text=_("Roots"))
+ layout.operator("particle.select_tips", text=_("Tips"))
class VIEW3D_MT_select_edit_mesh(Menu):
@@ -507,40 +508,40 @@ class VIEW3D_MT_select_edit_mesh(Menu):
layout.separator()
- layout.operator("mesh.select_all", text="Select/Deselect All")
- layout.operator("mesh.select_inverse", text="Inverse")
+ layout.operator("mesh.select_all", text=_("Select/Deselect All"))
+ layout.operator("mesh.select_inverse", text=_("Inverse"))
layout.separator()
- layout.operator("mesh.select_random", text="Random")
- layout.operator("mesh.select_nth", text="Every N Number of Verts")
- layout.operator("mesh.edges_select_sharp", text="Sharp Edges")
- layout.operator("mesh.faces_select_linked_flat", text="Linked Flat Faces")
- layout.operator("mesh.faces_select_interior", text="Interior Faces")
- layout.operator("mesh.select_axis", text="Side of Active")
+ layout.operator("mesh.select_random", text=_("Random"))
+ layout.operator("mesh.select_nth", text=_("Every N Number of Verts"))
+ layout.operator("mesh.edges_select_sharp", text=_("Sharp Edges"))
+ layout.operator("mesh.faces_select_linked_flat", text=_("Linked Flat Faces"))
+ layout.operator("mesh.faces_select_interior", text=_("Interior Faces"))
+ layout.operator("mesh.select_axis", text=_("Side of Active"))
layout.separator()
- layout.operator("mesh.select_by_number_vertices", text="Triangles").type = 'TRIANGLES'
- layout.operator("mesh.select_by_number_vertices", text="Quads").type = 'QUADS'
+ layout.operator("mesh.select_by_number_vertices", text=_("Triangles")).type = 'TRIANGLES'
+ layout.operator("mesh.select_by_number_vertices", text=_("Quads")).type = 'QUADS'
if context.scene.tool_settings.mesh_select_mode[2] == False:
- layout.operator("mesh.select_non_manifold", text="Non Manifold")
- layout.operator("mesh.select_by_number_vertices", text="Loose Verts/Edges").type = 'OTHER'
- layout.operator("mesh.select_similar", text="Similar")
+ layout.operator("mesh.select_non_manifold", text=_("Non Manifold"))
+ layout.operator("mesh.select_by_number_vertices", text=_("Loose Verts/Edges")).type = 'OTHER'
+ layout.operator("mesh.select_similar", text=_("Similar"))
layout.separator()
- layout.operator("mesh.select_less", text="Less")
- layout.operator("mesh.select_more", text="More")
+ layout.operator("mesh.select_less", text=_("Less"))
+ layout.operator("mesh.select_more", text=_("More"))
layout.separator()
- layout.operator("mesh.select_mirror", text="Mirror")
+ layout.operator("mesh.select_mirror", text=_("Mirror"))
- layout.operator("mesh.select_linked", text="Linked")
- layout.operator("mesh.select_vertex_path", text="Vertex Path")
- layout.operator("mesh.loop_multi_select", text="Edge Loop")
- layout.operator("mesh.loop_multi_select", text="Edge Ring").ring = True
+ layout.operator("mesh.select_linked", text=_("Linked"))
+ layout.operator("mesh.select_vertex_path", text=_("Vertex Path"))
+ layout.operator("mesh.loop_multi_select", text=_("Edge Loop"))
+ layout.operator("mesh.loop_multi_select", text=_("Edge Ring")).ring = True
layout.separator()
@@ -559,10 +560,10 @@ class VIEW3D_MT_select_edit_curve(Menu):
layout.separator()
- layout.operator("curve.select_all", text="Select/Deselect All")
+ layout.operator("curve.select_all", text=_("Select/Deselect All"))
layout.operator("curve.select_inverse")
layout.operator("curve.select_random")
- layout.operator("curve.select_nth", text="Every Nth Number of Points")
+ layout.operator("curve.select_nth", text=_("Every Nth Number of Points"))
layout.separator()
@@ -588,10 +589,10 @@ class VIEW3D_MT_select_edit_surface(Menu):
layout.separator()
- layout.operator("curve.select_all", text="Select/Deselect All")
+ layout.operator("curve.select_all", text=_("Select/Deselect All"))
layout.operator("curve.select_inverse")
layout.operator("curve.select_random")
- layout.operator("curve.select_nth", text="Every Nth Number of Points")
+ layout.operator("curve.select_nth", text=_("Every Nth Number of Points"))
layout.separator()
@@ -631,7 +632,7 @@ class VIEW3D_MT_select_edit_lattice(Menu):
layout.separator()
- layout.operator("lattice.select_all", text="Select/Deselect All")
+ layout.operator("lattice.select_all", text=_("Select/Deselect All"))
class VIEW3D_MT_select_edit_armature(Menu):
@@ -644,25 +645,25 @@ class VIEW3D_MT_select_edit_armature(Menu):
layout.separator()
- layout.operator("armature.select_all", text="Select/Deselect All")
- layout.operator("armature.select_inverse", text="Inverse")
+ layout.operator("armature.select_all", text=_("Select/Deselect All"))
+ layout.operator("armature.select_inverse", text=_("Inverse"))
layout.separator()
- layout.operator("armature.select_hierarchy", text="Parent").direction = 'PARENT'
- layout.operator("armature.select_hierarchy", text="Child").direction = 'CHILD'
+ layout.operator("armature.select_hierarchy", text=_("Parent")).direction = 'PARENT'
+ layout.operator("armature.select_hierarchy", text=_("Child")).direction = 'CHILD'
layout.separator()
- props = layout.operator("armature.select_hierarchy", text="Extend Parent")
+ props = layout.operator("armature.select_hierarchy", text=_("Extend Parent"))
props.extend = True
props.direction = 'PARENT'
- props = layout.operator("armature.select_hierarchy", text="Extend Child")
+ props = layout.operator("armature.select_hierarchy", text=_("Extend Child"))
props.extend = True
props.direction = 'CHILD'
- layout.operator("object.select_pattern", text="Select Pattern...")
+ layout.operator("object.select_pattern", text=_("Select Pattern..."))
class VIEW3D_MT_select_face(Menu): # XXX no matching enum
@@ -705,11 +706,11 @@ class VIEW3D_MT_object(Menu):
layout.operator("object.duplicate_move")
layout.operator("object.duplicate_move_linked")
- layout.operator("object.delete", text="Delete...")
- layout.operator("object.proxy_make", text="Make Proxy...")
- layout.menu("VIEW3D_MT_make_links", text="Make Links...")
+ layout.operator("object.delete", text=_("Delete..."))
+ layout.operator("object.proxy_make", text=_("Make Proxy..."))
+ layout.menu("VIEW3D_MT_make_links", text=_("Make Links..."))
layout.operator("object.make_dupli_face")
- layout.operator_menu_enum("object.make_local", "type", text="Make Local...")
+ layout.operator_menu_enum("object.make_local", "type", text=_("Make Local..."))
layout.menu("VIEW3D_MT_make_single_user")
layout.separator()
@@ -730,7 +731,7 @@ class VIEW3D_MT_object(Menu):
layout.separator()
- layout.operator("object.move_to_layer", text="Move to Layer...")
+ layout.operator("object.move_to_layer", text=_("Move to Layer..."))
layout.menu("VIEW3D_MT_object_showhide")
layout.operator_menu_enum("object.convert", "target")
@@ -742,9 +743,9 @@ class VIEW3D_MT_object_animation(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("anim.keyframe_insert_menu", text="Insert Keyframe...")
- layout.operator("anim.keyframe_delete_v3d", text="Delete Keyframe...")
- layout.operator("anim.keying_set_active_set", text="Change Keying Set...")
+ layout.operator("anim.keyframe_insert_menu", text=_("Insert Keyframe..."))
+ layout.operator("anim.keyframe_delete_v3d", text=_("Delete Keyframe..."))
+ layout.operator("anim.keying_set_active_set", text=_("Change Keying Set..."))
class VIEW3D_MT_object_clear(Menu):
@@ -753,10 +754,10 @@ class VIEW3D_MT_object_clear(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("object.location_clear", text="Location")
- layout.operator("object.rotation_clear", text="Rotation")
- layout.operator("object.scale_clear", text="Scale")
- layout.operator("object.origin_clear", text="Origin")
+ layout.operator("object.location_clear", text=_("Location"))
+ layout.operator("object.rotation_clear", text=_("Rotation"))
+ layout.operator("object.scale_clear", text=_("Scale"))
+ layout.operator("object.origin_clear", text=_("Origin"))
class VIEW3D_MT_object_specials(Menu):
@@ -775,19 +776,19 @@ class VIEW3D_MT_object_specials(Menu):
layout.operator_context = 'INVOKE_REGION_WIN'
if obj.data.type == 'PERSP':
- props = layout.operator("wm.context_modal_mouse", text="Camera Lens Angle")
+ props = layout.operator("wm.context_modal_mouse", text=_("Camera Lens Angle"))
props.data_path_iter = "selected_editable_objects"
props.data_path_item = "data.lens"
props.input_scale = 0.1
else:
- props = layout.operator("wm.context_modal_mouse", text="Camera Lens Scale")
+ props = layout.operator("wm.context_modal_mouse", text=_("Camera Lens Scale"))
props.data_path_iter = "selected_editable_objects"
props.data_path_item = "data.ortho_scale"
props.input_scale = 0.01
if not obj.data.dof_object:
#layout.label(text="Test Has DOF obj");
- props = layout.operator("wm.context_modal_mouse", text="DOF Distance")
+ props = layout.operator("wm.context_modal_mouse", text=_("DOF Distance"))
props.data_path_iter = "selected_editable_objects"
props.data_path_item = "data.dof_distance"
props.input_scale = 0.02
@@ -795,12 +796,12 @@ class VIEW3D_MT_object_specials(Menu):
if obj.type in {'CURVE', 'FONT'}:
layout.operator_context = 'INVOKE_REGION_WIN'
- props = layout.operator("wm.context_modal_mouse", text="Extrude Size")
+ props = layout.operator("wm.context_modal_mouse", text=_("Extrude Size"))
props.data_path_iter = "selected_editable_objects"
props.data_path_item = "data.extrude"
props.input_scale = 0.01
- props = layout.operator("wm.context_modal_mouse", text="Width Size")
+ props = layout.operator("wm.context_modal_mouse", text=_("Width Size"))
props.data_path_iter = "selected_editable_objects"
props.data_path_item = "data.offset"
props.input_scale = 0.01
@@ -808,7 +809,7 @@ class VIEW3D_MT_object_specials(Menu):
if obj.type == 'EMPTY':
layout.operator_context = 'INVOKE_REGION_WIN'
- props = layout.operator("wm.context_modal_mouse", text="Empty Draw Size")
+ props = layout.operator("wm.context_modal_mouse", text=_("Empty Draw Size"))
props.data_path_iter = "selected_editable_objects"
props.data_path_item = "empty_draw_size"
props.input_scale = 0.01
@@ -816,34 +817,34 @@ class VIEW3D_MT_object_specials(Menu):
if obj.type == 'LAMP':
layout.operator_context = 'INVOKE_REGION_WIN'
- props = layout.operator("wm.context_modal_mouse", text="Energy")
+ props = layout.operator("wm.context_modal_mouse", text=_("Energy"))
props.data_path_iter = "selected_editable_objects"
props.data_path_item = "data.energy"
if obj.data.type in {'SPOT', 'AREA', 'POINT'}:
- props = layout.operator("wm.context_modal_mouse", text="Falloff Distance")
+ props = layout.operator("wm.context_modal_mouse", text=_("Falloff Distance"))
props.data_path_iter = "selected_editable_objects"
props.data_path_item = "data.distance"
props.input_scale = 0.1
if obj.data.type == 'SPOT':
layout.separator()
- props = layout.operator("wm.context_modal_mouse", text="Spot Size")
+ props = layout.operator("wm.context_modal_mouse", text=_("Spot Size"))
props.data_path_iter = "selected_editable_objects"
props.data_path_item = "data.spot_size"
props.input_scale = 0.01
- props = layout.operator("wm.context_modal_mouse", text="Spot Blend")
+ props = layout.operator("wm.context_modal_mouse", text=_("Spot Blend"))
props.data_path_iter = "selected_editable_objects"
props.data_path_item = "data.spot_blend"
props.input_scale = -0.01
- props = layout.operator("wm.context_modal_mouse", text="Clip Start")
+ props = layout.operator("wm.context_modal_mouse", text=_("Clip Start"))
props.data_path_iter = "selected_editable_objects"
props.data_path_item = "data.shadow_buffer_clip_start"
props.input_scale = 0.05
- props = layout.operator("wm.context_modal_mouse", text="Clip End")
+ props = layout.operator("wm.context_modal_mouse", text=_("Clip End"))
props.data_path_iter = "selected_editable_objects"
props.data_path_item = "data.shadow_buffer_clip_end"
props.input_scale = 0.05
@@ -860,16 +861,16 @@ class VIEW3D_MT_object_apply(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("object.transform_apply", text="Location").location = True
- layout.operator("object.transform_apply", text="Rotation").rotation = True
- layout.operator("object.transform_apply", text="Scale").scale = True
- props = layout.operator("object.transform_apply", text="Rotation & Scale")
+ layout.operator("object.transform_apply", text=_("Location")).location = True
+ layout.operator("object.transform_apply", text=_("Rotation")).rotation = True
+ layout.operator("object.transform_apply", text=_("Scale")).scale = True
+ props = layout.operator("object.transform_apply", text=_("Rotation & Scale"))
props.scale = True
props.rotation = True
layout.separator()
- layout.operator("object.visual_transform_apply", text="Visual Transform")
+ layout.operator("object.visual_transform_apply", text=_("Visual Transform"))
layout.operator("object.duplicates_make_real")
@@ -879,8 +880,8 @@ class VIEW3D_MT_object_parent(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("object.parent_set", text="Set")
- layout.operator("object.parent_clear", text="Clear")
+ layout.operator("object.parent_set", text=_("Set"))
+ layout.operator("object.parent_clear", text=_("Clear"))
class VIEW3D_MT_object_track(Menu):
@@ -889,8 +890,8 @@ class VIEW3D_MT_object_track(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("object.track_set", text="Set")
- layout.operator("object.track_clear", text="Clear")
+ layout.operator("object.track_set", text=_("Set"))
+ layout.operator("object.track_clear", text=_("Clear"))
class VIEW3D_MT_object_group(Menu):
@@ -925,9 +926,9 @@ class VIEW3D_MT_object_showhide(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("object.hide_view_clear", text="Show Hidden")
- layout.operator("object.hide_view_set", text="Hide Selected")
- layout.operator("object.hide_view_set", text="Hide Unselected").unselected = True
+ layout.operator("object.hide_view_clear", text=_("Show Hidden"))
+ layout.operator("object.hide_view_set", text=_("Hide Selected"))
+ layout.operator("object.hide_view_set", text=_("Hide Unselected")).unselected = True
class VIEW3D_MT_make_single_user(Menu):
@@ -936,19 +937,19 @@ class VIEW3D_MT_make_single_user(Menu):
def draw(self, context):
layout = self.layout
- props = layout.operator("object.make_single_user", text="Object")
+ props = layout.operator("object.make_single_user", text=_("Object"))
props.object = True
- props = layout.operator("object.make_single_user", text="Object & Data")
+ props = layout.operator("object.make_single_user", text=_("Object & Data"))
props.object = props.obdata = True
- props = layout.operator("object.make_single_user", text="Object & Data & Materials+Tex")
+ props = layout.operator("object.make_single_user", text=_("Object & Data & Materials+Tex"))
props.object = props.obdata = props.material = props.texture = True
- props = layout.operator("object.make_single_user", text="Materials+Tex")
+ props = layout.operator("object.make_single_user", text=_("Materials+Tex"))
props.material = props.texture = True
- props = layout.operator("object.make_single_user", text="Object Animation")
+ props = layout.operator("object.make_single_user", text=_("Object Animation"))
props.animation = True
@@ -960,11 +961,11 @@ class VIEW3D_MT_make_links(Menu):
if(len(bpy.data.scenes) > 10):
layout.operator_context = 'INVOKE_DEFAULT'
- layout.operator("object.make_links_scene", text="Objects to Scene...", icon='OUTLINER_OB_EMPTY')
- layout.operator("object.make_links_scene", text="Markers to Scene...", icon='OUTLINER_OB_EMPTY')
+ layout.operator("object.make_links_scene", text=_("Objects to Scene..."), icon='OUTLINER_OB_EMPTY')
+ layout.operator("object.make_links_scene", text=_("Markers to Scene..."), icon='OUTLINER_OB_EMPTY')
else:
- layout.operator_menu_enum("object.make_links_scene", "scene", text="Objects to Scene...")
- layout.operator_menu_enum("marker.make_links_scene", "scene", text="Markers to Scene...")
+ layout.operator_menu_enum("object.make_links_scene", "scene", text=_("Objects to Scene..."))
+ layout.operator_menu_enum("marker.make_links_scene", "scene", text=_("Markers to Scene..."))
layout.operator_enum("object.make_links_data", "type") # inline
@@ -975,13 +976,13 @@ class VIEW3D_MT_object_game(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("object.logic_bricks_copy", text="Copy Logic Bricks")
+ layout.operator("object.logic_bricks_copy", text=_("Copy Logic Bricks"))
layout.separator()
- layout.operator("object.game_property_copy", text="Replace Properties").operation = 'REPLACE'
- layout.operator("object.game_property_copy", text="Merge Properties").operation = 'MERGE'
- layout.operator_menu_enum("object.game_property_copy", "property", text="Copy Properties...")
+ layout.operator("object.game_property_copy", text=_("Replace Properties")).operation = 'REPLACE'
+ layout.operator("object.game_property_copy", text=_("Merge Properties")).operation = 'MERGE'
+ layout.operator_menu_enum("object.game_property_copy", "property", text=_("Copy Properties..."))
layout.separator()
@@ -1031,21 +1032,21 @@ class VIEW3D_MT_vertex_group(Menu):
def draw(self, context):
layout = self.layout
layout.operator_context = 'EXEC_AREA'
- layout.operator("object.vertex_group_assign", text="Assign to New Group").new = True
+ layout.operator("object.vertex_group_assign", text=_("Assign to New Group")).new = True
ob = context.active_object
if ob.mode == 'EDIT':
if ob.vertex_groups.active:
layout.separator()
- layout.operator("object.vertex_group_assign", text="Assign to Active Group")
- layout.operator("object.vertex_group_remove_from", text="Remove from Active Group")
- layout.operator("object.vertex_group_remove_from", text="Remove from All").all = True
+ layout.operator("object.vertex_group_assign", text=_("Assign to Active Group"))
+ layout.operator("object.vertex_group_remove_from", text=_("Remove from Active Group"))
+ layout.operator("object.vertex_group_remove_from", text=_("Remove from All")).all = True
layout.separator()
if ob.vertex_groups.active:
- layout.operator_menu_enum("object.vertex_group_set_active", "group", text="Set Active Group")
- layout.operator("object.vertex_group_remove", text="Remove Active Group")
- layout.operator("object.vertex_group_remove", text="Remove All Groups").all = True
+ layout.operator_menu_enum("object.vertex_group_set_active", "group", text=_("Set Active Group"))
+ layout.operator("object.vertex_group_remove", text=_("Remove Active Group"))
+ layout.operator("object.vertex_group_remove", text=_("Remove All Groups")).all = True
# ********** Weight paint menu **********
@@ -1062,16 +1063,17 @@ class VIEW3D_MT_paint_weight(Menu):
layout.separator()
- layout.operator("paint.weight_from_bones", text="Assign Automatic From Bones").type = 'AUTOMATIC'
- layout.operator("paint.weight_from_bones", text="Assign From Bone Envelopes").type = 'ENVELOPES'
+ layout.operator("paint.weight_from_bones", text=_("Assign Automatic From Bones")).type = 'AUTOMATIC'
+ layout.operator("paint.weight_from_bones", text=_("Assign From Bone Envelopes")).type = 'ENVELOPES'
layout.separator()
- layout.operator("object.vertex_group_normalize_all", text="Normalize All")
- layout.operator("object.vertex_group_normalize", text="Normalize")
- layout.operator("object.vertex_group_invert", text="Invert")
- layout.operator("object.vertex_group_clean", text="Clean")
- layout.operator("object.vertex_group_levels", text="Levels")
+ layout.operator("object.vertex_group_normalize_all", text=_("Normalize All"))
+ layout.operator("object.vertex_group_normalize", text=_("Normalize"))
+ layout.operator("object.vertex_group_invert", text=_("Invert"))
+ layout.operator("object.vertex_group_clean", text=_("Clean"))
+ layout.operator("object.vertex_group_levels", text=_("Levels"))
+ layout.operator("object.vertex_group_fix", text="Fix Deforms")
layout.separator()
@@ -1120,12 +1122,12 @@ class VIEW3D_MT_sculpt(Menu):
layout.operator("sculpt.set_persistent_base")
layout.separator()
- layout.prop(sculpt, "use_threaded", text="Threaded Sculpt")
+ layout.prop(sculpt, "use_threaded", text=_("Threaded Sculpt"))
layout.prop(sculpt, "show_brush")
# TODO, make availabel from paint menu!
- layout.prop(tool_settings, "sculpt_paint_use_unified_size", text="Unify Size")
- layout.prop(tool_settings, "sculpt_paint_use_unified_strength", text="Unify Strength")
+ layout.prop(tool_settings, "sculpt_paint_use_unified_size", text=_("Unify Size"))
+ layout.prop(tool_settings, "sculpt_paint_use_unified_strength", text=_("Unify Strength"))
# ********** Particle menu **********
@@ -1218,7 +1220,7 @@ class VIEW3D_MT_pose(Menu):
layout.operator("pose.copy")
layout.operator("pose.paste")
- layout.operator("pose.paste", text="Paste X-Flipped Pose").flipped = True
+ layout.operator("pose.paste", text=_("Paste X-Flipped Pose")).flipped = True
layout.separator()
@@ -1235,9 +1237,9 @@ class VIEW3D_MT_pose(Menu):
layout.separator()
layout.operator_context = 'EXEC_AREA'
- layout.operator("pose.autoside_names", text="AutoName Left/Right").axis = 'XAXIS'
- layout.operator("pose.autoside_names", text="AutoName Front/Back").axis = 'YAXIS'
- layout.operator("pose.autoside_names", text="AutoName Top/Bottom").axis = 'ZAXIS'
+ layout.operator("pose.autoside_names", text=_("AutoName Left/Right")).axis = 'XAXIS'
+ layout.operator("pose.autoside_names", text=_("AutoName Front/Back")).axis = 'YAXIS'
+ layout.operator("pose.autoside_names", text=_("AutoName Top/Bottom")).axis = 'ZAXIS'
layout.operator("pose.flip_names")
@@ -1246,13 +1248,13 @@ class VIEW3D_MT_pose(Menu):
layout.separator()
layout.operator_context = 'INVOKE_AREA'
- layout.operator("pose.armature_layers", text="Change Armature Layers...")
- layout.operator("pose.bone_layers", text="Change Bone Layers...")
+ layout.operator("pose.armature_layers", text=_("Change Armature Layers..."))
+ layout.operator("pose.bone_layers", text=_("Change Bone Layers..."))
layout.separator()
layout.menu("VIEW3D_MT_pose_showhide")
- layout.menu("VIEW3D_MT_bone_options_toggle", text="Bone Settings")
+ layout.menu("VIEW3D_MT_bone_options_toggle", text=_("Bone Settings"))
class VIEW3D_MT_pose_transform(Menu):
@@ -1261,17 +1263,17 @@ class VIEW3D_MT_pose_transform(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("pose.transforms_clear", text="All")
+ layout.operator("pose.transforms_clear", text=_("All"))
layout.separator()
- layout.operator("pose.loc_clear", text="Location")
- layout.operator("pose.rot_clear", text="Rotation")
- layout.operator("pose.scale_clear", text="Scale")
+ layout.operator("pose.loc_clear", text=_("Location"))
+ layout.operator("pose.rot_clear", text=_("Rotation"))
+ layout.operator("pose.scale_clear", text=_("Scale"))
layout.separator()
- layout.operator("pose.user_transforms_clear", text="Reset unkeyed")
+ layout.operator("pose.user_transforms_clear", text=_("Reset unkeyed"))
class VIEW3D_MT_pose_slide(Menu):
@@ -1295,12 +1297,12 @@ class VIEW3D_MT_pose_propagate(Menu):
layout.separator()
- layout.operator("pose.propagate", text="To Next Keyframe").mode = 'NEXT_KEY'
- layout.operator("pose.propagate", text="To Last Keyframe (Make Cyclic)").mode = 'LAST_KEY'
+ layout.operator("pose.propagate", text=_("To Next Keyframe")).mode = 'NEXT_KEY'
+ layout.operator("pose.propagate", text=_("To Last Keyframe (Make Cyclic)")).mode = 'LAST_KEY'
layout.separator()
- layout.operator("pose.propagate", text="On Selected Markers").mode = 'SELECTED_MARKERS'
+ layout.operator("pose.propagate", text=_("On Selected Markers")).mode = 'SELECTED_MARKERS'
class VIEW3D_MT_pose_library(Menu):
@@ -1309,13 +1311,13 @@ class VIEW3D_MT_pose_library(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("poselib.browse_interactive", text="Browse Poses...")
+ layout.operator("poselib.browse_interactive", text=_("Browse Poses..."))
layout.separator()
- layout.operator("poselib.pose_add", text="Add Pose...")
- layout.operator("poselib.pose_rename", text="Rename Pose...")
- layout.operator("poselib.pose_remove", text="Remove Pose...")
+ layout.operator("poselib.pose_add", text=_("Add Pose..."))
+ layout.operator("poselib.pose_rename", text=_("Rename Pose..."))
+ layout.operator("poselib.pose_remove", text=_("Remove Pose..."))
class VIEW3D_MT_pose_motion(Menu):
@@ -1324,8 +1326,8 @@ class VIEW3D_MT_pose_motion(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("pose.paths_calculate", text="Calculate")
- layout.operator("pose.paths_clear", text="Clear")
+ layout.operator("pose.paths_calculate", text=_("Calculate"))
+ layout.operator("pose.paths_clear", text=_("Clear"))
class VIEW3D_MT_pose_group(Menu):
@@ -1358,7 +1360,7 @@ class VIEW3D_MT_pose_constraints(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("pose.constraint_add_with_targets", text="Add (With Targets)...")
+ layout.operator("pose.constraint_add_with_targets", text=_("Add (With Targets)..."))
layout.operator("pose.constraints_copy")
layout.operator("pose.constraints_clear")
@@ -1368,7 +1370,7 @@ class VIEW3D_MT_pose_showhide(ShowHideMenu, Menu):
class VIEW3D_MT_pose_apply(Menu):
- bl_label = "Apply"
+ bl_label = _("Apply")
def draw(self, context):
layout = self.layout
@@ -1443,14 +1445,14 @@ class VIEW3D_MT_edit_mesh(Menu):
layout.separator()
- layout.menu("VIEW3D_MT_uv_map", text="UV Unwrap...")
+ layout.menu("VIEW3D_MT_uv_map", text=_("UV Unwrap..."))
layout.separator()
- layout.operator("view3d.edit_mesh_extrude_move_normal", text="Extrude Region")
- layout.operator("view3d.edit_mesh_extrude_individual_move", text="Extrude Individual")
+ layout.operator("view3d.edit_mesh_extrude_move_normal", text=_("Extrude Region"))
+ layout.operator("view3d.edit_mesh_extrude_individual_move", text=_("Extrude Individual"))
layout.operator("mesh.duplicate_move")
- layout.operator("mesh.delete", text="Delete...")
+ layout.operator("mesh.delete", text=_("Delete..."))
layout.separator()
@@ -1478,15 +1480,15 @@ class VIEW3D_MT_edit_mesh_specials(Menu):
layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("mesh.subdivide", text="Subdivide")
- layout.operator("mesh.subdivide", text="Subdivide Smooth").smoothness = 1.0
- layout.operator("mesh.merge", text="Merge...")
+ layout.operator("mesh.subdivide", text=_("Subdivide"))
+ layout.operator("mesh.subdivide", text=_("Subdivide Smooth")).smoothness = 1.0
+ layout.operator("mesh.merge", text=_("Merge..."))
layout.operator("mesh.remove_doubles")
- layout.operator("mesh.hide", text="Hide")
- layout.operator("mesh.reveal", text="Reveal")
+ layout.operator("mesh.hide", text=_("Hide"))
+ layout.operator("mesh.reveal", text=_("Reveal"))
layout.operator("mesh.select_inverse")
layout.operator("mesh.flip_normals")
- layout.operator("mesh.vertices_smooth", text="Smooth")
+ layout.operator("mesh.vertices_smooth", text=_("Smooth"))
# layout.operator("mesh.bevel", text="Bevel")
layout.operator("mesh.faces_shade_smooth")
layout.operator("mesh.faces_shade_flat")
@@ -1503,15 +1505,15 @@ class VIEW3D_MT_edit_mesh_select_mode(Menu):
layout.operator_context = 'INVOKE_REGION_WIN'
- prop = layout.operator("wm.context_set_value", text="Vertex", icon='VERTEXSEL')
+ prop = layout.operator("wm.context_set_value", text=_("Vertex"), icon='VERTEXSEL')
prop.value = "(True, False, False)"
prop.data_path = "tool_settings.mesh_select_mode"
- prop = layout.operator("wm.context_set_value", text="Edge", icon='EDGESEL')
+ prop = layout.operator("wm.context_set_value", text=_("Edge"), icon='EDGESEL')
prop.value = "(False, True, False)"
prop.data_path = "tool_settings.mesh_select_mode"
- prop = layout.operator("wm.context_set_value", text="Face", icon='FACESEL')
+ prop = layout.operator("wm.context_set_value", text=_("Face"), icon='FACESEL')
prop.value = "(False, False, True)"
prop.data_path = "tool_settings.mesh_select_mode"
@@ -1520,10 +1522,10 @@ class VIEW3D_MT_edit_mesh_extrude(Menu):
bl_label = "Extrude"
_extrude_funcs = { \
- "VERT": lambda layout: layout.operator("mesh.extrude_vertices_move", text="Vertices Only"),
- "EDGE": lambda layout: layout.operator("mesh.extrude_edges_move", text="Edges Only"),
- "FACE": lambda layout: layout.operator("mesh.extrude_faces_move", text="Individual Faces"),
- "REGION": lambda layout: layout.operator("view3d.edit_mesh_extrude_move_normal", text="Region"),
+ "VERT": lambda layout: layout.operator("mesh.extrude_vertices_move", text=_("Vertices Only")),
+ "EDGE": lambda layout: layout.operator("mesh.extrude_edges_move", text=_("Edges Only")),
+ "FACE": lambda layout: layout.operator("mesh.extrude_faces_move", text=_("Individual Faces")),
+ "REGION": lambda layout: layout.operator("view3d.edit_mesh_extrude_move_normal", text=_("Region")),
}
@staticmethod
@@ -1650,28 +1652,28 @@ class VIEW3D_MT_edit_mesh_edges(Menu):
layout.separator()
layout.operator("mesh.mark_seam")
- layout.operator("mesh.mark_seam", text="Clear Seam").clear = True
+ layout.operator("mesh.mark_seam", text=_("Clear Seam")).clear = True
layout.separator()
layout.operator("mesh.mark_sharp")
- layout.operator("mesh.mark_sharp", text="Clear Sharp").clear = True
+ layout.operator("mesh.mark_sharp", text=_("Clear Sharp")).clear = True
layout.separator()
- layout.operator("mesh.edge_rotate", text="Rotate Edge CW").direction = 'CW'
- layout.operator("mesh.edge_rotate", text="Rotate Edge CCW").direction = 'CCW'
+ layout.operator("mesh.edge_rotate", text=_("Rotate Edge CW")).direction = 'CW'
+ layout.operator("mesh.edge_rotate", text=_("Rotate Edge CCW")).direction = 'CCW'
layout.separator()
layout.operator("TRANSFORM_OT_edge_slide")
layout.operator("TRANSFORM_OT_edge_crease")
- layout.operator("mesh.loop_multi_select", text="Edge Loop")
+ layout.operator("mesh.loop_multi_select", text=_("Edge Loop"))
# uiItemO(layout, "Loopcut", 0, "mesh.loop_cut"); // CutEdgeloop(em, 1);
# uiItemO(layout, "Edge Slide", 0, "mesh.edge_slide"); // EdgeSlide(em, 0,0.0);
- layout.operator("mesh.loop_multi_select", text="Edge Ring").ring = True
+ layout.operator("mesh.loop_multi_select", text=_("Edge Ring")).ring = True
layout.operator("mesh.loop_to_region")
layout.operator("mesh.region_to_loop")
@@ -1715,7 +1717,7 @@ class VIEW3D_MT_edit_mesh_faces(Menu):
# uiItemO(layout, NULL, 0, "mesh.face_mode"); // mesh_set_face_flags(em, 1);
# uiItemBooleanO(layout, NULL, 0, "mesh.face_mode", "clear", 1); // mesh_set_face_flags(em, 0);
- layout.operator("mesh.edge_rotate", text="Rotate Edge CW").direction = 'CW'
+ layout.operator("mesh.edge_rotate", text=_("Rotate Edge CW")).direction = 'CW'
layout.separator()
@@ -1731,8 +1733,8 @@ class VIEW3D_MT_edit_mesh_normals(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("mesh.normals_make_consistent", text="Recalculate Outside")
- layout.operator("mesh.normals_make_consistent", text="Recalculate Inside").inside = True
+ layout.operator("mesh.normals_make_consistent", text=_("Recalculate Outside"))
+ layout.operator("mesh.normals_make_consistent", text=_("Recalculate Inside")).inside = True
layout.separator()
@@ -1762,7 +1764,7 @@ def draw_curve(self, context):
layout.operator("curve.separate")
layout.operator("curve.make_segment")
layout.operator("curve.cyclic_toggle")
- layout.operator("curve.delete", text="Delete...")
+ layout.operator("curve.delete", text=_("Delete..."))
layout.separator()
@@ -1794,7 +1796,7 @@ class VIEW3D_MT_edit_curve_ctrlpoints(Menu):
edit_object = context.edit_object
if edit_object.type == 'CURVE':
- layout.operator("transform.transform", text="Tilt").mode = 'TILT'
+ layout.operator("transform.transform", text=_("Tilt")).mode = 'TILT'
layout.operator("curve.tilt_clear")
layout.operator("curve.separate")
@@ -1855,10 +1857,10 @@ class VIEW3D_MT_edit_font(Menu):
layout.separator()
- layout.operator("font.style_toggle", text="Toggle Bold").style = 'BOLD'
- layout.operator("font.style_toggle", text="Toggle Italic").style = 'ITALIC'
- layout.operator("font.style_toggle", text="Toggle Underline").style = 'UNDERLINE'
- layout.operator("font.style_toggle", text="Toggle Small Caps").style = 'SMALL_CAPS'
+ layout.operator("font.style_toggle", text=_("Toggle Bold")).style = 'BOLD'
+ layout.operator("font.style_toggle", text=_("Toggle Italic")).style = 'ITALIC'
+ layout.operator("font.style_toggle", text=_("Toggle Underline")).style = 'UNDERLINE'
+ layout.operator("font.style_toggle", text=_("Toggle Small Caps")).style = 'SMALL_CAPS'
class VIEW3D_MT_edit_text_chars(Menu):
@@ -1915,7 +1917,7 @@ class VIEW3D_MT_edit_meta(Menu):
layout.separator()
- layout.operator("mball.delete_metaelems", text="Delete...")
+ layout.operator("mball.delete_metaelems", text=_("Delete..."))
layout.operator("mball.duplicate_metaelems")
layout.separator()
@@ -1934,9 +1936,9 @@ class VIEW3D_MT_edit_meta_showhide(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("mball.reveal_metaelems", text="Show Hidden")
- layout.operator("mball.hide_metaelems", text="Hide Selected")
- layout.operator("mball.hide_metaelems", text="Hide Unselected").unselected = True
+ layout.operator("mball.reveal_metaelems", text=_("Show Hidden"))
+ layout.operator("mball.hide_metaelems", text=_("Hide Selected"))
+ layout.operator("mball.hide_metaelems", text=_("Hide Unselected")).unselected = True
class VIEW3D_MT_edit_lattice(Menu):
@@ -1990,15 +1992,15 @@ class VIEW3D_MT_edit_armature(Menu):
layout.separator()
- layout.operator("armature.subdivide", text="Subdivide")
- layout.operator("armature.switch_direction", text="Switch Direction")
+ layout.operator("armature.subdivide", text=_("Subdivide"))
+ layout.operator("armature.switch_direction", text=_("Switch Direction"))
layout.separator()
layout.operator_context = 'EXEC_AREA'
- layout.operator("armature.autoside_names", text="AutoName Left/Right").type = 'XAXIS'
- layout.operator("armature.autoside_names", text="AutoName Front/Back").type = 'YAXIS'
- layout.operator("armature.autoside_names", text="AutoName Top/Bottom").type = 'ZAXIS'
+ layout.operator("armature.autoside_names", text=_("AutoName Left/Right")).type = 'XAXIS'
+ layout.operator("armature.autoside_names", text=_("AutoName Front/Back")).type = 'YAXIS'
+ layout.operator("armature.autoside_names", text=_("AutoName Top/Bottom")).type = 'ZAXIS'
layout.operator("armature.flip_names")
layout.separator()
@@ -2013,7 +2015,7 @@ class VIEW3D_MT_edit_armature(Menu):
layout.separator()
- layout.menu("VIEW3D_MT_bone_options_toggle", text="Bone Settings")
+ layout.menu("VIEW3D_MT_bone_options_toggle", text=_("Bone Settings"))
class VIEW3D_MT_armature_specials(Menu):
@@ -2024,16 +2026,16 @@ class VIEW3D_MT_armature_specials(Menu):
layout.operator_context = 'INVOKE_REGION_WIN'
- layout.operator("armature.subdivide", text="Subdivide")
- layout.operator("armature.switch_direction", text="Switch Direction")
+ layout.operator("armature.subdivide", text=_("Subdivide"))
+ layout.operator("armature.switch_direction", text=_("Switch Direction"))
layout.separator()
layout.operator_context = 'EXEC_REGION_WIN'
- layout.operator("armature.autoside_names", text="AutoName Left/Right").type = 'XAXIS'
- layout.operator("armature.autoside_names", text="AutoName Front/Back").type = 'YAXIS'
- layout.operator("armature.autoside_names", text="AutoName Top/Bottom").type = 'ZAXIS'
- layout.operator("armature.flip_names", text="Flip Names")
+ layout.operator("armature.autoside_names", text=_("AutoName Left/Right")).type = 'XAXIS'
+ layout.operator("armature.autoside_names", text=_("AutoName Front/Back")).type = 'YAXIS'
+ layout.operator("armature.autoside_names", text=_("AutoName Top/Bottom")).type = 'ZAXIS'
+ layout.operator("armature.flip_names", text=_("Flip Names"))
class VIEW3D_MT_edit_armature_parent(Menu):
@@ -2042,8 +2044,8 @@ class VIEW3D_MT_edit_armature_parent(Menu):
def draw(self, context):
layout = self.layout
- layout.operator("armature.parent_set", text="Make")
- layout.operator("armature.parent_clear", text="Clear")
+ layout.operator("armature.parent_set", text=_("Make"))
+ layout.operator("armature.parent_clear", text=_("Clear"))
class VIEW3D_MT_edit_armature_roll(Menu):
@@ -2056,7 +2058,7 @@ class VIEW3D_MT_edit_armature_roll(Menu):
layout.separator()
- layout.operator("transform.transform", text="Set Roll").mode = 'BONE_ROLL'
+ layout.operator("transform.transform", text=_("Set Roll")).mode = 'BONE_ROLL'
# ********** Panel **********
@@ -2079,26 +2081,26 @@ class VIEW3D_PT_view3d_properties(Panel):
col = layout.column()
col.active = view.region_3d.view_perspective != 'CAMERA'
col.prop(view, "lens")
- col.label(text="Lock to Object:")
+ col.label(text=_("Lock to Object:"))
col.prop(view, "lock_object", text="")
lock_object = view.lock_object
if lock_object:
if lock_object.type == 'ARMATURE':
col.prop_search(view, "lock_bone", lock_object.data, "edit_bones" if lock_object.mode == 'EDIT' else "bones", text="")
else:
- col.prop(view, "lock_cursor", text="Lock to Cursor")
+ col.prop(view, "lock_cursor", text=_("Lock to Cursor"))
col = layout.column()
col.prop(view, "lock_camera")
col = layout.column(align=True)
- col.label(text="Clip:")
- col.prop(view, "clip_start", text="Start")
- col.prop(view, "clip_end", text="End")
+ col.label(text=_("Clip:"))
+ col.prop(view, "clip_start", text=_("Start"))
+ col.prop(view, "clip_end", text=_("End"))
subcol = col.column()
subcol.enabled = not view.lock_camera_and_layers
- subcol.label(text="Local Camera:")
+ subcol.label(text=_("Local Camera:"))
subcol.prop(view, "camera", text="")
layout.column().prop(view, "cursor_location")
@@ -2164,7 +2166,7 @@ class VIEW3D_PT_view3d_display(Panel):
col = layout.column()
col.active = display_all
split = col.split(percentage=0.55)
- split.prop(view, "show_floor", text="Grid Floor")
+ split.prop(view, "show_floor", text=_("Grid Floor"))
row = split.row(align=True)
row.prop(view, "show_axis_x", text="X", toggle=True)
@@ -2173,14 +2175,14 @@ class VIEW3D_PT_view3d_display(Panel):
sub = col.column(align=True)
sub.active = (display_all and view.show_floor)
- sub.prop(view, "grid_lines", text="Lines")
- sub.prop(view, "grid_scale", text="Scale")
+ sub.prop(view, "grid_lines", text=_("Lines"))
+ sub.prop(view, "grid_scale", text=_("Scale"))
subsub = sub.column(align=True)
subsub.active = scene.unit_settings.system == 'NONE'
- subsub.prop(view, "grid_subdivisions", text="Subdivisions")
+ subsub.prop(view, "grid_subdivisions", text=_("Subdivisions"))
col = layout.column()
- col.label(text="Shading:")
+ col.label(text=_("Shading:"))
col.prop(gs, "material_mode", text="")
col.prop(view, "show_textured_solid")
@@ -2188,7 +2190,7 @@ class VIEW3D_PT_view3d_display(Panel):
region = view.region_quadview
- layout.operator("screen.region_quadview", text="Toggle Quad View")
+ layout.operator("screen.region_quadview", text=_("Toggle Quad View"))
if region:
col = layout.column()
@@ -2217,22 +2219,22 @@ class VIEW3D_PT_view3d_meshdisplay(Panel):
mesh = context.active_object.data
col = layout.column()
- col.label(text="Overlays:")
- col.prop(mesh, "show_edges", text="Edges")
- col.prop(mesh, "show_faces", text="Faces")
- col.prop(mesh, "show_edge_crease", text="Creases")
- col.prop(mesh, "show_edge_bevel_weight", text="Bevel Weights")
- col.prop(mesh, "show_edge_seams", text="Seams")
- col.prop(mesh, "show_edge_sharp", text="Sharp")
+ col.label(text=_("Overlays:"))
+ col.prop(mesh, "show_edges", text=_("Edges"))
+ col.prop(mesh, "show_faces", text=_("Faces"))
+ col.prop(mesh, "show_edge_crease", text=_("Creases"))
+ col.prop(mesh, "show_edge_bevel_weight", text=_("Bevel Weights"))
+ col.prop(mesh, "show_edge_seams", text=_("Seams"))
+ col.prop(mesh, "show_edge_sharp", text=_("Sharp"))
col.separator()
- col.label(text="Normals:")
- col.prop(mesh, "show_normal_face", text="Face")
- col.prop(mesh, "show_normal_vertex", text="Vertex")
- col.prop(context.scene.tool_settings, "normal_size", text="Normal Size")
+ col.label(text=_("Normals:"))
+ col.prop(mesh, "show_normal_face", text=_("Face"))
+ col.prop(mesh, "show_normal_vertex", text=_("Vertex"))
+ col.prop(context.scene.tool_settings, "normal_size", text=_("Normal Size"))
col.separator()
- col.label(text="Numerics:")
+ col.label(text=_("Numerics:"))
col.prop(mesh, "show_extra_edge_length")
col.prop(mesh, "show_extra_face_angle")
col.prop(mesh, "show_extra_face_area")
@@ -2254,10 +2256,10 @@ class VIEW3D_PT_view3d_curvedisplay(Panel):
curve = context.active_object.data
col = layout.column()
- col.label(text="Overlays:")
- col.prop(curve, "show_handles", text="Handles")
- col.prop(curve, "show_normal_face", text="Normals")
- col.prop(context.scene.tool_settings, "normal_size", text="Normal Size")
+ col.label(text=_("Overlays:"))
+ col.prop(curve, "show_handles", text=_("Handles"))
+ col.prop(curve, "show_normal_face", text=_("Normals"))
+ col.prop(context.scene.tool_settings, "normal_size", text=_("Normal Size"))
class VIEW3D_PT_background_image(Panel):
@@ -2284,7 +2286,7 @@ class VIEW3D_PT_background_image(Panel):
view = context.space_data
col = layout.column()
- col.operator("view3d.background_image_add", text="Add Image")
+ col.operator("view3d.background_image_add", text=_("Add Image"))
for i, bg in enumerate(view.background_images):
layout.active = view.show_background_images
@@ -2294,10 +2296,10 @@ class VIEW3D_PT_background_image(Panel):
if bg.image:
row.prop(bg.image, "name", text="", emboss=False)
else:
- row.label(text="Not Set")
+ row.label(text=_("Not Set"))
row.operator("view3d.background_image_remove", text="", emboss=False, icon='X').index = i
- box.prop(bg, "view_axis", text="Axis")
+ box.prop(bg, "view_axis", text=_("Axis"))
if bg.show_expanded:
row = box.row()
@@ -2332,13 +2334,13 @@ class VIEW3D_PT_transform_orientations(Panel):
col = layout.column()
col.prop(view, "transform_orientation")
- col.operator("transform.create_orientation", text="Create")
+ col.operator("transform.create_orientation", text=_("Create"))
orientation = view.current_orientation
if orientation:
col.prop(orientation, "name")
- col.operator("transform.delete_orientation", text="Delete")
+ col.operator("transform.delete_orientation", text=_("Delete"))
class VIEW3D_PT_etch_a_ton(Panel):
@@ -2383,7 +2385,7 @@ class VIEW3D_PT_etch_a_ton(Panel):
col.prop(toolsettings, "etch_number")
col.prop(toolsettings, "etch_side")
- col.operator("sketch.convert", text="Convert")
+ col.operator("sketch.convert", text=_("Convert"))
class VIEW3D_PT_context_properties(Panel):
diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index b71593add96..6bd2168dab9 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -19,6 +19,7 @@
# <pep8 compliant>
import bpy
from bpy.types import Menu, Panel
+from blf import gettext as _
class View3DPanel():
@@ -31,30 +32,33 @@ class View3DPanel():
# History/Repeat tools
def draw_repeat_tools(context, layout):
col = layout.column(align=True)
- col.label(text="Repeat:")
+ col.label(text=_("Repeat:"))
col.operator("screen.repeat_last")
- col.operator("screen.repeat_history", text="History...")
+ col.operator("screen.repeat_history", text=_("History..."))
# Keyframing tools
def draw_keyframing_tools(context, layout):
col = layout.column(align=True)
- col.label(text="Keyframes:")
+ col.label(text=_("Keyframes:"))
row = col.row()
- row.operator("anim.keyframe_insert_menu", text="Insert")
- row.operator("anim.keyframe_delete_v3d", text="Remove")
+ row.operator("anim.keyframe_insert_menu", text=_("Insert"))
+ row.operator("anim.keyframe_delete_v3d", text=_("Remove"))
# Grease Pencil tools
def draw_gpencil_tools(context, layout):
col = layout.column(align=True)
- col.label(text="Grease Pencil:")
+ col.label(text=_("Grease Pencil:"))
row = col.row()
- row.operator("gpencil.draw", text="Draw").mode = 'DRAW'
- row.operator("gpencil.draw", text="Line").mode = 'DRAW_STRAIGHT'
- row.operator("gpencil.draw", text="Erase").mode = 'ERASER'
+ row.operator("gpencil.draw", text=_("Draw")).mode = 'DRAW'
+ row.operator("gpencil.draw", text=_("Line")).mode = 'DRAW_STRAIGHT'
+
+ row = col.row()
+ row.operator("gpencil.draw", text=_("Poly")).mode = 'DRAW_POLY'
+ row.operator("gpencil.draw", text=_("Erase")).mode = 'ERASER'
row = col.row()
row.prop(context.tool_settings, "use_grease_pencil_sessions")
@@ -70,16 +74,16 @@ class VIEW3D_PT_tools_objectmode(View3DPanel, Panel):
layout = self.layout
col = layout.column(align=True)
- col.label(text="Transform:")
+ col.label(text=_("Transform:"))
col.operator("transform.translate")
col.operator("transform.rotate")
- col.operator("transform.resize", text="Scale")
+ col.operator("transform.resize", text=_("Scale"))
col = layout.column(align=True)
- col.operator("object.origin_set", text="Origin")
+ col.operator("object.origin_set", text=_("Origin"))
col = layout.column(align=True)
- col.label(text="Object:")
+ col.label(text=_("Object:"))
col.operator("object.duplicate_move")
col.operator("object.delete")
col.operator("object.join")
@@ -88,17 +92,17 @@ class VIEW3D_PT_tools_objectmode(View3DPanel, Panel):
if active_object and active_object.type == 'MESH':
col = layout.column(align=True)
- col.label(text="Shading:")
+ col.label(text=_("Shading:"))
row = col.row(align=True)
- row.operator("object.shade_smooth", text="Smooth")
- row.operator("object.shade_flat", text="Flat")
+ row.operator("object.shade_smooth", text=_("Smooth"))
+ row.operator("object.shade_flat", text=_("Flat"))
draw_keyframing_tools(context, layout)
col = layout.column(align=True)
- col.label(text="Motion Paths:")
- col.operator("object.paths_calculate", text="Calculate Paths")
- col.operator("object.paths_clear", text="Clear Paths")
+ col.label(text=_("Motion Paths:"))
+ col.operator("object.paths_calculate", text=_("Calculate Paths"))
+ col.operator("object.paths_clear", text=_("Clear Paths"))
draw_repeat_tools(context, layout)
@@ -119,8 +123,8 @@ class VIEW3D_PT_tools_meshedit(View3DPanel, Panel):
col.operator("transform.translate")
col.operator("transform.rotate")
col.operator("transform.resize", text="Scale")
- col.operator("transform.shrink_fatten", text="Shrink/Fatten")
- col.operator("transform.push_pull", text="Push/Pull")
+ col.operator("transform.shrink_fatten", text=_("Shrink/Fatten"))
+ col.operator("transform.push_pull", text=_("Push/Pull"))
col = layout.column(align=True)
col.label(text="Deform:")
@@ -643,6 +647,7 @@ class VIEW3D_PT_tools_brush(PaintPanel, Panel):
elif context.weight_paint_object and brush:
layout.prop(context.tool_settings, "vertex_group_weight", text="Weight", slider=True)
layout.prop(context.tool_settings, "use_auto_normalize", text="Auto Normalize")
+ layout.prop(context.tool_settings, "use_multipaint", text="Multi-Paint")
col = layout.column()
@@ -765,9 +770,9 @@ class VIEW3D_PT_tools_brush_texture(PaintPanel, Panel):
col = row.column()
if brush.use_texture_overlay:
- col.prop(brush, "use_texture_overlay", toggle=True, text="", icon='MUTE_IPO_OFF')
+ col.prop(brush, "use_texture_overlay", toggle=True, text="", icon='RESTRICT_VIEW_OFF')
else:
- col.prop(brush, "use_texture_overlay", toggle=True, text="", icon='MUTE_IPO_ON')
+ col.prop(brush, "use_texture_overlay", toggle=True, text="", icon='RESTRICT_VIEW_ON')
col.active = tex_slot.map_mode in {'FIXED', 'TILED'}
@@ -1012,7 +1017,7 @@ class VIEW3D_PT_tools_brush_appearance(PaintPanel, Panel):
brush = settings.brush
if brush is None: # unlikely but can happen
- layout.label(text="Brush Unset")
+ layout.label(text=_("Brush Unset"))
return
col = layout.column()
@@ -1055,6 +1060,7 @@ class VIEW3D_PT_tools_weightpaint(View3DPanel, Panel):
col.operator("object.vertex_group_invert", text="Invert")
col.operator("object.vertex_group_clean", text="Clean")
col.operator("object.vertex_group_levels", text="Levels")
+ col.operator("object.vertex_group_fix", text="Fix Deforms")
class VIEW3D_PT_tools_weightpaint_options(View3DPanel, Panel):