def _parse_translation(self, parser):
        strings_added, strings_updated = 0, 0
        parser.bind_resource(self.resource)
        parser.set_language(self.language)

        is_source = self.resource.source_language == self.language
        try:
            parser.parse_file(is_source)
            strings_added, strings_updated = parser.save2db(
                is_source, user=self.request.user
            )
        except Exception, e:
            raise BadRequestError("Could not import file: %s" % e)

        messages = []
        if strings_added > 0:
            messages.append(_("%i strings added") % strings_added)
        if strings_updated > 0:
            messages.append(_("%i strings updated") % strings_updated)
        retval= {
            'strings_added': strings_added,
            'strings_updated': strings_updated,
            'redirect': reverse(
                'resource_detail',
                args=[self.resource.project.slug, self.resource.slug]
            )
        }
        logger.debug("Extraction successful, returning: %s" % retval)

        # If any string added/updated
        if retval['strings_added'] > 0 or retval['strings_updated'] > 0:
            modified = True
        else:
            modified=False
        post_submit_translation.send(
            None, request=self.request, resource=self.resource,
            language=self.language, modified=modified
        )

        return retval
check if `program` is in PATH and is executable.
dataset/ETHPy150Open rvanlaar/easy-transifex/src/transifex/transifex/resources/api.py/Translation._parse_translation--crossover with--dataset/ETHPy150Open CGATOxford/cgat/CGAT/IOTools.py/which