diff --git a/frontend/src/i18n/index.js b/frontend/src/i18n/index.js index 4c7db39..d124c6b 100644 --- a/frontend/src/i18n/index.js +++ b/frontend/src/i18n/index.js @@ -2,6 +2,7 @@ import { ref } from 'vue' import en from './locales/en.js' import es from './locales/es.js' import ptBR from './locales/pt-BR.js' +import el from './locales/el.js' // Registry of available locales. To add a new language: // 1. Create ./locales/.js exporting the same key shape as en.js @@ -12,6 +13,7 @@ export const AVAILABLE_LOCALES = [ { code: 'en', name: 'English', messages: en }, { code: 'es', name: 'Español', messages: es }, { code: 'pt-BR', name: 'Português (BR)', messages: ptBR }, + { code: 'el', name: 'Ελληνικά', messages: el }, ] const DEFAULT_LOCALE = 'en' diff --git a/frontend/src/i18n/locales/el.js b/frontend/src/i18n/locales/el.js new file mode 100644 index 0000000..1c21014 --- /dev/null +++ b/frontend/src/i18n/locales/el.js @@ -0,0 +1,193 @@ +export default { + language: { + name: 'Greek', + }, + common: { + cancel: 'Ακύρωση', + save: 'Αποθήκευση', + close: 'Κλείσιμο', + delete: 'Διαγραφή', + refresh: 'Ανανέωση', + download: 'Λήψη', + unknownArtist: 'Άγνωστος καλλιτέχνης', + unknownTrack: 'Άγνωστο κομμάτι', + previousPage: 'Προηγούμενη σελίδα', + nextPage: 'Επόμενη σελίδα', + }, + nav: { + home: 'Αρχική', + library: 'Βιβλιοθήκη', + monitor: 'Παρακολούθηση Playlist ', + queue: 'Ουρά Αναπαραγωγής', + player: 'Αναπαραγωγή', + settings: 'Ρυθμίσεις', + switchToLight: 'Αλλαγή σε φωτεινό θέμα', + switchToDark: 'Αλλαγή σε σκοτεινό θέμα', + }, + hero: { + noAccount: 'δεν απαιτείται λογαριασμός Spotify', + tagline: + 'Η μουσική σου με πλήρη μεταδεδομένα, εξώφυλλα άλμπουμ και στίχους – με ένα κλικ.', + songs: 'Τραγούδια', + albums: 'Άλμπουμ', + playlists: 'Λίστες αναπαραγωγής', + }, + search: { + placeholder: 'Αναζήτηση, επικόλληση συνδέσμου Spotify ή YouTube Music...', + title: 'Αποτελέσματα αναζήτησης', + matchesFor: 'Εμφάνιση αποτελεσμάτων για', + songsCount: '– {count} τραγούδι', + songsCountPlural: '– {count} τραγούδια', + typeToBegin: 'Πληκτρολόγησε κάτι στη μπάρα αναζήτησης για να ξεκινήσεις.', + error: 'Κάτι πήγε στραβά.', + errorWithDetail: 'Κάτι πήγε στραβά: {detail}', + empty: 'Δεν βρέθηκαν τραγούδια.', + emptyHint: 'Δοκίμασε άλλη αναζήτηση – ο συνδυασμός καλλιτέχνης + τίτλος συνήθως λειτουργεί καλύτερα.', + openOnSpotify: 'Άνοιγμα στο Spotify', + inQueue: 'Στην ουρά', + download: 'Λήψη', + previousPage: 'Προηγούμενη σελίδα', + nextPage: 'Επόμενη σελίδα', + }, + queue: { + title: 'Ουρά λήψεων', + subtitle: + "Τραγούδια που έχετε προσθέσει στην ουρά. Η πρόοδος, η κατάσταση και οι γρήγορες ενέργειες εμφανίζονται εδώ.", + empty: 'Δεν υπάρχει κάτι στην ουρά αυτή τη στιγμή.', + emptyHint: 'Αναζητήστε ένα τραγούδι και πατήστε λήψη για να ξεκινήσετε.', + saveToDevice: 'Αποθήκευση στη συσκευή', + removeFromQueue: 'Αφαίρεση από την ουρά', + clearAll: 'Εκκαθάριση όλων', + clearAllPrompt: 'Αφαίρεση όλων των στοιχείων από την ουρά;', + forceAudio: 'Εξαναγκασμός πηγής ήχου', + overridePlaceholder: 'Επικολλήστε ένα URL από το YouTube ή το YouTube Music…', + applyOverride: 'Εφαρμογή', + invalidYouTubeURL: 'Μη έγκυρο URL YouTube', + }, + library: { + title: 'Βιβλιοθήκη', + subtitle: "Μουσική που έχετε ήδη κατεβάσει. Ακούστε, κατεβάστε ξανά ή αφαιρέστε.", + emptyHint: 'Βρείτε ένα τραγούδι για να αρχίσετε να γεμίζετε τη βιβλιοθήκη σας.', + failedLoad: 'Αποτυχία φόρτωσης λήψεων.', + failedDelete: 'Αποτυχία διαγραφής του αρχείου {file}', + deletePrompt: 'Διαγραφή του αρχείου "{file}";', + countOne: '{count} αρχείο στη βιβλιοθήκη σας', + countMany: '{count} αρχεία στη βιβλιοθήκη σας', + downloadToDevice: 'Λήψη στη συσκευή', + deleteFile: 'Διαγραφή αρχείου', + play: 'Αναπαραγωγή', + }, + monitor: { + title: 'Παρακολούθηση Playlist', + subtitle: + 'Προσθέστε λίστες αναπαραγωγής του Spotify για παρακολούθηση. Τα νέα κομμάτια που προστίθενται σε αυτές τις λίστες θα κατεβαίνουν αυτόματα.', + watchNew: 'Παρακολούθηση νέας λίστας', + urlPlaceholder: 'Επικολλήστε ένα URL λίστας αναπαραγωγής Spotify…', + watch: 'Παρακολούθηση', + failedAdd: 'Αποτυχία προσθήκης λίστας. Ελέγξτε το URL και δοκιμάστε ξανά.', + empty: 'Δεν παρακολουθείται καμία λίστα αναπαραγωγής ακόμα.', + emptyHint: 'Επικολλήστε έναν σύνδεσμο λίστας Spotify παραπάνω για να ξεκινήσετε.', + active: 'Ενεργή', + paused: 'Σε παύση', + everyInterval: 'Κάθε {interval}', + tracksOne: '{count} κομμάτι', + tracksMany: '{count} κομμάτια', + checked: 'Ελέγχθηκε {when}', + notChecked: 'Δεν έχει ελεγχθεί ακόμα', + pause: 'Παύση παρακολούθησης', + resume: 'Συνέχιση παρακολούθησης', + checkNow: 'Έλεγχος τώρα', + stop: 'Διακοπή παρακολούθησης', + deletePrompt: 'Διακοπή παρακολούθησης της λίστας "{name}";', + info: 'Όταν προσθέτετε μια λίστα αναπαραγωγής, το Downtify κατεβάζει κάθε κομμάτι που περιέχει εκείνη τη στιγμή και στη συνέχεια συνεχίζει να την παρακολουθεί. Τυχόν τραγούδια που προστίθενται αργότερα στο Spotify εντοπίζονται και κατεβαίνουν αυτόματα στον επόμενο προγραμματισμένο έλεγχο.', + every15: 'Κάθε 15 λεπτά', + every30: 'Κάθε 30 λεπτά', + every1h: 'Κάθε 1 ώρα', + every3h: 'Κάθε 3 ώρες', + every6h: 'Κάθε 6 ώρες', + every12h: 'Κάθε 12 ώρες', + every1d: 'Κάθε μέρα', + every1w: 'Κάθε εβδομάδα', + every2w: 'Κάθε 2 εβδομάδες', + every1mo: 'Κάθε μήνα', + short15: '15 λεπ.', + short30: '30 λεπ.', + short1h: '1 ώ.', + short3h: '3 ώ.', + short6h: '6 ώ.', + short12h: '12 ώ.', + short1d: '1 ημέρα', + short1w: '1 εβδ.', + short2w: '2 εβδ.', + short1mo: '1 μήν.', + minSuffix: 'λεπ.', + hourSuffix: 'ώ.', + daySuffix: 'ημέρα', + daysSuffix: 'ημέρες', + weekSuffix: 'εβδομάδα', + weeksSuffix: 'εβδομάδες', + monthSuffix: 'μήνας', + monthsSuffix: 'μήνες', + timeJustNow: 'μόλις τώρα', + timeMinAgo: 'πριν από {n} λεπ.', + timeHourAgo: 'πριν από {n} ώ.', + timeDayAgo: 'πριν από {n} ημέρες', + }, + settings: { + title: 'Ρυθμίσεις', + subtitle: 'Προσαρμόστε τον τρόπο με τον οποίο το Downtify ανακτά και προσθέτει μεταδεδομένα στη μουσική σας.', + audioSource: 'Πηγή ήχου', + lyricsSource: 'Πηγή στίχων', + lyricsHint: 'μόνο το lrclib είναι ενεργό', + downloadLyrics: 'Λήψη στίχων', + downloadLyricsHint: + 'Ενσωμάτωση στίχων στα αρχεία ήχου και δημιουργία συνοδευτικών αρχείων .lrc', + lyricsProvider: 'Πάροχος', + format: 'Μορφή αρχείου', + quality: 'Ποιότητα', + qualityIgnored: 'αγνοείται (lossless)', + playlistsSection: 'Λίστες αναπαραγωγής (Playlists)', + generateM3u: 'Δημιουργία αρχείου M3U για τις λίστες', + generateM3uHint: + 'Δημιουργεί ένα αρχείο Playlists/<όνομα>.m3u δίπλα στα κομμάτια, τόσο για χειροκίνητες λήψεις λιστών όσο και για τους ελέγχους του Playlist Monitor.', + organizationSection: 'Οργάνωση αρχείων', + organizeByArtist: 'Οργάνωση ανά καλλιτέχνη', + organizeByArtistHint: + 'Αποθήκευση τραγουδιών σε υποφακέλους με το όνομα του καλλιτέχνη. Τα κομμάτια από λίστες αναπαραγωγής τοποθετούνται επίσης στον φάκελο του καλλιτέχνη τους αντί για ξεχωριστό φάκελο λίστας.', + parallelDownloads: 'Παράλληλες λήψεις', + parallelDownloadsHint: + 'Μέγιστος αριθμός τραγουδιών που κατεβαίνουν ταυτόχρονα. Οι υψηλότερες τιμές είναι πιο γρήγορες αλλά καταναλώνουν περισσότερο εύρος ζώνης (bandwidth).', + saved: 'Οι αλλαγές αποθηκεύτηκαν', + saveError: 'Αδυναμία αποθήκευσης ρυθμίσεων.', + language: 'Γλώσσα', + languageHint: 'Επιλέξτε τη γλώσσα της διεπαφής', + }, + player: { + title: 'Αναπαραγωγή', + subtitle: 'Ακούστε τη μουσική που έχετε κατεβάσει.', + empty: 'Δεν υπάρχει κάτι για αναπαραγωγή ακόμα', + emptyHint: 'Κατεβάστε μουσική για να ξεκινήσετε την ακρόαση.', + queue: 'Ουρά', + play: 'Αναπαραγωγή', + pause: 'Παύση', + previous: 'Προηγούμενο', + next: 'Επόμενο', + shuffle: 'Τυχαία σειρά', + shuffleOn: 'Τυχαία σειρά ενεργή', + shuffleOff: 'Τυχαία σειρά ανενεργή', + repeatOff: 'Επανάληψη ανενεργή', + repeatAll: 'Επανάληψη όλων', + repeatOne: 'Επανάληψη ενός', + volume: 'Ένταση', + mute: 'Σίγαση', + unmute: 'Κατάργηση σίγασης', + nowPlaying: 'Τώρα αναπαράγεται', + upNext: 'Επόμενο στην ουρά', + playFromLibrary: 'Άνοιγμα στο player', + countOne: '{count} κομμάτι', + countMany: '{count} κομμάτια', + }, + footer: { + tagline: 'Πρόγραμμα λήψης μουσικής ανοιχτού κώδικα', + }, +}