Files
orion/app/modules/loyalty/locales/lb.json
Samir Boulahtit 4c1608f78a
Some checks failed
CI / ruff (push) Successful in 12s
CI / validate (push) Has been cancelled
CI / dependency-scanning (push) Has been cancelled
CI / docs (push) Has been cancelled
CI / deploy (push) Has been cancelled
CI / pytest (push) Has been cancelled
feat(loyalty): Phase 4.1 — T&C via CMS integration
Add support for linking a loyalty program's Terms & Conditions to a
CMS page, replacing the simple terms_text textarea with a scalable
content source that supports rich HTML, multi-language, and store
overrides.

- Migration loyalty_006: adds terms_cms_page_slug column to
  loyalty_programs (nullable, String 200).
- Model + schemas: new field on LoyaltyProgram, ProgramCreate,
  ProgramUpdate, ProgramResponse.
- Program form: new "CMS Page Slug" input field with hint text,
  placed above the legacy terms_text (now labeled as "fallback").
- Enrollment page: when terms_cms_page_slug is set, JS fetches the
  CMS page content via /storefront/cms/pages/{slug} and displays
  rendered HTML in the modal. Falls back to terms_text when no slug.
- i18n: 3 new keys in 4 locales (terms_cms_page, terms_cms_page_hint,
  terms_fallback_hint).

Legacy terms_text field preserved as fallback for existing programs.

342 tests pass.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-11 20:26:22 +02:00

913 lines
39 KiB
JSON

