{%- macro format_date(date, short, language_strings="") -%}

{#- Set locale -#}
{%- set date_locale = macros_translate::translate(key="date_locale", default="en_GB", language_strings=language_strings) -%}

{#- Check for language-specific date formats -#}
{%- set language_format = "" -%}
{%- if config.extra.date_formats -%}
    {%- for format_config in config.extra.date_formats -%}
        {%- if format_config.lang == lang -%}
            {%- if short and format_config.short -%}
                {%- set_global language_format = format_config.short -%}
            {%- elif not short and format_config.long -%}
                {%- set_global language_format = format_config.long -%}
            {%- endif -%}
        {%- endif -%}
    {%- endfor -%}
{%- endif -%}

{%- if language_format -%}
    {{ date | date(format=language_format, locale=date_locale) }}
{%- elif config.extra.short_date_format and short -%}
    {{ date | date(format=config.extra.short_date_format, locale=date_locale) }}
{%- elif config.extra.long_date_format and not short -%}
    {{ date | date(format=config.extra.long_date_format, locale=date_locale) }}
{%- elif not config.extra.short_date_format and date_locale == "en_GB" -%}
    {%- set day = date | date(format='%-d') | int -%}

    {%- if day in [11, 12, 13] -%}
        {%- set suffix = "th" -%}
    {%- else -%}
        {%- set last_digit = day % 10 -%}
        {%- if last_digit == 1 -%}
            {%- set suffix = "st" -%}
        {%- elif last_digit == 2 -%}
            {%- set suffix = "nd" -%}
        {%- elif last_digit == 3 -%}
            {%- set suffix = "rd" -%}
        {%- else -%}
            {%- set suffix = "th" -%}
        {%- endif -%}
    {%- endif -%}

    {#- Return the date. -#}
    {{ date | date(format="%-d") }}{{ suffix }}
    {%- if short == true -%}
        {{ date | date(format=" %b %Y") }}
    {%- else -%}
        {{ date | date(format=" %B %Y") }}
    {%- endif -%}
{%- else -%}
    {%- if short -%}
        {{ date | date(format="%-d %b %Y", locale=date_locale) }}
    {%- else -%}
        {{ date | date(format="%d %b %Y", locale=date_locale) }}
    {%- endif -%}
{%- endif -%}

{%- endmacro -%}
