[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55452] trunk/blender: I18n users request: add the ability to use a translated name for newly added/ created objects or other datablocks.

Bastien Montagne montagne29 at wanadoo.fr
Wed Mar 20 19:42:10 CET 2013


Revision: 55452
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55452
Author:   mont29
Date:     2013-03-20 18:42:09 +0000 (Wed, 20 Mar 2013)
Log Message:
-----------
I18n users request: add the ability to use a translated name for newly added/created objects or other datablocks.

This simply adds a third "translation type" (in addition to iface and tip), "new data", with relevant user settings flag and helper funcs/macros (and py api).

Currently implemented name translation when adding new objects, as well as modifiers and constraints, will add the others (cd layers, scenes, perhaps nodes [though I think they do not need this], etc.) later.

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_ui/space_userpref.py
    trunk/blender/source/blender/blenfont/BLF_translation.h
    trunk/blender/source/blender/blenfont/intern/blf_translation.c
    trunk/blender/source/blender/blenkernel/intern/constraint.c
    trunk/blender/source/blender/blenkernel/intern/modifier.c
    trunk/blender/source/blender/blenkernel/intern/object.c
    trunk/blender/source/blender/blenkernel/intern/particle.c
    trunk/blender/source/blender/editors/curve/editcurve.c
    trunk/blender/source/blender/editors/mesh/editmesh_add.c
    trunk/blender/source/blender/editors/object/object_add.c
    trunk/blender/source/blender/makesdna/DNA_userdef_types.h
    trunk/blender/source/blender/makesrna/intern/rna_userdef.c
    trunk/blender/source/blender/python/intern/bpy_app_translations.c

Modified: trunk/blender/release/scripts/startup/bl_ui/space_userpref.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_userpref.py	2013-03-20 18:01:47 UTC (rev 55451)
+++ trunk/blender/release/scripts/startup/bl_ui/space_userpref.py	2013-03-20 18:42:09 UTC (rev 55452)
@@ -528,9 +528,11 @@
             if system.use_international_fonts:
                 column.prop(system, "language")
                 row = column.row()
-                row.label(text="Translate:")
-                row.prop(system, "use_translate_interface", text="Interface")
-                row.prop(system, "use_translate_tooltips", text="Tooltips")
+                row.label(text="Translate:", text_ctxt=bpy.app.translations.contexts.id_windowmanager)
+                row = column.row(True)
+                row.prop(system, "use_translate_interface", text="Interface", toggle=True)
+                row.prop(system, "use_translate_tooltips", text="Tooltips", toggle=True)
+                row.prop(system, "use_translate_new_dataname", text="New Data", toggle=True)
 
 
 class USERPREF_MT_interface_theme_presets(Menu):

Modified: trunk/blender/source/blender/blenfont/BLF_translation.h
===================================================================
--- trunk/blender/source/blender/blenfont/BLF_translation.h	2013-03-20 18:01:47 UTC (rev 55451)
+++ trunk/blender/source/blender/blenfont/BLF_translation.h	2013-03-20 18:42:09 UTC (rev 55452)
@@ -77,8 +77,10 @@
 /* translation */
 bool BLF_translate_iface(void);
 bool BLF_translate_tooltips(void);
+bool BLF_translate_new_dataname(void);
 const char *BLF_translate_do_iface(const char *msgctxt, const char *msgid);
 const char *BLF_translate_do_tooltip(const char *msgctxt, const char *msgid);
+const char *BLF_translate_do_new_dataname(const char *msgctxt, const char *msgid);
 
 
 /* The "translation-marker" macro. */
@@ -90,14 +92,18 @@
 /*#  define _(msgid) BLF_gettext(msgid) */
 #  define IFACE_(msgid) BLF_translate_do_iface(NULL, msgid)
 #  define TIP_(msgid) BLF_translate_do_tooltip(NULL, msgid)
+#  define DATA_(msgid) BLF_translate_do_new_dataname(NULL, msgid)
 #  define CTX_IFACE_(context, msgid) BLF_translate_do_iface(context, msgid)
 #  define CTX_TIP_(context, msgid) BLF_translate_do_tooltip(context, msgid)
+#  define CTX_DATA_(context, msgid) BLF_translate_do_new_dataname(context, msgid)
 #else
 /*#  define _(msgid) msgid */
 #  define IFACE_(msgid) msgid
 #  define TIP_(msgid)   msgid
+#  define DATA_(msgid)  msgid
 #  define CTX_IFACE_(context, msgid) msgid
 #  define CTX_TIP_(context, msgid)   msgid
