Add multilingual audit CI pipeline + extract mandelblog_content_guard
This commit is contained in:
146
mandelblog_content_guard/validators/rules/cta.py
Normal file
146
mandelblog_content_guard/validators/rules/cta.py
Normal file
@@ -0,0 +1,146 @@
|
||||
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)]
|
||||
Reference in New Issue
Block a user