from __future__ import annotations import re from ...types import make_issue CTA_RULES = { "nl": ( r"^Plan ", r"^Bekijk ", r"^Vraag ", r"^Bespreek ", r"^Contact$", r"^Start ", r"^Meer ", r"^Verstuur ", r"^Neem ", ), "en": ( r"^Book ", r"^View ", r"^Schedule ", r"^Start ", r"^Talk ", r"^Discuss ", r"^Contact$", r"^Explore ", r"^Learn ", r"^Request ", r"^Send ", ), "de": ( r"^Plan", r"^Mehr", r"^Support", r"^Start", r"^Kontakt", r"^Gespr", r"^Kostenlose", r"^Anfrage", r"^Projekte", r"^Verein", r"^Besprech", r"^Anzeig", r"^Ansehen", r"^Technisch", r"^Unterst", r"^Unsere", r"^Service", r"^Dienstleistungen", r"^Erstgespräch", r"^Einführ", r"^Anpassung", r"^Ansichts", r"^Prozess", r"^Pakete", r"^Demo", r"^Alle ", r"^Ein ", r"^Webshop", ), "fr": ( r"^Planifier", r"^Voir", r"^Découvrir", r"^Demander", r"^Lancer", r"^Démarrer", r"^Contacter", r"^Contact$", r"^Parler", r"^Lancez", r"^Prendre", r"^Envoyer", r"^Afficher", ), "es": ( r"^Reservar", r"^Ver", r"^Solicitar", r"^Inicia", r"^Hablar", r"^Descubrir", r"^Contactar", r"^Planificar", r"^Programe", r"^Concertar", r"^Enviar", r"^Mostrar", r"^Comenta", ), "it": ( r"^Prenota", r"^Vedi", r"^Avvia", r"^Richiedi", r"^Contatta", r"^Contatto$", r"^Scopri", r"^Pianifica", r"^Invia", r"^Mostra", r"^Parla", r"^Parliamo", ), "pt": ( r"^Agendar", r"^Ver", r"^Iniciar", r"^Pedir", r"^Contactar", r"^Falar", r"^Explorar", r"^Marcar", r"^Solicitar", r"^Enviar", r"^Mostrar", ), "ru": ( r"^Заплан", r"^Посмотр", r"^Запуст", r"^Связ", r"^Подробнее", r"^Показать", r"^Отправ", r"^Получ", r"^Запрос", ), } CTA_FIELDS = { "cta_text", "primary_cta_text", "secondary_cta_text", "submit_button_text", } def validate_cta(locale_code: str, field_path: str, normalized: str): last_segment = field_path.split(".")[-1] if last_segment not in CTA_FIELDS: return [] if any(re.search(pattern, normalized) for pattern in CTA_RULES.get(locale_code, ())): return [] return [make_issue("cta_language_mismatch", field_path, normalized)]