diff --git a/src/app/admin/contract-management/components/contractTemplateList.tsx b/src/app/admin/contract-management/components/contractTemplateList.tsx index a98b178..5206ac3 100644 --- a/src/app/admin/contract-management/components/contractTemplateList.tsx +++ b/src/app/admin/contract-management/components/contractTemplateList.tsx @@ -705,14 +705,10 @@ export default function ContractTemplateList({ refreshKey = 0, onEdit }: Props)
-
- Template overview -
+
{t('autofix.k66b39536')}
-

Organized by template family

-

- Jump between template families, spot the currently active versions immediately and keep language-specific revisions in one place. -

+

{t('autofix.k429d94bf')}

+

{t('autofix.k7e4ef084')}

@@ -795,9 +791,7 @@ export default function ContractTemplateList({ refreshKey = 0, onEdit }: Props) )} {activeFamily.key === 'contract' && ( -
- Contracts are grouped by type again. Language now sits in the main header area of each track as a direct selector, so you can switch faster without digging into nested cards. -
+
{t('autofix.k766a5504')}
)} {activeFamily.key === 'contract' ? ( @@ -810,9 +804,7 @@ export default function ContractTemplateList({ refreshKey = 0, onEdit }: Props) {section.meta.shortLabel}
-
- Contract type -
+
{t('autofix.kf962066f')}
{section.meta.label}

{section.meta.description}

diff --git a/src/app/admin/contract-management/page.tsx b/src/app/admin/contract-management/page.tsx index 82ab70c..2cd3302 100644 --- a/src/app/admin/contract-management/page.tsx +++ b/src/app/admin/contract-management/page.tsx @@ -88,9 +88,7 @@ export default function ContractManagementPage() {
-
- Admin workspace -
+
{t('autofix.k8351e02f')}

{t('autofix.k67cb36a4')}

@@ -98,9 +96,9 @@ export default function ContractManagementPage() {

- Grouped library - Stronger language switching - Faster edit flow + {t('autofix.k61d66984')} + {t('autofix.k74823841')} + {t('autofix.kccff045c')}
diff --git a/src/app/admin/language-management/components/AddLanguageModal.tsx b/src/app/admin/language-management/components/AddLanguageModal.tsx index 7f9a3ca..4ef9126 100644 --- a/src/app/admin/language-management/components/AddLanguageModal.tsx +++ b/src/app/admin/language-management/components/AddLanguageModal.tsx @@ -1,6 +1,7 @@ 'use client'; import { useTranslation } from '../../../i18n/useTranslation'; +import { useModalAnimation } from '../hooks/useModalAnimation'; type Props = { isOpen: boolean; @@ -26,12 +27,17 @@ export default function AddLanguageModal({ onAdd, }: Props) { const { t } = useTranslation(); + const { isRendered, isVisible } = useModalAnimation(isOpen); - if (!isOpen) return null; + if (!isRendered) return null; return ( -
-
+
+

{t('autofix.kf4e45236')}

diff --git a/src/app/admin/language-management/components/CategoryManagerModal.tsx b/src/app/admin/language-management/components/CategoryManagerModal.tsx index 4d32522..6d90bd2 100644 --- a/src/app/admin/language-management/components/CategoryManagerModal.tsx +++ b/src/app/admin/language-management/components/CategoryManagerModal.tsx @@ -2,6 +2,7 @@ import { useTranslation } from '../../../i18n/useTranslation'; import type { NamespaceCategory } from '../hooks/useNamespaceCategories'; +import { useModalAnimation } from '../hooks/useModalAnimation'; type Props = { isOpen: boolean; @@ -43,12 +44,17 @@ export default function CategoryManagerModal({ deleteCategory, }: Props) { const { t } = useTranslation(); + const { isRendered, isVisible } = useModalAnimation(isOpen); - if (!isOpen) return null; + if (!isRendered) return null; return ( -
-
+
+

{t('autofix.kef9de7f0')}

diff --git a/src/app/admin/language-management/components/DeleteLanguageModal.tsx b/src/app/admin/language-management/components/DeleteLanguageModal.tsx index 0a4cbfd..5d3fe3c 100644 --- a/src/app/admin/language-management/components/DeleteLanguageModal.tsx +++ b/src/app/admin/language-management/components/DeleteLanguageModal.tsx @@ -1,7 +1,9 @@ 'use client'; +import { useEffect, useState } from 'react'; import type { LanguageEntry } from '../hooks/useLanguageManagementTranslations'; import { useTranslation } from '../../../i18n/useTranslation'; +import { useModalAnimation } from '../hooks/useModalAnimation'; type Props = { deleteTarget: string | null; @@ -12,22 +14,35 @@ type Props = { export default function DeleteLanguageModal({ deleteTarget, allLanguages, onClose, onDelete }: Props) { const { t } = useTranslation(); + const [displayTarget, setDisplayTarget] = useState(deleteTarget); + const isOpen = Boolean(deleteTarget); + const { isRendered, isVisible } = useModalAnimation(isOpen); - if (!deleteTarget) return null; + useEffect(() => { + if (deleteTarget) setDisplayTarget(deleteTarget); + }, [deleteTarget]); + + if (!isRendered || !displayTarget) return null; + + const languageName = allLanguages.find((l) => l.code === displayTarget)?.name ?? displayTarget; return ( -
-
+
+

{t('autofix.kda5f982e')}

- Delete {allLanguages.find((l) => l.code === deleteTarget)?.name ?? deleteTarget}? + Delete {languageName}? All translations for this language will be removed.

-
diff --git a/src/app/admin/language-management/components/LanguageManagementTopSection.tsx b/src/app/admin/language-management/components/LanguageManagementTopSection.tsx index 5832310..6531f20 100644 --- a/src/app/admin/language-management/components/LanguageManagementTopSection.tsx +++ b/src/app/admin/language-management/components/LanguageManagementTopSection.tsx @@ -1,6 +1,7 @@ 'use client'; import type { RefObject } from 'react'; +import { useMemo } from 'react'; import { useTranslation } from '../../../i18n/useTranslation'; type LanguageEntry = { @@ -55,6 +56,53 @@ export default function LanguageManagementTopSection({ }: Props) { const { t } = useTranslation(); + const prioritizedLanguages = useMemo(() => { + const byCode = new Map(allLanguages.map((lang) => [lang.code, lang])); + const english = byCode.get('en'); + const german = byCode.get('de'); + + const rest = allLanguages + .filter((lang) => lang.code !== 'en' && lang.code !== 'de') + .sort((a, b) => a.name.localeCompare(b.name)); + + return [english, german, ...rest].filter((lang): lang is LanguageEntry => Boolean(lang)); + }, [allLanguages]); + + const englishLanguage = prioritizedLanguages.find((lang) => lang.code === 'en'); + const germanLanguage = prioritizedLanguages.find((lang) => lang.code === 'de'); + const otherLanguages = prioritizedLanguages.filter((lang) => lang.code !== 'en' && lang.code !== 'de'); + + const renderLanguageButton = (lang: LanguageEntry) => ( + + )} + + ); + return ( <>
@@ -100,42 +148,15 @@ export default function LanguageManagementTopSection({ )}
- {allLanguages.map((lang) => ( - - )} - - ))} + {englishLanguage && renderLanguageButton(englishLanguage)} + {germanLanguage && renderLanguageButton(germanLanguage)} + {otherLanguages.map((lang) => renderLanguageButton(lang))}
{activeLang !== 'en' && ( diff --git a/src/app/admin/language-management/components/ScanResultsModal.tsx b/src/app/admin/language-management/components/ScanResultsModal.tsx index b96a770..71cc84f 100644 --- a/src/app/admin/language-management/components/ScanResultsModal.tsx +++ b/src/app/admin/language-management/components/ScanResultsModal.tsx @@ -3,6 +3,7 @@ import ScanFixPanel from './ScanFixPanel'; import { useTranslation } from '../../../i18n/useTranslation'; import type { WorkspaceScanResult } from '../hooks/useI18nScanWorkflow'; +import { useModalAnimation } from '../hooks/useModalAnimation'; type LanguageEntry = { code: string; @@ -62,8 +63,9 @@ export default function ScanResultsModal({ onRunFixSelected, }: Props) { const { t } = useTranslation(); + const { isRendered, isVisible } = useModalAnimation(isOpen); - if (!isOpen) return null; + if (!isRendered) return null; const totalTranslated = scanResults.reduce((sum, row) => sum + row.translated, 0); const coveragePercent = totalKeys === 0 @@ -71,8 +73,12 @@ export default function ScanResultsModal({ : Math.round((totalTranslated / totalKeys) * 100); return ( -
-
+
+
diff --git a/src/app/admin/language-management/components/TranslationCoverageEditor.tsx b/src/app/admin/language-management/components/TranslationCoverageEditor.tsx index 6b177aa..3f80d1c 100644 --- a/src/app/admin/language-management/components/TranslationCoverageEditor.tsx +++ b/src/app/admin/language-management/components/TranslationCoverageEditor.tsx @@ -404,12 +404,14 @@ export default function TranslationCoverageEditor({ {filteredGroups[activeNamespacePanel].map((key) => { const enVal = getEnglishValue(key); const currentVal = getDisplayValue(key); + const isGlobal = globalKeySet.has(key); const visibleValue = activeLang === 'en' ? currentVal : (translations[activeLang]?.[key] ?? ''); const hasOverride = (translations[activeLang]?.[key] ?? '') !== ''; const isMissingInOpenedPanel = - activeLang !== 'en' && ( + activeLang !== 'en' && + !isGlobal && ( visibleValue.trim() === '' || visibleValue.trim() === enVal.trim() ); @@ -421,13 +423,28 @@ export default function TranslationCoverageEditor({ -
- {key} - {globalKeySet.has(key) && ( - - Global - - )} +
+
+ {key} + {isGlobal && ( + + Global + + )} +
+
{activeLang !== 'en' && ( diff --git a/src/app/admin/language-management/components/TranslationWizardModal.tsx b/src/app/admin/language-management/components/TranslationWizardModal.tsx index 6e852fd..4478724 100644 --- a/src/app/admin/language-management/components/TranslationWizardModal.tsx +++ b/src/app/admin/language-management/components/TranslationWizardModal.tsx @@ -2,6 +2,7 @@ import { useTranslation } from '../../../i18n/useTranslation'; import type { LanguageEntry } from '../hooks/useLanguageManagementTranslations'; +import { useModalAnimation } from '../hooks/useModalAnimation'; type Props = { isOpen: boolean; @@ -15,6 +16,8 @@ type Props = { wizardMarkGlobal: boolean; setWizardMarkGlobal: (value: boolean) => void; englishValue: string; + addGlobalKey: (key: string) => void; + removeGlobalKey: (key: string) => void; onClose: () => void; onPrevious: () => void; onSkip: () => void; @@ -33,18 +36,25 @@ export default function TranslationWizardModal({ wizardMarkGlobal, setWizardMarkGlobal, englishValue, + addGlobalKey, + removeGlobalKey, onClose, onPrevious, onSkip, onNext, }: Props) { const { t } = useTranslation(); + const { isRendered, isVisible } = useModalAnimation(isOpen && Boolean(currentWizardKey)); - if (!isOpen || !currentWizardKey) return null; + if (!isRendered || !currentWizardKey) return null; return ( -
-
+
+

{t('autofix.kcd190bdd')}

@@ -83,10 +93,19 @@ export default function TranslationWizardModal({ setWizardMarkGlobal(e.target.checked)} + onChange={(e) => { + const checked = e.target.checked; + setWizardMarkGlobal(checked); + if (!currentWizardKey) return; + if (checked) { + addGlobalKey(currentWizardKey); + return; + } + removeGlobalKey(currentWizardKey); + }} className="h-4 w-4 rounded border-slate-300 text-[#1C2B4A] focus:ring-[#1C2B4A]" /> - Mark as global term (for shared words like IBAN) + Counts as global key (same value as English)
@@ -110,7 +129,7 @@ export default function TranslationWizardModal({ diff --git a/src/app/i18n/translations/de.ts b/src/app/i18n/translations/de.ts index 87de38b..e96638e 100644 --- a/src/app/i18n/translations/de.ts +++ b/src/app/i18n/translations/de.ts @@ -1,1719 +1,1775 @@ import { Translations } from '../types'; +// Language name: Deutsch export const de: Translations = { - // ─── General ─────────────────────────────────────────── - common: { - loading: 'Laden…', - saving: 'Speichern…', - save: 'Speichern', - saved: 'Gespeichert', - cancel: 'Abbrechen', - close: 'Schließen', - back: 'Zurück', - confirm: 'Bestätigen', - delete: 'Löschen', - edit: 'Bearbeiten', - add: 'Hinzufügen', - search: 'Suchen', - searchPlaceholder: 'Suchen…', - noResults: 'Keine Ergebnisse gefunden.', - error: 'Fehler', - success: 'Erfolg', - required: 'Pflichtfeld', - optional: 'optional', - yes: 'Ja', - no: 'Nein', - copy: 'Kopieren', - copied: 'Kopiert!', - download: 'Herunterladen', - upload: 'Hochladen', - preview: 'Vorschau', - refresh: 'Aktualisieren', - backToHome: 'Zurück zur Startseite', - unsavedChanges: 'Du hast ungespeicherte Änderungen.', - learnMore: 'Mehr erfahren', - getStarted: 'Jetzt starten', - language: 'Sprache', + "common": { + "loading": "Laden…", + "saving": "Speichern…", + "save": "Speichern", + "saved": "Gespeichert", + "cancel": "Abbrechen", + "close": "Schließen", + "back": "Zurück", + "confirm": "Bestätigen", + "delete": "Löschen", + "edit": "Bearbeiten", + "add": "Hinzufügen", + "search": "Suchen", + "searchPlaceholder": "Suchen…", + "noResults": "Keine Ergebnisse gefunden.", + "error": "Fehler", + "success": "Erfolg", + "required": "Pflichtfeld", + "optional": "optional", + "yes": "Ja", + "no": "Nein", + "copy": "Kopieren", + "copied": "Kopiert!", + "download": "Herunterladen", + "upload": "Hochladen", + "preview": "Vorschau", + "refresh": "Aktualisieren", + "backToHome": "Zurück zur Startseite", + "unsavedChanges": "Du hast ungespeicherte Änderungen.", + "learnMore": "Mehr erfahren", + "getStarted": "Jetzt starten", + "language": "Sprache" }, - - home: { - title: 'Profit Planet', - tagline: 'Nachhaltige Produkte entdecken und handeln', - description: 'Tritt unserer Community von umweltbewussten Verbrauchern und Unternehmen bei. Handle mit nachhaltigen Produkten, sammle Belohnungen und mache einen positiven Einfluss auf unseren Planeten.', - features: { - sustainable: { - title: 'Nachhaltige Produkte', - description: 'Entdecke umweltfreundliche Produkte, die einen Unterschied für unseren Planeten machen.', + "home": { + "title": "Profit Planet", + "tagline": "Nachhaltige Produkte entdecken und handeln", + "description": "Tritt unserer Community von umweltbewussten Verbrauchern und Unternehmen bei. Handle mit nachhaltigen Produkten, sammle Belohnungen und mache einen positiven Einfluss auf unseren Planeten.", + "features": { + "sustainable": { + "title": "Nachhaltige Produkte", + "description": "Entdecke umweltfreundliche Produkte, die einen Unterschied für unseren Planeten machen." }, - community: { - title: 'Aktive Community', - description: 'Vernetze dich mit Gleichgesinnten, denen Nachhaltigkeit wichtig ist.', + "community": { + "title": "Aktive Community", + "description": "Vernetze dich mit Gleichgesinnten, denen Nachhaltigkeit wichtig ist." }, - rewards: { - title: 'Belohnungen sammeln', - description: 'Erhalte Gold-Punkte für jeden nachhaltigen Kauf und jede Aktion.', + "rewards": { + "title": "Belohnungen sammeln", + "description": "Erhalte Gold-Punkte für jeden nachhaltigen Kauf und jede Aktion." + } + }, + "stats": { + "members": "Aktive Mitglieder", + "products": "Öko-Produkte", + "communities": "Communities" + }, + "cta": { + "getStarted": "Jetzt starten", + "learnMore": "Mehr erfahren" + } + }, + "footer": { + "company": "Profit Planet GmbH", + "rights": "Alle Rechte vorbehalten.", + "privacy": "Datenschutz", + "terms": "AGB", + "contact": "Kontakt" + }, + "nav": { + "home": "Start", + "shop": "Shop", + "dashboard": "Verwaltung", + "community": "Gemeinschaft", + "profile": "Profil", + "login": "Anmelden", + "logout": "Abmelden", + "news": "Neuigkeiten", + "memberships": "Mitgliedschaften", + "aboutUs": "Über uns", + "affiliateLinks": "Affiliate-Links", + "information": "Informationen", + "myAccount": "Mein Konto", + "mySubscriptions": "Meine Abonnements", + "coffeeSubscriptions": "Kaffee-Abonnements" + }, + "login": { + "title": "PROFIT PLANET", + "subtitle": "Willkommen zurück! Melde dich an.", + "emailLabel": "E-Mail-Adresse", + "emailPlaceholder": "du@beispiel.com", + "passwordLabel": "Passwort", + "passwordPlaceholder": "Dein Passwort eingeben", + "rememberMe": "Angemeldet bleiben", + "submit": "Anmelden", + "submitting": "Anmelden…", + "forgotPassword": "Passwort vergessen?", + "noAccount": "Noch kein Konto?", + "registerLink": "Registrieren", + "errorRequired": "E-Mail-Adresse ist erforderlich", + "errorInvalidEmail": "Bitte gib eine gültige E-Mail-Adresse ein", + "errorPasswordRequired": "Passwort ist erforderlich", + "errorPasswordTooShort": "Das Passwort muss mindestens 6 Zeichen lang sein", + "errorInvalidCredentials": "E-Mail oder Passwort falsch", + "errorAccountNotFound": "Kein Konto mit dieser E-Mail-Adresse gefunden", + "errorAccountLocked": "Konto wurde gesperrt. Bitte kontaktiere den Support.", + "errorConnectionFailed": "Verbindung zum Server fehlgeschlagen. Bitte versuche es später erneut.", + "errorGeneric": "Anmeldung fehlgeschlagen. Bitte versuche es erneut.", + "successTitle": "Anmeldung erfolgreich", + "successMessage": "Du bist jetzt angemeldet.", + "failedTitle": "Anmeldung fehlgeschlagen" + }, + "register": { + "title": "Konto erstellen", + "subtitle": "Tritt Profit Planet heute bei.", + "tabPersonal": "Privat", + "tabCompany": "Unternehmen", + "tabGuest": "Gast", + "checkingInvitation": "Einladungslink wird überprüft…", + "invitationVerifiedTitle": "Einladung bestätigt", + "invitationVerifiedMessage": "Dein Einladungslink ist gültig. Du kannst dich jetzt registrieren.", + "invalidInvitationTitle": "Ungültige Einladung", + "invalidInvitationMessage": "Dieser Einladungslink ist ungültig oder nicht mehr aktiv.", + "noInvitationToken": "Kein Einladungstoken im Link gefunden.", + "networkError": "Server nicht erreichbar. Läuft das Backend?", + "firstName": "Vorname", + "lastName": "Nachname", + "email": "E-Mail-Adresse", + "confirmEmail": "E-Mail-Adresse bestätigen", + "password": "Passwort", + "confirmPassword": "Passwort bestätigen", + "phone": "Telefonnummer", + "companyName": "Unternehmensname", + "companyEmail": "Unternehmens-E-Mail", + "companyPhone": "Unternehmenstelefon", + "contactPersonName": "Name der Kontaktperson", + "contactPersonPhone": "Telefon der Kontaktperson", + "submit": "Konto erstellen", + "submitting": "Konto wird erstellt…", + "errorAllRequired": "Alle Felder sind erforderlich", + "errorEmailMismatch": "E-Mail-Adressen stimmen nicht überein", + "errorPasswordMismatch": "Passwörter stimmen nicht überein", + "errorPasswordWeak": "Das Passwort muss mindestens 8 Zeichen lang sein und Groß-, Kleinbuchstaben, Zahlen und Sonderzeichen enthalten", + "errorSelectCountryCode": "Bitte wähle zuerst eine Ländervorwahl aus dem Dropdown.", + "errorPhoneRequired": "Bitte gib deine Telefonnummer ein.", + "errorPhoneInvalid": "Bitte gib eine gültige Mobilnummer ein.", + "errorBothPhonesRequired": "Bitte gib sowohl Unternehmens- als auch Kontakttelefonnummer ein.", + "errorBothPhonesInvalid": "Bitte gib gültige Telefonnummern für Unternehmen und Kontaktperson ein.", + "successTitle": "Registrierung erfolgreich", + "successMessage": "Du kannst dich jetzt mit deinem neuen Konto anmelden.", + "alreadyHaveAccount": "Bereits ein Konto?", + "loginLink": "Anmelden", + "sessionDetectedTitle": "Aktive Sitzung erkannt", + "sessionDetectedMessage": "Du bist bereits angemeldet. Möchtest du dich abmelden und ein neues Konto registrieren?", + "sessionContinue": "Zum Dashboard", + "sessionLogout": "Abmelden und registrieren", + "formTitle": "Registrierung für Profit Planet", + "guestRegistration": "Gäste-Registrierung", + "registerNow": "Jetzt registrieren", + "guestDescription": "Als Gast registrieren, um auf dein Kaffee-Abonnement zuzugreifen.", + "personalDescription": "Erstelle dein persönliches oder Firmenkonto bei Profit Planet.", + "invitedBy": "Du wurdest eingeladen von", + "tabIndividual": "Privat", + "submitCompany": "Unternehmen registrieren", + "submitGuest": "Als Gast registrieren", + "successRedirecting": "Registrierung erfolgreich – Weiterleitung...", + "guestNote": "Du registrierst dich als Gast. Du hast nur Zugang zu deinen Kaffee-Abonnements.", + "errorBothCountryCodes": "Bitte wähle Ländervorwahlen (Dropdown) für Unternehmens- und Kontakttelefonnummern.", + "successCompanyMessage": "Du kannst dich jetzt mit deinem neuen Unternehmenskonto anmelden.", + "successGuestMessage": "Du kannst dich jetzt anmelden, um dein Kaffee-Abonnement zu sehen.", + "failedTitle": "Registrierung fehlgeschlagen", + "failedMessage": "Registrierung fehlgeschlagen. Bitte versuche es erneut.", + "networkErrorGeneric": "Netzwerkfehler. Bitte versuche es später erneut.", + "passwordRequirements": "Passwortanforderungen:", + "pwdMinLength": "Mindestens 8 Zeichen", + "pwdLowercase": "Kleinbuchstaben (a-z)", + "pwdUppercase": "Großbuchstaben (A-Z)", + "pwdDigits": "Ziffern (0-9)", + "pwdSpecial": "Sonderzeichen (!@#$...)", + "invalidLinkTitle": "Ungültiger Einladungslink", + "invalidLinkMessage": "Dieser Registrierungslink ist ungültig oder nicht mehr aktiv. Bitte fordere einen neuen Link an.", + "tokenLabel": "Token", + "sessionDescription": "Du bist bereits angemeldet. Um dich zu registrieren, musst du dich zuerst abmelden oder zum Dashboard gehen.", + "goToDashboard": "Zum Dashboard", + "goToHomepage": "Zur Startseite", + "loginHere": "Hier anmelden" + }, + "passwordReset": { + "title": "Passwort zurücksetzen", + "subtitle": "Gib deine E-Mail-Adresse ein und wir senden dir einen Reset-Link.", + "emailLabel": "E-Mail-Adresse", + "emailPlaceholder": "du@beispiel.com", + "submit": "Reset-Link senden", + "submitting": "Wird gesendet…", + "successTitle": "E-Mail gesendet", + "successMessage": "Prüfe deinen Posteingang für den Passwort-Reset-Link.", + "backToLogin": "Zurück zur Anmeldung", + "errorInvalidEmail": "Bitte gib eine gültige E-Mail-Adresse ein" + }, + "dashboard": { + "title": "Dashboard", + "subtitle": "Willkommen in deinem Profit Planet Dashboard.", + "loading": "Dashboard wird geladen…", + "accessDenied": "Zugriff verweigert", + "accessDeniedMessage": "Du musst das Onboarding abschließen, um auf das Dashboard zugreifen zu können.", + "welcomeBack": "Willkommen zurück", + "welcomeSubtitle": "Das passiert aktuell mit deinem Profit Planet Konto", + "platforms": "Plattformen", + "platformDisabled": "Dies ist derzeit deaktiviert.", + "redirecting": "Weiterleitung…", + "pleaseWait": "Bitte warten", + "goldMemberTitle": "Gold-Mitgliedsstatus", + "goldMemberDescription": "Genieße exklusive Vorteile und Rabatte", + "viewBenefits": "Vorteile ansehen", + "latestNews": "Neueste News", + "viewAllNews": "Alle ansehen", + "noNewsYet": "Noch keine News.", + "recent": "Neu", + "platformCards": { + "shop": { + "title": "Shop durchsuchen", + "description": "Nachhaltige Produkte entdecken" }, - }, - stats: { - members: 'Aktive Mitglieder', - products: 'Öko-Produkte', - communities: 'Communities', - }, - cta: { - getStarted: 'Jetzt starten', - learnMore: 'Mehr erfahren', - }, - }, - - footer: { - company: 'Profit Planet GmbH', - rights: 'Alle Rechte vorbehalten.', - privacy: 'Datenschutz', - terms: 'AGB', - contact: 'Kontakt', - }, - - nav: { - home: 'Home', - shop: 'Shop', - dashboard: 'Dashboard', - community: 'Community', - profile: 'Profil', - login: 'Anmelden', - logout: 'Abmelden', - news: 'Neuigkeiten', - memberships: 'Mitgliedschaften', - aboutUs: 'Über uns', - affiliateLinks: 'Affiliate-Links', - information: 'Informationen', - myAccount: 'Mein Konto', - mySubscriptions: 'Meine Abonnements', - coffeeSubscriptions: 'Kaffee-Abonnements', - }, - - // ─── Auth ────────────────────────────────────────────── - login: { - title: 'PROFIT PLANET', - subtitle: 'Willkommen zurück! Melde dich an.', - emailLabel: 'E-Mail-Adresse', - emailPlaceholder: 'du@beispiel.com', - passwordLabel: 'Passwort', - passwordPlaceholder: 'Dein Passwort eingeben', - rememberMe: 'Angemeldet bleiben', - submit: 'Anmelden', - submitting: 'Anmelden…', - forgotPassword: 'Passwort vergessen?', - noAccount: 'Noch kein Konto?', - registerLink: 'Registrieren', - errorRequired: 'E-Mail-Adresse ist erforderlich', - errorInvalidEmail: 'Bitte gib eine gültige E-Mail-Adresse ein', - errorPasswordRequired: 'Passwort ist erforderlich', - errorPasswordTooShort: 'Das Passwort muss mindestens 6 Zeichen lang sein', - errorInvalidCredentials: 'E-Mail oder Passwort falsch', - errorAccountNotFound: 'Kein Konto mit dieser E-Mail-Adresse gefunden', - errorAccountLocked: 'Konto wurde gesperrt. Bitte kontaktiere den Support.', - errorConnectionFailed: 'Verbindung zum Server fehlgeschlagen. Bitte versuche es später erneut.', - errorGeneric: 'Anmeldung fehlgeschlagen. Bitte versuche es erneut.', - successTitle: 'Anmeldung erfolgreich', - successMessage: 'Du bist jetzt angemeldet.', - failedTitle: 'Anmeldung fehlgeschlagen', - }, - - register: { - title: 'Konto erstellen', - subtitle: 'Tritt Profit Planet heute bei.', - tabPersonal: 'Privat', - tabCompany: 'Unternehmen', - tabGuest: 'Gast', - checkingInvitation: 'Einladungslink wird überprüft…', - invitationVerifiedTitle: 'Einladung bestätigt', - invitationVerifiedMessage: 'Dein Einladungslink ist gültig. Du kannst dich jetzt registrieren.', - invalidInvitationTitle: 'Ungültige Einladung', - invalidInvitationMessage: 'Dieser Einladungslink ist ungültig oder nicht mehr aktiv.', - noInvitationToken: 'Kein Einladungstoken im Link gefunden.', - networkError: 'Server nicht erreichbar. Läuft das Backend?', - firstName: 'Vorname', - lastName: 'Nachname', - email: 'E-Mail-Adresse', - confirmEmail: 'E-Mail-Adresse bestätigen', - password: 'Passwort', - confirmPassword: 'Passwort bestätigen', - phone: 'Telefonnummer', - companyName: 'Unternehmensname', - companyEmail: 'Unternehmens-E-Mail', - companyPhone: 'Unternehmenstelefon', - contactPersonName: 'Name der Kontaktperson', - contactPersonPhone: 'Telefon der Kontaktperson', - submit: 'Konto erstellen', - submitting: 'Konto wird erstellt…', - errorAllRequired: 'Alle Felder sind erforderlich', - errorEmailMismatch: 'E-Mail-Adressen stimmen nicht überein', - errorPasswordMismatch: 'Passwörter stimmen nicht überein', - errorPasswordWeak: 'Das Passwort muss mindestens 8 Zeichen lang sein und Groß-, Kleinbuchstaben, Zahlen und Sonderzeichen enthalten', - errorSelectCountryCode: 'Bitte wähle zuerst eine Ländervorwahl aus dem Dropdown.', - errorPhoneRequired: 'Bitte gib deine Telefonnummer ein.', - errorPhoneInvalid: 'Bitte gib eine gültige Mobilnummer ein.', - errorBothPhonesRequired: 'Bitte gib sowohl Unternehmens- als auch Kontakttelefonnummer ein.', - errorBothPhonesInvalid: 'Bitte gib gültige Telefonnummern für Unternehmen und Kontaktperson ein.', - successTitle: 'Registrierung erfolgreich', - successMessage: 'Du kannst dich jetzt mit deinem neuen Konto anmelden.', - alreadyHaveAccount: 'Bereits ein Konto?', - loginLink: 'Anmelden', - sessionDetectedTitle: 'Aktive Sitzung erkannt', - sessionDetectedMessage: 'Du bist bereits angemeldet. Möchtest du dich abmelden und ein neues Konto registrieren?', - sessionContinue: 'Zum Dashboard', - sessionLogout: 'Abmelden und registrieren', - formTitle: 'Registrierung für Profit Planet', - guestRegistration: 'Gäste-Registrierung', - registerNow: 'Jetzt registrieren', - guestDescription: 'Als Gast registrieren, um auf dein Kaffee-Abonnement zuzugreifen.', - personalDescription: 'Erstelle dein persönliches oder Firmenkonto bei Profit Planet.', - invitedBy: 'Du wurdest eingeladen von', - tabIndividual: 'Privat', - submitCompany: 'Unternehmen registrieren', - submitGuest: 'Als Gast registrieren', - successRedirecting: 'Registrierung erfolgreich – Weiterleitung...', - guestNote: 'Du registrierst dich als Gast. Du hast nur Zugang zu deinen Kaffee-Abonnements.', - errorBothCountryCodes: 'Bitte wähle Ländervorwahlen (Dropdown) für Unternehmens- und Kontakttelefonnummern.', - successCompanyMessage: 'Du kannst dich jetzt mit deinem neuen Unternehmenskonto anmelden.', - successGuestMessage: 'Du kannst dich jetzt anmelden, um dein Kaffee-Abonnement zu sehen.', - failedTitle: 'Registrierung fehlgeschlagen', - failedMessage: 'Registrierung fehlgeschlagen. Bitte versuche es erneut.', - networkErrorGeneric: 'Netzwerkfehler. Bitte versuche es später erneut.', - passwordRequirements: 'Passwortanforderungen:', - pwdMinLength: 'Mindestens 8 Zeichen', - pwdLowercase: 'Kleinbuchstaben (a-z)', - pwdUppercase: 'Großbuchstaben (A-Z)', - pwdDigits: 'Ziffern (0-9)', - pwdSpecial: 'Sonderzeichen (!@#$...)', - invalidLinkTitle: 'Ungültiger Einladungslink', - invalidLinkMessage: 'Dieser Registrierungslink ist ungültig oder nicht mehr aktiv. Bitte fordere einen neuen Link an.', - tokenLabel: 'Token', - sessionDescription: 'Du bist bereits angemeldet. Um dich zu registrieren, musst du dich zuerst abmelden oder zum Dashboard gehen.', - goToDashboard: 'Zum Dashboard', - goToHomepage: 'Zur Startseite', - loginHere: 'Hier anmelden', - }, - - passwordReset: { - title: 'Passwort zurücksetzen', - subtitle: 'Gib deine E-Mail-Adresse ein und wir senden dir einen Reset-Link.', - emailLabel: 'E-Mail-Adresse', - emailPlaceholder: 'du@beispiel.com', - submit: 'Reset-Link senden', - submitting: 'Wird gesendet…', - successTitle: 'E-Mail gesendet', - successMessage: 'Prüfe deinen Posteingang für den Passwort-Reset-Link.', - backToLogin: 'Zurück zur Anmeldung', - errorInvalidEmail: 'Bitte gib eine gültige E-Mail-Adresse ein', - }, - - // ─── Pages ───────────────────────────────────────────── - dashboard: { - title: 'Dashboard', - subtitle: 'Willkommen in deinem Profit Planet Dashboard.', - loading: 'Dashboard wird geladen…', - accessDenied: 'Zugriff verweigert', - accessDeniedMessage: 'Du musst das Onboarding abschließen, um auf das Dashboard zugreifen zu können.', - welcomeBack: 'Willkommen zurück', - welcomeSubtitle: 'Das passiert aktuell mit deinem Profit Planet Konto', - platforms: 'Plattformen', - platformDisabled: 'Dies ist derzeit deaktiviert.', - redirecting: 'Weiterleitung…', - pleaseWait: 'Bitte warten', - goldMemberTitle: 'Gold-Mitgliedsstatus', - goldMemberDescription: 'Genieße exklusive Vorteile und Rabatte', - viewBenefits: 'Vorteile ansehen', - latestNews: 'Neueste News', - viewAllNews: 'Alle ansehen', - noNewsYet: 'Noch keine News.', - recent: 'Neu', - platformCards: { - shop: { - title: 'Shop durchsuchen', - description: 'Nachhaltige Produkte entdecken', + "affiliateLinks": { + "title": "Affiliate-Links durchsuchen", + "description": "Affiliate-Angebote und Links entdecken" }, - affiliateLinks: { - title: 'Affiliate-Links durchsuchen', - description: 'Affiliate-Angebote und Links entdecken', + "referralManagement": { + "title": "Empfehlungsverwaltung", + "description": "Empfehlungslinks erstellen und verwalten" }, - referralManagement: { - title: 'Empfehlungsverwaltung', - description: 'Empfehlungslinks erstellen und verwalten', - }, - profile: { - title: 'Profil bearbeiten', - description: 'Deine Informationen aktualisieren', + "profile": { + "title": "Profil bearbeiten", + "description": "Deine Informationen aktualisieren" + } + }, + "noData": "Keine Daten verfügbar." + }, + "profile": { + "title": "Mein Profil", + "personalInfo": "Persönliche Informationen", + "bankInfo": "Bankdaten", + "documents": "Dokumente", + "memberStatus": "Mitgliedsstatus", + "profileComplete": "Profilkompletion", + "firstName": "Vorname", + "lastName": "Nachname", + "email": "E-Mail-Adresse", + "phone": "Telefonnummer", + "address": "Adresse", + "joinDate": "Mitglied seit", + "accountHolder": "Kontoinhaber", + "iban": "IBAN", + "contactPersonName": "Kontaktperson", + "editBasicInfo": "Persönliche Daten bearbeiten", + "editBankInfo": "Bankdaten bearbeiten", + "saveChanges": "Änderungen speichern", + "documentName": "Dokumentname", + "documentType": "Typ", + "documentUploaded": "Hochgeladen", + "downloadDocument": "Herunterladen", + "noDocuments": "Noch keine Dokumente hochgeladen.", + "refreshProfile": "Profil aktualisieren", + "loading": "Profil wird geladen…" + }, + "community": { + "title": "Community", + "subtitle": "Verbinde dich mit der Profit Planet Community.", + "description": "Nimm an Diskussionen teil und vernetze dich mit anderen Mitgliedern.", + "loading": "Community wird geladen…", + "accessDenied": "Zugriff verweigert", + "noAccess": "Du musst angemeldet sein, um auf die Community zugreifen zu können." + }, + "shop": { + "title": "Shop", + "subtitle": "Nachhaltige Produkte entdecken.", + "comingSoon": "Demnächst verfügbar", + "addToCart": "In den Warenkorb", + "price": "Preis", + "outOfStock": "Nicht vorrätig", + "viewDetails": "Details ansehen" + }, + "memberships": { + "title": "Mitgliedschaften", + "subtitle": "Wähle den richtigen Plan für dich.", + "description": "Werde Mitglied und schalte exklusive Vorteile frei.", + "selectPlan": "Plan auswählen", + "perMonth": "pro Monat", + "perYear": "pro Jahr", + "mostPopular": "Am beliebtesten", + "choosePlan": "Diesen Plan wählen" + }, + "affiliateLinks": { + "title": "Affiliate-Links", + "subtitle": "Unsere Partner-Links entdecken.", + "description": "Durchsuche und teile unsere Partner-Links, um Prämien zu verdienen.", + "visitLink": "Link besuchen", + "partnerLinks": "Partner-Links" + }, + "aboutUs": { + "title": "Über uns", + "subtitle": "Erfahre mehr über Profit Planet.", + "description": "Gemeinsam bauen wir eine nachhaltige Zukunft.", + "ourTeam": "Unser Team", + "ourMission": "Unsere Mission" + }, + "news": { + "title": "Neuigkeiten", + "subtitle": "Bleib mit Profit Planet auf dem Laufenden.", + "readMore": "Mehr lesen", + "publishedDate": "Veröffentlicht", + "category": "Kategorie", + "noArticles": "Keine Artikel verfügbar.", + "loadMore": "Mehr laden" + }, + "coffeeSelection": { + "title": "Kaffee-Abonnement", + "subtitle": "Wähle deine Kaffeesorten für diesen Monat.", + "selectYourCoffees": "Deine Kaffees auswählen", + "capsuleTarget": "Kapsel-Ziel", + "planLabel": "Dein Plan", + "yourSelection": "Deine Auswahl", + "totalCapsules": "Kapseln gesamt", + "totalPacks": "Packungen gesamt", + "targetPacks": "Ziel-Packungen", + "selectUpTo": "Auswahl bis zu", + "goToSummary": "Zur Zusammenfassung", + "loading": "Kaffees werden geladen…", + "noProducts": "Keine Kaffees verfügbar.", + "validationExact": "Du benötigst genau {count} Kapseln ({packs} Packungen).", + "packOf10": "10er-Packung", + "pricePerPack": "pro Packung" + }, + "coffeeSummary": { + "title": "Zusammenfassung & Details", + "backToSelection": "Zurück zur Auswahl", + "stepSelection": "Auswahl", + "stepSummary": "Zusammenfassung", + "yourDetails": "1. Deine Daten", + "fillFromLoggedIn": "Felder mit angemeldeten Daten füllen", + "firstName": "Vorname", + "lastName": "Nachname", + "email": "E-Mail", + "street": "Straße & Nr.", + "zip": "PLZ", + "city": "Stadt", + "country": "Land", + "phone": "Telefon", + "phoneOptional": "Telefon (optional)", + "paymentMethod": "Zahlungsmethode", + "paymentSepa": "SEPA", + "paymentCard": "Kreditkarte", + "paymentSofort": "Sofort Banking", + "invoiceByEmail": "Rechnung per E-Mail senden", + "invoiceAddress": "Rechnungsadresse", + "sameAsShipping": "Wie Lieferadresse", + "uidNumberLabel": "UID-Nummer (optional)", + "uidNumberPlaceholder": "z.B. SI12345678", + "uidNumberHint": "Ohne gültige UID wird die Rechnung mit normaler MwSt erstellt.", + "reverseChargeHint": "Unternehmer mit gültiger UID und Rechnungsland außerhalb von AT werden per Reverse Charge ohne ausgewiesene MwSt verrechnet.", + "fullName": "Vollständiger Name", + "contractPreview": "Vertragsvorschau (ABO)", + "contractSubtitle": "Vertragsvariablen werden automatisch aus deinen Formulardaten befüllt.", + "openPreview": "Vorschau öffnen", + "contractLoading": "Vertragsvorschau wird geladen…", + "contractError": "Vertragsvorschau konnte nicht geladen werden:", + "contractNotAvailable": "Vertragsvorlage ist nicht verfügbar.", + "pdfPreviewTitle": "ABO-Vertragsvorschau (PDF)", + "pdfGenerating": "PDF-Vorschau wird erstellt…", + "pdfError": "PDF-Vorschau konnte nicht erstellt werden:", + "pdfNotAvailable": "Keine PDF-Vorschau verfügbar.", + "signingCity": "Ort *", + "signingCityPlaceholder": "z.B. Wien", + "signingCityRequired": "Ort ist erforderlich.", + "signatureRequired": "Unterschrift ist erforderlich.", + "completeSubscription": "Abonnement abschließen", + "creating": "Wird erstellt…", + "cannotSubmit": "Bitte wähle Kaffees aus und fülle alle Pflichtfelder, Ort und Unterschrift aus.", + "yourSelection": "2. Deine Auswahl", + "shipping": "Versand", + "freeShipping": "KOSTENLOSER VERSAND", + "shippingLoading": "Laden…", + "shippingError": "Versandkosten konnten nicht geladen werden:", + "totalNet": "Gesamt (netto)", + "tax": "MwSt. ({rate}%)", + "taxReverseCharge": "Steuer (Reverse Charge)", + "totalInclTax": "Gesamt inkl. MwSt.", + "reverseChargeActive": "Reverse Charge aktiv: gültige UID und ausländisches Rechnungsland erkannt.", + "capsuleValidation": "Ausgewählt: {selected} Kapseln ({selectedPacks} Packungen à 10). Ziel: {target} Kapseln ({targetPacks} Packungen).", + "exactlyRequired": "Genau {packs} Packungen ({capsules} Kapseln) sind erforderlich.", + "thankYouTitle": "Danke für dein Abonnement!", + "thankYouMessage": "Abonnement erstellt.", + "noSelectionFound": "Keine Auswahl gefunden.", + "noLoggedInData": "Keine angemeldeten Benutzerdaten zum Befüllen der Felder gefunden." + }, + "personalMatrix": { + "title": "Persönliche Matrix", + "subtitle": "Deine Netzwerkstruktur.", + "description": "Sieh dir deine persönliche Matrix und dein Downline-Netzwerk an.", + "loading": "Matrix wird geladen…", + "noData": "Keine Matrix-Daten verfügbar." + }, + "referralManagement": { + "title": "Empfehlungsverwaltung", + "subtitle": "Verwalte deine Empfehlungslinks.", + "description": "Erstelle und verwalte deine Empfehlungslinks. Verfolge die Performance auf einen Blick.", + "createLink": "Empfehlungslink erstellen", + "copyLink": "Link kopieren", + "copy": "Kopieren", + "copyMobile": "Link kopieren", + "copied": "Kopiert", + "copiedToClipboard": "In die Zwischenablage kopiert!", + "linkExpiry": "Läuft ab", + "noLinks": "Keine Empfehlungslinks gefunden.", + "generating": "Wird erstellt…", + "generateLink": "Link generieren", + "usesRemaining": "verbleibende Nutzungen", + "unlimited": "Unbegrenzt", + "never": "Nie", + "createSuccess": "Empfehlungslink erfolgreich erstellt.", + "createError": "Empfehlungslink konnte nicht erstellt werden.", + "deactivate": "Deaktivieren", + "deactivated": "Link deaktiviert", + "deactivatedMessage": "Der Empfehlungslink wurde erfolgreich deaktiviert.", + "deactivateFailed": "Deaktivierung fehlgeschlagen", + "deactivateFailedMessage": "Der Empfehlungslink konnte nicht deaktiviert werden.", + "deactivateNetworkError": "Netzwerkfehler beim Deaktivieren des Empfehlungslinks.", + "deactivateModalTitle": "Empfehlungslink deaktivieren?", + "deactivateModalDescription": "Dies deaktiviert den ausgewählten Empfehlungslink sofort, sodass er nicht mehr verwendet werden kann.", + "linkLabel": "Link", + "accessCheckFailed": "Zugriffsprüfung fehlgeschlagen", + "userIdMissing": "Benutzer-ID fehlt. Weiterleitung…", + "accessDenied": "Zugriff verweigert", + "accessDeniedMessage": "Du hast keine Berechtigung für die Empfehlungsverwaltung.", + "permCheckFailed": "Berechtigungsprüfung fehlgeschlagen", + "permCheckFailedMessage": "Berechtigungen konnten nicht verifiziert werden. Weiterleitung…", + "loadFailed": "Laden fehlgeschlagen", + "loadStatsError": "Empfehlungsstatistiken konnten nicht geladen werden.", + "loadLinksError": "Empfehlungslinks konnten nicht geladen werden.", + "copyFailed": "Kopieren fehlgeschlagen", + "copyFailedMessage": "Link konnte nicht in die Zwischenablage kopiert werden.", + "copiedMessage": "Link in die Zwischenablage kopiert.", + "allLinks": "Alle Empfehlungslinks", + "allLinksSubtitle": "Verwalte deine Links und sieh deren Status.", + "colLink": "Link", + "colCreated": "Erstellt", + "colExpires": "Läuft ab", + "colUsage": "Nutzung", + "colStatus": "Status", + "generateTitle": "Empfehlungslink generieren", + "maxUsesLabel": "Max. Nutzungen", + "expiresIn": "Läuft ab in", + "lockedByNeverExpires": "Gesperrt durch „Läuft nie ab\".", + "lockedByUnlimited": "Gesperrt durch „Unbegrenzte Nutzungen\".", + "statsActiveLinks": "Aktive Links", + "statsLinksUsed": "Genutzte Links", + "statsPersonalUsers": "Privatnutzer", + "statsCompanyUsers": "Firmennutzer", + "statsTotalLinks": "Links gesamt", + "levelStarter": "Starter", + "levelNovice": "Novize", + "levelHustler": "Hustler", + "levelEntrepreneur": "Unternehmer", + "levelPrestige": "Prestige", + "levelMax": "MAX", + "levelLabel": "Level", + "referrals": "Empfehlungen", + "of": "von", + "maxLevelReached": "Maximales Level erreicht", + "nextMilestone": "Nächster Meilenstein", + "registeredUsersTitle": "Registrierte Nutzer über deine Empfehlung", + "totalRefBadge": "GESAMT REGISTRIERTE NUTZER MIT DEINEM REF-LINK", + "registeredUsersSubtitle": "Nutzer, die sich über einen deiner Empfehlungslinks registriert haben.", + "showingLatest5": "Zeigt die neuesten 5 Nutzer. Klicke auf „Alle anzeigen\" für die vollständige Liste.", + "viewAll": "Alle anzeigen", + "colUser": "Nutzer", + "colEmail": "E-Mail", + "colType": "Typ", + "colRegistered": "Registriert", + "noRegisteredUsers": "Keine registrierten Nutzer gefunden.", + "typeCompany": "Unternehmen", + "typePersonal": "Privat", + "allRegisteredUsersTitle": "Alle registrierten Nutzer über deine Empfehlung", + "allRegisteredUsersSubtitle": "Suchen, filtern, blättern oder die vollständige Liste exportieren.", + "exportCsv": "CSV exportieren", + "searchPlaceholder": "Name oder E-Mail suchen…", + "filterAllTypes": "Alle Typen", + "filterAllStatus": "Alle Status", + "filterActive": "Aktiv", + "filterInactive": "Inaktiv", + "filterPending": "Ausstehend", + "filterBlocked": "Gesperrt", + "noUsersMatchFilters": "Keine Nutzer entsprechen deinen Filtern.", + "showing": "Zeige", + "pagePrev": "Zurück", + "pageNext": "Weiter", + "pageOf": "von", + "expiry1Day": "1 Tag", + "expiry2Days": "2 Tage", + "expiry3Days": "3 Tage", + "expiry4Days": "4 Tage", + "expiry5Days": "5 Tage", + "expiry6Days": "6 Tage", + "expiry7Days": "7 Tage", + "expiryNever": "Läuft nie ab", + "maxUses1": "1 Nutzung", + "maxUses5": "5 Nutzungen", + "maxUses10": "10 Nutzungen", + "maxUses50": "50 Nutzungen", + "maxUsesUnlimited": "Unbegrenzt" + }, + "quickactionDashboard": { + "title": "Schnellaktionen", + "subtitle": "Schließe deine Onboarding-Schritte ab.", + "stepLabel": "Schritt", + "completed": "Abgeschlossen", + "pending": "Ausstehend", + "required": "Erforderlich", + "verifyIdentity": "Identität verifizieren", + "completeProfile": "Profil vervollständigen", + "setPayment": "Zahlung einrichten", + "startUsing": "Profit Planet nutzen", + "allDone": "Alle Schritte abgeschlossen!", + "loading": "Laden…", + "guestAccount": "Gastkonto", + "companyAccount": "Firmenkonto", + "personalAccount": "Privatkonto", + "loadingStatus": "Status wird geladen...", + "errorLoadingAccountStatus": "Fehler beim Laden des Kontostatus", + "tryAgain": "Erneut versuchen", + "emailVerificationStatus": "Status der E-Mail-Verifizierung", + "statusOverview": "Statusübersicht", + "actionRequired": "Aktion erforderlich", + "quickActions": "Schnellaktionen", + "tutorial": "Tutorial", + "pleaseVerifyEmailAddress": "Bitte bestätige deine E-Mail-Adresse, um dein Gastkonto zu aktivieren und auf deine Abonnements zuzugreifen.", + "resendAvailableIn": "Erneut senden möglich in", + "requestNewCode": "Du kannst jetzt einen neuen Code anfordern", + "emailVerified": "E-Mail bestätigt", + "verifyEmail": "E-Mail bestätigen", + "idUploaded": "Ausweis hochgeladen", + "uploadIdDocument": "Ausweisdokument hochladen", + "profileCompleted": "Profil abgeschlossen", + "signContract": "Vertrag unterschreiben", + "contractNotReady": "Vertrag unterschreiben (erfordert alle vorherigen Schritte)", + "latestNews": "Neueste Nachrichten", + "viewAll": "Alle anzeigen", + "noNewsYet": "Noch keine Nachrichten verfügbar.", + "recent": "Neu", + "redirecting": "Weiterleitung…", + "takingToDashboard": "Du wirst zu deinem Dashboard weitergeleitet", + "pleaseWait": "Bitte warten", + "goToDashboard": "Zum Dashboard", + "backToDashboard": "Zurück zum Dashboard", + "uploading": "Wird hochgeladen...", + "saved": "Gespeichert", + "uploadContinue": "Hochladen und fortfahren", + "yes": "Ja", + "no": "Nein", + "dragAndDrop": "Datei hier ablegen oder zum Auswählen klicken", + "remove": "Entfernen", + "maxUploadHint": "Max. 10 MB. JPG, PNG oder PDF.", + "statusCards": { + "emailVerification": "E-Mail-Verifizierung", + "idDocument": "Ausweisdokument", + "additionalInfo": "Zusätzliche Angaben", + "contract": "Vertrag", + "verified": "Bestätigt", + "missing": "Fehlt", + "uploaded": "Hochgeladen", + "signed": "Unterschrieben" + }, + "emailVerify": { + "title": "E-Mail bestätigen", + "sentIntro": "Wir haben einen 6-stelligen Code gesendet an", + "sendingIntro": "Bestätigungs-E-Mail wird gesendet an", + "yourEmail": "deine E-Mail-Adresse", + "enterBelow": "Gib ihn unten ein.", + "invalidCode": "Bitte gib den vollständigen 6-stelligen Code ein.", + "authError": "Nicht authentifiziert. Bitte melde dich erneut an.", + "emailVerifiedTitle": "E-Mail bestätigt", + "emailVerifiedMessage": "Deine E-Mail wurde erfolgreich bestätigt.", + "verificationFailedTitle": "Bestätigung fehlgeschlagen", + "networkErrorTitle": "Netzwerkfehler", + "verifying": "Wird bestätigt...", + "verified": "Bestätigt", + "confirmCode": "Code bestätigen", + "resendCode": "Code erneut senden", + "supportHint": "Keine E-Mail erhalten? Bitte prüfe deinen Spam-Ordner. Probleme bestehen weiter?", + "contactSupport": "Support kontaktieren", + "verifiedRedirecting": "Bestätigt! Weiterleitung in Kürze..." + }, + "uploadId": { + "personalTitle": "Ausweisdokument hochladen", + "personalSubtitle": "Lade dein Ausweisdokument hoch, um dein Onboarding fortzusetzen.", + "companyTitle": "Firmendokumente hochladen", + "companySubtitle": "Lade die erforderlichen Firmendokumente hoch, um dein Onboarding fortzusetzen.", + "idNumber": "Ausweisnummer *", + "idNumberPlaceholder": "Gib deine Ausweisnummer ein", + "idNumberHint": "Gib die Dokumentnummer genau wie auf dem Dokument angegeben ein.", + "contactPersonIdNumber": "Ausweisnummer der Kontaktperson *", + "contactPersonIdNumberPlaceholder": "Ausweisnummer der Kontaktperson eingeben", + "contactPersonIdNumberHint": "Gib die Ausweisnummer genau wie auf dem Dokument angegeben ein.", + "idType": "Ausweistyp *", + "documentType": "Dokumenttyp *", + "selectIdType": "Ausweistyp wählen", + "selectDocumentType": "Dokumenttyp wählen", + "expiryDate": "Ablaufdatum *", + "expiryDateHint": "Wähle das Ablaufdatum auf dem Dokument.", + "backSideQuestion": "Hat dein Dokument eine Rückseite?", + "frontPreviewAlt": "Vorschau Vorderseite", + "backPreviewAlt": "Vorschau Rückseite", + "primaryPreviewAlt": "Vorschau Hauptdokument", + "supportingPreviewAlt": "Vorschau Zusatzdokument", + "clickUploadFront": "Zum Hochladen der Vorderseite klicken", + "clickUploadBack": "Zum Hochladen der Rückseite klicken", + "documentsChecklistTitle": "Bitte stelle vor dem Hochladen sicher, dass das Dokument:", + "clearlyVisible": "Gut lesbar ist", + "showCorners": "Alle vier Ecken zeigt", + "notExpired": "Nicht abgelaufen ist", + "goodLighting": "Keine Spiegelungen oder dunklen Schatten hat", + "bothSidesUploaded": "Beide Seiten hochgeladen", + "frontSideUploaded": "Vorderseite hochgeladen", + "successSavedRedirecting": "Erfolgreich gespeichert. Weiterleitung...", + "personalUploadSuccessTitle": "Dokumente hochgeladen", + "personalUploadSuccessMessage": "Deine Ausweisdokumente wurden erfolgreich hochgeladen.", + "companyUploadSuccessTitle": "Firmendokumente hochgeladen", + "companyUploadSuccessMessage": "Deine Firmendokumente wurden erfolgreich hochgeladen.", + "fileTooLargeTitle": "Datei zu groß", + "fileTooLargeMessage": "Bitte lade eine Datei hoch, die kleiner als 10 MB ist.", + "missingInfoTitle": "Fehlende Informationen", + "fillRequiredFields": "Bitte fülle alle Pflichtfelder aus.", + "frontSideMissingTitle": "Vorderseite fehlt", + "frontSideMissingMessage": "Bitte lade die Vorderseite hoch.", + "backSideMissingTitle": "Rückseite fehlt", + "backSideMissingMessage": "Bitte lade die Rückseite hoch.", + "authErrorTitle": "Authentifizierungsfehler", + "uploadFailedTitle": "Hochladen fehlgeschlagen", + "uploadFailedMessage": "Deine Dokumente konnten nicht hochgeladen werden.", + "networkErrorTitle": "Netzwerkfehler", + "networkErrorMessage": "Beim Hochladen der Dokumente ist ein Netzwerkfehler aufgetreten." + }, + "additionalInfo": { + "title": "Vervollständige dein Profil", + "companyTitle": "Firmenprofil vervollständigen", + "personalInformation": "Persönliche Informationen", + "companyDetails": "Firmendaten", + "bankDetails": "Bankdaten", + "additionalInformation": "Zusätzliche Informationen", + "firstName": "Vorname *", + "lastName": "Nachname *", + "email": "E-Mail *", + "phoneNumber": "Telefonnummer *", + "dateOfBirth": "Geburtsdatum *", + "nationality": "Nationalität", + "selectNationality": "Nationalität auswählen...", + "streetHouseNumber": "Straße & Hausnummer *", + "streetNumber": "Straße & Nummer *", + "postalCode": "Postleitzahl *", + "city": "Stadt *", + "country": "Land", + "selectCountry": "Land auswählen...", + "accountHolder": "Kontoinhaber *", + "iban": "IBAN *", + "secondPhoneOptional": "Zweite Telefonnummer (optional)", + "emergencyContactName": "Notfallkontakt Name", + "emergencyContactPhone": "Notfallkontakt Telefon", + "fullNamePlaceholder": "Vollständiger Name", + "postalCodePlaceholder": "z. B. 12345", + "cityPlaceholder": "z. B. Berlin", + "phonePlaceholder": "z. B. +43 676 1234567", + "streetPlaceholder": "Straße & Hausnummer", + "ibanPlaceholder": "z. B. DE89 3704 0044 0532 0130 00", + "companyName": "Firmenname *", + "companyEmail": "Firmen-E-Mail *", + "companyPhone": "Firmentelefon *", + "contactPerson": "Kontaktperson *", + "contactPersonPhone": "Telefon Kontaktperson *", + "registrationNumberOptional": "Firmenbuchnummer (optional)", + "uidNumberOptional": "UID-Nummer (optional)", + "companyHolderPlaceholder": "Firma / Kontoinhaber", + "registrationPlaceholder": "z. B. FN123456a", + "uidPlaceholder": "z. B. ATU12345678", + "bicOptional": "BIC (optional)", + "bicPlaceholder": "GENODEF1XXX", + "contactNamePlaceholder": "Name des Kontakts", + "emergencyContactNamePlaceholder": "Name des Kontakts", + "additionalInfoSuccessTitle": "Profil gespeichert", + "personalSuccessMessage": "Dein persönliches Profil wurde erfolgreich gespeichert.", + "companySuccessMessage": "Dein Firmenprofil wurde erfolgreich gespeichert.", + "dataSavedRedirecting": "Daten gespeichert. Weiterleitung in Kürze…", + "saveContinue": "Speichern und fortfahren", + "saveFailedTitle": "Speichern fehlgeschlagen", + "saveFailedMessage": "Speichern fehlgeschlagen. Bitte versuche es erneut.", + "invalidDateOfBirthTitle": "Ungültiges Geburtsdatum", + "invalidDateOfBirthMessage": "Ungültiges Geburtsdatum. Du musst mindestens 18 Jahre alt sein.", + "invalidIbanTitle": "Ungültige IBAN", + "invalidIbanMessage": "Ungültige IBAN.", + "missingCountryCodeTitle": "Ländervorwahl fehlt", + "missingPhoneNumberTitle": "Telefonnummer fehlt", + "invalidPhoneNumberTitle": "Ungültige Telefonnummer", + "missingCountryCodeMessage": "Bitte wähle eine Ländervorwahl für deine Telefonnummer aus.", + "phoneNumberMissingMessage": "Bitte gib deine Telefonnummer ein.", + "validPhoneNumberMessage": "Bitte gib eine gültige Telefonnummer ein.", + "validSecondPhoneNumberMessage": "Bitte gib eine gültige zweite Telefonnummer ein.", + "validEmergencyPhoneNumberMessage": "Bitte gib eine gültige Telefonnummer für den Notfallkontakt ein.", + "fillRequiredFields": "Bitte fülle alle Pflichtfelder aus.", + "authErrorTitle": "Authentifizierungsfehler", + "authErrorMessage": "Nicht authentifiziert. Bitte melde dich erneut an.", + "searchPlaceholder": "Suchen…", + "noResults": "Keine Ergebnisse", + "countries": { + "germany": "Deutschland", + "austria": "Österreich", + "switzerland": "Schweiz", + "italy": "Italien", + "france": "Frankreich", + "spain": "Spanien", + "portugal": "Portugal", + "netherlands": "Niederlande", + "belgium": "Belgien", + "poland": "Polen", + "czechRepublic": "Tschechien", + "hungary": "Ungarn", + "croatia": "Kroatien", + "slovenia": "Slowenien", + "slovakia": "Slowakei", + "unitedKingdom": "Vereinigtes Königreich", + "ireland": "Irland", + "sweden": "Schweden", + "norway": "Norwegen", + "denmark": "Dänemark", + "finland": "Finnland", + "russia": "Russland", + "turkey": "Türkei", + "greece": "Griechenland", + "romania": "Rumänien", + "bulgaria": "Bulgarien", + "serbia": "Serbien", + "albania": "Albanien", + "bosniaHerzegovina": "Bosnien und Herzegowina", + "unitedStates": "Vereinigte Staaten", + "canada": "Kanada", + "brazil": "Brasilien", + "argentina": "Argentinien", + "mexico": "Mexiko", + "china": "China", + "japan": "Japan", + "india": "Indien", + "pakistan": "Pakistan", + "australia": "Australien", + "southAfrica": "Südafrika", + "other": "Andere" }, + "nationalities": { + "german": "Deutsch", + "austrian": "Österreichisch", + "swiss": "Schweizerisch", + "italian": "Italienisch", + "french": "Französisch", + "spanish": "Spanisch", + "portuguese": "Portugiesisch", + "dutch": "Niederländisch", + "belgian": "Belgisch", + "polish": "Polnisch", + "czech": "Tschechisch", + "hungarian": "Ungarisch", + "croatian": "Kroatisch", + "slovenian": "Slowenisch", + "slovak": "Slowakisch", + "british": "Britisch", + "irish": "Irisch", + "swedish": "Schwedisch", + "norwegian": "Norwegisch", + "danish": "Dänisch", + "finnish": "Finnisch", + "russian": "Russisch", + "turkish": "Türkisch", + "greek": "Griechisch", + "romanian": "Rumänisch", + "bulgarian": "Bulgarisch", + "serbian": "Serbisch", + "albanian": "Albanisch", + "bosnian": "Bosnisch", + "american": "Amerikanisch", + "canadian": "Kanadisch", + "brazilian": "Brasilianisch", + "argentinian": "Argentinisch", + "mexican": "Mexikanisch", + "chinese": "Chinesisch", + "japanese": "Japanisch", + "indian": "Indisch", + "pakistani": "Pakistanisch", + "australian": "Australisch", + "southAfrican": "Südafrikanisch", + "other": "Andere" + } }, - noData: 'Keine Daten verfügbar.', + "contractSigning": { + "personalTitle": "Persönlichen Teilnahmevertrag unterschreiben", + "companyTitle": "Firmenpartnerschaftsvertrag unterschreiben", + "personalSubtitle": "Bitte prüfe die Vertragsdetails und unterschreibe elektronisch.", + "companySubtitle": "Bitte prüfe die Vertragsdetails und unterschreibe im Namen des Unternehmens.", + "documentInformation": "Dokumentinformationen", + "documentPreview": "Dokumentvorschau", + "contractTab": "Vertrag", + "gdprTab": "DSGVO", + "openInNewTab": "In neuem Tab öffnen", + "refresh": "Aktualisieren", + "loadingPreview": "Vorschau wird geladen…", + "noContractAvailable": "Derzeit ist kein Vertrag verfügbar. Bitte kontaktiere uns.", + "noteTitle": "Hinweis", + "noteBody": "Deine elektronische Signatur ist rechtsverbindlich. Bitte stelle sicher, dass alle Angaben korrekt sind.", + "attentionTitle": "Achtung", + "attentionBody": "Du bestätigst, dass du berechtigt bist, im Namen des Unternehmens zu unterschreiben.", + "documentLabel": "Dokument:", + "idLabel": "ID:", + "versionLabel": "Version / Grundlage:", + "jurisdictionLabel": "Gerichtsstand:", + "languageLabel": "Sprache:", + "issuerLabel": "Aussteller:", + "addressLabel": "Adresse:", + "signatureSection": "Unterschrift", + "drawSignature": "Unterschrift zeichnen *", + "clear": "Leeren", + "signatureHelp": "Zum Unterschreiben Maus oder Touch verwenden. Eine Signatur ist erforderlich.", + "captured": "Erfasst", + "confirmations": "Bestätigungen", + "confirmContractPersonal": "Ich bestätige, dass ich den Vertrag vollständig gelesen und verstanden habe.", + "confirmDataPersonal": "Ich stimme der Verarbeitung meiner personenbezogenen Daten gemäß der Datenschutzerklärung zu.", + "confirmSignaturePersonal": "Ich bestätige, dass diese elektronische Signatur rechtsverbindlich und einer handschriftlichen Unterschrift gleichwertig ist.", + "confirmContractCompany": "Ich bestätige, dass ich den vollständigen Vertrag im Namen des Unternehmens gelesen und akzeptiert habe.", + "confirmDataCompany": "Ich stimme der Verarbeitung von Unternehmens- und personenbezogenen Daten gemäß der Datenschutzerklärung zu.", + "confirmSignatureCompany": "Ich bin berechtigt, rechtsverbindliche Dokumente für dieses Unternehmen zu unterzeichnen.", + "noDocumentsAvailableTitle": "Keine Dokumente verfügbar", + "noDocumentsAvailableMessage": "Verträge können derzeit nicht unterzeichnet werden. Momentan sind keine aktiven Dokumente verfügbar.", + "missingInformationTitle": "Fehlende Informationen", + "completePrefix": "Bitte vervollständige:", + "contractReadUnderstood": "Vertrag gelesen und verstanden", + "privacyAccepted": "Datenschutzerklärung akzeptiert", + "electronicSignatureConfirmed": "Elektronische Signatur bestätigt", + "signatureCaptured": "Signatur im Feld erfasst", + "authErrorTitle": "Authentifizierungsfehler", + "authErrorMessage": "Nicht authentifiziert. Bitte melde dich erneut an.", + "contractSignedTitle": "Vertrag unterschrieben", + "personalContractSignedMessage": "Dein persönlicher Vertrag wurde erfolgreich unterschrieben.", + "companyContractSignedMessage": "Dein Firmenvertrag wurde erfolgreich unterschrieben.", + "signingFailedTitle": "Signatur fehlgeschlagen", + "signingFailedMessage": "Die Signatur ist fehlgeschlagen. Bitte versuche es erneut.", + "contractSignedRedirecting": "Vertrag erfolgreich unterschrieben. Weiterleitung in Kürze…", + "signing": "Wird unterschrieben…", + "signed": "Unterschrieben", + "signNow": "Jetzt unterschreiben" + } }, - - profile: { - title: 'Mein Profil', - personalInfo: 'Persönliche Informationen', - bankInfo: 'Bankdaten', - documents: 'Dokumente', - memberStatus: 'Mitgliedsstatus', - profileComplete: 'Profilkompletion', - firstName: 'Vorname', - lastName: 'Nachname', - email: 'E-Mail-Adresse', - phone: 'Telefonnummer', - address: 'Adresse', - joinDate: 'Mitglied seit', - accountHolder: 'Kontoinhaber', - iban: 'IBAN', - contactPersonName: 'Kontaktperson', - editBasicInfo: 'Persönliche Daten bearbeiten', - editBankInfo: 'Bankdaten bearbeiten', - saveChanges: 'Änderungen speichern', - documentName: 'Dokumentname', - documentType: 'Typ', - documentUploaded: 'Hochgeladen', - downloadDocument: 'Herunterladen', - noDocuments: 'Noch keine Dokumente hochgeladen.', - refreshProfile: 'Profil aktualisieren', - loading: 'Profil wird geladen…', + "suspended": { + "title": "Konto gesperrt", + "message": "Dein Konto wurde gesperrt. Bitte kontaktiere den Support für weitere Hilfe.", + "contactSupport": "Support kontaktieren", + "backToLogin": "Zurück zur Anmeldung", + "reason": "Grund" }, - - community: { - title: 'Community', - subtitle: 'Verbinde dich mit der Profit Planet Community.', - description: 'Nimm an Diskussionen teil und vernetze dich mit anderen Mitgliedern.', - loading: 'Community wird geladen…', - accessDenied: 'Zugriff verweigert', - noAccess: 'Du musst angemeldet sein, um auf die Community zugreifen zu können.', + "adminDashboard": { + "title": "Admin-Dashboard", + "subtitle": "Alle administrativen Funktionen, Benutzerverwaltung, Berechtigungen und globale Einstellungen verwalten.", + "warningTitle": "Warnung: Einstellungen und Aktionen unterhalb dieses Punktes können Konsequenzen für das gesamte System haben!", + "warningMessage": "Alle administrativen Funktionen, Benutzerverwaltung, Berechtigungen und globale Einstellungen verwalten.", + "accessDenied": "Zugriff verweigert", + "accessDeniedMessage": "Du benötigst Administratorrechte, um auf diese Seite zuzugreifen.", + "loading": "Laden…", + "totalUsers": "Benutzer gesamt", + "admins": "Admins", + "active": "Aktiv", + "pendingVerification": "Ausstehende Verifizierung", + "personal": "Privat", + "company": "Unternehmen", + "managementShortcuts": "Verwaltungsverknüpfungen", + "managementShortcutsSubtitle": "Schnellzugriff auf häufige Admin-Module.", + "matrixManagement": "Matrix-Verwaltung", + "matrixManagementDesc": "Matrizen und Benutzer konfigurieren", + "coffeeSubscriptions": "Kaffee-Abonnement-Verwaltung", + "coffeeSubscriptionsDesc": "Pläne, Abrechnung und Verlängerungen", + "contractManagement": "Vertragsverwaltung", + "contractManagementDesc": "Vorlagen, Genehmigungen, Status", + "dashboardManagement": "Dashboard-Verwaltung", + "dashboardManagementDesc": "Dashboard-Plattformen konfigurieren", + "userManagement": "Benutzerverwaltung", + "userManagementDesc": "Alle Benutzer durchsuchen und verwalten", + "userVerify": "Benutzer verifizieren", + "userVerifyDesc": "Onboarding-Status der Benutzer prüfen und verifizieren", + "financeManagement": "Finanzverwaltung", + "financeManagementDesc": "Steuersätze, Abrechnungseinstellungen und Finanztools", + "poolManagement": "Pool-Verwaltung", + "poolManagementDesc": "Pool-Strukturen und Zuweisungen verwalten", + "affiliateManagement": "Affiliate-Verwaltung", + "affiliateManagementDesc": "Partner-Inhalte und Affiliate-Steuerung", + "newsManagement": "Neuigkeiten-Verwaltung", + "newsManagementDesc": "Nachrichtenartikel erstellen und verwalten", + "devManagement": "Entwickler-Verwaltung", + "devManagementDesc": "SQL-Abfragen und Entwicklertools ausführen", + "languageManagement": "Sprachverwaltung", + "languageManagementDesc": "Sprachen hinzufügen und UI-Übersetzungen verwalten", + "moduleDisabled": "Dieses Modul ist derzeit in der Systemkonfiguration deaktiviert.", + "adminAccessRequired": "Administratorzugriff erforderlich.", + "adminNavigation": "Admin-Navigation", + "adminNavigationHelp": "Öffne das Dashboard, um über die Modulkarten auf alle Admin-Bereiche zuzugreifen.", + "serverStatusLogs": "Serverstatus & Logs", + "serverStatusLogsSubtitle": "Systemzustand, Ressourcennutzung und aktuelle Fehlerhinweise.", + "serverStatusLabel": "Serverstatus:", + "serverOnline": "Server online", + "serverOffline": "Offline", + "uptime": "Laufzeit:", + "cpuUsage": "CPU-Auslastung:", + "memoryUsage": "Speichernutzung:", + "autoscaledEnvironment": "Autoskalierte Umgebung (Mock)", + "recentErrorLogs": "Aktuelle Fehlerprotokolle", + "noRecentLogs": "Keine aktuellen Logs.", + "viewFullLogs": "Alle Logs anzeigen" }, - - shop: { - title: 'Shop', - subtitle: 'Nachhaltige Produkte entdecken.', - comingSoon: 'Demnächst verfügbar', - addToCart: 'In den Warenkorb', - price: 'Preis', - outOfStock: 'Nicht vorrätig', - viewDetails: 'Details ansehen', + "userManagement": { + "title": "Benutzerverwaltung", + "subtitle": "Alle Benutzer durchsuchen und verwalten.", + "searchPlaceholder": "Benutzer suchen…", + "firstName": "Vorname", + "lastName": "Nachname", + "email": "E-Mail", + "role": "Rolle", + "status": "Status", + "actions": "Aktionen", + "verify": "Verifizieren", + "ban": "Sperren", + "unban": "Entsperren", + "exportCsv": "CSV exportieren", + "noUsers": "Keine Benutzer gefunden.", + "loading": "Benutzer werden geladen…", + "confirmBan": "Bist du sicher, dass du diesen Benutzer sperren möchtest?", + "confirmUnban": "Bist du sicher, dass du diesen Benutzer entsperren möchtest?", + "confirmVerify": "Bist du sicher, dass du diesen Benutzer verifizieren möchtest?", + "createdAt": "Erstellt am", + "lastLogin": "Letzter Login", + "userType": "Benutzertyp" }, - - memberships: { - title: 'Mitgliedschaften', - subtitle: 'Wähle den richtigen Plan für dich.', - description: 'Werde Mitglied und schalte exklusive Vorteile frei.', - selectPlan: 'Plan auswählen', - perMonth: 'pro Monat', - perYear: 'pro Jahr', - mostPopular: 'Am beliebtesten', - choosePlan: 'Diesen Plan wählen', + "languageManagement": { + "title": "Sprachverwaltung", + "subtitle": "UI-Übersetzungen verwalten. Alle Schlüssel aus der englischen Quelldatei gescannt.", + "addLanguage": "Sprache hinzufügen", + "languageCode": "Sprachcode", + "languageName": "Sprachname", + "languageCodePlaceholder": "z.B. fr, es, zh-TW", + "languageNamePlaceholder": "z.B. Français", + "addBtn": "Hinzufügen", + "deleteLanguage": "Sprache löschen", + "deleteConfirm": "Löschen", + "deleteWarning": "Alle Übersetzungen für diese Sprache werden entfernt.", + "saveChanges": "Änderungen speichern", + "saved": "Gespeichert", + "unsavedChanges": "Du hast ungespeicherte Änderungen.", + "saveNow": "Speichern", + "translationProgress": "Übersetzungsfortschritt", + "keysTranslated": "Schlüssel übersetzt", + "backToAdmin": "Zurück zum Admin", + "searchPlaceholder": "Schlüssel oder englischen Text suchen…", + "noKeysMatch": "Keine Schlüssel entsprechen deiner Suche.", + "englishReference": "Englisch (Referenz)", + "clearOverride": "Überschreibung löschen (auf Standard zurücksetzen)", + "invalidCode": "Verwende einen gültigen BCP-47-Code, z.B. fr, es, zh-TW.", + "codeDuplicate": "Sprache existiert bereits.", + "codeRequired": "Sprachcode ist erforderlich.", + "nameRequired": "Sprachname ist erforderlich.", + "wizardInputPlaceholder": "Übersetzung eingeben" }, - - affiliateLinks: { - title: 'Affiliate-Links', - subtitle: 'Unsere Partner-Links entdecken.', - description: 'Durchsuche und teile unsere Partner-Links, um Prämien zu verdienen.', - visitLink: 'Link besuchen', - partnerLinks: 'Partner-Links', + "contractManagement": { + "title": "Vertragsverwaltung", + "subtitle": "Vertragsvorlagen verwalten.", + "uploadTemplate": "Vorlage hochladen", + "currentTemplate": "Aktuelle Vorlage", + "noTemplate": "Keine Vorlage hochgeladen.", + "previewTemplate": "Vorlage ansehen", + "saveTemplate": "Vorlage speichern", + "loading": "Laden…", + "uploadSuccess": "Vorlage erfolgreich hochgeladen.", + "uploadError": "Vorlage konnte nicht hochgeladen werden." }, - - aboutUs: { - title: 'Über uns', - subtitle: 'Erfahre mehr über Profit Planet.', - description: 'Gemeinsam bauen wir eine nachhaltige Zukunft.', - ourTeam: 'Unser Team', - ourMission: 'Unsere Mission', + "userDetailModal": { + "error": "Fehler", + "personal": "Privat", + "company": "Unternehmen", + "superAdmin": "Super Admin", + "currentStatus": "Aktueller Status", + "adminControls": "Admin-Steuerung", + "missingDocumentsWarning": "Für diesen Benutzer fehlen Ausweisdokumente oder ein unterzeichneter Vertrag. Der Verifizierungsstatus sollte überprüft werden.", + "missingStorageWarning": "Ausweisdokumente oder ein unterzeichneter Vertrag fehlen im Objektspeicher. Überprüfen Sie den Dateispeicher vor der Verifizierung.", + "changeStatus": "Status ändern", + "adminVerification": "Admin-Verifizierung", + "allStepsCompleted": "Alle Schritte abgeschlossen. Sie können diesen Benutzer verifizieren.", + "stepsNotCompleted": "Der Benutzer hat noch nicht alle erforderlichen Schritte abgeschlossen.", + "updating": "Wird aktualisiert...", + "unverifyUser": "Verifizierung aufheben", + "verifyUser": "Benutzer verifizieren", + "contractPreview": "Vertragsvorschau", + "contractTab": "Vertrag", + "gdprTab": "DSGVO", + "loadingPreview": "Lädt…", + "preview": "Vorschau", + "openInNewTab": "In neuem Tab öffnen", + "filesIn": "Dateien in", + "refreshing": "Aktualisiert…", + "refresh": "Aktualisieren", + "loadingFiles": "Lädt Dateien…", + "noFilesFound": "Keine Dateien in diesem Ordner gefunden.", + "selected": "Ausgewählt:", + "moving": "Wird verschoben…", + "moveTo": "Verschieben nach", + "loadingPreviewText": "Vorschau wird geladen…", + "clickPreviewHint": "Klicken Sie auf „Vorschau\", um die neueste Vorlage für diesen Benutzer zu rendern.", + "personalInformation": "Persönliche Informationen", + "firstName": "Vorname", + "lastName": "Nachname", + "phone": "Telefon", + "dateOfBirth": "Geburtsdatum", + "address": "Adresse", + "companyInformation": "Unternehmensinformationen", + "companyName": "Unternehmensname", + "registrationNumber": "Registrierungsnummer", + "taxId": "Steuer-ID", + "registrationProgress": "Registrierungsfortschritt", + "emailVerified": "E-Mail verifiziert", + "profileCompleted": "Profil abgeschlossen", + "documentsUploaded": "Dokumente hochgeladen", + "contractSigned": "Vertrag unterzeichnet", + "permissions": "Berechtigungen", + "savingPermissions": "Wird gespeichert…", + "savePermissions": "Berechtigungen speichern", + "loadingPermissions": "Berechtigungen werden geladen…", + "noPermissionsAvailable": "Keine Berechtigungen verfügbar.", + "inactive": "Inaktiv", + "close": "Schließen", + "moveDocumentTitle": "Dokument verschieben nach", + "moveDocumentDescription": "Das Dokument wird unter dem gewählten Vertragstyp neu klassifiziert.", + "moveDocumentConfirm": "Dokument verschieben", + "moveDocumentFile": "Datei:", + "completeStepsTooltip": "Schließen Sie alle Schritte ab und stellen Sie sicher, dass Dateien im Objektspeicher vorhanden sind, bevor Sie die Admin-Verifizierung durchführen" }, - - news: { - title: 'Neuigkeiten', - subtitle: 'Bleib mit Profit Planet auf dem Laufenden.', - readMore: 'Mehr lesen', - publishedDate: 'Veröffentlicht', - category: 'Kategorie', - noArticles: 'Keine Artikel verfügbar.', - loadMore: 'Mehr laden', + "invoiceDetailModal": { + "invoiceTitle": "Rechnung", + "statusDraft": "Entwurf", + "statusIssued": "Ausgestellt", + "statusPaid": "Bezahlt", + "statusOverdue": "Überfällig", + "statusCanceled": "Storniert", + "changeStatus": "Status ändern:", + "updatingStatus": "Status wird aktualisiert…", + "created": "Erstellt", + "customer": "Kunde", + "name": "Name", + "email": "E-Mail", + "street": "Straße", + "city": "Stadt", + "country": "Land", + "userId": "Benutzer-ID", + "financials": "Finanzen", + "net": "Netto", + "tax": "Steuer", + "gross": "Brutto", + "vatRate": "MwSt-Satz", + "currency": "Währung", + "dates": "Daten", + "issued": "Ausgestellt", + "due": "Fällig", + "updated": "Aktualisiert", + "lineItems": "Positionen", + "noLineItems": "Keine Positionen gefunden.", + "description": "Beschreibung", + "qty": "Menge", + "unitPrice": "Stückpreis", + "total": "Gesamt", + "payments": "Zahlungen", + "method": "Methode", + "transaction": "Transaktion", + "amount": "Betrag", + "paidAt": "Bezahlt am", + "status": "Status", + "contextMetadata": "Kontext / Metadaten", + "clickToExpand": "(zum Erweitern klicken)", + "exportJson": "JSON exportieren", + "poolCheck": "Pool-Prüfung", + "close": "Schließen", + "poolErrorPrefix": "Pool-Buchungsfehler:", + "poolInflowsBooked": "Pool-Zufluss/Zuflüsse gebucht", + "statusUpdatedTo": "Status aktualisiert zu", + "reasonInvalidInvoiceId": "Ungültige Rechnungs-ID", + "reasonInvoiceNotFound": "Rechnung für Pool-Buchung nicht gefunden", + "reasonInvoiceNotPaid": "Rechnung nicht als bezahlt markiert", + "reasonUnsupportedSourceType": "Kein Abonnement — keine Pool-Buchung", + "reasonMissingAbonementRelation": "Kein verknüpftes Abonnement — keine Pool-Buchung", + "reasonAbonementNotFound": "Verknüpftes Abonnement nicht gefunden", + "reasonNoBreakdownLines": "Abonnement hat keine Kapselaufschlüsselung — keine Pool-Buchung", + "reasonNoActivePools": "Keine aktiven System-Pools gefunden" }, - - // ─── Coffee ABO ──────────────────────────────────────── - coffeeSelection: { - title: 'Kaffee-Abonnement', - subtitle: 'Wähle deine Kaffeesorten für diesen Monat.', - selectYourCoffees: 'Deine Kaffees auswählen', - capsuleTarget: 'Kapsel-Ziel', - planLabel: 'Dein Plan', - yourSelection: 'Deine Auswahl', - totalCapsules: 'Kapseln gesamt', - totalPacks: 'Packungen gesamt', - targetPacks: 'Ziel-Packungen', - selectUpTo: 'Auswahl bis zu', - goToSummary: 'Zur Zusammenfassung', - loading: 'Kaffees werden geladen…', - noProducts: 'Keine Kaffees verfügbar.', - validationExact: 'Du benötigst genau {count} Kapseln ({packs} Packungen).', - packOf10: '10er-Packung', - pricePerPack: 'pro Packung', - }, - - coffeeSummary: { - title: 'Zusammenfassung & Details', - backToSelection: 'Zurück zur Auswahl', - stepSelection: 'Auswahl', - stepSummary: 'Zusammenfassung', - yourDetails: '1. Deine Daten', - fillFromLoggedIn: 'Felder mit angemeldeten Daten füllen', - firstName: 'Vorname', - lastName: 'Nachname', - email: 'E-Mail', - street: 'Straße & Nr.', - zip: 'PLZ', - city: 'Stadt', - country: 'Land', - phone: 'Telefon', - phoneOptional: 'Telefon (optional)', - paymentMethod: 'Zahlungsmethode', - paymentSepa: 'SEPA', - paymentCard: 'Kreditkarte', - paymentSofort: 'Sofort Banking', - invoiceByEmail: 'Rechnung per E-Mail senden', - invoiceAddress: 'Rechnungsadresse', - sameAsShipping: 'Wie Lieferadresse', - uidNumberLabel: 'UID-Nummer (optional)', - uidNumberPlaceholder: 'z.B. SI12345678', - uidNumberHint: 'Ohne gültige UID wird die Rechnung mit normaler MwSt erstellt.', - reverseChargeHint: 'Unternehmer mit gültiger UID und Rechnungsland außerhalb von AT werden per Reverse Charge ohne ausgewiesene MwSt verrechnet.', - fullName: 'Vollständiger Name', - contractPreview: 'Vertragsvorschau (ABO)', - contractSubtitle: 'Vertragsvariablen werden automatisch aus deinen Formulardaten befüllt.', - openPreview: 'Vorschau öffnen', - contractLoading: 'Vertragsvorschau wird geladen…', - contractError: 'Vertragsvorschau konnte nicht geladen werden:', - contractNotAvailable: 'Vertragsvorlage ist nicht verfügbar.', - pdfPreviewTitle: 'ABO-Vertragsvorschau (PDF)', - pdfGenerating: 'PDF-Vorschau wird erstellt…', - pdfError: 'PDF-Vorschau konnte nicht erstellt werden:', - pdfNotAvailable: 'Keine PDF-Vorschau verfügbar.', - signingCity: 'Ort *', - signingCityPlaceholder: 'z.B. Wien', - signingCityRequired: 'Ort ist erforderlich.', - signatureRequired: 'Unterschrift ist erforderlich.', - completeSubscription: 'Abonnement abschließen', - creating: 'Wird erstellt…', - cannotSubmit: 'Bitte wähle Kaffees aus und fülle alle Pflichtfelder, Ort und Unterschrift aus.', - yourSelection: '2. Deine Auswahl', - shipping: 'Versand', - freeShipping: 'KOSTENLOSER VERSAND', - shippingLoading: 'Laden…', - shippingError: 'Versandkosten konnten nicht geladen werden:', - totalNet: 'Gesamt (netto)', - tax: 'MwSt. ({rate}%)', - taxReverseCharge: 'Steuer (Reverse Charge)', - totalInclTax: 'Gesamt inkl. MwSt.', - reverseChargeActive: 'Reverse Charge aktiv: gültige UID und ausländisches Rechnungsland erkannt.', - capsuleValidation: 'Ausgewählt: {selected} Kapseln ({selectedPacks} Packungen à 10). Ziel: {target} Kapseln ({targetPacks} Packungen).', - exactlyRequired: 'Genau {packs} Packungen ({capsules} Kapseln) sind erforderlich.', - thankYouTitle: 'Danke für dein Abonnement!', - thankYouMessage: 'Abonnement erstellt.', - noSelectionFound: 'Keine Auswahl gefunden.', - noLoggedInData: 'Keine angemeldeten Benutzerdaten zum Befüllen der Felder gefunden.', - }, - - // ─── Account ─────────────────────────────────────────── - personalMatrix: { - title: 'Persönliche Matrix', - subtitle: 'Deine Netzwerkstruktur.', - description: 'Sieh dir deine persönliche Matrix und dein Downline-Netzwerk an.', - loading: 'Matrix wird geladen…', - noData: 'Keine Matrix-Daten verfügbar.', - }, - - referralManagement: { - title: 'Empfehlungsverwaltung', - subtitle: 'Verwalte deine Empfehlungslinks.', - description: 'Erstelle und verwalte deine Empfehlungslinks. Verfolge die Performance auf einen Blick.', - createLink: 'Empfehlungslink erstellen', - copyLink: 'Link kopieren', - copy: 'Kopieren', - copyMobile: 'Link kopieren', - copied: 'Kopiert', - copiedToClipboard: 'In die Zwischenablage kopiert!', - linkExpiry: 'Läuft ab', - noLinks: 'Keine Empfehlungslinks gefunden.', - generating: 'Wird erstellt…', - generateLink: 'Link generieren', - usesRemaining: 'verbleibende Nutzungen', - unlimited: 'Unbegrenzt', - never: 'Nie', - createSuccess: 'Empfehlungslink erfolgreich erstellt.', - createError: 'Empfehlungslink konnte nicht erstellt werden.', - deactivate: 'Deaktivieren', - deactivated: 'Link deaktiviert', - deactivatedMessage: 'Der Empfehlungslink wurde erfolgreich deaktiviert.', - deactivateFailed: 'Deaktivierung fehlgeschlagen', - deactivateFailedMessage: 'Der Empfehlungslink konnte nicht deaktiviert werden.', - deactivateNetworkError: 'Netzwerkfehler beim Deaktivieren des Empfehlungslinks.', - deactivateModalTitle: 'Empfehlungslink deaktivieren?', - deactivateModalDescription: 'Dies deaktiviert den ausgewählten Empfehlungslink sofort, sodass er nicht mehr verwendet werden kann.', - linkLabel: 'Link', - accessCheckFailed: 'Zugriffsprüfung fehlgeschlagen', - userIdMissing: 'Benutzer-ID fehlt. Weiterleitung…', - accessDenied: 'Zugriff verweigert', - accessDeniedMessage: 'Du hast keine Berechtigung für die Empfehlungsverwaltung.', - permCheckFailed: 'Berechtigungsprüfung fehlgeschlagen', - permCheckFailedMessage: 'Berechtigungen konnten nicht verifiziert werden. Weiterleitung…', - loadFailed: 'Laden fehlgeschlagen', - loadStatsError: 'Empfehlungsstatistiken konnten nicht geladen werden.', - loadLinksError: 'Empfehlungslinks konnten nicht geladen werden.', - copyFailed: 'Kopieren fehlgeschlagen', - copyFailedMessage: 'Link konnte nicht in die Zwischenablage kopiert werden.', - copiedMessage: 'Link in die Zwischenablage kopiert.', - allLinks: 'Alle Empfehlungslinks', - allLinksSubtitle: 'Verwalte deine Links und sieh deren Status.', - colLink: 'Link', - colCreated: 'Erstellt', - colExpires: 'Läuft ab', - colUsage: 'Nutzung', - colStatus: 'Status', - generateTitle: 'Empfehlungslink generieren', - maxUsesLabel: 'Max. Nutzungen', - expiresIn: 'Läuft ab in', - lockedByNeverExpires: 'Gesperrt durch „Läuft nie ab".', - lockedByUnlimited: 'Gesperrt durch „Unbegrenzte Nutzungen".', - statsActiveLinks: 'Aktive Links', - statsLinksUsed: 'Genutzte Links', - statsPersonalUsers: 'Privatnutzer', - statsCompanyUsers: 'Firmennutzer', - statsTotalLinks: 'Links gesamt', - levelStarter: 'Starter', - levelNovice: 'Novize', - levelHustler: 'Hustler', - levelEntrepreneur: 'Unternehmer', - levelPrestige: 'Prestige', - levelMax: 'MAX', - levelLabel: 'Level', - referrals: 'Empfehlungen', - of: 'von', - maxLevelReached: 'Maximales Level erreicht', - nextMilestone: 'Nächster Meilenstein', - registeredUsersTitle: 'Registrierte Nutzer über deine Empfehlung', - totalRefBadge: 'GESAMT REGISTRIERTE NUTZER MIT DEINEM REF-LINK', - registeredUsersSubtitle: 'Nutzer, die sich über einen deiner Empfehlungslinks registriert haben.', - showingLatest5: 'Zeigt die neuesten 5 Nutzer. Klicke auf „Alle anzeigen" für die vollständige Liste.', - viewAll: 'Alle anzeigen', - colUser: 'Nutzer', - colEmail: 'E-Mail', - colType: 'Typ', - colRegistered: 'Registriert', - noRegisteredUsers: 'Keine registrierten Nutzer gefunden.', - typeCompany: 'Unternehmen', - typePersonal: 'Privat', - allRegisteredUsersTitle: 'Alle registrierten Nutzer über deine Empfehlung', - allRegisteredUsersSubtitle: 'Suchen, filtern, blättern oder die vollständige Liste exportieren.', - exportCsv: 'CSV exportieren', - searchPlaceholder: 'Name oder E-Mail suchen…', - filterAllTypes: 'Alle Typen', - filterAllStatus: 'Alle Status', - filterActive: 'Aktiv', - filterInactive: 'Inaktiv', - filterPending: 'Ausstehend', - filterBlocked: 'Gesperrt', - noUsersMatchFilters: 'Keine Nutzer entsprechen deinen Filtern.', - showing: 'Zeige', - pagePrev: 'Zurück', - pageNext: 'Weiter', - pageOf: 'von', - expiry1Day: '1 Tag', - expiry2Days: '2 Tage', - expiry3Days: '3 Tage', - expiry4Days: '4 Tage', - expiry5Days: '5 Tage', - expiry6Days: '6 Tage', - expiry7Days: '7 Tage', - expiryNever: 'Läuft nie ab', - maxUses1: '1 Nutzung', - maxUses5: '5 Nutzungen', - maxUses10: '10 Nutzungen', - maxUses50: '50 Nutzungen', - maxUsesUnlimited: 'Unbegrenzt', - }, - - quickactionDashboard: { - title: 'Schnellaktionen', - subtitle: 'Schließe deine Onboarding-Schritte ab.', - stepLabel: 'Schritt', - completed: 'Abgeschlossen', - pending: 'Ausstehend', - required: 'Erforderlich', - verifyIdentity: 'Identität verifizieren', - completeProfile: 'Profil vervollständigen', - setPayment: 'Zahlung einrichten', - startUsing: 'Profit Planet nutzen', - allDone: 'Alle Schritte abgeschlossen!', - loading: 'Laden…', - guestAccount: 'Gastkonto', - companyAccount: 'Firmenkonto', - personalAccount: 'Privatkonto', - loadingStatus: 'Status wird geladen...', - errorLoadingAccountStatus: 'Fehler beim Laden des Kontostatus', - tryAgain: 'Erneut versuchen', - emailVerificationStatus: 'Status der E-Mail-Verifizierung', - statusOverview: 'Statusübersicht', - actionRequired: 'Aktion erforderlich', - quickActions: 'Schnellaktionen', - tutorial: 'Tutorial', - pleaseVerifyEmailAddress: 'Bitte bestätige deine E-Mail-Adresse, um dein Gastkonto zu aktivieren und auf deine Abonnements zuzugreifen.', - resendAvailableIn: 'Erneut senden möglich in', - requestNewCode: 'Du kannst jetzt einen neuen Code anfordern', - emailVerified: 'E-Mail bestätigt', - verifyEmail: 'E-Mail bestätigen', - idUploaded: 'Ausweis hochgeladen', - uploadIdDocument: 'Ausweisdokument hochladen', - profileCompleted: 'Profil abgeschlossen', - signContract: 'Vertrag unterschreiben', - contractNotReady: 'Vertrag unterschreiben (erfordert alle vorherigen Schritte)', - latestNews: 'Neueste Nachrichten', - viewAll: 'Alle anzeigen', - noNewsYet: 'Noch keine Nachrichten verfügbar.', - recent: 'Neu', - redirecting: 'Weiterleitung…', - takingToDashboard: 'Du wirst zu deinem Dashboard weitergeleitet', - pleaseWait: 'Bitte warten', - goToDashboard: 'Zum Dashboard', - backToDashboard: 'Zurück zum Dashboard', - uploading: 'Wird hochgeladen...', - saved: 'Gespeichert', - uploadContinue: 'Hochladen und fortfahren', - yes: 'Ja', - no: 'Nein', - dragAndDrop: 'Datei hier ablegen oder zum Auswählen klicken', - remove: 'Entfernen', - maxUploadHint: 'Max. 10 MB. JPG, PNG oder PDF.', - statusCards: { - emailVerification: 'E-Mail-Verifizierung', - idDocument: 'Ausweisdokument', - additionalInfo: 'Zusätzliche Angaben', - contract: 'Vertrag', - verified: 'Bestätigt', - missing: 'Fehlt', - uploaded: 'Hochgeladen', - signed: 'Unterschrieben', - }, - emailVerify: { - title: 'E-Mail bestätigen', - sentIntro: 'Wir haben einen 6-stelligen Code gesendet an', - sendingIntro: 'Bestätigungs-E-Mail wird gesendet an', - yourEmail: 'deine E-Mail-Adresse', - enterBelow: 'Gib ihn unten ein.', - invalidCode: 'Bitte gib den vollständigen 6-stelligen Code ein.', - authError: 'Nicht authentifiziert. Bitte melde dich erneut an.', - emailVerifiedTitle: 'E-Mail bestätigt', - emailVerifiedMessage: 'Deine E-Mail wurde erfolgreich bestätigt.', - verificationFailedTitle: 'Bestätigung fehlgeschlagen', - networkErrorTitle: 'Netzwerkfehler', - verifying: 'Wird bestätigt...', - verified: 'Bestätigt', - confirmCode: 'Code bestätigen', - resendCode: 'Code erneut senden', - supportHint: 'Keine E-Mail erhalten? Bitte prüfe deinen Spam-Ordner. Probleme bestehen weiter?', - contactSupport: 'Support kontaktieren', - verifiedRedirecting: 'Bestätigt! Weiterleitung in Kürze...', - }, - uploadId: { - personalTitle: 'Ausweisdokument hochladen', - personalSubtitle: 'Lade dein Ausweisdokument hoch, um dein Onboarding fortzusetzen.', - companyTitle: 'Firmendokumente hochladen', - companySubtitle: 'Lade die erforderlichen Firmendokumente hoch, um dein Onboarding fortzusetzen.', - idNumber: 'Ausweisnummer *', - idNumberPlaceholder: 'Gib deine Ausweisnummer ein', - idNumberHint: 'Gib die Dokumentnummer genau wie auf dem Dokument angegeben ein.', - contactPersonIdNumber: 'Ausweisnummer der Kontaktperson *', - contactPersonIdNumberPlaceholder: 'Ausweisnummer der Kontaktperson eingeben', - contactPersonIdNumberHint: 'Gib die Ausweisnummer genau wie auf dem Dokument angegeben ein.', - idType: 'Ausweistyp *', - documentType: 'Dokumenttyp *', - selectIdType: 'Ausweistyp wählen', - selectDocumentType: 'Dokumenttyp wählen', - expiryDate: 'Ablaufdatum *', - expiryDateHint: 'Wähle das Ablaufdatum auf dem Dokument.', - backSideQuestion: 'Hat dein Dokument eine Rückseite?', - frontPreviewAlt: 'Vorschau Vorderseite', - backPreviewAlt: 'Vorschau Rückseite', - primaryPreviewAlt: 'Vorschau Hauptdokument', - supportingPreviewAlt: 'Vorschau Zusatzdokument', - clickUploadFront: 'Zum Hochladen der Vorderseite klicken', - clickUploadBack: 'Zum Hochladen der Rückseite klicken', - documentsChecklistTitle: 'Bitte stelle vor dem Hochladen sicher, dass das Dokument:', - clearlyVisible: 'Gut lesbar ist', - showCorners: 'Alle vier Ecken zeigt', - notExpired: 'Nicht abgelaufen ist', - goodLighting: 'Keine Spiegelungen oder dunklen Schatten hat', - bothSidesUploaded: 'Beide Seiten hochgeladen', - frontSideUploaded: 'Vorderseite hochgeladen', - successSavedRedirecting: 'Erfolgreich gespeichert. Weiterleitung...', - personalUploadSuccessTitle: 'Dokumente hochgeladen', - personalUploadSuccessMessage: 'Deine Ausweisdokumente wurden erfolgreich hochgeladen.', - companyUploadSuccessTitle: 'Firmendokumente hochgeladen', - companyUploadSuccessMessage: 'Deine Firmendokumente wurden erfolgreich hochgeladen.', - fileTooLargeTitle: 'Datei zu groß', - fileTooLargeMessage: 'Bitte lade eine Datei hoch, die kleiner als 10 MB ist.', - missingInfoTitle: 'Fehlende Informationen', - fillRequiredFields: 'Bitte fülle alle Pflichtfelder aus.', - frontSideMissingTitle: 'Vorderseite fehlt', - frontSideMissingMessage: 'Bitte lade die Vorderseite hoch.', - backSideMissingTitle: 'Rückseite fehlt', - backSideMissingMessage: 'Bitte lade die Rückseite hoch.', - authErrorTitle: 'Authentifizierungsfehler', - uploadFailedTitle: 'Hochladen fehlgeschlagen', - uploadFailedMessage: 'Deine Dokumente konnten nicht hochgeladen werden.', - networkErrorTitle: 'Netzwerkfehler', - networkErrorMessage: 'Beim Hochladen der Dokumente ist ein Netzwerkfehler aufgetreten.', - }, - additionalInfo: { - title: 'Vervollständige dein Profil', - companyTitle: 'Firmenprofil vervollständigen', - personalInformation: 'Persönliche Informationen', - companyDetails: 'Firmendaten', - bankDetails: 'Bankdaten', - additionalInformation: 'Zusätzliche Informationen', - firstName: 'Vorname *', - lastName: 'Nachname *', - email: 'E-Mail *', - phoneNumber: 'Telefonnummer *', - dateOfBirth: 'Geburtsdatum *', - nationality: 'Nationalität', - selectNationality: 'Nationalität auswählen...', - streetHouseNumber: 'Straße & Hausnummer *', - streetNumber: 'Straße & Nummer *', - postalCode: 'Postleitzahl *', - city: 'Stadt *', - country: 'Land', - selectCountry: 'Land auswählen...', - accountHolder: 'Kontoinhaber *', - iban: 'IBAN *', - secondPhoneOptional: 'Zweite Telefonnummer (optional)', - emergencyContactName: 'Notfallkontakt Name', - emergencyContactPhone: 'Notfallkontakt Telefon', - fullNamePlaceholder: 'Vollständiger Name', - postalCodePlaceholder: 'z. B. 12345', - cityPlaceholder: 'z. B. Berlin', - phonePlaceholder: 'z. B. +43 676 1234567', - streetPlaceholder: 'Straße & Hausnummer', - ibanPlaceholder: 'z. B. DE89 3704 0044 0532 0130 00', - companyName: 'Firmenname *', - companyEmail: 'Firmen-E-Mail *', - companyPhone: 'Firmentelefon *', - contactPerson: 'Kontaktperson *', - contactPersonPhone: 'Telefon Kontaktperson *', - registrationNumberOptional: 'Firmenbuchnummer (optional)', - uidNumberOptional: 'UID-Nummer (optional)', - companyHolderPlaceholder: 'Firma / Kontoinhaber', - registrationPlaceholder: 'z. B. FN123456a', - uidPlaceholder: 'z. B. ATU12345678', - bicOptional: 'BIC (optional)', - bicPlaceholder: 'GENODEF1XXX', - contactNamePlaceholder: 'Name des Kontakts', - emergencyContactNamePlaceholder: 'Name des Kontakts', - additionalInfoSuccessTitle: 'Profil gespeichert', - personalSuccessMessage: 'Dein persönliches Profil wurde erfolgreich gespeichert.', - companySuccessMessage: 'Dein Firmenprofil wurde erfolgreich gespeichert.', - dataSavedRedirecting: 'Daten gespeichert. Weiterleitung in Kürze…', - saveContinue: 'Speichern und fortfahren', - saveFailedTitle: 'Speichern fehlgeschlagen', - saveFailedMessage: 'Speichern fehlgeschlagen. Bitte versuche es erneut.', - invalidDateOfBirthTitle: 'Ungültiges Geburtsdatum', - invalidDateOfBirthMessage: 'Ungültiges Geburtsdatum. Du musst mindestens 18 Jahre alt sein.', - invalidIbanTitle: 'Ungültige IBAN', - invalidIbanMessage: 'Ungültige IBAN.', - missingCountryCodeTitle: 'Ländervorwahl fehlt', - missingPhoneNumberTitle: 'Telefonnummer fehlt', - invalidPhoneNumberTitle: 'Ungültige Telefonnummer', - missingCountryCodeMessage: 'Bitte wähle eine Ländervorwahl für deine Telefonnummer aus.', - phoneNumberMissingMessage: 'Bitte gib deine Telefonnummer ein.', - validPhoneNumberMessage: 'Bitte gib eine gültige Telefonnummer ein.', - validSecondPhoneNumberMessage: 'Bitte gib eine gültige zweite Telefonnummer ein.', - validEmergencyPhoneNumberMessage: 'Bitte gib eine gültige Telefonnummer für den Notfallkontakt ein.', - fillRequiredFields: 'Bitte fülle alle Pflichtfelder aus.', - authErrorTitle: 'Authentifizierungsfehler', - authErrorMessage: 'Nicht authentifiziert. Bitte melde dich erneut an.', - searchPlaceholder: 'Suchen…', - noResults: 'Keine Ergebnisse', - countries: { - germany: 'Deutschland', austria: 'Österreich', switzerland: 'Schweiz', italy: 'Italien', france: 'Frankreich', spain: 'Spanien', portugal: 'Portugal', netherlands: 'Niederlande', belgium: 'Belgien', poland: 'Polen', czechRepublic: 'Tschechien', hungary: 'Ungarn', croatia: 'Kroatien', slovenia: 'Slowenien', slovakia: 'Slowakei', unitedKingdom: 'Vereinigtes Königreich', ireland: 'Irland', sweden: 'Schweden', norway: 'Norwegen', denmark: 'Dänemark', finland: 'Finnland', russia: 'Russland', turkey: 'Türkei', greece: 'Griechenland', romania: 'Rumänien', bulgaria: 'Bulgarien', serbia: 'Serbien', albania: 'Albanien', bosniaHerzegovina: 'Bosnien und Herzegowina', unitedStates: 'Vereinigte Staaten', canada: 'Kanada', brazil: 'Brasilien', argentina: 'Argentinien', mexico: 'Mexiko', china: 'China', japan: 'Japan', india: 'Indien', pakistan: 'Pakistan', australia: 'Australien', southAfrica: 'Südafrika', other: 'Andere' - }, - nationalities: { - german: 'Deutsch', austrian: 'Österreichisch', swiss: 'Schweizerisch', italian: 'Italienisch', french: 'Französisch', spanish: 'Spanisch', portuguese: 'Portugiesisch', dutch: 'Niederländisch', belgian: 'Belgisch', polish: 'Polnisch', czech: 'Tschechisch', hungarian: 'Ungarisch', croatian: 'Kroatisch', slovenian: 'Slowenisch', slovak: 'Slowakisch', british: 'Britisch', irish: 'Irisch', swedish: 'Schwedisch', norwegian: 'Norwegisch', danish: 'Dänisch', finnish: 'Finnisch', russian: 'Russisch', turkish: 'Türkisch', greek: 'Griechisch', romanian: 'Rumänisch', bulgarian: 'Bulgarisch', serbian: 'Serbisch', albanian: 'Albanisch', bosnian: 'Bosnisch', american: 'Amerikanisch', canadian: 'Kanadisch', brazilian: 'Brasilianisch', argentinian: 'Argentinisch', mexican: 'Mexikanisch', chinese: 'Chinesisch', japanese: 'Japanisch', indian: 'Indisch', pakistani: 'Pakistanisch', australian: 'Australisch', southAfrican: 'Südafrikanisch', other: 'Andere' - }, - }, - contractSigning: { - personalTitle: 'Persönlichen Teilnahmevertrag unterschreiben', - companyTitle: 'Firmenpartnerschaftsvertrag unterschreiben', - personalSubtitle: 'Bitte prüfe die Vertragsdetails und unterschreibe elektronisch.', - companySubtitle: 'Bitte prüfe die Vertragsdetails und unterschreibe im Namen des Unternehmens.', - documentInformation: 'Dokumentinformationen', - documentPreview: 'Dokumentvorschau', - contractTab: 'Vertrag', - gdprTab: 'DSGVO', - openInNewTab: 'In neuem Tab öffnen', - refresh: 'Aktualisieren', - loadingPreview: 'Vorschau wird geladen…', - noContractAvailable: 'Derzeit ist kein Vertrag verfügbar. Bitte kontaktiere uns.', - noteTitle: 'Hinweis', - noteBody: 'Deine elektronische Signatur ist rechtsverbindlich. Bitte stelle sicher, dass alle Angaben korrekt sind.', - attentionTitle: 'Achtung', - attentionBody: 'Du bestätigst, dass du berechtigt bist, im Namen des Unternehmens zu unterschreiben.', - documentLabel: 'Dokument:', - idLabel: 'ID:', - versionLabel: 'Version / Grundlage:', - jurisdictionLabel: 'Gerichtsstand:', - languageLabel: 'Sprache:', - issuerLabel: 'Aussteller:', - addressLabel: 'Adresse:', - signatureSection: 'Unterschrift', - drawSignature: 'Unterschrift zeichnen *', - clear: 'Leeren', - signatureHelp: 'Zum Unterschreiben Maus oder Touch verwenden. Eine Signatur ist erforderlich.', - captured: 'Erfasst', - confirmations: 'Bestätigungen', - confirmContractPersonal: 'Ich bestätige, dass ich den Vertrag vollständig gelesen und verstanden habe.', - confirmDataPersonal: 'Ich stimme der Verarbeitung meiner personenbezogenen Daten gemäß der Datenschutzerklärung zu.', - confirmSignaturePersonal: 'Ich bestätige, dass diese elektronische Signatur rechtsverbindlich und einer handschriftlichen Unterschrift gleichwertig ist.', - confirmContractCompany: 'Ich bestätige, dass ich den vollständigen Vertrag im Namen des Unternehmens gelesen und akzeptiert habe.', - confirmDataCompany: 'Ich stimme der Verarbeitung von Unternehmens- und personenbezogenen Daten gemäß der Datenschutzerklärung zu.', - confirmSignatureCompany: 'Ich bin berechtigt, rechtsverbindliche Dokumente für dieses Unternehmen zu unterzeichnen.', - noDocumentsAvailableTitle: 'Keine Dokumente verfügbar', - noDocumentsAvailableMessage: 'Verträge können derzeit nicht unterzeichnet werden. Momentan sind keine aktiven Dokumente verfügbar.', - missingInformationTitle: 'Fehlende Informationen', - completePrefix: 'Bitte vervollständige:', - contractReadUnderstood: 'Vertrag gelesen und verstanden', - privacyAccepted: 'Datenschutzerklärung akzeptiert', - electronicSignatureConfirmed: 'Elektronische Signatur bestätigt', - signatureCaptured: 'Signatur im Feld erfasst', - authErrorTitle: 'Authentifizierungsfehler', - authErrorMessage: 'Nicht authentifiziert. Bitte melde dich erneut an.', - contractSignedTitle: 'Vertrag unterschrieben', - personalContractSignedMessage: 'Dein persönlicher Vertrag wurde erfolgreich unterschrieben.', - companyContractSignedMessage: 'Dein Firmenvertrag wurde erfolgreich unterschrieben.', - signingFailedTitle: 'Signatur fehlgeschlagen', - signingFailedMessage: 'Die Signatur ist fehlgeschlagen. Bitte versuche es erneut.', - contractSignedRedirecting: 'Vertrag erfolgreich unterschrieben. Weiterleitung in Kürze…', - signing: 'Wird unterschrieben…', - signed: 'Unterschrieben', - signNow: 'Jetzt unterschreiben', - }, - }, - - suspended: { - title: 'Konto gesperrt', - message: 'Dein Konto wurde gesperrt. Bitte kontaktiere den Support für weitere Hilfe.', - contactSupport: 'Support kontaktieren', - backToLogin: 'Zurück zur Anmeldung', - reason: 'Grund', - }, - - // ─── Admin ───────────────────────────────────────────── - adminDashboard: { - title: 'Admin-Dashboard', - subtitle: 'Alle administrativen Funktionen, Benutzerverwaltung, Berechtigungen und globale Einstellungen verwalten.', - warningTitle: 'Warnung: Einstellungen und Aktionen unterhalb dieses Punktes können Konsequenzen für das gesamte System haben!', - warningMessage: 'Alle administrativen Funktionen, Benutzerverwaltung, Berechtigungen und globale Einstellungen verwalten.', - accessDenied: 'Zugriff verweigert', - accessDeniedMessage: 'Du benötigst Administratorrechte, um auf diese Seite zuzugreifen.', - loading: 'Laden…', - totalUsers: 'Benutzer gesamt', - admins: 'Admins', - active: 'Aktiv', - pendingVerification: 'Ausstehende Verifizierung', - personal: 'Privat', - company: 'Unternehmen', - managementShortcuts: 'Verwaltungsverknüpfungen', - managementShortcutsSubtitle: 'Schnellzugriff auf häufige Admin-Module.', - matrixManagement: 'Matrix-Verwaltung', - matrixManagementDesc: 'Matrizen und Benutzer konfigurieren', - coffeeSubscriptions: 'Kaffee-Abonnement-Verwaltung', - coffeeSubscriptionsDesc: 'Pläne, Abrechnung und Verlängerungen', - contractManagement: 'Vertragsverwaltung', - contractManagementDesc: 'Vorlagen, Genehmigungen, Status', - dashboardManagement: 'Dashboard-Verwaltung', - dashboardManagementDesc: 'Dashboard-Plattformen konfigurieren', - userManagement: 'Benutzerverwaltung', - userManagementDesc: 'Alle Benutzer durchsuchen und verwalten', - userVerify: 'Benutzer verifizieren', - userVerifyDesc: 'Onboarding-Status der Benutzer prüfen und verifizieren', - financeManagement: 'Finanzverwaltung', - financeManagementDesc: 'Steuersätze, Abrechnungseinstellungen und Finanztools', - poolManagement: 'Pool-Verwaltung', - poolManagementDesc: 'Pool-Strukturen und Zuweisungen verwalten', - affiliateManagement: 'Affiliate-Verwaltung', - affiliateManagementDesc: 'Partner-Inhalte und Affiliate-Steuerung', - newsManagement: 'Neuigkeiten-Verwaltung', - newsManagementDesc: 'Nachrichtenartikel erstellen und verwalten', - devManagement: 'Entwickler-Verwaltung', - devManagementDesc: 'SQL-Abfragen und Entwicklertools ausführen', - languageManagement: 'Sprachverwaltung', - languageManagementDesc: 'Sprachen hinzufügen und UI-Übersetzungen verwalten', - moduleDisabled: 'Dieses Modul ist derzeit in der Systemkonfiguration deaktiviert.', - adminAccessRequired: 'Administratorzugriff erforderlich.', - adminNavigation: 'Admin-Navigation', - adminNavigationHelp: 'Öffne das Dashboard, um über die Modulkarten auf alle Admin-Bereiche zuzugreifen.', - serverStatusLogs: 'Serverstatus & Logs', - serverStatusLogsSubtitle: 'Systemzustand, Ressourcennutzung und aktuelle Fehlerhinweise.', - serverStatusLabel: 'Serverstatus:', - serverOnline: 'Server online', - serverOffline: 'Offline', - uptime: 'Laufzeit:', - cpuUsage: 'CPU-Auslastung:', - memoryUsage: 'Speichernutzung:', - autoscaledEnvironment: 'Autoskalierte Umgebung (Mock)', - recentErrorLogs: 'Aktuelle Fehlerprotokolle', - noRecentLogs: 'Keine aktuellen Logs.', - viewFullLogs: 'Alle Logs anzeigen', - }, - - userManagement: { - title: 'Benutzerverwaltung', - subtitle: 'Alle Benutzer durchsuchen und verwalten.', - searchPlaceholder: 'Benutzer suchen…', - firstName: 'Vorname', - lastName: 'Nachname', - email: 'E-Mail', - role: 'Rolle', - status: 'Status', - actions: 'Aktionen', - verify: 'Verifizieren', - ban: 'Sperren', - unban: 'Entsperren', - exportCsv: 'CSV exportieren', - noUsers: 'Keine Benutzer gefunden.', - loading: 'Benutzer werden geladen…', - confirmBan: 'Bist du sicher, dass du diesen Benutzer sperren möchtest?', - confirmUnban: 'Bist du sicher, dass du diesen Benutzer entsperren möchtest?', - confirmVerify: 'Bist du sicher, dass du diesen Benutzer verifizieren möchtest?', - createdAt: 'Erstellt am', - lastLogin: 'Letzter Login', - userType: 'Benutzertyp', - }, - - languageManagement: { - title: 'Sprachverwaltung', - subtitle: 'UI-Übersetzungen verwalten. Alle Schlüssel aus der englischen Quelldatei gescannt.', - addLanguage: 'Sprache hinzufügen', - languageCode: 'Sprachcode', - languageName: 'Sprachname', - languageCodePlaceholder: 'z.B. fr, es, zh-TW', - languageNamePlaceholder: 'z.B. Français', - addBtn: 'Hinzufügen', - deleteLanguage: 'Sprache löschen', - deleteConfirm: 'Löschen', - deleteWarning: 'Alle Übersetzungen für diese Sprache werden entfernt.', - saveChanges: 'Änderungen speichern', - saved: 'Gespeichert', - unsavedChanges: 'Du hast ungespeicherte Änderungen.', - saveNow: 'Speichern', - translationProgress: 'Übersetzungsfortschritt', - keysTranslated: 'Schlüssel übersetzt', - backToAdmin: 'Zurück zum Admin', - searchPlaceholder: 'Schlüssel oder englischen Text suchen…', - noKeysMatch: 'Keine Schlüssel entsprechen deiner Suche.', - englishReference: 'Englisch (Referenz)', - clearOverride: 'Überschreibung löschen (auf Standard zurücksetzen)', - invalidCode: 'Verwende einen gültigen BCP-47-Code, z.B. fr, es, zh-TW.', - codeDuplicate: 'Sprache existiert bereits.', - codeRequired: 'Sprachcode ist erforderlich.', - nameRequired: 'Sprachname ist erforderlich.', - wizardInputPlaceholder: 'Übersetzung eingeben', - }, - - contractManagement: { - title: 'Vertragsverwaltung', - subtitle: 'Vertragsvorlagen verwalten.', - uploadTemplate: 'Vorlage hochladen', - currentTemplate: 'Aktuelle Vorlage', - noTemplate: 'Keine Vorlage hochgeladen.', - previewTemplate: 'Vorlage ansehen', - saveTemplate: 'Vorlage speichern', - loading: 'Laden…', - uploadSuccess: 'Vorlage erfolgreich hochgeladen.', - uploadError: 'Vorlage konnte nicht hochgeladen werden.', - }, - - userDetailModal: { - error: 'Fehler', - personal: 'Privat', - company: 'Unternehmen', - superAdmin: 'Super Admin', - currentStatus: 'Aktueller Status', - adminControls: 'Admin-Steuerung', - missingDocumentsWarning: 'Für diesen Benutzer fehlen Ausweisdokumente oder ein unterzeichneter Vertrag. Der Verifizierungsstatus sollte überprüft werden.', - missingStorageWarning: 'Ausweisdokumente oder ein unterzeichneter Vertrag fehlen im Objektspeicher. Überprüfen Sie den Dateispeicher vor der Verifizierung.', - changeStatus: 'Status ändern', - adminVerification: 'Admin-Verifizierung', - allStepsCompleted: 'Alle Schritte abgeschlossen. Sie können diesen Benutzer verifizieren.', - stepsNotCompleted: 'Der Benutzer hat noch nicht alle erforderlichen Schritte abgeschlossen.', - updating: 'Wird aktualisiert...', - unverifyUser: 'Verifizierung aufheben', - verifyUser: 'Benutzer verifizieren', - contractPreview: 'Vertragsvorschau', - contractTab: 'Vertrag', - gdprTab: 'DSGVO', - loadingPreview: 'Lädt…', - preview: 'Vorschau', - openInNewTab: 'In neuem Tab öffnen', - filesIn: 'Dateien in', - refreshing: 'Aktualisiert…', - refresh: 'Aktualisieren', - loadingFiles: 'Lädt Dateien…', - noFilesFound: 'Keine Dateien in diesem Ordner gefunden.', - selected: 'Ausgewählt:', - moving: 'Wird verschoben…', - moveTo: 'Verschieben nach', - loadingPreviewText: 'Vorschau wird geladen…', - clickPreviewHint: 'Klicken Sie auf „Vorschau", um die neueste Vorlage für diesen Benutzer zu rendern.', - personalInformation: 'Persönliche Informationen', - firstName: 'Vorname', - lastName: 'Nachname', - phone: 'Telefon', - dateOfBirth: 'Geburtsdatum', - address: 'Adresse', - companyInformation: 'Unternehmensinformationen', - companyName: 'Unternehmensname', - registrationNumber: 'Registrierungsnummer', - taxId: 'Steuer-ID', - registrationProgress: 'Registrierungsfortschritt', - emailVerified: 'E-Mail verifiziert', - profileCompleted: 'Profil abgeschlossen', - documentsUploaded: 'Dokumente hochgeladen', - contractSigned: 'Vertrag unterzeichnet', - permissions: 'Berechtigungen', - savingPermissions: 'Wird gespeichert…', - savePermissions: 'Berechtigungen speichern', - loadingPermissions: 'Berechtigungen werden geladen…', - noPermissionsAvailable: 'Keine Berechtigungen verfügbar.', - inactive: 'Inaktiv', - close: 'Schließen', - moveDocumentTitle: 'Dokument verschieben nach', - moveDocumentDescription: 'Das Dokument wird unter dem gewählten Vertragstyp neu klassifiziert.', - moveDocumentConfirm: 'Dokument verschieben', - moveDocumentFile: 'Datei:', - completeStepsTooltip: 'Schließen Sie alle Schritte ab und stellen Sie sicher, dass Dateien im Objektspeicher vorhanden sind, bevor Sie die Admin-Verifizierung durchführen', - }, - - invoiceDetailModal: { - invoiceTitle: 'Rechnung', - statusDraft: 'Entwurf', - statusIssued: 'Ausgestellt', - statusPaid: 'Bezahlt', - statusOverdue: 'Überfällig', - statusCanceled: 'Storniert', - changeStatus: 'Status ändern:', - updatingStatus: 'Status wird aktualisiert…', - created: 'Erstellt', - customer: 'Kunde', - name: 'Name', - email: 'E-Mail', - street: 'Straße', - city: 'Stadt', - country: 'Land', - userId: 'Benutzer-ID', - financials: 'Finanzen', - net: 'Netto', - tax: 'Steuer', - gross: 'Brutto', - vatRate: 'MwSt-Satz', - currency: 'Währung', - dates: 'Daten', - issued: 'Ausgestellt', - due: 'Fällig', - updated: 'Aktualisiert', - lineItems: 'Positionen', - noLineItems: 'Keine Positionen gefunden.', - description: 'Beschreibung', - qty: 'Menge', - unitPrice: 'Stückpreis', - total: 'Gesamt', - payments: 'Zahlungen', - method: 'Methode', - transaction: 'Transaktion', - amount: 'Betrag', - paidAt: 'Bezahlt am', - status: 'Status', - contextMetadata: 'Kontext / Metadaten', - clickToExpand: '(zum Erweitern klicken)', - exportJson: 'JSON exportieren', - poolCheck: 'Pool-Prüfung', - close: 'Schließen', - poolErrorPrefix: 'Pool-Buchungsfehler:', - poolInflowsBooked: 'Pool-Zufluss/Zuflüsse gebucht', - statusUpdatedTo: 'Status aktualisiert zu', - reasonInvalidInvoiceId: 'Ungültige Rechnungs-ID', - reasonInvoiceNotFound: 'Rechnung für Pool-Buchung nicht gefunden', - reasonInvoiceNotPaid: 'Rechnung nicht als bezahlt markiert', - reasonUnsupportedSourceType: 'Kein Abonnement — keine Pool-Buchung', - reasonMissingAbonementRelation: 'Kein verknüpftes Abonnement — keine Pool-Buchung', - reasonAbonementNotFound: 'Verknüpftes Abonnement nicht gefunden', - reasonNoBreakdownLines: 'Abonnement hat keine Kapselaufschlüsselung — keine Pool-Buchung', - reasonNoActivePools: 'Keine aktiven System-Pools gefunden', - }, - - autofix: { - k02665163: 'Next steps', - k027bd82e: 'Edit the shipping prices for 60 and 120 pieces.', - k047a175d: 'No contracts found.', - k06d4487f: 'Cancel editing', - k0853cfa6: 'Thanks for your subscription!', - k096f4013: 'Manage your company stamps. One active at a time.', - k0af6c6be: 'Create & Activate', - k0affa826: 'Shown to users in the shop and checkout.', - k0b03e660: '2. Choose coffees & quantities', - k0b2445d5: 'Generating PDF preview…', - k0bbc633d: 'Loading contract preview…', - k0d9c63c5: 'Scanning workspace files and component subdirectories...', - k11438b4c: 'Total incl. tax', - k12a86c71: 'Shipping…', - k14eb468b: 'Potential untranslated UI text detected', - k155166db: 'Contract variables are auto-populated from your form data.', - k15bea9bb: 'Address details used on invoices.', - k1824f78d: 'Please select coffees and fill all required buyer fields, signing city, and signature.', - k18872b63: 'No image', - k1bf4ffa4: 'Untranslated literals', - k20127e1c: 'No selection found.', - k21361e0d: 'Summary & Details', - k221fa311: 'Invoice template variables', - k22c8f7f1: 'Create Template', - k28f1a9b1: 'Full name', - k2d0798a6: 'Loading subscription…', - k2e43a9c4: 'Click or drag and drop a new image here', - k3466b0e0: 'Payment method', - k346a2c64: 'Language Management', - k39791457: 'Manage contract templates, company stamp, and create new templates.', - k41ab9eb6: 'You\'ll be able to crop and adjust the image after uploading', - k41afd863: 'Editing:', - k4aeb8688: '2. Your selection', - k4be6f631: 'Save changes', - k516705dd: 'Ort ist erforderlich.', - k528eede9: 'Same as shipping address', - k56717603: 'no image', - k56a52520: 'Skipped files', - k5a489751: 'Save Changes', - k5ad4d864: 'Auto-fixed files', - k6070f6e3: 'Add New Stamp', - k60874ea3: 'Keys auto-created', - k67cb36a4: 'Contract Management', - k6a2c64e8: 'Last name', - k6a892262: 'No keys match your search.', - k6ee0a1b6: 'Click or drag and drop an image here', - k73d1d7d7: 'Edit Crop', - k74491338: 'Reverse Charge aktiv: gueltige UID und auslaendisches Rechnungsland erkannt.', - k7775eddb: 'Your Company Stamps', - k788633d1: 'Profit Planet', - k7a3a6ea3: 'to render invoice line items.', - k7f48f374: '1. Select subscription size', - k7fe72eff: 'No platforms available.', - k80ac9651: 'PNG, JPG, WebP up to 10MB', - k825359ab: 'Accepted types: PNG, JPEG, WebP, SVG. Max size: 5MB.', - k832387c5: 'Loading…', - k83deba83: 'per 10 pcs', - k875f4054: 'Manage all coffees.', - k8c75468c: 'No subscriptions found.', - k8cf40180: 'Missing keys in en.ts', - k90a6e795: 'Unique keys used', - k91052e3f: 'Translation calls', - k92639a9a: 'Language code', - k926966d0: 'Language name', - k96839795: 'Back to selection', - k99bffb65: 'Fill all fields to proceed.', - k9b173204: 'Files auto-fixed', - k9c1a5ecc: 'Fill fields with logged in data', - ka3ee9ded: 'Subscription Billing', - ka56b7b2b: 'No PDF preview available.', - ka5f38d19: 'Company Stamp', - ka802064d: 'Applying i18n auto-fixes to client components and updating translation files...', - kaa30f0cd: 'Create Coffee', - kaa8bbc8e: 'Company Information', - kac6cedc7: 'Saving…', - kae63e46a: 'Missing translation keys detected in workspace', - kb06fa395: 'Edit Coffee', - kb0b660e2: 'Configure Coffee Subscription', - kb1c1c0e5: 'Logging you out...', - kb2217bdf: 'Translation Coverage Scan', - kb791958e: 'Use these placeholders in your HTML: invoiceNumber, customerName, issuedAt, totalNet, totalTax, totalGross, itemsHtml.', - kb8f33873: 'Translation progress', - kb9e483c4: 'Update details of the coffee.', - kba6bd6f3: 'or click to browse', - kcc4adbcc: 'Navigation shortcuts', - kce094582: 'Invoice address', - kd1a2772d: 'Street & No.', - kd2a00802: 'Image removed - Click to upload a new one', - kd3092148: 'Subscription created.', - kd379df9b: 'Open preview', - kd63c8219: 'You have unsaved changes.', - kd6f8d7e9: '1. Your details', - kd8a5ad17: 'Back to list', - kda5f982e: 'Delete Language', - kddd4832f: 'Delete coffee?', - kde5c689e: 'Pick a platform to continue.', - ke33e6fbf: 'Send invoice by email', - ke58b7627: 'Drag and drop your stamp here', - ke74b1adf: 'Contract template is not available.', - ke7b634f2: '3. Preview', - ke7f0a9e3: 'FREE SHIPPING', - kea7cde7a: 'Back to Admin', - kec078e54: 'No coffees selected yet.', - kefe5f0dd: 'Ohne gueltige UID wird die Rechnung mit normaler MwSt erstellt.', - kf1a9384b: 'Auto-applied to documents where applicable.', - kf4e45236: 'Add Language', - kf72d41db: 'Add a new coffee.', - kfe9527d8: 'First name', - kfeac3f7e: 'Choose file', - k0c51fa85: 'Activate template now?', - k134e3932: 'Active stamp', - k1f0b2c48: 'z.B. Wien', - k2fac9ff2: 'Template name', - k3477c83a: 'Describe the product', - k35ac864e: 'Search templates…', - ka8f53660: 'Delete Company Stamp', - kaa5e5363: 'ABO Contract PDF Preview', - kcb65c692: 'e.g., Company Seal 2025', - kd9e4bcbd: 'Contract Preview', - kf1512f8f: 'z.B. SI12345678', - k00016501: '🧪 Token Refresh Test', - k002455d8: 'Total Gross / Brutto', - k00394342: 'Welcome back! Log in to continue.', - k01ad6d49: 'Overview of taxes, revenue, and invoices.', - k022df6ac: 'Admin Verified', - k039e629b: 'Overview meta', - k03cd9b72: 'Commission:', - k04b5cbca: 'Loose Files', - k051e8ac8: 'Confirm password', - k055bba0c: 'Are you sure you want to delete', - k05626798: 'Click to upload logo', - k0778fa87: 'Make sure JWT_EXPIRES_IN=2m in backend .env for fast testing', - k07fe11b2: 'Company / Holder name', - k088d8f6c: 'Delete news?', - k08c92a12: 'Welcome to Profit Planet Community 🌍', - k0925e287: 'e.g., VIP Members', - k098ec0b9: 'Manage the “Platforms” cards shown on the user dashboard.', - k09def344: 'Edit Affiliate', - k09f4290f: 'Reset password', - k0ac84efe: '← Back', - k0c838ec3: 'Min €', - k0c87d75d: 'Max €', - k0c95a1b4: 'Back:', - k0cc2a3ba: 'Versuche andere Suchbegriffe oder Filter', - k0cdde8f8: 'Name:', - k0d6626e3: '👤 User Info', - k0d8cb427: 'Type:', - k0da2c941: 'Users Pending Verification', - k0dba4c6b: 'Role:', - k0dca1445: 'Sort:', - k0dcb69ea: 'No matrices found.', - k0dd01c1c: 'Show:', - k0efd830c: 'Verification Readiness', - k0f0395ca: 'Multi-statement SQL and dump files are supported. Use with caution.', - k0f1fc266: 'All Statuses', - k0fbaa1a9: 'Jetzt registrieren', - k0fe28e0b: 'Affiliate Management', - k10ccb626: 'All Users', - k10e2568f: 'All Types', - k110bae43: 'All Roles', - k111c49d8: 'Users count respects each matrix’s max depth policy.', - k11974e0f: 'Advanced: choose parent manually', - k12a7170a: 'No ghost directories found. Run Refresh to scan again.', - k1387f81e: 'Export all filtered users to CSV', - k1405afab: 'Login and watch the countdown timer', - k14a4b43e: 'Refreshing…', - k1521a376: 'Export all users as CSV', - k15843a06: 'Active Pools', - k15da24d8: 'Join Group', - k16b60f69: 'View All', - k17ba59ff: 'Community Hands - Profit Planet', - k17f65c37: 'Example: /shop or https://example.com', - k1882bd75: 'Max Mustermann', - k199db5f1: 'your.email@example.com', - k19f2c5dc: 'No affiliates found', - k1a1ca621: 'e.g. DE89 3704 0044 0532 0130 00', - k1af107a4: 'Logo preview', - k1af97a07: 'User Management', - k1b9c46e5: 'Affiliate Partners', - k1d178b73: 'Basic Information', - k1db0c7cd: 'No loose files found. Run Refresh to scan again.', - k1ddc749e: 'Expiry Date', - k1df74994: 'All subscriptions', - k1e5d5139: 'No users match your filters.', - k1e62338a: 'Commission Rate', - k1eedcda3: 'User Status Hook', - k1f269263: 'DE89 3704 0044 0532 0130 00', - k209ba561: 'Create New Pool', - k20ab2fc7: 'We\'ll send a verification code to your email address.', - k21440f8a: 'Pool Management', - k21db276a: 'Auf Lager', - k228929e2: 'Profile Information', - k23c9f0ff: 'No results yet. Import a SQL dump to see output.', - k258c3515: '892 members', - k26ecadfd: 'My Groups', - k26fbc186: 'Access Denied', - k2786bc5f: 'Signing in...', - k27e93fd7: 'Stay informed with our latest announcements and insights', - k27f56959: 'State change will affect add/remove operations.', - k290e3aab: 'tt.mm jjjj', - k2a2fe15a: 'Phone Number', - k2a37c394: 'Brief description of the affiliate partner...', - k2af2916f: 'Your account is fully submitted. Our team will verify your account shortly.', - k2cd79a3d: 'Browse all favorites', - k2e8f3110: 'All Status', - k2f176a63: 'No news articles available yet.', - k2f4ebc32: 'Rows per page:', - k2f78fabe: 'Go to User Verification', - k31cadca6: 'Partner Name *', - k31d46514: 'Top node:', - k33918465: 'Company Name', - k354a026b: 'Subscription ID', - k35f67931: 'Changes apply from your next billing cycle.', - k3777e830: 'Our team', - k37d7b9c4: 'Checking pool inflow...', - k383672e3: 'owner@example.com', - k39437388: 'Core Pool — 1¢ per capsule per member', - k39e2c5db: 'Add Platform', - k3ac8ca10: 'Only SQL dump files are supported.', - k3b03502e: 'Error loading account status', - k3b7dd87a: 'Try again', - k3b8e0964: 'Subscription details', - k3c32c87f: 'Connect with like-minded individuals, share sustainable practices, and make a positive impact together.', - k3c3e6850: 'Email Verification', - k3d01de91: 'PROFIT PLANET', - k3d5fe74a: 'Expires At:', - k3def5ebf: 'Category *', - k3ee27b4f: 'Top-node Email', - k3f833ce6: 'e.g., Platinum Matrix', - k40f4552a: 'Level 2+', - k410ff9a9: 'Total Affiliates', - k416bfe70: 'No further status changes are available for this subscription.', - k4191cdba: 'Edit VAT', - k41f7c81d: 'Delete Account', - k4307f6c7: 'Date of Birth:', - k431328cf: 'No affiliate partners available at the moment.', - k471ba099: 'News Manager', - k47b952de: 'Has Token:', - k47bbd37e: 'Sign in to Profit Planet', - k483aa95a: '• Share authentic experiences', - k48852b8d: 'Customer Email', - k49568342: 'Manage your affiliate partners and tracking links', - k4968eb2a: 'Abonement:', - k49f254bd: 'Current URL:', - k4a055849: 'ID Front', - k4a9e1ebe: 'Loading user details...', - k4b6c7681: 'Open subscriptions', - k4c5e8e87: 'Export CSV', - k4c5ecd73: 'Export PDF', - k4cb62cff: 'Keine Produkte gefunden', - k4db68c96: 'SQL Import', - k4e0c889b: 'Not Ready', - k4e168c01: 'Coffee Abonnements', - k4e532c48: 'Verification Status', - k4e61bc77: 'Root not yet loaded.', - k4ed7f4d1: 'Time Left:', - k502a0057: 'Last 7 days', - k5122ab54: 'Request again', - k51ee3aae: 'email@example.com', - k52af8b8d: 'Quick Actions', - k533db977: 'Your new password', - k54c06343: 'Refresh Token', - k54f49724: 'No users match your search.', - k55aba973: 'Produkte gefunden', - k5614c806: 'Review and verify all users who need admin approval. Users must complete all steps before verification.', - k56435c9b: 'Verfügbarkeit', - k5738c039: 'Matrix created successfully.', - k577a012c: 'User Type', - k578dcc0b: 'PNG, JPG, WebP, SVG up to 5MB', - k58344b74: 'No direct children.', - k5834cbed: 'Loading affiliate partners...', - k58424b1d: 'Eco Warriors', - k5857ef79: 'Existing Pools', - k59422f07: 'Linked Subscription', - k5aae8706: 'New password', - k5c598bc0: 'Trending Groups', - k5d4d494e: 'Loading members...', - k5d85b354: 'Driver\'s License', - k5e580e3f: 'Filter zurücksetzen', - k5ef19112: 'Join our team', - k5f74c123: 'Last 30 days', - k5fb70267: 'Shop wird geladen...', - k5fbf1824: 'Masked names for deeper descendants.', - k61c2a732: 'Angemeldet bleiben', - k61f6cd4e: 'Token Preview:', - k6285753a: 'Back to Pool Management', - k62bc3c59: 'e.g. Berlin', - k62d12fab: 'Error loading data', - k63115bb4: 'ID Documents', - k633438a0: 'Discover our trusted partners and earn commissions through affiliate links.', - k63458f03: 'Produkte durchsuchen...', - k65b67dc3: 'Back to matrices', - k65e33378: 'Total users fetched', - k661c032b: 'You need admin privileges to access this page.', - k664072a1: 'Dev Management', - k67391c88: 'Manage system pools and members.', - k678d2b40: 'Super reduced', - k67cace8b: 'Profile Settings', - k67dd8a82: 'Contact name', - k6828cdd9: 'Affiliate URL *', - k6838438d: 'Ghost Directories', - k6a4108c8: 'Last Name', - k6a486e3e: 'Create Group', - k6aa2d843: 'Read full guidelines', - k6af9037b: 'Open navigation', - k6b0f4f70: 'ID documents or a signed contract are missing for this user. The user’s verification status should be checked.', - k6b76bd0e: 'Willkommen bei Profit Planet', - k6c6e5c0f: 'Use with caution', - k6ca85cda: 'Trending right now', - k6d85810b: 'Your password', - k6de13000: 'Zero Waste Living', - k6e4a6069: 'Import SQL dump files to run database migrations.', - k70972912: 'Edit Profile', - k70bcafbd: 'Recent Discussions', - k71d565c9: 'Address:', - k72428656: 'Highest full level:', - k73831c06: 'Personal Matrix', - k73cf4fb6: 'Edit News', - k73d110fa: 'Edit Mode', - k73d4a156: 'Check Network tab for /api/refresh requests', - k744fda01: 'My Subscriptions', - k748bf541: 'No users match current filters.', - k75078d0b: 'Add News', - k750c1eb5: 'Add User', - k7572cceb: 'Edit VAT rates', - k75cb45a7: 'This value is stored as net price.', - k75d83433: '• Help others learn and grow', - k77049179: '• Reason:', - k77444d5b: 'Exoscale directories that do not have a matching user in the database.', - k776b751c: 'Policy Max Depth', - k777299de: 'Finance Management', - k77767b9e: 'Close notification', - k77a56aae: 'News & Updates', - k77d5ecd9: 'Copy referral link', - k7938d4fd: 'Result Sets', - k79e1c459: 'Manage all users, view statistics, and handle verification.', - k7ab45054: 'All Readiness', - k7bed84a7: 'Member Since', - k7c19388f: 'e.g., 10%', - k7c740cd5: 'Ready to search. Click the Search button to fetch candidates.', - k7db4e5a9: 'Visit Affiliate Link', - k7f57b169: 'Test API Call', - k7f9568ec: 'Highest full level', - k7fa2c4af: 'Loading users...', - k811fbc99: 'API Base URL:', - k815ca9ba: 'A matrix configuration already exists for this selection.', - k8193b7a2: 'Loading loose files...', - k81a1b900: 'Loading settings…', - k81b056f2: 'See our job postings', - k81c0b74b: 'Status:', - k81c7c2f2: 'Musterstraße 1', - k8323a7d9: 'Loading:', - k832a032b: 'Search affiliates...', - k8358f1d1: 'Loading folder issues...', - k84d5cfcb: 'View overview', - k85446b89: 'Next billing', - k85682289: 'e.g. FN123456a', - k85c66f50: 'Search & Filter Pending Users', - k867f8265: 'Due Date', - k86aa4f9c: 'Current Month', - k87e4b9a2: 'Core Pool', - k883ea8c5: 'Loading ghost directories...', - k88d8bb9d: 'Passwort vergessen?', - k890ff52f: 'e.g., Coffee Equipment Co.', - k8a35cc53: 'SQL dumps run immediately and can modify production data.', - k8a59b156: 'Import SQL', - k8b71f0c7: 'Email, name, company...', - k8b89f863: 'External partner website.', - k8bb1c673: 'Email:', - k8be14d47: 'Error:', - k8c3085f4: 'Users ↓', - k8c3085f6: 'Users ↑', - k8d84b4c5: 'Add New Affiliate', - k8dda5201: 'you@example.com', - k8eaa7b3b: 'e.g. +43 1 234567', - k8eab7c16: 'National ID', - k8eb2524c: 'Enter 6-digit code', - k8f46c81e: 'e.g., 5', - k8f528877: 'Crop & Adjust Image', - k915115a9: 'Last 90 days', - k91912619: 'Close navigation', - k91e69df1: 'ProfitPlanet GmbH', - k91eb415a: 'ProfitPlanet Logo', - k91f24187: 'Complete Profile', - k9213db6e: '📋 Testing Instructions', - k93165aea: '12345 Berlin', - k93b6dc1b: 'Uploaded Documents', - k93f03bca: 'Signed Contract Document', - k941fd092: 'Last Folder Structure Action', - k955b1cbe: 'No results', - k959fb1a6: 'Remove member from pool?', - k961ba411: 'Community Guidelines', - k9683262f: 'Fill %', - k96dbbe05: 'Street & House Number', - k972cee5e: 'Front:', - k9772afa4: 'No included items were returned for this subscription.', - k97abed7d: 'Tax Certificate', - k981b1f1a: 'SQL Dump Import', - k98519a5e: 'I have read, understood, and agree to the terms and conditions of this service agreement.', - k9860434f: 'Please review and upload your signed service agreement.', - k9b3266b5: 'Pending backend wiring to MatrixController.listVacancies. This section will surface empty slots and allow reassignment.', - k9bc83f50: 'Change coffees for next month', - k9c3db145: 'Start Discussion', - k9d0c063d: 'Password saved. Redirecting to login...', - k9e609523: 'No missing folders found. Run Refresh to scan again.', - k9f29dbfb: 'Entdecke nachhaltige Produkte und verdiene dabei. Deine Plattform für bewussten Konsum und finanzielle Vorteile.', - k9f56d4ac: 'e.g. +43 676 1234567', - ka00fc5db: 'Manage your account information and preferences', - ka15f5ec5: 'Auth Store State', - ka1d0b6ff: 'No deeper descendants.', - ka29ac729: 'Saved successfully', - ka3c41ff8: 'View details →', - ka3cbb536: 'Continue →', - ka4ecb6cd: 'Search…', - ka5bf342b: 'Select…', - ka5c2113f: 'Company Name:', - ka5d50257: 'Loading VAT rates…', - ka6be28d2: 'Add user to pool', - ka7073aee: 'Profit Planet Store', - ka72e833f: 'Policy filter:', - ka8ea17b8: 'Next ›', - ka991f523: 'Loading affiliates...', - ka9d6e905: 'Total users under me', - kaa656770: 'You are not part of any matrix yet.', - kaa8231ec: 'This Year', - kab4f5159: 'Each node can hold up to 5 direct children. Depth unbounded.', - kab99811e: 'Disabled message', - kace2fe51: 'Verification Code', - kadc6abcf: 'Auth Debug Page', - kadd80fbc: 'Clear selection', - kaf787fe5: '1,284 members', - kb0031873: 'Browse all trending', - kb01addda: 'Token should automatically renew without user action', - kb1341138: 'Ensures both contract and gdpr folders exist for each user.', - kb24782ec: 'Last Login', - kb2dfe482: 'Read More', - kb324fb25: 'Total Users', - kb337d94e: 'No entries found.', - kb343460d: 'Rogue users', - kb35549bb: 'Search name or email…', - kb383a3e8: 'Included in your subscription', - kb45c4d5f: 'Tax ID:', - kb4675362: 'Import Results', - kb4aba3dc: 'No unverified users match current filters.', - kb573897d: 'Short description of the pool', - kb5e0b861: 'Inactive Pools', - kb6b367b7: 'When time left ≤ 3 minutes, auto-refresh should trigger', - kb6eacc9d: 'Select a .sql dump file using Import SQL.', - kb74d7c51: '🔧 Manual Controls', - kb7849a5a: 'Create Matrix', - kb846955a: 'Select Document Type', - kb87eb38b: 'Enter at least 3 characters and click Search.', - kb8cd2810: 'Account Status', - kb8d6f3f7: 'Shop Collection', - kbbefb159: 'Error loading users', - kbc368b5d: 'Date of Birth', - kbc6a6543: 'ID Back', - kbce9fbea: 'No platforms configured.', - kbd8b3364: 'Sign Contract', - kbd979e13: 'We are a community', - kbdb02e32: 'Keine Rechnungen gefunden.', - kbe9355f8: 'Business License', - kbf4b7789: 'You are already logged in. Redirecting...', - kbf7bde57: 'Select any subscription to view details and included items.', - kbfa5b4c5: 'Tax ID', - kbfd13a03: 'Account Setup', - kbff01823: 'Shows files directly under the user folder that are not in contract or gdpr.', - kc0d718d7: 'Registration Number', - kc0e3b03d: 'Total:', - kc3d181e2: 'Forgot password?', - kc4315932: 'Dashboard Management', - kc4d7816e: 'Levels filled', - kc7bb0c06: 'Filter by country or code', - kc7c429a6: 'Add users to matrix', - kc813a103: 'Loading available coffees…', - kc8652e34: 'You don’t have any subscriptions yet.', - kc9d9d15d: 'Postal Code', - kca04f5e3: 'Phone:', - kcada239b: 'View your active subscriptions, included items and subscription details on a dedicated page.', - kcb491706: 'Folder Structure', - kcbc17bbd: 'No users in this pool yet.', - kcc15636b: 'Coffee content can only be changed while a subscription is issued, ongoing, or paused.', - kcc1c5596: 'Profit Planet Mascot', - kccbc54c1: 'Delete Affiliate', - kccc13f16: '← Go back', - kccde6d86: 'User Verification Center', - kccf7593a: '• Be respectful and kind', - kcd7a1625: 'deine@email.com', - kcd9890e5: 'PNG, JPG, WebP up to 5MB', - kcdfef775: 'Loading subscriptions…', - kce0ab46c: 'Dein Passwort', - kcf4ba87d: 'Crop Affiliate Logo', - kcf61fc9e: 'Last Loose Files Action', - kd00443f2: 'Go to Dashboard', - kd04a7c59: 'Matrix Name', - kd058bb7b: 'Missing:', - kd09be3cd: 'Matrix Management', - kd1c17b3f: 'Alle Marken', - kd1f35ccf: 'Search & Filter Users', - kd2e35b08: 'Rows per page', - kd2e5e813: '• Already booked:', - kd304af2e: 'Global search...', - kd40c4f86: 'Activate this pool', - kd49dc1e1: 'Pool Type', - kd4a0fd1e: 'Pool Name', - kd4af6368: 'Issue Date', - kd4d50566: 'ID documents or a signed contract are missing from object storage. The user’s verification status should be checked.', - kd4eb7ee0: 'Close menu', - kd51f320c: 'Exoscale Folder Structure', - kd56a13f2: 'Recipient Email', - kd5cca6e9: '? This action cannot be undone.', - kd6024811: 'PDF File', - kd642e230: 'Search by name or email. Minimum 3 characters. Existing matrix members are hidden.', - kd68da70d: 'Nachhaltige Produkte für deinen Erfolg', - kd89474fa: 'Back to News', - kda96f5b3: 'Matrix Depth', - kdb27a82d: '‹ Previous', - kdbba338d: 'Registration Number:', - kdc22ad8a: 'Manage matrices, see stats, and create new ones.', - kdc47630b: 'Matrix fill:', - kdca959c3: 'Discover a curated selection of high-quality products that cater to your every need.', - kde1c3c69: 'Logo Image', - kde2b4fa0: 'Result Summary', - ke0a3528a: 'Passwords do not match.', - ke17859b2: 'Business Registration', - ke19afb3d: 'Archive this pool', - ke1abc7d9: 'Add Affiliate', - ke24abf9c: 'Edit coffee content', - ke3889dc2: 'Loading news...', - ke4c4a858: 'Min. 3 characters', - ke697b8cb: 'Set Active', - ke8b9f33c: 'Total in Pool', - ke9e71971: 'Oder weiter mit', - kebf33594: 'Filter by category:', - kec5a5357: 'Upload Invoice', - keccee79f: 'Email address', - ked60db76: 'Back to login', - kee28b8c6: '🔑 Token Status', - kef1656df: 'Apply Crop', - kefd5231d: 'Depth 5', - kf0646f35: 'Our values', - kf0d33884: 'Check browser console for detailed logs', - kf0eef57e: 'Total members:', - kf2147f07: 'Not provided', - kf2180ff6: 'Manage VAT rates', - kf27e4502: 'Ready to Verify', - kf2a1257e: 'Back to profile', - kf2b5c1a6: 'Customer Name', - kf2d8db2b: 'Updating status...', - kf340aa10: 'Loose files:', - kf3557acd: '5‑ary Tree', - kf3b81ba3: 'Used in the URL. Auto-generated from title unless edited.', - kf4868273: 'Click to upload', - kf4f44e2f: 'e.g. ATU12345678', - kf530c357: 'Anmeldung läuft...', - kf663ef67: 'Shop with an infinite variety of products', - kf69154f8: '• Stay on topic', - kf70b9896: 'e.g. 12345', - kf7189e80: '🔄 Manual Refresh Token', - kf78c9087: 'Immediate children', - kf7a91674: 'Policy ↑', - kf7a91676: 'Policy ↓', - kf823daf7: 'Fallback to root if referral parent not in matrix', - kf8c220d3: 'kunde@example.com', - kf971ea7f: 'Created:', - kfaa8fc4a: '• Will book:', - kfb1676b0: 'Phone number *', - kfb37e056: 'Last Login:', - kfb92efe9: 'Description *', - kfce271a2: 'Node Env:', - kfdcad59b: 'Send Email Report', - kfe8083f8: 'First Name', - k17581b31: 'Next page', - k2108b5a0: 'No invoices found for this subscription.', - k34a0a2e4: 'Select the files where you want to run i18n auto-fix.', - k41f3daea: 'Billed monthly', - k43218db0: 'Fix Targets', - k49e51b5f: 'Current plan', - k4bfb4f28: 'Feature comparison', - k4c6eb72c: 'Select all', - k4f209a66: 'You currently don’t have an active subscription.', - k5b7042c7: 'Previous page', - k60b1e339: 'No media or documents found.', - k6569783c: 'Use this to include server-style files. Files with server-only Next.js APIs are skipped for safety.', - k68c88f41: 'Force convert selected files to client components before auto-fix', - k74914369: 'Delete Item', - k772cc77b: 'Complete your profile to unlock all features', - k7fa55432: 'My Subscription', - k86b03343: 'Billed annually', - k8953de89: 'Finance & Invoices', - k947d8777: 'Invoice #', - ka5603827: 'Loading invoices…', - ka86bdc9b: 'Payment frequency', - kb3243742: 'No file', - kc48b877b: 'No subscription selected. Invoices will appear once you have an active subscription.', - kd08b698a: 'Profile Completion', - ke3480838: 'No fixable hardcoded UI text detected in eligible components.', - ked7d533b: 'Media & Documents', - kf5ac16fb: 'Pricing that grows with you', - kf9f94d5e: 'Buy this plan', - kfd632d02: 'Export all invoices', - k5d4f6b2f: 'Bank Information', - k9dafde30: 'Contact Person', - kada9d61c: 'Account Holder', - kde6d477f: 'Email Address', - kfc6b6a29: 'Editing disabled', - k03538639: 'e.g. fr, es, zh-TW', - k5fcc9b0e: 'Delete language', - k9bd0812b: 'Shows why a file was changed, skipped, or left untouched after a fix attempt.', - ka019b3c0: 'e.g. Français', - kbe30c353: 'Coverage by namespace', - kbf49d59b: 'Search keys or English text…', - kc8034db6: 'Auto-fix debug logs', - k0cdc3ee9: 'Assign namespace...', - k1db86f96: 'Create tab', - k505ebdae: 'Unassigned namespaces', - k5f978731: 'Category tabs', - k66edf1eb: 'Drag into a tab card', - k741a01f7: 'All namespaces are categorized.', - ka6791a02: 'Remove from tab', - kb7a30760: 'Filter namespaces quickly or open manager to create and assign tabs.', - kc4671abe: 'Create tabs and assign namespaces by drag-and-drop or dropdown.', - kd6e42900: 'Manage tabs', - ke52ed6e9: 'New tab name', - kef9de7f0: 'Manage category tabs', - kf3c3223a: 'Drop a namespace here.', - k0700b1f2: 'No global keys yet. Mark keys as global in the translation wizard, or add one from the dropdown above.', - k47bce570: 'Select key to add to global', - k5e5e8744: 'Translation wizard available', - k6aba2cb0: 'Back to panels', - k6cfeedd3: 'Global terms', - k725dd1d6: 'Start wizard', - kad7d8c49: 'Use this list for cross-context terms like IBAN.', - kc02b17c3: 'Remove from global terms', - kc518ff5c: 'English reference', - kcd190bdd: 'Translation wizard', - kfd1e0089: 'Auto-scroll on panel open', - }, - - // ─── Notifications / Toasts ──────────────────────────── - toasts: { - loginSuccess: 'Anmeldung erfolgreich', - loginSuccessMessage: 'Du bist jetzt angemeldet.', - loginFailed: 'Anmeldung fehlgeschlagen', - loginFailedMessage: 'Bitte überprüfe deine Zugangsdaten und versuche es erneut.', - registerSuccess: 'Registrierung erfolgreich', - registerSuccessMessage: 'Du kannst dich jetzt mit deinem neuen Konto anmelden.', - registerFailed: 'Registrierung fehlgeschlagen', - registerFailedMessage: 'Konto konnte nicht erstellt werden. Bitte versuche es erneut.', - invitationVerified: 'Einladung bestätigt', - invitationVerifiedMessage: 'Dein Einladungslink ist gültig. Du kannst dich jetzt registrieren.', - invalidInvitation: 'Ungültige Einladung', - invalidInvitationMessage: 'Dieser Einladungslink ist ungültig oder nicht mehr aktiv.', - networkError: 'Netzwerkfehler', - networkErrorMessage: 'Server nicht erreichbar. Läuft das Backend?', - saveSuccess: 'Erfolgreich gespeichert.', - saveFailed: 'Speichern fehlgeschlagen. Bitte versuche es erneut.', - copySuccess: 'In die Zwischenablage kopiert!', - copyFailed: 'Kopieren fehlgeschlagen.', - deleteSuccess: 'Erfolgreich gelöscht.', - deleteFailed: 'Löschen fehlgeschlagen. Bitte versuche es erneut.', - genericError: 'Etwas ist schief gelaufen. Bitte versuche es erneut.', + "autofix": { + "k02665163": "Next steps", + "k027bd82e": "Edit the shipping prices for 60 and 120 pieces.", + "k047a175d": "No contracts found.", + "k06d4487f": "Cancel editing", + "k0853cfa6": "Thanks for your subscription!", + "k096f4013": "Manage your company stamps. One active at a time.", + "k0af6c6be": "Create & Activate", + "k0affa826": "Shown to users in the shop and checkout.", + "k0b03e660": "2. Choose coffees & quantities", + "k0b2445d5": "Generating PDF preview…", + "k0bbc633d": "Loading contract preview…", + "k0d9c63c5": "Scanning workspace files and component subdirectories...", + "k11438b4c": "Total incl. tax", + "k12a86c71": "Shipping…", + "k14eb468b": "Potential untranslated UI text detected", + "k155166db": "Contract variables are auto-populated from your form data.", + "k15bea9bb": "Address details used on invoices.", + "k1824f78d": "Please select coffees and fill all required buyer fields, signing city, and signature.", + "k18872b63": "No image", + "k1bf4ffa4": "Untranslated literals", + "k20127e1c": "No selection found.", + "k21361e0d": "Summary & Details", + "k221fa311": "Invoice template variables", + "k22c8f7f1": "Create Template", + "k28f1a9b1": "Full name", + "k2d0798a6": "Loading subscription…", + "k2e43a9c4": "Click or drag and drop a new image here", + "k3466b0e0": "Payment method", + "k346a2c64": "Language Management", + "k39791457": "Manage contract templates, company stamp, and create new templates.", + "k41ab9eb6": "You'll be able to crop and adjust the image after uploading", + "k41afd863": "Editing:", + "k4aeb8688": "2. Your selection", + "k4be6f631": "Save changes", + "k516705dd": "Ort ist erforderlich.", + "k528eede9": "Same as shipping address", + "k56717603": "no image", + "k56a52520": "Skipped files", + "k5a489751": "Save Changes", + "k5ad4d864": "Auto-fixed files", + "k6070f6e3": "Add New Stamp", + "k60874ea3": "Keys auto-created", + "k67cb36a4": "Contract Management", + "k6a2c64e8": "Last name", + "k6a892262": "No keys match your search.", + "k6ee0a1b6": "Click or drag and drop an image here", + "k73d1d7d7": "Edit Crop", + "k74491338": "Reverse Charge aktiv: gueltige UID und auslaendisches Rechnungsland erkannt.", + "k7775eddb": "Your Company Stamps", + "k788633d1": "Profit Planet", + "k7a3a6ea3": "to render invoice line items.", + "k7f48f374": "1. Select subscription size", + "k7fe72eff": "No platforms available.", + "k80ac9651": "PNG, JPG, WebP up to 10MB", + "k825359ab": "Accepted types: PNG, JPEG, WebP, SVG. Max size: 5MB.", + "k832387c5": "Loading…", + "k83deba83": "per 10 pcs", + "k875f4054": "Manage all coffees.", + "k8c75468c": "No subscriptions found.", + "k8cf40180": "Missing keys in en.ts", + "k90a6e795": "Unique keys used", + "k91052e3f": "Translation calls", + "k92639a9a": "Language code", + "k926966d0": "Language name", + "k96839795": "Back to selection", + "k99bffb65": "Fill all fields to proceed.", + "k9b173204": "Files auto-fixed", + "k9c1a5ecc": "Fill fields with logged in data", + "ka3ee9ded": "Subscription Billing", + "ka56b7b2b": "No PDF preview available.", + "ka5f38d19": "Company Stamp", + "ka802064d": "Applying i18n auto-fixes to client components and updating translation files...", + "kaa30f0cd": "Create Coffee", + "kaa8bbc8e": "Company Information", + "kac6cedc7": "Saving…", + "kae63e46a": "Missing translation keys detected in workspace", + "kb06fa395": "Edit Coffee", + "kb0b660e2": "Configure Coffee Subscription", + "kb1c1c0e5": "Logging you out...", + "kb2217bdf": "Translation Coverage Scan", + "kb791958e": "Use these placeholders in your HTML: invoiceNumber, customerName, issuedAt, totalNet, totalTax, totalGross, itemsHtml.", + "kb8f33873": "Translation progress", + "kb9e483c4": "Update details of the coffee.", + "kba6bd6f3": "or click to browse", + "kcc4adbcc": "Navigation shortcuts", + "kce094582": "Invoice address", + "kd1a2772d": "Street & No.", + "kd2a00802": "Image removed - Click to upload a new one", + "kd3092148": "Subscription created.", + "kd379df9b": "Open preview", + "kd63c8219": "You have unsaved changes.", + "kd6f8d7e9": "1. Your details", + "kd8a5ad17": "Back to list", + "kda5f982e": "Delete Language", + "kddd4832f": "Delete coffee?", + "kde5c689e": "Pick a platform to continue.", + "ke33e6fbf": "Send invoice by email", + "ke58b7627": "Drag and drop your stamp here", + "ke74b1adf": "Contract template is not available.", + "ke7b634f2": "3. Preview", + "ke7f0a9e3": "FREE SHIPPING", + "kea7cde7a": "Back to Admin", + "kec078e54": "No coffees selected yet.", + "kefe5f0dd": "Ohne gueltige UID wird die Rechnung mit normaler MwSt erstellt.", + "kf1a9384b": "Auto-applied to documents where applicable.", + "kf4e45236": "Add Language", + "kf72d41db": "Add a new coffee.", + "kfe9527d8": "First name", + "kfeac3f7e": "Choose file", + "k0c51fa85": "Activate template now?", + "k134e3932": "Active stamp", + "k1f0b2c48": "z.B. Wien", + "k2fac9ff2": "Template name", + "k3477c83a": "Describe the product", + "k35ac864e": "Search templates…", + "ka8f53660": "Delete Company Stamp", + "kaa5e5363": "ABO Contract PDF Preview", + "kcb65c692": "e.g., Company Seal 2025", + "kd9e4bcbd": "Contract Preview", + "kf1512f8f": "z.B. SI12345678", + "k00016501": "🧪 Token Refresh Test", + "k002455d8": "Total Gross / Brutto", + "k00394342": "Welcome back! Log in to continue.", + "k01ad6d49": "Overview of taxes, revenue, and invoices.", + "k022df6ac": "Admin Verified", + "k039e629b": "Overview meta", + "k03cd9b72": "Commission:", + "k04b5cbca": "Loose Files", + "k051e8ac8": "Confirm password", + "k055bba0c": "Are you sure you want to delete", + "k05626798": "Click to upload logo", + "k0778fa87": "Make sure JWT_EXPIRES_IN=2m in backend .env for fast testing", + "k07fe11b2": "Company / Holder name", + "k088d8f6c": "Delete news?", + "k08c92a12": "Welcome to Profit Planet Community 🌍", + "k0925e287": "e.g., VIP Members", + "k098ec0b9": "Manage the “Platforms” cards shown on the user dashboard.", + "k09def344": "Edit Affiliate", + "k09f4290f": "Reset password", + "k0ac84efe": "← Back", + "k0c838ec3": "Min €", + "k0c87d75d": "Max €", + "k0c95a1b4": "Back:", + "k0cc2a3ba": "Versuche andere Suchbegriffe oder Filter", + "k0cdde8f8": "Name:", + "k0d6626e3": "👤 User Info", + "k0d8cb427": "Type:", + "k0da2c941": "Users Pending Verification", + "k0dba4c6b": "Role:", + "k0dca1445": "Sort:", + "k0dcb69ea": "No matrices found.", + "k0dd01c1c": "Show:", + "k0efd830c": "Verification Readiness", + "k0f0395ca": "Multi-statement SQL and dump files are supported. Use with caution.", + "k0f1fc266": "All Statuses", + "k0fbaa1a9": "Jetzt registrieren", + "k0fe28e0b": "Affiliate Management", + "k10ccb626": "All Users", + "k10e2568f": "All Types", + "k110bae43": "All Roles", + "k111c49d8": "Users count respects each matrix’s max depth policy.", + "k11974e0f": "Advanced: choose parent manually", + "k12a7170a": "No ghost directories found. Run Refresh to scan again.", + "k1387f81e": "Export all filtered users to CSV", + "k1405afab": "Login and watch the countdown timer", + "k14a4b43e": "Refreshing…", + "k1521a376": "Export all users as CSV", + "k15843a06": "Active Pools", + "k15da24d8": "Join Group", + "k16b60f69": "View All", + "k17ba59ff": "Community Hands - Profit Planet", + "k17f65c37": "Example: /shop or https://example.com", + "k1882bd75": "Max Mustermann", + "k199db5f1": "your.email@example.com", + "k19f2c5dc": "No affiliates found", + "k1a1ca621": "e.g. DE89 3704 0044 0532 0130 00", + "k1af107a4": "Logo preview", + "k1af97a07": "User Management", + "k1b9c46e5": "Affiliate Partners", + "k1d178b73": "Basic Information", + "k1db0c7cd": "No loose files found. Run Refresh to scan again.", + "k1ddc749e": "Expiry Date", + "k1df74994": "All subscriptions", + "k1e5d5139": "No users match your filters.", + "k1e62338a": "Commission Rate", + "k1eedcda3": "User Status Hook", + "k1f269263": "DE89 3704 0044 0532 0130 00", + "k209ba561": "Create New Pool", + "k20ab2fc7": "We'll send a verification code to your email address.", + "k21440f8a": "Pool Management", + "k21db276a": "Auf Lager", + "k228929e2": "Profile Information", + "k23c9f0ff": "No results yet. Import a SQL dump to see output.", + "k258c3515": "892 members", + "k26ecadfd": "My Groups", + "k26fbc186": "Access Denied", + "k2786bc5f": "Signing in...", + "k27e93fd7": "Stay informed with our latest announcements and insights", + "k27f56959": "State change will affect add/remove operations.", + "k290e3aab": "tt.mm jjjj", + "k2a2fe15a": "Phone Number", + "k2a37c394": "Brief description of the affiliate partner...", + "k2af2916f": "Your account is fully submitted. Our team will verify your account shortly.", + "k2cd79a3d": "Browse all favorites", + "k2e8f3110": "All Status", + "k2f176a63": "No news articles available yet.", + "k2f4ebc32": "Rows per page:", + "k2f78fabe": "Go to User Verification", + "k31cadca6": "Partner Name *", + "k31d46514": "Top node:", + "k33918465": "Company Name", + "k354a026b": "Subscription ID", + "k35f67931": "Changes apply from your next billing cycle.", + "k3777e830": "Our team", + "k37d7b9c4": "Checking pool inflow...", + "k383672e3": "owner@example.com", + "k39437388": "Core Pool — 1¢ per capsule per member", + "k39e2c5db": "Add Platform", + "k3ac8ca10": "Only SQL dump files are supported.", + "k3b03502e": "Error loading account status", + "k3b7dd87a": "Try again", + "k3b8e0964": "Subscription details", + "k3c32c87f": "Connect with like-minded individuals, share sustainable practices, and make a positive impact together.", + "k3c3e6850": "Email Verification", + "k3d01de91": "PROFIT PLANET", + "k3d5fe74a": "Expires At:", + "k3def5ebf": "Category *", + "k3ee27b4f": "Top-node Email", + "k3f833ce6": "e.g., Platinum Matrix", + "k40f4552a": "Level 2+", + "k410ff9a9": "Total Affiliates", + "k416bfe70": "No further status changes are available for this subscription.", + "k4191cdba": "Edit VAT", + "k41f7c81d": "Delete Account", + "k4307f6c7": "Date of Birth:", + "k431328cf": "No affiliate partners available at the moment.", + "k471ba099": "News Manager", + "k47b952de": "Has Token:", + "k47bbd37e": "Sign in to Profit Planet", + "k483aa95a": "• Share authentic experiences", + "k48852b8d": "Customer Email", + "k49568342": "Manage your affiliate partners and tracking links", + "k4968eb2a": "Abonement:", + "k49f254bd": "Current URL:", + "k4a055849": "ID Front", + "k4a9e1ebe": "Loading user details...", + "k4b6c7681": "Open subscriptions", + "k4c5e8e87": "Export CSV", + "k4c5ecd73": "Export PDF", + "k4cb62cff": "Keine Produkte gefunden", + "k4db68c96": "SQL Import", + "k4e0c889b": "Not Ready", + "k4e168c01": "Coffee Abonnements", + "k4e532c48": "Verification Status", + "k4e61bc77": "Root not yet loaded.", + "k4ed7f4d1": "Time Left:", + "k502a0057": "Last 7 days", + "k5122ab54": "Request again", + "k51ee3aae": "email@example.com", + "k52af8b8d": "Quick Actions", + "k533db977": "Your new password", + "k54c06343": "Refresh Token", + "k54f49724": "No users match your search.", + "k55aba973": "Produkte gefunden", + "k5614c806": "Review and verify all users who need admin approval. Users must complete all steps before verification.", + "k56435c9b": "Verfügbarkeit", + "k5738c039": "Matrix created successfully.", + "k577a012c": "User Type", + "k578dcc0b": "PNG, JPG, WebP, SVG up to 5MB", + "k58344b74": "No direct children.", + "k5834cbed": "Loading affiliate partners...", + "k58424b1d": "Eco Warriors", + "k5857ef79": "Existing Pools", + "k59422f07": "Linked Subscription", + "k5aae8706": "New password", + "k5c598bc0": "Trending Groups", + "k5d4d494e": "Loading members...", + "k5d85b354": "Driver's License", + "k5e580e3f": "Filter zurücksetzen", + "k5ef19112": "Join our team", + "k5f74c123": "Last 30 days", + "k5fb70267": "Shop wird geladen...", + "k5fbf1824": "Masked names for deeper descendants.", + "k61c2a732": "Angemeldet bleiben", + "k61f6cd4e": "Token Preview:", + "k6285753a": "Back to Pool Management", + "k62bc3c59": "e.g. Berlin", + "k62d12fab": "Error loading data", + "k63115bb4": "ID Documents", + "k633438a0": "Discover our trusted partners and earn commissions through affiliate links.", + "k63458f03": "Produkte durchsuchen...", + "k65b67dc3": "Back to matrices", + "k65e33378": "Total users fetched", + "k661c032b": "You need admin privileges to access this page.", + "k664072a1": "Dev Management", + "k67391c88": "Manage system pools and members.", + "k678d2b40": "Super reduced", + "k67cace8b": "Profile Settings", + "k67dd8a82": "Contact name", + "k6828cdd9": "Affiliate URL *", + "k6838438d": "Ghost Directories", + "k6a4108c8": "Last Name", + "k6a486e3e": "Create Group", + "k6aa2d843": "Read full guidelines", + "k6af9037b": "Open navigation", + "k6b0f4f70": "ID documents or a signed contract are missing for this user. The user’s verification status should be checked.", + "k6b76bd0e": "Willkommen bei Profit Planet", + "k6c6e5c0f": "Use with caution", + "k6ca85cda": "Trending right now", + "k6d85810b": "Your password", + "k6de13000": "Zero Waste Living", + "k6e4a6069": "Import SQL dump files to run database migrations.", + "k70972912": "Edit Profile", + "k70bcafbd": "Recent Discussions", + "k71d565c9": "Address:", + "k72428656": "Highest full level:", + "k73831c06": "Personal Matrix", + "k73cf4fb6": "Edit News", + "k73d110fa": "Edit Mode", + "k73d4a156": "Check Network tab for /api/refresh requests", + "k744fda01": "My Subscriptions", + "k748bf541": "No users match current filters.", + "k75078d0b": "Add News", + "k750c1eb5": "Add User", + "k7572cceb": "Edit VAT rates", + "k75cb45a7": "This value is stored as net price.", + "k75d83433": "• Help others learn and grow", + "k77049179": "• Reason:", + "k77444d5b": "Exoscale directories that do not have a matching user in the database.", + "k776b751c": "Policy Max Depth", + "k777299de": "Finance Management", + "k77767b9e": "Close notification", + "k77a56aae": "News & Updates", + "k77d5ecd9": "Copy referral link", + "k7938d4fd": "Result Sets", + "k79e1c459": "Manage all users, view statistics, and handle verification.", + "k7ab45054": "All Readiness", + "k7bed84a7": "Member Since", + "k7c19388f": "e.g., 10%", + "k7c740cd5": "Ready to search. Click the Search button to fetch candidates.", + "k7db4e5a9": "Visit Affiliate Link", + "k7f57b169": "Test API Call", + "k7f9568ec": "Highest full level", + "k7fa2c4af": "Loading users...", + "k811fbc99": "API Base URL:", + "k815ca9ba": "A matrix configuration already exists for this selection.", + "k8193b7a2": "Loading loose files...", + "k81a1b900": "Loading settings…", + "k81b056f2": "See our job postings", + "k81c0b74b": "Status:", + "k81c7c2f2": "Musterstraße 1", + "k8323a7d9": "Loading:", + "k832a032b": "Search affiliates...", + "k8358f1d1": "Loading folder issues...", + "k84d5cfcb": "View overview", + "k85446b89": "Next billing", + "k85682289": "e.g. FN123456a", + "k85c66f50": "Search & Filter Pending Users", + "k867f8265": "Due Date", + "k86aa4f9c": "Current Month", + "k87e4b9a2": "Core Pool", + "k883ea8c5": "Loading ghost directories...", + "k88d8bb9d": "Passwort vergessen?", + "k890ff52f": "e.g., Coffee Equipment Co.", + "k8a35cc53": "SQL dumps run immediately and can modify production data.", + "k8a59b156": "Import SQL", + "k8b71f0c7": "Email, name, company...", + "k8b89f863": "External partner website.", + "k8bb1c673": "Email:", + "k8be14d47": "Error:", + "k8c3085f4": "Users ↓", + "k8c3085f6": "Users ↑", + "k8d84b4c5": "Add New Affiliate", + "k8dda5201": "you@example.com", + "k8eaa7b3b": "e.g. +43 1 234567", + "k8eab7c16": "National ID", + "k8eb2524c": "Enter 6-digit code", + "k8f46c81e": "e.g., 5", + "k8f528877": "Crop & Adjust Image", + "k915115a9": "Last 90 days", + "k91912619": "Close navigation", + "k91e69df1": "ProfitPlanet GmbH", + "k91eb415a": "ProfitPlanet Logo", + "k91f24187": "Complete Profile", + "k9213db6e": "📋 Testing Instructions", + "k93165aea": "12345 Berlin", + "k93b6dc1b": "Uploaded Documents", + "k93f03bca": "Signed Contract Document", + "k941fd092": "Last Folder Structure Action", + "k955b1cbe": "No results", + "k959fb1a6": "Remove member from pool?", + "k961ba411": "Community Guidelines", + "k9683262f": "Fill %", + "k96dbbe05": "Street & House Number", + "k972cee5e": "Front:", + "k9772afa4": "No included items were returned for this subscription.", + "k97abed7d": "Tax Certificate", + "k981b1f1a": "SQL Dump Import", + "k98519a5e": "I have read, understood, and agree to the terms and conditions of this service agreement.", + "k9860434f": "Please review and upload your signed service agreement.", + "k9b3266b5": "Pending backend wiring to MatrixController.listVacancies. This section will surface empty slots and allow reassignment.", + "k9bc83f50": "Change coffees for next month", + "k9c3db145": "Start Discussion", + "k9d0c063d": "Password saved. Redirecting to login...", + "k9e609523": "No missing folders found. Run Refresh to scan again.", + "k9f29dbfb": "Entdecke nachhaltige Produkte und verdiene dabei. Deine Plattform für bewussten Konsum und finanzielle Vorteile.", + "k9f56d4ac": "e.g. +43 676 1234567", + "ka00fc5db": "Manage your account information and preferences", + "ka15f5ec5": "Auth Store State", + "ka1d0b6ff": "No deeper descendants.", + "ka29ac729": "Saved successfully", + "ka3c41ff8": "View details →", + "ka3cbb536": "Continue →", + "ka4ecb6cd": "Search…", + "ka5bf342b": "Select…", + "ka5c2113f": "Company Name:", + "ka5d50257": "Loading VAT rates…", + "ka6be28d2": "Add user to pool", + "ka7073aee": "Profit Planet Store", + "ka72e833f": "Policy filter:", + "ka8ea17b8": "Next ›", + "ka991f523": "Loading affiliates...", + "ka9d6e905": "Total users under me", + "kaa656770": "You are not part of any matrix yet.", + "kaa8231ec": "This Year", + "kab4f5159": "Each node can hold up to 5 direct children. Depth unbounded.", + "kab99811e": "Disabled message", + "kace2fe51": "Verification Code", + "kadc6abcf": "Auth Debug Page", + "kadd80fbc": "Clear selection", + "kaf787fe5": "1,284 members", + "kb0031873": "Browse all trending", + "kb01addda": "Token should automatically renew without user action", + "kb1341138": "Ensures both contract and gdpr folders exist for each user.", + "kb24782ec": "Last Login", + "kb2dfe482": "Read More", + "kb324fb25": "Total Users", + "kb337d94e": "No entries found.", + "kb343460d": "Rogue users", + "kb35549bb": "Search name or email…", + "kb383a3e8": "Included in your subscription", + "kb45c4d5f": "Tax ID:", + "kb4675362": "Import Results", + "kb4aba3dc": "No unverified users match current filters.", + "kb573897d": "Short description of the pool", + "kb5e0b861": "Inactive Pools", + "kb6b367b7": "When time left ≤ 3 minutes, auto-refresh should trigger", + "kb6eacc9d": "Select a .sql dump file using Import SQL.", + "kb74d7c51": "🔧 Manual Controls", + "kb7849a5a": "Create Matrix", + "kb846955a": "Select Document Type", + "kb87eb38b": "Enter at least 3 characters and click Search.", + "kb8cd2810": "Account Status", + "kb8d6f3f7": "Shop Collection", + "kbbefb159": "Error loading users", + "kbc368b5d": "Date of Birth", + "kbc6a6543": "ID Back", + "kbce9fbea": "No platforms configured.", + "kbd8b3364": "Sign Contract", + "kbd979e13": "We are a community", + "kbdb02e32": "Keine Rechnungen gefunden.", + "kbe9355f8": "Business License", + "kbf4b7789": "You are already logged in. Redirecting...", + "kbf7bde57": "Select any subscription to view details and included items.", + "kbfa5b4c5": "Tax ID", + "kbfd13a03": "Account Setup", + "kbff01823": "Shows files directly under the user folder that are not in contract or gdpr.", + "kc0d718d7": "Registration Number", + "kc0e3b03d": "Total:", + "kc3d181e2": "Forgot password?", + "kc4315932": "Dashboard Management", + "kc4d7816e": "Levels filled", + "kc7bb0c06": "Filter by country or code", + "kc7c429a6": "Add users to matrix", + "kc813a103": "Loading available coffees…", + "kc8652e34": "You don’t have any subscriptions yet.", + "kc9d9d15d": "Postal Code", + "kca04f5e3": "Phone:", + "kcada239b": "View your active subscriptions, included items and subscription details on a dedicated page.", + "kcb491706": "Folder Structure", + "kcbc17bbd": "No users in this pool yet.", + "kcc15636b": "Coffee content can only be changed while a subscription is issued, ongoing, or paused.", + "kcc1c5596": "Profit Planet Mascot", + "kccbc54c1": "Delete Affiliate", + "kccc13f16": "← Go back", + "kccde6d86": "User Verification Center", + "kccf7593a": "• Be respectful and kind", + "kcd7a1625": "deine@email.com", + "kcd9890e5": "PNG, JPG, WebP up to 5MB", + "kcdfef775": "Loading subscriptions…", + "kce0ab46c": "Dein Passwort", + "kcf4ba87d": "Crop Affiliate Logo", + "kcf61fc9e": "Last Loose Files Action", + "kd00443f2": "Go to Dashboard", + "kd04a7c59": "Matrix Name", + "kd058bb7b": "Missing:", + "kd09be3cd": "Matrix Management", + "kd1c17b3f": "Alle Marken", + "kd1f35ccf": "Search & Filter Users", + "kd2e35b08": "Rows per page", + "kd2e5e813": "• Already booked:", + "kd304af2e": "Global search...", + "kd40c4f86": "Activate this pool", + "kd49dc1e1": "Pool Type", + "kd4a0fd1e": "Pool Name", + "kd4af6368": "Issue Date", + "kd4d50566": "ID documents or a signed contract are missing from object storage. The user’s verification status should be checked.", + "kd4eb7ee0": "Close menu", + "kd51f320c": "Exoscale Folder Structure", + "kd56a13f2": "Recipient Email", + "kd5cca6e9": "? This action cannot be undone.", + "kd6024811": "PDF File", + "kd642e230": "Search by name or email. Minimum 3 characters. Existing matrix members are hidden.", + "kd68da70d": "Nachhaltige Produkte für deinen Erfolg", + "kd89474fa": "Back to News", + "kda96f5b3": "Matrix Depth", + "kdb27a82d": "‹ Previous", + "kdbba338d": "Registration Number:", + "kdc22ad8a": "Manage matrices, see stats, and create new ones.", + "kdc47630b": "Matrix fill:", + "kdca959c3": "Discover a curated selection of high-quality products that cater to your every need.", + "kde1c3c69": "Logo Image", + "kde2b4fa0": "Result Summary", + "ke0a3528a": "Passwords do not match.", + "ke17859b2": "Business Registration", + "ke19afb3d": "Archive this pool", + "ke1abc7d9": "Add Affiliate", + "ke24abf9c": "Edit coffee content", + "ke3889dc2": "Loading news...", + "ke4c4a858": "Min. 3 characters", + "ke697b8cb": "Set Active", + "ke8b9f33c": "Total in Pool", + "ke9e71971": "Oder weiter mit", + "kebf33594": "Filter by category:", + "kec5a5357": "Upload Invoice", + "keccee79f": "Email address", + "ked60db76": "Back to login", + "kee28b8c6": "🔑 Token Status", + "kef1656df": "Apply Crop", + "kefd5231d": "Depth 5", + "kf0646f35": "Our values", + "kf0d33884": "Check browser console for detailed logs", + "kf0eef57e": "Total members:", + "kf2147f07": "Not provided", + "kf2180ff6": "Manage VAT rates", + "kf27e4502": "Ready to Verify", + "kf2a1257e": "Back to profile", + "kf2b5c1a6": "Customer Name", + "kf2d8db2b": "Updating status...", + "kf340aa10": "Loose files:", + "kf3557acd": "5‑ary Tree", + "kf3b81ba3": "Used in the URL. Auto-generated from title unless edited.", + "kf4868273": "Click to upload", + "kf4f44e2f": "e.g. ATU12345678", + "kf530c357": "Anmeldung läuft...", + "kf663ef67": "Shop with an infinite variety of products", + "kf69154f8": "• Stay on topic", + "kf70b9896": "e.g. 12345", + "kf7189e80": "🔄 Manual Refresh Token", + "kf78c9087": "Immediate children", + "kf7a91674": "Policy ↑", + "kf7a91676": "Policy ↓", + "kf823daf7": "Fallback to root if referral parent not in matrix", + "kf8c220d3": "kunde@example.com", + "kf971ea7f": "Created:", + "kfaa8fc4a": "• Will book:", + "kfb1676b0": "Phone number *", + "kfb37e056": "Last Login:", + "kfb92efe9": "Description *", + "kfce271a2": "Node Env:", + "kfdcad59b": "Send Email Report", + "kfe8083f8": "First Name", + "k17581b31": "Next page", + "k2108b5a0": "No invoices found for this subscription.", + "k34a0a2e4": "Select the files where you want to run i18n auto-fix.", + "k41f3daea": "Billed monthly", + "k43218db0": "Fix Targets", + "k49e51b5f": "Current plan", + "k4bfb4f28": "Feature comparison", + "k4c6eb72c": "Select all", + "k4f209a66": "You currently don’t have an active subscription.", + "k5b7042c7": "Previous page", + "k60b1e339": "No media or documents found.", + "k6569783c": "Use this to include server-style files. Files with server-only Next.js APIs are skipped for safety.", + "k68c88f41": "Force convert selected files to client components before auto-fix", + "k74914369": "Delete Item", + "k772cc77b": "Complete your profile to unlock all features", + "k7fa55432": "My Subscription", + "k86b03343": "Billed annually", + "k8953de89": "Finance & Invoices", + "k947d8777": "Invoice #", + "ka5603827": "Loading invoices…", + "ka86bdc9b": "Payment frequency", + "kb3243742": "No file", + "kc48b877b": "No subscription selected. Invoices will appear once you have an active subscription.", + "kd08b698a": "Profile Completion", + "ke3480838": "No fixable hardcoded UI text detected in eligible components.", + "ked7d533b": "Media & Documents", + "kf5ac16fb": "Pricing that grows with you", + "kf9f94d5e": "Buy this plan", + "kfd632d02": "Export all invoices", + "k5d4f6b2f": "Bank Information", + "k9dafde30": "Contact Person", + "kada9d61c": "Account Holder", + "kde6d477f": "Email Address", + "kfc6b6a29": "Editing disabled", + "k03538639": "e.g. fr, es, zh-TW", + "k5fcc9b0e": "Delete language", + "k9bd0812b": "Shows why a file was changed, skipped, or left untouched after a fix attempt.", + "ka019b3c0": "e.g. Français", + "kbe30c353": "Coverage by namespace", + "kbf49d59b": "Search keys or English text…", + "kc8034db6": "Auto-fix debug logs", + "k0cdc3ee9": "Assign namespace...", + "k1db86f96": "Create tab", + "k505ebdae": "Unassigned namespaces", + "k5f978731": "Category tabs", + "k66edf1eb": "Drag into a tab card", + "k741a01f7": "All namespaces are categorized.", + "ka6791a02": "Remove from tab", + "kb7a30760": "Filter namespaces quickly or open manager to create and assign tabs.", + "kc4671abe": "Create tabs and assign namespaces by drag-and-drop or dropdown.", + "kd6e42900": "Manage tabs", + "ke52ed6e9": "New tab name", + "kef9de7f0": "Manage category tabs", + "kf3c3223a": "Drop a namespace here.", + "k0700b1f2": "No global keys yet. Mark keys as global in the translation wizard, or add one from the dropdown above.", + "k47bce570": "Select key to add to global", + "k5e5e8744": "Translation wizard available", + "k6aba2cb0": "Back to panels", + "k6cfeedd3": "Global terms", + "k725dd1d6": "Start wizard", + "kad7d8c49": "Use this list for cross-context terms like IBAN.", + "kc02b17c3": "Remove from global terms", + "kc518ff5c": "English reference", + "kcd190bdd": "Translation wizard", + "kfd1e0089": "Auto-scroll on panel open", + "k429d94bf": "Organized by template family", + "k61d66984": "Grouped library", + "k66b39536": "Template overview", + "k74823841": "Stronger language switching", + "k766a5504": "Contracts are grouped by type again. Language now sits in the main header area of each track as a direct selector, so you can switch faster without digging into nested cards.", + "k7e4ef084": "Jump between template families, spot the currently active versions immediately and keep language-specific revisions in one place.", + "k8351e02f": "Admin workspace", + "kccff045c": "Faster edit flow", + "kf962066f": "Contract type", + "kb1cf599b": "Counts as global key" }, + "toasts": { + "loginSuccess": "Anmeldung erfolgreich", + "loginSuccessMessage": "Du bist jetzt angemeldet.", + "loginFailed": "Anmeldung fehlgeschlagen", + "loginFailedMessage": "Bitte überprüfe deine Zugangsdaten und versuche es erneut.", + "registerSuccess": "Registrierung erfolgreich", + "registerSuccessMessage": "Du kannst dich jetzt mit deinem neuen Konto anmelden.", + "registerFailed": "Registrierung fehlgeschlagen", + "registerFailedMessage": "Konto konnte nicht erstellt werden. Bitte versuche es erneut.", + "invitationVerified": "Einladung bestätigt", + "invitationVerifiedMessage": "Dein Einladungslink ist gültig. Du kannst dich jetzt registrieren.", + "invalidInvitation": "Ungültige Einladung", + "invalidInvitationMessage": "Dieser Einladungslink ist ungültig oder nicht mehr aktiv.", + "networkError": "Netzwerkfehler", + "networkErrorMessage": "Server nicht erreichbar. Läuft das Backend?", + "saveSuccess": "Erfolgreich gespeichert.", + "saveFailed": "Speichern fehlgeschlagen. Bitte versuche es erneut.", + "copySuccess": "In die Zwischenablage kopiert!", + "copyFailed": "Kopieren fehlgeschlagen.", + "deleteSuccess": "Erfolgreich gelöscht.", + "deleteFailed": "Löschen fehlgeschlagen. Bitte versuche es erneut.", + "genericError": "Etwas ist schief gelaufen. Bitte versuche es erneut." + } }; diff --git a/src/app/i18n/translations/en.ts b/src/app/i18n/translations/en.ts index a8bbe4e..a37076b 100644 --- a/src/app/i18n/translations/en.ts +++ b/src/app/i18n/translations/en.ts @@ -1,1719 +1,1775 @@ import { Translations } from '../types'; +// Language name: English export const en: Translations = { - // ─── General ─────────────────────────────────────────── - common: { - loading: 'Loading…', - saving: 'Saving…', - save: 'Save', - saved: 'Saved', - cancel: 'Cancel', - close: 'Close', - back: 'Back', - confirm: 'Confirm', - delete: 'Delete', - edit: 'Edit', - add: 'Add', - search: 'Search', - searchPlaceholder: 'Search…', - noResults: 'No results found.', - error: 'Error', - success: 'Success', - required: 'Required', - optional: 'optional', - yes: 'Yes', - no: 'No', - copy: 'Copy', - copied: 'Copied!', - download: 'Download', - upload: 'Upload', - preview: 'Preview', - refresh: 'Refresh', - backToHome: 'Back to Home', - unsavedChanges: 'You have unsaved changes.', - learnMore: 'Learn More', - getStarted: 'Get Started', - language: 'Language', + "common": { + "loading": "Loading…", + "saving": "Saving…", + "save": "Save", + "saved": "Saved", + "cancel": "Cancel", + "close": "Close", + "back": "Back", + "confirm": "Confirm", + "delete": "Delete", + "edit": "Edit", + "add": "Add", + "search": "Search", + "searchPlaceholder": "Search…", + "noResults": "No results found.", + "error": "Error", + "success": "Success", + "required": "Required", + "optional": "optional", + "yes": "Yes", + "no": "No", + "copy": "Copy", + "copied": "Copied!", + "download": "Download", + "upload": "Upload", + "preview": "Preview", + "refresh": "Refresh", + "backToHome": "Back to Home", + "unsavedChanges": "You have unsaved changes.", + "learnMore": "Learn More", + "getStarted": "Get Started", + "language": "Language" }, - - home: { - title: 'Profit Planet', - tagline: 'Discover and trade sustainable products', - description: 'Join our community of eco-conscious consumers and businesses. Trade sustainable products, earn rewards, and make a positive impact on our planet.', - features: { - sustainable: { - title: 'Sustainable Products', - description: 'Discover eco-friendly products that make a difference for our planet.', + "home": { + "title": "Profit Planet", + "tagline": "Discover and trade sustainable products", + "description": "Join our community of eco-conscious consumers and businesses. Trade sustainable products, earn rewards, and make a positive impact on our planet.", + "features": { + "sustainable": { + "title": "Sustainable Products", + "description": "Discover eco-friendly products that make a difference for our planet." }, - community: { - title: 'Active Community', - description: 'Connect with like-minded people who care about sustainability.', + "community": { + "title": "Active Community", + "description": "Connect with like-minded people who care about sustainability." }, - rewards: { - title: 'Earn Rewards', - description: 'Get Gold Points for every sustainable purchase and action.', + "rewards": { + "title": "Earn Rewards", + "description": "Get Gold Points for every sustainable purchase and action." + } + }, + "stats": { + "members": "Active Members", + "products": "Eco Products", + "communities": "Communities" + }, + "cta": { + "getStarted": "Get Started", + "learnMore": "Learn More" + } + }, + "footer": { + "company": "Profit Planet GmbH", + "rights": "All rights reserved.", + "privacy": "Privacy Policy", + "terms": "Terms of Service", + "contact": "Contact" + }, + "nav": { + "home": "Home", + "shop": "Shop", + "dashboard": "Dashboard", + "community": "Community", + "profile": "Profile", + "login": "Login", + "logout": "Logout", + "news": "News", + "memberships": "Memberships", + "aboutUs": "About Us", + "affiliateLinks": "Affiliate Links", + "information": "Information", + "myAccount": "My Account", + "mySubscriptions": "My Subscriptions", + "coffeeSubscriptions": "Coffee Abonnements" + }, + "login": { + "title": "PROFIT PLANET", + "subtitle": "Welcome back! Log in to continue.", + "emailLabel": "Email address", + "emailPlaceholder": "you@example.com", + "passwordLabel": "Password", + "passwordPlaceholder": "Enter your password", + "rememberMe": "Remember me", + "submit": "Log in", + "submitting": "Logging in…", + "forgotPassword": "Forgot password?", + "noAccount": "Don't have an account?", + "registerLink": "Register", + "errorRequired": "Email address is required", + "errorInvalidEmail": "Please enter a valid email address", + "errorPasswordRequired": "Password is required", + "errorPasswordTooShort": "Password must be at least 6 characters long", + "errorInvalidCredentials": "Invalid email or password", + "errorAccountNotFound": "No account found with this email address", + "errorAccountLocked": "Account has been locked. Please contact support.", + "errorConnectionFailed": "Connection to the server failed. Please try again later.", + "errorGeneric": "Login failed. Please try again.", + "successTitle": "Login successful", + "successMessage": "You are now logged in.", + "failedTitle": "Login failed" + }, + "register": { + "title": "Create Account", + "subtitle": "Join Profit Planet today.", + "tabPersonal": "Personal", + "tabCompany": "Company", + "tabGuest": "Guest", + "checkingInvitation": "Checking invitation link…", + "invitationVerifiedTitle": "Invitation verified", + "invitationVerifiedMessage": "Your invitation link is valid. You can register now.", + "invalidInvitationTitle": "Invalid invitation", + "invalidInvitationMessage": "This invitation link is invalid or no longer active.", + "noInvitationToken": "No invitation token found in the link.", + "networkError": "Could not reach the server. Is the backend running?", + "firstName": "First name", + "lastName": "Last name", + "email": "Email address", + "confirmEmail": "Confirm email address", + "password": "Password", + "confirmPassword": "Confirm password", + "phone": "Phone number", + "companyName": "Company name", + "companyEmail": "Company email", + "companyPhone": "Company phone", + "contactPersonName": "Contact person name", + "contactPersonPhone": "Contact person phone", + "submit": "Create account", + "submitting": "Creating account…", + "errorAllRequired": "All fields are required", + "errorEmailMismatch": "Email addresses do not match", + "errorPasswordMismatch": "Passwords do not match", + "errorPasswordWeak": "Password must be at least 8 characters and contain uppercase, lowercase, numbers and special characters", + "errorSelectCountryCode": "Please select a country code from the dropdown before continuing.", + "errorPhoneRequired": "Please enter your phone number.", + "errorPhoneInvalid": "Please enter a valid mobile phone number.", + "errorBothPhonesRequired": "Please enter both company and contact phone numbers.", + "errorBothPhonesInvalid": "Please enter valid phone numbers for company and contact person.", + "successTitle": "Registration successful", + "successMessage": "You can now log in with your new account.", + "alreadyHaveAccount": "Already have an account?", + "loginLink": "Log in", + "sessionDetectedTitle": "Active session detected", + "sessionDetectedMessage": "You are already logged in. Do you want to log out and register a new account?", + "sessionContinue": "Continue to dashboard", + "sessionLogout": "Log out and register", + "formTitle": "Registration for Profit Planet", + "guestRegistration": "Guest Registration", + "registerNow": "Register now", + "guestDescription": "Register as a guest to access your coffee abonnement.", + "personalDescription": "Create your personal or company account with Profit Planet.", + "invitedBy": "You were invited by", + "tabIndividual": "Individual", + "submitCompany": "Register company", + "submitGuest": "Register as Guest", + "successRedirecting": "Registration successful – redirecting...", + "guestNote": "You are registering as a guest. You will have access to your coffee abonnements only.", + "errorBothCountryCodes": "Please select country codes (dropdown) for both company and contact phone numbers.", + "successCompanyMessage": "You can now log in with your new company account.", + "successGuestMessage": "You can now log in to view your coffee abonnement.", + "failedTitle": "Registration failed", + "failedMessage": "Registration failed. Please try again.", + "networkErrorGeneric": "Network error. Please try again later.", + "passwordRequirements": "Password requirements:", + "pwdMinLength": "At least 8 characters", + "pwdLowercase": "Lowercase letters (a-z)", + "pwdUppercase": "Uppercase letters (A-Z)", + "pwdDigits": "Digits (0-9)", + "pwdSpecial": "Special characters (!@#$...)", + "invalidLinkTitle": "Invalid invitation link", + "invalidLinkMessage": "This registration link is invalid or no longer active. Please request a new link.", + "tokenLabel": "Token", + "sessionDescription": "You are already logged in. To register, you must first log out or you can go to the dashboard.", + "goToDashboard": "Go to dashboard", + "goToHomepage": "Go to homepage", + "loginHere": "Login here" + }, + "passwordReset": { + "title": "Reset Password", + "subtitle": "Enter your email address and we will send you a reset link.", + "emailLabel": "Email address", + "emailPlaceholder": "you@example.com", + "submit": "Send reset link", + "submitting": "Sending…", + "successTitle": "Email sent", + "successMessage": "Check your inbox for the password reset link.", + "backToLogin": "Back to login", + "errorInvalidEmail": "Please enter a valid email address" + }, + "dashboard": { + "title": "Dashboard", + "subtitle": "Welcome to your Profit Planet dashboard.", + "loading": "Loading dashboard…", + "accessDenied": "Access Denied", + "accessDeniedMessage": "You need to complete onboarding to access the dashboard.", + "welcomeBack": "Welcome back", + "welcomeSubtitle": "Here's what's happening with your Profit Planet account", + "platforms": "Platforms", + "platformDisabled": "This is currently disabled.", + "redirecting": "Redirecting…", + "pleaseWait": "Please wait", + "goldMemberTitle": "Gold Member Status", + "goldMemberDescription": "Enjoy exclusive benefits and discounts", + "viewBenefits": "View Benefits", + "latestNews": "Latest News", + "viewAllNews": "View all", + "noNewsYet": "No news yet.", + "recent": "Recent", + "platformCards": { + "shop": { + "title": "Browse Shop", + "description": "Explore sustainable products" }, - }, - stats: { - members: 'Active Members', - products: 'Eco Products', - communities: 'Communities', - }, - cta: { - getStarted: 'Get Started', - learnMore: 'Learn More', - }, - }, - - footer: { - company: 'Profit Planet GmbH', - rights: 'All rights reserved.', - privacy: 'Privacy Policy', - terms: 'Terms of Service', - contact: 'Contact', - }, - - nav: { - home: 'Home', - shop: 'Shop', - dashboard: 'Dashboard', - community: 'Community', - profile: 'Profile', - login: 'Login', - logout: 'Logout', - news: 'News', - memberships: 'Memberships', - aboutUs: 'About Us', - affiliateLinks: 'Affiliate Links', - information: 'Information', - myAccount: 'My Account', - mySubscriptions: 'My Subscriptions', - coffeeSubscriptions: 'Coffee Abonnements', - }, - - // ─── Auth ────────────────────────────────────────────── - login: { - title: 'PROFIT PLANET', - subtitle: 'Welcome back! Log in to continue.', - emailLabel: 'Email address', - emailPlaceholder: 'you@example.com', - passwordLabel: 'Password', - passwordPlaceholder: 'Enter your password', - rememberMe: 'Remember me', - submit: 'Log in', - submitting: 'Logging in…', - forgotPassword: 'Forgot password?', - noAccount: "Don't have an account?", - registerLink: 'Register', - errorRequired: 'Email address is required', - errorInvalidEmail: 'Please enter a valid email address', - errorPasswordRequired: 'Password is required', - errorPasswordTooShort: 'Password must be at least 6 characters long', - errorInvalidCredentials: 'Invalid email or password', - errorAccountNotFound: 'No account found with this email address', - errorAccountLocked: 'Account has been locked. Please contact support.', - errorConnectionFailed: 'Connection to the server failed. Please try again later.', - errorGeneric: 'Login failed. Please try again.', - successTitle: 'Login successful', - successMessage: 'You are now logged in.', - failedTitle: 'Login failed', - }, - - register: { - title: 'Create Account', - subtitle: 'Join Profit Planet today.', - tabPersonal: 'Personal', - tabCompany: 'Company', - tabGuest: 'Guest', - checkingInvitation: 'Checking invitation link…', - invitationVerifiedTitle: 'Invitation verified', - invitationVerifiedMessage: 'Your invitation link is valid. You can register now.', - invalidInvitationTitle: 'Invalid invitation', - invalidInvitationMessage: 'This invitation link is invalid or no longer active.', - noInvitationToken: 'No invitation token found in the link.', - networkError: 'Could not reach the server. Is the backend running?', - firstName: 'First name', - lastName: 'Last name', - email: 'Email address', - confirmEmail: 'Confirm email address', - password: 'Password', - confirmPassword: 'Confirm password', - phone: 'Phone number', - companyName: 'Company name', - companyEmail: 'Company email', - companyPhone: 'Company phone', - contactPersonName: 'Contact person name', - contactPersonPhone: 'Contact person phone', - submit: 'Create account', - submitting: 'Creating account…', - errorAllRequired: 'All fields are required', - errorEmailMismatch: 'Email addresses do not match', - errorPasswordMismatch: 'Passwords do not match', - errorPasswordWeak: 'Password must be at least 8 characters and contain uppercase, lowercase, numbers and special characters', - errorSelectCountryCode: 'Please select a country code from the dropdown before continuing.', - errorPhoneRequired: 'Please enter your phone number.', - errorPhoneInvalid: 'Please enter a valid mobile phone number.', - errorBothPhonesRequired: 'Please enter both company and contact phone numbers.', - errorBothPhonesInvalid: 'Please enter valid phone numbers for company and contact person.', - successTitle: 'Registration successful', - successMessage: 'You can now log in with your new account.', - alreadyHaveAccount: 'Already have an account?', - loginLink: 'Log in', - sessionDetectedTitle: 'Active session detected', - sessionDetectedMessage: 'You are already logged in. Do you want to log out and register a new account?', - sessionContinue: 'Continue to dashboard', - sessionLogout: 'Log out and register', - formTitle: 'Registration for Profit Planet', - guestRegistration: 'Guest Registration', - registerNow: 'Register now', - guestDescription: 'Register as a guest to access your coffee abonnement.', - personalDescription: 'Create your personal or company account with Profit Planet.', - invitedBy: 'You were invited by', - tabIndividual: 'Individual', - submitCompany: 'Register company', - submitGuest: 'Register as Guest', - successRedirecting: 'Registration successful – redirecting...', - guestNote: 'You are registering as a guest. You will have access to your coffee abonnements only.', - errorBothCountryCodes: 'Please select country codes (dropdown) for both company and contact phone numbers.', - successCompanyMessage: 'You can now log in with your new company account.', - successGuestMessage: 'You can now log in to view your coffee abonnement.', - failedTitle: 'Registration failed', - failedMessage: 'Registration failed. Please try again.', - networkErrorGeneric: 'Network error. Please try again later.', - passwordRequirements: 'Password requirements:', - pwdMinLength: 'At least 8 characters', - pwdLowercase: 'Lowercase letters (a-z)', - pwdUppercase: 'Uppercase letters (A-Z)', - pwdDigits: 'Digits (0-9)', - pwdSpecial: 'Special characters (!@#$...)', - invalidLinkTitle: 'Invalid invitation link', - invalidLinkMessage: 'This registration link is invalid or no longer active. Please request a new link.', - tokenLabel: 'Token', - sessionDescription: 'You are already logged in. To register, you must first log out or you can go to the dashboard.', - goToDashboard: 'Go to dashboard', - goToHomepage: 'Go to homepage', - loginHere: 'Login here', - }, - - passwordReset: { - title: 'Reset Password', - subtitle: 'Enter your email address and we will send you a reset link.', - emailLabel: 'Email address', - emailPlaceholder: 'you@example.com', - submit: 'Send reset link', - submitting: 'Sending…', - successTitle: 'Email sent', - successMessage: 'Check your inbox for the password reset link.', - backToLogin: 'Back to login', - errorInvalidEmail: 'Please enter a valid email address', - }, - - // ─── Pages ───────────────────────────────────────────── - dashboard: { - title: 'Dashboard', - subtitle: 'Welcome to your Profit Planet dashboard.', - loading: 'Loading dashboard…', - accessDenied: 'Access Denied', - accessDeniedMessage: 'You need to complete onboarding to access the dashboard.', - welcomeBack: 'Welcome back', - welcomeSubtitle: "Here's what's happening with your Profit Planet account", - platforms: 'Platforms', - platformDisabled: 'This is currently disabled.', - redirecting: 'Redirecting…', - pleaseWait: 'Please wait', - goldMemberTitle: 'Gold Member Status', - goldMemberDescription: 'Enjoy exclusive benefits and discounts', - viewBenefits: 'View Benefits', - latestNews: 'Latest News', - viewAllNews: 'View all', - noNewsYet: 'No news yet.', - recent: 'Recent', - platformCards: { - shop: { - title: 'Browse Shop', - description: 'Explore sustainable products', + "affiliateLinks": { + "title": "Browse Affiliate Links", + "description": "Discover affiliate offers and links" }, - affiliateLinks: { - title: 'Browse Affiliate Links', - description: 'Discover affiliate offers and links', + "referralManagement": { + "title": "Referral Management", + "description": "Create and manage referral links" }, - referralManagement: { - title: 'Referral Management', - description: 'Create and manage referral links', - }, - profile: { - title: 'Edit Profile', - description: 'Update your information', + "profile": { + "title": "Edit Profile", + "description": "Update your information" + } + }, + "noData": "No data available." + }, + "profile": { + "title": "My Profile", + "personalInfo": "Personal Information", + "bankInfo": "Bank Information", + "documents": "Documents", + "memberStatus": "Member Status", + "profileComplete": "Profile completion", + "firstName": "First name", + "lastName": "Last name", + "email": "Email address", + "phone": "Phone number", + "address": "Address", + "joinDate": "Member since", + "accountHolder": "Account holder name", + "iban": "IBAN", + "contactPersonName": "Contact person", + "editBasicInfo": "Edit personal info", + "editBankInfo": "Edit bank info", + "saveChanges": "Save changes", + "documentName": "Document name", + "documentType": "Type", + "documentUploaded": "Uploaded", + "downloadDocument": "Download", + "noDocuments": "No documents uploaded yet.", + "refreshProfile": "Refresh profile", + "loading": "Loading profile…" + }, + "community": { + "title": "Community", + "subtitle": "Connect with the Profit Planet community.", + "description": "Join discussions and connect with other members.", + "loading": "Loading community…", + "accessDenied": "Access Denied", + "noAccess": "You need to be logged in to access the community." + }, + "shop": { + "title": "Shop", + "subtitle": "Browse sustainable products.", + "comingSoon": "Coming soon", + "addToCart": "Add to cart", + "price": "Price", + "outOfStock": "Out of stock", + "viewDetails": "View details" + }, + "memberships": { + "title": "Memberships", + "subtitle": "Choose the right plan for you.", + "description": "Become a member and unlock exclusive benefits.", + "selectPlan": "Select plan", + "perMonth": "per month", + "perYear": "per year", + "mostPopular": "Most popular", + "choosePlan": "Choose this plan" + }, + "affiliateLinks": { + "title": "Affiliate Links", + "subtitle": "Explore our partner links.", + "description": "Browse and share our partner links to earn rewards.", + "visitLink": "Visit link", + "partnerLinks": "Partner links" + }, + "aboutUs": { + "title": "About Us", + "subtitle": "Learn more about Profit Planet.", + "description": "We are building a sustainable future together.", + "ourTeam": "Our Team", + "ourMission": "Our Mission" + }, + "news": { + "title": "News", + "subtitle": "Stay up to date with Profit Planet.", + "readMore": "Read more", + "publishedDate": "Published", + "category": "Category", + "noArticles": "No articles available.", + "loadMore": "Load more" + }, + "coffeeSelection": { + "title": "Coffee Subscription", + "subtitle": "Select your coffees for this month.", + "selectYourCoffees": "Select your coffees", + "capsuleTarget": "Capsule target", + "planLabel": "Your plan", + "yourSelection": "Your selection", + "totalCapsules": "Total capsules", + "totalPacks": "Total packs", + "targetPacks": "Target packs", + "selectUpTo": "Select up to", + "goToSummary": "Go to summary", + "loading": "Loading coffees…", + "noProducts": "No coffees available.", + "validationExact": "You need exactly {count} capsules ({packs} packs).", + "packOf10": "Pack of 10", + "pricePerPack": "per pack" + }, + "coffeeSummary": { + "title": "Summary & Details", + "backToSelection": "Back to selection", + "stepSelection": "Selection", + "stepSummary": "Summary", + "yourDetails": "1. Your details", + "fillFromLoggedIn": "Fill fields with logged in data", + "firstName": "First name", + "lastName": "Last name", + "email": "Email", + "street": "Street & No.", + "zip": "ZIP", + "city": "City", + "country": "Country", + "phone": "Phone", + "phoneOptional": "Phone (optional)", + "paymentMethod": "Payment method", + "paymentSepa": "SEPA", + "paymentCard": "Credit Card", + "paymentSofort": "Sofort Banking", + "invoiceByEmail": "Send invoice by email", + "invoiceAddress": "Invoice address", + "sameAsShipping": "Same as shipping address", + "uidNumberLabel": "UID Number (optional)", + "uidNumberPlaceholder": "e.g. SI12345678", + "uidNumberHint": "Without a valid UID, the invoice will be created with standard VAT.", + "reverseChargeHint": "Companies with a valid UID and a foreign invoice country outside AT are billed via reverse charge without displayed VAT.", + "fullName": "Full name", + "contractPreview": "Contract preview (ABO)", + "contractSubtitle": "Contract variables are auto-populated from your form data.", + "openPreview": "Open preview", + "contractLoading": "Loading contract preview…", + "contractError": "Contract preview could not be loaded:", + "contractNotAvailable": "Contract template is not available.", + "pdfPreviewTitle": "ABO contract preview (PDF)", + "pdfGenerating": "Generating PDF preview…", + "pdfError": "PDF preview could not be generated:", + "pdfNotAvailable": "No PDF preview available.", + "signingCity": "Ort (Signing City) *", + "signingCityPlaceholder": "e.g. Vienna", + "signingCityRequired": "Signing city is required.", + "signatureRequired": "Signature is required.", + "completeSubscription": "Complete subscription", + "creating": "Creating…", + "cannotSubmit": "Please select coffees and fill all required buyer fields, signing city, and signature.", + "yourSelection": "2. Your selection", + "shipping": "Shipping", + "freeShipping": "FREE SHIPPING", + "shippingLoading": "Loading…", + "shippingError": "Shipping fees could not be loaded:", + "totalNet": "Total (net)", + "tax": "Tax ({rate}%)", + "taxReverseCharge": "Tax (Reverse Charge)", + "totalInclTax": "Total incl. tax", + "reverseChargeActive": "Reverse Charge active: valid UID and foreign invoice country detected.", + "capsuleValidation": "Selected: {selected} capsules ({selectedPacks} packs of 10). Target: {target} capsules ({targetPacks} packs).", + "exactlyRequired": "Exactly {packs} packs ({capsules} capsules) are required.", + "thankYouTitle": "Thanks for your subscription!", + "thankYouMessage": "Subscription created.", + "noSelectionFound": "No selection found.", + "noLoggedInData": "No logged-in user data found to fill the fields." + }, + "personalMatrix": { + "title": "Personal Matrix", + "subtitle": "Your network structure.", + "description": "View your personal matrix and downline network.", + "loading": "Loading matrix…", + "noData": "No matrix data available." + }, + "referralManagement": { + "title": "Referral Management", + "subtitle": "Manage your referral links.", + "description": "Create and manage your referral links. Track performance at a glance.", + "createLink": "Create referral link", + "copyLink": "Copy link", + "copy": "Copy", + "copyMobile": "Copy link", + "copied": "Copied", + "copiedToClipboard": "Copied to clipboard!", + "linkExpiry": "Expires", + "noLinks": "No referral links found.", + "generating": "Generating…", + "generateLink": "Generate Link", + "usesRemaining": "uses remaining", + "unlimited": "Unlimited", + "never": "Never", + "createSuccess": "Referral link created successfully.", + "createError": "Could not create referral link.", + "deactivate": "Deactivate", + "deactivated": "Link deactivated", + "deactivatedMessage": "The referral link has been deactivated successfully.", + "deactivateFailed": "Deactivate failed", + "deactivateFailedMessage": "Could not deactivate the referral link.", + "deactivateNetworkError": "Network error while deactivating the referral link.", + "deactivateModalTitle": "Deactivate referral link?", + "deactivateModalDescription": "This will immediately deactivate the selected referral link so it can no longer be used.", + "linkLabel": "Link", + "accessCheckFailed": "Access check failed", + "userIdMissing": "User id is missing. Redirecting…", + "accessDenied": "Access denied", + "accessDeniedMessage": "You do not have permission to access Referral Management.", + "permCheckFailed": "Permission check failed", + "permCheckFailedMessage": "Could not verify permissions. Redirecting…", + "loadFailed": "Load failed", + "loadStatsError": "Could not load referral statistics.", + "loadLinksError": "Could not load referral links.", + "copyFailed": "Copy failed", + "copyFailedMessage": "Could not copy link to clipboard.", + "copiedMessage": "Link copied to clipboard.", + "allLinks": "All Referral Links", + "allLinksSubtitle": "Manage your links and see their status.", + "colLink": "Link", + "colCreated": "Created", + "colExpires": "Expires", + "colUsage": "Usage", + "colStatus": "Status", + "generateTitle": "Generate Referral Link", + "maxUsesLabel": "Max Uses", + "expiresIn": "Expires In", + "lockedByNeverExpires": "Locked by \"Never expires\".", + "lockedByUnlimited": "Locked by \"Unlimited uses\".", + "statsActiveLinks": "Active Links", + "statsLinksUsed": "Links Used", + "statsPersonalUsers": "Personal Users", + "statsCompanyUsers": "Company Users", + "statsTotalLinks": "Total Links", + "levelStarter": "Starter", + "levelNovice": "Novice", + "levelHustler": "Hustler", + "levelEntrepreneur": "Entrepreneur", + "levelPrestige": "Prestige", + "levelMax": "MAX", + "levelLabel": "Level", + "referrals": "referrals", + "of": "of", + "maxLevelReached": "Max level reached", + "nextMilestone": "Next milestone", + "registeredUsersTitle": "Registered Users via Your Referral", + "totalRefBadge": "TOTAL REGISTERED USER WITH YOUR REF LINK", + "registeredUsersSubtitle": "Users who signed up using one of your referral links.", + "showingLatest5": "Showing the latest 5 users. Use “View all” to see the complete list.", + "viewAll": "View all", + "colUser": "User", + "colEmail": "Email", + "colType": "Type", + "colRegistered": "Registered", + "noRegisteredUsers": "No registered users found.", + "typeCompany": "Company", + "typePersonal": "Personal", + "allRegisteredUsersTitle": "All Registered Users via Your Referral", + "allRegisteredUsersSubtitle": "Search, filter, paginate, or export the full list.", + "exportCsv": "Export CSV", + "searchPlaceholder": "Search name or email…", + "filterAllTypes": "All Types", + "filterAllStatus": "All Status", + "filterActive": "Active", + "filterInactive": "Inactive", + "filterPending": "Pending", + "filterBlocked": "Blocked", + "noUsersMatchFilters": "No users match your filters.", + "showing": "Showing", + "pagePrev": "Previous", + "pageNext": "Next", + "pageOf": "of", + "expiry1Day": "1 day", + "expiry2Days": "2 days", + "expiry3Days": "3 days", + "expiry4Days": "4 days", + "expiry5Days": "5 days", + "expiry6Days": "6 days", + "expiry7Days": "7 days", + "expiryNever": "Never expires", + "maxUses1": "1 use", + "maxUses5": "5 uses", + "maxUses10": "10 uses", + "maxUses50": "50 uses", + "maxUsesUnlimited": "Unlimited" + }, + "quickactionDashboard": { + "title": "Quick Actions", + "subtitle": "Complete your onboarding steps.", + "stepLabel": "Step", + "completed": "Completed", + "pending": "Pending", + "required": "Required", + "verifyIdentity": "Verify your identity", + "completeProfile": "Complete your profile", + "setPayment": "Set up payment", + "startUsing": "Start using Profit Planet", + "allDone": "All steps completed!", + "loading": "Loading…", + "guestAccount": "Guest Account", + "companyAccount": "Company Account", + "personalAccount": "Personal Account", + "loadingStatus": "Loading status...", + "errorLoadingAccountStatus": "Error loading account status", + "tryAgain": "Try again", + "emailVerificationStatus": "Email Verification Status", + "statusOverview": "Status Overview", + "actionRequired": "Action Required", + "quickActions": "Quick Actions", + "tutorial": "Tutorial", + "pleaseVerifyEmailAddress": "Please verify your email address to activate your guest account and access your subscriptions.", + "resendAvailableIn": "Resend available in", + "requestNewCode": "You can request a new code now", + "emailVerified": "Email Verified", + "verifyEmail": "Verify Email", + "idUploaded": "ID Uploaded", + "uploadIdDocument": "Upload ID Document", + "profileCompleted": "Profile Completed", + "signContract": "Sign Contract", + "contractNotReady": "Sign Contract (requires all previous steps)", + "latestNews": "Latest News", + "viewAll": "View all", + "noNewsYet": "No news available yet.", + "recent": "Recent", + "redirecting": "Redirecting…", + "takingToDashboard": "Taking you to your dashboard", + "pleaseWait": "Please wait", + "goToDashboard": "Go to Dashboard", + "backToDashboard": "Back to Dashboard", + "uploading": "Uploading...", + "saved": "Saved", + "uploadContinue": "Upload & Continue", + "yes": "Yes", + "no": "No", + "dragAndDrop": "Drag and drop your file here, or click to browse", + "remove": "Remove", + "maxUploadHint": "Max 10MB. JPG, PNG or PDF.", + "statusCards": { + "emailVerification": "Email Verification", + "idDocument": "ID Document", + "additionalInfo": "Additional Info", + "contract": "Contract", + "verified": "Verified", + "missing": "Missing", + "uploaded": "Uploaded", + "signed": "Signed" + }, + "emailVerify": { + "title": "Verify your email", + "sentIntro": "We sent a 6-digit code to", + "sendingIntro": "Sending verification email to", + "yourEmail": "your email", + "enterBelow": "Enter it below.", + "invalidCode": "Please enter the full 6-digit code.", + "authError": "Not authenticated. Please log in again.", + "emailVerifiedTitle": "Email verified", + "emailVerifiedMessage": "Your email has been verified successfully.", + "verificationFailedTitle": "Verification failed", + "networkErrorTitle": "Network error", + "verifying": "Verifying...", + "verified": "Verified", + "confirmCode": "Confirm code", + "resendCode": "Resend code", + "supportHint": "Didn’t receive the email? Please check your junk/spam folder. Still having issues?", + "contactSupport": "Contact support", + "verifiedRedirecting": "Verified! Redirecting shortly..." + }, + "uploadId": { + "personalTitle": "Upload ID Document", + "personalSubtitle": "Upload your identification document to continue your onboarding.", + "companyTitle": "Upload Company Documents", + "companySubtitle": "Upload the required company identification documents to continue your onboarding.", + "idNumber": "ID Number *", + "idNumberPlaceholder": "Enter your ID number", + "idNumberHint": "Enter the document number exactly as shown.", + "contactPersonIdNumber": "Contact Person ID Number *", + "contactPersonIdNumberPlaceholder": "Enter contact person's ID number", + "contactPersonIdNumberHint": "Enter the ID number exactly as shown on the document.", + "idType": "ID Type *", + "documentType": "Document Type *", + "selectIdType": "Select ID type", + "selectDocumentType": "Select document type", + "expiryDate": "Expiry Date *", + "expiryDateHint": "Choose the expiry date on the document.", + "backSideQuestion": "Does your document have a back side?", + "frontPreviewAlt": "Front ID preview", + "backPreviewAlt": "Back ID preview", + "primaryPreviewAlt": "Primary document preview", + "supportingPreviewAlt": "Supporting document preview", + "clickUploadFront": "Click to upload the front side", + "clickUploadBack": "Click to upload the back side", + "documentsChecklistTitle": "Before uploading, make sure the document:", + "clearlyVisible": "Is clearly visible", + "showCorners": "Shows all four corners", + "notExpired": "Is not expired", + "goodLighting": "Has no glare or dark shadows", + "bothSidesUploaded": "Both sides uploaded", + "frontSideUploaded": "Front side uploaded", + "successSavedRedirecting": "Saved successfully. Redirecting...", + "personalUploadSuccessTitle": "Documents uploaded", + "personalUploadSuccessMessage": "Your ID documents were uploaded successfully.", + "companyUploadSuccessTitle": "Company documents uploaded", + "companyUploadSuccessMessage": "Your company documents were uploaded successfully.", + "fileTooLargeTitle": "File too large", + "fileTooLargeMessage": "Please upload a file smaller than 10MB.", + "missingInfoTitle": "Missing information", + "fillRequiredFields": "Please fill in all required fields.", + "frontSideMissingTitle": "Front side missing", + "frontSideMissingMessage": "Please upload the front side.", + "backSideMissingTitle": "Back side missing", + "backSideMissingMessage": "Please upload the back side.", + "authErrorTitle": "Authentication error", + "uploadFailedTitle": "Upload failed", + "uploadFailedMessage": "Unable to upload your documents.", + "networkErrorTitle": "Network error", + "networkErrorMessage": "A network error occurred while uploading the documents." + }, + "additionalInfo": { + "title": "Complete Your Profile", + "companyTitle": "Complete Company Profile", + "personalInformation": "Personal Information", + "companyDetails": "Company Details", + "bankDetails": "Bank Details", + "additionalInformation": "Additional Information", + "firstName": "First Name *", + "lastName": "Last Name *", + "email": "Email *", + "phoneNumber": "Phone Number *", + "dateOfBirth": "Date of Birth *", + "nationality": "Nationality", + "selectNationality": "Select nationality...", + "streetHouseNumber": "Street & House Number *", + "streetNumber": "Street & Number *", + "postalCode": "Postal Code *", + "city": "City *", + "country": "Country", + "selectCountry": "Select country...", + "accountHolder": "Account Holder *", + "iban": "IBAN *", + "secondPhoneOptional": "Second Phone Number (optional)", + "emergencyContactName": "Emergency Contact Name", + "emergencyContactPhone": "Emergency Contact Phone", + "fullNamePlaceholder": "Full name", + "postalCodePlaceholder": "e.g. 12345", + "cityPlaceholder": "e.g. Berlin", + "phonePlaceholder": "e.g. +43 676 1234567", + "streetPlaceholder": "Street & House Number", + "ibanPlaceholder": "e.g. DE89 3704 0044 0532 0130 00", + "companyName": "Company Name *", + "companyEmail": "Company Email *", + "companyPhone": "Company Phone *", + "contactPerson": "Contact Person *", + "contactPersonPhone": "Contact Person Phone *", + "registrationNumberOptional": "Registration Number (optional)", + "uidNumberOptional": "UID Number (optional)", + "companyHolderPlaceholder": "Company / Holder name", + "registrationPlaceholder": "e.g. FN123456a", + "uidPlaceholder": "e.g. ATU12345678", + "bicOptional": "BIC (optional)", + "bicPlaceholder": "GENODEF1XXX", + "contactNamePlaceholder": "Contact name", + "emergencyContactNamePlaceholder": "Contact name", + "additionalInfoSuccessTitle": "Profile saved", + "personalSuccessMessage": "Your personal profile has been saved successfully.", + "companySuccessMessage": "Your company profile has been saved successfully.", + "dataSavedRedirecting": "Data saved. Redirecting shortly…", + "saveContinue": "Save & Continue", + "saveFailedTitle": "Save failed", + "saveFailedMessage": "Save failed. Please try again.", + "invalidDateOfBirthTitle": "Invalid date of birth", + "invalidDateOfBirthMessage": "Invalid date of birth. You must be at least 18 years old.", + "invalidIbanTitle": "Invalid IBAN", + "invalidIbanMessage": "Invalid IBAN.", + "missingCountryCodeTitle": "Missing country code", + "missingPhoneNumberTitle": "Missing phone number", + "invalidPhoneNumberTitle": "Invalid phone number", + "missingCountryCodeMessage": "Please select a country code for your phone number.", + "phoneNumberMissingMessage": "Please enter your phone number.", + "validPhoneNumberMessage": "Please enter a valid phone number.", + "validSecondPhoneNumberMessage": "Please enter a valid second phone number.", + "validEmergencyPhoneNumberMessage": "Please enter a valid emergency phone number.", + "fillRequiredFields": "Please fill in all required fields.", + "authErrorTitle": "Authentication error", + "authErrorMessage": "Not authenticated. Please log in again.", + "searchPlaceholder": "Search…", + "noResults": "No results", + "countries": { + "germany": "Germany", + "austria": "Austria", + "switzerland": "Switzerland", + "italy": "Italy", + "france": "France", + "spain": "Spain", + "portugal": "Portugal", + "netherlands": "Netherlands", + "belgium": "Belgium", + "poland": "Poland", + "czechRepublic": "Czech Republic", + "hungary": "Hungary", + "croatia": "Croatia", + "slovenia": "Slovenia", + "slovakia": "Slovakia", + "unitedKingdom": "United Kingdom", + "ireland": "Ireland", + "sweden": "Sweden", + "norway": "Norway", + "denmark": "Denmark", + "finland": "Finland", + "russia": "Russia", + "turkey": "Turkey", + "greece": "Greece", + "romania": "Romania", + "bulgaria": "Bulgaria", + "serbia": "Serbia", + "albania": "Albania", + "bosniaHerzegovina": "Bosnia and Herzegovina", + "unitedStates": "United States", + "canada": "Canada", + "brazil": "Brazil", + "argentina": "Argentina", + "mexico": "Mexico", + "china": "China", + "japan": "Japan", + "india": "India", + "pakistan": "Pakistan", + "australia": "Australia", + "southAfrica": "South Africa", + "other": "Other" }, + "nationalities": { + "german": "German", + "austrian": "Austrian", + "swiss": "Swiss", + "italian": "Italian", + "french": "French", + "spanish": "Spanish", + "portuguese": "Portuguese", + "dutch": "Dutch", + "belgian": "Belgian", + "polish": "Polish", + "czech": "Czech", + "hungarian": "Hungarian", + "croatian": "Croatian", + "slovenian": "Slovenian", + "slovak": "Slovak", + "british": "British", + "irish": "Irish", + "swedish": "Swedish", + "norwegian": "Norwegian", + "danish": "Danish", + "finnish": "Finnish", + "russian": "Russian", + "turkish": "Turkish", + "greek": "Greek", + "romanian": "Romanian", + "bulgarian": "Bulgarian", + "serbian": "Serbian", + "albanian": "Albanian", + "bosnian": "Bosnian", + "american": "American", + "canadian": "Canadian", + "brazilian": "Brazilian", + "argentinian": "Argentinian", + "mexican": "Mexican", + "chinese": "Chinese", + "japanese": "Japanese", + "indian": "Indian", + "pakistani": "Pakistani", + "australian": "Australian", + "southAfrican": "South African", + "other": "Other" + } }, - noData: 'No data available.', + "contractSigning": { + "personalTitle": "Sign Personal Participation Contract", + "companyTitle": "Sign Company Partnership Contract", + "personalSubtitle": "Please review the contract details and sign electronically.", + "companySubtitle": "Please review the contract details and sign on behalf of the company.", + "documentInformation": "Document Information", + "documentPreview": "Document Preview", + "contractTab": "Contract", + "gdprTab": "GDPR", + "openInNewTab": "Open in new tab", + "refresh": "Refresh", + "loadingPreview": "Loading preview…", + "noContractAvailable": "No contract available at this moment, please contact us.", + "noteTitle": "Note", + "noteBody": "Your electronic signature is legally binding. Please ensure all details are correct.", + "attentionTitle": "Attention", + "attentionBody": "You confirm that you are authorized to sign on behalf of the company.", + "documentLabel": "Document:", + "idLabel": "ID:", + "versionLabel": "Version / Basis:", + "jurisdictionLabel": "Jurisdiction:", + "languageLabel": "Language:", + "issuerLabel": "Issuer:", + "addressLabel": "Address:", + "signatureSection": "Signature", + "drawSignature": "Draw Signature *", + "clear": "Clear", + "signatureHelp": "Use mouse or touch to sign. A signature is required.", + "captured": "Captured", + "confirmations": "Confirmations", + "confirmContractPersonal": "I confirm that I have read and understood the contract in full.", + "confirmDataPersonal": "I consent to the processing of my personal data in accordance with the privacy policy.", + "confirmSignaturePersonal": "I confirm this electronic signature is legally binding and equivalent to a handwritten signature.", + "confirmContractCompany": "I confirm I have read and accepted the full contract on behalf of the company.", + "confirmDataCompany": "I consent to processing of company and personal data in accordance with the privacy policy.", + "confirmSignatureCompany": "I am authorized to sign legally binding documents for this company.", + "noDocumentsAvailableTitle": "No documents available", + "noDocumentsAvailableMessage": "Temporarily unable to sign contracts. No active documents are available at this moment.", + "missingInformationTitle": "Missing information", + "completePrefix": "Please complete:", + "contractReadUnderstood": "Contract read and understood", + "privacyAccepted": "Privacy policy accepted", + "electronicSignatureConfirmed": "Electronic signature confirmed", + "signatureCaptured": "Signature captured on pad", + "authErrorTitle": "Authentication error", + "authErrorMessage": "Not authenticated. Please log in again.", + "contractSignedTitle": "Contract signed", + "personalContractSignedMessage": "Your personal contract has been signed successfully.", + "companyContractSignedMessage": "Your company contract has been signed successfully.", + "signingFailedTitle": "Signature failed", + "signingFailedMessage": "Signature failed. Please try again.", + "contractSignedRedirecting": "Contract signed successfully. Redirecting shortly…", + "signing": "Signing…", + "signed": "Signed", + "signNow": "Sign Now" + } }, - - profile: { - title: 'My Profile', - personalInfo: 'Personal Information', - bankInfo: 'Bank Information', - documents: 'Documents', - memberStatus: 'Member Status', - profileComplete: 'Profile completion', - firstName: 'First name', - lastName: 'Last name', - email: 'Email address', - phone: 'Phone number', - address: 'Address', - joinDate: 'Member since', - accountHolder: 'Account holder name', - iban: 'IBAN', - contactPersonName: 'Contact person', - editBasicInfo: 'Edit personal info', - editBankInfo: 'Edit bank info', - saveChanges: 'Save changes', - documentName: 'Document name', - documentType: 'Type', - documentUploaded: 'Uploaded', - downloadDocument: 'Download', - noDocuments: 'No documents uploaded yet.', - refreshProfile: 'Refresh profile', - loading: 'Loading profile…', + "suspended": { + "title": "Account Suspended", + "message": "Your account has been suspended. Please contact support for assistance.", + "contactSupport": "Contact Support", + "backToLogin": "Back to login", + "reason": "Reason" }, - - community: { - title: 'Community', - subtitle: 'Connect with the Profit Planet community.', - description: 'Join discussions and connect with other members.', - loading: 'Loading community…', - accessDenied: 'Access Denied', - noAccess: 'You need to be logged in to access the community.', + "adminDashboard": { + "title": "Admin Dashboard", + "subtitle": "Manage all administrative features, user management, permissions, and global settings.", + "warningTitle": "Warning: Settings and actions below this point can have consequences for the entire system!", + "warningMessage": "Manage all administrative features, user management, permissions, and global settings.", + "accessDenied": "Access Denied", + "accessDeniedMessage": "You need admin privileges to access this page.", + "loading": "Loading…", + "totalUsers": "Total Users", + "admins": "Admins", + "active": "Active", + "pendingVerification": "Pending Verification", + "personal": "Personal", + "company": "Company", + "managementShortcuts": "Management Shortcuts", + "managementShortcutsSubtitle": "Quick access to common admin modules.", + "matrixManagement": "Matrix Management", + "matrixManagementDesc": "Configure matrices and users", + "coffeeSubscriptions": "Coffee Subscription Management", + "coffeeSubscriptionsDesc": "Plans, billing and renewals", + "contractManagement": "Contract Management", + "contractManagementDesc": "Templates, approvals, status", + "dashboardManagement": "Dashboard Management", + "dashboardManagementDesc": "Configure dashboard platforms", + "userManagement": "User Management", + "userManagementDesc": "Browse, search, and manage all users", + "userVerify": "User Verify", + "userVerifyDesc": "Review and verify user onboarding status", + "financeManagement": "Finance Management", + "financeManagementDesc": "Tax rates, billing settings and finance tools", + "poolManagement": "Pool Management", + "poolManagementDesc": "Manage pool structures and assignments", + "affiliateManagement": "Affiliate Management", + "affiliateManagementDesc": "Partner content and affiliate controls", + "newsManagement": "News Management", + "newsManagementDesc": "Create and manage news articles", + "devManagement": "Dev Management", + "devManagementDesc": "Run SQL queries and dev tools", + "languageManagement": "Language Management", + "languageManagementDesc": "Add languages and manage UI translations", + "moduleDisabled": "This module is currently disabled in the system configuration.", + "adminAccessRequired": "Admin access required.", + "adminNavigation": "Admin Navigation", + "adminNavigationHelp": "Open the dashboard to access all admin modules via icon panels.", + "serverStatusLogs": "Server Status & Logs", + "serverStatusLogsSubtitle": "System health, resource usage & recent error insights.", + "serverStatusLabel": "Server Status:", + "serverOnline": "Server Online", + "serverOffline": "Offline", + "uptime": "Uptime:", + "cpuUsage": "CPU Usage:", + "memoryUsage": "Memory Usage:", + "autoscaledEnvironment": "Autoscaled environment (mock)", + "recentErrorLogs": "Recent Error Logs", + "noRecentLogs": "No recent logs.", + "viewFullLogs": "View Full Logs" }, - - shop: { - title: 'Shop', - subtitle: 'Browse sustainable products.', - comingSoon: 'Coming soon', - addToCart: 'Add to cart', - price: 'Price', - outOfStock: 'Out of stock', - viewDetails: 'View details', + "userManagement": { + "title": "User Management", + "subtitle": "Browse, search, and manage all users.", + "searchPlaceholder": "Search users…", + "firstName": "First Name", + "lastName": "Last Name", + "email": "Email", + "role": "Role", + "status": "Status", + "actions": "Actions", + "verify": "Verify", + "ban": "Ban", + "unban": "Unban", + "exportCsv": "Export CSV", + "noUsers": "No users found.", + "loading": "Loading users…", + "confirmBan": "Are you sure you want to ban this user?", + "confirmUnban": "Are you sure you want to unban this user?", + "confirmVerify": "Are you sure you want to verify this user?", + "createdAt": "Created At", + "lastLogin": "Last Login", + "userType": "User Type" }, - - memberships: { - title: 'Memberships', - subtitle: 'Choose the right plan for you.', - description: 'Become a member and unlock exclusive benefits.', - selectPlan: 'Select plan', - perMonth: 'per month', - perYear: 'per year', - mostPopular: 'Most popular', - choosePlan: 'Choose this plan', + "languageManagement": { + "title": "Language Management", + "subtitle": "Manage UI translations. All keys scanned from the English source file.", + "addLanguage": "Add language", + "languageCode": "Language code", + "languageName": "Language name", + "languageCodePlaceholder": "e.g. fr, es, zh-TW", + "languageNamePlaceholder": "e.g. Français", + "addBtn": "Add", + "deleteLanguage": "Delete Language", + "deleteConfirm": "Delete", + "deleteWarning": "All translations for this language will be removed.", + "saveChanges": "Save changes", + "saved": "Saved", + "unsavedChanges": "You have unsaved changes.", + "saveNow": "Save", + "translationProgress": "Translation progress", + "keysTranslated": "keys translated", + "backToAdmin": "Back to Admin", + "searchPlaceholder": "Search keys or English text…", + "noKeysMatch": "No keys match your search.", + "englishReference": "English (reference)", + "clearOverride": "Clear override (revert to built-in)", + "invalidCode": "Use a valid BCP-47 code, e.g. fr, es, zh-TW.", + "codeDuplicate": "Language already exists.", + "codeRequired": "Language code is required.", + "nameRequired": "Language name is required.", + "wizardInputPlaceholder": "Enter translated text" }, - - affiliateLinks: { - title: 'Affiliate Links', - subtitle: 'Explore our partner links.', - description: 'Browse and share our partner links to earn rewards.', - visitLink: 'Visit link', - partnerLinks: 'Partner links', + "contractManagement": { + "title": "Contract Management", + "subtitle": "Manage contract templates.", + "uploadTemplate": "Upload template", + "currentTemplate": "Current template", + "noTemplate": "No template uploaded.", + "previewTemplate": "Preview template", + "saveTemplate": "Save template", + "loading": "Loading…", + "uploadSuccess": "Template uploaded successfully.", + "uploadError": "Could not upload template." }, - - aboutUs: { - title: 'About Us', - subtitle: 'Learn more about Profit Planet.', - description: 'We are building a sustainable future together.', - ourTeam: 'Our Team', - ourMission: 'Our Mission', + "userDetailModal": { + "error": "Error", + "personal": "Personal", + "company": "Company", + "superAdmin": "Super Admin", + "currentStatus": "Current Status", + "adminControls": "Admin Controls", + "missingDocumentsWarning": "ID documents or a signed contract are missing for this user. The user's verification status should be checked.", + "missingStorageWarning": "ID documents or a signed contract are missing from object storage. Check the file storage before verifying.", + "changeStatus": "Change Status", + "adminVerification": "Admin Verification", + "allStepsCompleted": "All steps completed. You can verify this user.", + "stepsNotCompleted": "User has not yet completed all required steps.", + "updating": "Updating...", + "unverifyUser": "Unverify User", + "verifyUser": "Verify User", + "contractPreview": "Contract Preview", + "contractTab": "Contract", + "gdprTab": "GDPR", + "loadingPreview": "Loading…", + "preview": "Preview", + "openInNewTab": "Open in new tab", + "filesIn": "Files in", + "refreshing": "Refreshing…", + "refresh": "Refresh", + "loadingFiles": "Loading files…", + "noFilesFound": "No files found in this folder.", + "selected": "Selected:", + "moving": "Moving…", + "moveTo": "Move to", + "loadingPreviewText": "Loading preview…", + "clickPreviewHint": "Click \"Preview\" to render the latest template for this user.", + "personalInformation": "Personal Information", + "firstName": "First Name", + "lastName": "Last Name", + "phone": "Phone", + "dateOfBirth": "Date of Birth", + "address": "Address", + "companyInformation": "Company Information", + "companyName": "Company Name", + "registrationNumber": "Registration Number", + "taxId": "Tax ID", + "registrationProgress": "Registration Progress", + "emailVerified": "Email Verified", + "profileCompleted": "Profile Completed", + "documentsUploaded": "Documents Uploaded", + "contractSigned": "Contract Signed", + "permissions": "Permissions", + "savingPermissions": "Saving…", + "savePermissions": "Save Permissions", + "loadingPermissions": "Loading permissions…", + "noPermissionsAvailable": "No permissions available.", + "inactive": "Inactive", + "close": "Close", + "moveDocumentTitle": "Move document to", + "moveDocumentDescription": "This will reclassify the selected document under the chosen contract type.", + "moveDocumentConfirm": "Move document", + "moveDocumentFile": "File:", + "completeStepsTooltip": "Complete all steps and ensure files are present in object storage before admin verification" }, - - news: { - title: 'News', - subtitle: 'Stay up to date with Profit Planet.', - readMore: 'Read more', - publishedDate: 'Published', - category: 'Category', - noArticles: 'No articles available.', - loadMore: 'Load more', + "invoiceDetailModal": { + "invoiceTitle": "Invoice", + "statusDraft": "Draft", + "statusIssued": "Issued", + "statusPaid": "Paid", + "statusOverdue": "Overdue", + "statusCanceled": "Canceled", + "changeStatus": "Change status:", + "updatingStatus": "Updating status…", + "created": "Created", + "customer": "Customer", + "name": "Name", + "email": "Email", + "street": "Street", + "city": "City", + "country": "Country", + "userId": "User ID", + "financials": "Financials", + "net": "Net", + "tax": "Tax", + "gross": "Gross", + "vatRate": "VAT Rate", + "currency": "Currency", + "dates": "Dates", + "issued": "Issued", + "due": "Due", + "updated": "Updated", + "lineItems": "Line Items", + "noLineItems": "No line items found.", + "description": "Description", + "qty": "Qty", + "unitPrice": "Unit Price", + "total": "Total", + "payments": "Payments", + "method": "Method", + "transaction": "Transaction", + "amount": "Amount", + "paidAt": "Paid At", + "status": "Status", + "contextMetadata": "Context / Metadata", + "clickToExpand": "(click to expand)", + "exportJson": "Export JSON", + "poolCheck": "Pool Check", + "close": "Close", + "poolErrorPrefix": "Pool booking error:", + "poolInflowsBooked": "pool inflow(s) booked", + "statusUpdatedTo": "Status updated to", + "reasonInvalidInvoiceId": "Invalid invoice ID", + "reasonInvoiceNotFound": "Invoice not found for pool booking", + "reasonInvoiceNotPaid": "Invoice not marked as paid", + "reasonUnsupportedSourceType": "Not a subscription invoice — no pool booking", + "reasonMissingAbonementRelation": "No linked subscription — no pool booking", + "reasonAbonementNotFound": "Linked subscription not found", + "reasonNoBreakdownLines": "Subscription has no capsule breakdown — no pool booking", + "reasonNoActivePools": "No active system pools found" }, - - // ─── Coffee ABO ──────────────────────────────────────── - coffeeSelection: { - title: 'Coffee Subscription', - subtitle: 'Select your coffees for this month.', - selectYourCoffees: 'Select your coffees', - capsuleTarget: 'Capsule target', - planLabel: 'Your plan', - yourSelection: 'Your selection', - totalCapsules: 'Total capsules', - totalPacks: 'Total packs', - targetPacks: 'Target packs', - selectUpTo: 'Select up to', - goToSummary: 'Go to summary', - loading: 'Loading coffees…', - noProducts: 'No coffees available.', - validationExact: 'You need exactly {count} capsules ({packs} packs).', - packOf10: 'Pack of 10', - pricePerPack: 'per pack', - }, - - coffeeSummary: { - title: 'Summary & Details', - backToSelection: 'Back to selection', - stepSelection: 'Selection', - stepSummary: 'Summary', - yourDetails: '1. Your details', - fillFromLoggedIn: 'Fill fields with logged in data', - firstName: 'First name', - lastName: 'Last name', - email: 'Email', - street: 'Street & No.', - zip: 'ZIP', - city: 'City', - country: 'Country', - phone: 'Phone', - phoneOptional: 'Phone (optional)', - paymentMethod: 'Payment method', - paymentSepa: 'SEPA', - paymentCard: 'Credit Card', - paymentSofort: 'Sofort Banking', - invoiceByEmail: 'Send invoice by email', - invoiceAddress: 'Invoice address', - sameAsShipping: 'Same as shipping address', - uidNumberLabel: 'UID Number (optional)', - uidNumberPlaceholder: 'e.g. SI12345678', - uidNumberHint: 'Without a valid UID, the invoice will be created with standard VAT.', - reverseChargeHint: 'Companies with a valid UID and a foreign invoice country outside AT are billed via reverse charge without displayed VAT.', - fullName: 'Full name', - contractPreview: 'Contract preview (ABO)', - contractSubtitle: 'Contract variables are auto-populated from your form data.', - openPreview: 'Open preview', - contractLoading: 'Loading contract preview…', - contractError: 'Contract preview could not be loaded:', - contractNotAvailable: 'Contract template is not available.', - pdfPreviewTitle: 'ABO contract preview (PDF)', - pdfGenerating: 'Generating PDF preview…', - pdfError: 'PDF preview could not be generated:', - pdfNotAvailable: 'No PDF preview available.', - signingCity: 'Ort (Signing City) *', - signingCityPlaceholder: 'e.g. Vienna', - signingCityRequired: 'Signing city is required.', - signatureRequired: 'Signature is required.', - completeSubscription: 'Complete subscription', - creating: 'Creating…', - cannotSubmit: 'Please select coffees and fill all required buyer fields, signing city, and signature.', - yourSelection: '2. Your selection', - shipping: 'Shipping', - freeShipping: 'FREE SHIPPING', - shippingLoading: 'Loading…', - shippingError: 'Shipping fees could not be loaded:', - totalNet: 'Total (net)', - tax: 'Tax ({rate}%)', - taxReverseCharge: 'Tax (Reverse Charge)', - totalInclTax: 'Total incl. tax', - reverseChargeActive: 'Reverse Charge active: valid UID and foreign invoice country detected.', - capsuleValidation: 'Selected: {selected} capsules ({selectedPacks} packs of 10). Target: {target} capsules ({targetPacks} packs).', - exactlyRequired: 'Exactly {packs} packs ({capsules} capsules) are required.', - thankYouTitle: 'Thanks for your subscription!', - thankYouMessage: 'Subscription created.', - noSelectionFound: 'No selection found.', - noLoggedInData: 'No logged-in user data found to fill the fields.', - }, - - // ─── Account ─────────────────────────────────────────── - personalMatrix: { - title: 'Personal Matrix', - subtitle: 'Your network structure.', - description: 'View your personal matrix and downline network.', - loading: 'Loading matrix…', - noData: 'No matrix data available.', - }, - - referralManagement: { - title: 'Referral Management', - subtitle: 'Manage your referral links.', - description: 'Create and manage your referral links. Track performance at a glance.', - createLink: 'Create referral link', - copyLink: 'Copy link', - copy: 'Copy', - copyMobile: 'Copy link', - copied: 'Copied', - copiedToClipboard: 'Copied to clipboard!', - linkExpiry: 'Expires', - noLinks: 'No referral links found.', - generating: 'Generating…', - generateLink: 'Generate Link', - usesRemaining: 'uses remaining', - unlimited: 'Unlimited', - never: 'Never', - createSuccess: 'Referral link created successfully.', - createError: 'Could not create referral link.', - deactivate: 'Deactivate', - deactivated: 'Link deactivated', - deactivatedMessage: 'The referral link has been deactivated successfully.', - deactivateFailed: 'Deactivate failed', - deactivateFailedMessage: 'Could not deactivate the referral link.', - deactivateNetworkError: 'Network error while deactivating the referral link.', - deactivateModalTitle: 'Deactivate referral link?', - deactivateModalDescription: 'This will immediately deactivate the selected referral link so it can no longer be used.', - linkLabel: 'Link', - accessCheckFailed: 'Access check failed', - userIdMissing: 'User id is missing. Redirecting…', - accessDenied: 'Access denied', - accessDeniedMessage: 'You do not have permission to access Referral Management.', - permCheckFailed: 'Permission check failed', - permCheckFailedMessage: 'Could not verify permissions. Redirecting…', - loadFailed: 'Load failed', - loadStatsError: 'Could not load referral statistics.', - loadLinksError: 'Could not load referral links.', - copyFailed: 'Copy failed', - copyFailedMessage: 'Could not copy link to clipboard.', - copiedMessage: 'Link copied to clipboard.', - allLinks: 'All Referral Links', - allLinksSubtitle: 'Manage your links and see their status.', - colLink: 'Link', - colCreated: 'Created', - colExpires: 'Expires', - colUsage: 'Usage', - colStatus: 'Status', - generateTitle: 'Generate Referral Link', - maxUsesLabel: 'Max Uses', - expiresIn: 'Expires In', - lockedByNeverExpires: 'Locked by "Never expires".', - lockedByUnlimited: 'Locked by "Unlimited uses".', - statsActiveLinks: 'Active Links', - statsLinksUsed: 'Links Used', - statsPersonalUsers: 'Personal Users', - statsCompanyUsers: 'Company Users', - statsTotalLinks: 'Total Links', - levelStarter: 'Starter', - levelNovice: 'Novice', - levelHustler: 'Hustler', - levelEntrepreneur: 'Entrepreneur', - levelPrestige: 'Prestige', - levelMax: 'MAX', - levelLabel: 'Level', - referrals: 'referrals', - of: 'of', - maxLevelReached: 'Max level reached', - nextMilestone: 'Next milestone', - registeredUsersTitle: 'Registered Users via Your Referral', - totalRefBadge: 'TOTAL REGISTERED USER WITH YOUR REF LINK', - registeredUsersSubtitle: 'Users who signed up using one of your referral links.', - showingLatest5: 'Showing the latest 5 users. Use “View all” to see the complete list.', - viewAll: 'View all', - colUser: 'User', - colEmail: 'Email', - colType: 'Type', - colRegistered: 'Registered', - noRegisteredUsers: 'No registered users found.', - typeCompany: 'Company', - typePersonal: 'Personal', - allRegisteredUsersTitle: 'All Registered Users via Your Referral', - allRegisteredUsersSubtitle: 'Search, filter, paginate, or export the full list.', - exportCsv: 'Export CSV', - searchPlaceholder: 'Search name or email…', - filterAllTypes: 'All Types', - filterAllStatus: 'All Status', - filterActive: 'Active', - filterInactive: 'Inactive', - filterPending: 'Pending', - filterBlocked: 'Blocked', - noUsersMatchFilters: 'No users match your filters.', - showing: 'Showing', - pagePrev: 'Previous', - pageNext: 'Next', - pageOf: 'of', - expiry1Day: '1 day', - expiry2Days: '2 days', - expiry3Days: '3 days', - expiry4Days: '4 days', - expiry5Days: '5 days', - expiry6Days: '6 days', - expiry7Days: '7 days', - expiryNever: 'Never expires', - maxUses1: '1 use', - maxUses5: '5 uses', - maxUses10: '10 uses', - maxUses50: '50 uses', - maxUsesUnlimited: 'Unlimited', - }, - - quickactionDashboard: { - title: 'Quick Actions', - subtitle: 'Complete your onboarding steps.', - stepLabel: 'Step', - completed: 'Completed', - pending: 'Pending', - required: 'Required', - verifyIdentity: 'Verify your identity', - completeProfile: 'Complete your profile', - setPayment: 'Set up payment', - startUsing: 'Start using Profit Planet', - allDone: 'All steps completed!', - loading: 'Loading…', - guestAccount: 'Guest Account', - companyAccount: 'Company Account', - personalAccount: 'Personal Account', - loadingStatus: 'Loading status...', - errorLoadingAccountStatus: 'Error loading account status', - tryAgain: 'Try again', - emailVerificationStatus: 'Email Verification Status', - statusOverview: 'Status Overview', - actionRequired: 'Action Required', - quickActions: 'Quick Actions', - tutorial: 'Tutorial', - pleaseVerifyEmailAddress: 'Please verify your email address to activate your guest account and access your subscriptions.', - resendAvailableIn: 'Resend available in', - requestNewCode: 'You can request a new code now', - emailVerified: 'Email Verified', - verifyEmail: 'Verify Email', - idUploaded: 'ID Uploaded', - uploadIdDocument: 'Upload ID Document', - profileCompleted: 'Profile Completed', - signContract: 'Sign Contract', - contractNotReady: 'Sign Contract (requires all previous steps)', - latestNews: 'Latest News', - viewAll: 'View all', - noNewsYet: 'No news available yet.', - recent: 'Recent', - redirecting: 'Redirecting…', - takingToDashboard: 'Taking you to your dashboard', - pleaseWait: 'Please wait', - goToDashboard: 'Go to Dashboard', - backToDashboard: 'Back to Dashboard', - uploading: 'Uploading...', - saved: 'Saved', - uploadContinue: 'Upload & Continue', - yes: 'Yes', - no: 'No', - dragAndDrop: 'Drag and drop your file here, or click to browse', - remove: 'Remove', - maxUploadHint: 'Max 10MB. JPG, PNG or PDF.', - statusCards: { - emailVerification: 'Email Verification', - idDocument: 'ID Document', - additionalInfo: 'Additional Info', - contract: 'Contract', - verified: 'Verified', - missing: 'Missing', - uploaded: 'Uploaded', - signed: 'Signed', - }, - emailVerify: { - title: 'Verify your email', - sentIntro: 'We sent a 6-digit code to', - sendingIntro: 'Sending verification email to', - yourEmail: 'your email', - enterBelow: 'Enter it below.', - invalidCode: 'Please enter the full 6-digit code.', - authError: 'Not authenticated. Please log in again.', - emailVerifiedTitle: 'Email verified', - emailVerifiedMessage: 'Your email has been verified successfully.', - verificationFailedTitle: 'Verification failed', - networkErrorTitle: 'Network error', - verifying: 'Verifying...', - verified: 'Verified', - confirmCode: 'Confirm code', - resendCode: 'Resend code', - supportHint: 'Didn’t receive the email? Please check your junk/spam folder. Still having issues?', - contactSupport: 'Contact support', - verifiedRedirecting: 'Verified! Redirecting shortly...', - }, - uploadId: { - personalTitle: 'Upload ID Document', - personalSubtitle: 'Upload your identification document to continue your onboarding.', - companyTitle: 'Upload Company Documents', - companySubtitle: 'Upload the required company identification documents to continue your onboarding.', - idNumber: 'ID Number *', - idNumberPlaceholder: 'Enter your ID number', - idNumberHint: 'Enter the document number exactly as shown.', - contactPersonIdNumber: 'Contact Person ID Number *', - contactPersonIdNumberPlaceholder: 'Enter contact person\'s ID number', - contactPersonIdNumberHint: 'Enter the ID number exactly as shown on the document.', - idType: 'ID Type *', - documentType: 'Document Type *', - selectIdType: 'Select ID type', - selectDocumentType: 'Select document type', - expiryDate: 'Expiry Date *', - expiryDateHint: 'Choose the expiry date on the document.', - backSideQuestion: 'Does your document have a back side?', - frontPreviewAlt: 'Front ID preview', - backPreviewAlt: 'Back ID preview', - primaryPreviewAlt: 'Primary document preview', - supportingPreviewAlt: 'Supporting document preview', - clickUploadFront: 'Click to upload the front side', - clickUploadBack: 'Click to upload the back side', - documentsChecklistTitle: 'Before uploading, make sure the document:', - clearlyVisible: 'Is clearly visible', - showCorners: 'Shows all four corners', - notExpired: 'Is not expired', - goodLighting: 'Has no glare or dark shadows', - bothSidesUploaded: 'Both sides uploaded', - frontSideUploaded: 'Front side uploaded', - successSavedRedirecting: 'Saved successfully. Redirecting...', - personalUploadSuccessTitle: 'Documents uploaded', - personalUploadSuccessMessage: 'Your ID documents were uploaded successfully.', - companyUploadSuccessTitle: 'Company documents uploaded', - companyUploadSuccessMessage: 'Your company documents were uploaded successfully.', - fileTooLargeTitle: 'File too large', - fileTooLargeMessage: 'Please upload a file smaller than 10MB.', - missingInfoTitle: 'Missing information', - fillRequiredFields: 'Please fill in all required fields.', - frontSideMissingTitle: 'Front side missing', - frontSideMissingMessage: 'Please upload the front side.', - backSideMissingTitle: 'Back side missing', - backSideMissingMessage: 'Please upload the back side.', - authErrorTitle: 'Authentication error', - uploadFailedTitle: 'Upload failed', - uploadFailedMessage: 'Unable to upload your documents.', - networkErrorTitle: 'Network error', - networkErrorMessage: 'A network error occurred while uploading the documents.', - }, - additionalInfo: { - title: 'Complete Your Profile', - companyTitle: 'Complete Company Profile', - personalInformation: 'Personal Information', - companyDetails: 'Company Details', - bankDetails: 'Bank Details', - additionalInformation: 'Additional Information', - firstName: 'First Name *', - lastName: 'Last Name *', - email: 'Email *', - phoneNumber: 'Phone Number *', - dateOfBirth: 'Date of Birth *', - nationality: 'Nationality', - selectNationality: 'Select nationality...', - streetHouseNumber: 'Street & House Number *', - streetNumber: 'Street & Number *', - postalCode: 'Postal Code *', - city: 'City *', - country: 'Country', - selectCountry: 'Select country...', - accountHolder: 'Account Holder *', - iban: 'IBAN *', - secondPhoneOptional: 'Second Phone Number (optional)', - emergencyContactName: 'Emergency Contact Name', - emergencyContactPhone: 'Emergency Contact Phone', - fullNamePlaceholder: 'Full name', - postalCodePlaceholder: 'e.g. 12345', - cityPlaceholder: 'e.g. Berlin', - phonePlaceholder: 'e.g. +43 676 1234567', - streetPlaceholder: 'Street & House Number', - ibanPlaceholder: 'e.g. DE89 3704 0044 0532 0130 00', - companyName: 'Company Name *', - companyEmail: 'Company Email *', - companyPhone: 'Company Phone *', - contactPerson: 'Contact Person *', - contactPersonPhone: 'Contact Person Phone *', - registrationNumberOptional: 'Registration Number (optional)', - uidNumberOptional: 'UID Number (optional)', - companyHolderPlaceholder: 'Company / Holder name', - registrationPlaceholder: 'e.g. FN123456a', - uidPlaceholder: 'e.g. ATU12345678', - bicOptional: 'BIC (optional)', - bicPlaceholder: 'GENODEF1XXX', - contactNamePlaceholder: 'Contact name', - emergencyContactNamePlaceholder: 'Contact name', - additionalInfoSuccessTitle: 'Profile saved', - personalSuccessMessage: 'Your personal profile has been saved successfully.', - companySuccessMessage: 'Your company profile has been saved successfully.', - dataSavedRedirecting: 'Data saved. Redirecting shortly…', - saveContinue: 'Save & Continue', - saveFailedTitle: 'Save failed', - saveFailedMessage: 'Save failed. Please try again.', - invalidDateOfBirthTitle: 'Invalid date of birth', - invalidDateOfBirthMessage: 'Invalid date of birth. You must be at least 18 years old.', - invalidIbanTitle: 'Invalid IBAN', - invalidIbanMessage: 'Invalid IBAN.', - missingCountryCodeTitle: 'Missing country code', - missingPhoneNumberTitle: 'Missing phone number', - invalidPhoneNumberTitle: 'Invalid phone number', - missingCountryCodeMessage: 'Please select a country code for your phone number.', - phoneNumberMissingMessage: 'Please enter your phone number.', - validPhoneNumberMessage: 'Please enter a valid phone number.', - validSecondPhoneNumberMessage: 'Please enter a valid second phone number.', - validEmergencyPhoneNumberMessage: 'Please enter a valid emergency phone number.', - fillRequiredFields: 'Please fill in all required fields.', - authErrorTitle: 'Authentication error', - authErrorMessage: 'Not authenticated. Please log in again.', - searchPlaceholder: 'Search…', - noResults: 'No results', - countries: { - germany: 'Germany', austria: 'Austria', switzerland: 'Switzerland', italy: 'Italy', france: 'France', spain: 'Spain', portugal: 'Portugal', netherlands: 'Netherlands', belgium: 'Belgium', poland: 'Poland', czechRepublic: 'Czech Republic', hungary: 'Hungary', croatia: 'Croatia', slovenia: 'Slovenia', slovakia: 'Slovakia', unitedKingdom: 'United Kingdom', ireland: 'Ireland', sweden: 'Sweden', norway: 'Norway', denmark: 'Denmark', finland: 'Finland', russia: 'Russia', turkey: 'Turkey', greece: 'Greece', romania: 'Romania', bulgaria: 'Bulgaria', serbia: 'Serbia', albania: 'Albania', bosniaHerzegovina: 'Bosnia and Herzegovina', unitedStates: 'United States', canada: 'Canada', brazil: 'Brazil', argentina: 'Argentina', mexico: 'Mexico', china: 'China', japan: 'Japan', india: 'India', pakistan: 'Pakistan', australia: 'Australia', southAfrica: 'South Africa', other: 'Other' - }, - nationalities: { - german: 'German', austrian: 'Austrian', swiss: 'Swiss', italian: 'Italian', french: 'French', spanish: 'Spanish', portuguese: 'Portuguese', dutch: 'Dutch', belgian: 'Belgian', polish: 'Polish', czech: 'Czech', hungarian: 'Hungarian', croatian: 'Croatian', slovenian: 'Slovenian', slovak: 'Slovak', british: 'British', irish: 'Irish', swedish: 'Swedish', norwegian: 'Norwegian', danish: 'Danish', finnish: 'Finnish', russian: 'Russian', turkish: 'Turkish', greek: 'Greek', romanian: 'Romanian', bulgarian: 'Bulgarian', serbian: 'Serbian', albanian: 'Albanian', bosnian: 'Bosnian', american: 'American', canadian: 'Canadian', brazilian: 'Brazilian', argentinian: 'Argentinian', mexican: 'Mexican', chinese: 'Chinese', japanese: 'Japanese', indian: 'Indian', pakistani: 'Pakistani', australian: 'Australian', southAfrican: 'South African', other: 'Other' - }, - }, - contractSigning: { - personalTitle: 'Sign Personal Participation Contract', - companyTitle: 'Sign Company Partnership Contract', - personalSubtitle: 'Please review the contract details and sign electronically.', - companySubtitle: 'Please review the contract details and sign on behalf of the company.', - documentInformation: 'Document Information', - documentPreview: 'Document Preview', - contractTab: 'Contract', - gdprTab: 'GDPR', - openInNewTab: 'Open in new tab', - refresh: 'Refresh', - loadingPreview: 'Loading preview…', - noContractAvailable: 'No contract available at this moment, please contact us.', - noteTitle: 'Note', - noteBody: 'Your electronic signature is legally binding. Please ensure all details are correct.', - attentionTitle: 'Attention', - attentionBody: 'You confirm that you are authorized to sign on behalf of the company.', - documentLabel: 'Document:', - idLabel: 'ID:', - versionLabel: 'Version / Basis:', - jurisdictionLabel: 'Jurisdiction:', - languageLabel: 'Language:', - issuerLabel: 'Issuer:', - addressLabel: 'Address:', - signatureSection: 'Signature', - drawSignature: 'Draw Signature *', - clear: 'Clear', - signatureHelp: 'Use mouse or touch to sign. A signature is required.', - captured: 'Captured', - confirmations: 'Confirmations', - confirmContractPersonal: 'I confirm that I have read and understood the contract in full.', - confirmDataPersonal: 'I consent to the processing of my personal data in accordance with the privacy policy.', - confirmSignaturePersonal: 'I confirm this electronic signature is legally binding and equivalent to a handwritten signature.', - confirmContractCompany: 'I confirm I have read and accepted the full contract on behalf of the company.', - confirmDataCompany: 'I consent to processing of company and personal data in accordance with the privacy policy.', - confirmSignatureCompany: 'I am authorized to sign legally binding documents for this company.', - noDocumentsAvailableTitle: 'No documents available', - noDocumentsAvailableMessage: 'Temporarily unable to sign contracts. No active documents are available at this moment.', - missingInformationTitle: 'Missing information', - completePrefix: 'Please complete:', - contractReadUnderstood: 'Contract read and understood', - privacyAccepted: 'Privacy policy accepted', - electronicSignatureConfirmed: 'Electronic signature confirmed', - signatureCaptured: 'Signature captured on pad', - authErrorTitle: 'Authentication error', - authErrorMessage: 'Not authenticated. Please log in again.', - contractSignedTitle: 'Contract signed', - personalContractSignedMessage: 'Your personal contract has been signed successfully.', - companyContractSignedMessage: 'Your company contract has been signed successfully.', - signingFailedTitle: 'Signature failed', - signingFailedMessage: 'Signature failed. Please try again.', - contractSignedRedirecting: 'Contract signed successfully. Redirecting shortly…', - signing: 'Signing…', - signed: 'Signed', - signNow: 'Sign Now', - }, - }, - - suspended: { - title: 'Account Suspended', - message: 'Your account has been suspended. Please contact support for assistance.', - contactSupport: 'Contact Support', - backToLogin: 'Back to login', - reason: 'Reason', - }, - - // ─── Admin ───────────────────────────────────────────── - adminDashboard: { - title: 'Admin Dashboard', - subtitle: 'Manage all administrative features, user management, permissions, and global settings.', - warningTitle: 'Warning: Settings and actions below this point can have consequences for the entire system!', - warningMessage: 'Manage all administrative features, user management, permissions, and global settings.', - accessDenied: 'Access Denied', - accessDeniedMessage: 'You need admin privileges to access this page.', - loading: 'Loading…', - totalUsers: 'Total Users', - admins: 'Admins', - active: 'Active', - pendingVerification: 'Pending Verification', - personal: 'Personal', - company: 'Company', - managementShortcuts: 'Management Shortcuts', - managementShortcutsSubtitle: 'Quick access to common admin modules.', - matrixManagement: 'Matrix Management', - matrixManagementDesc: 'Configure matrices and users', - coffeeSubscriptions: 'Coffee Subscription Management', - coffeeSubscriptionsDesc: 'Plans, billing and renewals', - contractManagement: 'Contract Management', - contractManagementDesc: 'Templates, approvals, status', - dashboardManagement: 'Dashboard Management', - dashboardManagementDesc: 'Configure dashboard platforms', - userManagement: 'User Management', - userManagementDesc: 'Browse, search, and manage all users', - userVerify: 'User Verify', - userVerifyDesc: 'Review and verify user onboarding status', - financeManagement: 'Finance Management', - financeManagementDesc: 'Tax rates, billing settings and finance tools', - poolManagement: 'Pool Management', - poolManagementDesc: 'Manage pool structures and assignments', - affiliateManagement: 'Affiliate Management', - affiliateManagementDesc: 'Partner content and affiliate controls', - newsManagement: 'News Management', - newsManagementDesc: 'Create and manage news articles', - devManagement: 'Dev Management', - devManagementDesc: 'Run SQL queries and dev tools', - languageManagement: 'Language Management', - languageManagementDesc: 'Add languages and manage UI translations', - moduleDisabled: 'This module is currently disabled in the system configuration.', - adminAccessRequired: 'Admin access required.', - adminNavigation: 'Admin Navigation', - adminNavigationHelp: 'Open the dashboard to access all admin modules via icon panels.', - serverStatusLogs: 'Server Status & Logs', - serverStatusLogsSubtitle: 'System health, resource usage & recent error insights.', - serverStatusLabel: 'Server Status:', - serverOnline: 'Server Online', - serverOffline: 'Offline', - uptime: 'Uptime:', - cpuUsage: 'CPU Usage:', - memoryUsage: 'Memory Usage:', - autoscaledEnvironment: 'Autoscaled environment (mock)', - recentErrorLogs: 'Recent Error Logs', - noRecentLogs: 'No recent logs.', - viewFullLogs: 'View Full Logs', - }, - - userManagement: { - title: 'User Management', - subtitle: 'Browse, search, and manage all users.', - searchPlaceholder: 'Search users…', - firstName: 'First Name', - lastName: 'Last Name', - email: 'Email', - role: 'Role', - status: 'Status', - actions: 'Actions', - verify: 'Verify', - ban: 'Ban', - unban: 'Unban', - exportCsv: 'Export CSV', - noUsers: 'No users found.', - loading: 'Loading users…', - confirmBan: 'Are you sure you want to ban this user?', - confirmUnban: 'Are you sure you want to unban this user?', - confirmVerify: 'Are you sure you want to verify this user?', - createdAt: 'Created At', - lastLogin: 'Last Login', - userType: 'User Type', - }, - - languageManagement: { - title: 'Language Management', - subtitle: 'Manage UI translations. All keys scanned from the English source file.', - addLanguage: 'Add language', - languageCode: 'Language code', - languageName: 'Language name', - languageCodePlaceholder: 'e.g. fr, es, zh-TW', - languageNamePlaceholder: 'e.g. Français', - addBtn: 'Add', - deleteLanguage: 'Delete Language', - deleteConfirm: 'Delete', - deleteWarning: 'All translations for this language will be removed.', - saveChanges: 'Save changes', - saved: 'Saved', - unsavedChanges: 'You have unsaved changes.', - saveNow: 'Save', - translationProgress: 'Translation progress', - keysTranslated: 'keys translated', - backToAdmin: 'Back to Admin', - searchPlaceholder: 'Search keys or English text…', - noKeysMatch: 'No keys match your search.', - englishReference: 'English (reference)', - clearOverride: 'Clear override (revert to built-in)', - invalidCode: 'Use a valid BCP-47 code, e.g. fr, es, zh-TW.', - codeDuplicate: 'Language already exists.', - codeRequired: 'Language code is required.', - nameRequired: 'Language name is required.', - wizardInputPlaceholder: 'Enter translated text', - }, - - contractManagement: { - title: 'Contract Management', - subtitle: 'Manage contract templates.', - uploadTemplate: 'Upload template', - currentTemplate: 'Current template', - noTemplate: 'No template uploaded.', - previewTemplate: 'Preview template', - saveTemplate: 'Save template', - loading: 'Loading…', - uploadSuccess: 'Template uploaded successfully.', - uploadError: 'Could not upload template.', - }, - - userDetailModal: { - error: 'Error', - personal: 'Personal', - company: 'Company', - superAdmin: 'Super Admin', - currentStatus: 'Current Status', - adminControls: 'Admin Controls', - missingDocumentsWarning: 'ID documents or a signed contract are missing for this user. The user\'s verification status should be checked.', - missingStorageWarning: 'ID documents or a signed contract are missing from object storage. Check the file storage before verifying.', - changeStatus: 'Change Status', - adminVerification: 'Admin Verification', - allStepsCompleted: 'All steps completed. You can verify this user.', - stepsNotCompleted: 'User has not yet completed all required steps.', - updating: 'Updating...', - unverifyUser: 'Unverify User', - verifyUser: 'Verify User', - contractPreview: 'Contract Preview', - contractTab: 'Contract', - gdprTab: 'GDPR', - loadingPreview: 'Loading…', - preview: 'Preview', - openInNewTab: 'Open in new tab', - filesIn: 'Files in', - refreshing: 'Refreshing…', - refresh: 'Refresh', - loadingFiles: 'Loading files…', - noFilesFound: 'No files found in this folder.', - selected: 'Selected:', - moving: 'Moving…', - moveTo: 'Move to', - loadingPreviewText: 'Loading preview…', - clickPreviewHint: 'Click "Preview" to render the latest template for this user.', - personalInformation: 'Personal Information', - firstName: 'First Name', - lastName: 'Last Name', - phone: 'Phone', - dateOfBirth: 'Date of Birth', - address: 'Address', - companyInformation: 'Company Information', - companyName: 'Company Name', - registrationNumber: 'Registration Number', - taxId: 'Tax ID', - registrationProgress: 'Registration Progress', - emailVerified: 'Email Verified', - profileCompleted: 'Profile Completed', - documentsUploaded: 'Documents Uploaded', - contractSigned: 'Contract Signed', - permissions: 'Permissions', - savingPermissions: 'Saving…', - savePermissions: 'Save Permissions', - loadingPermissions: 'Loading permissions…', - noPermissionsAvailable: 'No permissions available.', - inactive: 'Inactive', - close: 'Close', - moveDocumentTitle: 'Move document to', - moveDocumentDescription: 'This will reclassify the selected document under the chosen contract type.', - moveDocumentConfirm: 'Move document', - moveDocumentFile: 'File:', - completeStepsTooltip: 'Complete all steps and ensure files are present in object storage before admin verification', - }, - - invoiceDetailModal: { - invoiceTitle: 'Invoice', - statusDraft: 'Draft', - statusIssued: 'Issued', - statusPaid: 'Paid', - statusOverdue: 'Overdue', - statusCanceled: 'Canceled', - changeStatus: 'Change status:', - updatingStatus: 'Updating status…', - created: 'Created', - customer: 'Customer', - name: 'Name', - email: 'Email', - street: 'Street', - city: 'City', - country: 'Country', - userId: 'User ID', - financials: 'Financials', - net: 'Net', - tax: 'Tax', - gross: 'Gross', - vatRate: 'VAT Rate', - currency: 'Currency', - dates: 'Dates', - issued: 'Issued', - due: 'Due', - updated: 'Updated', - lineItems: 'Line Items', - noLineItems: 'No line items found.', - description: 'Description', - qty: 'Qty', - unitPrice: 'Unit Price', - total: 'Total', - payments: 'Payments', - method: 'Method', - transaction: 'Transaction', - amount: 'Amount', - paidAt: 'Paid At', - status: 'Status', - contextMetadata: 'Context / Metadata', - clickToExpand: '(click to expand)', - exportJson: 'Export JSON', - poolCheck: 'Pool Check', - close: 'Close', - poolErrorPrefix: 'Pool booking error:', - poolInflowsBooked: 'pool inflow(s) booked', - statusUpdatedTo: 'Status updated to', - reasonInvalidInvoiceId: 'Invalid invoice ID', - reasonInvoiceNotFound: 'Invoice not found for pool booking', - reasonInvoiceNotPaid: 'Invoice not marked as paid', - reasonUnsupportedSourceType: 'Not a subscription invoice — no pool booking', - reasonMissingAbonementRelation: 'No linked subscription — no pool booking', - reasonAbonementNotFound: 'Linked subscription not found', - reasonNoBreakdownLines: 'Subscription has no capsule breakdown — no pool booking', - reasonNoActivePools: 'No active system pools found', - }, - - autofix: { - k02665163: 'Next steps', - k027bd82e: 'Edit the shipping prices for 60 and 120 pieces.', - k047a175d: 'No contracts found.', - k06d4487f: 'Cancel editing', - k0853cfa6: 'Thanks for your subscription!', - k096f4013: 'Manage your company stamps. One active at a time.', - k0af6c6be: 'Create & Activate', - k0affa826: 'Shown to users in the shop and checkout.', - k0b03e660: '2. Choose coffees & quantities', - k0b2445d5: 'Generating PDF preview…', - k0bbc633d: 'Loading contract preview…', - k0d9c63c5: 'Scanning workspace files and component subdirectories...', - k11438b4c: 'Total incl. tax', - k12a86c71: 'Shipping…', - k14eb468b: 'Potential untranslated UI text detected', - k155166db: 'Contract variables are auto-populated from your form data.', - k15bea9bb: 'Address details used on invoices.', - k1824f78d: 'Please select coffees and fill all required buyer fields, signing city, and signature.', - k18872b63: 'No image', - k1bf4ffa4: 'Untranslated literals', - k20127e1c: 'No selection found.', - k21361e0d: 'Summary & Details', - k221fa311: 'Invoice template variables', - k22c8f7f1: 'Create Template', - k28f1a9b1: 'Full name', - k2d0798a6: 'Loading subscription…', - k2e43a9c4: 'Click or drag and drop a new image here', - k3466b0e0: 'Payment method', - k346a2c64: 'Language Management', - k39791457: 'Manage contract templates, company stamp, and create new templates.', - k41ab9eb6: 'You\'ll be able to crop and adjust the image after uploading', - k41afd863: 'Editing:', - k4aeb8688: '2. Your selection', - k4be6f631: 'Save changes', - k516705dd: 'Ort ist erforderlich.', - k528eede9: 'Same as shipping address', - k56717603: 'no image', - k56a52520: 'Skipped files', - k5a489751: 'Save Changes', - k5ad4d864: 'Auto-fixed files', - k6070f6e3: 'Add New Stamp', - k60874ea3: 'Keys auto-created', - k67cb36a4: 'Contract Management', - k6a2c64e8: 'Last name', - k6a892262: 'No keys match your search.', - k6ee0a1b6: 'Click or drag and drop an image here', - k73d1d7d7: 'Edit Crop', - k74491338: 'Reverse Charge aktiv: gueltige UID und auslaendisches Rechnungsland erkannt.', - k7775eddb: 'Your Company Stamps', - k788633d1: 'Profit Planet', - k7a3a6ea3: 'to render invoice line items.', - k7f48f374: '1. Select subscription size', - k7fe72eff: 'No platforms available.', - k80ac9651: 'PNG, JPG, WebP up to 10MB', - k825359ab: 'Accepted types: PNG, JPEG, WebP, SVG. Max size: 5MB.', - k832387c5: 'Loading…', - k83deba83: 'per 10 pcs', - k875f4054: 'Manage all coffees.', - k8c75468c: 'No subscriptions found.', - k8cf40180: 'Missing keys in en.ts', - k90a6e795: 'Unique keys used', - k91052e3f: 'Translation calls', - k92639a9a: 'Language code', - k926966d0: 'Language name', - k96839795: 'Back to selection', - k99bffb65: 'Fill all fields to proceed.', - k9b173204: 'Files auto-fixed', - k9c1a5ecc: 'Fill fields with logged in data', - ka3ee9ded: 'Subscription Billing', - ka56b7b2b: 'No PDF preview available.', - ka5f38d19: 'Company Stamp', - ka802064d: 'Applying i18n auto-fixes to client components and updating translation files...', - kaa30f0cd: 'Create Coffee', - kaa8bbc8e: 'Company Information', - kac6cedc7: 'Saving…', - kae63e46a: 'Missing translation keys detected in workspace', - kb06fa395: 'Edit Coffee', - kb0b660e2: 'Configure Coffee Subscription', - kb1c1c0e5: 'Logging you out...', - kb2217bdf: 'Translation Coverage Scan', - kb791958e: 'Use these placeholders in your HTML: invoiceNumber, customerName, issuedAt, totalNet, totalTax, totalGross, itemsHtml.', - kb8f33873: 'Translation progress', - kb9e483c4: 'Update details of the coffee.', - kba6bd6f3: 'or click to browse', - kcc4adbcc: 'Navigation shortcuts', - kce094582: 'Invoice address', - kd1a2772d: 'Street & No.', - kd2a00802: 'Image removed - Click to upload a new one', - kd3092148: 'Subscription created.', - kd379df9b: 'Open preview', - kd63c8219: 'You have unsaved changes.', - kd6f8d7e9: '1. Your details', - kd8a5ad17: 'Back to list', - kda5f982e: 'Delete Language', - kddd4832f: 'Delete coffee?', - kde5c689e: 'Pick a platform to continue.', - ke33e6fbf: 'Send invoice by email', - ke58b7627: 'Drag and drop your stamp here', - ke74b1adf: 'Contract template is not available.', - ke7b634f2: '3. Preview', - ke7f0a9e3: 'FREE SHIPPING', - kea7cde7a: 'Back to Admin', - kec078e54: 'No coffees selected yet.', - kefe5f0dd: 'Ohne gueltige UID wird die Rechnung mit normaler MwSt erstellt.', - kf1a9384b: 'Auto-applied to documents where applicable.', - kf4e45236: 'Add Language', - kf72d41db: 'Add a new coffee.', - kfe9527d8: 'First name', - kfeac3f7e: 'Choose file', - k0c51fa85: 'Activate template now?', - k134e3932: 'Active stamp', - k1f0b2c48: 'z.B. Wien', - k2fac9ff2: 'Template name', - k3477c83a: 'Describe the product', - k35ac864e: 'Search templates…', - ka8f53660: 'Delete Company Stamp', - kaa5e5363: 'ABO Contract PDF Preview', - kcb65c692: 'e.g., Company Seal 2025', - kd9e4bcbd: 'Contract Preview', - kf1512f8f: 'z.B. SI12345678', - k00016501: '🧪 Token Refresh Test', - k002455d8: 'Total Gross / Brutto', - k00394342: 'Welcome back! Log in to continue.', - k01ad6d49: 'Overview of taxes, revenue, and invoices.', - k022df6ac: 'Admin Verified', - k039e629b: 'Overview meta', - k03cd9b72: 'Commission:', - k04b5cbca: 'Loose Files', - k051e8ac8: 'Confirm password', - k055bba0c: 'Are you sure you want to delete', - k05626798: 'Click to upload logo', - k0778fa87: 'Make sure JWT_EXPIRES_IN=2m in backend .env for fast testing', - k07fe11b2: 'Company / Holder name', - k088d8f6c: 'Delete news?', - k08c92a12: 'Welcome to Profit Planet Community 🌍', - k0925e287: 'e.g., VIP Members', - k098ec0b9: 'Manage the “Platforms” cards shown on the user dashboard.', - k09def344: 'Edit Affiliate', - k09f4290f: 'Reset password', - k0ac84efe: '← Back', - k0c838ec3: 'Min €', - k0c87d75d: 'Max €', - k0c95a1b4: 'Back:', - k0cc2a3ba: 'Versuche andere Suchbegriffe oder Filter', - k0cdde8f8: 'Name:', - k0d6626e3: '👤 User Info', - k0d8cb427: 'Type:', - k0da2c941: 'Users Pending Verification', - k0dba4c6b: 'Role:', - k0dca1445: 'Sort:', - k0dcb69ea: 'No matrices found.', - k0dd01c1c: 'Show:', - k0efd830c: 'Verification Readiness', - k0f0395ca: 'Multi-statement SQL and dump files are supported. Use with caution.', - k0f1fc266: 'All Statuses', - k0fbaa1a9: 'Jetzt registrieren', - k0fe28e0b: 'Affiliate Management', - k10ccb626: 'All Users', - k10e2568f: 'All Types', - k110bae43: 'All Roles', - k111c49d8: 'Users count respects each matrix’s max depth policy.', - k11974e0f: 'Advanced: choose parent manually', - k12a7170a: 'No ghost directories found. Run Refresh to scan again.', - k1387f81e: 'Export all filtered users to CSV', - k1405afab: 'Login and watch the countdown timer', - k14a4b43e: 'Refreshing…', - k1521a376: 'Export all users as CSV', - k15843a06: 'Active Pools', - k15da24d8: 'Join Group', - k16b60f69: 'View All', - k17ba59ff: 'Community Hands - Profit Planet', - k17f65c37: 'Example: /shop or https://example.com', - k1882bd75: 'Max Mustermann', - k199db5f1: 'your.email@example.com', - k19f2c5dc: 'No affiliates found', - k1a1ca621: 'e.g. DE89 3704 0044 0532 0130 00', - k1af107a4: 'Logo preview', - k1af97a07: 'User Management', - k1b9c46e5: 'Affiliate Partners', - k1d178b73: 'Basic Information', - k1db0c7cd: 'No loose files found. Run Refresh to scan again.', - k1ddc749e: 'Expiry Date', - k1df74994: 'All subscriptions', - k1e5d5139: 'No users match your filters.', - k1e62338a: 'Commission Rate', - k1eedcda3: 'User Status Hook', - k1f269263: 'DE89 3704 0044 0532 0130 00', - k209ba561: 'Create New Pool', - k20ab2fc7: 'We\'ll send a verification code to your email address.', - k21440f8a: 'Pool Management', - k21db276a: 'Auf Lager', - k228929e2: 'Profile Information', - k23c9f0ff: 'No results yet. Import a SQL dump to see output.', - k258c3515: '892 members', - k26ecadfd: 'My Groups', - k26fbc186: 'Access Denied', - k2786bc5f: 'Signing in...', - k27e93fd7: 'Stay informed with our latest announcements and insights', - k27f56959: 'State change will affect add/remove operations.', - k290e3aab: 'tt.mm jjjj', - k2a2fe15a: 'Phone Number', - k2a37c394: 'Brief description of the affiliate partner...', - k2af2916f: 'Your account is fully submitted. Our team will verify your account shortly.', - k2cd79a3d: 'Browse all favorites', - k2e8f3110: 'All Status', - k2f176a63: 'No news articles available yet.', - k2f4ebc32: 'Rows per page:', - k2f78fabe: 'Go to User Verification', - k31cadca6: 'Partner Name *', - k31d46514: 'Top node:', - k33918465: 'Company Name', - k354a026b: 'Subscription ID', - k35f67931: 'Changes apply from your next billing cycle.', - k3777e830: 'Our team', - k37d7b9c4: 'Checking pool inflow...', - k383672e3: 'owner@example.com', - k39437388: 'Core Pool — 1¢ per capsule per member', - k39e2c5db: 'Add Platform', - k3ac8ca10: 'Only SQL dump files are supported.', - k3b03502e: 'Error loading account status', - k3b7dd87a: 'Try again', - k3b8e0964: 'Subscription details', - k3c32c87f: 'Connect with like-minded individuals, share sustainable practices, and make a positive impact together.', - k3c3e6850: 'Email Verification', - k3d01de91: 'PROFIT PLANET', - k3d5fe74a: 'Expires At:', - k3def5ebf: 'Category *', - k3ee27b4f: 'Top-node Email', - k3f833ce6: 'e.g., Platinum Matrix', - k40f4552a: 'Level 2+', - k410ff9a9: 'Total Affiliates', - k416bfe70: 'No further status changes are available for this subscription.', - k4191cdba: 'Edit VAT', - k41f7c81d: 'Delete Account', - k4307f6c7: 'Date of Birth:', - k431328cf: 'No affiliate partners available at the moment.', - k471ba099: 'News Manager', - k47b952de: 'Has Token:', - k47bbd37e: 'Sign in to Profit Planet', - k483aa95a: '• Share authentic experiences', - k48852b8d: 'Customer Email', - k49568342: 'Manage your affiliate partners and tracking links', - k4968eb2a: 'Abonement:', - k49f254bd: 'Current URL:', - k4a055849: 'ID Front', - k4a9e1ebe: 'Loading user details...', - k4b6c7681: 'Open subscriptions', - k4c5e8e87: 'Export CSV', - k4c5ecd73: 'Export PDF', - k4cb62cff: 'Keine Produkte gefunden', - k4db68c96: 'SQL Import', - k4e0c889b: 'Not Ready', - k4e168c01: 'Coffee Abonnements', - k4e532c48: 'Verification Status', - k4e61bc77: 'Root not yet loaded.', - k4ed7f4d1: 'Time Left:', - k502a0057: 'Last 7 days', - k5122ab54: 'Request again', - k51ee3aae: 'email@example.com', - k52af8b8d: 'Quick Actions', - k533db977: 'Your new password', - k54c06343: 'Refresh Token', - k54f49724: 'No users match your search.', - k55aba973: 'Produkte gefunden', - k5614c806: 'Review and verify all users who need admin approval. Users must complete all steps before verification.', - k56435c9b: 'Verfügbarkeit', - k5738c039: 'Matrix created successfully.', - k577a012c: 'User Type', - k578dcc0b: 'PNG, JPG, WebP, SVG up to 5MB', - k58344b74: 'No direct children.', - k5834cbed: 'Loading affiliate partners...', - k58424b1d: 'Eco Warriors', - k5857ef79: 'Existing Pools', - k59422f07: 'Linked Subscription', - k5aae8706: 'New password', - k5c598bc0: 'Trending Groups', - k5d4d494e: 'Loading members...', - k5d85b354: 'Driver\'s License', - k5e580e3f: 'Filter zurücksetzen', - k5ef19112: 'Join our team', - k5f74c123: 'Last 30 days', - k5fb70267: 'Shop wird geladen...', - k5fbf1824: 'Masked names for deeper descendants.', - k61c2a732: 'Angemeldet bleiben', - k61f6cd4e: 'Token Preview:', - k6285753a: 'Back to Pool Management', - k62bc3c59: 'e.g. Berlin', - k62d12fab: 'Error loading data', - k63115bb4: 'ID Documents', - k633438a0: 'Discover our trusted partners and earn commissions through affiliate links.', - k63458f03: 'Produkte durchsuchen...', - k65b67dc3: 'Back to matrices', - k65e33378: 'Total users fetched', - k661c032b: 'You need admin privileges to access this page.', - k664072a1: 'Dev Management', - k67391c88: 'Manage system pools and members.', - k678d2b40: 'Super reduced', - k67cace8b: 'Profile Settings', - k67dd8a82: 'Contact name', - k6828cdd9: 'Affiliate URL *', - k6838438d: 'Ghost Directories', - k6a4108c8: 'Last Name', - k6a486e3e: 'Create Group', - k6aa2d843: 'Read full guidelines', - k6af9037b: 'Open navigation', - k6b0f4f70: 'ID documents or a signed contract are missing for this user. The user’s verification status should be checked.', - k6b76bd0e: 'Willkommen bei Profit Planet', - k6c6e5c0f: 'Use with caution', - k6ca85cda: 'Trending right now', - k6d85810b: 'Your password', - k6de13000: 'Zero Waste Living', - k6e4a6069: 'Import SQL dump files to run database migrations.', - k70972912: 'Edit Profile', - k70bcafbd: 'Recent Discussions', - k71d565c9: 'Address:', - k72428656: 'Highest full level:', - k73831c06: 'Personal Matrix', - k73cf4fb6: 'Edit News', - k73d110fa: 'Edit Mode', - k73d4a156: 'Check Network tab for /api/refresh requests', - k744fda01: 'My Subscriptions', - k748bf541: 'No users match current filters.', - k75078d0b: 'Add News', - k750c1eb5: 'Add User', - k7572cceb: 'Edit VAT rates', - k75cb45a7: 'This value is stored as net price.', - k75d83433: '• Help others learn and grow', - k77049179: '• Reason:', - k77444d5b: 'Exoscale directories that do not have a matching user in the database.', - k776b751c: 'Policy Max Depth', - k777299de: 'Finance Management', - k77767b9e: 'Close notification', - k77a56aae: 'News & Updates', - k77d5ecd9: 'Copy referral link', - k7938d4fd: 'Result Sets', - k79e1c459: 'Manage all users, view statistics, and handle verification.', - k7ab45054: 'All Readiness', - k7bed84a7: 'Member Since', - k7c19388f: 'e.g., 10%', - k7c740cd5: 'Ready to search. Click the Search button to fetch candidates.', - k7db4e5a9: 'Visit Affiliate Link', - k7f57b169: 'Test API Call', - k7f9568ec: 'Highest full level', - k7fa2c4af: 'Loading users...', - k811fbc99: 'API Base URL:', - k815ca9ba: 'A matrix configuration already exists for this selection.', - k8193b7a2: 'Loading loose files...', - k81a1b900: 'Loading settings…', - k81b056f2: 'See our job postings', - k81c0b74b: 'Status:', - k81c7c2f2: 'Musterstraße 1', - k8323a7d9: 'Loading:', - k832a032b: 'Search affiliates...', - k8358f1d1: 'Loading folder issues...', - k84d5cfcb: 'View overview', - k85446b89: 'Next billing', - k85682289: 'e.g. FN123456a', - k85c66f50: 'Search & Filter Pending Users', - k867f8265: 'Due Date', - k86aa4f9c: 'Current Month', - k87e4b9a2: 'Core Pool', - k883ea8c5: 'Loading ghost directories...', - k88d8bb9d: 'Passwort vergessen?', - k890ff52f: 'e.g., Coffee Equipment Co.', - k8a35cc53: 'SQL dumps run immediately and can modify production data.', - k8a59b156: 'Import SQL', - k8b71f0c7: 'Email, name, company...', - k8b89f863: 'External partner website.', - k8bb1c673: 'Email:', - k8be14d47: 'Error:', - k8c3085f4: 'Users ↓', - k8c3085f6: 'Users ↑', - k8d84b4c5: 'Add New Affiliate', - k8dda5201: 'you@example.com', - k8eaa7b3b: 'e.g. +43 1 234567', - k8eab7c16: 'National ID', - k8eb2524c: 'Enter 6-digit code', - k8f46c81e: 'e.g., 5', - k8f528877: 'Crop & Adjust Image', - k915115a9: 'Last 90 days', - k91912619: 'Close navigation', - k91e69df1: 'ProfitPlanet GmbH', - k91eb415a: 'ProfitPlanet Logo', - k91f24187: 'Complete Profile', - k9213db6e: '📋 Testing Instructions', - k93165aea: '12345 Berlin', - k93b6dc1b: 'Uploaded Documents', - k93f03bca: 'Signed Contract Document', - k941fd092: 'Last Folder Structure Action', - k955b1cbe: 'No results', - k959fb1a6: 'Remove member from pool?', - k961ba411: 'Community Guidelines', - k9683262f: 'Fill %', - k96dbbe05: 'Street & House Number', - k972cee5e: 'Front:', - k9772afa4: 'No included items were returned for this subscription.', - k97abed7d: 'Tax Certificate', - k981b1f1a: 'SQL Dump Import', - k98519a5e: 'I have read, understood, and agree to the terms and conditions of this service agreement.', - k9860434f: 'Please review and upload your signed service agreement.', - k9b3266b5: 'Pending backend wiring to MatrixController.listVacancies. This section will surface empty slots and allow reassignment.', - k9bc83f50: 'Change coffees for next month', - k9c3db145: 'Start Discussion', - k9d0c063d: 'Password saved. Redirecting to login...', - k9e609523: 'No missing folders found. Run Refresh to scan again.', - k9f29dbfb: 'Entdecke nachhaltige Produkte und verdiene dabei. Deine Plattform für bewussten Konsum und finanzielle Vorteile.', - k9f56d4ac: 'e.g. +43 676 1234567', - ka00fc5db: 'Manage your account information and preferences', - ka15f5ec5: 'Auth Store State', - ka1d0b6ff: 'No deeper descendants.', - ka29ac729: 'Saved successfully', - ka3c41ff8: 'View details →', - ka3cbb536: 'Continue →', - ka4ecb6cd: 'Search…', - ka5bf342b: 'Select…', - ka5c2113f: 'Company Name:', - ka5d50257: 'Loading VAT rates…', - ka6be28d2: 'Add user to pool', - ka7073aee: 'Profit Planet Store', - ka72e833f: 'Policy filter:', - ka8ea17b8: 'Next ›', - ka991f523: 'Loading affiliates...', - ka9d6e905: 'Total users under me', - kaa656770: 'You are not part of any matrix yet.', - kaa8231ec: 'This Year', - kab4f5159: 'Each node can hold up to 5 direct children. Depth unbounded.', - kab99811e: 'Disabled message', - kace2fe51: 'Verification Code', - kadc6abcf: 'Auth Debug Page', - kadd80fbc: 'Clear selection', - kaf787fe5: '1,284 members', - kb0031873: 'Browse all trending', - kb01addda: 'Token should automatically renew without user action', - kb1341138: 'Ensures both contract and gdpr folders exist for each user.', - kb24782ec: 'Last Login', - kb2dfe482: 'Read More', - kb324fb25: 'Total Users', - kb337d94e: 'No entries found.', - kb343460d: 'Rogue users', - kb35549bb: 'Search name or email…', - kb383a3e8: 'Included in your subscription', - kb45c4d5f: 'Tax ID:', - kb4675362: 'Import Results', - kb4aba3dc: 'No unverified users match current filters.', - kb573897d: 'Short description of the pool', - kb5e0b861: 'Inactive Pools', - kb6b367b7: 'When time left ≤ 3 minutes, auto-refresh should trigger', - kb6eacc9d: 'Select a .sql dump file using Import SQL.', - kb74d7c51: '🔧 Manual Controls', - kb7849a5a: 'Create Matrix', - kb846955a: 'Select Document Type', - kb87eb38b: 'Enter at least 3 characters and click Search.', - kb8cd2810: 'Account Status', - kb8d6f3f7: 'Shop Collection', - kbbefb159: 'Error loading users', - kbc368b5d: 'Date of Birth', - kbc6a6543: 'ID Back', - kbce9fbea: 'No platforms configured.', - kbd8b3364: 'Sign Contract', - kbd979e13: 'We are a community', - kbdb02e32: 'Keine Rechnungen gefunden.', - kbe9355f8: 'Business License', - kbf4b7789: 'You are already logged in. Redirecting...', - kbf7bde57: 'Select any subscription to view details and included items.', - kbfa5b4c5: 'Tax ID', - kbfd13a03: 'Account Setup', - kbff01823: 'Shows files directly under the user folder that are not in contract or gdpr.', - kc0d718d7: 'Registration Number', - kc0e3b03d: 'Total:', - kc3d181e2: 'Forgot password?', - kc4315932: 'Dashboard Management', - kc4d7816e: 'Levels filled', - kc7bb0c06: 'Filter by country or code', - kc7c429a6: 'Add users to matrix', - kc813a103: 'Loading available coffees…', - kc8652e34: 'You don’t have any subscriptions yet.', - kc9d9d15d: 'Postal Code', - kca04f5e3: 'Phone:', - kcada239b: 'View your active subscriptions, included items and subscription details on a dedicated page.', - kcb491706: 'Folder Structure', - kcbc17bbd: 'No users in this pool yet.', - kcc15636b: 'Coffee content can only be changed while a subscription is issued, ongoing, or paused.', - kcc1c5596: 'Profit Planet Mascot', - kccbc54c1: 'Delete Affiliate', - kccc13f16: '← Go back', - kccde6d86: 'User Verification Center', - kccf7593a: '• Be respectful and kind', - kcd7a1625: 'deine@email.com', - kcd9890e5: 'PNG, JPG, WebP up to 5MB', - kcdfef775: 'Loading subscriptions…', - kce0ab46c: 'Dein Passwort', - kcf4ba87d: 'Crop Affiliate Logo', - kcf61fc9e: 'Last Loose Files Action', - kd00443f2: 'Go to Dashboard', - kd04a7c59: 'Matrix Name', - kd058bb7b: 'Missing:', - kd09be3cd: 'Matrix Management', - kd1c17b3f: 'Alle Marken', - kd1f35ccf: 'Search & Filter Users', - kd2e35b08: 'Rows per page', - kd2e5e813: '• Already booked:', - kd304af2e: 'Global search...', - kd40c4f86: 'Activate this pool', - kd49dc1e1: 'Pool Type', - kd4a0fd1e: 'Pool Name', - kd4af6368: 'Issue Date', - kd4d50566: 'ID documents or a signed contract are missing from object storage. The user’s verification status should be checked.', - kd4eb7ee0: 'Close menu', - kd51f320c: 'Exoscale Folder Structure', - kd56a13f2: 'Recipient Email', - kd5cca6e9: '? This action cannot be undone.', - kd6024811: 'PDF File', - kd642e230: 'Search by name or email. Minimum 3 characters. Existing matrix members are hidden.', - kd68da70d: 'Nachhaltige Produkte für deinen Erfolg', - kd89474fa: 'Back to News', - kda96f5b3: 'Matrix Depth', - kdb27a82d: '‹ Previous', - kdbba338d: 'Registration Number:', - kdc22ad8a: 'Manage matrices, see stats, and create new ones.', - kdc47630b: 'Matrix fill:', - kdca959c3: 'Discover a curated selection of high-quality products that cater to your every need.', - kde1c3c69: 'Logo Image', - kde2b4fa0: 'Result Summary', - ke0a3528a: 'Passwords do not match.', - ke17859b2: 'Business Registration', - ke19afb3d: 'Archive this pool', - ke1abc7d9: 'Add Affiliate', - ke24abf9c: 'Edit coffee content', - ke3889dc2: 'Loading news...', - ke4c4a858: 'Min. 3 characters', - ke697b8cb: 'Set Active', - ke8b9f33c: 'Total in Pool', - ke9e71971: 'Oder weiter mit', - kebf33594: 'Filter by category:', - kec5a5357: 'Upload Invoice', - keccee79f: 'Email address', - ked60db76: 'Back to login', - kee28b8c6: '🔑 Token Status', - kef1656df: 'Apply Crop', - kefd5231d: 'Depth 5', - kf0646f35: 'Our values', - kf0d33884: 'Check browser console for detailed logs', - kf0eef57e: 'Total members:', - kf2147f07: 'Not provided', - kf2180ff6: 'Manage VAT rates', - kf27e4502: 'Ready to Verify', - kf2a1257e: 'Back to profile', - kf2b5c1a6: 'Customer Name', - kf2d8db2b: 'Updating status...', - kf340aa10: 'Loose files:', - kf3557acd: '5‑ary Tree', - kf3b81ba3: 'Used in the URL. Auto-generated from title unless edited.', - kf4868273: 'Click to upload', - kf4f44e2f: 'e.g. ATU12345678', - kf530c357: 'Anmeldung läuft...', - kf663ef67: 'Shop with an infinite variety of products', - kf69154f8: '• Stay on topic', - kf70b9896: 'e.g. 12345', - kf7189e80: '🔄 Manual Refresh Token', - kf78c9087: 'Immediate children', - kf7a91674: 'Policy ↑', - kf7a91676: 'Policy ↓', - kf823daf7: 'Fallback to root if referral parent not in matrix', - kf8c220d3: 'kunde@example.com', - kf971ea7f: 'Created:', - kfaa8fc4a: '• Will book:', - kfb1676b0: 'Phone number *', - kfb37e056: 'Last Login:', - kfb92efe9: 'Description *', - kfce271a2: 'Node Env:', - kfdcad59b: 'Send Email Report', - kfe8083f8: 'First Name', - k17581b31: 'Next page', - k2108b5a0: 'No invoices found for this subscription.', - k34a0a2e4: 'Select the files where you want to run i18n auto-fix.', - k41f3daea: 'Billed monthly', - k43218db0: 'Fix Targets', - k49e51b5f: 'Current plan', - k4bfb4f28: 'Feature comparison', - k4c6eb72c: 'Select all', - k4f209a66: 'You currently don’t have an active subscription.', - k5b7042c7: 'Previous page', - k60b1e339: 'No media or documents found.', - k6569783c: 'Use this to include server-style files. Files with server-only Next.js APIs are skipped for safety.', - k68c88f41: 'Force convert selected files to client components before auto-fix', - k74914369: 'Delete Item', - k772cc77b: 'Complete your profile to unlock all features', - k7fa55432: 'My Subscription', - k86b03343: 'Billed annually', - k8953de89: 'Finance & Invoices', - k947d8777: 'Invoice #', - ka5603827: 'Loading invoices…', - ka86bdc9b: 'Payment frequency', - kb3243742: 'No file', - kc48b877b: 'No subscription selected. Invoices will appear once you have an active subscription.', - kd08b698a: 'Profile Completion', - ke3480838: 'No fixable hardcoded UI text detected in eligible components.', - ked7d533b: 'Media & Documents', - kf5ac16fb: 'Pricing that grows with you', - kf9f94d5e: 'Buy this plan', - kfd632d02: 'Export all invoices', - k5d4f6b2f: 'Bank Information', - k9dafde30: 'Contact Person', - kada9d61c: 'Account Holder', - kde6d477f: 'Email Address', - kfc6b6a29: 'Editing disabled', - k03538639: 'e.g. fr, es, zh-TW', - k5fcc9b0e: 'Delete language', - k9bd0812b: 'Shows why a file was changed, skipped, or left untouched after a fix attempt.', - ka019b3c0: 'e.g. Français', - kbe30c353: 'Coverage by namespace', - kbf49d59b: 'Search keys or English text…', - kc8034db6: 'Auto-fix debug logs', - k0cdc3ee9: 'Assign namespace...', - k1db86f96: 'Create tab', - k505ebdae: 'Unassigned namespaces', - k5f978731: 'Category tabs', - k66edf1eb: 'Drag into a tab card', - k741a01f7: 'All namespaces are categorized.', - ka6791a02: 'Remove from tab', - kb7a30760: 'Filter namespaces quickly or open manager to create and assign tabs.', - kc4671abe: 'Create tabs and assign namespaces by drag-and-drop or dropdown.', - kd6e42900: 'Manage tabs', - ke52ed6e9: 'New tab name', - kef9de7f0: 'Manage category tabs', - kf3c3223a: 'Drop a namespace here.', - k0700b1f2: 'No global keys yet. Mark keys as global in the translation wizard, or add one from the dropdown above.', - k47bce570: 'Select key to add to global', - k5e5e8744: 'Translation wizard available', - k6aba2cb0: 'Back to panels', - k6cfeedd3: 'Global terms', - k725dd1d6: 'Start wizard', - kad7d8c49: 'Use this list for cross-context terms like IBAN.', - kc02b17c3: 'Remove from global terms', - kc518ff5c: 'English reference', - kcd190bdd: 'Translation wizard', - kfd1e0089: 'Auto-scroll on panel open', - }, - - // ─── Notifications / Toasts ──────────────────────────── - toasts: { - loginSuccess: 'Login successful', - loginSuccessMessage: 'You are now logged in.', - loginFailed: 'Login failed', - loginFailedMessage: 'Please check your credentials and try again.', - registerSuccess: 'Registration successful', - registerSuccessMessage: 'You can now log in with your new account.', - registerFailed: 'Registration failed', - registerFailedMessage: 'Could not create your account. Please try again.', - invitationVerified: 'Invitation verified', - invitationVerifiedMessage: 'Your invitation link is valid. You can register now.', - invalidInvitation: 'Invalid invitation', - invalidInvitationMessage: 'This invitation link is invalid or no longer active.', - networkError: 'Network error', - networkErrorMessage: 'Could not reach the server. Is the backend running?', - saveSuccess: 'Saved successfully.', - saveFailed: 'Could not save. Please try again.', - copySuccess: 'Copied to clipboard!', - copyFailed: 'Could not copy to clipboard.', - deleteSuccess: 'Deleted successfully.', - deleteFailed: 'Could not delete. Please try again.', - genericError: 'Something went wrong. Please try again.', + "autofix": { + "k02665163": "Next steps", + "k027bd82e": "Edit the shipping prices for 60 and 120 pieces.", + "k047a175d": "No contracts found.", + "k06d4487f": "Cancel editing", + "k0853cfa6": "Thanks for your subscription!", + "k096f4013": "Manage your company stamps. One active at a time.", + "k0af6c6be": "Create & Activate", + "k0affa826": "Shown to users in the shop and checkout.", + "k0b03e660": "2. Choose coffees & quantities", + "k0b2445d5": "Generating PDF preview…", + "k0bbc633d": "Loading contract preview…", + "k0d9c63c5": "Scanning workspace files and component subdirectories...", + "k11438b4c": "Total incl. tax", + "k12a86c71": "Shipping…", + "k14eb468b": "Potential untranslated UI text detected", + "k155166db": "Contract variables are auto-populated from your form data.", + "k15bea9bb": "Address details used on invoices.", + "k1824f78d": "Please select coffees and fill all required buyer fields, signing city, and signature.", + "k18872b63": "No image", + "k1bf4ffa4": "Untranslated literals", + "k20127e1c": "No selection found.", + "k21361e0d": "Summary & Details", + "k221fa311": "Invoice template variables", + "k22c8f7f1": "Create Template", + "k28f1a9b1": "Full name", + "k2d0798a6": "Loading subscription…", + "k2e43a9c4": "Click or drag and drop a new image here", + "k3466b0e0": "Payment method", + "k346a2c64": "Language Management", + "k39791457": "Manage contract templates, company stamp, and create new templates.", + "k41ab9eb6": "You'll be able to crop and adjust the image after uploading", + "k41afd863": "Editing:", + "k4aeb8688": "2. Your selection", + "k4be6f631": "Save changes", + "k516705dd": "Ort ist erforderlich.", + "k528eede9": "Same as shipping address", + "k56717603": "no image", + "k56a52520": "Skipped files", + "k5a489751": "Save Changes", + "k5ad4d864": "Auto-fixed files", + "k6070f6e3": "Add New Stamp", + "k60874ea3": "Keys auto-created", + "k67cb36a4": "Contract Management", + "k6a2c64e8": "Last name", + "k6a892262": "No keys match your search.", + "k6ee0a1b6": "Click or drag and drop an image here", + "k73d1d7d7": "Edit Crop", + "k74491338": "Reverse Charge aktiv: gueltige UID und auslaendisches Rechnungsland erkannt.", + "k7775eddb": "Your Company Stamps", + "k788633d1": "Profit Planet", + "k7a3a6ea3": "to render invoice line items.", + "k7f48f374": "1. Select subscription size", + "k7fe72eff": "No platforms available.", + "k80ac9651": "PNG, JPG, WebP up to 10MB", + "k825359ab": "Accepted types: PNG, JPEG, WebP, SVG. Max size: 5MB.", + "k832387c5": "Loading…", + "k83deba83": "per 10 pcs", + "k875f4054": "Manage all coffees.", + "k8c75468c": "No subscriptions found.", + "k8cf40180": "Missing keys in en.ts", + "k90a6e795": "Unique keys used", + "k91052e3f": "Translation calls", + "k92639a9a": "Language code", + "k926966d0": "Language name", + "k96839795": "Back to selection", + "k99bffb65": "Fill all fields to proceed.", + "k9b173204": "Files auto-fixed", + "k9c1a5ecc": "Fill fields with logged in data", + "ka3ee9ded": "Subscription Billing", + "ka56b7b2b": "No PDF preview available.", + "ka5f38d19": "Company Stamp", + "ka802064d": "Applying i18n auto-fixes to client components and updating translation files...", + "kaa30f0cd": "Create Coffee", + "kaa8bbc8e": "Company Information", + "kac6cedc7": "Saving…", + "kae63e46a": "Missing translation keys detected in workspace", + "kb06fa395": "Edit Coffee", + "kb0b660e2": "Configure Coffee Subscription", + "kb1c1c0e5": "Logging you out...", + "kb2217bdf": "Translation Coverage Scan", + "kb791958e": "Use these placeholders in your HTML: invoiceNumber, customerName, issuedAt, totalNet, totalTax, totalGross, itemsHtml.", + "kb8f33873": "Translation progress", + "kb9e483c4": "Update details of the coffee.", + "kba6bd6f3": "or click to browse", + "kcc4adbcc": "Navigation shortcuts", + "kce094582": "Invoice address", + "kd1a2772d": "Street & No.", + "kd2a00802": "Image removed - Click to upload a new one", + "kd3092148": "Subscription created.", + "kd379df9b": "Open preview", + "kd63c8219": "You have unsaved changes.", + "kd6f8d7e9": "1. Your details", + "kd8a5ad17": "Back to list", + "kda5f982e": "Delete Language", + "kddd4832f": "Delete coffee?", + "kde5c689e": "Pick a platform to continue.", + "ke33e6fbf": "Send invoice by email", + "ke58b7627": "Drag and drop your stamp here", + "ke74b1adf": "Contract template is not available.", + "ke7b634f2": "3. Preview", + "ke7f0a9e3": "FREE SHIPPING", + "kea7cde7a": "Back to Admin", + "kec078e54": "No coffees selected yet.", + "kefe5f0dd": "Ohne gueltige UID wird die Rechnung mit normaler MwSt erstellt.", + "kf1a9384b": "Auto-applied to documents where applicable.", + "kf4e45236": "Add Language", + "kf72d41db": "Add a new coffee.", + "kfe9527d8": "First name", + "kfeac3f7e": "Choose file", + "k0c51fa85": "Activate template now?", + "k134e3932": "Active stamp", + "k1f0b2c48": "z.B. Wien", + "k2fac9ff2": "Template name", + "k3477c83a": "Describe the product", + "k35ac864e": "Search templates…", + "ka8f53660": "Delete Company Stamp", + "kaa5e5363": "ABO Contract PDF Preview", + "kcb65c692": "e.g., Company Seal 2025", + "kd9e4bcbd": "Contract Preview", + "kf1512f8f": "z.B. SI12345678", + "k00016501": "🧪 Token Refresh Test", + "k002455d8": "Total Gross / Brutto", + "k00394342": "Welcome back! Log in to continue.", + "k01ad6d49": "Overview of taxes, revenue, and invoices.", + "k022df6ac": "Admin Verified", + "k039e629b": "Overview meta", + "k03cd9b72": "Commission:", + "k04b5cbca": "Loose Files", + "k051e8ac8": "Confirm password", + "k055bba0c": "Are you sure you want to delete", + "k05626798": "Click to upload logo", + "k0778fa87": "Make sure JWT_EXPIRES_IN=2m in backend .env for fast testing", + "k07fe11b2": "Company / Holder name", + "k088d8f6c": "Delete news?", + "k08c92a12": "Welcome to Profit Planet Community 🌍", + "k0925e287": "e.g., VIP Members", + "k098ec0b9": "Manage the “Platforms” cards shown on the user dashboard.", + "k09def344": "Edit Affiliate", + "k09f4290f": "Reset password", + "k0ac84efe": "← Back", + "k0c838ec3": "Min €", + "k0c87d75d": "Max €", + "k0c95a1b4": "Back:", + "k0cc2a3ba": "Versuche andere Suchbegriffe oder Filter", + "k0cdde8f8": "Name:", + "k0d6626e3": "👤 User Info", + "k0d8cb427": "Type:", + "k0da2c941": "Users Pending Verification", + "k0dba4c6b": "Role:", + "k0dca1445": "Sort:", + "k0dcb69ea": "No matrices found.", + "k0dd01c1c": "Show:", + "k0efd830c": "Verification Readiness", + "k0f0395ca": "Multi-statement SQL and dump files are supported. Use with caution.", + "k0f1fc266": "All Statuses", + "k0fbaa1a9": "Jetzt registrieren", + "k0fe28e0b": "Affiliate Management", + "k10ccb626": "All Users", + "k10e2568f": "All Types", + "k110bae43": "All Roles", + "k111c49d8": "Users count respects each matrix’s max depth policy.", + "k11974e0f": "Advanced: choose parent manually", + "k12a7170a": "No ghost directories found. Run Refresh to scan again.", + "k1387f81e": "Export all filtered users to CSV", + "k1405afab": "Login and watch the countdown timer", + "k14a4b43e": "Refreshing…", + "k1521a376": "Export all users as CSV", + "k15843a06": "Active Pools", + "k15da24d8": "Join Group", + "k16b60f69": "View All", + "k17ba59ff": "Community Hands - Profit Planet", + "k17f65c37": "Example: /shop or https://example.com", + "k1882bd75": "Max Mustermann", + "k199db5f1": "your.email@example.com", + "k19f2c5dc": "No affiliates found", + "k1a1ca621": "e.g. DE89 3704 0044 0532 0130 00", + "k1af107a4": "Logo preview", + "k1af97a07": "User Management", + "k1b9c46e5": "Affiliate Partners", + "k1d178b73": "Basic Information", + "k1db0c7cd": "No loose files found. Run Refresh to scan again.", + "k1ddc749e": "Expiry Date", + "k1df74994": "All subscriptions", + "k1e5d5139": "No users match your filters.", + "k1e62338a": "Commission Rate", + "k1eedcda3": "User Status Hook", + "k1f269263": "DE89 3704 0044 0532 0130 00", + "k209ba561": "Create New Pool", + "k20ab2fc7": "We'll send a verification code to your email address.", + "k21440f8a": "Pool Management", + "k21db276a": "Auf Lager", + "k228929e2": "Profile Information", + "k23c9f0ff": "No results yet. Import a SQL dump to see output.", + "k258c3515": "892 members", + "k26ecadfd": "My Groups", + "k26fbc186": "Access Denied", + "k2786bc5f": "Signing in...", + "k27e93fd7": "Stay informed with our latest announcements and insights", + "k27f56959": "State change will affect add/remove operations.", + "k290e3aab": "tt.mm jjjj", + "k2a2fe15a": "Phone Number", + "k2a37c394": "Brief description of the affiliate partner...", + "k2af2916f": "Your account is fully submitted. Our team will verify your account shortly.", + "k2cd79a3d": "Browse all favorites", + "k2e8f3110": "All Status", + "k2f176a63": "No news articles available yet.", + "k2f4ebc32": "Rows per page:", + "k2f78fabe": "Go to User Verification", + "k31cadca6": "Partner Name *", + "k31d46514": "Top node:", + "k33918465": "Company Name", + "k354a026b": "Subscription ID", + "k35f67931": "Changes apply from your next billing cycle.", + "k3777e830": "Our team", + "k37d7b9c4": "Checking pool inflow...", + "k383672e3": "owner@example.com", + "k39437388": "Core Pool — 1¢ per capsule per member", + "k39e2c5db": "Add Platform", + "k3ac8ca10": "Only SQL dump files are supported.", + "k3b03502e": "Error loading account status", + "k3b7dd87a": "Try again", + "k3b8e0964": "Subscription details", + "k3c32c87f": "Connect with like-minded individuals, share sustainable practices, and make a positive impact together.", + "k3c3e6850": "Email Verification", + "k3d01de91": "PROFIT PLANET", + "k3d5fe74a": "Expires At:", + "k3def5ebf": "Category *", + "k3ee27b4f": "Top-node Email", + "k3f833ce6": "e.g., Platinum Matrix", + "k40f4552a": "Level 2+", + "k410ff9a9": "Total Affiliates", + "k416bfe70": "No further status changes are available for this subscription.", + "k4191cdba": "Edit VAT", + "k41f7c81d": "Delete Account", + "k4307f6c7": "Date of Birth:", + "k431328cf": "No affiliate partners available at the moment.", + "k471ba099": "News Manager", + "k47b952de": "Has Token:", + "k47bbd37e": "Sign in to Profit Planet", + "k483aa95a": "• Share authentic experiences", + "k48852b8d": "Customer Email", + "k49568342": "Manage your affiliate partners and tracking links", + "k4968eb2a": "Abonement:", + "k49f254bd": "Current URL:", + "k4a055849": "ID Front", + "k4a9e1ebe": "Loading user details...", + "k4b6c7681": "Open subscriptions", + "k4c5e8e87": "Export CSV", + "k4c5ecd73": "Export PDF", + "k4cb62cff": "Keine Produkte gefunden", + "k4db68c96": "SQL Import", + "k4e0c889b": "Not Ready", + "k4e168c01": "Coffee Abonnements", + "k4e532c48": "Verification Status", + "k4e61bc77": "Root not yet loaded.", + "k4ed7f4d1": "Time Left:", + "k502a0057": "Last 7 days", + "k5122ab54": "Request again", + "k51ee3aae": "email@example.com", + "k52af8b8d": "Quick Actions", + "k533db977": "Your new password", + "k54c06343": "Refresh Token", + "k54f49724": "No users match your search.", + "k55aba973": "Produkte gefunden", + "k5614c806": "Review and verify all users who need admin approval. Users must complete all steps before verification.", + "k56435c9b": "Verfügbarkeit", + "k5738c039": "Matrix created successfully.", + "k577a012c": "User Type", + "k578dcc0b": "PNG, JPG, WebP, SVG up to 5MB", + "k58344b74": "No direct children.", + "k5834cbed": "Loading affiliate partners...", + "k58424b1d": "Eco Warriors", + "k5857ef79": "Existing Pools", + "k59422f07": "Linked Subscription", + "k5aae8706": "New password", + "k5c598bc0": "Trending Groups", + "k5d4d494e": "Loading members...", + "k5d85b354": "Driver's License", + "k5e580e3f": "Filter zurücksetzen", + "k5ef19112": "Join our team", + "k5f74c123": "Last 30 days", + "k5fb70267": "Shop wird geladen...", + "k5fbf1824": "Masked names for deeper descendants.", + "k61c2a732": "Angemeldet bleiben", + "k61f6cd4e": "Token Preview:", + "k6285753a": "Back to Pool Management", + "k62bc3c59": "e.g. Berlin", + "k62d12fab": "Error loading data", + "k63115bb4": "ID Documents", + "k633438a0": "Discover our trusted partners and earn commissions through affiliate links.", + "k63458f03": "Produkte durchsuchen...", + "k65b67dc3": "Back to matrices", + "k65e33378": "Total users fetched", + "k661c032b": "You need admin privileges to access this page.", + "k664072a1": "Dev Management", + "k67391c88": "Manage system pools and members.", + "k678d2b40": "Super reduced", + "k67cace8b": "Profile Settings", + "k67dd8a82": "Contact name", + "k6828cdd9": "Affiliate URL *", + "k6838438d": "Ghost Directories", + "k6a4108c8": "Last Name", + "k6a486e3e": "Create Group", + "k6aa2d843": "Read full guidelines", + "k6af9037b": "Open navigation", + "k6b0f4f70": "ID documents or a signed contract are missing for this user. The user’s verification status should be checked.", + "k6b76bd0e": "Willkommen bei Profit Planet", + "k6c6e5c0f": "Use with caution", + "k6ca85cda": "Trending right now", + "k6d85810b": "Your password", + "k6de13000": "Zero Waste Living", + "k6e4a6069": "Import SQL dump files to run database migrations.", + "k70972912": "Edit Profile", + "k70bcafbd": "Recent Discussions", + "k71d565c9": "Address:", + "k72428656": "Highest full level:", + "k73831c06": "Personal Matrix", + "k73cf4fb6": "Edit News", + "k73d110fa": "Edit Mode", + "k73d4a156": "Check Network tab for /api/refresh requests", + "k744fda01": "My Subscriptions", + "k748bf541": "No users match current filters.", + "k75078d0b": "Add News", + "k750c1eb5": "Add User", + "k7572cceb": "Edit VAT rates", + "k75cb45a7": "This value is stored as net price.", + "k75d83433": "• Help others learn and grow", + "k77049179": "• Reason:", + "k77444d5b": "Exoscale directories that do not have a matching user in the database.", + "k776b751c": "Policy Max Depth", + "k777299de": "Finance Management", + "k77767b9e": "Close notification", + "k77a56aae": "News & Updates", + "k77d5ecd9": "Copy referral link", + "k7938d4fd": "Result Sets", + "k79e1c459": "Manage all users, view statistics, and handle verification.", + "k7ab45054": "All Readiness", + "k7bed84a7": "Member Since", + "k7c19388f": "e.g., 10%", + "k7c740cd5": "Ready to search. Click the Search button to fetch candidates.", + "k7db4e5a9": "Visit Affiliate Link", + "k7f57b169": "Test API Call", + "k7f9568ec": "Highest full level", + "k7fa2c4af": "Loading users...", + "k811fbc99": "API Base URL:", + "k815ca9ba": "A matrix configuration already exists for this selection.", + "k8193b7a2": "Loading loose files...", + "k81a1b900": "Loading settings…", + "k81b056f2": "See our job postings", + "k81c0b74b": "Status:", + "k81c7c2f2": "Musterstraße 1", + "k8323a7d9": "Loading:", + "k832a032b": "Search affiliates...", + "k8358f1d1": "Loading folder issues...", + "k84d5cfcb": "View overview", + "k85446b89": "Next billing", + "k85682289": "e.g. FN123456a", + "k85c66f50": "Search & Filter Pending Users", + "k867f8265": "Due Date", + "k86aa4f9c": "Current Month", + "k87e4b9a2": "Core Pool", + "k883ea8c5": "Loading ghost directories...", + "k88d8bb9d": "Passwort vergessen?", + "k890ff52f": "e.g., Coffee Equipment Co.", + "k8a35cc53": "SQL dumps run immediately and can modify production data.", + "k8a59b156": "Import SQL", + "k8b71f0c7": "Email, name, company...", + "k8b89f863": "External partner website.", + "k8bb1c673": "Email:", + "k8be14d47": "Error:", + "k8c3085f4": "Users ↓", + "k8c3085f6": "Users ↑", + "k8d84b4c5": "Add New Affiliate", + "k8dda5201": "you@example.com", + "k8eaa7b3b": "e.g. +43 1 234567", + "k8eab7c16": "National ID", + "k8eb2524c": "Enter 6-digit code", + "k8f46c81e": "e.g., 5", + "k8f528877": "Crop & Adjust Image", + "k915115a9": "Last 90 days", + "k91912619": "Close navigation", + "k91e69df1": "ProfitPlanet GmbH", + "k91eb415a": "ProfitPlanet Logo", + "k91f24187": "Complete Profile", + "k9213db6e": "📋 Testing Instructions", + "k93165aea": "12345 Berlin", + "k93b6dc1b": "Uploaded Documents", + "k93f03bca": "Signed Contract Document", + "k941fd092": "Last Folder Structure Action", + "k955b1cbe": "No results", + "k959fb1a6": "Remove member from pool?", + "k961ba411": "Community Guidelines", + "k9683262f": "Fill %", + "k96dbbe05": "Street & House Number", + "k972cee5e": "Front:", + "k9772afa4": "No included items were returned for this subscription.", + "k97abed7d": "Tax Certificate", + "k981b1f1a": "SQL Dump Import", + "k98519a5e": "I have read, understood, and agree to the terms and conditions of this service agreement.", + "k9860434f": "Please review and upload your signed service agreement.", + "k9b3266b5": "Pending backend wiring to MatrixController.listVacancies. This section will surface empty slots and allow reassignment.", + "k9bc83f50": "Change coffees for next month", + "k9c3db145": "Start Discussion", + "k9d0c063d": "Password saved. Redirecting to login...", + "k9e609523": "No missing folders found. Run Refresh to scan again.", + "k9f29dbfb": "Entdecke nachhaltige Produkte und verdiene dabei. Deine Plattform für bewussten Konsum und finanzielle Vorteile.", + "k9f56d4ac": "e.g. +43 676 1234567", + "ka00fc5db": "Manage your account information and preferences", + "ka15f5ec5": "Auth Store State", + "ka1d0b6ff": "No deeper descendants.", + "ka29ac729": "Saved successfully", + "ka3c41ff8": "View details →", + "ka3cbb536": "Continue →", + "ka4ecb6cd": "Search…", + "ka5bf342b": "Select…", + "ka5c2113f": "Company Name:", + "ka5d50257": "Loading VAT rates…", + "ka6be28d2": "Add user to pool", + "ka7073aee": "Profit Planet Store", + "ka72e833f": "Policy filter:", + "ka8ea17b8": "Next ›", + "ka991f523": "Loading affiliates...", + "ka9d6e905": "Total users under me", + "kaa656770": "You are not part of any matrix yet.", + "kaa8231ec": "This Year", + "kab4f5159": "Each node can hold up to 5 direct children. Depth unbounded.", + "kab99811e": "Disabled message", + "kace2fe51": "Verification Code", + "kadc6abcf": "Auth Debug Page", + "kadd80fbc": "Clear selection", + "kaf787fe5": "1,284 members", + "kb0031873": "Browse all trending", + "kb01addda": "Token should automatically renew without user action", + "kb1341138": "Ensures both contract and gdpr folders exist for each user.", + "kb24782ec": "Last Login", + "kb2dfe482": "Read More", + "kb324fb25": "Total Users", + "kb337d94e": "No entries found.", + "kb343460d": "Rogue users", + "kb35549bb": "Search name or email…", + "kb383a3e8": "Included in your subscription", + "kb45c4d5f": "Tax ID:", + "kb4675362": "Import Results", + "kb4aba3dc": "No unverified users match current filters.", + "kb573897d": "Short description of the pool", + "kb5e0b861": "Inactive Pools", + "kb6b367b7": "When time left ≤ 3 minutes, auto-refresh should trigger", + "kb6eacc9d": "Select a .sql dump file using Import SQL.", + "kb74d7c51": "🔧 Manual Controls", + "kb7849a5a": "Create Matrix", + "kb846955a": "Select Document Type", + "kb87eb38b": "Enter at least 3 characters and click Search.", + "kb8cd2810": "Account Status", + "kb8d6f3f7": "Shop Collection", + "kbbefb159": "Error loading users", + "kbc368b5d": "Date of Birth", + "kbc6a6543": "ID Back", + "kbce9fbea": "No platforms configured.", + "kbd8b3364": "Sign Contract", + "kbd979e13": "We are a community", + "kbdb02e32": "Keine Rechnungen gefunden.", + "kbe9355f8": "Business License", + "kbf4b7789": "You are already logged in. Redirecting...", + "kbf7bde57": "Select any subscription to view details and included items.", + "kbfa5b4c5": "Tax ID", + "kbfd13a03": "Account Setup", + "kbff01823": "Shows files directly under the user folder that are not in contract or gdpr.", + "kc0d718d7": "Registration Number", + "kc0e3b03d": "Total:", + "kc3d181e2": "Forgot password?", + "kc4315932": "Dashboard Management", + "kc4d7816e": "Levels filled", + "kc7bb0c06": "Filter by country or code", + "kc7c429a6": "Add users to matrix", + "kc813a103": "Loading available coffees…", + "kc8652e34": "You don’t have any subscriptions yet.", + "kc9d9d15d": "Postal Code", + "kca04f5e3": "Phone:", + "kcada239b": "View your active subscriptions, included items and subscription details on a dedicated page.", + "kcb491706": "Folder Structure", + "kcbc17bbd": "No users in this pool yet.", + "kcc15636b": "Coffee content can only be changed while a subscription is issued, ongoing, or paused.", + "kcc1c5596": "Profit Planet Mascot", + "kccbc54c1": "Delete Affiliate", + "kccc13f16": "← Go back", + "kccde6d86": "User Verification Center", + "kccf7593a": "• Be respectful and kind", + "kcd7a1625": "deine@email.com", + "kcd9890e5": "PNG, JPG, WebP up to 5MB", + "kcdfef775": "Loading subscriptions…", + "kce0ab46c": "Dein Passwort", + "kcf4ba87d": "Crop Affiliate Logo", + "kcf61fc9e": "Last Loose Files Action", + "kd00443f2": "Go to Dashboard", + "kd04a7c59": "Matrix Name", + "kd058bb7b": "Missing:", + "kd09be3cd": "Matrix Management", + "kd1c17b3f": "Alle Marken", + "kd1f35ccf": "Search & Filter Users", + "kd2e35b08": "Rows per page", + "kd2e5e813": "• Already booked:", + "kd304af2e": "Global search...", + "kd40c4f86": "Activate this pool", + "kd49dc1e1": "Pool Type", + "kd4a0fd1e": "Pool Name", + "kd4af6368": "Issue Date", + "kd4d50566": "ID documents or a signed contract are missing from object storage. The user’s verification status should be checked.", + "kd4eb7ee0": "Close menu", + "kd51f320c": "Exoscale Folder Structure", + "kd56a13f2": "Recipient Email", + "kd5cca6e9": "? This action cannot be undone.", + "kd6024811": "PDF File", + "kd642e230": "Search by name or email. Minimum 3 characters. Existing matrix members are hidden.", + "kd68da70d": "Nachhaltige Produkte für deinen Erfolg", + "kd89474fa": "Back to News", + "kda96f5b3": "Matrix Depth", + "kdb27a82d": "‹ Previous", + "kdbba338d": "Registration Number:", + "kdc22ad8a": "Manage matrices, see stats, and create new ones.", + "kdc47630b": "Matrix fill:", + "kdca959c3": "Discover a curated selection of high-quality products that cater to your every need.", + "kde1c3c69": "Logo Image", + "kde2b4fa0": "Result Summary", + "ke0a3528a": "Passwords do not match.", + "ke17859b2": "Business Registration", + "ke19afb3d": "Archive this pool", + "ke1abc7d9": "Add Affiliate", + "ke24abf9c": "Edit coffee content", + "ke3889dc2": "Loading news...", + "ke4c4a858": "Min. 3 characters", + "ke697b8cb": "Set Active", + "ke8b9f33c": "Total in Pool", + "ke9e71971": "Oder weiter mit", + "kebf33594": "Filter by category:", + "kec5a5357": "Upload Invoice", + "keccee79f": "Email address", + "ked60db76": "Back to login", + "kee28b8c6": "🔑 Token Status", + "kef1656df": "Apply Crop", + "kefd5231d": "Depth 5", + "kf0646f35": "Our values", + "kf0d33884": "Check browser console for detailed logs", + "kf0eef57e": "Total members:", + "kf2147f07": "Not provided", + "kf2180ff6": "Manage VAT rates", + "kf27e4502": "Ready to Verify", + "kf2a1257e": "Back to profile", + "kf2b5c1a6": "Customer Name", + "kf2d8db2b": "Updating status...", + "kf340aa10": "Loose files:", + "kf3557acd": "5‑ary Tree", + "kf3b81ba3": "Used in the URL. Auto-generated from title unless edited.", + "kf4868273": "Click to upload", + "kf4f44e2f": "e.g. ATU12345678", + "kf530c357": "Anmeldung läuft...", + "kf663ef67": "Shop with an infinite variety of products", + "kf69154f8": "• Stay on topic", + "kf70b9896": "e.g. 12345", + "kf7189e80": "🔄 Manual Refresh Token", + "kf78c9087": "Immediate children", + "kf7a91674": "Policy ↑", + "kf7a91676": "Policy ↓", + "kf823daf7": "Fallback to root if referral parent not in matrix", + "kf8c220d3": "kunde@example.com", + "kf971ea7f": "Created:", + "kfaa8fc4a": "• Will book:", + "kfb1676b0": "Phone number *", + "kfb37e056": "Last Login:", + "kfb92efe9": "Description *", + "kfce271a2": "Node Env:", + "kfdcad59b": "Send Email Report", + "kfe8083f8": "First Name", + "k17581b31": "Next page", + "k2108b5a0": "No invoices found for this subscription.", + "k34a0a2e4": "Select the files where you want to run i18n auto-fix.", + "k41f3daea": "Billed monthly", + "k43218db0": "Fix Targets", + "k49e51b5f": "Current plan", + "k4bfb4f28": "Feature comparison", + "k4c6eb72c": "Select all", + "k4f209a66": "You currently don’t have an active subscription.", + "k5b7042c7": "Previous page", + "k60b1e339": "No media or documents found.", + "k6569783c": "Use this to include server-style files. Files with server-only Next.js APIs are skipped for safety.", + "k68c88f41": "Force convert selected files to client components before auto-fix", + "k74914369": "Delete Item", + "k772cc77b": "Complete your profile to unlock all features", + "k7fa55432": "My Subscription", + "k86b03343": "Billed annually", + "k8953de89": "Finance & Invoices", + "k947d8777": "Invoice #", + "ka5603827": "Loading invoices…", + "ka86bdc9b": "Payment frequency", + "kb3243742": "No file", + "kc48b877b": "No subscription selected. Invoices will appear once you have an active subscription.", + "kd08b698a": "Profile Completion", + "ke3480838": "No fixable hardcoded UI text detected in eligible components.", + "ked7d533b": "Media & Documents", + "kf5ac16fb": "Pricing that grows with you", + "kf9f94d5e": "Buy this plan", + "kfd632d02": "Export all invoices", + "k5d4f6b2f": "Bank Information", + "k9dafde30": "Contact Person", + "kada9d61c": "Account Holder", + "kde6d477f": "Email Address", + "kfc6b6a29": "Editing disabled", + "k03538639": "e.g. fr, es, zh-TW", + "k5fcc9b0e": "Delete language", + "k9bd0812b": "Shows why a file was changed, skipped, or left untouched after a fix attempt.", + "ka019b3c0": "e.g. Français", + "kbe30c353": "Coverage by namespace", + "kbf49d59b": "Search keys or English text…", + "kc8034db6": "Auto-fix debug logs", + "k0cdc3ee9": "Assign namespace...", + "k1db86f96": "Create tab", + "k505ebdae": "Unassigned namespaces", + "k5f978731": "Category tabs", + "k66edf1eb": "Drag into a tab card", + "k741a01f7": "All namespaces are categorized.", + "ka6791a02": "Remove from tab", + "kb7a30760": "Filter namespaces quickly or open manager to create and assign tabs.", + "kc4671abe": "Create tabs and assign namespaces by drag-and-drop or dropdown.", + "kd6e42900": "Manage tabs", + "ke52ed6e9": "New tab name", + "kef9de7f0": "Manage category tabs", + "kf3c3223a": "Drop a namespace here.", + "k0700b1f2": "No global keys yet. Mark keys as global in the translation wizard, or add one from the dropdown above.", + "k47bce570": "Select key to add to global", + "k5e5e8744": "Translation wizard available", + "k6aba2cb0": "Back to panels", + "k6cfeedd3": "Global terms", + "k725dd1d6": "Start wizard", + "kad7d8c49": "Use this list for cross-context terms like IBAN.", + "kc02b17c3": "Remove from global terms", + "kc518ff5c": "English reference", + "kcd190bdd": "Translation wizard", + "kfd1e0089": "Auto-scroll on panel open", + "k429d94bf": "Organized by template family", + "k61d66984": "Grouped library", + "k66b39536": "Template overview", + "k74823841": "Stronger language switching", + "k766a5504": "Contracts are grouped by type again. Language now sits in the main header area of each track as a direct selector, so you can switch faster without digging into nested cards.", + "k7e4ef084": "Jump between template families, spot the currently active versions immediately and keep language-specific revisions in one place.", + "k8351e02f": "Admin workspace", + "kccff045c": "Faster edit flow", + "kf962066f": "Contract type", + "kb1cf599b": "Counts as global key" }, + "toasts": { + "loginSuccess": "Login successful", + "loginSuccessMessage": "You are now logged in.", + "loginFailed": "Login failed", + "loginFailedMessage": "Please check your credentials and try again.", + "registerSuccess": "Registration successful", + "registerSuccessMessage": "You can now log in with your new account.", + "registerFailed": "Registration failed", + "registerFailedMessage": "Could not create your account. Please try again.", + "invitationVerified": "Invitation verified", + "invitationVerifiedMessage": "Your invitation link is valid. You can register now.", + "invalidInvitation": "Invalid invitation", + "invalidInvitationMessage": "This invitation link is invalid or no longer active.", + "networkError": "Network error", + "networkErrorMessage": "Could not reach the server. Is the backend running?", + "saveSuccess": "Saved successfully.", + "saveFailed": "Could not save. Please try again.", + "copySuccess": "Copied to clipboard!", + "copyFailed": "Could not copy to clipboard.", + "deleteSuccess": "Deleted successfully.", + "deleteFailed": "Could not delete. Please try again.", + "genericError": "Something went wrong. Please try again." + } };