(app, single_sheet=False, lang=None, eligible_for_transifex_only=False,
                               by_id=False)
return headers
Returns lists representing the expected structure of bulk app translation
    Excel file uploads and downloads.

    The list will be in the form:
    [
        ["sheetname", ["column name1", "column name 2"]],
        ["sheet2 name", [...]],
        ...
    ]

    `eligible_for_transifex_only` will skip modules and forms that have "SKIP
    TRANSIFEX" in their comment.
Returns lists representing the expected structure of bulk app translation
    Excel file uploads and downloads.
Returns lists representing the expected structure of bulk app translation Excel file uploads and downloads .
def get_bulk_app_sheet_headers(app, single_sheet=False, lang=None, eligible_for_transifex_only=False,
                               by_id=False):
    '''
    Returns lists representing the expected structure of bulk app translation
    Excel file uploads and downloads.

    The list will be in the form:
    [
        ["sheetname", ["column name1", "column name 2"]],
        ["sheet2 name", [...]],
        ...
    ]

    `eligible_for_transifex_only` will skip modules and forms that have "SKIP
    TRANSIFEX" in their comment.
    '''
    langs = [lang] if lang else app.langs

    default_lang_list = ['default_' + l for l in langs]
    audio_lang_list = ['audio_' + l for l in langs]
    image_lang_list = ['image_' + l for l in langs]
    video_lang_list = ['video_' + l for l in langs]
    lang_list = default_lang_list + image_lang_list + audio_lang_list + video_lang_list

    if single_sheet:
        return ((SINGLE_SHEET_NAME, tuple(
            SINGLE_SHEET_STATIC_HEADERS
        ) + tuple(lang_list) + ('unique_id',)),)

    headers = []

    # Add headers for the first sheet
    headers.append([
        MODULES_AND_FORMS_SHEET_NAME,
        get_modules_and_forms_row(
            row_type='Type',
            sheet_name='menu_or_form',
            languages=default_lang_list,
            media_image=['image_%s' % l for l in langs],
            media_audio=['audio_%s' % l for l in langs],
            unique_id='unique_id',
        )
    ])

    for module in app.get_modules():
        if eligible_for_transifex_only and EligibleForTransifexChecker.exclude_module(module):
            continue

        sheet_name = module.unique_id if by_id else get_module_sheet_name(module)
        headers.append([sheet_name, ['case_property', 'list_or_detail'] + default_lang_list])

        for form in module.get_forms():
            if form.form_type == 'shadow_form':
                continue
            if eligible_for_transifex_only and EligibleForTransifexChecker.exclude_form(form):
                continue

            sheet_name = form.unique_id if by_id else get_form_sheet_name(form)
            headers.append([sheet_name, ["label"] + lang_list])
    return headers
def get_bulk_app_sheet_headers ( app , single_sheet = False , lang = None , eligible_for_transifex_only = False , by_id = False ) : langs = [ lang ] if lang else app . langs default_lang_list = [ 'default_' + l for l in langs ] audio_lang_list = [ 'audio_' + l for l in langs ] image_lang_list = [ 'image_' + l for l in langs ] video_lang_list = [ 'video_' + l for l in langs ] lang_list = default_lang_list + image_lang_list + audio_lang_list + video_lang_list if single_sheet : return ( ( SINGLE_SHEET_NAME , tuple ( SINGLE_SHEET_STATIC_HEADERS ) + tuple ( lang_list ) + ( 'unique_id' , ) ) , ) headers = [ ] # Add headers for the first sheet headers . append ( [ MODULES_AND_FORMS_SHEET_NAME , get_modules_and_forms_row ( row_type = 'Type' , sheet_name = 'menu_or_form' , languages = default_lang_list , media_image = [ 'image_%s' % l for l in langs ] , media_audio = [ 'audio_%s' % l for l in langs ] , unique_id = 'unique_id' , ) ] ) for module in app . get_modules ( ) : if eligible_for_transifex_only and EligibleForTransifexChecker . exclude_module ( module ) : continue sheet_name = module . unique_id if by_id else get_module_sheet_name ( module ) headers . append ( [ sheet_name , [ 'case_property' , 'list_or_detail' ] + default_lang_list ] ) for form in module . get_forms ( ) : if form . form_type == 'shadow_form' : continue if eligible_for_transifex_only and EligibleForTransifexChecker . exclude_form ( form ) : continue sheet_name = form . unique_id if by_id else get_form_sheet_name ( form ) headers . append ( [ sheet_name , [ "label" ] + lang_list ] ) return headers