mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-19 13:21:46 +00:00
chore: prettier + lint
This commit is contained in:
+148
-74
@@ -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;
|
||||
|
||||
@@ -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': 'ημέρες απομένουν',
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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': 'κατηγορίες',
|
||||
};
|
||||
|
||||
@@ -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': 'Η κατηγορία ενημερώθηκε',
|
||||
|
||||
@@ -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': 'διέγραψε ένα μήνυμα',
|
||||
|
||||
@@ -16,7 +16,8 @@ const common: TranslationStrings = {
|
||||
'common.deselectAll': 'Απο-επιλογή όλων',
|
||||
'common.error': 'Σφάλμα',
|
||||
'common.unknownError': 'Άγνωστο σφάλμα',
|
||||
'common.tooManyAttempts': 'Πολλαπλές προσπάθειες. Παρακαλώ δοκιμάστε αργότερα.',
|
||||
'common.tooManyAttempts':
|
||||
'Πολλαπλές προσπάθειες. Παρακαλώ δοκιμάστε αργότερα.',
|
||||
'common.back': 'Πίσω',
|
||||
'common.all': 'Όλα',
|
||||
'common.close': 'Κλείσιμο',
|
||||
|
||||
@@ -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': 'Καλησπέρα,',
|
||||
|
||||
@@ -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': 'Προσθήκη διαμονής',
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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': 'Προσθήκη σημείωσης...',
|
||||
};
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -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': 'Αποτυχία αποθήκευσης',
|
||||
|
||||
@@ -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': 'λεπτά σύνολο',
|
||||
|
||||
@@ -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': 'Διαχείριση τόπων και κατηγοριών',
|
||||
|
||||
@@ -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
@@ -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,7 +2,8 @@ import type { TranslationStrings } from '../types';
|
||||
|
||||
const share: TranslationStrings = {
|
||||
'share.linkTitle': 'Δημόσιος Σύνδεσμος',
|
||||
'share.linkHint': 'Δημιουργήστε έναν σύνδεσμο που μπορεί να χρησιμοποιήσει οποιοσδήποτε για να δει αυτό το ταξίδι χωρίς σύνδεση. Μόνο για ανάγνωση — χωρίς δυνατότητα επεξεργασίας.',
|
||||
'share.linkHint':
|
||||
'Δημιουργήστε έναν σύνδεσμο που μπορεί να χρησιμοποιήσει οποιοσδήποτε για να δει αυτό το ταξίδι χωρίς σύνδεση. Μόνο για ανάγνωση — χωρίς δυνατότητα επεξεργασίας.',
|
||||
'share.createLink': 'Δημιουργία συνδέσμου',
|
||||
'share.deleteLink': 'Διαγραφή συνδέσμου',
|
||||
'share.createError': 'Αδυναμία δημιουργίας συνδέσμου',
|
||||
|
||||
@@ -2,7 +2,8 @@ import type { TranslationStrings } from '../types';
|
||||
|
||||
const shared: TranslationStrings = {
|
||||
'shared.expired': 'Ο σύνδεσμος έληξε ή δεν είναι έγκυρος',
|
||||
'shared.expiredHint': 'Αυτός ο κοινόχρηστος σύνδεσμος ταξιδιού δεν είναι πλέον ενεργός.',
|
||||
'shared.expiredHint':
|
||||
'Αυτός ο κοινόχρηστος σύνδεσμος ταξιδιού δεν είναι πλέον ενεργός.',
|
||||
'shared.readOnly': 'Κοινόχρηστη προβολή μόνο για ανάγνωση',
|
||||
'shared.tabPlan': 'Σχέδιο',
|
||||
'shared.tabBookings': 'Κρατήσεις',
|
||||
|
||||
@@ -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}',
|
||||
|
||||
@@ -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} μέρη διαγράφηκαν',
|
||||
};
|
||||
|
||||
@@ -11,6 +11,7 @@ const trips: TranslationStrings = {
|
||||
'trips.reminderDays': 'ημέρες',
|
||||
'trips.reminderCustom': 'Προσαρμοσμένη',
|
||||
'trips.reminderDaysBefore': 'ημέρες πριν από την αναχώση',
|
||||
'trips.reminderDisabledHint': 'Η ειδοποίηση για τις υπενθυμήσεις είναι απενεργοποιημένη. Ενεργοποιήστε την στο Διαχείριση > Ρυθμίσεις > Ανακοινώσεις.',
|
||||
'trips.reminderDisabledHint':
|
||||
'Η ειδοποίηση για τις υπενθυμήσεις είναι απενεργοποιημένη. Ενεργοποιήστε την στο Διαχείριση > Ρυθμίσεις > Ανακοινώσεις.',
|
||||
};
|
||||
export default trips;
|
||||
|
||||
+32
-16
@@ -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;
|
||||
|
||||
+140
-73
@@ -2,12 +2,14 @@ import type { TranslationStrings } from '../types';
|
||||
|
||||
const admin: TranslationStrings = {
|
||||
'admin.notifications.title': 'Bildirimler',
|
||||
'admin.notifications.hint': 'Bir bildirim kanalı seçin. Aynı anda yalnızca biri etkin olabilir.',
|
||||
'admin.notifications.hint':
|
||||
'Bir bildirim kanalı seçin. Aynı anda yalnızca biri etkin olabilir.',
|
||||
'admin.notifications.none': 'Kapalı',
|
||||
'admin.notifications.email': 'E-posta (SMTP)',
|
||||
'admin.notifications.webhook': 'Web kancası',
|
||||
'admin.notifications.ntfy': 'Ntfy',
|
||||
'admin.ntfy.hint': 'Kullanıcıların kendi ntfy konularını yapılandırmasına izin verin. Aşağıdaki varsayılan sunucu kullanıcı ayarlarında ön doldurma için kullanılır.',
|
||||
'admin.ntfy.hint':
|
||||
'Kullanıcıların kendi ntfy konularını yapılandırmasına izin verin. Aşağıdaki varsayılan sunucu kullanıcı ayarlarında ön doldurma için kullanılır.',
|
||||
'admin.notifications.save': 'Bildirim ayarlarını kaydet',
|
||||
'admin.notifications.saved': 'Bildirim ayarları kaydedildi',
|
||||
'admin.notifications.testWebhook': 'Test webhook gönder',
|
||||
@@ -19,36 +21,52 @@ const admin: TranslationStrings = {
|
||||
'admin.notifications.emailPanel.title': 'E-posta (SMTP)',
|
||||
'admin.notifications.webhookPanel.title': 'Web kancası',
|
||||
'admin.notifications.inappPanel.title': 'Uygulama içi',
|
||||
'admin.notifications.inappPanel.hint': 'Uygulama içi bildirimler her zaman açıktır ve genel olarak kapatılamaz.',
|
||||
'admin.notifications.inappPanel.hint':
|
||||
'Uygulama içi bildirimler her zaman açıktır ve genel olarak kapatılamaz.',
|
||||
'admin.notifications.adminWebhookPanel.title': 'Yönetici Webhook',
|
||||
'admin.notifications.adminWebhookPanel.hint': 'Bu webhook yalnızca yönetici bildirimleri için kullanılır (örn. sürüm uyarıları). Kullanıcı webhook\'larından ayrıdır ve ayarlıysa her zaman tetiklenir.',
|
||||
'admin.notifications.adminWebhookPanel.saved': 'Yönetici webhook URL kaydedildi',
|
||||
'admin.notifications.adminWebhookPanel.testSuccess': 'Test webhook gönderildi',
|
||||
'admin.notifications.adminWebhookPanel.hint':
|
||||
"Bu webhook yalnızca yönetici bildirimleri için kullanılır (örn. sürüm uyarıları). Kullanıcı webhook'larından ayrıdır ve ayarlıysa her zaman tetiklenir.",
|
||||
'admin.notifications.adminWebhookPanel.saved':
|
||||
'Yönetici webhook URL kaydedildi',
|
||||
'admin.notifications.adminWebhookPanel.testSuccess':
|
||||
'Test webhook gönderildi',
|
||||
'admin.notifications.adminWebhookPanel.testFailed': 'Test webhook başarısız',
|
||||
'admin.notifications.adminWebhookPanel.alwaysOnHint': 'URL yapılandırıldığında yönetici webhook her zaman tetiklenir',
|
||||
'admin.notifications.adminWebhookPanel.alwaysOnHint':
|
||||
'URL yapılandırıldığında yönetici webhook her zaman tetiklenir',
|
||||
'admin.notifications.adminNtfyPanel.title': 'Yönetici Ntfy',
|
||||
'admin.notifications.adminNtfyPanel.hint': 'Bu ntfy konusu yalnızca yönetici bildirimleri için kullanılır. Kullanıcı konularından ayrıdır ve yapılandırıldığında her zaman tetiklenir.',
|
||||
'admin.notifications.adminNtfyPanel.serverLabel': 'Ntfy Sunucu URL\'si',
|
||||
'admin.notifications.adminNtfyPanel.serverHint': 'Kullanıcı ntfy bildirimleri için varsayılan sunucu olarak da kullanılır. Boş bırakırsanız ntfy.sh olur. Kullanıcılar kendi ayarlarında geçersiz kılabilir.',
|
||||
'admin.notifications.adminNtfyPanel.hint':
|
||||
'Bu ntfy konusu yalnızca yönetici bildirimleri için kullanılır. Kullanıcı konularından ayrıdır ve yapılandırıldığında her zaman tetiklenir.',
|
||||
'admin.notifications.adminNtfyPanel.serverLabel': "Ntfy Sunucu URL'si",
|
||||
'admin.notifications.adminNtfyPanel.serverHint':
|
||||
'Kullanıcı ntfy bildirimleri için varsayılan sunucu olarak da kullanılır. Boş bırakırsanız ntfy.sh olur. Kullanıcılar kendi ayarlarında geçersiz kılabilir.',
|
||||
'admin.notifications.adminNtfyPanel.serverPlaceholder': 'https://ntfy.sh',
|
||||
'admin.notifications.adminNtfyPanel.topicLabel': 'Yönetici Konusu',
|
||||
'admin.notifications.adminNtfyPanel.topicPlaceholder': 'yürüyüş-yönetici-uyarıları',
|
||||
'admin.notifications.adminNtfyPanel.tokenLabel': 'Erişim anahtarı (isteğe bağlı)',
|
||||
'admin.notifications.adminNtfyPanel.tokenCleared': 'Yönetici erişim anahtarı temizlendi',
|
||||
'admin.notifications.adminNtfyPanel.saved': 'Yönetici ntfy ayarları kaydedildi',
|
||||
'admin.notifications.adminNtfyPanel.topicPlaceholder':
|
||||
'yürüyüş-yönetici-uyarıları',
|
||||
'admin.notifications.adminNtfyPanel.tokenLabel':
|
||||
'Erişim anahtarı (isteğe bağlı)',
|
||||
'admin.notifications.adminNtfyPanel.tokenCleared':
|
||||
'Yönetici erişim anahtarı temizlendi',
|
||||
'admin.notifications.adminNtfyPanel.saved':
|
||||
'Yönetici ntfy ayarları kaydedildi',
|
||||
'admin.notifications.adminNtfyPanel.test': 'Test ntfy gönder',
|
||||
'admin.notifications.adminNtfyPanel.testSuccess': 'Test ntfy gönderildi',
|
||||
'admin.notifications.adminNtfyPanel.testFailed': 'Test ntfy başarısız',
|
||||
'admin.notifications.adminNtfyPanel.alwaysOnHint': 'Konu yapılandırıldığında yönetici ntfy her zaman tetiklenir',
|
||||
'admin.notifications.adminNotificationsHint': 'Yalnızca yönetici bildirimlerinin hangi kanallardan iletileceğini yapılandırın.',
|
||||
'admin.notifications.adminNtfyPanel.alwaysOnHint':
|
||||
'Konu yapılandırıldığında yönetici ntfy her zaman tetiklenir',
|
||||
'admin.notifications.adminNotificationsHint':
|
||||
'Yalnızca yönetici bildirimlerinin hangi kanallardan iletileceğini yapılandırın.',
|
||||
'admin.notifications.tripReminders.title': 'Seyahat Hatırlatıcıları',
|
||||
'admin.notifications.tripReminders.hint': 'Seyahat başlamadan önce hatırlatma gönderir (seyahatte hatırlatma günü ayarlı olmalıdır).',
|
||||
'admin.notifications.tripReminders.hint':
|
||||
'Seyahat başlamadan önce hatırlatma gönderir (seyahatte hatırlatma günü ayarlı olmalıdır).',
|
||||
'admin.notifications.tripReminders.enabled': 'Seyahat hatırlatıcıları açık',
|
||||
'admin.notifications.tripReminders.disabled': 'Seyahat hatırlatıcıları kapalı',
|
||||
'admin.notifications.tripReminders.disabled':
|
||||
'Seyahat hatırlatıcıları kapalı',
|
||||
'admin.smtp.title': 'E-posta ve Bildirimler',
|
||||
'admin.smtp.hint': 'E-posta bildirimleri için SMTP yapılandırması.',
|
||||
'admin.smtp.testButton': 'Test e-postası gönder',
|
||||
'admin.webhook.hint': 'Kullanıcıların bildirimler için kendi webhook URL\'lerini (Discord, Slack vb.) yapılandırmasına izin verin.',
|
||||
'admin.webhook.hint':
|
||||
"Kullanıcıların bildirimler için kendi webhook URL'lerini (Discord, Slack vb.) yapılandırmasına izin verin.",
|
||||
'admin.smtp.testSuccess': 'Test e-postası gönderildi',
|
||||
'admin.smtp.testFailed': 'Test e-postası başarısız',
|
||||
'admin.title': 'Yönetim',
|
||||
@@ -73,7 +91,8 @@ const admin: TranslationStrings = {
|
||||
'admin.editUser': 'Kullanıcıyı Düzenle',
|
||||
'admin.newPassword': 'Yeni Şifre',
|
||||
'admin.newPasswordHint': 'Mevcut şifreyi korumak için boş bırakın',
|
||||
'admin.deleteUser': '"{name}" kullanıcısı silinsin mi? Tüm geziler kalıcı olarak silinecek.',
|
||||
'admin.deleteUser':
|
||||
'"{name}" kullanıcısı silinsin mi? Tüm geziler kalıcı olarak silinecek.',
|
||||
'admin.deleteUserTitle': 'Kullanıcıyı sil',
|
||||
'admin.newPasswordPlaceholder': 'Yeni şifreyi girin…',
|
||||
'admin.toast.loadError': 'Yönetici verileri yüklenemedi',
|
||||
@@ -106,54 +125,74 @@ const admin: TranslationStrings = {
|
||||
'admin.invite.deleteError': 'Davet bağlantısı silinemedi',
|
||||
'admin.tabs.settings': 'Ayarlar',
|
||||
'admin.allowRegistration': 'Kayda İzin Ver',
|
||||
'admin.allowRegistrationHint': 'Yeni kullanıcılar kendileri kayıt olabilirler',
|
||||
'admin.allowRegistrationHint':
|
||||
'Yeni kullanıcılar kendileri kayıt olabilirler',
|
||||
'admin.authMethods': 'Kimlik Doğrulama Yöntemleri',
|
||||
'admin.passwordLogin': 'Şifre Girişi',
|
||||
'admin.passwordLoginHint': 'Kullanıcıların e-posta ve şifreyle oturum açmasına izin ver',
|
||||
'admin.passwordLoginHint':
|
||||
'Kullanıcıların e-posta ve şifreyle oturum açmasına izin ver',
|
||||
'admin.passwordRegistration': 'Şifre Kaydı',
|
||||
'admin.passwordRegistrationHint': 'Yeni kullanıcıların e-posta ve şifreyle kaydolmasına izin ver',
|
||||
'admin.passwordRegistrationHint':
|
||||
'Yeni kullanıcıların e-posta ve şifreyle kaydolmasına izin ver',
|
||||
'admin.oidcLogin': 'TOA Girişi',
|
||||
'admin.oidcLoginHint': 'Kullanıcıların SSO ile oturum açmasına izin Ver',
|
||||
'admin.oidcRegistration': 'SSO Otomatik Temel Hazırlığı',
|
||||
'admin.oidcRegistrationHint': 'Yeni SSO kullanıcıları için otomatik olarak hesap oluşturun',
|
||||
'admin.envOverrideHint': 'Şifre oturum açma ayarları OIDC_ONLY ortam değişkeni tarafından kontrol edilir ve burada değiştirilemez.',
|
||||
'admin.oidcRegistrationHint':
|
||||
'Yeni SSO kullanıcıları için otomatik olarak hesap oluşturun',
|
||||
'admin.envOverrideHint':
|
||||
'Şifre oturum açma ayarları OIDC_ONLY ortam değişkeni tarafından kontrol edilir ve burada değiştirilemez.',
|
||||
'admin.lockoutWarning': 'En az bir oturum açma yöntemi etkin kalmalıdır',
|
||||
'admin.requireMfa': 'İki faktörlü kimlik doğrulama (2FA) gerektir',
|
||||
'admin.requireMfaHint': '2FA\'sı olmayan kullanıcıların uygulamayı kullanmadan önce Ayarlar\'da kurulumu tamamlaması gerekir.',
|
||||
'admin.requireMfaHint':
|
||||
"2FA'sı olmayan kullanıcıların uygulamayı kullanmadan önce Ayarlar'da kurulumu tamamlaması gerekir.",
|
||||
'admin.apiKeys': 'API Anahtarları',
|
||||
'admin.apiKeysHint': 'İsteğe bağlı. Fotoğraflar ve hava durumu gibi genişletilmiş yer verilerini etkinleştirir.',
|
||||
'admin.apiKeysHint':
|
||||
'İsteğe bağlı. Fotoğraflar ve hava durumu gibi genişletilmiş yer verilerini etkinleştirir.',
|
||||
'admin.mapsKey': 'Google Haritalar API Anahtarı',
|
||||
'admin.mapsKeyHint': 'Yer arama için gereklidir. console.cloud.google.com adresinden erişin',
|
||||
'admin.mapsKeyHintLong': 'API anahtarı olmadan OpenStreetMap yer arama için kullanılır. Bir Google API anahtarıyla fotoğraflar, derecelendirmeler ve açılış saatleri de yüklenebilir. console.cloud.google.com adresinden bir tane edinin.',
|
||||
'admin.mapsKeyHint':
|
||||
'Yer arama için gereklidir. console.cloud.google.com adresinden erişin',
|
||||
'admin.mapsKeyHintLong':
|
||||
'API anahtarı olmadan OpenStreetMap yer arama için kullanılır. Bir Google API anahtarıyla fotoğraflar, derecelendirmeler ve açılış saatleri de yüklenebilir. console.cloud.google.com adresinden bir tane edinin.',
|
||||
'admin.recommended': 'Tavsiye edilen',
|
||||
'admin.weatherKey': 'OpenWeatherMap API Anahtarı',
|
||||
'admin.weatherKeyHint': 'Hava durumu verileri için. openweathermap.org\'da ücretsiz',
|
||||
'admin.weatherKeyHint':
|
||||
"Hava durumu verileri için. openweathermap.org'da ücretsiz",
|
||||
'admin.validateKey': 'Test et',
|
||||
'admin.keyValid': 'Bağlı',
|
||||
'admin.keyInvalid': 'Geçersiz',
|
||||
'admin.keySaved': 'API anahtarları kaydedildi',
|
||||
'admin.oidcTitle': 'Tek Oturum Açma (OIDC)',
|
||||
'admin.oidcSubtitle': 'Google, Apple, Authentik veya Keycloak gibi harici sağlayıcılar aracılığıyla oturum açmaya izin verin.',
|
||||
'admin.oidcSubtitle':
|
||||
'Google, Apple, Authentik veya Keycloak gibi harici sağlayıcılar aracılığıyla oturum açmaya izin verin.',
|
||||
'admin.oidcDisplayName': 'Ekran Adı',
|
||||
'admin.oidcIssuer': 'Veren URL\'si',
|
||||
'admin.oidcIssuerHint': 'Sağlayıcının OpenID Connect Veren URL\'si. örneğin https://accounts.google.com',
|
||||
'admin.oidcIssuer': "Veren URL'si",
|
||||
'admin.oidcIssuerHint':
|
||||
"Sağlayıcının OpenID Connect Veren URL'si. örneğin https://accounts.google.com",
|
||||
'admin.oidcSaved': 'OIDC yapılandırması kaydedildi',
|
||||
'admin.oidcOnlyMode': 'Parola kimlik doğrulamasını devre dışı bırak',
|
||||
'admin.oidcOnlyModeHint': 'Etkinleştirildiğinde yalnızca SSO girişine izin verilir. Şifre tabanlı oturum açma ve kayıt engellenir.',
|
||||
'admin.oidcOnlyModeHint':
|
||||
'Etkinleştirildiğinde yalnızca SSO girişine izin verilir. Şifre tabanlı oturum açma ve kayıt engellenir.',
|
||||
'admin.fileTypes': 'İzin Verilen Dosya Türleri',
|
||||
'admin.fileTypesHint': 'Kullanıcıların hangi dosya türlerini yükleyebileceğini yapılandırın.',
|
||||
'admin.fileTypesFormat': 'Virgülle ayrılmış uzantılar (ör. jpg,png,pdf,doc). Tüm türlere izin vermek için * kullanın.',
|
||||
'admin.fileTypesHint':
|
||||
'Kullanıcıların hangi dosya türlerini yükleyebileceğini yapılandırın.',
|
||||
'admin.fileTypesFormat':
|
||||
'Virgülle ayrılmış uzantılar (ör. jpg,png,pdf,doc). Tüm türlere izin vermek için * kullanın.',
|
||||
'admin.fileTypesSaved': 'Dosya türü ayarları kaydedildi',
|
||||
'admin.placesPhotos.title': 'Fotoğrafları Yerleştir',
|
||||
'admin.placesPhotos.subtitle': 'Fotoğrafları Google Rehber API\'sinden alın. API kotasını kaydetmeyi devre dışı bırakın. Wikimedia fotoğrafları etkilenmez.',
|
||||
'admin.placesPhotos.subtitle':
|
||||
"Fotoğrafları Google Rehber API'sinden alın. API kotasını kaydetmeyi devre dışı bırakın. Wikimedia fotoğrafları etkilenmez.",
|
||||
'admin.placesAutocomplete.title': 'Otomatik Tamamlamayı Yerleştir',
|
||||
'admin.placesAutocomplete.subtitle': 'Arama önerileri için Google Rehber API\'sini kullanın. API kotasını kaydetmeyi devre dışı bırakın.',
|
||||
'admin.placesAutocomplete.subtitle':
|
||||
"Arama önerileri için Google Rehber API'sini kullanın. API kotasını kaydetmeyi devre dışı bırakın.",
|
||||
'admin.placesDetails.title': 'Yer Detayları',
|
||||
'admin.placesDetails.subtitle': 'Google Rehber API\'sinden ayrıntılı yer bilgilerini (saat, puan, web sitesi) alın. API kotasını kaydetmeyi devre dışı bırakın.',
|
||||
'admin.placesDetails.subtitle':
|
||||
"Google Rehber API'sinden ayrıntılı yer bilgilerini (saat, puan, web sitesi) alın. API kotasını kaydetmeyi devre dışı bırakın.",
|
||||
'admin.bagTracking.title': 'Çanta Takibi',
|
||||
'admin.bagTracking.subtitle': 'Paketleme öğeleri için ağırlık ve torba atamasını etkinleştirin',
|
||||
'admin.bagTracking.subtitle':
|
||||
'Paketleme öğeleri için ağırlık ve torba atamasını etkinleştirin',
|
||||
'admin.collab.chat.title': 'Sohbet',
|
||||
'admin.collab.chat.subtitle': 'Seyahat işbirliği için gerçek zamanlı mesajlaşma',
|
||||
'admin.collab.chat.subtitle':
|
||||
'Seyahat işbirliği için gerçek zamanlı mesajlaşma',
|
||||
'admin.collab.notes.title': 'Notlar',
|
||||
'admin.collab.notes.subtitle': 'Paylaşılan notlar ve belgeler',
|
||||
'admin.collab.polls.title': 'Anketler',
|
||||
@@ -163,13 +202,15 @@ const admin: TranslationStrings = {
|
||||
'admin.tabs.config': 'Kişiselleştirme',
|
||||
'admin.tabs.defaults': 'Kullanıcı Varsayılanları',
|
||||
'admin.defaultSettings.title': 'Varsayılan Kullanıcı Ayarları',
|
||||
'admin.defaultSettings.description': 'Örnek çapında varsayılanları ayarlayın. Herhangi bir ayarı değiştirmemiş olan kullanıcılar bu değerleri görecektir. Kendi değişiklikleri her zaman önceliklidir.',
|
||||
'admin.defaultSettings.description':
|
||||
'Örnek çapında varsayılanları ayarlayın. Herhangi bir ayarı değiştirmemiş olan kullanıcılar bu değerleri görecektir. Kendi değişiklikleri her zaman önceliklidir.',
|
||||
'admin.defaultSettings.saved': 'Varsayılan kaydedildi',
|
||||
'admin.defaultSettings.reset': 'Yerleşik varsayılana sıfırla',
|
||||
'admin.defaultSettings.resetToBuiltIn': 'sıfırlama',
|
||||
'admin.tabs.templates': 'Paketleme Şablonları',
|
||||
'admin.packingTemplates.title': 'Paketleme Şablonları',
|
||||
'admin.packingTemplates.subtitle': 'Seyahatleriniz için yeniden kullanılabilir paketleme listeleri oluşturun',
|
||||
'admin.packingTemplates.subtitle':
|
||||
'Seyahatleriniz için yeniden kullanılabilir paketleme listeleri oluşturun',
|
||||
'admin.packingTemplates.create': 'Yeni Şablon',
|
||||
'admin.packingTemplates.namePlaceholder': 'Şablon adı (ör. Plaj Tatili)',
|
||||
'admin.packingTemplates.empty': 'Henüz şablon oluşturulmadı',
|
||||
@@ -187,24 +228,34 @@ const admin: TranslationStrings = {
|
||||
'admin.packingTemplates.saveError': 'Kaydedilemedi',
|
||||
'admin.tabs.addons': 'Eklentiler',
|
||||
'admin.addons.title': 'Eklentiler',
|
||||
'admin.addons.subtitle': 'TREK deneyiminizi özelleştirmek için özellikleri etkinleştirin veya devre dışı bırakın.',
|
||||
'admin.addons.subtitle':
|
||||
'TREK deneyiminizi özelleştirmek için özellikleri etkinleştirin veya devre dışı bırakın.',
|
||||
'admin.addons.catalog.packing.name': 'Listeler',
|
||||
'admin.addons.catalog.packing.description': 'Seyahatleriniz için paket listeleri ve yapılacak işler',
|
||||
'admin.addons.catalog.packing.description':
|
||||
'Seyahatleriniz için paket listeleri ve yapılacak işler',
|
||||
'admin.addons.catalog.budget.name': 'Bütçe',
|
||||
'admin.addons.catalog.budget.description': 'Harcamaları takip edin ve seyahat bütçenizi planlayın',
|
||||
'admin.addons.catalog.budget.description':
|
||||
'Harcamaları takip edin ve seyahat bütçenizi planlayın',
|
||||
'admin.addons.catalog.documents.name': 'Belgeler',
|
||||
'admin.addons.catalog.documents.description': 'Seyahat belgelerini saklayın ve yönetin',
|
||||
'admin.addons.catalog.documents.description':
|
||||
'Seyahat belgelerini saklayın ve yönetin',
|
||||
'admin.addons.catalog.vacay.name': 'Tatil',
|
||||
'admin.addons.catalog.vacay.description': 'Takvim görünümüne sahip kişisel tatil planlayıcısı',
|
||||
'admin.addons.catalog.vacay.description':
|
||||
'Takvim görünümüne sahip kişisel tatil planlayıcısı',
|
||||
'admin.addons.catalog.atlas.name': 'Atlas',
|
||||
'admin.addons.catalog.atlas.description': 'Ziyaret edilen ülkeleri ve seyahat istatistiklerini içeren dünya haritası',
|
||||
'admin.addons.catalog.atlas.description':
|
||||
'Ziyaret edilen ülkeleri ve seyahat istatistiklerini içeren dünya haritası',
|
||||
'admin.addons.catalog.collab.name': 'İş birliği',
|
||||
'admin.addons.catalog.collab.description': 'Seyahat planlaması için gerçek zamanlı notlar, anketler ve sohbet',
|
||||
'admin.addons.catalog.collab.description':
|
||||
'Seyahat planlaması için gerçek zamanlı notlar, anketler ve sohbet',
|
||||
'admin.addons.catalog.memories.name': 'Fotoğraflar (Immich)',
|
||||
'admin.addons.catalog.memories.description': 'Immich örneğiniz aracılığıyla gezi fotoğraflarını paylaşın',
|
||||
'admin.addons.catalog.memories.description':
|
||||
'Immich örneğiniz aracılığıyla gezi fotoğraflarını paylaşın',
|
||||
'admin.addons.catalog.mcp.name': 'MCP',
|
||||
'admin.addons.catalog.mcp.description': 'Yapay zeka asistanı entegrasyonu için Model Bağlam Protokolü',
|
||||
'admin.addons.subtitleBefore': 'Kişiselleştirmenizi özelleştirmek için özellikleri etkinleştirin veya devre dışı bırakın.',
|
||||
'admin.addons.catalog.mcp.description':
|
||||
'Yapay zeka asistanı entegrasyonu için Model Bağlam Protokolü',
|
||||
'admin.addons.subtitleBefore':
|
||||
'Kişiselleştirmenizi özelleştirmek için özellikleri etkinleştirin veya devre dışı bırakın.',
|
||||
'admin.addons.subtitleAfter': 'deneyim.',
|
||||
'admin.addons.enabled': 'Etkinleştirilmiş',
|
||||
'admin.addons.disabled': 'Engelli',
|
||||
@@ -212,24 +263,30 @@ const admin: TranslationStrings = {
|
||||
'admin.addons.type.global': 'Küresel',
|
||||
'admin.addons.type.integration': 'Entegrasyon',
|
||||
'admin.addons.tripHint': 'Her yolculukta bir sekme olarak mevcuttur',
|
||||
'admin.addons.globalHint': 'Ana navigasyonda bağımsız bir bölüm olarak mevcuttur',
|
||||
'admin.addons.integrationHint': 'Özel bir sayfa olmadan arka uç hizmetleri ve API entegrasyonları',
|
||||
'admin.addons.globalHint':
|
||||
'Ana navigasyonda bağımsız bir bölüm olarak mevcuttur',
|
||||
'admin.addons.integrationHint':
|
||||
'Özel bir sayfa olmadan arka uç hizmetleri ve API entegrasyonları',
|
||||
'admin.addons.toast.updated': 'Eklenti güncellendi',
|
||||
'admin.addons.toast.error': 'Eklenti güncellenemedi',
|
||||
'admin.addons.noAddons': 'Kullanılabilir eklenti yok',
|
||||
'admin.weather.title': 'Hava Durumu Verileri',
|
||||
'admin.weather.badge': '24 Mart 2026\'dan beri',
|
||||
'admin.weather.description': 'TREK, hava durumu veri kaynağı olarak Open-Meteo\'yu kullanıyor. Open-Meteo ücretsiz, açık kaynaklı bir hava durumu hizmetidir; API anahtarı gerekmez.',
|
||||
'admin.weather.badge': "24 Mart 2026'dan beri",
|
||||
'admin.weather.description':
|
||||
"TREK, hava durumu veri kaynağı olarak Open-Meteo'yu kullanıyor. Open-Meteo ücretsiz, açık kaynaklı bir hava durumu hizmetidir; API anahtarı gerekmez.",
|
||||
'admin.weather.forecast': '16 günlük tahmin',
|
||||
'admin.weather.forecastDesc': 'Daha önce 5 gün (OpenWeatherMap)',
|
||||
'admin.weather.climate': 'Geçmiş iklim verileri',
|
||||
'admin.weather.climateDesc': '16 günlük tahminin ötesindeki günler için son 85 yılın ortalamaları',
|
||||
'admin.weather.climateDesc':
|
||||
'16 günlük tahminin ötesindeki günler için son 85 yılın ortalamaları',
|
||||
'admin.weather.requests': '10.000 istek / gün',
|
||||
'admin.weather.requestsDesc': 'Ücretsiz, API anahtarı gerekmez',
|
||||
'admin.weather.locationHint': 'Hava durumu her gün koordinatlarla ilk sırada yer alır. Bir güne herhangi bir yer atanmamışsa, yer listesindeki herhangi bir yer referans olarak kullanılır.',
|
||||
'admin.weather.locationHint':
|
||||
'Hava durumu her gün koordinatlarla ilk sırada yer alır. Bir güne herhangi bir yer atanmamışsa, yer listesindeki herhangi bir yer referans olarak kullanılır.',
|
||||
'admin.tabs.mcpTokens': 'MCP Erişimi',
|
||||
'admin.mcpTokens.title': 'MCP Erişimi',
|
||||
'admin.mcpTokens.subtitle': 'Tüm Kullanıcılar genelinde OAuth Oturumlarını ve API belirteçlerini yönetin',
|
||||
'admin.mcpTokens.subtitle':
|
||||
'Tüm Kullanıcılar genelinde OAuth Oturumlarını ve API belirteçlerini yönetin',
|
||||
'admin.mcpTokens.sectionTitle': 'API Belirteçleri',
|
||||
'admin.mcpTokens.owner': 'Mal sahibi',
|
||||
'admin.mcpTokens.tokenName': 'Jeton Adı',
|
||||
@@ -238,7 +295,8 @@ const admin: TranslationStrings = {
|
||||
'admin.mcpTokens.never': 'Asla',
|
||||
'admin.mcpTokens.empty': 'Henüz MCP tokenı oluşturulmadı',
|
||||
'admin.mcpTokens.deleteTitle': 'Jetonu Sil',
|
||||
'admin.mcpTokens.deleteMessage': 'Bu, jetonu anında iptal edecektir. Kullanıcı bu belirteç aracılığıyla MCP erişimini kaybedecektir.',
|
||||
'admin.mcpTokens.deleteMessage':
|
||||
'Bu, jetonu anında iptal edecektir. Kullanıcı bu belirteç aracılığıyla MCP erişimini kaybedecektir.',
|
||||
'admin.mcpTokens.deleteSuccess': 'Jeton silindi',
|
||||
'admin.mcpTokens.deleteError': 'Jeton silinemedi',
|
||||
'admin.mcpTokens.loadError': 'Jetonlar yüklenemedi',
|
||||
@@ -249,12 +307,14 @@ const admin: TranslationStrings = {
|
||||
'admin.oauthSessions.created': 'Oluşturuldu',
|
||||
'admin.oauthSessions.empty': 'Aktif OAuth Oturumu yok',
|
||||
'admin.oauthSessions.revokeTitle': 'Oturumu İptal Et',
|
||||
'admin.oauthSessions.revokeMessage': 'Bu, OAuth oturumunu hemen iptal edecektir. İstemci MCP erişimini kaybedecek.',
|
||||
'admin.oauthSessions.revokeMessage':
|
||||
'Bu, OAuth oturumunu hemen iptal edecektir. İstemci MCP erişimini kaybedecek.',
|
||||
'admin.oauthSessions.revokeSuccess': 'Oturum iptal edildi',
|
||||
'admin.oauthSessions.revokeError': 'Oturum iptal edilemedi',
|
||||
'admin.oauthSessions.loadError': 'OAuth oturumları yüklenemedi',
|
||||
'admin.tabs.github': 'GitHub',
|
||||
'admin.audit.subtitle': 'Güvenlik açısından hassas olaylar ve yönetim olayları (yedeklemeler, kullanıcılar, MFA, ayarlar).',
|
||||
'admin.audit.subtitle':
|
||||
'Güvenlik açısından hassas olaylar ve yönetim olayları (yedeklemeler, kullanıcılar, MFA, ayarlar).',
|
||||
'admin.audit.empty': 'Henüz denetim girişi yok.',
|
||||
'admin.audit.refresh': 'Yenile',
|
||||
'admin.audit.loadMore': 'Daha fazlasını yükle',
|
||||
@@ -266,7 +326,7 @@ const admin: TranslationStrings = {
|
||||
'admin.audit.col.ip': 'IP',
|
||||
'admin.audit.col.details': 'Detaylar',
|
||||
'admin.github.title': 'Sürüm Geçmişi',
|
||||
'admin.github.subtitle': '{repo}\'dan en son güncellemeler',
|
||||
'admin.github.subtitle': "{repo}'dan en son güncellemeler",
|
||||
'admin.github.latest': 'En sonuncu',
|
||||
'admin.github.prerelease': 'Ön sürüm',
|
||||
'admin.github.showDetails': 'Ayrıntıları göster',
|
||||
@@ -275,26 +335,33 @@ const admin: TranslationStrings = {
|
||||
'admin.github.loading': 'Yükleniyor...',
|
||||
'admin.github.error': 'Sürümler yüklenemedi',
|
||||
'admin.github.by': 'ile',
|
||||
'admin.github.support': 'TREK\'i geliştirmeye devam etmeme yardımcı oluyor',
|
||||
'admin.github.support': "TREK'i geliştirmeye devam etmeme yardımcı oluyor",
|
||||
'admin.update.available': 'Güncelleme mevcut',
|
||||
'admin.update.text': 'TREK {versiyon} mevcut. {current} çalıştırıyorsunuz.',
|
||||
'admin.update.button': 'GitHub\'da görüntüle',
|
||||
'admin.update.button': "GitHub'da görüntüle",
|
||||
'admin.update.install': 'Güncellemeyi Yükle',
|
||||
'admin.update.confirmTitle': 'Güncelleme Yüklensin mi?',
|
||||
'admin.update.confirmText': 'TREK, {current} sürümünden {version} sürümüne güncellenecek. Sunucu daha sonra otomatik olarak yeniden başlatılacaktır.',
|
||||
'admin.update.dataInfo': 'Tüm verileriniz (seyahatler, kullanıcılar, API anahtarları, yüklemeler, Vacay, Atlas, bütçeler) korunacaktır.',
|
||||
'admin.update.warning': 'Yeniden başlatma sırasında uygulama kısa süreliğine kullanılamayacaktır.',
|
||||
'admin.update.confirmText':
|
||||
'TREK, {current} sürümünden {version} sürümüne güncellenecek. Sunucu daha sonra otomatik olarak yeniden başlatılacaktır.',
|
||||
'admin.update.dataInfo':
|
||||
'Tüm verileriniz (seyahatler, kullanıcılar, API anahtarları, yüklemeler, Vacay, Atlas, bütçeler) korunacaktır.',
|
||||
'admin.update.warning':
|
||||
'Yeniden başlatma sırasında uygulama kısa süreliğine kullanılamayacaktır.',
|
||||
'admin.update.confirm': 'Şimdi Güncelle',
|
||||
'admin.update.installing': 'Güncelleniyor…',
|
||||
'admin.update.success': 'Güncelleme yüklendi! Sunucu yeniden başlatılıyor…',
|
||||
'admin.update.failed': 'Güncelleme başarısız oldu',
|
||||
'admin.update.backupHint': 'Güncellemeden önce bir yedek oluşturmanızı öneririz.',
|
||||
'admin.update.backupHint':
|
||||
'Güncellemeden önce bir yedek oluşturmanızı öneririz.',
|
||||
'admin.update.backupLink': 'Yedeklemeye Git',
|
||||
'admin.update.howTo': 'Nasıl Güncellenir?',
|
||||
'admin.update.dockerText': 'TREK örneğiniz Docker\'da çalışır. {version} sürümüne güncellemek için sunucunuzda aşağıdaki komutları çalıştırın:',
|
||||
'admin.update.reloadHint': 'Lütfen birkaç saniye içinde sayfayı yeniden yükleyin.',
|
||||
'admin.update.dockerText':
|
||||
"TREK örneğiniz Docker'da çalışır. {version} sürümüne güncellemek için sunucunuzda aşağıdaki komutları çalıştırın:",
|
||||
'admin.update.reloadHint':
|
||||
'Lütfen birkaç saniye içinde sayfayı yeniden yükleyin.',
|
||||
'admin.tabs.permissions': 'İzinler',
|
||||
'admin.addons.catalog.journey.name': 'Seyahat',
|
||||
'admin.addons.catalog.journey.description': 'Check-in, fotoğraf ve günlük hikâyelerle seyahat takibi ve seyahat günlüğü',
|
||||
'admin.addons.catalog.journey.description':
|
||||
'Check-in, fotoğraf ve günlük hikâyelerle seyahat takibi ve seyahat günlüğü',
|
||||
};
|
||||
export default admin;
|
||||
|
||||
@@ -8,7 +8,8 @@ const atlas: TranslationStrings = {
|
||||
'atlas.unmark': 'Kaldırmak',
|
||||
'atlas.confirmMark': 'Bu ülke ziyaret edildi olarak işaretlensin mi?',
|
||||
'atlas.confirmUnmark': 'Bu ülke ziyaret ettiğiniz listeden kaldırılsın mı?',
|
||||
'atlas.confirmUnmarkRegion': 'Bu bölge ziyaret ettiğiniz listeden kaldırılsın mı?',
|
||||
'atlas.confirmUnmarkRegion':
|
||||
'Bu bölge ziyaret ettiğiniz listeden kaldırılsın mı?',
|
||||
'atlas.markVisited': 'Ziyaret edildi olarak işaretle',
|
||||
'atlas.markVisitedHint': 'Bu ülkeyi ziyaret ettiğiniz listeye ekleyin',
|
||||
'atlas.markRegionVisitedHint': 'Bu bölgeyi ziyaret ettiğiniz listeye ekleyin',
|
||||
@@ -30,7 +31,8 @@ const atlas: TranslationStrings = {
|
||||
'atlas.visitedCountries': 'Ziyaret Edilen Ülkeler',
|
||||
'atlas.cities': 'Şehirler',
|
||||
'atlas.noData': 'Henüz seyahat verisi yok',
|
||||
'atlas.noDataHint': 'Bir gezi oluşturun ve dünya haritanızı göreceğiniz yerleri ekleyin',
|
||||
'atlas.noDataHint':
|
||||
'Bir gezi oluşturun ve dünya haritanızı göreceğiniz yerleri ekleyin',
|
||||
'atlas.lastTrip': 'Son yolculuk',
|
||||
'atlas.nextTrip': 'Sonraki gezi',
|
||||
'atlas.daysLeft': 'kalan günler',
|
||||
|
||||
@@ -12,8 +12,10 @@ const backup: TranslationStrings = {
|
||||
'backup.createFirst': 'İlk yedeği oluştur',
|
||||
'backup.download': 'İndir',
|
||||
'backup.restore': 'Geri yükle',
|
||||
'backup.confirm.restore': '"{name}" yedeği geri yüklensin mi?\\\\n\\\\nTüm mevcut veriler yedekle değiştirilecek.',
|
||||
'backup.confirm.uploadRestore': '"{name}" yedek dosyası yüklenip geri yüklensin mi?\\\\n\\\\nTüm mevcut verilerin üzerine yazılacak.',
|
||||
'backup.confirm.restore':
|
||||
'"{name}" yedeği geri yüklensin mi?\\\\n\\\\nTüm mevcut veriler yedekle değiştirilecek.',
|
||||
'backup.confirm.uploadRestore':
|
||||
'"{name}" yedek dosyası yüklenip geri yüklensin mi?\\\\n\\\\nTüm mevcut verilerin üzerine yazılacak.',
|
||||
'backup.confirm.delete': '"{name}" yedeği silinsin mi?',
|
||||
'backup.toast.loadError': 'Yedekler yüklenemedi',
|
||||
'backup.toast.created': 'Yedek başarıyla oluşturuldu',
|
||||
@@ -29,7 +31,8 @@ const backup: TranslationStrings = {
|
||||
'backup.auto.title': 'Otomatik yedekleme',
|
||||
'backup.auto.subtitle': 'Zamanlanmış otomatik yedekleme',
|
||||
'backup.auto.enable': 'Otomatik yedeklemeyi etkinleştir',
|
||||
'backup.auto.enableHint': 'Yedekler seçilen programa göre otomatik oluşturulur',
|
||||
'backup.auto.enableHint':
|
||||
'Yedekler seçilen programa göre otomatik oluşturulur',
|
||||
'backup.auto.interval': 'Aralık',
|
||||
'backup.auto.hour': 'Çalışma saati',
|
||||
'backup.auto.hourHint': 'Sunucu yerel saati ({format} biçimi)',
|
||||
@@ -41,7 +44,8 @@ const backup: TranslationStrings = {
|
||||
'backup.auto.summaryWeekly': 'Her {day} saat {hour}:00',
|
||||
'backup.auto.summaryMonthly': 'Her ayın {day}. günü saat {hour}:00',
|
||||
'backup.auto.envLocked': 'Liman işçisi',
|
||||
'backup.auto.envLockedHint': 'Otomatik yedekleme Docker ortam değişkenleriyle yapılandırılır. Bu ayarları değiştirmek için docker-compose.yml dosyanızı güncelleyip konteyneri yeniden başlatın.',
|
||||
'backup.auto.envLockedHint':
|
||||
'Otomatik yedekleme Docker ortam değişkenleriyle yapılandırılır. Bu ayarları değiştirmek için docker-compose.yml dosyanızı güncelleyip konteyneri yeniden başlatın.',
|
||||
'backup.auto.copyEnv': 'Docker Ortam değişkenlerini kopyala',
|
||||
'backup.auto.envCopied': 'Docker ortam değişkenleri panoya kopyalandı',
|
||||
'backup.auto.keepLabel': 'Eski yedekleri şu süreden sonra sil',
|
||||
@@ -63,8 +67,10 @@ const backup: TranslationStrings = {
|
||||
'backup.keep.30days': '30 gün',
|
||||
'backup.keep.forever': 'Sonsuza kadar sakla',
|
||||
'backup.restoreConfirmTitle': 'Yedek geri yüklensin mi?',
|
||||
'backup.restoreWarning': 'Tüm mevcut veriler (seyahatler, yerler, kullanıcılar, yüklemeler) yedekle kalıcı olarak değiştirilecek. Bu işlem geri alınamaz.',
|
||||
'backup.restoreTip': 'İpucu: Geri yüklemeden önce mevcut durumun yedeğini oluşturun.',
|
||||
'backup.restoreWarning':
|
||||
'Tüm mevcut veriler (seyahatler, yerler, kullanıcılar, yüklemeler) yedekle kalıcı olarak değiştirilecek. Bu işlem geri alınamaz.',
|
||||
'backup.restoreTip':
|
||||
'İpucu: Geri yüklemeden önce mevcut durumun yedeğini oluşturun.',
|
||||
'backup.restoreConfirm': 'Evet, geri yükle',
|
||||
};
|
||||
export default backup;
|
||||
|
||||
@@ -4,7 +4,8 @@ const budget: TranslationStrings = {
|
||||
'budget.title': 'Bütçe',
|
||||
'budget.exportCsv': 'CSV dışa aktar',
|
||||
'budget.emptyTitle': 'Henüz bütçe oluşturulmadı',
|
||||
'budget.emptyText': 'Seyahat bütçenizi planlamak için kategoriler ve kayıtlar oluşturun',
|
||||
'budget.emptyText':
|
||||
'Seyahat bütçenizi planlamak için kategoriler ve kayıtlar oluşturun',
|
||||
'budget.emptyPlaceholder': 'Kategori adı girin...',
|
||||
'budget.createCategory': 'Kategori Oluştur',
|
||||
'budget.category': 'Kategori',
|
||||
@@ -26,14 +27,16 @@ const budget: TranslationStrings = {
|
||||
'budget.byCategory': 'Kategoriye Göre',
|
||||
'budget.editTooltip': 'Düzenlemek için tıklayın',
|
||||
'budget.linkedToReservation': 'Bir rezervasyona bağlı — adı orada düzenleyin',
|
||||
'budget.confirm.deleteCategory': '"{name}" kategorisini {count} kayıtla birlikte silmek istediğinizden emin misiniz?',
|
||||
'budget.confirm.deleteCategory':
|
||||
'"{name}" kategorisini {count} kayıtla birlikte silmek istediğinizden emin misiniz?',
|
||||
'budget.deleteCategory': 'Kategoriyi Sil',
|
||||
'budget.perPerson': 'Kişi Başı',
|
||||
'budget.paid': 'Ödendi',
|
||||
'budget.open': 'Açık',
|
||||
'budget.noMembers': 'Atanmış üye yok',
|
||||
'budget.settlement': 'Hesaplaşma',
|
||||
'budget.settlementInfo': 'Bir bütçe kalemindeki üye avatarına tıklayarak yeşil işaretleyin — bu ödedikleri anlamına gelir. Hesaplaşma kimin kime ne kadar borçlu olduğunu gösterir.',
|
||||
'budget.settlementInfo':
|
||||
'Bir bütçe kalemindeki üye avatarına tıklayarak yeşil işaretleyin — bu ödedikleri anlamına gelir. Hesaplaşma kimin kime ne kadar borçlu olduğunu gösterir.',
|
||||
'budget.netBalances': 'Net Bakiyeler',
|
||||
'budget.categoriesLabel': 'kategoriler',
|
||||
};
|
||||
|
||||
@@ -13,7 +13,8 @@ const categories: TranslationStrings = {
|
||||
'categories.defaultName': 'Kategori',
|
||||
'categories.update': 'Güncelle',
|
||||
'categories.create': 'Oluştur',
|
||||
'categories.confirm.delete': 'Kategori silinsin mi? Bu kategorideki yerler silinmez.',
|
||||
'categories.confirm.delete':
|
||||
'Kategori silinsin mi? Bu kategorideki yerler silinmez.',
|
||||
'categories.toast.loadError': 'Kategoriler yüklenemedi',
|
||||
'categories.toast.nameRequired': 'Lütfen bir ad girin',
|
||||
'categories.toast.updated': 'Kategori güncellendi',
|
||||
|
||||
@@ -14,7 +14,8 @@ const collab: TranslationStrings = {
|
||||
'collab.chat.placeholder': 'Mesaj yazın...',
|
||||
'collab.chat.empty': 'Sohbeti başlatın',
|
||||
'collab.chat.emptyHint': 'Mesajlar tüm seyahat üyeleriyle paylaşılır',
|
||||
'collab.chat.emptyDesc': 'Seyahat grubunuzla fikir, plan ve güncellemeleri paylaşın',
|
||||
'collab.chat.emptyDesc':
|
||||
'Seyahat grubunuzla fikir, plan ve güncellemeleri paylaşın',
|
||||
'collab.chat.today': 'Bugün',
|
||||
'collab.chat.yesterday': 'Dün',
|
||||
'collab.chat.deletedMessage': 'bir mesajı sildi',
|
||||
|
||||
@@ -19,7 +19,8 @@ const dashboard: TranslationStrings = {
|
||||
'dashboard.timezoneCustomTzPlaceholder': 'örn. America/New_York',
|
||||
'dashboard.timezoneCustomAdd': 'Ekle',
|
||||
'dashboard.timezoneCustomErrorEmpty': 'Saat dilimi tanımlayıcısı girin',
|
||||
'dashboard.timezoneCustomErrorInvalid': 'Geçersiz saat dilimi. Europe/Berlin gibi bir biçim kullanın',
|
||||
'dashboard.timezoneCustomErrorInvalid':
|
||||
'Geçersiz saat dilimi. Europe/Berlin gibi bir biçim kullanın',
|
||||
'dashboard.timezoneCustomErrorDuplicate': 'Zaten ekli',
|
||||
'dashboard.emptyTitle': 'Henüz seyahat yok',
|
||||
'dashboard.emptyText': 'İlk seyahatinizi oluşturup planlamaya başlayın!',
|
||||
@@ -53,7 +54,8 @@ const dashboard: TranslationStrings = {
|
||||
'dashboard.toast.restoreError': 'Geri alınamadı',
|
||||
'dashboard.toast.copied': 'Seyahat kopyalandı!',
|
||||
'dashboard.toast.copyError': 'Kopyalanamadı',
|
||||
'dashboard.confirm.delete': '"{title}" seyahatini sil? Tüm yerler ve planlar kalıcı olarak silinir.',
|
||||
'dashboard.confirm.delete':
|
||||
'"{title}" seyahatini sil? Tüm yerler ve planlar kalıcı olarak silinir.',
|
||||
'dashboard.confirm.copy.title': 'Bu seyahat kopyalansın mı?',
|
||||
'dashboard.confirm.copy.willCopy': 'Kopyalanacak',
|
||||
'dashboard.confirm.copy.will1': 'Günler, yerler ve gün atamaları',
|
||||
@@ -78,7 +80,8 @@ const dashboard: TranslationStrings = {
|
||||
'dashboard.endDate': 'Bitiş Tarihi',
|
||||
'dashboard.dayCount': 'Gün sayısı',
|
||||
'dashboard.dayCountHint': 'Seyahat tarihi yoksa kaç gün planlanacağı.',
|
||||
'dashboard.noDateHint': 'Tarih yok — varsayılan 7 gün oluşturulur. İstediğiniz zaman değiştirebilirsiniz.',
|
||||
'dashboard.noDateHint':
|
||||
'Tarih yok — varsayılan 7 gün oluşturulur. İstediğiniz zaman değiştirebilirsiniz.',
|
||||
'dashboard.coverImage': 'Kapak Görseli',
|
||||
'dashboard.addCoverImage': 'Kapak ekle (sürükleyip bırakabilirsiniz)',
|
||||
'dashboard.addMembers': 'Seyahat arkadaşları',
|
||||
|
||||
@@ -7,7 +7,8 @@ const day: TranslationStrings = {
|
||||
'day.sunrise': 'Gün doğumu',
|
||||
'day.sunset': 'Gün batımı',
|
||||
'day.hourlyForecast': 'Saatlik Tahmin',
|
||||
'day.climateHint': 'Tarihsel ortalamalar — gerçek tahmin bu tarihten 16 gün öncesine kadar kullanılabilir.',
|
||||
'day.climateHint':
|
||||
'Tarihsel ortalamalar — gerçek tahmin bu tarihten 16 gün öncesine kadar kullanılabilir.',
|
||||
'day.noWeather': 'Hava durumu verisi yok. Koordinatlı bir yer ekleyin.',
|
||||
'day.overview': 'Günlük Özet',
|
||||
'day.accommodation': 'Konaklama',
|
||||
|
||||
@@ -3,12 +3,16 @@ import type { TranslationStrings } from '../types';
|
||||
const dayplan: TranslationStrings = {
|
||||
'dayplan.icsTooltip': 'İhracat takvimi (ICS)',
|
||||
'dayplan.emptyDay': 'Bu gün için planlanmış yer yok',
|
||||
'dayplan.cannotReorderTransport': 'Sabit zamanlı rezervasyonlar yeniden sıralanamaz',
|
||||
'dayplan.cannotReorderTransport':
|
||||
'Sabit zamanlı rezervasyonlar yeniden sıralanamaz',
|
||||
'dayplan.confirmRemoveTimeTitle': 'Saat kaldırılsın mı?',
|
||||
'dayplan.confirmRemoveTimeBody': 'Bu yerin sabit bir saati var ({time}). Taşımak saati kaldırır ve serbest sıralamaya izin verir.',
|
||||
'dayplan.confirmRemoveTimeBody':
|
||||
'Bu yerin sabit bir saati var ({time}). Taşımak saati kaldırır ve serbest sıralamaya izin verir.',
|
||||
'dayplan.confirmRemoveTimeAction': 'Saati kaldır ve taşı',
|
||||
'dayplan.cannotDropOnTimed': 'Öğeler saate bağlı girişler arasına yerleştirilemez',
|
||||
'dayplan.cannotBreakChronology': 'Bu, zamanlı öğelerin kronolojik sırasını bozar',
|
||||
'dayplan.cannotDropOnTimed':
|
||||
'Öğeler saate bağlı girişler arasına yerleştirilemez',
|
||||
'dayplan.cannotBreakChronology':
|
||||
'Bu, zamanlı öğelerin kronolojik sırasını bozar',
|
||||
'dayplan.addNote': 'Not Ekle',
|
||||
'dayplan.expandAll': 'Tüm günleri genişlet',
|
||||
'dayplan.collapseAll': 'Tüm günleri daralt',
|
||||
@@ -25,12 +29,13 @@ const dayplan: TranslationStrings = {
|
||||
'dayplan.optimize': 'Optimize et',
|
||||
'dayplan.optimized': 'Rota optimize edildi',
|
||||
'dayplan.routeError': 'Rota hesaplanamadı',
|
||||
'dayplan.toast.needTwoPlaces': 'Rota optimizasyonu için en az iki yer gerekli',
|
||||
'dayplan.toast.needTwoPlaces':
|
||||
'Rota optimizasyonu için en az iki yer gerekli',
|
||||
'dayplan.toast.routeOptimized': 'Rota optimize edildi',
|
||||
'dayplan.toast.noGeoPlaces': 'Rota için koordinatlı yer bulunamadı',
|
||||
'dayplan.confirmed': 'Onaylandı',
|
||||
'dayplan.pendingRes': 'Beklemede',
|
||||
'dayplan.pdf': 'PDF\'ler',
|
||||
'dayplan.pdf': "PDF'ler",
|
||||
'dayplan.pdfTooltip': 'Gün planını PDF olarak dışa aktar',
|
||||
'dayplan.pdfError': 'PDF dışa aktarılamadı',
|
||||
'dayplan.mobile.addPlace': 'Yer Ekle',
|
||||
|
||||
@@ -13,10 +13,11 @@ const files: TranslationStrings = {
|
||||
'files.uploadError': 'Yükleme başarısız oldu',
|
||||
'files.dropzone': 'Dosyaları buraya bırakın',
|
||||
'files.dropzoneHint': 'veya göz atmak için tıklayın',
|
||||
'files.allowedTypes': 'Görsel, PDF, DOC, DOCX, XLS, XLSX, TXT, CSV · Maks. 50 MB',
|
||||
'files.allowedTypes':
|
||||
'Görsel, PDF, DOC, DOCX, XLS, XLSX, TXT, CSV · Maks. 50 MB',
|
||||
'files.uploading': 'Yükleniyor...',
|
||||
'files.filterAll': 'Tüm',
|
||||
'files.filterPdf': 'PDF\'ler',
|
||||
'files.filterPdf': "PDF'ler",
|
||||
'files.filterImages': 'Görseller',
|
||||
'files.filterDocs': 'Belgeler',
|
||||
'files.filterCollab': 'İşbirliği Notları',
|
||||
@@ -51,8 +52,10 @@ const files: TranslationStrings = {
|
||||
'files.toast.assigned': 'Dosya atandı',
|
||||
'files.toast.assignError': 'Atama başarısız',
|
||||
'files.toast.restoreError': 'Geri yükleme başarısız',
|
||||
'files.confirm.permanentDelete': 'Bu dosya kalıcı olarak silinsin mi? Bu işlem geri alınamaz.',
|
||||
'files.confirm.emptyTrash': 'Çöp kutusundaki tüm dosyalar kalıcı olarak silinsin mi? Bu işlem geri alınamaz.',
|
||||
'files.confirm.permanentDelete':
|
||||
'Bu dosya kalıcı olarak silinsin mi? Bu işlem geri alınamaz.',
|
||||
'files.confirm.emptyTrash':
|
||||
'Çöp kutusundaki tüm dosyalar kalıcı olarak silinsin mi? Bu işlem geri alınamaz.',
|
||||
'files.noteLabel': 'Not',
|
||||
'files.notePlaceholder': 'Not ekleyin...',
|
||||
};
|
||||
|
||||
@@ -12,7 +12,7 @@ const inspector: TranslationStrings = {
|
||||
'inspector.addToDay': 'Güne Ekle',
|
||||
'inspector.confirmedRes': 'Onaylanmış Rezervasyon',
|
||||
'inspector.pendingRes': 'Bekleyen Rezervasyon',
|
||||
'inspector.google': 'Google Haritalar\'da aç',
|
||||
'inspector.google': "Google Haritalar'da aç",
|
||||
'inspector.website': 'Web Sitesini Aç',
|
||||
'inspector.addRes': 'Rezervasyon',
|
||||
'inspector.editRes': 'Rezervasyonu Düzenle',
|
||||
|
||||
@@ -14,12 +14,14 @@ const journey: TranslationStrings = {
|
||||
'journey.createError': 'Journey oluşturulamadı',
|
||||
'journey.deleteError': 'Journey silinemedi',
|
||||
'journey.deleteConfirmTitle': 'Sil',
|
||||
'journey.deleteConfirmMessage': '"{title}" silinsin mi? Bu işlem geri alınamaz.',
|
||||
'journey.deleteConfirmMessage':
|
||||
'"{title}" silinsin mi? Bu işlem geri alınamaz.',
|
||||
'journey.deleteConfirmGeneric': 'Bunu silmek istediğinizden emin misiniz?',
|
||||
'journey.notFound': 'Journey bulunamadı',
|
||||
'journey.photos': 'Fotoğraflar',
|
||||
'journey.timelineEmpty': 'Henüz durak yok',
|
||||
'journey.timelineEmptyHint': 'Başlamak için check-in ekleyin veya günlük kaydı yazın',
|
||||
'journey.timelineEmptyHint':
|
||||
'Başlamak için check-in ekleyin veya günlük kaydı yazın',
|
||||
'journey.status.draft': 'Taslak',
|
||||
'journey.status.active': 'Aktif',
|
||||
'journey.status.completed': 'Tamamlandı',
|
||||
@@ -45,26 +47,30 @@ const journey: TranslationStrings = {
|
||||
'journey.editor.titlePlaceholder': 'Bu ana bir ad verin...',
|
||||
'journey.editor.bodyPlaceholder': 'Bu günün hikâyesini anlatın...',
|
||||
'journey.editor.placePlaceholder': 'Konum (isteğe bağlı)',
|
||||
'journey.editor.tagsPlaceholder': 'Etiketler: gizli cevher, en iyi yemek, tekrar ziyaret...',
|
||||
'journey.editor.tagsPlaceholder':
|
||||
'Etiketler: gizli cevher, en iyi yemek, tekrar ziyaret...',
|
||||
'journey.visibility.private': 'Gizli',
|
||||
'journey.visibility.shared': 'Paylaşılan',
|
||||
'journey.visibility.public': 'Herkese açık',
|
||||
'journey.emptyState.title': 'Hikâyeniz burada başlıyor',
|
||||
'journey.emptyState.subtitle': 'Bir yerde check-in yapın veya ilk günlük kaydınızı yazın',
|
||||
'journey.emptyState.subtitle':
|
||||
'Bir yerde check-in yapın veya ilk günlük kaydınızı yazın',
|
||||
'journey.frontpage.subtitle':
|
||||
"Turn your trips into stories you'll never forget",
|
||||
'journey.frontpage.createJourney': 'Journey Oluştur',
|
||||
'journey.frontpage.activeJourney': 'Aktif Journey',
|
||||
'journey.frontpage.allJourneys': 'Tüm Journey\'ler',
|
||||
'journey.frontpage.allJourneys': "Tüm Journey'ler",
|
||||
'journey.frontpage.journeys': 'journey',
|
||||
'journey.frontpage.createNew': 'Yeni Journey oluştur',
|
||||
'journey.frontpage.createNewSub': 'Seyahat seçin, hikâyeler yazın, maceralarınızı paylaşın',
|
||||
'journey.frontpage.createNewSub':
|
||||
'Seyahat seçin, hikâyeler yazın, maceralarınızı paylaşın',
|
||||
'journey.frontpage.live': 'Canlı',
|
||||
'journey.frontpage.synced': 'Senkronize',
|
||||
'journey.frontpage.continueWriting': 'Yazmaya devam et',
|
||||
'journey.frontpage.updated': '{time} Güncellendi',
|
||||
'journey.frontpage.suggestionLabel': 'Seyahat yeni bitti',
|
||||
'journey.frontpage.suggestionText': '<strong>{title}</strong> seyahatini Journey\'e dönüştür',
|
||||
'journey.frontpage.suggestionText':
|
||||
"<strong>{title}</strong> seyahatini Journey'e dönüştür",
|
||||
'journey.frontpage.dismiss': 'Kapat',
|
||||
'journey.frontpage.journeyName': 'Journey Adı',
|
||||
'journey.frontpage.namePlaceholder': 'örn. Güneydoğu Asya 2026',
|
||||
@@ -73,15 +79,17 @@ const journey: TranslationStrings = {
|
||||
'journey.frontpage.trips': 'seyahat',
|
||||
'journey.frontpage.placesImported': 'yer içe aktarılacak',
|
||||
'journey.frontpage.places': 'yer',
|
||||
'journey.detail.backToJourney': 'Journey\'e dön',
|
||||
'journey.detail.backToJourney': "Journey'e dön",
|
||||
'journey.detail.syncedWithTrips': 'Seyahatlerle senkronize',
|
||||
'journey.detail.addEntry': 'Kayıt Ekle',
|
||||
'journey.detail.newEntry': 'Yeni Kayıt',
|
||||
'journey.detail.editEntry': 'Kaydı Düzenle',
|
||||
'journey.detail.noEntries': 'Henüz kayıt yok',
|
||||
'journey.detail.noEntriesHint': 'İskelet kayıtlarla başlamak için bir seyahat ekleyin',
|
||||
'journey.detail.noEntriesHint':
|
||||
'İskelet kayıtlarla başlamak için bir seyahat ekleyin',
|
||||
'journey.detail.noPhotos': 'Henüz fotoğraf yok',
|
||||
'journey.detail.noPhotosHint': 'Kayıtlara fotoğraf yükleyin veya Immich/Synology kütüphanenize göz atın',
|
||||
'journey.detail.noPhotosHint':
|
||||
'Kayıtlara fotoğraf yükleyin veya Immich/Synology kütüphanenize göz atın',
|
||||
'journey.detail.journeyTab': 'Seyahat',
|
||||
'journey.detail.journeyStats': 'Journey İstatistikleri',
|
||||
'journey.detail.syncedTrips': 'Senkronize Seyahatler',
|
||||
@@ -103,7 +111,8 @@ const journey: TranslationStrings = {
|
||||
'journey.verdict.couldBeBetter': 'Daha iyi olabilirdi',
|
||||
'journey.synced.places': 'yer',
|
||||
'journey.synced.synced': 'senkronize',
|
||||
'journey.editor.discardChangesConfirm': 'Kaydedilmemiş değişiklikleriniz var. Vazgeçilsin mi?',
|
||||
'journey.editor.discardChangesConfirm':
|
||||
'Kaydedilmemiş değişiklikleriniz var. Vazgeçilsin mi?',
|
||||
'journey.editor.uploadPhotos': 'Fotoğraf yükle',
|
||||
'journey.editor.uploading': 'Yükleniyor...',
|
||||
'journey.editor.fromGallery': 'Galeriden',
|
||||
@@ -142,7 +151,8 @@ const journey: TranslationStrings = {
|
||||
'journey.trips.linkFailed': 'Seyahat bağlanamadı',
|
||||
'journey.trips.addTrip': 'Seyahat Ekle',
|
||||
'journey.trips.unlinkTrip': 'Seyahat bağlantısını kaldır',
|
||||
'journey.trips.unlinkMessage': '"{title}" bağlantısı kaldırılsın mı? Bu seyahatten senkronize tüm kayıtlar ve fotoğraflar kalıcı olarak silinecek. Bu işlem geri alınamaz.',
|
||||
'journey.trips.unlinkMessage':
|
||||
'"{title}" bağlantısı kaldırılsın mı? Bu seyahatten senkronize tüm kayıtlar ve fotoğraflar kalıcı olarak silinecek. Bu işlem geri alınamaz.',
|
||||
'journey.trips.unlink': 'Bağlantıyı kaldır',
|
||||
'journey.trips.tripUnlinked': 'Seyahat bağlantısı kaldırıldı',
|
||||
'journey.trips.unlinkFailed': 'Seyahat bağlantısı kaldırılamadı',
|
||||
@@ -155,7 +165,8 @@ const journey: TranslationStrings = {
|
||||
'journey.contributors.added': 'Katkıda bulunan eklendi',
|
||||
'journey.contributors.addFailed': 'Katkıda bulunan eklenemedi',
|
||||
'journey.contributors.remove': 'Katkıda bulunanı kaldır',
|
||||
'journey.contributors.removeConfirm': '{username} bu journey\'den kaldırılsın mı?',
|
||||
'journey.contributors.removeConfirm':
|
||||
"{username} bu journey'den kaldırılsın mı?",
|
||||
'journey.contributors.removed': 'Katkıda bulunan kaldırıldı',
|
||||
'journey.contributors.removeFailed': 'Katkıda bulunan kaldırılamadı',
|
||||
'journey.share.publicShare': 'Herkese açık paylaşım',
|
||||
@@ -183,14 +194,16 @@ const journey: TranslationStrings = {
|
||||
'journey.settings.name': 'İsim',
|
||||
'journey.settings.subtitle': 'Alt başlık',
|
||||
'journey.settings.subtitlePlaceholder': 'örn. Tayland, Vietnam ve Kamboçya',
|
||||
'journey.settings.endJourney': 'Journey\'i Arşivle',
|
||||
'journey.settings.reopenJourney': 'Journey\'i geri aç',
|
||||
'journey.settings.endJourney': "Journey'i Arşivle",
|
||||
'journey.settings.reopenJourney': "Journey'i geri aç",
|
||||
'journey.settings.archived': 'Journey arşivlendi',
|
||||
'journey.settings.reopened': 'Journey yeniden açıldı',
|
||||
'journey.settings.endDescription': 'Canlı rozetini gizler. İstediğiniz zaman yeniden açabilirsiniz.',
|
||||
'journey.settings.endDescription':
|
||||
'Canlı rozetini gizler. İstediğiniz zaman yeniden açabilirsiniz.',
|
||||
'journey.settings.delete': 'Sil',
|
||||
'journey.settings.deleteJourney': 'Journey\'i Sil',
|
||||
'journey.settings.deleteMessage': '"{title}" silinsin mi? Tüm kayıtlar ve fotoğraflar kaybolacak.',
|
||||
'journey.settings.deleteJourney': "Journey'i Sil",
|
||||
'journey.settings.deleteMessage':
|
||||
'"{title}" silinsin mi? Tüm kayıtlar ve fotoğraflar kaybolacak.',
|
||||
'journey.settings.saved': 'Ayarlar kaydedildi',
|
||||
'journey.settings.saveFailed': 'Kaydedilemedi',
|
||||
'journey.settings.coverUpdated': 'Kapak güncellendi',
|
||||
@@ -226,7 +239,8 @@ const journey: TranslationStrings = {
|
||||
'journey.picker.search': 'Ara',
|
||||
'journey.editor.uploadingProgress': '{done}/{total} yükleniyor…',
|
||||
'journey.editor.uploadFailed': 'Fotoğraf yüklenemedi',
|
||||
'journey.editor.uploadPartialFailed': '{total} fotoğraftan {failed} tanesi başarısız — tekrar denemek için kaydedin',
|
||||
'journey.editor.uploadPartialFailed':
|
||||
'{total} fotoğraftan {failed} tanesi başarısız — tekrar denemek için kaydedin',
|
||||
'journey.photosUploadFailed': 'Bazı fotoğraflar yüklenemedi',
|
||||
};
|
||||
export default journey;
|
||||
|
||||
+30
-15
@@ -1,9 +1,11 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const login: TranslationStrings = {
|
||||
'login.error': 'Giriş başarısız oldu. Lütfen kimlik bilgilerinizi kontrol edin.',
|
||||
'login.error':
|
||||
'Giriş başarısız oldu. Lütfen kimlik bilgilerinizi kontrol edin.',
|
||||
'login.tagline': 'Gezileriniz.\\nPlanınız.',
|
||||
'login.description': 'Etkileşimli haritalar, bütçeler ve gerçek zamanlı senkronizasyonla gezileri işbirliği içinde planlayın.',
|
||||
'login.description':
|
||||
'Etkileşimli haritalar, bütçeler ve gerçek zamanlı senkronizasyonla gezileri işbirliği içinde planlayın.',
|
||||
'login.features.maps': 'İnteraktif Haritalar',
|
||||
'login.features.mapsDesc': 'Google Rehber, rotalar ve kümeleme',
|
||||
'login.features.realtime': 'Gerçek Zamanlı Senkronizasyon',
|
||||
@@ -15,12 +17,15 @@ const login: TranslationStrings = {
|
||||
'login.features.packing': 'Paketleme Listeleri',
|
||||
'login.features.packingDesc': 'Kategoriler, ilerleme ve öneriler',
|
||||
'login.features.bookings': 'Rezervasyonlar',
|
||||
'login.features.bookingsDesc': 'Uçuşlar, oteller, restoranlar ve daha fazlası',
|
||||
'login.features.bookingsDesc':
|
||||
'Uçuşlar, oteller, restoranlar ve daha fazlası',
|
||||
'login.features.files': 'Belgeler',
|
||||
'login.features.filesDesc': 'Belgeleri yükleyin ve yönetin',
|
||||
'login.features.routes': 'Akıllı Rotalar',
|
||||
'login.features.routesDesc': 'Otomatik optimize etme ve Google Haritalar\'ı dışa aktarma',
|
||||
'login.selfHosted': 'Kendi kendine barındırılan \\u00B7 Açık Kaynak \\u00B7 Verileriniz size ait kalır',
|
||||
'login.features.routesDesc':
|
||||
"Otomatik optimize etme ve Google Haritalar'ı dışa aktarma",
|
||||
'login.selfHosted':
|
||||
'Kendi kendine barındırılan \\u00B7 Açık Kaynak \\u00B7 Verileriniz size ait kalır',
|
||||
'login.title': 'Oturum Aç',
|
||||
'login.subtitle': 'Tekrar hoş geldiniz',
|
||||
'login.signingIn': 'Oturum açılıyor…',
|
||||
@@ -37,20 +42,24 @@ const login: TranslationStrings = {
|
||||
'login.register': 'Kayıt olmak',
|
||||
'login.emailPlaceholder': 'sizin@e-postanız.com',
|
||||
'login.username': 'Kullanıcı adı',
|
||||
'login.oidc.registrationDisabled': 'Kayıt devre dışı bırakıldı. Yöneticinizle iletişime geçin.',
|
||||
'login.oidc.registrationDisabled':
|
||||
'Kayıt devre dışı bırakıldı. Yöneticinizle iletişime geçin.',
|
||||
'login.oidc.noEmail': 'Sağlayıcıdan e-posta alınmadı.',
|
||||
'login.oidc.tokenFailed': 'Kimlik doğrulama başarısız oldu.',
|
||||
'login.oidc.invalidState': 'Geçersiz oturum. Lütfen tekrar deneyin.',
|
||||
'login.demoFailed': 'Demo girişi başarısız oldu',
|
||||
'login.oidcSignIn': '{name} ile oturum açın',
|
||||
'login.oidcOnly': 'Parola kimlik doğrulaması devre dışı. Lütfen SSO sağlayıcınızı kullanarak oturum açın.',
|
||||
'login.oidcLoggedOut': 'Çıkış yaptınız. SSO sağlayıcınızı kullanarak tekrar oturum açın.',
|
||||
'login.oidcOnly':
|
||||
'Parola kimlik doğrulaması devre dışı. Lütfen SSO sağlayıcınızı kullanarak oturum açın.',
|
||||
'login.oidcLoggedOut':
|
||||
'Çıkış yaptınız. SSO sağlayıcınızı kullanarak tekrar oturum açın.',
|
||||
'login.demoHint': 'Demoyu deneyin; kayıt olmanıza gerek yok',
|
||||
'login.mfaTitle': 'İki faktörlü kimlik doğrulama',
|
||||
'login.mfaSubtitle': 'Kimlik doğrulayıcı uygulamanızdan 6 haneli kodu girin.',
|
||||
'login.mfaCodeLabel': 'Doğrulama kodu',
|
||||
'login.mfaCodeRequired': 'Kimlik doğrulayıcı uygulamanızdan kodu girin.',
|
||||
'login.mfaHint': 'Google Authenticator\'ı, Authy\'yi veya başka bir TOTP uygulamasını açın.',
|
||||
'login.mfaHint':
|
||||
"Google Authenticator'ı, Authy'yi veya başka bir TOTP uygulamasını açın.",
|
||||
'login.mfaBack': '← Oturum açmaya geri dön',
|
||||
'login.mfaVerify': 'Doğrula',
|
||||
'login.invalidInviteLink': 'Geçersiz veya süresi dolmuş davet bağlantısı',
|
||||
@@ -63,7 +72,8 @@ const login: TranslationStrings = {
|
||||
"Enter the email address you signed up with. If an account exists, we'll send a reset link.",
|
||||
'login.forgotPasswordSubmit': 'Sıfırlama bağlantısını gönder',
|
||||
'login.forgotPasswordSentTitle': 'E-postanızı kontrol edin',
|
||||
'login.forgotPasswordSentBody': 'Söz konusu e-posta için bir hesap mevcutsa sıfırlama bağlantısı yolda olacaktır. 60 dakika içinde sona erer.',
|
||||
'login.forgotPasswordSentBody':
|
||||
'Söz konusu e-posta için bir hesap mevcutsa sıfırlama bağlantısı yolda olacaktır. 60 dakika içinde sona erer.',
|
||||
'login.forgotPasswordSmtpHintOff':
|
||||
"Heads up: your administrator hasn't configured SMTP, so the reset link will be written to the server console instead of being emailed.",
|
||||
'login.backToLogin': 'Oturum açmak için geri dön',
|
||||
@@ -72,14 +82,19 @@ const login: TranslationStrings = {
|
||||
'login.passwordsDontMatch': 'Şifreler eşleşmiyor',
|
||||
'login.mfaCode': '2FA kodu',
|
||||
'login.resetPasswordTitle': 'Yeni bir şifre belirleyin',
|
||||
'login.resetPasswordBody': 'Daha önce burada kullanmadığınız güçlü bir şifre seçin. Minimum 8 karakter.',
|
||||
'login.resetPasswordMfaBody': 'Sıfırlamayı tamamlamak için 2FA kodunuzu veya yedek kodu girin.',
|
||||
'login.resetPasswordBody':
|
||||
'Daha önce burada kullanmadığınız güçlü bir şifre seçin. Minimum 8 karakter.',
|
||||
'login.resetPasswordMfaBody':
|
||||
'Sıfırlamayı tamamlamak için 2FA kodunuzu veya yedek kodu girin.',
|
||||
'login.resetPasswordSubmit': 'Şifreyi sıfırla',
|
||||
'login.resetPasswordVerify': 'Doğrula ve sıfırla',
|
||||
'login.resetPasswordSuccessTitle': 'Şifre güncellendi',
|
||||
'login.resetPasswordSuccessBody': 'Artık yeni şifrenizle giriş yapabilirsiniz.',
|
||||
'login.resetPasswordSuccessBody':
|
||||
'Artık yeni şifrenizle giriş yapabilirsiniz.',
|
||||
'login.resetPasswordInvalidLink': 'Geçersiz sıfırlama bağlantısı',
|
||||
'login.resetPasswordInvalidLinkBody': 'Bu bağlantı eksik veya bozuk. Devam etmek için yeni bir tane isteyin.',
|
||||
'login.resetPasswordFailed': 'Sıfırlama başarısız oldu. Bağlantının süresi dolmuş olabilir.',
|
||||
'login.resetPasswordInvalidLinkBody':
|
||||
'Bu bağlantı eksik veya bozuk. Devam etmek için yeni bir tane isteyin.',
|
||||
'login.resetPasswordFailed':
|
||||
'Sıfırlama başarısız oldu. Bağlantının süresi dolmuş olabilir.',
|
||||
};
|
||||
export default login;
|
||||
|
||||
@@ -13,7 +13,8 @@ const members: TranslationStrings = {
|
||||
'members.owner': 'Sahip',
|
||||
'members.leaveTrip': 'Seyahatten ayrıl',
|
||||
'members.removeAccess': 'Erişimi kaldır',
|
||||
'members.confirmLeave': 'Seyahatten ayrılmak İstiyor musunuz? Erişiminizi kaybedersiniz.',
|
||||
'members.confirmLeave':
|
||||
'Seyahatten ayrılmak İstiyor musunuz? Erişiminizi kaybedersiniz.',
|
||||
'members.confirmRemove': 'Bu kullanıcının erişimi kaldırılsın mı?',
|
||||
'members.loadError': 'Üyeler yüklenemedi',
|
||||
'members.added': 'eklendi',
|
||||
|
||||
@@ -3,8 +3,10 @@ import type { TranslationStrings } from '../types';
|
||||
const memories: TranslationStrings = {
|
||||
'memories.title': 'Fotoğraflar',
|
||||
'memories.notConnected': '{provider_name} bağlı değil',
|
||||
'memories.notConnectedHint': 'Bu seyahate fotoğraf eklemek için Ayarlar\'dan {provider_name} örneğinizi bağlayın.',
|
||||
'memories.notConnectedMultipleHint': 'Bu seyahate fotoğraf eklemek için Ayarlar\'dan şu fotoğraf sağlayıcılarından birini bağlayın: {provider_names}',
|
||||
'memories.notConnectedHint':
|
||||
"Bu seyahate fotoğraf eklemek için Ayarlar'dan {provider_name} örneğinizi bağlayın.",
|
||||
'memories.notConnectedMultipleHint':
|
||||
"Bu seyahate fotoğraf eklemek için Ayarlar'dan şu fotoğraf sağlayıcılarından birini bağlayın: {provider_names}",
|
||||
'memories.noDates': 'Fotoğrafları yüklemek için seyahatinize tarih ekleyin.',
|
||||
'memories.noPhotos': 'Fotoğraf bulunamadı',
|
||||
'memories.noPhotosHint':
|
||||
@@ -16,14 +18,16 @@ const memories: TranslationStrings = {
|
||||
'memories.reviewTitle': 'Fotoğraflarınızı gözden geçirin',
|
||||
'memories.reviewHint': 'Paylaşımdan hariç tutmak için fotoğraflara tıklayın.',
|
||||
'memories.shareCount': '{count} Fotoğraf paylaş',
|
||||
'memories.providerUrl': 'Sunucu URL\'si',
|
||||
'memories.providerUrl': "Sunucu URL'si",
|
||||
'memories.providerApiKey': 'API Anahtarı',
|
||||
'memories.providerUsername': 'Kullanıcı adı',
|
||||
'memories.providerPassword': 'Şifre',
|
||||
'memories.providerOTP': 'MFA kodu (etkinse)',
|
||||
'memories.skipSSLVerification': 'SSL Sertifika doğrulamasını atla',
|
||||
'memories.immichAutoUpload': 'Journey fotoğraflarını yüklerken Immich\'e yansıt',
|
||||
'memories.providerUrlHintSynology': 'URL\'ye Photos uygulama yolunu ekleyin, örn. https://nas:5001/photo',
|
||||
'memories.immichAutoUpload':
|
||||
"Journey fotoğraflarını yüklerken Immich'e yansıt",
|
||||
'memories.providerUrlHintSynology':
|
||||
"URL'ye Photos uygulama yolunu ekleyin, örn. https://nas:5001/photo",
|
||||
'memories.testConnection': 'Bağlantıyı test et',
|
||||
'memories.testShort': 'Dene',
|
||||
'memories.testFirst': 'Önce bağlantıyı test edin',
|
||||
@@ -32,7 +36,8 @@ const memories: TranslationStrings = {
|
||||
'memories.connectionSuccess': '{provider_name} ile bağlandı',
|
||||
'memories.connectionError': '{provider_name} ile bağlanılamadı',
|
||||
'memories.saved': '{provider_name} ayarları kaydedildi',
|
||||
'memories.providerDisconnectedBanner': '{provider_name} Bağlantınız kesildi. Fotoğrafları görmek için Ayarlar\'dan yeniden bağlanın.',
|
||||
'memories.providerDisconnectedBanner':
|
||||
"{provider_name} Bağlantınız kesildi. Fotoğrafları görmek için Ayarlar'dan yeniden bağlanın.",
|
||||
'memories.saveError': '{provider_name} Ayarları kaydedilemedi',
|
||||
'memories.addPhotos': 'Fotoğraf ekle',
|
||||
'memories.linkAlbum': 'Albüm Bağla',
|
||||
@@ -56,7 +61,8 @@ const memories: TranslationStrings = {
|
||||
'memories.tripDates': 'Seyahat tarihleri',
|
||||
'memories.allPhotos': 'Tüm fotoğraflar',
|
||||
'memories.confirmShareTitle': 'Seyahat üyeleriyle paylaşılsın mı?',
|
||||
'memories.confirmShareHint': '{count} fotoğraf bu seyahatin tüm üyelerine görünür olacak. Daha sonra tek tek gizli yapabilirsiniz.',
|
||||
'memories.confirmShareHint':
|
||||
'{count} fotoğraf bu seyahatin tüm üyelerine görünür olacak. Daha sonra tek tek gizli yapabilirsiniz.',
|
||||
'memories.confirmShareButton': 'Fotoğrafları paylaş',
|
||||
'memories.error.loadAlbums': 'Albümler yüklenemedi',
|
||||
'memories.error.linkAlbum': 'Albüm bağlanamadı',
|
||||
@@ -66,8 +72,10 @@ const memories: TranslationStrings = {
|
||||
'memories.error.addPhotos': 'Fotoğraflar eklenemedi',
|
||||
'memories.error.removePhoto': 'Fotoğraf kaldırılamadı',
|
||||
'memories.error.toggleSharing': 'Paylaşım güncellenemedi',
|
||||
'memories.saveRouteNotConfigured': 'Bu sağlayıcı için kaydetme yolu yapılandırılmamış',
|
||||
'memories.testRouteNotConfigured': 'Bu sağlayıcı için test yolu yapılandırılmamış',
|
||||
'memories.saveRouteNotConfigured':
|
||||
'Bu sağlayıcı için kaydetme yolu yapılandırılmamış',
|
||||
'memories.testRouteNotConfigured':
|
||||
'Bu sağlayıcı için test yolu yapılandırılmamış',
|
||||
'memories.fillRequiredFields': 'Lütfen tüm zorunlu alanları doldurun',
|
||||
};
|
||||
export default memories;
|
||||
|
||||
@@ -8,26 +8,30 @@ const notif: TranslationStrings = {
|
||||
'notif.trip_invite.title': 'Seyahat Daveti',
|
||||
'notif.trip_invite.text': '{actor} sizi {trip} seyahatine davet etti',
|
||||
'notif.booking_change.title': 'Rezervasyon Güncellendi',
|
||||
'notif.booking_change.text': '{actor}, {trip} içindeki bir rezervasyonu güncelledi',
|
||||
'notif.booking_change.text':
|
||||
'{actor}, {trip} içindeki bir rezervasyonu güncelledi',
|
||||
'notif.trip_reminder.title': 'Seyahat Hatırlatıcısı',
|
||||
'notif.trip_reminder.text': '{trip} Seyahatiniz yaklaşıyor!',
|
||||
'notif.todo_due.title': 'Yapılacak vadesi',
|
||||
'notif.todo_due.text': '{trip} içindeki {todo} — son tarih: {due}',
|
||||
'notif.vacay_invite.title': 'Vacay Birleştirme Daveti',
|
||||
'notif.vacay_invite.text': '{actor} tatil planlarını birleştirmeniz için sizi davet etti',
|
||||
'notif.vacay_invite.text':
|
||||
'{actor} tatil planlarını birleştirmeniz için sizi davet etti',
|
||||
'notif.photos_shared.title': 'Fotoğraflar Paylaşıldı',
|
||||
'notif.photos_shared.text': '{actor}, {trip} içinde {count} fotoğraf paylaştı',
|
||||
'notif.photos_shared.text':
|
||||
'{actor}, {trip} içinde {count} fotoğraf paylaştı',
|
||||
'notif.collab_message.title': 'Yeni Mesaj',
|
||||
'notif.collab_message.text': '{actor}, {trip} içinde mesaj gönderdi',
|
||||
'notif.packing_tagged.title': 'Paket listesi ataması',
|
||||
'notif.packing_tagged.text': '{actor} sizi {trip} içinde {category} kategorisine atadı',
|
||||
'notif.packing_tagged.text':
|
||||
'{actor} sizi {trip} içinde {category} kategorisine atadı',
|
||||
'notif.version_available.title': 'Yeni Sürüm Mevcut',
|
||||
'notif.version_available.text': 'TREK {version} artık kullanılabilir',
|
||||
'notif.action.view_trip': 'Seyahati Görüntüle',
|
||||
'notif.action.view_collab': 'Mesajları Görüntüle',
|
||||
'notif.action.view_packing': 'Paket listesini görüntüle',
|
||||
'notif.action.view_photos': 'Fotoğrafları Görüntüle',
|
||||
'notif.action.view_vacay': 'Vacay\'ı Görüntüle',
|
||||
'notif.action.view_vacay': "Vacay'ı Görüntüle",
|
||||
'notif.action.view_admin': 'Yöneticiye git',
|
||||
'notif.action.view': 'Görüntüle',
|
||||
'notif.action.accept': 'Kabul et',
|
||||
@@ -35,6 +39,7 @@ const notif: TranslationStrings = {
|
||||
'notif.generic.title': 'Bildirim',
|
||||
'notif.generic.text': 'Yeni bir bildiriminiz var',
|
||||
'notif.dev.unknown_event.title': '[GEL] Bilinmeyen Olay',
|
||||
'notif.dev.unknown_event.text': '"{event}" olay türü EVENT_NOTIFICATION_CONFIG içinde kayıtlı değil',
|
||||
'notif.dev.unknown_event.text':
|
||||
'"{event}" olay türü EVENT_NOTIFICATION_CONFIG içinde kayıtlı değil',
|
||||
};
|
||||
export default notif;
|
||||
|
||||
@@ -13,22 +13,26 @@ const notifications: TranslationStrings = {
|
||||
'notifications.markUnread': 'Okunmadı işaretle',
|
||||
'notifications.delete': 'Sil',
|
||||
'notifications.system': 'Sistem',
|
||||
'notifications.synologySessionCleared.title': 'Synology Photos bağlantısı kesildi',
|
||||
'notifications.synologySessionCleared.text': 'Sunucunuz veya hesabınız değişti — bağlantıyı test etmek için Ayarlar\'a gidin.',
|
||||
'notifications.synologySessionCleared.title':
|
||||
'Synology Photos bağlantısı kesildi',
|
||||
'notifications.synologySessionCleared.text':
|
||||
"Sunucunuz veya hesabınız değişti — bağlantıyı test etmek için Ayarlar'a gidin.",
|
||||
'notifications.versionAvailable.title': 'Güncelleme Mevcut',
|
||||
'notifications.versionAvailable.text': 'TREK {version} artık kullanılabilir.',
|
||||
'notifications.versionAvailable.button': 'Ayrıntıları Görüntüle',
|
||||
'notifications.test.title': '{actor} Kaynaklı test bildirimi',
|
||||
'notifications.test.text': 'Bu basit bir test bildirimidir.',
|
||||
'notifications.test.booleanTitle': '{actor} onayınızı istiyor',
|
||||
'notifications.test.booleanText': 'Bu bir test boolean bildirimidir. Aşağıdan bir eylem seçin.',
|
||||
'notifications.test.booleanText':
|
||||
'Bu bir test boolean bildirimidir. Aşağıdan bir eylem seçin.',
|
||||
'notifications.test.accept': 'Onayla',
|
||||
'notifications.test.decline': 'Reddet',
|
||||
'notifications.test.navigateTitle': 'Bir şeye göz atın',
|
||||
'notifications.test.navigateText': 'Bu bir test navigasyon bildirimidir.',
|
||||
'notifications.test.goThere': 'Git',
|
||||
'notifications.test.adminTitle': 'Yönetici yayını',
|
||||
'notifications.test.adminText': '{actor} tüm yöneticilere test bildirimi gönderdi.',
|
||||
'notifications.test.adminText':
|
||||
'{actor} tüm yöneticilere test bildirimi gönderdi.',
|
||||
'notifications.test.tripTitle': '{actor} seyahatinizde bir şey paylaştı',
|
||||
'notifications.test.tripText': '"{trip}" seyahati için test bildirimi.',
|
||||
};
|
||||
|
||||
+58
-31
@@ -15,58 +15,85 @@ const oauth: TranslationStrings = {
|
||||
'oauth.scope.group.weather': 'Hava durumu',
|
||||
'oauth.scope.group.journey': 'Seyahat',
|
||||
'oauth.scope.trips:read.label': 'Seyahatleri ve programları görüntüle',
|
||||
'oauth.scope.trips:read.description': 'Seyahatleri, günleri, gün notlarını ve üyeleri oku',
|
||||
'oauth.scope.trips:read.description':
|
||||
'Seyahatleri, günleri, gün notlarını ve üyeleri oku',
|
||||
'oauth.scope.trips:write.label': 'Seyahatleri ve programları düzenle',
|
||||
'oauth.scope.trips:write.description': 'Seyahatleri, günleri, notları oluştur ve güncelle; üyeleri yönet',
|
||||
'oauth.scope.trips:write.description':
|
||||
'Seyahatleri, günleri, notları oluştur ve güncelle; üyeleri yönet',
|
||||
'oauth.scope.trips:delete.label': 'Seyahatleri sil',
|
||||
'oauth.scope.trips:delete.description': 'Tüm seyahatleri kalıcı olarak sil — bu işlem geri alınamaz',
|
||||
'oauth.scope.trips:delete.description':
|
||||
'Tüm seyahatleri kalıcı olarak sil — bu işlem geri alınamaz',
|
||||
'oauth.scope.trips:share.label': 'Paylaşım bağlantılarını yönet',
|
||||
'oauth.scope.trips:share.description': 'Seyahatler için herkese açık paylaşım bağlantıları oluştur, güncelle ve iptal et',
|
||||
'oauth.scope.trips:share.description':
|
||||
'Seyahatler için herkese açık paylaşım bağlantıları oluştur, güncelle ve iptal et',
|
||||
'oauth.scope.places:read.label': 'Yerleri ve harita verilerini görüntüle',
|
||||
'oauth.scope.places:read.description': 'Yerleri, gün atamalarını, etiketleri ve kategorileri oku',
|
||||
'oauth.scope.places:read.description':
|
||||
'Yerleri, gün atamalarını, etiketleri ve kategorileri oku',
|
||||
'oauth.scope.places:write.label': 'Yerleri yönet',
|
||||
'oauth.scope.places:write.description': 'Yerleri, atamaları ve etiketleri oluştur, güncelle ve sil',
|
||||
'oauth.scope.atlas:read.label': 'Atlas\'ı Görüntüle',
|
||||
'oauth.scope.atlas:read.description': 'Ziyaret edilen ülkeleri, bölgeleri ve yapılacaklar listesini oku',
|
||||
'oauth.scope.atlas:write.label': 'Atlas\'ı Yönet',
|
||||
'oauth.scope.atlas:write.description': 'Ülke ve bölgeleri ziyaret edildi olarak işaretle, yapılacaklar listesini yönet',
|
||||
'oauth.scope.places:write.description':
|
||||
'Yerleri, atamaları ve etiketleri oluştur, güncelle ve sil',
|
||||
'oauth.scope.atlas:read.label': "Atlas'ı Görüntüle",
|
||||
'oauth.scope.atlas:read.description':
|
||||
'Ziyaret edilen ülkeleri, bölgeleri ve yapılacaklar listesini oku',
|
||||
'oauth.scope.atlas:write.label': "Atlas'ı Yönet",
|
||||
'oauth.scope.atlas:write.description':
|
||||
'Ülke ve bölgeleri ziyaret edildi olarak işaretle, yapılacaklar listesini yönet',
|
||||
'oauth.scope.packing:read.label': 'Paket listelerini görüntüle',
|
||||
'oauth.scope.packing:read.description': 'Paket öğelerini, çantaları ve kategori atamalarını oku',
|
||||
'oauth.scope.packing:read.description':
|
||||
'Paket öğelerini, çantaları ve kategori atamalarını oku',
|
||||
'oauth.scope.packing:write.label': 'Paket listelerini yönet',
|
||||
'oauth.scope.packing:write.description': 'Paket öğelerini ve çantaları ekle, güncelle, sil, işaretle ve yeniden sırala',
|
||||
'oauth.scope.packing:write.description':
|
||||
'Paket öğelerini ve çantaları ekle, güncelle, sil, işaretle ve yeniden sırala',
|
||||
'oauth.scope.todos:read.label': 'Yapılacak listelerini görüntüle',
|
||||
'oauth.scope.todos:read.description': 'Seyahat yapılacak öğelerini ve kategori atamalarını oku',
|
||||
'oauth.scope.todos:read.description':
|
||||
'Seyahat yapılacak öğelerini ve kategori atamalarını oku',
|
||||
'oauth.scope.todos:write.label': 'Yapılacak listelerini yönet',
|
||||
'oauth.scope.todos:write.description': 'Yapılacak öğeleri oluştur, güncelle, işaretle, sil ve yeniden sırala',
|
||||
'oauth.scope.todos:write.description':
|
||||
'Yapılacak öğeleri oluştur, güncelle, işaretle, sil ve yeniden sırala',
|
||||
'oauth.scope.budget:read.label': 'Bütçeyi görüntüle',
|
||||
'oauth.scope.budget:read.description': 'Bütçe kalemlerini ve harcama dökümünü oku',
|
||||
'oauth.scope.budget:read.description':
|
||||
'Bütçe kalemlerini ve harcama dökümünü oku',
|
||||
'oauth.scope.budget:write.label': 'Bütçeyi yönet',
|
||||
'oauth.scope.budget:write.description': 'Bütçe kalemlerini oluştur, güncelle ve sil',
|
||||
'oauth.scope.budget:write.description':
|
||||
'Bütçe kalemlerini oluştur, güncelle ve sil',
|
||||
'oauth.scope.reservations:read.label': 'Rezervasyonları görüntüle',
|
||||
'oauth.scope.reservations:read.description': 'Rezervasyonları ve konaklama ayrıntılarını oku',
|
||||
'oauth.scope.reservations:read.description':
|
||||
'Rezervasyonları ve konaklama ayrıntılarını oku',
|
||||
'oauth.scope.reservations:write.label': 'Rezervasyonları yönet',
|
||||
'oauth.scope.reservations:write.description': 'Rezervasyonları oluştur, güncelle, sil ve yeniden sırala',
|
||||
'oauth.scope.reservations:write.description':
|
||||
'Rezervasyonları oluştur, güncelle, sil ve yeniden sırala',
|
||||
'oauth.scope.collab:read.label': 'İşbirliğini görüntüle',
|
||||
'oauth.scope.collab:read.description': 'İşbirliği notlarını, anketleri ve mesajları oku',
|
||||
'oauth.scope.collab:read.description':
|
||||
'İşbirliği notlarını, anketleri ve mesajları oku',
|
||||
'oauth.scope.collab:write.label': 'İşbirliğini yönet',
|
||||
'oauth.scope.collab:write.description': 'İşbirliği notlarını, anketleri ve mesajları oluştur, güncelle ve sil',
|
||||
'oauth.scope.collab:write.description':
|
||||
'İşbirliği notlarını, anketleri ve mesajları oluştur, güncelle ve sil',
|
||||
'oauth.scope.notifications:read.label': 'Bildirimleri görüntüle',
|
||||
'oauth.scope.notifications:read.description': 'Uygulama içi bildirimleri ve okunmamış sayıları oku',
|
||||
'oauth.scope.notifications:read.description':
|
||||
'Uygulama içi bildirimleri ve okunmamış sayıları oku',
|
||||
'oauth.scope.notifications:write.label': 'Bildirimleri yönet',
|
||||
'oauth.scope.notifications:write.description': 'Bildirimleri okundu işaretle ve yanıtla',
|
||||
'oauth.scope.notifications:write.description':
|
||||
'Bildirimleri okundu işaretle ve yanıtla',
|
||||
'oauth.scope.vacay:read.label': 'Tatil planlarını görüntüle',
|
||||
'oauth.scope.vacay:read.description': 'Tatil planlama verilerini, kayıtları ve istatistikleri oku',
|
||||
'oauth.scope.vacay:read.description':
|
||||
'Tatil planlama verilerini, kayıtları ve istatistikleri oku',
|
||||
'oauth.scope.vacay:write.label': 'Tatil planlarını yönet',
|
||||
'oauth.scope.vacay:write.description': 'Tatil kayıtlarını, resmi tatilleri ve ekip planlarını oluştur ve yönet',
|
||||
'oauth.scope.vacay:write.description':
|
||||
'Tatil kayıtlarını, resmi tatilleri ve ekip planlarını oluştur ve yönet',
|
||||
'oauth.scope.geo:read.label': 'Haritalar ve coğrafi kodlama',
|
||||
'oauth.scope.geo:read.description': 'Konum ara, harita URL\'lerini çöz ve koordinatları ters coğrafi kodla',
|
||||
'oauth.scope.geo:read.description':
|
||||
"Konum ara, harita URL'lerini çöz ve koordinatları ters coğrafi kodla",
|
||||
'oauth.scope.weather:read.label': 'Hava durumu tahminleri',
|
||||
'oauth.scope.weather:read.description': 'Seyahat konumları ve tarihleri için hava durumu tahminlerini getir',
|
||||
'oauth.scope.journey:read.label': 'Journey\'leri görüntüle',
|
||||
'oauth.scope.journey:read.description': 'Journey\'leri, kayıtları ve katkıda bulunan listesini oku',
|
||||
'oauth.scope.journey:write.label': 'Journey\'leri yönet',
|
||||
'oauth.scope.journey:write.description': 'Journey\'leri ve kayıtlarını oluştur, güncelle ve sil',
|
||||
'oauth.scope.weather:read.description':
|
||||
'Seyahat konumları ve tarihleri için hava durumu tahminlerini getir',
|
||||
'oauth.scope.journey:read.label': "Journey'leri görüntüle",
|
||||
'oauth.scope.journey:read.description':
|
||||
"Journey'leri, kayıtları ve katkıda bulunan listesini oku",
|
||||
'oauth.scope.journey:write.label': "Journey'leri yönet",
|
||||
'oauth.scope.journey:write.description':
|
||||
"Journey'leri ve kayıtlarını oluştur, güncelle ve sil",
|
||||
'oauth.scope.journey:share.label': 'Journey bağlantılarını yönet',
|
||||
'oauth.scope.journey:share.description': 'Journey\'ler için herkese açık paylaşım bağlantıları oluştur, güncelle ve iptal et',
|
||||
'oauth.scope.journey:share.description':
|
||||
"Journey'ler için herkese açık paylaşım bağlantıları oluştur, güncelle ve iptal et",
|
||||
};
|
||||
export default oauth;
|
||||
|
||||
@@ -5,8 +5,10 @@ const packing: TranslationStrings = {
|
||||
'packing.empty': 'Paket listesi boş',
|
||||
'packing.import': 'İçe aktar',
|
||||
'packing.importTitle': 'Paket listesini içe aktar',
|
||||
'packing.importHint': 'Satır başına bir öğe. Biçim: Kategori, Ad, Ağırlık (g, isteğe bağlı), Çanta (isteğe bağlı), işaretli/işaretsiz (isteğe bağlı)',
|
||||
'packing.importPlaceholder': 'Hijyen, Diş fırçası\\nGiyim, Tişört, 200\\nBelgeler, Pasaport, , El bagajı\\nElektronik, Şarj cihazı, 50, Bavul, işaretli',
|
||||
'packing.importHint':
|
||||
'Satır başına bir öğe. Biçim: Kategori, Ad, Ağırlık (g, isteğe bağlı), Çanta (isteğe bağlı), işaretli/işaretsiz (isteğe bağlı)',
|
||||
'packing.importPlaceholder':
|
||||
'Hijyen, Diş fırçası\\nGiyim, Tişört, 200\\nBelgeler, Pasaport, , El bagajı\\nElektronik, Şarj cihazı, 50, Bavul, işaretli',
|
||||
'packing.importCsv': 'CSV/TXT Yükle',
|
||||
'packing.importAction': '{count} Öğeyi içe aktar',
|
||||
'packing.importSuccess': '{count} öğe içe aktarıldı',
|
||||
@@ -49,8 +51,10 @@ const packing: TranslationStrings = {
|
||||
'packing.bagName': 'Çanta adı...',
|
||||
'packing.addBag': 'Çanta ekle',
|
||||
'packing.changeCategory': 'Kategoriyi Değiştir',
|
||||
'packing.confirm.clearChecked': '{count} İşaretli öğeyi kaldırmak istediğinizden emin misiniz?',
|
||||
'packing.confirm.deleteCat': '"{name}" kategorisini {count} öğeyle birlikte silmek istediğinizden emin misiniz?',
|
||||
'packing.confirm.clearChecked':
|
||||
'{count} İşaretli öğeyi kaldırmak istediğinizden emin misiniz?',
|
||||
'packing.confirm.deleteCat':
|
||||
'"{name}" kategorisini {count} öğeyle birlikte silmek istediğinizden emin misiniz?',
|
||||
'packing.defaultCategory': 'Diğer',
|
||||
'packing.toast.saveError': 'Kaydedilemedi',
|
||||
'packing.toast.deleteError': 'Silinemedi',
|
||||
|
||||
+28
-14
@@ -2,7 +2,8 @@ import type { TranslationStrings } from '../types';
|
||||
|
||||
const perm: TranslationStrings = {
|
||||
'perm.title': 'İzin Ayarları',
|
||||
'perm.subtitle': 'Uygulama genelinde kimlerin hangi işlemleri yapabileceğini belirleyin',
|
||||
'perm.subtitle':
|
||||
'Uygulama genelinde kimlerin hangi işlemleri yapabileceğini belirleyin',
|
||||
'perm.saved': 'İzin ayarları kaydedildi',
|
||||
'perm.resetDefaults': 'Varsayılanlara sıfırla',
|
||||
'perm.customized': 'özelleştirildi',
|
||||
@@ -32,20 +33,33 @@ const perm: TranslationStrings = {
|
||||
'perm.action.collab_edit': 'İşbirliği (notlar, anketler, sohbet)',
|
||||
'perm.action.share_manage': 'Paylaşım bağlantılarını yönet',
|
||||
'perm.actionHint.trip_create': 'Kimler yeni seyahat oluşturabilir',
|
||||
'perm.actionHint.trip_edit': 'Kimler seyahat adını, tarihlerini, açıklamasını ve para birimini değiştirebilir',
|
||||
'perm.actionHint.trip_edit':
|
||||
'Kimler seyahat adını, tarihlerini, açıklamasını ve para birimini değiştirebilir',
|
||||
'perm.actionHint.trip_delete': 'Kimler bir seyahati kalıcı olarak silebilir',
|
||||
'perm.actionHint.trip_archive': 'Kimler seyahati arşivleyebilir veya geri alabilir',
|
||||
'perm.actionHint.trip_cover_upload': 'Kimler kapak görseli yükleyebilir veya değiştirebilir',
|
||||
'perm.actionHint.member_manage': 'Kimler seyahat üyesi davet edebilir veya kaldırabilir',
|
||||
'perm.actionHint.trip_archive':
|
||||
'Kimler seyahati arşivleyebilir veya geri alabilir',
|
||||
'perm.actionHint.trip_cover_upload':
|
||||
'Kimler kapak görseli yükleyebilir veya değiştirebilir',
|
||||
'perm.actionHint.member_manage':
|
||||
'Kimler seyahat üyesi davet edebilir veya kaldırabilir',
|
||||
'perm.actionHint.file_upload': 'Kimler seyahate dosya yükleyebilir',
|
||||
'perm.actionHint.file_edit': 'Kimler dosya açıklamalarını ve bağlantılarını düzenleyebilir',
|
||||
'perm.actionHint.file_delete': 'Kimler dosyaları çöp kutusuna taşıyabilir veya kalıcı silebilir',
|
||||
'perm.actionHint.place_edit': 'Kimler yer ekleyebilir, düzenleyebilir veya silebilir',
|
||||
'perm.actionHint.day_edit': 'Kimler günleri, gün notlarını ve yer atamalarını düzenleyebilir',
|
||||
'perm.actionHint.reservation_edit': 'Kimler rezervasyon oluşturabilir, düzenleyebilir veya silebilir',
|
||||
'perm.actionHint.budget_edit': 'Kimler bütçe kalemleri oluşturabilir, düzenleyebilir veya silebilir',
|
||||
'perm.actionHint.packing_edit': 'Kimler paket öğelerini ve çantaları yönetebilir',
|
||||
'perm.actionHint.collab_edit': 'Kimler not, anket oluşturabilir ve mesaj gönderebilir',
|
||||
'perm.actionHint.share_manage': 'Kimler genel paylaşım bağlantısı oluşturabilir veya silebilir',
|
||||
'perm.actionHint.file_edit':
|
||||
'Kimler dosya açıklamalarını ve bağlantılarını düzenleyebilir',
|
||||
'perm.actionHint.file_delete':
|
||||
'Kimler dosyaları çöp kutusuna taşıyabilir veya kalıcı silebilir',
|
||||
'perm.actionHint.place_edit':
|
||||
'Kimler yer ekleyebilir, düzenleyebilir veya silebilir',
|
||||
'perm.actionHint.day_edit':
|
||||
'Kimler günleri, gün notlarını ve yer atamalarını düzenleyebilir',
|
||||
'perm.actionHint.reservation_edit':
|
||||
'Kimler rezervasyon oluşturabilir, düzenleyebilir veya silebilir',
|
||||
'perm.actionHint.budget_edit':
|
||||
'Kimler bütçe kalemleri oluşturabilir, düzenleyebilir veya silebilir',
|
||||
'perm.actionHint.packing_edit':
|
||||
'Kimler paket öğelerini ve çantaları yönetebilir',
|
||||
'perm.actionHint.collab_edit':
|
||||
'Kimler not, anket oluşturabilir ve mesaj gönderebilir',
|
||||
'perm.actionHint.share_manage':
|
||||
'Kimler genel paylaşım bağlantısı oluşturabilir veya silebilir',
|
||||
};
|
||||
export default perm;
|
||||
|
||||
@@ -4,14 +4,18 @@ const places: TranslationStrings = {
|
||||
'places.addPlace': 'Yer/etkinlik Ekle',
|
||||
'places.importFile': 'Dosyayı içe aktar',
|
||||
'places.sidebarDrop': 'İçe aktarmak için bırakın',
|
||||
'places.importFileHint': 'Google Haritalarım, Google Earth veya GPS izleyici gibi araçlardan .gpx, .kml veya .kmz dosyalarını içe aktarın.',
|
||||
'places.importFileDropHere': 'Bir dosya seçmek için tıklayın veya buraya sürükleyip bırakın',
|
||||
'places.importFileHint':
|
||||
'Google Haritalarım, Google Earth veya GPS izleyici gibi araçlardan .gpx, .kml veya .kmz dosyalarını içe aktarın.',
|
||||
'places.importFileDropHere':
|
||||
'Bir dosya seçmek için tıklayın veya buraya sürükleyip bırakın',
|
||||
'places.importFileDropActive': 'Seçmek için dosyayı bırakın',
|
||||
'places.importFileUnsupported': 'Desteklenmeyen dosya türü. .gpx, .kml veya .kmz kullanın.',
|
||||
'places.importFileTooLarge': 'Dosya çok büyük. Maksimum yükleme boyutu {maxMb} MB\'tır.',
|
||||
'places.importFileUnsupported':
|
||||
'Desteklenmeyen dosya türü. .gpx, .kml veya .kmz kullanın.',
|
||||
'places.importFileTooLarge':
|
||||
"Dosya çok büyük. Maksimum yükleme boyutu {maxMb} MB'tır.",
|
||||
'places.importFileError': 'İçe aktarma başarısız oldu',
|
||||
'places.importAllSkipped': 'Tüm yerler zaten yolculuktaydı.',
|
||||
'places.gpxImported': '{count} yer GPX\'ten içe Aktarıldı',
|
||||
'places.gpxImported': "{count} yer GPX'ten içe Aktarıldı",
|
||||
'places.gpxImportTypes': 'Neyi içe aktarmak istiyorsunuz?',
|
||||
'places.gpxImportWaypoints': 'Ara noktalar',
|
||||
'places.gpxImportRoutes': 'Rotalar',
|
||||
@@ -19,20 +23,23 @@ const places: TranslationStrings = {
|
||||
'places.gpxImportNoneSelected': 'İçe aktarılacak en az bir tür seçin.',
|
||||
'places.kmlImportTypes': 'Neyi içe aktarmak istiyorsunuz?',
|
||||
'places.kmlImportPoints': 'Noktalar (Yer İşaretleri)',
|
||||
'places.kmlImportPaths': 'Yollar (LineString\'ler)',
|
||||
'places.kmlImportPaths': "Yollar (LineString'ler)",
|
||||
'places.kmlImportNoneSelected': 'İçe aktarılacak en az bir tür seçin.',
|
||||
'places.selectionCount': '{count} seçildi',
|
||||
'places.deleteSelected': 'Seçileni sil',
|
||||
'places.kmlKmzImported': 'KMZ/KML\'den {count} yer içe Aktarıldı',
|
||||
'places.urlResolved': 'URL\'den içe aktarılan Yer',
|
||||
'places.kmlKmzImported': "KMZ/KML'den {count} yer içe Aktarıldı",
|
||||
'places.urlResolved': "URL'den içe aktarılan Yer",
|
||||
'places.importList': 'Liste İçe Aktarma',
|
||||
'places.kmlKmzSummaryValues': 'Yer işaretleri: {total} • İçe aktarıldı: {created} • Atlandı: {skipped}',
|
||||
'places.kmlKmzSummaryValues':
|
||||
'Yer işaretleri: {total} • İçe aktarıldı: {created} • Atlandı: {skipped}',
|
||||
'places.importGoogleList': 'Google Listesi',
|
||||
'places.importNaverList': 'Naver Listesi',
|
||||
'places.googleListHint': 'Tüm yerleri içe aktarmak için paylaşılan bir Google Haritalar listesi bağlantısını yapıştırın.',
|
||||
'places.googleListHint':
|
||||
'Tüm yerleri içe aktarmak için paylaşılan bir Google Haritalar listesi bağlantısını yapıştırın.',
|
||||
'places.googleListImported': '"{list}"ten {count} yer içe aktarıldı',
|
||||
'places.googleListError': 'Google Haritalar listesi içe aktarılamadı',
|
||||
'places.naverListHint': 'Tüm yerleri içe aktarmak için paylaşılan bir Naver Haritalar listesi bağlantısını yapıştırın.',
|
||||
'places.naverListHint':
|
||||
'Tüm yerleri içe aktarmak için paylaşılan bir Naver Haritalar listesi bağlantısını yapıştırın.',
|
||||
'places.naverListImported': '"{list}"ten {count} yer içe aktarıldı',
|
||||
'places.naverListError': 'Naver Haritalar listesi içe aktarılamadı',
|
||||
'places.viewDetails': 'Ayrıntıları Görüntüle',
|
||||
@@ -73,8 +80,10 @@ const places: TranslationStrings = {
|
||||
'places.mapsSearchPlaceholder': 'Yerleri ara...',
|
||||
'places.mapsSearchError': 'Yer arama başarısız oldu.',
|
||||
'places.loadingDetails': 'Yer ayrıntıları yükleniyor…',
|
||||
'places.osmHint': 'OpenStreetMap aramasını kullanma (fotoğraf, açılış saatleri veya derecelendirme yok). Tüm ayrıntılar için ayarlara bir Google API anahtarı ekleyin.',
|
||||
'places.osmActive': 'OpenStreetMap aracılığıyla arama yapın (fotoğraf, derecelendirme veya çalışma saatleri yok). Gelişmiş veriler için Ayarlar\'a bir Google API anahtarı ekleyin.',
|
||||
'places.osmHint':
|
||||
'OpenStreetMap aramasını kullanma (fotoğraf, açılış saatleri veya derecelendirme yok). Tüm ayrıntılar için ayarlara bir Google API anahtarı ekleyin.',
|
||||
'places.osmActive':
|
||||
"OpenStreetMap aracılığıyla arama yapın (fotoğraf, derecelendirme veya çalışma saatleri yok). Gelişmiş veriler için Ayarlar'a bir Google API anahtarı ekleyin.",
|
||||
'places.categoryCreateError': 'Kategori oluşturulamadı',
|
||||
'places.nameRequired': 'Lütfen bir ad girin',
|
||||
'places.saveError': 'Kaydedilemedi',
|
||||
|
||||
@@ -33,7 +33,8 @@ const planner: TranslationStrings = {
|
||||
'planner.resConfirmed': 'Rezervasyon onaylandı · ',
|
||||
'planner.notePlaceholder': 'Not…',
|
||||
'planner.noteTimePlaceholder': 'Saat (isteğe bağlı)',
|
||||
'planner.noteExamplePlaceholder': 'örn. Merkez istasyondan 14:30\'da S3, iskele 7\'den feribot, öğle molası…',
|
||||
'planner.noteExamplePlaceholder':
|
||||
"örn. Merkez istasyondan 14:30'da S3, iskele 7'den feribot, öğle molası…",
|
||||
'planner.totalCost': 'Toplam maliyet',
|
||||
'planner.searchPlaces': 'Yer ara…',
|
||||
'planner.allCategories': 'Tüm Kategoriler',
|
||||
@@ -46,8 +47,9 @@ const planner: TranslationStrings = {
|
||||
'planner.calculating': 'Hesaplanıyor…',
|
||||
'planner.route': 'Rota',
|
||||
'planner.optimize': 'Optimize et',
|
||||
'planner.openGoogleMaps': 'Google Haritalar\'da aç',
|
||||
'planner.selectDayHint': 'Gün planını görmek için soldaki listeden bir gün seçin',
|
||||
'planner.openGoogleMaps': "Google Haritalar'da aç",
|
||||
'planner.selectDayHint':
|
||||
'Gün planını görmek için soldaki listeden bir gün seçin',
|
||||
'planner.noPlacesForDay': 'Bu gün için henüz yer yok',
|
||||
'planner.addPlacesLink': 'Yer ekle →',
|
||||
'planner.minTotal': 'dk. toplam',
|
||||
|
||||
@@ -5,7 +5,8 @@ const register: TranslationStrings = {
|
||||
'register.passwordTooShort': 'Şifre en az 8 karakter olmalıdır',
|
||||
'register.failed': 'Kayıt başarısız oldu',
|
||||
'register.getStarted': 'Başlayın',
|
||||
'register.subtitle': 'Bir hesap oluşturun ve hayalinizdeki gezileri planlamaya başlayın.',
|
||||
'register.subtitle':
|
||||
'Bir hesap oluşturun ve hayalinizdeki gezileri planlamaya başlayın.',
|
||||
'register.feature1': 'Sınırsız gezi planları',
|
||||
'register.feature2': 'İnteraktif harita görünümü',
|
||||
'register.feature3': 'Yerleri ve kategorileri yönetin',
|
||||
|
||||
@@ -3,10 +3,12 @@ import type { TranslationStrings } from '../types';
|
||||
const reservations: TranslationStrings = {
|
||||
'reservations.title': 'Rezervasyonlar',
|
||||
'reservations.empty': 'Henüz rezervasyon yok',
|
||||
'reservations.emptyHint': 'Uçuşlar, oteller ve daha fazlası için rezervasyon ekleyin',
|
||||
'reservations.emptyHint':
|
||||
'Uçuşlar, oteller ve daha fazlası için rezervasyon ekleyin',
|
||||
'reservations.add': 'Rezervasyon Ekle',
|
||||
'reservations.addManual': 'Manuel Rezervasyon',
|
||||
'reservations.placeHint': 'İpucu: Rezervasyonları doğrudan günlük planınıza bağlayacak bir yerden oluşturmak en iyisidir.',
|
||||
'reservations.placeHint':
|
||||
'İpucu: Rezervasyonları doğrudan günlük planınıza bağlayacak bir yerden oluşturmak en iyisidir.',
|
||||
'reservations.confirmed': 'Onaylandı',
|
||||
'reservations.pending': 'Askıda olması',
|
||||
'reservations.summary': '{confirmed} onaylandı, {pending} beklemede',
|
||||
@@ -27,7 +29,8 @@ const reservations: TranslationStrings = {
|
||||
'reservations.meta.from': 'İtibaren',
|
||||
'reservations.meta.to': 'İle',
|
||||
'reservations.needsReview': 'Gözden geçirmek',
|
||||
'reservations.needsReviewHint': 'Havaalanı otomatik olarak eşleştirilemedi; lütfen konumu onaylayın.',
|
||||
'reservations.needsReviewHint':
|
||||
'Havaalanı otomatik olarak eşleştirilemedi; lütfen konumu onaylayın.',
|
||||
'reservations.searchLocation': 'İstasyonu, limanı, adresi arayın…',
|
||||
'reservations.meta.trainNumber': 'Tren No.',
|
||||
'reservations.meta.platform': 'Platformu',
|
||||
@@ -52,7 +55,8 @@ const reservations: TranslationStrings = {
|
||||
'reservations.type.event': 'Etkinlik',
|
||||
'reservations.type.tour': 'Tur',
|
||||
'reservations.type.other': 'Diğer',
|
||||
'reservations.confirm.delete': '"{name}" rezervasyonunu silmek istediğinizden emin misiniz?',
|
||||
'reservations.confirm.delete':
|
||||
'"{name}" rezervasyonunu silmek istediğinizden emin misiniz?',
|
||||
'reservations.confirm.deleteTitle': 'Rezervasyon silinsin mi?',
|
||||
'reservations.confirm.deleteBody': '"{name}" kalıcı olarak silinecek.',
|
||||
'reservations.toast.updated': 'Rezervasyon güncellendi',
|
||||
@@ -86,7 +90,8 @@ const reservations: TranslationStrings = {
|
||||
'reservations.budgetCategory': 'Bütçe kategorisi',
|
||||
'reservations.budgetCategoryPlaceholder': 'örn. Ulaşım, Konaklama',
|
||||
'reservations.budgetCategoryAuto': 'Otomatik (rezervasyon türünden)',
|
||||
'reservations.budgetHint': 'Kaydederken otomatik olarak bir bütçe kaydı oluşturulur.',
|
||||
'reservations.budgetHint':
|
||||
'Kaydederken otomatik olarak bir bütçe kaydı oluşturulur.',
|
||||
'reservations.departureDate': 'Kalkış',
|
||||
'reservations.arrivalDate': 'Varış',
|
||||
'reservations.departureTime': 'Kalkış saati',
|
||||
@@ -107,7 +112,8 @@ const reservations: TranslationStrings = {
|
||||
'reservations.span.start': 'Başlangıç',
|
||||
'reservations.span.end': 'Son',
|
||||
'reservations.span.ongoing': 'Devam ediyor',
|
||||
'reservations.validation.endBeforeStart': 'Bitiş tarihi/saati başlangıçtan sonra olmalı',
|
||||
'reservations.validation.endBeforeStart':
|
||||
'Bitiş tarihi/saati başlangıçtan sonra olmalı',
|
||||
'reservations.addBooking': 'Rezervasyon ekle',
|
||||
};
|
||||
export default reservations;
|
||||
|
||||
@@ -18,7 +18,8 @@ const settings: TranslationStrings = {
|
||||
'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
|
||||
'settings.mapHint': 'Harita kutucukları için URL şablonu',
|
||||
'settings.mapProvider': 'Harita Sağlayıcısı',
|
||||
'settings.mapProviderHint': 'Seyahat planlayıcı ve Journey haritalarını etkiler. Atlas her zaman Leaflet kullanır.',
|
||||
'settings.mapProviderHint':
|
||||
'Seyahat planlayıcı ve Journey haritalarını etkiler. Atlas her zaman Leaflet kullanır.',
|
||||
'settings.mapLeafletSubtitle': 'Klasik 2D, herhangi bir raster kutucuk',
|
||||
'settings.mapMapboxSubtitle': 'Vektör kutucuklar, 3D binalar ve arazi',
|
||||
'settings.mapExperimental': 'Deneysel',
|
||||
@@ -27,22 +28,29 @@ const settings: TranslationStrings = {
|
||||
'settings.mapMapboxTokenLink': 'Mapbox.com → Jetonlara erişim',
|
||||
'settings.mapStyle': 'Harita Stili',
|
||||
'settings.mapStylePlaceholder': 'Bir Mapbox stili seçin',
|
||||
'settings.mapStyleHint': 'Ön ayar veya kendi mapbox://styles/KULLANICI/ID adresiniz',
|
||||
'settings.mapStyleHint':
|
||||
'Ön ayar veya kendi mapbox://styles/KULLANICI/ID adresiniz',
|
||||
'settings.map3dBuildings': '3D Binalar ve Arazi',
|
||||
'settings.map3dHint': 'Eğim + gerçek 3D bina çıkıntıları — uydu dahil her stilde çalışır.',
|
||||
'settings.map3dHint':
|
||||
'Eğim + gerçek 3D bina çıkıntıları — uydu dahil her stilde çalışır.',
|
||||
'settings.mapHighQuality': 'Yüksek Kalite Modu',
|
||||
'settings.mapHighQualityHint': 'Keskin kenarlar ve gerçekçi dünya görünümü için antialiasing + küre projeksiyonu.',
|
||||
'settings.mapHighQualityWarning': 'Düşük donanımlı cihazlarda performansı etkileyebilir.',
|
||||
'settings.mapHighQualityHint':
|
||||
'Keskin kenarlar ve gerçekçi dünya görünümü için antialiasing + küre projeksiyonu.',
|
||||
'settings.mapHighQualityWarning':
|
||||
'Düşük donanımlı cihazlarda performansı etkileyebilir.',
|
||||
'settings.mapTipLabel': 'İpucu:',
|
||||
'settings.mapTip': 'Haritayı döndürmek/eğmek için sağ tıklayıp sürükleyin. Yer eklemek için orta tıklama (sağ tık döndürmeye ayrılmıştır).',
|
||||
'settings.mapTip':
|
||||
'Haritayı döndürmek/eğmek için sağ tıklayıp sürükleyin. Yer eklemek için orta tıklama (sağ tık döndürmeye ayrılmıştır).',
|
||||
'settings.latitude': 'Enlem',
|
||||
'settings.longitude': 'Boylam',
|
||||
'settings.saveMap': 'Haritayı Kaydet',
|
||||
'settings.apiKeys': 'API Anahtarları',
|
||||
'settings.mapsKey': 'Google Maps API Anahtarı',
|
||||
'settings.mapsKeyHint': 'Yer araması için. Places API (New) gerekir. console.cloud.google.com',
|
||||
'settings.mapsKeyHint':
|
||||
'Yer araması için. Places API (New) gerekir. console.cloud.google.com',
|
||||
'settings.weatherKey': 'OpenWeatherMap API Anahtarı',
|
||||
'settings.weatherKeyHint': 'Hava verisi için. Ücretsiz: openweathermap.org/api',
|
||||
'settings.weatherKeyHint':
|
||||
'Hava verisi için. Ücretsiz: openweathermap.org/api',
|
||||
'settings.keyPlaceholder': 'Anahtarı girin...',
|
||||
'settings.configured': 'Yapılandırıldı',
|
||||
'settings.saveKeys': 'Anahtarları Kaydet',
|
||||
@@ -55,7 +63,8 @@ const settings: TranslationStrings = {
|
||||
'settings.temperature': 'Sıcaklık Birimi',
|
||||
'settings.timeFormat': 'Saat Biçimi',
|
||||
'settings.bookingLabels': 'Rezervasyon rota etiketleri',
|
||||
'settings.bookingLabelsHint': 'Haritada istasyon / havalimanı adlarını göster. Kapalıyken yalnızca simge görünür.',
|
||||
'settings.bookingLabelsHint':
|
||||
'Haritada istasyon / havalimanı adlarını göster. Kapalıyken yalnızca simge görünür.',
|
||||
'settings.blurBookingCodes': 'Rezervasyon Kodlarını Bulanıklaştır',
|
||||
'settings.notifications': 'Bildirimler',
|
||||
'settings.notifyTripInvite': 'Seyahat davetleri',
|
||||
@@ -72,19 +81,22 @@ const settings: TranslationStrings = {
|
||||
'settings.notificationPreferences.webhook': 'Web kancası',
|
||||
'settings.notificationPreferences.inapp': 'Uygulama içi',
|
||||
'settings.notificationPreferences.ntfy': 'Ntfy',
|
||||
'settings.notificationPreferences.noChannels': 'Bildirim kanalı yapılandırılmadı. Yöneticiden e-posta veya webhook kurmasını isteyin.',
|
||||
'settings.webhookUrl.label': 'Web kancası URL\'si',
|
||||
'settings.notificationPreferences.noChannels':
|
||||
'Bildirim kanalı yapılandırılmadı. Yöneticiden e-posta veya webhook kurmasını isteyin.',
|
||||
'settings.webhookUrl.label': "Web kancası URL'si",
|
||||
'settings.webhookUrl.placeholder': 'https://discord.com/api/webhooks/...',
|
||||
'settings.webhookUrl.hint': 'Bildirim almak için Discord, Slack veya özel webhook URL\'nizi girin.',
|
||||
'settings.webhookUrl.hint':
|
||||
"Bildirim almak için Discord, Slack veya özel webhook URL'nizi girin.",
|
||||
'settings.webhookUrl.saved': 'Webhook URL kaydedildi',
|
||||
'settings.webhookUrl.test': 'Dene',
|
||||
'settings.webhookUrl.testSuccess': 'Test webhook başarıyla gönderildi',
|
||||
'settings.webhookUrl.testFailed': 'Test webhook başarısız',
|
||||
'settings.ntfyUrl.topicLabel': 'Ntfy Konusu',
|
||||
'settings.ntfyUrl.topicPlaceholder': 'benim-trek-uyarilari',
|
||||
'settings.ntfyUrl.serverLabel': 'Ntfy sunucu URL\'si (isteğe bağlı)',
|
||||
'settings.ntfyUrl.serverLabel': "Ntfy sunucu URL'si (isteğe bağlı)",
|
||||
'settings.ntfyUrl.serverPlaceholder': 'https://ntfy.sh',
|
||||
'settings.ntfyUrl.hint': 'Anlık bildirim için ntfy konusunu girin. Sunucuyu boş bırakırsanız yöneticinin varsayılanı kullanılır.',
|
||||
'settings.ntfyUrl.hint':
|
||||
'Anlık bildirim için ntfy konusunu girin. Sunucuyu boş bırakırsanız yöneticinin varsayılanı kullanılır.',
|
||||
'settings.ntfyUrl.tokenLabel': 'Erişim anahtarı (isteğe bağlı)',
|
||||
'settings.ntfyUrl.tokenHint': 'Parola korumalı konular için gerekli.',
|
||||
'settings.ntfyUrl.saved': 'Ntfy ayarları kaydedildi',
|
||||
@@ -92,73 +104,92 @@ const settings: TranslationStrings = {
|
||||
'settings.ntfyUrl.testSuccess': 'Test ntfy bildirimi gönderildi',
|
||||
'settings.ntfyUrl.testFailed': 'Test ntfy bildirimi başarısız',
|
||||
'settings.ntfyUrl.tokenCleared': 'Erişim anahtarı temizlendi',
|
||||
'settings.notificationsDisabled': 'Bildirimler yapılandırılmadı. Yöneticiden e-posta veya webhook açmasını isteyin.',
|
||||
'settings.notificationsDisabled':
|
||||
'Bildirimler yapılandırılmadı. Yöneticiden e-posta veya webhook açmasını isteyin.',
|
||||
'settings.notificationsActive': 'Etkin kanal',
|
||||
'settings.notificationsManagedByAdmin': 'Bildirim olayları yöneticiniz tarafından yapılandırılır.',
|
||||
'settings.notificationsManagedByAdmin':
|
||||
'Bildirim olayları yöneticiniz tarafından yapılandırılır.',
|
||||
'settings.on': 'Açık',
|
||||
'settings.off': 'Kapalı',
|
||||
'settings.mcp.title': 'MCP Yapılandırması',
|
||||
'settings.mcp.endpoint': 'MCP Uç Noktası',
|
||||
'settings.mcp.clientConfig': 'İstemci Yapılandırması',
|
||||
'settings.mcp.clientConfigHint': '<your_token> öğesini aşağıdaki listeden bir API belirteciyle değiştirin. Npx yolunun sisteminize göre ayarlanması gerekebilir (örn. Windows\'ta C:\\\\\\\\PROGRA~1\\\\\\\\nodejs\\\\\\\\npx.cmd).',
|
||||
'settings.mcp.clientConfigHintOAuth': '<client_id> ve <client_secret> değerlerini yukarıda oluşturduğunuz OAuth 2.1 istemcisinde gösterilen kimlik bilgileriyle değiştirin. mcp-remote, ilk bağlandığınızda yetkilendirmeyi tamamlamak için tarayıcınızı açacaktır. Npx yolunun sisteminize göre ayarlanması gerekebilir (örn. Windows\'ta C:\\PROGRA~1\\nodejs\\npx.cmd).',
|
||||
'settings.mcp.clientConfigHint':
|
||||
"<your_token> öğesini aşağıdaki listeden bir API belirteciyle değiştirin. Npx yolunun sisteminize göre ayarlanması gerekebilir (örn. Windows'ta C:\\\\\\\\PROGRA~1\\\\\\\\nodejs\\\\\\\\npx.cmd).",
|
||||
'settings.mcp.clientConfigHintOAuth':
|
||||
"<client_id> ve <client_secret> değerlerini yukarıda oluşturduğunuz OAuth 2.1 istemcisinde gösterilen kimlik bilgileriyle değiştirin. mcp-remote, ilk bağlandığınızda yetkilendirmeyi tamamlamak için tarayıcınızı açacaktır. Npx yolunun sisteminize göre ayarlanması gerekebilir (örn. Windows'ta C:\\PROGRA~1\\nodejs\\npx.cmd).",
|
||||
'settings.mcp.copy': 'Kopyala',
|
||||
'settings.mcp.copied': 'Kopyalandı!',
|
||||
'settings.mcp.apiTokens': 'API Belirteçleri',
|
||||
'settings.mcp.createToken': 'Yeni Jeton Oluştur',
|
||||
'settings.mcp.noTokens': 'Henüz jeton yok. MCP istemcilerini bağlamak için bir tane oluşturun.',
|
||||
'settings.mcp.noTokens':
|
||||
'Henüz jeton yok. MCP istemcilerini bağlamak için bir tane oluşturun.',
|
||||
'settings.mcp.tokenCreatedAt': 'Oluşturuldu',
|
||||
'settings.mcp.tokenUsedAt': 'Kullanılmış',
|
||||
'settings.mcp.deleteTokenTitle': 'Jetonu Sil',
|
||||
'settings.mcp.deleteTokenMessage': 'Bu jeton hemen çalışmayı durduracak. Bunu kullanan herhangi bir MCP istemcisi erişimi kaybedecektir.',
|
||||
'settings.mcp.deleteTokenMessage':
|
||||
'Bu jeton hemen çalışmayı durduracak. Bunu kullanan herhangi bir MCP istemcisi erişimi kaybedecektir.',
|
||||
'settings.mcp.modal.createTitle': 'API Jetonu Oluştur',
|
||||
'settings.mcp.modal.tokenName': 'Jeton Adı',
|
||||
'settings.mcp.modal.tokenNamePlaceholder': 'örneğin Claude Masaüstü, İş dizüstü bilgisayarı',
|
||||
'settings.mcp.modal.tokenNamePlaceholder':
|
||||
'örneğin Claude Masaüstü, İş dizüstü bilgisayarı',
|
||||
'settings.mcp.modal.creating': 'Oluşturuluyor…',
|
||||
'settings.mcp.modal.create': 'Jeton Oluştur',
|
||||
'settings.mcp.modal.createdTitle': 'Jeton Oluşturuldu',
|
||||
'settings.mcp.modal.createdWarning': 'Bu jeton yalnızca bir kez gösterilecektir. Şimdi kopyalayıp saklayın; kurtarılamaz.',
|
||||
'settings.mcp.modal.createdWarning':
|
||||
'Bu jeton yalnızca bir kez gösterilecektir. Şimdi kopyalayıp saklayın; kurtarılamaz.',
|
||||
'settings.mcp.modal.done': 'Tamamlamak',
|
||||
'settings.mcp.toast.created': 'Jeton oluşturuldu',
|
||||
'settings.mcp.toast.createError': 'Jeton oluşturulamadı',
|
||||
'settings.mcp.toast.deleted': 'Jeton silindi',
|
||||
'settings.mcp.toast.deleteError': 'Jeton silinemedi',
|
||||
'settings.mcp.apiTokensDeprecated': 'API Belirteçleri kullanımdan kaldırıldı ve gelecekteki bir sürümde kaldırılacak. Lütfen bunun yerine OAuth 2.1 İstemcilerini kullanın.',
|
||||
'settings.mcp.apiTokensDeprecated':
|
||||
'API Belirteçleri kullanımdan kaldırıldı ve gelecekteki bir sürümde kaldırılacak. Lütfen bunun yerine OAuth 2.1 İstemcilerini kullanın.',
|
||||
'settings.oauth.clients': 'OAuth 2.1 İstemcileri',
|
||||
'settings.oauth.clientsHint': 'Üçüncü taraf MCP uygulamalarının (Claude Web, Cursor vb.) statik belirteçler olmadan bağlanmasına izin vermek için OAuth 2.1 istemcilerini kaydedin.',
|
||||
'settings.oauth.clientsHint':
|
||||
'Üçüncü taraf MCP uygulamalarının (Claude Web, Cursor vb.) statik belirteçler olmadan bağlanmasına izin vermek için OAuth 2.1 istemcilerini kaydedin.',
|
||||
'settings.oauth.createClient': 'Yeni Müşteri',
|
||||
'settings.oauth.noClients': 'Kayıtlı OAuth istemcisi yok.',
|
||||
'settings.oauth.clientId': 'Müşteri Kimliği',
|
||||
'settings.oauth.clientSecret': 'Müşteri Sırrı',
|
||||
'settings.oauth.deleteClient': 'İstemciyi Sil',
|
||||
'settings.oauth.deleteClientMessage': 'Bu istemci ve tüm aktif oturumlar kalıcı olarak kaldırılacak. Bunu kullanan herhangi bir uygulama erişimi anında kaybedecektir.',
|
||||
'settings.oauth.deleteClientMessage':
|
||||
'Bu istemci ve tüm aktif oturumlar kalıcı olarak kaldırılacak. Bunu kullanan herhangi bir uygulama erişimi anında kaybedecektir.',
|
||||
'settings.oauth.rotateSecret': 'Gizli Anahtarı Döndür',
|
||||
'settings.oauth.rotateSecretMessage': 'Yeni bir istemci sırrı oluşturulacak ve mevcut tüm oturumlar derhal geçersiz kılınacaktır. Bu iletişim kutusunu kapatmadan önce uygulamanızı güncelleyin.',
|
||||
'settings.oauth.rotateSecretMessage':
|
||||
'Yeni bir istemci sırrı oluşturulacak ve mevcut tüm oturumlar derhal geçersiz kılınacaktır. Bu iletişim kutusunu kapatmadan önce uygulamanızı güncelleyin.',
|
||||
'settings.oauth.rotateSecretConfirm': 'Döndür',
|
||||
'settings.oauth.rotateSecretConfirming': 'Dönüyor…',
|
||||
'settings.oauth.rotateSecretDoneTitle': 'Yeni Gizli Oluşturuldu',
|
||||
'settings.oauth.rotateSecretDoneWarning': 'Bu sır yalnızca bir kez gösterilir. Şimdi kopyalayın ve uygulamanızı güncelleyin; önceki tüm oturumlar geçersiz kılınmıştır.',
|
||||
'settings.oauth.rotateSecretDoneWarning':
|
||||
'Bu sır yalnızca bir kez gösterilir. Şimdi kopyalayın ve uygulamanızı güncelleyin; önceki tüm oturumlar geçersiz kılınmıştır.',
|
||||
'settings.oauth.activeSessions': 'Aktif OAuth Oturumları',
|
||||
'settings.oauth.sessionScopes': 'Kapsamlar',
|
||||
'settings.oauth.sessionExpires': 'Süresi doluyor',
|
||||
'settings.oauth.revoke': 'Geri çekmek',
|
||||
'settings.oauth.revokeSession': 'Oturumu İptal Et',
|
||||
'settings.oauth.revokeSessionMessage': 'Bu, bu OAuth oturumuna erişimi anında iptal edecektir.',
|
||||
'settings.oauth.revokeSessionMessage':
|
||||
'Bu, bu OAuth oturumuna erişimi anında iptal edecektir.',
|
||||
'settings.oauth.modal.createTitle': 'OAuth İstemcisini Kaydedin',
|
||||
'settings.oauth.modal.presets': 'Hızlı ön ayarlar',
|
||||
'settings.oauth.modal.clientName': 'Uygulama Adı',
|
||||
'settings.oauth.modal.clientNamePlaceholder': 'örneğin Claude Web, MCP Uygulamam',
|
||||
'settings.oauth.modal.redirectUris': 'URI\'leri Yönlendir',
|
||||
'settings.oauth.modal.redirectUrisPlaceholder': 'https://uygulamaniz.com/callback\\nhttps://uygulamaniz.com/auth',
|
||||
'settings.oauth.modal.redirectUrisHint': 'Satır başına bir URI. HTTPS gerekli (yerel ana bilgisayar hariç). Tam eşleşme uygulandı.',
|
||||
'settings.oauth.modal.clientNamePlaceholder':
|
||||
'örneğin Claude Web, MCP Uygulamam',
|
||||
'settings.oauth.modal.redirectUris': "URI'leri Yönlendir",
|
||||
'settings.oauth.modal.redirectUrisPlaceholder':
|
||||
'https://uygulamaniz.com/callback\\nhttps://uygulamaniz.com/auth',
|
||||
'settings.oauth.modal.redirectUrisHint':
|
||||
'Satır başına bir URI. HTTPS gerekli (yerel ana bilgisayar hariç). Tam eşleşme uygulandı.',
|
||||
'settings.oauth.modal.scopes': 'İzin Verilen Kapsamlar',
|
||||
'settings.oauth.modal.scopesHint': 'list_trips ve get_trip_summary her zaman kullanılabilir; kapsam gerektirmez. Yapay zekanın başka herhangi bir aracı kullanmak için gereken yolculuk kimliklerini keşfetmesine olanak tanıyorlar.',
|
||||
'settings.oauth.modal.scopesHint':
|
||||
'list_trips ve get_trip_summary her zaman kullanılabilir; kapsam gerektirmez. Yapay zekanın başka herhangi bir aracı kullanmak için gereken yolculuk kimliklerini keşfetmesine olanak tanıyorlar.',
|
||||
'settings.oauth.modal.selectAll': 'Tümünü seç',
|
||||
'settings.oauth.modal.deselectAll': 'Tümünün seçimini kaldır',
|
||||
'settings.oauth.modal.creating': 'Kaydediliyor…',
|
||||
'settings.oauth.modal.create': 'Müşteriyi Kaydet',
|
||||
'settings.oauth.modal.createdTitle': 'Müşteri Kayıtlı',
|
||||
'settings.oauth.modal.createdWarning': 'İstemci sırrı yalnızca bir kez gösterilir. Şimdi kopyalayın; kurtarılamaz.',
|
||||
'settings.oauth.modal.createdWarning':
|
||||
'İstemci sırrı yalnızca bir kez gösterilir. Şimdi kopyalayın; kurtarılamaz.',
|
||||
'settings.oauth.toast.createError': 'OAuth istemcisi kaydedilemedi',
|
||||
'settings.oauth.toast.deleted': 'OAuth istemcisi silindi',
|
||||
'settings.oauth.toast.deleteError': 'OAuth istemcisi silinemedi',
|
||||
@@ -180,12 +211,15 @@ const settings: TranslationStrings = {
|
||||
'settings.about.supporters.tierEmpty': 'İlk olun',
|
||||
'settings.about.supporter.tier.noReturnTicket': 'Dönüş Bileti Yok',
|
||||
'settings.about.supporter.tier.lostLuggageVip': 'Kayıp Bagaj VIP',
|
||||
'settings.about.supporter.tier.businessClassDreamer': 'Business Class Hayalperest',
|
||||
'settings.about.supporter.tier.businessClassDreamer':
|
||||
'Business Class Hayalperest',
|
||||
'settings.about.supporter.tier.budgetTraveller': 'Bütçe Gezgini',
|
||||
'settings.about.supporter.tier.hostelBunkmate': 'Hostel Yatakhane Arkadaşı',
|
||||
'settings.about.description': 'TREK, seyahatlerinizi ilk fikirden son anıya kadar organize etmenize yardımcı olan, kendi kendine barındırılan bir seyahat planlayıcıdır. Gün planlaması, bütçe, paketleme listeleri, fotoğraflar ve çok daha fazlası; hepsi tek bir yerde, kendi sunucunuzda.',
|
||||
'settings.about.description':
|
||||
'TREK, seyahatlerinizi ilk fikirden son anıya kadar organize etmenize yardımcı olan, kendi kendine barındırılan bir seyahat planlayıcıdır. Gün planlaması, bütçe, paketleme listeleri, fotoğraflar ve çok daha fazlası; hepsi tek bir yerde, kendi sunucunuzda.',
|
||||
'settings.about.madeWith': 'İle yapıldı',
|
||||
'settings.about.madeBy': 'Maurice ve büyüyen bir açık kaynak topluluğu tarafından.',
|
||||
'settings.about.madeBy':
|
||||
'Maurice ve büyüyen bir açık kaynak topluluğu tarafından.',
|
||||
'settings.username': 'Kullanıcı adı',
|
||||
'settings.email': 'E-posta',
|
||||
'settings.role': 'Rol',
|
||||
@@ -200,15 +234,19 @@ const settings: TranslationStrings = {
|
||||
'settings.passwordRequired': 'Lütfen mevcut ve yeni şifrenizi giriniz',
|
||||
'settings.passwordTooShort': 'Şifre en az 8 karakter olmalıdır',
|
||||
'settings.passwordMismatch': 'Şifreler eşleşmiyor',
|
||||
'settings.passwordWeak': 'Şifre büyük harf, küçük harf, sayı ve özel karakter içermelidir',
|
||||
'settings.passwordWeak':
|
||||
'Şifre büyük harf, küçük harf, sayı ve özel karakter içermelidir',
|
||||
'settings.passwordChanged': 'Şifre başarıyla değiştirildi',
|
||||
'settings.mustChangePassword': 'Devam etmeden önce şifrenizi değiştirmelisiniz. Lütfen aşağıdan yeni bir şifre belirleyin.',
|
||||
'settings.mustChangePassword':
|
||||
'Devam etmeden önce şifrenizi değiştirmelisiniz. Lütfen aşağıdan yeni bir şifre belirleyin.',
|
||||
'settings.deleteAccount': 'Hesabı sil',
|
||||
'settings.deleteAccountTitle': 'Hesabınız silinsin mi?',
|
||||
'settings.deleteAccountWarning': 'Hesabınız ve tüm gezileriniz, yerleriniz ve dosyalarınız kalıcı olarak silinecek. Bu eylem geri alınamaz.',
|
||||
'settings.deleteAccountWarning':
|
||||
'Hesabınız ve tüm gezileriniz, yerleriniz ve dosyalarınız kalıcı olarak silinecek. Bu eylem geri alınamaz.',
|
||||
'settings.deleteAccountConfirm': 'Kalıcı olarak sil',
|
||||
'settings.deleteBlockedTitle': 'Silme mümkün değil',
|
||||
'settings.deleteBlockedMessage': 'Tek yönetici sizsiniz. Hesabınızı silmeden önce başka bir kullanıcıyı yönetici olarak atayın.',
|
||||
'settings.deleteBlockedMessage':
|
||||
'Tek yönetici sizsiniz. Hesabınızı silmeden önce başka bir kullanıcıyı yönetici olarak atayın.',
|
||||
'settings.roleUser': 'Kullanıcı',
|
||||
'settings.saveProfile': 'Profili Kaydet',
|
||||
'settings.toast.mapSaved': 'Harita ayarları kaydedildi',
|
||||
@@ -221,33 +259,41 @@ const settings: TranslationStrings = {
|
||||
'settings.avatarRemoved': 'Profil resmi kaldırıldı',
|
||||
'settings.avatarError': 'Yükleme başarısız oldu',
|
||||
'settings.mfa.title': 'İki faktörlü kimlik doğrulama (2FA)',
|
||||
'settings.mfa.description': 'E-posta ve şifreyle oturum açtığınızda ikinci bir adım ekler. Bir kimlik doğrulama uygulaması kullanın (Google Authenticator, Authy vb.).',
|
||||
'settings.mfa.requiredByPolicy': 'Yöneticiniz iki faktörlü kimlik doğrulama gerektiriyor. Devam etmeden önce aşağıdan bir kimlik doğrulama uygulaması kurun.',
|
||||
'settings.mfa.description':
|
||||
'E-posta ve şifreyle oturum açtığınızda ikinci bir adım ekler. Bir kimlik doğrulama uygulaması kullanın (Google Authenticator, Authy vb.).',
|
||||
'settings.mfa.requiredByPolicy':
|
||||
'Yöneticiniz iki faktörlü kimlik doğrulama gerektiriyor. Devam etmeden önce aşağıdan bir kimlik doğrulama uygulaması kurun.',
|
||||
'settings.mfa.backupTitle': 'Yedekleme kodları',
|
||||
'settings.mfa.backupDescription': 'Kimlik doğrulayıcı uygulamanıza erişimi kaybederseniz bu tek seferlik yedek kodları kullanın.',
|
||||
'settings.mfa.backupWarning': 'Şimdi bu kodları kaydedin. Her kod yalnızca bir kez kullanılabilir.',
|
||||
'settings.mfa.backupDescription':
|
||||
'Kimlik doğrulayıcı uygulamanıza erişimi kaybederseniz bu tek seferlik yedek kodları kullanın.',
|
||||
'settings.mfa.backupWarning':
|
||||
'Şimdi bu kodları kaydedin. Her kod yalnızca bir kez kullanılabilir.',
|
||||
'settings.mfa.backupCopy': 'Kodları kopyala',
|
||||
'settings.mfa.backupDownload': 'TXT\'yi İndirin',
|
||||
'settings.mfa.backupDownload': "TXT'yi İndirin",
|
||||
'settings.mfa.backupPrint': 'Yazdır / PDF',
|
||||
'settings.mfa.backupCopied': 'Yedek kodlar kopyalandı',
|
||||
'settings.mfa.enabled': 'Hesabınızda 2FA etkin.',
|
||||
'settings.mfa.disabled': '2FA etkin değil.',
|
||||
'settings.mfa.setup': 'Kimlik doğrulayıcıyı ayarla',
|
||||
'settings.mfa.scanQr': 'Bu QR kodunu uygulamanızla tarayın veya sırrı manuel olarak girin.',
|
||||
'settings.mfa.scanQr':
|
||||
'Bu QR kodunu uygulamanızla tarayın veya sırrı manuel olarak girin.',
|
||||
'settings.mfa.secretLabel': 'Gizli anahtar (manuel giriş)',
|
||||
'settings.mfa.codePlaceholder': '6 haneli kod',
|
||||
'settings.mfa.enable': '2FA\'yı Etkinleştir',
|
||||
'settings.mfa.enable': "2FA'yı Etkinleştir",
|
||||
'settings.mfa.cancelSetup': 'İptal etmek',
|
||||
'settings.mfa.disableTitle': '2FA\'yı devre dışı bırak',
|
||||
'settings.mfa.disableHint': 'Hesap şifrenizi ve kimlik doğrulayıcınızdan aldığınız geçerli kodu girin.',
|
||||
'settings.mfa.disable': '2FA\'yı devre dışı bırak',
|
||||
'settings.mfa.disableTitle': "2FA'yı devre dışı bırak",
|
||||
'settings.mfa.disableHint':
|
||||
'Hesap şifrenizi ve kimlik doğrulayıcınızdan aldığınız geçerli kodu girin.',
|
||||
'settings.mfa.disable': "2FA'yı devre dışı bırak",
|
||||
'settings.mfa.toastEnabled': 'İki faktörlü kimlik doğrulama etkin',
|
||||
'settings.mfa.toastDisabled': 'İki faktörlü kimlik doğrulama devre dışı',
|
||||
'settings.mfa.demoBlocked': 'Demo modunda kullanılamaz',
|
||||
'settings.oauth.modal.machineClient': 'Makine istemcisi (tarayıcıda oturum açma yok)',
|
||||
'settings.oauth.modal.machineClient':
|
||||
'Makine istemcisi (tarayıcıda oturum açma yok)',
|
||||
'settings.oauth.modal.machineClientHint':
|
||||
"client_credentials iznini kullanın — yönlendirme URI'lerine gerek yoktur. Belirteç doğrudan client_id + client_secret ile verilir ve seçilen kapsamlar dahilinde sizin adınıza hareket eder.",
|
||||
'settings.oauth.modal.machineClientUsage': 'Bir jeton alın: grant_type=client_credentials, client_id ve client_secret ile POST /oauth/token. Tarayıcı yok, yenileme belirteci yok.',
|
||||
'settings.oauth.modal.machineClientUsage':
|
||||
'Bir jeton alın: grant_type=client_credentials, client_id ve client_secret ile POST /oauth/token. Tarayıcı yok, yenileme belirteci yok.',
|
||||
'settings.oauth.badge.machine': 'makine',
|
||||
};
|
||||
export default settings;
|
||||
|
||||
@@ -2,7 +2,8 @@ import type { TranslationStrings } from '../types';
|
||||
|
||||
const share: TranslationStrings = {
|
||||
'share.linkTitle': 'Genel Bağlantı',
|
||||
'share.linkHint': 'Herkesin giriş yapmadan bu geziyi görüntülemek için kullanabileceği bir bağlantı oluşturun. Salt okunur — düzenleme mümkün değildir.',
|
||||
'share.linkHint':
|
||||
'Herkesin giriş yapmadan bu geziyi görüntülemek için kullanabileceği bir bağlantı oluşturun. Salt okunur — düzenleme mümkün değildir.',
|
||||
'share.createLink': 'Bağlantı oluştur',
|
||||
'share.deleteLink': 'Bağlantıyı sil',
|
||||
'share.createError': 'Bağlantı oluşturulamadı',
|
||||
|
||||
@@ -1,41 +1,61 @@
|
||||
import type { TranslationStrings } from '../types';
|
||||
|
||||
const system_notice: TranslationStrings = {
|
||||
'system_notice.v3_photos.title': 'Fotoğraflar 3.0\'da taşındı',
|
||||
'system_notice.v3_photos.body': 'Seyahat Planlayıcı\'daki **Fotoğraflar** kaldırıldı. Fotoğraflarınız güvende — TREK Immich veya Synology kütüphanenizi asla değiştirmedi.\\n\\nFotoğraflar artık **Journey** eklentisinde. Journey isteğe bağlıdır — henüz kullanılamıyorsa yöneticinizden Yönetici → Eklentiler bölümünden etkinleştirmesini isteyin.',
|
||||
'system_notice.v3_photos.title': "Fotoğraflar 3.0'da taşındı",
|
||||
'system_notice.v3_photos.body':
|
||||
"Seyahat Planlayıcı'daki **Fotoğraflar** kaldırıldı. Fotoğraflarınız güvende — TREK Immich veya Synology kütüphanenizi asla değiştirmedi.\\n\\nFotoğraflar artık **Journey** eklentisinde. Journey isteğe bağlıdır — henüz kullanılamıyorsa yöneticinizden Yönetici → Eklentiler bölümünden etkinleştirmesini isteyin.",
|
||||
'system_notice.v3_journey.title': 'Journey ile tanışın — seyahat günlüğü',
|
||||
'system_notice.v3_journey.body': 'Seyahatlerinizi zaman çizelgeleri, fotoğraf galerileri ve etkileşimli haritalarla zengin hikâyelere dönüştürün.',
|
||||
'system_notice.v3_journey.cta_label': 'Journey\'i Aç',
|
||||
'system_notice.v3_journey.highlight_timeline': 'Gün gün zaman çizelgesi ve galeri',
|
||||
'system_notice.v3_journey.highlight_photos': 'Immich veya Synology\'den içe Aktar',
|
||||
'system_notice.v3_journey.highlight_share': 'Herkese açık paylaş — giriş gerekmez',
|
||||
'system_notice.v3_journey.highlight_export': 'PDF fotoğraf kitabı Olarak dışa aktar',
|
||||
'system_notice.v3_features.title': '3.0\'Daki diğer öne çıkanlar',
|
||||
'system_notice.v3_features.body': 'Bu sürüm hakkında bilmeniz gereken birkaç şey daha.',
|
||||
'system_notice.v3_features.highlight_dashboard': 'Mobil öncelikli gösterge paneli yenilemesi',
|
||||
'system_notice.v3_features.highlight_offline': 'PWA olarak tam çevrimdışı mod',
|
||||
'system_notice.v3_features.highlight_search': 'Gerçek zamanlı yer arama otomatik tamamlama',
|
||||
'system_notice.v3_features.highlight_import': 'KMZ/KML dosyalarından yer İçe aktarma',
|
||||
'system_notice.v3_journey.body':
|
||||
'Seyahatlerinizi zaman çizelgeleri, fotoğraf galerileri ve etkileşimli haritalarla zengin hikâyelere dönüştürün.',
|
||||
'system_notice.v3_journey.cta_label': "Journey'i Aç",
|
||||
'system_notice.v3_journey.highlight_timeline':
|
||||
'Gün gün zaman çizelgesi ve galeri',
|
||||
'system_notice.v3_journey.highlight_photos':
|
||||
"Immich veya Synology'den içe Aktar",
|
||||
'system_notice.v3_journey.highlight_share':
|
||||
'Herkese açık paylaş — giriş gerekmez',
|
||||
'system_notice.v3_journey.highlight_export':
|
||||
'PDF fotoğraf kitabı Olarak dışa aktar',
|
||||
'system_notice.v3_features.title': "3.0'Daki diğer öne çıkanlar",
|
||||
'system_notice.v3_features.body':
|
||||
'Bu sürüm hakkında bilmeniz gereken birkaç şey daha.',
|
||||
'system_notice.v3_features.highlight_dashboard':
|
||||
'Mobil öncelikli gösterge paneli yenilemesi',
|
||||
'system_notice.v3_features.highlight_offline':
|
||||
'PWA olarak tam çevrimdışı mod',
|
||||
'system_notice.v3_features.highlight_search':
|
||||
'Gerçek zamanlı yer arama otomatik tamamlama',
|
||||
'system_notice.v3_features.highlight_import':
|
||||
'KMZ/KML dosyalarından yer İçe aktarma',
|
||||
'system_notice.v3_mcp.title': 'MCP: OAuth 2.1 yükseltmesi',
|
||||
'system_notice.v3_mcp.body': 'MCP entegrasyonu tamamen yenilendi. OAuth 2.1 artık önerilen kimlik doğrulama yöntemidir. Eski statik jetonlar (trek_…) kullanımdan kaldırıldı ve gelecekteki bir sürümde kaldırılacak.',
|
||||
'system_notice.v3_mcp.body':
|
||||
'MCP entegrasyonu tamamen yenilendi. OAuth 2.1 artık önerilen kimlik doğrulama yöntemidir. Eski statik jetonlar (trek_…) kullanımdan kaldırıldı ve gelecekteki bir sürümde kaldırılacak.',
|
||||
'system_notice.v3_mcp.highlight_oauth': 'OAuth 2.1 önerilir (mcp-remote)',
|
||||
'system_notice.v3_mcp.highlight_scopes': '24 ayrıntılı izin kapsamı',
|
||||
'system_notice.v3_mcp.highlight_deprecated': 'Statik trek_ jetonları kullanımdan kaldırıldı',
|
||||
'system_notice.v3_mcp.highlight_deprecated':
|
||||
'Statik trek_ jetonları kullanımdan kaldırıldı',
|
||||
'system_notice.v3_mcp.highlight_tools': 'Genişletilmiş araç seti ve istemler',
|
||||
'system_notice.v3_thankyou.title': 'Benden kişisel bir not',
|
||||
'system_notice.v3_thankyou.body':
|
||||
"Before you go — I want to take a moment.\n\nTREK started as a side project I built for my own trips. I never imagined it would grow into something that 4,000 of you now trust to plan your adventures. Every star, every issue, every feature request — I read them all, and they keep me going through late nights between a full-time job and university.\n\nI want you to know: TREK will always be open source, always self-hosted, always yours. No tracking, no subscriptions, no strings attached. Just a tool built by someone who loves traveling as much as you do.\n\nSpecial thanks to [jubnl](https://github.com/jubnl) — you have become an incredible collaborator. So much of what makes 3.0 great carries your fingerprints. Thank you for believing in this project when it was still rough around the edges.\n\nAnd to every single one of you who filed a bug, translated a string, shared TREK with a friend, or simply used it to plan a trip — **thank you**. You are the reason this exists.\n\nHere's to many more adventures together.\n\n— Maurice\n\n---\n\n[Join the community on Discord](https://discord.gg/7Q6M6jDwzf)\n\nIf TREK makes your travels better, a [small coffee](https://ko-fi.com/mauriceboe) always keeps the lights on.",
|
||||
'system_notice.v3014_whitespace_collision.title': 'İşlem gerekli: kullanıcı hesabı çakışması',
|
||||
'system_notice.v3014_whitespace_collision.body': '3.0.14 yükseltmesi, kayıtlı hesaplardaki baştaki/sondaki boşluklardan kaynaklanan bir veya daha fazla kullanıcı adı veya e-posta çakışması tespit etti. Etkilenen hesaplar otomatik olarak yeniden adlandırıldı. Hangi hesapların incelenmesi gerektiğini belirlemek için sunucu günlüklerinde **[migration] WHITESPACE COLLISION** ile başlayan satırlara bakın.',
|
||||
'system_notice.welcome_v1.title': 'TREK\'e hoş Geldiniz',
|
||||
'system_notice.welcome_v1.body': 'Hepsi bir arada seyahat planlayıcınız. Program oluşturun, seyahatleri arkadaşlarınızla paylaşın ve çevrimiçi veya çevrimdışı düzenli kalın.',
|
||||
'system_notice.v3014_whitespace_collision.title':
|
||||
'İşlem gerekli: kullanıcı hesabı çakışması',
|
||||
'system_notice.v3014_whitespace_collision.body':
|
||||
'3.0.14 yükseltmesi, kayıtlı hesaplardaki baştaki/sondaki boşluklardan kaynaklanan bir veya daha fazla kullanıcı adı veya e-posta çakışması tespit etti. Etkilenen hesaplar otomatik olarak yeniden adlandırıldı. Hangi hesapların incelenmesi gerektiğini belirlemek için sunucu günlüklerinde **[migration] WHITESPACE COLLISION** ile başlayan satırlara bakın.',
|
||||
'system_notice.welcome_v1.title': "TREK'e hoş Geldiniz",
|
||||
'system_notice.welcome_v1.body':
|
||||
'Hepsi bir arada seyahat planlayıcınız. Program oluşturun, seyahatleri arkadaşlarınızla paylaşın ve çevrimiçi veya çevrimdışı düzenli kalın.',
|
||||
'system_notice.welcome_v1.cta_label': 'Seyahat planla',
|
||||
'system_notice.welcome_v1.hero_alt': 'TREK planlama arayüzü kaplamalı manzaralı bir seyahat destinasyonu',
|
||||
'system_notice.welcome_v1.highlight_plan': 'Her seyahat için gün gün programlar',
|
||||
'system_notice.welcome_v1.highlight_share': 'Seyahat partnerleriyle işbirliği',
|
||||
'system_notice.welcome_v1.hero_alt':
|
||||
'TREK planlama arayüzü kaplamalı manzaralı bir seyahat destinasyonu',
|
||||
'system_notice.welcome_v1.highlight_plan':
|
||||
'Her seyahat için gün gün programlar',
|
||||
'system_notice.welcome_v1.highlight_share':
|
||||
'Seyahat partnerleriyle işbirliği',
|
||||
'system_notice.welcome_v1.highlight_offline': 'Mobilde çevrimdışı çalışır',
|
||||
'system_notice.dev_test_modal.title': '[Dev] Test bildirimi',
|
||||
'system_notice.dev_test_modal.body': 'Bu yalnızca geliştirme ortamına özel bir test bildirimidir.',
|
||||
'system_notice.dev_test_modal.body':
|
||||
'Bu yalnızca geliştirme ortamına özel bir test bildirimidir.',
|
||||
'system_notice.pager.prev': 'Önceki bildirim',
|
||||
'system_notice.pager.next': 'Sonraki bildirim',
|
||||
'system_notice.pager.counter': '{güncel} / {toplam}',
|
||||
|
||||
@@ -11,6 +11,7 @@ const trips: TranslationStrings = {
|
||||
'trips.reminderDays': 'gün',
|
||||
'trips.reminderCustom': 'Özel',
|
||||
'trips.reminderDaysBefore': 'hareketten önce gün',
|
||||
'trips.reminderDisabledHint': 'Seyahat hatırlatıcıları kapalı. Yönetici > Ayarlar > Bildirimler bölümünden açın.',
|
||||
'trips.reminderDisabledHint':
|
||||
'Seyahat hatırlatıcıları kapalı. Yönetici > Ayarlar > Bildirimler bölümünden açın.',
|
||||
};
|
||||
export default trips;
|
||||
|
||||
+24
-12
@@ -8,7 +8,8 @@ const vacay: TranslationStrings = {
|
||||
'vacay.addPrevYear': 'Önceki yılı ekle',
|
||||
'vacay.removeYear': 'Yılı kaldır',
|
||||
'vacay.removeYearConfirm': '{year} Kaldırılsın mı?',
|
||||
'vacay.removeYearHint': 'Bu yılın tüm tatil girişleri ve şirket tatilleri kalıcı olarak silinecek.',
|
||||
'vacay.removeYearHint':
|
||||
'Bu yılın tüm tatil girişleri ve şirket tatilleri kalıcı olarak silinecek.',
|
||||
'vacay.remove': 'Kaldırmak',
|
||||
'vacay.persons': 'Kişiler',
|
||||
'vacay.noPersons': 'Hiç kişi eklenmedi',
|
||||
@@ -16,7 +17,8 @@ const vacay: TranslationStrings = {
|
||||
'vacay.editPerson': 'Kişiyi Düzenle',
|
||||
'vacay.removePerson': 'Kişiyi Kaldır',
|
||||
'vacay.removePersonConfirm': '{name} Kaldırılsın mı?',
|
||||
'vacay.removePersonHint': 'Bu kişinin tüm tatil girişleri kalıcı olarak silinecek.',
|
||||
'vacay.removePersonHint':
|
||||
'Bu kişinin tüm tatil girişleri kalıcı olarak silinecek.',
|
||||
'vacay.personName': 'İsim',
|
||||
'vacay.personNamePlaceholder': 'Ad girin',
|
||||
'vacay.color': 'Renk',
|
||||
@@ -51,12 +53,16 @@ const vacay: TranslationStrings = {
|
||||
'vacay.calendarColor': 'Renk',
|
||||
'vacay.noCalendars': 'Henüz tatil takvimi eklenmedi',
|
||||
'vacay.companyHolidays': 'Şirket Tatilleri',
|
||||
'vacay.companyHolidaysHint': 'Şirket çapında tatil günlerinin işaretlenmesine izin ver',
|
||||
'vacay.companyHolidaysNoDeduct': 'Şirket tatilleri tatil günlerinden sayılmaz.',
|
||||
'vacay.companyHolidaysHint':
|
||||
'Şirket çapında tatil günlerinin işaretlenmesine izin ver',
|
||||
'vacay.companyHolidaysNoDeduct':
|
||||
'Şirket tatilleri tatil günlerinden sayılmaz.',
|
||||
'vacay.weekStart': 'Hafta başlıyor',
|
||||
'vacay.weekStartHint': 'Takvim haftasının Pazartesi mi yoksa Pazar günü mü başlayacağını seçin',
|
||||
'vacay.weekStartHint':
|
||||
'Takvim haftasının Pazartesi mi yoksa Pazar günü mü başlayacağını seçin',
|
||||
'vacay.carryOver': 'Devret',
|
||||
'vacay.carryOverHint': 'Kalan tatil günlerini otomatik olarak bir sonraki yıla taşıyın',
|
||||
'vacay.carryOverHint':
|
||||
'Kalan tatil günlerini otomatik olarak bir sonraki yıla taşıyın',
|
||||
'vacay.sharing': 'Paylaşma',
|
||||
'vacay.sharingHint': 'Tatil planınızı diğer TREK kullanıcılarıyla paylaşın',
|
||||
'vacay.owner': 'Mal sahibi',
|
||||
@@ -72,7 +78,8 @@ const vacay: TranslationStrings = {
|
||||
'vacay.noData': 'Veri yok',
|
||||
'vacay.changeColor': 'Rengi değiştir',
|
||||
'vacay.inviteUser': 'Kullanıcıyı Davet Et',
|
||||
'vacay.inviteHint': 'Başka bir TREK kullanıcısını birleşik bir tatil takvimini paylaşmaya davet edin.',
|
||||
'vacay.inviteHint':
|
||||
'Başka bir TREK kullanıcısını birleşik bir tatil takvimini paylaşmaya davet edin.',
|
||||
'vacay.selectUser': 'Kullanıcı seç',
|
||||
'vacay.sendInvite': 'Davet Gönder',
|
||||
'vacay.inviteSent': 'Davet gönderildi',
|
||||
@@ -84,10 +91,15 @@ const vacay: TranslationStrings = {
|
||||
'vacay.acceptFusion': 'Kabul Et ve Sigortala',
|
||||
'vacay.inviteTitle': 'Füzyon Talebi',
|
||||
'vacay.inviteWantsToFuse': 'sizinle bir tatil takvimi paylaşmak istiyor.',
|
||||
'vacay.fuseInfo1': 'İkiniz de tüm tatil kayıtlarını tek bir paylaşılan takvimde göreceksiniz.',
|
||||
'vacay.fuseInfo2': 'Her iki taraf da birbirleri için girişler oluşturabilir ve düzenleyebilir.',
|
||||
'vacay.fuseInfo3': 'Her iki taraf da girişleri silebilir ve tatil haklarını değiştirebilir.',
|
||||
'vacay.fuseInfo4': 'Resmi tatiller ve şirket tatilleri gibi ayarlar paylaşılır.',
|
||||
'vacay.fuseInfo5': 'Birleşme her iki tarafça da herhangi bir zamanda feshedilebilir. Girişleriniz korunacaktır.',
|
||||
'vacay.fuseInfo1':
|
||||
'İkiniz de tüm tatil kayıtlarını tek bir paylaşılan takvimde göreceksiniz.',
|
||||
'vacay.fuseInfo2':
|
||||
'Her iki taraf da birbirleri için girişler oluşturabilir ve düzenleyebilir.',
|
||||
'vacay.fuseInfo3':
|
||||
'Her iki taraf da girişleri silebilir ve tatil haklarını değiştirebilir.',
|
||||
'vacay.fuseInfo4':
|
||||
'Resmi tatiller ve şirket tatilleri gibi ayarlar paylaşılır.',
|
||||
'vacay.fuseInfo5':
|
||||
'Birleşme her iki tarafça da herhangi bir zamanda feshedilebilir. Girişleriniz korunacaktır.',
|
||||
};
|
||||
export default vacay;
|
||||
|
||||
Reference in New Issue
Block a user