{
"loyalty": {
"module": {
"name": "Treieprogrammer",
"description": "Stempel- a Punktebaséiert Treieprogrammer mat Wallet-Integratioun"
},
"program": {
"title": "Treieprogramm",
"create": "Programm erstellen",
"edit": "Programm beaarbechten",
"activate": "Aktivéieren",
"deactivate": "Deaktivéieren",
"type": {
"stamps": "Stempelen",
"points": "Punkten",
"hybrid": "Hybrid"
}
},
"card": {
"title": "Treiekaart",
"number": "Kaartnummer",
"qr_code": "QR-Code",
"enroll": "Client aschreiben",
"deactivate": "Kaart deaktivéieren"
},
"stamp": {
"title": "Stempelen",
"add": "Stempel derbäisetzen",
"redeem": "Belounung aléisen",
"count": "{current} vun {target}",
"until_reward": "{count} bis zur Belounung"
},
"points": {
"title": "Punkten",
"earn": "Punkten sammelen",
"redeem": "Punkten aléisen",
"balance": "{count} Punkten",
"per_euro": "{points} Punkten pro Euro"
},
"pin": {
"title": "Personal-PINen",
"create": "PIN erstellen",
"edit": "PIN beaarbechten",
"unlock": "PIN entspären",
"locked": "PIN gespaart bis {time}"
},
"wallet": {
"google": "An Google Wallet derbäisetzen",
"apple": "An Apple Wallet derbäisetzen"
},
"stats": {
"title": "Statistiken",
"total_cards": "Total Kaarten",
"active_cards": "Aktiv Kaarten",
"stamps_issued": "Stempelen ausgestallt",
"rewards_redeemed": "Belounungen agelées"
},
"errors": {
"program_not_found": "Treieprogramm net fonnt",
"program_inactive": "Treieprogramm ass net aktiv",
"card_not_found": "Treiekaart net fonnt",
"card_inactive": "Treiekaart ass net aktiv",
"cooldown": "W.e.g. waart {minutes} Minutten virum nächste Stempel",
"daily_limit": "Deeglecht Stempel-Limit vun {limit} erreecht",
"insufficient_stamps": "Brauch {required} Stempelen, huet {current}",
"insufficient_points": "Brauch {required} Punkten, huet {current}",
"pin_required": "Personal-PIN erfuerderlech",
"pin_invalid": "Ongëlteg Personal-PIN",
"pin_locked": "PIN gespaart wéinst ze vill Fehlversich"
}
},
"menu": {
"loyalty": "Treiprogramm",
"loyalty_programs": "Treiprogrammer",
"programs": "Programmer",
"analytics": "Analytik",
"dashboard": "Dashboard",
"terminal": "Terminal",
"customer_cards": "Clientekaarten",
"statistics": "Statistiken",
"program": "Programm",
"overview": "Iwwersiicht",
"settings": "Astellungen",
"wallet_debug": "Wallet Debug",
"staff_pins": "Mataarbechter-PINen",
"transactions": "Transaktionen"
},
"permissions": {
"view_programs": "Programmer kucken",
"view_programs_desc": "Treiheet-Programmer an Detailer kucken",
"manage_programs": "Programmer verwalten",
"manage_programs_desc": "Treiheet-Programmer erstellen a konfiguréieren",
"view_rewards": "Beloununge kucken",
"view_rewards_desc": "Belounungen an Aléisunge kucken",
"manage_rewards": "Beloununge verwalten",
"manage_rewards_desc": "Treiheet-Belounungen erstellen a verwalten"
},
"onboarding": {
"create_program": {
"title": "Treieprogramm erstellen",
"description": "Erstellt Äert éischt Stempel- oder Punkteprogramm"
}
},
"enrollment": {
"title": "Gitt Member vun eisem Belounungsprogramm!",
"subtitle": "Verdéngt {points} Punkt pro ausgegoenen EUR",
"not_available_title": "Programm net verfügbar",
"not_available_message": "Dëse Buttek huet nach kee Treieprogramm ageriicht.",
"welcome_bonus": "Kritt {points} Bonuspunkten wann Dir Iech umellt!",
"already_member": "Schonn Member? Är Punkten sinn mat Ärer E-Mail verlinkt.",
"form": {
"email": "E-Mail",
"first_name": "Virnumm",
"last_name": "Nonumm",
"phone": "Telefon (fakultativ)",
"birthday": "Gebuertsdag (fakultativ)",
"birthday_hint": "Fir speziell Gebuertsdagsbelounungen",
"terms_agree": "Ech akzeptéieren d'",
"terms": "Allgemeng Geschäftsbedingungen",
"marketing_consent": "Mir Neiegkeeten an Sonderoffere schécken",
"joining": "Umeldung leeft...",
"join_button": "Bäitrieden & {points} Punkten kréien"
},
"privacy_policy": "Dateschutzrichtlinn",
"close": "Zoumaachen",
"success": {
"title": "Wëllkomm!",
"message": "Dir sidd elo Member vun eisem Belounungsprogramm.",
"card_number": "Är Kaartnummer",
"wallet_prompt": "Späichert Är Kaart op Ärem Handy fir einfachen Zougang:",
"next_steps_title": "Wéi geet et weider?",
"step_earn": "Weist Är Kaartnummer beim Akaf fir Punkten ze sammelen",
"step_balance": "Préift Äre Kontostand online oder an der App",
"step_redeem": "Léist Punkten géint Belounungen an all eise Standuerter an",
"view_dashboard": "Mäin Treie-Dashboard kucken",
"continue_shopping": "Weider akafen"
},
"already_enrolled_title": "Dir sidd schonn Member!",
"cross_location_message": "Är Kaart gëllt an all eise Standuerter:",
"single_location_message": "Är Kaart ass bei {store_name} registréiert",
"available_locations": "Benotzt Är Kaart an all eise Standuerter:",
"errors": {
"load_failed": "Programminformatiounen konnten net gelueden ginn",
"email_exists": "Dës E-Mail ass schonn an eisem Treieprogramm registréiert.",
"failed": "Umeldung feelgeschloen. Probéiert w.e.g. nach eng Kéier."
}
},
"common": {
"active": "Aktiv",
"all_stores": "All Geschäfter",
"at": "bei",
"back": "Zréck",
"cancel": "Ofbriechen",
"confirm": "Bestätegen",
"continue": "Weider",
"delete": "Läschen",
"disabled": "Deaktivéiert",
"edit": "Beaarbechten",
"enabled": "Aktivéiert",
"inactive": "Inaktiv",
"loading": "Lueden...",
"minutes": "Minutten",
"never": "Ni",
"no": "Neen",
"none": "Keen",
"or": "oder",
"points": "Punkten",
"program_not_setup": "Treieprogramm net ageriicht",
"program_not_setup_desc": "Riicht w.e.g. en Treieprogramm an",
"refresh": "Aktualiséieren",
"save": "Späicheren",
"saving": "Späicheren...",
"total": "TOTAL",
"view": "Kucken",
"yes": "Jo",
"contact_admin_setup": "Kontaktéiert Ären Administrator fir d'Treieprogramm anzeriichten",
"setup_program": "Programm ariichten",
"unknown": "Onbekannt"
},
"transactions": {
"card_created": "Ageschriwwen",
"welcome_bonus": "Wëllkommensbonus",
"stamp_earned": "Stempel kritt",
"stamp_redeemed": "Stempel agelées",
"stamp_voided": "Stempel stornéiert",
"stamp_adjustment": "Stempel ugepasst",
"points_earned": "Punkten verdéngt",
"points_redeemed": "Punkten agelées",
"points_voided": "Punkten stornéiert",
"points_adjustment": "Punkten ugepasst",
"points_expired": "Punkten ofgelaf",
"card_deactivated": "Deaktivéiert",
"reward_redeemed": "Belounung agelées"
},
"shared": {
"analytics": {
"total_programs": "Programmer insgesamt",
"total_members": "Memberen insgesamt",
"active_members": "Aktiv Memberen",
"points_issued_30d": "Punkten vergi (30D)",
"transactions_30d": "Transaktiounen (30D)",
"x_active": "{count} aktiv",
"points_overview": "Punkteniwwersiicht",
"points_issued_vs_redeemed": "Punkten vergi vs agelées (30D)",
"issued": "Vergi:",
"redeemed": "Agelées:",
"redemption_rate": "Aléisungsquot",
"outstanding_balance": "Ausstehende Solde",
"member_activity": "Memberaktivitéit",
"active_members_30d": "Aktiv Memberen (30D)",
"new_this_month": "Nei dëse Mount",
"merchants_with_programs": "Händler mat Programmer",
"avg_points_per_member": "Durchschn. Punkten pro Member",
"all_time_statistics": "Gesamtstatistiken",
"total_points_issued": "Total Punkten vergi",
"total_points_redeemed": "Total Punkten agelées",
"points_redeemed_30d": "Punkten agelées (30D)",
"outstanding_liability": "Ausstehend Verbindlechkeet",
"location_breakdown": "Opschlësselung no Standuert",
"store": "Geschäft",
"enrolled": "Ageschriwwen",
"points_earned": "Punkten verdéngt",
"points_redeemed": "Punkten agelées"
},
"program_view": {
"program_configuration": "Programmkonfiguratioun",
"program_name": "Programmnumm",
"card_name": "Kaartnumm",
"stamps_configuration": "Stempelkonfiguratioun",
"stamps_target": "Stempelzil",
"reward_description": "Belounungsbeschreiwung",
"reward_value": "Belounungswäert",
"points_configuration": "Punktekonfiguratioun",
"points_per_eur": "Punkten pro EUR",
"welcome_bonus": "Wëllkommensbonus",
"x_points": "{count} Punkten",
"minimum_redemption": "Mindest-Aléisung",
"minimum_purchase": "Mindest-Akaf",
"points_expiration": "Punktenoflaaf",
"x_days_inactivity": "{days} Deeg Inaktivitéit",
"redemption_rewards": "Aléisungsbelounungen",
"reward": "Belounung",
"points_required": "Néideg Punkten",
"description": "Beschreiwung",
"anti_fraud": "Betrugsschutz",
"cooldown": "Waardezäit",
"x_minutes": "{count} Minutten",
"max_daily_stamps": "Max. Stempelen pro Dag",
"staff_pin_required": "Personal-PIN erfuerderlech",
"branding": "Branding",
"primary_color": "Haaptfaarf",
"secondary_color": "Secondärfaarf",
"logo_url": "Logo-URL",
"hero_image_url": "Hannergrondbild-URL",
"terms_privacy": "AGB & Dateschutz",
"terms_conditions": "Allgemeng Geschäftsbedingungen",
"privacy_policy_url": "Dateschutzrichtlinn-URL"
},
"cards": {
"total_members": "Memberen total",
"active_30d": "Aktiv (30D)",
"new_this_month": "Nei dëse Mount",
"total_points_balance": "Total Punktestand",
"search_placeholder": "No Numm, E-Mail, Telefon oder Kaartennummer sichen...",
"all_status": "All Statussen",
"all_stores": "All Geschäfter",
"col_member": "Member",
"col_card_number": "Kaartennummer",
"col_points_balance": "Punktestand",
"col_last_activity": "Lescht Aktivitéit",
"col_status": "Status",
"col_actions": "Aktiounen",
"no_members": "Keng Memberen fonnt",
"adjust_search": "Probéiert Är Sichkriterien unzepassen"
},
"card_detail": {
"title": "Kaartendetail",
"loading": "Kaartendetailer ginn gelueden...",
"error_loading": "Feeler beim Lueden",
"points_balance": "Punktestand",
"total_earned": "Total verdéngt",
"total_redeemed": "Total ageléist",
"member_since": "Member zënter",
"customer_information": "Clientsinformatiounen",
"name": "Numm",
"email": "E-Mail",
"phone": "Telefon",
"birthday": "Gebuertsdag",
"card_details": "Kaartendetailer",
"card_number": "Kaartennummer",
"status": "Status",
"last_activity": "Lescht Aktivitéit",
"enrolled_at": "Ageschriwwen bei",
"transaction_history": "Transaktiouns-Historique",
"col_date": "Datum",
"col_type": "Typ",
"col_points": "Punkten",
"col_location": "Standuert",
"col_notes": "Notizen",
"no_transactions": "Keng Transaktioune fonnt"
},
"transactions": {
"title": "Transaktionen",
"subtitle": "All Treieprogramm-Transaktioune kucken",
"adjust_filters": "Probéiert Är Filteren unzepassen",
"loading": "Transaktioune ginn gelueden...",
"error_loading": "Feeler beim Lueden",
"search_placeholder": "Transaktioune sichen...",
"all_types": "All Typen",
"all_stores": "All Geschäfter",
"col_date": "Datum",
"col_customer": "Client",
"col_type": "Typ",
"col_points": "Punkten",
"col_location": "Standuert",
"col_notes": "Notizen",
"no_transactions": "Keng Transaktioune fonnt",
"type_adjust": "Upassen",
"type_earn": "Verdéngen",
"type_expire": "Oflafen",
"type_redeem": "Aléisen"
},
"pins": {
"title": "Mataarbechter-PINen",
"subtitle": "Mataarbechter-Authentifizéierungs-PINen verwalten",
"loading": "PINe ginn gelueden...",
"error_loading": "Feeler beim Lueden",
"total_pins": "PINen total",
"active_pins": "Aktiv",
"locked_pins": "Gespaart",
"all_stores": "All Geschäfter",
"all_status": "All Statussen",
"status_active": "Aktiv",
"status_inactive": "Inaktiv",
"status_locked": "Gespaart",
"col_name": "Numm",
"col_staff_id": "Mataarbechter-ID",
"col_store": "Geschäft",
"col_status": "Status",
"col_locked": "Gespaart",
"col_last_used": "Lescht benotzt",
"col_actions": "Aktiounen",
"no_pins": "Keng PINen fonnt",
"create_pin": "PIN erstellen",
"edit_pin": "PIN änneren",
"delete_pin": "PIN läschen",
"unlock_pin": "Entspären",
"confirm_delete": "Sidd Dir sécher, datt Dir dësen PIN läsche wëllt?",
"pin_name": "Numm vum Mataarbechter",
"pin_staff_id": "Mataarbechter-ID (optional)",
"pin_code": "PIN-Code",
"pin_code_hint": "4-6-stellegen PIN",
"pin_edit_hint": "Eidel loossen fir den aktuelle PIN ze behalen",
"pin_edit_placeholder": "Neie PIN (optional)",
"pin_store": "Geschäft",
"select_store": "Geschäft wielen",
"pin_created": "PIN erfollegräich erstallt",
"pin_updated": "PIN erfollegräich aktualiséiert",
"pin_deleted": "PIN erfollegräich geläscht",
"pin_unlocked": "PIN erfollegräich entspäert",
"save": "Späicheren",
"cancel": "Ofbriechen",
"read_only_notice": "PINen sinn an der Admin-Usiicht nëmmen ze liesen",
"save_changes": "Späicheren",
"unlock": "Entspären",
"no_staff_found": "Keng Mataarbechter fonnt"
},
"program_form": {
"program_type": "Programmtyp",
"points_type_desc": "Punkten pro ausgegoenen EUR verdéngen",
"stamps_type_desc": "N Stempelen sammelen, Belounung kréien",
"hybrid_type_desc": "Stempelen a Punkten kombinéiert",
"stamps_configuration": "Stempelkonfiguratioun",
"stamps_target": "Stempelzil",
"stamps_target_help": "Unzuel vun de Stempelen fir d'Belounung",
"reward_description": "Belounungsbeschreiwung",
"reward_value_cents": "Belounungswäert (Cent)",
"points_configuration": "Punktekonfiguratioun",
"points_per_eur": "Punkten pro ausgegoenen EUR",
"eur_equals_points": "1 EUR = {points} Punkt(en)",
"welcome_bonus_points": "Wëllkommensbonuspunkten",
"welcome_bonus_help": "Bonuspunkten bei der Umeldung",
"minimum_redemption_points": "Mindest-Aléisungspunkten",
"minimum_purchase_cents": "Mindest-Akaf (Cent)",
"minimum_purchase_help": "Mindestakafsbetrag fir Punkten ze sammelen (0 = kee Minimum)",
"points_expiration_days": "Punktenoflaaf (Deeg)",
"points_expiration_help": "Deeg vun Inaktivitéit bis zum Punktenoflaaf (0 = ni)",
"redemption_rewards": "Aléisungsbelounungen",
"add_reward": "Belounung derbäisetzen",
"no_rewards_configured": "Keng Belounungen konfiguréiert. Setzt eng Belounung derbäi fir datt Clienten Punkten aléise kënnen.",
"reward_name": "Belounungsnumm",
"points_required": "Néideg Punkten",
"description": "Beschreiwung",
"anti_fraud_settings": "Betrugsschutz-Astellungen",
"cooldown_minutes": "Waardezäit (Minutten)",
"cooldown_help": "Zäit tëschent Stempelen vun der selwechter Kaart",
"max_daily_stamps": "Max. Stempelen pro Dag",
"max_daily_stamps_help": "Maximal Stempelen pro Kaart pro Dag",
"require_staff_pin": "Personal-PIN verlaangen",
"branding": "Branding",
"card_name": "Kaartnumm",
"primary_color": "Haaptfaarf",
"secondary_color": "Secondärfaarf",
"logo_url": "Logo-URL",
"logo_url_help": "Erfuerderlech fir Google Wallet-Integratioun. Muss eng ëffentlech zougänglech Bild-URL sinn (PNG oder JPG).",
"hero_image_url": "Hannergrondbild-URL",
"terms_privacy": "AGB & Dateschutz",
"terms_cms_page": "CMS-Säiten-Slug",
"terms_cms_page_hint": "Gitt e CMS-Säiten-Slug an (z.B. agb) fir déi komplett AGB vum CMS-Modul unzeweisen",
"terms_conditions": "Allgemeng Geschäftsbedingungen (Fallback)",
"terms_fallback_hint": "Gëtt benotzt wann keen CMS-Slug gesat ass",
"privacy_policy_url": "Dateschutzrichtlinn-URL",
"program_status": "Programmstatus",
"program_active": "Programm aktiv",
"program_active_help": "Deaktivéiert kënne Clienten net sammelen oder aléisen",
"delete_program": "Programm läschen",
"create_program": "Programm erstellen",
"save_changes": "Ännerunge späicheren"
}
},
"admin": {
"programs": {
"title": "Treieprogrammer",
"create_program": "Programm erstellen",
"loading": "Treieprogrammer gi gelueden...",
"error_loading": "Feeler beim Luede vun den Treieprogrammer",
"total_programs": "Programmer insgesamt",
"active": "Aktiv",
"total_members": "Memberen insgesamt",
"transactions_30d": "Transaktiounen (30D)",
"search_placeholder": "No Händlernumm sichen...",
"all_status": "All Status",
"table_merchant": "Händler",
"table_program_type": "Programmtyp",
"table_members": "Memberen",
"table_points_issued": "Punkten vergi",
"table_status": "Status",
"table_created": "Erstellt",
"table_actions": "Aktiounen",
"no_programs": "Keng Treieprogrammer fonnt",
"adjust_filters": "Probéiert Är Sich oder Filter unzepassen",
"no_merchants_yet": "Nach kee Händler huet en Treieprogramm erstellt",
"x_active": "({count} aktiv)",
"x_redeemed": "{count} agelées",
"pt_per_eur": "Pkt/EUR",
"delete_title": "Treieprogramm läschen",
"delete_message": "Treieprogramm fir \"{name}\" läschen? All verbonnen Daten (Kaarten, Transaktiounen, Belounungen) ginn dauerhaft geläscht. Dëst kann net réckgängeg gemaach ginn.",
"delete_confirm": "Programm läschen",
"create_title": "Treieprogramm erstellen",
"create_description": "Wielt en Händler fir en Treieprogramm ze erstellen.",
"search_merchant": "Händler sichen",
"type_merchant_name": "Händlernumm aginn...",
"no_merchants_found": "Keen Händler fonnt",
"existing_program_warning": "Dësen Händler huet schonn en Treieprogramm.",
"view_edit_existing": "Bestehend Programm kucken / beaarbechten"
},
"merchant_detail": {
"title": "Händler-Treiedetailer",
"loading": "Treiedetailer gi gelueden...",
"error_loading": "Feeler beim Luede vun der Händlertreie",
"program_active": "Treieprogramm aktiv",
"no_program_subtitle": "Keen Treieprogramm",
"quick_actions": "Schnellaktiounen",
"edit_program": "Programm beaarbechten",
"admin_policy": "Admin-Richtlinn",
"view_merchant": "Händler kucken",
"total_members": "Memberen insgesamt",
"active_30d": "Aktiv (30D)",
"points_issued_30d": "Punkten vergi (30D)",
"points_redeemed_30d": "Punkten agelées (30D)",
"no_program": "Keen Treieprogramm",
"no_program_desc": "Dësen Händler huet nach keen Treieprogramm ageriicht.",
"create_program": "Programm erstellen",
"delete_title": "Treieprogramm läschen",
"delete_message": "D'Treieprogramm an all verbonnen Daten ginn dauerhaft geläscht. Dëst kann net réckgängeg gemaach ginn.",
"delete_confirm": "Programm läschen",
"location_breakdown": "Opschlësselung no Standuert",
"table_location": "Standuert",
"table_enrolled": "Ageschriwwen",
"table_points_earned": "Punkten verdéngt",
"table_points_redeemed": "Punkten agelées",
"table_transactions_30d": "Transaktiounen (30D)",
"admin_policy_settings": "Admin-Richtlinn-Astellungen",
"staff_pin_policy": "Personal-PIN-Richtlinn",
"self_enrollment": "Selbstumeldung",
"cross_location_redemption": "Standuertiwergreifend Aléisung",
"allowed": "Erlaabt",
"disabled": "Deaktivéiert",
"modify_policy": "Admin-Richtlinn änneren",
"view_cards": "Kaarten kucken",
"view_transactions": "Transaktioune kucken",
"view_pins": "PINen kucken"
},
"merchant_cards": {
"title": "Händlerkaarten",
"subtitle": "Treiekaarten fir dësen Händler kucken",
"loading": "Kaarte ginn gelueden...",
"error_loading": "Feeler beim Lueden"
},
"merchant_card_detail": {
"title": "Kaartendetail",
"error_loading": "Feeler beim Lueden",
"loading": "Kaartendetailer ginn gelueden..."
},
"merchant_transactions": {
"title": "Händler-Transaktionen",
"subtitle": "All Transaktioune fir dësen Händler",
"loading": "Transaktioune ginn gelueden...",
"error_loading": "Feeler beim Lueden"
},
"merchant_pins": {
"title": "Händler-PINen",
"subtitle": "PINen fir dësen Händler kucken (nëmmen liesen)",
"loading": "PINe ginn gelueden...",
"error_loading": "Feeler beim Lueden"
},
"merchant_settings": {
"title": "Händler-Treieastelllungen",
"loading": "Astellunge gi gelueden...",
"error_loading": "Feeler beim Luede vun den Astellungen",
"admin_controlled": "Admin-kontrolléiert Astellungen fir d'Treieprogramm vun dësem Händler",
"staff_pin_policy": "Personal-PIN-Richtlinn",
"staff_pin_description": "Bestëmmt ob Mataarbechter e PIN aginn mussen fir Treietransaktiounen ze veraarbechten.",
"required": "Erfuerderlech",
"required_desc": "Personal muss säin PIN bei all Transaktioun aginn. Recommandéiert fir d'Sécherheet.",
"optional": "Fakultativ",
"optional_desc": "Geschäfter kënne wielen ob PINe verlaangt ginn.",
"pin_disabled": "Deaktivéiert",
"pin_disabled_desc": "Personal-PINe ginn net benotzt. All Mataarbechter kann Transaktiounen veraarbechten.",
"pin_lockout_settings": "PIN-Sparrastellungen",
"max_failed_attempts": "Max. Fehlversich",
"max_failed_attempts_help": "Unzuel vu falschen Versich virun der Spär (3-10)",
"lockout_duration": "Spärauer (Minutten)",
"lockout_duration_help": "Wéi laang d'Spär no Fehlversich dauert (5-120 Minutten)",
"enrollment_settings": "Umeldungsastellungen",
"allow_self_enrollment": "Selbstumeldung erlaben",
"self_enrollment_desc": "Clienten kënne sech per QR-Code ouni Personal umellen",
"transaction_settings": "Transaktiouns-Astellungen",
"allow_cross_location": "Standuertiwergreifend Aléisung erlaben",
"cross_location_desc": "Clienten kënne Punkten an all Standuerter vum Händler aléisen",
"allow_void": "Stornéierungen erlaben",
"void_desc": "Personal kann Punkten/Stempelen bei Réckgaben stornéieren",
"save_settings": "Astellunge späicheren"
},
"analytics": {
"title": "Treie-Analytik",
"subtitle": "Plattformwäit Treieprogramm-Statistiken",
"loading": "Analytik gëtt gelueden...",
"error_loading": "Feeler beim Luede vun der Analytik",
"filter_by_merchant": "No Händler filtréieren",
"search_merchants_placeholder": "Händler no Numm sichen...",
"showing_stats_for": "Statistike fir:",
"wallet_status": "Wallet-Integratiounsstatus",
"google_wallet": "Google Wallet",
"apple_wallet": "Apple Wallet",
"connected": "Verbonnen",
"error": "Feeler",
"not_configured": "Net konfiguréiert",
"issuer_id": "Aussteller-ID",
"project": "Projet",
"wallet_objects": "Wallet-Objeten",
"loyalty_classes": "Treieklassen",
"pass_type_id": "Pass-Typ-ID",
"team_id": "Team-ID",
"active_passes": "Aktiv Päss",
"quick_actions": "Schnellaktiounen",
"view_all_programs": "All Programmer kucken",
"manage_merchants": "Händler verwalten"
},
"program_edit": {
"title": "Programmkonfiguratioun",
"loading": "Konfiguratioun gëtt gelueden...",
"error_loading": "Feeler beim Luede vun der Programmkonfiguratioun",
"create_subtitle": "Treieprogramm fir dësen Händler erstellen",
"edit_subtitle": "Programmkonfiguratioun beaarbechten",
"delete_title": "Treieprogramm läschen",
"delete_message": "D'Treieprogramm an all verbonnen Daten (Kaarten, Transaktiounen, Belounungen) ginn dauerhaft geläscht. Dëst kann net réckgängeg gemaach ginn.",
"delete_confirm": "Programm läschen"
}
},
"merchant": {
"program": {
"title": "Treieprogramm",
"subtitle": "Är Treieprogramm-Konfiguratioun.",
"edit_program": "Programm beaarbechten",
"no_program": "Keen Treieprogramm",
"no_program_desc": "Ärt Treieprogramm gouf nach net ageriicht. Erstellt eent fir Är Clienten ze belounegen.",
"create_program": "Programm erstellen"
},
"program_edit": {
"title": "Treie-Astellungen",
"page_title": "Treieprogramm-Astellungen",
"subtitle": "Konfiguréiert Ärt Treieprogramm",
"loading": "Astellunge gi gelueden...",
"error_loading": "Feeler beim Luede vun den Astellungen",
"delete_title": "Treieprogramm läschen",
"delete_message": "Ärt Treieprogramm an all verbonnen Daten (Kaarten, Transaktiounen, Belounungen) ginn dauerhaft geläscht. Dëst kann net réckgängeg gemaach ginn.",
"delete_confirm": "Programm läschen"
},
"cards": {
"title": "Clientskaarten",
"subtitle": "Treieprogramm-Memberen iwwer all Standuerter verwalten",
"error_loading": "Feeler beim Lueden",
"loading": "Kaarte ginn gelueden..."
},
"card_detail": {
"title": "Kaartendetail",
"card_label": "Kaart",
"error_loading": "Feeler beim Lueden",
"loading": "Kaartendetailer ginn gelueden..."
},
"transactions": {
"title": "Transaktionen",
"subtitle": "All Transaktioune vun all Standuerter kucken",
"error_loading": "Feeler beim Lueden",
"loading": "Transaktioune ginn gelueden..."
},
"pins": {
"title": "Mataarbechter-PINen",
"subtitle": "PINen fir all Standuerter verwalten",
"error_loading": "Feeler beim Lueden",
"loading": "PINe ginn gelueden..."
},
"settings": {
"title": "Treieprogramm-Astellungen",
"subtitle": "Treieprogramm-Astellungen kucken",
"admin_controlled": "Dës Astellungen ginn vum Plattformadministrateur geréiert",
"error_loading": "Feeler beim Lueden",
"loading": "Astellunge ginn gelueden...",
"lockout_attempts": "Spärversich",
"lockout_minutes": "Spärdauer (Min)",
"permissions": "Umeldung & Berechtigungen",
"pin_policy": "PIN-Richtlinn",
"staff_pin_policy": "Mataarbechter-PIN-Richtlinn",
"self_enrollment": "Selwer-Umeldung",
"cross_location": "Standuert-iwwergräifend Aléisung",
"void_transactions": "Stornéierungen erlaben",
"enabled": "Aktivéiert",
"disabled": "Deaktivéiert",
"required": "Obligatoresch",
"optional": "Optional"
},
"analytics": {
"title": "Treie-Analytik",
"subtitle": "Treieprogramm-Statistiken fir all Är Geschäfter",
"loading": "Analytik gëtt gelueden...",
"error_loading": "Feeler beim Luede vun der Analytik",
"no_program": "Keen Treieprogramm",
"no_program_desc": "Riicht en Treieprogramm an fir hei Analytik ze gesinn.",
"create_program": "Programm erstellen",
"quick_actions": "Schnellaktiounen",
"view_program": "Programm kucken",
"edit_program": "Programm beaarbechten"
}
},
"store": {
"terminal": {
"title": "Treie-Terminal",
"subtitle": "Treietransaktiounen veraarbechten",
"members": "Memberen",
"analytics": "Analytik",
"loading": "Treie-Terminal gëtt gelueden...",
"error_loading": "Feeler beim Luede vum Terminal",
"not_setup": "Treieprogramm net ageriicht",
"not_setup_desc": "Ären Händler huet nach keen Treieprogramm konfiguréiert.",
"setup_program": "Treieprogramm ariichten",
"contact_admin": "Kontaktéiert Ären Administrateur fir d'Ariichtung ofzeschléissen.",
"find_customer": "Client fannen",
"search_placeholder": "E-Mail, Telefon oder Kaartnummer...",
"looking_up": "Sich leeft...",
"look_up_customer": "Client sichen",
"enroll_new_customer": "Neie Client umellen",
"customer_found": "Client fonnt",
"points_balance": "Punktestand",
"stamps": "Stempelen",
"x_more_for_reward": "Nach {count} fir d'Belounung",
"ready_to_redeem": "Prett fir anzeléisen!",
"add_stamp": "Stempel derbäisetzen",
"current": "Aktuell:",
"cooldown_active": "Waardezäit aktiv",
"redeem_stamps": "Stempelen aléisen",
"not_enough_stamps": "Nach net genuch Stempelen",
"earn_points": "Punkten sammelen",
"purchase_amount": "Akafsbetrag",
"points_to_award": "Punkten ze verginn:",
"award_points": "Punkten verginn",
"redeem_reward": "Belounung aléisen",
"select_reward": "Belounung wielen",
"select_reward_placeholder": "Belounung wielen...",
"points_after": "Punkten duerno:",
"search_to_process": "Sicht e Client fir eng Transaktioun ze veraarbechten",
"recent_transactions": "Rezent Transaktiounen un dësem Standuert",
"col_time": "Zäit",
"col_customer": "Client",
"col_type": "Typ",
"col_points": "Punkten",
"col_notes": "Notizen",
"no_recent_transactions": "Keng rezent Transaktiounen",
"enter_staff_pin": "Personal-PIN aginn",
"pin_authorize": "Gitt Äre Personal-PIN an fir dës Transaktioun ze autoriséieren.",
"clear": "Läschen",
"processing": "Veraarbechtung...",
"customer_not_found": "Client net fonnt. Dir kënnt hien als neit Member umellen.",
"error_lookup": "Feeler bei der Clientesich: {message}",
"transaction_failed": "Transaktioun feelgeschloen: {message}",
"stamp_added": "Stempel derbäigesat!",
"stamps_redeemed": "Stempelen agelées! Belounung kritt.",
"x_points_awarded": "{points} Punkten vergi!",
"reward_redeemed": "Belounung agelées: {name}",
"card_label": "Kaart",
"confirm": "Bestätegen",
"pin_authorize_text": "Gitt Ären Mataarbechter-PIN an fir dës Transaktioun ze autorisieren",
"free_item": "Gratis Artikel",
"reward_label": "Belounung",
"search_empty_state": "Sicht e Client fir unzefänken"
},
"cards": {
"title": "Treie-Memberen",
"subtitle": "Memberen vun Ärem Treieprogramm kucken a verwalten",
"enroll_new": "Umellen",
"loading": "Membere gi gelueden...",
"error_loading": "Feeler beim Luede vun de Memberen",
"total_members": "Memberen insgesamt",
"active_30d": "Aktiv (30D)",
"new_this_month": "Nei dëse Mount",
"total_points_balance": "Gesamtpunktestand",
"search_placeholder": "No Numm, E-Mail, Telefon oder Kaart sichen...",
"all_status": "All Status",
"col_member": "Member",
"col_card_number": "Kaartnummer",
"col_points_balance": "Punktestand",
"col_last_activity": "Lescht Aktivitéit",
"col_status": "Status",
"col_actions": "Aktiounen",
"no_members": "Keng Membere fonnt",
"adjust_search": "Probéiert Är Sich unzepassen",
"enroll_first": "Mellt Ären éischte Client un"
},
"card_detail": {
"title": "Memberdetailer",
"loading": "Memberdetailer gi gelueden...",
"error_loading": "Feeler beim Luede vum Member",
"points_balance": "Punktestand",
"total_earned": "Insgesamt verdéngt",
"total_redeemed": "Insgesamt agelées",
"member_since": "Member zënter",
"customer_information": "Clienteninformatioun",
"name": "Numm",
"email": "E-Mail",
"phone": "Telefon",
"birthday": "Gebuertsdag",
"card_details": "Kaartdetailer",
"card_number": "Kaartnummer",
"status": "Status",
"last_activity": "Lescht Aktivitéit",
"enrolled_at": "Ugemellt um",
"transaction_history": "Transaktiounsverlaf",
"col_date": "Datum",
"col_type": "Typ",
"col_points": "Punkten",
"col_location": "Standuert",
"col_notes": "Notizen",
"no_transactions": "Nach keng Transaktiounen",
"card_label": "Kaart"
},
"enroll": {
"title": "Client umellen",
"page_title": "Neie Client umellen",
"subtitle": "Neit Member bei Ärem Treieprogramm derbäisetzen",
"loading": "Lueden...",
"error_loading": "Feeler beim Luede vum Umeldungsformular",
"customer_information": "Clienteninformatioun",
"first_name": "Virnumm",
"last_name": "Nonumm",
"email": "E-Mail",
"phone": "Telefon",
"birthday": "Gebuertsdag",
"birthday_help": "Fir Gebuertsdagsbelounungen (fakultativ)",
"communication_preferences": "Kommunikatiounsastellungen",
"send_emails": "Promotiounsmaile schécken",
"send_sms": "Promotiounssms schécken",
"welcome_bonus": "Wëllkommensbonus",
"welcome_bonus_desc": "Client kritt {points} Bonuspunkten!",
"enroll_customer": "Client umellen",
"enrolling": "Umeldung...",
"customer_enrolled": "Client ugemellt!",
"starting_balance": "Ufankssolde:",
"x_points": "{count} Punkten",
"back_to_terminal": "Zréck zum Terminal",
"enroll_another": "Weider umellen",
"enrollment_failed": "Umeldung feelgeschloen: {message}",
"bonus_points": "Bonuspunkten",
"card_number_label": "Kaartennummer",
"points": "Punkten"
},
"analytics": {
"title": "Treie-Analytik",
"subtitle": "Verfollegt d'Performance vun Ärem Treieprogramm",
"loading": "Analytik gëtt gelueden...",
"error_loading": "Feeler beim Luede vun der Analytik",
"quick_actions": "Schnellaktiounen",
"open_terminal": "Terminal opmaachen",
"view_members": "Membere kucken",
"view_program": "Programm kucken"
},
"program": {
"title": "Treieprogramm",
"subtitle": "Är Treieprogramm-Konfiguratioun",
"edit_program": "Programm beaarbechten",
"loading": "Programm gëtt gelueden...",
"error_loading": "Feeler beim Luede vum Programm",
"no_program": "Keen Treieprogramm",
"no_program_desc": "Ären Händler huet nach keen Treieprogramm konfiguréiert.",
"create_program": "Programm erstellen",
"contact_admin": "Kontaktéiert Ären Administrateur fir en Treieprogramm anzerichten."
},
"pins": {
"title": "Mataarbechter-PINen",
"subtitle": "Mataarbechter-PINen fir dëse Standuert verwalten",
"loading": "PINe ginn gelueden...",
"error_loading": "Feeler beim Lueden vun den PINen"
},
"settings": {
"title": "Treie-Astellungen",
"page_title": "Treieprogramm-Astellungen",
"subtitle": "Konfiguréiert Ärt Treieprogramm",
"back_to_program": "Zréck zum Programm",
"loading": "Astellunge gi gelueden...",
"error_loading": "Feeler beim Luede vun den Astellungen",
"access_restricted": "Zougang ageschränkt",
"owner_only": "Nëmmen den Geschäftseigentümer kann d'Treieprogramm-Astellungen verwalten.",
"delete_title": "Treieprogramm läschen",
"delete_message": "D'Treieprogramm an all verbonnen Daten (Kaarten, Transaktiounen, Belounungen) ginn dauerhaft geläscht. Dëst kann net réckgängeg gemaach ginn.",
"delete_confirm": "Programm läschen",
"program_created": "Programm erfollegräich erstellt",
"program_updated": "Programm erfollegräich aktualiséiert",
"program_deleted": "Treieprogramm geläscht",
"save_failed": "Späichere feelgeschloen: {message}",
"delete_failed": "Läsche feelgeschloen: {message}",
"access_restricted_desc": "Nëmmen den Besëtzer kann d'Astellungen änneren",
"delete_program_confirm": "Läschen",
"delete_program_desc": "Dëst läscht d'Treieprogramm an all verbonnen Daten permanent",
"delete_program_title": "Treieprogramm läschen?"
}
},
"storefront": {
"dashboard": {
"back_to_account": "Zréck zum Kont",
"my_loyalty": "Meng Treie",
"join_title": "Gitt Member vun eisem Belounungsprogramm!",
"join_subtitle": "Sammelt Punkten bei all Akaf an léist se géint Belounungen an.",
"join_now": "Elo bäitrieden",
"points_balance": "Punktestand",
"card_number": "Kaartnummer",
"show_card": "Kaart weisen",
"total_earned": "Insgesamt verdéngt",
"total_redeemed": "Insgesamt agelées",
"available_rewards": "Verfügbar Belounungen",
"no_rewards_yet": "Nach keng Belounungen verfügbar",
"ready_to_redeem": "Prett fir anzeléisen",
"x_more_to_go": "Nach {count}",
"redeem_hint": "Weist Är Kaart dem Personal fir Belounungen am Geschäft anzeléisen.",
"recent_activity": "Rezent Aktivitéit",
"view_all": "Alles kucken",
"no_transactions": "Nach keng Transaktiounen. Maacht en Akaf fir Punkten ze sammelen!",
"earn_redeem_locations": "Sammel- & Aléisungs-Standuerter",
"your_loyalty_card": "Är Treiekaart",
"show_to_staff": "Weist dëst dem Personal beim Akaf oder beim Aléise vu Belounungen."
},
"history": {
"back_to_loyalty": "Zréck zur Treie",
"title": "Transaktiounsverlaf",
"subtitle": "All Är Treiepunkttransaktiounen kucken",
"current_balance": "Aktuell Solde",
"total_earned": "Insgesamt verdéngt",
"total_redeemed": "Insgesamt agelées",
"no_transactions": "Nach keng Transaktiounen",
"balance": "Solde:",
"previous": "Zréck",
"next": "Weider",
"page_x_of_y": "Säit {page} vun {pages}"
}
},
"toasts": {
"program_activated": "Programm erfollegräich aktivéiert",
"program_deactivated": "Programm erfollegräich deaktivéiert",
"activate_failed": "Programm konnt net aktivéiert ginn: {message}",
"deactivate_failed": "Programm konnt net deaktivéiert ginn: {message}",
"program_deleted": "Programm erfollegräich geläscht",
"delete_failed": "Programm konnt net geläscht ginn: {message}",
"program_created": "Programm erfollegräich erstellt",
"program_updated": "Programm erfollegräich aktualiséiert",
"loyalty_program_created": "Treieprogramm erstellt",
"loyalty_program_deleted": "Treieprogramm geläscht",
"settings_saved": "Astellungen erfollegräich gespäichert",
"save_failed": "Späichere feelgeschloen: {message}",
"settings_save_failed": "Astellunge konnten net gespäichert ginn: {message}",
"create_failed": "Programm konnt net erstellt ginn: {message}",
"logo_required": "Logo-URL ass erfuerderlech fir d'Wallet-Integratioun.",
"pin_created": "PIN erfollegräich erstallt",
"pin_updated": "PIN erfollegräich aktualiséiert",
"pin_deleted": "PIN erfollegräich geläscht",
"pin_unlocked": "PIN erfollegräich entspäert",
"pin_create_error": "PIN konnt net erstallt ginn",
"pin_update_error": "PIN konnt net aktualiséiert ginn",
"pin_delete_error": "PIN konnt net geläscht ginn",
"pin_unlock_error": "PIN konnt net entspäert ginn"
},
"errors": {
"card_not_found": "Kaart net fonnt"
}
}