Files
TREK/shared/src/i18n/gr/login.ts
T
Maurice a876fb2634 feat: Passkey (WebAuthn) login (#1111)
* feat(auth): passkey (WebAuthn) login — server endpoints, schema + admin toggle

Add @simplewebauthn/server registration and primary (discoverable) login ceremonies under /api/auth/passkey, a webauthn_credentials + single-use webauthn_challenges schema (migration), the instance-wide passkey_login toggle (default off) enforced before auth by a guard, and require_mfa satisfaction via a verified passkey. RP ID/origin come only from server config (webauthn_rp_id/origins -> APP_URL), never request headers.

* feat(auth): passkey enrolment, login button + admin settings UI

PasskeysSection in account settings (add/rename/remove with a current-password step-up), a 'Sign in with a passkey' button on the login page, the admin enable + RP-ID/origins controls, and a per-user admin reset action.

* i18n(auth): passkey strings across all locales

Add login/settings/admin passkey keys to en and all 19 translated locales.
2026-06-05 18:54:13 +02:00

107 lines
7.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { TranslationStrings } from '../types';
const login: TranslationStrings = {
'login.error': 'Η σύνδεση απέτυχε. Παρακαλώ ελέγξτε τα στοιχεία σας.',
'login.tagline': 'Τα Ταξίδια σας.\nΤο Σχέδιό σας.',
'login.description':
'Σχεδιάστε ταξίδια συνεργατικά με διαδραστικούς χάρτες, προϋπολογισμούς και συγχρονισμό σε πραγματικό χρόνο.',
'login.features.maps': 'Διαδραστικοί Χάρτες',
'login.features.mapsDesc': 'Google Places, διαδρομές & ομαδοποίηση',
'login.features.realtime': 'Συγχρονισμός Πραγματικού Χρόνου',
'login.features.realtimeDesc': 'Σχεδιάστε μαζί μέσω WebSocket',
'login.features.budget': 'Παρακολούθηση Προϋπολογισμού',
'login.features.budgetDesc': 'Κατηγορίες, γραφήματα & κόστος ανά άτομο',
'login.features.collab': 'Συνεργασία',
'login.features.collabDesc': 'Πολλαπλοί χρήστες με κοινόχρηστα ταξίδια',
'login.features.packing': 'Λίστες Πακεταρίσματος',
'login.features.packingDesc': 'Κατηγορίες, πρόοδος & προτάσεις',
'login.features.bookings': 'Κρατήσεις',
'login.features.bookingsDesc': 'Πτήσεις, ξενοδοχεία, εστιατόρια & άλλα',
'login.features.files': 'Έγγραφα',
'login.features.filesDesc': 'Μεταφόρτωση & διαχείριση εγγράφων',
'login.features.routes': 'Έξυπνες Διαδρομές',
'login.features.routesDesc':
'Αυτόματη βελτιστοποίηση & εξαγωγή στο Google Maps',
'login.selfHosted':
'Self-hosted \u00B7 Open Source \u00B7 Τα δεδομένα σας παραμένουν δικά σας',
'login.title': 'Σύνδεση',
'login.subtitle': 'Καλώς ήρθατε πίσω',
'login.signingIn': 'Σύνδεση…',
'login.signIn': 'Σύνδεση',
'login.createAdmin': 'Δημιουργία Λογαριασμού Διαχειριστή',
'login.createAdminHint':
'Ρυθμίστε τον πρώτο λογαριασμό διαχειριστή για το TREK.',
'login.setNewPassword': 'Ορισμός Νέου Κωδικού',
'login.setNewPasswordHint':
'Πρέπει να αλλάξετε τον κωδικό σας πριν συνεχίσετε.',
'login.createAccount': 'Δημιουργία Λογαριασμού',
'login.createAccountHint': 'Καταχωρήστε έναν νέο λογαριασμό.',
'login.creating': 'Δημιουργία…',
'login.noAccount': 'Δεν έχετε λογαριασμό;',
'login.hasAccount': 'Έχετε ήδη λογαριασμό;',
'login.register': 'Εγγραφή',
'login.emailPlaceholder': 'your@email.com',
'login.username': 'Όνομα χρήστη',
'login.oidc.registrationDisabled':
'Η εγγραφή είναι απενεργοποιημένη. Επικοινωνήστε με τον διαχειριστή σας.',
'login.oidc.noEmail': 'Δεν ελήφθη email από τον πάροχο.',
'login.oidc.tokenFailed': 'Ο έλεγχος ταυτότητας απέτυχε.',
'login.oidc.invalidState': 'Μη έγκυρη συνεδρία. Παρακαλώ δοκιμάστε ξανά.',
'login.demoFailed': 'Η σύνδεση demo απέτυχε',
'login.oidcSignIn': 'Σύνδεση με {name}',
'login.oidcOnly':
'Ο έλεγχος ταυτότητας με κωδικό είναι απενεργοποιημένος. Παρακαλώ συνδεθείτε χρησιμοποιώντας τον πάροχο SSO σας.',
'login.oidcLoggedOut':
'Έχετε αποσυνδεθεί. Συνδεθείτε ξανά χρησιμοποιώντας τον πάροχο SSO σας.',
'login.demoHint': 'Δοκιμάστε το demo — δεν απαιτείται εγγραφή',
'login.mfaTitle': 'Έλεγχος ταυτότητας δύο παραγόντων',
'login.mfaSubtitle':
'Εισάγετε τον 6ψήφιο κωδικό από την εφαρμογή authenticator σας.',
'login.mfaCodeLabel': 'Κωδικός επαλήθευσης',
'login.mfaCodeRequired':
'Εισάγετε τον κωδικό από την εφαρμογή authenticator σας.',
'login.mfaHint':
'Ανοίξτε το Google Authenticator, Authy ή άλλη εφαρμογή TOTP.',
'login.mfaBack': '← Πίσω στη σύνδεση',
'login.mfaVerify': 'Επαλήθευση',
'login.invalidInviteLink': 'Μη έγκυρος ή ληγμένος σύνδεσμος πρόσκλησης',
'login.oidcFailed': 'Η σύνδεση OIDC απέτυχε',
'login.usernameRequired': 'Το όνομα χρήστη είναι υποχρεωτικό',
'login.passwordMinLength':
'Ο κωδικός πρέπει να έχει τουλάχιστον 8 χαρακτήρες',
'login.forgotPassword': 'Ξεχάσατε τον κωδικό;',
'login.forgotPasswordTitle': 'Επαναφορά του κωδικού σας',
'login.forgotPasswordBody':
'Εισάγετε το email με το οποίο εγγραφήκατε. Αν υπάρχει λογαριασμός, θα στείλουμε έναν σύνδεσμο επαναφοράς.',
'login.forgotPasswordSubmit': 'Αποστολή συνδέσμου επαναφοράς',
'login.forgotPasswordSentTitle': 'Ελέγξτε το email σας',
'login.forgotPasswordSentBody':
"Αν υπάρχει λογαριασμός για αυτό το email, ένας σύνδεσμος επαναφοράς είναι καθ'οδόν. Λήγει σε 60 λεπτά.",
'login.forgotPasswordSmtpHintOff':
'Προσοχή: ο διαχειριστής σας δεν έχει διαμορφώσει SMTP, οπότε ο σύνδεσμος επαναφοράς θα γραφτεί στην κονσόλα του server αντί να σταλεί με email.',
'login.backToLogin': 'Πίσω στη σύνδεση',
'login.newPassword': 'Νέος κωδικός',
'login.confirmPassword': 'Επιβεβαίωση νέου κωδικού',
'login.passwordsDontMatch': 'Οι κωδικοί δεν ταιριάζουν',
'login.mfaCode': 'Κωδικός 2FA',
'login.resetPasswordTitle': 'Ορίστε έναν νέο κωδικό',
'login.resetPasswordBody':
'Επιλέξτε έναν ισχυρό κωδικό που δεν έχετε χρησιμοποιήσει εδώ ξανά. Ελάχιστο 8 χαρακτήρες.',
'login.resetPasswordMfaBody':
'Εισάγετε τον κωδικό 2FA ή έναν εφεδρικό κωδικό για να ολοκληρωθεί η επαναφορά.',
'login.resetPasswordSubmit': 'Επαναφορά κωδικού',
'login.resetPasswordVerify': 'Επαλήθευση & επαναφορά',
'login.resetPasswordSuccessTitle': 'Ο κωδικός ενημερώθηκε',
'login.resetPasswordSuccessBody':
'Μπορείτε τώρα να συνδεθείτε με τον νέο σας κωδικό.',
'login.resetPasswordInvalidLink': 'Μη έγκυρος σύνδεσμος επαναφοράς',
'login.resetPasswordInvalidLinkBody':
'Αυτός ο σύνδεσμος λείπει ή έχει χαλάσει. Ζητήστε έναν νέο για να συνεχίσετε.',
'login.resetPasswordFailed':
'Η επαναφορά απέτυχε. Ο σύνδεσμος μπορεί να έχει λήξει.',
'login.passkey.signIn': 'Σύνδεση με passkey',
'login.passkey.failed':
'Η σύνδεση με passkey απέτυχε. Παρακαλώ δοκιμάστε ξανά.',
};
export default login;