def get_arsc_info(arscobj):
    """
    Return a string containing all resources packages ordered by packagename, locale and type.

    :param arscobj: :class:`~ARSCParser`
    :return: a string
    """
    buff = ''
    for package in arscobj.get_packages_names():
        buff += package + ':\n'
        for locale in arscobj.get_locales(package):
            buff += '\t' + repr(locale) + ':\n'
            for ttype in arscobj.get_types(package, locale):
                buff += '\t\t' + ttype + ':\n'
                try:
                    tmp_buff = getattr(arscobj, 'get_' + ttype + '_resources')(
                        package, locale).decode('utf-8', 'replace').split('\n')
                    for i in tmp_buff:
                        buff += '\t\t\t' + i + '\n'
                except AttributeError:
                    pass
    return buff