+#  define CTX_DATA_(context, msgid)  msgid
 #endif
 
 /* Helper macro, when we want to define a same msgid for multiple msgctxt...

Modified: trunk/blender/source/blender/blenfont/intern/blf_translation.c
===================================================================
--- trunk/blender/source/blender/blenfont/intern/blf_translation.c	2013-03-20 18:01:47 UTC (rev 55451)
+++ trunk/blender/source/blender/blenfont/intern/blf_translation.c	2013-03-20 18:42:09 UTC (rev 55452)
@@ -177,6 +177,15 @@
 #endif
 }
 
+bool BLF_translate_new_dataname(void)
+{
+#ifdef WITH_INTERNATIONAL
+	return (U.transopts & USER_DOTRANSLATE) && (U.transopts & USER_TR_NEWDATANAME);
+#else
+	return false;
+#endif
+}
+
 const char *BLF_translate_do_iface(const char *msgctxt, const char *msgid)
 {
 #ifdef WITH_INTERNATIONAL
@@ -206,3 +215,18 @@
 	return msgid;
 #endif
 }
+
+const char *BLF_translate_do_new_dataname(const char *msgctxt, const char *msgid)
+{
+#ifdef WITH_INTERNATIONAL
+	if (BLF_translate_new_dataname()) {
+		return BLF_pgettext(msgctxt, msgid);
+	}
+	else {
+		return msgid;
+	}
+#else
+	(void)msgctxt;
+	return msgid;
+#endif
+}

Modified: trunk/blender/source/blender/blenkernel/intern/constraint.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/constraint.c	2013-03-20 18:01:47 UTC (rev 55451)
+++ trunk/blender/source/blender/blenkernel/intern/constraint.c	2013-03-20 18:42:09 UTC (rev 55452)
@@ -43,6 +43,8 @@
 #include "BLI_kdopbvh.h"
 #include "BLI_utildefines.h"
 
+#include "BLF_translation.h"
+
 #include "DNA_armature_types.h"
 #include "DNA_camera_types.h"
 #include "DNA_constraint_types.h"
@@ -4353,12 +4355,12 @@
 			cti->new_data(con->data);
 		
 		/* if no name is provided, use the type of the constraint as the name */
-		newName = (name && name[0]) ? name : cti->name;
+		newName = (name && name[0]) ? name : DATA_(cti->name);
 	}
 	else {
 		/* if no name is provided, use the generic "Const" name */
 		/* NOTE: any constraint type that gets here really shouldn't get added... */
-		newName = (name && name[0]) ? name : "Const";
+		newName = (name && name[0]) ? name : DATA_("Const");
 	}
 	
 	/* copy the name */

Modified: trunk/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifier.c	2013-03-20 18:01:47 UTC (rev 55451)
+++ trunk/blender/source/blender/blenkernel/intern/modifier.c	2013-03-20 18:42:09 UTC (rev 55452)
@@ -95,7 +95,7 @@
 	ModifierData *md = MEM_callocN(mti->structSize, mti->structName);
 	
 	/* note, this name must be made unique later */
-	BLI_strncpy(md->name, mti->name, sizeof(md->name));
+	BLI_strncpy(md->name, DATA_(mti->name), sizeof(md->name));
 
 	md->type = type;
 	md->mode = eModifierMode_Realtime | eModifierMode_Render | eModifierMode_Expanded;

Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c	2013-03-20 18:01:47 UTC (rev 55451)
+++ trunk/blender/source/blender/blenkernel/intern/object.c	2013-03-20 18:42:09 UTC (rev 55452)
@@ -65,6 +65,8 @@
 #include "BLI_utildefines.h"
 #include "BLI_linklist.h"
 
+#include "BLF_translation.h"
+
 #include "BKE_pbvh.h"
 #include "BKE_main.h"
 #include "BKE_global.h"
@@ -855,20 +857,20 @@
 static const char *get_obdata_defname(int type)
 {
 	switch (type) {
-		case OB_MESH: return "Mesh";
-		case OB_CURVE: return "Curve";
-		case OB_SURF: return "Surf";
-		case OB_FONT: return "Text";
-		case OB_MBALL: return "Mball";
-		case OB_CAMERA: return "Camera";
-		case OB_LAMP: return "Lamp";
-		case OB_LATTICE: return "Lattice";
-		case OB_ARMATURE: return "Armature";
-		case OB_SPEAKER: return "Speaker";
-		case OB_EMPTY: return "Empty";
+		case OB_MESH: return DATA_("Mesh");
+		case OB_CURVE: return DATA_("Curve");
+		case OB_SURF: return DATA_("Surf");
+		case OB_FONT: return DATA_("Text");
+		case OB_MBALL: return DATA_("Mball");
+		case OB_CAMERA: return DATA_("Camera");
+		case OB_LAMP: return DATA_("Lamp");
+		case OB_LATTICE: return DATA_("Lattice");
+		case OB_ARMATURE: return DATA_("Armature");
+		case OB_SPEAKER: return DATA_("Speaker");
+		case OB_EMPTY: return DATA_("Empty");
 		default:
 			printf("get_obdata_defname: Internal error, bad type: %d\n", type);
-			return "Empty";
+			return DATA_("Empty");
 	}
 }
 

