7646404196
ClutterScript should be able to automatically call gettext() and friends on strings loaded from a UI definition, prior to passing the string to the object it is constructing. The basic implementation is trivial: - set a translation domain on the ClutterScript instance - mark the translatable strings inside the JSON data, like: "property" : { "translatable" : true, "string" : "a translatable string" } The hard part is now getting the tools we use to extract the translatable strings to understand the JSON format we use inside ClutterScript.
79 lines
2.1 KiB
JSON
79 lines
2.1 KiB
JSON
{
|
|
"My Scene" : {
|
|
"id" : "main-stage",
|
|
"type" : "ClutterStage",
|
|
"title" : { "translatable" : true, "string" : "ClutterScript test" },
|
|
"color" : "white",
|
|
"signals" : [
|
|
{ "name" : "key-press-event", "handler" : "clutter_main_quit" },
|
|
{ "name" : "destroy", "handler" : "clutter_main_quit" }
|
|
],
|
|
"children" : [
|
|
{
|
|
"id" : "red-button",
|
|
"type" : "ClutterRectangle",
|
|
"color" : "#ff0000ff",
|
|
"x" : 50, "y" : 50, "width" : 100, "height" : 100,
|
|
"reactive" : true,
|
|
"rotation" : [
|
|
{ "z-axis" : [ 45.0, [ 75, 75 ] ] }
|
|
],
|
|
"behaviours" : [ "fade-behaviour", "path-behaviour" ]
|
|
},
|
|
{
|
|
"id" : "green-button",
|
|
"type" : "ClutterRectangle",
|
|
"color" : "#00ff00ff",
|
|
"border-width" : 5,
|
|
"border-color" : "#00cc00ff",
|
|
"x" : 200,
|
|
"y" : 50,
|
|
"width" : 100,
|
|
"height" : 100,
|
|
"depth" : -200.0,
|
|
"reactive" : true,
|
|
"signals" : [
|
|
{ "name" : "button-press-event", "handler" : "clutter_main_quit" }
|
|
]
|
|
},
|
|
{
|
|
"id" : "red-hand",
|
|
"type" : "ClutterTexture",
|
|
"filename" : "redhand.png",
|
|
"x" : 100,
|
|
"y" : 100,
|
|
"width" : "20 mm",
|
|
"keep-aspect-ratio" : true,
|
|
"anchor-x" : "5 em",
|
|
"anchor-y" : "5 pt",
|
|
"opacity" : 100,
|
|
"behaviours" : [ "rotate-behaviour", "fade-behaviour" ]
|
|
},
|
|
{
|
|
"id" : "red-hand-clone",
|
|
"type" : "ClutterClone",
|
|
"source" : "red-hand",
|
|
"x" : 250,
|
|
"y" : 150,
|
|
"opacity" : 100
|
|
},
|
|
{
|
|
"id" : "label",
|
|
"type" : "ClutterText",
|
|
"x" : 50,
|
|
"y" : 200,
|
|
"text" : { "translatable" : true, "string" : "Clutter Script" },
|
|
"font-name" : "Sans 24px",
|
|
"color" : "black",
|
|
"line-alignment" : "center",
|
|
"line-wrap" : false,
|
|
"ellipsize" : "none",
|
|
"rotation" : [
|
|
{ "y-axis" : [ 60.0, [ 275, 100 ] ] },
|
|
{ "z-axis" : [ 45.0, [ 75, 75 ] ] }
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|