feat: UI-feinschliff, scan-vorlagenerkennung, einmal-laden, DE/EN-sprachen
UI:
- Ein-/Ausklappen jetzt mit grossem +/- Icon statt kleinem Pfeil.
- "Entfernen" ist ein Papierkorb-Symbol (dashicon).
- Aktiver Tab klar gekennzeichnet (Akzent-Unterstrich + Farbe).
- 20px Abstand zwischen Tabs und Inhalt.
Funktionen:
- Scan erkennt Anbieter, fuer die es eine Vorlage gibt ("Vorlage verfuegbar"),
und "Vorlage uebernehmen" fuellt die komplette Vorlage statt nur Host/Pattern.
- Platzhalter: Checkbox "Diesen Dienst kuenftig immer laden" (Standard AN).
Abgewaehlt -> Inhalt wird nur einmal geladen, keine dauerhafte Einwilligung.
i18n:
- Sprachumschaltung: Deutsch fuer alle de_* Locales, Englisch fuer alle anderen
(plugin_locale-Filter). Vollstaendige englische Uebersetzung (126 Strings,
inkl. Vorlagentexte/Empfaenger) als gdpr-content-blocker-en_US.po/.mo.
- Helper-Skripte (extract/build) in hilfsdaten/.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
29
hilfsdaten/extract-strings.py
Normal file
29
hilfsdaten/extract-strings.py
Normal file
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Extract translatable strings (text-domain gdpr-content-blocker) from the plugin PHP."""
|
||||
import re, sys, os, glob
|
||||
|
||||
FUNCS = r"(?:esc_html__|esc_html_e|esc_attr__|esc_attr_e|esc_attr_e|__|_e|esc_attr_e)"
|
||||
# capture first single-quoted arg
|
||||
PAT = re.compile(FUNCS + r"\s*\(\s*'((?:[^'\\]|\\.)*)'\s*,\s*'gdpr-content-blocker'")
|
||||
|
||||
def unescape(s):
|
||||
return s.replace("\\'", "'").replace('\\\\', '\\')
|
||||
|
||||
base = sys.argv[1]
|
||||
seen = []
|
||||
seenset = set()
|
||||
for path in glob.glob(os.path.join(base, '**', '*.php'), recursive=True):
|
||||
with open(path, encoding='utf-8') as f:
|
||||
txt = f.read()
|
||||
for m in PAT.finditer(txt):
|
||||
s = unescape(m.group(1))
|
||||
if s not in seenset:
|
||||
seenset.add(s)
|
||||
seen.append(s)
|
||||
|
||||
out = sys.argv[2] if len(sys.argv) > 2 else 'strings.txt'
|
||||
with open(out, 'w', encoding='utf-8') as f:
|
||||
f.write(f"# {len(seen)} unique strings\n")
|
||||
for s in seen:
|
||||
f.write("MSGID\t" + s + "\n")
|
||||
print(f"{len(seen)} strings written to {out}")
|
||||
Reference in New Issue
Block a user