Этап 1b: сайт

- Страницы обоих брендов из блоков Payload (D-029): главная, цены,
  локации, поддержка, 4 юридические, 404 и 500. Коллекции pages
  (черновики и версии) и faq с местами показа, 12 типов блоков; поля
  sites — почта и Telegram поддержки, часы работы, SEO по умолчанию.
- Карта и глобус рисуются на сервере (d3-geo), контуры во внешнем
  SVG через <use>; выбор локации синхронизирован между картой и сеткой.
- Тексты сайта и юридические черновики на 5 языках: de, fr, es —
  перевод с глоссарием; seed создаёт страницы и FAQ, только если их
  нет, SEED_CONTENT=reset пересоздаёт.
- SEO: title и описания, canonical, hreflang с x-default,
  sitemap.xml и robots.txt на каждый домен, картинки для соцсетей.
- Статическая сборка и пересборка через revalidatePath из хуков
  Payload (D-030); /svc/internal/revalidate для проверки.
- 404 — статичная страница со статусом 404 через proxy; на сайте
  только опубликованные страницы.
- Производительность: Client Hints темы Payload только в админке,
  предзагрузка 2 файлов шрифтов вместо 6; Lighthouse mobile 97–99.
- Контраст --ink-3 по WCAG AA, радиокнопки вместо div role=button.
- Документация: итоги 1b, глоссарий de/fr/es, трактовки юридических
  черновиков подтверждены, переносимые вопросы — в этапах 3e–3h.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
andreypr207andClaude Opus 5.5 committed 2026-10-22 04:53:15 +02:00
1 parent 515acfb69d
commit 20491d1ba4
134 files changed
+11232 -212

No files matched your search

+120 -1
View File
@@ -1 +1,120 @@
{}
{
"brand": {
"dedicated": {
"name": "Veilix",
"tagline": "Persönliches VPN mit dedizierter IP-Adresse. Seit 2022 am Markt."
},
"mass": {
"name": "VeilixVPN",
"tagline": "Ein VPN, das Sie nie ausschalten müssen. Seit 2022 am Markt."
}
},
"nav": {
"main": "Hauptnavigation",
"home": "Startseite",
"pricing": "Preise",
"locations": "Standorte",
"support": "Support",
"logIn": "Anmelden",
"getVpn": "VPN holen",
"menu": "Menü"
},
"footer": {
"service": "Service",
"legal": "Rechtliches",
"terms": "Nutzungs\u00ADbedingungen",
"privacy": "Datenschutz",
"refund": "Rückerstattung",
"cookies": "Cookie-Richtlinie",
"copyright": "© {year} {brand}"
},
"switch": {
"language": "Sprache",
"currency": "Währung",
"theme": "Design",
"light": "Helles Design",
"dark": "Dunkles Design",
"system": "Systemeinstellung verwenden"
},
"cabinet": {
"home": "Übersicht",
"keys": "Alle Schlüssel",
"keysShort": "Schlüssel",
"key": "Schlüssel",
"buy": "Schlüssel kaufen",
"buyShort": "Kaufen",
"billing": "Guthaben & Zahlungen",
"referral": "Empfehlungsprogramm",
"more": "Mehr",
"support": "Support",
"login": "Anmelden",
"order": "Bestellung",
"terms": "Nutzungsbedingungen",
"privacy": "Datenschutz"
},
"stub": {
"text": "Dieser Bereich folgt in den nächsten Ausbaustufen."
},
"notFound": {
"title": "Seite nicht gefunden",
"text": "Die Seite wurde möglicherweise verschoben oder hat nie existiert.",
"home": "Zur Startseite"
},
"status": {
"dedicated": {
"available": "Server verfügbar",
"on_demand": "In 24 Stunden bereit"
},
"mass": {
"available": "Inklusive",
"soon": "In Kürze"
},
"withCount": "{label} · {count}"
},
"count": {
"countries": "{count, plural, one {# Land} other {# Länder}}"
},
"pricing": {
"firstMonth": "im ersten Monat",
"thenPerMonth": "danach {price} pro Monat",
"then": "danach",
"perMonth": "pro Monat",
"perYear": "pro Jahr",
"buy": "Kaufen",
"buyIn": "Kaufen: {country}",
"locations": "Standorte",
"plans": "Tarif",
"close": "Schließen"
},
"lead": {
"name": "Name",
"email": "E-Mail",
"telegram": "Telegram",
"whatsapp": "WhatsApp",
"task": "Kurz zu Ihrem Anliegen",
"send": "Senden",
"sent": "Anfrage gesendet",
"needContact": "Bitte geben Sie eine E-Mail-Adresse, Telegram oder WhatsApp an",
"badEmail": "Bitte prüfen Sie die E-Mail-Adresse",
"consent": "Mit dem Absenden des Formulars stimmen Sie der <link>Datenschutzerklärung</link> zu."
},
"support": {
"telegram": "Telegram",
"email": "E-Mail"
},
"contact": {
"email": "Ihre E-Mail-Adresse",
"topic": "Thema",
"message": "Was ist passiert?",
"send": "Senden",
"sent": "Gesendet, wir antworten per E-Mail",
"needEmail": "Bitte geben Sie Ihre E-Mail-Adresse an, damit wir antworten können",
"needMessage": "Bitte beschreiben Sie, was passiert ist"
},
"error": {
"title": "Etwas ist schiefgelaufen",
"text": "Der Fehler ist uns bereits bekannt. Versuchen Sie in einer Minute, die Seite neu zu laden.",
"retry": "Seite neu laden",
"home": "Zur Startseite"
}
}