diff options
Diffstat (limited to 'release')
56 files changed, 2707 insertions, 2662 deletions
diff --git a/release/bin/.blender/.Blanguages b/release/bin/.blender/.Blanguages index 9f3b3ef80dc..1a83c46039a 100644 --- a/release/bin/.blender/.Blanguages +++ b/release/bin/.blender/.Blanguages @@ -11,13 +11,14 @@ Catalan:ca_ES Czech:cs_CZ Brazilian Portuguese:pt_BR Simplified Chinese:zh_CN +Traditional Chinese:zh_TW Russian:ru_RU Croatian:hr_HR -Serbian:sr +Serbian:sr_RS Ukrainian:uk_UA Polish:pl_PL -Romanian:ro -Arabic:ar -Bulgarian:bg -Greek:el -Korean:ko +Romanian:ro_RO +Arabic:ar_SA +Bulgarian:bg_BG +Greek:el_GR +Korean:ko_KR diff --git a/release/bin/.blender/fonts/unifont.ttf.gz b/release/bin/.blender/fonts/unifont.ttf.gz Binary files differnew file mode 100755 index 00000000000..8d10371899c --- /dev/null +++ b/release/bin/.blender/fonts/unifont.ttf.gz diff --git a/release/scripts/modules/rna_prop_ui.py b/release/scripts/modules/rna_prop_ui.py index 388ae2b0e13..2d779f2ddda 100644 --- a/release/scripts/modules/rna_prop_ui.py +++ b/release/scripts/modules/rna_prop_ui.py @@ -19,7 +19,7 @@ # <pep8 compliant> import bpy - +from blf import gettext as _ def rna_idprop_ui_get(item, create=True): try: @@ -145,7 +145,7 @@ def draw(layout, context, context_member, property_type, use_edit=True): if use_edit: row = split.row(align=True) - prop = row.operator("wm.properties_edit", text="edit") + prop = row.operator("wm.properties_edit", text=_("edit")) assign_props(prop, val_draw, key) prop = row.operator("wm.properties_remove", text="", icon='ZOOMOUT') @@ -157,7 +157,7 @@ class PropertyPanel(): The subclass should have its own poll function and the variable '_context_path' MUST be set. """ - bl_label = "Custom Properties" + bl_label = _("Custom Properties") bl_options = {'DEFAULT_CLOSED'} @classmethod diff --git a/release/scripts/startup/bl_operators/animsys_update.py b/release/scripts/startup/bl_operators/animsys_update.py index 3710c57ac16..f1d0c3579ff 100644 --- a/release/scripts/startup/bl_operators/animsys_update.py +++ b/release/scripts/startup/bl_operators/animsys_update.py @@ -17,6 +17,7 @@ # ##### END GPL LICENSE BLOCK ##### # <pep8 compliant> +from blf import gettext as _ data_path_update = [ ("ClothCollisionSettings", "min_distance", "distance_min"), @@ -693,6 +694,7 @@ class UpdateAnimData(Operator): """Update data paths from 2.56 and previous versions, modifying data paths of drivers and fcurves""" bl_idname = "anim.update_data_paths" bl_label = "Update Animation Data" + __doc__ = _("Update data paths from 2.56 and previous versions, modifying data paths of drivers and fcurves") def execute(self, context): import animsys_refactor diff --git a/release/scripts/startup/bl_operators/object.py b/release/scripts/startup/bl_operators/object.py index 6c9f27afaa5..bd879fa8679 100644 --- a/release/scripts/startup/bl_operators/object.py +++ b/release/scripts/startup/bl_operators/object.py @@ -21,28 +21,29 @@ import bpy from bpy.types import Operator from bpy.props import StringProperty, BoolProperty, EnumProperty, IntProperty +from blf import gettext as _ class SelectPattern(Operator): '''Select object matching a naming pattern''' bl_idname = "object.select_pattern" - bl_label = "Select Pattern" + bl_label = _("Select Pattern") bl_options = {'REGISTER', 'UNDO'} pattern = StringProperty( - name="Pattern", - description="Name filter using '*' and '?' wildcard chars", + name=_("Pattern"), + description=_("Name filter using '*' and '?' wildcard chars"), maxlen=32, default="*", ) case_sensitive = BoolProperty( - name="Case Sensitive", - description="Do a case sensitive compare", + name=_("Case Sensitive"), + description=_("Do a case sensitive compare"), default=False, ) extend = BoolProperty( - name="Extend", - description="Extend the existing selection", + name=_("Extend"), + description=_("Extend the existing selection"), default=True, ) @@ -103,7 +104,7 @@ class SelectPattern(Operator): class SelectCamera(Operator): '''Select object matching a naming pattern''' bl_idname = "object.select_camera" - bl_label = "Select Camera" + bl_label = _("Select Camera") bl_options = {'REGISTER', 'UNDO'} @classmethod @@ -125,20 +126,20 @@ class SelectHierarchy(Operator): '''Select object relative to the active objects position''' \ '''in the hierarchy''' bl_idname = "object.select_hierarchy" - bl_label = "Select Hierarchy" + bl_label = _("Select Hierarchy") bl_options = {'REGISTER', 'UNDO'} direction = EnumProperty( - items=(('PARENT', "Parent", ""), - ('CHILD', "Child", ""), + items=(('PARENT', _("Parent"), ""), + ('CHILD', _("Child"), "") ), - name="Direction", - description="Direction to select in the hierarchy", + name=_("Direction"), + description=_("Direction to select in the hierarchy"), default='PARENT') extend = BoolProperty( - name="Extend", - description="Extend the existing selection", + name=_("Extend"), + description=_("Extend the existing selection"), default=False, ) @@ -192,20 +193,19 @@ class SubdivisionSet(Operator): '''Sets a Subdivision Surface Level (1-5)''' bl_idname = "object.subdivision_set" - bl_label = "Subdivision Set" + bl_label = _("Subdivision Set") bl_options = {'REGISTER', 'UNDO'} level = IntProperty( - name="Level", + name=_("Level"), min=-100, max=100, soft_min=-6, soft_max=6, default=1, ) relative = BoolProperty( - name="Relative", - description=("Apply the subsurf level as an offset " - "relative to the current level"), + name=_("Relative"), + description=_("Apply the subsurf level as an offset relative to the current level"), default=False, ) @@ -273,31 +273,30 @@ class ShapeTransfer(Operator): '''applying the relative offsets''' bl_idname = "object.shape_key_transfer" - bl_label = "Transfer Shape Key" + bl_label = _("Transfer Shape Key") bl_options = {'REGISTER', 'UNDO'} mode = EnumProperty( items=(('OFFSET', - "Offset", - "Apply the relative positional offset", + _("Offset"), + _("Apply the relative positional offset") ), ('RELATIVE_FACE', - "Relative Face", - "Calculate relative position (using faces).", + _("Relative Face"), + _("Calculate relative position (using faces)."), ), ('RELATIVE_EDGE', - "Relative Edge", - "Calculate relative position (using edges).", + _("Relative Edge"), + _("Calculate relative position (using edges)."), ), ), - name="Transformation Mode", - description="Relative shape positions to the new shape method", + name=_("Transformation Mode"), + description=_("Relative shape positions to the new shape method"), default='OFFSET', ) use_clamp = BoolProperty( - name="Clamp Offset", - description=("Clamp the transformation to the distance each " - "vertex moves in the original shape."), + name=_("Clamp Offset"), + description=_("Clamp the transformation to the distance each vertex moves in the original shape."), default=False, ) @@ -515,7 +514,7 @@ class ShapeTransfer(Operator): class JoinUVs(Operator): '''Copy UV Layout to objects with matching geometry''' bl_idname = "object.join_uvs" - bl_label = "Join as UVs" + bl_label = _("Join as UVs") @classmethod def poll(cls, context): @@ -583,7 +582,7 @@ class JoinUVs(Operator): class MakeDupliFace(Operator): '''Make linked objects into dupli-faces''' bl_idname = "object.make_dupli_face" - bl_label = "Make Dupli-Face" + bl_label = _("Make Dupli-Face") @classmethod def poll(cls, context): @@ -658,7 +657,7 @@ class IsolateTypeRender(Operator): '''Hide unselected render objects of same type as active ''' \ '''by setting the hide render flag''' bl_idname = "object.isolate_type_render" - bl_label = "Restrict Render Unselected" + bl_label = _("Restrict Render Unselected") bl_options = {'REGISTER', 'UNDO'} def execute(self, context): @@ -678,7 +677,7 @@ class IsolateTypeRender(Operator): class ClearAllRestrictRender(Operator): '''Reveal all render objects by setting the hide render flag''' bl_idname = "object.hide_render_clear_all" - bl_label = "Clear All Restrict Render" + bl_label = _("Clear All Restrict Render") bl_options = {'REGISTER', 'UNDO'} def execute(self, context): diff --git a/release/scripts/startup/bl_operators/object_align.py b/release/scripts/startup/bl_operators/object_align.py index 50e9bfb5b98..c70b33598b4 100644 --- a/release/scripts/startup/bl_operators/object_align.py +++ b/release/scripts/startup/bl_operators/object_align.py @@ -21,6 +21,7 @@ import bpy from bpy.types import Operator from mathutils import Vector +from blf import gettext as _ def GlobalBB_LQ(bb_world): @@ -343,18 +344,16 @@ from bpy.props import EnumProperty, BoolProperty class AlignObjects(Operator): '''Align Objects''' bl_idname = "object.align" - bl_label = "Align Objects" + bl_label = _("Align Objects") bl_options = {'REGISTER', 'UNDO'} bb_quality = BoolProperty( - name="High Quality", - description=("Enables high quality calculation of the " - "bounding box for perfect results on complex " - "shape meshes with rotation/scale (Slow)"), + name=_("High Quality"), + description=_("Enables high quality calculation of the bounding box for perfect results on complex shape meshes with rotation/scale (Slow)"), default=True, ) align_mode = EnumProperty( - name="Align Mode:", + name=_("Align Mode:"), items=(('OPT_1', "Negative Sides", ""), ('OPT_2', "Centers", ""), ('OPT_3', "Positive Sides", ""), @@ -362,7 +361,7 @@ class AlignObjects(Operator): default='OPT_2', ) relative_to = EnumProperty( - name="Relative To:", + name=_("Relative To:"), items=(('OPT_1', "Scene Origin", ""), ('OPT_2', "3D Cursor", ""), ('OPT_3', "Selection", ""), @@ -371,8 +370,8 @@ class AlignObjects(Operator): default='OPT_4', ) align_axis = EnumProperty( - name="Align", - description="Align to axis", + name=_("Align"), + description=_("Align to axis"), items=(('X', "X", ""), ('Y', "Y", ""), ('Z', "Z", ""), diff --git a/release/scripts/startup/bl_operators/object_quick_effects.py b/release/scripts/startup/bl_operators/object_quick_effects.py index 48b547980d4..7b616ea5dca 100644 --- a/release/scripts/startup/bl_operators/object_quick_effects.py +++ b/release/scripts/startup/bl_operators/object_quick_effects.py @@ -27,7 +27,7 @@ from bpy.props import (BoolProperty, FloatProperty, FloatVectorProperty, ) - +from blf import gettext as _ def object_ensure_material(obj, mat_name): """ Use an existing material or add a new one. @@ -306,8 +306,8 @@ class QuickSmoke(Operator): ) show_flows = BoolProperty( - name="Render Smoke Objects", - description="Keep the smoke objects visible during rendering.", + name=_("Render Smoke Objects"), + description=_("Keep the smoke objects visible during rendering."), default=False, ) @@ -420,21 +420,20 @@ class QuickFluid(Operator): default='BASIC', ) initial_velocity = FloatVectorProperty( - name="Initial Velocity", - description="Initial velocity of the fluid", + name=_("Initial Velocity"), + description=_("Initial velocity of the fluid"), min=-100.0, max=100.0, default=(0.0, 0.0, 0.0), subtype='VELOCITY', ) show_flows = BoolProperty( - name="Render Fluid Objects", - description="Keep the fluid objects visible during rendering.", + name=_("Render Fluid Objects"), + description=_("Keep the fluid objects visible during rendering."), default=False, ) start_baking = BoolProperty( - name="Start Fluid Bake", - description=("Start baking the fluid immediately " - "after creating the domain object"), + name=_("Start Fluid Bake"), + description=_("Start baking the fluid immediately after creating the domain object"), default=False, ) diff --git a/release/scripts/startup/bl_operators/object_randomize_transform.py b/release/scripts/startup/bl_operators/object_randomize_transform.py index 7aea18487f3..2f40741bb18 100644 --- a/release/scripts/startup/bl_operators/object_randomize_transform.py +++ b/release/scripts/startup/bl_operators/object_randomize_transform.py @@ -19,7 +19,9 @@ # <pep8-80 compliant> import bpy + from bpy.types import Operator +from blf import gettext as _ def randomize_selected(seed, delta, loc, rot, scale, scale_even): @@ -91,57 +93,55 @@ from bpy.props import IntProperty, BoolProperty, FloatVectorProperty class RandomizeLocRotSize(Operator): '''Randomize objects loc/rot/scale''' bl_idname = "object.randomize_transform" - bl_label = "Randomize Transform" + bl_label = _("Randomize Transform") bl_options = {'REGISTER', 'UNDO'} random_seed = IntProperty( - name="Random Seed", - description="Seed value for the random generator", + name=_("Random Seed"), + description=_("Seed value for the random generator"), min=0, max=1000, default=0, ) use_delta = BoolProperty( - name="Transform Delta", - description=("Randomize delta transform values " - "instead of regular transform"), + name=_("Transform Delta"), + description=_("Randomize delta transform values instead of regular transform"), default=False, ) use_loc = BoolProperty( - name="Randomize Location", - description="Randomize the location values", + name=_("Randomize Location"), + description=_("Randomize the location values"), default=True, ) loc = FloatVectorProperty( - name="Location", - description=("Maximun distance the objects " - "can spread over each axis"), + name=_("Location"), + description=_("Maximun distance the objects can spread over each axis"), min=-100.0, max=100.0, default=(0.0, 0.0, 0.0), subtype='TRANSLATION', ) use_rot = BoolProperty( - name="Randomize Rotation", - description="Randomize the rotation values", + name=_("Randomize Rotation"), + description=_("Randomize the rotation values"), default=True, ) rot = FloatVectorProperty( - name="Rotation", - description="Maximun rotation over each axis", + name=_("Rotation"), + description=_("Maximun rotation over each axis"), min=-180.0, max=180.0, default=(0.0, 0.0, 0.0), subtype='TRANSLATION', ) use_scale = BoolProperty( - name="Randomize Scale", - description="Randomize the scale values", + name=_("Randomize Scale"), + description=_("Randomize the scale values"), default=True, ) scale_even = BoolProperty( - name="Scale Even", - description="Use the same scale value for all axis", + name=_("Scale Even"), + description=_("Use the same scale value for all axis"), default=False, ) @@ -153,8 +153,8 @@ class RandomizeLocRotSize(Operator): )''' scale = FloatVectorProperty( - name="Scale", - description="Maximum scale randomization over each axis", + name=_("Scale"), + description=_("Maximum scale randomization over each axis"), min=-100.0, max=100.0, default=(0.0, 0.0, 0.0), diff --git a/release/scripts/startup/bl_operators/presets.py b/release/scripts/startup/bl_operators/presets.py index 2fd0c4a9e12..ec0a650dd40 100644 --- a/release/scripts/startup/bl_operators/presets.py +++ b/release/scripts/startup/bl_operators/presets.py @@ -20,6 +20,7 @@ import bpy from bpy.types import Menu, Operator +from blf import gettext as _ class AddPresetBase(): @@ -32,8 +33,8 @@ class AddPresetBase(): bl_options = {'REGISTER'} # only because invoke_props_popup requires. name = bpy.props.StringProperty( - name="Name", - description="Name of the preset, used to make the path name", + name=_("Name"), + description=_("Name of the preset, used to make the path name"), maxlen=64, ) remove_active = bpy.props.BoolProperty( @@ -144,16 +145,17 @@ class AddPresetBase(): class ExecutePreset(Operator): ''' Executes a preset ''' bl_idname = "script.execute_preset" - bl_label = "Execute a Python Preset" + bl_label = _("Execute a Python Preset") + __doc__ = _(" Executes a preset ") filepath = bpy.props.StringProperty( - name="Path", - description="Path of the Python file to execute", + name=_("Path"), + description=_("Path of the Python file to execute"), maxlen=512, ) menu_idname = bpy.props.StringProperty( - name="Menu ID Name", - description="ID name of the menu this was called from", + name=_("Menu ID Name"), + description=_("ID name of the menu this was called from"), ) def execute(self, context): @@ -172,7 +174,7 @@ class ExecutePreset(Operator): class AddPresetRender(AddPresetBase, Operator): '''Add a Render Preset''' bl_idname = "render.preset_add" - bl_label = "Add Render Preset" + bl_label = _("Add Render Preset") preset_menu = "RENDER_MT_presets" preset_defines = [ @@ -198,8 +200,9 @@ class AddPresetRender(AddPresetBase, Operator): class AddPresetSSS(AddPresetBase, Operator): '''Add a Subsurface Scattering Preset''' bl_idname = "material.sss_preset_add" - bl_label = "Add SSS Preset" + bl_label = _("Add SSS Preset") preset_menu = "MATERIAL_MT_sss_presets" + __doc__ = _("Add a Subsurface Scattering Preset") preset_defines = [ ("material = " @@ -226,7 +229,7 @@ class AddPresetSSS(AddPresetBase, Operator): class AddPresetCloth(AddPresetBase, Operator): '''Add a Cloth Preset''' bl_idname = "cloth.preset_add" - bl_label = "Add Cloth Preset" + bl_label = _("Add Cloth Preset") preset_menu = "CLOTH_MT_presets" preset_defines = [ @@ -248,7 +251,7 @@ class AddPresetCloth(AddPresetBase, Operator): class AddPresetSunSky(AddPresetBase, Operator): '''Add a Sky & Atmosphere Preset''' bl_idname = "lamp.sunsky_preset_add" - bl_label = "Add Sunsky Preset" + bl_label = _("Add Sunsky Preset") preset_menu = "LAMP_MT_sunsky_presets" preset_defines = [ @@ -277,8 +280,9 @@ class AddPresetSunSky(AddPresetBase, Operator): class AddPresetInteraction(AddPresetBase, Operator): '''Add an Application Interaction Preset''' bl_idname = "wm.interaction_preset_add" - bl_label = "Add Interaction Preset" + bl_label = _("Add Interaction Preset") preset_menu = "USERPREF_MT_interaction_presets" + __doc__ = _('Add an Application Interaction Preset') preset_defines = [ "user_preferences = bpy.context.user_preferences" @@ -303,9 +307,10 @@ class AddPresetInteraction(AddPresetBase, Operator): class AddPresetKeyconfig(AddPresetBase, Operator): '''Add a Keyconfig Preset''' bl_idname = "wm.keyconfig_preset_add" - bl_label = "Add Keyconfig Preset" + bl_label = _("Add Keyconfig Preset") preset_menu = "USERPREF_MT_keyconfigs" preset_subdir = "keyconfig" + __doc__ = _('Add a Keyconfig Preset') def add(self, context, filepath): bpy.ops.wm.keyconfig_export(filepath=filepath) @@ -326,11 +331,12 @@ class AddPresetKeyconfig(AddPresetBase, Operator): class AddPresetOperator(AddPresetBase, Operator): '''Add an Application Interaction Preset''' bl_idname = "wm.operator_preset_add" - bl_label = "Operator Preset" + bl_label = _("Operator Preset") preset_menu = "WM_MT_operator_presets" + __doc__ = _("Add an Application Interaction Preset") operator = bpy.props.StringProperty( - name="Operator", + name=_("Operator"), maxlen=64, options={'HIDDEN'}, ) @@ -369,7 +375,7 @@ class AddPresetOperator(AddPresetBase, Operator): class WM_MT_operator_presets(Menu): - bl_label = "Operator Presets" + bl_label = _("Operator Presets") def draw(self, context): self.operator = context.space_data.operator.bl_idname diff --git a/release/scripts/startup/bl_operators/screen_play_rendered_anim.py b/release/scripts/startup/bl_operators/screen_play_rendered_anim.py index c2a09d6a4ae..32226ec0b1e 100644 --- a/release/scripts/startup/bl_operators/screen_play_rendered_anim.py +++ b/release/scripts/startup/bl_operators/screen_play_rendered_anim.py @@ -23,6 +23,7 @@ import bpy from bpy.types import Operator import os +from blf import gettext as _ def guess_player_path(preset): @@ -68,8 +69,9 @@ def guess_player_path(preset): class PlayRenderedAnim(Operator): '''Plays back rendered frames/movies using an external player.''' bl_idname = "render.play_rendered_anim" - bl_label = "Play Rendered Animation" + bl_label = _("Play Rendered Animation") bl_options = {'REGISTER'} + __doc__ = _("Plays back rendered frames/movies using an external player.") def execute(self, context): import subprocess diff --git a/release/scripts/startup/bl_operators/sequencer.py b/release/scripts/startup/bl_operators/sequencer.py index 856e182279a..44fb0b2efb4 100644 --- a/release/scripts/startup/bl_operators/sequencer.py +++ b/release/scripts/startup/bl_operators/sequencer.py @@ -22,13 +22,14 @@ import bpy from bpy.types import Operator from bpy.props import IntProperty +from blf import gettext as _ class SequencerCrossfadeSounds(Operator): '''Do crossfading volume animation of two selected sound strips.''' bl_idname = "sequencer.crossfade_sounds" - bl_label = "Crossfade sounds" + bl_label = _("Crossfade sounds") bl_options = {'REGISTER', 'UNDO'} @classmethod @@ -79,11 +80,11 @@ class SequencerCutMulticam(Operator): '''Cut multicam strip and select camera.''' bl_idname = "sequencer.cut_multicam" - bl_label = "Cut multicam" + bl_label = _("Cut multicam") bl_options = {'REGISTER', 'UNDO'} camera = IntProperty( - name="Camera", + name=_("Camera"), min=1, max=32, soft_min=1, soft_max=32, default=1, @@ -121,8 +122,9 @@ class SequencerDeinterlaceSelectedMovies(Operator): '''Deinterlace all selected movie sources.''' bl_idname = "sequencer.deinterlace_selected_movies" - bl_label = "Deinterlace Movies" + bl_label = _("Deinterlace Movies") bl_options = {'REGISTER', 'UNDO'} + __doc__ = _("Deinterlace all selected movie sources.") @classmethod def poll(cls, context): diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py index aa09a088c4f..4f37d0287e3 100644 --- a/release/scripts/startup/bl_operators/wm.py +++ b/release/scripts/startup/bl_operators/wm.py @@ -28,12 +28,13 @@ from bpy.props import (StringProperty, ) from rna_prop_ui import rna_idprop_ui_prop_get, rna_idprop_ui_prop_clear +from blf import gettext as _ class MESH_OT_delete_edgeloop(Operator): '''Delete an edge loop by merging the faces on each side to a single face loop''' bl_idname = "mesh.delete_edgeloop" - bl_label = "Delete Edge Loop" + bl_label = _("Delete Edge Loop") def execute(self, context): if 'FINISHED' in bpy.ops.transform.edge_slide(value=1.0): @@ -44,20 +45,20 @@ class MESH_OT_delete_edgeloop(Operator): return {'CANCELLED'} rna_path_prop = StringProperty( - name="Context Attributes", - description="rna context string", + name=_("Context Attributes"), + description=_("rna context string"), maxlen=1024, ) rna_reverse_prop = BoolProperty( - name="Reverse", - description="Cycle backwards", + name=_("Reverse"), + description=_("Cycle backwards"), default=False, ) rna_relative_prop = BoolProperty( - name="Relative", - description="Apply relative to the current value (delta)", + name=_("Relative"), + description=_("Apply relative to the current value (delta)"), default=False, ) @@ -140,16 +141,16 @@ def execute_context_assign(self, context): class BRUSH_OT_active_index_set(Operator): '''Set active sculpt/paint brush from it's number''' bl_idname = "brush.active_index_set" - bl_label = "Set Brush Number" + bl_label = _("Set Brush Number") mode = StringProperty( - name="mode", - description="Paint mode to set brush for", + name=_("mode"), + description=_("Paint mode to set brush for"), maxlen=1024, ) index = IntProperty( - name="number", - description="Brush number", + name=_("number"), + description=_("Brush number"), ) _attr_dict = {"sculpt": "use_paint_sculpt", @@ -174,13 +175,13 @@ class BRUSH_OT_active_index_set(Operator): class WM_OT_context_set_boolean(Operator): '''Set a context value.''' bl_idname = "wm.context_set_boolean" - bl_label = "Context Set Boolean" + bl_label = _("Context Set Boolean") bl_options = {'UNDO', 'INTERNAL'} data_path = rna_path_prop value = BoolProperty( - name="Value", - description="Assignment value", + name=_("Value"), + description=_("Assignment value"), default=True, ) @@ -190,13 +191,13 @@ class WM_OT_context_set_boolean(Operator): class WM_OT_context_set_int(Operator): # same as enum '''Set a context value.''' bl_idname = "wm.context_set_int" - bl_label = "Context Set" + bl_label = _("Context Set") bl_options = {'UNDO', 'INTERNAL'} data_path = rna_path_prop value = IntProperty( - name="Value", - description="Assign value", + name=_("Value"), + description=_("Assign value"), default=0, ) relative = rna_relative_prop @@ -207,18 +208,18 @@ class WM_OT_context_set_int(Operator): # same as enum class WM_OT_context_scale_int(Operator): '''Scale an int context value.''' bl_idname = "wm.context_scale_int" - bl_label = "Context Set" + bl_label = _("Context Set") bl_options = {'UNDO', 'INTERNAL'} data_path = rna_path_prop value = FloatProperty( - name="Value", - description="Assign value", + name=_("Value"), + description=_("Assign value"), default=1.0, ) always_step = BoolProperty( - name="Always Step", - description="Always adjust the value by a minimum of 1 when 'value' is not 1.0.", + name=_("Always Step"), + description=_("Always adjust the value by a minimum of 1 when 'value' is not 1.0."), default=True, ) @@ -250,13 +251,13 @@ class WM_OT_context_scale_int(Operator): class WM_OT_context_set_float(Operator): # same as enum '''Set a context value.''' bl_idname = "wm.context_set_float" - bl_label = "Context Set Float" + bl_label = _("Context Set Float") bl_options = {'UNDO', 'INTERNAL'} data_path = rna_path_prop value = FloatProperty( - name="Value", - description="Assignment value", + name=_("Value"), + description=_("Assignment value"), default=0.0, ) relative = rna_relative_prop @@ -267,13 +268,13 @@ class WM_OT_context_set_float(Operator): # same as enum class WM_OT_context_set_string(Operator): # same as enum '''Set a context value.''' bl_idname = "wm.context_set_string" - bl_label = "Context Set String" + bl_label = _("Context Set String") bl_options = {'UNDO', 'INTERNAL'} data_path = rna_path_prop value = StringProperty( - name="Value", - description="Assign value", + name=_("Value"), + description=_("Assign value"), maxlen=1024, ) @@ -283,13 +284,13 @@ class WM_OT_context_set_string(Operator): # same as enum class WM_OT_context_set_enum(Operator): '''Set a context value.''' bl_idname = "wm.context_set_enum" - bl_label = "Context Set Enum" + bl_label = _("Context Set Enum") bl_options = {'UNDO', 'INTERNAL'} data_path = rna_path_prop value = StringProperty( - name="Value", - description="Assignment value (as a string)", + name=_("Value"), + description=_("Assignment value (as a string)"), maxlen=1024, ) @@ -299,13 +300,13 @@ class WM_OT_context_set_enum(Operator): class WM_OT_context_set_value(Operator): '''Set a context value.''' bl_idname = "wm.context_set_value" - bl_label = "Context Set Value" + bl_label = _("Context Set Value") bl_options = {'UNDO', 'INTERNAL'} data_path = rna_path_prop value = StringProperty( - name="Value", - description="Assignment value (as a string)", + name=_("Value"), + description=_("Assignment value (as a string)"), maxlen=1024, ) @@ -320,7 +321,7 @@ class WM_OT_context_set_value(Operator): class WM_OT_context_toggle(Operator): '''Toggle a context value.''' bl_idname = "wm.context_toggle" - bl_label = "Context Toggle" + bl_label = _("Context Toggle") bl_options = {'UNDO', 'INTERNAL'} data_path = rna_path_prop @@ -339,18 +340,18 @@ class WM_OT_context_toggle(Operator): class WM_OT_context_toggle_enum(Operator): '''Toggle a context value.''' bl_idname = "wm.context_toggle_enum" - bl_label = "Context Toggle Values" + bl_label = _("Context Toggle Values") bl_options = {'UNDO', 'INTERNAL'} data_path = rna_path_prop value_1 = StringProperty( - name="Value", - description="Toggle enum", + name=_("Value"), + description=_("Toggle enum"), maxlen=1024, ) value_2 = StringProperty( - name="Value", - description="Toggle enum", + name=_("Value"), + description=_("Toggle enum"), maxlen=1024, ) @@ -373,7 +374,7 @@ class WM_OT_context_cycle_int(Operator): '''Set a context value. Useful for cycling active material, ''' '''vertex keys, groups' etc.''' bl_idname = "wm.context_cycle_int" - bl_label = "Context Int Cycle" + bl_label = _("Context Int Cycle") bl_options = {'UNDO', 'INTERNAL'} data_path = rna_path_prop @@ -407,7 +408,7 @@ class WM_OT_context_cycle_int(Operator): class WM_OT_context_cycle_enum(Operator): '''Toggle a context value.''' bl_idname = "wm.context_cycle_enum" - bl_label = "Context Enum Cycle" + bl_label = _("Context Enum Cycle") bl_options = {'UNDO', 'INTERNAL'} data_path = rna_path_prop @@ -460,7 +461,7 @@ class WM_OT_context_cycle_array(Operator): '''Set a context array value. Useful for cycling the active mesh edit mode.''' bl_idname = "wm.context_cycle_array" - bl_label = "Context Array Cycle" + bl_label = _("Context Array Cycle") bl_options = {'UNDO', 'INTERNAL'} data_path = rna_path_prop @@ -506,7 +507,7 @@ class WM_MT_context_menu_enum(Menu): class WM_OT_context_menu_enum(Operator): bl_idname = "wm.context_menu_enum" - bl_label = "Context Enum Menu" + bl_label = _("Context Enum Menu") bl_options = {'UNDO', 'INTERNAL'} data_path = rna_path_prop @@ -520,13 +521,13 @@ class WM_OT_context_menu_enum(Operator): class WM_OT_context_set_id(Operator): '''Toggle a context value.''' bl_idname = "wm.context_set_id" - bl_label = "Set Library ID" + bl_label = _("Set Library ID") bl_options = {'UNDO', 'INTERNAL'} data_path = rna_path_prop value = StringProperty( - name="Value", - description="Assign value", + name=_("Value"), + description=_("Assign value"), maxlen=1024, ) @@ -556,13 +557,13 @@ class WM_OT_context_set_id(Operator): doc_id = StringProperty( - name="Doc ID", + name=_("Doc ID"), maxlen=1024, options={'HIDDEN'}, ) doc_new = StringProperty( - name="Edit Description", + name=_("Edit Description"), maxlen=1024, ) @@ -635,18 +636,18 @@ class WM_OT_context_collection_boolean_set(Operator): class WM_OT_context_modal_mouse(Operator): '''Adjust arbitrary values with mouse input''' bl_idname = "wm.context_modal_mouse" - bl_label = "Context Modal Mouse" + bl_label = _("Context Modal Mouse") bl_options = {'GRAB_POINTER', 'BLOCKING', 'UNDO', 'INTERNAL'} data_path_iter = data_path_iter data_path_item = data_path_item input_scale = FloatProperty( - description="Scale the mouse movement by this value before applying the delta", + description=_("Scale the mouse movement by this value before applying the delta"), default=0.01, ) invert = BoolProperty( - description="Invert the mouse input", + description=_("Invert the mouse input"), default=False, ) initial_x = IntProperty(options={'HIDDEN'}) @@ -728,6 +729,7 @@ class WM_OT_context_modal_mouse(Operator): class WM_OT_url_open(Operator): "Open a website in the Webbrowser" + __doc__ = _("Open a website in the Webbrowser") bl_idname = "wm.url_open" bl_label = "" @@ -748,7 +750,7 @@ class WM_OT_path_open(Operator): bl_label = "" filepath = StringProperty( - name="File Path", + name=_("File Path"), maxlen=1024, subtype='FILE_PATH', ) @@ -782,7 +784,7 @@ class WM_OT_path_open(Operator): class WM_OT_doc_view(Operator): '''Load online reference docs''' bl_idname = "wm.doc_view" - bl_label = "View Documentation" + bl_label = _("View Documentation") doc_id = doc_id if bpy.app.version_cycle == "release": @@ -837,7 +839,7 @@ class WM_OT_doc_view(Operator): class WM_OT_doc_edit(Operator): '''Load online reference docs''' bl_idname = "wm.doc_edit" - bl_label = "Edit Documentation" + bl_label = _("Edit Documentation") doc_id = doc_id doc_new = doc_new @@ -897,7 +899,7 @@ class WM_OT_doc_edit(Operator): def draw(self, context): layout = self.layout - layout.label(text="Descriptor ID: '%s'" % self.doc_id) + layout.label(text=_("Descriptor ID")+": '%s'" % self.doc_id) layout.prop(self, "doc_new", text="") def invoke(self, context, event): @@ -906,26 +908,26 @@ class WM_OT_doc_edit(Operator): rna_path = StringProperty( - name="Property Edit", - description="Property data_path edit", + name=_("Property Edit"), + description=_("Property data_path edit"), maxlen=1024, options={'HIDDEN'}, ) rna_value = StringProperty( - name="Property Value", - description="Property value edit", + name=_("Property Value"), + description=_("Property value edit"), maxlen=1024, ) rna_property = StringProperty( - name="Property Name", - description="Property name edit", + name=_("Property Name"), + description=_("Property name edit"), maxlen=1024, ) rna_min = FloatProperty( - name="Min", + name=_("Min"), default=0.0, precision=3, ) @@ -940,7 +942,8 @@ rna_max = FloatProperty( class WM_OT_properties_edit(Operator): '''Internal use (edit a property data_path)''' bl_idname = "wm.properties_edit" - bl_label = "Edit Property" + bl_label = _("Edit Property") + __doc__ = _("Internal use (edit a property data_path)") bl_options = {'REGISTER'} # only because invoke_props_popup requires. data_path = rna_path @@ -949,7 +952,7 @@ class WM_OT_properties_edit(Operator): min = rna_min max = rna_max description = StringProperty( - name="Tip", + name=_("Tip"), ) def execute(self, context): @@ -1027,7 +1030,8 @@ class WM_OT_properties_edit(Operator): class WM_OT_properties_add(Operator): '''Internal use (edit a property data_path)''' bl_idname = "wm.properties_add" - bl_label = "Add Property" + bl_label = _("Add Property") + __doc__ = _("Internal use (edit a property data_path)") data_path = rna_path @@ -1057,7 +1061,7 @@ class WM_OT_properties_context_change(Operator): bl_label = "" context = StringProperty( - name="Context", + name=_("Context"), maxlen=32, ) @@ -1069,7 +1073,8 @@ class WM_OT_properties_context_change(Operator): class WM_OT_properties_remove(Operator): '''Internal use (edit a property data_path)''' bl_idname = "wm.properties_remove" - bl_label = "Remove Property" + bl_label = _("Remove Property") + __doc__ = _("Internal use (edit a property data_path)") data_path = rna_path property = rna_property @@ -1083,10 +1088,10 @@ class WM_OT_properties_remove(Operator): class WM_OT_keyconfig_activate(Operator): bl_idname = "wm.keyconfig_activate" - bl_label = "Activate Keyconfig" + bl_label = _("Activate Keyconfig") filepath = StringProperty( - name="File Path", + name=_("File Path"), maxlen=1024, ) @@ -1097,7 +1102,7 @@ class WM_OT_keyconfig_activate(Operator): class WM_OT_appconfig_default(Operator): bl_idname = "wm.appconfig_default" - bl_label = "Default Application Configuration" + bl_label = _("Default Application Configuration") def execute(self, context): import os @@ -1114,7 +1119,7 @@ class WM_OT_appconfig_default(Operator): class WM_OT_appconfig_activate(Operator): bl_idname = "wm.appconfig_activate" - bl_label = "Activate Application Configuration" + bl_label = _("Activate Application Configuration") filepath = StringProperty( name="File Path", @@ -1136,7 +1141,8 @@ class WM_OT_appconfig_activate(Operator): class WM_OT_sysinfo(Operator): '''Generate System Info''' bl_idname = "wm.sysinfo" - bl_label = "System Info" + bl_label = _("System Info") + __doc__ = _("Generate System Info") def execute(self, context): import sys_info @@ -1147,7 +1153,7 @@ class WM_OT_sysinfo(Operator): class WM_OT_copy_prev_settings(Operator): '''Copy settings from previous version''' bl_idname = "wm.copy_prev_settings" - bl_label = "Copy Previous Settings" + bl_label = _("Copy Previous Settings") def execute(self, context): import os diff --git a/release/scripts/startup/bl_ui/properties_animviz.py b/release/scripts/startup/bl_ui/properties_animviz.py index 3b33a7ccc61..6c5125b8e23 100644 --- a/release/scripts/startup/bl_ui/properties_animviz.py +++ b/release/scripts/startup/bl_ui/properties_animviz.py @@ -23,12 +23,12 @@ # 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' bl_region_type = 'WINDOW' - bl_label = "Motion Paths" + bl_label = _("Motion Paths") bl_options = {'DEFAULT_CLOSED'} def draw_settings(self, context, avs, bones=False): @@ -43,30 +43,30 @@ 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 class OnionSkinButtonsPanel(): bl_space_type = 'PROPERTIES' bl_region_type = 'WINDOW' - bl_label = "Onion Skinning" + bl_label = _("Onion Skinning") bl_options = {'DEFAULT_CLOSED'} def draw(self, context): @@ -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 e17064178b8..96e10919806 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' @@ -50,7 +50,7 @@ class DATA_PT_context_arm(ArmatureButtonsPanel, Panel): class DATA_PT_skeleton(ArmatureButtonsPanel, Panel): - bl_label = "Skeleton" + bl_label = _("Skeleton") def draw(self, context): layout = self.layout @@ -60,22 +60,22 @@ 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" + bl_label = _("Display") def draw(self, context): layout = self.layout @@ -88,19 +88,19 @@ 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): - bl_label = "Bone Group Specials" + bl_label = _("Bone Group Specials") def draw(self, context): layout = self.layout @@ -109,7 +109,7 @@ class DATA_PT_bone_group_specials(Menu): class DATA_PT_bone_groups(ArmatureButtonsPanel, Panel): - bl_label = "Bone Groups" + bl_label = _("Bone Groups") @classmethod def poll(cls, context): @@ -160,16 +160,16 @@ 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): - bl_label = "Pose Library" + bl_label = _("Pose Library") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -208,7 +208,7 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, Panel): # TODO: this panel will soon be depreceated too class DATA_PT_ghost(ArmatureButtonsPanel, Panel): - bl_label = "Ghost" + bl_label = _("Ghost") def draw(self, context): layout = self.layout @@ -222,20 +222,20 @@ 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): - bl_label = "iTaSC parameters" + bl_label = _("iTaSC parameters") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -255,7 +255,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() @@ -267,8 +267,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") @@ -278,7 +278,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 ( @@ -306,8 +306,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..36c07bd1ef8 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' @@ -50,7 +50,7 @@ class BONE_PT_context_bone(BoneButtonsPanel, Panel): class BONE_PT_transform(BoneButtonsPanel, Panel): - bl_label = "Transform" + bl_label = _("Transform") @classmethod def poll(cls, context): @@ -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,14 +97,14 @@ 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") class BONE_PT_transform_locks(BoneButtonsPanel, Panel): - bl_label = "Transform Locks" + bl_label = _("Transform Locks") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -126,18 +126,18 @@ 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") class BONE_PT_relations(BoneButtonsPanel, Panel): - bl_label = "Relations" + bl_label = _("Relations") def draw(self, context): layout = self.layout @@ -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,15 +174,15 @@ 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): - bl_label = "Display" + bl_label = _("Display") @classmethod def poll(cls, context): @@ -206,20 +206,20 @@ 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): - bl_label = "Inverse Kinematics" + bl_label = _("Inverse Kinematics") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -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,19 +298,19 @@ 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): - bl_label = "Deform" + bl_label = _("Deform") bl_options = {'DEFAULT_CLOSED'} def draw_header(self, context): @@ -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..c07acea47d5 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' @@ -55,7 +55,7 @@ class DATA_PT_context_camera(CameraButtonsPanel, Panel): class DATA_PT_camera(CameraButtonsPanel, Panel): - bl_label = "Lens" + bl_label = _("Lens") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def draw(self, context): @@ -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,11 +109,11 @@ 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): - bl_label = "Display" + bl_label = _("Display") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def draw(self, context): @@ -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..36f61c1bd54 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,20 +103,20 @@ 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") + col.prop(curve, "use_fill_deform", text=_("Fill Deformed")) class DATA_PT_curve_texture_space(CurveButtonsPanel, Panel): - bl_label = "Texture Space" + bl_label = _("Texture Space") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -130,12 +130,12 @@ 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): - bl_label = "Geometry" + bl_label = _("Geometry") @classmethod def poll(cls, context): @@ -153,22 +153,22 @@ 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="") class DATA_PT_pathanim(CurveButtonsPanelCurve, Panel): - bl_label = "Path Animation" + bl_label = _("Path Animation") def draw_header(self, context): curve = context.curve @@ -183,7 +183,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,11 +195,11 @@ 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): - bl_label = "Active Spline" + bl_label = _("Active Spline") def draw(self, context): layout = self.layout @@ -216,20 +216,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,15 +262,15 @@ 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") class DATA_PT_font(CurveButtonsPanel, Panel): - bl_label = "Font" + bl_label = _("Font") @classmethod def poll(cls, context): @@ -283,16 +283,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,41 +300,41 @@ 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") class DATA_PT_paragraph(CurveButtonsPanel, Panel): - bl_label = "Paragraph" + bl_label = _("Paragraph") @classmethod def poll(cls, context): @@ -345,25 +345,25 @@ 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") class DATA_PT_text_boxes(CurveButtonsPanel, Panel): - bl_label = "Text Boxes" + bl_label = _("Text Boxes") @classmethod def poll(cls, context): @@ -389,13 +389,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..1a6aad684c4 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' @@ -32,24 +32,24 @@ class DataButtonsPanel(): class DATA_PT_empty(DataButtonsPanel, Panel): - bl_label = "Empty" + bl_label = _("Empty") def draw(self, context): layout = self.layout 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..4ae6ad2a7c1 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'} @@ -67,7 +67,7 @@ class DATA_PT_context_lamp(DataButtonsPanel, Panel): class DATA_PT_preview(DataButtonsPanel, Panel): - bl_label = "Preview" + bl_label = _("Preview") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def draw(self, context): @@ -75,7 +75,7 @@ class DATA_PT_preview(DataButtonsPanel, Panel): class DATA_PT_lamp(DataButtonsPanel, Panel): - bl_label = "Lamp" + bl_label = _("Lamp") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def draw(self, context): @@ -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,13 +111,13 @@ 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") class DATA_PT_sunsky(DataButtonsPanel, Panel): - bl_label = "Sky & Atmosphere" + bl_label = _("Sky & Atmosphere") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @classmethod @@ -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,20 +176,20 @@ 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): - bl_label = "Shadow" + bl_label = _("Shadow") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @classmethod @@ -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,48 +263,48 @@ 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): - bl_label = "Area Shape" + bl_label = _("Area Shape") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @classmethod @@ -325,12 +325,12 @@ 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): - bl_label = "Spot Shape" + bl_label = _("Spot Shape") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @classmethod @@ -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,13 +358,13 @@ 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): - bl_label = "Falloff Curve" + bl_label = _("Falloff Curve") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} diff --git a/release/scripts/startup/bl_ui/properties_data_lattice.py b/release/scripts/startup/bl_ui/properties_data_lattice.py index 14d6ea66894..d77de212247 100644 --- a/release/scripts/startup/bl_ui/properties_data_lattice.py +++ b/release/scripts/startup/bl_ui/properties_data_lattice.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' @@ -53,7 +53,7 @@ class DATA_PT_context_lattice(DataButtonsPanel, Panel): class DATA_PT_lattice(DataButtonsPanel, Panel): - bl_label = "Lattice" + bl_label = _("Lattice") def draw(self, context): layout = self.layout diff --git a/release/scripts/startup/bl_ui/properties_data_mesh.py b/release/scripts/startup/bl_ui/properties_data_mesh.py index 75df7dad5f2..d18cc4ea678 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,11 +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 class MESH_MT_shape_key_specials(Menu): - bl_label = "Shape Key Specials" + bl_label = _("Shape Key Specials") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def draw(self, context): @@ -47,7 +47,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 @@ -81,7 +81,7 @@ class DATA_PT_context_mesh(MeshButtonsPanel, Panel): class DATA_PT_normals(MeshButtonsPanel, Panel): - bl_label = "Normals" + bl_label = _("Normals") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def draw(self, context): @@ -95,13 +95,13 @@ 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") class DATA_PT_texture_space(MeshButtonsPanel, Panel): - bl_label = "Texture Space" + bl_label = _("Texture Space") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -116,12 +116,12 @@ 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): - bl_label = "Vertex Groups" + bl_label = _("Vertex Groups") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @classmethod @@ -159,18 +159,18 @@ 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): - bl_label = "Shape Keys" + bl_label = _("Shape Keys") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @classmethod @@ -246,13 +246,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="") @@ -263,7 +263,7 @@ class DATA_PT_shape_keys(MeshButtonsPanel, Panel): class DATA_PT_uv_texture(MeshButtonsPanel, Panel): - bl_label = "UV Texture" + bl_label = _("UV Texture") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def draw(self, context): @@ -286,7 +286,7 @@ class DATA_PT_uv_texture(MeshButtonsPanel, Panel): class DATA_PT_texface(MeshButtonsPanel, Panel): - bl_label = "Texture Face" + bl_label = _("Texture Face") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @classmethod @@ -304,7 +304,7 @@ class DATA_PT_texface(MeshButtonsPanel, Panel): if tf: if context.scene.render.engine != 'BLENDER_GAME': - col.label(text="Options only supported in Game Engine") + col.label(text=_("Options only supported in Game Engine")) split = layout.split() col = split.column() @@ -329,11 +329,11 @@ class DATA_PT_texface(MeshButtonsPanel, Panel): col = layout.column() col.prop(tf, "blend_type") else: - col.label(text="No UV Texture") + col.label(text=_("No UV Texture")) class DATA_PT_vertex_colors(MeshButtonsPanel, Panel): - bl_label = "Vertex Colors" + bl_label = _("Vertex Colors") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def draw(self, context): diff --git a/release/scripts/startup/bl_ui/properties_data_metaball.py b/release/scripts/startup/bl_ui/properties_data_metaball.py index cd894e60dbb..55a7314bc7b 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' @@ -50,7 +50,7 @@ class DATA_PT_context_metaball(DataButtonsPanel, Panel): class DATA_PT_metaball(DataButtonsPanel, Panel): - bl_label = "Metaball" + bl_label = _("Metaball") def draw(self, context): layout = self.layout @@ -60,21 +60,21 @@ 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) class DATA_PT_mball_texture_space(DataButtonsPanel, Panel): - bl_label = "Texture Space" + bl_label = _("Texture Space") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -86,12 +86,12 @@ 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): - bl_label = "Active Element" + bl_label = _("Active Element") @classmethod def poll(cls, context): @@ -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 179921c3c85..40e455ef88e 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' @@ -28,7 +28,7 @@ class ModifierButtonsPanel(): class DATA_PT_modifiers(ModifierButtonsPanel, Panel): - bl_label = "Modifiers" + bl_label = _("Modifiers") def draw(self, context): layout = self.layout @@ -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") @@ -234,23 +234,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() @@ -260,22 +260,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() @@ -287,38 +287,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() @@ -330,11 +330,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() @@ -344,9 +344,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") @@ -356,19 +356,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") @@ -376,7 +376,7 @@ 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 MULTIRES(self, layout, ob, md): @@ -384,17 +384,17 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel): 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") @@ -403,34 +403,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 @@ -440,17 +440,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") @@ -469,10 +469,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() @@ -482,28 +482,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': @@ -513,24 +513,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'}: @@ -538,13 +538,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") @@ -552,11 +552,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() @@ -565,19 +565,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") @@ -588,65 +588,65 @@ 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() col = split.column() - col.label(text="Image:") + col.label(text=_("Image:")) col.prop(md, "image", text="") col = split.column() - col.label(text="UV Layer:") + 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") + 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") + 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.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="") @@ -665,15 +665,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") @@ -681,7 +681,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") @@ -697,18 +697,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() @@ -716,7 +716,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") diff --git a/release/scripts/startup/bl_ui/properties_game.py b/release/scripts/startup/bl_ui/properties_game.py index 161e4b10cff..123abdfe54a 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' @@ -28,7 +28,7 @@ class PhysicsButtonsPanel(): class PHYSICS_PT_game_physics(PhysicsButtonsPanel, Panel): - bl_label = "Physics" + bl_label = _("Physics") COMPAT_ENGINES = {'BLENDER_GAME'} @classmethod @@ -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,11 +165,11 @@ 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): - bl_label = "Collision Bounds" + bl_label = _("Collision Bounds") COMPAT_ENGINES = {'BLENDER_GAME'} @classmethod @@ -189,11 +189,11 @@ 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 RenderButtonsPanel(): @@ -208,19 +208,19 @@ class RenderButtonsPanel(): class RENDER_PT_game(RenderButtonsPanel, Panel): - bl_label = "Game" + bl_label = _("Game") COMPAT_ENGINES = {'BLENDER_GAME'} def draw(self, context): layout = self.layout row = layout.row() - row.operator("view3d.game_start", text="Start") + row.operator("view3d.game_start", text=_("Start")) row.label() class RENDER_PT_game_player(RenderButtonsPanel, Panel): - bl_label = "Standalone Player" + bl_label = _("Standalone Player") COMPAT_ENGINES = {'BLENDER_GAME'} def draw(self, context): @@ -233,27 +233,27 @@ 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="") class RENDER_PT_game_stereo(RenderButtonsPanel, Panel): - bl_label = "Stereo" + bl_label = _("Stereo") COMPAT_ENGINES = {'BLENDER_GAME'} def draw(self, context): @@ -272,7 +272,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 +283,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() @@ -307,7 +307,7 @@ class RENDER_PT_game_stereo(RenderButtonsPanel, Panel): class RENDER_PT_game_shading(RenderButtonsPanel, Panel): - bl_label = "Shading" + bl_label = _("Shading") COMPAT_ENGINES = {'BLENDER_GAME'} def draw(self, context): @@ -321,19 +321,19 @@ 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): - bl_label = "Performance" + bl_label = _("Performance") COMPAT_ENGINES = {'BLENDER_GAME'} def draw(self, context): @@ -349,7 +349,7 @@ class RENDER_PT_game_performance(RenderButtonsPanel, Panel): class RENDER_PT_game_display(RenderButtonsPanel, Panel): - bl_label = "Display" + bl_label = _("Display") COMPAT_ENGINES = {'BLENDER_GAME'} def draw(self, context): @@ -357,11 +357,12 @@ 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 WorldButtonsPanel(): @@ -395,7 +396,7 @@ class WORLD_PT_game_context_world(WorldButtonsPanel, Panel): class WORLD_PT_game_world(WorldButtonsPanel, Panel): - bl_label = "World" + bl_label = _("World") COMPAT_ENGINES = {'BLENDER_GAME'} @classmethod @@ -414,7 +415,7 @@ class WORLD_PT_game_world(WorldButtonsPanel, Panel): class WORLD_PT_game_mist(WorldButtonsPanel, Panel): - bl_label = "Mist" + bl_label = _("Mist") COMPAT_ENGINES = {'BLENDER_GAME'} @classmethod @@ -440,7 +441,7 @@ class WORLD_PT_game_mist(WorldButtonsPanel, Panel): class WORLD_PT_game_physics(WorldButtonsPanel, Panel): - bl_label = "Physics" + bl_label = _("Physics") COMPAT_ENGINES = {'BLENDER_GAME'} @classmethod @@ -455,37 +456,37 @@ 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")) 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..18eae572e94 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 @@ -52,14 +52,14 @@ def simple_material(mat): class MATERIAL_MT_sss_presets(Menu): - bl_label = "SSS Presets" + bl_label = _("SSS Presets") preset_subdir = "sss" preset_operator = "script.execute_preset" draw = Menu.draw_preset class MATERIAL_MT_specials(Menu): - bl_label = "Material Specials" + bl_label = _("Material Specials") def draw(self, context): layout = self.layout @@ -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,11 +142,11 @@ 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): - bl_label = "Preview" + bl_label = _("Preview") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def draw(self, context): @@ -154,7 +154,7 @@ class MATERIAL_PT_preview(MaterialButtonsPanel, Panel): class MATERIAL_PT_pipeline(MaterialButtonsPanel, Panel): - bl_label = "Render Pipeline Options" + bl_label = _("Render Pipeline Options") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -197,15 +197,15 @@ 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") class MATERIAL_PT_diffuse(MaterialButtonsPanel, Panel): - bl_label = "Diffuse" + bl_label = _("Diffuse") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @classmethod @@ -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,14 +255,14 @@ 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): - bl_label = "Specular" + bl_label = _("Specular") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @classmethod @@ -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,14 +308,14 @@ 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): - bl_label = "Shading" + bl_label = _("Shading") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @classmethod @@ -349,7 +349,7 @@ class MATERIAL_PT_shading(MaterialButtonsPanel, Panel): class MATERIAL_PT_transp(MaterialButtonsPanel, Panel): - bl_label = "Transparency" + bl_label = _("Transparency") # bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -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,16 +406,16 @@ 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): - bl_label = "Mirror" + bl_label = _("Mirror") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -448,32 +448,32 @@ 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): - bl_label = "Subsurface Scattering" + bl_label = _("Subsurface Scattering") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -510,22 +510,22 @@ 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): - bl_label = "Halo" + bl_label = _("Halo") COMPAT_ENGINES = {'BLENDER_RENDER'} @classmethod @@ -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() @@ -578,7 +578,7 @@ class MATERIAL_PT_halo(MaterialButtonsPanel, Panel): class MATERIAL_PT_flare(MaterialButtonsPanel, Panel): - bl_label = "Flare" + bl_label = _("Flare") COMPAT_ENGINES = {'BLENDER_RENDER'} @classmethod @@ -603,17 +603,17 @@ 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_physics(MaterialButtonsPanel, Panel): - bl_label = "Physics" + bl_label = _("Physics") COMPAT_ENGINES = {'BLENDER_GAME'} @classmethod @@ -631,7 +631,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") @@ -643,7 +643,7 @@ class MATERIAL_PT_physics(MaterialButtonsPanel, Panel): class MATERIAL_PT_strand(MaterialButtonsPanel, Panel): - bl_label = "Strand" + bl_label = _("Strand") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -663,10 +663,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 +674,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,13 +684,13 @@ 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): - bl_label = "Options" + bl_label = _("Options") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @classmethod @@ -719,11 +719,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") @@ -739,7 +739,7 @@ class MATERIAL_PT_options(MaterialButtonsPanel, Panel): class MATERIAL_PT_shadow(MaterialButtonsPanel, Panel): - bl_label = "Shadow" + bl_label = _("Shadow") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -758,12 +758,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,17 +773,17 @@ 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") class MATERIAL_PT_transp_game(MaterialButtonsPanel, Panel): - bl_label = "Transparency" + bl_label = _("Transparency") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_GAME'} @@ -826,7 +826,7 @@ class VolumeButtonsPanel(): class MATERIAL_PT_volume_density(VolumeButtonsPanel, Panel): - bl_label = "Density" + bl_label = _("Density") COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): @@ -840,7 +840,7 @@ class MATERIAL_PT_volume_density(VolumeButtonsPanel, Panel): class MATERIAL_PT_volume_shading(VolumeButtonsPanel, Panel): - bl_label = "Shading" + bl_label = _("Shading") COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): @@ -865,7 +865,7 @@ class MATERIAL_PT_volume_shading(VolumeButtonsPanel, Panel): class MATERIAL_PT_volume_lighting(VolumeButtonsPanel, Panel): - bl_label = "Lighting" + bl_label = _("Lighting") COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): @@ -890,7 +890,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) @@ -900,7 +900,7 @@ class MATERIAL_PT_volume_lighting(VolumeButtonsPanel, Panel): class MATERIAL_PT_volume_transp(VolumeButtonsPanel, Panel): - bl_label = "Transparency" + bl_label = _("Transparency") COMPAT_ENGINES = {'BLENDER_RENDER'} @classmethod @@ -918,7 +918,7 @@ class MATERIAL_PT_volume_transp(VolumeButtonsPanel, Panel): class MATERIAL_PT_volume_integration(VolumeButtonsPanel, Panel): - bl_label = "Integration" + bl_label = _("Integration") COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): @@ -929,7 +929,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") @@ -940,7 +940,7 @@ class MATERIAL_PT_volume_integration(VolumeButtonsPanel, Panel): class MATERIAL_PT_volume_options(VolumeButtonsPanel, Panel): - bl_label = "Options" + bl_label = _("Options") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} bl_options = {'DEFAULT_CLOSED'} @@ -964,11 +964,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..73a218704f7 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' @@ -44,7 +44,7 @@ class OBJECT_PT_context_object(ObjectButtonsPanel, Panel): class OBJECT_PT_transform(ObjectButtonsPanel, Panel): - bl_label = "Transform" + bl_label = _("Transform") def draw(self, context): layout = self.layout @@ -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") @@ -70,7 +70,7 @@ class OBJECT_PT_transform(ObjectButtonsPanel, Panel): class OBJECT_PT_delta_transform(ObjectButtonsPanel, Panel): - bl_label = "Delta Transform" + bl_label = _("Delta Transform") bl_options = {'DEFAULT_CLOSED'} def draw(self, context): @@ -82,21 +82,21 @@ 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") class OBJECT_PT_transform_locks(ObjectButtonsPanel, Panel): - bl_label = "Transform Locks" + bl_label = _("Transform Locks") bl_options = {'DEFAULT_CLOSED'} def draw(self, context): @@ -107,22 +107,22 @@ 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): - bl_label = "Relations" + bl_label = _("Relations") def draw(self, context): layout = self.layout @@ -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() @@ -149,7 +149,7 @@ class OBJECT_PT_relations(ObjectButtonsPanel, Panel): class OBJECT_PT_groups(ObjectButtonsPanel, Panel): - bl_label = "Groups" + bl_label = _("Groups") def draw(self, context): layout = self.layout @@ -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,19 +176,19 @@ 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 class OBJECT_PT_display(ObjectButtonsPanel, Panel): - bl_label = "Display" + bl_label = _("Display") def draw(self, context): layout = self.layout @@ -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,20 +209,20 @@ 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): - bl_label = "Duplication" + bl_label = _("Duplication") def draw(self, context): layout = self.layout @@ -235,32 +235,32 @@ 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 class OBJECT_PT_animation(ObjectButtonsPanel, Panel): - bl_label = "Animation Hacks" + bl_label = _("Animation Hacks") bl_options = {'DEFAULT_CLOSED'} def draw(self, context): @@ -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..51544e63325 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,24 +741,24 @@ 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): - bl_label = "Object Constraints" + bl_label = _("Object Constraints") bl_context = "constraint" @classmethod @@ -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") @@ -782,7 +782,7 @@ class OBJECT_PT_constraints(ConstraintButtonsPanel, Panel): class BONE_PT_constraints(ConstraintButtonsPanel, Panel): - bl_label = "Bone Constraints" + bl_label = _("Bone Constraints") bl_context = "bone_constraint" @classmethod diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py index 6f58f060504..307f362a195 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,8 +142,8 @@ 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.") @@ -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,11 +175,11 @@ 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): - bl_label = "Emission" + bl_label = _("Emission") COMPAT_ENGINES = {'BLENDER_RENDER'} @classmethod @@ -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,15 +240,15 @@ 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): - bl_label = "Hair dynamics" + bl_label = _("Hair dynamics") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -284,26 +285,26 @@ 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): - bl_label = "Cache" + bl_label = _("Cache") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -329,7 +330,7 @@ class PARTICLE_PT_cache(ParticleButtonsPanel, Panel): class PARTICLE_PT_velocity(ParticleButtonsPanel, Panel): - bl_label = "Velocity" + bl_label = _("Velocity") COMPAT_ENGINES = {'BLENDER_RENDER'} @classmethod @@ -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") @@ -379,7 +380,7 @@ class PARTICLE_PT_velocity(ParticleButtonsPanel, Panel): class PARTICLE_PT_rotation(ParticleButtonsPanel, Panel): - bl_label = "Rotation" + bl_label = _("Rotation") COMPAT_ENGINES = {'BLENDER_RENDER'} @classmethod @@ -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': @@ -428,7 +429,7 @@ class PARTICLE_PT_rotation(ParticleButtonsPanel, Panel): class PARTICLE_PT_physics(ParticleButtonsPanel, Panel): - bl_label = "Physics" + bl_label = _("Physics") COMPAT_ENGINES = {'BLENDER_RENDER'} @classmethod @@ -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,11 +640,11 @@ 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): - bl_label = "Boid Brain" + bl_label = _("Boid Brain") COMPAT_ENGINES = {'BLENDER_RENDER'} @classmethod @@ -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") @@ -744,7 +745,7 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel, Panel): class PARTICLE_PT_render(ParticleButtonsPanel, Panel): - bl_label = "Render" + bl_label = _("Render") COMPAT_ENGINES = {'BLENDER_RENDER'} @classmethod @@ -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="") @@ -929,7 +930,7 @@ class PARTICLE_PT_render(ParticleButtonsPanel, Panel): class PARTICLE_PT_draw(ParticleButtonsPanel, Panel): - bl_label = "Display" + bl_label = _("Display") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -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,18 +981,18 @@ 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") class PARTICLE_PT_children(ParticleButtonsPanel, Panel): - bl_label = "Children" + bl_label = _("Children") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -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) @@ -1091,7 +1092,7 @@ class PARTICLE_PT_children(ParticleButtonsPanel, Panel): class PARTICLE_PT_field_weights(ParticleButtonsPanel, Panel): - bl_label = "Field Weights" + bl_label = _("Field Weights") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -1112,7 +1113,7 @@ class PARTICLE_PT_field_weights(ParticleButtonsPanel, Panel): class PARTICLE_PT_force_fields(ParticleButtonsPanel, Panel): - bl_label = "Force Field Settings" + bl_label = _("Force Field Settings") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -1123,30 +1124,30 @@ 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) class PARTICLE_PT_vertexgroups(ParticleButtonsPanel, Panel): - bl_label = "Vertexgroups" + bl_label = _("Vertexgroups") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -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..5e42a465c2a 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, @@ -35,7 +35,7 @@ class CLOTH_MT_presets(Menu): ''' Creates the menu items by scanning scripts/templates ''' - bl_label = "Cloth Presets" + bl_label = _("Cloth Presets") preset_subdir = "cloth" preset_operator = "script.execute_preset" draw = Menu.draw_preset @@ -54,7 +54,7 @@ class PhysicButtonsPanel(): class PHYSICS_PT_cloth(PhysicButtonsPanel, Panel): - bl_label = "Cloth" + bl_label = _("Cloth") def draw(self, context): layout = self.layout @@ -71,55 +71,55 @@ 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="") class PHYSICS_PT_cloth_cache(PhysicButtonsPanel, Panel): - bl_label = "Cloth Cache" + bl_label = _("Cloth Cache") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -132,7 +132,7 @@ class PHYSICS_PT_cloth_cache(PhysicButtonsPanel, Panel): class PHYSICS_PT_cloth_collision(PhysicButtonsPanel, Panel): - bl_label = "Cloth Collision" + bl_label = _("Cloth Collision") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -156,24 +156,24 @@ 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") class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel, Panel): - bl_label = "Cloth Stiffness Scaling" + bl_label = _("Cloth Stiffness Scaling") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -198,18 +198,18 @@ 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): - bl_label = "Cloth Field Weights" + bl_label = _("Cloth Field Weights") bl_options = {'DEFAULT_CLOSED'} @classmethod diff --git a/release/scripts/startup/bl_ui/properties_physics_common.py b/release/scripts/startup/bl_ui/properties_physics_common.py index 204e25d9f01..20b76ec0a84 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,27 +53,27 @@ 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) 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 @@ -95,11 +95,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="") @@ -108,13 +108,13 @@ def point_cache_ui(self, context, cache, enabled, cachetype): else: if cachetype == 'SMOKE': 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) @@ -142,7 +142,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() @@ -152,22 +152,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): @@ -215,7 +215,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") @@ -223,12 +223,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") @@ -237,19 +237,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") @@ -265,7 +265,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() @@ -273,14 +273,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..25c92c52311 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, @@ -39,7 +39,7 @@ class PhysicButtonsPanel(): class PHYSICS_PT_field(PhysicButtonsPanel, Panel): - bl_label = "Force Fields" + bl_label = _("Force Fields") @classmethod def poll(cls, context): @@ -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,24 +149,24 @@ 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): - bl_label = "Collision" + bl_label = _("Collision") #bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -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..cd808c2cf45 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' @@ -34,7 +34,7 @@ class PhysicButtonsPanel(): class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel): - bl_label = "Fluid" + bl_label = _("Fluid") def draw(self, context): layout = self.layout @@ -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,28 +167,28 @@ 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): - bl_label = "Domain World" + bl_label = _("Domain World") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -206,39 +206,39 @@ 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) class PHYSICS_PT_domain_boundary(PhysicButtonsPanel, Panel): - bl_label = "Domain Boundary" + bl_label = _("Domain Boundary") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -254,20 +254,20 @@ 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): - bl_label = "Domain Particles" + bl_label = _("Domain Particles") bl_options = {'DEFAULT_CLOSED'} @classmethod diff --git a/release/scripts/startup/bl_ui/properties_physics_smoke.py b/release/scripts/startup/bl_ui/properties_physics_smoke.py index 771a778380d..5dfe543c8a8 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, @@ -40,7 +40,7 @@ class PhysicButtonsPanel(): class PHYSICS_PT_smoke(PhysicButtonsPanel, Panel): - bl_label = "Smoke" + bl_label = _("Smoke") def draw(self, context): layout = self.layout @@ -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,27 +85,27 @@ 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") class PHYSICS_PT_smoke_groups(PhysicButtonsPanel, Panel): - bl_label = "Smoke Groups" + bl_label = _("Smoke Groups") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -121,19 +121,19 @@ 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="") class PHYSICS_PT_smoke_highres(PhysicButtonsPanel, Panel): - bl_label = "Smoke High Resolution" + bl_label = _("Smoke High Resolution") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -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") @@ -170,7 +170,7 @@ class PHYSICS_PT_smoke_highres(PhysicButtonsPanel, Panel): class PHYSICS_PT_smoke_cache(PhysicButtonsPanel, Panel): - bl_label = "Smoke Cache" + bl_label = _("Smoke Cache") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -184,14 +184,14 @@ 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') class PHYSICS_PT_smoke_field_weights(PhysicButtonsPanel, Panel): - bl_label = "Smoke Field Weights" + bl_label = _("Smoke Field Weights") bl_options = {'DEFAULT_CLOSED'} @classmethod diff --git a/release/scripts/startup/bl_ui/properties_physics_softbody.py b/release/scripts/startup/bl_ui/properties_physics_softbody.py index 0b55ccf9516..44778ffee5f 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, @@ -46,7 +46,7 @@ class PhysicButtonsPanel(): class PHYSICS_PT_softbody(PhysicButtonsPanel, Panel): - bl_label = "Soft Body" + bl_label = _("Soft Body") def draw(self, context): layout = self.layout @@ -62,18 +62,18 @@ 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") class PHYSICS_PT_softbody_cache(PhysicButtonsPanel, Panel): - bl_label = "Soft Body Cache" + bl_label = _("Soft Body Cache") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -86,7 +86,7 @@ class PHYSICS_PT_softbody_cache(PhysicButtonsPanel, Panel): class PHYSICS_PT_softbody_goal(PhysicButtonsPanel, Panel): - bl_label = "Soft Body Goal" + bl_label = _("Soft Body Goal") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -114,22 +114,22 @@ 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): - bl_label = "Soft Body Edges" + bl_label = _("Soft Body Edges") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -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,20 +169,20 @@ 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): - bl_label = "Soft Body Self Collision" + bl_label = _("Soft Body Self Collision") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -203,18 +203,18 @@ 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): - bl_label = "Soft Body Solver" + bl_label = _("Soft Body Solver") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -233,24 +233,24 @@ 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") class PHYSICS_PT_softbody_field_weights(PhysicButtonsPanel, Panel): - bl_label = "Soft Body Field Weights" + bl_label = _("Soft Body Field Weights") bl_options = {'DEFAULT_CLOSED'} @classmethod diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py index 395cfc6934e..981d539a4b5 100644 --- a/release/scripts/startup/bl_ui/properties_render.py +++ b/release/scripts/startup/bl_ui/properties_render.py @@ -19,24 +19,25 @@ # <pep8 compliant> import bpy from bpy.types import Menu, Panel +from blf import gettext as _ class RENDER_MT_presets(Menu): - bl_label = "Render Presets" + bl_label = _("Render Presets") preset_subdir = "render" preset_operator = "script.execute_preset" draw = Menu.draw_preset class RENDER_MT_ffmpeg_presets(Menu): - bl_label = "FFMPEG Presets" + bl_label = _("FFMPEG Presets") preset_subdir = "ffmpeg" preset_operator = "script.python_file_run" draw = Menu.draw_preset class RENDER_MT_framerate_presets(Menu): - bl_label = "Frame Rate Presets" + bl_label = _("Frame Rate Presets") preset_subdir = "framerate" preset_operator = "script.execute_preset" draw = Menu.draw_preset @@ -55,7 +56,7 @@ class RenderButtonsPanel(): class RENDER_PT_render(RenderButtonsPanel, Panel): - bl_label = "Render" + bl_label = _("Render") COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): @@ -64,14 +65,14 @@ 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): - bl_label = "Layers" + bl_label = _("Layers") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -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") @@ -175,7 +176,7 @@ class RENDER_PT_layers(RenderButtonsPanel, Panel): class RENDER_PT_dimensions(RenderButtonsPanel, Panel): - bl_label = "Dimensions" + bl_label = _("Dimensions") COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): @@ -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", text=_("Start")) + sub.prop(scene, "frame_end", text=_("End")) + sub.prop(scene, "frame_step", text=_("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,14 +236,14 @@ 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): - bl_label = "Anti-Aliasing" + bl_label = _("Anti-Aliasing") COMPAT_ENGINES = {'BLENDER_RENDER'} def draw_header(self, context): @@ -266,11 +267,11 @@ 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): - bl_label = "Sampled Motion Blur" + bl_label = _("Sampled Motion Blur") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -296,7 +297,7 @@ class RENDER_PT_motion_blur(RenderButtonsPanel, Panel): class RENDER_PT_shading(RenderButtonsPanel, Panel): - bl_label = "Shading" + bl_label = _("Shading") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -308,19 +309,19 @@ 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): - bl_label = "Performance" + bl_label = _("Performance") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -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,17 +354,17 @@ 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): - bl_label = "Post Processing" + bl_label = _("Post Processing") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -378,29 +379,29 @@ 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="") class RENDER_PT_stamp(RenderButtonsPanel, Panel): - bl_label = "Stamp" + bl_label = _("Stamp") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -419,33 +420,33 @@ 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="") class RENDER_PT_output(RenderButtonsPanel, Panel): - bl_label = "Output" + bl_label = _("Output") COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): @@ -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': @@ -545,7 +546,7 @@ class RENDER_PT_output(RenderButtonsPanel, Panel): class RENDER_PT_encoding(RenderButtonsPanel, Panel): - bl_label = "Encoding" + bl_label = _("Encoding") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -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") @@ -598,7 +599,7 @@ class RENDER_PT_encoding(RenderButtonsPanel, Panel): class RENDER_PT_bake(RenderButtonsPanel, Panel): - bl_label = "Bake" + bl_label = _("Bake") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -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..11e20a8cd2a 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' @@ -33,7 +33,7 @@ class SceneButtonsPanel(): class SCENE_PT_scene(SceneButtonsPanel, Panel): - bl_label = "Scene" + bl_label = _("Scene") COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): @@ -41,11 +41,11 @@ 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): - bl_label = "Audio" + bl_label = _("Audio") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def draw(self, context): @@ -59,21 +59,21 @@ 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") class SCENE_PT_unit(SceneButtonsPanel, Panel): - bl_label = "Units" + bl_label = _("Units") COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): @@ -86,12 +86,12 @@ 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") class SCENE_PT_keying_sets(SceneButtonsPanel, Panel): - bl_label = "Keying Sets" + bl_label = _("Keying Sets") def draw(self, context): layout = self.layout @@ -115,16 +115,16 @@ 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") class SCENE_PT_keying_set_paths(SceneButtonsPanel, Panel): - bl_label = "Active Keying Set" + bl_label = _("Active Keying Set") @classmethod def poll(cls, context): @@ -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") @@ -174,7 +174,7 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel, Panel): class SCENE_PT_physics(SceneButtonsPanel, Panel): - bl_label = "Gravity" + bl_label = _("Gravity") COMPAT_ENGINES = {'BLENDER_RENDER'} def draw_header(self, context): @@ -191,7 +191,7 @@ class SCENE_PT_physics(SceneButtonsPanel, Panel): class SCENE_PT_simplify(SceneButtonsPanel, Panel): - bl_label = "Simplify" + bl_label = _("Simplify") COMPAT_ENGINES = {'BLENDER_RENDER'} def draw_header(self, context): @@ -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): @@ -230,12 +230,12 @@ class SCENE_PT_custom_props(SceneButtonsPanel, PropertyPanel, Panel): class ANIM_OT_keying_set_export(Operator): "Export Keying Set to a python script." bl_idname = "anim.keying_set_export" - bl_label = "Export Keying Set..." + bl_label = _("Export Keying Set...") - 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'}) + 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: diff --git a/release/scripts/startup/bl_ui/properties_texture.py b/release/scripts/startup/bl_ui/properties_texture.py index 34f5a948ee7..c80f3fa76d3 100644 --- a/release/scripts/startup/bl_ui/properties_texture.py +++ b/release/scripts/startup/bl_ui/properties_texture.py @@ -20,10 +20,11 @@ import bpy from bpy.types import Menu, Panel from rna_prop_ui import PropertyPanel +from blf import gettext as _ class TEXTURE_MT_specials(Menu): - bl_label = "Texture Specials" + bl_label = _("Texture Specials") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def draw(self, context): @@ -34,7 +35,7 @@ class TEXTURE_MT_specials(Menu): class TEXTURE_MT_envmap_specials(Menu): - bl_label = "Environment Map Specials" + bl_label = _("Environment Map Specials") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def draw(self, context): @@ -143,16 +144,16 @@ 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="") class TEXTURE_PT_preview(TextureButtonsPanel, Panel): - bl_label = "Preview" + bl_label = _("Preview") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} def draw(self, context): @@ -169,7 +170,7 @@ class TEXTURE_PT_preview(TextureButtonsPanel, Panel): class TEXTURE_PT_colors(TextureButtonsPanel, Panel): - bl_label = "Colors" + bl_label = _("Colors") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -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") @@ -225,7 +226,7 @@ class TextureTypePanel(TextureButtonsPanel): class TEXTURE_PT_clouds(TextureTypePanel, Panel): - bl_label = "Clouds" + bl_label = _("Clouds") tex_type = 'CLOUDS' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -235,21 +236,21 @@ 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): - bl_label = "Wood" + bl_label = _("Wood") tex_type = 'WOOD' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -263,22 +264,22 @@ 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") class TEXTURE_PT_marble(TextureTypePanel, Panel): - bl_label = "Marble" + bl_label = _("Marble") tex_type = 'MARBLE' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -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") @@ -305,7 +306,7 @@ class TEXTURE_PT_marble(TextureTypePanel, Panel): class TEXTURE_PT_magic(TextureTypePanel, Panel): - bl_label = "Magic" + bl_label = _("Magic") tex_type = 'MAGIC' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -315,12 +316,12 @@ 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") class TEXTURE_PT_blend(TextureTypePanel, Panel): - bl_label = "Blend" + bl_label = _("Blend") tex_type = 'BLEND' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -338,7 +339,7 @@ class TEXTURE_PT_blend(TextureTypePanel, Panel): class TEXTURE_PT_stucci(TextureTypePanel, Panel): - bl_label = "Stucci" + bl_label = _("Stucci") tex_type = 'STUCCI' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -348,17 +349,17 @@ 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") class TEXTURE_PT_image(TextureTypePanel, Panel): - bl_label = "Image" + bl_label = _("Image") tex_type = 'IMAGE' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -371,20 +372,20 @@ 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") class TEXTURE_PT_image_sampling(TextureTypePanel, Panel): - bl_label = "Image Sampling" + bl_label = _("Image Sampling") bl_options = {'DEFAULT_CLOSED'} tex_type = 'IMAGE' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -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() @@ -429,7 +430,7 @@ class TEXTURE_PT_image_sampling(TextureTypePanel, Panel): class TEXTURE_PT_image_mapping(TextureTypePanel, Panel): - bl_label = "Image Mapping" + bl_label = _("Image Mapping") bl_options = {'DEFAULT_CLOSED'} tex_type = 'IMAGE' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -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,18 +475,18 @@ 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") class TEXTURE_PT_envmap(TextureTypePanel, Panel): - bl_label = "Environment Map" + bl_label = _("Environment Map") tex_type = 'ENVIRONMENT_MAP' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -517,13 +518,13 @@ 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): - bl_label = "Environment Map Sampling" + bl_label = _("Environment Map Sampling") bl_options = {'DEFAULT_CLOSED'} tex_type = 'ENVIRONMENT_MAP' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -537,7 +538,7 @@ class TEXTURE_PT_envmap_sampling(TextureTypePanel, Panel): class TEXTURE_PT_musgrave(TextureTypePanel, Panel): - bl_label = "Musgrave" + bl_label = _("Musgrave") tex_type = 'MUSGRAVE' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -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,21 +561,21 @@ 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") class TEXTURE_PT_voronoi(TextureTypePanel, Panel): - bl_label = "Voronoi" + bl_label = _("Voronoi") tex_type = 'VORONOI' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -586,31 +587,31 @@ 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") class TEXTURE_PT_distortednoise(TextureTypePanel, Panel): - bl_label = "Distorted Noise" + bl_label = _("Distorted Noise") tex_type = 'DISTORTED_NOISE' COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @@ -620,19 +621,19 @@ 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") class TEXTURE_PT_voxeldata(TextureButtonsPanel, Panel): - bl_label = "Voxel Data" + bl_label = _("Voxel Data") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @classmethod @@ -672,7 +673,7 @@ class TEXTURE_PT_voxeldata(TextureButtonsPanel, Panel): class TEXTURE_PT_pointdensity(TextureButtonsPanel, Panel): - bl_label = "Point Density" + bl_label = _("Point Density") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @classmethod @@ -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,12 +734,12 @@ 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) class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel, Panel): - bl_label = "Turbulence" + bl_label = _("Turbulence") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @classmethod @@ -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() @@ -775,7 +776,7 @@ class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel, Panel): class TEXTURE_PT_mapping(TextureSlotPanel, Panel): - bl_label = "Mapping" + bl_label = _("Mapping") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @classmethod @@ -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() @@ -863,7 +864,7 @@ class TEXTURE_PT_mapping(TextureSlotPanel, Panel): class TEXTURE_PT_influence(TextureSlotPanel, Panel): - bl_label = "Influence" + bl_label = _("Influence") COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} @classmethod @@ -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..07df2ff53ec 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(): @@ -63,7 +64,7 @@ class WORLD_PT_context_world(WorldButtonsPanel, Panel): class WORLD_PT_preview(WorldButtonsPanel, Panel): - bl_label = "Preview" + bl_label = _("Preview") COMPAT_ENGINES = {'BLENDER_RENDER'} @classmethod @@ -76,7 +77,7 @@ class WORLD_PT_preview(WorldButtonsPanel, Panel): class WORLD_PT_world(WorldButtonsPanel, Panel): - bl_label = "World" + bl_label = _("World") COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): @@ -101,7 +102,7 @@ class WORLD_PT_world(WorldButtonsPanel, Panel): class WORLD_PT_ambient_occlusion(WorldButtonsPanel, Panel): - bl_label = "Ambient Occlusion" + bl_label = _("Ambient Occlusion") COMPAT_ENGINES = {'BLENDER_RENDER'} def draw_header(self, context): @@ -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,12 +135,12 @@ 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="") class WORLD_PT_indirect_lighting(WorldButtonsPanel, Panel): - bl_label = "Indirect Lighting" + bl_label = _("Indirect Lighting") COMPAT_ENGINES = {'BLENDER_RENDER'} def draw_header(self, context): @@ -153,15 +154,15 @@ 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): - bl_label = "Gather" + bl_label = _("Gather") COMPAT_ENGINES = {'BLENDER_RENDER'} def draw(self, context): @@ -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,15 +202,15 @@ 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") class WORLD_PT_mist(WorldButtonsPanel, Panel): - bl_label = "Mist" + bl_label = _("Mist") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -238,7 +239,7 @@ class WORLD_PT_mist(WorldButtonsPanel, Panel): class WORLD_PT_stars(WorldButtonsPanel, Panel): - bl_label = "Stars" + bl_label = _("Stars") bl_options = {'DEFAULT_CLOSED'} COMPAT_ENGINES = {'BLENDER_RENDER'} @@ -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..fae5f1d313d 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,11 +34,11 @@ 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): - bl_label = "Console" + bl_label = _("Console") def draw(self, context): layout = self.layout @@ -54,7 +55,7 @@ class CONSOLE_MT_console(Menu): class CONSOLE_MT_language(Menu): - bl_label = "Languages..." + bl_label = _("Languages...") def draw(self, context): import sys @@ -83,7 +84,7 @@ def add_scrollback(text, text_type): class ConsoleExec(Operator): '''Execute the current console line as a python expression''' bl_idname = "console.execute" - bl_label = "Console Execute" + bl_label = _("Console Execute") def execute(self, context): sc = context.space_data @@ -101,7 +102,7 @@ class ConsoleExec(Operator): class ConsoleAutocomplete(Operator): '''Evaluate the namespace up until the cursor and give a list of options or complete the name if there is only one''' bl_idname = "console.autocomplete" - bl_label = "Console Autocomplete" + bl_label = _("Console Autocomplete") def execute(self, context): sc = context.space_data @@ -118,7 +119,7 @@ class ConsoleAutocomplete(Operator): class ConsoleBanner(Operator): '''Print a message whem the terminal initializes''' bl_idname = "console.banner" - bl_label = "Console Banner" + bl_label = _("Console Banner") def execute(self, context): sc = context.space_data @@ -140,10 +141,10 @@ class ConsoleBanner(Operator): class ConsoleLanguage(Operator): '''Set the current language for this console''' bl_idname = "console.language" - bl_label = "Console Language" + bl_label = _("Console Language") language = StringProperty( - name="Language", + name=_("Language"), maxlen=32, ) diff --git a/release/scripts/startup/bl_ui/space_dopesheet.py b/release/scripts/startup/bl_ui/space_dopesheet.py index 90dcc99e6d7..06905d1505a 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) @@ -139,7 +140,7 @@ class DOPESHEET_HT_header(Header): class DOPESHEET_MT_view(Menu): - bl_label = "View" + bl_label = _("View") def draw(self, context): layout = self.layout @@ -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") @@ -173,29 +174,29 @@ class DOPESHEET_MT_view(Menu): class DOPESHEET_MT_select(Menu): - bl_label = "Select" + bl_label = _("Select") def draw(self, context): layout = self.layout # 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': @@ -208,7 +209,7 @@ class DOPESHEET_MT_select(Menu): class DOPESHEET_MT_marker(Menu): - bl_label = "Marker" + bl_label = _("Marker") def draw(self, context): layout = self.layout @@ -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() @@ -238,7 +239,7 @@ class DOPESHEET_MT_marker(Menu): # Keyframe Editing class DOPESHEET_MT_channel(Menu): - bl_label = "Channel" + bl_label = _("Channel") def draw(self, context): layout = self.layout @@ -254,29 +255,29 @@ 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") class DOPESHEET_MT_key(Menu): - bl_label = "Key" + bl_label = _("Key") 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") @@ -300,22 +301,22 @@ class DOPESHEET_MT_key(Menu): class DOPESHEET_MT_key_transform(Menu): - bl_label = "Transform" + bl_label = _("Transform") 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' ####################################### # Grease Pencil Editing class DOPESHEET_MT_gpencil_channel(Menu): - bl_label = "Channel" + bl_label = _("Channel") def draw(self, context): layout = self.layout @@ -342,12 +343,12 @@ class DOPESHEET_MT_gpencil_channel(Menu): class DOPESHEET_MT_gpencil_frame(Menu): - bl_label = "Frame" + bl_label = _("Frame") 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..7048d5febf8 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): @@ -61,7 +62,7 @@ class GRAPH_HT_header(Header): class GRAPH_MT_view(Menu): - bl_label = "View" + bl_label = _("View") def draw(self, context): layout = self.layout @@ -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") @@ -105,30 +106,30 @@ class GRAPH_MT_view(Menu): class GRAPH_MT_select(Menu): - bl_label = "Select" + bl_label = _("Select") def draw(self, context): layout = self.layout # 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") @@ -139,27 +140,27 @@ class GRAPH_MT_select(Menu): class GRAPH_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")) # TODO: pose markers for action edit mode only? class GRAPH_MT_channel(Menu): - bl_label = "Channel" + bl_label = _("Channel") def draw(self, context): layout = self.layout @@ -176,29 +177,29 @@ 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") class GRAPH_MT_key(Menu): - bl_label = "Key" + bl_label = _("Key") 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,19 +225,19 @@ 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): - bl_label = "Transform" + bl_label = _("Transform") 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..0f23802a401 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(): @@ -33,7 +34,7 @@ class BrushButtonsPanel(): class IMAGE_MT_view(Menu): - bl_label = "View" + bl_label = _("View") def draw(self, context): layout = self.layout @@ -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() @@ -81,7 +82,7 @@ class IMAGE_MT_view(Menu): class IMAGE_MT_select(Menu): - bl_label = "Select" + bl_label = _("Select") def draw(self, context): layout = self.layout @@ -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() @@ -102,7 +103,7 @@ class IMAGE_MT_select(Menu): class IMAGE_MT_image(Menu): - bl_label = "Image" + bl_label = _("Image") def draw(self, context): layout = self.layout @@ -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() @@ -153,44 +154,44 @@ class IMAGE_MT_image(Menu): class IMAGE_MT_image_invert(Menu): - bl_label = "Invert" + bl_label = _("Invert") 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 class IMAGE_MT_uvs_showhide(Menu): - bl_label = "Show/Hide Faces" + bl_label = _("Show/Hide Faces") def draw(self, context): 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): - bl_label = "Transform" + bl_label = _("Transform") def draw(self, context): layout = self.layout @@ -205,35 +206,35 @@ class IMAGE_MT_uvs_transform(Menu): class IMAGE_MT_uvs_snap(Menu): - bl_label = "Snap" + bl_label = _("Snap") def draw(self, context): 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): - bl_label = "Mirror" + bl_label = _("Mirror") def draw(self, context): 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): - bl_label = "Weld/Align" + bl_label = _("Weld/Align") def draw(self, context): layout = self.layout @@ -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() @@ -288,7 +289,7 @@ class IMAGE_MT_uvs(Menu): class IMAGE_MT_uvs_select_mode(Menu): - bl_label = "UV Select Mode" + bl_label = _("UV Select Mode") def draw(self, context): layout = self.layout @@ -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") @@ -416,7 +417,7 @@ class IMAGE_HT_header(Header): class IMAGE_PT_image_properties(Panel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'UI' - bl_label = "Image" + bl_label = _("Image") @classmethod def poll(cls, context): @@ -435,7 +436,7 @@ class IMAGE_PT_image_properties(Panel): class IMAGE_PT_game_properties(Panel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'UI' - bl_label = "Game Properties" + bl_label = _("Game Properties") @classmethod def poll(cls, context): @@ -477,7 +478,7 @@ class IMAGE_PT_game_properties(Panel): class IMAGE_PT_view_histogram(Panel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'PREVIEW' - bl_label = "Histogram" + bl_label = _("Histogram") @classmethod def poll(cls, context): @@ -496,7 +497,7 @@ class IMAGE_PT_view_histogram(Panel): class IMAGE_PT_view_waveform(Panel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'PREVIEW' - bl_label = "Waveform" + bl_label = _("Waveform") @classmethod def poll(cls, context): @@ -517,7 +518,7 @@ class IMAGE_PT_view_waveform(Panel): class IMAGE_PT_view_vectorscope(Panel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'PREVIEW' - bl_label = "Vectorscope" + bl_label = _("Vectorscope") @classmethod def poll(cls, context): @@ -535,7 +536,7 @@ class IMAGE_PT_view_vectorscope(Panel): class IMAGE_PT_sample_line(Panel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'PREVIEW' - bl_label = "Sample Line" + bl_label = _("Sample Line") @classmethod def poll(cls, context): @@ -555,7 +556,7 @@ class IMAGE_PT_sample_line(Panel): class IMAGE_PT_scope_sample(Panel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'PREVIEW' - bl_label = "Scope Samples" + bl_label = _("Scope Samples") @classmethod def poll(cls, context): @@ -577,7 +578,7 @@ class IMAGE_PT_scope_sample(Panel): class IMAGE_PT_view_properties(Panel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'UI' - bl_label = "Display" + bl_label = _("Display") @classmethod def poll(cls, context): @@ -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) @@ -636,7 +637,7 @@ class IMAGE_PT_view_properties(Panel): class IMAGE_PT_paint(Panel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'UI' - bl_label = "Paint" + bl_label = _("Paint") @classmethod def poll(cls, context): @@ -669,16 +670,16 @@ 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): - bl_label = "Texture" + bl_label = _("Texture") bl_options = {'DEFAULT_CLOSED'} def draw(self, context): @@ -693,7 +694,7 @@ class IMAGE_PT_tools_brush_texture(BrushButtonsPanel, Panel): class IMAGE_PT_tools_brush_tool(BrushButtonsPanel, Panel): - bl_label = "Tool" + bl_label = _("Tool") bl_options = {'DEFAULT_CLOSED'} def draw(self, context): @@ -711,7 +712,7 @@ class IMAGE_PT_tools_brush_tool(BrushButtonsPanel, Panel): class IMAGE_PT_paint_stroke(BrushButtonsPanel, Panel): - bl_label = "Paint Stroke" + bl_label = _("Paint Stroke") bl_options = {'DEFAULT_CLOSED'} def draw(self, context): @@ -728,14 +729,14 @@ 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") class IMAGE_PT_paint_curve(BrushButtonsPanel, Panel): - bl_label = "Paint Curve" + bl_label = _("Paint Curve") bl_options = {'DEFAULT_CLOSED'} def draw(self, context): diff --git a/release/scripts/startup/bl_ui/space_info.py b/release/scripts/startup/bl_ui/space_info.py index 7f5a5f231cf..416defb3bf5 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 @@ -88,7 +89,7 @@ class INFO_HT_header(Header): class INFO_MT_report(Menu): - bl_label = "Report" + bl_label = _("Report") def draw(self, context): layout = self.layout @@ -100,31 +101,31 @@ class INFO_MT_report(Menu): class INFO_MT_file(Menu): - bl_label = "File" + bl_label = _("File"); def draw(self, context): 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,12 +151,12 @@ 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): bl_idname = "INFO_MT_file_import" - bl_label = "Import" + bl_label = _("Import") def draw(self, context): if hasattr(bpy.types, "WM_OT_collada_import"): @@ -164,7 +165,7 @@ class INFO_MT_file_import(Menu): class INFO_MT_file_export(Menu): bl_idname = "INFO_MT_file_export" - bl_label = "Export" + bl_label = _("Export") def draw(self, context): if hasattr(bpy.types, "WM_OT_collada_export"): @@ -172,13 +173,13 @@ class INFO_MT_file_export(Menu): class INFO_MT_file_external_data(Menu): - bl_label = "External Data" + bl_label = _("External Data") 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() @@ -190,43 +191,43 @@ class INFO_MT_file_external_data(Menu): class INFO_MT_mesh_add(Menu): bl_idname = "INFO_MT_mesh_add" - bl_label = "Mesh" + bl_label = _("Mesh") def draw(self, context): 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): bl_idname = "INFO_MT_curve_add" - bl_label = "Curve" + bl_label = _("Curve") def draw(self, context): 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): bl_idname = "INFO_MT_edit_curve_add" - bl_label = "Add" + bl_label = _("Add") def draw(self, context): is_surf = context.active_object.type == 'SURFACE' @@ -242,76 +243,76 @@ class INFO_MT_edit_curve_add(Menu): class INFO_MT_surface_add(Menu): bl_idname = "INFO_MT_surface_add" - bl_label = "Surface" + bl_label = _("Surface") def draw(self, context): 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): bl_idname = "INFO_MT_armature_add" - bl_label = "Armature" + bl_label = _("Armature") def draw(self, context): 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): - bl_label = "Add" + bl_label = _("Add") def draw(self, context): layout = self.layout 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): - bl_label = "Game" + bl_label = _("Game") def draw(self, context): layout = self.layout @@ -332,18 +333,18 @@ class INFO_MT_game(Menu): class INFO_MT_render(Menu): - bl_label = "Render" + bl_label = _("Render") 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() @@ -352,34 +353,34 @@ class INFO_MT_render(Menu): class INFO_MT_help(Menu): - bl_label = "Help" + bl_label = _("Help") def draw(self, context): import sys 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.separator() layout.operator("wm.splash", icon='BLENDER') @@ -389,7 +390,7 @@ class INFO_MT_help(Menu): class HELP_OT_operator_cheat_sheet(Operator): bl_idname = "help.operator_cheat_sheet" - bl_label = "Operator Cheat Sheet" + bl_label = _("Operator Cheat Sheet") def execute(self, context): op_strings = [] diff --git a/release/scripts/startup/bl_ui/space_logic.py b/release/scripts/startup/bl_ui/space_logic.py index 869a91124d3..38b63823ff3 100644 --- a/release/scripts/startup/bl_ui/space_logic.py +++ b/release/scripts/startup/bl_ui/space_logic.py @@ -19,12 +19,13 @@ # <pep8 compliant> import bpy from bpy.types import Header, Menu, Panel +from blf import gettext as _ class LOGIC_PT_properties(Panel): bl_space_type = 'LOGIC_EDITOR' bl_region_type = 'UI' - bl_label = "Properties" + bl_label = _("Properties") @classmethod def poll(cls, context): @@ -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): @@ -51,14 +52,14 @@ class LOGIC_PT_properties(Panel): class LOGIC_MT_logicbricks_add(Menu): - bl_label = "Add" + bl_label = _("Add") 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): @@ -74,7 +75,7 @@ class LOGIC_HT_header(Header): class LOGIC_MT_view(Menu): - bl_label = "View" + bl_label = _("View") def draw(self, context): layout = self.layout diff --git a/release/scripts/startup/bl_ui/space_nla.py b/release/scripts/startup/bl_ui/space_nla.py index ffead81c507..aa8dc337c39 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): @@ -48,7 +49,7 @@ class NLA_HT_header(Header): class NLA_MT_view(Menu): - bl_label = "View" + bl_label = _("View") def draw(self, context): layout = self.layout @@ -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") @@ -80,53 +81,53 @@ class NLA_MT_view(Menu): class NLA_MT_select(Menu): - bl_label = "Select" + bl_label = _("Select") def draw(self, context): layout = self.layout # 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): - bl_label = "Edit" + bl_label = _("Edit") def draw(self, context): layout = self.layout 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,18 +149,18 @@ 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): - bl_label = "Add" + bl_label = _("Add") def draw(self, context): layout = self.layout @@ -174,18 +175,18 @@ 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): - bl_label = "Transform" + bl_label = _("Transform") 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..6a58fc143fa 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) @@ -74,7 +75,7 @@ class NODE_HT_header(Header): class NODE_MT_view(Menu): - bl_label = "View" + bl_label = _("View") def draw(self, context): layout = self.layout @@ -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() @@ -103,7 +104,7 @@ class NODE_MT_view(Menu): class NODE_MT_select(Menu): - bl_label = "Select" + bl_label = _("Select") def draw(self, context): layout = self.layout @@ -120,7 +121,7 @@ class NODE_MT_select(Menu): class NODE_MT_node(Menu): - bl_label = "Node" + bl_label = _("Node") def draw(self, context): layout = self.layout @@ -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() @@ -163,7 +164,7 @@ class NODE_MT_node(Menu): class NODE_PT_properties(Panel): bl_space_type = 'NODE_EDITOR' bl_region_type = 'UI' - bl_label = "Backdrop" + bl_label = _("Backdrop") @classmethod def poll(cls, context): @@ -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_outliner.py b/release/scripts/startup/bl_ui/space_outliner.py index b1e6eaf3245..b3be568cf68 100644 --- a/release/scripts/startup/bl_ui/space_outliner.py +++ b/release/scripts/startup/bl_ui/space_outliner.py @@ -19,6 +19,7 @@ # <pep8 compliant> import bpy from bpy.types import Header, Menu +from blf import gettext as _ class OUTLINER_HT_header(Header): @@ -65,7 +66,7 @@ class OUTLINER_HT_header(Header): class OUTLINER_MT_view(Menu): - bl_label = "View" + bl_label = _("View") def draw(self, context): layout = self.layout @@ -87,7 +88,7 @@ class OUTLINER_MT_view(Menu): class OUTLINER_MT_search(Menu): - bl_label = "Search" + bl_label = _("Search") def draw(self, context): layout = self.layout @@ -99,7 +100,7 @@ class OUTLINER_MT_search(Menu): class OUTLINER_MT_edit_datablocks(Menu): - bl_label = "Edit" + bl_label = _("Edit") def draw(self, context): layout = self.layout diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py index 36f606da635..ddbbc08eb46 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: @@ -78,7 +79,7 @@ class SEQUENCER_HT_header(Header): class SEQUENCER_MT_view_toggle(Menu): - bl_label = "View Type" + bl_label = _("View Type") def draw(self, context): layout = self.layout @@ -89,7 +90,7 @@ class SEQUENCER_MT_view_toggle(Menu): class SEQUENCER_MT_view(Menu): - bl_label = "View" + bl_label = _("View") def draw(self, context): layout = self.layout @@ -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': @@ -133,17 +134,17 @@ class SEQUENCER_MT_view(Menu): class SEQUENCER_MT_select(Menu): - bl_label = "Select" + bl_label = _("Select") 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") @@ -151,27 +152,27 @@ class SEQUENCER_MT_select(Menu): class SEQUENCER_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")) #layout.operator("sequencer.sound_strip_add", text="Transform Markers") # toggle, will be rna - (sseq->flag & SEQ_MARKER_TRANS) class SEQUENCER_MT_change(Menu): - bl_label = "Change" + bl_label = _("Change") def draw(self, context): layout = self.layout @@ -180,11 +181,11 @@ 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): - bl_label = "Add" + bl_label = _("Add") def draw(self, context): layout = self.layout @@ -192,57 +193,57 @@ 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") class SEQUENCER_MT_add_effect(Menu): - bl_label = "Effect Strip..." + bl_label = _("Effect Strip...") def draw(self, context): 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): - bl_label = "Strip" + bl_label = _("Strip") def draw(self, context): layout = self.layout 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") @@ -335,7 +336,7 @@ class SequencerButtonsPanel_Output(): class SEQUENCER_PT_edit(SequencerButtonsPanel, Panel): - bl_label = "Edit Strip" + bl_label = _("Edit Strip") def draw(self, context): layout = self.layout @@ -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,13 +388,13 @@ 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): - bl_label = "Effect Strip" + bl_label = _("Effect Strip") @classmethod def poll(cls, context): @@ -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,22 +517,22 @@ 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): - bl_label = "Strip Input" + bl_label = _("Strip Input") @classmethod def poll(cls, context): @@ -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,18 +606,18 @@ 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): - bl_label = "Sound" + bl_label = _("Sound") @classmethod def poll(cls, context): @@ -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,12 +655,12 @@ 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): - bl_label = "Scene" + bl_label = _("Scene") @classmethod def poll(cls, context): @@ -683,17 +684,17 @@ 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): - bl_label = "Filter" + bl_label = _("Filter") @classmethod def poll(cls, context): @@ -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,19 +744,19 @@ 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): - bl_label = "Proxy / Timecode" + bl_label = _("Proxy / Timecode") @classmethod def poll(cls, context): @@ -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="") @@ -830,7 +831,7 @@ class SEQUENCER_PT_preview(SequencerButtonsPanel_Output, Panel): class SEQUENCER_PT_view(SequencerButtonsPanel_Output, Panel): - bl_label = "View Settings" + bl_label = _("View Settings") def draw(self, context): layout = self.layout diff --git a/release/scripts/startup/bl_ui/space_text.py b/release/scripts/startup/bl_ui/space_text.py index 12e07c19ca1..03baf8f34ca 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,19 +67,19 @@ 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): bl_space_type = 'TEXT_EDITOR' bl_region_type = 'UI' - bl_label = "Properties" + bl_label = _("Properties") def draw(self, context): layout = self.layout @@ -109,7 +110,7 @@ class TEXT_PT_properties(Panel): class TEXT_PT_find(Panel): bl_space_type = 'TEXT_EDITOR' bl_region_type = 'UI' - bl_label = "Find" + bl_label = _("Find") def draw(self, context): layout = self.layout @@ -136,12 +137,12 @@ 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): - bl_label = "View" + bl_label = _("View") def draw(self, context): layout = self.layout @@ -156,15 +157,15 @@ 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' class TEXT_MT_text(Menu): - bl_label = "Text" + bl_label = _("Text") def draw(self, context): layout = self.layout @@ -192,7 +193,7 @@ class TEXT_MT_text(Menu): class TEXT_MT_templates(Menu): - bl_label = "Templates" + bl_label = _("Templates") def draw(self, context): self.path_menu(bpy.utils.script_paths("templates"), @@ -202,7 +203,7 @@ class TEXT_MT_templates(Menu): class TEXT_MT_edit_select(Menu): - bl_label = "Select" + bl_label = _("Select") def draw(self, context): layout = self.layout @@ -212,7 +213,7 @@ class TEXT_MT_edit_select(Menu): class TEXT_MT_edit_markers(Menu): - bl_label = "Markers" + bl_label = _("Markers") def draw(self, context): layout = self.layout @@ -223,7 +224,7 @@ class TEXT_MT_edit_markers(Menu): class TEXT_MT_format(Menu): - bl_label = "Format" + bl_label = _("Format") def draw(self, context): layout = self.layout @@ -242,21 +243,21 @@ class TEXT_MT_format(Menu): class TEXT_MT_edit_to3d(Menu): - bl_label = "Text To 3D Object" + bl_label = _("Text To 3D Object") def draw(self, context): 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 class TEXT_MT_edit(Menu): - bl_label = "Edit" + bl_label = _("Edit") @classmethod def poll(cls, context): @@ -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 db009fe43c2..157fe9939e8 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="") @@ -92,7 +93,7 @@ class TIME_HT_header(Header): class TIME_MT_view(Menu): - bl_label = "View" + bl_label = _("View") def draw(self, context): layout = self.layout @@ -117,7 +118,7 @@ class TIME_MT_view(Menu): class TIME_MT_cache(Menu): - bl_label = "Cache" + bl_label = _("Cache") def draw(self, context): layout = self.layout @@ -137,19 +138,19 @@ class TIME_MT_cache(Menu): class TIME_MT_frame(Menu): - bl_label = "Frame" + bl_label = _("Frame") 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() @@ -163,7 +164,7 @@ class TIME_MT_frame(Menu): class TIME_MT_playback(Menu): - bl_label = "Playback" + bl_label = _("Playback") def draw(self, context): layout = self.layout @@ -181,14 +182,14 @@ 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") class TIME_MT_autokey(Menu): - bl_label = "Auto-Keyframing Mode" + bl_label = _("Auto-Keyframing Mode") def draw(self, context): layout = self.layout diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index 13edc3471d2..12f992903c7 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' @@ -115,7 +116,7 @@ class USERPREF_PT_tabs(Panel): class USERPREF_MT_interaction_presets(Menu): - bl_label = "Presets" + bl_label = _("Presets") preset_subdir = "interaction" preset_operator = "script.execute_preset" draw = Menu.draw_preset @@ -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,17 +143,17 @@ 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): bl_space_type = 'USER_PREFERENCES' - bl_label = "Interface" + bl_label = _("Interface") bl_region_type = 'WINDOW' bl_options = {'HIDE_HEADER'} @@ -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() @@ -249,7 +250,7 @@ class USERPREF_PT_interface(Panel): class USERPREF_PT_edit(Panel): bl_space_type = 'USER_PREFERENCES' - bl_label = "Edit" + bl_label = _("Edit") bl_region_type = 'WINDOW' bl_options = {'HIDE_HEADER'} @@ -267,102 +268,102 @@ 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): bl_space_type = 'USER_PREFERENCES' - bl_label = "System" + bl_label = _("System") bl_region_type = 'WINDOW' bl_options = {'HIDE_HEADER'} @@ -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,21 +397,21 @@ 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() @@ -436,40 +437,40 @@ class USERPREF_PT_system(Panel): 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,17 +482,16 @@ 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.label(text=_("Select Language:")) + column.row().prop(system, "language", text="") + 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) @@ -499,7 +499,7 @@ class USERPREF_PT_system(Panel): class USERPREF_PT_theme(Panel): bl_space_type = 'USER_PREFERENCES' - bl_label = "Themes" + bl_label = _("Themes") bl_region_type = 'WINDOW' bl_options = {'HIDE_HEADER'} @@ -557,71 +557,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 +657,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() @@ -682,7 +682,7 @@ class USERPREF_PT_theme(Panel): class USERPREF_PT_file(Panel): bl_space_type = 'USER_PREFERENCES' - bl_label = "Files" + bl_label = _("Files") bl_region_type = 'WINDOW' bl_options = {'HIDE_HEADER'} @@ -700,22 +700,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 +732,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,18 +747,18 @@ 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 class USERPREF_MT_ndof_settings(Menu): # accessed from the window keybindings in C (only) - bl_label = "3D Mouse Settings" + bl_label = _("3D Mouse Settings") def draw(self, context): layout = self.layout @@ -783,7 +783,7 @@ class USERPREF_MT_ndof_settings(Menu): class USERPREF_PT_input(Panel, InputKeyMapPanel): bl_space_type = 'USER_PREFERENCES' - bl_label = "Input" + bl_label = _("Input") @classmethod def poll(cls, context): @@ -796,7 +796,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 +804,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 +824,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 +838,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() @@ -872,19 +872,19 @@ class USERPREF_PT_input(Panel, InputKeyMapPanel): class USERPREF_MT_addons_dev_guides(Menu): - bl_label = "Development Guides" + bl_label = _("Development Guides") # 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): bl_space_type = 'USER_PREFERENCES' - bl_label = "Addons" + bl_label = _("Addons") bl_region_type = 'WINDOW' bl_options = {'HIDE_HEADER'} @@ -934,10 +934,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 +1014,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 +1038,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 +1056,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): @@ -1075,11 +1075,11 @@ class USERPREF_PT_addons(Panel): class WM_OT_addon_enable(Operator): "Enable an addon" bl_idname = "wm.addon_enable" - bl_label = "Enable Add-On" + bl_label = _("Enable Add-On") module = StringProperty( - name="Module", - description="Module name of the addon to enable", + name=_("Module"), + description=_("Module name of the addon to enable"), ) def execute(self, context): @@ -1104,11 +1104,11 @@ class WM_OT_addon_enable(Operator): class WM_OT_addon_disable(Operator): "Disable an addon" bl_idname = "wm.addon_disable" - bl_label = "Disable Add-On" + bl_label = _("Disable Add-On") module = StringProperty( - name="Module", - description="Module name of the addon to disable", + name=_("Module"), + description=_("Module name of the addon to disable"), ) def execute(self, context): @@ -1119,11 +1119,11 @@ class WM_OT_addon_disable(Operator): class WM_OT_addon_install(Operator): "Install an addon" bl_idname = "wm.addon_install" - bl_label = "Install Add-On..." + bl_label = _("Install Add-On...") overwrite = BoolProperty( - name="Overwrite", - description="Remove existing addons with the same ID", + name=_("Overwrite"), + description=_("Remove existing addons with the same ID"), default=True, ) target = EnumProperty( @@ -1133,16 +1133,16 @@ class WM_OT_addon_install(Operator): ) filepath = StringProperty( - name="File Path", - description="File path to write file to", + name=_("File Path"), + description=_("File path to write file to"), ) filter_folder = BoolProperty( - name="Filter folders", + name=_("Filter folders"), default=True, options={'HIDDEN'}, ) filter_python = BoolProperty( - name="Filter python", + name=_("Filter python"), default=True, options={'HIDDEN'}, ) @@ -1284,11 +1284,11 @@ class WM_OT_addon_install(Operator): class WM_OT_addon_remove(Operator): "Disable an addon" bl_idname = "wm.addon_remove" - bl_label = "Remove Add-On" + bl_label = _("Remove Add-On") module = StringProperty( - name="Module", - description="Module name of the addon to remove", + name=_("Module"), + description=_("Module name of the addon to remove"), ) @staticmethod @@ -1338,8 +1338,8 @@ class WM_OT_addon_expand(Operator): bl_label = "" module = StringProperty( - name="Module", - description="Module name of the addon to expand", + name=_("Module"), + description=_("Module name of the addon to expand"), ) def execute(self, context): diff --git a/release/scripts/startup/bl_ui/space_userpref_keymap.py b/release/scripts/startup/bl_ui/space_userpref_keymap.py index 9ed1591cbf3..336e4edf006 100644 --- a/release/scripts/startup/bl_ui/space_userpref_keymap.py +++ b/release/scripts/startup/bl_ui/space_userpref_keymap.py @@ -20,91 +20,93 @@ import bpy from bpy.types import Menu, Operator, OperatorProperties import os +from blf import gettext as _ +from blf import fake_gettext as N_ KM_HIERARCHY = [ - ('Window', 'EMPTY', 'WINDOW', []), # file save, window change, exit - ('Screen', 'EMPTY', 'WINDOW', [ # full screen, undo, screenshot - ('Screen Editing', 'EMPTY', 'WINDOW', []), # resizing, action corners + ( N_('Window'), 'EMPTY', 'WINDOW', []), # file save, window change, exit + ( N_('Screen'), 'EMPTY', 'WINDOW', [ # full screen, undo, screenshot + ( N_('Screen Editing'), 'EMPTY', 'WINDOW', []), # resizing, action corners ]), - ('View2D', 'EMPTY', 'WINDOW', []), # view 2d navigation (per region) - ('View2D Buttons List', 'EMPTY', 'WINDOW', []), # view 2d with buttons navigation - ('Header', 'EMPTY', 'WINDOW', []), # header stuff (per region) - ('Grease Pencil', 'EMPTY', 'WINDOW', []), # grease pencil stuff (per region) + ( N_('View2D'), 'EMPTY', 'WINDOW', []), # view 2d navigation (per region) + ( N_('View2D Buttons List'), 'EMPTY', 'WINDOW', []), # view 2d with buttons navigation + ( N_('Header'), 'EMPTY', 'WINDOW', []), # header stuff (per region) + ( N_('Grease Pencil'), 'EMPTY', 'WINDOW', []), # grease pencil stuff (per region) - ('3D View', 'VIEW_3D', 'WINDOW', [ # view 3d navigation and generic stuff (select, transform) - ('Object Mode', 'EMPTY', 'WINDOW', []), - ('Mesh', 'EMPTY', 'WINDOW', []), - ('Curve', 'EMPTY', 'WINDOW', []), - ('Armature', 'EMPTY', 'WINDOW', []), - ('Metaball', 'EMPTY', 'WINDOW', []), - ('Lattice', 'EMPTY', 'WINDOW', []), - ('Font', 'EMPTY', 'WINDOW', []), + ( N_('3D View'), 'VIEW_3D', 'WINDOW', [ # view 3d navigation and generic stuff (select, transform) + ( N_('Object Mode'), 'EMPTY', 'WINDOW', []), + ( N_('Mesh'), 'EMPTY', 'WINDOW', []), + ( N_('Curve'), 'EMPTY', 'WINDOW', []), + ( N_('Armature'), 'EMPTY', 'WINDOW', []), + ( N_('Metaball'), 'EMPTY', 'WINDOW', []), + ( N_('Lattice'), 'EMPTY', 'WINDOW', []), + ( N_('Font'), 'EMPTY', 'WINDOW', []), - ('Pose', 'EMPTY', 'WINDOW', []), + ( N_('Pose'), 'EMPTY', 'WINDOW', []), - ('Vertex Paint', 'EMPTY', 'WINDOW', []), - ('Weight Paint', 'EMPTY', 'WINDOW', []), - ('Face Mask', 'EMPTY', 'WINDOW', []), - ('Image Paint', 'EMPTY', 'WINDOW', []), # image and view3d - ('Sculpt', 'EMPTY', 'WINDOW', []), + ( N_('Vertex Paint'), 'EMPTY', 'WINDOW', []), + ( N_('Weight Paint'), 'EMPTY', 'WINDOW', []), + ( N_('Face Mask'), 'EMPTY', 'WINDOW', []), + ( N_('Image Paint'), 'EMPTY', 'WINDOW', []), # image and view3d + ( N_('Sculpt'), 'EMPTY', 'WINDOW', []), - ('Armature Sketch', 'EMPTY', 'WINDOW', []), - ('Particle', 'EMPTY', 'WINDOW', []), + ( N_('Armature Sketch'), 'EMPTY', 'WINDOW', []), + ( N_('Particle'), 'EMPTY', 'WINDOW', []), - ('Object Non-modal', 'EMPTY', 'WINDOW', []), # mode change + ( N_('Object Non-modal'), 'EMPTY', 'WINDOW', []), # mode change - ('3D View Generic', 'VIEW_3D', 'WINDOW', []) # toolbar and properties + ( N_('3D View Generic'), 'VIEW_3D', 'WINDOW', []) # toolbar and properties ]), - ('Frames', 'EMPTY', 'WINDOW', []), # frame navigation (per region) - ('Markers', 'EMPTY', 'WINDOW', []), # markers (per region) - ('Animation', 'EMPTY', 'WINDOW', []), # frame change on click, preview range (per region) - ('Animation Channels', 'EMPTY', 'WINDOW', []), - ('Graph Editor', 'GRAPH_EDITOR', 'WINDOW', [ - ('Graph Editor Generic', 'GRAPH_EDITOR', 'WINDOW', []) + ( N_('Frames'), 'EMPTY', 'WINDOW', []), # frame navigation (per region) + ( N_('Markers'), 'EMPTY', 'WINDOW', []), # markers (per region) + ( N_('Animation'), 'EMPTY', 'WINDOW', []), # frame change on click, preview range (per region) + ( N_('Animation Channels'), 'EMPTY', 'WINDOW', []), + ( N_('Graph Editor'), 'GRAPH_EDITOR', 'WINDOW', [ + ( N_('Graph Editor Generic'), 'GRAPH_EDITOR', 'WINDOW', []) ]), - ('Dopesheet', 'DOPESHEET_EDITOR', 'WINDOW', []), - ('NLA Editor', 'NLA_EDITOR', 'WINDOW', [ - ('NLA Channels', 'NLA_EDITOR', 'WINDOW', []), - ('NLA Generic', 'NLA_EDITOR', 'WINDOW', []) + ( N_('Dopesheet'), 'DOPESHEET_EDITOR', 'WINDOW', []), + ( N_('NLA Editor'), 'NLA_EDITOR', 'WINDOW', [ + ( N_('NLA Channels'), 'NLA_EDITOR', 'WINDOW', []), + ( N_('NLA Generic'), 'NLA_EDITOR', 'WINDOW', []) ]), - ('Image', 'IMAGE_EDITOR', 'WINDOW', [ - ('UV Editor', 'EMPTY', 'WINDOW', []), # image (reverse order, UVEdit before Image - ('Image Paint', 'EMPTY', 'WINDOW', []), # image and view3d - ('Image Generic', 'IMAGE_EDITOR', 'WINDOW', []) + ( N_('Image'), 'IMAGE_EDITOR', 'WINDOW', [ + ( N_('UV Editor'), 'EMPTY', 'WINDOW', []), # image (reverse order, UVEdit before Image + ( N_('Image Paint'), 'EMPTY', 'WINDOW', []), # image and view3d + ( N_('Image Generic'), 'IMAGE_EDITOR', 'WINDOW', []) ]), - ('Timeline', 'TIMELINE', 'WINDOW', []), - ('Outliner', 'OUTLINER', 'WINDOW', []), + ( N_('Timeline'), 'TIMELINE', 'WINDOW', []), + ( N_('Outliner'), 'OUTLINER', 'WINDOW', []), - ('Node Editor', 'NODE_EDITOR', 'WINDOW', [ - ('Node Generic', 'NODE_EDITOR', 'WINDOW', []) + ( N_('Node Editor'), 'NODE_EDITOR', 'WINDOW', [ + ( N_('Node Generic'), 'NODE_EDITOR', 'WINDOW', []) ]), - ('Sequencer', 'SEQUENCE_EDITOR', 'WINDOW', []), - ('Logic Editor', 'LOGIC_EDITOR', 'WINDOW', []), + ( N_('Sequencer'), 'SEQUENCE_EDITOR', 'WINDOW', []), + ( N_('Logic Editor'), 'LOGIC_EDITOR', 'WINDOW', []), - ('File Browser', 'FILE_BROWSER', 'WINDOW', [ - ('File Browser Main', 'FILE_BROWSER', 'WINDOW', []), - ('File Browser Buttons', 'FILE_BROWSER', 'WINDOW', []) + ( N_('File Browser'), 'FILE_BROWSER', 'WINDOW', [ + ( N_('File Browser Main'), 'FILE_BROWSER', 'WINDOW', []), + ( N_('File Browser Buttons'), 'FILE_BROWSER', 'WINDOW', []) ]), - ('Property Editor', 'PROPERTIES', 'WINDOW', []), # align context menu + ( N_('Property Editor'), 'PROPERTIES', 'WINDOW', []), # align context menu - ('Script', 'SCRIPTS_WINDOW', 'WINDOW', []), - ('Text', 'TEXT_EDITOR', 'WINDOW', []), - ('Console', 'CONSOLE', 'WINDOW', []), + ( N_('Script'), 'SCRIPTS_WINDOW', 'WINDOW', []), + ( N_('Text'), 'TEXT_EDITOR', 'WINDOW', []), + ( N_('Console'), 'CONSOLE', 'WINDOW', []), - ('View3D Gesture Circle', 'EMPTY', 'WINDOW', []), - ('Gesture Border', 'EMPTY', 'WINDOW', []), - ('Standard Modal Map', 'EMPTY', 'WINDOW', []), - ('Transform Modal Map', 'EMPTY', 'WINDOW', []), - ('View3D Fly Modal', 'EMPTY', 'WINDOW', []), - ('View3D Rotate Modal', 'EMPTY', 'WINDOW', []), - ('View3D Move Modal', 'EMPTY', 'WINDOW', []), - ('View3D Zoom Modal', 'EMPTY', 'WINDOW', []), + ( N_('View3D Gesture Circle'), 'EMPTY', 'WINDOW', []), + ( N_('Gesture Border'), 'EMPTY', 'WINDOW', []), + ( N_('Standard Modal Map'), 'EMPTY', 'WINDOW', []), + ( N_('Transform Modal Map'), 'EMPTY', 'WINDOW', []), + ( N_('View3D Fly Modal'), 'EMPTY', 'WINDOW', []), + ( N_('View3D Rotate Modal'), 'EMPTY', 'WINDOW', []), + ( N_('View3D Move Modal'), 'EMPTY', 'WINDOW', []), + ( N_('View3D Zoom Modal'), 'EMPTY', 'WINDOW', []), ] @@ -126,12 +128,12 @@ def _merge_keymaps(kc1, kc2): class USERPREF_MT_keyconfigs(Menu): - bl_label = "KeyPresets" + bl_label = _("KeyPresets") preset_subdir = "keyconfig" 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" @@ -141,7 +143,7 @@ class USERPREF_MT_keyconfigs(Menu): class InputKeyMapPanel: bl_space_type = 'USER_PREFERENCES' - bl_label = "Input" + bl_label = _("Input") bl_region_type = 'WINDOW' bl_options = {'HIDE_HEADER'} @@ -182,7 +184,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 +192,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 +203,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 +215,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() @@ -350,7 +352,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 +362,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 +383,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 +425,8 @@ 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") + __doc__ = _("Test keyconfig for conflicts") def testEntry(self, kc, entry, src=None, parent=None): result = False @@ -531,31 +534,32 @@ def _string_value(value): class WM_OT_keyconfig_import(Operator): "Import key configuration from a python script" bl_idname = "wm.keyconfig_import" - bl_label = "Import Key Configuration..." + bl_label = _("Import Key Configuration...") + __doc__ = _("Import key configuration from a python script") filepath = StringProperty( - name="File Path", - description="Filepath to write file to", + name=_("File Path"), + description=_("Filepath to write file to"), default="keymap.py", ) filter_folder = BoolProperty( - name="Filter folders", + name=_("Filter folders"), default=True, options={'HIDDEN'}, ) filter_text = BoolProperty( - name="Filter text", + name=_("Filter text"), default=True, options={'HIDDEN'}, ) filter_python = BoolProperty( - name="Filter python", + name=_("Filter python"), default=True, options={'HIDDEN'}, ) keep_original = BoolProperty( - name="Keep original", - description="Keep original file after copying to configuration folder", + name=_("Keep original"), + description=_("Keep original file after copying to configuration folder"), default=True, ) @@ -597,25 +601,26 @@ 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...") + __doc__ = _("Export key configuration to a python script") filepath = StringProperty( - name="File Path", - description="Filepath to write file to", + name=_("File Path"), + description=_("Filepath to write file to"), default="keymap.py", ) filter_folder = BoolProperty( - name="Filter folders", + name=_("Filter folders"), default=True, options={'HIDDEN'}, ) filter_text = BoolProperty( - name="Filter text", + name=_("Filter text"), default=True, options={'HIDDEN'}, ) filter_python = BoolProperty( - name="Filter python", + name=_("Filter python"), default=True, options={'HIDDEN'}, ) @@ -706,11 +711,12 @@ class WM_OT_keyconfig_export(Operator): class WM_OT_keymap_restore(Operator): "Restore key map(s)" bl_idname = "wm.keymap_restore" - bl_label = "Restore Key Map(s)" + bl_label = _("Restore Key Map(s)") + __doc__ = _("Restore key map(s)") all = BoolProperty( - name="All Keymaps", - description="Restore all keymaps to default", + name=_("All Keymaps"), + description=_("Restore all keymaps to default"), ) def execute(self, context): @@ -729,11 +735,12 @@ class WM_OT_keymap_restore(Operator): class WM_OT_keyitem_restore(Operator): "Restore key map item" bl_idname = "wm.keyitem_restore" - bl_label = "Restore Key Map Item" + bl_label = _("Restore Key Map Item") + __doc__ = _("Restore key map item") item_id = IntProperty( - name="Item Identifier", - description="Identifier of the item to remove", + name=_("Item Identifier"), + description=_("Identifier of the item to remove"), ) @classmethod @@ -754,7 +761,8 @@ class WM_OT_keyitem_restore(Operator): class WM_OT_keyitem_add(Operator): "Add key map item" bl_idname = "wm.keyitem_add" - bl_label = "Add Key Map Item" + bl_label = _("Add Key Map Item") + __doc__ = _("Add key map item") def execute(self, context): km = context.keymap @@ -776,11 +784,12 @@ class WM_OT_keyitem_add(Operator): class WM_OT_keyitem_remove(Operator): "Remove key map item" bl_idname = "wm.keyitem_remove" - bl_label = "Remove Key Map Item" + bl_label = _("Remove Key Map Item") + __doc__ = _("Remove key map item") item_id = IntProperty( - name="Item Identifier", - description="Identifier of the item to remove", + name=_("Item Identifier"), + description=_("Identifier of the item to remove"), ) @classmethod @@ -797,7 +806,8 @@ class WM_OT_keyitem_remove(Operator): class WM_OT_keyconfig_remove(Operator): "Remove key config" bl_idname = "wm.keyconfig_remove" - bl_label = "Remove Key Config" + bl_label = _("Remove Key Config") + __doc__ = _("Remove key config") @classmethod def poll(cls, context): diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 9f96df1eb66..c78ad774165 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): @@ -118,62 +119,62 @@ class VIEW3D_HT_header(Header): class ShowHideMenu(): - bl_label = "Show/Hide" + bl_label = _("Show/Hide") _operator_name = "" 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): - bl_label = "Transform" + bl_label = _("Transform") # TODO: get rid of the custom text strings? def draw(self, context): layout = self.layout - layout.operator("transform.translate", text="Grab/Move") + layout.operator("transform.translate", text=_("Grab/Move")) # TODO: sub-menu for grab per axis - layout.operator("transform.rotate", text="Rotate") + layout.operator("transform.rotate", text=_("Rotate")) # TODO: sub-menu for rot per axis - layout.operator("transform.resize", text="Scale") + layout.operator("transform.resize", text=_("Scale")) # TODO: sub-menu for scale per axis 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() @@ -186,37 +187,37 @@ class VIEW3D_MT_transform(Menu): class VIEW3D_MT_mirror(Menu): - bl_label = "Mirror" + bl_label = _("Mirror") 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' @@ -224,24 +225,24 @@ class VIEW3D_MT_mirror(Menu): class VIEW3D_MT_snap(Menu): - bl_label = "Snap" + bl_label = _("Snap") 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): - bl_label = "UV Mapping" + bl_label = _("UV Mapping") def draw(self, context): layout = self.layout @@ -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() @@ -274,7 +275,7 @@ class VIEW3D_MT_uv_map(Menu): class VIEW3D_MT_view(Menu): - bl_label = "View" + bl_label = _("View") def draw(self, context): layout = self.layout @@ -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() @@ -332,7 +333,7 @@ class VIEW3D_MT_view(Menu): class VIEW3D_MT_view_navigation(Menu): - bl_label = "Navigation" + bl_label = _("Navigation") def draw(self, context): layout = self.layout @@ -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() @@ -355,7 +356,7 @@ class VIEW3D_MT_view_navigation(Menu): class VIEW3D_MT_view_align(Menu): - bl_label = "Align View" + bl_label = _("Align View") def draw(self, context): layout = self.layout @@ -364,52 +365,52 @@ 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") class VIEW3D_MT_view_align_selected(Menu): - bl_label = "Align View to Selected" + bl_label = _("Align View to Selected") 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' class VIEW3D_MT_view_cameras(Menu): - bl_label = "Cameras" + bl_label = _("Cameras") def draw(self, context): 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 ********** class VIEW3D_MT_select_object(Menu): - bl_label = "Select" + bl_label = _("Select") def draw(self, context): layout = self.layout @@ -419,23 +420,23 @@ 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): - bl_label = "Select" + bl_label = _("Select") def draw(self, context): layout = self.layout @@ -444,35 +445,35 @@ 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): - bl_label = "Select" + bl_label = _("Select") def draw(self, context): layout = self.layout @@ -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,12 +493,12 @@ 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): - bl_label = "Select" + bl_label = _("Select") def draw(self, context): layout = self.layout @@ -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() @@ -549,7 +550,7 @@ class VIEW3D_MT_select_edit_mesh(Menu): class VIEW3D_MT_select_edit_curve(Menu): - bl_label = "Select" + bl_label = _("Select") def draw(self, context): layout = self.layout @@ -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() @@ -578,7 +579,7 @@ class VIEW3D_MT_select_edit_curve(Menu): class VIEW3D_MT_select_edit_surface(Menu): - bl_label = "Select" + bl_label = _("Select") def draw(self, context): layout = self.layout @@ -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() @@ -604,7 +605,7 @@ class VIEW3D_MT_select_edit_surface(Menu): class VIEW3D_MT_select_edit_metaball(Menu): - bl_label = "Select" + bl_label = _("Select") def draw(self, context): layout = self.layout @@ -622,7 +623,7 @@ class VIEW3D_MT_select_edit_metaball(Menu): class VIEW3D_MT_select_edit_lattice(Menu): - bl_label = "Select" + bl_label = _("Select") def draw(self, context): layout = self.layout @@ -631,11 +632,11 @@ 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): - bl_label = "Select" + bl_label = _("Select") def draw(self, context): layout = self.layout @@ -644,29 +645,29 @@ 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 - bl_label = "Select" + bl_label = _("Select") def draw(self, context): # layout = self.layout @@ -680,7 +681,7 @@ class VIEW3D_MT_select_face(Menu): # XXX no matching enum class VIEW3D_MT_object(Menu): bl_context = "objectmode" - bl_label = "Object" + bl_label = _("Object") def draw(self, context): layout = self.layout @@ -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,37 +731,37 @@ 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") class VIEW3D_MT_object_animation(Menu): - bl_label = "Animation" + bl_label = _("Animation") 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): - bl_label = "Clear" + bl_label = _("Clear") 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): - bl_label = "Specials" + bl_label = _("Specials") @classmethod def poll(cls, context): @@ -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 @@ -855,46 +856,46 @@ class VIEW3D_MT_object_specials(Menu): class VIEW3D_MT_object_apply(Menu): - bl_label = "Apply" + bl_label = _("Apply") 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") class VIEW3D_MT_object_parent(Menu): - bl_label = "Parent" + bl_label = _("Parent") 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): - bl_label = "Track" + bl_label = _("Track") 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): - bl_label = "Group" + bl_label = _("Group") def draw(self, context): layout = self.layout @@ -909,7 +910,7 @@ class VIEW3D_MT_object_group(Menu): class VIEW3D_MT_object_constraints(Menu): - bl_label = "Constraints" + bl_label = _("Constraints") def draw(self, context): layout = self.layout @@ -920,68 +921,68 @@ class VIEW3D_MT_object_constraints(Menu): class VIEW3D_MT_object_showhide(Menu): - bl_label = "Show/Hide" + bl_label = _("Show/Hide") 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): - bl_label = "Make Single User" + bl_label = _("Make Single User") 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 class VIEW3D_MT_make_links(Menu): - bl_label = "Make Links" + bl_label = _("Make Links") def draw(self, context): layout = self.layout 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 class VIEW3D_MT_object_game(Menu): - bl_label = "Game" + bl_label = _("Game") 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() @@ -992,7 +993,7 @@ class VIEW3D_MT_object_game(Menu): class VIEW3D_MT_paint_vertex(Menu): - bl_label = "Paint" + bl_label = _("Paint") def draw(self, context): layout = self.layout @@ -1007,7 +1008,7 @@ class VIEW3D_MT_paint_vertex(Menu): class VIEW3D_MT_hook(Menu): - bl_label = "Hooks" + bl_label = _("Hooks") def draw(self, context): layout = self.layout @@ -1026,32 +1027,32 @@ class VIEW3D_MT_hook(Menu): class VIEW3D_MT_vertex_group(Menu): - bl_label = "Vertex Groups" + bl_label = _("Vertex Groups") 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 ********** class VIEW3D_MT_paint_weight(Menu): - bl_label = "Weights" + bl_label = _("Weights") def draw(self, context): layout = self.layout @@ -1062,16 +1063,16 @@ 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.separator() @@ -1081,7 +1082,7 @@ class VIEW3D_MT_paint_weight(Menu): class VIEW3D_MT_sculpt(Menu): - bl_label = "Sculpt" + bl_label = _("Sculpt") def draw(self, context): layout = self.layout @@ -1120,18 +1121,18 @@ 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 ********** class VIEW3D_MT_particle(Menu): - bl_label = "Particle" + bl_label = _("Particle") def draw(self, context): layout = self.layout @@ -1163,7 +1164,7 @@ class VIEW3D_MT_particle(Menu): class VIEW3D_MT_particle_specials(Menu): - bl_label = "Specials" + bl_label = _("Specials") def draw(self, context): layout = self.layout @@ -1187,7 +1188,7 @@ class VIEW3D_MT_particle_showhide(ShowHideMenu, Menu): class VIEW3D_MT_pose(Menu): - bl_label = "Pose" + bl_label = _("Pose") def draw(self, context): layout = self.layout @@ -1218,7 +1219,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 +1236,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,36 +1247,36 @@ 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): - bl_label = "Clear Transform" + bl_label = _("Clear Transform") 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): - bl_label = "In-Betweens" + bl_label = _("In-Betweens") def draw(self, context): layout = self.layout @@ -1286,7 +1287,7 @@ class VIEW3D_MT_pose_slide(Menu): class VIEW3D_MT_pose_propagate(Menu): - bl_label = "Propagate" + bl_label = _("Propagate") def draw(self, context): layout = self.layout @@ -1295,41 +1296,41 @@ 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): - bl_label = "Pose Library" + bl_label = _("Pose Library") 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): - bl_label = "Motion Paths" + bl_label = _("Motion Paths") 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): - bl_label = "Bone Groups" + bl_label = _("Bone Groups") def draw(self, context): layout = self.layout @@ -1343,7 +1344,7 @@ class VIEW3D_MT_pose_group(Menu): class VIEW3D_MT_pose_ik(Menu): - bl_label = "Inverse Kinematics" + bl_label = _("Inverse Kinematics") def draw(self, context): layout = self.layout @@ -1353,12 +1354,12 @@ class VIEW3D_MT_pose_ik(Menu): class VIEW3D_MT_pose_constraints(Menu): - bl_label = "Constraints" + bl_label = _("Constraints") 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 +1369,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 @@ -1424,7 +1425,7 @@ class VIEW3D_MT_bone_options_disable(Menu, BoneOptions): class VIEW3D_MT_edit_mesh(Menu): - bl_label = "Mesh" + bl_label = _("Mesh") def draw(self, context): layout = self.layout @@ -1443,14 +1444,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() @@ -1471,22 +1472,22 @@ class VIEW3D_MT_edit_mesh(Menu): class VIEW3D_MT_edit_mesh_specials(Menu): - bl_label = "Specials" + bl_label = _("Specials") def draw(self, context): layout = self.layout 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") @@ -1496,34 +1497,34 @@ class VIEW3D_MT_edit_mesh_specials(Menu): class VIEW3D_MT_edit_mesh_select_mode(Menu): - bl_label = "Mesh Select Mode" + bl_label = _("Mesh Select Mode") def draw(self, context): layout = self.layout 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" class VIEW3D_MT_edit_mesh_extrude(Menu): - bl_label = "Extrude" + 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 @@ -1552,7 +1553,7 @@ class VIEW3D_MT_edit_mesh_extrude(Menu): class VIEW3D_OT_edit_mesh_extrude_individual_move(Operator): "Extrude individual elements and move" - bl_label = "Extrude Individual and Move" + bl_label = _("Extrude Individual and Move") bl_idname = "view3d.edit_mesh_extrude_individual_move" def execute(self, context): @@ -1581,7 +1582,7 @@ class VIEW3D_OT_edit_mesh_extrude_individual_move(Operator): class VIEW3D_OT_edit_mesh_extrude_move(Operator): "Extrude and move along normals" - bl_label = "Extrude and Move on Normals" + bl_label = _("Extrude and Move on Normals") bl_idname = "view3d.edit_mesh_extrude_move_normal" def execute(self, context): @@ -1606,7 +1607,7 @@ class VIEW3D_OT_edit_mesh_extrude_move(Operator): class VIEW3D_MT_edit_mesh_vertices(Menu): - bl_label = "Vertices" + bl_label = _("Vertices") def draw(self, context): layout = self.layout @@ -1638,7 +1639,7 @@ class VIEW3D_MT_edit_mesh_vertices(Menu): class VIEW3D_MT_edit_mesh_edges(Menu): - bl_label = "Edges" + bl_label = _("Edges") def draw(self, context): layout = self.layout @@ -1650,35 +1651,35 @@ 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") class VIEW3D_MT_edit_mesh_faces(Menu): - bl_label = "Faces" + bl_label = _("Faces") bl_idname = "VIEW3D_MT_edit_mesh_faces" def draw(self, context): @@ -1715,7 +1716,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() @@ -1726,13 +1727,13 @@ class VIEW3D_MT_edit_mesh_faces(Menu): class VIEW3D_MT_edit_mesh_normals(Menu): - bl_label = "Normals" + bl_label = _("Normals") 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 +1763,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() @@ -1780,13 +1781,13 @@ def draw_curve(self, context): class VIEW3D_MT_edit_curve(Menu): - bl_label = "Curve" + bl_label = _("Curve") draw = draw_curve class VIEW3D_MT_edit_curve_ctrlpoints(Menu): - bl_label = "Control Points" + bl_label = _("Control Points") def draw(self, context): layout = self.layout @@ -1794,7 +1795,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") @@ -1808,7 +1809,7 @@ class VIEW3D_MT_edit_curve_ctrlpoints(Menu): class VIEW3D_MT_edit_curve_segments(Menu): - bl_label = "Segments" + bl_label = _("Segments") def draw(self, context): layout = self.layout @@ -1818,7 +1819,7 @@ class VIEW3D_MT_edit_curve_segments(Menu): class VIEW3D_MT_edit_curve_specials(Menu): - bl_label = "Specials" + bl_label = _("Specials") def draw(self, context): layout = self.layout @@ -1836,13 +1837,13 @@ class VIEW3D_MT_edit_curve_showhide(ShowHideMenu, Menu): class VIEW3D_MT_edit_surface(Menu): - bl_label = "Surface" + bl_label = _("Surface") draw = draw_curve class VIEW3D_MT_edit_font(Menu): - bl_label = "Text" + bl_label = _("Text") def draw(self, context): layout = self.layout @@ -1855,14 +1856,14 @@ 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): - bl_label = "Special Characters" + bl_label = _("Special Characters") def draw(self, context): layout = self.layout @@ -1896,7 +1897,7 @@ class VIEW3D_MT_edit_text_chars(Menu): class VIEW3D_MT_edit_meta(Menu): - bl_label = "Metaball" + bl_label = _("Metaball") def draw(self, context): layout = self.layout @@ -1915,7 +1916,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() @@ -1929,18 +1930,18 @@ class VIEW3D_MT_edit_meta(Menu): class VIEW3D_MT_edit_meta_showhide(Menu): - bl_label = "Show/Hide" + bl_label = _("Show/Hide") 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): - bl_label = "Lattice" + bl_label = _("Lattice") def draw(self, context): layout = self.layout @@ -1962,7 +1963,7 @@ class VIEW3D_MT_edit_lattice(Menu): class VIEW3D_MT_edit_armature(Menu): - bl_label = "Armature" + bl_label = _("Armature") def draw(self, context): layout = self.layout @@ -1990,15 +1991,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,41 +2014,41 @@ 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): - bl_label = "Specials" + bl_label = _("Specials") def draw(self, context): layout = self.layout 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): - bl_label = "Parent" + bl_label = _("Parent") 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): - bl_label = "Bone Roll" + bl_label = _("Bone Roll") def draw(self, context): layout = self.layout @@ -2056,7 +2057,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 ********** @@ -2064,7 +2065,7 @@ class VIEW3D_MT_edit_armature_roll(Menu): class VIEW3D_PT_view3d_properties(Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' - bl_label = "View" + bl_label = _("View") @classmethod def poll(cls, context): @@ -2079,26 +2080,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") @@ -2107,7 +2108,7 @@ class VIEW3D_PT_view3d_properties(Panel): class VIEW3D_PT_view3d_name(Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' - bl_label = "Item" + bl_label = _("Item") @classmethod def poll(cls, context): @@ -2132,7 +2133,7 @@ class VIEW3D_PT_view3d_name(Panel): class VIEW3D_PT_view3d_display(Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' - bl_label = "Display" + bl_label = _("Display") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -2164,7 +2165,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 +2174,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 +2189,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() @@ -2204,7 +2205,7 @@ class VIEW3D_PT_view3d_display(Panel): class VIEW3D_PT_view3d_meshdisplay(Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' - bl_label = "Mesh Display" + bl_label = _("Mesh Display") @classmethod def poll(cls, context): @@ -2217,22 +2218,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") @@ -2241,7 +2242,7 @@ class VIEW3D_PT_view3d_meshdisplay(Panel): class VIEW3D_PT_view3d_curvedisplay(Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' - bl_label = "Curve Display" + bl_label = _("Curve Display") @classmethod def poll(cls, context): @@ -2254,16 +2255,16 @@ 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): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' - bl_label = "Background Images" + bl_label = _("Background Images") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -2284,7 +2285,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 +2295,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() @@ -2316,7 +2317,7 @@ class VIEW3D_PT_background_image(Panel): class VIEW3D_PT_transform_orientations(Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' - bl_label = "Transform Orientations" + bl_label = _("Transform Orientations") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -2332,19 +2333,19 @@ 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): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' - bl_label = "Skeleton Sketching" + bl_label = _("Skeleton Sketching") bl_options = {'DEFAULT_CLOSED'} @classmethod @@ -2383,13 +2384,13 @@ 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): bl_space_type = 'VIEW_3D' bl_region_type = 'UI' - bl_label = "Properties" + bl_label = _("Properties") bl_options = {'DEFAULT_CLOSED'} def _active_context_member(context): diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py index b71593add96..62836a20381 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,30 @@ 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.operator("gpencil.draw", text=_("Erase")).mode = 'ERASER' row = col.row() row.prop(context.tool_settings, "use_grease_pencil_sessions") @@ -64,22 +65,22 @@ def draw_gpencil_tools(context, layout): class VIEW3D_PT_tools_objectmode(View3DPanel, Panel): bl_context = "objectmode" - bl_label = "Object Tools" + bl_label = _("Object Tools") def draw(self, context): 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 +89,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 +120,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:") @@ -1012,7 +1013,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() diff --git a/release/scripts/templates/ui_menu_simple.py b/release/scripts/templates/ui_menu_simple.py index 2129dfd81a4..2129dfd81a4 100644..100755 --- a/release/scripts/templates/ui_menu_simple.py +++ b/release/scripts/templates/ui_menu_simple.py diff --git a/release/scripts/templates/ui_panel_simple.py b/release/scripts/templates/ui_panel_simple.py index cde6126b626..cde6126b626 100644..100755 --- a/release/scripts/templates/ui_panel_simple.py +++ b/release/scripts/templates/ui_panel_simple.py |