def _extract_translatable_qweb_terms(element, callback):
 for el in element:
  if isinstance(el, SKIPPED_ELEMENT_TYPES):
   continue
  if ((el.tag.lower() not in SKIPPED_ELEMENTS) and ('t-js' not in el.attrib) and (not (('t-jquery' in el.attrib) and ('t-operation' not in el.attrib))) and (el.get('t-translation', '').strip() != 'off')):
   _push(callback, el.text, el.sourceline)
   for att in ('title', 'alt', 'label', 'placeholder'):
    if (att in el.attrib):
     _push(callback, el.attrib[att], el.sourceline)
   _extract_translatable_qweb_terms(el, callback)
  _push(callback, el.tail, el.sourceline)

def _extract_translatable_qweb_terms ( element , callback ) : for el in element : if isinstance ( el , SKIPPED_ELEMENT_TYPES ) : continue if ( ( el . tag . lower ( ) not in SKIPPED_ELEMENTS ) and ( 't-js' not in el . attrib ) and ( not ( ( 't-jquery' in el . attrib ) and ( 't-operation' not in el . attrib ) ) ) and ( el . get ( 't-translation' , '' ) . strip ( ) != 'off' ) ) : _push ( callback , el . text , el . sourceline ) for att in ( 'title' , 'alt' , 'label' , 'placeholder' ) : if ( att in el . attrib ) : _push ( callback , el . attrib [ att ] , el . sourceline ) _extract_translatable_qweb_terms ( el , callback ) _push ( callback , el . tail , el . sourceline )
helper method to walk an etree document representing a qweb template .