Merge branch 'develop' into enhancement/radio

This commit is contained in:
Core 2022-05-07 06:50:01 +01:00
commit a9fc51e1de
No known key found for this signature in database
GPG key ID: FE9BF1B547F8F3C6
14 changed files with 577 additions and 248 deletions

View file

@ -1,21 +1,26 @@
version: 2.1
orbs: # adds orbs to your configuration
jira: circleci/jira@1.0.5 # invokes the Jira orb, making its commands accessible
branches:
only:
- main
- develop
jobs:
build:
working_directory: ~/Cider
executors:
cider-ci:
docker:
- image: circleci/node:16
working_directory: ~/Cider
orbs: # Add orbs to your configuration
jira: circleci/jira@1.0.5 # invokes the Jira orb, making its commands accessible
# The jobs for this project
jobs:
prepare-build:
executor: cider-ci
steps:
- checkout
- run:
name: Set App Version
command: echo "export APP_VERSION=$(grep '"version":.*' package.json | cut -d '"' -f 4 | head -1)" >> $BASH_ENV
# - run:
# name: Rename Repository
# command: sed -i 's/github:ciderapp\/Cider/github:ciderapp\/cider-releases/' package.json
- run:
name: Update Package Managers
command: sudo npm update -g npm yarn
@ -24,7 +29,7 @@ jobs:
keys:
- yarn-packages-{{ checksum "cider.lock" }}
- run:
name: Install Dependencies
name: Install Node Dependencies
command: yarn install --frozen-lockfile --cache-folder ~/.cache/yarn
- save_cache:
name: Save Yarn Package Cache
@ -32,50 +37,160 @@ jobs:
paths:
- ~/.cache/yarn
- run:
name: Install system build dependencies
command: |
sudo apt-get update -y
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
sudo apt-get install -y dpkg fakeroot wine64
sudo dpkg --add-architecture i386
sudo apt-get update -y
sudo apt-get install -y wine32
sudo apt install -y gh
name: TypeScript Compile
command: yarn build
- persist_to_workspace:
# Must be an absolute path, or relative path from working_directory. This is a directory on the container which is
# taken to be the root directory of the workspace.
root: .
# Must be relative path from root
paths:
- node_modules
- build
- resources
- yarn.lock
- package.json
- winget.json # winget.json is a file that is generated by the winget package manager
- LICENSE
- license.txt
build-linux:
executor: cider-ci
steps:
- attach_workspace:
at: ~/Cider
- run:
name: Fix Versioning and Add Channel
command: yarn circle:script
- run:
name: TypeScript Compile
command: yarn build
- run:
name: Generate Builds (Linux)
command: yarn electron-builder -l -p never
post-steps:
- jira/notify
- persist_to_workspace:
root: .
paths:
- dist/*.deb
- dist/*.AppImage
- dist/*.snap
- dist/latest-linux.yml
build-windows:
executor: cider-ci
steps:
- attach_workspace:
at: ~/Cider
- run:
name: Install Windows System Build Dependencies
command: |
sudo apt-get update -y
sudo apt-get install -y dpkg fakeroot wine64
sudo dpkg --add-architecture i386
sudo apt-get update -y
sudo apt-get install -y wine32
- run:
name: Fix Versioning and Add Channel
command: yarn circle:script
- run:
name: Generate Builds (Windows)
command: yarn electron-builder -w --x64 -p never
post-steps:
- jira/notify
- persist_to_workspace:
root: .
paths:
- dist/*.exe
- dist/Cider-Setup-*.exe.blockmap
- dist/latest.yml
build-winget:
executor: cider-ci
steps:
- attach_workspace:
at: ~/Cider
- run:
name: Install Windows System Build Dependencies
command: |
sudo apt-get update -y
sudo apt-get install -y dpkg fakeroot wine64
sudo dpkg --add-architecture i386
sudo apt-get update -y
sudo apt-get install -y wine32
- run:
name: Fix Versioning and Add Channel
command: yarn circle:script
- run:
name: Generate Builds (Winget)
command: yarn electron-builder --win -c winget.json -p never
post-steps:
- jira/notify
- persist_to_workspace:
root: .
paths:
- dist/*.exe
- dist/Cider-Setup-winget-*.exe.blockmap
release:
executor: cider-ci
steps:
- attach_workspace:
at: ~/Cider/
- run:
name: Installing GitHub Command Line Interface
command: |
sudo apt-get update -y
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
sudo apt-get update -y
sudo apt install -y gh
- run:
name: Move Build Files
command: |
mkdir ~/Cider/dist/artifacts/
mv ~/Cider/dist/*.exe ~/Cider/dist/artifacts
mv ~/Cider/dist/*.deb ~/Cider/dist/artifacts
mv ~/Cider/dist/*.AppImage ~/Cider/dist/artifacts
mv ~/Cider/dist/*.snap ~/Cider/dist/artifacts
mv ~/Cider/dist/*.yml ~/Cider/dist/artifacts
mv ~/Cider/dist/*.blockmap ~/Cider/dist/artifacts
mkdir ~/Cider/dist/artifacts/
mv ~/Cider/dist/*.exe ~/Cider/dist/artifacts
mv ~/Cider/dist/*.deb ~/Cider/dist/artifacts
mv ~/Cider/dist/*.AppImage ~/Cider/dist/artifacts
mv ~/Cider/dist/*.snap ~/Cider/dist/artifacts
mv ~/Cider/dist/*.yml ~/Cider/dist/artifacts
mv ~/Cider/dist/*.blockmap ~/Cider/dist/artifacts
- store_artifacts:
path: ~/Cider/dist/artifacts
path: ~/Cider/dist/artifacts
- run:
name: Publish Release
command: |
gh release create "v${APP_VERSION}.${CIRCLE_BUILD_NUM}" --title "Cider Version ${APP_VERSION} - Build ${CIRCLE_BUILD_NUM} (${CIRCLE_BRANCH})" --generate-notes -R ciderapp/cider-releases ~/Cider/dist/artifacts/*.deb ~/Cider/dist/artifacts/*.AppImage ~/Cider/dist/artifacts/*.snap ~/Cider/dist/artifacts/*.exe ~/Cider/dist/artifacts/*.yml ~/Cider/dist/artifacts/*.blockmap
gh release create "v${APP_VERSION}.${CIRCLE_BUILD_NUM}" --title "Cider Version ${APP_VERSION} - Build ${CIRCLE_BUILD_NUM} (${CIRCLE_BRANCH})" --generate-notes -R ciderapp/cider-releases ~/Cider/dist/artifacts/*.deb ~/Cider/dist/artifacts/*.AppImage ~/Cider/dist/artifacts/*.snap ~/Cider/dist/artifacts/*.exe ~/Cider/dist/artifacts/*.yml ~/Cider/dist/artifacts/*.blockmap
# Orchestrate our job run sequence
workflows:
build_and_release:
jobs:
- prepare-build:
filters:
branches:
only: main
- build-windows:
requires:
- prepare-build
filters:
branches:
only: main
- build-linux:
requires:
- prepare-build
filters:
branches:
only: main
- build-winget:
requires:
- prepare-build
filters:
branches:
only: main
- release:
requires:
- build-windows
- build-linux
- build-winget
filters:
branches:
only: main

View file

@ -1,53 +1,46 @@
if (!process.env['CIRCLECI']) {
console.log(`[CIRCLECI SCRIPT] CircleCI not found... Aborting script`)
return
console.log(`[CIRCLECI SCRIPT] CircleCI not found... Aborting script`)
return
}
let fs = require('fs')
const {readFileSync, writeFile} = require('fs')
const pkg = JSON.parse(readFileSync('package.json').toString());
let channel = process.env['CIRCLE_BRANCH'];
var data = fs.readFileSync('package.json');
var package = JSON.parse(data);
let channel;
if (process.env['CIRCLE_BRANCH'] === 'lts') {
channel = 'latest'
channel = 'latest'
} else if (process.env['CIRCLE_BRANCH'] === 'main') {
channel = 'beta'
channel = 'beta'
} else if (process.env['CIRCLE_BRANCH'] === 'develop') {
channel = 'alpha'
} else {
channel = process.env['CIRCLE_BRANCH'] // It won't have auto update support
channel = 'alpha'
}
channel = channel.split('/').join('-')
// https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables
var pvers = package.version.split('.')
package.version = `${pvers[0]}.${pvers[1]}.${pvers[2]}-${channel}.${process.env['CIRCLE_BUILD_NUM']}`
const version = pkg.version.split('.');
pkg.version = `${version[0]}.${version[1]}.${version[2]}-${channel}`
// package.build.channel = channel
package.publish = {
"provider": "github",
"repo": "cider-releases",
"owner": "ciderapp",
"vPrefixedTagName": true,
"tag": `v${package.version}`,
"channel": channel,
"releaseType": "release"
pkg.publish = {
"provider": "github",
"repo": "cider-releases",
"owner": "ciderapp",
"vPrefixedTagName": true,
"tag": `v${pkg.version}`,
"channel": channel,
"releaseType": "release"
}
let {exec} = require('child_process')
exec('echo $APP_VERSION', {env: {'APP_VERSION': package.version}}, function (error, stdout, stderr)
{
console.log(stdout, stderr, error);
});
fs.writeFile('package.json', JSON.stringify(package), err => {
// error checking
if(err) throw err;
console.log(`VERSION CHANGED TO ${package.version}`);
const {exec} = require('child_process')
exec('echo $APP_VERSION', {env: {'APP_VERSION': pkg.version}}, function (error, stdout, stderr) {
console.log(stdout, stderr, error);
});
writeFile('package.json', JSON.stringify(pkg), err => {
// error checking
if (err) throw err;
console.log(`VERSION CHANGED TO ${pkg.version}`);
});

View file

@ -297,7 +297,44 @@ Update 28/04/2022 21:45 UTC
* `settings.option.general.resumetabs.description`: Added for `en_US`
* `settings.option.general.resumetabs.dynamic`: Added for `en_US`
* `settings.option.general.resumetabs.dynamic.description`: Added for `en_US`
* `term.dynamic`: Added for `en_US`
Update 29/04/2022 00:00 UTC
* `menubar.options.about`: Added for `en_US`
* `menubar.options.settings`: Added for `en_US`
* `menubar.options.quit`: Added for `en_US`
* `menubar.options.view`: Added for `en_US`
* `menubar.options.reload`: Added for `en_US`
* `menubar.options.forcereload`: Added for `en_US`
* `menubar.options.toggledevtools`: Added for `en_US`
* `menubar.options.window`: Added for `en_US`
* `menubar.options.minimize`: Added for `en_US`
* `menubar.options.toggleprivate`: Added for `en_US`
* `menubar.options.webremote`: Added for `en_US`
* `menubar.options.audio`: Added for `en_US`
* `menubar.options.plugins`: Added for `en_US`
* `menubar.options.control`: Added for `en_US`
* `menubar.options.next`: "Added for `en_US`
* `menubar.options.previous`: Added for `en_US`
* `menubar.options.volumeup`: Added for `en_US`
* `menubar.options.volumedown`: Added for `en_US`
* `menubar.options.browse`: Added for `en_US`
* `menubar.options.artists`: Added for `en_US`
* `menubar.options.search`: Added for `en_US`
* `menubar.options.albums`: Added for `en_US`
* `menubar.options.cast`: Added for `en_US`
* `menubar.options.account`: Added for `en_US`
* `menubar.options.accountsettings`: Added for `en_US`
* `menubar.options.signout`: Added for `en_US`
* `menubar.options.support`: Added for `en_US`
* `menubar.options.discord`: Added for `en_US`
* `menubar.options.github`: Added for `en_US`
* `menubar.options.report`: Added for `en_US`
* `menubar.options.bug`: Added for `en_US`
* `menubar.options.feature`: Added for `en_US`
* `menubar.options.trans`: Added for `en_US`
* `menubar.options.license`: Added for `en_US`
* `menubar.options.conf`: Added for `en_US`
Update 07/05/2022 04:00 UTC
* `term.personalStations`: Added for `en_US`
`term.amLive`: Added for `en_US`

View file

@ -10,6 +10,7 @@
"notification.updatingLibrarySongs": "Ενημέρωση βιβλιοθήκης τραγουδιών...",
"notification.updatingLibraryAlbums": "Ενημέρωση βιβλιοθήκης άλμπουμ...",
"notification.updatingLibraryArtists": "Ενημέρωση βιβλιοθήκης καλλιτεχνών...",
"term.variables": "Μεταβλητές",
"term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music",
"term.applePodcasts": "Apple Podcasts",
@ -20,9 +21,13 @@
"term.accountSettings": "Ρυθμίσεις λογαριασμού",
"term.logout": "Αποσύνδεση",
"term.login": "Σύνδεση",
"term.cast": "Μετάδοση",
"term.about": "Σχετικά με",
"term.privateSession": "Ιδιωτική περίοδος λειτουργίας",
"term.disablePrivateSession": "Απενεργ. ιδιωτικής περ. λειτουργίας",
"term.queue": "Ουρά",
"term.lyrics": "Στίχοι",
"term.miniplayer": "MiniPlayer",
"term.history": "Ιστορικό",
"term.search": "Εύρεση",
"term.library": "Βιβλιοθήκη",
@ -68,6 +73,7 @@
"term.viewAs": "Προβολή ως",
"term.viewAs.coverArt": "Εξώφυλλο",
"term.viewAs.list": "Λίστα",
"term.dynamic": "Δυναμικό",
"term.size": "Μέγεθος",
"term.size.normal": "Κανονικό",
"term.size.compact": "Συμπαγή",
@ -89,12 +95,26 @@
"term.time.added": "Προστέθηκε",
"term.time.released": "Κυκλοφόρησε",
"term.time.updated": "Ενημερώθηκε",
"term.time.days": "μέρες",
"term.time.day": {
"one": "μέρα",
"other": "μέρες"
},
"term.time.hours": "ώρες",
"term.time.hour": "ώρα",
"term.time.hour": {
"one": "ώρα",
"other": "ώρες"
},
"term.time.minutes": "λεπτά",
"term.time.minute": "λεπτό",
"term.time.minute": {
"one": "λεπτό",
"other": "λεπτά"
},
"term.time.seconds": "δευτερόλεπτα",
"term.time.second": "δευτερόλεπτο",
"term.time.second": {
"one": "δευτερόλεπτο",
"other": "δευτερόλεπτα"
},
"term.fullscreenView": "Πλήρης οθόνη",
"term.defaultView": "Κανονική οθόνη",
"term.audioSettings": "Ρυθμίσεις ήχου",
@ -114,7 +134,8 @@
"term.contributors": "Συνεισφέροντες",
"term.equalizer": "Ισοσταθμιστής",
"term.reset": "Επαναφορά",
"term.tracks": {
"term.tracks": "τραγούδια",
"term.track": {
"one": "τραγούδι",
"other": "τραγούδια"
},
@ -145,6 +166,7 @@
"term.noVideos": "Δεν βρέθηκαν βίντεο",
"term.plugin": "Πρόσθετα",
"term.pluginMenu": "Μενού πρόσθετων",
"term.pluginMenu.none": "Δεν υπάρχουν πρόσθετα",
"term.replay": "Replay",
"term.uniqueAlbums": "Μοναδικά άλμπουμ",
"term.uniqueArtists": "Μοναδικοί καλλιτέχνες",
@ -156,10 +178,12 @@
"term.plays": "Αναπαραγωγές",
"term.topGenres": "Κορυφαία είδη",
"term.confirmLogout": "Θέλετε σίγουρα να αποσυνδεθείτε;",
"term.creditDesignedBy": "Σχεδιάστηκε από ${authorUsername}",
"term.discNumber": "Δίσκος ${discNumber}",
"home.title": "Αρχική",
"home.recentlyPlayed": "Έπαιξαν πρόσφατα",
"home.recentlyAdded": "Πρόσφατες προσθήκες",
"home.artistsFeed": "Ροή των καλλιτεχνών σου",
"home.artistsFeed": "Ροή των καλλιτεχνών σας",
"home.artistsFeed.noArtist": "Ακολούθησε μερικούς καλλιτέχνες πρώτα και οι τελευταίες κυκλοφορίες τους θα εμφανίζονται εδώ",
"home.madeForYou": "Δημιουργήθηκε για εσάς",
"home.friendsListeningTo": "Οι φίλοι σου ακούν",
@ -176,6 +200,9 @@
"podcast.episodes": "Επεισόδια",
"podcast.playEpisode": "Αναπαραγωγή επεισοδίου",
"podcast.website": "Ιστότοπος Podcast",
"action.edit": "Επεξεργασία",
"action.done": "Τέλος",
"action.editTracklist": "Επεξεργασία λίστας τραγουδιών",
"action.addToLibrary": "Προσθήκη στη βιβλιοθήκη",
"action.addToLibrary.success": "Προστέθηκε στη βιβλιοθήκη",
"action.addToLibrary.error": "Σφάλμα Προσθήκης στη βιβλιοθήκης",
@ -202,6 +229,8 @@
"action.startRadio": "Έναρξη ραδιοφώνου",
"action.goToArtist": "Μετάβαση σε καλλιτέχνη",
"action.goToAlbum": "Μετάβαση σε άλμπουμ",
"action.showInPlaylist": "Εμφάνιση στη λίστα αναπαραγωγής",
"action.showInAppleMusic": "Εμφάνιση στο Apple Music",
"action.moveToTop": "Μετακίνηση στη κορυφή",
"action.share": "Κοινή χρήση",
"action.rename": "Μετονομασία",
@ -209,7 +238,7 @@
"action.unlove": "Αναίρεση \"Μου αρέσει\"",
"action.dislike": "Δεν μου αρέσει",
"action.undoDislike": "Αναίρεση \"Δεν μου αρέσει\"",
"action.showWebRemoteQR": "Εμφάνιση Web Remote QR",
"action.showWebRemoteQR": "Web Remote",
"action.playTracksNext": "Αναπαραγωγή ${app.selectedMediaItems.length} τραγουδιών ως επόμενων",
"action.playTracksLater": "Αναπαραγωγή ${app.selectedMediaItems.length} τραγουδιών αργότερα",
"action.removeTracks": "Αφαίρεση ${self.selectedItems.length} τραγουδιών από την ουρά",
@ -218,13 +247,23 @@
"action.showAlbum": "Εμφάνιση ολόκληρου άλμπουμ",
"action.tray.minimize": "Ελαχιστοποίηση στη γωνία γραμμής εργασιών",
"action.tray.quit": "Έξοδος",
"action.tray.show": "Εμφάνιση Cider",
"action.update": "Ενημέρωση",
"action.install": "Εγκατάσταση",
"action.copy": "Αντιγραφή",
"action.newpreset": "Νέα προρύθμιση...",
"action.deletepreset": "Διαγραφή προρύθμισης",
"action.open": "Άνοιγμα",
"action.relaunch.confirm": "Θέλετε να επανεκκινήσετε τον Cider;",
"action.cast.chromecast": "Chromecast",
"action.cast.todevices": "Μετάδοση σε συσκευές",
"action.cast.stop": "Διακοπή μετάδοσης σε όλες τις συσκευές",
"action.cast.airplay": "AirPlay",
"action.cast.airplay.underdevelopment": "Το AirPlay είναι ακόμη υπό ανάπτυξη",
"action.cast.scan": "Σάρωση",
"action.cast.scanning": "Γίνεται σάρωση...",
"action.createNew": "Δημιουργία νέας...",
"action.openArtworkInBrowser": "Άνοιγμα εξώφυλλου στον περιηγητή",
"settings.header.general": "Γενικά",
"settings.header.general.description": "Προσαρμογή γενικών ρυθμίσεων για το Cider.",
"settings.option.general.language": "Γλώσσα",
@ -234,6 +273,10 @@
"settings.option.general.resumebehavior.locally.description": "Το Cider θα συνεχίσει την τελευταία συνεδρία σας αυτής της συσκευής.",
"settings.option.general.resumebehavior.history": "Ιστορικό",
"settings.option.general.resumebehavior.history.description": "Το Cider θα βάλει στην ουρά το τελευταίο τραγούδι από το συνολικό ιστορικό Apple Music, όλων των συσκευών σας.",
"settings.option.general.resumetabs": "Άνοιγμα καρτέλας στην εκκίνηση",
"settings.option.general.resumetabs.description": "Μπορείτε να επιλέξετε ποια καρτέλα θα εμφανίζεται όταν ανοίγετε τον Cider.",
"settings.option.general.resumetabs.dynamic": "Δυναμικό",
"settings.option.general.resumetabs.dynamic.description": "Ο Cider θα ανοίγει την καρτέλα που χρησιμοποιήσατε τελευταία.",
"settings.option.general.language.main": "Γλώσσες",
"settings.option.general.language.fun": "Γλώσσες για πλάκα",
"settings.option.general.language.unsorted": "Αταξινόμητες",
@ -242,10 +285,34 @@
"settings.option.general.updateCider.branch.description": "Επιλέξτε τον κλάδο στον οποίο θα γίνεται η ενημέρωση του Cider",
"settings.option.general.updateCider.branch.main": "Σταθερό",
"settings.option.general.updateCider.branch.develop": "Αναπτυξιακό",
"settings.option.general.customizeSidebar": "Προσαρμογή στοιχείων πλευρικής μπάρας",
"settings.option.general.customizeSidebar.customize": "Προσαρμογή",
"settings.option.general.keybindings": "Συνδυασμοί πλήκτρων",
"settings.notyf.general.keybindings.update.success": "Ο συνδιασμός ενημερώθηκε με επιτυχία",
"settings.prompt.general.keybindings.update.success": "Ο συνδιασμός ενημερώθηκε με επιτυχία. Πατήστε ΟΚ για επανεκκίνηση του Cider",
"settings.option.general.keybindings.open": "Άνοιγμα",
"settings.description.search": "Αναζήτηση",
"settings.description.albums": "Άλμπουμ βιβλιοθήκης",
"settings.description.artists": "Καλλιτέχνες βιβλιοθήκης",
"settings.description.browse": "Περιήγηση",
"settings.description.private": "Εναλλαγή ιδιωτικής περιόδου λειτουργίας",
"settings.description.remote": "Web Remote",
"settings.description.audio": "Ρυθμίσεις ήχου",
"settings.description.plugins": "Μενού πρόσθετων",
"settings.description.cast": "Μετάδοση σε συσκευές",
"settings.description.settings": "Ρυθμίσεις",
"settings.description.developer": "Εργαλεία προγραμματιστή",
"settings.notyf.updateCider.update-not-available": "Δεν υπάρχει διαθέσιμη ενημέρωση",
"settings.notyf.updateCider.update-downloaded": "Έγινε λήψη της ενημέρωσης, επανεκκίνησε για εφαρμογή",
"settings.notyf.updateCider.update-error": "Σφάλμα ενημέρωσης του Cider",
"settings.notyf.updateCider.update-timeout": "Λήξη χρόνου ενημέρωσης",
"settings.header.audio": "Ήχος",
"settings.header.audio.description": "Προσαρμογή ρυθμίσεων ήχου για το Cider.",
"settings.option.audio.volumeStep": "Βήματα έντασης",
"settings.option.audio.maxVolume": "Μέγιστη ένταση",
"settings.option.audio.changePlaybackRate": "Αλλαγή ταχύτητας αναπαραγωγής",
"settings.option.audio.playbackRate": "Ταχύτητα αναπαραγωγής",
"settings.option.audio.playbackRate.change": "Αλλαγή",
"settings.option.audio.quality": "Ποιότητα ήχου",
"settings.header.audio.quality.hireslossless": "Lossless υψηλής ανάλυσης",
"settings.header.audio.quality.hireslossless.description": "έως και 24-bit/192 kHz",
@ -258,18 +325,34 @@
"settings.option.audio.seamlessTransition": "Αδιάκοπη μετάβαση ήχου",
"settings.option.audio.enableAdvancedFunctionality": "Ενεργοποίηση προηγμένης λειτουργικότητας",
"settings.option.audio.enableAdvancedFunctionality.description": "Ενεργοποιώντας τη λειτουργικότητα AudioContext θα επιτρέψει σε επεκταμένες δυνατότητες ήχου όπως Κανονικοποίηση Έντασης Ήχου, Ισοσταθμιστές και Οπτικοποιητές, ωστόσο σε κάποια συστήματα μπορεί να προκαλέσει τραύλισμα ήχου.",
"settings.warn.audio.enableAdvancedFunctionality.lowcores": "Η συσκευή σου ίσως να μη μπορέσει να χειρηστεί αυτές τις δυνατότητες. Σίγουρα θέλετε να συνεχίσετε;",
"settings.option.audio.audioLab": "Cider Audio Lab",
"settings.option.audio.audioLab.description": "Περιέχει μια ποικιλία από τροποποιήσεις ήχου που έγιναν από την ομάδα προγραμματιστών του Cider",
"settings.option.audio.audioLab.description": "Μια ποικιλία τροποποιήσεων ήχου από την ομάδα προγραμματιστών του Cider.",
"settings.option.audio.audioLab.subheader": "Σχεδιάστηκε από τους προγραμματιστές του Cider",
"settings.warn.audioLab.withoutAF": "Το AudioContext (προηγμένη λειτουργικότητα) απαιτείται για την ενεργοποίηση του Cider Audio Laboratory.",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Ένταση Analog Warmth",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "Αλλάζει την ένταση της επεξεργασίας του Analog Warmth Module.",
"settings.option.audio.enableAdvancedFunctionality.analogWarmth": "Αναλογική ζεστασιά",
"settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "Προσομοιώνει την αναλογική ζεστασιά του Korg Nutube 6P1",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Ένταση αναλογικής ζεστασιάς",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "Αλλάζει την ένταση της επεξεργασίας της αναλογικής ζεστασιάς.",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Λείο",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Θερμό",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizer": "Ατμόσφαιρα ήχου",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizer.description": "Εφαρμόζει μια διαφορετική ατμόσφαιρα στον ήχο.",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode": "Λειτουργία ατμόσφαιρας ήχου",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.description": "Αλλάζει τη λειτουργία ατμόσφαιρας ήχου.",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.natural1": "Φυσική (Κανονικό)",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.natural2": "Φυσική (Υψηλό)",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.natural3": "Φυσική (Υψηλότερο)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Επεξεργαστής ήχου Cider (CAP)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Βελτιώνει την αντιληπτή ποιότητα ήχου χρησιμοποιώντας αλγορίθμους.",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "Το CAP δεν είναι συμβατό με τη Χωρικοποίηση Ήχου. Παρακαλούμε απενεργοποιήστε τη Χωρικοποίηση Ήχου για να συνεχίσετε.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Ένταση CAP",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Αλλάζει την ένταση της επεξεργασίας του ήχου. (Η επιθετική επεξεργασία μπορεί να αποφέρει ανεπιθύμητα αποτελέσματα)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Κανονική",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Επιθετική",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Κανονικοποίηση Έντασης Ήχου",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Κανονικοποιεί την ένταση για μεμονωμένα κομμάτια για μια πιο ομοιόμορφη εμπειρία ακρόασης.",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Κανονικοποίηση έντασης ήχου",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Κανονικοποιεί την ένταση για μεμονωμένα κομμάτια για μια πιο ομοιόμορφη εμπειρία ακρόασης. (Δεν λειτουργεί σε κομμάτια που ανέβηκαν από χρήστες)",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.disabled": "Διαχειρίζεται από το Audio Lab",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Χωρικοποίηση Ήχου",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Πιο τρισδιάστατος και χωρικοποιημένος ήχος (σημείωση: Αυτό δεν είναι Dolby Atmos)",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Χωρικοποίηση Cider",
@ -281,15 +364,16 @@
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "Η Χωρικοποίηση δεν είναι συμβατή με το CAP. Παρακαλούμε απενεργοποιήστε το CAP για να συνεχίσετε.",
"settings.header.visual": "Οπτικά",
"settings.header.visual.description": "Προσαρμογή οπτικών ρυθμίσεων για το Cider.",
"settings.option.visual.windowBackgroundStyle": "Στυλ Φόντου Παραθύρου",
"settings.option.visual.windowStyle": "Στυλ παραθύρου",
"settings.option.visual.windowBackgroundStyle": "Στυλ φόντου παραθύρου",
"settings.header.visual.windowBackgroundStyle.none": "Κανένα",
"settings.header.visual.windowBackgroundStyle.artwork": "Εξώφυλλο",
"settings.header.visual.windowBackgroundStyle.image": "Εικόνα",
"settings.option.visual.animatedArtwork": "Κινούμενο Εξώφυλλο",
"settings.option.visual.animatedArtwork": "Κινούμενο εξώφυλλο",
"settings.header.visual.animatedArtwork.always": "Πάντα",
"settings.header.visual.animatedArtwork.limited": "Περιορισμός σε σελίδες και ειδικές καταχωρήσεις",
"settings.header.visual.animatedArtwork.disable": "Απενεργοποιημένο παντού",
"settings.option.visual.animatedArtworkQuality": "Ποιότητα Κινούμενου Εξωφύλλου",
"settings.option.visual.animatedArtworkQuality": "Ποιότητα κινούμενου εξωφύλλου",
"settings.header.visual.animatedArtworkQuality.low": "Χαμηλή",
"settings.header.visual.animatedArtworkQuality.medium": "Μέτρια",
"settings.header.visual.animatedArtworkQuality.high": "Υψηλή",
@ -300,30 +384,52 @@
"settings.option.visual.hardwareAcceleration.description": "Απαιτεί επανεκκίνηση",
"settings.header.visual.hardwareAcceleration.default": "Προεπιλογή",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
"settings.option.visual.uiscale": "Κλίμακα διεπαφής χρήστη",
"settings.header.visual.theme": "Θέμα",
"settings.option.visual.theme.github.download": "Εγκατάσταση από σύνδεσμο GitHub",
"settings.option.visual.theme.github.openfolder": "Άνοιγμα φακέλου θεμάτων",
"settings.option.visual.theme.github.explore": "Εξερεύνηση θεμάτων GitHub",
"settings.header.visual.theme.github.page": "Θέματα από το GitHub",
"settings.option.visual.theme.github.install.confirm": "Θέλετε σίγουρα να εγκαταστήσετε το θέμα {{ repo }};",
"settings.prompt.visual.theme.github.URL": "Εισάγετε τον σύνδεσμο του θέματος που θέλετε να εγκαταστήσετε",
"settings.notyf.visual.theme.install.success": "Το θέμα εγκαταστάθηκε με επιτυχία",
"settings.notyf.visual.theme.install.error": "Αποτυχία εγκατάστασης του θέματος",
"settings.header.visual.plugin": "Πρόσθετο",
"settings.option.visual.plugin.github.download": "Εγκατάσταση από σύνδεσμο GitHub",
"settings.option.visual.plugin.github.explore": "Εξερεύνηση πρόσθετων GitHub",
"settings.header.visual.plugin.github.page": "Πρόσθετα από το GitHub",
"settings.option.visual.plugin.github.install.confirm": "Θέλετε σίγουρα να εγκαταστήσετε το πρόσθετο {{ repo }};",
"settings.prompt.visual.plugin.github.URL": "Εισάγετε τον σύνδεσμο του πρόσθετου που θέλετε να εγκαταστήσετε",
"settings.prompt.visual.plugin.github.success": "Το πρόσθετο εγκαταστάθηκε με επιτυχία, πατήστε ΟΚ για επανεκκίνηση του Cider",
"settings.notyf.visual.plugin.install.success": "Το πρόσθετο εγκαταστάθηκε με επιτυχία",
"settings.notyf.visual.plugin.install.error": "Αποτυχία εγκατάστασης του πρόσθετου",
"settings.option.visual.theme.default": "Cider",
"settings.option.visual.theme.dark": "Σκοτεινό",
"settings.option.visual.showPersonalInfo": "Εμφάνιση προσωπικών στοιχείων",
"settings.header.window": "Παράθυρο",
"settings.header.window.description": "Προσαρμογή ρυθμίσεων παραθύρου για το Cider.",
"settings.option.window.openOnStartup": "Άνοιγμα του Cider στην εκκίνηση",
"settings.option.window.openOnStartup.hidden": "Άνοιγμα κρυμμένο",
"settings.option.window.useNativeTitleBar": "Χρήση γραμμής τίτλου του συστήμστος",
"settings.option.window.windowControlStyle": "Στυλ ελέγχου παραθύρου",
"settings.option.window.windowControlStyle.right": "Δεξιά",
"settings.option.window.windowControlStyle.left": "Αριστερά",
"settings.header.lyrics": "Στίχοι",
"settings.header.lyrics.description": "Προσαρμογή ρυθμίσεων στίχων για το Cider.",
"settings.option.lyrics.enableMusixmatch": "Ενεργοποίηση Στίχων Musixmatch",
"settings.option.lyrics.enableMusixmatchKaraoke": "Ενεργοποίηση Λειτουργίας Καραόκε (Musixmatch μόνο)",
"settings.option.lyrics.musixmatchPreferredLanguage": "Προτιμώμενη Γλώσσα Μετάφρασης Musixmatch",
"settings.option.lyrics.enableYoutubeLyrics": "Ενεργοποίηση Στίχων Youtube για Μουσικά Βίντεο",
"settings.header.connectivity": "Σύνδεση",
"settings.header.connectivity.description": "Προσαρμογή ρυθμίσεων σύνδεσης για το Cider.",
"settings.option.lyrics.enableMusixmatch": "Ενεργοποίηση στίχων Musixmatch",
"settings.option.lyrics.enableMusixmatchKaraoke": "Ενεργοποίηση λειτουργίας καραόκε (Musixmatch μόνο)",
"settings.option.lyrics.musixmatchPreferredLanguage": "Προτιμώμενη γλώσσα μετάφρασης Musixmatch",
"settings.option.lyrics.enableYoutubeLyrics": "Ενεργοποίηση στίχων YouTube για μουσικά βίντεο",
"settings.option.lyrics.enableQQLyrics": "Ενεργοποίηση στίχων QQ",
"settings.header.connectivity": "Συνδεσιμότητα",
"settings.header.connectivity.description": "Προσαρμογή ρυθμίσεων συνδεσιμότητας για το Cider.",
"settings.option.connectivity.playbackNotifications": "Ειδοποιήσεις αναπαραγωγής",
"settings.option.connectivity.discordRPC": "Discord Rich Presence",
"settings.option.connectivity.playbackNotifications": "Ειδοποιήσεις Αναπαραγωγής",
"settings.header.connectivity.discordRPC.cider": "Εμφάνιση ως 'Cider'",
"settings.header.connectivity.discordRPC.appleMusic": "Εμφάνιση ως 'Apple Music'",
"settings.option.connectivity.discordRPC.clearOnPause": "Εκκαθάριση του Discord Rich Presence στην Παύση",
"settings.option.connectivity.discordRPC.clientName": "Τίτλος",
"settings.option.connectivity.discordRPC.clearOnPause": "Εκκαθάριση του Discord Rich Presence στην παύση",
"settings.option.connectivity.discordRPC.hideButtons": "Απόκρυψη κουμπιών του Discord Rich Presence",
"settings.option.connectivity.discordRPC.detailsFormat": "Δομή λεπτομεριών",
"settings.option.connectivity.discordRPC.stateFormat": "Δομή κατάστασης",
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling",
"settings.option.connectivity.lastfmScrobble.delay": "Καθυστέρηση LastFM Scrobble (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Ενεργοποίηση LastFM \"Now Playing\"",
@ -334,32 +440,52 @@
"settings.option.debug.openAppData": "Άνοιγμα του φακέλου Cider",
"settings.header.experimental": "Πειραματικές",
"settings.header.experimental.description": "Προσαρμογή πειραματικών ρυθμίσεων για το Cider.",
"settings.option.experimental.compactUI": "Συμπαγής Διεπαφή",
"settings.option.experimental.closeButtonBehaviour": "Συμπεριφορά Κουμπιού Εξόδου",
"settings.option.experimental.closeButtonBehaviour.quit": "Έξοδος του Cider",
"settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "Ελαχιστοποίηση στη γραμμή εργασιών",
"settings.option.experimental.closeButtonBehaviour.minimizeTray": "Ελαχιστοποίηση στη γωνία γραμμής εργασιών",
"settings.option.experimental.reinstallwidevine": "Επανεγκατάσταση του WidevineCDM",
"settings.option.experimental.reinstallwidevine.confirm": "Θέλετε σίγουρα να επανεγκαταστήσετε το Widevine;",
"settings.option.experimental.unknownPlugin": "Άγνωστες πηγές",
"settings.option.experimental.unknownPlugin.description": "Να επιτρέπεται η εγκατάσταση πρόσθετων από repo εκτός του Cider Plugin Repository",
"settings.option.experimental.compactUI": "Συμπαγής διεπαφή",
"settings.option.window.close_button_hide": "Απόκρυψη εφαρμογής με το πάτημα του κουμπιού κλεισίματος",
"settings.option.experimental.inline_playlists": "Ενσωμάτωση λιστών αναπαραγωγής και άλμπουμ",
"settings.option.advanced.playlistTrackMapping": "Χαρτογράφηση κομματιών λίστών αναπαραγωγής",
"settings.option.advanced.playlistTrackMapping.description": "Ενεργοποιεί τη βαθιά σάρωση των λιστών αναπαραγωγής για να προσδιορίσει ποια κομμάτια βρίσκονται σε ποιες λίστες αναπαραγωγής. Οι χρόνοι δημιουργίας της προσωρινής μνήμης των λιστών αναπαραγωγής μπορεί να αυξηθούν σημαντικά.",
"settings.option.visual.transparent": "Διαφανές πλαίσιο",
"settings.option.visual.transparent.description": "(χρειάζεται υποστήριξη θέματος, απαιτεί επανεκκίνηση)",
"settings.header.advanced": "Για προχωρημένους",
"settings.header.connect": "Συγχρονισμός",
"settings.option.connect.link_account": "Ενεργοποίηση συγχρονισμού με Cider Connect",
"settings.option.connect.link_account.description": "Η σύνδεση του λογαριασμού σας Discord με το Cider Connect σάς επιτρέπει να αποθηκεύετε δεδομένα χρήστη, συμπεριλαμβανομένων των Ρυθμίσεων, των EQ, και άλλα. (Υπό ανάπτυξη)",
"spatial.notTurnedOn": "Η Χωρικοποίηση Ήχου είναι απενεργοποιημένη. Για χρήση, παρακαλούμε ενεργοποιήστε την πρώτα.",
"spatial.spatialProperties": "Χωρικές Ιδιότητες",
"spatial.spatialProperties": "Χωρικές ιδιότητες",
"spatial.width": "Πλάτος",
"spatial.height": "Ύψος",
"spatial.depth": "Βάθος",
"spatial.gain": "Απολαβή",
"spatial.roomMaterials": "Υλικά Δωματίου",
"spatial.roomDimensions": "Διαστάσεις Δωματίου",
"spatial.roomPositions": "Θέσεις Δωματίου",
"spatial.setDimensions": "Ορισμός Διαστάσεων",
"spatial.setPositions": "Ορισμός Θέσεων",
"spatial.roomMaterials": "Υλικά δωματίου",
"spatial.roomDimensions": "Διαστάσεις δωματίου",
"spatial.roomPositions": "Θέσεις δωματίου",
"spatial.setDimensions": "Ορισμός διαστάσεων",
"spatial.setPositions": "Ορισμός θέσεων",
"spatial.up": "Πάνω",
"spatial.front": "Πρόσοψη",
"spatial.left": "Αριστερά",
"spatial.right": "Δεξιά",
"spatial.back": "Πίσω Όψη",
"spatial.back": "Πίσω όψη",
"spatial.down": "Κάτω",
"spatial.listener": "Ακροατής",
"spatial.audioSource": "Πηγή Ήχου",
"spatial.audioSource": "Πηγή ήχου",
"settings.header.unfinished": "Ημιτελής",
"remote.web.title": "Cider Remote",
"remote.web.description": "Σαρώστε τον κωδικό QR για σύζευξη του Cider με το κινητό σας",
"share.platform.twitter.tweet": "Ακούστε το {{song}} στο Apple Music.\n\n{{url}}\n\n#AppleMusic #Cider",
"share.platform.twitter": "Twitter",
"share.platform.facebook": "Facebook",
"share.platform.reddit": "Reddit",
"share.platform.telegram": "Telegram",
"share.platform.whatsapp": "WhatsApp",
"share.platform.messenger": "Messenger",
"share.platform.email": "Email",
"share.platform.songLink": "Αντιγραφή με song.link",
"share.platform.clipboard": "Αντιγραφή συνδέσμου",
"about.thanks": "Μεγάλα ευχαριστώ στην Ομάδα Cider Collective και σε όλους τους συνεισφέροντές μας."
}
}

View file

@ -121,8 +121,6 @@
"term.audioControls": "Volume Controls",
"term.clearAll": "Clear All",
"term.recentStations": "Recent Stations",
"term.personalStations": "Personal Stations",
"term.amLive": "Apple Music Live",
"term.language": "Language",
"term.funLanguages": "Fun",
"term.noLyrics": "Loading... / Lyrics not found./ Instrumental.",
@ -266,6 +264,42 @@
"action.cast.scanning": "Scanning...",
"action.createNew": "Create New...",
"action.openArtworkInBrowser": "Open artwork in browser",
"menubar.options.about": "About",
"menubar.options.settings": "Settings",
"menubar.options.quit": "Quit Cider",
"menubar.options.view": "View ",
"menubar.options.reload": "Reload",
"menubar.options.forcereload": "Force Reload",
"menubar.options.toggledevtools": "Toggle Developer Tools",
"menubar.options.window": "Window",
"menubar.options.minimize": "Minimize",
"menubar.options.toggleprivate": "Toggle Private Session",
"menubar.options.webremote": "Web Remote",
"menubar.options.audio": "Audio Settings",
"menubar.options.plugins": "Plu-gins Menu",
"menubar.options.controls": "Controls",
"menubar.options.next": "Next",
"menubar.options.playpause": "Play/Pause",
"menubar.options.previous": "Previous",
"menubar.options.volumeup": "Volume Up",
"menubar.options.volumedown": "Volume Down",
"menubar.options.browse": "Browse",
"menubar.options.artists": "Artists",
"menubar.options.search": "Search",
"menubar.options.albums": "Albums",
"menubar.options.cast": "Cast To Devices",
"menubar.options.account": "Account",
"menubar.options.accountsettings": "Account Settings",
"menubar.options.signout": "Sign Out",
"menubar.options.support": "Support",
"menubar.options.discord": "Discord",
"menubar.options.github": "GitHub Wiki",
"menubar.options.report": "Report a...",
"menubar.options.bug": "Bug",
"menubar.options.feature": "Feature Request",
"menubar.options.trans": "Translation Report/Request",
"menubar.options.license": "View License",
"menubar.options.conf": "Open Configuration File in Editor",
"settings.header.general": "General",
"settings.header.general.description": "Adjust the general settings for Cider.",
"settings.option.general.language": "Language",
@ -332,6 +366,7 @@
"settings.option.audio.audioLab.description": "An assortment of in-house developed audio effects for Cider.",
"settings.option.audio.audioLab.subheader": "Designed by Cider Acoustic Technologies in California",
"settings.warn.audioLab.withoutAF": "AudioContext (Advanced Functionality) is required to enable Cider Audio Laboratory.",
"settings.warn.enableAdvancedFunctionality": "AudioContext (Advanced Functionality) is required to enable this feature.",
"settings.option.audio.enableAdvancedFunctionality.analogWarmth": "Analog Warmth",
"settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "Simulates the analog warmth modelled after the Korg Nutube 6P1",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Analog Warmth intensity",

View file

@ -73,6 +73,7 @@
"term.viewAs": "Ver como",
"term.viewAs.coverArt": "Portada",
"term.viewAs.list": "Lista",
"term.dynamic": "Dinámico",
"term.size": "Tamaño",
"term.size.normal": "Normal",
"term.size.compact": "Compacto",
@ -199,6 +200,9 @@
"podcast.episodes": "Episodios",
"podcast.playEpisode": "Reproducir Episodio",
"podcast.website": "Sitio web de Podcasts",
"action.edit": "Editar",
"action.done": "Hecho",
"action.editTracklist": "Edit Tracklist",
"action.addToLibrary": "Agregar a la Biblioteca",
"action.addToLibrary.success": "Agregado a la Biblioteca",
"action.addToLibrary.error": "Error al agregar a la Biblioteca",
@ -260,6 +264,42 @@
"action.cast.scanning": "Escaneando...",
"action.createNew": "Crear Nuevo...",
"action.openArtworkInBrowser": "Abrir Ilustración en el navegador",
"menubar.options.about": "Acerca de",
"menubar.options.settings": "Ajustes",
"menubar.options.quit": "Salir",
"menubar.options.view": "Ver",
"menubar.options.reload": "Recargar",
"menubar.options.forcereload": "Forzar Recarga",
"menubar.options.toggledevtools": "Herramientas de Desarrollo",
"menubar.options.window": "Ventana",
"menubar.options.minimize": "Minimizar",
"menubar.options.toggleprivate": "Cambiar Sesión Privada",
"menubar.options.webremote": "Web Remoto",
"menubar.options.audio": "Configuraciones de Audio",
"menubar.options.plugins": "Menu de Plu-gins",
"menubar.options.controls": "Controles",
"menubar.options.next": "Siguiente",
"menubar.options.playpause": "Reproducir/Pausar",
"menubar.options.previous": "Anterior",
"menubar.options.volumeup": "Subir Volumen",
"menubar.options.volumedown": "Bajar Volumen",
"menubar.options.browse": "Explorar",
"menubar.options.artists": "Artistas",
"menubar.options.search": "Buscar",
"menubar.options.albums": "Álbumes",
"menubar.options.cast": "Transmitir a Dispositivos",
"menubar.options.account": "Cuenta",
"menubar.options.accountsettings": "Ajustes de Cuenta",
"menubar.options.signout": "Cerrar Sesión",
"menubar.options.support": "Soporte",
"menubar.options.discord": "Discord",
"menubar.options.github": "GitHub Wiki",
"menubar.options.report": "Reportar a...",
"menubar.options.bug": "Bug",
"menubar.options.feature": "Solicitud de características",
"menubar.options.trans": "Solicitud de Informe/Traducción",
"menubar.options.license": "Ver licencia",
"menubar.options.conf": "Abrir archivo de configuración en el editor",
"settings.header.general": "General",
"settings.header.general.description": "Ajuste la configuración general de Cider.",
"settings.option.general.language": "Idioma",
@ -269,6 +309,10 @@
"settings.option.general.resumebehavior.locally.description": "Cider reanudará su última sesión en esta PC.",
"settings.option.general.resumebehavior.history": "Histórico",
"settings.option.general.resumebehavior.history.description": "Cider pondrá en cola la última canción de su historial general de Apple Music, en todos sus dispositivos.",
"settings.option.general.resumetabs" : "Abrir pestaña al iniciar",
"settings.option.general.resumetabs.description" : "Puede elegir qué pestaña desea abrir cuando inicie Cider.",
"settings.option.general.resumetabs.dynamic" : "Dinámico",
"settings.option.general.resumetabs.dynamic.description" : "Cider abrirá la pestaña que utilizó por última vez.",
"settings.option.general.language.main": "Idiomas",
"settings.option.general.language.fun": "Idiomas Fun (Parodias)",
"settings.option.general.language.unsorted": "Sin Clasificar",
@ -280,6 +324,8 @@
"settings.option.general.customizeSidebar": "Personalizar elementos de la barra lateral",
"settings.option.general.customizeSidebar.customize": "Personalizar",
"settings.option.general.keybindings": "Combinaciones de Teclas",
"settings.notyf.general.keybindings.update.success": "Combinación de teclas actualizada correctamente",
"settings.prompt.general.keybindings.update.success": "La combinación de teclas se actualizó correctamente. Pulsa OK para reiniciar Cider",
"settings.option.general.keybindings.open": "Abrir",
"settings.description.search": "Buscar",
"settings.description.albums": "Álbumes de la biblioteca",
@ -410,6 +456,7 @@
"settings.option.lyrics.enableMusixmatchKaraoke": "Habilitar el modo Karaoke (solo Musixmatch)",
"settings.option.lyrics.musixmatchPreferredLanguage": "Idioma preferido de traducción de Musixmatch",
"settings.option.lyrics.enableYoutubeLyrics": "Habilitar letras de YouTube para videos musicales",
"settings.option.lyrics.enableQQLyrics": "Habilitar letras de QQ",
"settings.header.connectivity": "Conectividad",
"settings.header.connectivity.description": "Ajuste la configuración de conectividad para Cider.",
"settings.option.connectivity.playbackNotifications": "Notificaciones de Reproducción",
@ -442,7 +489,9 @@
"settings.option.visual.transparent.description": "Marco transparente (necesita compatibilidad con temas, requiere reiniciar)",
"settings.header.advanced": "Avanzado",
"settings.header.connect": "Conectar",
"spatial.notTurnedOn": "La espacialización de audio está deshabilitada. Para usar, habilítelo primero.",
"settings.option.connect.link_account": "Habilitar sincronización con Cider Connect",
"settings.option.connect.link_account.description": "Vincular su cuenta de Discord con Cider Connect le permite almacenar datos de usuario que incluyen configuraciones, ecualizadores y eventualmente más, una vez que haya terminado. (Trabajo en progreso)",
"spatial.notTurnedOn": "La Espacialización de audio está deshabilitada. Para usar, habilítelo primero.",
"spatial.spatialProperties": "Propiedades de Espacialización",
"spatial.width": "Ancho",
"spatial.height": "Alto",

View file

@ -121,8 +121,6 @@
"term.audioControls": "Volume Controls",
"term.clearAll": "Clear All",
"term.recentStations": "Recent Stations",
"term.personalStations": "Personal Stations",
"term.amLive": "Apple Music Live",
"term.language": "Language",
"term.funLanguages": "Fun",
"term.noLyrics": "Loading... / Lyrics not found./ Instrumental.",
@ -266,6 +264,42 @@
"action.cast.scanning": "Scanning...",
"action.createNew": "Create New...",
"action.openArtworkInBrowser": "Open artwork in browser",
"menubar.options.about": "About",
"menubar.options.settings": "Settings",
"menubar.options.quit": "Quit Cider",
"menubar.options.view": "View ",
"menubar.options.reload": "Reload",
"menubar.options.forcereload": "Force Reload",
"menubar.options.toggledevtools": "Toggle Developer Tools",
"menubar.options.window": "Window",
"menubar.options.minimize": "Minimize",
"menubar.options.toggleprivate": "Toggle Private Session",
"menubar.options.webremote": "Web Remote",
"menubar.options.audio": "Audio Settings",
"menubar.options.plugins": "Plu-gins Menu",
"menubar.options.controls": "Controls",
"menubar.options.next": "Next",
"menubar.options.playpause": "Play/Pause",
"menubar.options.previous": "Previous",
"menubar.options.volumeup": "Volume Up",
"menubar.options.volumedown": "Volume Down",
"menubar.options.browse": "Browse",
"menubar.options.artists": "Artists",
"menubar.options.search": "Search",
"menubar.options.albums": "Albums",
"menubar.options.cast": "Cast To Devices",
"menubar.options.account": "Account",
"menubar.options.accountsettings": "Account Settings",
"menubar.options.signout": "Sign Out",
"menubar.options.support": "Support",
"menubar.options.discord": "Discord",
"menubar.options.github": "GitHub Wiki",
"menubar.options.report": "Report a...",
"menubar.options.bug": "Bug",
"menubar.options.feature": "Feature Request",
"menubar.options.trans": "Translation Report/Request",
"menubar.options.license": "View License",
"menubar.options.conf": "Open Configuration File in Editor",
"settings.header.general": "General",
"settings.header.general.description": "Adjust the general settings for Cider.",
"settings.option.general.language": "Language",

View file

@ -59,7 +59,6 @@ export class BrowserWindow {
"pages/settings",
"pages/installed-themes",
"pages/listen_now",
"pages/radio",
"pages/home",
"pages/artist-feed",
"pages/cider-playlist",
@ -113,7 +112,6 @@ export class BrowserWindow {
"components/artist-chip",
"components/hello-world",
"components/inline-collection-list",
"components/radio-child",
],
appRoutes: [
{
@ -188,11 +186,6 @@ export class BrowserWindow {
component: `<cider-listen-now :data="listennow"></cider-listen-now>`,
condition: `page == 'listen_now'`,
onEnter: ``
}, {
page: "radio",
component: `<cider-radio :data="radio"></cider-radio>`,
condition: `page == 'radio'`,
onEnter: ``
}, {
page: "settings",
component: `<cider-settings></cider-settings>`,

View file

@ -3,6 +3,7 @@ import {utils} from "../base/utils";
export default class Thumbar {
/**
* Base Plugin Details (Eventually implemented into a GUI in settings)
*/
@ -16,36 +17,42 @@ export default class Thumbar {
* Menubar Assets
* @private
*/
private isMac: boolean = process.platform === 'darwin';
private isMac: boolean = process.platform === 'darwin';
private _menuTemplate: any = [
{
label: app.getName(),
submenu: [
{
label: 'About',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.about'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('about')`)
},
{type: 'separator'},
{
label: 'Settings',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.settings'),
accelerator: utils.getStoreValue("general.keybindings.settings").join('+'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('settings')`)
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('settings')`),
},
...(this.isMac ? [
{type: 'separator'},
{role: 'services'},
{type: 'separator'},
{role: 'hide'},
{role: 'hideOthers'},
{role: 'unhide'},
]: [
{type: 'separator'},
{role: 'quit'}
]
{role: 'quit', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.quit')},
]),
],
},
{
label: 'View',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.view'),
submenu: [
{role: 'reload'},
{role: 'forceReload'},
{role: 'reload', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.reload')},
{role: 'forceReload', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.forcereload')},
...(this.isMac ? [
{role: 'toggleDevTools'},
{type: 'separator'},
{role: 'resetZoom'},
@ -53,25 +60,28 @@ export default class Thumbar {
{role: 'zoomOut'},
{type: 'separator'},
{role: 'togglefullscreen'},
]
]: []),
],
},
{
label: 'Window',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.window'),
submenu: [
{role: 'minimize'},
{role: 'minimize', label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.minimize')},
...(this.isMac ? [
{
label: 'Show',
click: () => utils.getWindow().show()
},
{role: 'zoom'},
...(this.isMac ? [
{type: 'separator'},
{role: 'front'},
{role: 'close'},
] : [
{role: 'close'},
]),
{
label: 'Edit',
submenu: [
@ -83,146 +93,148 @@ export default class Thumbar {
{role: 'paste'},
]
},
] : []
),
{type: 'separator'},
{
label: 'Toggle Private Session',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.toggleprivate'),
accelerator: utils.getStoreValue("general.keybindings.togglePrivateSession").join('+'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.cfg.general.privateEnabled = !app.cfg.general.privateEnabled`)
},
{type: 'separator'},
{
label: 'Web Remote',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.webremote'),
accelerator: utils.getStoreValue("general.keybindings.webRemote").join('+'),
sublabel: 'Opens in external window',
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('remote-pair')`)
},
{
label: 'Audio Settings',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.audio'),
accelerator: utils.getStoreValue("general.keybindings.audioSettings").join('+'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.modals.audioSettings = true`)
},
{
label: 'Plug-in Menu',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.plugins'),
accelerator: utils.getStoreValue("general.keybindings.pluginMenu").join('+'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.modals.pluginMenu = true`)
}
]
},
{
label: 'Controls',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.controls'),
submenu: [
{
label: 'Pause / Play',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.playpause'),
accelerator: 'Space',
click: () => utils.getWindow().webContents.executeJavaScript(`app.SpacePause()`)
},
{
label: 'Next',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.next'),
accelerator: 'CommandOrControl+Right',
click: () => utils.getWindow().webContents.executeJavaScript(`MusicKitInterop.next()`)
},
{
label: 'Previous',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.previous'),
accelerator: 'CommandOrControl+Left',
click: () => utils.getWindow().webContents.executeJavaScript(`MusicKitInterop.previous()`)
},
{type: 'separator'},
{
label: 'Volume Up',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.volumeup'),
accelerator: 'CommandOrControl+Up',
click: () => utils.getWindow().webContents.executeJavaScript(`app.volumeUp()`)
},
{
label: 'Volume Down',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.volumedown'),
accelerator: 'CommandOrControl+Down',
click: () => utils.getWindow().webContents.executeJavaScript(`app.volumeDown()`)
},
{
label: 'Browse',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.browse'),
accelerator: utils.getStoreValue("general.keybindings.browse").join('+'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('browse')`)
},
{type: 'separator'},
{
label: 'Artists',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.artists'),
accelerator: utils.getStoreValue("general.keybindings.artists").join('+'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('library-artists')`)
},
{
label: 'Search',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.search'),
accelerator: utils.getStoreValue("general.keybindings.search").join('+'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('search')`)
},
{type: 'separator'},
{
label: 'Album',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.albums'),
accelerator: utils.getStoreValue("general.keybindings.albums").join('+'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('library-albums')`)
},
{type: 'separator'},
{
label: 'Cast To Devices',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.cast'),
accelerator: utils.getStoreValue("general.keybindings.castToDevices").join('+'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.modals.castMenu = true`)
}
]
},
{
label: 'Account',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.account'),
submenu: [
{
label: 'Account Settings',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.accountsettings'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.appRoute('apple-account-settings')`)
},
{
label: 'Sign Out',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.signout'),
click: () => utils.getWindow().webContents.executeJavaScript(`app.unauthorize()`)
}
]
},
{
label: 'Support',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.support'),
role: 'help',
submenu: [
{
label: 'Discord',
label: utils.getLocale('Discord', 'menubar.options.discord'),
click: () => shell.openExternal("https://discord.gg/AppleMusic").catch(console.error)
},
{
label: 'GitHub Wiki',
label: utils.getLocale('GitHub Wiki', 'menubar.options.github'),
click: () => shell.openExternal("https://github.com/ciderapp/Cider/wiki/Troubleshooting").catch(console.error)
},
{type: 'separator'},
{
label: 'Report a...',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.report'),
submenu: [
{
label: 'Bug',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.bug'),
click: () => shell.openExternal("https://github.com/ciderapp/Cider/issues/new?assignees=&labels=bug%2Ctriage&template=bug_report.yaml&title=%5BBug%5D%3A+").catch(console.error)
},
{
label: 'Feature Request',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.feature'),
click: () => shell.openExternal("https://github.com/ciderapp/Cider/discussions/new?category=feature-request").catch(console.error)
},
{
label: 'Translation Report/Request',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.trans'),
click: () => shell.openExternal("https://github.com/ciderapp/Cider/issues/new?assignees=&labels=%F0%9F%8C%90+Translations&template=translation.yaml&title=%5BTranslation%5D%3A+").catch(console.error)
},
]
},
{type: 'separator'},
{
label: 'View License',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.license'),
click: () => shell.openExternal("https://github.com/ciderapp/Cider/blob/main/LICENSE").catch(console.error)
},
{type: 'separator'},
{
label: 'Toggle Developer Tools',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.toggledevtools'),
accelerator: utils.getStoreValue("general.keybindings.openDeveloperTools").join('+'),
click: () => utils.getWindow().webContents.openDevTools()
},
{
label: 'Open Configuration File in Editor',
label: utils.getLocale(utils.getStoreValue('general.language'), 'menubar.options.conf'),
click: () => utils.getStoreInstance().openInEditor()
}
]

View file

@ -42,9 +42,7 @@ const app = new Vue({
listennow: [],
madeforyou: [],
radio: {
personal: {},
recent: {},
amlive: {},
personal: []
},
mklang: 'en',
webview: {
@ -237,6 +235,7 @@ const app = new Vue({
pages: [],
},
moreinfodata: [],
notyf: notyf
},
watch: {
cfg: {
@ -323,7 +322,6 @@ const app = new Vue({
try {
this.listennow.timestamp = 0;
this.browsepage.timestamp = 0;
this.radio.timestamp = 0;
} catch (e) { }
},
/**
@ -2534,33 +2532,15 @@ const app = new Vue({
}
},
async getRadioStations(attempt = 0) {
if (this.radio.timestamp > Date.now() - 120000) {
return
}
if (attempt > 3) {
return
}
try {
this.radio.personal.title = app.getLz('term.personalStations')
this.radio.recent.title = app.getLz('term.recentStations')
this.radio.amlive.title = app.getLz('term.amLive')
this.radio.personal.data = await app.mk.api.v3.music(`/v1/catalog/${app.mk.api.v3.storefrontId}/stations`, {
"filter[identity]": "personal",
}).data.data
this.radio.recent.data = await app.mk.api.v3.music(`/v1/me/recent/radio-stations`, {
this.radio.personal = (await app.mk.api.v3.music(`/v1/me/recent/radio-stations`, {
"platform": "web",
"art[url]": "f",
l: this.mklang
}).data.data
this.radio.amlive.data = await app.mk.api.v3.music(`/v1/catalog/${app.mk.api.v3.storefrontId}/stations`, {
"filter[featured]": "apple-music-live-radio",
}).data.data
this.radio.timestamp = Date.now()
console.debug(this.radio)
})).data.data;
} catch (e) {
console.log(e)
this.getRadioStations(attempt + 1)

View file

@ -25,6 +25,15 @@
</transition>
<% } %>
<transition v-on:enter="getRadioStations()" :name="chrome.desiredPageTransition">
<template v-if="page == 'radio'" @created="console.log('radio')">
<div class="content-inner">
<h1 class="header-text">{{$root.getLz('term.radio')}}</h1>
<h3>{{$root.getLz('term.recentStations')}}</h3>
<mediaitem-square :item="item" v-for="item in radio.personal"></mediaitem-square>
</div>
</template>
</transition>
<!-- Library - Recently Added -->
<transition :name="chrome.desiredPageTransition" v-on:enter="getLibraryAlbumsFull(null, 0); searchLibraryAlbums(0);">
<%- include('../pages/library-recentlyadded') %>');

View file

@ -39,8 +39,8 @@
<sidebar-library-item :name="$root.getLz('term.browse')" svg-icon="./assets/feather/globe.svg"
page="browse">
</sidebar-library-item>
<sidebar-library-item :name="$root.getLz('term.radio')" svg-icon="./assets/feather/radio.svg"
page="radio"></sidebar-library-item>
<sidebar-library-item :name="$root.getLz('term.radio')" svg-icon="./assets/feather/radio.svg" page="radio">
</sidebar-library-item>
</template>
<div class="app-sidebar-header-text"
@ -142,13 +142,13 @@
</span>
<span class="usermenu-item-name">{{$root.getLz('action.showWebRemoteQR')}}</span>
</button>
<button class="usermenu-item" v-if="cfg.advanced.AudioContext" @click="modals.castMenu = true">
<button class="usermenu-item" @click="cfg.advanced.AudioContext ? modals.castMenu = true : $root.notyf.error($root.getLz('settings.warn.enableAdvancedFunctionality'))">
<span class="usermenu-item-icon">
<%- include("../svg/cast.svg") %>
</span>
<span class="usermenu-item-name">{{$root.getLz('term.cast')}}</span>
</button>
<button class="usermenu-item" v-if="cfg.advanced.AudioContext" @click="modals.audioSettings = true">
<button class="usermenu-item" @click="cfg.advanced.AudioContext ? modals.audioSettings = true : $root.notyf.error($root.getLz('settings.warn.enableAdvancedFunctionality'))">
<span class="usermenu-item-icon">
<%- include("../svg/headphones.svg") %>
</span>

View file

@ -1,31 +0,0 @@
<script type="text/x-template" id="radio-child">
<div>
<div class="row">
<div class="col">
<h3>{{ item.title }}</h3>
</div>
</div>
<mediaitem-square :item="station" v-for="station in item.data"></mediaitem-square>
<!-- <mediaitem-scroller-horizontal-sp-->
<!-- :withReason="index==0"-->
<!-- :items="recom.relationships.contents.data.limit(10)"></mediaitem-scroller-horizontal-sp>-->
</div>
</script>
<script>
Vue.component('radio-child', {
template: "#radio-child",
props: ["item"],
data: function () {
return {
isVisible: true,
app: this.$root
}
},
methods: {
visibilityChanged: function (isVisible, entry) {
// this.isVisible = isVisible
},
}
})
</script>

View file

@ -1,23 +0,0 @@
<script type="text/x-template" id="cider-radio">
<div class="content-inner">
<h1 class="header-text">{{app.getLz('term.radio')}}</h1>
<template v-for="item in data">
<radio-child :item="item"></radio-child>
</template>
</div>
</script>
<script>
Vue.component('cider-radio', {
template: "#cider-radio",
props: ["data"],
data: function () {
return {
app: this.$root
}
},
mounted() {
this.$root.getRadioStations()
}
})
</script>