d1ec7367a0
Root cause: when auth.me() failed during initial navigation, the catch block
called navigate('/login') without clearing _pendingLoginRedirect. The outer
finally then fired a second concurrent navigate('/login'), which held
isNavigating=true while running. If the user submitted the login form (or
iCloud Keychain autofilled credentials) before the second navigation
completed, navigate('/', user) was silently blocked by the isNavigating guard —
login appeared to succeed but the app never advanced to the dashboard.
Fix: clear _pendingLoginRedirect in the catch block so the finally handler
does not spawn the duplicate navigation.
Also adds a GET /api/v1/version endpoint (no auth required) and shows the
version on the login page, so users can verify their PWA has received the
latest cached JS.
Resolves #68
Co-authored-by: Ulas Kalayci <ulas.kalayci@googlemail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
609 lines
30 KiB
JSON
609 lines
30 KiB
JSON
{
|
||
"common": {
|
||
"save": "Αποθήκευση",
|
||
"cancel": "Ακύρωση",
|
||
"delete": "Διαγραφή",
|
||
"edit": "Επεξεργασία",
|
||
"close": "Κλείσιμο",
|
||
"create": "Δημιουργία",
|
||
"add": "Προσθήκη",
|
||
"back": "Πίσω",
|
||
"next": "Επόμενο",
|
||
"loading": "Φόρτωση…",
|
||
"saving": "Αποθήκευση…",
|
||
"required": "Αυτό το πεδίο είναι υποχρεωτικό.",
|
||
"error": "Σφάλμα",
|
||
"allFieldsRequired": "Παρακαλώ συμπληρώστε όλα τα πεδία.",
|
||
"today": "Σήμερα",
|
||
"tomorrow": "Αύριο",
|
||
"skipToContent": "Μετάβαση στο περιεχόμενο",
|
||
"reload": "Ανανέωση",
|
||
"errorOccurred": "Κάτι πήγε στραβά.",
|
||
"unexpectedError": "Παρουσιάστηκε απρόβλεπτο σφάλμα.",
|
||
"errorGeneric": "Παρουσιάστηκε σφάλμα.",
|
||
"updateAvailable": "Διαθέσιμη ενημέρωση - ανανεώστε τη σελίδα για την τελευταία έκδοση.",
|
||
"titleRequired": "Ο τίτλος είναι υποχρεωτικός",
|
||
"nameRequired": "Το όνομα είναι υποχρεωτικό",
|
||
"contentRequired": "Το περιεχόμενο είναι υποχρεωτικό",
|
||
"all": "Όλα",
|
||
"unknownError": "Άγνωστο σφάλμα",
|
||
"confirm": "Επιβεβαίωση",
|
||
"undo": "Αναίρεση"
|
||
},
|
||
"nav": {
|
||
"dashboard": "Επισκόπηση",
|
||
"tasks": "Εργασίες",
|
||
"calendar": "Ημερολόγιο",
|
||
"meals": "Γεύματα",
|
||
"shopping": "Αγορές",
|
||
"notes": "Σημειώσεις",
|
||
"contacts": "Επαφές",
|
||
"budget": "Προϋπολογισμός",
|
||
"settings": "Ρυθμίσεις",
|
||
"main": "Κύρια πλοήγηση",
|
||
"navigation": "Πλοήγηση",
|
||
"quickActions": "Γρήγορες ενέργειες"
|
||
},
|
||
"dashboard": {
|
||
"title": "Επισκόπηση",
|
||
"greetingMorning": "Καλημέρα, {{name}}",
|
||
"greetingDay": "Καλησπέρα, {{name}}",
|
||
"greetingEvening": "Καλό βράδυ, {{name}}",
|
||
"allDone": "Όλα έτοιμα",
|
||
"noEvents": "Δεν υπάρχουν εκδηλώσεις",
|
||
"noPinnedNotes": "Δεν υπάρχουν καρφιτσωμένες σημειώσεις",
|
||
"todayMeals": "Γεύματα σήμερα",
|
||
"allLink": "Όλα",
|
||
"weekLink": "Εβδομάδα",
|
||
"urgentTasksChip": "{{count}} επείγουσα εργασία",
|
||
"urgentTasksChipPlural": "{{count}} επείγουσες εργασίες",
|
||
"eventsChip": "{{count}} εκδήλωση σήμερα",
|
||
"eventsChipPlural": "{{count}} εκδηλώσεις σήμερα",
|
||
"todayMealChip": "Σήμερα: {{title}}",
|
||
"loadError": "Η επισκόπηση δεν φορτώθηκε πλήρως.",
|
||
"weatherRefresh": "Ανανέωση καιρού",
|
||
"weatherRefreshTitle": "Ανανέωση",
|
||
"weatherUpdated": "Καιρός ενημερώθηκε",
|
||
"weatherFeelsLike": "Αίσθηση {{temp}}° · {{humidity}}% · Άνεμος {{wind}} χλμ/ώ",
|
||
"fabTaskLabel": "Προσθήκη εργασίας",
|
||
"fabCalendarLabel": "Προσθήκη εκδήλωσης",
|
||
"fabShoppingLabel": "Προσθήκη αγοράς",
|
||
"fabNoteLabel": "Προσθήκη σημείωσης",
|
||
"fabTask": "Εργασία",
|
||
"fabCalendar": "Εκδήλωση",
|
||
"fabShopping": "Αγορά",
|
||
"fabNote": "Σημείωση",
|
||
"overdue": "Εκπρόθεσμο",
|
||
"dueSoon": "Λήγει σήμερα",
|
||
"dueTomorrow": "Λήγει αύριο",
|
||
"allDay": "Όλη μέρα",
|
||
"shoppingMore": "+{{count}} ακόμα",
|
||
"weather": "Καιρός",
|
||
"customize": "Προσαρμογή",
|
||
"customizeTitle": "Προσαρμογή widgets",
|
||
"customizeReset": "Επαναφορά",
|
||
"customizeSaved": "Πίνακας αποθηκεύτηκε",
|
||
"customizeMoveUp": "Πάνω",
|
||
"customizeMoveDown": "Κάτω"
|
||
},
|
||
"tasks": {
|
||
"title": "Εργασίες",
|
||
"newTask": "Νέα εργασία",
|
||
"editTask": "Επεξεργασία εργασίας",
|
||
"emptyTitle": "Δεν υπάρχουν εργασίες - όλα έτοιμα;",
|
||
"emptyDescription": "Δημιουργήστε νέες εργασίες με το κουμπί +.",
|
||
"titleLabel": "Τίτλος *",
|
||
"titlePlaceholder": "Τι πρέπει να γίνει;",
|
||
"descriptionLabel": "Σημείωση",
|
||
"descriptionPlaceholder": "Προαιρετικές λεπτομέρειες…",
|
||
"priorityLabel": "Προτεραιότητα",
|
||
"categoryLabel": "Κατηγορία",
|
||
"dueDateLabel": "Ημερομηνία λήξης",
|
||
"dueTimeLabel": "Ώρα",
|
||
"assignedLabel": "Ανατεθειμένο σε",
|
||
"assignedNobody": "- Κανέναν -",
|
||
"statusLabel": "Κατάσταση",
|
||
"priorityUrgent": "Επείγον",
|
||
"priorityHigh": "Υψηλή",
|
||
"priorityMedium": "Μέτρια",
|
||
"priorityLow": "Χαμηλή",
|
||
"priorityNone": "Καμία",
|
||
"statusOpen": "Ανοιχτό",
|
||
"statusInProgress": "Σε εξέλιξη",
|
||
"statusDone": "Ολοκληρώθηκε",
|
||
"categoryHousehold": "Οικιακά",
|
||
"categorySchool": "Σχολείο",
|
||
"categoryShopping": "Αγορές",
|
||
"categoryRepair": "Επισκευή",
|
||
"categoryHealth": "Υγεία",
|
||
"categoryFinance": "Οικονομικά",
|
||
"categoryLeisure": "Ελεύθερος χρόνος",
|
||
"categoryMisc": "Διάφορα",
|
||
"overdue": "Εκπρόθεσμο",
|
||
"overdueDay": "{{count}}μ εκπρόθεσμο",
|
||
"dueToday": "Λήγει σήμερα",
|
||
"dueTomorrow": "Λήγει αύριο",
|
||
"groupOverdue": "Εκπρόθεσμο",
|
||
"groupToday": "Σήμερα",
|
||
"groupThisWeek": "Αυτή την εβδομάδα",
|
||
"groupNextWeek": "Επόμενη εβδομάδα",
|
||
"groupLater": "Αργότερα",
|
||
"groupNoDate": "Χωρίς ημερομηνία",
|
||
"markDone": "Επισήμανση {{title}} ως ολοκληρωμένο",
|
||
"markOpen": "Επισήμανση {{title}} ως ανοιχτό",
|
||
"editButton": "Επεξεργασία εργασίας",
|
||
"swipeOpen": "Επαναφορά",
|
||
"swipeDone": "Ολοκληρώθηκε",
|
||
"swipeEdit": "Επεξεργασία",
|
||
"subtaskAdd": "+ Προσθήκη υποεργασίας",
|
||
"subtaskToggle": "Εμφάνιση υποεργασιών",
|
||
"subtaskMarkDone": "Επισήμανση {{title}} ως ολοκληρωμένο",
|
||
"deleteConfirm": "Διαγραφή εργασίας και όλων των υποεργασιών;",
|
||
"savedToast": "Η εργασία αποθηκεύτηκε.",
|
||
"createdToast": "Η εργασία δημιουργήθηκε.",
|
||
"deletedToast": "Η εργασία διαγράφηκε.",
|
||
"loadError": "Δεν ήταν δυνατή η φόρτωση της εργασίας.",
|
||
"subtaskPrompt": "Υποεργασία:",
|
||
"kanbanOpen": "Ανοιχτό",
|
||
"kanbanInProgress": "Σε εξέλιξη",
|
||
"kanbanDone": "Ολοκληρώθηκε",
|
||
"kanbanMoveToInProgress": "Μετακίνηση σε εξέλιξη",
|
||
"kanbanMoveToDone": "Επισήμανση ως ολοκληρωμένο",
|
||
"kanbanMoveToOpen": "Επαναφορά",
|
||
"recurring": "Επαναλαμβανόμενο",
|
||
"listView": "Προβολή λίστας",
|
||
"kanbanView": "Προβολή Kanban"
|
||
},
|
||
"shopping": {
|
||
"title": "Αγορές",
|
||
"noLists": "Δεν υπάρχουν λίστες",
|
||
"noListsDescription": "Δημιουργήστε μια λίστα με το κουμπί +.",
|
||
"emptyList": "Η λίστα είναι κενή",
|
||
"emptyListDescription": "Προσθέστε είδη μέσω του πεδίου εισαγωγής πάνω.",
|
||
"newListPrompt": "Όνομα νέας λίστας:",
|
||
"newListButton": "Δημιουργία νέας λίστας",
|
||
"renameListPrompt": "Νέο όνομα λίστας:",
|
||
"deleteListConfirm": "Διαγραφή λίστας «{{name}}» και όλων των ειδών;",
|
||
"deletedListToast": "Η λίστα διαγράφηκε.",
|
||
"itemDeletedToast": "Το «{{name}}» αφαιρέθηκε.",
|
||
"itemsRemovedToast": "{{count}} είδη αφαιρέθηκαν.",
|
||
"clearChecked": "Αφαίρεση επιλεγμένων ({{count}})",
|
||
"itemNamePlaceholder": "Προσθήκη είδους…",
|
||
"itemQtyPlaceholder": "Ποσότητα",
|
||
"itemNameLabel": "Όνομα είδους",
|
||
"itemQtyLabel": "Ποσότητα",
|
||
"categoryLabel": "Κατηγορία",
|
||
"addItemLabel": "Προσθήκη είδους",
|
||
"renameListLabel": "Μετονομασία λίστας",
|
||
"deleteListLabel": "Διαγραφή λίστας",
|
||
"swipeBack": "Αναίρεση",
|
||
"swipeCheck": "Επισήμανση",
|
||
"swipeDelete": "Διαγραφή",
|
||
"markDoneLabel": "Επισήμανση {{name}}",
|
||
"markUndoneLabel": "Αφαίρεση επισήμανσης {{name}}",
|
||
"deleteItemLabel": "Διαγραφή {{name}}",
|
||
"listsLoadError": "Δεν ήταν δυνατή η φόρτωση λιστών.",
|
||
"itemsLoadError": "Δεν ήταν δυνατή η φόρτωση ειδών.",
|
||
"catFruitVeg": "Φρούτα και λαχανικά",
|
||
"catBakery": "Αρτοποιία",
|
||
"catDairy": "Γαλακτοκομικά",
|
||
"catMeatFish": "Κρέας και ψάρι",
|
||
"catFrozen": "Κατεψυγμένα",
|
||
"catDrinks": "Ποτά",
|
||
"catHousehold": "Οικιακά",
|
||
"catDrugstore": "Φαρμακείο",
|
||
"catMisc": "Διάφορα"
|
||
},
|
||
"meals": {
|
||
"title": "Πρόγραμμα γευμάτων",
|
||
"noMealPlanned": "Δεν έχει προγραμματιστεί γεύμα",
|
||
"addMeal": "Προσθήκη {{type}}",
|
||
"editMeal": "Επεξεργασία γεύματος",
|
||
"addMealTitle": "Προσθήκη γεύματος",
|
||
"deleteMeal": "Διαγραφή γεύματος",
|
||
"transferToShoppingList": "Προσθήκη υλικών στη λίστα αγορών",
|
||
"today": "Σήμερα",
|
||
"prevWeek": "Προηγούμενη εβδομάδα",
|
||
"nextWeek": "Επόμενη εβδομάδα",
|
||
"loadError": "Δεν ήταν δυνατή η φόρτωση του προγράμματος γευμάτων.",
|
||
"typeBreakfast": "Πρωινό",
|
||
"typeLunch": "Μεσημεριανό",
|
||
"typeDinner": "Βραδινό",
|
||
"typeSnack": "Σνακ",
|
||
"dayMo": "Δευ",
|
||
"dayDi": "Τρί",
|
||
"dayMi": "Τετ",
|
||
"dayDo": "Πέμ",
|
||
"dayFr": "Παρ",
|
||
"daySa": "Σάβ",
|
||
"daySo": "Κυρ",
|
||
"dateLabel": "Ημερομηνία",
|
||
"mealTypeLabel": "Γεύμα",
|
||
"titleLabel": "Τίτλος *",
|
||
"titlePlaceholder": "π.χ. Μακαρονάδα μπολονέζ",
|
||
"notesLabel": "Σημειώσεις",
|
||
"notesPlaceholder": "Προαιρετικό…",
|
||
"ingredientsLabel": "Υλικά",
|
||
"addIngredient": "Προσθήκη υλικού",
|
||
"ingredientNamePlaceholder": "Υλικό",
|
||
"ingredientQtyPlaceholder": "Ποσότητα",
|
||
"ingredientCategoryLabel": "Κατηγορία",
|
||
"ingredientCategoryDefault": "Διάφορα",
|
||
"removeIngredient": "Αφαίρεση υλικού",
|
||
"transferLabel": "Μεταφορά υλικών στη λίστα αγορών",
|
||
"transferNow": "Μεταφορά τώρα",
|
||
"noShoppingLists": "Δεν υπάρχουν λίστες αγορών",
|
||
"transferSuccess": "{{count}} υλικό μεταφέρθηκε",
|
||
"transferSuccessPlural": "{{count}} υλικά μεταφέρθηκαν",
|
||
"transferAlreadyDone": "Όλα τα υλικά έχουν ήδη μεταφερθεί",
|
||
"ingredientCount": "{{count}} υλικό",
|
||
"ingredientCountPlural": "{{count}} υλικά",
|
||
"titleRequired": "Ο τίτλος είναι υποχρεωτικός",
|
||
"loadingIndicator": "Φόρτωση…",
|
||
"recipeUrlLabel": "Σύνδεσμος συνταγής (προαιρετικό)",
|
||
"recipeUrlPlaceholder": "https://…",
|
||
"openRecipe": "Άνοιγμα συνταγής"
|
||
},
|
||
"calendar": {
|
||
"title": "Ημερολόγιο",
|
||
"newEvent": "Νέα εκδήλωση",
|
||
"editEvent": "Επεξεργασία εκδήλωσης",
|
||
"addEvent": "Προσθήκη εκδήλωσης",
|
||
"deleteEvent": "Διαγραφή εκδήλωσης",
|
||
"noEvents": "Δεν υπάρχουν εκδηλώσεις στην επιλεγμένη περίοδο.",
|
||
"today": "Σήμερα",
|
||
"back": "Πίσω",
|
||
"forward": "Μπροστά",
|
||
"viewMonth": "Μήνας",
|
||
"viewWeek": "Εβδομάδα",
|
||
"viewDay": "Ημέρα",
|
||
"viewAgenda": "Ατζέντα",
|
||
"allDay": "Όλη μέρα",
|
||
"allDayShort": "όλη μέρα",
|
||
"moreEvents": "+{{count}} ακόμα",
|
||
"weekNumberLabel": "Εβδ{{week}} · {{month}} {{year}}",
|
||
"agendaFrom": "Από {{date}}",
|
||
"titleLabel": "Τίτλος *",
|
||
"titlePlaceholder": "π.χ. Οδοντίατρος",
|
||
"allDayToggle": "Όλη μέρα",
|
||
"startDateLabel": "Ημερομηνία έναρξης",
|
||
"startTimeLabel": "Ώρα έναρξης",
|
||
"endDateLabel": "Ημερομηνία λήξης",
|
||
"endTimeLabel": "Ώρα λήξης",
|
||
"fromLabel": "Από",
|
||
"toLabel": "Έως",
|
||
"locationLabel": "Τοποθεσία",
|
||
"locationPlaceholder": "Προαιρετικό",
|
||
"assignedLabel": "Ανατεθειμένο σε",
|
||
"assignedNobody": "- Κανέναν -",
|
||
"colorLabel": "Χρώμα {{color}}",
|
||
"descriptionLabel": "Περιγραφή",
|
||
"descriptionPlaceholder": "Προαιρετικό…",
|
||
"popupEdit": "Επεξεργασία",
|
||
"deleteConfirm": "Διαγραφή «{{title}}»;",
|
||
"createdToast": "Η εκδήλωση δημιουργήθηκε",
|
||
"savedToast": "Η εκδήλωση αποθηκεύτηκε",
|
||
"deletedToast": "Η εκδήλωση διαγράφηκε",
|
||
"loadError": "Δεν ήταν δυνατή η φόρτωση εκδηλώσεων.",
|
||
"saveError": "Σφάλμα αποθήκευσης",
|
||
"deleteError": "Σφάλμα διαγραφής",
|
||
"titleRequired": "Ο τίτλος είναι υποχρεωτικός",
|
||
"monthJanuary": "Ιανουάριος",
|
||
"monthFebruary": "Φεβρουάριος",
|
||
"monthMarch": "Μάρτιος",
|
||
"monthApril": "Απρίλιος",
|
||
"monthMay": "Μάιος",
|
||
"monthJune": "Ιούνιος",
|
||
"monthJuly": "Ιούλιος",
|
||
"monthAugust": "Αύγουστος",
|
||
"monthSeptember": "Σεπτέμβριος",
|
||
"monthOctober": "Οκτώβριος",
|
||
"monthNovember": "Νοέμβριος",
|
||
"monthDecember": "Δεκέμβριος",
|
||
"dayShortSunday": "Κυρ",
|
||
"dayShortMonday": "Δευ",
|
||
"dayShortTuesday": "Τρί",
|
||
"dayShortWednesday": "Τετ",
|
||
"dayShortThursday": "Πέμ",
|
||
"dayShortFriday": "Παρ",
|
||
"dayShortSaturday": "Σάβ",
|
||
"dayLongSunday": "Κυριακή",
|
||
"dayLongMonday": "Δευτέρα",
|
||
"dayLongTuesday": "Τρίτη",
|
||
"dayLongWednesday": "Τετάρτη",
|
||
"dayLongThursday": "Πέμπτη",
|
||
"dayLongFriday": "Παρασκευή",
|
||
"dayLongSaturday": "Σάββατο",
|
||
"timeSuffix": ""
|
||
},
|
||
"notes": {
|
||
"title": "Σημειώσεις",
|
||
"newNote": "Νέα σημείωση",
|
||
"editNote": "Επεξεργασία σημείωσης",
|
||
"addNoteLabel": "Νέα σημείωση",
|
||
"searchPlaceholder": "Αναζήτηση σημειώσεων…",
|
||
"emptyTitle": "Δεν υπάρχουν σημειώσεις",
|
||
"emptyDescription": "Δημιουργήστε νέα σημείωση με το κουμπί +.",
|
||
"noResultsTitle": "Δεν βρέθηκαν αποτελέσματα",
|
||
"noResultsDescription": "Καμία σημείωση δεν περιέχει «{{query}}».",
|
||
"titleLabel": "Τίτλος (προαιρετικό)",
|
||
"titlePlaceholder": "Χωρίς τίτλο",
|
||
"contentLabel": "Περιεχόμενο",
|
||
"contentMarkdownHint": "(Υποστηρίζεται μορφοποίηση Markdown)",
|
||
"contentPlaceholder": "Εισαγωγή σημείωσης…",
|
||
"colorLabel": "Χρώμα",
|
||
"pinnedLabel": "Καρφίτσωμα (εμφανίζεται στην επισκόπηση)",
|
||
"pinAction": "Καρφίτσωμα",
|
||
"unpinAction": "Αποκαρφίτσωμα",
|
||
"deleteLabel": "Διαγραφή σημείωσης",
|
||
"deleteConfirm": "Διαγραφή αυτής της σημείωσης;",
|
||
"createdToast": "Η σημείωση δημιουργήθηκε",
|
||
"savedToast": "Η σημείωση αποθηκεύτηκε",
|
||
"deletedToast": "Η σημείωση διαγράφηκε",
|
||
"loadError": "Δεν ήταν δυνατή η φόρτωση σημειώσεων.",
|
||
"formatBold": "Έντονο (Ctrl+B)",
|
||
"formatItalic": "Πλάγιο (Ctrl+I)",
|
||
"formatUnderline": "Υπογράμμιση (Ctrl+U)",
|
||
"formatStrikethrough": "Διακριτική γραμμή",
|
||
"formatHeading": "Επικεφαλίδα",
|
||
"formatList": "Λίστα κουκκίδων",
|
||
"formatOrderedList": "Αριθμημένη λίστα",
|
||
"formatChecklist": "Λίστα ελέγχου",
|
||
"formatLink": "Σύνδεσμος",
|
||
"formatCode": "Κώδικας",
|
||
"formatQuote": "Παράθεση",
|
||
"formatDivider": "Διαχωριστής"
|
||
},
|
||
"contacts": {
|
||
"title": "Επαφές",
|
||
"newContact": "Νέα επαφή",
|
||
"editContact": "Επεξεργασία επαφής",
|
||
"addButton": "Νέο",
|
||
"newContactLabel": "Νέα επαφή",
|
||
"searchPlaceholder": "Αναζήτηση με όνομα, τηλέφωνο ή email…",
|
||
"importButton": "Εισαγωγή",
|
||
"importLabel": "Εισαγωγή επαφής από vCard",
|
||
"importTooltip": "Εισαγωγή vCard",
|
||
"emptyTitle": "Δεν υπάρχουν επαφές",
|
||
"emptyDescription": "Προσθέστε νέες επαφές με το κουμπί +.",
|
||
"filterAll": "Όλες",
|
||
"nameLabel": "Όνομα *",
|
||
"namePlaceholder": "Πλήρες όνομα",
|
||
"categoryLabel": "Κατηγορία",
|
||
"phoneLabel": "Τηλέφωνο",
|
||
"phonePlaceholder": "+30 …",
|
||
"emailLabel": "Email",
|
||
"emailPlaceholder": "ονομα@παραδειγμα.gr",
|
||
"addressLabel": "Διεύθυνση",
|
||
"addressPlaceholder": "Οδός, ΤΚ Πόλη",
|
||
"notesLabel": "Σημειώσεις",
|
||
"notesPlaceholder": "Προαιρετικό…",
|
||
"callLabel": "Κλήση",
|
||
"emailActionLabel": "Email",
|
||
"mapsLabel": "Άνοιγμα στους Χάρτες",
|
||
"exportLabel": "Εξαγωγή ως vCard",
|
||
"exportTooltip": "Εξαγωγή vCard",
|
||
"deleteLabel": "Διαγραφή επαφής",
|
||
"deleteConfirm": "Διαγραφή αυτής της επαφής;",
|
||
"deletePersonConfirm": "Διαγραφή «{{name}}»;",
|
||
"savedToast": "Η επαφή αποθηκεύτηκε",
|
||
"updatedToast": "Η επαφή ενημερώθηκε",
|
||
"deletedToast": "Η επαφή διαγράφηκε",
|
||
"importedToast": "{{name}} εισήχθη.",
|
||
"importError": "Αποτυχία εισαγωγής: {{error}}",
|
||
"vcardNoName": "Η vCard δεν περιέχει όνομα.",
|
||
"catDoctor": "Γιατρός",
|
||
"catSchool": "Σχολείο/Παιδικός σταθμός",
|
||
"catAuthority": "Δημόσια υπηρεσία",
|
||
"catInsurance": "Ασφάλεια",
|
||
"catCraftsman": "Τεχνίτης",
|
||
"catEmergency": "Έκτακτη ανάγκη",
|
||
"catMisc": "Διάφορα",
|
||
"categoryDoctor": "Γιατρός",
|
||
"categorySchool": "Σχολείο/Παιδικός σταθμός",
|
||
"categoryAuthority": "Δημόσια υπηρεσία",
|
||
"categoryInsurance": "Ασφάλεια",
|
||
"categoryCraftsman": "Τεχνίτης",
|
||
"categoryEmergency": "Έκτακτη ανάγκη",
|
||
"categoryOther": "Άλλο"
|
||
},
|
||
"budget": {
|
||
"title": "Προϋπολογισμός",
|
||
"newEntry": "Νέα εγγραφή",
|
||
"editEntry": "Επεξεργασία εγγραφής",
|
||
"addEntryLabel": "Προσθήκη εγγραφής",
|
||
"newEntryFabLabel": "Νέα εγγραφή",
|
||
"currentMonth": "Τρέχων",
|
||
"prevMonth": "Προηγούμενος μήνας",
|
||
"nextMonth": "Επόμενος μήνας",
|
||
"income": "Έσοδα",
|
||
"expenses": "Έξοδα",
|
||
"balance": "Υπόλοιπο",
|
||
"byCategory": "Ανά κατηγορία",
|
||
"transactions": "Συναλλαγές",
|
||
"emptyTitle": "Δεν υπάρχουν εγγραφές αυτόν τον μήνα",
|
||
"emptyDescription": "Προσθέστε εγγραφές προϋπολογισμού με το κουμπί +.",
|
||
"csvExport": "CSV",
|
||
"typeExpense": "Έξοδο",
|
||
"typeIncome": "Έσοδο",
|
||
"titleLabel": "Τίτλος *",
|
||
"titlePlaceholder": "π.χ. Σούπερ μάρκετ",
|
||
"amountLabel": "Ποσό *",
|
||
"amountPlaceholder": "0,00",
|
||
"categoryLabel": "Κατηγορία",
|
||
"dateLabel": "Ημερομηνία *",
|
||
"recurringLabel": "Επαναλαμβανόμενο",
|
||
"deleteLabel": "Διαγραφή εγγραφής",
|
||
"deleteConfirm": "Διαγραφή αυτής της εγγραφής;",
|
||
"deletePersonConfirm": "Διαγραφή «{{title}}»;",
|
||
"addedToast": "Η εγγραφή προστέθηκε",
|
||
"savedToast": "Η εγγραφή αποθηκεύτηκε",
|
||
"deletedToast": "Η εγγραφή διαγράφηκε",
|
||
"loadError": "Δεν ήταν δυνατή η φόρτωση του προϋπολογισμού.",
|
||
"trendNeutral": "- ίδιο με {{month}}",
|
||
"validAmountRequired": "Παρακαλώ εισαγάγετε έγκυρο ποσό",
|
||
"dateRequired": "Η ημερομηνία είναι υποχρεωτική",
|
||
"catFood": "Τρόφιμα",
|
||
"catRent": "Ενοίκιο",
|
||
"catInsurance": "Ασφάλεια",
|
||
"catMobility": "Μεταφορές",
|
||
"catLeisure": "Ελεύθερος χρόνος",
|
||
"catClothing": "Ρουχισμός",
|
||
"catHealth": "Υγεία",
|
||
"catEducation": "Εκπαίδευση",
|
||
"catMisc": "Διάφορα",
|
||
"catEarnedIncome": "Εισόδημα από εργασία",
|
||
"catInvestmentIncome": "Επενδυτικό εισόδημα",
|
||
"catTransferGiftIncome": "Μεταφορές και δώρα",
|
||
"catGovernmentBenefits": "Κοινωνικές παροχές",
|
||
"catOtherIncome": "Άλλο εισόδημα",
|
||
"loadingIndicator": "Φόρτωση…"
|
||
},
|
||
"settings": {
|
||
"title": "Ρυθμίσεις",
|
||
"tabGeneral": "Γενικά",
|
||
"tabMeals": "Γεύματα",
|
||
"tabBudget": "Προϋπολογισμός",
|
||
"tabShopping": "Αγορές",
|
||
"tabCalendar": "Ημερολόγιο",
|
||
"tabAccount": "Λογαριασμός",
|
||
"tabsAriaLabel": "Τμήματα ρυθμίσεων",
|
||
"sectionDesign": "Εμφάνιση",
|
||
"sectionShopping": "Αγορές",
|
||
"shoppingCategoriesLabel": "Κατηγορίες αγορών",
|
||
"shoppingCategoriesHint": "Προσθέστε, μετονομάστε, διαγράψτε ή ταξινομήστε κατηγορίες.",
|
||
"shoppingCategoryPlaceholder": "Νέα κατηγορία…",
|
||
"shoppingCategoryRenameHint": "Κάντε κλικ για μετονομασία",
|
||
"shoppingCategoryRenamePrompt": "Νέο όνομα κατηγορίας:",
|
||
"shoppingCategoryMoveUp": "Μετακίνηση κατηγορίας πάνω",
|
||
"shoppingCategoryMoveDown": "Μετακίνηση κατηγορίας κάτω",
|
||
"shoppingCategoryDelete": "Διαγραφή κατηγορίας",
|
||
"shoppingCategoryDeleteConfirm": "Διαγραφή κατηγορίας «{{name}}»; Τα υπάρχοντα είδη θα μεταφερθούν στην επόμενη κατηγορία.",
|
||
"shoppingCategoryAdded": "Η κατηγορία προστέθηκε.",
|
||
"shoppingCategoryRenamed": "Η κατηγορία μετονομάστηκε.",
|
||
"shoppingCategoryDeleted": "Η κατηγορία διαγράφηκε.",
|
||
"sectionAccount": "Ο λογαριασμός μου",
|
||
"sectionCalendarSync": "Συγχρονισμός ημερολογίου",
|
||
"sectionFamily": "Μέλη οικογένειας",
|
||
"cardAppearance": "Εμφάνιση",
|
||
"themeSystem": "Σύστημα",
|
||
"themeSysLabel": "Χρήση ρύθμισης συστήματος",
|
||
"themeLight": "Ανοιχτό",
|
||
"themeLightLabel": "Ανοιχτό θέμα",
|
||
"themeDark": "Σκούρο",
|
||
"themeDarkLabel": "Σκούρο θέμα",
|
||
"changePassword": "Αλλαγή κωδικού",
|
||
"currentPasswordLabel": "Τρέχων κωδικός",
|
||
"newPasswordLabel": "Νέος κωδικός",
|
||
"confirmPasswordLabel": "Επιβεβαίωση νέου κωδικού",
|
||
"savePassword": "Αποθήκευση κωδικού",
|
||
"passwordMismatch": "Οι κωδικοί δεν ταιριάζουν.",
|
||
"passwordSavedToast": "Ο κωδικός άλλαξε επιτυχώς.",
|
||
"googleCalendar": "Google Calendar",
|
||
"appleCalendar": "Apple Calendar (iCloud)",
|
||
"syncNow": "Συγχρονισμός τώρα",
|
||
"disconnect": "Αποσύνδεση",
|
||
"connectGoogle": "Σύνδεση με Google",
|
||
"connected": "Συνδεδεμένο",
|
||
"connectedLastSync": "Συνδεδεμένο · Τελευταίο: {{date}}",
|
||
"notConnected": "Μη συνδεδεμένο",
|
||
"notConfigured": "Μη ρυθμισμένο (λείπουν μεταβλητές .env)",
|
||
"configured": "Ρυθμισμένο (μέσω .env)",
|
||
"configuredLastSync": "Ρυθμισμένο (μέσω .env) · Τελευταίο: {{date}}",
|
||
"syncSuccess": "{{provider}} συγχρονίστηκε.",
|
||
"disconnectedToast": "{{provider}} αποσυνδέθηκε.",
|
||
"googleOnlyAdmin": "Μόνο ο διαχειριστής μπορεί να συνδέσει το Google Calendar.",
|
||
"appleOnlyAdmin": "Μόνο ο διαχειριστής μπορεί να συνδέσει το Apple Calendar.",
|
||
"caldavUrlLabel": "URL διακομιστή CalDAV",
|
||
"caldavUrlPlaceholder": "https://caldav.icloud.com",
|
||
"appleIdLabel": "Apple ID (email)",
|
||
"applePasswordLabel": "Κωδικός για εφαρμογή",
|
||
"applePasswordHint": "Δημιουργήστε κωδικό στο <strong>appleid.apple.com → Ασφάλεια</strong>.",
|
||
"appleConnectBtn": "Σύνδεση και δοκιμή",
|
||
"appleConnecting": "Σύνδεση…",
|
||
"appleConnectedToast": "Το Apple Calendar συνδέθηκε.",
|
||
"syncSuccessGoogle": "Ο συγχρονισμός ημερολογίου με Google συνδέθηκε επιτυχώς.",
|
||
"syncSuccessApple": "Ο συγχρονισμός ημερολογίου με Apple συνδέθηκε επιτυχώς.",
|
||
"syncErrorGoogle": "Η σύνδεση με Google απέτυχε. Δοκιμάστε ξανά.",
|
||
"syncErrorApple": "Η σύνδεση με Apple απέτυχε. Δοκιμάστε ξανά.",
|
||
"addMember": "+ Προσθήκη μέλους",
|
||
"newMemberTitle": "Νέο μέλος οικογένειας",
|
||
"usernameLabel": "Όνομα χρήστη",
|
||
"displayNameLabel": "Εμφανιζόμενο όνομα",
|
||
"memberPasswordLabel": "Κωδικός",
|
||
"colorLabel": "Χρώμα",
|
||
"roleLabel": "Ρόλος",
|
||
"roleMember": "Μέλος",
|
||
"roleAdmin": "Διαχειριστής",
|
||
"createMember": "Δημιουργία",
|
||
"cancelAddMember": "Ακύρωση",
|
||
"memberAddedToast": "{{name}} προστέθηκε.",
|
||
"deleteMemberConfirm": "Διαγραφή {{name}};",
|
||
"memberDeletedToast": "{{name}} διαγράφηκε.",
|
||
"deleteMemberLabel": "Διαγραφή",
|
||
"logout": "Αποσύνδεση",
|
||
"synchronizing": "Συγχρονισμός…",
|
||
"googleDisconnectConfirm": "Αποσύνδεση Google Calendar;",
|
||
"appleDisconnectConfirm": "Αποσύνδεση Apple Calendar;",
|
||
"localeSystem": "Σύστημα",
|
||
"localeLabel": "Γλώσσα",
|
||
"languageTitle": "Γλώσσα",
|
||
"sectionMeals": "Πρόγραμμα γευμάτων",
|
||
"mealTypesLabel": "Ορατά γεύματα",
|
||
"mealTypesHint": "Στο πρόγραμμα γευμάτων εμφανίζονται μόνο οι επιλεγμένοι τύποι.",
|
||
"mealTypesSaved": "Οι ρυθμίσεις προγράμματος γευμάτων αποθηκεύτηκαν.",
|
||
"mealTypesMinOne": "Πρέπει να είναι ενεργός τουλάχιστον ένας τύπος γεύματος.",
|
||
"sectionBudget": "Προϋπολογισμός",
|
||
"currencyLabel": "Νόμισμα",
|
||
"currencyHint": "Ορίζει το νόμισμα για ολόκληρη την ενότητα προϋπολογισμού.",
|
||
"currencySaved": "Το νόμισμα αποθηκεύτηκε."
|
||
},
|
||
"login": {
|
||
"tagline": "Οικογενειακός προγραμματισμός. Ασφαλής. Φιλικός προς την ιδιωτικότητα. Ανοιχτός κώδικας.",
|
||
"usernameLabel": "Όνομα χρήστη",
|
||
"usernamePlaceholder": "χρήστης",
|
||
"passwordLabel": "Κωδικός",
|
||
"passwordPlaceholder": "••••••••",
|
||
"loginButton": "Σύνδεση",
|
||
"loggingIn": "Σύνδεση…",
|
||
"tooManyAttempts": "Πολλές προσπάθειες. Παρακαλώ περιμένετε λίγο.",
|
||
"invalidCredentials": "Λανθασμένα στοιχεία σύνδεσης.",
|
||
"version": "v{{version}}"
|
||
},
|
||
"install": {
|
||
"title": "Εγκατάσταση Oikos",
|
||
"subtitle": "Προσθήκη στην αρχική οθόνη",
|
||
"iosTip1": "Πατήστε ",
|
||
"iosTip2": " → «Προσθήκη στην Αρχική»",
|
||
"installButton": "Εγκατάσταση",
|
||
"dismissLabel": "Κλείσιμο"
|
||
},
|
||
"modal": {
|
||
"closeLabel": "Κλείσιμο",
|
||
"overlayLabel": "Φόντο αναδυόμενου παραθύρου"
|
||
},
|
||
"rrule": {
|
||
"freqNone": "Χωρίς επανάληψη",
|
||
"freqDaily": "Ημερησίως",
|
||
"freqWeekly": "Εβδομαδιαίως",
|
||
"freqMonthly": "Μηνιαίως",
|
||
"dayMo": "Δε",
|
||
"dayTu": "Τρ",
|
||
"dayWe": "Τε",
|
||
"dayTh": "Πε",
|
||
"dayFr": "Πα",
|
||
"daySa": "Σα",
|
||
"daySu": "Κυ",
|
||
"labelRepeat": "Επανάληψη",
|
||
"labelEvery": "Κάθε",
|
||
"labelOnDays": "Αυτές τις ημέρες",
|
||
"labelUntil": "Λήγει (προαιρετικό)",
|
||
"unitDay": "ημέρα",
|
||
"unitDays": "ημέρες",
|
||
"unitWeek": "εβδομάδα",
|
||
"unitWeeks": "εβδομάδες",
|
||
"unitMonth": "μήνα",
|
||
"unitMonths": "μήνες"
|
||
}
|
||
}
|