UNPKG

i18ntk

Version:

i18n Tool Kit - Zero-dependency internationalization toolkit for setup, scanning, analysis, validation, auto translation, fixing, reporting, and runtime translation loading.

744 lines (743 loc) 224 kB
{ "meta": { "version": "4.7.0", "updated": "2026-07-07", "lang": "el" }, "common": { "welcome": "Καλωσόρισμα", "hello": "Γειά σου", "goodbye": "Αντίο", "yes": "Ναί", "no": "Οχι", "save": "Εκτός", "cancel": "Ματαίωση", "delete": "Διαγράφω", "edit": "Εκδίδω", "loading": "Φόρτωση...", "offlineTitle": "Είστε εκτός σύνδεσης", "offlineMessage": "Ελέγξτε τη σύνδεσή σας στο Διαδίκτυο", "tryReconnect": "Προσπαθήστε να επανασυνδεθείτε", "logout": "Αποσύνδεση", "login": "Σύνδεση", "amount": "Ποσό", "success": "Επιτυχία", "error": "Σφάλμα", "warning": "Προειδοποίηση", "info": "Πληροφορίες:", "debug": "Εντοπισμός σφαλμάτων", "progress": "Πρόοδος:", "remaining": "Παραμένων:", "total": "Σύνολο:", "completed": "7. Ολοκληρώθηκε με επιτυχία!", "missing": "Απών", "partial": "Μερικός", "sameAsSource": "Ίδιο με την πηγή:", "formatMismatch": "Αναντιστοιχία μορφής:", "typeMismatch": "Αναντιστοιχία τύπου:", "structureMismatch": "Αναντιστοιχία δομής:", "invalidOption": "Μη έγκυρη επιλογή", "separator": "==================================================", "initializationFailed": "❌ Η προετοιμασία απέτυχε: {error}", "stackTrace": "Ίχνη στοίβας: {stack}", "pressEnterToContinue": "Πατήστε Enter για να συνεχίσετε...", "pressEnterToReturn": "Πατήστε Enter για να επιστρέψετε στο κύριο μενού...", "stepCompleted": "Βήμα '{stepName}'ολοκληρώθηκε.", "stepFailed": "Βήμα '{stepName}'Απέτυχε.", "runningStep": "Βήμα τρεξίματος: {stepName}", "command": "Εντολή: {command}", "startingWorkflow": "Έναρξη ροής εργασιών...", "workflowCompleted": "Η ροή εργασίας ολοκληρώθηκε.", "checkReports": "Ελέγξτε τις αναφορές για λεπτομέρειες.", "errorExecutingCommand": "Σφάλμα κατά την εκτέλεση της εντολής: {error}", "genericError": "❌ Σφάλμα: {error}", "errors": { "errors": "Σφάλματα:", "genericError": "❌ Σφάλμα: {error}", "initializationFailed": "❌ Η προετοιμασία απέτυχε: {error}", "initializationCancelled": "❌ Η αρχικοποίηση ακυρώθηκε από τον χρήστη.", "translationKeyNotFound": "Δεν βρέθηκε το κλειδί μετάφρασης: {key}", "sourceDirectoryNotFound": "Ο κατάλογος πηγής δεν βρέθηκε: {directory}", "configLoadingFailed": "Η φόρτωση της διαμόρφωσης απέτυχε", "invalidSourceDirectory": "Μη έγκυρος κατάλογος πηγής: {directory}", "securityViolation": "Εντοπίστηκε παραβίαση ασφαλείας", "authenticationFailed": "Ο έλεγχος ταυτότητας απέτυχε", "sourceEqualsI18nWarn": "⚠️ sourceDir ισούται με i18nDir ({sourceDir}). Πέφτοντας πίσω στο {fallback} για σάρωση πηγής." }, "errorGeneratingStatusSummary": "Σφάλμα κατά τη δημιουργία σύνοψης κατάστασης: {error}", "errorRunningDebugTool": "Σφάλμα κατά την εκτέλεση του εργαλείου εντοπισμού σφαλμάτων \"{displayName}': {error}", "errorReadingDebugLogs": "Σφάλμα κατά την ανάγνωση των αρχείων καταγραφής εντοπισμού σφαλμάτων: {error}", "errorAnalyzingLogFile": "Σφάλμα κατά την ανάλυση του αρχείου καταγραφής: {error}", "errorAnalyzingTranslationKeys": "Σφάλμα κατά την ανάλυση των κλειδιών μετάφρασης: {error}", "errorAnalyzingTranslationCompleteness": "Σφάλμα κατά την ανάλυση της πληρότητας της μετάφρασης: {error}", "analyzingTranslationCompleteness": "Ανάλυση της πληρότητας της μετάφρασης σε όλες τις γλώσσες...", "i18nDirectoryNotFound": "⚠️ Ο κατάλογος i18n δεν βρέθηκε: {i18nDir}", "translationCompletenessAnalysisFailed": "⚠️ Η ανάλυση πληρότητας μετάφρασης απέτυχε: {error}", "failedToAnalyzeLanguage": "❌ Απέτυχε η ανάλυση της γλώσσας {language}: {error}", "errorReadingI18nDirectory": "❌ Σφάλμα κατά την ανάγνωση του καταλόγου i18n:", "languageCompletenessTitle": "📈 ΠΛΗΡΕΣΗ ΜΕΤΑΦΡΑΣΗΣ ΚΑΤΑ ΓΛΩΣΣΑ", "errorAnalyzingTranslationFormat": "Σφάλμα κατά την ανάλυση της μορφής μετάφρασης: {error}", "errorAnalyzingTranslationType": "Σφάλμα κατά την ανάλυση του τύπου μετάφρασης: {error}", "errorAnalyzingTranslationStructure": "Σφάλμα κατά την ανάλυση της δομής μετάφρασης: {error}", "errorAnalyzingTranslationFormatMismatch": "Σφάλμα ανάλυσης αναντιστοιχίας μορφής μετάφρασης: {error}", "errorAnalyzingTranslationTypeMismatch": "Σφάλμα ανάλυσης αναντιστοιχίας τύπου μετάφρασης: {error}", "errorAnalyzingTranslationStructureMismatch": "Σφάλμα ανάλυσης αναντιστοιχίας δομής μετάφρασης: {error}", "errorAnalyzingTranslationSameAsSource": "Σφάλμα κατά την ανάλυση της μετάφρασης όπως η πηγή: {error}", "title": "Κατάσταση", "nextStep1": "1. Ελέγξτε την ανάλυση χρήσης:", "nextStep2": "2. Επικύρωση μεταφράσεων:", "nextStep3": "3. Αναλύστε την πληρότητα:", "nextStep4": "4. Συμπληρώστε τις μεταφράσεις που λείπουν:", "nextStep5": "5. Δημιουργία συνοπτικής αναφοράς:", "nextStep6": "6. Ελέγξτε και οριστικοποιήστε τις μεταφράσεις:", "generating": "Δημιουργία συνοπτικής αναφοράς...", "review": "Έλεγχος μεταφράσεων...", "finalizing": "Ολοκλήρωση μεταφράσεων...", "finalized": "Ολοκληρώθηκε με επιτυχία!", "warnings": "Προειδοποιήσεις:", "completedKeys": "Ολοκληρωμένα κλειδιά:", "missingKeys": "Λείπουν κλειδιά:", "partialKeys": "Μερικά κλειδιά:", "home": "Σπίτι", "settings": "Ρυθμίσεις", "startingSettings": "🎛️ Έναρξη ρυθμίσεων CLI...", "confirm": "Επιβεβαιώνω", "errorExiting": "Σφάλμα κατά την έξοδο." }, "errors": { "invalidOption": "❌ Μη έγκυρη επιλογή: {option}. Δοκιμάστε ξανά.", "readlineClosed": "Η ροή εισόδου είναι κλειστή. τρέχει σε μη διαδραστική λειτουργία.", "noPackageJson": "Δεν βρέθηκε πακέτο.json. Δεν είναι δυνατός ο αυτόματος εντοπισμός του πλαισίου i18n.", "noI18nDir": "Δεν βρέθηκε κατάλογος i18n στη ρίζα του έργου.", "noI18nConfig": "Δεν βρέθηκε αρχείο διαμόρφωσης i18n στη ρίζα του έργου.", "errorReadingDebugLogs": "Σφάλμα κατά την ανάγνωση των αρχείων καταγραφής εντοπισμού σφαλμάτων: {error}" }, "scanner": { "help_message": "I18n Text Scanner Χρήση: node i18ntk-scanner.js [επιλογές] Επιλογές: --source-dir <dir> Κατάλογος προέλευσης για σάρωση (προεπιλογή: ./src) --έξοδος <file> Αρχείο εξόδου για αποτελέσματα σάρωσης (προεπιλογή: ./i18ntk-scanner-report.json) --framework <name> Πλαίσιο για στόχευση (react, vue, angular, vanilla) -- μοτίβα <patterns> Προσαρμοσμένα μοτίβα regex (χωρισμένα με κόμμα) --include-tests Συμπερίληψη δοκιμαστικών αρχείων στη σάρωση --exclude-dirs <dirs> Κατάλογοι προς εξαίρεση (χωρισμένοι με κόμμα) --help Εμφάνιση αυτής της βοήθειας Παραδείγματα: κόμβος i18ntk-scanner.js --source-dir=./src --framework=react κόμβος i18ntk-scanner.js --patterns 'console.log\\((.*?)\\)' --include18nerts node --output=./scan-results.json", "help_options": { "source_dir": "Κατάλογος προέλευσης για σάρωση για ζητήματα i18n", "output_dir": "Κατάλογος για αναφορές και αποτελέσματα σάρωσης", "framework": "Πλαίσιο στόχου (react, vue, angular, vanilla)", "patterns": "Προσαρμοσμένα μοτίβα regex για ανίχνευση κειμένου", "exclude": "Μοτίβα αρχείων προς εξαίρεση από τη σάρωση", "output_report": "Δημιουργήστε λεπτομερή αναφορά σάρωσης", "min_length": "Ελάχιστο μήκος κειμένου που πρέπει να ληφθεί υπόψη για τη μετάφραση", "max_length": "Μέγιστο μήκος κειμένου που πρέπει να ληφθεί υπόψη για τη μετάφραση", "include_tests": "Συμπεριλάβετε αρχεία δοκιμής στη διαδικασία σάρωσης" }, "starting": "🔍 Έναρξη σαρωτή κειμένου για πλαίσιο: {framework}", "sourceDirectory": "📁 Σάρωση καταλόγου: {sourceDir}", "frameworkDetected": "🎯 Ανιχνευμένο πλαίσιο: {framework}", "scanningFiles": "📊 Σάρωση {fileCount} αρχεία...", "foundTexts": "📝 Βρέθηκε {textCount} κείμενα που απαιτούν μετάφραση", "generatingReport": "📊 Δημιουργία λεπτομερούς αναφοράς...", "reportSaved": "💾 Η αναφορά σάρωσης αποθηκεύτηκε σε: {reportPath}", "noTextsFound": "✅ Δεν βρέθηκαν κωδικοποιημένα αγγλικά κείμενα", "scanComplete": "🎉 Η σάρωση ολοκληρώθηκε με επιτυχία!", "analysisTitle": "🔍 ΑΝΑΛΥΣΗ ΣΑΡΩΣΗΣ ΜΕΤΑΦΡΑΣΗΣ", "fileSummary": "📄 {file}: {count} κείμενα που βρέθηκαν", "textLocation": "📍 Γραμμή {line}: {text}", "foundText": "Θεμελιώ {count} πιθανές παρουσίες κειμένου με σκληρό κώδικα", "context": "📝 Περιεχόμενο: {context}", "severity": "⚠️ Σοβαρότητα: {severity}", "recommendation": "💡 Σύσταση: {recommendation}", "welcome": { "title": "🎯 Καλώς ήρθατε στο Text Scanner!", "description": "Αυτό το εργαλείο σαρώνει τον πηγαίο κώδικα σας για έντυπο αγγλικό κείμενο που μπορεί να χρειάζεται μετάφραση." }, "frameworkPrompt": { "title": "🎯 Επιλέξτε Πλαίσιο", "available": "Διαθέσιμα πλαίσια: react, vue, angular, vanilla", "description": "Εισαγάγετε τον τύπο πλαισίου (ή πατήστε Enter για αυτόματη ανίχνευση):", "input": "Σκελετός:" }, "directoryPrompt": { "title": "📁 Επιλέξτε Κατάλογος πηγών", "current": "Τρέχων κατάλογος: {dir}", "description": "Εισαγάγετε τον κατάλογο για σάρωση (ή πατήστε Enter για τρέχον):", "input": "Τηλεφωνικός κατάλογος:" }, "options": { "includeTests": "Να συμπεριληφθούν αρχεία δοκιμής;", "excludeDirs": "Κατάλογοι προς εξαίρεση (χωρισμένοι με κόμματα):", "customPatterns": "Προσαρμοσμένα μοτίβα για σάρωση (regex):" }, "reportGenerated": "Δημιουργήθηκε αναφορά σάρωσης: {path}" }, "fixer": { "help_message": "I18n Translation Fixer Χρήση: node i18ntk-fixer.js [επιλογές] Επιλογές: --source-dir <dir> Κατάλογος πηγής για σάρωση (προεπιλογή: ./locales) --γλώσσες <langs> Λίστα γλωσσών διαχωρισμένων με κόμματα προς διόρθωση --δείκτες <markers> Σημάντες διαχωρισμένοι με κόμματα για να αντιμετωπίζονται ως αμετάφραστα --no-backup Παράλειψη αυτόματης δημιουργίας αντιγράφων ασφαλείας --βοήθεια Εμφάνιση αυτής της βοήθειας Παραδείγματα: κόμβος i18ntk-fixer.js --languages ​​de,fr node i18ntk-fixer.js --source-dir=./locales --markers NOT_TRANSLATED.backup.", "starting": "🚀 Έναρξη επιδιόρθωσης μετάφρασης για γλώσσες: {languages}", "sourceDirectory": "📁 Κατάλογος πηγής: {sourceDir}", "sourceLanguage": "🔤 Γλώσσα πηγής: {sourceLanguage}", "markers": "🏷️ Μαρκαδόροι προς διόρθωση: {markers}", "scanningLanguage": "📊 Σάρωση {language}...", "noLanguages": "❌ Δεν έχουν καθοριστεί γλώσσες για επιδιόρθωση.", "allComplete": "🎉 Όλες οι μεταφράσεις έχουν ήδη ολοκληρωθεί!", "fullReportSaved": "📊 Η πλήρης αναφορά αποθηκεύτηκε σε: {reportPath}", "reviewReport": "Ελέγξτε την αναφορά πριν συνεχίσετε.", "backupCreated": "💾 Το αντίγραφο ασφαλείας δημιουργήθηκε με επιτυχία.", "applyingFixes": "🔄 Εφαρμογή διορθώσεων...", "fixingComplete": "✅ Η διόρθωση της μετάφρασης ολοκληρώθηκε!", "operationCancelled": "❌ Η λειτουργία ακυρώθηκε από τον χρήστη.", "analysisTitle": "🔍 ΑΝΑΛΥΣΗ ΔΙΟΡΘΩΣΗΣ ΜΕΤΑΦΡΑΣΗΣ", "analysisSeparator": "==================================================", "totalIssues": "Συνολικά προβλήματα που βρέθηκαν: {totalIssues}", "missingTranslations": "Λείπουν μεταφράσεις: {missing}", "placeholderTranslations": "Μεταφράσεις placeholder: {placeholder}", "noIssues": "✅ Δεν βρέθηκαν προβλήματα. Όλες οι μεταφράσεις είναι ολοκληρωμένες.", "detailedIssues": "📋 DETAILED ISSUES:", "detailedSeparator": "--------------------------------------------------", "filePath": "📄 {file} → {path}", "missingKey": "❌ ΛΕΙΠΟΥΝ: {source} → {new}", "placeholderKey": "⚠️ ΤΟΠΟΘΕΤΗΣ: \"{target}\" → \"{new}\"", "moreIssues": "... και {count} περισσότερα θέματα. Ελέγξτε το αρχείο αναφοράς για πλήρεις λεπτομέρειες.", "confirmationTitle": "🤔 Θέλετε να συνεχίσετε με αυτές τις διορθώσεις;", "confirmationOptions": "Επιλογές:", "optionYes": "y - Ναι, εφαρμόστε όλες τις διορθώσεις", "optionNo": "n - Όχι, ακυρώστε τη λειτουργία", "optionShow": "s - Εμφάνιση λεπτομερών ζητημάτων", "choicePrompt": "Η επιλογή σας (y/n/s):", "nonInteractiveMode": "⚡ Εντοπίστηκε μη διαδραστική λειτουργία - αυτόματη εφαρμογή διορθώσεων...", "reportGenerated": "📊 Δημιουργήθηκε αναφορά επιδιόρθωσης: {path}", "summary": "Σύνοψη Fixer:", "welcome": { "title": "🎯 Καλώς ήρθατε στο Translation Fixer!", "description": "Αυτό το εργαλείο θα σας βοηθήσει να διορθώσετε κατεστραμμένες μεταφράσεις και σύμβολα κράτησης θέσης στα αρχεία τοπικών ρυθμίσεων." }, "markerPrompt": { "title": "🏷️ Διαμόρφωση δεικτών κράτησης θέσης", "description": "Εισαγάγετε τους δείκτες που υποδεικνύουν μη μεταφρασμένο κείμενο (χωρισμένο με κόμμα):", "currentDefaults": "Προεπιλεγμένοι δείκτες: {markers}", "input": "Δείκτες (ή πατήστε Enter για προεπιλογές):" }, "languagePrompt": { "title": "🌍 Επιλέξτε Γλώσσες προς διόρθωση", "available": "Διαθέσιμες γλώσσες: {languages}", "description": "Εισαγάγετε γλώσσες προς διόρθωση (χωρισμένες με κόμματα) ή πατήστε Enter για όλες:", "input": "Γλώσσες:", "noLanguages": "Δεν βρέθηκαν γλώσσες για διόρθωση." }, "directoryPrompt": { "title": "📁 Επιλέξτε Κατάλογο", "current": "Τρέχων κατάλογος: {dir}", "description": "Εισαγάγετε τον κατάλογο που περιέχει τα αρχεία τοπικής ρύθμισης (ή πατήστε Enter για τρέχοντα):", "input": "Τηλεφωνικός κατάλογος:" }, "backupLocation": "Εφεδρική τοποθεσία: {dir}", "completed": "Η επισκευή ολοκληρώθηκε.", "creatingBackup": "Δημιουργία αντιγράφων ασφαλείας σε {dir}...", "dryRunMode": "Λειτουργία ξηρής λειτουργίας: {mode}", "error": "Ο διορθωτής απέτυχε: {error}", "fixing": "Διόρθωση {language}...", "foundLanguages": "Θεμελιώ {count} γλώσσες: {languages}", "languageFixed": "{language}: σταθερό {fixed} κλειδί(α), παραλείφθηκε {skipped}.", "running": "Εκτελείται επιδιόρθωση μετάφρασης...", "totalFixed": "Συνολικά διορθώθηκε: {count}" }, "autorun": { "stepAnalyzeTranslations": "Αναλύστε τις μεταφράσεις", "stepCompletedWithIcon": "✅ Ολοκληρώθηκε: {stepName}", "stepValidateTranslations": "Επικύρωση μεταφράσεων", "stepRunning": "▶️ Βήμα {stepNumber}/{totalSteps}: {stepName}", "separator": "==================================================", "stepFailed": "❌ Απέτυχε: {stepName}", "errorLabel": "Σφάλμα", "autoRunScriptTitle": "🧪 Αυτόματη εκτέλεση ροής εργασίας", "usageTitle": "Χρήση", "runAllSteps": "Εκτέλεση: node i18ntk-autorun.js", "configureSettingsFirst": "Config: i18ntk-config.json ή σημαίες CLI", "runSpecificSteps": "Χρησιμοποιήστε --steps=1,3 ή --list για να εμφανίσετε τα βήματα", "showHelp": "--βοήθεια για περισσότερες πληροφορίες", "examplesTitle": "Παραδείγματα", "configExample": "κόμβος i18ntk-autorun.js --ui-language=zh", "stepsExample1": "κόμβος i18ntk-autorun.js --steps=analyze,validate", "stepsExample2": "κόμβος i18ntk-autorun.js --list", "customSettingsConfiguration": "Προσαρμοσμένες ρυθμίσεις αυτόματης εκτέλεσης", "availableSteps": "Διαθέσιμα βήματα", "startingAutoRunWorkflow": "🚀 Έναρξη ροής εργασίας αυτόματης εκτέλεσης...", "workflowIncludesSteps": "Η ροή εργασίας περιλαμβάνει {count} βήματα:", "missingRequiredFile": "Λείπει το απαιτούμενο αρχείο: {file}", "workflowStopped": "Η ροή εργασίας σταμάτησε λόγω αποτυχίας.", "workflowCompleted": "🎉 Η ροή εργασίας ολοκληρώθηκε!", "successfulSteps": "Επιτυχημένα βήματα: {count}", "failedSteps": "Αποτυχημένα βήματα: {count}", "stepInitializeProject": "Αρχικοποίηση έργου", "stepCheckUsage": "Ελέγξτε τη χρήση του κλειδιού", "stepGenerateSummary": "Δημιουργία συνοπτικής αναφοράς", "runInitializationFirst": "Εκτελέστε πρώτα την προετοιμασία.", "initializationCheckPassed": "Ο έλεγχος αρχικοποίησης πέρασε.", "runningStep": "Βήμα τρεξίματος: {stepName}", "commandLabel": "Εντολή: {command}", "stepCompletedWithTime": "Βήμα '{stepName}'ολοκληρώθηκε σε {duration}ms.", "stepCompleted": "Βήμα '{stepName}'ολοκληρώθηκε.", "stepFailedWithError": "Βήμα '{stepName}' απέτυχε με σφάλμα: {error}", "requiredStepFailed": "Το απαιτούμενο βήμα απέτυχε. Διακοπή ροής εργασιών.", "optionalStepFailed": "Το προαιρετικό βήμα απέτυχε. Συνεχιζόμενη ροή εργασιών.", "stepRequired": "(Υποχρεούμαι)", "stepOptional": "(Προαιρετικός)", "startingExecution": "Έναρξη εκτέλεσης...", "pressEnterToContinue": "Πατήστε Enter για να συνεχίσετε...", "runningSelectedSteps": "Εκτέλεση επιλεγμένων βημάτων...", "invalidStepNumber": "Μη έγκυρος αριθμός βήματος: {stepNum}", "executionReport": "Έκθεση εκτέλεσης:", "requiredFailedSteps": "Τα απαιτούμενα βήματα απέτυχαν: {count}", "stepDetails": "Λεπτομέρειες βήματος:", "reportSavedTo": "Η αναφορά αποθηκεύτηκε σε: {path}", "overallStatusSuccess": "SUCCESS", "overallStatusFailed": "FAILED", "overallStatus": "Συνολική κατάσταση: {status}", "pressEnterForDefaults": "Πατήστε Enter για να χρησιμοποιήσετε τις προεπιλεγμένες ρυθμίσεις για οποιοδήποτε μήνυμα προτροπής.", "sourceDirPrompt": "Εισαγάγετε τον κατάλογο προέλευσης (προεπιλογή: {default}):", "sourceLangPrompt": "Εισαγάγετε τη γλώσσα πηγής (προεπιλογή: {default}):", "targetLangsPrompt": "Εισαγάγετε γλώσσες-στόχους (χωρισμένες με κόμματα, προεπιλογή: {default}):", "translationMarkerPrompt": "Εισαγάγετε δείκτη μετάφρασης (προεπιλογή: {default}):", "outputDirPrompt": "Εισαγάγετε τον κατάλογο εξόδου για αναφορές (προεπιλογή: {default}):", "settingsUpdatedSuccessfully": "Οι ρυθμίσεις ενημερώθηκαν με επιτυχία!", "errorConfiguringSettings": "Σφάλμα κατά τη διαμόρφωση των ρυθμίσεων: {error}", "configurationComplete": "Η διαμόρφωση ολοκληρώθηκε.", "runAutoRunCommand": "Τώρα μπορείτε να εκτελέσετε την εντολή αυτόματης εκτέλεσης.", "configurationFailed": "Η διαμόρφωση απέτυχε: {error}", "noValidStepNumbers": "Δεν παρέχονται έγκυροι αριθμοί βημάτων.", "autoRunFailed": "Η αυτόματη εκτέλεση απέτυχε: {error}", "stepCompleteTranslations": "Ολοκληρωμένες Μεταφράσεις", "stepAnalyzeSizing": "Αναλύστε το μέγεθος", "stepCompletedIcon": "✅", "stepRunningWithNumber": "[{stepNumber}/{totalSteps}] Βήμα '{stepName}\"τρέξιμο...", "stepFailedIcon": "❌", "translationLoadWarning": "Προειδοποίηση: Δεν ήταν δυνατή η φόρτωση {lang} μεταφράσεις", "configReadError": "Σφάλμα ανάγνωσης {file}" }, "analyze": { "help_message": "I18n Translation Analyzer Χρήση: node i18ntk-analyze.js [επιλογές] Επιλογές: --source-dir <dir> Κατάλογος πηγής για σάρωση (προεπιλογή: ./src) --i18n-dir <dir> Κατάλογος I18n (προεπιλογή: ./src/locales) --output-report Δημιουργία λεπτομερούς αναφοράς --output-dir <dir> Κατάλογος εξόδου για αναφορές (προεπιλογή: ./αναφορές) --help Εμφάνιση αυτής της βοήθειας Παραδείγματα: κόμβος i18ntk-analyze.js --output-report node i18ntk-analyze.js --source-dir=./app --i18n-dir=./locales κόμβος i18ntk-analyze.", "source_directory": "📁 Κατάλογος πηγής: {sourceDir}", "i18n_directory": "🌐 Κατάλογος I18n: {i18nDir}", "loading_translation_files": "📋 Φόρτωση αρχείων μετάφρασης...", "sourceDirectoryLabel": "📁 Κατάλογος πηγών: {sourceDir}", "sourceLanguageLabel": "🌍 Γλώσσα πηγής: {sourceLanguage}", "strictModeLabel": "⚙️ Αυστηρή λειτουργία: {mode}", "found_translation_files_count": "✅ Βρέθηκε {count} αρχεία μετάφρασης", "analyzing_translations": "🔍 Ανάλυση μεταφράσεων...", "analysis_completed_successfully": "🎉 Η ανάλυση ολοκληρώθηκε με επιτυχία!", "analysis_results": "📊 ANALYSIS RESULTS", "language_analysis_stats": "{language}: {translatedKeys}/{totalKeys} ({percentage}% μεταφρασμένο)", "sample_missing_keys": "Δείγμα κλειδιών που λείπουν:", "missing_key": "- {key}", "and_more_missing": "...και {count} περισσότερο.", "sample_unused_keys": "Δείγμα αχρησιμοποίητων κλειδιών:", "unused_key": "- {key}", "and_more_unused": "...και {count} περισσότερο.", "recommendations": "📋 ΠΡΟΤΑΣΕΙΣ", "add_missing_translations": "💡 Προσθέστε μεταφράσεις που λείπουν για να βελτιώσετε την κάλυψη.", "remove_unused_translations": "💡 Καταργήστε τις αχρησιμοποίητες μεταφράσεις για να διατηρήσετε το έργο σας καθαρό.", "next_steps": "📋 NEXT STEPS", "review_analysis_results": "1. Ελέγξτε τα αποτελέσματα της ανάλυσης στην κονσόλα ή στην αναφορά που δημιουργήθηκε.", "run_with_output_report": "2. Εκτελέστε με --output-report για λεπτομερή αναφορά.", "add_or_remove_translations": "3. Προσθέστε μεταφράσεις που λείπουν ή αφαιρέστε τις αχρησιμοποίητες.", "rerun_analysis": "4. Επαναλάβετε την ανάλυση για να επαληθεύσετε τις βελτιώσεις.", "analysis_summary": "📊 ANALYSIS SUMMARY", "source_files_scanned": "Τα αρχεία πηγής σαρώθηκαν: {fileCount}", "translation_files_checked": "Ελεγμένα αρχεία μετάφρασης: {translationFileCount}", "total_keys": "Σύνολο κλειδιών: {totalKeys}", "translated_keys": "Μεταφρασμένα κλειδιά: {translatedKeys}", "missing_keys": "Λείπουν κλειδιά: {missingKeys}", "unused_keys": "Αχρησιμοποίητα κλειδιά: {unusedKeys}", "translation_coverage": "Μεταφραστική κάλυψη: {coverage}%", "analysis_passed_for_language": "✅ Η ανάλυση πέρασε για {language}", "analysis_failed_for_language": "❌ Η ανάλυση απέτυχε για {language} ({missingKeys} απών, {unusedKeys} αχρησιμοποίητος)", "starting": "🔍 Έναρξη ανάλυσης μετάφρασης...", "foundLanguages": "📋 Βρέθηκε {count} γλώσσες προς ανάλυση: {languages}", "analyzing": "🔄 Αναλύοντας {language}...", "reportTitle": "📊 ΕΚΘΕΣΗ ΑΝΑΛΥΣΗΣ ΜΕΤΑΦΡΑΣΗΣ", "generated": "Δημιουργήθηκε: {timestamp}", "status": "Κατάσταση: {translated}/{total} κλειδιά ({percentage}% μεταφρασμένο)", "filesAnalyzed": "Αρχεία που αναλύθηκαν: {analyzed}/{total}", "keysNeedingTranslation": "Κλειδιά που χρειάζονται μετάφραση: {count}", "fileBreakdown": "📋 ΑΝΑΛΥΣΗ ΑΡΧΕΙΟΥ", "error": "Σφάλμα", "completed": "✅ Η ανάλυση ολοκληρώθηκε για {language}", "progress": "📊 Συνολική πρόοδος: {translated}/{total} επεξεργασμένες γλώσσες", "reportSaved": "Η αναφορά αποθηκεύτηκε: {reportPath}", "summary": "📊 ANALYSIS SUMMARY", "finished": "✅ Η ανάλυση ολοκληρώθηκε με επιτυχία!", "statusFileMissing": "❌ Λείπει το αρχείο μετάφρασης", "sourceKeys": "📊 Κλειδιά πηγής: {count}", "translation": "📊 Μετάφραση: {translated}/{total} ({percentage}%)", "structure": "🗂️ Δομή: {status}", "consistent": "Συνεπής", "inconsistent": "Ασυνεπής", "missingKeys": "Λείπουν κλειδιά: {count}", "extraKeys": "Επιπλέον κλειδιά: {count}", "issues": "⚠️ Βρέθηκαν προβλήματα: {count}", "issueType": { "not_translated": "Μη μεταφρασμένο: {count}", "empty_value": "Κενές τιμές: {count}", "partial_translation": "Μερικές μεταφράσεις: {count}", "format_mismatch": "Αναντιστοιχίες μορφής: {count}", "type_mismatch": "Αναντιστοιχίες τύπου: {count}", "structure_mismatch": "Αναντιστοιχίες δομής: {count}", "same_as_source": "Ίδιο με την πηγή: {count}" }, "keysToTranslate": "📋 ΚΛΕΙΔΙΑ ΓΙΑ ΜΕΤΑΦΡΑΣΗ", "key": "Κλειδί", "english": "αγγλικός", "needsTranslation": "ΧΡΕΙΑΖΕΤΑΙ ΜΕΤΑΦΡΑΣΗ", "andMoreKeys": "...και {count} περισσότερα κλειδιά.", "noLanguages": "⚠️ Δεν βρέθηκαν γλώσσες-στόχοι.", "languageStats": "{language}: {percentage}% ολοκληρωμένη ({translated}/{total} κλειδιά)", "invalidReportFilePath": "Μη έγκυρη διαδρομή αρχείου αναφοράς", "failedToWriteReportFile": "Απέτυχε η ασφαλής εγγραφή του αρχείου αναφοράς" }, "complete": { "configLoadedSuccessfully": "Η διαμόρφωση φορτώθηκε με επιτυχία", "configLoadingFailed": "Η φόρτωση της διαμόρφωσης απέτυχε", "sourceLanguageNotFound": "Ο κατάλογος γλώσσας πηγής δεν βρέθηκε: {sourceLanguage}", "couldNotParseTarget": "Δεν ήταν δυνατή η ανάλυση του αρχείου προορισμού: {file}", "couldNotParseSource": "Δεν ήταν δυνατή η ανάλυση του αρχείου προέλευσης: {file}", "reportGenerated": "Δημιουργήθηκε αναφορά: {path}", "generateReportPrompt": "Θα θέλατε να δημιουργηθεί μια αναφορά;", "title": "🌍 ΟΛΟΚΛΗΡΩΣΗ ΜΕΤΑΦΡΑΣΗΣ I18NTK", "separator": "============================================================", "sourceDir": "📁 Κατάλογος πηγής: {sourceDir}", "sourceLanguage": "🌐 Γλώσσα πηγής: {sourceLanguage}", "dryRunMode": "🧪 Λειτουργία ξηρής λειτουργίας - δεν θα γίνουν αλλαγές", "languages": "🌍 Διαθέσιμες γλώσσες: {languages}", "addingMissingKeys": "➕ Προσθήκη κλειδιών που λείπουν στα αρχεία μετάφρασης...", "processing": "🔄 Επεξεργασία {language}...", "addedKeys": "✅ Προστέθηκε {count} λείπουν κλειδιά", "noChangesNeeded": "✅ Δεν χρειάζονται αλλαγές για {language}", "summaryTitle": "📊 ΣΥΝΟΨΗ ΟΛΟΚΛΗΡΩΣΗΣ", "totalChanges": "📝 Συνολικές αλλαγές: {totalChanges}", "languagesProcessed": "🌍 Γλώσσες που υποβλήθηκαν σε επεξεργασία: {languagesProcessed}", "missingKeysAdded": "➕ Προστέθηκαν κλειδιά που λείπουν: {missingKeysAdded}", "nextStepsTitle": "📋 NEXT STEPS", "nextStep1": "1. Εκτελέστε την ανάλυση χρήσης:", "nextStep2": "κόμβος i18ntk-usage.js --output-report", "nextStep3": "2. Επικύρωση μεταφράσεων:", "nextStep4": "κόμβος i18ntk-validate.js", "nextStep5": "3. Αναλύστε μοτίβα:", "nextStep6": "κόμβος i18ntk-analyze.js", "allKeysAvailable": "🎉 Όλα τα κλειδιά μετάφρασης είναι πλέον διαθέσιμα!", "runWithoutDryRun": "💡 Εκτελέστε χωρίς --dry-run για να εφαρμόσετε αλλαγές", "deletingOldReport": "🗑️ Διαγραφή παλιάς αναφοράς...", "generatingFreshAnalysis": "📊 Δημιουργία νέας ανάλυσης χρήσης...", "couldNotGenerate": "❌ Δεν ήταν δυνατή η δημιουργία ανάλυσης χρήσης", "reportNotFound": "📋 Η αναφορά χρήσης δεν βρέθηκε. Χρήση κοινών πλήκτρων...", "foundMissingKeys": "📋 Βρέθηκε {count} λείπουν κλειδιά από την ανάλυση χρήσης", "couldNotParse": "❌ Δεν ήταν δυνατή η ανάλυση της αναφοράς χρήσης. Χρήση κοινών πλήκτρων...", "errorDuringCompletion": "❌ Σφάλμα κατά την ολοκλήρωση: {error}", "fatalError": "❌ Θανατηφόρο σφάλμα: {error}", "configurationValidationFailed": "Η επικύρωση διαμόρφωσης απέτυχε: λείπουν υποχρεωτικά πεδία" }, "sizing": { "separator": "================================================================================", "lineSeparator": "--------------------------------------------------------------------------------", "analysisStats": "{stats}", "sourceDirectoryLabel": "📁 Κατάλογος πηγής: {sourceDir}", "sourceLanguageLabel": "🌍 Γλώσσα πηγής: {sourceLanguage}", "strictModeLabel": "⚙️ Αυστηρή λειτουργία: {mode}", "invalidSourceDirectoryError": "Μη έγκυρη διαδρομή καταλόγου προέλευσης: {sourceDir}", "sourceDirectoryNotFoundError": "Ο κατάλογος πηγής δεν βρέθηκε: {sourceDir}", "invalidOutputDirectoryError": "Μη έγκυρη διαδρομή καταλόγου εξόδου: {outputDir}", "invalidReportFileError": "Μη έγκυρη διαδρομή αρχείου αναφοράς", "problematic_keys": "Προβληματικά κλειδιά: {problematicKeys}", "problematicKeysLabel": "Προβληματικά κλειδιά: {problematicKeys}", "long_translations": "Εκτενείς μεταφράσεις: {longTranslations}", "failedToSaveReportError": "Η ασφαλής αποθήκευση της αναφοράς απέτυχε", "invalidCsvFileError": "Μη έγκυρη διαδρομή αρχείου CSV", "failedToSaveCsvError": "Αποτυχία αποθήκευσης της αναφοράς CSV με ασφάλεια", "fatalError": "❌ Η ανάλυση μεγέθους απέτυχε: {error}", "starting_i18n_sizing_analysis": "Έναρξη ανάλυσης μεγέθους i18n...", "source_directory": "Κατάλογος πηγής: {sourceDir}", "found_languages": "Βρέθηκαν γλώσσες: {languages}", "analyzing_file_sizes": "Ανάλυση μεγεθών αρχείων...", "analyzing_translation_content": "Ανάλυση μεταφραστικού περιεχομένου...", "generating_size_comparisons": "Δημιουργία συγκρίσεων μεγεθών...", "no_languages_found_for_comparison": "Δεν βρέθηκαν γλώσσες για σύγκριση", "sizing_analysis_results": "Αποτελέσματα ανάλυσης μεγέθους I18n", "file_sizes_title": "Μεγέθη αρχείων", "file_sizes_header": "Γλώσσα Μέγεθος (KB) Γραμμές Χαρακτήρες", "file_size_row": "{lang} {sizeKB} {lines} {characters}", "language_statistics_title": "Γλωσσική Στατιστική", "language_stats_header": "Πλήκτρα γλώσσας Χαρακτήρες Μέσο μήκος Μέγιστο μήκος Κενό Μακρύ", "language_stats_row": "{lang} {totalKeys} {totalCharacters} {averageKeyLength} {maxKeyLength} {emptyKeys} {longKeys}", "size_variations_title": "Παραλλαγές μεγέθους", "size_variations_header": "Γλώσσα Char Diff % Diff Προβληματική", "size_variation_row": "{lang} {characterDifference} {percentageDifference}% {problematic}", "problematic_yes": "Ναί", "problematic_no": "Οχι", "recommendations_title": "συστάσεις", "recommendation_item": "{index}. {recommendation}", "problematic_key_detail": "{index}. Κλειδί: '{key}' - Παραλλαγές: {variations}", "generating_detailed_report": "Δημιουργία λεπτομερούς αναφοράς...", "keysHaveSignificantSizeVariations": "τα κλειδιά έχουν σημαντικές διακυμάνσεις μεγέθους", "longTranslationsDetected": "${lang} έχει μεταφράσεις ${data.longKeys} μεγαλύτερες από 100 χαρακτήρες - σκεφτείτε να τις αναλύσετε", "longer": "μακρύτερα", "shorter": "κοντύτερος", "review_translations": "Εξετάστε το ενδεχόμενο αναθεώρησης {lang} μεταφράσεις - είναι {percentageDifference}% {comparison} από τη γραμμή βάσης", "report_saved_to": "Η αναφορά αποθηκεύτηκε σε: {reportPath}", "considerReviewingTranslations": "Σκεφτείτε την αναθεώρηση ${lang} μεταφράσεις - είναι ${data.percentageDifference}% μεγαλύτερες από τη γραμμή βάσης", "csv_report_saved_to": "Η αναφορά CSV αποθηκεύτηκε σε: {csvPath}", "human_report_saved": "Η αναγνώσιμη αναφορά αποθηκεύτηκε: {reportPath}", "folder_summary_title": "Περίληψη φακέλου", "folder_summary_table_header": "Μέγεθος γλώσσας (KB) Πλήκτρα Μέσο μήκος Συνολικοί χαρακτήρες", "folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}", "language_comparison_title": "Σύγκριση Γλωσσών", "language_comparison_row": "{lang}: {diff} χαρακτήρες ({percent}%) {status}", "summary_stats": "📊 Περίληψη: {totalLanguages} γλώσσες, {totalKeys} πλήκτρα - Οι αναφορές αποθηκεύονται σε {reportPath}", "detailedKeysDescription": "Εμφάνιση λεπτομερούς ανάλυσης σε επίπεδο κλειδιού στην κονσόλα", "too_many_keys_warning": "⚠️ Πάρα πολλά κλειδιά για εμφάνιση στην κονσόλα - ελέγξτε το αρχείο λεπτομερούς αναφοράς για πλήρη ανάλυση", "no_translation_files_found": "Δεν βρέθηκαν αρχεία μετάφρασης", "analysis_completed": "Η ανάλυση ολοκληρώθηκε σε {duration}ms", "analysis_failed": "Η ανάλυση απέτυχε: {errorMessage}", "starting_analysis": "Έναρξη ανάλυσης...", "found_files": "Θεμελιώ {count} αρχεία", "failed_to_parse_language_error": "Αποτυχία ανάλυσης {language} μεταφράσεις: {errorMessage}", "recommendations": { "keys_have_significant_size_variations": "τα κλειδιά έχουν σημαντικές διακυμάνσεις μεγέθους", "consider_reviewing_translations": "Σκεφτείτε την αναθεώρηση {lang} μεταφράσεις - είναι {percentageDifference}% {comparison} από τη γραμμή βάσης", "long_translations_detected": "{lang} έχει {longKeys} μεταφράσεις μεγαλύτερες από {threshold} χαρακτήρες - σκεφτείτε να τους αναλύσετε" }, "detailed_key_analysis_title": "Λεπτομερής Ανάλυση Κλειδιών", "key_analysis_detail": "{lang}: {length} χαρακτήρες ({status}) - {translation}", "key_analysis_header": "Κλειδί: {key}", "status_empty": "αδειάζω", "status_long": "μακρύς", "status_ok": "Εντάξει" }, "usage": { "help_message": "I18n Χρήση Αναλυτή Χρήσης: node i18ntk-usage.js [επιλογές] Επιλογές: --source-dir <dir> Κατάλογος πηγής για σάρωση (προεπιλογή: ./src) --i18n-dir <dir> Κατάλογος I18n (προεπιλογή: ./src/locales) --output-report Δημιουργία λεπτομερούς αναφοράς --output-dir <dir> Κατάλογος εξόδου για αναφορές (προεπιλογή: ./αναφορές) --βοήθεια Εμφάνιση αυτής της βοήθειας Παραδείγματα: κόμβος i18ntk-usage.js --output-report node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales κόμβος i18ntk-usage.js --/output-usage.js --/output-report node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales node i18ntk-usage.js --/output-usage.js --/output-usage.js --/output-report node.", "source_directory_thissourcedir": "📁 Κατάλογος πηγής: {sourceDir}", "translationCompletenessTitle": "🌍 Πληρότητα μετάφρασης:", "i18n_directory_thisi18ndir": "🌐 Κατάλογος I18n: {i18nDir}", "failed_to_parse_filename_error": "⚠️ Αποτυχία ανάλυσης {fileName}: {errorMessage}", "analyzing_source_files": "🔍 Ανάλυση αρχείων πηγής...", "found_files_in_source": "📂 Βρέθηκε {numFiles} αρχεία στον κατάλογο προέλευσης", "found_thisusedkeyssize_unique_": "🎯 Βρέθηκε {usedKeysSize} μοναδικά μεταχειρισμένα κλειδιά", "total_key_usages_totalkeysfoun": "📊 Συνολικές χρήσεις κλειδιών: {totalKeysFound}", "loading_available_translation_": "📋 Φόρτωση διαθέσιμων κλειδιών μετάφρασης...", "found_thisavailablekeyssize_av": "✅ Βρέθηκε {availableKeysSize} διαθέσιμα κλειδιά", "foundTranslationFiles": "✅ Βρέθηκε {count} αρχεία μετάφρασης", "errorReadingI18nDirectory": "⚠️ Σφάλμα κατά την ανάγνωση του καταλόγου i18n: {error}", "pressEnterToReturnToMenu": "📝 Πατήστε Enter για να επιστρέψετε στο κύριο μενού...", "notTranslatedKeysTotal": "⚠️ Μη μεταφρασμένα κλειδιά: {total}", "noSourceFilesFound": "⚠️ Δεν βρέθηκαν αρχεία πηγής στον κατάλογο προέλευσης.", "reviewNotTranslatedKeys": "💡 Ελέγξτε τα μη μεταφρασμένα κλειδιά", "analysisCompletedSuccessfully": "🎉 Η ανάλυση ολοκληρώθηκε με επιτυχία!", "detectedSourceDirectory": "Εντοπίστηκε κατάλογος πηγής: {sourceDir}", "detectedI18nDirectory": "Εντοπίστηκε κατάλογος i18n: {i18nDir}", "fileInfo": "📄 {namespace}: {keys} κλειδιά", "failedToAnalyzeUsage": "❌ Αποτυχία ανάλυσης χρήσης: {error}", "failedToAnalyzeFile": "❌ Απέτυχε η ανάλυση του αρχείου: {error}", "failedToExtractKeys": "❌ Αποτυχία εξαγωγής κλειδιών από {filePath}: {error}", "analysisFailedError": "❌ Η ανάλυση απέτυχε: {error}", "analyzerInitialized": "Αρχικοποιήθηκε ο αναλυτής", "analyzerInitFailed": "Η προετοιμασία του αναλυτή απέτυχε: {error}", "argsParsed": "Τα επιχειρήματα αναλύθηκαν", "processedFiles": "Επεξεργασμένο {processedFiles} του {totalFiles} αρχεία.", "argsParseFailed": "Η ανάλυση επιχειρημάτων απέτυχε: {error}", "translationDiscoveryError": "Σφάλμα εύρεσης μετάφρασης: {error}", "fileTraversalError": "Σφάλμα διέλευσης αρχείου: {error}", "sourceEqualsI18nWarn": "{reason}. Η ανάλυση χρήσης δεν θα σαρώσει τα αρχεία τοπικών ρυθμίσεων ως πηγαίο κώδικα.", "i18nEqualsSourceWarn": "⚠️ Ο κατάλογος I18n και ο κατάλογος πηγής είναι οι ίδιοι. Αυτό μπορεί να προκαλέσει προβλήματα με την ανάλυση.", "usageAnalysisFailed": "⚠️ Η ανάλυση χρήσης απέτυχε: {error}", "translationFileParseError": "⚠️ Σφάλμα ανάλυσης αρχείου μετάφρασης: {error}", "translationKeysLoadError": "⚠️ Σφάλμα φόρτωσης κλειδιών μετάφρασης: {error}", "languageCompletenessStats": "🌐 {language}: {translated}/{total} ({completeness}% μεταφρασμένο)", "missingKeysCount": "⚠️ Κλειδιά που λείπουν: {count}", "analyzingTranslationCompleteness": "Ανάλυση της πληρότητας της μετάφρασης...", "unusedKeysCount": "Αχρησιμοποίητα κλειδιά: {count}", "usedKeysCount": "Χρησιμοποιημένα κλειδιά: {count}", "availableKeysCount": "Διαθέσιμα κλειδιά: {count}", "analysisResults": "Αποτελέσματα ανάλυσης:", "i18nDirectoryNotFound": "⚠️ Ο κατάλογος I18n δεν βρέθηκε. Ελέγξτε τη διαδρομή.", "sourceDirectoryNotFound": "⚠️ Ο κατάλογος πηγής δεν βρέθηκε: {dir}", "checkUsage": { "title": "🔍 I18NTK USAGE ANALYSIS", "analyzing_source_files": "🔍 Ανάλυση αρχείων πηγής...", "source_directory_thissourcedir": "📁 Κατάλογος πηγής: {sourceDir}", "i18n_directory_thisi18ndir": "📁 Κατάλογος i18n: {i18nDir}", "found_files_in_source": "✅ Βρέθηκε {numFiles} αρχεία στον κατάλογο προέλευσης", "no_source_files_found": "⚠️ Δεν βρέθηκαν αρχεία πηγής στον καθορισμένο κατάλογο", "processedFiles": "📊 Επεξεργασμένο {processedFiles} του {totalFiles} αρχεία", "failedToProcessFile": "❌ Απέτυχε η επεξεργασία", "found_thisusedkeyssize_unique_": "🔍 Βρέθηκε {usedKeysSize} μοναδικά μεταχειρισμένα κλειδιά", "total_key_usages_totalkeysfoun": "📊 Συνολικές χρήσεις κλειδιών: {totalKeysFound}", "loading_available_translation_": "📂 Φόρτωση διαθέσιμων κλειδιών μετάφρασης...", "found_thisavailablekeyssize_av": "✅ Βρέθηκε {availableKeysSize} διαθέσιμα κλειδιά", "message": "Ανάλυση της χρήσης κλειδιού μετάφρασης στο έργο σας...", "usage_analysis_results": "📊 USAGE ANALYSIS RESULTS", "source_files_scanned_thisfileu": "📁 Τα αρχεία προέλευσης σαρώθηκαν: {fileUsageSize}", "available_translation_keys_thi": "✅ Διαθέσιμα κλειδιά μετάφρασης: {availableKeysSize}", "used_translation_keys_thisused": "🔍 Χρησιμοποιημένα κλειδιά μετάφρασης: {usedKeysSize}", "dynamic_keys_detected_dynamick": "⚡ Εντοπίστηκαν δυναμικά κλειδιά: {dynamicKeysLength}", "unused_keys_unusedkeyslength": "🗑️ Αχρησιμοποίητα κλειδιά: {unusedKeysLength}", "missing_keys_missingkeyslength": "❌ Κλειδιά που λείπουν: {missingKeysLength}", "translation_completeness_title": "📈 ΠΛΗΡΕΣΗ ΜΕΤΑΦΡΑΣΗΣ", "language_completeness_stats": "{language}: {translated}/{total} κλειδιά ({percentage}%)", "n_sample_unused_keys": "🗑️ ΔΕΙΓΜΑ ΑΧΡΗΣΙΜΟΠΟΙΗΤΩΝ ΚΛΕΙΔΙΩΝ (πρώτα 5):", "key": "🔑 {key}", "and_unusedkeyslength_5_more": "... και {count} περισσότερα αχρησιμοποίητα κλειδιά", "n_sample_missing_keys": "❌ ΔΕΙΓΜΑ ΚΛΕΙΔΙΩΝ ΠΟΥ ΛΕΙΠΟΥΝ (πρώτα 5):", "and_missingkeyslength_5_more": "... και {count} περισσότερα κλειδιά που λείπουν", "n_generating_detailed_report": "📊 Δημιουργία λεπτομερούς αναφοράς...", "report_saved_reportpath": "📄 Η αναφορά αποθηκεύτηκε: {reportPath}", "n_recommendations": "💡 ΠΡΟΤΑΣΕΙΣ:", "consider_removing_unused_trans": "🗑️ Εξετάστε το ενδεχόμενο κατάργησης μεταφράσεων που δεν χρησιμοποιούνται για να μειώσετε το μέγεθος του πακέτου", "add_missing_translation_keys_t": "➕ Προσθέστε κλειδιά μετάφρασης που λείπουν για να διατηρήσετε τη συνέπεια", "review_dynamic_keys_manually_t": "🔍 Ελέγξτε τα δυναμικά κλειδιά με μη αυτόματο τρόπο (μπορεί να είναι έγκυρα)", "all_translation_keys_are_prope": "✅ Όλα τα κλειδιά μετάφρασης χρησιμοποιούνται σωστά!", "n_next_steps": "🎯 NEXT STEPS:", "2_check_the_detailed_report_fo": "2. Ελέγξτε τη λεπτομερή αναφορά για συγκεκριμένα θέματα", "help_message": "I18n Χρήση Αναλυτή Χρήσης: node i18ntk-usage.js [επιλογές] Επιλογές: --source-dir <dir> Κατάλογος πηγής για σάρωση (προεπιλογή: ./src) --i18n-dir <dir> Κατάλογος I18n (προεπιλογή: ./src/locales) --output-report Δημιουργία λεπτομερούς αναφοράς --output-dir <dir> Κατάλογος εξόδου για αναφορές (προεπιλογή: ./αναφορές) --βοήθεια Εμφάνιση αυτής της βοήθειας Παραδείγματα: κόμβος i18ntk-usage.js --output-report node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales κόμβος i18ntk-usage.js --/output-usage.js --/output-report node i18ntk-usage.js --source-dir=./app --i18n-dir=./locales node i18ntk-usage.js --/output-usage.js --/output-usage.js --/output-report node.", "1_review_the_analysis_results": "1. Ελέγξτε τα αποτελέσματα της ανάλυσης στην κονσόλα ή στην αναφορά που δημιουργήθηκε.", "2_run_with_outputreport_for_de": "2. Εκτελέστε με --output-report για λεπτομερή αναφορά.", "3_remove_unused_keys_or_add_mi": "3. Αφαιρέστε τα αχρησιμοποίητα κλειδιά ή προσθέστε κλειδιά που λείπουν στον πηγαίο κώδικα.", "4_rerun_analysis_to_verify_imp": "4. Επαναλάβετε την ανάλυση για να επαληθεύσετε τις βελτιώσεις.", "noSourceFilesFound": "Δεν βρέθηκαν αρχεία πηγής για ανάλυση.", "i18nDirectoryNotFound": "Ο κατάλογος I18n δεν βρέθηκε: {i18nDir}", "noTranslationLanguagesFound": "Δεν βρέθηκαν γλώσσες μετάφρασης.", "failedToAnalyzeFile": "Απέτυχε η ανάλυση του αρχείου {filePath}: {error}", "failedToAnalyzeLanguage": "Απέτυχε η ανάλυση της γλώσσας {language}: {error}", "translationCompletenessAnalysisFailed": "Η ανάλυση πληρότητας μετάφρασης απέτυχε: {error}", "n": "\\n" }, "complete": { "configLoadedSuccessfully": "Η διαμόρφωση φορτώθηκε με επιτυχία", "configLoadingFailed": "Η φόρτωση της διαμόρφωσης απέτυχε", "title": "🌍 ΟΛΟΚΛΗΡΩΣΗ ΜΕΤΑΦΡΑΣΗΣ I18NTK", "separator": "============================================================", "sourceDir": "📁 Κατάλογος πηγής: {sourceDir}", "sourceLanguage": "🌐 Γλώσσα πηγής: {sourceLanguage}", "dryRunMode": "🧪 Λειτουργία ξηρής λειτουργίας - δεν θα γίνουν αλλαγές", "languages": "🌍 Διαθέσιμες γλώσσες: {languages}", "addingMissingKeys": "➕ Προσθήκη κλειδιών που λείπουν στα αρχεία μετάφρασης...", "processing": "🔄 Επεξεργασία {language}...", "addedKeys": "✅ Προστέθηκε {count} λείπουν κλειδιά", "changeDetails": "📝 {file}: {key}", "andMore": "...και {count} περισσότερο", "noChangesNeeded": "✅ Δεν χρειάζονται αλλαγές για {language}", "summaryTitle": "📊 ΣΥΝΟΨΗ ΟΛΟΚΛΗΡΩΣΗΣ", "totalChanges": "📝 Συνολικές αλλαγές: {totalChanges}", "languagesProcessed": "🌍 Γλώσσες που υποβλήθηκαν σε επεξεργασία: {languagesProcessed}", "missingKeysAdded": "➕ Προστέθηκαν κλειδιά που λείπουν: {missingKeysAdded}", "nextStepsTitle": "📋 NEXT STEPS", "nextStep1": "1. Εκτελέστε την ανάλυση χρήσης:", "nextStep2": "κόμβος i18ntk-usage.js --output-report", "nextStep3": "2. Επικύρωση μεταφράσεων:", "nextStep4": "κόμβος i18ntk-validate.js", "nextStep5": "3. Αναλύστε μοτίβα:", "nextStep6": "κόμβος i18ntk-analyze.js", "allKeysAvailable": "🎉 Όλα τα κλειδιά μετάφρασης είναι πλέον διαθέσιμα!", "runWithoutDryRun": "💡 Εκτελέστε χωρίς --dry-run για να εφαρμόσετε αλλαγές", "deletingOldReport": "🗑️ Διαγραφή παλιάς αναφοράς...", "generatingFreshAnalysis": "📊 Δημιουργία νέας ανάλυσης χρήσης...", "couldNotGenerate": "❌ Δεν ήταν δυνατή η δημιουργία ανάλυσης χρήσης", "reportNotFound": "📋 Η αναφορά χρήσης δεν βρέθηκε. Χρήση κοινών πλήκτρων...", "foundMissingKeys": "📋 Βρέθηκε {count} λείπουν κλειδιά από την ανάλυση χρήσης", "couldNotParse": "❌ Δεν ήταν δυνατή η ανάλυση της αναφοράς χρήσης. Χρήση κοινών πλήκτρων..." }, "noTranslationLanguagesFound": "Δεν βρέθηκαν γλώσσες μετάφρασης", "failedToAnalyzeLanguage": "Απέτυχε η ανάλυση της γλώσσας", "translationCompletenessAnalysisFailed": "Η ανάλυση πληρότητας μετάφρασης απέτυχε", "failedToProcessFile": "Απέτυχε η επεξεργασία του αρχείου:", "failedToSaveReport": "Αποτυχία αποθήκευσης αναφοράς χρήσης: {error}", "i18nDirectoryDoesNotExist": "Ο κατάλογος I18n δεν υπάρχει: {dir}", "reportSavedTo": "Η αναφορά χρήσης αποθηκεύτηκε σε: {reportPath}", "sourceDirectoryDoesNotExist": "Ο κατάλογος πηγής δεν υπάρχει: {dir}", "noSourceDirectoryConfigured": "(καμία ρύθμιση παραμέτρων)" }, "validate": { "help_message": "I18n Χρήση εργαλείου επικύρωσης μετάφρασης: node i18ntk-validate.js [επιλογές] Επιλογές: --source-dir <dir> Κατάλογος πηγής για σάρωση (προεπιλογή: ./src) --i18n-dir <dir> Κατάλογος I18n (προεπιλογή: ./src/locales) --output-report Δημιουργία λεπτομερούς αναφοράς --output-dir <dir> Κατάλογος εξόδου για αναφορές (προεπιλογή: ./αναφορές) --help Εμφάνιση αυτής της βοήθειας Παραδείγματα: κόμβος i18ntk-validate.js --output-report node i18ntk-validate.js --source-dir=./app --i18n-dir=./locales κόμβος i18ntk-validate.", "title": "🔍 I18n Translation Validator", "message": "Έναρξη διαδικασίας επικύρωσης...", "sourceDirectory": "📁 Κατάλογος πηγής: {dir}", "sourceLanguage": "🌍 Γλώσσα πηγής: {sourceLanguage}", "strictMode": "⚙️ Αυστηρή λειτουργία: {mode}", "noTargetLanguages": "Δεν έχουν διαμορφωθεί γλώσσες προορισμού. παράβλεψη επικύρωσης στόχου. Προσθήκη γλωσσών μέσω του \"i18ntk init --languages=de,fr\".", "validatingLanguages": "🌍 Γλώσσες επικύρωσης: {langs}", "validatingLanguage": "🔍 Γλώσσα επικύρωσης: {lang}", "filesCount": "📄 Αρχεία: {count}", "keysCount": "🔑 Κλειδιά: {count}", "missingFilesCount": "📁 Αρχεία που λείπουν: {count}", "syntaxErrorsCount": "❌ Συντακτικά σφάλματα: {count}", "translationPercentage": "🎯 Μετάφραση: {percentage}% ({translated}/{total} κλειδιά)", "validationSummary": "📊 ΣΥΝΟΨΗ ΕΠΙΚΥΡΩΣΗΣ", "validation_failed": "❌ Η επικύρωση απέτυχε: {error}", "totalErrors": "❌ Σύνολο σφαλμάτων: {count}", "totalWarnings": "⚠️ Συνολικές προειδοποιήσεις: {count}", "errorsSection": "❌ ERRORS", "warningsSection": "⚠️ WARNINGS", "recommendationsSection": "💡 ΠΡΟΤΑΣΕΙΣ", "fixErrorsFirst": "1. Διορθώστε πρώτα όλα τα σφάλματα", "resolveMissingFilesAndSyntaxErrors": "1. Επιλύστε τα αρχεία που λείπουν και τα συντακτικά σφάλματα", "fixStructuralInconsistencies": "2. Διορθώστε δομικές ασυνέπειες", "completeMissingTranslations": "3. Συμπληρώστε τις μεταφράσεις που λείπουν", "rerunValidation": "4. Εκτελέστε ξανά την επικύρωση για να επαληθεύσετε τις διορθώσεις", "addressWarnings": "Απευθυνθείτε σε προειδοποιήσεις για βελτίωση της ποιότητας", "reviewWarnings": "Ελέγξτε τις προειδοποιήσεις και διορθώστε όπου χρειάζεται", "considerRunningWithStrict": "2. Εξετάστε το ενδεχόμενο εκτέλεσης με --strict flag για αυστηρότερη επικύρωση", "allValidationsPassed": "🎉 Όλες οι επικυρώσεις πέρασαν!", "considerRunningUsageAnalysis": "Εξετάστε το ενδεχόμενο εκτέλεσης ανάλυσης χρήσης: node i18ntk-usage.js", "deletedOldReport": "🗑️ Διαγράφηκε η παλιά αναφορά επικύρωσης", "sourceDir": "📁 Κατάλογος πηγής: {sourceDir}", "i18nDir": "🌐 Κατάλογος I18n: {i18nDir}", "loadingTranslationFiles": "📋 Φόρτωση αρχείων μετάφρασης...", "foundTranslationFilesCount": "✅ Βρέθηκε {count} αρχεία μετάφρασης", "analyzingTranslations": "🔍 Ανάλυση μεταφράσεων...", "validationCompletedSuccessfully": "🎉 Η επικύρωση ολοκληρώθηκε με επιτυχία!", "validationErrorsFound": "⚠️ Βρέθηκαν σφάλματα επικύρωσης: {count}", "validationWarningsFound": "⚠️ Βρέθηκαν προειδοποιήσεις επικύρωσης: {count}", "validationPassed": "✅ Η επικύρωση πέρασε χωρίς σφάλματα", "validationFailed": "Η επικύρωση απέτυχε: {error}", "startingValidationProcess": "🔍 Έναρξη διαδικασίας επικύρωσης...", "validationProcessCompletedSuccessfully": "✅ Η διαδικασία επικύρωσης ολοκληρώθηκε με επιτυχία", "stackTrace": "Ίχνη στοίβας: {stack}", "authenticationFailed": "❌ Ο έλεγχος ταυτότητας απέτυχε. Δεν επιτρέπεται η πρόσβαση.", "fatalValidationError": "❌ Θανατηφόρο σφάλμα επικύρωσης: {error}", "configAccess": "Πρόσβαση στις ρυθμίσεις παραμέτρων για επικύρωση", "configValidated": "Η διαμόρφωση επικυρώθηκε με επιτυχία", "configError": "Σφάλμα διαμόρφωσης: {error}", "validatorInit": "Εκκίνηση του εργαλείου επικύρωσης I18n", "validatorInitialized": "Το πρόγραμμα επικύρωσης I18n ξεκίνησε με επιτυχία", "validatorInitError": "Σφάλμα προετοιμασίας επικυρωτή: {error}", "argsParsing": "Ανάλυση ορισμάτων γραμμής εντολών", "argsParsed": "Τα ορίσματα της γραμμής εντολών αναλύθηκαν με επιτυχία", "argsParseError": "Σφάλμα ανάλυσης επιχειρημάτων: {error}", "languagesScan": "Σάρωση διαθέσιμων γλωσσών", "languagesFound": "Θεμελιώ {count} γλώσσες", "languagesScanError": "Σφάλμα σάρωσης γλώσσας: {error}", "filesScan": "Θεμελιώ {count} αρχεία σε {language}", "filesScanError": "Σφάλμα σάρωσης αρχείων: {error}", "jsonValidated": "Η σύνταξη JSON επικυρώθηκε: {filePath}", "jsonValidationError": "Σφάλμα επικύρωσης JSON: {error}", "languageValidation": "Γλώσσα επικύρωσης: {language}", "languageValidationError": "Σφάλμα επικύρωσης γλώσσας: {error}", "fileDeleted": "Το αρχείο διαγράφηκε", "runStarted": "Έναρξη εκτέλεσης επικύρωσης", "runCompleted": "Η εκτέλεση επικύρωσης ολοκληρώθηκε με επιτυχία", "runError": "Η εκτέλεση επικύρωσης απέτυχε: {error}", "scriptExecution": "Εκτέλεση σεναρίου", "validationCompleted": "Ολοκληρώθηκε η επικύρωση", "validationError": "Σφάλμα επικύρωσης: {error}", "separator": "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━", "languageHeader": "🌐 Γλώσσα: {language}", "validationResults": "📊 Αποτελέσματα επικύρωσης", "noErrors": "✅ Δεν βρέθηκαν σφάλματα", "noWarnings": "✅ Δεν βρέθηκαν προειδοποιήσεις", "summaryHeader": "📋 OVERALL SUMMARY", "progressIndicator": "⏳ Επεξεργασία...", "completedIndicator": "✅ Ολοκληρώθηκε", "errorIndicator": "❌ Σφάλμα", "warningIndicator": "⚠️ Προειδοποίηση", "infoIndicator": "ℹ️ Πληροφορίες", "sourceDirNotConfigured": "Ο κατάλογος προέλευσης δεν έχει ρυθμιστεί", "sourceLanguageNotConfigured": "Η γλώσσα πηγής δεν έχει διαμορφωθεί", "translationFunctionNotInitialized": "Η λειτουργία μετάφρασης δεν προετοιμάστηκε σωστά", "sourceLanguageDirectoryNotFound": "Ο κατάλογος γλώσσας πηγής δεν βρέθηκε", "specifiedLanguageNotFound": "Η καθορισμένη γλώσσα δεν βρέθηκε", "noJsonFilesFound": "Δεν βρέθηκαν αρχεία JSON στον κατάλογο προέλευσης: {sourceDir}", "i18nDirectoryNotFound": "Ο κατάλογος I18n δεν βρέθηκε: {i18nDir}", "invalidDirectoryPaths": "Εντοπίστηκαν μη έγκυρες διαδρομές καταλόγου", "invalidSampleFilePath": "Μη έγκυρη διαδρομή δείγματος αρχείου", "failedToCreateSampleTranslationFile": "Αποτυχία δημιουργίας δείγματος αρχείου μετάφρασης", "invalidFilePathDetected": "Εντοπίστηκε μη έγκυρη διαδρομή αρχείου",