Modified: trunk/blender/source/blender/blenkernel/intern/particle.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle.c	2013-03-20 18:01:47 UTC (rev 55451)
+++ trunk/blender/source/blender/blenkernel/intern/particle.c	2013-03-20 18:42:09 UTC (rev 55452)
@@ -56,6 +56,8 @@
 #include "BLI_threads.h"
 #include "BLI_linklist.h"
 
+#include "BLF_translation.h"
+
 #include "BKE_anim.h"
 #include "BKE_animsys.h"
 
@@ -3488,17 +3490,19 @@
 	psys->pointcache = BKE_ptcache_add(&psys->ptcaches);
 	BLI_addtail(&ob->particlesystem, psys);
 
-	psys->part = psys_new_settings("ParticleSettings", NULL);
+	psys->part = psys_new_settings(DATA_("ParticleSettings"), NULL);
 
 	if (BLI_countlist(&ob->particlesystem) > 1)
-		BLI_snprintf(psys->name, sizeof(psys->name), "ParticleSystem %i", BLI_countlist(&ob->particlesystem));
+		BLI_snprintf(psys->name, sizeof(psys->name), DATA_("ParticleSystem %i"), BLI_countlist(&ob->particlesystem));
 	else
-		strcpy(psys->name, "ParticleSystem");
+		strcpy(psys->name, DATA_("ParticleSystem"));
 
 	md = modifier_new(eModifierType_ParticleSystem);
 
-	if (name) BLI_strncpy_utf8(md->name, name, sizeof(md->name));
-	else BLI_snprintf(md->name, sizeof(md->name), "ParticleSystem %i", BLI_countlist(&ob->particlesystem));
+	if (name)
+		BLI_strncpy_utf8(md->name, name, sizeof(md->name));
+	else
+		BLI_snprintf(md->name, sizeof(md->name), DATA_("ParticleSystem %i"), BLI_countlist(&ob->particlesystem));
 	modifier_unique_name(&ob->modifiers, md);
 
 	psmd = (ParticleSystemModifierData *) md;

Modified: trunk/blender/source/blender/editors/curve/editcurve.c
===================================================================
--- trunk/blender/source/blender/editors/curve/editcurve.c	2013-03-20 18:01:47 UTC (rev 55451)
+++ trunk/blender/source/blender/editors/curve/editcurve.c	2013-03-20 18:42:09 UTC (rev 55452)
@@ -6150,20 +6150,20 @@
 
 	if ((type & CU_TYPE) == CU_BEZIER) {
 		switch (stype) {
-			case CU_PRIM_CURVE: return "BezierCurve";
-			case CU_PRIM_CIRCLE: return "BezierCircle";
-			case CU_PRIM_PATH: return "CurvePath";
+			case CU_PRIM_CURVE: return DATA_("BezierCurve");
+			case CU_PRIM_CIRCLE: return DATA_("BezierCircle");
+			case CU_PRIM_PATH: return DATA_("CurvePath");
 			default:
-				return "Curve";
+				return DATA_("Curve");
 		}
 	}
 	else {
 		switch (stype) {
-			case CU_PRIM_CURVE: return "NurbsCurve";
-			case CU_PRIM_CIRCLE: return "NurbsCircle";
-			case CU_PRIM_PATH: return "NurbsPath";
+			case CU_PRIM_CURVE: return DATA_("NurbsCurve");
+			case CU_PRIM_CIRCLE: return DATA_("NurbsCircle");
+			case CU_PRIM_PATH: return DATA_("NurbsPath");
 			default:
-				return "Curve";
+				return DATA_("Curve");
 		}
 	}
 }
@@ -6173,13 +6173,13 @@
 	int stype = type & CU_PRIMITIVE;
 
 	switch (stype) {
-		case CU_PRIM_CURVE: return "SurfCurve";
-		case CU_PRIM_CIRCLE: return "SurfCircle";
-		case CU_PRIM_PATCH: return "SurfPatch";
-		case CU_PRIM_SPHERE: return "SurfSphere";
-		case CU_PRIM_DONUT: return "SurfTorus";
+		case CU_PRIM_CURVE: return DATA_("SurfCurve");
+		case CU_PRIM_CIRCLE: return DATA_("SurfCircle");
+		case CU_PRIM_PATCH: return DATA_("SurfPatch");
+		case CU_PRIM_SPHERE: return DATA_("SurfSphere");
+		case CU_PRIM_DONUT: return DATA_("SurfTorus");
 		default:
-			return "Surface";
+			return DATA_("Surface");
 	}

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list