package mt.text.translate;
/**
* Translation class fed by XML like
*
Atteindre un score de ::score::
Atteindre le level ::level::
Faire un temps de moins de ::time::
Faire un truc spécial dans ce jeu
*/
class TXml implements ITranslate{
static var TEXTS = new Hash();
public function new() {
}
public function init (raw:String, ?seed:Int) {
var xml = Xml.parse( raw ).firstChild();
//trace ( xml.elements() );
var h = new Hash();
for( x in xml.elements() ) {
var id = x.get("id");
if( id == null )
throw "Missing 'id' in data.xml";
if( h.exists(id) )
throw "Duplicate id '"+id+"' in data.xml";
var buf = new StringBuf();
for( c in x )
buf.add(c.toString());
var s = mt.deepnight.Lib.replaceTag(buf.toString(), "*", "", "");
s = mt.deepnight.Lib.replaceTag(s, "||", "", "");
//trace("text : "+id+", "+s);
h.set(id,s);
}
TEXTS = h;
}
public function format(key:String, ?data:Dynamic):String {
var str = TEXTS.get(key);
var list = str.split("::");
var n = 0;
if(data!=null){
for (k in Reflect.fields(data)){
str = StringTools.replace(str, "::" + k.substr(1) + "::", Reflect.field(data, k));
}
}
return str;
}
public function _(key:String, ?data:Dynamic):String {
return format(key, data);
}
}