151 lines
3.0 KiB
Python
151 lines
3.0 KiB
Python
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"^Beratung",
|
|
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"^Programar",
|
|
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)]
|