[Bf-committers] i18n maintenance is on hold

Ton Roosendaal ton at blender.org
Sat Mar 30 19:46:41 CET 2013


Hi S.L,

That's a great example, but you can see that all of them nicely root down to the actual context via RNA properties or Operators.

Giving translators that 'root' information (the functional api description, which is static) would provide good quality translations, and allows the english words to change if needed too.

The cases where we've added text in the scripts manually, are special cases which we should solve in general. Not only for translation work, it's a generic flaw in our UI.

Same applies for cases where UIs got optimized like:
Panel title "Render". Operator names "Image", "Animation", "Play" etc.
Or pulldown menus like "Apply" with subitems that strip the name "Apply" from texts.

My concern for this always was that we treat UI design too English-centric here. This might work for other languages, or it might fail. We just don't know, so we should not try to make assumptions here.

More over - it even will give a confusing message. The button called "Image" in Render Panel would be named "Render" if you add it yourself elsewhere (like if we code d&d custom toolbars).

That kind of issues is just a problem of our Operator design - tools do different stuff when different properties are set. That's just a design flaw, and it should be treated as such; fix the design itself, and not allow more patching on top of it.

When trying to explain my issues with the current string-based translation, I found this great write-up about i8n:

http://www.mobiata.com/blog/2012/02/08/twine-string-management-ios-mac-os-x

I don't say it's something to copy, but at least the topic is well explained and solved.

-Ton-

------------------------------------------------------------------------
Ton Roosendaal  Blender Foundation   ton at blender.org    www.blender.org
Blender Institute   Entrepotdok 57A  1018AD Amsterdam   The Netherlands

On 29 Mar, 2013, at 18:08, Lockal S wrote:

> From my translator point of view, explosion of number of strings in POT
> files is inevitable. Right now different strings use the same translation
> just because we don't want to make code less readable, but make translation
> more precise (especially for russian&cjk translations). For example here
> are RNA ids of word "Smooth" with empty
> context:<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.types.DynamicPaintBrushSettings.html#bpy.types.DynamicPaintBrushSettings.proximity_falloff>
> 
>   1. bpy.types.DynamicPaintBrushSettings.proximity_falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.types.DynamicPaintBrushSettings.html#bpy.types.DynamicPaintBrushSettings.proximity_falloff>
>   :'SMOOTH'
>   2. bpy.types.Brush.sculpt_tool<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.types.Brush.html#bpy.types.Brush.sculpt_tool>
>   :'SMOOTH'
>   3. bpy.types.Brush.mask_tool<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.types.Brush.html#bpy.types.Brush.mask_tool>
>   :'SMOOTH'
>   4. bpy.types.MaskLayer.falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.types.MaskLayer.html#bpy.types.MaskLayer.falloff>
>   :'SMOOTH'
>   5. bpy.types.MaskSpline.offset_mode<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.types.MaskSpline.html#bpy.types.MaskSpline.offset_mode>
>   :'SMOOTH'
>   6. bpy.types.MeshPolygon.use_smooth<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.types.MeshPolygon.html#bpy.types.MeshPolygon.use_smooth>
>   7. bpy.types.MeshTessFace.use_smooth<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.types.MeshTessFace.html#bpy.types.MeshTessFace.use_smooth>
>   8. bpy.types.Modifier.type<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.types.Modifier.html#bpy.types.Modifier.type>
>   :'SMOOTH'
>   9. bpy.types.RemeshModifier.mode<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.types.RemeshModifier.html#bpy.types.RemeshModifier.mode>
>   :'SMOOTH'
>   10. bpy.types.VertexWeightEditModifier.falloff_type<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.types.VertexWeightEditModifier.html#bpy.types.VertexWeightEditModifier.falloff_type>
>   :'SMOOTH'
>   11. bpy.types.VertexWeightProximityModifier.falloff_type<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.types.VertexWeightProximityModifier.html#bpy.types.VertexWeightProximityModifier.falloff_type>
>   :'SMOOTH'
>   12. bpy.types.WarpModifier.falloff_type<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.types.WarpModifier.html#bpy.types.WarpModifier.falloff_type>
>   :'SMOOTH'
>   13. bpy.types.CompositorNodeDilateErode.falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.types.CompositorNodeDilateErode.html#bpy.types.CompositorNodeDilateErode.falloff>
>   :'SMOOTH'
>   14. bpy.types.CompositorNodeKeying.feather_falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.types.CompositorNodeKeying.html#bpy.types.CompositorNodeKeying.feather_falloff>
>   :'SMOOTH'
>   15. bpy.types.BRUSH_OT_curve_preset.shape<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.ops.brush.html#bpy.ops.brush.curve_preset>
>   :'SMOOTH'
>   16. bpy.types.MESH_OT_rip.proportional_edit_falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.ops.mesh.html#bpy.ops.mesh.rip>
>   :'SMOOTH'
>   17. bpy.types.OBJECT_OT_modifier_add.type<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.ops.object.html#bpy.ops.object.modifier_add>
>   :'SMOOTH'
>   18. bpy.types.PAINT_OT_brush_select.sculpt_tool<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.ops.paint.html#bpy.ops.paint.brush_select>
>   :'SMOOTH'
>   19. bpy.types.SCULPT_OT_brush_stroke.mode<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.ops.sculpt.html#bpy.ops.sculpt.brush_stroke>
>   :'SMOOTH'
>   20. bpy.types.TRANSFORM_OT_mirror.proportional_edit_falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.ops.transform.html#bpy.ops.transform.mirror>
>   :'SMOOTH'
>   21. bpy.types.TRANSFORM_OT_push_pull.proportional_edit_falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.ops.transform.html#bpy.ops.transform.push_pull>
>   :'SMOOTH'
>   22. bpy.types.TRANSFORM_OT_resize.proportional_edit_falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.ops.transform.html#bpy.ops.transform.resize>
>   :'SMOOTH'
>   23. bpy.types.TRANSFORM_OT_rotate.proportional_edit_falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.ops.transform.html#bpy.ops.transform.rotate>
>   :'SMOOTH'
>   24. bpy.types.TRANSFORM_OT_shear.proportional_edit_falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.ops.transform.html#bpy.ops.transform.shear>
>   :'SMOOTH'
>   25. bpy.types.TRANSFORM_OT_shrink_fatten.proportional_edit_falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.ops.transform.html#bpy.ops.transform.shrink_fatten>
>   :'SMOOTH'
>   26. bpy.types.TRANSFORM_OT_skin_resize.proportional_edit_falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.ops.transform.html#bpy.ops.transform.skin_resize>
>   :'SMOOTH'
>   27. bpy.types.TRANSFORM_OT_tilt.proportional_edit_falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.ops.transform.html#bpy.ops.transform.tilt>
>   :'SMOOTH'
>   28. bpy.types.TRANSFORM_OT_tosphere.proportional_edit_falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.ops.transform.html#bpy.ops.transform.tosphere>
>   :'SMOOTH'
>   29. bpy.types.TRANSFORM_OT_trackball.proportional_edit_falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.ops.transform.html#bpy.ops.transform.trackball>
>   :'SMOOTH'
>   30. bpy.types.TRANSFORM_OT_transform.proportional_edit_falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.ops.transform.html#bpy.ops.transform.transform>
>   :'SMOOTH'
>   31. bpy.types.TRANSFORM_OT_translate.proportional_edit_falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.ops.transform.html#bpy.ops.transform.translate>
>   :'SMOOTH'
>   32. bpy.types.TRANSFORM_OT_warp.proportional_edit_falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.ops.transform.html#bpy.ops.transform.warp>
>   :'SMOOTH'
>   33. bpy.types.ParticleEdit.tool<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.types.ParticleEdit.html#bpy.types.ParticleEdit.tool>
>   :'SMOOTH'
>   34. bpy.types.PointDensity.falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.types.PointDensity.html#bpy.types.PointDensity.falloff>
>   :'SMOOTH'
>   35. bpy.types.Spline.use_smooth<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.types.Spline.html#bpy.types.Spline.use_smooth>
>   36. bpy.types.ToolSettings.proportional_edit_falloff<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.types.ToolSettings.html#bpy.types.ToolSettings.proportional_edit_falloff>
>   :'SMOOTH'
>   37. scripts/addons/cycles/ui.py:1028
>   38. scripts/startup/bl_ui/properties_data_curve.py:95
>   39. scripts/startup/bl_ui/properties_material.py:264
>   40. scripts/startup/bl_ui/properties_material.py:323
>   41. scripts/startup/bl_ui/space_image.py:657
>   42. source/blender/nodes/shader/nodes/node_shader_light_falloff.c:33
> 
> And with "Operator" context:
> 
>   1. bpy.types.CURVE_OT_smooth<http://www.blender.org/documentation/blender_python_api_2_66_release/bpy.ops.curve.html#bpy.ops.curve.smooth>
>   2. scripts/startup/bl_ui/space_view3d.py:1777
>   3. scripts/startup/bl_ui/space_view3d_toolbar.py:206
>   4. scripts/startup/bl_ui/space_view3d_toolbar.py:101
> 
> 
> Let's look at this. The biggest group here is proportional edit falloff,
> which is an adjective, but using bare adjectives without any noun is
> discouraged in Russian, so we use an adverb.
> 
> There are also different proximity falloff and mask falloff. For those who
> want to use a gender-sensitive adjective here, another context is needed.
> 
> The next big group is tools. Tool definitely can not be an adjective or an
> adverb in Russian. It is either a noun or a verb. And again, different
> translation could be used for smoothing an image, a sculpted surface or
> particle hair.
> 
> Next comes Smooth modifier. It is also neither an adjective nor a verb in
> Russian.
> 
> Then we have 3 use_smooth, which can be translated into Russian either as
> Use+Noun (использовать сглаживание, со сглаживанием) or as a verb
> (сглаживать). But cjk-languages most likely use different form for this.
> 
> Then we have 9 "Smooth" outside of RNA system. The most problematic item
> here is view3d Smooth shading button ([Smooth | Flat] button group) which
> is marked with "Operator" context, but is an adjective/adverb. But Smooth
> in W-menu is actually a verb and also marked as Operator.
> 
> Different languages use different grammatical rules, and it would be hell
> difficult to add contexts for every string in every language. It is much
> easier to translate the word Smooth 46 times, because every modern
> translation system includes translation memory and suggestion list. The
> only question is what blender can do with non-RNA strings. Is it possible
> to generate a unique context for each of them?
> 
> S. L.
> 
> 
> 
> On Fri, Mar 29, 2013 at 7:03 PM, Sergey Sharybin <sergey.vfx at gmail.com>wrote:
> 
>> Then i'd say it's high time to solve this loose strings.
>> 
>> This issue is discussing like at least year or two, and nothing changed in
>> this front meanwhile.
>> 
>> Let's just switch from blaming on things which are here only because old
>> crap is not fixed to fixing this old crap. That'd be much more constructive
>> discussion.
>> 
>> 
>> On Fri, Mar 29, 2013 at 4:08 PM, Ton Roosendaal <ton at blender.org> wrote:
>> 
>>> Hi Daniel,
>>> 
>>> It is not about fixing things that's inside your domain, it was about
>>> adding new concepts for handling translations, which changes how UI
>> scripts
>>> have to maintained.
>>> 
>>> That topic had two aspects:
>>> 
>>> - The loose custom strings in UI scripts were there temporary, and meant
>>> to disappear in due time.
>>> 
>>> - The syntax for how users and developers handle UI scripts is something
>>> we should together agree on.
>>> 
>>> Combined it makes this something we should communicate on together to get
>>> an agreement on. So Thomas' (or my) issue was not about indivdual commits
>>> or fixes, it's about a change in spec and how we want to handle things.
>>> 
>>> -Ton-
>>> 
>>> ------------------------------------------------------------------------
>>> Ton Roosendaal  Blender Foundation   ton at blender.org    www.blender.org
>>> Blender Institute   Entrepotdok 57A  1018AD Amsterdam   The Netherlands
>>> 
>>> On 28 Mar, 2013, at 22:37, Daniel Genrich wrote:
>>> 
>>>> As far as I know, the devs don't need the "green light" from the module
>>>> owner for every commit they do.
>>>> 
>>>> mont29 also did several commits to fluids and cloth, too without
>> running
>>>> by me first. That was fine, no big changes.
>>>> I don't think we should encourage "blocking type" commits (everything
>>>> needs to get "green light" first). We're not Sun with Open Office who
>>>> scares devs away, right? :-)
>>>> 
>>>> I was under the impression, that the "module owner" is about bigger
>>>> things. No idea, I am wrong? ^^
>>>> Just my 2 cents.
>>>> 
>>>> Daniel / Genscher
>>>> 
>>>> 
>>>> Am 28.03.2013 22:13, schrieb Thomas Dinges:
>>>>> So all in all, it's all about communication. We have the module owner
>>>>> list for a reason. Please respect that.
>>>>> 
>>>>> Best regards,
>>>>> Thomas
>>>>> 
>>>>> 
>>>>> 
>>>> 
>>>> _______________________________________________
>>>> Bf-committers mailing list
>>>> Bf-committers at blender.org
>>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>> 
>>> _______________________________________________
>>> Bf-committers mailing list
>>> Bf-committers at blender.org
>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>> 
>> 
>> 
>> 
>> --
>> With best regards, Sergey Sharybin
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-committers
>> 
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers



More information about the Bf-committers mailing list