var map = {}; // 'string=> md5sum'
var _this = this;
- toks.forEach(function (t) {
- if (t.type == 'STRN' && t.name == 'DOUBLE_QUOTE') {
- var sval = t.data.substring(1,t.data.length-1);
- var ffn = fn.substring(_this.prefix.length);
-
- t.trsum = _this.md5(ffn + '-' + sval);
- map[sval] = t.trsum;
+ var t, last, next;
+
+
+ var tokfind = function (i,dir) {
+ while (1) {
+ if ((dir < 0) && (i < 0)) {
+ return false;
+ }
+ if ((dir > 0) && (i >= toks.length)) {
+ return false;
+ }
+ i += dir;
+ if (toks[i].type != 'WHIT') {
+ return toks[i];
+ }
}
- })
+ return false;
+
+ }
+
+
+ for (var i=0;i<toks.length;i++) {
+
+ t = toks[i];
+ if (t.type != 'STRN') {
+ continue;
+ }
+ if (t.name != 'DOUBLE_QUOTE') {
+ continue;
+ }
+
+ last = tokfind(i,-1);
+ next = tokfind(i,+1);
+
+ // we have to ignore key values on objects
+
+ // defined by
+ // last == '{' or ',' and
+ // next == ':'
+
+ if (next &&
+ next.type == 'PUNC' &&
+ next.data == ':' &&
+ last &&
+ last.type == 'PUNC' &&
+ (last.data == ',' || last.data == '{')
+ ){
+ continue; // found object key... - we can not translate these
+ }
+
+ var sval = t.data.substring(1,t.data.length-1);
+ var ffn = fn.substring(_this.prefix.length);
+
+ t.trsum = _this.md5(ffn + '-' + sval);
+ map[sval] = t.trsum;
+
+
+
+ }
+
var transfile = minfile + '.lang.trans';
var transmd5 = minfile + '.lang';
return data;
}
+ if (typeof(tok.trsum) == 'undefined') {
+ return data;
+ }
+
+ return '_T["' + tok.trsum + '"]';
+
var sval = data.substring(1,data.length-1);
// we do not clean up... quoting here!??!!?!?!?!?