chore: prettier + lint

This commit is contained in:
jubnl
2026-05-27 17:35:10 +02:00
parent 8bda980028
commit 5f964b9524
59 changed files with 1320 additions and 694 deletions
+148 -74
View File
@@ -2,16 +2,19 @@ import type { TranslationStrings } from '../types';
const admin: TranslationStrings = {
'admin.notifications.title': 'Ειδοποιήσεις',
'admin.notifications.hint': 'Επιλέξτε ένα κανάλι ειδοποιήσεων. Μόνο ένα μπορεί να είναι ενεργό κάθε φορά.',
'admin.notifications.hint':
'Επιλέξτε ένα κανάλι ειδοποιήσεων. Μόνο ένα μπορεί να είναι ενεργό κάθε φορά.',
'admin.notifications.none': 'Απενεργοποιημένο',
'admin.notifications.email': 'Email (SMTP)',
'admin.notifications.webhook': 'Webhook',
'admin.notifications.ntfy': 'Ntfy',
'admin.ntfy.hint': 'Επιτρέψτε στους χρήστες να διαμορφώνουν τα δικά τους θέματα ntfy για push ειδοποιήσεις. Ορίστε τον προεπιλεγμένο server παρακάτω για να προ-συμπληρώνει τις ρυθμίσεις χρηστών.',
'admin.ntfy.hint':
'Επιτρέψτε στους χρήστες να διαμορφώνουν τα δικά τους θέματα ntfy για push ειδοποιήσεις. Ορίστε τον προεπιλεγμένο server παρακάτω για να προ-συμπληρώνει τις ρυθμίσεις χρηστών.',
'admin.notifications.save': 'Αποθήκευση ρυθμίσεων ειδοποιήσεων',
'admin.notifications.saved': 'Οι ρυθμίσεις ειδοποιήσεων αποθηκεύτηκαν',
'admin.notifications.testWebhook': 'Αποστολή δοκιμαστικού webhook',
'admin.notifications.testWebhookSuccess': 'Η δοκιμή webhook στάλθηκε επιτυχώς',
'admin.notifications.testWebhookSuccess':
'Η δοκιμή webhook στάλθηκε επιτυχώς',
'admin.notifications.testWebhookFailed': 'Η δοκιμή webhook απέτυχε',
'admin.notifications.testNtfy': 'Αποστολή δοκιμαστικού ntfy',
'admin.notifications.testNtfySuccess': 'Η δοκιμή ntfy στάλθηκε επιτυχώς',
@@ -19,36 +22,53 @@ const admin: TranslationStrings = {
'admin.notifications.emailPanel.title': 'Email (SMTP)',
'admin.notifications.webhookPanel.title': 'Webhook',
'admin.notifications.inappPanel.title': 'Εντός εφαρμογής',
'admin.notifications.inappPanel.hint': 'Οι ειδοποιήσεις εντός εφαρμογής είναι πάντα ενεργές και δεν μπορούν να απενεργοποιηθούν καθολικά.',
'admin.notifications.inappPanel.hint':
'Οι ειδοποιήσεις εντός εφαρμογής είναι πάντα ενεργές και δεν μπορούν να απενεργοποιηθούν καθολικά.',
'admin.notifications.adminWebhookPanel.title': 'Webhook Διαχειριστή',
'admin.notifications.adminWebhookPanel.hint': 'Αυτό το webhook χρησιμοποιείται αποκλειστικά για ειδοποιήσεις διαχειριστή (π.χ. ειδοποιήσεις έκδοσης). Είναι ξεχωριστό από τα webhooks των χρηστών και ενεργοποιείται πάντα όταν έχει οριστεί.',
'admin.notifications.adminWebhookPanel.saved': 'Το URL του webhook διαχειριστή αποθηκεύτηκε',
'admin.notifications.adminWebhookPanel.testSuccess': 'Η δοκιμή webhook στάλθηκε επιτυχώς',
'admin.notifications.adminWebhookPanel.testFailed': 'Η δοκιμή webhook απέτυχε',
'admin.notifications.adminWebhookPanel.alwaysOnHint': 'Το webhook διαχειριστή ενεργοποιείται πάντα όταν έχει διαμορφωθεί ένα URL',
'admin.notifications.adminWebhookPanel.hint':
'Αυτό το webhook χρησιμοποιείται αποκλειστικά για ειδοποιήσεις διαχειριστή (π.χ. ειδοποιήσεις έκδοσης). Είναι ξεχωριστό από τα webhooks των χρηστών και ενεργοποιείται πάντα όταν έχει οριστεί.',
'admin.notifications.adminWebhookPanel.saved':
'Το URL του webhook διαχειριστή αποθηκεύτηκε',
'admin.notifications.adminWebhookPanel.testSuccess':
'Η δοκιμή webhook στάλθηκε επιτυχώς',
'admin.notifications.adminWebhookPanel.testFailed':
'Η δοκιμή webhook απέτυχε',
'admin.notifications.adminWebhookPanel.alwaysOnHint':
'Το webhook διαχειριστή ενεργοποιείται πάντα όταν έχει διαμορφωθεί ένα URL',
'admin.notifications.adminNtfyPanel.title': 'Ntfy Διαχειριστή',
'admin.notifications.adminNtfyPanel.hint': 'Αυτό το θέμα ntfy χρησιμοποιείται αποκλειστικά για ειδοποιήσεις διαχειριστή (π.χ. ειδοποιήσεις έκδοσης). Είναι ξεχωριστό από τα θέματα των χρηστών και ενεργοποιείται πάντα όταν έχει διαμορφωθεί.',
'admin.notifications.adminNtfyPanel.hint':
'Αυτό το θέμα ntfy χρησιμοποιείται αποκλειστικά για ειδοποιήσεις διαχειριστή (π.χ. ειδοποιήσεις έκδοσης). Είναι ξεχωριστό από τα θέματα των χρηστών και ενεργοποιείται πάντα όταν έχει διαμορφωθεί.',
'admin.notifications.adminNtfyPanel.serverLabel': 'URL Ntfy Server',
'admin.notifications.adminNtfyPanel.serverHint': 'Χρησιμοποιείται επίσης ως ο προεπιλεγμένος server για τις ντόπιες ntfy ειδοποιήσεις χρηστών. Αφήστε κενό για προεπιλογή ntfy.sh. Οι χρήστες μπορούν να το παρακάμψουν στις δικές τους ρυθμίσεις.',
'admin.notifications.adminNtfyPanel.serverHint':
'Χρησιμοποιείται επίσης ως ο προεπιλεγμένος server για τις ντόπιες ntfy ειδοποιήσεις χρηστών. Αφήστε κενό για προεπιλογή ntfy.sh. Οι χρήστες μπορούν να το παρακάμψουν στις δικές τους ρυθμίσεις.',
'admin.notifications.adminNtfyPanel.serverPlaceholder': 'https://ntfy.sh',
'admin.notifications.adminNtfyPanel.topicLabel': 'Θέμα Διαχειριστή',
'admin.notifications.adminNtfyPanel.topicPlaceholder': 'trek-admin-alerts',
'admin.notifications.adminNtfyPanel.tokenLabel': 'Access Token (προαιρετικό)',
'admin.notifications.adminNtfyPanel.tokenCleared': 'Το access token διαχειριστή εκκαθαρίστηκε',
'admin.notifications.adminNtfyPanel.saved': 'Οι ρυθμίσεις ntfy διαχειριστή αποθηκεύτηκαν',
'admin.notifications.adminNtfyPanel.tokenCleared':
'Το access token διαχειριστή εκκαθαρίστηκε',
'admin.notifications.adminNtfyPanel.saved':
'Οι ρυθμίσεις ntfy διαχειριστή αποθηκεύτηκαν',
'admin.notifications.adminNtfyPanel.test': 'Αποστολή δοκιμαστικού ntfy',
'admin.notifications.adminNtfyPanel.testSuccess': 'Η δοκιμή ntfy στάλθηκε επιτυχώς',
'admin.notifications.adminNtfyPanel.testSuccess':
'Η δοκιμή ntfy στάλθηκε επιτυχώς',
'admin.notifications.adminNtfyPanel.testFailed': 'Η δοκιμή ntfy απέτυχε',
'admin.notifications.adminNtfyPanel.alwaysOnHint': 'Το ntfy διαχειριστή ενεργοποιείται πάντα όταν έχει διαμορφωθεί ένα θέμα',
'admin.notifications.adminNotificationsHint': 'Διαμορφώστε ποια κανάλια παραδίδουν ειδοποιήσεις μόνο για διαχειριστές (π.χ. ειδοποιήσεις έκδοσης).',
'admin.notifications.adminNtfyPanel.alwaysOnHint':
'Το ntfy διαχειριστή ενεργοποιείται πάντα όταν έχει διαμορφωθεί ένα θέμα',
'admin.notifications.adminNotificationsHint':
'Διαμορφώστε ποια κανάλια παραδίδουν ειδοποιήσεις μόνο για διαχειριστές (π.χ. ειδοποιήσεις έκδοσης).',
'admin.notifications.tripReminders.title': 'Υπενθυμίσεις Ταξιδιού',
'admin.notifications.tripReminders.hint': 'Αποστολή ειδοποίησης υπενθύμισης πριν την έναρξη ενός ταξιδιού (απαιτεί να έχουν οριστεί ημέρες υπενθύμισης στο ταξίδι).',
'admin.notifications.tripReminders.enabled': 'Οι υπενθυμίσεις ταξιδιού ενεργοποιήθηκαν',
'admin.notifications.tripReminders.disabled': 'Οι υπενθυμίσεις ταξιδιού απενεργοποιήθηκαν',
'admin.notifications.tripReminders.hint':
'Αποστολή ειδοποίησης υπενθύμισης πριν την έναρξη ενός ταξιδιού (απαιτεί να έχουν οριστεί ημέρες υπενθύμισης στο ταξίδι).',
'admin.notifications.tripReminders.enabled':
'Οι υπενθυμίσεις ταξιδιού ενεργοποιήθηκαν',
'admin.notifications.tripReminders.disabled':
'Οι υπενθυμίσεις ταξιδιού απενεργοποιήθηκαν',
'admin.smtp.title': 'Email & Ειδοποιήσεις',
'admin.smtp.hint': 'Διαμόρφωση SMTP για αποστολή ειδοποιήσεων email.',
'admin.smtp.testButton': 'Αποστολή δοκιμαστικού email',
'admin.webhook.hint': 'Επιτρέψτε στους χρήστες να διαμορφώνουν τα δικά τους webhook URLs για ειδοποιήσεις (Discord, Slack, κ.λπ.).',
'admin.webhook.hint':
'Επιτρέψτε στους χρήστες να διαμορφώνουν τα δικά τους webhook URLs για ειδοποιήσεις (Discord, Slack, κ.λπ.).',
'admin.smtp.testSuccess': 'Το δοκιμαστικό email στάλθηκε επιτυχώς',
'admin.smtp.testFailed': 'Το δοκιμαστικό email απέτυχε',
'admin.title': 'Διαχείριση',
@@ -73,7 +93,8 @@ const admin: TranslationStrings = {
'admin.editUser': 'Επεξεργασία Χρήστη',
'admin.newPassword': 'Νέος Κωδικός',
'admin.newPasswordHint': 'Αφήστε κενό για να διατηρηθεί ο τρέχων κωδικός',
'admin.deleteUser': 'Διαγραφή χρήστη "{name}"; Όλα τα ταξίδια θα διαγραφούν μόνιμα.',
'admin.deleteUser':
'Διαγραφή χρήστη "{name}"; Όλα τα ταξίδια θα διαγραφούν μόνιμα.',
'admin.deleteUserTitle': 'Διαγραφή χρήστη',
'admin.newPasswordPlaceholder': 'Εισάγετε νέο κωδικό…',
'admin.toast.loadError': 'Αποτυχία φόρτωσης δεδομένων διαχείρισης',
@@ -81,10 +102,12 @@ const admin: TranslationStrings = {
'admin.toast.updateError': 'Αποτυχία ενημέρωσης',
'admin.toast.userDeleted': 'Ο χρήστης διαγράφηκε',
'admin.toast.deleteError': 'Αποτυχία διαγραφής',
'admin.toast.cannotDeleteSelf': 'Δεν μπορείτε να διαγράψετε τον δικό σας λογαριασμό',
'admin.toast.cannotDeleteSelf':
'Δεν μπορείτε να διαγράψετε τον δικό σας λογαριασμό',
'admin.toast.userCreated': 'Ο χρήστης δημιουργήθηκε',
'admin.toast.createError': 'Αποτυχία δημιουργίας χρήστη',
'admin.toast.fieldsRequired': 'Το όνομα χρήστη, το email και ο κωδικός είναι υποχρεωτικά',
'admin.toast.fieldsRequired':
'Το όνομα χρήστη, το email και ο κωδικός είναι υποχρεωτικά',
'admin.createUser': 'Δημιουργία Χρήστη',
'admin.invite.title': 'Σύνδεσμοι Πρόσκλησης',
'admin.invite.subtitle': 'Δημιουργία συνδέσμων εγγραφής μίας χρήσης',
@@ -106,25 +129,35 @@ const admin: TranslationStrings = {
'admin.invite.deleteError': 'Αποτυχία διαγραφής συνδέσμου πρόσκλησης',
'admin.tabs.settings': 'Ρυθμίσεις',
'admin.allowRegistration': 'Να επιτρέπονται οι εγγραφές',
'admin.allowRegistrationHint': 'Οι νέοι χρήστες μπορούν να εγγράφονται μόνοι τους',
'admin.allowRegistrationHint':
'Οι νέοι χρήστες μπορούν να εγγράφονται μόνοι τους',
'admin.authMethods': 'Μέθοδοι Ελέγχου Ταυτότητας',
'admin.passwordLogin': 'Σύνδεση με Κωδικό',
'admin.passwordLoginHint': 'Επιτρέψτε στους χρήστες να συνδέονται με email και κωδικό',
'admin.passwordLoginHint':
'Επιτρέψτε στους χρήστες να συνδέονται με email και κωδικό',
'admin.passwordRegistration': 'Εγγραφή με Κωδικό',
'admin.passwordRegistrationHint': 'Επιτρέψτε σε νέους χρήστες να εγγράφονται με email και κωδικό',
'admin.passwordRegistrationHint':
'Επιτρέψτε σε νέους χρήστες να εγγράφονται με email και κωδικό',
'admin.oidcLogin': 'Σύνδεση SSO',
'admin.oidcLoginHint': 'Επιτρέψτε στους χρήστες να συνδέονται με SSO',
'admin.oidcRegistration': 'Αυτόματη Δημιουργία SSO',
'admin.oidcRegistrationHint': 'Αυτόματη δημιουργία λογαριασμών για νέους χρήστες SSO',
'admin.envOverrideHint': 'Οι ρυθμίσεις σύνδεσης με κωδικό ελέγχονται από τη μεταβλητή περιβάλλοντος OIDC_ONLY και δεν μπορούν να αλλάξουν εδώ.',
'admin.lockoutWarning': 'Πρέπει να παραμείνει ενεργοποιημένη τουλάχιστον μία μέθοδος σύνδεσης',
'admin.oidcRegistrationHint':
'Αυτόματη δημιουργία λογαριασμών για νέους χρήστες SSO',
'admin.envOverrideHint':
'Οι ρυθμίσεις σύνδεσης με κωδικό ελέγχονται από τη μεταβλητή περιβάλλοντος OIDC_ONLY και δεν μπορούν να αλλάξουν εδώ.',
'admin.lockoutWarning':
'Πρέπει να παραμείνει ενεργοποιημένη τουλάχιστον μία μέθοδος σύνδεσης',
'admin.requireMfa': 'Απαίτηση ελέγχου ταυτότητας δύο παραγόντων (2FA)',
'admin.requireMfaHint': 'Οι χρήστες χωρίς 2FA πρέπει να ολοκληρώσουν τη ρύθμιση στις Ρυθμίσεις πριν χρησιμοποιήσουν την εφαρμογή.',
'admin.requireMfaHint':
'Οι χρήστες χωρίς 2FA πρέπει να ολοκληρώσουν τη ρύθμιση στις Ρυθμίσεις πριν χρησιμοποιήσουν την εφαρμογή.',
'admin.apiKeys': 'Κλειδιά API',
'admin.apiKeysHint': 'Προαιρετικά. Ενεργοποιεί εκτεταμένα δεδομένα τόπων όπως φωτογραφίες και καιρό.',
'admin.apiKeysHint':
'Προαιρετικά. Ενεργοποιεί εκτεταμένα δεδομένα τόπων όπως φωτογραφίες και καιρό.',
'admin.mapsKey': 'Google Maps API Key',
'admin.mapsKeyHint': 'Απαιτείται για αναζήτηση τόπων. Λάβετε το από console.cloud.google.com',
'admin.mapsKeyHintLong': 'Χωρίς κλειδί API, χρησιμοποιείται το OpenStreetMap για αναζήτηση τόπων. Με κλειδί Google API, μπορούν επίσης να φορτωθούν φωτογραφίες, βαθμολογίες και ώρες λειτουργίας. Λάβετε ένα στο console.cloud.google.com.',
'admin.mapsKeyHint':
'Απαιτείται για αναζήτηση τόπων. Λάβετε το από console.cloud.google.com',
'admin.mapsKeyHintLong':
'Χωρίς κλειδί API, χρησιμοποιείται το OpenStreetMap για αναζήτηση τόπων. Με κλειδί Google API, μπορούν επίσης να φορτωθούν φωτογραφίες, βαθμολογίες και ώρες λειτουργίας. Λάβετε ένα στο console.cloud.google.com.',
'admin.recommended': 'Συνιστάται',
'admin.weatherKey': 'OpenWeatherMap API Key',
'admin.weatherKeyHint': 'Για δεδομένα καιρού. Δωρεάν στο openweathermap.org',
@@ -133,45 +166,59 @@ const admin: TranslationStrings = {
'admin.keyInvalid': 'Μη έγκυρο',
'admin.keySaved': 'Τα κλειδιά API αποθηκεύτηκαν',
'admin.oidcTitle': 'Ενιαία Σύνδεση (OIDC)',
'admin.oidcSubtitle': 'Επιτρέψτε τη σύνδεση μέσω εξωτερικών παρόχων όπως Google, Apple, Authentik ή Keycloak.',
'admin.oidcSubtitle':
'Επιτρέψτε τη σύνδεση μέσω εξωτερικών παρόχων όπως Google, Apple, Authentik ή Keycloak.',
'admin.oidcDisplayName': 'Εμφανιζόμενο Όνομα',
'admin.oidcIssuer': 'Issuer URL',
'admin.oidcIssuerHint': 'Το OpenID Connect Issuer URL του παρόχου. π.χ. https://accounts.google.com',
'admin.oidcIssuerHint':
'Το OpenID Connect Issuer URL του παρόχου. π.χ. https://accounts.google.com',
'admin.oidcSaved': 'Η διαμόρφωση OIDC αποθηκεύτηκε',
'admin.oidcOnlyMode': 'Απενεργοποίηση ελέγχου ταυτότητας με κωδικό',
'admin.oidcOnlyModeHint': 'Όταν είναι ενεργοποιημένο, επιτρέπεται μόνο η σύνδεση SSO. Η σύνδεση και εγγραφή με κωδικό αποκλείονται.',
'admin.oidcOnlyModeHint':
'Όταν είναι ενεργοποιημένο, επιτρέπεται μόνο η σύνδεση SSO. Η σύνδεση και εγγραφή με κωδικό αποκλείονται.',
'admin.fileTypes': 'Επιτρεπόμενοι Τύποι Αρχείων',
'admin.fileTypesHint': 'Ρυθμίστε ποιους τύπους αρχείων μπορούν να μεταφορτώνουν οι χρήστες.',
'admin.fileTypesFormat': 'Επεκτάσεις χωρισμένες με κόμμα (π.χ. jpg,png,pdf,doc). Χρησιμοποιήστε * για να επιτρέπονται όλοι οι τύποι.',
'admin.fileTypesHint':
'Ρυθμίστε ποιους τύπους αρχείων μπορούν να μεταφορτώνουν οι χρήστες.',
'admin.fileTypesFormat':
'Επεκτάσεις χωρισμένες με κόμμα (π.χ. jpg,png,pdf,doc). Χρησιμοποιήστε * για να επιτρέπονται όλοι οι τύποι.',
'admin.fileTypesSaved': 'Οι ρυθμίσεις τύπων αρχείων αποθηκεύτηκαν',
'admin.placesPhotos.title': 'Φωτογραφίες Τόπων',
'admin.placesPhotos.subtitle': 'Λήψη φωτογραφιών από το Google Places API. Απενεργοποιήστε για εξοικονόμηση ποσοστώσης API. Οι φωτογραφίες Wikimedia δεν επηρεάζονται.',
'admin.placesPhotos.subtitle':
'Λήψη φωτογραφιών από το Google Places API. Απενεργοποιήστε για εξοικονόμηση ποσοστώσης API. Οι φωτογραφίες Wikimedia δεν επηρεάζονται.',
'admin.placesAutocomplete.title': 'Αυτόματη Συμπλήρωση Τόπων',
'admin.placesAutocomplete.subtitle': 'Χρήση του Google Places API για προτάσεις αναζήτησης. Απενεργοποιήστε για εξοικονόμηση ποσοστώσης API.',
'admin.placesAutocomplete.subtitle':
'Χρήση του Google Places API για προτάσεις αναζήτησης. Απενεργοποιήστε για εξοικονόμηση ποσοστώσης API.',
'admin.placesDetails.title': 'Λεπτομέρειες Τόπου',
'admin.placesDetails.subtitle': 'Λήψη λεπτομερών πληροφοριών τόπου (ώρες, βαθμολογία, ιστοσελίδα) από το Google Places API. Απενεργοποιήστε για εξοικονόμηση ποσοστώσης API.',
'admin.placesDetails.subtitle':
'Λήψη λεπτομερών πληροφοριών τόπου (ώρες, βαθμολογία, ιστοσελίδα) από το Google Places API. Απενεργοποιήστε για εξοικονόμηση ποσοστώσης API.',
'admin.bagTracking.title': 'Παρακολούθηση Αποσκευών',
'admin.bagTracking.subtitle': 'Ενεργοποίηση βάρους και ανάθεσης τσάντας για αντικείμενα πακεταρίσματος',
'admin.bagTracking.subtitle':
'Ενεργοποίηση βάρους και ανάθεσης τσάντας για αντικείμενα πακεταρίσματος',
'admin.collab.chat.title': 'Συνομιλία',
'admin.collab.chat.subtitle': 'Μηνύματα πραγματικού χρόνου για συνεργασία ταξιδιού',
'admin.collab.chat.subtitle':
'Μηνύματα πραγματικού χρόνου για συνεργασία ταξιδιού',
'admin.collab.notes.title': 'Σημειώσεις',
'admin.collab.notes.subtitle': 'Κοινόχρηστες σημειώσεις και έγγραφα',
'admin.collab.polls.title': 'Δημοσκοπήσεις',
'admin.collab.polls.subtitle': 'Ομαδικές δημοσκοπήσεις και ψηφοφορίες',
'admin.collab.whatsnext.title': 'Τι Ακολουθεί',
'admin.collab.whatsnext.subtitle': 'Προτάσεις δραστηριοτήτων και επόμενα βήματα',
'admin.collab.whatsnext.subtitle':
'Προτάσεις δραστηριοτήτων και επόμενα βήματα',
'admin.tabs.config': 'Εξατομίκευση',
'admin.tabs.defaults': 'Προεπιλογές Χρήστη',
'admin.defaultSettings.title': 'Προεπιλεγμένες Ρυθμίσεις Χρήστη',
'admin.defaultSettings.description': 'Ορίστε προεπιλογές για όλη την υπηρεσία. Οι χρήστες που δεν έχουν αλλάξει μια ρύθμιση θα βλέπουν αυτές τις τιμές. Οι δικές τους αλλαγές έχουν πάντα προτεραιότητα.',
'admin.defaultSettings.description':
'Ορίστε προεπιλογές για όλη την υπηρεσία. Οι χρήστες που δεν έχουν αλλάξει μια ρύθμιση θα βλέπουν αυτές τις τιμές. Οι δικές τους αλλαγές έχουν πάντα προτεραιότητα.',
'admin.defaultSettings.saved': 'Η προεπιλογή αποθηκεύτηκε',
'admin.defaultSettings.reset': 'Επαναφορά στην ενσωματωμένη προεπιλογή',
'admin.defaultSettings.resetToBuiltIn': 'επαναφορά',
'admin.tabs.templates': 'Πρότυπα Πακεταρίσματος',
'admin.packingTemplates.title': 'Πρότυπα Πακεταρίσματος',
'admin.packingTemplates.subtitle': 'Δημιουργήστε επαναχρησιμοποιήσιμες λίστες πακεταρίσματος για τα ταξίδια σας',
'admin.packingTemplates.subtitle':
'Δημιουργήστε επαναχρησιμοποιήσιμες λίστες πακεταρίσματος για τα ταξίδια σας',
'admin.packingTemplates.create': 'Νέο Πρότυπο',
'admin.packingTemplates.namePlaceholder': 'Όνομα προτύπου (π.χ. Διακοπές στην Παραλία)',
'admin.packingTemplates.namePlaceholder':
'Όνομα προτύπου (π.χ. Διακοπές στην Παραλία)',
'admin.packingTemplates.empty': 'Δεν έχουν δημιουργηθεί πρότυπα ακόμη',
'admin.packingTemplates.items': 'αντικείμενα',
'admin.packingTemplates.categories': 'κατηγορίες',
@@ -187,24 +234,34 @@ const admin: TranslationStrings = {
'admin.packingTemplates.saveError': 'Αποτυχία αποθήκευσης',
'admin.tabs.addons': 'Πρόσθετα',
'admin.addons.title': 'Πρόσθετα',
'admin.addons.subtitle': 'Ενεργοποιήστε ή απενεργοποιήστε λειτουργίες για να εξατομικεύσετε την εμπειρία σας στο TREK.',
'admin.addons.subtitle':
'Ενεργοποιήστε ή απενεργοποιήστε λειτουργίες για να εξατομικεύσετε την εμπειρία σας στο TREK.',
'admin.addons.catalog.packing.name': 'Λίστες',
'admin.addons.catalog.packing.description': 'Λίστες πακεταρίσματος και εργασίες προς εκτέλεση για τα ταξίδια σας',
'admin.addons.catalog.packing.description':
'Λίστες πακεταρίσματος και εργασίες προς εκτέλεση για τα ταξίδια σας',
'admin.addons.catalog.budget.name': 'Προϋπολογισμός',
'admin.addons.catalog.budget.description': 'Παρακολουθήστε τα έξοδα και σχεδιάστε τον προϋπολογισμό του ταξιδιού σας',
'admin.addons.catalog.budget.description':
'Παρακολουθήστε τα έξοδα και σχεδιάστε τον προϋπολογισμό του ταξιδιού σας',
'admin.addons.catalog.documents.name': 'Έγγραφα',
'admin.addons.catalog.documents.description': 'Αποθηκεύστε και διαχειριστείτε ταξιδιωτικά έγγραφα',
'admin.addons.catalog.documents.description':
'Αποθηκεύστε και διαχειριστείτε ταξιδιωτικά έγγραφα',
'admin.addons.catalog.vacay.name': 'Vacay',
'admin.addons.catalog.vacay.description': 'Προσωπικός σχεδιαστής διακοπών με προβολή ημερολογίου',
'admin.addons.catalog.vacay.description':
'Προσωπικός σχεδιαστής διακοπών με προβολή ημερολογίου',
'admin.addons.catalog.atlas.name': 'Atlas',
'admin.addons.catalog.atlas.description': 'Παγκόσμιος χάρτης με χώρες που έχετε επισκεφθεί και ταξιδιωτικά στατιστικά',
'admin.addons.catalog.atlas.description':
'Παγκόσμιος χάρτης με χώρες που έχετε επισκεφθεί και ταξιδιωτικά στατιστικά',
'admin.addons.catalog.collab.name': 'Collab',
'admin.addons.catalog.collab.description': 'Σημειώσεις, δημοσκοπήσεις και συνομιλία πραγματικού χρόνου για σχεδιασμό ταξιδιού',
'admin.addons.catalog.collab.description':
'Σημειώσεις, δημοσκοπήσεις και συνομιλία πραγματικού χρόνου για σχεδιασμό ταξιδιού',
'admin.addons.catalog.memories.name': 'Φωτογραφίες (Immich)',
'admin.addons.catalog.memories.description': 'Μοιραστείτε φωτογραφίες ταξιδιού μέσω της δικής σας εγκατάστασης Immich',
'admin.addons.catalog.memories.description':
'Μοιραστείτε φωτογραφίες ταξιδιού μέσω της δικής σας εγκατάστασης Immich',
'admin.addons.catalog.mcp.name': 'MCP',
'admin.addons.catalog.mcp.description': 'Model Context Protocol για ενσωμάτωση βοηθού AI',
'admin.addons.subtitleBefore': 'Ενεργοποιήστε ή απενεργοποιήστε λειτουργίες για να εξατομικεύσετε την εμπειρία σας στο ',
'admin.addons.catalog.mcp.description':
'Model Context Protocol για ενσωμάτωση βοηθού AI',
'admin.addons.subtitleBefore':
'Ενεργοποιήστε ή απενεργοποιήστε λειτουργίες για να εξατομικεύσετε την εμπειρία σας στο ',
'admin.addons.subtitleAfter': '.',
'admin.addons.enabled': 'Ενεργοποιημένο',
'admin.addons.disabled': 'Απενεργοποιημένο',
@@ -212,24 +269,30 @@ const admin: TranslationStrings = {
'admin.addons.type.global': 'Καθολικό',
'admin.addons.type.integration': 'Ενσωμάτωση',
'admin.addons.tripHint': 'Διαθέσιμο ως καρτέλα μέσα σε κάθε ταξίδι',
'admin.addons.globalHint': 'Διαθέσιμο ως αυτόνομη ενότητα στην κύρια πλοήγηση',
'admin.addons.integrationHint': 'Υπηρεσίες backend και ενσωματώσεις API χωρίς ειδική σελίδα',
'admin.addons.globalHint':
'Διαθέσιμο ως αυτόνομη ενότητα στην κύρια πλοήγηση',
'admin.addons.integrationHint':
'Υπηρεσίες backend και ενσωματώσεις API χωρίς ειδική σελίδα',
'admin.addons.toast.updated': 'Το πρόσθετο ενημερώθηκε',
'admin.addons.toast.error': 'Αποτυχία ενημέρωσης προσθέτου',
'admin.addons.noAddons': 'Δεν υπάρχουν διαθέσιμα πρόσθετα',
'admin.weather.title': 'Δεδομένα Καιρού',
'admin.weather.badge': 'Από 24 Μαρτίου 2026',
'admin.weather.description': 'Το TREK χρησιμοποιεί το Open-Meteo ως πηγή δεδομένων καιρού. Το Open-Meteo είναι μια δωρεάν, ανοιχτού κώδικα υπηρεσία καιρού — δεν απαιτείται κλειδί API.',
'admin.weather.description':
'Το TREK χρησιμοποιεί το Open-Meteo ως πηγή δεδομένων καιρού. Το Open-Meteo είναι μια δωρεάν, ανοιχτού κώδικα υπηρεσία καιρού — δεν απαιτείται κλειδί API.',
'admin.weather.forecast': 'Πρόγνωση 16 ημερών',
'admin.weather.forecastDesc': 'Προηγουμένως 5 ημέρες (OpenWeatherMap)',
'admin.weather.climate': 'Ιστορικά δεδομένα κλίματος',
'admin.weather.climateDesc': 'Μέσοι όροι από τα τελευταία 85 χρόνια για ημέρες πέρα από την πρόγνωση 16 ημερών',
'admin.weather.climateDesc':
'Μέσοι όροι από τα τελευταία 85 χρόνια για ημέρες πέρα από την πρόγνωση 16 ημερών',
'admin.weather.requests': '10.000 αιτήματα / ημέρα',
'admin.weather.requestsDesc': 'Δωρεάν, δεν απαιτείται κλειδί API',
'admin.weather.locationHint': 'Ο καιρός βασίζεται στον πρώτο τόπο με συντεταγμένες σε κάθε ημέρα. Αν δεν έχει ανατεθεί τόπος σε μια ημέρα, χρησιμοποιείται ως αναφορά οποιοσδήποτε τόπος από τη λίστα.',
'admin.weather.locationHint':
'Ο καιρός βασίζεται στον πρώτο τόπο με συντεταγμένες σε κάθε ημέρα. Αν δεν έχει ανατεθεί τόπος σε μια ημέρα, χρησιμοποιείται ως αναφορά οποιοσδήποτε τόπος από τη λίστα.',
'admin.tabs.mcpTokens': 'Πρόσβαση MCP',
'admin.mcpTokens.title': 'Πρόσβαση MCP',
'admin.mcpTokens.subtitle': 'Διαχείριση συνεδριών OAuth και διακριτικών API για όλους τους χρήστες',
'admin.mcpTokens.subtitle':
'Διαχείριση συνεδριών OAuth και διακριτικών API για όλους τους χρήστες',
'admin.mcpTokens.sectionTitle': 'Διακριτικά API',
'admin.mcpTokens.owner': 'Κάτοχος',
'admin.mcpTokens.tokenName': 'Όνομα Διακριτικού',
@@ -238,7 +301,8 @@ const admin: TranslationStrings = {
'admin.mcpTokens.never': 'Ποτέ',
'admin.mcpTokens.empty': 'Δεν έχουν δημιουργηθεί διακριτικά MCP ακόμη',
'admin.mcpTokens.deleteTitle': 'Διαγραφή Διακριτικού',
'admin.mcpTokens.deleteMessage': 'Αυτό θα ανακαλέσει το διακριτικό άμεσα. Ο χρήστης θα χάσει την πρόσβαση MCP μέσω αυτού του διακριτικού.',
'admin.mcpTokens.deleteMessage':
'Αυτό θα ανακαλέσει το διακριτικό άμεσα. Ο χρήστης θα χάσει την πρόσβαση MCP μέσω αυτού του διακριτικού.',
'admin.mcpTokens.deleteSuccess': 'Το διακριτικό διαγράφηκε',
'admin.mcpTokens.deleteError': 'Αποτυχία διαγραφής διακριτικού',
'admin.mcpTokens.loadError': 'Αποτυχία φόρτωσης διακριτικών',
@@ -249,12 +313,14 @@ const admin: TranslationStrings = {
'admin.oauthSessions.created': 'Δημιουργήθηκε',
'admin.oauthSessions.empty': 'Δεν υπάρχουν ενεργές συνεδρίες OAuth',
'admin.oauthSessions.revokeTitle': 'Ανάκληση Συνεδρίας',
'admin.oauthSessions.revokeMessage': 'Αυτό θα ανακαλέσει τη συνεδρία OAuth άμεσα. Ο πελάτης θα χάσει την πρόσβαση MCP.',
'admin.oauthSessions.revokeMessage':
'Αυτό θα ανακαλέσει τη συνεδρία OAuth άμεσα. Ο πελάτης θα χάσει την πρόσβαση MCP.',
'admin.oauthSessions.revokeSuccess': 'Η συνεδρία ανακλήθηκε',
'admin.oauthSessions.revokeError': 'Αποτυχία ανάκλησης συνεδρίας',
'admin.oauthSessions.loadError': 'Αποτυχία φόρτωσης συνεδριών OAuth',
'admin.tabs.github': 'GitHub',
'admin.audit.subtitle': 'Συμβάντα ασφαλείας και διαχείρισης (αντίγραφα ασφαλείας, χρήστες, MFA, ρυθμίσεις).',
'admin.audit.subtitle':
'Συμβάντα ασφαλείας και διαχείρισης (αντίγραφα ασφαλείας, χρήστες, MFA, ρυθμίσεις).',
'admin.audit.empty': 'Δεν υπάρχουν εγγραφές ελέγχου ακόμη.',
'admin.audit.refresh': 'Ανανέωση',
'admin.audit.loadMore': 'Φόρτωση περισσότερων',
@@ -277,24 +343,32 @@ const admin: TranslationStrings = {
'admin.github.by': 'από',
'admin.github.support': 'Βοηθά να συνεχίσω την ανάπτυξη του TREK',
'admin.update.available': 'Διαθέσιμη ενημέρωση',
'admin.update.text': 'Το TREK {version} είναι διαθέσιμο. Εκτελείτε το {current}.',
'admin.update.text':
'Το TREK {version} είναι διαθέσιμο. Εκτελείτε το {current}.',
'admin.update.button': 'Προβολή στο GitHub',
'admin.update.install': 'Εγκατάσταση Ενημέρωσης',
'admin.update.confirmTitle': 'Εγκατάσταση Ενημέρωσης;',
'admin.update.confirmText': 'Το TREK θα ενημερωθεί από {current} σε {version}. Ο server θα επανεκκινήσει αυτόματα στη συνέχεια.',
'admin.update.dataInfo': 'Όλα τα δεδομένα σας (ταξίδια, χρήστες, κλειδιά API, μεταφορτώσεις, Vacay, Atlas, προϋπολογισμοί) θα διατηρηθούν.',
'admin.update.warning': 'Η εφαρμογή θα είναι σύντομα μη διαθέσιμη κατά την επανεκκίνηση.',
'admin.update.confirmText':
'Το TREK θα ενημερωθεί από {current} σε {version}. Ο server θα επανεκκινήσει αυτόματα στη συνέχεια.',
'admin.update.dataInfo':
'Όλα τα δεδομένα σας (ταξίδια, χρήστες, κλειδιά API, μεταφορτώσεις, Vacay, Atlas, προϋπολογισμοί) θα διατηρηθούν.',
'admin.update.warning':
'Η εφαρμογή θα είναι σύντομα μη διαθέσιμη κατά την επανεκκίνηση.',
'admin.update.confirm': 'Ενημέρωση Τώρα',
'admin.update.installing': 'Ενημέρωση…',
'admin.update.success': 'Η ενημέρωση εγκαταστάθηκε! Ο server επανεκκινεί…',
'admin.update.failed': 'Η ενημέρωση απέτυχε',
'admin.update.backupHint': 'Συνιστούμε να δημιουργήσετε ένα αντίγραφο ασφαλείας πριν την ενημέρωση.',
'admin.update.backupHint':
'Συνιστούμε να δημιουργήσετε ένα αντίγραφο ασφαλείας πριν την ενημέρωση.',
'admin.update.backupLink': 'Μετάβαση στο Αντίγραφο Ασφαλείας',
'admin.update.howTo': 'Πώς να Ενημερώσετε',
'admin.update.dockerText': 'Η εγκατάστασή σας TREK εκτελείται σε Docker. Για να ενημερωθείτε στο {version}, εκτελέστε τις ακόλουθες εντολές στον server σας:',
'admin.update.reloadHint': 'Παρακαλώ ανανεώστε τη σελίδα σε λίγα δευτερόλεπτα.',
'admin.update.dockerText':
'Η εγκατάστασή σας TREK εκτελείται σε Docker. Για να ενημερωθείτε στο {version}, εκτελέστε τις ακόλουθες εντολές στον server σας:',
'admin.update.reloadHint':
'Παρακαλώ ανανεώστε τη σελίδα σε λίγα δευτερόλεπτα.',
'admin.tabs.permissions': 'Δικαιώματα',
'admin.addons.catalog.journey.name': 'Ταξίδι',
'admin.addons.catalog.journey.description': 'Παρακολούθηση ταξιδιών & ημερολόγιο ταξιδιών με αφίξεις, φωτογραφίες και καθημερινές ιστορίες',
'admin.addons.catalog.journey.description':
'Παρακολούθηση ταξιδιών & ημερολόγιο ταξιδιών με αφίξεις, φωτογραφίες και καθημερινές ιστορίες',
};
export default admin;
+6 -3
View File
@@ -8,10 +8,12 @@ const atlas: TranslationStrings = {
'atlas.unmark': 'Αφαίρεση',
'atlas.confirmMark': 'Σήμανση αυτής της χώρας ως επισκεφθείσας;',
'atlas.confirmUnmark': 'Αφαίρεση αυτής της χώρας από τη λίστα επισκεφθέντων;',
'atlas.confirmUnmarkRegion': 'Αφαίρεση αυτής της περιοχής από τη λίστα επισκεφθέντων;',
'atlas.confirmUnmarkRegion':
'Αφαίρεση αυτής της περιοχής από τη λίστα επισκεφθέντων;',
'atlas.markVisited': 'Σήμανση ως επισκεφθείσα',
'atlas.markVisitedHint': 'Προσθέστε αυτή τη χώρα στη λίστα επισκεφθέντων',
'atlas.markRegionVisitedHint': 'Προσθέστε αυτή την περιοχή στη λίστα επισκεφθέντων',
'atlas.markRegionVisitedHint':
'Προσθέστε αυτή την περιοχή στη λίστα επισκεφθέντων',
'atlas.addToBucket': 'Προσθήκη στη λίστα επιθυμιών',
'atlas.addPoi': 'Προσθήκη μέρους',
'atlas.searchCountry': 'Αναζήτηση χώρας...',
@@ -30,7 +32,8 @@ const atlas: TranslationStrings = {
'atlas.visitedCountries': 'Επισκεφθείσες Χώρες',
'atlas.cities': 'Πόλεις',
'atlas.noData': 'Δεν υπάρχουν ταξιδιωτικά δεδομένα ακόμη',
'atlas.noDataHint': 'Δημιουργήστε ένα ταξίδι και προσθέστε μέρη για να δείτε τον παγκόσμιο χάρτη σας',
'atlas.noDataHint':
'Δημιουργήστε ένα ταξίδι και προσθέστε μέρη για να δείτε τον παγκόσμιο χάρτη σας',
'atlas.lastTrip': 'Τελευταίο ταξίδι',
'atlas.nextTrip': 'Επόμενο ταξίδι',
'atlas.daysLeft': 'ημέρες απομένουν',
+18 -9
View File
@@ -12,36 +12,43 @@ const backup: TranslationStrings = {
'backup.createFirst': 'Δημιουργία πρώτου αντιγράφου',
'backup.download': 'Λήψη',
'backup.restore': 'Επαναφορά',
'backup.confirm.restore': 'Επαναφορά αντιγράφου "{name}";\n\nΌλα τα τρέχοντα δεδομένα θα αντικατασταθούν με το αντίγραφο.',
'backup.confirm.uploadRestore': 'Μεταφόρτωση και επαναφορά αρχείου αντιγράφου "{name}";\n\nΌλα τα τρέχοντα δεδομένα θα αντικατασταθούν.',
'backup.confirm.restore':
'Επαναφορά αντιγράφου "{name}";\n\nΌλα τα τρέχοντα δεδομένα θα αντικατασταθούν με το αντίγραφο.',
'backup.confirm.uploadRestore':
'Μεταφόρτωση και επαναφορά αρχείου αντιγράφου "{name}";\n\nΌλα τα τρέχοντα δεδομένα θα αντικατασταθούν.',
'backup.confirm.delete': 'Διαγραφή αντιγράφου "{name}";',
'backup.toast.loadError': 'Αποτυχία φόρτωσης αντιγράφων',
'backup.toast.created': 'Το αντίγραφο δημιουργήθηκε επιτυχώς',
'backup.toast.createError': 'Αποτυχία δημιουργίας αντιγράφου',
'backup.toast.restored': 'Το αντίγραφο επαναφέρθηκε. Η σελίδα θα επαναφορτωθεί…',
'backup.toast.restored':
'Το αντίγραφο επαναφέρθηκε. Η σελίδα θα επαναφορτωθεί…',
'backup.toast.restoreError': 'Αποτυχία επαναφοράς',
'backup.toast.uploadError': 'Αποτυχία μεταφόρτωσης',
'backup.toast.deleted': 'Το αντίγραφο διαγράφηκε',
'backup.toast.deleteError': 'Αποτυχία διαγραφής',
'backup.toast.downloadError': 'Η λήψη απέτυχε',
'backup.toast.settingsSaved': 'Οι ρυθμίσεις αυτόματου αντιγράφου αποθηκεύτηκαν',
'backup.toast.settingsSaved':
'Οι ρυθμίσεις αυτόματου αντιγράφου αποθηκεύτηκαν',
'backup.toast.settingsError': 'Αποτυχία αποθήκευσης ρυθμίσεων',
'backup.auto.title': 'Αυτόματο Αντίγραφο',
'backup.auto.subtitle': 'Αυτόματο αντίγραφο ασφαλείας με χρονοπρόγραμμα',
'backup.auto.enable': 'Ενεργοποίηση αυτόματου αντιγράφου',
'backup.auto.enableHint': 'Τα αντίγραφα θα δημιουργούνται αυτόματα στο επιλεγμένο χρονοπρόγραμμα',
'backup.auto.enableHint':
'Τα αντίγραφα θα δημιουργούνται αυτόματα στο επιλεγμένο χρονοπρόγραμμα',
'backup.auto.interval': 'Διάστημα',
'backup.auto.hour': 'Εκτέλεση την ώρα',
'backup.auto.hourHint': 'Τοπική ώρα διακομιστή (μορφή {format})',
'backup.auto.dayOfWeek': 'Ημέρα εβδομάδας',
'backup.auto.dayOfMonth': 'Ημέρα μήνα',
'backup.auto.dayOfMonthHint': 'Περιορίζεται σε 1–28 για συμβατότητα με όλους τους μήνες',
'backup.auto.dayOfMonthHint':
'Περιορίζεται σε 1–28 για συμβατότητα με όλους τους μήνες',
'backup.auto.scheduleSummary': 'Χρονοπρόγραμμα',
'backup.auto.summaryDaily': 'Κάθε ημέρα στις {hour}:00',
'backup.auto.summaryWeekly': 'Κάθε {day} στις {hour}:00',
'backup.auto.summaryMonthly': 'Ημέρα {day} κάθε μήνα στις {hour}:00',
'backup.auto.envLocked': 'Docker',
'backup.auto.envLockedHint': 'Το αυτόματο αντίγραφο είναι ρυθμισμένο μέσω μεταβλητών περιβάλλοντος Docker. Για να αλλάξετε αυτές τις ρυθμίσεις, ενημερώστε το docker-compose.yml και επανεκκινήστε το container.',
'backup.auto.envLockedHint':
'Το αυτόματο αντίγραφο είναι ρυθμισμένο μέσω μεταβλητών περιβάλλοντος Docker. Για να αλλάξετε αυτές τις ρυθμίσεις, ενημερώστε το docker-compose.yml και επανεκκινήστε το container.',
'backup.auto.copyEnv': 'Αντιγραφή μεταβλητών Docker',
'backup.auto.envCopied': 'Οι μεταβλητές Docker αντιγράφηκαν στο πρόχειρο',
'backup.auto.keepLabel': 'Διαγραφή παλιών αντιγράφων μετά από',
@@ -63,8 +70,10 @@ const backup: TranslationStrings = {
'backup.keep.30days': '30 ημέρες',
'backup.keep.forever': 'Διατήρηση για πάντα',
'backup.restoreConfirmTitle': 'Επαναφορά Αντιγράφου;',
'backup.restoreWarning': 'Όλα τα τρέχοντα δεδομένα (ταξίδια, τοποθεσίες, χρήστες, μεταφορτώσεις) θα αντικατασταθούν μόνιμα με το αντίγραφο. Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.',
'backup.restoreTip': 'Συμβουλή: Δημιουργήστε ένα αντίγραφο της τρέχουσας κατάστασης πριν την επαναφορά.',
'backup.restoreWarning':
'Όλα τα τρέχοντα δεδομένα (ταξίδια, τοποθεσίες, χρήστες, μεταφορτώσεις) θα αντικατασταθούν μόνιμα με το αντίγραφο. Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.',
'backup.restoreTip':
'Συμβουλή: Δημιουργήστε ένα αντίγραφο της τρέχουσας κατάστασης πριν την επαναφορά.',
'backup.restoreConfirm': 'Ναι, επαναφορά',
};
export default backup;
+8 -4
View File
@@ -4,7 +4,8 @@ const budget: TranslationStrings = {
'budget.title': 'Προϋπολογισμός',
'budget.exportCsv': 'Εξαγωγή CSV',
'budget.emptyTitle': 'Δεν έχει δημιουργηθεί προϋπολογισμός ακόμη',
'budget.emptyText': 'Δημιουργήστε κατηγορίες και εγγραφές για να σχεδιάσετε τον ταξιδιωτικό σας προϋπολογισμό',
'budget.emptyText':
'Δημιουργήστε κατηγορίες και εγγραφές για να σχεδιάσετε τον ταξιδιωτικό σας προϋπολογισμό',
'budget.emptyPlaceholder': 'Εισαγάγετε όνομα κατηγορίας...',
'budget.createCategory': 'Δημιουργία Κατηγορίας',
'budget.category': 'Κατηγορία',
@@ -25,15 +26,18 @@ const budget: TranslationStrings = {
'budget.totalBudget': 'Συνολικός Προϋπολογισμός',
'budget.byCategory': 'Ανά Κατηγορία',
'budget.editTooltip': 'Κάντε κλικ για επεξεργασία',
'budget.linkedToReservation': 'Συνδεδεμένο με κράτηση — επεξεργαστείτε το όνομα εκεί',
'budget.confirm.deleteCategory': 'Είστε σίγουροι ότι θέλετε να διαγράψετε την κατηγορία "{name}" με {count} εγγραφές;',
'budget.linkedToReservation':
'Συνδεδεμένο με κράτηση — επεξεργαστείτε το όνομα εκεί',
'budget.confirm.deleteCategory':
'Είστε σίγουροι ότι θέλετε να διαγράψετε την κατηγορία "{name}" με {count} εγγραφές;',
'budget.deleteCategory': 'Διαγραφή Κατηγορίας',
'budget.perPerson': 'Ανά Άτομο',
'budget.paid': 'Πληρωμένο',
'budget.open': 'Ανοιχτό',
'budget.noMembers': 'Δεν έχουν ανατεθεί μέλη',
'budget.settlement': 'Εκκαθάριση',
'budget.settlementInfo': 'Κάντε κλικ στο avatar ενός μέλους σε μια εγγραφή προϋπολογισμού για να το επισημάνετε πράσινο — αυτό σημαίνει ότι πλήρωσε. Η εκκαθάριση δείχνει στη συνέχεια ποιος χρωστάει σε ποιον και πόσα.',
'budget.settlementInfo':
'Κάντε κλικ στο avatar ενός μέλους σε μια εγγραφή προϋπολογισμού για να το επισημάνετε πράσινο — αυτό σημαίνει ότι πλήρωσε. Η εκκαθάριση δείχνει στη συνέχεια ποιος χρωστάει σε ποιον και πόσα.',
'budget.netBalances': 'Καθαρά Υπόλοιπα',
'budget.categoriesLabel': 'κατηγορίες',
};
+2 -1
View File
@@ -13,7 +13,8 @@ const categories: TranslationStrings = {
'categories.defaultName': 'Κατηγορία',
'categories.update': 'Ενημέρωση',
'categories.create': 'Δημιουργία',
'categories.confirm.delete': 'Διαγραφή κατηγορίας; Οι τοποθεσίες σε αυτή την κατηγορία δεν θα διαγραφούν.',
'categories.confirm.delete':
'Διαγραφή κατηγορίας; Οι τοποθεσίες σε αυτή την κατηγορία δεν θα διαγραφούν.',
'categories.toast.loadError': 'Αποτυχία φόρτωσης κατηγοριών',
'categories.toast.nameRequired': 'Παρακαλώ εισάγετε όνομα',
'categories.toast.updated': 'Η κατηγορία ενημερώθηκε',
+4 -2
View File
@@ -13,8 +13,10 @@ const collab: TranslationStrings = {
'collab.chat.send': 'Αποστολή',
'collab.chat.placeholder': 'Πληκτρολογήστε ένα μήνυμα...',
'collab.chat.empty': 'Ξεκινήστε τη συζήτηση',
'collab.chat.emptyHint': 'Τα μηνύματα κοινοποιούνται σε όλα τα μέλη του ταξιδιού',
'collab.chat.emptyDesc': 'Μοιραστείτε ιδέες, σχέδια και ενημερώσεις με την ταξιδιωτική σας ομάδα',
'collab.chat.emptyHint':
'Τα μηνύματα κοινοποιούνται σε όλα τα μέλη του ταξιδιού',
'collab.chat.emptyDesc':
'Μοιραστείτε ιδέες, σχέδια και ενημερώσεις με την ταξιδιωτική σας ομάδα',
'collab.chat.today': 'Σήμερα',
'collab.chat.yesterday': 'Χθες',
'collab.chat.deletedMessage': 'διέγραψε ένα μήνυμα',
+2 -1
View File
@@ -16,7 +16,8 @@ const common: TranslationStrings = {
'common.deselectAll': 'Απο-επιλογή όλων',
'common.error': 'Σφάλμα',
'common.unknownError': 'Άγνωστο σφάλμα',
'common.tooManyAttempts': 'Πολλαπλές προσπάθειες. Παρακαλώ δοκιμάστε αργότερα.',
'common.tooManyAttempts':
'Πολλαπλές προσπάθειες. Παρακαλώ δοκιμάστε αργότερα.',
'common.back': 'Πίσω',
'common.all': 'Όλα',
'common.close': 'Κλείσιμο',
+14 -7
View File
@@ -19,10 +19,12 @@ const dashboard: TranslationStrings = {
'dashboard.timezoneCustomTzPlaceholder': 'π.χ. Αμερική/Νέα Υόρκη',
'dashboard.timezoneCustomAdd': 'Προσθήκη',
'dashboard.timezoneCustomErrorEmpty': 'Εισάγετε μια ζώνη ώρας',
'dashboard.timezoneCustomErrorInvalid': 'Μη έγκυρη ζώνη ώρας. Χρησιμοποιήστε την μορφή π.χ. Europe/Berlin',
'dashboard.timezoneCustomErrorInvalid':
'Μη έγκυρη ζώνη ώρας. Χρησιμοποιήστε την μορφή π.χ. Europe/Berlin',
'dashboard.timezoneCustomErrorDuplicate': 'Έχει προστεθεί ήδη',
'dashboard.emptyTitle': 'Δεν υπάρχουν ταξίδια ακόμη',
'dashboard.emptyText': 'Δημιουργήστε το πρώτο σας ταξίδι και ξεκινήστε τα σχέδια!',
'dashboard.emptyText':
'Δημιουργήστε το πρώτο σας ταξίδι και ξεκινήστε τα σχέδια!',
'dashboard.emptyButton': 'Δημιουργία Πρώτου Ταξίδιου',
'dashboard.nextTrip': 'Επόμενο Ταξίδι',
'dashboard.shared': 'Κοινοποιημένο',
@@ -53,7 +55,8 @@ const dashboard: TranslationStrings = {
'dashboard.toast.restoreError': 'Αποτυχία επαναφοράς ταξιδιού',
'dashboard.toast.copied': 'Ταξίδι αντιγράφηκε!',
'dashboard.toast.copyError': 'Αποτυχία αντιγραφής ταξιδιού',
'dashboard.confirm.delete': 'Διαγραφή ταξιδιού "{title}"; Όλα τα τόποι και τα σχέδια θα διαγραφούν επίσης.',
'dashboard.confirm.delete':
'Διαγραφή ταξιδιού "{title}"; Όλα τα τόποι και τα σχέδια θα διαγραφούν επίσης.',
'dashboard.confirm.copy.title': 'Αντιγραφή αυτού του ταξιδιού;',
'dashboard.confirm.copy.willCopy': 'Θα αντιγραφεί',
'dashboard.confirm.copy.will1': 'Μέρες, μέρη και σχέδια μέρας',
@@ -64,7 +67,8 @@ const dashboard: TranslationStrings = {
'dashboard.confirm.copy.will6': 'Σημειώσεις μέρας',
'dashboard.confirm.copy.wontCopy': 'Δεν θα αντιγραφούν',
'dashboard.confirm.copy.wont1': 'Συνεργάτες & αναθέσεις μελών',
'dashboard.confirm.copy.wont2': 'Σημειώσεις συνεργασίας, ψηφοφορίες & μηνύματα',
'dashboard.confirm.copy.wont2':
'Σημειώσεις συνεργασίας, ψηφοφορίες & μηνύματα',
'dashboard.confirm.copy.wont3': 'Αρχεία & φωτογραφίες',
'dashboard.confirm.copy.wont4': 'Σύνδεσμοι διαμοιρασμού',
'dashboard.confirm.copy.confirm': 'Αντιγραφή ταξιδιού',
@@ -77,8 +81,10 @@ const dashboard: TranslationStrings = {
'dashboard.startDate': 'Ημερομηνία Έναρξης',
'dashboard.endDate': 'Ημερομηνία Λήξης',
'dashboard.dayCount': 'Αριθμός Ημερών',
'dashboard.dayCountHint': 'Πόσες ημέρες να σχεδιαστούν όταν δεν έχουν οριστεί ημερομηνίες ταξιδιού.',
'dashboard.noDateHint': 'Δεν έχει οριστεί ημερομηνία — θα δημιουργηθούν 7 προεπιλεγμένες ημέρες. Μπορείτε να το αλλάξετε οποτεδήποτε.',
'dashboard.dayCountHint':
'Πόσες ημέρες να σχεδιαστούν όταν δεν έχουν οριστεί ημερομηνίες ταξιδιού.',
'dashboard.noDateHint':
'Δεν έχει οριστεί ημερομηνία — θα δημιουργηθούν 7 προεπιλεγμένες ημέρες. Μπορείτε να το αλλάξετε οποτεδήποτε.',
'dashboard.coverImage': 'Εικόνα Εξωφύλλου',
'dashboard.addCoverImage': 'Προσθήκη εικόνας εξωφύλλου (ή σύρετε & αποθέστε)',
'dashboard.addMembers': 'Συνταξιδιώτες',
@@ -87,7 +93,8 @@ const dashboard: TranslationStrings = {
'dashboard.coverUploadError': 'Αποτυχία μεταφόρτωσης',
'dashboard.coverRemoveError': 'Αποτυχία αφαίρεσης',
'dashboard.titleRequired': 'Ο τίτλος είναι υποχρεωτικός',
'dashboard.endDateError': 'Η ημερομηνία λήξης πρέπει να είναι μετά την ημερομηνία έναρξης',
'dashboard.endDateError':
'Η ημερομηνία λήξης πρέπει να είναι μετά την ημερομηνία έναρξης',
'dashboard.greeting.morning': 'Καλημέρα,',
'dashboard.greeting.afternoon': 'Καλό απόγευμα,',
'dashboard.greeting.evening': 'Καλησπέρα,',
+4 -2
View File
@@ -7,8 +7,10 @@ const day: TranslationStrings = {
'day.sunrise': 'Ανατολή',
'day.sunset': 'Δύση',
'day.hourlyForecast': 'Ωριαία Πρόγνωση',
'day.climateHint': 'Ιστορικοί μέσοι όροι — η πραγματική πρόγνωση είναι διαθέσιμη εντός 16 ημερών από αυτή την ημερομηνία.',
'day.noWeather': 'Δεν υπάρχουν διαθέσιμα δεδομένα καιρού. Προσθέστε μια τοποθεσία με συντεταγμένες.',
'day.climateHint':
'Ιστορικοί μέσοι όροι — η πραγματική πρόγνωση είναι διαθέσιμη εντός 16 ημερών από αυτή την ημερομηνία.',
'day.noWeather':
'Δεν υπάρχουν διαθέσιμα δεδομένα καιρού. Προσθέστε μια τοποθεσία με συντεταγμένες.',
'day.overview': 'Ημερήσια Επισκόπηση',
'day.accommodation': 'Διαμονή',
'day.addAccommodation': 'Προσθήκη διαμονής',
+12 -6
View File
@@ -3,12 +3,16 @@ import type { TranslationStrings } from '../types';
const dayplan: TranslationStrings = {
'dayplan.icsTooltip': 'Εξαγωγή ημερολογίου (ICS)',
'dayplan.emptyDay': 'Δεν υπάρχουν προγραμματισμένα μέρη για αυτή την ημέρα',
'dayplan.cannotReorderTransport': 'Οι κρατήσεις με σταθερή ώρα δεν μπορούν να αναδιαταχθούν',
'dayplan.cannotReorderTransport':
'Οι κρατήσεις με σταθερή ώρα δεν μπορούν να αναδιαταχθούν',
'dayplan.confirmRemoveTimeTitle': 'Αφαίρεση ώρας;',
'dayplan.confirmRemoveTimeBody': 'Αυτό το μέρος έχει σταθερή ώρα ({time}). Η μετακίνησή του θα αφαιρέσει την ώρα και θα επιτρέψει ελεύθερη ταξινόμηση.',
'dayplan.confirmRemoveTimeBody':
'Αυτό το μέρος έχει σταθερή ώρα ({time}). Η μετακίνησή του θα αφαιρέσει την ώρα και θα επιτρέψει ελεύθερη ταξινόμηση.',
'dayplan.confirmRemoveTimeAction': 'Αφαίρεση ώρας & μετακίνηση',
'dayplan.cannotDropOnTimed': 'Τα στοιχεία δεν μπορούν να τοποθετηθούν μεταξύ καταχωρήσεων με ώρα',
'dayplan.cannotBreakChronology': 'Αυτό θα έσπαγε τη χρονολογική σειρά των στοιχείων με ώρα και των κρατήσεων',
'dayplan.cannotDropOnTimed':
'Τα στοιχεία δεν μπορούν να τοποθετηθούν μεταξύ καταχωρήσεων με ώρα',
'dayplan.cannotBreakChronology':
'Αυτό θα έσπαγε τη χρονολογική σειρά των στοιχείων με ώρα και των κρατήσεων',
'dayplan.addNote': 'Προσθήκη Σημείωσης',
'dayplan.expandAll': 'Ανάπτυξη όλων των ημερών',
'dayplan.collapseAll': 'Σύμπτυξη όλων των ημερών',
@@ -25,9 +29,11 @@ const dayplan: TranslationStrings = {
'dayplan.optimize': 'Βελτιστοποίηση',
'dayplan.optimized': 'Η διαδρομή βελτιστοποιήθηκε',
'dayplan.routeError': 'Αποτυχία υπολογισμού διαδρομής',
'dayplan.toast.needTwoPlaces': 'Χρειάζονται τουλάχιστον δύο μέρη για βελτιστοποίηση διαδρομής',
'dayplan.toast.needTwoPlaces':
'Χρειάζονται τουλάχιστον δύο μέρη για βελτιστοποίηση διαδρομής',
'dayplan.toast.routeOptimized': 'Η διαδρομή βελτιστοποιήθηκε',
'dayplan.toast.noGeoPlaces': 'Δεν βρέθηκαν μέρη με συντεταγμένες για τον υπολογισμό διαδρομής',
'dayplan.toast.noGeoPlaces':
'Δεν βρέθηκαν μέρη με συντεταγμένες για τον υπολογισμό διαδρομής',
'dayplan.confirmed': 'Επιβεβαιωμένο',
'dayplan.pendingRes': 'Εκκρεμές',
'dayplan.pdf': 'PDF',
+10 -5
View File
@@ -13,7 +13,8 @@ const files: TranslationStrings = {
'files.uploadError': 'Η μεταφόρτωση απέτυχε',
'files.dropzone': 'Αποθέστε αρχεία εδώ',
'files.dropzoneHint': 'ή κάντε κλικ για περιήγηση',
'files.allowedTypes': 'Εικόνες, PDF, DOC, DOCX, XLS, XLSX, TXT, CSV · Μέγ. 50 MB',
'files.allowedTypes':
'Εικόνες, PDF, DOC, DOCX, XLS, XLSX, TXT, CSV · Μέγ. 50 MB',
'files.uploading': 'Μεταφόρτωση...',
'files.filterAll': 'Όλα',
'files.filterPdf': 'PDF',
@@ -24,14 +25,16 @@ const files: TranslationStrings = {
'files.empty': 'Δεν υπάρχουν αρχεία ακόμη',
'files.emptyHint': 'Μεταφορτώστε αρχεία για να τα επισυνάψετε στο ταξίδι σας',
'files.openTab': 'Άνοιγμα σε νέα καρτέλα',
'files.confirm.delete': 'Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το αρχείο;',
'files.confirm.delete':
'Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το αρχείο;',
'files.toast.deleted': 'Το αρχείο διαγράφηκε',
'files.toast.deleteError': 'Αποτυχία διαγραφής αρχείου',
'files.sourcePlan': 'Ημερήσιο Πλάνο',
'files.sourceBooking': 'Κράτηση',
'files.sourceTransport': 'Μεταφορά',
'files.attach': 'Επισύναψη',
'files.pasteHint': 'Μπορείτε επίσης να επικολλήσετε εικόνες από το πρόχειρο (Ctrl+V)',
'files.pasteHint':
'Μπορείτε επίσης να επικολλήσετε εικόνες από το πρόχειρο (Ctrl+V)',
'files.trash': 'Κάδος',
'files.trashEmpty': 'Ο κάδος είναι άδειος',
'files.emptyTrash': 'Άδειασμα Κάδου',
@@ -51,8 +54,10 @@ const files: TranslationStrings = {
'files.toast.assigned': 'Το αρχείο ανατέθηκε',
'files.toast.assignError': 'Η ανάθεση απέτυχε',
'files.toast.restoreError': 'Η επαναφορά απέτυχε',
'files.confirm.permanentDelete': 'Οριστική διαγραφή αυτού του αρχείου; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.',
'files.confirm.emptyTrash': 'Οριστική διαγραφή όλων των αρχείων στον κάδο; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.',
'files.confirm.permanentDelete':
'Οριστική διαγραφή αυτού του αρχείου; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.',
'files.confirm.emptyTrash':
'Οριστική διαγραφή όλων των αρχείων στον κάδο; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.',
'files.noteLabel': 'Σημείωση',
'files.notePlaceholder': 'Προσθήκη σημείωσης...',
};
+34 -17
View File
@@ -14,12 +14,14 @@ const journey: TranslationStrings = {
'journey.createError': 'Δεν ήταν δυνατή η δημιουργία ταξιδιού',
'journey.deleteError': 'Δεν ήταν δυνατή η διαγραφή ταξιδιού',
'journey.deleteConfirmTitle': 'Διαγραφή',
'journey.deleteConfirmMessage': 'Διαγραφή «{title}»; Αυτό δεν μπορεί να αναιρεθεί.',
'journey.deleteConfirmMessage':
'Διαγραφή «{title}»; Αυτό δεν μπορεί να αναιρεθεί.',
'journey.deleteConfirmGeneric': 'Είστε σίγουροι ότι θέλετε να το διαγράψετε;',
'journey.notFound': 'Το ταξίδι δεν βρέθηκε',
'journey.photos': 'Φωτογραφίες',
'journey.timelineEmpty': 'Δεν υπάρχουν στάσεις ακόμα',
'journey.timelineEmptyHint': 'Προσθέστε μια άφιξη ή γράψτε μια καταχώρηση ημερολογίου για να ξεκινήσετε',
'journey.timelineEmptyHint':
'Προσθέστε μια άφιξη ή γράψτε μια καταχώρηση ημερολογίου για να ξεκινήσετε',
'journey.status.draft': 'Πρόχειρο',
'journey.status.active': 'Ενεργό',
'journey.status.completed': 'Ολοκληρωμένο',
@@ -45,25 +47,30 @@ const journey: TranslationStrings = {
'journey.editor.titlePlaceholder': 'Δώστε ένα όνομα σε αυτή τη στιγμή...',
'journey.editor.bodyPlaceholder': 'Πείτε την ιστορία αυτής της ημέρας...',
'journey.editor.placePlaceholder': 'Τοποθεσία (προαιρετικό)',
'journey.editor.tagsPlaceholder': 'Ετικέτες: κρυμμένος θησαυρός, καλύτερο γεύμα, πρέπει να ξαναπάω...',
'journey.editor.tagsPlaceholder':
'Ετικέτες: κρυμμένος θησαυρός, καλύτερο γεύμα, πρέπει να ξαναπάω...',
'journey.visibility.private': 'Ιδιωτικό',
'journey.visibility.shared': 'Κοινόχρηστο',
'journey.visibility.public': 'Δημόσιο',
'journey.emptyState.title': 'Η ιστορία σας ξεκινά εδώ',
'journey.emptyState.subtitle': 'Κάντε άφιξη σε ένα μέρος ή γράψτε την πρώτη σας καταχώρηση ημερολογίου',
'journey.frontpage.subtitle': 'Μετατρέψτε τα ταξίδια σας σε ιστορίες που δεν θα ξεχάσετε ποτέ',
'journey.emptyState.subtitle':
'Κάντε άφιξη σε ένα μέρος ή γράψτε την πρώτη σας καταχώρηση ημερολογίου',
'journey.frontpage.subtitle':
'Μετατρέψτε τα ταξίδια σας σε ιστορίες που δεν θα ξεχάσετε ποτέ',
'journey.frontpage.createJourney': 'Δημιουργία Ταξιδιού',
'journey.frontpage.activeJourney': 'Ενεργό Ταξίδι',
'journey.frontpage.allJourneys': 'Όλα τα Ταξίδια',
'journey.frontpage.journeys': 'ταξίδια',
'journey.frontpage.createNew': 'Δημιουργία νέου Ταξιδιού',
'journey.frontpage.createNewSub': 'Επιλέξτε ταξίδια, γράψτε ιστορίες, μοιραστείτε τις περιπέτειές σας',
'journey.frontpage.createNewSub':
'Επιλέξτε ταξίδια, γράψτε ιστορίες, μοιραστείτε τις περιπέτειές σας',
'journey.frontpage.live': 'Ζωντανά',
'journey.frontpage.synced': 'Συγχρονισμένο',
'journey.frontpage.continueWriting': 'Συνέχιση γραφής',
'journey.frontpage.updated': 'Ενημερώθηκε {time}',
'journey.frontpage.suggestionLabel': 'Το ταξίδι μόλις τελείωσε',
'journey.frontpage.suggestionText': 'Μετατρέψτε το <strong>{title}</strong> σε Ταξίδι',
'journey.frontpage.suggestionText':
'Μετατρέψτε το <strong>{title}</strong> σε Ταξίδι',
'journey.frontpage.dismiss': 'Απόρριψη',
'journey.frontpage.journeyName': 'Όνομα Ταξιδιού',
'journey.frontpage.namePlaceholder': 'π.χ. Νοτιοανατολική Ασία 2026',
@@ -78,9 +85,11 @@ const journey: TranslationStrings = {
'journey.detail.newEntry': 'Νέα Καταχώρηση',
'journey.detail.editEntry': 'Επεξεργασία Καταχώρησης',
'journey.detail.noEntries': 'Δεν υπάρχουν καταχωρήσεις ακόμα',
'journey.detail.noEntriesHint': 'Προσθέστε ένα ταξίδι για να ξεκινήσετε με προτεινόμενες καταχωρήσεις',
'journey.detail.noEntriesHint':
'Προσθέστε ένα ταξίδι για να ξεκινήσετε με προτεινόμενες καταχωρήσεις',
'journey.detail.noPhotos': 'Δεν υπάρχουν φωτογραφίες ακόμα',
'journey.detail.noPhotosHint': 'Μεταφορτώστε φωτογραφίες σε καταχωρήσεις ή περιηγηθείτε τη βιβλιοθήκη Immich/Synology',
'journey.detail.noPhotosHint':
'Μεταφορτώστε φωτογραφίες σε καταχωρήσεις ή περιηγηθείτε τη βιβλιοθήκη Immich/Synology',
'journey.detail.journeyTab': 'Ταξίδι',
'journey.detail.journeyStats': 'Στατιστικά Ταξιδιού',
'journey.detail.syncedTrips': 'Συγχρονισμένα Ταξίδια',
@@ -102,12 +111,14 @@ const journey: TranslationStrings = {
'journey.verdict.couldBeBetter': 'Θα μπορούσε να ήταν καλύτερο',
'journey.synced.places': 'τοποθεσίες',
'journey.synced.synced': 'συγχρονισμένα',
'journey.editor.discardChangesConfirm': 'Έχετε μη αποθηκευμένες αλλαγές. Απόρριψη;',
'journey.editor.discardChangesConfirm':
'Έχετε μη αποθηκευμένες αλλαγές. Απόρριψη;',
'journey.editor.uploadFailed': 'Η μεταφόρτωση φωτογραφίας απέτυχε',
'journey.editor.uploadPhotos': 'Μεταφόρτωση φωτογραφιών',
'journey.editor.uploading': 'Μεταφόρτωση...',
'journey.editor.uploadingProgress': 'Μεταφόρτωση {done}/{total}.',
'journey.editor.uploadPartialFailed': '{failed} από {total} φωτογραφίες απέτυχαν — αποθηκεύστε ξανά για να δοκιμάσετε εκ νέου',
'journey.editor.uploadPartialFailed':
'{failed} από {total} φωτογραφίες απέτυχαν — αποθηκεύστε ξανά για να δοκιμάσετε εκ νέου',
'journey.editor.fromGallery': 'Από τη Συλλογή',
'journey.editor.allPhotosAdded': 'Όλες οι φωτογραφίες έχουν ήδη προστεθεί',
'journey.editor.writeStory': 'Γράψτε την ιστορία σας...',
@@ -144,7 +155,8 @@ const journey: TranslationStrings = {
'journey.trips.linkFailed': 'Αποτυχία σύνδεσης ταξιδιού',
'journey.trips.addTrip': 'Προσθήκη Ταξιδιού',
'journey.trips.unlinkTrip': 'Αποσύνδεση Ταξιδιού',
'journey.trips.unlinkMessage': 'Αποσύνδεση «{title}»; Όλες οι συγχρονισμένες καταχωρήσεις και φωτογραφίες αυτού του ταξιδιού θα διαγραφούν οριστικά. Αυτό δεν μπορεί να αναιρεθεί.',
'journey.trips.unlinkMessage':
'Αποσύνδεση «{title}»; Όλες οι συγχρονισμένες καταχωρήσεις και φωτογραφίες αυτού του ταξιδιού θα διαγραφούν οριστικά. Αυτό δεν μπορεί να αναιρεθεί.',
'journey.trips.unlink': 'Αποσύνδεση',
'journey.trips.tripUnlinked': 'Το ταξίδι αποσυνδέθηκε',
'journey.trips.unlinkFailed': 'Αποτυχία αποσύνδεσης ταξιδιού',
@@ -157,7 +169,8 @@ const journey: TranslationStrings = {
'journey.contributors.added': 'Ο συνεισφέρων προστέθηκε',
'journey.contributors.addFailed': 'Αποτυχία προσθήκης συνεισφέροντα',
'journey.contributors.remove': 'Αφαίρεση συνεισφέροντα',
'journey.contributors.removeConfirm': 'Αφαίρεση {username} από αυτό το ταξίδι;',
'journey.contributors.removeConfirm':
'Αφαίρεση {username} από αυτό το ταξίδι;',
'journey.contributors.removed': 'Ο συνεισφέρων αφαιρέθηκε',
'journey.contributors.removeFailed': 'Αποτυχία αφαίρεσης συνεισφέροντα',
'journey.share.publicShare': 'Δημόσια Κοινοποίηση',
@@ -189,10 +202,12 @@ const journey: TranslationStrings = {
'journey.settings.reopenJourney': 'Επαναφορά Ταξιδιού',
'journey.settings.archived': 'Το ταξίδι αρχειοθετήθηκε',
'journey.settings.reopened': 'Το ταξίδι επανενεργοποιήθηκε',
'journey.settings.endDescription': 'Αποκρύπτει το σήμα «Ζωντανά». Μπορείτε να το επαναφέρετε ανά πάσα στιγμή.',
'journey.settings.endDescription':
'Αποκρύπτει το σήμα «Ζωντανά». Μπορείτε να το επαναφέρετε ανά πάσα στιγμή.',
'journey.settings.delete': 'Διαγραφή',
'journey.settings.deleteJourney': 'Διαγραφή Ταξιδιού',
'journey.settings.deleteMessage': 'Διαγραφή «{title}»; Όλες οι καταχωρήσεις και οι φωτογραφίες θα χαθούν.',
'journey.settings.deleteMessage':
'Διαγραφή «{title}»; Όλες οι καταχωρήσεις και οι φωτογραφίες θα χαθούν.',
'journey.settings.saved': 'Οι ρυθμίσεις αποθηκεύτηκαν',
'journey.settings.saveFailed': 'Αποτυχία αποθήκευσης',
'journey.settings.coverUpdated': 'Το εξώφυλλο ενημερώθηκε',
@@ -200,10 +215,12 @@ const journey: TranslationStrings = {
'journey.settings.failedToDelete': 'Αποτυχία διαγραφής',
'journey.entries.deleteTitle': 'Διαγραφή Καταχώρησης',
'journey.photosUploaded': '{count} φωτογραφίες μεταφορτώθηκαν',
'journey.photosUploadFailed': 'Ορισμένες φωτογραφίες απέτυχαν να μεταφορτωθούν',
'journey.photosUploadFailed':
'Ορισμένες φωτογραφίες απέτυχαν να μεταφορτωθούν',
'journey.photosAdded': '{count} φωτογραφίες προστέθηκαν',
'journey.public.notFound': 'Δεν Βρέθηκε',
'journey.public.notFoundMessage': 'Αυτό το ταξίδι δεν υπάρχει ή ο σύνδεσμος έχει λήξει.',
'journey.public.notFoundMessage':
'Αυτό το ταξίδι δεν υπάρχει ή ο σύνδεσμος έχει λήξει.',
'journey.public.readOnly': 'Μόνο ανάγνωση · Δημόσιο Ταξίδι',
'journey.public.tagline': 'Travel Resource & Exploration Kit',
'journey.public.sharedVia': 'Κοινοποιήθηκε μέσω',
+40 -20
View File
@@ -3,7 +3,8 @@ import type { TranslationStrings } from '../types';
const login: TranslationStrings = {
'login.error': 'Η σύνδεση απέτυχε. Παρακαλώ ελέγξτε τα στοιχεία σας.',
'login.tagline': 'Τα Ταξίδια σας.\nΤο Σχέδιό σας.',
'login.description': 'Σχεδιάστε ταξίδια συνεργατικά με διαδραστικούς χάρτες, προϋπολογισμούς και συγχρονισμό σε πραγματικό χρόνο.',
'login.description':
'Σχεδιάστε ταξίδια συνεργατικά με διαδραστικούς χάρτες, προϋπολογισμούς και συγχρονισμό σε πραγματικό χρόνο.',
'login.features.maps': 'Διαδραστικοί Χάρτες',
'login.features.mapsDesc': 'Google Places, διαδρομές & ομαδοποίηση',
'login.features.realtime': 'Συγχρονισμός Πραγματικού Χρόνου',
@@ -19,16 +20,20 @@ const login: TranslationStrings = {
'login.features.files': 'Έγγραφα',
'login.features.filesDesc': 'Μεταφόρτωση & διαχείριση εγγράφων',
'login.features.routes': 'Έξυπνες Διαδρομές',
'login.features.routesDesc': 'Αυτόματη βελτιστοποίηση & εξαγωγή στο Google Maps',
'login.selfHosted': 'Self-hosted \u00B7 Open Source \u00B7 Τα δεδομένα σας παραμένουν δικά σας',
'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.createAdminHint':
'Ρυθμίστε τον πρώτο λογαριασμό διαχειριστή για το TREK.',
'login.setNewPassword': 'Ορισμός Νέου Κωδικού',
'login.setNewPasswordHint': 'Πρέπει να αλλάξετε τον κωδικό σας πριν συνεχίσετε.',
'login.setNewPasswordHint':
'Πρέπει να αλλάξετε τον κωδικό σας πριν συνεχίσετε.',
'login.createAccount': 'Δημιουργία Λογαριασμού',
'login.createAccountHint': 'Καταχωρήστε έναν νέο λογαριασμό.',
'login.creating': 'Δημιουργία…',
@@ -37,47 +42,62 @@ const login: TranslationStrings = {
'login.register': 'Εγγραφή',
'login.emailPlaceholder': 'your@email.com',
'login.username': 'Όνομα χρήστη',
'login.oidc.registrationDisabled': 'Η εγγραφή είναι απενεργοποιημένη. Επικοινωνήστε με τον διαχειριστή σας.',
'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.oidcOnly':
'Ο έλεγχος ταυτότητας με κωδικό είναι απενεργοποιημένος. Παρακαλώ συνδεθείτε χρησιμοποιώντας τον πάροχο SSO σας.',
'login.oidcLoggedOut':
'Έχετε αποσυνδεθεί. Συνδεθείτε ξανά χρησιμοποιώντας τον πάροχο SSO σας.',
'login.demoHint': 'Δοκιμάστε το demo — δεν απαιτείται εγγραφή',
'login.mfaTitle': 'Έλεγχος ταυτότητας δύο παραγόντων',
'login.mfaSubtitle': 'Εισάγετε τον 6ψήφιο κωδικό από την εφαρμογή authenticator σας.',
'login.mfaSubtitle':
'Εισάγετε τον 6ψήφιο κωδικό από την εφαρμογή authenticator σας.',
'login.mfaCodeLabel': 'Κωδικός επαλήθευσης',
'login.mfaCodeRequired': 'Εισάγετε τον κωδικό από την εφαρμογή authenticator σας.',
'login.mfaHint': 'Ανοίξτε το Google Authenticator, Authy ή άλλη εφαρμογή TOTP.',
'login.mfaCodeRequired':
'Εισάγετε τον κωδικό από την εφαρμογή authenticator σας.',
'login.mfaHint':
'Ανοίξτε το Google Authenticator, Authy ή άλλη εφαρμογή TOTP.',
'login.mfaBack': '← Πίσω στη σύνδεση',
'login.mfaVerify': 'Επαλήθευση',
'login.invalidInviteLink': 'Μη έγκυρος ή ληγμένος σύνδεσμος πρόσκλησης',
'login.oidcFailed': 'Η σύνδεση OIDC απέτυχε',
'login.usernameRequired': 'Το όνομα χρήστη είναι υποχρεωτικό',
'login.passwordMinLength': 'Ο κωδικός πρέπει να έχει τουλάχιστον 8 χαρακτήρες',
'login.passwordMinLength':
'Ο κωδικός πρέπει να έχει τουλάχιστον 8 χαρακτήρες',
'login.forgotPassword': 'Ξεχάσατε τον κωδικό;',
'login.forgotPasswordTitle': 'Επαναφορά του κωδικού σας',
'login.forgotPasswordBody': 'Εισάγετε το email με το οποίο εγγραφήκατε. Αν υπάρχει λογαριασμός, θα στείλουμε έναν σύνδεσμο επαναφοράς.',
'login.forgotPasswordBody':
'Εισάγετε το email με το οποίο εγγραφήκατε. Αν υπάρχει λογαριασμός, θα στείλουμε έναν σύνδεσμο επαναφοράς.',
'login.forgotPasswordSubmit': 'Αποστολή συνδέσμου επαναφοράς',
'login.forgotPasswordSentTitle': 'Ελέγξτε το email σας',
'login.forgotPasswordSentBody': 'Αν υπάρχει λογαριασμός για αυτό το email, ένας σύνδεσμος επαναφοράς είναι καθ\'οδόν. Λήγει σε 60 λεπτά.',
'login.forgotPasswordSmtpHintOff': 'Προσοχή: ο διαχειριστής σας δεν έχει διαμορφώσει SMTP, οπότε ο σύνδεσμος επαναφοράς θα γραφτεί στην κονσόλα του server αντί να σταλεί με 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.resetPasswordBody':
'Επιλέξτε έναν ισχυρό κωδικό που δεν έχετε χρησιμοποιήσει εδώ ξανά. Ελάχιστο 8 χαρακτήρες.',
'login.resetPasswordMfaBody':
'Εισάγετε τον κωδικό 2FA ή έναν εφεδρικό κωδικό για να ολοκληρωθεί η επαναφορά.',
'login.resetPasswordSubmit': 'Επαναφορά κωδικού',
'login.resetPasswordVerify': 'Επαλήθευση & επαναφορά',
'login.resetPasswordSuccessTitle': 'Ο κωδικός ενημερώθηκε',
'login.resetPasswordSuccessBody': 'Μπορείτε τώρα να συνδεθείτε με τον νέο σας κωδικό.',
'login.resetPasswordSuccessBody':
'Μπορείτε τώρα να συνδεθείτε με τον νέο σας κωδικό.',
'login.resetPasswordInvalidLink': 'Μη έγκυρος σύνδεσμος επαναφοράς',
'login.resetPasswordInvalidLinkBody': 'Αυτός ο σύνδεσμος λείπει ή έχει χαλάσει. Ζητήστε έναν νέο για να συνεχίσετε.',
'login.resetPasswordFailed': 'Η επαναφορά απέτυχε. Ο σύνδεσμος μπορεί να έχει λήξει.',
'login.resetPasswordInvalidLinkBody':
'Αυτός ο σύνδεσμος λείπει ή έχει χαλάσει. Ζητήστε έναν νέο για να συνεχίσετε.',
'login.resetPasswordFailed':
'Η επαναφορά απέτυχε. Ο σύνδεσμος μπορεί να έχει λήξει.',
};
export default login;
+26 -13
View File
@@ -3,17 +3,22 @@ import type { TranslationStrings } from '../types';
const memories: TranslationStrings = {
'memories.title': 'Φωτογραφίες',
'memories.notConnected': 'Το {provider_name} δεν είναι συνδεδεμένο',
'memories.notConnectedHint': 'Συνδέστε την υπηρεσία {provider_name} στις Ρυθμίσεις για να μπορείτε να προσθέτετε φωτογραφίες σε αυτό το ταξίδι.',
'memories.notConnectedMultipleHint': 'Συνδέστε οποιονδήποτε από αυτούς τους παρόχους φωτογραφιών: {provider_names} στις Ρυθμίσεις για να μπορείτε να προσθέτετε φωτογραφίες σε αυτό το ταξίδι.',
'memories.noDates': 'Προσθέστε ημερομηνίες στο ταξίδι σας για να φορτωθούν φωτογραφίες.',
'memories.notConnectedHint':
'Συνδέστε την υπηρεσία {provider_name} στις Ρυθμίσεις για να μπορείτε να προσθέτετε φωτογραφίες σε αυτό το ταξίδι.',
'memories.notConnectedMultipleHint':
'Συνδέστε οποιονδήποτε από αυτούς τους παρόχους φωτογραφιών: {provider_names} στις Ρυθμίσεις για να μπορείτε να προσθέτετε φωτογραφίες σε αυτό το ταξίδι.',
'memories.noDates':
'Προσθέστε ημερομηνίες στο ταξίδι σας για να φορτωθούν φωτογραφίες.',
'memories.noPhotos': 'Δεν βρέθηκαν φωτογραφίες',
'memories.noPhotosHint': 'Δεν βρέθηκαν φωτογραφίες στο {provider_name} για το εύρος ημερομηνιών αυτού του ταξιδιού.',
'memories.noPhotosHint':
'Δεν βρέθηκαν φωτογραφίες στο {provider_name} για το εύρος ημερομηνιών αυτού του ταξιδιού.',
'memories.photosFound': 'φωτογραφίες',
'memories.fromOthers': 'από άλλους',
'memories.sharePhotos': 'Κοινή χρήση φωτογραφιών',
'memories.sharing': 'Κοινή χρήση',
'memories.reviewTitle': 'Ελέγξτε τις φωτογραφίες σας',
'memories.reviewHint': 'Κάντε κλικ στις φωτογραφίες για να τις εξαιρέσετε από την κοινή χρήση.',
'memories.reviewHint':
'Κάντε κλικ στις φωτογραφίες για να τις εξαιρέσετε από την κοινή χρήση.',
'memories.shareCount': 'Κοινή χρήση {count} φωτογραφιών',
'memories.providerUrl': 'URL Διακομιστή',
'memories.providerApiKey': 'API Key',
@@ -21,8 +26,10 @@ const memories: TranslationStrings = {
'memories.providerPassword': 'Κωδικός',
'memories.providerOTP': 'Κωδικός MFA (αν είναι ενεργοποιημένος)',
'memories.skipSSLVerification': 'Παράλειψη επαλήθευσης πιστοποιητικού SSL',
'memories.immichAutoUpload': 'Αντικατοπτρισμός φωτογραφιών journey στο Immich κατά τη μεταφόρτωση',
'memories.providerUrlHintSynology': 'Συμπεριλάβετε τη διαδρομή της εφαρμογής Photos στο URL, π.χ. https://nas:5001/photo',
'memories.immichAutoUpload':
'Αντικατοπτρισμός φωτογραφιών journey στο Immich κατά τη μεταφόρτωση',
'memories.providerUrlHintSynology':
'Συμπεριλάβετε τη διαδρομή της εφαρμογής Photos στο URL, π.χ. https://nas:5001/photo',
'memories.testConnection': 'Δοκιμή σύνδεσης',
'memories.testShort': 'Δοκιμή',
'memories.testFirst': 'Δοκιμάστε πρώτα τη σύνδεση',
@@ -31,8 +38,10 @@ const memories: TranslationStrings = {
'memories.connectionSuccess': 'Συνδέθηκε στο {provider_name}',
'memories.connectionError': 'Δεν ήταν δυνατή η σύνδεση στο {provider_name}',
'memories.saved': 'Οι ρυθμίσεις {provider_name} αποθηκεύτηκαν',
'memories.providerDisconnectedBanner': 'Η σύνδεση {provider_name} χάθηκε. Επανασυνδεθείτε στις Ρυθμίσεις για να δείτε φωτογραφίες.',
'memories.saveError': 'Δεν ήταν δυνατή η αποθήκευση των ρυθμίσεων {provider_name}',
'memories.providerDisconnectedBanner':
'Η σύνδεση {provider_name} χάθηκε. Επανασυνδεθείτε στις Ρυθμίσεις για να δείτε φωτογραφίες.',
'memories.saveError':
'Δεν ήταν δυνατή η αποθήκευση των ρυθμίσεων {provider_name}',
'memories.addPhotos': 'Προσθήκη φωτογραφιών',
'memories.linkAlbum': 'Σύνδεση Άλμπουμ',
'memories.selectAlbum': 'Επιλογή Άλμπουμ {provider_name}',
@@ -55,7 +64,8 @@ const memories: TranslationStrings = {
'memories.tripDates': 'Ημερομηνίες ταξιδιού',
'memories.allPhotos': 'Όλες οι φωτογραφίες',
'memories.confirmShareTitle': 'Κοινή χρήση με τα μέλη του ταξιδιού;',
'memories.confirmShareHint': '{count} φωτογραφίες θα είναι ορατές σε όλα τα μέλη αυτού του ταξιδιού. Μπορείτε να κάνετε μεμονωμένες φωτογραφίες ιδιωτικές αργότερα.',
'memories.confirmShareHint':
'{count} φωτογραφίες θα είναι ορατές σε όλα τα μέλη αυτού του ταξιδιού. Μπορείτε να κάνετε μεμονωμένες φωτογραφίες ιδιωτικές αργότερα.',
'memories.confirmShareButton': 'Κοινή χρήση φωτογραφιών',
'memories.error.loadAlbums': 'Αποτυχία φόρτωσης άλμπουμ',
'memories.error.linkAlbum': 'Αποτυχία σύνδεσης άλμπουμ',
@@ -65,8 +75,11 @@ const memories: TranslationStrings = {
'memories.error.addPhotos': 'Αποτυχία προσθήκης φωτογραφιών',
'memories.error.removePhoto': 'Αποτυχία αφαίρεσης φωτογραφίας',
'memories.error.toggleSharing': 'Αποτυχία ενημέρωσης κοινής χρήσης',
'memories.saveRouteNotConfigured': 'Η διαδρομή αποθήκευσης δεν έχει ρυθμιστεί για αυτόν τον πάροχο',
'memories.testRouteNotConfigured': 'Η διαδρομή δοκιμής δεν έχει ρυθμιστεί για αυτόν τον πάροχο',
'memories.fillRequiredFields': 'Παρακαλώ συμπληρώστε όλα τα απαιτούμενα πεδία',
'memories.saveRouteNotConfigured':
'Η διαδρομή αποθήκευσης δεν έχει ρυθμιστεί για αυτόν τον πάροχο',
'memories.testRouteNotConfigured':
'Η διαδρομή δοκιμής δεν έχει ρυθμιστεί για αυτόν τον πάροχο',
'memories.fillRequiredFields':
'Παρακαλώ συμπληρώστε όλα τα απαιτούμενα πεδία',
};
export default memories;
+10 -5
View File
@@ -4,7 +4,8 @@ const notif: TranslationStrings = {
'notif.test.title': '[Δοκιμή] Ειδοποίηση',
'notif.test.simple.text': 'Αυτή είναι μια απλή δοκιμαστική ειδοποίηση.',
'notif.test.boolean.text': 'Αποδέχεστε αυτή τη δοκιμαστική ειδοποίηση;',
'notif.test.navigate.text': 'Κάντε κλικ παρακάτω για μετάβαση στον πίνακα ελέγχου.',
'notif.test.navigate.text':
'Κάντε κλικ παρακάτω για μετάβαση στον πίνακα ελέγχου.',
'notif.trip_invite.title': 'Πρόσκληση Ταξιδιού',
'notif.trip_invite.text': 'Ο/Η {actor} σας προσκάλεσε στο {trip}',
'notif.booking_change.title': 'Η Κράτηση Ενημερώθηκε',
@@ -14,13 +15,16 @@ const notif: TranslationStrings = {
'notif.todo_due.title': 'Εργασία προς λήξη',
'notif.todo_due.text': 'Η εργασία {todo} στο {trip} λήγει στις {due}',
'notif.vacay_invite.title': 'Πρόσκληση Σύντηξης Vacay',
'notif.vacay_invite.text': 'Ο/Η {actor} σας προσκάλεσε να συγχωνεύσετε τα σχέδια διακοπών',
'notif.vacay_invite.text':
'Ο/Η {actor} σας προσκάλεσε να συγχωνεύσετε τα σχέδια διακοπών',
'notif.photos_shared.title': 'Κοινοποίηση Φωτογραφιών',
'notif.photos_shared.text': 'Ο/Η {actor} μοιράστηκε {count} φωτογραφία(ες) στο {trip}',
'notif.photos_shared.text':
'Ο/Η {actor} μοιράστηκε {count} φωτογραφία(ες) στο {trip}',
'notif.collab_message.title': 'Νέο Μήνυμα',
'notif.collab_message.text': 'Ο/Η {actor} έστειλε ένα μήνυμα στο {trip}',
'notif.packing_tagged.title': 'Ανάθεση Αποσκευών',
'notif.packing_tagged.text': 'Ο/Η {actor} σας ανέθεσε στο {category} του {trip}',
'notif.packing_tagged.text':
'Ο/Η {actor} σας ανέθεσε στο {category} του {trip}',
'notif.version_available.title': 'Νέα Έκδοση Διαθέσιμη',
'notif.version_available.text': 'Το TREK {version} είναι τώρα διαθέσιμο',
'notif.action.view_trip': 'Προβολή Ταξιδιού',
@@ -35,6 +39,7 @@ const notif: TranslationStrings = {
'notif.generic.title': 'Ειδοποίηση',
'notif.generic.text': 'Έχετε μια νέα ειδοποίηση',
'notif.dev.unknown_event.title': '[DEV] Άγνωστο Συμβάν',
'notif.dev.unknown_event.text': 'Ο τύπος συμβάντος "{event}" δεν είναι εγγεγραμμένος στο EVENT_NOTIFICATION_CONFIG',
'notif.dev.unknown_event.text':
'Ο τύπος συμβάντος "{event}" δεν είναι εγγεγραμμένος στο EVENT_NOTIFICATION_CONFIG',
};
export default notif;
+14 -7
View File
@@ -13,23 +13,30 @@ const notifications: TranslationStrings = {
'notifications.markUnread': 'Σήμανση ως μη αναγνωσμένη',
'notifications.delete': 'Διαγραφή',
'notifications.system': 'Σύστημα',
'notifications.synologySessionCleared.title': 'Το Synology Photos αποσυνδέθηκε',
'notifications.synologySessionCleared.text': 'Ο διακομιστής ή ο λογαριασμός σας άλλαξε — μεταβείτε στις Ρυθμίσεις για να δοκιμάσετε ξανά τη σύνδεσή σας.',
'notifications.synologySessionCleared.title':
'Το Synology Photos αποσυνδέθηκε',
'notifications.synologySessionCleared.text':
'Ο διακομιστής ή ο λογαριασμός σας άλλαξε — μεταβείτε στις Ρυθμίσεις για να δοκιμάσετε ξανά τη σύνδεσή σας.',
'notifications.versionAvailable.title': 'Διαθέσιμη Ενημέρωση',
'notifications.versionAvailable.text': 'Το TREK {version} είναι τώρα διαθέσιμο.',
'notifications.versionAvailable.text':
'Το TREK {version} είναι τώρα διαθέσιμο.',
'notifications.versionAvailable.button': 'Προβολή Λεπτομερειών',
'notifications.test.title': 'Δοκιμαστική ειδοποίηση από {actor}',
'notifications.test.text': 'Αυτή είναι μια απλή δοκιμαστική ειδοποίηση.',
'notifications.test.booleanTitle': 'Ο {actor} ζητά την έγκρισή σας',
'notifications.test.booleanText': 'Αυτή είναι μια δοκιμαστική ειδοποίηση boolean. Επιλέξτε μια ενέργεια παρακάτω.',
'notifications.test.booleanText':
'Αυτή είναι μια δοκιμαστική ειδοποίηση boolean. Επιλέξτε μια ενέργεια παρακάτω.',
'notifications.test.accept': 'Έγκριση',
'notifications.test.decline': 'Απόρριψη',
'notifications.test.navigateTitle': 'Ρίξτε μια ματιά',
'notifications.test.navigateText': 'Αυτή είναι μια δοκιμαστική ειδοποίηση πλοήγησης.',
'notifications.test.navigateText':
'Αυτή είναι μια δοκιμαστική ειδοποίηση πλοήγησης.',
'notifications.test.goThere': 'Μετάβαση εκεί',
'notifications.test.adminTitle': 'Εκπομπή διαχειριστή',
'notifications.test.adminText': 'Ο {actor} έστειλε μια δοκιμαστική ειδοποίηση σε όλους τους διαχειριστές.',
'notifications.test.adminText':
'Ο {actor} έστειλε μια δοκιμαστική ειδοποίηση σε όλους τους διαχειριστές.',
'notifications.test.tripTitle': 'Ο {actor} δημοσίευσε στο ταξίδι σας',
'notifications.test.tripText': 'Δοκιμαστική ειδοποίηση για το ταξίδι «{trip}».',
'notifications.test.tripText':
'Δοκιμαστική ειδοποίηση για το ταξίδι «{trip}».',
};
export default notifications;
+54 -27
View File
@@ -15,58 +15,85 @@ const oauth: TranslationStrings = {
'oauth.scope.group.weather': 'Καιρός',
'oauth.scope.group.journey': 'Ταξίδι',
'oauth.scope.trips:read.label': 'Προβολή ταξιδιών & δρομολογίων',
'oauth.scope.trips:read.description': 'Ανάγνωση ταξιδιών, ημερών, σημειώσεων και μελών',
'oauth.scope.trips:read.description':
'Ανάγνωση ταξιδιών, ημερών, σημειώσεων και μελών',
'oauth.scope.trips:write.label': 'Επεξεργασία ταξιδιών & δρομολογίων',
'oauth.scope.trips:write.description': 'Δημιουργία και ενημέρωση ταξιδιών, ημερών, σημειώσεων και διαχείριση μελών',
'oauth.scope.trips:write.description':
'Δημιουργία και ενημέρωση ταξιδιών, ημερών, σημειώσεων και διαχείριση μελών',
'oauth.scope.trips:delete.label': 'Διαγραφή ταξιδιών',
'oauth.scope.trips:delete.description': 'Οριστική διαγραφή ολόκληρων ταξιδιών — αυτή η ενέργεια είναι μη ανατρέψιμη',
'oauth.scope.trips:delete.description':
'Οριστική διαγραφή ολόκληρων ταξιδιών — αυτή η ενέργεια είναι μη ανατρέψιμη',
'oauth.scope.trips:share.label': 'Διαχείριση συνδέσμων κοινής χρήσης',
'oauth.scope.trips:share.description': 'Δημιουργία, ενημέρωση και ανάκληση δημόσιων συνδέσμων κοινής χρήσης για ταξίδια',
'oauth.scope.trips:share.description':
'Δημιουργία, ενημέρωση και ανάκληση δημόσιων συνδέσμων κοινής χρήσης για ταξίδια',
'oauth.scope.places:read.label': 'Προβολή τοποθεσιών & δεδομένων χάρτη',
'oauth.scope.places:read.description': 'Ανάγνωση τοποθεσιών, αναθέσεων ημερών, ετικετών και κατηγοριών',
'oauth.scope.places:read.description':
'Ανάγνωση τοποθεσιών, αναθέσεων ημερών, ετικετών και κατηγοριών',
'oauth.scope.places:write.label': 'Διαχείριση τοποθεσιών',
'oauth.scope.places:write.description': 'Δημιουργία, ενημέρωση και διαγραφή τοποθεσιών, αναθέσεων και ετικετών',
'oauth.scope.places:write.description':
'Δημιουργία, ενημέρωση και διαγραφή τοποθεσιών, αναθέσεων και ετικετών',
'oauth.scope.atlas:read.label': 'Προβολή Atlas',
'oauth.scope.atlas:read.description': 'Ανάγνωση περιοχών που έχουν επισκεφθεί, χωρών και λίστας επιθυμιών',
'oauth.scope.atlas:read.description':
'Ανάγνωση περιοχών που έχουν επισκεφθεί, χωρών και λίστας επιθυμιών',
'oauth.scope.atlas:write.label': 'Διαχείριση Atlas',
'oauth.scope.atlas:write.description': 'Σήμανση χωρών και περιοχών ως επισκεφθεισών, διαχείριση λίστας επιθυμιών',
'oauth.scope.atlas:write.description':
'Σήμανση χωρών και περιοχών ως επισκεφθεισών, διαχείριση λίστας επιθυμιών',
'oauth.scope.packing:read.label': 'Προβολή λιστών αποσκευών',
'oauth.scope.packing:read.description': 'Ανάγνωση αντικειμένων αποσκευών, τσαντών και αναθέσεων κατηγοριών',
'oauth.scope.packing:read.description':
'Ανάγνωση αντικειμένων αποσκευών, τσαντών και αναθέσεων κατηγοριών',
'oauth.scope.packing:write.label': 'Διαχείριση λιστών αποσκευών',
'oauth.scope.packing:write.description': 'Προσθήκη, ενημέρωση, διαγραφή, εναλλαγή και αναδιάταξη αντικειμένων και τσαντών',
'oauth.scope.packing:write.description':
'Προσθήκη, ενημέρωση, διαγραφή, εναλλαγή και αναδιάταξη αντικειμένων και τσαντών',
'oauth.scope.todos:read.label': 'Προβολή λιστών εργασιών',
'oauth.scope.todos:read.description': 'Ανάγνωση εργασιών ταξιδιού και αναθέσεων κατηγοριών',
'oauth.scope.todos:read.description':
'Ανάγνωση εργασιών ταξιδιού και αναθέσεων κατηγοριών',
'oauth.scope.todos:write.label': 'Διαχείριση λιστών εργασιών',
'oauth.scope.todos:write.description': 'Δημιουργία, ενημέρωση, εναλλαγή, διαγραφή και αναδιάταξη εργασιών',
'oauth.scope.todos:write.description':
'Δημιουργία, ενημέρωση, εναλλαγή, διαγραφή και αναδιάταξη εργασιών',
'oauth.scope.budget:read.label': 'Προβολή προϋπολογισμού',
'oauth.scope.budget:read.description': 'Ανάγνωση στοιχείων προϋπολογισμού και ανάλυσης εξόδων',
'oauth.scope.budget:read.description':
'Ανάγνωση στοιχείων προϋπολογισμού και ανάλυσης εξόδων',
'oauth.scope.budget:write.label': 'Διαχείριση προϋπολογισμού',
'oauth.scope.budget:write.description': 'Δημιουργία, ενημέρωση και διαγραφή στοιχείων προϋπολογισμού',
'oauth.scope.budget:write.description':
'Δημιουργία, ενημέρωση και διαγραφή στοιχείων προϋπολογισμού',
'oauth.scope.reservations:read.label': 'Προβολή κρατήσεων',
'oauth.scope.reservations:read.description': 'Ανάγνωση κρατήσεων και λεπτομερειών διαμονής',
'oauth.scope.reservations:read.description':
'Ανάγνωση κρατήσεων και λεπτομερειών διαμονής',
'oauth.scope.reservations:write.label': 'Διαχείριση κρατήσεων',
'oauth.scope.reservations:write.description': 'Δημιουργία, ενημέρωση, διαγραφή και αναδιάταξη κρατήσεων',
'oauth.scope.reservations:write.description':
'Δημιουργία, ενημέρωση, διαγραφή και αναδιάταξη κρατήσεων',
'oauth.scope.collab:read.label': 'Προβολή συνεργασίας',
'oauth.scope.collab:read.description': 'Ανάγνωση σημειώσεων, δημοσκοπήσεων και μηνυμάτων συνεργασίας',
'oauth.scope.collab:read.description':
'Ανάγνωση σημειώσεων, δημοσκοπήσεων και μηνυμάτων συνεργασίας',
'oauth.scope.collab:write.label': 'Διαχείριση συνεργασίας',
'oauth.scope.collab:write.description': 'Δημιουργία, ενημέρωση και διαγραφή σημειώσεων, δημοσκοπήσεων και μηνυμάτων συνεργασίας',
'oauth.scope.collab:write.description':
'Δημιουργία, ενημέρωση και διαγραφή σημειώσεων, δημοσκοπήσεων και μηνυμάτων συνεργασίας',
'oauth.scope.notifications:read.label': 'Προβολή ειδοποιήσεων',
'oauth.scope.notifications:read.description': 'Ανάγνωση ειδοποιήσεων εντός εφαρμογής και μετρητών μη αναγνωσμένων',
'oauth.scope.notifications:read.description':
'Ανάγνωση ειδοποιήσεων εντός εφαρμογής και μετρητών μη αναγνωσμένων',
'oauth.scope.notifications:write.label': 'Διαχείριση ειδοποιήσεων',
'oauth.scope.notifications:write.description': 'Σήμανση ειδοποιήσεων ως αναγνωσμένων και απάντηση σε αυτές',
'oauth.scope.notifications:write.description':
'Σήμανση ειδοποιήσεων ως αναγνωσμένων και απάντηση σε αυτές',
'oauth.scope.vacay:read.label': 'Προβολή πλάνων διακοπών',
'oauth.scope.vacay:read.description': 'Ανάγνωση δεδομένων σχεδιασμού διακοπών, καταχωρήσεων και στατιστικών',
'oauth.scope.vacay:read.description':
'Ανάγνωση δεδομένων σχεδιασμού διακοπών, καταχωρήσεων και στατιστικών',
'oauth.scope.vacay:write.label': 'Διαχείριση πλάνων διακοπών',
'oauth.scope.vacay:write.description': 'Δημιουργία και διαχείριση καταχωρήσεων διακοπών, αργιών και κοινών πλάνων',
'oauth.scope.vacay:write.description':
'Δημιουργία και διαχείριση καταχωρήσεων διακοπών, αργιών και κοινών πλάνων',
'oauth.scope.geo:read.label': 'Χάρτες & γεωκωδικοποίηση',
'oauth.scope.geo:read.description': 'Αναζήτηση τοποθεσιών, επίλυση URL χαρτών και αντίστροφη γεωκωδικοποίηση συντεταγμένων',
'oauth.scope.geo:read.description':
'Αναζήτηση τοποθεσιών, επίλυση URL χαρτών και αντίστροφη γεωκωδικοποίηση συντεταγμένων',
'oauth.scope.weather:read.label': 'Προγνώσεις καιρού',
'oauth.scope.weather:read.description': 'Λήψη προγνώσεων καιρού για τοποθεσίες και ημερομηνίες ταξιδιών',
'oauth.scope.weather:read.description':
'Λήψη προγνώσεων καιρού για τοποθεσίες και ημερομηνίες ταξιδιών',
'oauth.scope.journey:read.label': 'Προβολή ταξιδιών',
'oauth.scope.journey:read.description': 'Ανάγνωση ταξιδιών, καταχωρήσεων και λίστας συνεισφερόντων',
'oauth.scope.journey:read.description':
'Ανάγνωση ταξιδιών, καταχωρήσεων και λίστας συνεισφερόντων',
'oauth.scope.journey:write.label': 'Διαχείριση ταξιδιών',
'oauth.scope.journey:write.description': 'Δημιουργία, ενημέρωση και διαγραφή ταξιδιών και των καταχωρήσεων τους',
'oauth.scope.journey:write.description':
'Δημιουργία, ενημέρωση και διαγραφή ταξιδιών και των καταχωρήσεων τους',
'oauth.scope.journey:share.label': 'Διαχείριση συνδέσμων ταξιδιών',
'oauth.scope.journey:share.description': 'Δημιουργία, ενημέρωση και ανάκληση δημόσιων συνδέσμων κοινής χρήσης για ταξίδια',
'oauth.scope.journey:share.description':
'Δημιουργία, ενημέρωση και ανάκληση δημόσιων συνδέσμων κοινής χρήσης για ταξίδια',
};
export default oauth;
+38 -34
View File
@@ -5,8 +5,10 @@ const packing: TranslationStrings = {
'packing.empty': 'Η λίστα αποσκευών είναι κενή',
'packing.import': 'Εισαγωγή',
'packing.importTitle': 'Εισαγωγή Λίστας Αποσκευών',
'packing.importHint': 'Ένα αντικείμενο ανά γραμμή. Μορφή: Κατηγορία, Όνομα, Βάρος σε g (προαιρετικό), Τσάντα (προαιρετικό), checked/unchecked (προαιρετικό)',
'packing.importPlaceholder': 'Υγιεινή, Οδοντόβουρτσα\nΡούχα, T-Shirts, 200\nΈγγραφα, Διαβατήριο, , Χειραποσκευή\nΗλεκτρονικά, Φορτιστής, 50, Βαλίτσα, checked',
'packing.importHint':
'Ένα αντικείμενο ανά γραμμή. Μορφή: Κατηγορία, Όνομα, Βάρος σε g (προαιρετικό), Τσάντα (προαιρετικό), checked/unchecked (προαιρετικό)',
'packing.importPlaceholder':
'Υγιεινή, Οδοντόβουρτσα\nΡούχα, T-Shirts, 200\nΈγγραφα, Διαβατήριο, , Χειραποσκευή\nΗλεκτρονικά, Φορτιστής, 50, Βαλίτσα, checked',
'packing.importCsv': 'Φόρτωση CSV/TXT',
'packing.importAction': 'Εισαγωγή {count}',
'packing.importSuccess': '{count} αντικείμενα εισήχθησαν',
@@ -49,44 +51,46 @@ const packing: TranslationStrings = {
'packing.bagName': 'Όνομα τσάντας...',
'packing.addBag': 'Προσθήκη τσάντας',
'packing.changeCategory': 'Αλλαγή Κατηγορίας',
'packing.confirm.clearChecked': 'Είστε σίγουροι ότι θέλετε να αφαιρέσετε {count} επιλεγμένα αντικείμενα;',
'packing.confirm.deleteCat': 'Είστε σίγουροι ότι θέλετε να διαγράψετε την κατηγορία "{name}" με {count} αντικείμενα;',
'packing.confirm.clearChecked':
'Είστε σίγουροι ότι θέλετε να αφαιρέσετε {count} επιλεγμένα αντικείμενα;',
'packing.confirm.deleteCat':
'Είστε σίγουροι ότι θέλετε να διαγράψετε την κατηγορία "{name}" με {count} αντικείμενα;',
'packing.defaultCategory': 'Άλλα',
'packing.toast.saveError': 'Αποτυχία αποθήκευσης',
'packing.toast.deleteError': 'Αποτυχία διαγραφής',
'packing.toast.renameError': 'Αποτυχία μετονομασίας',
'packing.toast.addError': 'Αποτυχία προσθήκης',
'packing.suggestions.items': [
{ name: 'Διαβατήριο', category: 'Έγγραφα' },
{ name: 'Ταυτότητα', category: 'Έγγραφα' },
{ name: 'Ταξιδιωτική Ασφάλιση', category: 'Έγγραφα' },
{ name: 'Αεροπορικά Εισιτήρια', category: 'Έγγραφα' },
{ name: 'Πιστωτική Κάρτα', category: 'Οικονομικά' },
{ name: 'Μετρητά', category: 'Οικονομικά' },
{ name: 'Visa', category: 'Έγγραφα' },
{ name: 'T-Shirts', category: 'Ρούχα' },
{ name: 'Παντελόνια', category: 'Ρούχα' },
{ name: 'Εσώρουχα', category: 'Ρούχα' },
{ name: 'Κάλτσες', category: 'Ρούχα' },
{ name: 'Μπουφάν', category: 'Ρούχα' },
{ name: 'Πιτζάμες', category: 'Ρούχα' },
{ name: 'Μαγιό', category: 'Ρούχα' },
{ name: 'Αδιάβροχο', category: 'Ρούχα' },
{ name: 'Άνετα Παπούτσια', category: 'Ρούχα' },
{ name: 'Οδοντόβουρτσα', category: 'Είδη Υγιεινής' },
{ name: 'Οδοντόκρεμα', category: 'Είδη Υγιεινής' },
{ name: 'Σαμπουάν', category: 'Είδη Υγιεινής' },
{ name: 'Αποσμητικό', category: 'Είδη Υγιεινής' },
{ name: 'Αντηλιακό', category: 'Είδη Υγιεινής' },
{ name: 'Ξυριστική Μηχανή', category: 'Είδη Υγιεινής' },
{ name: 'Φορτιστής', category: 'Ηλεκτρονικά' },
{ name: 'Power Bank', category: 'Ηλεκτρονικά' },
{ name: 'Ακουστικά', category: 'Ηλεκτρονικά' },
{ name: 'Ταξιδιωτικός Αντάπτορας', category: 'Ηλεκτρονικά' },
{ name: 'Κάμερα', category: 'Ηλεκτρονικά' },
{ name: 'Παυσίπονα', category: 'Υγεία' },
{ name: 'Τσιρότα', category: 'Υγεία' },
{ name: 'Απολυμαντικό', category: 'Υγεία' },
{ name: 'Διαβατήριο', category: 'Έγγραφα' },
{ name: 'Ταυτότητα', category: 'Έγγραφα' },
{ name: 'Ταξιδιωτική Ασφάλιση', category: 'Έγγραφα' },
{ name: 'Αεροπορικά Εισιτήρια', category: 'Έγγραφα' },
{ name: 'Πιστωτική Κάρτα', category: 'Οικονομικά' },
{ name: 'Μετρητά', category: 'Οικονομικά' },
{ name: 'Visa', category: 'Έγγραφα' },
{ name: 'T-Shirts', category: 'Ρούχα' },
{ name: 'Παντελόνια', category: 'Ρούχα' },
{ name: 'Εσώρουχα', category: 'Ρούχα' },
{ name: 'Κάλτσες', category: 'Ρούχα' },
{ name: 'Μπουφάν', category: 'Ρούχα' },
{ name: 'Πιτζάμες', category: 'Ρούχα' },
{ name: 'Μαγιό', category: 'Ρούχα' },
{ name: 'Αδιάβροχο', category: 'Ρούχα' },
{ name: 'Άνετα Παπούτσια', category: 'Ρούχα' },
{ name: 'Οδοντόβουρτσα', category: 'Είδη Υγιεινής' },
{ name: 'Οδοντόκρεμα', category: 'Είδη Υγιεινής' },
{ name: 'Σαμπουάν', category: 'Είδη Υγιεινής' },
{ name: 'Αποσμητικό', category: 'Είδη Υγιεινής' },
{ name: 'Αντηλιακό', category: 'Είδη Υγιεινής' },
{ name: 'Ξυριστική Μηχανή', category: 'Είδη Υγιεινής' },
{ name: 'Φορτιστής', category: 'Ηλεκτρονικά' },
{ name: 'Power Bank', category: 'Ηλεκτρονικά' },
{ name: 'Ακουστικά', category: 'Ηλεκτρονικά' },
{ name: 'Ταξιδιωτικός Αντάπτορας', category: 'Ηλεκτρονικά' },
{ name: 'Κάμερα', category: 'Ηλεκτρονικά' },
{ name: 'Παυσίπονα', category: 'Υγεία' },
{ name: 'Τσιρότα', category: 'Υγεία' },
{ name: 'Απολυμαντικό', category: 'Υγεία' },
],
};
export default packing;
+34 -17
View File
@@ -2,7 +2,8 @@ import type { TranslationStrings } from '../types';
const perm: TranslationStrings = {
'perm.title': 'Ρυθμίσεις Δικαιωμάτων',
'perm.subtitle': 'Ελέγξτε ποιος μπορεί να εκτελεί ενέργειες σε όλη την εφαρμογή',
'perm.subtitle':
'Ελέγξτε ποιος μπορεί να εκτελεί ενέργειες σε όλη την εφαρμογή',
'perm.saved': 'Οι ρυθμίσεις δικαιωμάτων αποθηκεύτηκαν',
'perm.resetDefaults': 'Επαναφορά προεπιλογών',
'perm.customized': 'προσαρμοσμένο',
@@ -29,23 +30,39 @@ const perm: TranslationStrings = {
'perm.action.reservation_edit': 'Διαχείριση κρατήσεων',
'perm.action.budget_edit': 'Διαχείριση προϋπολογισμού',
'perm.action.packing_edit': 'Διαχείριση λιστών αποσκευών',
'perm.action.collab_edit': 'Συνεργασία (σημειώσεις, δημοσκοπήσεις, συνομιλία)',
'perm.action.collab_edit':
'Συνεργασία (σημειώσεις, δημοσκοπήσεις, συνομιλία)',
'perm.action.share_manage': 'Διαχείριση συνδέσμων κοινής χρήσης',
'perm.actionHint.trip_create': 'Ποιος μπορεί να δημιουργεί νέα ταξίδια',
'perm.actionHint.trip_edit': 'Ποιος μπορεί να αλλάζει όνομα, ημερομηνίες, περιγραφή και νόμισμα ταξιδιού',
'perm.actionHint.trip_delete': 'Ποιος μπορεί να διαγράφει οριστικά ένα ταξίδι',
'perm.actionHint.trip_archive': 'Ποιος μπορεί να αρχειοθετεί ή να επαναφέρει ένα ταξίδι',
'perm.actionHint.trip_cover_upload': 'Ποιος μπορεί να μεταφορτώνει ή να αλλάζει την εικόνα εξωφύλλου',
'perm.actionHint.member_manage': 'Ποιος μπορεί να προσκαλεί ή να αφαιρεί μέλη ταξιδιού',
'perm.actionHint.file_upload': 'Ποιος μπορεί να μεταφορτώνει αρχεία σε ένα ταξίδι',
'perm.actionHint.file_edit': 'Ποιος μπορεί να επεξεργάζεται περιγραφές και συνδέσμους αρχείων',
'perm.actionHint.file_delete': 'Ποιος μπορεί να μετακινεί αρχεία στον κάδο ή να τα διαγράφει οριστικά',
'perm.actionHint.place_edit': 'Ποιος μπορεί να προσθέτει, να επεξεργάζεται ή να διαγράφει τοποθεσίες',
'perm.actionHint.day_edit': 'Ποιος μπορεί να επεξεργάζεται ημέρες, σημειώσεις ημέρας και αναθέσεις τοποθεσιών',
'perm.actionHint.reservation_edit': 'Ποιος μπορεί να δημιουργεί, να επεξεργάζεται ή να διαγράφει κρατήσεις',
'perm.actionHint.budget_edit': 'Ποιος μπορεί να δημιουργεί, να επεξεργάζεται ή να διαγράφει στοιχεία προϋπολογισμού',
'perm.actionHint.packing_edit': 'Ποιος μπορεί να διαχειρίζεται αντικείμενα και τσάντες αποσκευών',
'perm.actionHint.collab_edit': 'Ποιος μπορεί να δημιουργεί σημειώσεις, δημοσκοπήσεις και να στέλνει μηνύματα',
'perm.actionHint.share_manage': 'Ποιος μπορεί να δημιουργεί ή να διαγράφει δημόσιους συνδέσμους κοινής χρήσης',
'perm.actionHint.trip_edit':
'Ποιος μπορεί να αλλάζει όνομα, ημερομηνίες, περιγραφή και νόμισμα ταξιδιού',
'perm.actionHint.trip_delete':
'Ποιος μπορεί να διαγράφει οριστικά ένα ταξίδι',
'perm.actionHint.trip_archive':
'Ποιος μπορεί να αρχειοθετεί ή να επαναφέρει ένα ταξίδι',
'perm.actionHint.trip_cover_upload':
'Ποιος μπορεί να μεταφορτώνει ή να αλλάζει την εικόνα εξωφύλλου',
'perm.actionHint.member_manage':
'Ποιος μπορεί να προσκαλεί ή να αφαιρεί μέλη ταξιδιού',
'perm.actionHint.file_upload':
'Ποιος μπορεί να μεταφορτώνει αρχεία σε ένα ταξίδι',
'perm.actionHint.file_edit':
'Ποιος μπορεί να επεξεργάζεται περιγραφές και συνδέσμους αρχείων',
'perm.actionHint.file_delete':
'Ποιος μπορεί να μετακινεί αρχεία στον κάδο ή να τα διαγράφει οριστικά',
'perm.actionHint.place_edit':
'Ποιος μπορεί να προσθέτει, να επεξεργάζεται ή να διαγράφει τοποθεσίες',
'perm.actionHint.day_edit':
'Ποιος μπορεί να επεξεργάζεται ημέρες, σημειώσεις ημέρας και αναθέσεις τοποθεσιών',
'perm.actionHint.reservation_edit':
'Ποιος μπορεί να δημιουργεί, να επεξεργάζεται ή να διαγράφει κρατήσεις',
'perm.actionHint.budget_edit':
'Ποιος μπορεί να δημιουργεί, να επεξεργάζεται ή να διαγράφει στοιχεία προϋπολογισμού',
'perm.actionHint.packing_edit':
'Ποιος μπορεί να διαχειρίζεται αντικείμενα και τσάντες αποσκευών',
'perm.actionHint.collab_edit':
'Ποιος μπορεί να δημιουργεί σημειώσεις, δημοσκοπήσεις και να στέλνει μηνύματα',
'perm.actionHint.share_manage':
'Ποιος μπορεί να δημιουργεί ή να διαγράφει δημόσιους συνδέσμους κοινής χρήσης',
};
export default perm;
+24 -12
View File
@@ -4,11 +4,15 @@ const places: TranslationStrings = {
'places.addPlace': 'Προσθήκη Μέρους/Δραστηριότητας',
'places.importFile': 'Εισαγωγή αρχείου',
'places.sidebarDrop': 'Αφήστε για εισαγωγή',
'places.importFileHint': 'Εισαγωγή αρχείων .gpx, .kml ή .kmz από εργαλεία όπως Google My Maps, Google Earth ή GPS tracker.',
'places.importFileDropHere': 'Κάντε κλικ για να επιλέξετε αρχείο ή σύρετε εδώ',
'places.importFileHint':
'Εισαγωγή αρχείων .gpx, .kml ή .kmz από εργαλεία όπως Google My Maps, Google Earth ή GPS tracker.',
'places.importFileDropHere':
'Κάντε κλικ για να επιλέξετε αρχείο ή σύρετε εδώ',
'places.importFileDropActive': 'Αφήστε το αρχείο για επιλογή',
'places.importFileUnsupported': 'Μη υποστηριζόμενος τύπος αρχείου. Χρησιμοποιήστε .gpx, .kml ή .kmz.',
'places.importFileTooLarge': 'Το αρχείο είναι πολύ μεγάλο. Το μέγιστο μέγεθος μεταφόρτωσης είναι {maxMb} MB.',
'places.importFileUnsupported':
'Μη υποστηριζόμενος τύπος αρχείου. Χρησιμοποιήστε .gpx, .kml ή .kmz.',
'places.importFileTooLarge':
'Το αρχείο είναι πολύ μεγάλο. Το μέγιστο μέγεθος μεταφόρτωσης είναι {maxMb} MB.',
'places.importFileError': 'Η εισαγωγή απέτυχε',
'places.importAllSkipped': 'Όλα τα μέρη υπήρχαν ήδη στο ταξίδι.',
'places.gpxImported': '{count} μέρη εισήχθησαν από GPX',
@@ -16,23 +20,28 @@ const places: TranslationStrings = {
'places.gpxImportWaypoints': 'Σημεία διαδρομής',
'places.gpxImportRoutes': 'Διαδρομές',
'places.gpxImportTracks': 'Ίχνη (με γεωμετρία διαδρομής)',
'places.gpxImportNoneSelected': 'Επιλέξτε τουλάχιστον έναν τύπο για εισαγωγή.',
'places.gpxImportNoneSelected':
'Επιλέξτε τουλάχιστον έναν τύπο για εισαγωγή.',
'places.kmlImportTypes': 'Τι θέλετε να εισάγετε;',
'places.kmlImportPoints': 'Σημεία (Placemarks)',
'places.kmlImportPaths': 'Διαδρομές (LineStrings)',
'places.kmlImportNoneSelected': 'Επιλέξτε τουλάχιστον έναν τύπο για εισαγωγή.',
'places.kmlImportNoneSelected':
'Επιλέξτε τουλάχιστον έναν τύπο για εισαγωγή.',
'places.selectionCount': '{count} επιλεγμένα',
'places.deleteSelected': 'Διαγραφή επιλεγμένων',
'places.kmlKmzImported': '{count} μέρη εισήχθησαν από KMZ/KML',
'places.urlResolved': 'Το μέρος εισήχθη από URL',
'places.importList': 'Εισαγωγή Λίστας',
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Εισήχθησαν: {created} • Παραλείφθηκαν: {skipped}',
'places.kmlKmzSummaryValues':
'Placemarks: {total} • Εισήχθησαν: {created} • Παραλείφθηκαν: {skipped}',
'places.importGoogleList': 'Λίστα Google',
'places.importNaverList': 'Λίστα Naver',
'places.googleListHint': 'Επικολλήστε έναν κοινοποιημένο σύνδεσμο λίστας Google Maps για να εισάγετε όλα τα μέρη.',
'places.googleListHint':
'Επικολλήστε έναν κοινοποιημένο σύνδεσμο λίστας Google Maps για να εισάγετε όλα τα μέρη.',
'places.googleListImported': '{count} μέρη εισήχθησαν από "{list}"',
'places.googleListError': 'Αποτυχία εισαγωγής λίστας Google Maps',
'places.naverListHint': 'Επικολλήστε έναν κοινοποιημένο σύνδεσμο λίστας Naver Maps για να εισάγετε όλα τα μέρη.',
'places.naverListHint':
'Επικολλήστε έναν κοινοποιημένο σύνδεσμο λίστας Naver Maps για να εισάγετε όλα τα μέρη.',
'places.naverListImported': '{count} μέρη εισήχθησαν από "{list}"',
'places.naverListError': 'Αποτυχία εισαγωγής λίστας Naver Maps',
'places.viewDetails': 'Προβολή Λεπτομερειών',
@@ -69,12 +78,15 @@ const places: TranslationStrings = {
'places.formNotes': 'Σημειώσεις',
'places.formNotesPlaceholder': 'Προσωπικές σημειώσεις...',
'places.formReservation': 'Κράτηση',
'places.reservationNotesPlaceholder': 'Σημειώσεις κράτησης, αριθμός επιβεβαίωσης...',
'places.reservationNotesPlaceholder':
'Σημειώσεις κράτησης, αριθμός επιβεβαίωσης...',
'places.mapsSearchPlaceholder': 'Αναζήτηση μερών...',
'places.mapsSearchError': 'Η αναζήτηση μέρους απέτυχε.',
'places.loadingDetails': 'Φόρτωση λεπτομερειών μέρους…',
'places.osmHint': 'Χρήση αναζήτησης OpenStreetMap (χωρίς φωτογραφίες, ώρες λειτουργίας ή αξιολογήσεις). Προσθέστε ένα κλειδί Google API στις ρυθμίσεις για πλήρεις λεπτομέρειες.',
'places.osmActive': 'Αναζήτηση μέσω OpenStreetMap (χωρίς φωτογραφίες, αξιολογήσεις ή ώρες λειτουργίας). Προσθέστε ένα κλειδί Google API στις Ρυθμίσεις για εμπλουτισμένα δεδομένα.',
'places.osmHint':
'Χρήση αναζήτησης OpenStreetMap (χωρίς φωτογραφίες, ώρες λειτουργίας ή αξιολογήσεις). Προσθέστε ένα κλειδί Google API στις ρυθμίσεις για πλήρεις λεπτομέρειες.',
'places.osmActive':
'Αναζήτηση μέσω OpenStreetMap (χωρίς φωτογραφίες, αξιολογήσεις ή ώρες λειτουργίας). Προσθέστε ένα κλειδί Google API στις Ρυθμίσεις για εμπλουτισμένα δεδομένα.',
'places.categoryCreateError': 'Αποτυχία δημιουργίας κατηγορίας',
'places.nameRequired': 'Παρακαλώ εισαγάγετε ένα όνομα',
'places.saveError': 'Αποτυχία αποθήκευσης',
+6 -3
View File
@@ -7,7 +7,8 @@ const planner: TranslationStrings = {
'planner.documents': 'Έγγραφα',
'planner.dayPlan': 'Πρόγραμμα Ημέρας',
'planner.reservations': 'Κρατήσεις',
'planner.minTwoPlaces': 'Απαιτούνται τουλάχιστον 2 τοποθεσίες με συντεταγμένες',
'planner.minTwoPlaces':
'Απαιτούνται τουλάχιστον 2 τοποθεσίες με συντεταγμένες',
'planner.noGeoPlaces': 'Δεν υπάρχουν διαθέσιμες τοποθεσίες με συντεταγμένες',
'planner.routeCalculated': 'Η διαδρομή υπολογίστηκε',
'planner.routeCalcFailed': 'Δεν ήταν δυνατός ο υπολογισμός της διαδρομής',
@@ -33,7 +34,8 @@ const planner: TranslationStrings = {
'planner.resConfirmed': 'Κράτηση επιβεβαιωμένη · ',
'planner.notePlaceholder': 'Σημείωση\u2026',
'planner.noteTimePlaceholder': 'Ώρα (προαιρετικό)',
'planner.noteExamplePlaceholder': 'π.χ. S3 στις 14:30 από τον κεντρικό σταθμό, φέρι από την προβλήτα 7, διάλειμμα μεσημεριανού\u2026',
'planner.noteExamplePlaceholder':
'π.χ. S3 στις 14:30 από τον κεντρικό σταθμό, φέρι από την προβλήτα 7, διάλειμμα μεσημεριανού\u2026',
'planner.totalCost': 'Συνολικό κόστος',
'planner.searchPlaces': 'Αναζήτηση τοποθεσιών\u2026',
'planner.allCategories': 'Όλες οι Κατηγορίες',
@@ -47,7 +49,8 @@ const planner: TranslationStrings = {
'planner.route': 'Διαδρομή',
'planner.optimize': 'Βελτιστοποίηση',
'planner.openGoogleMaps': 'Άνοιγμα στο Google Maps',
'planner.selectDayHint': 'Επιλέξτε μια ημέρα από την αριστερή λίστα για να δείτε το πρόγραμμα',
'planner.selectDayHint':
'Επιλέξτε μια ημέρα από την αριστερή λίστα για να δείτε το πρόγραμμα',
'planner.noPlacesForDay': 'Δεν υπάρχουν τοποθεσίες για αυτή την ημέρα ακόμη',
'planner.addPlacesLink': 'Προσθήκη τοποθεσιών \u2192',
'planner.minTotal': 'λεπτά σύνολο',
+4 -2
View File
@@ -2,10 +2,12 @@ import type { TranslationStrings } from '../types';
const register: TranslationStrings = {
'register.passwordMismatch': 'Οι κωδικοί δεν ταιριάζουν',
'register.passwordTooShort': 'Ο κωδικός πρέπει να έχει τουλάχιστον 8 χαρακτήρες',
'register.passwordTooShort':
'Ο κωδικός πρέπει να έχει τουλάχιστον 8 χαρακτήρες',
'register.failed': 'Η εγγραφή απέτυχε',
'register.getStarted': 'Ξεκινήστε',
'register.subtitle': 'Δημιουργήστε έναν λογαριασμό και ξεκινήστε να σχεδιάζετε τα ταξίδια των ονείρων σας.',
'register.subtitle':
'Δημιουργήστε έναν λογαριασμό και ξεκινήστε να σχεδιάζετε τα ταξίδια των ονείρων σας.',
'register.feature1': 'Απεριόριστα σχέδια ταξιδιών',
'register.feature2': 'Διαδραστική προβολή χάρτη',
'register.feature3': 'Διαχείριση τόπων και κατηγοριών',
+14 -7
View File
@@ -3,10 +3,12 @@ import type { TranslationStrings } from '../types';
const reservations: TranslationStrings = {
'reservations.title': 'Κρατήσεις',
'reservations.empty': 'Δεν υπάρχουν κρατήσεις ακόμη',
'reservations.emptyHint': 'Προσθέστε κρατήσεις για πτήσεις, ξενοδοχεία και άλλα',
'reservations.emptyHint':
'Προσθέστε κρατήσεις για πτήσεις, ξενοδοχεία και άλλα',
'reservations.add': 'Προσθήκη Κράτησης',
'reservations.addManual': 'Χειροκίνητη Κράτηση',
'reservations.placeHint': 'Συμβουλή: Οι κρατήσεις δημιουργούνται καλύτερα απευθείας από ένα μέρος για να συνδεθούν με το ημερήσιο πλάνο σας.',
'reservations.placeHint':
'Συμβουλή: Οι κρατήσεις δημιουργούνται καλύτερα απευθείας από ένα μέρος για να συνδεθούν με το ημερήσιο πλάνο σας.',
'reservations.confirmed': 'Επιβεβαιωμένο',
'reservations.pending': 'Εκκρεμές',
'reservations.summary': '{confirmed} επιβεβαιωμένες, {pending} εκκρεμείς',
@@ -27,7 +29,8 @@ const reservations: TranslationStrings = {
'reservations.meta.from': 'Από',
'reservations.meta.to': 'Προς',
'reservations.needsReview': 'Έλεγχος',
'reservations.needsReviewHint': 'Δεν ήταν δυνατή η αυτόματη αντιστοίχιση του αεροδρομίου — παρακαλώ επιβεβαιώστε την τοποθεσία.',
'reservations.needsReviewHint':
'Δεν ήταν δυνατή η αυτόματη αντιστοίχιση του αεροδρομίου — παρακαλώ επιβεβαιώστε την τοποθεσία.',
'reservations.searchLocation': 'Αναζήτηση σταθμού, λιμανιού, διεύθυνσης…',
'reservations.meta.trainNumber': 'Αρ. Τρένου',
'reservations.meta.platform': 'Αποβάθρα',
@@ -52,9 +55,11 @@ const reservations: TranslationStrings = {
'reservations.type.event': 'Εκδήλωση',
'reservations.type.tour': 'Περιήγηση',
'reservations.type.other': 'Άλλο',
'reservations.confirm.delete': 'Είστε σίγουροι ότι θέλετε να διαγράψετε την κράτηση "{name}";',
'reservations.confirm.delete':
'Είστε σίγουροι ότι θέλετε να διαγράψετε την κράτηση "{name}";',
'reservations.confirm.deleteTitle': 'Διαγραφή κράτησης;',
'reservations.confirm.deleteBody': 'Η κράτηση "{name}" θα διαγραφεί οριστικά.',
'reservations.confirm.deleteBody':
'Η κράτηση "{name}" θα διαγραφεί οριστικά.',
'reservations.toast.updated': 'Η κράτηση ενημερώθηκε',
'reservations.toast.removed': 'Η κράτηση διαγράφηκε',
'reservations.toast.fileUploaded': 'Το αρχείο μεταφορτώθηκε',
@@ -86,7 +91,8 @@ const reservations: TranslationStrings = {
'reservations.budgetCategory': 'Κατηγορία προϋπολογισμού',
'reservations.budgetCategoryPlaceholder': 'π.χ. Μεταφορά, Κατάλυμα',
'reservations.budgetCategoryAuto': 'Αυτόματα (από τον τύπο κράτησης)',
'reservations.budgetHint': 'Μια εγγραφή προϋπολογισμού θα δημιουργηθεί αυτόματα κατά την αποθήκευση.',
'reservations.budgetHint':
'Μια εγγραφή προϋπολογισμού θα δημιουργηθεί αυτόματα κατά την αποθήκευση.',
'reservations.departureDate': 'Αναχώρηση',
'reservations.arrivalDate': 'Άφιξη',
'reservations.departureTime': 'Ώρα αναχ.',
@@ -107,7 +113,8 @@ const reservations: TranslationStrings = {
'reservations.span.start': 'Έναρξη',
'reservations.span.end': 'Λήξη',
'reservations.span.ongoing': 'Σε εξέλιξη',
'reservations.validation.endBeforeStart': 'Η ημερομηνία/ώρα λήξης πρέπει να είναι μετά την ημερομηνία/ώρα έναρξης',
'reservations.validation.endBeforeStart':
'Η ημερομηνία/ώρα λήξης πρέπει να είναι μετά την ημερομηνία/ώρα έναρξης',
'reservations.addBooking': 'Προσθήκη κράτησης',
};
export default reservations;
+110 -55
View File
@@ -14,10 +14,12 @@ const settings: TranslationStrings = {
'settings.mapTemplate': 'Πρότυπο Χάρτη',
'settings.mapTemplatePlaceholder.select': 'Επιλέξτε πρότυπο...',
'settings.mapDefaultHint': 'Αφήστε κενό για OpenStreetMap (προεπιλογή)',
'settings.mapTemplatePlaceholder': 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
'settings.mapTemplatePlaceholder':
'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
'settings.mapHint': 'Πρότυπο URL για πλακίδια χάρτη',
'settings.mapProvider': 'Πάροχος Χάρτη',
'settings.mapProviderHint': 'Επηρεάζει τους χάρτες του Trip Planner και του Journey. Το Atlas χρησιμοποιεί πάντα Leaflet.',
'settings.mapProviderHint':
'Επηρεάζει τους χάρτες του Trip Planner και του Journey. Το Atlas χρησιμοποιεί πάντα Leaflet.',
'settings.mapLeafletSubtitle': 'Κλασικό 2D, οποιαδήποτε raster πλακίδια',
'settings.mapMapboxSubtitle': 'Διανυσματικά πλακίδια, 3D κτίρια & ανάγλυφο',
'settings.mapExperimental': 'Πειραματικό',
@@ -26,22 +28,29 @@ const settings: TranslationStrings = {
'settings.mapMapboxTokenLink': 'mapbox.com → Access tokens',
'settings.mapStyle': 'Στυλ Χάρτη',
'settings.mapStylePlaceholder': 'Επιλέξτε ένα στυλ Mapbox',
'settings.mapStyleHint': 'Προκαθορισμένο ή δικό σας mapbox://styles/USER/ID URL',
'settings.mapStyleHint':
'Προκαθορισμένο ή δικό σας mapbox://styles/USER/ID URL',
'settings.map3dBuildings': '3D Κτίρια & Ανάγλυφο',
'settings.map3dHint': 'Κλίση + πραγματικές 3D προεξοχές κτιρίων — λειτουργεί σε κάθε στυλ, συμπεριλαμβανομένου του δορυφορικού.',
'settings.map3dHint':
'Κλίση + πραγματικές 3D προεξοχές κτιρίων — λειτουργεί σε κάθε στυλ, συμπεριλαμβανομένου του δορυφορικού.',
'settings.mapHighQuality': 'Λειτουργία Υψηλής Ποιότητας',
'settings.mapHighQualityHint': 'Antialiasing + προβολή υδρογείου για ευκρινέστερες ακμές και ρεαλιστική όψη του κόσμου.',
'settings.mapHighQualityWarning': 'Μπορεί να επηρεάσει την απόδοση σε συσκευές χαμηλότερων προδιαγραφών.',
'settings.mapHighQualityHint':
'Antialiasing + προβολή υδρογείου για ευκρινέστερες ακμές και ρεαλιστική όψη του κόσμου.',
'settings.mapHighQualityWarning':
'Μπορεί να επηρεάσει την απόδοση σε συσκευές χαμηλότερων προδιαγραφών.',
'settings.mapTipLabel': 'Συμβουλή:',
'settings.mapTip': 'κάντε δεξί κλικ και σύρετε για περιστροφή/κλίση του χάρτη. Μεσαίο κλικ για προσθήκη τοποθεσίας (το δεξί κλικ έχει κρατηθεί για περιστροφή).',
'settings.mapTip':
'κάντε δεξί κλικ και σύρετε για περιστροφή/κλίση του χάρτη. Μεσαίο κλικ για προσθήκη τοποθεσίας (το δεξί κλικ έχει κρατηθεί για περιστροφή).',
'settings.latitude': 'Γεωγραφικό Πλάτος',
'settings.longitude': 'Γεωγραφικό Μήκος',
'settings.saveMap': 'Αποθήκευση Χάρτη',
'settings.apiKeys': 'Κλειδιά API',
'settings.mapsKey': 'Google Maps API Key',
'settings.mapsKeyHint': 'Για αναζήτηση τοποθεσιών. Απαιτείται Places API (New). Λάβετε το από console.cloud.google.com',
'settings.mapsKeyHint':
'Για αναζήτηση τοποθεσιών. Απαιτείται Places API (New). Λάβετε το από console.cloud.google.com',
'settings.weatherKey': 'OpenWeatherMap API Key',
'settings.weatherKeyHint': 'Για δεδομένα καιρού. Δωρεάν στο openweathermap.org/api',
'settings.weatherKeyHint':
'Για δεδομένα καιρού. Δωρεάν στο openweathermap.org/api',
'settings.keyPlaceholder': 'Εισάγετε κλειδί...',
'settings.configured': 'Διαμορφωμένο',
'settings.saveKeys': 'Αποθήκευση Κλειδιών',
@@ -55,7 +64,8 @@ const settings: TranslationStrings = {
'settings.timeFormat': 'Μορφή Ώρας',
'settings.routeCalculation': 'Υπολογισμός Διαδρομής',
'settings.bookingLabels': 'Ετικέτες διαδρομής κρατήσεων',
'settings.bookingLabelsHint': 'Εμφάνιση ονομάτων σταθμών / αεροδρομίων στον χάρτη. Όταν είναι απενεργοποιημένο, εμφανίζεται μόνο το εικονίδιο.',
'settings.bookingLabelsHint':
'Εμφάνιση ονομάτων σταθμών / αεροδρομίων στον χάρτη. Όταν είναι απενεργοποιημένο, εμφανίζεται μόνο το εικονίδιο.',
'settings.blurBookingCodes': 'Θόλωμα Κωδικών Κρατήσεων',
'settings.notifications': 'Ειδοποιήσεις',
'settings.notifyTripInvite': 'Προσκλήσεις ταξιδιού',
@@ -72,10 +82,12 @@ const settings: TranslationStrings = {
'settings.notificationPreferences.webhook': 'Webhook',
'settings.notificationPreferences.inapp': 'Εντός εφαρμογής',
'settings.notificationPreferences.ntfy': 'Ntfy',
'settings.notificationPreferences.noChannels': 'Δεν έχουν διαμορφωθεί κανάλια ειδοποιήσεων. Ζητήστε από έναν διαχειριστή να ρυθμίσει ειδοποιήσεις email ή webhook.',
'settings.notificationPreferences.noChannels':
'Δεν έχουν διαμορφωθεί κανάλια ειδοποιήσεων. Ζητήστε από έναν διαχειριστή να ρυθμίσει ειδοποιήσεις email ή webhook.',
'settings.webhookUrl.label': 'Webhook URL',
'settings.webhookUrl.placeholder': 'https://discord.com/api/webhooks/...',
'settings.webhookUrl.hint': 'Εισάγετε το Discord, Slack ή προσαρμοσμένο webhook URL σας για να λαμβάνετε ειδοποιήσεις.',
'settings.webhookUrl.hint':
'Εισάγετε το Discord, Slack ή προσαρμοσμένο webhook URL σας για να λαμβάνετε ειδοποιήσεις.',
'settings.webhookUrl.saved': 'Το Webhook URL αποθηκεύτηκε',
'settings.webhookUrl.test': 'Δοκιμή',
'settings.webhookUrl.testSuccess': 'Η δοκιμή webhook στάλθηκε επιτυχώς',
@@ -84,90 +96,115 @@ const settings: TranslationStrings = {
'settings.ntfyUrl.topicPlaceholder': 'my-trek-alerts',
'settings.ntfyUrl.serverLabel': 'URL Ntfy Server (προαιρετικό)',
'settings.ntfyUrl.serverPlaceholder': 'https://ntfy.sh',
'settings.ntfyUrl.hint': 'Εισάγετε το ntfy topic σας για να λαμβάνετε push ειδοποιήσεις. Αφήστε τον server κενό για χρήση του προεπιλεγμένου από τον διαχειριστή.',
'settings.ntfyUrl.hint':
'Εισάγετε το ntfy topic σας για να λαμβάνετε push ειδοποιήσεις. Αφήστε τον server κενό για χρήση του προεπιλεγμένου από τον διαχειριστή.',
'settings.ntfyUrl.tokenLabel': 'Access Token (προαιρετικό)',
'settings.ntfyUrl.tokenHint': 'Απαιτείται για θέματα προστατευμένα με κωδικό.',
'settings.ntfyUrl.tokenHint':
'Απαιτείται για θέματα προστατευμένα με κωδικό.',
'settings.ntfyUrl.saved': 'Οι ρυθμίσεις Ntfy αποθηκεύτηκαν',
'settings.ntfyUrl.test': 'Δοκιμή',
'settings.ntfyUrl.testSuccess': 'Η δοκιμαστική ειδοποίηση ntfy στάλθηκε επιτυχώς',
'settings.ntfyUrl.testSuccess':
'Η δοκιμαστική ειδοποίηση ntfy στάλθηκε επιτυχώς',
'settings.ntfyUrl.testFailed': 'Η δοκιμαστική ειδοποίηση ntfy απέτυχε',
'settings.ntfyUrl.tokenCleared': 'Το access token εκκαθαρίστηκε',
'settings.notificationsDisabled': 'Οι ειδοποιήσεις δεν έχουν διαμορφωθεί. Ζητήστε από έναν διαχειριστή να ενεργοποιήσει ειδοποιήσεις email ή webhook.',
'settings.notificationsDisabled':
'Οι ειδοποιήσεις δεν έχουν διαμορφωθεί. Ζητήστε από έναν διαχειριστή να ενεργοποιήσει ειδοποιήσεις email ή webhook.',
'settings.notificationsActive': 'Ενεργό κανάλι',
'settings.notificationsManagedByAdmin': 'Τα συμβάντα ειδοποιήσεων διαμορφώνονται από τον διαχειριστή σας.',
'settings.notificationsManagedByAdmin':
'Τα συμβάντα ειδοποιήσεων διαμορφώνονται από τον διαχειριστή σας.',
'settings.on': 'Ενεργό',
'settings.off': 'Ανενεργό',
'settings.mcp.title': 'Διαμόρφωση MCP',
'settings.mcp.endpoint': 'MCP Endpoint',
'settings.mcp.clientConfig': 'Διαμόρφωση Πελάτη',
'settings.mcp.clientConfigHint': 'Αντικαταστήστε το <your_token> με ένα API token από την παρακάτω λίστα. Η διαδρομή για το npx ίσως χρειαστεί να προσαρμοστεί για το σύστημά σας (π.χ. C:\\PROGRA~1\\nodejs\\npx.cmd στα Windows).',
'settings.mcp.clientConfigHintOAuth': 'Αντικαταστήστε τα <your_client_id> και <your_client_secret> με τα διαπιστευτήρια που εμφανίζονται στον πελάτη OAuth 2.1 που δημιουργήσατε παραπάνω. Το mcp-remote θα ανοίξει τον browser σας για να ολοκληρώσετε την εξουσιοδότηση την πρώτη φορά που θα συνδεθείτε. Η διαδρομή για το npx ίσως χρειαστεί να προσαρμοστεί για το σύστημά σας (π.χ. C:\PROGRA~1\nodejs\npx.cmd στα Windows).',
'settings.mcp.clientConfigHint':
'Αντικαταστήστε το <your_token> με ένα API token από την παρακάτω λίστα. Η διαδρομή για το npx ίσως χρειαστεί να προσαρμοστεί για το σύστημά σας (π.χ. C:\\PROGRA~1\\nodejs\\npx.cmd στα Windows).',
'settings.mcp.clientConfigHintOAuth':
'Αντικαταστήστε τα <your_client_id> και <your_client_secret> με τα διαπιστευτήρια που εμφανίζονται στον πελάτη OAuth 2.1 που δημιουργήσατε παραπάνω. Το mcp-remote θα ανοίξει τον browser σας για να ολοκληρώσετε την εξουσιοδότηση την πρώτη φορά που θα συνδεθείτε. Η διαδρομή για το npx ίσως χρειαστεί να προσαρμοστεί για το σύστημά σας (π.χ. C:\\PROGRA~1\\nodejs\\npx.cmd στα Windows).',
'settings.mcp.copy': 'Αντιγραφή',
'settings.mcp.copied': 'Αντιγράφηκε!',
'settings.mcp.apiTokens': 'API Tokens',
'settings.mcp.createToken': 'Δημιουργία νέου Token',
'settings.mcp.noTokens': 'Δεν υπάρχουν tokens ακόμη. Δημιουργήστε ένα για να συνδέσετε πελάτες MCP.',
'settings.mcp.noTokens':
'Δεν υπάρχουν tokens ακόμη. Δημιουργήστε ένα για να συνδέσετε πελάτες MCP.',
'settings.mcp.tokenCreatedAt': 'Δημιουργήθηκε',
'settings.mcp.tokenUsedAt': 'Χρησιμοποιήθηκε',
'settings.mcp.deleteTokenTitle': 'Διαγραφή Token',
'settings.mcp.deleteTokenMessage': 'Αυτό το token θα σταματήσει να λειτουργεί αμέσως. Οποιοσδήποτε πελάτης MCP το χρησιμοποιεί θα χάσει την πρόσβαση.',
'settings.mcp.deleteTokenMessage':
'Αυτό το token θα σταματήσει να λειτουργεί αμέσως. Οποιοσδήποτε πελάτης MCP το χρησιμοποιεί θα χάσει την πρόσβαση.',
'settings.mcp.modal.createTitle': 'Δημιουργία API Token',
'settings.mcp.modal.tokenName': 'Όνομα Token',
'settings.mcp.modal.tokenNamePlaceholder': 'π.χ. Claude Desktop, Φορητός εργασίας',
'settings.mcp.modal.tokenNamePlaceholder':
'π.χ. Claude Desktop, Φορητός εργασίας',
'settings.mcp.modal.creating': 'Δημιουργία…',
'settings.mcp.modal.create': 'Δημιουργία Token',
'settings.mcp.modal.createdTitle': 'Το Token δημιουργήθηκε',
'settings.mcp.modal.createdWarning': 'Αυτό το token θα εμφανιστεί μόνο μία φορά. Αντιγράψτε και αποθηκεύστε το τώρα — δεν μπορεί να ανακτηθεί.',
'settings.mcp.modal.createdWarning':
'Αυτό το token θα εμφανιστεί μόνο μία φορά. Αντιγράψτε και αποθηκεύστε το τώρα — δεν μπορεί να ανακτηθεί.',
'settings.mcp.modal.done': 'Ολοκληρώθηκε',
'settings.mcp.toast.created': 'Το token δημιουργήθηκε',
'settings.mcp.toast.createError': 'Αποτυχία δημιουργίας token',
'settings.mcp.toast.deleted': 'Το token διαγράφηκε',
'settings.mcp.toast.deleteError': 'Αποτυχία διαγραφής token',
'settings.mcp.apiTokensDeprecated': 'Τα API Tokens έχουν καταργηθεί και θα αφαιρεθούν σε μελλοντική έκδοση. Παρακαλώ χρησιμοποιήστε OAuth 2.1 Clients αντί αυτών.',
'settings.mcp.apiTokensDeprecated':
'Τα API Tokens έχουν καταργηθεί και θα αφαιρεθούν σε μελλοντική έκδοση. Παρακαλώ χρησιμοποιήστε OAuth 2.1 Clients αντί αυτών.',
'settings.oauth.clients': 'OAuth 2.1 Clients',
'settings.oauth.clientsHint': 'Καταχωρήστε πελάτες OAuth 2.1 για να επιτρέψετε σε εφαρμογές MCP τρίτων (Claude Web, Cursor, κ.λπ.) να συνδέονται χωρίς στατικά tokens.',
'settings.oauth.clientsHint':
'Καταχωρήστε πελάτες OAuth 2.1 για να επιτρέψετε σε εφαρμογές MCP τρίτων (Claude Web, Cursor, κ.λπ.) να συνδέονται χωρίς στατικά tokens.',
'settings.oauth.createClient': 'Νέος Πελάτης',
'settings.oauth.noClients': 'Δεν έχουν καταχωρηθεί πελάτες OAuth.',
'settings.oauth.clientId': 'Client ID',
'settings.oauth.clientSecret': 'Client Secret',
'settings.oauth.deleteClient': 'Διαγραφή Πελάτη',
'settings.oauth.deleteClientMessage': 'Αυτός ο πελάτης και όλες οι ενεργές συνεδρίες θα αφαιρεθούν μόνιμα. Οποιαδήποτε εφαρμογή τον χρησιμοποιεί θα χάσει την πρόσβαση αμέσως.',
'settings.oauth.deleteClientMessage':
'Αυτός ο πελάτης και όλες οι ενεργές συνεδρίες θα αφαιρεθούν μόνιμα. Οποιαδήποτε εφαρμογή τον χρησιμοποιεί θα χάσει την πρόσβαση αμέσως.',
'settings.oauth.rotateSecret': 'Εναλλαγή Secret',
'settings.oauth.rotateSecretMessage': 'Θα δημιουργηθεί ένα νέο client secret και όλες οι υπάρχουσες συνεδρίες θα ακυρωθούν αμέσως. Ενημερώστε την εφαρμογή σας πριν κλείσετε αυτό το παράθυρο.',
'settings.oauth.rotateSecretMessage':
'Θα δημιουργηθεί ένα νέο client secret και όλες οι υπάρχουσες συνεδρίες θα ακυρωθούν αμέσως. Ενημερώστε την εφαρμογή σας πριν κλείσετε αυτό το παράθυρο.',
'settings.oauth.rotateSecretConfirm': 'Εναλλαγή',
'settings.oauth.rotateSecretConfirming': 'Εναλλαγή…',
'settings.oauth.rotateSecretDoneTitle': 'Δημιουργήθηκε νέο Secret',
'settings.oauth.rotateSecretDoneWarning': 'Αυτό το secret εμφανίζεται μόνο μία φορά. Αντιγράψτε το τώρα και ενημερώστε την εφαρμογή σας — όλες οι προηγούμενες συνεδρίες έχουν ακυρωθεί.',
'settings.oauth.rotateSecretDoneWarning':
'Αυτό το secret εμφανίζεται μόνο μία φορά. Αντιγράψτε το τώρα και ενημερώστε την εφαρμογή σας — όλες οι προηγούμενες συνεδρίες έχουν ακυρωθεί.',
'settings.oauth.activeSessions': 'Ενεργές Συνεδρίες OAuth',
'settings.oauth.sessionScopes': 'Scopes',
'settings.oauth.sessionExpires': 'Λήγει',
'settings.oauth.revoke': 'Ανάκληση',
'settings.oauth.revokeSession': 'Ανάκληση Συνεδρίας',
'settings.oauth.revokeSessionMessage': 'Αυτό θα ανακαλέσει αμέσως την πρόσβαση για αυτή τη συνεδρία OAuth.',
'settings.oauth.revokeSessionMessage':
'Αυτό θα ανακαλέσει αμέσως την πρόσβαση για αυτή τη συνεδρία OAuth.',
'settings.oauth.modal.createTitle': 'Καταχώρηση Πελάτη OAuth',
'settings.oauth.modal.presets': 'Γρήγορες προεπιλογές',
'settings.oauth.modal.clientName': 'Όνομα Εφαρμογής',
'settings.oauth.modal.clientNamePlaceholder': 'π.χ. Claude Web, Η εφαρμογή μου MCP',
'settings.oauth.modal.clientNamePlaceholder':
'π.χ. Claude Web, Η εφαρμογή μου MCP',
'settings.oauth.modal.redirectUris': 'Redirect URIs',
'settings.oauth.modal.redirectUrisPlaceholder': 'https://your-app.com/callback\nhttps://your-app.com/auth',
'settings.oauth.modal.redirectUrisHint': 'Ένα URI ανά γραμμή. Απαιτείται HTTPS (το localhost εξαιρείται). Επιβάλλεται ακριβής αντιστοίχιση.',
'settings.oauth.modal.redirectUrisPlaceholder':
'https://your-app.com/callback\nhttps://your-app.com/auth',
'settings.oauth.modal.redirectUrisHint':
'Ένα URI ανά γραμμή. Απαιτείται HTTPS (το localhost εξαιρείται). Επιβάλλεται ακριβής αντιστοίχιση.',
'settings.oauth.modal.scopes': 'Επιτρεπόμενα Scopes',
'settings.oauth.modal.scopesHint': 'Τα list_trips και get_trip_summary είναι πάντα διαθέσιμα — δεν απαιτείται scope. Επιτρέπουν στο AI να εντοπίζει τα trip IDs που χρειάζονται για τη χρήση οποιουδήποτε άλλου εργαλείου.',
'settings.oauth.modal.scopesHint':
'Τα list_trips και get_trip_summary είναι πάντα διαθέσιμα — δεν απαιτείται scope. Επιτρέπουν στο AI να εντοπίζει τα trip IDs που χρειάζονται για τη χρήση οποιουδήποτε άλλου εργαλείου.',
'settings.oauth.modal.selectAll': 'Επιλογή όλων',
'settings.oauth.modal.deselectAll': 'Απο-επιλογή όλων',
'settings.oauth.modal.creating': 'Καταχώρηση…',
'settings.oauth.modal.create': 'Καταχώρηση Πελάτη',
'settings.oauth.modal.createdTitle': 'Ο Πελάτης Καταχωρήθηκε',
'settings.oauth.modal.createdWarning': 'Το client secret εμφανίζεται μόνο μία φορά. Αντιγράψτε το τώρα — δεν μπορεί να ανακτηθεί.',
'settings.oauth.modal.createdWarning':
'Το client secret εμφανίζεται μόνο μία φορά. Αντιγράψτε το τώρα — δεν μπορεί να ανακτηθεί.',
'settings.oauth.toast.createError': 'Αποτυχία καταχώρησης πελάτη OAuth',
'settings.oauth.toast.deleted': 'Ο πελάτης OAuth διαγράφηκε',
'settings.oauth.toast.deleteError': 'Αποτυχία διαγραφής πελάτη OAuth',
'settings.oauth.toast.revoked': 'Η συνεδρία ανακλήθηκε',
'settings.oauth.toast.revokeError': 'Αποτυχία ανάκλησης συνεδρίας',
'settings.oauth.toast.rotateError': 'Αποτυχία εναλλαγής client secret',
'settings.oauth.modal.machineClient': 'Πελάτης μηχανής (χωρίς σύνδεση μέσω browser)',
'settings.oauth.modal.machineClientHint': 'Χρησιμοποιήστε grant client_credentials — δεν χρειάζονται redirect URIs. Το token εκδίδεται απευθείας μέσω client_id + client_secret και ενεργεί ως εσείς εντός των επιλεγμένων scopes.',
'settings.oauth.modal.machineClientUsage': 'Λήψη token: POST /oauth/token με grant_type=client_credentials, client_id, και client_secret. Χωρίς browser, χωρίς refresh token.',
'settings.oauth.modal.machineClient':
'Πελάτης μηχανής (χωρίς σύνδεση μέσω browser)',
'settings.oauth.modal.machineClientHint':
'Χρησιμοποιήστε grant client_credentials — δεν χρειάζονται redirect URIs. Το token εκδίδεται απευθείας μέσω client_id + client_secret και ενεργεί ως εσείς εντός των επιλεγμένων scopes.',
'settings.oauth.modal.machineClientUsage':
'Λήψη token: POST /oauth/token με grant_type=client_credentials, client_id, και client_secret. Χωρίς browser, χωρίς refresh token.',
'settings.oauth.badge.machine': 'μηχανή',
'settings.account': 'Λογαριασμός',
'settings.about': 'Σχετικά',
@@ -178,17 +215,21 @@ const settings: TranslationStrings = {
'settings.about.wikiHint': 'Τεκμηρίωση & οδηγοί',
'settings.about.supporters.badge': 'Μηνιαίοι Υποστηρικτές',
'settings.about.supporters.title': 'Συνταξιδιώτες για το TREK',
'settings.about.supporters.subtitle': 'Καθώς εσείς σχεδιάζετε την επόμενή σας διαδρομή, αυτοί οι άνθρωποι βοηθούν να σχεδιαστεί το μέλλον του TREK. Η μηνιαία τους συνεισφορά πηγαίνει απευθείας στην ανάπτυξη και σε πραγματικές ώρες εργασίας — ώστε το TREK να παραμένει Open Source.',
'settings.about.supporters.subtitle':
'Καθώς εσείς σχεδιάζετε την επόμενή σας διαδρομή, αυτοί οι άνθρωποι βοηθούν να σχεδιαστεί το μέλλον του TREK. Η μηνιαία τους συνεισφορά πηγαίνει απευθείας στην ανάπτυξη και σε πραγματικές ώρες εργασίας — ώστε το TREK να παραμένει Open Source.',
'settings.about.supporters.since': 'υποστηρικτής από {date}',
'settings.about.supporters.tierEmpty': 'Γίνετε ο πρώτος',
'settings.about.supporter.tier.noReturnTicket': 'Χωρίς Εισιτήριο Επιστροφής',
'settings.about.supporter.tier.lostLuggageVip': 'VIP Χαμένων Αποσκευών',
'settings.about.supporter.tier.businessClassDreamer': 'Ονειροπόλος Business Class',
'settings.about.supporter.tier.businessClassDreamer':
'Ονειροπόλος Business Class',
'settings.about.supporter.tier.budgetTraveller': 'Οικονομικός Ταξιδιώτης',
'settings.about.supporter.tier.hostelBunkmate': 'Συγκάτοικος Hostel',
'settings.about.description': 'Το TREK είναι ένας self-hosted ταξιδιωτικός σχεδιαστής που σας βοηθά να οργανώσετε τα ταξίδια σας από την πρώτη ιδέα μέχρι την τελευταία ανάμνηση. Σχεδιασμός ημερών, προϋπολογισμός, λίστες πακεταρίσματος, φωτογραφίες και πολλά άλλα — όλα σε ένα μέρος, στον δικό σας server.',
'settings.about.description':
'Το TREK είναι ένας self-hosted ταξιδιωτικός σχεδιαστής που σας βοηθά να οργανώσετε τα ταξίδια σας από την πρώτη ιδέα μέχρι την τελευταία ανάμνηση. Σχεδιασμός ημερών, προϋπολογισμός, λίστες πακεταρίσματος, φωτογραφίες και πολλά άλλα — όλα σε ένα μέρος, στον δικό σας server.',
'settings.about.madeWith': 'Φτιαγμένο με',
'settings.about.madeBy': 'από τον Maurice και μια αναπτυσσόμενη κοινότητα open-source.',
'settings.about.madeBy':
'από τον Maurice και μια αναπτυσσόμενη κοινότητα open-source.',
'settings.username': 'Όνομα χρήστη',
'settings.email': 'Email',
'settings.role': 'Ρόλος',
@@ -200,18 +241,24 @@ const settings: TranslationStrings = {
'settings.newPassword': 'Νέος κωδικός',
'settings.confirmPassword': 'Επιβεβαίωση νέου κωδικού',
'settings.updatePassword': 'Ενημέρωση κωδικού',
'settings.passwordRequired': 'Παρακαλώ εισάγετε τον τρέχοντα και τον νέο κωδικό',
'settings.passwordTooShort': 'Ο κωδικός πρέπει να έχει τουλάχιστον 8 χαρακτήρες',
'settings.passwordRequired':
'Παρακαλώ εισάγετε τον τρέχοντα και τον νέο κωδικό',
'settings.passwordTooShort':
'Ο κωδικός πρέπει να έχει τουλάχιστον 8 χαρακτήρες',
'settings.passwordMismatch': 'Οι κωδικοί δεν ταιριάζουν',
'settings.passwordWeak': 'Ο κωδικός πρέπει να περιέχει κεφαλαία, πεζά, έναν αριθμό και έναν ειδικό χαρακτήρα',
'settings.passwordWeak':
'Ο κωδικός πρέπει να περιέχει κεφαλαία, πεζά, έναν αριθμό και έναν ειδικό χαρακτήρα',
'settings.passwordChanged': 'Ο κωδικός άλλαξε επιτυχώς',
'settings.mustChangePassword': 'Πρέπει να αλλάξετε τον κωδικό σας πριν συνεχίσετε. Παρακαλώ ορίστε έναν νέο κωδικό παρακάτω.',
'settings.mustChangePassword':
'Πρέπει να αλλάξετε τον κωδικό σας πριν συνεχίσετε. Παρακαλώ ορίστε έναν νέο κωδικό παρακάτω.',
'settings.deleteAccount': 'Διαγραφή λογαριασμού',
'settings.deleteAccountTitle': 'Διαγραφή του λογαριασμού σας;',
'settings.deleteAccountWarning': 'Ο λογαριασμός σας και όλα τα ταξίδια, οι τόποι και τα αρχεία σας θα διαγραφούν μόνιμα. Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.',
'settings.deleteAccountWarning':
'Ο λογαριασμός σας και όλα τα ταξίδια, οι τόποι και τα αρχεία σας θα διαγραφούν μόνιμα. Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.',
'settings.deleteAccountConfirm': 'Μόνιμη διαγραφή',
'settings.deleteBlockedTitle': 'Η διαγραφή δεν είναι δυνατή',
'settings.deleteBlockedMessage': 'Είστε ο μόνος διαχειριστής. Προαγάγετε έναν άλλον χρήστη σε διαχειριστή πριν διαγράψετε τον λογαριασμό σας.',
'settings.deleteBlockedMessage':
'Είστε ο μόνος διαχειριστής. Προαγάγετε έναν άλλον χρήστη σε διαχειριστή πριν διαγράψετε τον λογαριασμό σας.',
'settings.roleUser': 'Χρήστης',
'settings.saveProfile': 'Αποθήκευση Προφίλ',
'settings.toast.mapSaved': 'Οι ρυθμίσεις χάρτη αποθηκεύτηκαν',
@@ -224,11 +271,15 @@ const settings: TranslationStrings = {
'settings.avatarRemoved': 'Η εικόνα προφίλ αφαιρέθηκε',
'settings.avatarError': 'Η μεταφόρτωση απέτυχε',
'settings.mfa.title': 'Έλεγχος ταυτότητας δύο παραγόντων (2FA)',
'settings.mfa.description': 'Προσθέτει ένα δεύτερο βήμα όταν συνδέεστε με email και κωδικό. Χρησιμοποιήστε μια εφαρμογή authenticator (Google Authenticator, Authy, κ.λπ.).',
'settings.mfa.requiredByPolicy': 'Ο διαχειριστής σας απαιτεί έλεγχο ταυτότητας δύο παραγόντων. Ρυθμίστε μια εφαρμογή authenticator παρακάτω πριν συνεχίσετε.',
'settings.mfa.description':
'Προσθέτει ένα δεύτερο βήμα όταν συνδέεστε με email και κωδικό. Χρησιμοποιήστε μια εφαρμογή authenticator (Google Authenticator, Authy, κ.λπ.).',
'settings.mfa.requiredByPolicy':
'Ο διαχειριστής σας απαιτεί έλεγχο ταυτότητας δύο παραγόντων. Ρυθμίστε μια εφαρμογή authenticator παρακάτω πριν συνεχίσετε.',
'settings.mfa.backupTitle': 'Εφεδρικοί κωδικοί',
'settings.mfa.backupDescription': 'Χρησιμοποιήστε αυτούς τους εφεδρικούς κωδικούς μίας χρήσης αν χάσετε την πρόσβαση στην εφαρμογή authenticator.',
'settings.mfa.backupWarning': 'Αποθηκεύστε αυτούς τους κωδικούς τώρα. Κάθε κωδικός μπορεί να χρησιμοποιηθεί μόνο μία φορά.',
'settings.mfa.backupDescription':
'Χρησιμοποιήστε αυτούς τους εφεδρικούς κωδικούς μίας χρήσης αν χάσετε την πρόσβαση στην εφαρμογή authenticator.',
'settings.mfa.backupWarning':
'Αποθηκεύστε αυτούς τους κωδικούς τώρα. Κάθε κωδικός μπορεί να χρησιμοποιηθεί μόνο μία φορά.',
'settings.mfa.backupCopy': 'Αντιγραφή κωδικών',
'settings.mfa.backupDownload': 'Λήψη TXT',
'settings.mfa.backupPrint': 'Εκτύπωση / PDF',
@@ -236,16 +287,20 @@ const settings: TranslationStrings = {
'settings.mfa.enabled': 'Το 2FA είναι ενεργοποιημένο στον λογαριασμό σας.',
'settings.mfa.disabled': 'Το 2FA δεν είναι ενεργοποιημένο.',
'settings.mfa.setup': 'Ρύθμιση authenticator',
'settings.mfa.scanQr': 'Σαρώστε αυτόν τον κωδικό QR με την εφαρμογή σας ή εισάγετε το secret χειροκίνητα.',
'settings.mfa.scanQr':
'Σαρώστε αυτόν τον κωδικό QR με την εφαρμογή σας ή εισάγετε το secret χειροκίνητα.',
'settings.mfa.secretLabel': 'Κλειδί secret (χειροκίνητη εισαγωγή)',
'settings.mfa.codePlaceholder': 'Κωδικός 6 ψηφίων',
'settings.mfa.enable': 'Ενεργοποίηση 2FA',
'settings.mfa.cancelSetup': 'Ακύρωση',
'settings.mfa.disableTitle': 'Απενεργοποίηση 2FA',
'settings.mfa.disableHint': 'Εισάγετε τον κωδικό του λογαριασμού σας και έναν τρέχοντα κωδικό από τον authenticator σας.',
'settings.mfa.disableHint':
'Εισάγετε τον κωδικό του λογαριασμού σας και έναν τρέχοντα κωδικό από τον authenticator σας.',
'settings.mfa.disable': 'Απενεργοποίηση 2FA',
'settings.mfa.toastEnabled': 'Ο έλεγχος ταυτότητας δύο παραγόντων ενεργοποιήθηκε',
'settings.mfa.toastDisabled': 'Ο έλεγχος ταυτότητας δύο παραγόντων απενεργοποιήθηκε',
'settings.mfa.toastEnabled':
'Ο έλεγχος ταυτότητας δύο παραγόντων ενεργοποιήθηκε',
'settings.mfa.toastDisabled':
'Ο έλεγχος ταυτότητας δύο παραγόντων απενεργοποιήθηκε',
'settings.mfa.demoBlocked': 'Δεν είναι διαθέσιμο σε λειτουργία demo',
};
export default settings;
+2 -1
View File
@@ -2,7 +2,8 @@ import type { TranslationStrings } from '../types';
const share: TranslationStrings = {
'share.linkTitle': 'Δημόσιος Σύνδεσμος',
'share.linkHint': 'Δημιουργήστε έναν σύνδεσμο που μπορεί να χρησιμοποιήσει οποιοσδήποτε για να δει αυτό το ταξίδι χωρίς σύνδεση. Μόνο για ανάγνωση — χωρίς δυνατότητα επεξεργασίας.',
'share.linkHint':
'Δημιουργήστε έναν σύνδεσμο που μπορεί να χρησιμοποιήσει οποιοσδήποτε για να δει αυτό το ταξίδι χωρίς σύνδεση. Μόνο για ανάγνωση — χωρίς δυνατότητα επεξεργασίας.',
'share.createLink': 'Δημιουργία συνδέσμου',
'share.deleteLink': 'Διαγραφή συνδέσμου',
'share.createError': 'Αδυναμία δημιουργίας συνδέσμου',
+2 -1
View File
@@ -2,7 +2,8 @@ import type { TranslationStrings } from '../types';
const shared: TranslationStrings = {
'shared.expired': 'Ο σύνδεσμος έληξε ή δεν είναι έγκυρος',
'shared.expiredHint': 'Αυτός ο κοινόχρηστος σύνδεσμος ταξιδιού δεν είναι πλέον ενεργός.',
'shared.expiredHint':
'Αυτός ο κοινόχρηστος σύνδεσμος ταξιδιού δεν είναι πλέον ενεργός.',
'shared.readOnly': 'Κοινόχρηστη προβολή μόνο για ανάγνωση',
'shared.tabPlan': 'Σχέδιο',
'shared.tabBookings': 'Κρατήσεις',
+44 -23
View File
@@ -2,40 +2,61 @@ import type { TranslationStrings } from '../types';
const system_notice: TranslationStrings = {
'system_notice.v3_photos.title': 'Οι Φωτογραφίες μετακινήθηκαν στην 3.0',
'system_notice.v3_photos.body': 'Οι **Φωτογραφίες** στον Σχεδιαστή Ταξιδιού έχουν αφαιρεθεί. Οι φωτογραφίες σας είναι ασφαλείς — το TREK δεν τροποποίησε ποτέ τη βιβλιοθήκη σας Immich ή Synology.\n\nΟι φωτογραφίες τώρα βρίσκονται στο πρόσθετο **Journey**. Το Journey είναι προαιρετικό — αν δεν είναι ακόμα διαθέσιμο, ζητήστε από τον διαχειριστή σας να το ενεργοποιήσει από το Διαχειριστής → Πρόσθετα.',
'system_notice.v3_photos.body':
'Οι **Φωτογραφίες** στον Σχεδιαστή Ταξιδιού έχουν αφαιρεθεί. Οι φωτογραφίες σας είναι ασφαλείς — το TREK δεν τροποποίησε ποτέ τη βιβλιοθήκη σας Immich ή Synology.\n\nΟι φωτογραφίες τώρα βρίσκονται στο πρόσθετο **Journey**. Το Journey είναι προαιρετικό — αν δεν είναι ακόμα διαθέσιμο, ζητήστε από τον διαχειριστή σας να το ενεργοποιήσει από το Διαχειριστής → Πρόσθετα.',
'system_notice.v3_journey.title': 'Γνωρίστε το Journey — ημερολόγιο ταξιδιών',
'system_notice.v3_journey.body': 'Καταγράψτε τα ταξίδια σας ως πλούσιες ταξιδιωτικές ιστορίες με χρονολόγια, συλλογές φωτογραφιών και διαδραστικούς χάρτες.',
'system_notice.v3_journey.body':
'Καταγράψτε τα ταξίδια σας ως πλούσιες ταξιδιωτικές ιστορίες με χρονολόγια, συλλογές φωτογραφιών και διαδραστικούς χάρτες.',
'system_notice.v3_journey.cta_label': 'Άνοιγμα Journey',
'system_notice.v3_journey.highlight_timeline': 'Χρονολόγιο ανά ημέρα & συλλογή',
'system_notice.v3_journey.highlight_timeline':
'Χρονολόγιο ανά ημέρα & συλλογή',
'system_notice.v3_journey.highlight_photos': 'Εισαγωγή από Immich ή Synology',
'system_notice.v3_journey.highlight_share': 'Δημόσια κοινοποίηση — δεν χρειάζεται σύνδεση',
'system_notice.v3_journey.highlight_export': 'Εξαγωγή ως βιβλίο φωτογραφιών PDF',
'system_notice.v3_journey.highlight_share':
'Δημόσια κοινοποίηση — δεν χρειάζεται σύνδεση',
'system_notice.v3_journey.highlight_export':
'Εξαγωγή ως βιβλίο φωτογραφιών PDF',
'system_notice.v3_features.title': 'Περισσότερα αξιοσημείωτα στην 3.0',
'system_notice.v3_features.body': 'Μερικά ακόμα πράγματα που αξίζει να γνωρίζετε για αυτή την έκδοση.',
'system_notice.v3_features.highlight_dashboard': 'Σχεδιασμός πίνακα ελέγχου πρώτα για κινητά',
'system_notice.v3_features.highlight_offline': 'Πλήρης λειτουργία εκτός σύνδεσης ως PWA',
'system_notice.v3_features.highlight_search': 'Αυτόματη συμπλήρωση αναζήτησης τοποθεσιών σε πραγματικό χρόνο',
'system_notice.v3_features.highlight_import': 'Εισαγωγή τοποθεσιών από αρχεία KMZ/KML',
'system_notice.v3_features.body':
'Μερικά ακόμα πράγματα που αξίζει να γνωρίζετε για αυτή την έκδοση.',
'system_notice.v3_features.highlight_dashboard':
'Σχεδιασμός πίνακα ελέγχου πρώτα για κινητά',
'system_notice.v3_features.highlight_offline':
'Πλήρης λειτουργία εκτός σύνδεσης ως PWA',
'system_notice.v3_features.highlight_search':
'Αυτόματη συμπλήρωση αναζήτησης τοποθεσιών σε πραγματικό χρόνο',
'system_notice.v3_features.highlight_import':
'Εισαγωγή τοποθεσιών από αρχεία KMZ/KML',
'system_notice.v3_mcp.title': 'MCP: Αναβάθμιση OAuth 2.1',
'system_notice.v3_mcp.body': 'Η ενσωμάτωση MCP ανασχεδιάστηκε πλήρως. Το OAuth 2.1 είναι τώρα η συνιστώμενη μέθοδος αυθεντικοποίησης. Τα παλιά στατικά tokens (trek_…) είναι παρωχημένα και θα αφαιρεθούν σε μελλοντική έκδοση.',
'system_notice.v3_mcp.highlight_oauth': 'Συνιστάται OAuth 2.1 (mcp-remote)',
'system_notice.v3_mcp.highlight_scopes': '24 λεπτομερή εύρη δικαιωμάτων',
'system_notice.v3_mcp.highlight_deprecated': 'Στατικά tokens trek_ παρωχημένα',
'system_notice.v3_mcp.highlight_tools': 'Επεκτεταμένο σύνολο εργαλείων & προτροπών',
'system_notice.v3_mcp.body':
'Η ενσωμάτωση MCP ανασχεδιάστηκε πλήρως. Το OAuth 2.1 είναι τώρα η συνιστώμενη μέθοδος αυθεντικοποίησης. Τα παλιά στατικά tokens (trek_…) είναι παρωχημένα και θα αφαιρεθούν σε μελλοντική έκδοση.',
'system_notice.v3_mcp.highlight_oauth': 'Συνιστάται OAuth 2.1 (mcp-remote)',
'system_notice.v3_mcp.highlight_scopes': '24 λεπτομερή εύρη δικαιωμάτων',
'system_notice.v3_mcp.highlight_deprecated':
'Στατικά tokens trek_ παρωχημένα',
'system_notice.v3_mcp.highlight_tools':
'Επεκτεταμένο σύνολο εργαλείων & προτροπών',
'system_notice.v3_thankyou.title': 'Μια προσωπική σημείωση από εμένα',
'system_notice.v3_thankyou.body': 'Πριν φύγετε — θέλω να αφιερώσω μια στιγμή.\n\nΤο TREK ξεκίνησε ως ένα δευτερεύον έργο που έφτιαξα για τα δικά μου ταξίδια. Ποτέ δεν φαντάστηκα ότι θα γινόταν κάτι που 4.000 από εσάς εμπιστεύεστε τώρα για να σχεδιάσετε τις περιπέτειές σας. Κάθε αστέρι, κάθε αναφορά, κάθε αίτημα χαρακτηριστικού — τα διαβάζω όλα, και με κρατούν να συνεχίζω τις ξενύχτιες ανάμεσα σε δουλειά πλήρους απασχόλησης και πανεπιστήμιο.\n\nΘέλω να ξέρετε: το TREK θα είναι πάντα ανοιχτού κώδικα, πάντα self-hosted, πάντα δικό σας. Χωρίς παρακολούθηση, χωρίς συνδρομές, χωρίς δεσμεύσεις. Απλώς ένα εργαλείο φτιαγμένο από κάποιον που λατρεύει τα ταξίδια όσο κι εσείς.\n\nΙδιαίτερες ευχαριστίες στον [jubnl](https://github.com/jubnl) — έγινες ένας απίστευτος συνεργάτης. Πολλά από αυτά που κάνουν την 3.0 σπουδαία φέρουν τα δαχτυλικά σου αποτυπώματα. Σε ευχαριστώ που πίστεψες σε αυτό το έργο όταν ήταν ακόμα ατελές.\n\nΚαι σε κάθε έναν από εσάς που αναφέρατε ένα σφάλμα, μεταφράσατε ένα κείμενο, μοιραστήκατε το TREK με έναν φίλο, ή απλώς το χρησιμοποιήσατε για να σχεδιάσετε ένα ταξίδι — **σας ευχαριστώ**. Είστε ο λόγος που υπάρχει αυτό.\n\nΕις πολλές ακόμα περιπέτειες μαζί.\n\n— Maurice\n\n---\n\n[Γίνετε μέλος της κοινότητας στο Discord](https://discord.gg/7Q6M6jDwzf)\n\nΑν το TREK κάνει τα ταξίδια σας καλύτερα, ένας [μικρός καφές](https://ko-fi.com/mauriceboe) πάντα κρατά τα φώτα αναμμένα.',
'system_notice.v3_thankyou.body':
'Πριν φύγετε — θέλω να αφιερώσω μια στιγμή.\n\nΤο TREK ξεκίνησε ως ένα δευτερεύον έργο που έφτιαξα για τα δικά μου ταξίδια. Ποτέ δεν φαντάστηκα ότι θα γινόταν κάτι που 4.000 από εσάς εμπιστεύεστε τώρα για να σχεδιάσετε τις περιπέτειές σας. Κάθε αστέρι, κάθε αναφορά, κάθε αίτημα χαρακτηριστικού — τα διαβάζω όλα, και με κρατούν να συνεχίζω τις ξενύχτιες ανάμεσα σε δουλειά πλήρους απασχόλησης και πανεπιστήμιο.\n\nΘέλω να ξέρετε: το TREK θα είναι πάντα ανοιχτού κώδικα, πάντα self-hosted, πάντα δικό σας. Χωρίς παρακολούθηση, χωρίς συνδρομές, χωρίς δεσμεύσεις. Απλώς ένα εργαλείο φτιαγμένο από κάποιον που λατρεύει τα ταξίδια όσο κι εσείς.\n\nΙδιαίτερες ευχαριστίες στον [jubnl](https://github.com/jubnl) — έγινες ένας απίστευτος συνεργάτης. Πολλά από αυτά που κάνουν την 3.0 σπουδαία φέρουν τα δαχτυλικά σου αποτυπώματα. Σε ευχαριστώ που πίστεψες σε αυτό το έργο όταν ήταν ακόμα ατελές.\n\nΚαι σε κάθε έναν από εσάς που αναφέρατε ένα σφάλμα, μεταφράσατε ένα κείμενο, μοιραστήκατε το TREK με έναν φίλο, ή απλώς το χρησιμοποιήσατε για να σχεδιάσετε ένα ταξίδι — **σας ευχαριστώ**. Είστε ο λόγος που υπάρχει αυτό.\n\nΕις πολλές ακόμα περιπέτειες μαζί.\n\n— Maurice\n\n---\n\n[Γίνετε μέλος της κοινότητας στο Discord](https://discord.gg/7Q6M6jDwzf)\n\nΑν το TREK κάνει τα ταξίδια σας καλύτερα, ένας [μικρός καφές](https://ko-fi.com/mauriceboe) πάντα κρατά τα φώτα αναμμένα.',
'system_notice.v3014_whitespace_collision.title': 'Απαιτείται ενέργεια: σύγκρουση λογαριασμού χρήστη',
'system_notice.v3014_whitespace_collision.body': 'Η αναβάθμιση 3.0.14 εντόπισε μία ή περισσότερες συγκρούσεις ονομάτων χρήστη ή email που προκλήθηκαν από κενά στην αρχή/τέλος αποθηκευμένων λογαριασμών. Οι επηρεαζόμενοι λογαριασμοί μετονομάστηκαν αυτόματα. Ελέγξτε τα logs του server για γραμμές που ξεκινούν με **[migration] WHITESPACE COLLISION** για να εντοπίσετε ποιοι λογαριασμοί χρειάζονται έλεγχο.',
'system_notice.v3014_whitespace_collision.title':
'Απαιτείται ενέργεια: σύγκρουση λογαριασμού χρήστη',
'system_notice.v3014_whitespace_collision.body':
'Η αναβάθμιση 3.0.14 εντόπισε μία ή περισσότερες συγκρούσεις ονομάτων χρήστη ή email που προκλήθηκαν από κενά στην αρχή/τέλος αποθηκευμένων λογαριασμών. Οι επηρεαζόμενοι λογαριασμοί μετονομάστηκαν αυτόματα. Ελέγξτε τα logs του server για γραμμές που ξεκινούν με **[migration] WHITESPACE COLLISION** για να εντοπίσετε ποιοι λογαριασμοί χρειάζονται έλεγχο.',
'system_notice.welcome_v1.title': 'Καλώς ήρθατε στο TREK',
'system_notice.welcome_v1.body': 'Ο πλήρης ταξιδιωτικός σας σχεδιαστής. Δημιουργήστε δρομολόγια, μοιραστείτε ταξίδια με φίλους και μείνετε οργανωμένοι — συνδεδεμένοι ή εκτός σύνδεσης.',
'system_notice.welcome_v1.body':
'Ο πλήρης ταξιδιωτικός σας σχεδιαστής. Δημιουργήστε δρομολόγια, μοιραστείτε ταξίδια με φίλους και μείνετε οργανωμένοι — συνδεδεμένοι ή εκτός σύνδεσης.',
'system_notice.welcome_v1.cta_label': 'Σχεδιάστε ένα ταξίδι',
'system_notice.welcome_v1.hero_alt': 'Ένας γραφικός ταξιδιωτικός προορισμός με επικάλυψη περιβάλλοντος σχεδιασμού TREK',
'system_notice.welcome_v1.highlight_plan': 'Δρομολόγια ανά ημέρα για κάθε ταξίδι',
'system_notice.welcome_v1.hero_alt':
'Ένας γραφικός ταξιδιωτικός προορισμός με επικάλυψη περιβάλλοντος σχεδιασμού TREK',
'system_notice.welcome_v1.highlight_plan':
'Δρομολόγια ανά ημέρα για κάθε ταξίδι',
'system_notice.welcome_v1.highlight_share': 'Συνεργαστείτε με συνταξιδιώτες',
'system_notice.welcome_v1.highlight_offline': 'Λειτουργεί εκτός σύνδεσης σε κινητά',
'system_notice.welcome_v1.highlight_offline':
'Λειτουργεί εκτός σύνδεσης σε κινητά',
'system_notice.dev_test_modal.title': '[Dev] Δοκιμαστική ειδοποίηση',
'system_notice.dev_test_modal.body': 'Αυτή είναι μια δοκιμαστική ειδοποίηση μόνο για ανάπτυξη.',
'system_notice.dev_test_modal.body':
'Αυτή είναι μια δοκιμαστική ειδοποίηση μόνο για ανάπτυξη.',
'system_notice.pager.prev': 'Προηγούμενη ειδοποίηση',
'system_notice.pager.next': 'Επόμενη ειδοποίηση',
'system_notice.pager.counter': '{current} / {total}',
+2 -1
View File
@@ -24,7 +24,8 @@ const trip: TranslationStrings = {
'trip.toast.reservationUpdated': 'Η κράτηση ενημερώθηκε',
'trip.toast.reservationAdded': 'Η κράτηση προστέθηκε',
'trip.toast.deleted': 'Διαγράφηκε',
'trip.confirm.deletePlace': 'Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το μέρος;',
'trip.confirm.deletePlace':
'Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το μέρος;',
'trip.confirm.deletePlaces': 'Διαγραφή {count} μερών;',
'trip.toast.placesDeleted': '{count} μέρη διαγράφηκαν',
};
+2 -1
View File
@@ -11,6 +11,7 @@ const trips: TranslationStrings = {
'trips.reminderDays': 'ημέρες',
'trips.reminderCustom': 'Προσαρμοσμένη',
'trips.reminderDaysBefore': 'ημέρες πριν από την αναχώση',
'trips.reminderDisabledHint': 'Η ειδοποίηση για τις υπενθυμήσεις είναι απενεργοποιημένη. Ενεργοποιήστε την στο Διαχείριση > Ρυθμίσεις > Ανακοινώσεις.',
'trips.reminderDisabledHint':
'Η ειδοποίηση για τις υπενθυμήσεις είναι απενεργοποιημένη. Ενεργοποιήστε την στο Διαχείριση > Ρυθμίσεις > Ανακοινώσεις.',
};
export default trips;
+32 -16
View File
@@ -8,7 +8,8 @@ const vacay: TranslationStrings = {
'vacay.addPrevYear': 'Προσθήκη προηγούμενου έτους',
'vacay.removeYear': 'Αφαίρεση έτους',
'vacay.removeYearConfirm': 'Αφαίρεση {year};',
'vacay.removeYearHint': 'Όλες οι καταχωρήσεις διακοπών και οι αργίες της εταιρείας για αυτό το έτος θα διαγραφούν οριστικά.',
'vacay.removeYearHint':
'Όλες οι καταχωρήσεις διακοπών και οι αργίες της εταιρείας για αυτό το έτος θα διαγραφούν οριστικά.',
'vacay.remove': 'Αφαίρεση',
'vacay.persons': 'Άτομα',
'vacay.noPersons': 'Δεν έχουν προστεθεί άτομα',
@@ -16,7 +17,8 @@ const vacay: TranslationStrings = {
'vacay.editPerson': 'Επεξεργασία Ατόμου',
'vacay.removePerson': 'Αφαίρεση Ατόμου',
'vacay.removePersonConfirm': 'Αφαίρεση {name};',
'vacay.removePersonHint': 'Όλες οι καταχωρήσεις διακοπών για αυτό το άτομο θα διαγραφούν οριστικά.',
'vacay.removePersonHint':
'Όλες οι καταχωρήσεις διακοπών για αυτό το άτομο θα διαγραφούν οριστικά.',
'vacay.personName': 'Όνομα',
'vacay.personNamePlaceholder': 'Εισαγάγετε όνομα',
'vacay.color': 'Χρώμα',
@@ -33,7 +35,8 @@ const vacay: TranslationStrings = {
'vacay.remaining': 'Υπόλοιπο',
'vacay.carriedOver': 'από {year}',
'vacay.blockWeekends': 'Αποκλεισμός Σαββατοκύριακων',
'vacay.blockWeekendsHint': 'Αποτρέψτε καταχωρήσεις διακοπών σε ημέρες σαββατοκύριακου',
'vacay.blockWeekendsHint':
'Αποτρέψτε καταχωρήσεις διακοπών σε ημέρες σαββατοκύριακου',
'vacay.weekendDays': 'Ημέρες σαββατοκύριακου',
'vacay.mon': 'Δευ',
'vacay.tue': 'Τρι',
@@ -51,20 +54,26 @@ const vacay: TranslationStrings = {
'vacay.calendarColor': 'Χρώμα',
'vacay.noCalendars': 'Δεν έχουν προστεθεί ημερολόγια αργιών ακόμη',
'vacay.companyHolidays': 'Αργίες Εταιρείας',
'vacay.companyHolidaysHint': 'Επιτρέψτε τη σήμανση αργιών για όλη την εταιρεία',
'vacay.companyHolidaysNoDeduct': 'Οι αργίες της εταιρείας δεν προσμετρώνται στις ημέρες διακοπών.',
'vacay.companyHolidaysHint':
'Επιτρέψτε τη σήμανση αργιών για όλη την εταιρεία',
'vacay.companyHolidaysNoDeduct':
'Οι αργίες της εταιρείας δεν προσμετρώνται στις ημέρες διακοπών.',
'vacay.weekStart': 'Η εβδομάδα ξεκινά την',
'vacay.weekStartHint': 'Επιλέξτε αν η εβδομάδα του ημερολογίου ξεκινά Δευτέρα ή Κυριακή',
'vacay.weekStartHint':
'Επιλέξτε αν η εβδομάδα του ημερολογίου ξεκινά Δευτέρα ή Κυριακή',
'vacay.carryOver': 'Μεταφορά',
'vacay.carryOverHint': 'Αυτόματη μεταφορά των υπολοίπων ημερών διακοπών στο επόμενο έτος',
'vacay.carryOverHint':
'Αυτόματη μεταφορά των υπολοίπων ημερών διακοπών στο επόμενο έτος',
'vacay.sharing': 'Κοινή Χρήση',
'vacay.sharingHint': 'Μοιραστείτε το πλάνο διακοπών σας με άλλους χρήστες TREK',
'vacay.sharingHint':
'Μοιραστείτε το πλάνο διακοπών σας με άλλους χρήστες TREK',
'vacay.owner': 'Κάτοχος',
'vacay.shareEmailPlaceholder': 'Email χρήστη TREK',
'vacay.shareSuccess': 'Το πλάνο μοιράστηκε επιτυχώς',
'vacay.shareError': 'Δεν ήταν δυνατή η κοινοποίηση του πλάνου',
'vacay.dissolve': 'Διάλυση Συγχώνευσης',
'vacay.dissolveHint': 'Διαχωρίστε ξανά τα ημερολόγια. Οι καταχωρήσεις σας θα διατηρηθούν.',
'vacay.dissolveHint':
'Διαχωρίστε ξανά τα ημερολόγια. Οι καταχωρήσεις σας θα διατηρηθούν.',
'vacay.dissolveAction': 'Διάλυση',
'vacay.dissolved': 'Το ημερολόγιο διαχωρίστηκε',
'vacay.fusedWith': 'Συγχωνευμένο με',
@@ -72,7 +81,8 @@ const vacay: TranslationStrings = {
'vacay.noData': 'Δεν υπάρχουν δεδομένα',
'vacay.changeColor': 'Αλλαγή χρώματος',
'vacay.inviteUser': 'Πρόσκληση Χρήστη',
'vacay.inviteHint': 'Προσκαλέστε έναν άλλο χρήστη TREK για να μοιραστείτε ένα κοινό ημερολόγιο διακοπών.',
'vacay.inviteHint':
'Προσκαλέστε έναν άλλο χρήστη TREK για να μοιραστείτε ένα κοινό ημερολόγιο διακοπών.',
'vacay.selectUser': 'Επιλογή χρήστη',
'vacay.sendInvite': 'Αποστολή Πρόσκλησης',
'vacay.inviteSent': 'Η πρόσκληση στάλθηκε',
@@ -83,11 +93,17 @@ const vacay: TranslationStrings = {
'vacay.decline': 'Απόρριψη',
'vacay.acceptFusion': 'Αποδοχή & Συγχώνευση',
'vacay.inviteTitle': 'Αίτημα Συγχώνευσης',
'vacay.inviteWantsToFuse': 'θέλει να μοιραστεί ένα ημερολόγιο διακοπών μαζί σας.',
'vacay.fuseInfo1': 'Και οι δύο θα βλέπετε όλες τις καταχωρήσεις διακοπών σε ένα κοινό ημερολόγιο.',
'vacay.fuseInfo2': 'Και τα δύο μέρη μπορούν να δημιουργούν και να επεξεργάζονται καταχωρήσεις ο ένας για τον άλλο.',
'vacay.fuseInfo3': 'Και τα δύο μέρη μπορούν να διαγράφουν καταχωρήσεις και να αλλάζουν τα δικαιώματα διακοπών.',
'vacay.fuseInfo4': 'Ρυθμίσεις όπως δημόσιες αργίες και αργίες εταιρείας μοιράζονται.',
'vacay.fuseInfo5': 'Η συγχώνευση μπορεί να διαλυθεί ανά πάσα στιγμή από οποιοδήποτε μέρος. Οι καταχωρήσεις σας θα διατηρηθούν.',
'vacay.inviteWantsToFuse':
'θέλει να μοιραστεί ένα ημερολόγιο διακοπών μαζί σας.',
'vacay.fuseInfo1':
'Και οι δύο θα βλέπετε όλες τις καταχωρήσεις διακοπών σε ένα κοινό ημερολόγιο.',
'vacay.fuseInfo2':
'Και τα δύο μέρη μπορούν να δημιουργούν και να επεξεργάζονται καταχωρήσεις ο ένας για τον άλλο.',
'vacay.fuseInfo3':
'Και τα δύο μέρη μπορούν να διαγράφουν καταχωρήσεις και να αλλάζουν τα δικαιώματα διακοπών.',
'vacay.fuseInfo4':
'Ρυθμίσεις όπως δημόσιες αργίες και αργίες εταιρείας μοιράζονται.',
'vacay.fuseInfo5':
'Η συγχώνευση μπορεί να διαλυθεί ανά πάσα στιγμή από οποιοδήποτε μέρος. Οι καταχωρήσεις σας θα διατηρηθούν.',
};
export default vacay;