<%def name="span(value, title)">${value} <%def name="format(json, base='')">
% if 'children' in json: % for label, child in json['children']: % if 'value' in child and ('missingFile' in child['value'] or 'obsoleteFile' in child['value']):
${span(label, base + label)}
% else:
${span(label, base + label)}
% if 'value' in child: <% from xml.sax.saxutils import escape v = child['value'] # errors used be strings, and are now arrays, support both if 'error' in v and v['error']: errors = v['error'] if not isinstance(errors, list): errors = [errors] errors = map(escape, errors) else: errors = [] missings = ('missingEntity' in v and v['missingEntity']) or [] obsoletes = ('obsoleteEntity' in v and v ['obsoleteEntity']) or [] entities = missings + obsoletes entities.sort() cls = ['obsolete','missing'] out = [('error', e) for e in errors] + [(cls[e in missings], e) for e in entities] %> % if len(out):
% for cls, entity in out:
${entity}
% endfor
% endif % endif % if 'children' in child: ${format(child, base + label + '/')} % endif % endif % endfor % endif
Comparison for ${build['app']}-${build['locale']} (${build['buildnumber']})

Comparison for ${build['app']}-${build['locale']}

<% total = sum(summary[k] for k in ['changed','unchanged','missing','missingInFiles'] if k in summary) total_missing = sum(summary[k] for k in ['missing','missingInFiles'] if k in summary) width = 300 %> ${summary['completion']}% changed, ignoring ${summary['keys']} keys

% if total_missing > 0: <% sep = '' if 'missing' in summary and summary['missing'] != total_missing: sep = ', ' %>

% if 'missing' in summary and summary['missing'] > 0: ${summary['missing']} entries missing in existing files${sep} % endif % if 'missingInFiles' in summary and summary['missingInFiles'] > 0: ${summary['missingInFiles']} entries missing in new files % endif

% endif

Below you see the files and localizable strings missing and obsolete. The obsolete ones are striked through and grey. The data is organized hierarchically, the full path for a file is available as an tooltip.

${format(result)}