{# Language Selector Macros ======================== Reusable language selector components for store dashboard and storefront. Usage: {% from 'shared/macros/language_selector.html' import language_selector, language_selector_compact %} Full language selector with labels: language_selector(current_language='fr', enabled_languages=['fr', 'de', 'en'], position='right') Compact selector (flag only): language_selector_compact(current_language='fr', enabled_languages=['fr', 'de', 'en']) #} {# Language configuration - matches app/utils/i18n.py Uses native language names per LANG-005 architecture rule #} {% set LANGUAGE_NAMES = { 'en': 'English', 'fr': 'Français', 'de': 'Deutsch', 'lb': 'Lëtzebuergesch' } %} {% set LANGUAGE_NATIVE = { 'en': 'English', 'fr': 'Français', 'de': 'Deutsch', 'lb': 'Lëtzebuergesch' } %} {% set LANGUAGE_FLAGS = { 'en': 'gb', 'fr': 'fr', 'de': 'de', 'lb': 'lu' } %} {# Language Selector (Full) ======================== A dropdown language selector showing flag and language name. Parameters: - current_language: Current language code (default: 'fr') - enabled_languages: List of enabled language codes (default: all) - position: 'left' | 'right' (default: 'right') - context: 'store' | 'shop' | 'admin' (affects API endpoint) - show_label: Show language name next to flag (default: true) #} {% macro language_selector(current_language='fr', enabled_languages=none, position='right', context='shop', show_label=true) %} {% set langs = enabled_languages or ['en', 'fr', 'de', 'lb'] %} {% set current = current_language if current_language in langs else langs[0] %} {% set positions = {'left': 'left-0', 'right': 'right-0'} %} {# Uses languageSelector() function per LANG-002 architecture rule #} {# Use single quotes for x-data so JSON double quotes don't break the attribute #}
{% endmacro %} {# Language Selector (Compact) =========================== A compact language selector showing only flag icon. Good for headers with limited space. Parameters: - current_language: Current language code (default: 'fr') - enabled_languages: List of enabled language codes (default: all) - position: 'left' | 'right' (default: 'right') #} {% macro language_selector_compact(current_language='fr', enabled_languages=none, position='right') %} {% set langs = enabled_languages or ['en', 'fr', 'de', 'lb'] %} {% set current = current_language if current_language in langs else langs[0] %} {% set positions = {'left': 'left-0', 'right': 'right-0'} %} {# Uses languageSelector() function per LANG-002 architecture rule #} {# Use single quotes for x-data so JSON double quotes don't break the attribute #}
{% endmacro %} {# Language Toggle (Simple) ======================== A simple language toggle for when only 2 languages are enabled. Shows both flags side by side. Parameters: - current_language: Current language code - enabled_languages: List of exactly 2 language codes #} {% macro language_toggle(current_language='fr', enabled_languages=['fr', 'de']) %} {% set langs = enabled_languages[:2] if enabled_languages else ['fr', 'de'] %} {% set current = current_language if current_language in langs else langs[0] %} {# Uses languageSelector() function per LANG-002 architecture rule #} {# Use single quotes for x-data so JSON double quotes don't break the attribute #}
{% endmacro %} {# Language Settings Form ====================== A form for store/admin settings page to configure language preferences. Parameters: - current_settings: Dict with current store language settings - form_id: Form ID for submission #} {% macro language_settings_form(current_settings=none, form_id='language-settings-form') %} {% set settings = current_settings or {} %} {# Native language names per LANG-005 #} {% set all_languages = [ {'code': 'en', 'name': 'English'}, {'code': 'fr', 'name': 'Français'}, {'code': 'de', 'name': 'Deutsch'}, {'code': 'lb', 'name': 'Lëtzebuergesch'} ] %}
{# Default Content Language #}

Language used as fallback when content is not available in the requested language.

{# Dashboard Language #}

Default language for your store dashboard (team members can override in their profile).

{# Storefront Default Language #}

Default language shown to customers when they first visit your store.

{# Enabled Storefront Languages #}

Languages available to customers in the language selector.

{% endmacro %}