Files
office_translator/frontend/src/lib/i18n/messages/de/pricing.json
sepehr fa637abff0
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 2m49s
perf+security: fix build, secure downloads, dedupe translations, refactor i18n
Frontend:
- Fix Framer Motion / motion-dom build error by pinning framer-motion to
  11.18.2 (compatible with React 19 and Next.js 16).
- Add cross-env and build:local script to bypass standalone symlink errors
  on Windows without Developer Mode.
- Allow NEXT_OUTPUT=default to disable standalone output for local builds.
- Refactor i18n: split 14,177-line src/lib/i18n.tsx into per-locale,
  per-namespace JSON files under src/lib/i18n/messages/.
- Load English synchronously; other locales loaded on demand via dynamic
  imports (reduces initial bundle, improves maintainability).
- Remove unused next-intl message files src/messages/en.json and fr.json.

Backend:
- Remove insecure legacy /api/v1/download/{filename} and /api/v1/cleanup/{filename}
  endpoints. The job-based /api/v1/download/{job_id} already enforces ownership.
- Deduplicate texts in TranslationService.translate_batch before sending them
  to the provider, reducing API calls for repeated strings.
- Pin httpx to <0.28 to fix TestClient incompatibility with starlette 0.35.1.
- Add pytest-cov and ruff dev dependencies/config.

DevOps:
- Remove hardcoded Grafana password from docker-compose.yml and
  docker-compose.monitoring.yml; use GRAFANA_PASSWORD env var.
- Change default TRANSLATION_SERVICE from ollama to google in
  docker-compose.yml (Ollama is an optional profile).
- Add GRAFANA_PASSWORD to .env.example.
- Add .coverage and frontend/pnpm-workspace.yaml to .gitignore.

Tests:
- Update API versioning tests for removed legacy endpoints.
- Add tests/test_translation_service.py for deduplication behavior.

