mirror of
https://github.com/dz0ny/meshcore-sar.git
synced 2026-08-13 17:30:28 +00:00
feat: UX polish, localization, advert relocation, and map filter fixes
- i18n: translate connection screen + chat tab keys into 13 locales; add "Send my contact" (advert) strings in all locales - feat: move self-advert from home header into composer "+" action menu (new lib/utils/advert_helper.dart, always shows Flood/Direct sheet) - fix: hide-repeaters map toggle was bypassed in simple mode - fix: simple mode map now shows only favourite chat contacts - fix: wrap ListTiles in Material (contact_tile secondary actions, inferred contact group card) to satisfy Flutter ink assertions - device-authoritative contact/channel sync and UX review fixes Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -2400,7 +2400,7 @@
|
||||
"offZeroSeconds": "Ανενεργό (0 δ)",
|
||||
"offlineMaps": "Χάρτες εκτός σύνδεσης",
|
||||
"older": "Παλαιότερο",
|
||||
"oneByteMode0": "1 byte (mode 0)",
|
||||
"oneByteMode0": "1 byte (λειτουργία 0)",
|
||||
"oneHour": "1 ώρα",
|
||||
"oneMinute": "1 λεπτό",
|
||||
"openPacketLogs": "Άνοιγμα αρχείων πακέτων",
|
||||
@@ -2447,9 +2447,9 @@
|
||||
"themeLanguageAndDisplayPreferences": "Θέμα, γλώσσα και προτιμήσεις εμφάνισης",
|
||||
"thirtyMinutes": "30 λεπτά",
|
||||
"thirtySeconds": "30 δευτερόλεπτα",
|
||||
"threeBytesMode2": "3 bytes (mode 2)",
|
||||
"threeBytesMode2": "3 bytes (λειτουργία 2)",
|
||||
"trafficStatsMessageHistoryAndDeveloperTools": "Στατιστικά κίνησης, ιστορικό μηνυμάτων και εργαλεία προγραμματιστή",
|
||||
"twoBytesMode1": "2 bytes (mode 1)",
|
||||
"twoBytesMode1": "2 bytes (λειτουργία 1)",
|
||||
"twoMinutes": "2 λεπτά",
|
||||
"undo": "Αναίρεση",
|
||||
"updated": "Ενημερώθηκε",
|
||||
@@ -2468,5 +2468,125 @@
|
||||
"enterRegionName": "Όνομα περιοχής (π.χ. auckland)",
|
||||
"noRegionsFound": "Δεν βρέθηκαν περιοχές σε αυτόν τον αναμεταδότη.",
|
||||
"regionScopeSet": "Εύρος περιοχής ορίστηκε σε {name}",
|
||||
"regionScopeCleared": "Εύρος περιοχής εκκαθαρίστηκε"
|
||||
"regionScopeCleared": "Εύρος περιοχής εκκαθαρίστηκε",
|
||||
"simpleMode": "Απλή λειτουργία",
|
||||
"simpleModeDescription": "Μόνο συνομιλία και χάρτης με αγαπημένες επαφές",
|
||||
"simpleModeRequiresLockedDestination": "Ενεργοποιήστε πρώτα το «Κλείδωμα προορισμού» με ένα κανάλι για να χρησιμοποιήσετε την Απλή λειτουργία",
|
||||
"noFavouriteContacts": "Καμία αγαπημένη επαφή",
|
||||
"selectDestinationFirst": "Επιλέξτε πρώτα κανάλι, επαφή ή δωμάτιο",
|
||||
"recipientNoLongerAvailable": "Ο παραλήπτης δεν είναι πλέον διαθέσιμος",
|
||||
"failedToSendMessage": "Αποτυχία αποστολής: {error}",
|
||||
"tictactoeDirectOnly": "Η τρίλιζα λειτουργεί μόνο σε άμεσα μηνύματα. Επιλέξτε πρώτα μια επαφή.",
|
||||
"deviceKeyUnavailable": "Το κλειδί της συσκευής δεν είναι διαθέσιμο",
|
||||
"imageCompressionFailed": "Αποτυχία συμπίεσης εικόνας",
|
||||
"imageFragmentationFailed": "Αποτυχία κατακερματισμού εικόνας",
|
||||
"failedToAnnounceImage": "Αποτυχία ανακοίνωσης εικόνας",
|
||||
"noRecipientSelected": "Δεν επιλέχθηκε παραλήπτης",
|
||||
"imageSendFailed": "Αποτυχία αποστολής εικόνας",
|
||||
"microphonePermissionRequiredForVoice": "Απαιτείται άδεια μικροφώνου για φωνητικά μηνύματα",
|
||||
"recordingDiscarded": "Η ηχογράφηση απορρίφθηκε",
|
||||
"publicChannelMediaWarning": "Πρόκειται να στείλετε {mediaType} στο δημόσιο κανάλι. Δεν συνιστάται, καθώς μπορεί να το λάβουν όλοι στο δίκτυο mesh. Επιλέξτε ιδιωτικό ή επισημασμένο κανάλι, εκτός αν αυτό θέλετε.",
|
||||
"selectPrivateChannelToShareLocation": "Επιλέξτε ιδιωτικό κανάλι για να μοιραστείτε την τοποθεσία σας.",
|
||||
"stopSharingMyLocation": "Διακοπή κοινοποίησης της τοποθεσίας μου",
|
||||
"shareMyLocation": "Κοινοποίηση της τοποθεσίας μου",
|
||||
"stopRecording": "Διακοπή ηχογράφησης",
|
||||
"recordVoice": "Ηχογράφηση φωνητικού μηνύματος",
|
||||
"moreActions": "Περισσότερες ενέργειες",
|
||||
"noMessagesInFilter": "Δεν υπάρχουν μηνύματα σε αυτό το φίλτρο",
|
||||
"noMatchesInFilter": "Δεν υπάρχουν αποτελέσματα σε αυτό το φίλτρο",
|
||||
"syncFailed": "Αποτυχία συγχρονισμού: {error}",
|
||||
"invalidLink": "Μη έγκυρος σύνδεσμος",
|
||||
"cannotOpenLink": "Δεν είναι δυνατό το άνοιγμα του συνδέσμου",
|
||||
"failedToOpenLink": "Αποτυχία ανοίγματος του συνδέσμου",
|
||||
"failedToResendMessage": "Αποτυχία επαναποστολής του μηνύματος",
|
||||
"retryFailed": "Η επανάληψη απέτυχε: {error}",
|
||||
"deleteDrawingAndMessage": "Διαγραφή σχεδίου και μηνύματος",
|
||||
"lastEchoRelay": "Τελευταία ηχώ: αναμεταδότης",
|
||||
"lastEchoPath": "Τελευταία ηχώ: διαδρομή",
|
||||
"lastEchoBytesReport": "Τελευταία ηχώ: αναφορά byte",
|
||||
"noGpsCoordinatesAvailable": "Δεν υπάρχουν διαθέσιμες συντεταγμένες GPS",
|
||||
"notASarMarker": "Δεν είναι δείκτης SAR",
|
||||
"failedToSaveTemplate": "Αποτυχία αποθήκευσης προτύπου: {error}",
|
||||
"drawingNotFound": "Το σχέδιο δεν βρέθηκε",
|
||||
"unknownDrawingType": "Άγνωστος τύπος σχεδίου",
|
||||
"customMapMarker": "Προσαρμοσμένος δείκτης χάρτη",
|
||||
"customMapPointLabel": "Σημείο: {point}",
|
||||
"mapIdLabel": "ID χάρτη: {id}",
|
||||
"cannotFetchVoice": "Δεν είναι δυνατή η λήψη της φωνής",
|
||||
"senderContactUnknown": "Η επαφή του αποστολέα είναι άγνωστη. Συγχρονίστε πρώτα τις επαφές.",
|
||||
"senderRouteUnknown": "Η διαδρομή του αποστολέα είναι άγνωστη. Συγχρονίστε πρώτα επαφές/διαδρομή.",
|
||||
"messageTooFar": "Το μήνυμα είναι πολύ μακριά ({hops} αναπηδήσεις, μέγ. {maxHops}).",
|
||||
"senderRouteNoPathResponse": "Η διαδρομή του αποστολέα δεν απάντησε στον έλεγχο διαδρομής. Συγχρονίστε επαφές/διαδρομή και δοκιμάστε ξανά.",
|
||||
"senderRouteNoRawResponse": "Η διαδρομή του αποστολέα δεν απάντησε στη raw διαδρομή μεταφοράς.",
|
||||
"voiceFetchOverHops": "Η λήψη φωνής μέσω {hops} αναπηδήσεων μπορεί να διαρκέσει.",
|
||||
"voiceReceiveCanceled": "Η λήψη φωνής ακυρώθηκε",
|
||||
"fetchingMissingVoiceFragments": "Λήψη φωνητικών τμημάτων που λείπουν",
|
||||
"receivingVoice": "Λήψη φωνής",
|
||||
"cannotFetchImage": "Δεν είναι δυνατή η λήψη της εικόνας",
|
||||
"imageFetchOverHops": "Η λήψη εικόνας μέσω {hops} αναπηδήσεων μπορεί να διαρκέσει.",
|
||||
"imageAlreadyBeingReceived": "Η εικόνα λαμβάνεται ήδη",
|
||||
"loadImage": "Φόρτωση εικόνας",
|
||||
"imageFetchFailedToSendRequest": "Αποτυχία αποστολής αιτήματος εικόνας",
|
||||
"imageUnavailable": "Η εικόνα δεν είναι διαθέσιμη αυτήν τη στιγμή",
|
||||
"imageFetchTimedOut": "Η λήψη της εικόνας έληξε",
|
||||
"imageReceiveCanceled": "Η λήψη της εικόνας ακυρώθηκε",
|
||||
"closeImagePreview": "Κλείσιμο προεπισκόπησης εικόνας",
|
||||
"recordingReleaseToSend": "Ηχογράφηση... αφήστε για αποστολή",
|
||||
"sendingVoice": "Αποστολή φωνής...",
|
||||
"sendLongPressToRecordVoice": "Αποστολή (παρατεταμένο πάτημα για ηχογράφηση)",
|
||||
"discardRecording": "Απόρριψη ηχογράφησης",
|
||||
"hopCount": "{count, plural, one{{count} αναπήδηση} other{{count} αναπηδήσεις}}",
|
||||
"channelsSectionDescription": "Κανάλια εκπομπής για κοντινή κίνηση mesh",
|
||||
"roomsSectionDescription": "Κοινόχρηστοι χώροι για συνεχή συντονισμό ομάδας",
|
||||
"contactsSectionDescription": "Άτομα και συσκευές που μπορείτε να προσεγγίσετε άμεσα",
|
||||
"noRecentChatters": "Κανένας πρόσφατος συνομιλητής",
|
||||
"public": "Δημόσιο",
|
||||
"failedToSendTicTacToeMove": "Αποτυχία αποστολής κίνησης τρίλιζας",
|
||||
"youWon": "Κερδίσατε",
|
||||
"opponentWon": "Κέρδισε ο αντίπαλος",
|
||||
"gameDraw": "Ισοπαλία",
|
||||
"yourTurn": "Η σειρά σας",
|
||||
"opponentTurn": "Σειρά του αντιπάλου",
|
||||
"pleaseEnterValidCoordinates": "Εισαγάγετε έγκυρες συντεταγμένες",
|
||||
"locationNotAvailable": "Η τοποθεσία δεν είναι διαθέσιμη",
|
||||
"customCaveMapPoint": "Προσαρμοσμένο σημείο χάρτη σπηλαίου",
|
||||
"mapPoint": "Σημείο χάρτη",
|
||||
"fetchingMissingImageFragments": "Λήψη τμημάτων που λείπουν…",
|
||||
"loadingImage": "Φόρτωση…",
|
||||
"receivingImage": "Λήψη…",
|
||||
"tapToLoad": "Πατήστε για φόρτωση",
|
||||
"connectDevice": "Σύνδεση συσκευής",
|
||||
"chooseTransportSubtitle": "Επιλέξτε μεταφορά Bluetooth, WiFi ή σειριακή",
|
||||
"ble": "BLE",
|
||||
"network": "Δίκτυο",
|
||||
"serial": "Σειριακή θύρα",
|
||||
"scan": "Σάρωση",
|
||||
"pressScanToSearchForDevices": "Πατήστε «Σάρωση» για αναζήτηση κοντινών συσκευών",
|
||||
"failedToConnectToDevice": "Αποτυχία σύνδεσης με {name}",
|
||||
"unknownDevice": "Άγνωστη συσκευή",
|
||||
"showingCachedResultsTapRefresh": "Εμφανίζονται αποτελέσματα από την προσωρινή μνήμη. Πατήστε ανανέωση για νέα σάρωση.",
|
||||
"scanningLocalNetworkOnPort": "Σάρωση τοπικού δικτύου για συσκευές MeshCore WiFi στη θύρα {port}",
|
||||
"cancelScanAndAddServer": "Ακύρωση σάρωσης και προσθήκη διακομιστή",
|
||||
"addServer": "Προσθήκη διακομιστή",
|
||||
"scanningProgressIps": "Σάρωση... {scanned}/{total} διευθύνσεις IP",
|
||||
"cancelAndEnterManually": "Ακύρωση και χειροκίνητη εισαγωγή",
|
||||
"noRecentOrDiscoveredServers": "Δεν υπάρχουν ακόμη πρόσφατοι ή εντοπισμένοι διακομιστές",
|
||||
"recentlyUsed": "Πρόσφατα χρησιμοποιημένοι",
|
||||
"connecting": "Γίνεται σύνδεση...",
|
||||
"discoveredOnThisNetwork": "Εντοπίστηκαν σε αυτό το δίκτυο",
|
||||
"serverNoLongerAvailable": "Ο διακομιστής στο {host}:{port} δεν είναι πλέον διαθέσιμος. Σαρώστε ξανά για να βρείτε ενεργούς διακομιστές.",
|
||||
"failedToConnectToHost": "Αποτυχία σύνδεσης με {host}:{port}",
|
||||
"enterValidIpAddress": "Εισαγάγετε έγκυρη διεύθυνση IP",
|
||||
"enterValidTcpPort": "Εισαγάγετε έγκυρη θύρα TCP",
|
||||
"ipAddress": "Διεύθυνση IP",
|
||||
"tcpPort": "Θύρα TCP",
|
||||
"customServerPort": "Προσαρμοσμένη θύρα διακομιστή",
|
||||
"chat": "Συνομιλία",
|
||||
"restoringPreviousLink": "Επαναφορά προηγούμενης σύνδεσης",
|
||||
"noDeviceConnected": "Δεν υπάρχει συνδεδεμένη συσκευή",
|
||||
"sendAdvert": "Αποστολή της επαφής μου",
|
||||
"advertMode": "Αποστολή της επαφής μου",
|
||||
"advertModeSubtitle": "Επιλέξτε πόσο μακριά θα φτάσουν τα στοιχεία επαφής σας.",
|
||||
"floodAdvertSent": "Η επαφή στάλθηκε σε όλο το δίκτυο mesh",
|
||||
"directAdvertSent": "Η επαφή στάλθηκε σε κοντινές συσκευές"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user