All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 2m49s
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).
152 lines
9.5 KiB
JSON
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": "✕"
|
|
}
|