Verified:
- pnpm run build:local passes.
- uv run pytest tests/test_providers/* tests/test_translation_service.py
  tests/test_story_3_5_api_versioning.py tests/test_download_endpoint.py
  tests/test_translators/test_excel_translator.py: provider/translator tests
  pass; one pre-existing French error-message test still fails (message is
  returned in English, unrelated to this change).
2026-06-14 16:44:18 +02:00

152 lines
9.5 KiB
JSON

{
"pricing.nav.back": "Zurück",
"pricing.nav.home": "Startseite",
"pricing.nav.mySubscription": "Mein Abonnement",
"pricing.header.badge": "KI-Modelle aktualisiert — März 2026",
"pricing.header.title": "Der passende Plan für jedes Bedürfnis",
"pricing.header.subtitle": "Übersetzen Sie Ihre Word-, Excel- und PowerPoint-Dokumente unter Beibehaltung des Original-Layouts. Ohne API-Schlüssel.",
"pricing.billing.monthly": "Monatlich",
"pricing.billing.yearly": "Jährlich",
"pricing.plans.free.name": "Kostenlos",
"pricing.plans.starter.name": "Starter",
"pricing.plans.pro.name": "Pro",
"pricing.plans.business.name": "Business",
"pricing.plans.enterprise.name": "Enterprise",
"pricing.plans.free.description": "Perfekt zum Kennenlernen der App",
"pricing.plans.starter.description": "Für Einzelpersonen und kleine Projekte",
"pricing.plans.pro.description": "Für Professionals und wachsende Teams",
"pricing.plans.business.description": "Für Teams und Organisationen",
"pricing.plans.enterprise.description": "Maßgeschneiderte Lösungen für große Organisationen",
"pricing.plans.pro.highlight": "Am beliebtesten",
"pricing.plans.pro.badge": "BELIEBT",
"pricing.plans.enterprise.badge": "AUF ANFRAGE",
"pricing.plans.free.feat1": "5 Dokumente / Monat",
"pricing.plans.free.feat2": "Bis zu 15 Seiten pro Dokument",
"pricing.plans.free.feat3": "Google Übersetzer inklusive",
"pricing.plans.free.feat4": "Alle Sprachen (130+)",
"pricing.plans.free.feat5": "Community-Support",
"pricing.plans.starter.feat1": "50 Dokumente / Monat",
"pricing.plans.starter.feat2": "Bis zu 50 Seiten pro Dokument",
"pricing.plans.starter.feat3": "Google Übersetzer + DeepL",
"pricing.plans.starter.feat4": "Dateien bis zu 10 MB",
"pricing.plans.starter.feat5": "E-Mail-Support",
"pricing.plans.starter.feat6": "30 Tage Verlauf",
"pricing.plans.pro.feat1": "200 Dokumente / Monat",
"pricing.plans.pro.feat2": "Bis zu 200 Seiten pro Dokument",
"pricing.plans.pro.feat3": "KI-Basisübersetzung",
"pricing.plans.pro.feat4": "Google Übersetzer + DeepL",
"pricing.plans.pro.feat5": "Dateien bis zu 25 MB",
"pricing.plans.pro.feat6": "Benutzerdefinierte Glossare",
"pricing.plans.pro.feat7": "Prioritäts-Support",
"pricing.plans.pro.feat8": "90 Tage Verlauf",
"pricing.plans.business.feat1": "1.000 Dokumente / Monat",
"pricing.plans.business.feat2": "Bis zu 500 Seiten pro Dokument",
"pricing.plans.business.feat3": "Basis- + Premium-KI (Claude Haiku)",
"pricing.plans.business.feat4": "Alle Übersetzungsanbieter",
"pricing.plans.business.feat5": "Dateien bis zu 50 MB",
"pricing.plans.business.feat6": "API-Zugang (10.000 Aufrufe/Monat)",
"pricing.plans.business.feat7": "Benachrichtigungs-Webhooks",
"pricing.plans.business.feat8": "Dedizierter Support",
"pricing.plans.business.feat9": "1 Jahr Verlauf",
"pricing.plans.business.feat10": "Erweiterte Analysen",
"pricing.plans.enterprise.feat1": "Unbegrenzte Dokumente",
"pricing.plans.enterprise.feat2": "Alle KI-Modelle (GPT-5, Claude Opus 4.6…)",
"pricing.plans.enterprise.feat3": "On-Premise oder dedizierte Cloud",
"pricing.plans.enterprise.feat4": "99,9 % SLA garantiert",
"pricing.plans.enterprise.feat5": "24/7 dedizierter Support",
"pricing.plans.enterprise.feat6": "White-Label",
"pricing.plans.enterprise.feat7": "Unbegrenzte Teams",
"pricing.plans.enterprise.feat8": "Maßgeschneiderte Integrationen",
"pricing.card.onRequest": "Auf Anfrage",
"pricing.card.free": "Kostenlos",
"pricing.card.perMonth": "/Monat",
"pricing.card.billedYearly": "{price} € / Jahr abgerechnet",
"pricing.card.documents": "Dokumente",
"pricing.card.pagesMax": "Max. Seiten",
"pricing.card.aiTranslation": "KI-Übersetzung",
"pricing.card.unlimited": "Unbegrenzt",
"pricing.card.perMonthStat": "/ Monat",
"pricing.card.perDoc": "S. / Dok.",
"pricing.card.aiEssential": "Basis",
"pricing.card.aiEssentialPremium": "Basis + Premium",
"pricing.card.aiCustom": "Maßgeschneidert",
"pricing.card.myPlan": "Mein Plan",
"pricing.card.managePlan": "Plan verwalten",
"pricing.card.startFree": "Kostenlos starten",
"pricing.card.contactUs": "Kontaktieren Sie uns",
"pricing.card.choosePlan": "Diesen Plan wählen",
"pricing.card.processing": "Wird verarbeitet…",
"pricing.comparison.title": "Detaillierter Vergleich",
"pricing.comparison.subtitle": "Alles, was in jedem Plan enthalten ist",
"pricing.comparison.feature": "Funktion",
"pricing.comparison.docsPerMonth": "Dokumente / Monat",
"pricing.comparison.pagesMaxPerDoc": "Max. Seiten / Dokument",
"pricing.comparison.maxFileSize": "Max. Dateigröße",
"pricing.comparison.googleTranslation": "Google Übersetzer",
"pricing.comparison.deepl": "DeepL",
"pricing.comparison.aiEssential": "KI-Basisübersetzung",
"pricing.comparison.aiPremium": "KI-Premiumübersetzung",
"pricing.comparison.apiAccess": "API-Zugang",
"pricing.comparison.priorityProcessing": "Prioritätsverarbeitung",
"pricing.comparison.support": "Support",
"pricing.comparison.support.community": "Community",
"pricing.comparison.support.email": "E-Mail",
"pricing.comparison.support.priority": "Priorität",
"pricing.comparison.support.dedicated": "Dediziert",
"pricing.comparison.mb": "MB",
"pricing.credits.title": "Zusätzliche Guthaben",
"pricing.credits.subtitle": "Mehr benötigt? Guthaben einzeln kaufen, ohne Abo.",
"pricing.credits.perPage": "1 Guthaben = 1 übersetzte Seite.",
"pricing.credits.bestValue": "Bestes Preis-Leistungs-Verhältnis",
"pricing.credits.unit": "Guthaben",
"pricing.credits.centsPerCredit": "ct / Guthaben",
"pricing.credits.buy": "Kaufen",
"pricing.trust.encryption.title": "Ende-zu-Ende-Verschlüsselung",
"pricing.trust.encryption.sub": "TLS 1.3 + AES-256 im Ruhezustand",
"pricing.trust.languages.title": "130+ Sprachen",
"pricing.trust.languages.sub": "Einschließlich Arabisch, Persisch, Hebräisch (RTL)",
"pricing.trust.parallel.title": "Parallele Verarbeitung",
"pricing.trust.parallel.sub": "Ultraschnelle Multi-Thread-KI",
"pricing.trust.availability.title": "24/7 verfügbar",
"pricing.trust.availability.sub": "99,9 % garantierte Verfügbarkeit",
"pricing.aiModels.title": "Unsere KI-Modelle — März 2026",
"pricing.aiModels.essential.title": "KI-Basisübersetzung",
"pricing.aiModels.essential.plan": "Pro-Plan",
"pricing.aiModels.essential.descPrefix": "Basierend auf",
"pricing.aiModels.essential.descSuffix": "— dem kosteneffizientesten KI-Modell 2026. Qualität vergleichbar mit Frontier-Modellen zu einem Bruchteil der Kosten.",
"pricing.aiModels.essential.modelName": "unser Essentielles KI-Modell",
"pricing.aiModels.essential.context": "163K Token Kontext",
"pricing.aiModels.essential.value": "Hervorragendes Preis-Leistungs-Verhältnis",
"pricing.aiModels.premium.title": "KI-Premiumübersetzung",
"pricing.aiModels.premium.plan": "Business-Plan",
"pricing.aiModels.premium.descPrefix": "Basierend auf",
"pricing.aiModels.premium.descSuffix": "von Anthropic — präzise bei juristischen, medizinischen und komplexen technischen Dokumenten.",
"pricing.aiModels.premium.context": "200K Token Kontext",
"pricing.aiModels.premium.precision": "Höchste Genauigkeit",
"pricing.faq.title": "Häufig gestellte Fragen",
"pricing.faq.q1": "Kann ich jederzeit den Plan wechseln?",
"pricing.faq.a1": "Ja. Ein Upgrade erfolgt sofort und anteilig. Ein Downgrade wird am Ende des aktuellen Zeitraums wirksam.",
"pricing.faq.q2": "Was ist die «KI-Basisübersetzung»?",
"pricing.faq.a2": "Unser KI-Motor versteht den Kontext Ihrer Dokumente, erhält das Layout und verarbeitet Fachbegriffe deutlich besser als klassische Übersetzungen.",
"pricing.faq.q3": "Was ist der Unterschied zwischen Basis- und Premium-KI?",
"pricing.faq.a3": "Die Basis-KI nutzt ein optimiertes Modell (hervorragendes Preis-Leistungs-Verhältnis). Die Premium-KI verwendet Claude 3.5 Haiku von Anthropic und ist genauer bei juristischen, medizinischen und komplexen technischen Dokumenten.",
"pricing.faq.q4": "Werden meine Dokumente nach der Übersetzung gespeichert?",
"pricing.faq.a4": "Übersetzte Dateien sind je nach Plan verfügbar (30 Tage Starter, 90 Tage Pro, 1 Jahr Business). Sie sind im Ruhezustand und bei der Übertragung verschlüsselt.",
"pricing.faq.q5": "Was passiert, wenn ich mein monatliches Kontingent überschreite?",
"pricing.faq.a5": "Sie können einzelne Guthaben kaufen oder Ihr Abo upgraden. Sie werden bei 80 % Nutzung benachrichtigt.",
"pricing.faq.q6": "Gibt es eine kostenlose Testversion für kostenpflichtige Pläne?",
"pricing.faq.a6": "Der Kostenlos-Plan ist dauerhaft und ohne Kreditkarte. Für Pro und Business kontaktieren Sie uns für eine 14-tägige Testphase.",
"pricing.faq.q7": "Welche Dateiformate werden unterstützt?",
"pricing.faq.a7": "Word (.docx), Excel (.xlsx/.xls), PowerPoint (.pptx) und bald PDF. Alle Pläne unterstützen dieselben Formate.",
"pricing.cta.title": "Bereit loszulegen?",
"pricing.cta.subtitle": "Starten Sie kostenlos, ohne Kreditkarte. Upgraden Sie, wenn Sie möchten.",
"pricing.cta.createAccount": "Kostenloses Konto erstellen",
"pricing.cta.login": "Anmelden",
"pricing.toast.demo": "Demo-Modus — Stripe ist noch nicht konfiguriert. In der Produktion würden Sie zur Zahlung weitergeleitet, um den Plan {planId} zu aktivieren.",
"pricing.toast.networkError": "Netzwerkfehler. Bitte versuchen Sie es erneut.",
"pricing.toast.paymentError": "Fehler beim Erstellen der Zahlung.",
"pricing.dashboard": "Dashboard",
"pricing.okSymbol": "✓",
"pricing.errSymbol": "✕"
}