Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
child_duckling 2022-02-08 15:46:16 -08:00
commit 0eafd16b8c
57 changed files with 3496 additions and 2325 deletions

View file

@ -42,6 +42,9 @@ jobs:
#command: yarn test #command: yarn test
- store_test_results: - store_test_results:
path: test-results path: test-results
- run:
name: Append Commit BuildID to Version
command: yarn circle:append-bid
- run: - run:
name: Generate Builds (Linux) name: Generate Builds (Linux)
command: yarn dist -l -p never command: yarn dist -l -p never

1
.gitignore vendored
View file

@ -2,6 +2,7 @@
dist dist
build build
.flatpak* .flatpak*
yarn-cache
# Misc # Misc
.idea .idea

View file

@ -23,20 +23,21 @@
"start:darwin": "yarn build && ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers", "start:darwin": "yarn build && ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers",
"pack": "electron-builder --dir", "pack": "electron-builder --dir",
"dist": "yarn build && electron-builder", "dist": "yarn build && electron-builder",
"dist:macarm" : "yarn build && electron-builder --mac --arm64",
"dist:universalNotWorking": "yarn build && electron-builder --mac --universal",
"dist:all": "yarn build && electron-builder -mwl", "dist:all": "yarn build && electron-builder -mwl",
"msft": "yarn build && electron-builder -c msft-package.json", "msft": "yarn build && electron-builder -c msft-package.json",
"postinstall": "electron-builder install-app-deps" "postinstall": "electron-builder install-app-deps",
"circle:append-bid": "node resources/appendCommitToVersion"
}, },
"dependencies": { "dependencies": {
"@sentry/electron": "^2.5.4", "@sentry/electron": "^2.5.4",
"@sentry/integrations": "^6.17.4", "@sentry/integrations": "^6.17.4",
"castv2-client": "^1.2.0",
"discord-rpc": "^4.0.1", "discord-rpc": "^4.0.1",
"ejs": "^3.1.6", "ejs": "^3.1.6",
"electron-fetch": "^1.7.4", "electron-fetch": "^1.7.4",
"electron-log": "^4.4.5", "electron-log": "^4.4.5",
"electron-notarize": "^1.1.1", "electron-notarize": "^1.1.1",
"electron-packager": "^15.4.0",
"electron-store": "^8.0.1", "electron-store": "^8.0.1",
"electron-updater": "^4.6.1", "electron-updater": "^4.6.1",
"electron-window-state": "^5.0.3", "electron-window-state": "^5.0.3",
@ -48,18 +49,13 @@
"mpris-service": "^2.1.2", "mpris-service": "^2.1.2",
"music-metadata": "^7.11.4", "music-metadata": "^7.11.4",
"node-gyp": "^8.4.1", "node-gyp": "^8.4.1",
"node-ssdp": "^4.0.1",
"qrcode": "^1.5.0", "qrcode": "^1.5.0",
"qrcode-terminal": "^0.12.0",
"react": "^17.0.2", "react": "^17.0.2",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
"run-script-os": "^1.1.6", "run-script-os": "^1.1.6",
"source-map-support": "^0.5.21", "source-map-support": "^0.5.21",
"tsc": "^2.0.4",
"typescript": "^4.5.5", "typescript": "^4.5.5",
"upnp-mediarenderer-client": "^1.4.0",
"v8-compile-cache": "^2.3.0", "v8-compile-cache": "^2.3.0",
"wavefile": "^11.0.0",
"ws": "^8.4.2", "ws": "^8.4.2",
"xml2js": "^0.4.23", "xml2js": "^0.4.23",
"youtube-search-without-api-key": "^1.0.7" "youtube-search-without-api-key": "^1.0.7"
@ -71,7 +67,7 @@
"@types/qrcode-terminal": "^0.12.0", "@types/qrcode-terminal": "^0.12.0",
"@types/ws": "^8.2.2", "@types/ws": "^8.2.2",
"electron": "git+https://github.com/castlabs/electron-releases.git", "electron": "git+https://github.com/castlabs/electron-releases.git",
"electron-builder": "^22.14.5", "electron-builder": "^22.14.13",
"electron-webpack": "^2.8.2", "electron-webpack": "^2.8.2",
"musickit-typescript": "^1.2.4", "musickit-typescript": "^1.2.4",
"playwright": "^1.18.1", "playwright": "^1.18.1",
@ -175,7 +171,6 @@
"target": [ "target": [
"dmg" "dmg"
] ]
}, }
"artifactName": "${productName}.${ext}"
} }
} }

View file

@ -1,5 +1,6 @@
exports.default = function(context) { exports.default = function(context) {
const { execSync } = require('child_process') const { execSync } = require('child_process')
const fs = require('fs')
if (process.platform !== 'darwin') if (process.platform !== 'darwin')
return return
@ -11,8 +12,12 @@ exports.default = function(context) {
console.log('VMP signing start') console.log('VMP signing start')
if (fs.existsSync('dist/mac'))
execSync('python3 -m castlabs_evs.vmp -n sign-pkg dist/mac',{stdio: 'inherit'}) execSync('python3 -m castlabs_evs.vmp -n sign-pkg dist/mac',{stdio: 'inherit'})
if (fs.existsSync('dist/mac-arm64'))
execSync('python3 -m castlabs_evs.vmp -n sign-pkg dist/mac-arm64 -z',{stdio: 'inherit'})
if (fs.existsSync('dist/mac-x64'))
execSync('python3 -m castlabs_evs.vmp -n sign-pkg dist/mac-x64',{stdio: 'inherit'})
console.log('VMP signing complete') console.log('VMP signing complete')
} }

View file

@ -0,0 +1,21 @@
if (!process.env['CIRCLECI']) {
console.log(`[CIRCLECI SCRIPT] CircleCI not found... Aborting script`)
return
}
let fs = require('fs')
var data = fs.readFileSync('package.json');
var package = JSON.parse(data);
pvers = package.version.match(/\d+\./g)
// https://circleci.com/docs/2.0/env-vars/#built-in-environment-variables
package.version = `${pvers[0]}${pvers[1]}${process.env['CIRCLE_BUILD_NUM']}`
fs.writeFile('package.json', JSON.stringify(package), err => {
// error checking
if(err) throw err;
console.log("VERSION CHANGED");
});

View file

@ -1,4 +1,4 @@
# Cider i18n # Cider i18n Notices & Changelog
Some notes about Cider's i18n support. Some notes about Cider's i18n support.
@ -21,7 +21,7 @@ been modified, the ones not mentioned in the list need modifying.
* `term.sharedPlaylists`: "Shared Playlists" - Added for `en_US`. * `term.sharedPlaylists`: "Shared Playlists" - Added for `en_US`.
* `term.people`: "People" - Added for `en_US`. * `term.people`: "People" - Added for `en_US`.
Updated 02/02/2022 17:16 UTC Update 02/02/2022 17:16 UTC
* `term.newpreset.name`: Added for `en_US`. * `term.newpreset.name`: Added for `en_US`.
* `term.addedpreset`: Added for `en_US`. * `term.addedpreset`: Added for `en_US`.
@ -38,7 +38,7 @@ Updated 02/02/2022 17:16 UTC
* `action.newpreset`: Added for `en_US`. * `action.newpreset`: Added for `en_US`.
* `action.deletepreset`: Added for `en_US`. * `action.deletepreset`: Added for `en_US`.
Updated 04/02/2022 10:00 UTC Update 04/02/2022 10:00 UTC
* `term.history`: Added for `en_US`. * `term.history`: Added for `en_US`.
* `action.copy`: Added for `en_US`. * `action.copy`: Added for `en_US`.
@ -56,3 +56,28 @@ Update 05/02/2022 09:00 UTC
* `settings.header.audio.quality.lossless.description`: Added for `en_US`. * `settings.header.audio.quality.lossless.description`: Added for `en_US`.
* `settings.option.audio.enableAdvancedFunctionality.ciderPPE`: Added for `en_US`. * `settings.option.audio.enableAdvancedFunctionality.ciderPPE`: Added for `en_US`.
* `settings.option.audio.enableAdvancedFunctionality.ciderPPE.description`: Added for `en_US`. * `settings.option.audio.enableAdvancedFunctionality.ciderPPE.description`: Added for `en_US`.
Update 06/02/2022 10:35 UTC
* `settings.header.audio.quality.hireslossless.description`: Brackets removed, handled in renderer.
* `settings.header.audio.quality.lossless.description`: Brackets removed, handled in renderer.
* `settings.header.audio.quality.high.description`: Added for `en_US`.
* `settings.header.audio.quality.auto`: Removed as default for MusicKit is 256.
* `settings.header.audio.quality.standard`: Replaced `settings.header.audio.quality.low` to match MusicKit naming.
* `settings.header.audio.quality.standard.description`: Added for `en_US`.
Update 08/02/2022 10:20 UTC
* `settings.option.general.updateCider`: Added for `en_US`.
* `settings.option.general.updateCider.branch`: Added for `en_US`.
* `settings.option.general.updateCider.branch.description`: Added for `en_US`.
* `settings.option.general.updateCider.branch.main`: Added for `en_US`.
* `settings.option.general.updateCider.branch.develop`: Added for `en_US`.
* `settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength`: Added for `en_US`.
* `settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description`: Added for `en_US`.
* `settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard`: Added for `en_US`.
* `settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive`: Added for `en_US`.
* `settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility`: Added for `en_US`.
* `settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility`: Added for `en_US`.
* `term.requestError`: Added for `en_US`.
* `term.song.link.generate`: Added for `en_US`.

View file

@ -1,4 +1,4 @@
{ // Base File {
// i18n Info // i18n Info
"i18n.languageName": "Deutsch", // name of language in native language "i18n.languageName": "Deutsch", // name of language in native language
@ -19,6 +19,7 @@
"notification.updatingLibrarySongs": "Aktualisiere Songs...", "notification.updatingLibrarySongs": "Aktualisiere Songs...",
"notification.updatingLibraryAlbums": "Aktualisiere Alben...", "notification.updatingLibraryAlbums": "Aktualisiere Alben...",
"notification.updatingLibraryArtists": "Aktualisiere Künstler...", "notification.updatingLibraryArtists": "Aktualisiere Künstler...",
// Terms // Terms
"term.appleInc": "Apple Inc.", "term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music", "term.appleMusic": "Apple Music",
@ -117,7 +118,6 @@
"term.tracks": "Lieder", // Assume x amount of tracks. e.g. 50 tracks "term.tracks": "Lieder", // Assume x amount of tracks. e.g. 50 tracks
"term.videos": "Videos", "term.videos": "Videos",
"term.menu": "Menü", "term.menu": "Menü",
"action.showAlbum": "Zeige ganzes Album",
// Home // Home
"home.title": "Home", "home.title": "Home",
@ -128,6 +128,7 @@
"home.madeForYou": "Für dich gemacht", "home.madeForYou": "Für dich gemacht",
"home.friendsListeningTo": "Freunde hören", "home.friendsListeningTo": "Freunde hören",
"home.followedArtists": "Gefolgte Künstler", "home.followedArtists": "Gefolgte Künstler",
// Errors // Errors
"error.appleMusicSubRequired": "Apple Music benötigt ein Abonnement.", "error.appleMusicSubRequired": "Apple Music benötigt ein Abonnement.",
"error.connectionError": "Es ist ein Fehler aufgetreten, während sich mit Apple Music verbunden wurde.", "error.connectionError": "Es ist ein Fehler aufgetreten, während sich mit Apple Music verbunden wurde.",
@ -183,6 +184,7 @@
"action.removeTracks": "Entferne ${self.selectedItems.length} Lieder aus der Warteschlange", "action.removeTracks": "Entferne ${self.selectedItems.length} Lieder aus der Warteschlange",
"action.import": "Importieren", "action.import": "Importieren",
"action.export": "Exportieren", "action.export": "Exportieren",
"action.showAlbum": "Zeige ganzes Album",
// Settings - General // Settings - General
"settings.header.general": "Allgemein", "settings.header.general": "Allgemein",
@ -194,6 +196,8 @@
"settings.option.general.language.fun": "Lustige Sprachen", "settings.option.general.language.fun": "Lustige Sprachen",
"settings.option.general.language.unsorted": "Unsortiert", "settings.option.general.language.unsorted": "Unsortiert",
// Update Cider
// Settings - Audio // Settings - Audio
"settings.header.audio": "Audio", "settings.header.audio": "Audio",
"settings.header.audio.description": "Passe die Audio-Einstellungen für Cider an.", "settings.header.audio.description": "Passe die Audio-Einstellungen für Cider an.",
@ -208,6 +212,7 @@
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalisiert die Lautstärke aller Lieder, um die Hörerfahrung einheitlicher zu machen.", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalisiert die Lautstärke aller Lieder, um die Hörerfahrung einheitlicher zu machen.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Räumliches Audio", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Räumliches Audio", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Macht die Musik räumlicher (3D-Effekt) (Beachte: Dies ist kein Dolby Atmos)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Macht die Musik räumlicher (3D-Effekt) (Beachte: Dies ist kein Dolby Atmos)",
// Settings - Visual // Settings - Visual
"settings.header.visual": "Visuell", "settings.header.visual": "Visuell",
"settings.header.visual.description": "Passe die visuellen Einstellungen für Cider an.", "settings.header.visual.description": "Passe die visuellen Einstellungen für Cider an.",
@ -230,6 +235,9 @@
"settings.option.visual.hardwareAcceleration.description": "Erfordert Neustart der Anwendung", "settings.option.visual.hardwareAcceleration.description": "Erfordert Neustart der Anwendung",
"settings.header.visual.hardwareAcceleration.default": "Normal", "settings.header.visual.hardwareAcceleration.default": "Normal",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
// Settings - Visual - Theme name
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "Persönliche Daten anzeigen", // Toggle "settings.option.visual.showPersonalInfo": "Persönliche Daten anzeigen", // Toggle
@ -265,8 +273,8 @@
"settings.option.experimental.closeButtonBehaviour.quit": "Cider Schließen", "settings.option.experimental.closeButtonBehaviour.quit": "Cider Schließen",
"settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "In Taskleiste minimieren", "settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "In Taskleiste minimieren",
"settings.option.experimental.closeButtonBehaviour.minimizeTray": "In den Tray minimieren", "settings.option.experimental.closeButtonBehaviour.minimizeTray": "In den Tray minimieren",
// Refer to term.disabled & term.enabled
// Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.spatialProperties" : "Räumliche Einstellungen", "spatial.spatialProperties" : "Räumliche Einstellungen",
"spatial.width" : "Breite", "spatial.width" : "Breite",

View file

@ -1,10 +1,10 @@
{ {
// i18n Info // i18n Info
"i18n.languageName": "Ελληνικά", "i18n.languageName": "Ελληνικά", // name of language in native language
"i18n.languageNameEnglish": "Greek", "i18n.languageNameEnglish": "Greek", // name of language in English
"i18n.category": "main", "i18n.category": "main", // main = real language, fun = fun community languages
"i18n.authors": "@down-bad", "i18n.authors": "@down-bad", // Authors, if you contribute to this file feel free to add your name seperated with a space
// App info // App info
"app.name": "Cider", "app.name": "Cider",
@ -19,6 +19,7 @@
"notification.updatingLibrarySongs": "Ενημέρωση βιβλιοθήκης τραγουδιών...", "notification.updatingLibrarySongs": "Ενημέρωση βιβλιοθήκης τραγουδιών...",
"notification.updatingLibraryAlbums": "Ενημέρωση βιβλιοθήκης άλμπουμ...", "notification.updatingLibraryAlbums": "Ενημέρωση βιβλιοθήκης άλμπουμ...",
"notification.updatingLibraryArtists": "Ενημέρωση βιβλιοθήκης καλλιτεχνών...", "notification.updatingLibraryArtists": "Ενημέρωση βιβλιοθήκης καλλιτεχνών...",
// Terms // Terms
"term.appleInc": "Apple Inc.", "term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music", "term.appleMusic": "Apple Music",
@ -117,7 +118,6 @@
"term.tracks": "τραγούδια", // Assume x amount of tracks. e.g. 50 tracks "term.tracks": "τραγούδια", // Assume x amount of tracks. e.g. 50 tracks
"term.videos": "Βίντεο", "term.videos": "Βίντεο",
"term.menu": "Μενού", "term.menu": "Μενού",
"action.showAlbum": "Εμφάνιση ολόκληρου άλμπουμ",
// Home // Home
"home.title": "Αρχική", "home.title": "Αρχική",
@ -128,6 +128,7 @@
"home.madeForYou": "Δημιουργήθηκε για εσάς", "home.madeForYou": "Δημιουργήθηκε για εσάς",
"home.friendsListeningTo": "Οι φίλοι σου ακούν", "home.friendsListeningTo": "Οι φίλοι σου ακούν",
"home.followedArtists": "Καλλιτέχνες που ακολουθείτε", "home.followedArtists": "Καλλιτέχνες που ακολουθείτε",
// Errors // Errors
"error.appleMusicSubRequired": "Το Apple Music απαιτεί μια συνδρομή.", "error.appleMusicSubRequired": "Το Apple Music απαιτεί μια συνδρομή.",
"error.connectionError": "Δεν είναι δυνατή η σύνδεση με το Apple Music.", "error.connectionError": "Δεν είναι δυνατή η σύνδεση με το Apple Music.",
@ -183,6 +184,7 @@
"action.removeTracks": "Αφαίρεση ${self.selectedItems.length} τραγουδιών από την ουρά", "action.removeTracks": "Αφαίρεση ${self.selectedItems.length} τραγουδιών από την ουρά",
"action.import": "Εισαγωγή", "action.import": "Εισαγωγή",
"action.export": "Εξαγωγή", "action.export": "Εξαγωγή",
"action.showAlbum": "Εμφάνιση ολόκληρου άλμπουμ",
// Settings - General // Settings - General
"settings.header.general": "Γενικά", "settings.header.general": "Γενικά",
@ -194,6 +196,8 @@
"settings.option.general.language.fun": "Γλώσσες για πλάκα", "settings.option.general.language.fun": "Γλώσσες για πλάκα",
"settings.option.general.language.unsorted": "Αταξινόμητες", "settings.option.general.language.unsorted": "Αταξινόμητες",
// Update Cider
// Settings - Audio // Settings - Audio
"settings.header.audio": "Ήχος", "settings.header.audio": "Ήχος",
"settings.header.audio.description": "Προσαρμογή ρυθμίσεων ήχου για το Cider.", "settings.header.audio.description": "Προσαρμογή ρυθμίσεων ήχου για το Cider.",
@ -208,6 +212,7 @@
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Κανονικοποιεί την ένταση για μεμονωμένα κομμάτια για μια πιο ομοιόμορφη εμπειρία ακρόασης.", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Κανονικοποιεί την ένταση για μεμονωμένα κομμάτια για μια πιο ομοιόμορφη εμπειρία ακρόασης.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Χωρικοποίηση Ήχου", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Χωρικοποίηση Ήχου", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Πιο τρισδιάστατος και χωρικοποιημένος ήχος (σημείωση: Αυτό δεν είναι Dolby Atmos)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Πιο τρισδιάστατος και χωρικοποιημένος ήχος (σημείωση: Αυτό δεν είναι Dolby Atmos)",
// Settings - Visual // Settings - Visual
"settings.header.visual": "Οπτικά", "settings.header.visual": "Οπτικά",
"settings.header.visual.description": "Προσαρμογή οπτικών ρυθμίσεων για το Cider.", "settings.header.visual.description": "Προσαρμογή οπτικών ρυθμίσεων για το Cider.",
@ -230,6 +235,9 @@
"settings.option.visual.hardwareAcceleration.description": "Απαιτεί επανεκκίνηση", "settings.option.visual.hardwareAcceleration.description": "Απαιτεί επανεκκίνηση",
"settings.header.visual.hardwareAcceleration.default": "Προεπιλογή", "settings.header.visual.hardwareAcceleration.default": "Προεπιλογή",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
// Settings - Visual - Theme name
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "Εμφάνιση προσωπικών στοιχείων", // Toggle "settings.option.visual.showPersonalInfo": "Εμφάνιση προσωπικών στοιχείων", // Toggle
@ -265,8 +273,8 @@
"settings.option.experimental.closeButtonBehaviour.quit": "Έξοδος του Cider", "settings.option.experimental.closeButtonBehaviour.quit": "Έξοδος του Cider",
"settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "Ελαχιστοποίηση στη γραμμή εργασιών", "settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "Ελαχιστοποίηση στη γραμμή εργασιών",
"settings.option.experimental.closeButtonBehaviour.minimizeTray": "Ελαχιστοποίηση στη γωνία γραμμής εργασιών", "settings.option.experimental.closeButtonBehaviour.minimizeTray": "Ελαχιστοποίηση στη γωνία γραμμής εργασιών",
// Refer to term.disabled & term.enabled
// Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.spatialProperties" : "Χωρικές Ιδιότητες", "spatial.spatialProperties" : "Χωρικές Ιδιότητες",
"spatial.width" : "Πλάτος", "spatial.width" : "Πλάτος",

View file

@ -19,6 +19,7 @@
"notification.updatingLibrarySongs": "UPDATING HODOR HODORS...", "notification.updatingLibrarySongs": "UPDATING HODOR HODORS...",
"notification.updatingLibraryAlbums": "UPDATING HODOR HODORBUMS...", "notification.updatingLibraryAlbums": "UPDATING HODOR HODORBUMS...",
"notification.updatingLibraryArtists": "UPDATING HODOR HODORTISTS...", "notification.updatingLibraryArtists": "UPDATING HODOR HODORTISTS...",
// Terms // Terms
"term.appleInc": "HODOR Inc.", "term.appleInc": "HODOR Inc.",
"term.appleMusic": "HODOR MUSIC", "term.appleMusic": "HODOR MUSIC",
@ -190,12 +191,11 @@
"action.import": "HODOR IN", "action.import": "HODOR IN",
"action.export": "HODOR OUT", "action.export": "HODOR OUT",
"action.showAlbum": "SHOW HODOR HODOR", "action.showAlbum": "SHOW HODOR HODOR",
// Waiting on Core for moving plugin to app.ts
"action.tray.minimize": "HODOR TO TRAY", "action.tray.minimize": "HODOR TO TRAY",
"action.tray.quit": "HODOR", "action.tray.quit": "HODOR",
"action.tray.show": "SEE", "action.tray.show": "SEE",
// Settings - General (Reserved) // Settings - General
"settings.header.general": "HODORAL", "settings.header.general": "HODORAL",
"settings.header.general.description": "HODOR HODORAL HODOR FOR HODOR.", "settings.header.general.description": "HODOR HODORAL HODOR FOR HODOR.",
"settings.option.general.language": "HODOR SPEAKS", "settings.option.general.language": "HODOR SPEAKS",
@ -205,6 +205,8 @@
"settings.option.general.language.fun": "HODOR HODORS", "settings.option.general.language.fun": "HODOR HODORS",
"settings.option.general.language.unsorted": "NO HODORS", "settings.option.general.language.unsorted": "NO HODORS",
// Update Cider
// Settings - Audio // Settings - Audio
"settings.header.audio": "HODOR HEARS", "settings.header.audio": "HODOR HEARS",
"settings.header.audio.description": "ADJUST HODOR EARS FOR HODOR HODOR.", "settings.header.audio.description": "ADJUST HODOR EARS FOR HODOR HODOR.",
@ -219,6 +221,7 @@
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "NORMALIZES HODOR VOLUME FOR INDIVIDUAL HODORS TO HODOR A MORE HODOR LISTENING HODOR.", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "NORMALIZES HODOR VOLUME FOR INDIVIDUAL HODORS TO HODOR A MORE HODOR LISTENING HODOR.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "HODOR SPATIALIZATION", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "HODOR SPATIALIZATION", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "SPATIALIZE HODOR AND MAKE HODOR MORE 3-HODOR (HODOR: THIS IS NOT HODOR ATMOS)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "SPATIALIZE HODOR AND MAKE HODOR MORE 3-HODOR (HODOR: THIS IS NOT HODOR ATMOS)",
// Settings - Visual // Settings - Visual
"settings.header.visual": "HODOR SEES", "settings.header.visual": "HODOR SEES",
"settings.header.visual.description": "ADJUST HODOR EYES FOR HODOR.", "settings.header.visual.description": "ADJUST HODOR EYES FOR HODOR.",
@ -241,6 +244,9 @@
"settings.option.visual.hardwareAcceleration.description": "NEED RE HODOR", "settings.option.visual.hardwareAcceleration.description": "NEED RE HODOR",
"settings.header.visual.hardwareAcceleration.default": "HODOR.", "settings.header.visual.hardwareAcceleration.default": "HODOR.",
"settings.header.visual.hardwareAcceleration.webGPU": "WEB HODOR!!", "settings.header.visual.hardwareAcceleration.webGPU": "WEB HODOR!!",
// Settings - Visual - Theme name
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "SHOW HODOR NAME?", // Toggle "settings.option.visual.showPersonalInfo": "SHOW HODOR NAME?", // Toggle
@ -276,8 +282,8 @@
"settings.option.experimental.closeButtonBehaviour.quit": "END HODOR", "settings.option.experimental.closeButtonBehaviour.quit": "END HODOR",
"settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "MINIMIZE HODOR TO HODORBAR", "settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "MINIMIZE HODOR TO HODORBAR",
"settings.option.experimental.closeButtonBehaviour.minimizeTray": "MINIMIZE HODOR TO HODORAY", "settings.option.experimental.closeButtonBehaviour.minimizeTray": "MINIMIZE HODOR TO HODORAY",
// Refer to term.disabled & term.enabled
// Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.notTurnedOn": "HODOR SPATIALIZATION IS HODOR. TO HODOR, PLEASE HODOR IT HODOR.", "spatial.notTurnedOn": "HODOR SPATIALIZATION IS HODOR. TO HODOR, PLEASE HODOR IT HODOR.",
"spatial.spatialProperties" : "SPATIAL HODOR", "spatial.spatialProperties" : "SPATIAL HODOR",
@ -308,5 +314,4 @@
//About //About
"about.thanks": "HODOR THANKS TO THE HODOR TEAM AND ALL OF OUR HODORS." "about.thanks": "HODOR THANKS TO THE HODOR TEAM AND ALL OF OUR HODORS."
} }

View file

@ -1,19 +1,25 @@
{ // Base File {
// i18n Info // i18n Info
"i18n.languageName": "Engwish (OwO)", // name of language in native language "i18n.languageName": "Engwish (OwO)", // name of language in native language
"i18n.languageNameEnglish": "Engwish (OwO)", // name of language in English "i18n.languageNameEnglish": "Engwish (OwO)", // name of language in English
"i18n.category": "fun", // main = real language, fun = fun community languages "i18n.category": "fun", // main = real language, fun = fun community languages
"i18n.authors": "@deerwithacurl", // Authors, if you contribute to this file feel free to add your name seperated with a space "i18n.authors": "@deerwithacurl @gamingliamstudios", // Authors, if you contribute to this file feel free to add your name seperated with a space
// App info // App info
"app.name": "Cidew", "app.name": "Cidew",
"date.format": "${m} ${d}, ${y}", "date.format": "${m} ${d}, ${y}",
// Dialogs // Dialogs
"dialog.cancel": "Nu", "dialog.cancel": "Nu",
"dialog.ok": "Oki", "dialog.ok": "Oki",
// Notification // Notification
"notification.updatingLibrarySongs": "Updating wibwawy songs...", "notification.updatingLibrarySongs": "Updating wibwawy songs...",
"notification.updatingLibraryAlbums": "Updating wibwawy awbums...", "notification.updatingLibraryAlbums": "Updating wibwawy awbums...",
"notification.updatingLibraryArtists": "Updating wibwawy awtists...", "notification.updatingLibraryArtists": "Updating wibwawy awtists...",
// Terms // Terms
"term.appleInc": "Appwe Inc.", "term.appleInc": "Appwe Inc.",
"term.appleMusic": "Appwe Mewsic", "term.appleMusic": "Appwe Mewsic",
@ -121,7 +127,6 @@
"term.menu": "Menuwu", "term.menu": "Menuwu",
"term.check": "Check", "term.check": "Check",
"term.aboutArtist": "About {{artistName}}", // e.g. 'About Doja Cat' "term.aboutArtist": "About {{artistName}}", // e.g. 'About Doja Cat'
"term.updateCider": "Update Cidew",
"term.topResult": "Top Wesuwt", // Search Results "term.topResult": "Top Wesuwt", // Search Results
"term.sharedPlaylists": "Shawed Pwaywists", // Search Results "term.sharedPlaylists": "Shawed Pwaywists", // Search Results
"term.people": "Peopwe", // Search Results "term.people": "Peopwe", // Search Results
@ -137,6 +142,7 @@
"term.recordLabels": "Wecowd Wabews", "term.recordLabels": "Wecowd Wabews",
"term.videoExtras": "Videowo Extwas", "term.videoExtras": "Videowo Extwas",
"term.top": "Top", "term.top": "Top",
// Home // Home
"home.title": "Home", "home.title": "Home",
"home.recentlyPlayed": "Wecentwy Pwayed", "home.recentlyPlayed": "Wecentwy Pwayed",
@ -146,11 +152,13 @@
"home.madeForYou": "Made Fow Chu", "home.madeForYou": "Made Fow Chu",
"home.friendsListeningTo": "Fwiends Wistening To", "home.friendsListeningTo": "Fwiends Wistening To",
"home.followedArtists": "Fowwowed Awtists", "home.followedArtists": "Fowwowed Awtists",
// Errors // Errors
"error.appleMusicSubRequired": "Appwe Music wequiwes a subscwiption.", "error.appleMusicSubRequired": "Appwe Music wequiwes a subscwiption.",
"error.connectionError": "Thewe was a pwobwem connecting to Appwe Mewsic.", "error.connectionError": "Thewe was a pwobwem connecting to Appwe Mewsic.",
"error.noResults": "No Wesuwts.", "error.noResults": "No Wesuwts.",
"error.noResults.description": "Twy a new seawch.", "error.noResults.description": "Twy a new seawch.",
// Podcasts // Podcasts
"podcast.followOnCider": "Fowwow On Cidew", "podcast.followOnCider": "Fowwow On Cidew",
"podcast.followedOnCider": "Fowwowing On Cidew", "podcast.followedOnCider": "Fowwowing On Cidew",
@ -160,6 +168,7 @@
"podcast.episodes": "Episowodes", "podcast.episodes": "Episowodes",
"podcast.playEpisode": "Pway Episowode", "podcast.playEpisode": "Pway Episowode",
"podcast.website": "Pawdcast Website", "podcast.website": "Pawdcast Website",
// Actions // Actions
"action.addToLibrary": "Add to Wibwawy", "action.addToLibrary": "Add to Wibwawy",
"action.addToLibrary.success": "Added to Wibwawy", "action.addToLibrary.success": "Added to Wibwawy",
@ -207,14 +216,24 @@
"action.update": "Update", "action.update": "Update",
"action.newpreset": "New Pweset...", // Equalizer Preset "action.newpreset": "New Pweset...", // Equalizer Preset
"action.deletepreset": "Dewete Pweset", "action.deletepreset": "Dewete Pweset",
// Settings - General // Settings - General
"settings.header.general": "Genewaw", "settings.header.general": "Genewaw",
"settings.header.general.description": "Adjust the genewaw settings fow Cidew.", "settings.header.general.description": "Adjust the genewaw settings fow Cidew.",
"settings.option.general.language": "Wanguage", "settings.option.general.language": "Wanguage",
// Language optgroups // Language optgroups
"settings.option.general.language.main": "Wanguages", "settings.option.general.language.main": "Wanguages",
"settings.option.general.language.fun": "Fun Wanguages", "settings.option.general.language.fun": "Fun Wanguages",
"settings.option.general.language.unsorted": "Unsowted", "settings.option.general.language.unsorted": "Unsowted",
// Update Cider
"settings.option.general.updateCider": "Update Cidew", // Button
"settings.option.general.updateCider.branch": "Cidew Update Bwanch", // Dropdown
"settings.option.general.updateCider.branch.description": "Sewect the bwanch to uwpdate Cidew to",
"settings.option.general.updateCider.branch.main": "Stabwe",
"settings.option.general.updateCider.branch.develop": "Devewopment",
// Settings - Audio // Settings - Audio
"settings.header.audio": "Audiowo", "settings.header.audio": "Audiowo",
"settings.header.audio.description": "Adjust the audiowo settings fow Cidew.", "settings.header.audio.description": "Adjust the audiowo settings fow Cidew.",
@ -229,9 +248,9 @@
"settings.option.audio.seamlessTransition": "Seamwess Audiowo Twansition", // Toggle "settings.option.audio.seamlessTransition": "Seamwess Audiowo Twansition", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "Enabwe Advanced Functionawity", // Toggle "settings.option.audio.enableAdvancedFunctionality": "Enabwe Advanced Functionawity", // Toggle
"settings.option.audio.enableAdvancedFunctionality.description": "Enabwing AudiowoContext functionawity wiww awwow fow extended audiowo featuwes wike Audiowo Nowmawization, Equalizews and Visuawizews, howevew on some systems dis may cause stuttewing in audiowo twacks.", "settings.option.audio.enableAdvancedFunctionality.description": "Enabwing AudiowoContext functionawity wiww awwow fow extended audiowo featuwes wike Audiowo Nowmawization, Equalizews and Visuawizews, howevew on some systems dis may cause stuttewing in audiowo twacks.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cidew Adwenawine Pwocessow", // Toggle "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cidew Adwenawine Pwocessow™️", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacouwstic enhancements that makes evewything souwnd both wichew and mowe wivewy. | Designed by Maikiwi", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacouwstic enhancements that makes evewything souwnd both wichew and mowe wivewy. | Designed by Maikiwi",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP stwength", // Toggle "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Stwength", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the stwength of the pwocessing done to the auwdio. (Aggwessive may yiewd uwndesiwabwe wesuwwts)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the stwength of the pwocessing done to the auwdio. (Aggwessive may yiewd uwndesiwabwe wesuwwts)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standawd", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standawd",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggwessive", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggwessive",
@ -239,6 +258,7 @@
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Nowmawizes peak vowume fow individuaw twacks to cweate a moar unifowm wistening expewience.", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Nowmawizes peak vowume fow individuaw twacks to cweate a moar unifowm wistening expewience.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audiowo Spatiawization", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audiowo Spatiawization", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatiawize audiowo and make audiowo moar 3-dimensionaw (note: Dis is not Dowby Atmos)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatiawize audiowo and make audiowo moar 3-dimensionaw (note: Dis is not Dowby Atmos)",
// Settings - Visual // Settings - Visual
"settings.header.visual": "Visuaw", "settings.header.visual": "Visuaw",
"settings.header.visual.description": "Adjust the visuaw settings fow Cidew.", "settings.header.visual.description": "Adjust the visuaw settings fow Cidew.",
@ -261,8 +281,12 @@
"settings.option.visual.hardwareAcceleration.description": "Wequiwes wewaunch", "settings.option.visual.hardwareAcceleration.description": "Wequiwes wewaunch",
"settings.header.visual.hardwareAcceleration.default": "Defauwt", "settings.header.visual.hardwareAcceleration.default": "Defauwt",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
// Settings - Visual - Theme name
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "Show Pewsonaw Info", // Toggle "settings.option.visual.showPersonalInfo": "Show Pewsonaw Info", // Toggle
// Settings - Lyrics // Settings - Lyrics
"settings.header.lyrics": "Wywics", "settings.header.lyrics": "Wywics",
"settings.header.lyrics.description": "Adjust the wywics settings fow Cidew.", "settings.header.lyrics.description": "Adjust the wywics settings fow Cidew.",
@ -270,6 +294,7 @@
"settings.option.lyrics.enableMusixmatchKaraoke": "Enabwe Kawaoke Mode (Musixmatch onwy)", // Toggle "settings.option.lyrics.enableMusixmatchKaraoke": "Enabwe Kawaoke Mode (Musixmatch onwy)", // Toggle
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch Twanswation Pwefewwed Wanguage", // Dropdown "settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch Twanswation Pwefewwed Wanguage", // Dropdown
"settings.option.lyrics.enableYoutubeLyrics": "Enabwe YouTube Wywics fow Mewsic Videowos", // Toggle "settings.option.lyrics.enableYoutubeLyrics": "Enabwe YouTube Wywics fow Mewsic Videowos", // Toggle
// Settings - Connectivity // Settings - Connectivity
"settings.header.connectivity": "Connectivity", "settings.header.connectivity": "Connectivity",
"settings.header.connectivity.description": "Adjust the connectivity settings fow Cidew.", "settings.header.connectivity.description": "Adjust the connectivity settings fow Cidew.",
@ -285,11 +310,13 @@
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Wemove featuwing awtists fwom song titwe (Wast.fm)", "settings.option.connectivity.lastfmScrobble.removeFeatured": "Wemove featuwing awtists fwom song titwe (Wast.fm)",
"settings.option.connectivity.lastfmScrobble.filterLoop": "Fiwtew wooped twack (Wast.fm)", "settings.option.connectivity.lastfmScrobble.filterLoop": "Fiwtew wooped twack (Wast.fm)",
// Refer to term.connect for the connect button // Refer to term.connect for the connect button
// Settings - Experimental // Settings - Experimental
"settings.header.experimental": "Expewimentaw", "settings.header.experimental": "Expewimentaw",
"settings.header.experimental.description": "Adjust the expewimentaw settings fow Cidew.", "settings.header.experimental.description": "Adjust the expewimentaw settings fow Cidew.",
"settings.option.experimental.compactUI": "Wittwe UI", // Toggle "settings.option.experimental.compactUI": "Wittwe UI", // Toggle
"settings.option.experimental.close_button_hide": "Cwose Button Shouwd Hide the Appwication", "settings.option.experimental.close_button_hide": "Cwose Button Shouwd Hide the Appwication",
// Refer to term.disabled & term.enabled // Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.notTurnedOn": "Audiowo Spatiawization is disabwed. To use, pwease enabwe it fiwst.", "spatial.notTurnedOn": "Audiowo Spatiawization is disabwed. To use, pwease enabwe it fiwst.",
@ -311,11 +338,14 @@
"spatial.down": "Down", "spatial.down": "Down",
"spatial.listener": "Wistenew", "spatial.listener": "Wistenew",
"spatial.audioSource": "Audiowo Souwce", "spatial.audioSource": "Audiowo Souwce",
// Settings - Unfinished // Settings - Unfinished
"settings.header.unfinished": "Unfinished", "settings.header.unfinished": "Unfinished",
// Web Remote // Web Remote
"remote.web.title": "Cider Wiimote", "remote.web.title": "Cidew Wiimote",
"remote.web.description": "Scan da QR code to paiw chur phone up with dis Cidew instance", "remote.web.description": "Scan da QR code to paiw chur phone up with dis Cidew instance",
// About // About
"about.thanks": "Majow tanks to da Cidew Cowwective Team and aww of ouw contwibutows." "about.thanks": "Majow tanks to da Cidew Cowwective Team and aww of ouw contwibutows."
} }

View file

@ -1,4 +1,4 @@
{ // Base File {
// i18n Info // i18n Info
"i18n.languageName": "piss", // name of language in native language "i18n.languageName": "piss", // name of language in native language
@ -19,6 +19,7 @@
"notification.updatingLibrarySongs": "pisssing all over your songs", "notification.updatingLibrarySongs": "pisssing all over your songs",
"notification.updatingLibraryAlbums": "pissing all over your albums", "notification.updatingLibraryAlbums": "pissing all over your albums",
"notification.updatingLibraryArtists": "pissing all over your idols", "notification.updatingLibraryArtists": "pissing all over your idols",
// Terms // Terms
"term.appleInc": "piss Inc.", "term.appleInc": "piss Inc.",
"term.appleMusic": "piss music", "term.appleMusic": "piss music",
@ -127,7 +128,6 @@
"term.menu": "piss menu", "term.menu": "piss menu",
"term.check": "piss!", "term.check": "piss!",
"term.aboutArtist": "about pisser {{artistName}}", // e.g. 'About Doja Cat' "term.aboutArtist": "about pisser {{artistName}}", // e.g. 'About Doja Cat'
"term.updateCider": "piss on cider",
"term.topResult": "top piss", // Search Results "term.topResult": "top piss", // Search Results
"term.sharedPlaylists": "shared pisslists", // Search Results "term.sharedPlaylists": "shared pisslists", // Search Results
"term.people": "pissers", // Search Results "term.people": "pissers", // Search Results
@ -153,6 +153,7 @@
"home.madeForYou": "pissed for you", "home.madeForYou": "pissed for you",
"home.friendsListeningTo": "friends pissing to", "home.friendsListeningTo": "friends pissing to",
"home.followedArtists": "followed pissers", "home.followedArtists": "followed pissers",
// Errors // Errors
"error.appleMusicSubRequired": "piss music requires, like y'know, an actual piss music subscription to actually use.", "error.appleMusicSubRequired": "piss music requires, like y'know, an actual piss music subscription to actually use.",
"error.connectionError": "oh, piss.", "error.connectionError": "oh, piss.",
@ -228,6 +229,9 @@
"settings.option.general.language.fun": "piss languages", "settings.option.general.language.fun": "piss languages",
"settings.option.general.language.unsorted": "???? who put this here", "settings.option.general.language.unsorted": "???? who put this here",
// Update Cider
"settings.option.general.updateCider": "piss on cider", // Button
// Settings - Audio // Settings - Audio
"settings.header.audio": "piss sounds", "settings.header.audio": "piss sounds",
"settings.header.audio.description": "change how your piss sounds", "settings.header.audio.description": "change how your piss sounds",
@ -243,12 +247,13 @@
"settings.option.audio.seamlessTransition": "seamless piss-to-piss transition", // Toggle "settings.option.audio.seamlessTransition": "seamless piss-to-piss transition", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "cool piss tricks", // Toggle "settings.option.audio.enableAdvancedFunctionality": "cool piss tricks", // Toggle
"settings.option.audio.enableAdvancedFunctionality.description": "enabling the AudioContext thingy allows you to do cool stuffs, however on some systems your song may stutter", "settings.option.audio.enableAdvancedFunctionality.description": "enabling the AudioContext thingy allows you to do cool stuffs, however on some systems your song may stutter",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "clear piss", // Toggle "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "clear piss™️", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "makes your bladder go overboard and makes your piss crisp and clear.", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "makes your bladder go overboard and makes your piss crisp and clear.",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "piss normaliztion", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioNormalization": "piss normaliztion", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "protect your eardrums from overly loud/slient pisses", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "protect your eardrums from overly loud/slient pisses",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "3D piss", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "3D piss", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "this aint the dolby atmos you are looking for but its still pretty crazy so check it out", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "this aint the dolby atmos you are looking for but its still pretty crazy so check it out",
// Settings - Visual // Settings - Visual
"settings.header.visual": "piss appearance", "settings.header.visual": "piss appearance",
"settings.header.visual.description": "change how your piss looks", "settings.header.visual.description": "change how your piss looks",
@ -311,8 +316,8 @@
"settings.option.experimental.close_button_hide": "play hide-and-seek when clicking close button", "settings.option.experimental.close_button_hide": "play hide-and-seek when clicking close button",
"settings.option.experimental.copy_log": "copy sewage to pissboard", "settings.option.experimental.copy_log": "copy sewage to pissboard",
"settings.option.experimental.inline_playlists": "inpiss pisslists and piss collections", "settings.option.experimental.inline_playlists": "inpiss pisslists and piss collections",
// Refer to term.disabled & term.enabled
// Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.notTurnedOn": "3D piss is not on. turn it on lol", "spatial.notTurnedOn": "3D piss is not on. turn it on lol",
"spatial.spatialProperties": "3D properties", "spatial.spatialProperties": "3D properties",

View file

@ -19,6 +19,7 @@
"notification.updatingLibrarySongs": "⚍i!↸ᖋᒣ╎リ┤ |:╎ᕊ∷ᖋ∷॥ ϟᒍリ┤ϟ...", "notification.updatingLibrarySongs": "⚍i!↸ᖋᒣ╎リ┤ |:╎ᕊ∷ᖋ∷॥ ϟᒍリ┤ϟ...",
"notification.updatingLibraryAlbums": "⚍i!↸ᖋᒣ╎リ┤ |:╎ᕊ∷ᖋ∷॥ ᖋ|:ᕊ⚍ᒲϟ...", "notification.updatingLibraryAlbums": "⚍i!↸ᖋᒣ╎リ┤ |:╎ᕊ∷ᖋ∷॥ ᖋ|:ᕊ⚍ᒲϟ...",
"notification.updatingLibraryArtists": "⚍i!↸ᖋᒣ╎リ┤ |:╎ᕊ∷ᖋ∷॥ ᖋ∷ᒣ╎ϟᒣϟ...", "notification.updatingLibraryArtists": "⚍i!↸ᖋᒣ╎リ┤ |:╎ᕊ∷ᖋ∷॥ ᖋ∷ᒣ╎ϟᒣϟ...",
// Terms // Terms
"term.appleInc": "ᖋi!i!|:ᒷ ╎リᔮ.", "term.appleInc": "ᖋi!i!|:ᒷ ╎リᔮ.",
"term.appleMusic": "ᖋi!i!|:ᒷ ᒲ⚍ϟ╎ᔮ", "term.appleMusic": "ᖋi!i!|:ᒷ ᒲ⚍ϟ╎ᔮ",
@ -127,7 +128,6 @@
"term.menu": "ᒲᒷ⚍リ", "term.menu": "ᒲᒷ⚍リ",
"term.check": "ᔮ⍑ᒷᔮ·ǀ·", "term.check": "ᔮ⍑ᒷᔮ·ǀ·",
"term.aboutArtist": "ᖋᕊᒍ⚍ᒣ {{artistName}}", // e.g. 'About Doja Cat' "term.aboutArtist": "ᖋᕊᒍ⚍ᒣ {{artistName}}", // e.g. 'About Doja Cat'
"term.updateCider": "⚍i!↸ᖋᒣᒷ ᔮ╎↸ᒷ∷",
"term.topResult": "ᒣi! ∷ᒷϟ⚍|:ᒣ", // Search Results "term.topResult": "ᒣi! ∷ᒷϟ⚍|:ᒣ", // Search Results
"term.sharedPlaylists": "ϟ⍑ᖋ∷ᒷ↸ i!|:ᖋ॥|:╎ϟᒣϟ", // Search Results "term.sharedPlaylists": "ϟ⍑ᖋ∷ᒷ↸ i!|:ᖋ॥|:╎ϟᒣϟ", // Search Results
"term.people": "i!ᒷi!|:ᒷ", // Search Results "term.people": "i!ᒷi!|:ᒷ", // Search Results
@ -135,6 +135,8 @@
"term.addedpreset": "ᖋ↸↸ᒷ↸ i!∷ᒷϟᒷᒣ", "term.addedpreset": "ᖋ↸↸ᒷ↸ i!∷ᒷϟᒷᒣ",
"term.deletepreset.warn": "ᖋ∷ᒷ ॥ᒍ⚍ ϟ⚍∷ᒷ ॥ᒍ⚍ ∴ᖋリᒣ ᒣᒍ ↸ᒷ|:ᒷᒣᒷ ᒣ⍑╎ϟ i!∷ᒷϟᒷᒣ?", "term.deletepreset.warn": "ᖋ∷ᒷ ॥ᒍ⚍ ϟ⚍∷ᒷ ॥ᒍ⚍ ∴ᖋリᒣ ᒣᒍ ↸ᒷ|:ᒷᒣᒷ ᒣ⍑╎ϟ i!∷ᒷϟᒷᒣ?",
"term.deletedpreset": "∷ᒷᒲᒍ⍊ᒷ↸ i!∷ᒷϟᒷᒣ", "term.deletedpreset": "∷ᒷᒲᒍ⍊ᒷ↸ i!∷ᒷϟᒷᒣ",
"term.requestError": "ᒣ⍑ᒷ∷ᒷ ∴ᖋϟ ᖋ i!∷ᒍᕊ|:ᒷᒲ ∴╎ᒣ⍑ ᒣ⍑ᒷ ∷ᒷᑑ⚍ᒷϟᒣ.",
"term.song.link.generate": "┤ᒷᒣᒣ╎リ┤ ϟᒍリ┤.|:╎リ·ǀ· ϟ⍑ᖋ∷ᒷ ⚍∷|:...",
"term.musicVideos": "ᒲ⚍ϟ╎ᔮ ⍊╎↸ᒷᒍϟ", // Search page friendlyTypes "term.musicVideos": "ᒲ⚍ϟ╎ᔮ ⍊╎↸ᒷᒍϟ", // Search page friendlyTypes
"term.stations": "ϟᒣᖋᒣ╎ᒍリϟ", "term.stations": "ϟᒣᖋᒣ╎ᒍリϟ",
"term.curators": "ᔮ⚍∷ᖋᒣᒍ∷ϟ", "term.curators": "ᔮ⚍∷ᖋᒣᒍ∷ϟ",
@ -153,6 +155,7 @@
"home.madeForYou": "ᒲᖋ↸ᒷ ⎓ᒍ∷ ॥ᒍ⚍", "home.madeForYou": "ᒲᖋ↸ᒷ ⎓ᒍ∷ ॥ᒍ⚍",
"home.friendsListeningTo": "⎓∷╎ᒷリ↸ϟ |:╎ϟᒣᒷリ╎リ┤ ᒣᒍ", "home.friendsListeningTo": "⎓∷╎ᒷリ↸ϟ |:╎ϟᒣᒷリ╎リ┤ ᒣᒍ",
"home.followedArtists": "⎓ᒍ|:|:ᒍ∴ᒷ↸ ᖋ∷ᒣ╎ϟᒣϟ", "home.followedArtists": "⎓ᒍ|:|:ᒍ∴ᒷ↸ ᖋ∷ᒣ╎ϟᒣϟ",
// Errors // Errors
"error.appleMusicSubRequired": "ᖋi!i!|:ᒷ ᒲ⚍ϟ╎ᔮ ∷ᒷᑑ⚍╎∷ᒷϟ ᖋ ϟ⚍ᕊϟᔮ∷╎i!ᒣ╎ᒍリ.", "error.appleMusicSubRequired": "ᖋi!i!|:ᒷ ᒲ⚍ϟ╎ᔮ ∷ᒷᑑ⚍╎∷ᒷϟ ᖋ ϟ⚍ᕊϟᔮ∷╎i!ᒣ╎ᒍリ.",
"error.connectionError": "ᒣ⍑ᒷ∷ᒷ ∴ᖋϟ ᖋ i!∷ᒍᕊ|:ᒷᒲ ᔮᒍリリᒷᔮᒣ╎リ┤ ᒣᒍ ᖋi!i!|:ᒷ ᒲ⚍ϟ╎ᔮ.", "error.connectionError": "ᒣ⍑ᒷ∷ᒷ ∴ᖋϟ ᖋ i!∷ᒍᕊ|:ᒷᒲ ᔮᒍリリᒷᔮᒣ╎リ┤ ᒣᒍ ᖋi!i!|:ᒷ ᒲ⚍ϟ╎ᔮ.",
@ -228,6 +231,13 @@
"settings.option.general.language.fun": "⎓⚍リ |:ᖋリ┤⚍ᖋ┤ᒷϟ", "settings.option.general.language.fun": "⎓⚍リ |:ᖋリ┤⚍ᖋ┤ᒷϟ",
"settings.option.general.language.unsorted": "⚍リϟᒍ∷ᒣᒷ↸", "settings.option.general.language.unsorted": "⚍リϟᒍ∷ᒣᒷ↸",
// Update Cider
"settings.option.general.updateCider": "⚍i!↸ᖋᒣᒷ ᔮ╎↸ᒷ∷",
"settings.option.general.updateCider.branch": "ᔮ╎↸ᒷ∷ ⚍i!↸ᖋᒣᒷ ᕊ∷ᖋリᔮ⍑", // Dropdown
"settings.option.general.updateCider.branch.description": "ϟᒷ|:ᒷᔮᒣ ᒣ⍑ᒷ ᕊ∷ᖋリᔮ⍑ ᒣᒍ ⚍i!↸ᖋᒣᒷ ᔮ╎↸ᒷ∷ ᒣᒍ",
"settings.option.general.updateCider.branch.main": "ϟᒣᖋᕊ|:ᒷ",
"settings.option.general.updateCider.branch.develop": "↸ᒷ⍊ᒷ|:i!ᒲᒷリᒣ",
// Settings - Audio // Settings - Audio
"settings.header.audio": "ᖋ⚍↸╎ᒍ", "settings.header.audio": "ᖋ⚍↸╎ᒍ",
"settings.header.audio.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ᖋ⚍↸╎ᒍ ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.", "settings.header.audio.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ᖋ⚍↸╎ᒍ ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.",
@ -237,17 +247,25 @@
"settings.header.audio.quality.lossless": "|:ᒍϟϟ|:ᒷϟϟ", "settings.header.audio.quality.lossless": "|:ᒍϟϟ|:ᒷϟϟ",
"settings.header.audio.quality.lossless.description": "(⚍i! ᒣᒍ 24-ᕊ╎ᒣ/48 ·ǀ·⍑∩)", "settings.header.audio.quality.lossless.description": "(⚍i! ᒣᒍ 24-ᕊ╎ᒣ/48 ·ǀ·⍑∩)",
"settings.header.audio.quality.high": "⍑╎┤⍑", "settings.header.audio.quality.high": "⍑╎┤⍑",
"settings.header.audio.quality.low": "|:ᒍ∴", "settings.header.audio.quality.high.description": "256 ·ǀ·ᕊi!ϟ",
"settings.header.audio.quality.auto": "ᖋ⚍ᒣᒍ", "settings.header.audio.quality.standard": "ϟᒣᖋリ↸ᖋ∷↸",
"settings.header.audio.quality.standard.description": "64 ·ǀ·ᕊi!ϟ",
"settings.option.audio.seamlessTransition": "ϟᒷᖋᒲ|:ᒷϟϟ ᖋ⚍↸╎ᒍ ᒣ∷ᖋリϟ╎ᒣ╎ᒍリ", // Toggle "settings.option.audio.seamlessTransition": "ϟᒷᖋᒲ|:ᒷϟϟ ᖋ⚍↸╎ᒍ ᒣ∷ᖋリϟ╎ᒣ╎ᒍリ", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "ᒷリᖋᕊ|:ᒷ ᖋ↸⍊ᖋリᔮᒷ↸ ⎓⚍リᔮᒣ╎ᒍリᖋ|:╎ᒣ॥", // Toggle "settings.option.audio.enableAdvancedFunctionality": "ᒷリᖋᕊ|:ᒷ ᖋ↸⍊ᖋリᔮᒷ↸ ⎓⚍リᔮᒣ╎ᒍリᖋ|:╎ᒣ॥", // Toggle
"settings.option.audio.enableAdvancedFunctionality.description": "ᒷリᖋᕊ|:╎リ┤ ᖋ⚍↸╎ᒍᔮᒍリᒣᒷ/ᒣ ⎓⚍リᔮᒣ╎ᒍリᖋ|:╎ᒣ॥ ∴╎|:|: ᖋ|:|:ᒍ∴ ⎓ᒍ∷ ᒷ/ᒣᒷリ↸ᒷ↸ ᖋ⚍↸╎ᒍ ⎓ᒷᖋᒣ⚍∷ᒷϟ |:╎·ǀ·ᒷ ᖋ⚍↸╎ᒍ リᒍ∷ᒲᖋ|:╎∩ᖋᒣ╎ᒍリ , ᒷᑑ⚍ᖋ|:╎∩ᒷ∷ϟ ᖋリ↸ ⍊╎ϟ⚍ᖋ|:╎∩ᒷ∷ϟ, ⍑ᒍ∴ᒷ⍊ᒷ∷ ᒍリ ϟᒍᒲᒷ ϟ॥ϟᒣᒷᒲϟ ᒣ⍑╎ϟ ᒲᖋ॥ ᔮᖋ⚍ϟᒷ ϟᒣ⚍ᒣᒣᒷ∷╎リ┤ ╎リ ᖋ⚍↸╎ᒍ ᒣ∷ᖋᔮ·ǀ·ϟ.", "settings.option.audio.enableAdvancedFunctionality.description": "ᒷリᖋᕊ|:╎リ┤ ᖋ⚍↸╎ᒍᔮᒍリᒣᒷ/ᒣ ⎓⚍リᔮᒣ╎ᒍリᖋ|:╎ᒣ॥ ∴╎|:|: ᖋ|:|:ᒍ∴ ⎓ᒍ∷ ᒷ/ᒣᒷリ↸ᒷ↸ ᖋ⚍↸╎ᒍ ⎓ᒷᖋᒣ⚍∷ᒷϟ |:╎·ǀ·ᒷ ᖋ⚍↸╎ᒍ リᒍ∷ᒲᖋ|:╎∩ᖋᒣ╎ᒍリ , ᒷᑑ⚍ᖋ|:╎∩ᒷ∷ϟ ᖋリ↸ ⍊╎ϟ⚍ᖋ|:╎∩ᒷ∷ϟ, ⍑ᒍ∴ᒷ⍊ᒷ∷ ᒍリ ϟᒍᒲᒷ ϟ॥ϟᒣᒷᒲϟ ᒣ⍑╎ϟ ᒲᖋ॥ ᔮᖋ⚍ϟᒷ ϟᒣ⚍ᒣᒣᒷ∷╎リ┤ ╎リ ᖋ⚍↸╎ᒍ ᒣ∷ᖋᔮ·ǀ·ϟ.",
"settings.option.audio.enableAdvancedFunctionality.decryptLLPW": "↸ᒷᔮ∷॥i!ᒣ |:ᒍϟϟ|:ᒷϟϟ i!|:ᖋ॥ᕊᖋᔮ·ǀ· ∴ᒍ∷·ǀ·⎓|:ᒍ∴", // Toggle "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "ᔮ╎↸ᒷ∷ ᖋ↸∷ᒷリᖋ|:╎リᒷ i!∷ᒍᔮᒷϟϟᒍ∷™️", // Toggle
"settings.option.audio.enableAdvancedFunctionality.decryptLLPW.description": "ᒷリᖋᕊ|:ᒷϟ ᒣ⍑ᒷ ᖋᕊ╎|:╎ᒣ॥ ⎓ᒍ∷ ᔮ╎↸ᒷ∷ ᒣᒍ ↸ᒷᔮ∷॥i!ᒣ |:ᒍϟϟ|:ᒷϟϟ ᖋ⚍↸╎ᒍ ⎓╎|:ᒷϟ. ᖋ ᒲ╎リᒍ∷ i!ᒷ∷⎓ᒍ∷ᒲᖋリᔮᒷ ⍑╎ᒣ ∴╎|:|: ᒍᔮᔮ⚍∷.", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "i!ϟ॥ᔮ⍑ᒍᖋᔮᒍ⚍ϟᒣ╎ᔮ ᒷリ⍑ᖋリᔮᒷᒲᒷリᒣϟ ᒣ⍑ᖋᒣ ᒲᖋ·ǀ·ᒷϟ ᒷ⍊ᒷ∷॥ᒣ⍑╎リ┤ ϟᒍ⚍リ↸ ᕊᒍᒣ⍑ ∷╎ᔮ⍑ᒷ∷ ᖋリ↸ ᒲᒍ∷ᒷ |:╎⍊ᒷ|:॥ | ↸ᒷϟ╎┤リᒷ↸ ᕊ॥ ᒲᖋ╎·ǀ·╎∴╎.",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "ᔮᖋi! ╎ϟ リᒍᒣ ᔮᒲi!ᖋᒣ╎ᕊ|:ᒷ ∴╎ᒣ⍑ ϟi!ᖋᒣ╎ᖋ|:╎∩ᖋᒣ╎ᒍリ. i!|:ᒷᖋϟᒷ ↸╎ϟᖋᕊ|:ᒷ ϟi!ᖋᒣ╎ᖋ|:╎∩ᖋᒣ╎ᒍリ ᒣᒍ ᔮᒍリᒣ╎リ⚍ᒷ.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "ᔮᖋi! ϟᒣ∷ᒷリ┤ᒣ⍑", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "ᔮ⍑ᖋリ┤ᒷϟ ᒣ⍑ᒷ ϟᒣ∷ᒷリ┤ᒣ⍑ ᒍ⎓ ᒣ⍑ᒷ i!∷ᒍᔮᒷϟϟ╎リ┤ ↸ᒍリᒷ ᒣᒍ ᒣ⍑ᒷ ᖋ⚍↸╎ᒍ. (ᖋ┤┤∷ᒷϟϟ╎⍊ᒷ ᒲᖋ॥ ॥╎ᒷ|:↸ ⚍リ↸ᒷϟ╎∷ᖋᕊ|:ᒷ ∷ᒷϟ⚍|:ᒣϟ)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "ϟᒣᖋリ↸ᖋ∷↸",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "ᖋ┤┤∷ᒷϟϟ╎⍊ᒷ",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "ᖋ⚍↸╎ᒍ リᒍ∷ᒲᖋ|:╎∩ᖋᒣ╎ᒍリ", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioNormalization": "ᖋ⚍↸╎ᒍ リᒍ∷ᒲᖋ|:╎∩ᖋᒣ╎ᒍリ", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "リᒍ∷ᒲᖋ|:╎∩ᒷϟ i!ᒷᖋ·ǀ· ⍊ᒍ|:⚍ᒲᒷ ⎓ᒍ∷ ╎リ↸╎⍊╎↸⚍ᖋ|: ᒣ∷ᖋᔮ·ǀ·ϟ ᒣᒍ ᔮ∷ᒷᖋᒣᒷ ᖋ ᒲᒍ∷ᒷ ⚍リ╎⎓ᒍ∷ᒲ |:╎ϟᒣᒷリ╎リ┤ ᒷ/i!ᒷ∷╎ᒷリᔮᒷ.", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "リᒍ∷ᒲᖋ|:╎∩ᒷϟ i!ᒷᖋ·ǀ· ⍊ᒍ|:⚍ᒲᒷ ⎓ᒍ∷ ╎リ↸╎⍊╎↸⚍ᖋ|: ᒣ∷ᖋᔮ·ǀ·ϟ ᒣᒍ ᔮ∷ᒷᖋᒣᒷ ᖋ ᒲᒍ∷ᒷ ⚍リ╎⎓ᒍ∷ᒲ |:╎ϟᒣᒷリ╎リ┤ ᒷ/i!ᒷ∷╎ᒷリᔮᒷ.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "ᖋ⚍↸╎ᒍ ϟi!ᖋᒣ╎ᖋ|:╎∩ᖋᒣ╎ᒍリ", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "ᖋ⚍↸╎ᒍ ϟi!ᖋᒣ╎ᖋ|:╎∩ᖋᒣ╎ᒍリ", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "ϟi!ᖋᒣ╎ᖋ|:╎∩ᒷ ᖋ⚍↸╎ᒍ ᖋリ↸ ᒲᖋ·ǀ·ᒷ ᖋ⚍↸╎ᒍ ᒲᒍ∷ᒷ 3-↸╎ᒲᒷリϟ╎ᒍリᖋ|: (リᒍᒣᒷ: ᒣ⍑╎ϟ ╎ϟ リᒍᒣ ↸ᒍ|:ᕊ॥ ᖋᒣᒲᒍϟ)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "ϟi!ᖋᒣ╎ᖋ|:╎∩ᒷ ᖋ⚍↸╎ᒍ ᖋリ↸ ᒲᖋ·ǀ·ᒷ ᖋ⚍↸╎ᒍ ᒲᒍ∷ᒷ 3-↸╎ᒲᒷリϟ╎ᒍリᖋ|: (リᒍᒣᒷ: ᒣ⍑╎ϟ ╎ϟ リᒍᒣ ↸ᒍ|:ᕊ॥ ᖋᒣᒲᒍϟ)",
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "ϟi!ᖋᒣ╎ᖋ|:╎∩ᖋᒣ╎ᒍリ ╎ϟ リᒍᒣ ᔮᒲi!ᖋᒣ╎ᕊ|:ᒷ ∴╎ᒣ⍑ ᔮᖋi!. i!|:ᒷᖋϟᒷ ↸╎ϟᖋᕊ|:ᒷ ᔮᖋi! ᒣᒍ ᔮᒍリᒣ╎リ⚍ᒷ.",
// Settings - Visual // Settings - Visual
"settings.header.visual": "⍊╎ϟ⚍ᖋ|:", "settings.header.visual": "⍊╎ϟ⚍ᖋ|:",
"settings.header.visual.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ⍊╎ϟ⚍ᖋ| ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.", "settings.header.visual.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ⍊╎ϟ⚍ᖋ| ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.",
@ -310,8 +328,8 @@
"settings.option.experimental.close_button_hide": "ᔮ|:ᒍϟᒷ ᕊ⚍ᒣᒣᒍリ ϟ⍑ᒍ⚍|:↸ ⍑╎↸ᒷ ᒣ⍑ᒷ ᖋi!i!|:╎ᔮᖋᒣ╎ᒍリ", "settings.option.experimental.close_button_hide": "ᔮ|:ᒍϟᒷ ᕊ⚍ᒣᒣᒍリ ϟ⍑ᒍ⚍|:↸ ⍑╎↸ᒷ ᒣ⍑ᒷ ᖋi!i!|:╎ᔮᖋᒣ╎ᒍリ",
"settings.option.experimental.copy_log": "ᔮi!॥ |:ᒍ┤ϟ ᒣᒍ ᔮ|:╎i!ᕊᒍᖋ∷↸", "settings.option.experimental.copy_log": "ᔮi!॥ |:ᒍ┤ϟ ᒣᒍ ᔮ|:╎i!ᕊᒍᖋ∷↸",
"settings.option.experimental.inline_playlists": "╎リ|:╎リᒷ i!|:ᖋ॥|:╎ϟᒣϟ ᖋリ↸ ᖋ|:ᕊ⚍ᒲϟ", "settings.option.experimental.inline_playlists": "╎リ|:╎リᒷ i!|:ᖋ॥|:╎ϟᒣϟ ᖋリ↸ ᖋ|:ᕊ⚍ᒲϟ",
// Refer to term.disabled & term.enabled
// Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.notTurnedOn": "ᖋ⚍↸╎ᒍ ϟi!ᖋᒣ╎ᖋ|:╎∩ᖋᒣ╎ᒍリ ╎ϟ ↸╎ϟᖋᕊ|:ᒷ↸. ᒣᒍ ⚍ϟᒷ, i!|:ᒷᖋϟᒷ ᒷリᖋᕊ|:ᒷ ╎ᒣ ⎓╎∷ϟᒣ.", "spatial.notTurnedOn": "ᖋ⚍↸╎ᒍ ϟi!ᖋᒣ╎ᖋ|:╎∩ᖋᒣ╎ᒍリ ╎ϟ ↸╎ϟᖋᕊ|:ᒷ↸. ᒣᒍ ⚍ϟᒷ, i!|:ᒷᖋϟᒷ ᒷリᖋᕊ|:ᒷ ╎ᒣ ⎓╎∷ϟᒣ.",
"spatial.spatialProperties": "ϟi!ᖋᒣ╎ᖋ|: i!∷i!ᒷ∷ᒣ╎ᒷϟ", "spatial.spatialProperties": "ϟi!ᖋᒣ╎ᖋ|: i!∷i!ᒷ∷ᒣ╎ᒷϟ",

View file

@ -1,19 +1,25 @@
{ // Base File { // Base File
// i18n Info // i18n Info
"i18n.languageName": "English (US)", // name of language in native language "i18n.languageName": "English (US)", // name of language in native language
"i18n.languageNameEnglish": "English (US)", // name of language in English "i18n.languageNameEnglish": "English (US)", // name of language in English
"i18n.category": "main", // main = real language, fun = fun community languages "i18n.category": "main", // main = real language, fun = fun community languages
"i18n.authors": "@maikirakiwi", // Authors, if you contribute to this file feel free to add your name seperated with a space "i18n.authors": "@maikirakiwi @kyw504100", // Authors, if you contribute to this file feel free to add your name seperated with a space
// App info // App info
"app.name": "Cider", "app.name": "Cider",
"date.format": "${m} ${d}, ${y}", "date.format": "${m} ${d}, ${y}",
// Dialogs // Dialogs
"dialog.cancel": "Cancel", "dialog.cancel": "Cancel",
"dialog.ok": "OK", "dialog.ok": "OK",
// Notification // Notification
"notification.updatingLibrarySongs": "Updating library songs...", "notification.updatingLibrarySongs": "Updating library songs...",
"notification.updatingLibraryAlbums": "Updating library albums...", "notification.updatingLibraryAlbums": "Updating library albums...",
"notification.updatingLibraryArtists": "Updating library artists...", "notification.updatingLibraryArtists": "Updating library artists...",
// Terms // Terms
"term.appleInc": "Apple Inc.", "term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music", "term.appleMusic": "Apple Music",
@ -122,7 +128,6 @@
"term.menu": "Menu", "term.menu": "Menu",
"term.check": "Check", "term.check": "Check",
"term.aboutArtist": "About {{artistName}}", // e.g. 'About Doja Cat' "term.aboutArtist": "About {{artistName}}", // e.g. 'About Doja Cat'
"term.updateCider": "Update Cider",
"term.topResult": "Top Result", // Search Results "term.topResult": "Top Result", // Search Results
"term.sharedPlaylists": "Shared Playlists", // Search Results "term.sharedPlaylists": "Shared Playlists", // Search Results
"term.people": "People", // Search Results "term.people": "People", // Search Results
@ -130,6 +135,8 @@
"term.addedpreset": "Added Preset", "term.addedpreset": "Added Preset",
"term.deletepreset.warn": "Are you sure you want to delete this preset?", "term.deletepreset.warn": "Are you sure you want to delete this preset?",
"term.deletedpreset": "Removed preset", "term.deletedpreset": "Removed preset",
"term.requestError": "There was a problem with the request.",
"term.song.link.generate": "Getting song.link share URL...",
"term.musicVideos": "Music Videos", // Search page friendlyTypes "term.musicVideos": "Music Videos", // Search page friendlyTypes
"term.stations": "Stations", "term.stations": "Stations",
"term.curators": "Curators", "term.curators": "Curators",
@ -138,6 +145,7 @@
"term.recordLabels": "Record Labels", "term.recordLabels": "Record Labels",
"term.videoExtras": "Video Extras", "term.videoExtras": "Video Extras",
"term.top": "Top", "term.top": "Top",
// Home // Home
"home.title": "Home", "home.title": "Home",
"home.recentlyPlayed": "Recently Played", "home.recentlyPlayed": "Recently Played",
@ -147,11 +155,13 @@
"home.madeForYou": "Made For You", "home.madeForYou": "Made For You",
"home.friendsListeningTo": "Friends Listening To", "home.friendsListeningTo": "Friends Listening To",
"home.followedArtists": "Followed Artists", "home.followedArtists": "Followed Artists",
// Errors // Errors
"error.appleMusicSubRequired": "Apple Music requires a subscription.", "error.appleMusicSubRequired": "Apple Music requires a subscription.",
"error.connectionError": "There was a problem connecting to Apple Music.", "error.connectionError": "There was a problem connecting to Apple Music.",
"error.noResults": "No Results.", "error.noResults": "No Results.",
"error.noResults.description": "Try a new search.", "error.noResults.description": "Try a new search.",
// Podcasts // Podcasts
"podcast.followOnCider": "Follow On Cider", "podcast.followOnCider": "Follow On Cider",
"podcast.followedOnCider": "Following On Cider", "podcast.followedOnCider": "Following On Cider",
@ -161,6 +171,7 @@
"podcast.episodes": "Episodes", "podcast.episodes": "Episodes",
"podcast.playEpisode": "Play Episode", "podcast.playEpisode": "Play Episode",
"podcast.website": "Podcast Website", "podcast.website": "Podcast Website",
// Actions // Actions
"action.addToLibrary": "Add to Library", "action.addToLibrary": "Add to Library",
"action.addToLibrary.success": "Added to Library", "action.addToLibrary.success": "Added to Library",
@ -209,31 +220,42 @@
"action.copy": "Copy", "action.copy": "Copy",
"action.newpreset": "New Preset...", // Equalizer Preset "action.newpreset": "New Preset...", // Equalizer Preset
"action.deletepreset": "Delete Preset", "action.deletepreset": "Delete Preset",
// Settings - General // Settings - General
"settings.header.general": "General", "settings.header.general": "General",
"settings.header.general.description": "Adjust the general settings for Cider.", "settings.header.general.description": "Adjust the general settings for Cider.",
"settings.option.general.language": "Language", "settings.option.general.language": "Language",
// Language optgroups // Language optgroups
"settings.option.general.language.main": "Languages", "settings.option.general.language.main": "Languages",
"settings.option.general.language.fun": "Fun Languages", "settings.option.general.language.fun": "Fun Languages",
"settings.option.general.language.unsorted": "Unsorted", "settings.option.general.language.unsorted": "Unsorted",
// Update Cider
"settings.option.general.updateCider": "Update Cider", // Button. Refer to term.check for the check button
"settings.option.general.updateCider.branch": "Cider Update Branch", // Dropdown
"settings.option.general.updateCider.branch.description": "Select the branch to update Cider to",
"settings.option.general.updateCider.branch.main": "Stable",
"settings.option.general.updateCider.branch.develop": "Development",
// Settings - Audio // Settings - Audio
"settings.header.audio": "Audio", "settings.header.audio": "Audio",
"settings.header.audio.description": "Adjust the audio settings for Cider.", "settings.header.audio.description": "Adjust the audio settings for Cider.",
"settings.option.audio.quality": "Audio Quality", // Dropdown "settings.option.audio.quality": "Audio Quality", // Dropdown
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless", "settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
"settings.header.audio.quality.hireslossless.description": "(up to 24-bit/192 kHz)", "settings.header.audio.quality.hireslossless.description": "up to 24-bit/192 kHz",
"settings.header.audio.quality.lossless": "Lossless", "settings.header.audio.quality.lossless": "Lossless",
"settings.header.audio.quality.lossless.description": "(up to 24-bit/48 kHz)", "settings.header.audio.quality.lossless.description": "up to 24-bit/48 kHz",
"settings.header.audio.quality.enhanced": "Enhanced",
"settings.header.audio.quality.high": "High", "settings.header.audio.quality.high": "High",
"settings.header.audio.quality.low": "Low", "settings.header.audio.quality.high.description": "256 kbps",
"settings.header.audio.quality.auto": "Auto", "settings.header.audio.quality.standard": "Standard",
"settings.header.audio.quality.standard.description": "64 kbps",
"settings.option.audio.seamlessTransition": "Seamless Audio Transition", // Toggle "settings.option.audio.seamlessTransition": "Seamless Audio Transition", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "Enable Advanced Functionality", // Toggle "settings.option.audio.enableAdvancedFunctionality": "Enable Advanced Functionality", // Toggle
"settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalization , Equalizers and Visualizers, however on some systems this may cause stuttering in audio tracks.", "settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalization , Equalizers and Visualizers, however on some systems this may cause stuttering in audio tracks.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor", // Toggle "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes everything sound both richer and more lively. | Designed by Maikiwi", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes everything sound both richer and more lively | Designed by Maikiwi.",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP is not compatible with Spatialization. Please disable Spatialization to continue.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength", // Toggle "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standard", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standard",
@ -242,6 +264,8 @@
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizes peak volume for individual tracks to create a more uniform listening experience.", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizes peak volume for individual tracks to create a more uniform listening experience.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialization", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialization", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialize audio and make audio more 3-dimensional (note: This is not Dolby Atmos)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialize audio and make audio more 3-dimensional (note: This is not Dolby Atmos)",
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "Spatialization is not compatible with CAP. Please disable CAP to continue.",
// Settings - Visual // Settings - Visual
"settings.header.visual": "Visual", "settings.header.visual": "Visual",
"settings.header.visual.description": "Adjust the visual settings for Cider.", "settings.header.visual.description": "Adjust the visual settings for Cider.",
@ -265,11 +289,14 @@
"settings.header.visual.hardwareAcceleration.default": "Default", "settings.header.visual.hardwareAcceleration.default": "Default",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
"settings.header.visual.theme": "Theme", "settings.header.visual.theme": "Theme",
// Settings - Visual - Theme name // Settings - Visual - Theme name
"settings.option.visual.theme.default": "Cider", "settings.option.visual.theme.default": "Cider",
"settings.option.visual.theme.dark": "Dark", "settings.option.visual.theme.dark": "Dark",
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "Show Personal Info", // Toggle "settings.option.visual.showPersonalInfo": "Show Personal Info", // Toggle
// Settings - Lyrics // Settings - Lyrics
"settings.header.lyrics": "Lyrics", "settings.header.lyrics": "Lyrics",
"settings.header.lyrics.description": "Adjust the lyrics settings for Cider.", "settings.header.lyrics.description": "Adjust the lyrics settings for Cider.",
@ -277,6 +304,7 @@
"settings.option.lyrics.enableMusixmatchKaraoke": "Enable Karaoke Mode (Musixmatch only)", // Toggle "settings.option.lyrics.enableMusixmatchKaraoke": "Enable Karaoke Mode (Musixmatch only)", // Toggle
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch Translation Preferred Language", // Dropdown "settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch Translation Preferred Language", // Dropdown
"settings.option.lyrics.enableYoutubeLyrics": "Enable Youtube Lyrics for Music Videos", // Toggle "settings.option.lyrics.enableYoutubeLyrics": "Enable Youtube Lyrics for Music Videos", // Toggle
// Settings - Connectivity // Settings - Connectivity
"settings.header.connectivity": "Connectivity", "settings.header.connectivity": "Connectivity",
"settings.header.connectivity.description": "Adjust the connectivity settings for Cider.", "settings.header.connectivity.description": "Adjust the connectivity settings for Cider.",
@ -292,6 +320,7 @@
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Remove featuring artists from song title (Last.fm)", "settings.option.connectivity.lastfmScrobble.removeFeatured": "Remove featuring artists from song title (Last.fm)",
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filter looped track (Last.fm)", "settings.option.connectivity.lastfmScrobble.filterLoop": "Filter looped track (Last.fm)",
// Refer to term.connect for the connect button // Refer to term.connect for the connect button
// Settings - Experimental // Settings - Experimental
"settings.header.experimental": "Experimental", "settings.header.experimental": "Experimental",
"settings.header.experimental.description": "Adjust the experimental settings for Cider.", "settings.header.experimental.description": "Adjust the experimental settings for Cider.",
@ -299,6 +328,7 @@
"settings.option.experimental.close_button_hide": "Close Button Should Hide the Application", "settings.option.experimental.close_button_hide": "Close Button Should Hide the Application",
"settings.option.experimental.copy_log": "Copy logs to clipboard", "settings.option.experimental.copy_log": "Copy logs to clipboard",
"settings.option.experimental.inline_playlists": "Inline Playlists and Albums", "settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
// Refer to term.disabled & term.enabled // Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.notTurnedOn": "Audio Spatialization is disabled. To use, please enable it first.", "spatial.notTurnedOn": "Audio Spatialization is disabled. To use, please enable it first.",
@ -320,11 +350,14 @@
"spatial.down": "Down", "spatial.down": "Down",
"spatial.listener": "Listener", "spatial.listener": "Listener",
"spatial.audioSource": "Audio Source", "spatial.audioSource": "Audio Source",
// Settings - Unfinished // Settings - Unfinished
"settings.header.unfinished": "Unfinished", "settings.header.unfinished": "Unfinished",
// Web Remote // Web Remote
"remote.web.title": "Cider Remote", "remote.web.title": "Cider Remote",
"remote.web.description": "Scan the QR code to pair your phone up with this Cider instance", "remote.web.description": "Scan the QR code to pair your phone up with this Cider instance",
// About // About
"about.thanks": "Major thanks to the Cider Collective Team and all of our contributors." "about.thanks": "Major thanks to the Cider Collective Team and all of our contributors."
} }

View file

@ -1,4 +1,4 @@
{ // Base File {
// i18n Info // i18n Info
"i18n.languageName": "Español (ES)", // name of language in native language "i18n.languageName": "Español (ES)", // name of language in native language
@ -19,6 +19,7 @@
"notification.updatingLibrarySongs": "Actualizando canciones de la biblioteca...", "notification.updatingLibrarySongs": "Actualizando canciones de la biblioteca...",
"notification.updatingLibraryAlbums": "Actualizando álbumes de la biblioteca...", "notification.updatingLibraryAlbums": "Actualizando álbumes de la biblioteca...",
"notification.updatingLibraryArtists": "Actualizando biblioteca de artistas...", "notification.updatingLibraryArtists": "Actualizando biblioteca de artistas...",
// Terms // Terms
"term.appleInc": "Apple Inc.", "term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music", "term.appleMusic": "Apple Music",
@ -125,7 +126,6 @@
"term.menu": "Menú", "term.menu": "Menú",
"term.check": "Comprobar", "term.check": "Comprobar",
"term.aboutArtist": "Más sobre {{artistName}}", // e.g. 'About Doja Cat' "term.aboutArtist": "Más sobre {{artistName}}", // e.g. 'About Doja Cat'
"term.updateCider": "Actualizar Cider",
// Home // Home
"home.title": "Inicio", "home.title": "Inicio",
@ -136,6 +136,7 @@
"home.madeForYou": "Hecho para ti", "home.madeForYou": "Hecho para ti",
"home.friendsListeningTo": "Tus amigos están escuchando", "home.friendsListeningTo": "Tus amigos están escuchando",
"home.followedArtists": "Artistas que sigues", "home.followedArtists": "Artistas que sigues",
// Errors // Errors
"error.appleMusicSubRequired": "Apple Music necesita una suscripción.", "error.appleMusicSubRequired": "Apple Music necesita una suscripción.",
"error.connectionError": "Ha habido un problema al conectar con Apple Music.", "error.connectionError": "Ha habido un problema al conectar con Apple Music.",
@ -208,6 +209,9 @@
"settings.option.general.language.fun": "Idiomas divertidos", "settings.option.general.language.fun": "Idiomas divertidos",
"settings.option.general.language.unsorted": "Sin clasificar", "settings.option.general.language.unsorted": "Sin clasificar",
// Update Cider
"settings.option.general.updateCider": "Actualizar Cider", // Button
// Settings - Audio // Settings - Audio
"settings.header.audio": "Audio", "settings.header.audio": "Audio",
"settings.header.audio.description": "Ajustes del audio de Cider.", "settings.header.audio.description": "Ajustes del audio de Cider.",
@ -222,6 +226,7 @@
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normaliza los picos altos de canciones para hacer la experiencia de escucha mejor.", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normaliza los picos altos de canciones para hacer la experiencia de escucha mejor.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Espacialización del audio", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Espacialización del audio", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Espacializa más el audio y conviértelo más 3-dimensional (nota: Esto no es Dolby Atmos)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Espacializa más el audio y conviértelo más 3-dimensional (nota: Esto no es Dolby Atmos)",
// Settings - Visual // Settings - Visual
"settings.header.visual": "Visual", "settings.header.visual": "Visual",
"settings.header.visual.description": "Ajustes visuales para Cider.", "settings.header.visual.description": "Ajustes visuales para Cider.",
@ -244,6 +249,9 @@
"settings.option.visual.hardwareAcceleration.description": "La app requiere reinicio", "settings.option.visual.hardwareAcceleration.description": "La app requiere reinicio",
"settings.header.visual.hardwareAcceleration.default": "Por defecto", "settings.header.visual.hardwareAcceleration.default": "Por defecto",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
// Settings - Visual - Theme name
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "Mostrar información personal", // Toggle "settings.option.visual.showPersonalInfo": "Mostrar información personal", // Toggle
@ -276,8 +284,8 @@
"settings.header.experimental.description": "Ajustes en pruebas para Cider.", "settings.header.experimental.description": "Ajustes en pruebas para Cider.",
"settings.option.experimental.compactUI": "Interfaz de usuario compacto", // Toggle "settings.option.experimental.compactUI": "Interfaz de usuario compacto", // Toggle
"settings.option.experimental.close_button_hide": "El botón de cerrar minimizará la aplicación en la bandeja", "settings.option.experimental.close_button_hide": "El botón de cerrar minimizará la aplicación en la bandeja",
// Refer to term.disabled & term.enabled
// Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.notTurnedOn": "La espacialización del audio esta desactivada. Para usarlo primero actívelo.", "spatial.notTurnedOn": "La espacialización del audio esta desactivada. Para usarlo primero actívelo.",
"spatial.spatialProperties": "Propiedades espaciales", "spatial.spatialProperties": "Propiedades espaciales",

View file

@ -1,4 +1,4 @@
{ // Base File {
// i18n Info // i18n Info
"i18n.languageName": "Français (CA)", // name of language in native language "i18n.languageName": "Français (CA)", // name of language in native language
@ -19,6 +19,7 @@
"notification.updatingLibrarySongs": "Rafraîchir des chansons...", "notification.updatingLibrarySongs": "Rafraîchir des chansons...",
"notification.updatingLibraryAlbums": "Rafraîchir des albums...", "notification.updatingLibraryAlbums": "Rafraîchir des albums...",
"notification.updatingLibraryArtists": "Rafraîchir des artistes...", "notification.updatingLibraryArtists": "Rafraîchir des artistes...",
// Terms // Terms
"term.appleInc": "Apple Inc.", "term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music", "term.appleMusic": "Apple Music",
@ -128,6 +129,7 @@
"home.madeForYou": "Creér pour toi", "home.madeForYou": "Creér pour toi",
"home.friendsListeningTo": "Amis écoutant", "home.friendsListeningTo": "Amis écoutant",
"home.followedArtists": "Artistes suivis", "home.followedArtists": "Artistes suivis",
// Errors // Errors
"error.appleMusicSubRequired": "Apple Music nécessite un abonnement.", "error.appleMusicSubRequired": "Apple Music nécessite un abonnement.",
"error.connectionError": "Un problème est survenu lors de la connexion à Apple Music.", "error.connectionError": "Un problème est survenu lors de la connexion à Apple Music.",
@ -194,6 +196,8 @@
"settings.option.general.language.fun": "Langues amusantes", "settings.option.general.language.fun": "Langues amusantes",
"settings.option.general.language.unsorted": "Non trié", "settings.option.general.language.unsorted": "Non trié",
// Update Cider
// Settings - Audio // Settings - Audio
"settings.header.audio": "Audio", "settings.header.audio": "Audio",
"settings.header.audio.description": "Réglez les réglages audio de Cider.", "settings.header.audio.description": "Réglez les réglages audio de Cider.",
@ -208,6 +212,7 @@
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalise le volume maximal des pistes individuelles pour créer une expérience d'écoute plus uniforme.", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalise le volume maximal des pistes individuelles pour créer une expérience d'écoute plus uniforme.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialization", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialization", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialisez l'audio et rendez l'audio plus tridimensionnel (remarque: il ne s'agit pas de Dolby Atmos)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialisez l'audio et rendez l'audio plus tridimensionnel (remarque: il ne s'agit pas de Dolby Atmos)",
// Settings - Visual // Settings - Visual
"settings.header.visual": "Visuel", "settings.header.visual": "Visuel",
"settings.header.visual.description": "Ajustez les réglages visuels de Cider.", "settings.header.visual.description": "Ajustez les réglages visuels de Cider.",
@ -230,6 +235,9 @@
"settings.option.visual.hardwareAcceleration.description": "Nécessite une relance", "settings.option.visual.hardwareAcceleration.description": "Nécessite une relance",
"settings.header.visual.hardwareAcceleration.default": "Défaut", "settings.header.visual.hardwareAcceleration.default": "Défaut",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
// Settings - Visual - Theme name
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "Afficher les informations personnelles", // Toggle "settings.option.visual.showPersonalInfo": "Afficher les informations personnelles", // Toggle
@ -265,8 +273,8 @@
"settings.option.experimental.closeButtonBehaviour.quit": "Quitter Cider", "settings.option.experimental.closeButtonBehaviour.quit": "Quitter Cider",
"settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "Réduire à la barre des tâches", "settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "Réduire à la barre des tâches",
"settings.option.experimental.closeButtonBehaviour.minimizeTray": "Réduire dans le bac", "settings.option.experimental.closeButtonBehaviour.minimizeTray": "Réduire dans le bac",
// Refer to term.disabled & term.enabled
// Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.spatialProperties" : "Propriétés spatiales", "spatial.spatialProperties" : "Propriétés spatiales",
"spatial.width" : "Largeur", "spatial.width" : "Largeur",

View file

@ -1,4 +1,4 @@
{ // Base File {
// i18n Info // i18n Info
"i18n.languageName": "Français", // name of language in native language "i18n.languageName": "Français", // name of language in native language
@ -19,6 +19,7 @@
"notification.updatingLibrarySongs": "Mise à jour des chansons de la bibliothèque...", "notification.updatingLibrarySongs": "Mise à jour des chansons de la bibliothèque...",
"notification.updatingLibraryAlbums": "Mise à jour des albums de la bibliothèque...", "notification.updatingLibraryAlbums": "Mise à jour des albums de la bibliothèque...",
"notification.updatingLibraryArtists": "Mise à jour des artistes de la bibliothèque...", "notification.updatingLibraryArtists": "Mise à jour des artistes de la bibliothèque...",
// Terms // Terms
"term.appleInc": "Apple Inc.", "term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music", "term.appleMusic": "Apple Music",
@ -127,7 +128,6 @@
"term.menu": "Menu", "term.menu": "Menu",
"term.check": "Vérifier", "term.check": "Vérifier",
"term.aboutArtist": "À propos de {{artistName}}", // e.g. 'About Doja Cat' "term.aboutArtist": "À propos de {{artistName}}", // e.g. 'About Doja Cat'
"term.updateCider": "Mettre à jour Cider",
"term.topResult": "Meilleurs résultats", // Search Results "term.topResult": "Meilleurs résultats", // Search Results
"term.sharedPlaylists": "Playlists partagées", // Search Results "term.sharedPlaylists": "Playlists partagées", // Search Results
"term.people": "Personnes", // Search Results "term.people": "Personnes", // Search Results
@ -153,6 +153,7 @@
"home.madeForYou": "Fait pour vous", "home.madeForYou": "Fait pour vous",
"home.friendsListeningTo": "Vos amis écoutent", "home.friendsListeningTo": "Vos amis écoutent",
"home.followedArtists": "Artistes suivis", "home.followedArtists": "Artistes suivis",
// Errors // Errors
"error.appleMusicSubRequired": "Apple Music nécessite un abonnement.", "error.appleMusicSubRequired": "Apple Music nécessite un abonnement.",
"error.connectionError": "Il y a eu un problème de connexion à Apple Music.", "error.connectionError": "Il y a eu un problème de connexion à Apple Music.",
@ -228,6 +229,9 @@
"settings.option.general.language.fun": "Langues amusantes", "settings.option.general.language.fun": "Langues amusantes",
"settings.option.general.language.unsorted": "Non trié", "settings.option.general.language.unsorted": "Non trié",
// Update Cider
"settings.option.general.updateCider": "Mettre à jour Cider", // Button
// Settings - Audio // Settings - Audio
"settings.header.audio": "Audio", "settings.header.audio": "Audio",
"settings.header.audio.description": "Ajuster les paramètres audio de Cider.", "settings.header.audio.description": "Ajuster les paramètres audio de Cider.",
@ -249,6 +253,7 @@
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalise le volume maximal des pistes individuelles pour créer une expérience d'écoute plus uniforme.", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalise le volume maximal des pistes individuelles pour créer une expérience d'écoute plus uniforme.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Spatialisation audio", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Spatialisation audio", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialiser l'audio et rendre l'audio plus tridimensionnel (note: Ce n'est pas Dolby Atmos)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialiser l'audio et rendre l'audio plus tridimensionnel (note: Ce n'est pas Dolby Atmos)",
// Settings - Visual // Settings - Visual
"settings.header.visual": "Visuel", "settings.header.visual": "Visuel",
"settings.header.visual.description": "Ajuster les paramètres visuels de Cider.", "settings.header.visual.description": "Ajuster les paramètres visuels de Cider.",
@ -311,8 +316,8 @@
"settings.option.experimental.close_button_hide": "Le bouton de fermeture doit masquer l'application", "settings.option.experimental.close_button_hide": "Le bouton de fermeture doit masquer l'application",
"settings.option.experimental.copy_log": "Copier les logs dans le presse-papier", "settings.option.experimental.copy_log": "Copier les logs dans le presse-papier",
"settings.option.experimental.inline_playlists": "Playlists et albums en ligne", "settings.option.experimental.inline_playlists": "Playlists et albums en ligne",
// Refer to term.disabled & term.enabled
// Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.notTurnedOn": "La spatialisation audio est désactivée. Pour l'utiliser, vous devez d'abord l'activer.", "spatial.notTurnedOn": "La spatialisation audio est désactivée. Pour l'utiliser, vous devez d'abord l'activer.",
"spatial.spatialProperties": "Propriétés spatiales", "spatial.spatialProperties": "Propriétés spatiales",
@ -344,4 +349,3 @@
// About // About
"about.thanks": "Un grand merci à l'équipe de la Cider Collective et à tous nos contributeurs." "about.thanks": "Un grand merci à l'équipe de la Cider Collective et à tous nos contributeurs."
} }

359
src/i18n/hi_IN.jsonc Normal file
View file

@ -0,0 +1,359 @@
{
// i18n Info
"i18n.languageName": "English (US)", // name of language in native language
"i18n.languageNameEnglish": "English (US)", // name of language in English
"i18n.category": "main", // main = real language, fun = fun community languages
"i18n.authors": "@maikirakiwi @vringster", // Authors, if you contribute to this file feel free to add your name seperated with a space
// App info
"app.name": "Cider",
"date.format": "${m} ${d}, ${y}",
// Dialogs
"dialog.cancel": "रोकें",
"dialog.ok": "ठीक है",
// Notification
"notification.updatingLibrarySongs": "अपडेटिंग लाइब्रेरी के गाने...",
"notification.updatingLibraryAlbums": "अपडेटिंग लाइब्रेरी के एल्बम...",
"notification.updatingLibraryArtists": "अपडेटिंग लाइब्रेरी के कलाकार...",
// Terms
"term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music",
"term.applePodcasts": "Apple Podcasts",
"term.itunes": "iTunes",
"term.github": "GitHub",
"term.discord": "Discord",
"term.learnMore": "और जानिए",
"term.accountSettings": "खाता सेटिंग्स",
"term.logout": "लॉग आऊट",
"term.login": "लॉग इन",
"term.about": "के बारे में",
"term.privateSession": "गुप्त सैशन",
"term.queue": "कतार",
"term.history": "हिस्टरी",
"term.search": "खोज करें",
"term.library": "लाइब्रेरी",
"term.listenNow": "अभी सुनियें",
"term.browse": "ब्राउज़",
"term.radio": "रेडियो",
"term.recentlyAdded": "हाल ही में जोड़ें हुए",
"term.songs": "गाने",
"term.albums": "एल्बम",
"term.artists": "कलाकार",
"term.podcasts": "पॉडकास्टस",
"term.playlists": "प्लेलिस्ट्स",
"term.playlist": "प्लेलिस्ट",
"term.newPlaylist": "नई प्लेलिस्ट्स",
"term.newPlaylistFolder": "नई प्लेलिस्ट्स फ़ोल्डर",
"term.createNewPlaylist": "नई प्लेलिस्ट्स बनाएं",
"term.createNewPlaylistFolder": "नई प्लेलिस्ट्स फ़ोल्डर बनाएं",
"term.deletePlaylist": "क्या आप वाकई इस प्लेलिस्ट को हटाना चाहते हैं",
"term.play": "प्ले",
"term.pause": "ठहराव",
"term.previous": "पिछले",
"term.next": "अगले",
"term.shuffle": "शफल",
"term.repeat": "रिपीट",
"term.volume": "वॉल्यूम",
"term.mute": "म्यूट",
"term.unmute": "अनम्यूट",
"term.share": "शेयर",
"term.share.success": "क्लिपबोर्ड में कॉपीड",
"term.settings": "सेटिंग्स",
"term.seeAll": "सभी देखें",
"term.sortBy": "सॉर्ट बाये",
"term.sortBy.album": "एल्बम",
"term.sortBy.artist": "कलाकार",
"term.sortBy.name": "नाम",
"term.sortBy.genre": "शैली",
"term.sortBy.releaseDate": "रिलीज़ की तारीख",
"term.sortBy.duration": "लंबाई",
"term.sortOrder": "ए-ज़ी",
"term.sortOrder.ascending": "असेंडिंग",
"term.sortOrder.descending": "डिसेंडिंग",
"term.viewAs": "वियू ऐस",
"term.viewAs.coverArt": "कवर आर्ट",
"term.viewAs.list": "सूची",
"term.size": "साइज़",
"term.size.normal": "साधारण",
"term.size.compact": "पिचका हुआ",
"term.enable": "खोलें",
"term.disable": "बंद",
"term.enabled": "खोला हुआ",
"term.disabled": "बंद हुआ हुआ",
"term.connect": "कनेक्ट",
"term.connecting": "कनेक्टिंग",
"term.disconnect": "डिसकनेक्ट",
"term.authed": "प्रमाणित",
"term.confirm": "पक्का?",
"term.more": "ज़्यादा",
"term.less": "कम",
"term.showMore": "दिखाएं ज़्यादा",
"term.showLess": "दिखाएं कम",
"term.topSongs": "Top Songs",
"term.latestReleases": "Latest Releases",
"term.time.added": "Added",
"term.time.released": "Released",
"term.time.updated": "Updated",
"term.time.hours": "hours",
"term.time.hour": "hour",
"term.time.minutes": "minutes",
"term.time.minute": "minute",
"term.time.seconds": "seconds",
"term.time.second": "second",
"term.fullscreenView": "Fullscreen View",
"term.defaultView": "Default View",
"term.audioSettings": "Audio Settings",
"term.clearAll": "Clear All",
"term.recentStations": "Recent Stations",
"term.language": "Language",
"term.funLanguages": "Fun",
"term.noLyrics": "Loading... / Lyrics not found./ Instrumental.",
"term.copyright": "Copyright",
"term.rightsReserved": "All Rights Reserved.",
"term.sponsor": "Sponsor this project",
"term.ciderTeam": "Cider Team",
"term.developer": "Developer",
"term.socialTeam": "Social Team",
"term.socials": "Socials",
"term.contributors": "Contributors",
"term.equalizer": "Equalizer",
"term.reset": "Reset",
"term.tracks": "tracks", // Assume x amount of tracks. e.g. 50 tracks
"term.videos": "Videos",
"term.menu": "Menu",
"term.check": "Check",
"term.aboutArtist": "About {{artistName}}", // e.g. 'About Doja Cat'
"term.topResult": "Top Result", // Search Results
"term.sharedPlaylists": "Shared Playlists", // Search Results
"term.people": "People", // Search Results
"term.newpreset.name": "नई EQ Preset Name", // Equalizer Preset
"term.addedpreset": "Added Preset",
"term.deletepreset.warn": "Are you sure you want to delete this preset?",
"term.deletedpreset": "Removed preset",
"term.musicVideos": "Music Videos", // Search page friendlyTypes
"term.stations": "Stations",
"term.curators": "Curators",
"term.appleCurators": "Apple Curators",
"term.radioShows": "Radio Shows",
"term.recordLabels": "Record Labels",
"term.videoExtras": "Video Extras",
"term.top": "Top",
// Home
"home.title": "Home",
"home.recentlyPlayed": "Recently Played",
"home.recentlyAdded": "Recently Added",
"home.artistsFeed": "Your Artists Feed",
"home.artistsFeed.noArtist": "Follow some artists first and their latest releases will be here",
"home.madeForYou": "Made For You",
"home.friendsListeningTo": "Friends Listening To",
"home.followedArtists": "Followed Artists",
// Errors
"error.appleMusicSubRequired": "Apple Music requires a subscription.",
"error.connectionError": "There was a problem connecting to Apple Music.",
"error.noResults": "No Results.",
"error.noResults.description": "Try a नई search.",
// Podcasts
"podcast.followOnCider": "Follow On Cider",
"podcast.followedOnCider": "Following On Cider",
"podcast.subscribeOnItunes": "Subscribe On iTunes",
"podcast.subscribedOnItunes": "Subscribed On iTunes",
"podcast.itunesStore": "iTunes Store",
"podcast.episodes": "Episodes",
"podcast.playEpisode": "Play Episode",
"podcast.website": "Podcast Website",
// Actions
"action.addToLibrary": "Add to Library",
"action.addToLibrary.success": "Added to Library",
"action.addToLibrary.error": "Error Adding to Library",
"action.removeFromLibrary": "Remove from Library",
"action.removeFromLibrary.success": "Removed from Library",
"action.addToQueue": "Add to Queue",
"action.addToQueue.success": "Added to Queue",
"action.addToQueue.error": "Error Adding to Queue",
"action.removeFromQueue": "Remove from Queue",
"action.removeFromQueue.success": "Removed from Queue",
"action.removeFromQueue.error": "Error Removing from Queue",
"action.createPlaylist": "बनाएं a नई Playlist",
"action.addToPlaylist": "Add to Playlist",
"action.removeFromPlaylist": "Remove from Playlist",
"action.addToFavorites": "Add to Favorites",
"action.follow": "Follow",
"action.follow.success": "Followed",
"action.follow.error": "Error Following",
"action.unfollow": "Unfollow",
"action.unfollow.success": "Unfollowed",
"action.unfollow.error": "Error Unfollowing",
"action.playNext": "Play Next",
"action.playLater": "Play Later",
"action.startRadio": "Start Radio",
"action.goToArtist": "Go to Artist",
"action.goToAlbum": "Go to Album",
"action.moveToTop": "Move to top",
"action.share": "Share",
"action.rename": "Rename",
"action.love": "Love",
"action.unlove": "Unlove",
"action.dislike": "Dislike",
"action.undoDislike": "Undo dislike",
"action.showWebRemoteQR": "Web Remote",
"action.playTracksNext": "Play ${app.selectedMediaItems.length} tracks next",
"action.playTracksLater": "Play ${app.selectedMediaItems.length} tracks later",
"action.removeTracks": "Remove ${self.selectedItems.length} tracks from queue",
"action.import": "Import",
"action.export": "Export",
"action.showAlbum": "दिखाएं Complete Album",
"action.tray.minimize": "Minimize to Tray",
"action.tray.quit": "Quit",
"action.tray.show": "दिखाएं",
"action.update": "Update",
"action.copy": "Copy",
"action.newpreset": "नई Preset...", // Equalizer Preset
"action.deletepreset": "Delete Preset",
// Settings - General
"settings.header.general": "General",
"settings.header.general.description": "Adjust the general settings for Cider.",
"settings.option.general.language": "Language",
// Language optgroups
"settings.option.general.language.main": "Languages",
"settings.option.general.language.fun": "Fun Languages",
"settings.option.general.language.unsorted": "Unsorted",
// Update Cider
"settings.option.general.updateCider": "Update Cider", // Button. Refer to term.check for the check button
"settings.option.general.updateCider.branch": "Cider Update Branch", // Dropdown
"settings.option.general.updateCider.branch.description": "Select the branch to update Cider to",
"settings.option.general.updateCider.branch.main": "Stable",
"settings.option.general.updateCider.branch.develop": "Development",
// Settings - Audio
"settings.header.audio": "Audio",
"settings.header.audio.description": "Adjust the audio settings for Cider.",
"settings.option.audio.quality": "Audio Quality", // Dropdown
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
"settings.header.audio.quality.hireslossless.description": "up to 24-bit/192 kHz",
"settings.header.audio.quality.lossless": "Lossless",
"settings.header.audio.quality.lossless.description": "up to 24-bit/48 kHz",
"settings.header.audio.quality.high": "High",
"settings.header.audio.quality.high.description": "256 kbps",
"settings.header.audio.quality.standard": "Standard",
"settings.header.audio.quality.standard.description": "64 kbps",
"settings.option.audio.seamlessTransition": "Seamless Audio Transition", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "Enable Advanced Functionality", // Toggle
"settings.option.audio.enableAdvancedFunctionality.description": "Enabling AudioContext functionality will allow for extended audio features like Audio Normalization , Equalizers and Visualizers, however on some systems this may cause stuttering in audio tracks.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoacoustic Enhancements that makes everything sound both richer and more lively | Designed by Maikiwi.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Strength", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standard",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggressive",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio Normalization", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizes peak volume for individual tracks to create a more uniform listening experience.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Spatialization", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spatialize audio and make audio more 3-dimensional (note: This is not Dolby Atmos)",
// Settings - Visual
"settings.header.visual": "Visual",
"settings.header.visual.description": "Adjust the visual settings for Cider.",
"settings.option.visual.windowBackgroundStyle": "Window Background Style", // Toggle
"settings.header.visual.windowBackgroundStyle.none": "None",
"settings.header.visual.windowBackgroundStyle.artwork": "Artwork",
"settings.header.visual.windowBackgroundStyle.image": "Image",
"settings.option.visual.animatedArtwork": "Animated Artwork", // Dropdown
"settings.header.visual.animatedArtwork.always": "Always",
"settings.header.visual.animatedArtwork.limited": "Limited to pages and special entries",
"settings.header.visual.animatedArtwork.disable": "Disable everywhere",
"settings.option.visual.animatedArtworkQuality": "Animated Artwork Quality", // Dropdown
"settings.header.visual.animatedArtworkQuality.low": "Low",
"settings.header.visual.animatedArtworkQuality.medium": "Medium",
"settings.header.visual.animatedArtworkQuality.high": "High",
"settings.header.visual.animatedArtworkQuality.veryHigh": "Very High",
"settings.header.visual.animatedArtworkQuality.extreme": "Extreme",
"settings.option.visual.animatedWindowBackground": "Animated Window Background", // Toggle
"settings.option.visual.hardwareAcceleration": "Hardware Acceleration", // Dropdown
"settings.option.visual.hardwareAcceleration.description": "Requires relaunch",
"settings.header.visual.hardwareAcceleration.default": "Default",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
"settings.header.visual.theme": "Theme",
// Settings - Visual - Theme name
"settings.option.visual.theme.default": "Cider",
"settings.option.visual.theme.dark": "Dark",
// Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "दिखाएं Personal Info", // Toggle
// Settings - Lyrics
"settings.header.lyrics": "Lyrics",
"settings.header.lyrics.description": "Adjust the lyrics settings for Cider.",
"settings.option.lyrics.enableMusixmatch": "Enable Musixmatch Lyrics", // Toggle
"settings.option.lyrics.enableMusixmatchKaraoke": "Enable Karaoke Mode (Musixmatch only)", // Toggle
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch Translation Preferred Language", // Dropdown
"settings.option.lyrics.enableYoutubeLyrics": "Enable Youtube Lyrics for Music Videos", // Toggle
// Settings - Connectivity
"settings.header.connectivity": "Connectivity",
"settings.header.connectivity.description": "Adjust the connectivity settings for Cider.",
"settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown
"settings.option.connectivity.playbackNotifications": "Playback Notifications", // Toggle
// Refer to term.disabled for the disabled option
"settings.header.connectivity.discordRPC.cider": "Display as 'Cider'",
"settings.header.connectivity.discordRPC.appleMusic": "Display as 'Apple Music'",
"settings.option.connectivity.discordRPC.clearOnPause": "Clear Discord Rich Presence on Pause", // Toggle
"settings.option.connectivity.lastfmScrobble": "Last.fm Scrobbling", // Option to Connect
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm Scrobble Delay (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Enable Last.fm Now Playing",
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Remove featuring artists from song title (Last.fm)",
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filter looped track (Last.fm)",
// Refer to term.connect for the connect button
// Settings - Experimental
"settings.header.experimental": "Experimental",
"settings.header.experimental.description": "Adjust the experimental settings for Cider.",
"settings.option.experimental.compactUI": "Compact UI", // Toggle
"settings.option.experimental.close_button_hide": "Close Button Should Hide the Application",
"settings.option.experimental.copy_log": "Copy logs to clipboard",
"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
// Refer to term.disabled & term.enabled
// Spatialization Menu
"spatial.notTurnedOn": "Audio Spatialization is disabled. To use, please enable it first.",
"spatial.spatialProperties": "Spatial Properties",
"spatial.width": "Width",
"spatial.height": "Height",
"spatial.depth": "Depth",
"spatial.gain": "Gain",
"spatial.roomMaterials": "Room Materials",
"spatial.roomDimensions": "Room Dimensions",
"spatial.roomPositions": "Room Positions",
"spatial.setDimensions": "Set Dimensions",
"spatial.setPositions": "Set Positions",
"spatial.up": "Up",
"spatial.front": "Front",
"spatial.left": "Left",
"spatial.right": "Right",
"spatial.back": "Back",
"spatial.down": "Down",
"spatial.listener": "Listener",
"spatial.audioSource": "Audio Source",
// Settings - Unfinished
"settings.header.unfinished": "Unfinished",
// Web Remote
"remote.web.title": "Cider Remote",
"remote.web.description": "Scan the QR code to pair your phone up with this Cider instance",
// About
"about.thanks": "Major thanks to the Cider Collective Team and all of our contributors."
}

View file

@ -1,10 +1,10 @@
{ // Base File {
// i18n Info // i18n Info
"i18n.languageName": "Magyar", // name of language in native language "i18n.languageName": "Magyar", // name of language in native language
"i18n.languageNameEnglish": "Hungarian", // name of language in English "i18n.languageNameEnglish": "Hungarian", // name of language in English
"i18n.category": "main", // main = real language, fun = fun community languages "i18n.category": "main", // main = real language, fun = fun community languages
"i18n.authors": "@Greenoliv @Rias @BenjaminStonawski", // Authors, if you contribute to this file feel free to add your name seperated with a space "i18n.authors": "@Greenoliv @Amaru @BenjaminStonawski", // Authors, if you contribute to this file feel free to add your name seperated with a space
// App info // App info
"app.name": "Cider", "app.name": "Cider",
@ -19,10 +19,11 @@
"notification.updatingLibrarySongs": "Zenekönyvtár frissítése...", "notification.updatingLibrarySongs": "Zenekönyvtár frissítése...",
"notification.updatingLibraryAlbums": "Albumok frissítése...", "notification.updatingLibraryAlbums": "Albumok frissítése...",
"notification.updatingLibraryArtists": "Előadók frissítése...", "notification.updatingLibraryArtists": "Előadók frissítése...",
// Terms // Terms
"term.appleInc": "Apple Inc.", "term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music", "term.appleMusic": "Apple Music",
"term.applePodcasts": "Apple Podcasts", "term.applePodcasts": "Apple Podcastok",
"term.itunes": "iTunes", "term.itunes": "iTunes",
"term.github": "GitHub", "term.github": "GitHub",
"term.discord": "Discord", "term.discord": "Discord",
@ -46,9 +47,9 @@
"term.playlists": "Lejátszási listák", "term.playlists": "Lejátszási listák",
"term.playlist": "Lejátszási lista", "term.playlist": "Lejátszási lista",
"term.newPlaylist": "Új lejátszási lista", "term.newPlaylist": "Új lejátszási lista",
"term.newPlaylistFolder": "Új lejátszási lista mappa", "term.newPlaylistFolder": "Új mappa",
"term.createNewPlaylist": "Új lejátszási lista létrehozása", "term.createNewPlaylist": "Új lejátszási lista létrehozása",
"term.createNewPlaylistFolder": "Új lejátszási lista mappa létrehozása", "term.createNewPlaylistFolder": "Új mappa létrehozása",
"term.deletePlaylist": "Biztosan szeretné törölni a lejátszási listát?", "term.deletePlaylist": "Biztosan szeretné törölni a lejátszási listát?",
"term.play": "Lejátszás", "term.play": "Lejátszás",
"term.pause": "Megállítás", "term.pause": "Megállítás",
@ -60,6 +61,7 @@
"term.mute": "Némítás", "term.mute": "Némítás",
"term.unmute": "Némítás feloldása", "term.unmute": "Némítás feloldása",
"term.share": "Megosztás", "term.share": "Megosztás",
"term.share.success": "Másolva a vágólapra",
"term.settings": "Beállítások", "term.settings": "Beállítások",
"term.seeAll": "Összes", "term.seeAll": "Összes",
"term.sortBy": "Rendezés", "term.sortBy": "Rendezés",
@ -104,38 +106,53 @@
"term.time.second": "másodperc", "term.time.second": "másodperc",
"term.fullscreenView": "Teljes képernyős mód", "term.fullscreenView": "Teljes képernyős mód",
"term.defaultView": "Alapértelmezett nézet", "term.defaultView": "Alapértelmezett nézet",
"term.spacializedAudioSetting": "Térbeli hangzás", "term.spacializedAudioSetting": "Térbeli hang",
"term.clearAll": "Összes törlése", "term.clearAll": "Összes törlése",
"term.recentStations": "Nemrég játszott", "term.recentStations": "Nemrég játszott",
"term.language": "Nyelv", "term.language": "Nyelv",
"term.funLanguages": "Mókás", "term.funLanguages": "Fantázianyelvek",
"term.noLyrics": "Betöltés... / Dalszöveg nem található. / Instrumentális.", "term.noLyrics": "Betöltés... / Dalszöveg nem található. / Instrumentális.",
"term.copyright": "Szerzői jog", "term.copyright": "Szerzői jog",
"term.rightsReserved": "Minden jog fenntartva.", "term.rightsReserved": "Minden jog fenntartva.",
"term.sponsor": "Támogasd a projektet", "term.sponsor": "Támogasd a projektet",
"term.ciderTeam": "A Cider csapata", "term.ciderTeam": "A Cider csapata",
"term.developer": "Fejlesztő", "term.developer": "Fejlesztő",
"term.socialTeam": "Szociális csapat", "term.socialTeam": "Közösségi csapat",
"term.socials": "Szociális", "term.socials": "Szociális",
"term.contributors": "Közreműködők", "term.contributors": "Hozzájárulók",
"term.equalizer": "Hangszínszabályozó", "term.equalizer": "Hangszínszabályozó",
"term.reset": "Visszaállítás", "term.reset": "Visszaállítás",
"term.tracks": "zeneszám", // Assume x amount of tracks. e.g. 50 tracks "term.tracks": "zeneszám", // Assume x amount of tracks. e.g. 50 tracks
"term.videos": "Videók", "term.videos": "Videók",
"term.menu": "Menü", "term.menu": "Menü",
"term.check": "Bejelöl", "term.check": "Ellenőrzés",
"term.aboutArtist": "További információ {{artistName}} előadóról", // e.g. 'About Doja Cat' "term.aboutArtist": "About {{artistName}}", // e.g. 'About Doja Cat'
"term.updateCider": "Cider frissítése", "term.topResult": "Legjobb találatok", // Search Results
"term.sharedPlaylists": "Megosztott lejátszási listák", // Search Results
"term.people": "Profilok", // Search Results
"term.newpreset.name": "New EQ Preset Name", // Equalizer Preset
"term.addedpreset": "Preset hozzáadva",
"term.deletepreset.warn": "Are you sure you want to delete this preset?",
"term.deletedpreset": "Preset törölve",
"term.musicVideos": "Videóklipek", // Search page friendlyTypes
"term.stations": "Állomások",
"term.curators": "Curators",
"term.appleCurators": "Apple Curators",
"term.radioShows": "Radio Shows",
"term.recordLabels": "Record Labels",
"term.videoExtras": "Videóextrák",
"term.top": "Top",
// Home // Home
"home.title": "Kezdőlap", "home.title": "Kezdőlap",
"home.recentlyPlayed": "Nemrég játszott", "home.recentlyPlayed": "Nemrég játszott",
"home.recentlyAdded": "Nemrég hozzáadott", "home.recentlyAdded": "Nemrég hozzáadott",
"home.artistsFeed": "Az előadóid feedje", "home.artistsFeed": "Az előadóid feedje",
"home.artistsFeed.noArtist": "Kövess néhány előadót, hogy a legújabb zenéi itt megjelenhessenek.", "home.artistsFeed.noArtist": "Kövess néhány előadót, hogy a legújabb zenéik itt megjelenjenek",
"home.madeForYou": "Személyre szabva", "home.madeForYou": "Személyre szabva",
"home.friendsListeningTo": "A barátaid épp ezt hallgatják", "home.friendsListeningTo": "A barátaid épp ezt hallgatják",
"home.followedArtists": "Követett előadók", "home.followedArtists": "Követett előadók",
// Errors // Errors
"error.appleMusicSubRequired": "Apple Music előfizetés szükséges.", "error.appleMusicSubRequired": "Apple Music előfizetés szükséges.",
"error.connectionError": "Hiba történt az Apple Musichoz való csatlakozás közben.", "error.connectionError": "Hiba történt az Apple Musichoz való csatlakozás közben.",
@ -153,11 +170,11 @@
"podcast.website": "Podcast weboldala", "podcast.website": "Podcast weboldala",
// Actions // Actions
"action.addToLibrary": "Hozzáadás a könyvtárhoz", "action.addToLibrary": "Hozzáadás a Könyvtárhoz",
"action.addToLibrary.success": "Hozzáadva a könyvtárhoz", "action.addToLibrary.success": "Hozzáadva a Könyvtárhoz",
"action.addToLibrary.error": "Hiba a hozzáadáskor.", "action.addToLibrary.error": "Hiba a hozzáadáskor.",
"action.removeFromLibrary": "Törlés a Könytárból", "action.removeFromLibrary": "Törlés a Könytárból",
"action.removeFromLibrary.success": "Törölve a könyvtárból", "action.removeFromLibrary.success": "Törölve a Könyvtárból",
"action.addToQueue": "Hozzáadás a várólistához", "action.addToQueue": "Hozzáadás a várólistához",
"action.addToQueue.success": "Hozzáadva a várólistához", "action.addToQueue.success": "Hozzáadva a várólistához",
"action.addToQueue.error": "Sikertelen hozzáadás a várólistához", "action.addToQueue.error": "Sikertelen hozzáadás a várólistához",
@ -182,51 +199,69 @@
"action.moveToTop": "Mozgatás legfelülre", "action.moveToTop": "Mozgatás legfelülre",
"action.share": "Megosztás", "action.share": "Megosztás",
"action.rename": "Átnevezés", "action.rename": "Átnevezés",
"action.love": "Kedvelés", "action.love": "Szeretem",
"action.unlove": "Kedvelés visszavonása", "action.unlove": "Mégsem szeretem",
"action.dislike": "Nem kedvelem", "action.dislike": "Kevesebb ilyen javasolása",
"action.undoDislike": "Nem kedvelés visszavonása", "action.undoDislike": "A Kevesebb ilyen javasolása visszavonása",
"action.showWebRemoteQR": "Távirányító QR kód megjelenítése", "action.showWebRemoteQR": "Távirányító QR kód",
"action.playTracksNext": "${app.selectedMediaItems.length} zenék lejátszása következőnek", "action.playTracksNext": "${app.selectedMediaItems.length} zenék lejátszása következőnek",
"action.playTracksLater": "${app.selectedMediaItems.length} zenék lejátszása később", "action.playTracksLater": "${app.selectedMediaItems.length} zenék lejátszása később",
"action.removeTracks": "${self.selectedItems.length} zenék eltávolítása a várólistáról", "action.removeTracks": "${self.selectedItems.length} zenék eltávolítása a várólistáról",
"action.import": "Importálás", "action.import": "Importálás",
"action.export": "Exportálás", "action.export": "Exportálás",
"action.showAlbum": "Teljes album megjelenítése", "action.showAlbum": "Teljes album megjelenítése",
// Waiting on Core for moving plugin to app.ts
"action.tray.minimize": "Kicsinyítés a tálcára", "action.tray.minimize": "Kicsinyítés a tálcára",
"action.tray.quit": "Kilépés", "action.tray.quit": "Kilépés",
"action.tray.show": "Megjelenítés", "action.tray.show": "Megjelenítés",
"action.update": "Frissítés",
"action.copy": "Másolás",
"action.newpreset": "Új Preset...", // Equalizer Preset
"action.deletepreset": "Preset törlése",
// Settings - General // Settings - General
"settings.header.general": "Általános", "settings.header.general": "Általános",
"settings.header.general.description": "A Cider általános beállításainak módosítása", "settings.header.general.description": "A Cider általános beállításainak módosítása.",
"settings.option.general.language": "Nyelv", "settings.option.general.language": "Nyelv",
// Language optgroups // Language optgroups
"settings.option.general.language.main": "Nyelvek", "settings.option.general.language.main": "Nyelvek",
"settings.option.general.language.fun": "Mókás nyelvek", "settings.option.general.language.fun": "Fantázianyelvek",
"settings.option.general.language.unsorted": "Nem besorolható", "settings.option.general.language.unsorted": "Azonosítatlan",
// Update Cider
"settings.option.general.updateCider": "A Cider frissítése", // Button
// Settings - Audio // Settings - Audio
"settings.header.audio": "Hang", "settings.header.audio": "Hang",
"settings.header.audio.description": "A Cider hangbeállításainak módosítása", "settings.header.audio.description": "A Cider hangbeállításainak módosítása.",
"settings.option.audio.quality": "Hangminőség", // Dropdown "settings.option.audio.quality": "Hangminőség", // Dropdown
"settings.header.audio.quality.high": "Magas", "settings.header.audio.quality.hireslossless": "Nagy felbontású veszteségmentes",
"settings.header.audio.quality.low": "Alacsony", "settings.header.audio.quality.hireslossless.description": "max. 24-bit/192 kHz sebességen",
"settings.header.audio.quality.auto": "Automatikus", "settings.header.audio.quality.lossless": "Veszteségmentes",
"settings.header.audio.quality.lossless.description": "max. up to 24-bit/48 kHz sebességen",
"settings.header.audio.quality.high": "High",
"settings.header.audio.quality.high.description": "256 kbps",
"settings.header.audio.quality.standard": "Standard",
"settings.header.audio.quality.standard.description": "64 kbps",
"settings.option.audio.seamlessTransition": "Szünetmentes lejátszás", // Toggle "settings.option.audio.seamlessTransition": "Szünetmentes lejátszás", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "Haladó funkcionalitás engedélyezése", // Toggle "settings.option.audio.enableAdvancedFunctionality": "Haladó funkcionalitás engedélyezése", // Toggle
"settings.option.audio.enableAdvancedFunctionality.description": "Az AudioContext funkció engedélyezése lehetővé teszi a fejlettebb hangfunkciókat, például a normalizásást, a hangszínszabályozót és a vizualizáció funkciókat, azonban egyes számítógépeken ez akadozást okozhat a hangsávokban.", "settings.option.audio.enableAdvancedFunctionality.description": "Az AudioContext funkció engedélyezése lehetővé teszi a fejlettebb hangfunkciókat, például a Normalizásást, az Equalizereket és a Visualizer funkciókat, azonban egyes számítógépeken ez akadozást okozhat a hangsávokban.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Pszichoakusztikus Módosítások amik minden hangot felerősítenek és ütősebbé tesznek | Készítette Maikiwi",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Erősség", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Megváltoztatja a hangra végzett feldolgozás erősségét. (Az Agresszív mód nemkívánatos eredményeket hozhat!)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Szokásos",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Agresszív",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalizálás", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalizálás", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizálja az egyes zeneszámok hangosabb részeit, hogy egységesebb hallgatási élményt hozzon létre.", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizálja az egyes zeneszámok hangosabb részeit, hogy egységesebb hallgatási élményt hozzon létre.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Térbeli hangzás", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Térbeli hang", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Térbeli hangzás és a hang háromdimenziósabbá tétele (Ez nem összekeverendő a Dolby Atmos-szal!)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Térbeli hang és a hang háromdimenziósabbá tétele (Ez nem összekeverendő a Dolby Atmos-szal!)",
// Settings - Visual // Settings - Visual
"settings.header.visual": "Vizuális", "settings.header.visual": "Vizuális",
"settings.header.visual.description": "A Cider vizuális beállításainak módosítása.", "settings.header.visual.description": "A Cider vizuális beállításainak módosítása.",
"settings.option.visual.windowBackgroundStyle": "Ablak háttér stílusa", // Toggle "settings.option.visual.windowBackgroundStyle": "Ablak háttér stílusa", // Toggle
"settings.header.visual.windowBackgroundStyle.none": "Egyik sem", "settings.header.visual.windowBackgroundStyle.none": "Sehol",
"settings.header.visual.windowBackgroundStyle.artwork": "Borító", "settings.header.visual.windowBackgroundStyle.artwork": "Borító",
"settings.header.visual.windowBackgroundStyle.image": "Kép", "settings.header.visual.windowBackgroundStyle.image": "Kép",
"settings.option.visual.animatedArtwork": "Animált borító", // Dropdown "settings.option.visual.animatedArtwork": "Animált borító", // Dropdown
@ -244,6 +279,12 @@
"settings.option.visual.hardwareAcceleration.description": "Újraindítás szükséges", "settings.option.visual.hardwareAcceleration.description": "Újraindítás szükséges",
"settings.header.visual.hardwareAcceleration.default": "Alap", "settings.header.visual.hardwareAcceleration.default": "Alap",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
"settings.header.visual.theme": "Téma",
// Settings - Visual - Theme name
"settings.option.visual.theme.default": "Cider",
"settings.option.visual.theme.dark": "Sötét",
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "Személyes adatok mutatása", // Toggle "settings.option.visual.showPersonalInfo": "Személyes adatok mutatása", // Toggle
@ -251,15 +292,15 @@
"settings.header.lyrics": "Dalszöveg", "settings.header.lyrics": "Dalszöveg",
"settings.header.lyrics.description": "A Cider dalszöveg beállításainak módosítása.", "settings.header.lyrics.description": "A Cider dalszöveg beállításainak módosítása.",
"settings.option.lyrics.enableMusixmatch": "MusixMatch dalszövegek engedélyezése", // Toggle "settings.option.lyrics.enableMusixmatch": "MusixMatch dalszövegek engedélyezése", // Toggle
"settings.option.lyrics.enableMusixmatchKaraoke": "Karaoke mód bekapcsolása (Csak MusixMatch esetén)", // Toggle "settings.option.lyrics.enableMusixmatchKaraoke": "Karaoke mód bekapcsolása (Csak MusixMatch)", // Toggle
"settings.option.lyrics.musixmatchPreferredLanguage": "MusixMatch fordítás nyelve", // Dropdown "settings.option.lyrics.musixmatchPreferredLanguage": "MusixMatch fordítás nyelve", // Dropdown
"settings.option.lyrics.enableYoutubeLyrics": "YouTube dalszövegek engedélyezése a zenei videóknál", // Toggle "settings.option.lyrics.enableYoutubeLyrics": "YouTube dalszövegek engedélyezése a zenei videóknál", // Toggle
// Settings - Connectivity // Settings - Connectivity
"settings.header.connectivity": "Csatlakozhatóságok", "settings.header.connectivity": "Csatlakozások",
"settings.header.connectivity.description": "A Cider csatlakozás beállításainak módosítása.", "settings.header.connectivity.description": "A Cider csatlakozás beállításainak módosítása.",
"settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown "settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown
"settings.option.connectivity.playbackNotifications": "Értesítés új dal lejátszásakor", // Toggle "settings.option.connectivity.playbackNotifications": "Lejátszás értesítések", // Toggle
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.header.connectivity.discordRPC.cider": "Megjelenítés 'Cider'-ként", "settings.header.connectivity.discordRPC.cider": "Megjelenítés 'Cider'-ként",
"settings.header.connectivity.discordRPC.appleMusic": "Megjelenítés 'Apple Music'-ként", "settings.header.connectivity.discordRPC.appleMusic": "Megjelenítés 'Apple Music'-ként",
@ -267,7 +308,7 @@
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling", // Option to Connect "settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling", // Option to Connect
"settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobble Késleltetés (%)", "settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobble Késleltetés (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "LastFM Now Playing engedélyezése", "settings.option.connectivity.lastfmScrobble.nowPlaying": "LastFM Now Playing engedélyezése",
"settings.option.connectivity.lastfmScrobble.removeFeatured": "A közreműködő előadók eltávolítása a dal címéből (LastFM)", "settings.option.connectivity.lastfmScrobble.removeFeatured": "Remove featuring artists from song title (LastFM)",
"settings.option.connectivity.lastfmScrobble.filterLoop": "Loopolt zeneszám szűrése (LastFM)", "settings.option.connectivity.lastfmScrobble.filterLoop": "Loopolt zeneszám szűrése (LastFM)",
// Refer to term.connect for the connect button // Refer to term.connect for the connect button
@ -276,11 +317,13 @@
"settings.header.experimental.description": "A Cider kísérleti beállításainak módosítása.", "settings.header.experimental.description": "A Cider kísérleti beállításainak módosítása.",
"settings.option.experimental.compactUI": "Kompakt UI", // Toggle "settings.option.experimental.compactUI": "Kompakt UI", // Toggle
"settings.option.experimental.close_button_hide": "A bezárás gomb rejtse el az alkalmazást", "settings.option.experimental.close_button_hide": "A bezárás gomb rejtse el az alkalmazást",
// Refer to term.disabled & term.enabled "settings.option.experimental.copy_log": "Napló másolása a vágólapra",
"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
// Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.notTurnedOn": "A térbeli hangzás ki van kapcsolva, használatához kapcsolja be.", "spatial.notTurnedOn": "A térbeli hangzás ki van kapcsolva, használatához kapcsolja be.",
"spatial.spatialProperties": "Térbeli hangzás", "spatial.spatialProperties": "Térbeli hang",
"spatial.width": "Szélesség", "spatial.width": "Szélesség",
"spatial.height": "Magasság", "spatial.height": "Magasság",
"spatial.depth": "Hosszúság", "spatial.depth": "Hosszúság",
@ -307,5 +350,5 @@
"remote.web.description": "Olvasd be ezt a QR-kódot a telefonoddal, hogy tudd vezérelni a lejátszót.", "remote.web.description": "Olvasd be ezt a QR-kódot a telefonoddal, hogy tudd vezérelni a lejátszót.",
// About // About
"about.thanks": "Köszönet a Cider Collective csapatának és minden közreműködőnek." "about.thanks": "Köszönet a Cider Collective csapatának és minden hozzájárulónak."
} }

359
src/i18n/in_ID.jsonc Normal file
View file

@ -0,0 +1,359 @@
{
// i18n Info
"i18n.languageName": "Bahasa Indonesia", // name of language in native language
"i18n.languageNameEnglish": "Indonesian", // name of language in English
"i18n.category": "main", // main = real language, fun = fun community languages
"i18n.authors": "@crystalshower", // Authors, if you contribute to this file feel free to add your name seperated with a space
// App info
"app.name": "Cider",
"date.format": "${d} ${m}, ${y}",
// Dialogs
"dialog.cancel": "Batal",
"dialog.ok": "OK",
// Notification
"notification.updatingLibrarySongs": "Memperbarui Pustaka lagu...",
"notification.updatingLibraryAlbums": "Memperbarui Pustaka album...",
"notification.updatingLibraryArtists": "Memperbarui Pustaka artis...",
// Terms
"term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music",
"term.applePodcasts": "Apple Podcasts",
"term.itunes": "iTunes",
"term.github": "GitHub",
"term.discord": "Discord",
"term.learnMore": "Pelajari lebih lanjut",
"term.accountSettings": "Pengaturan Akun",
"term.logout": "Keluar",
"term.login": "Masuk",
"term.about": "Tentang",
"term.privateSession": "Sesi Pribadi",
"term.queue": "Antrian",
"term.history": "Riwayat",
"term.search": "Cari",
"term.library": "Pustaka",
"term.listenNow": "Dengarkan Sekarang",
"term.browse": "Telusuri",
"term.radio": "Radio",
"term.recentlyAdded": "Baru Ditambahkan",
"term.songs": "Lagu",
"term.albums": "Album",
"term.artists": "Artis",
"term.podcasts": "Podcasts",
"term.playlists": "Playlist",
"term.playlist": "Playlist",
"term.newPlaylist": "Playlist Baru",
"term.newPlaylistFolder": "Folder Playlist Baru",
"term.createNewPlaylist": "Buat Playlist Baru",
"term.createNewPlaylistFolder": "Buat Folder Playlist Baru",
"term.deletePlaylist": "Yakin ingin menghapus playlist ini?",
"term.play": "Mainkan",
"term.pause": "Jeda",
"term.previous": "Sebelumnya",
"term.next": "Selanjutnya",
"term.shuffle": "Acak",
"term.repeat": "Ulangi",
"term.volume": "Volume",
"term.mute": "Bisu",
"term.unmute": "Bunyikan",
"term.share": "Bagikan",
"term.share.success": "Disalin ke clipboard",
"term.settings": "Pengaturan",
"term.seeAll": "Lihat Semua",
"term.sortBy": "Urutkan Berdasarkan",
"term.sortBy.album": "Album",
"term.sortBy.artist": "Artis",
"term.sortBy.name": "Nama",
"term.sortBy.genre": "Genre",
"term.sortBy.releaseDate": "Tanggal Rilis",
"term.sortBy.duration": "Durasi",
"term.sortOrder": "A-Z",
"term.sortOrder.ascending": "Terkecil",
"term.sortOrder.descending": "Terbesar",
"term.viewAs": "Lihat Sebagai",
"term.viewAs.coverArt": "Cover Art",
"term.viewAs.list": "Daftar",
"term.size": "Ukuran",
"term.size.normal": "Normal",
"term.size.compact": "Kompak",
"term.enable": "Aktifkan",
"term.disable": "Nonaktifkan",
"term.enabled": "Diaktifkan",
"term.disabled": "Dinonaktikan",
"term.connect": "Sambungkan",
"term.connecting": "Menyambungkan",
"term.disconnect": "Terputus",
"term.authed": "Diotentikasi",
"term.confirm": "Konfirmasi?",
"term.more": "Selebihnya",
"term.less": "Lebih Sedikit",
"term.showMore": "Tampilkan lebih banyak",
"term.showLess": "Tampilkan lebih sedikit",
"term.topSongs": "Lagu Teratas",
"term.latestReleases": "Rilis Terbaru",
"term.time.added": "Ditambahkan",
"term.time.released": "Dirilis",
"term.time.updated": "Diperbarui",
"term.time.hours": "jam",
"term.time.hour": "jam",
"term.time.minutes": "menit",
"term.time.minute": "menit",
"term.time.seconds": "detik",
"term.time.second": "detik",
"term.fullscreenView": "Mode Layar Penuh",
"term.defaultView": "Mode Default",
"term.audioSettings": "Pengaturan Audio",
"term.clearAll": "Bersihkan Semua",
"term.recentStations": "Stasiun Terbaru",
"term.language": "Bahasa",
"term.funLanguages": "Senang-senang",
"term.noLyrics": "Memuat... / Lirik tidak ditermukan./ Instrumental.",
"term.copyright": "Hak cipta",
"term.rightsReserved": "Hak cipta dilindungi Undang-undang.",
"term.sponsor": "Sponsori proyek ini",
"term.ciderTeam": "Cider Team",
"term.developer": "Pengembang",
"term.socialTeam": "Social Team",
"term.socials": "Sosial",
"term.contributors": "Kontributor",
"term.equalizer": "Equalizer",
"term.reset": "Atur Ulang",
"term.tracks": "lagu", // Assume x amount of tracks. e.g. 50 tracks
"term.videos": "Video",
"term.menu": "Menu",
"term.check": "Cek",
"term.aboutArtist": "Tentang {{artistName}}", // e.g. 'About Doja Cat'
"term.topResult": "Hasil Teratas", // Search Results
"term.sharedPlaylists": "Playlist yang dibagikan", // Search Results
"term.people": "Orang", // Search Results
"term.newpreset.name": "Nama Preset EQ Baru", // Equalizer Preset
"term.addedpreset": "Preset Ditambahkan",
"term.deletepreset.warn": "Yakin ingin menghapus preset ini?",
"term.deletedpreset": "Preset dihapus",
"term.musicVideos": "Video Musik", // Search page friendlyTypes
"term.stations": "Stasiun",
"term.curators": "Kurator",
"term.appleCurators": "Kurator Apple",
"term.radioShows": "Acara Radio",
"term.recordLabels": "Label Rekaman",
"term.videoExtras": "Bonus Video",
"term.top": "Atas",
// Home
"home.title": "Beranda",
"home.recentlyPlayed": "Baru Dimainkan",
"home.recentlyAdded": "Baru Ditambahkan",
"home.artistsFeed": "Feed Artis Anda",
"home.artistsFeed.noArtist": "Ikuti beberapa artis terlebih dahulu dan rilisan terbaru mereka akan ada di sini",
"home.madeForYou": "Dibuat Untuk Kamu",
"home.friendsListeningTo": "Teman Sedang Mendengarkan",
"home.followedArtists": "Artis Diikuti",
// Errors
"error.appleMusicSubRequired": "Apple Music memerlukan langganan.",
"error.connectionError": "Terjadi masalah saat menyambungkan ke Apple Music.",
"error.noResults": "Tidak ada hasil.",
"error.noResults.description": "Coba pencarian baru.",
// Podcasts
"podcast.followOnCider": "Ikuti Di Cider",
"podcast.followedOnCider": "Mengikuti Di Cider",
"podcast.subscribeOnItunes": "Langganan Di iTunes",
"podcast.subscribedOnItunes": "Berlangganan Di iTunes",
"podcast.itunesStore": "iTunes Store",
"podcast.episodes": "Episode",
"podcast.playEpisode": "Mainkan Episode",
"podcast.website": "Website Podcast",
// Actions
"action.addToLibrary": "Tambahkan ke Pustaka",
"action.addToLibrary.success": "Ditambahkan ke Pustaka",
"action.addToLibrary.error": "Terjadi Kesalahan Saat Menambahkan Pustaka",
"action.removeFromLibrary": "Hapus dari Pustaka",
"action.removeFromLibrary.success": "Dihapus dari Pustaka",
"action.addToQueue": "Tambahkan ke Antrian",
"action.addToQueue.success": "Ditambahkan ke Antrian",
"action.addToQueue.error": "Terjadi Kesalahan Saat Menambahkan ke Antrean",
"action.removeFromQueue": "Hapus dari Antrian",
"action.removeFromQueue.success": "Dihapus dari Antrian",
"action.removeFromQueue.error": "Terjadi Kesalahan Saat Menghapus Antrian",
"action.createPlaylist": "Buat Playlist Baru",
"action.addToPlaylist": "Tambahkan ke Playlist",
"action.removeFromPlaylist": "Hapus dari Playlist",
"action.addToFavorites": "Tambahkan ke Favorit",
"action.follow": "Ikuti",
"action.follow.success": "Diikuti",
"action.follow.error": "Kesalahan Dalam Mengikuti",
"action.unfollow": "Berhenti Mengikuti",
"action.unfollow.success": "Sudah Tidak Mengikuti",
"action.unfollow.error": "Terjadi Kesalahan Saat Berhenti Mengikuti",
"action.playNext": "Mainkan Selanjutnya",
"action.playLater": "Mainkan Nanti",
"action.startRadio": "Mulai Radio",
"action.goToArtist": "Lihat Halaman Artis",
"action.goToAlbum": "Lihat Halaman Album",
"action.moveToTop": "Pindah ke Atas",
"action.share": "Bagikan",
"action.rename": "Ubah Nama",
"action.love": "Suka",
"action.unlove": "Batal Suka",
"action.dislike": "Tidak Suka",
"action.undoDislike": "Batalkan Tidak Suka",
"action.showWebRemoteQR": "Remot Web",
"action.playTracksNext": "Mainkan ${app.selectedMediaItems.length} lagu selanjutnya",
"action.playTracksLater": "Mainkan ${app.selectedMediaItems.length} lagu nanti",
"action.removeTracks": "Hapus ${self.selectedItems.length} lagu dari antrian",
"action.import": "Impor",
"action.export": "Ekspor",
"action.showAlbum": "Tampilkan Album Sepenuhnya",
"action.tray.minimize": "Sembunyikan ke Tray",
"action.tray.quit": "Keluar",
"action.tray.show": "Tampilkan",
"action.update": "Perbarui",
"action.copy": "Salin",
"action.newpreset": "Preset Baru...", // Equalizer Preset
"action.deletepreset": "Hapus Preset",
// Settings - General
"settings.header.general": "Umum",
"settings.header.general.description": "Sesuaikan pengaturan umum untuk Cider.",
"settings.option.general.language": "Bahasa",
// Language optgroups
"settings.option.general.language.main": "Bahasa",
"settings.option.general.language.fun": "Bahasa Candaan",
"settings.option.general.language.unsorted": "Tidak disortir",
// Update Cider
"settings.option.general.updateCider": "Perbarui Cider", // Button. Refer to term.check for the check button
"settings.option.general.updateCider.branch": "Branch Pembaruan Cider", // Dropdown
"settings.option.general.updateCider.branch.description": "Pilih branch untuk memperbarui Cider",
"settings.option.general.updateCider.branch.main": "Stable",
"settings.option.general.updateCider.branch.develop": "Development",
// Settings - Audio
"settings.header.audio": "Audio",
"settings.header.audio.description": "Sesuaikan pengaturan audio untuk Cider.",
"settings.option.audio.quality": "Kualitas Audio", // Dropdown
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
"settings.header.audio.quality.hireslossless.description": "sampai dari 24-bit/192 kHz",
"settings.header.audio.quality.lossless": "Lossless",
"settings.header.audio.quality.lossless.description": "sampai dari 24-bit/48 kHz",
"settings.header.audio.quality.high": "Tinggi",
"settings.header.audio.quality.high.description": "256 kbps",
"settings.header.audio.quality.standard": "Standar",
"settings.header.audio.quality.standard.description": "64 kbps",
"settings.option.audio.seamlessTransition": "Transisi Audio Mulus", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "Aktifkan Fungsi Lanjutan", // Toggle
"settings.option.audio.enableAdvancedFunctionality.description": "Mengaktifkan fungsionalitas AudioContext memungkinkan fitur audio lanjutan seperti Normalisasi Audio, Equalizer dan Visualizer. Namun pada beberapa perangkat dapat menyebabkan tersendatnya audio.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Peningkatan Psikoakustik yang membuat semuanya terdengar lebih jelas dan lebih hidup | Dirancang oleh Maikiwi.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "Kekuatan CAP", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Mengubah kekuatan pemrosesan yang dilakukan pada audio. (Agresif dapat menghasilkan hasil yang tidak diinginkan)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standar",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Agresif",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalisasi Audio", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Menormalkan puncak volume untuk masing-masing lagu demi menciptakan pengalaman mendengarkan yang lebih seragam.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Spasialisasi Audio", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Atur ruang audio dan buat audio lebih 3 dimensi (NB: Bukan Dolby Atmos)",
// Settings - Visual
"settings.header.visual": "Visual",
"settings.header.visual.description": "Sesuaikan pengaturan visual untuk Cider.",
"settings.option.visual.windowBackgroundStyle": "Gaya Latar Belakang Jendela", // Toggle
"settings.header.visual.windowBackgroundStyle.none": "Tidak Ada",
"settings.header.visual.windowBackgroundStyle.artwork": "Artwork",
"settings.header.visual.windowBackgroundStyle.image": "Gambar",
"settings.option.visual.animatedArtwork": "Artwork Bergerak", // Dropdown
"settings.header.visual.animatedArtwork.always": "Selalu",
"settings.header.visual.animatedArtwork.limited": "Terbatas untuk halaman dan entri khusus",
"settings.header.visual.animatedArtwork.disable": "Matikan di semua tempat",
"settings.option.visual.animatedArtworkQuality": "Kualitas Artwork Bergerak", // Dropdown
"settings.header.visual.animatedArtworkQuality.low": "Rendah",
"settings.header.visual.animatedArtworkQuality.medium": "Medium",
"settings.header.visual.animatedArtworkQuality.high": "Tinggi",
"settings.header.visual.animatedArtworkQuality.veryHigh": "Sangat Tinggi",
"settings.header.visual.animatedArtworkQuality.extreme": "Paling Tinggi",
"settings.option.visual.animatedWindowBackground": "Jendela Latar Belakang Bergerak", // Toggle
"settings.option.visual.hardwareAcceleration": "Akselerasi Perangkat Keras (HW Acceleration)", // Dropdown
"settings.option.visual.hardwareAcceleration.description": "Membutuhkan dibuka ulang",
"settings.header.visual.hardwareAcceleration.default": "Default",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
"settings.header.visual.theme": "Tema",
// Settings - Visual - Theme name
"settings.option.visual.theme.default": "Cider",
"settings.option.visual.theme.dark": "Gelap",
// Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "Tampilkan Info Pribadi", // Toggle
// Settings - Lyrics
"settings.header.lyrics": "Lyrics",
"settings.header.lyrics.description": "Sesuaikan pengaturan lirik untuk Cider.",
"settings.option.lyrics.enableMusixmatch": "Aktifkan Lirik Musixmatch", // Toggle
"settings.option.lyrics.enableMusixmatchKaraoke": "Aktifkan Mode Karaoke (khusus Musixmatch)", // Toggle
"settings.option.lyrics.musixmatchPreferredLanguage": "Bahasa Terjemahan Musixmatch", // Dropdown
"settings.option.lyrics.enableYoutubeLyrics": "Aktifkan Lirik Youtube untuk Video Musik", // Toggle
// Settings - Connectivity
"settings.header.connectivity": "Konektivitas",
"settings.header.connectivity.description": "Sesuaikan pengaturan konektivitas untuk Cider.",
"settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown
"settings.option.connectivity.playbackNotifications": "Pemberitahuan Pemutaran", // Toggle
// Refer to term.disabled for the disabled option
"settings.header.connectivity.discordRPC.cider": "Tampilkan sebagai 'Cider'",
"settings.header.connectivity.discordRPC.appleMusic": "Tampilkan sebagai 'Apple Music'",
"settings.option.connectivity.discordRPC.clearOnPause": "Sembunyikan Discord Rich Presence saat dijeda", // Toggle
"settings.option.connectivity.lastfmScrobble": "Last.fm Scrobbling", // Option to Connect
"settings.option.connectivity.lastfmScrobble.delay": "Delay Last.fm Scrobble (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Aktifkan Last.fm Now Playing",
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Hapus featuring artist dari judul lagu (Last.fm)",
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filter lagu yang diulang (Last.fm)",
// Refer to term.connect for the connect button
// Settings - Experimental
"settings.header.experimental": "Eksperimental",
"settings.header.experimental.description": "Sesuaikan pengaturan eksperimental untuk Cider.",
"settings.option.experimental.compactUI": "UI Kompak", // Toggle
"settings.option.experimental.close_button_hide": "Tombol Tutup Menyembunyikan Aplikasi",
"settings.option.experimental.copy_log": "Salin log ke clipboard",
"settings.option.experimental.inline_playlists": "Playlist dan Album Sebaris",
// Refer to term.disabled & term.enabled
// Spatialization Menu
"spatial.notTurnedOn": "Spasialisasi Audio dinonaktifkan. Untuk menggunakan, aktifkan terlebih dahulu.",
"spatial.spatialProperties": "Spatial Properties",
"spatial.width": "Lebar",
"spatial.height": "Tinggi",
"spatial.depth": "Kedalaman",
"spatial.gain": "Gain",
"spatial.roomMaterials": "Bahan Ruangan",
"spatial.roomDimensions": "Dimensi Ruangan",
"spatial.roomPositions": "Posisi Ruangan",
"spatial.setDimensions": "Atur Dimensi",
"spatial.setPositions": "Atur Posisi",
"spatial.up": "Atas",
"spatial.front": "Depan",
"spatial.left": "Kiri",
"spatial.right": "Kanan",
"spatial.back": "Belakang",
"spatial.down": "Bawah",
"spatial.listener": "Pendegar",
"spatial.audioSource": "Sumber Audio",
// Settings - Unfinished
"settings.header.unfinished": "Belum Diselesaikan",
// Web Remote
"remote.web.title": "Remote Cider",
"remote.web.description": "Pindai kode QR untuk memasangkan ponsel Anda dengan Cider.",
// About
"about.thanks": "Terima kasih yang sebesar-besarnya kepada Cider Collective Team dan semua kontributor kami."
}

View file

@ -1,4 +1,4 @@
{ // Base File {
// i18n Info // i18n Info
"i18n.languageName": "Italiano", // name of language in native language "i18n.languageName": "Italiano", // name of language in native language
@ -19,6 +19,7 @@
"notification.updatingLibrarySongs": "Aggiornamento raccolta brani...", "notification.updatingLibrarySongs": "Aggiornamento raccolta brani...",
"notification.updatingLibraryAlbums": "Aggornamento raccolta album...", "notification.updatingLibraryAlbums": "Aggornamento raccolta album...",
"notification.updatingLibraryArtists": "Aggiornamento raccolta artisti...", "notification.updatingLibraryArtists": "Aggiornamento raccolta artisti...",
// Terms // Terms
"term.appleInc": "Apple Inc.", "term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music", "term.appleMusic": "Apple Music",
@ -134,6 +135,7 @@
"home.madeForYou": "Per Te", "home.madeForYou": "Per Te",
"home.friendsListeningTo": "Ascoltato da Amici", "home.friendsListeningTo": "Ascoltato da Amici",
"home.followedArtists": "Artisti Seguiti", "home.followedArtists": "Artisti Seguiti",
// Errors // Errors
"error.appleMusicSubRequired": "Apple Music ha bisogno di un abbonamento.", "error.appleMusicSubRequired": "Apple Music ha bisogno di un abbonamento.",
"error.connectionError": "C'è stato un problema nella connessione a Apple Music.", "error.connectionError": "C'è stato un problema nella connessione a Apple Music.",
@ -191,7 +193,6 @@
"action.import": "Importa", "action.import": "Importa",
"action.export": "Esporta", "action.export": "Esporta",
"action.showAlbum": "Mostra Album Intero", "action.showAlbum": "Mostra Album Intero",
// Waiting on Core for moving plugin to app.ts
"action.tray.minimize": "Minimizza nel tray", "action.tray.minimize": "Minimizza nel tray",
"action.tray.quit": "Chiudi", "action.tray.quit": "Chiudi",
"action.tray.show": "Mostra", "action.tray.show": "Mostra",
@ -206,6 +207,8 @@
"settings.option.general.language.fun": "Lingue da Scherzo", "settings.option.general.language.fun": "Lingue da Scherzo",
"settings.option.general.language.unsorted": "Non ordinato", "settings.option.general.language.unsorted": "Non ordinato",
// Update Cider
// Settings - Audio // Settings - Audio
"settings.header.audio": "Audio", "settings.header.audio": "Audio",
"settings.header.audio.description": "Cambia le impostazioni di audio di Cider.", "settings.header.audio.description": "Cambia le impostazioni di audio di Cider.",
@ -220,6 +223,7 @@
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizza il volume massimo nei brani per un'esperienza d'ascolto più uniforme.", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizza il volume massimo nei brani per un'esperienza d'ascolto più uniforme.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Spazializzazione Audio", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Spazializzazione Audio", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spazializza l'audio per dare un effetto più tridimensionale (nota: questo non è Dolby Atmos)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Spazializza l'audio per dare un effetto più tridimensionale (nota: questo non è Dolby Atmos)",
// Settings - Visual // Settings - Visual
"settings.header.visual": "Visuale", "settings.header.visual": "Visuale",
"settings.header.visual.description": "Cambia le impostazioni visuali per Cider.", "settings.header.visual.description": "Cambia le impostazioni visuali per Cider.",
@ -242,6 +246,9 @@
"settings.option.visual.hardwareAcceleration.description": "Richiede riavvio del'app", "settings.option.visual.hardwareAcceleration.description": "Richiede riavvio del'app",
"settings.header.visual.hardwareAcceleration.default": "Normale", "settings.header.visual.hardwareAcceleration.default": "Normale",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
// Settings - Visual - Theme name
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "Mostra Informazione Personale", // Toggle "settings.option.visual.showPersonalInfo": "Mostra Informazione Personale", // Toggle
@ -277,8 +284,8 @@
"settings.option.experimental.closeButtonBehaviour.quit": "Chiudi Cider", "settings.option.experimental.closeButtonBehaviour.quit": "Chiudi Cider",
"settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "Minimizza", "settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "Minimizza",
"settings.option.experimental.closeButtonBehaviour.minimizeTray": "Minimizza Nel Tray", "settings.option.experimental.closeButtonBehaviour.minimizeTray": "Minimizza Nel Tray",
// Refer to term.disabled & term.enabled
// Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.notTurnedOn": "Spazializzazione Audio è disattivata. Attivala prima.", "spatial.notTurnedOn": "Spazializzazione Audio è disattivata. Attivala prima.",
"spatial.spatialProperties" : "Proprietà Spaziali", "spatial.spatialProperties" : "Proprietà Spaziali",

View file

@ -1,8 +1,4 @@
{ {
// App info
"app.name": "Cider",
"date.format": "${y}年${m}月${d}日",
// i18n Info // i18n Info
"i18n.languageName": "日本語", // name of language in native language "i18n.languageName": "日本語", // name of language in native language
@ -10,6 +6,11 @@
"i18n.category": "main", // main = real language, fun = fun community languages "i18n.category": "main", // main = real language, fun = fun community languages
"i18n.authors": "@maikirakiwi", // Authors, if you contribute to this file feel free to add your name seperated with a space "i18n.authors": "@maikirakiwi", // Authors, if you contribute to this file feel free to add your name seperated with a space
// App info
"app.name": "Cider",
"date.format": "${y}年${m}月${d}日",
// Dialogs // Dialogs
"dialog.cancel": "キャンセル", "dialog.cancel": "キャンセル",
"dialog.ok": "OK", "dialog.ok": "OK",
@ -118,7 +119,6 @@
"term.menu": "メニュー", "term.menu": "メニュー",
"term.check": "確認", "term.check": "確認",
"term.aboutArtist": "{{artistName}}について", // e.g. 'About Doja Cat' "term.aboutArtist": "{{artistName}}について", // e.g. 'About Doja Cat'
"term.updateCider": "Cider 更新",
// Home // Home
"home.title": "ホーム", "home.title": "ホーム",
@ -129,6 +129,7 @@
"home.madeForYou": "あなたにおすすめ", "home.madeForYou": "あなたにおすすめ",
"home.friendsListeningTo": "友達が聴いている", "home.friendsListeningTo": "友達が聴いている",
"home.followedArtists": "フォローしているアーティスト", "home.followedArtists": "フォローしているアーティスト",
// Errors // Errors
"error.appleMusicSubRequired": "Apple Musicのサブスクリプションが必要です。", "error.appleMusicSubRequired": "Apple Musicのサブスクリプションが必要です。",
"error.connectionError": "Apple Musicに接続できません。", "error.connectionError": "Apple Musicに接続できません。",
@ -193,6 +194,15 @@
"action.newpreset": "ニュープリセット", // Equalizer Preset "action.newpreset": "ニュープリセット", // Equalizer Preset
"action.deletepreset": "プリセットを削除", // Equalizer Preset "action.deletepreset": "プリセットを削除", // Equalizer Preset
// Settings - General
"settings.header.general": "一般",
"settings.header.general.description": "Ciderの一般設定",
// Language optgroups
// Update Cider
"settings.option.general.updateCider": "Cider 更新", // Button
// Settings - Audio // Settings - Audio
"settings.header.audio": "オーディオ", "settings.header.audio": "オーディオ",
"settings.header.audio.description": "Ciderのオーディオ設定", "settings.header.audio.description": "Ciderのオーディオ設定",
@ -203,12 +213,12 @@
"settings.header.audio.quality.lossless.description": "(最大解像度 24 ビット48 kHz)", "settings.header.audio.quality.lossless.description": "(最大解像度 24 ビット48 kHz)",
"settings.header.audio.quality.enhanced": "エンハンスド", "settings.header.audio.quality.enhanced": "エンハンスド",
"settings.header.audio.quality.high": "高品質", "settings.header.audio.quality.high": "高品質",
"settings.header.audio.quality.low": "高効率", "settings.header.audio.quality.standard": "高効率",
"settings.header.audio.quality.auto": "自動", "settings.header.audio.quality.auto": "自動",
"settings.option.audio.seamlessTransition": "曲間なしで再生", // Toggle "settings.option.audio.seamlessTransition": "曲間なしで再生", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "先進的な機能", // Toggle "settings.option.audio.enableAdvancedFunctionality": "先進的な機能", // Toggle
"settings.option.audio.enableAdvancedFunctionality.description": "AudioContext 機能を有効にすると、オーディオノーマライズ、空間オーディオ、イコライザーなどの機能を使用できますが、音が途切れるかもしれません。", // Toggle "settings.option.audio.enableAdvancedFunctionality.description": "AudioContext 機能を有効にすると、オーディオノーマライズ、空間オーディオ、イコライザーなどの機能を使用できますが、音が途切れるかもしれません。", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider AEP", // Toggle "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider AEP™️", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "圧縮音源を高解像度に処理することによって、ロスレス相当の音質に向上させます。", // Toggle "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "圧縮音源を高解像度に処理することによって、ロスレス相当の音質に向上させます。", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "AEPの強さ", // Toggle "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "AEPの強さ", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Changes the strength of the processing done to the audio. (Aggressive may yield undesirable results)",
@ -218,6 +228,7 @@
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "さまざまな曲の音量を均一にし、より整った音を楽しめるようにする機能です。", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "さまざまな曲の音量を均一にし、より整った音を楽しめるようにする機能です。",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "オーディオ空間化", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "オーディオ空間化", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "オーディオを空間に分散させる機能です。 (ドルビーアトモスではありません)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "オーディオを空間に分散させる機能です。 (ドルビーアトモスではありません)",
// Settings - Visual // Settings - Visual
"settings.header.visual": "ビジュアル", "settings.header.visual": "ビジュアル",
"settings.header.visual.description": "Ciderのビジュアル設定", "settings.header.visual.description": "Ciderのビジュアル設定",
@ -239,11 +250,12 @@
"settings.option.visual.hardwareAcceleration.description": "アプリを再起動する必要があります", "settings.option.visual.hardwareAcceleration.description": "アプリを再起動する必要があります",
"settings.header.visual.hardwareAcceleration.default": "既定", "settings.header.visual.hardwareAcceleration.default": "既定",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
// Settings - Visual - Theme name
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "プロフィールを表示", // Toggle "settings.option.visual.showPersonalInfo": "プロフィールを表示", // Toggle
// Settings - General (Reserved)
"settings.header.general": "一般",
"settings.header.general.description": "Ciderの一般設定",
// Settings - Lyrics // Settings - Lyrics
"settings.header.lyrics": "歌詞", "settings.header.lyrics": "歌詞",
@ -272,8 +284,8 @@
"settings.header.experimental.description": "開発中の実験的な機能は不完全で不安定である可能性があります", "settings.header.experimental.description": "開発中の実験的な機能は不完全で不安定である可能性があります",
"settings.option.experimental.compactUI": "コンパクトインターフェース", // Toggle "settings.option.experimental.compactUI": "コンパクトインターフェース", // Toggle
"settings.option.experimental.close_button_hide": "「閉じる」ボタンでアプリを隠します", // Dropdown "settings.option.experimental.close_button_hide": "「閉じる」ボタンでアプリを隠します", // Dropdown
// Refer to term.disabled & term.enabled
// Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.spatialProperties": "空間化のプロパティ", "spatial.spatialProperties": "空間化のプロパティ",
"spatial.width": "幅", "spatial.width": "幅",
@ -303,5 +315,4 @@
//About //About
"about.thanks": "Cider Collective とご協力いただいた貢献者様に感謝申し上げます。" "about.thanks": "Cider Collective とご協力いただいた貢献者様に感謝申し上げます。"
} }

View file

@ -1,4 +1,4 @@
{ // Base File {
// i18n Info // i18n Info
"i18n.languageName": "한국어 (KR)", // name of language in native language "i18n.languageName": "한국어 (KR)", // name of language in native language
@ -19,6 +19,7 @@
"notification.updatingLibrarySongs": "라이브러리의 노래를 업데이트하는 중입니다...", "notification.updatingLibrarySongs": "라이브러리의 노래를 업데이트하는 중입니다...",
"notification.updatingLibraryAlbums": "라이브러리의 앨범을 업데이트하는 중입니다...", "notification.updatingLibraryAlbums": "라이브러리의 앨범을 업데이트하는 중입니다...",
"notification.updatingLibraryArtists": "라이브러리의 아티스트를 업데이트하는 중입니다...", "notification.updatingLibraryArtists": "라이브러리의 아티스트를 업데이트하는 중입니다...",
// Terms // Terms
"term.appleInc": "Apple Inc.", // Follows brand term "term.appleInc": "Apple Inc.", // Follows brand term
"term.appleMusic": "Apple Music", // Follows brand term "term.appleMusic": "Apple Music", // Follows brand term
@ -127,7 +128,6 @@
"term.menu": "메뉴", "term.menu": "메뉴",
"term.check": "확인", "term.check": "확인",
"term.aboutArtist": "{{artistName}}에 대하여", // e.g. 'About Doja Cat' "term.aboutArtist": "{{artistName}}에 대하여", // e.g. 'About Doja Cat'
"term.updateCider": "Cider 업데이트",
"term.topResult": "Top Result", // Search Results "term.topResult": "Top Result", // Search Results
"term.sharedPlaylists": "공유 플레이리스트", // Search Results "term.sharedPlaylists": "공유 플레이리스트", // Search Results
"term.people": "프로필", // Search Results "term.people": "프로필", // Search Results
@ -153,6 +153,7 @@
"home.madeForYou": "나만을 위한 추천", "home.madeForYou": "나만을 위한 추천",
"home.friendsListeningTo": "친구가 듣는 음악", "home.friendsListeningTo": "친구가 듣는 음악",
"home.followedArtists": "팔로우한 아티스트", "home.followedArtists": "팔로우한 아티스트",
// Errors // Errors
"error.appleMusicSubRequired": "Apple Music은 구독을 필요로 합니다.", "error.appleMusicSubRequired": "Apple Music은 구독을 필요로 합니다.",
"error.connectionError": "Apple Music에 연결하지 못했습니다.", "error.connectionError": "Apple Music에 연결하지 못했습니다.",
@ -228,6 +229,9 @@
"settings.option.general.language.fun": "재미를 위한 언어", "settings.option.general.language.fun": "재미를 위한 언어",
"settings.option.general.language.unsorted": "미분류", "settings.option.general.language.unsorted": "미분류",
// Update Cider
"settings.option.general.updateCider": "Cider 업데이트", // Button
// Settings - Audio // Settings - Audio
"settings.header.audio": "오디오", "settings.header.audio": "오디오",
"settings.header.audio.description": "Cider의 오디오 기능을 설정합니다.", "settings.header.audio.description": "Cider의 오디오 기능을 설정합니다.",
@ -242,6 +246,7 @@
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "개별 트랙의 최대 볼륨을 정규화하여 보다 균일한 청취 경험을 제공합니다.", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "개별 트랙의 최대 볼륨을 정규화하여 보다 균일한 청취 경험을 제공합니다.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "오디오 공간화", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "오디오 공간화", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "오디오를 공간화하고 더욱 3차원적으로 만들어줍니다. (참고: 이 기능은 Dolby Atmos가 아닙니다.)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "오디오를 공간화하고 더욱 3차원적으로 만들어줍니다. (참고: 이 기능은 Dolby Atmos가 아닙니다.)",
// Settings - Visual // Settings - Visual
"settings.header.visual": "시각", "settings.header.visual": "시각",
"settings.header.visual.description": "Cider의 시각 기능을 설정합니다.", "settings.header.visual.description": "Cider의 시각 기능을 설정합니다.",
@ -304,8 +309,8 @@
"settings.option.experimental.close_button_hide": "닫기 버튼이 애플리케이션을 가릴 것입니다", "settings.option.experimental.close_button_hide": "닫기 버튼이 애플리케이션을 가릴 것입니다",
"settings.option.experimental.copy_log": "로그를 클립보드에 복사하기", "settings.option.experimental.copy_log": "로그를 클립보드에 복사하기",
"settings.option.experimental.inline_playlists": "인라인 플레이리스트 및 앨범", "settings.option.experimental.inline_playlists": "인라인 플레이리스트 및 앨범",
// Refer to term.disabled & term.enabled
// Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.notTurnedOn": "오디오 공간화가 비활성화되어있습니다. 사용하기 전에 먼저 활성화해주세요.", "spatial.notTurnedOn": "오디오 공간화가 비활성화되어있습니다. 사용하기 전에 먼저 활성화해주세요.",
"spatial.spatialProperties": "공간 설정", "spatial.spatialProperties": "공간 설정",

View file

@ -1,8 +1,4 @@
{ // Base File {
// App info
"app.name": "Cider",
"date.format": "${d} ${m}, ${y}",
// i18n Info // i18n Info
"i18n.languageName": "Português ( brasileiro )", // name of language in native language "i18n.languageName": "Português ( brasileiro )", // name of language in native language
@ -10,6 +6,11 @@
"i18n.category": "main", // main = real language, fun = fun community languages "i18n.category": "main", // main = real language, fun = fun community languages
"i18n.authors": "", // Authors, if you contribute to this file feel free to add your name seperated with a space "i18n.authors": "", // Authors, if you contribute to this file feel free to add your name seperated with a space
// App info
"app.name": "Cider",
"date.format": "${d} ${m}, ${y}",
// Dialogs // Dialogs
"dialog.cancel": "Cancelar", "dialog.cancel": "Cancelar",
"dialog.ok": "OK", "dialog.ok": "OK",
@ -105,6 +106,7 @@
"home.madeForYou": "Feito para Você", "home.madeForYou": "Feito para Você",
"home.friendsListeningTo": "Amigos Ouvindo", "home.friendsListeningTo": "Amigos Ouvindo",
"home.followedArtists": "Artistas Seguidos", "home.followedArtists": "Artistas Seguidos",
// Errors // Errors
"error.appleMusicSubRequired": "Necessário uma assinatura Apple Music.", "error.appleMusicSubRequired": "Necessário uma assinatura Apple Music.",
@ -142,6 +144,15 @@
"action.dislike": "Não Gostar", "action.dislike": "Não Gostar",
"action.undoDislike": "Deixar de Não Gostar", "action.undoDislike": "Deixar de Não Gostar",
"action.showWebRemoteQR": "Mostrar o QR para Página Remota", "action.showWebRemoteQR": "Mostrar o QR para Página Remota",
// Settings - General
"settings.header.general": "Principal",
"settings.header.general.description": "Ajustar as definiçoes principais no Cider.",
// Language optgroups
// Update Cider
// Settings - Audio // Settings - Audio
"settings.header.audio": "Audio", "settings.header.audio": "Audio",
"settings.header.audio.description": "Ajustar as definições de audio no Cider.", "settings.header.audio.description": "Ajustar as definições de audio no Cider.",
@ -156,6 +167,7 @@
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normaliza o volume alto para faixas individuais para criar uma experiência de audição mais uniforme.", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normaliza o volume alto para faixas individuais para criar uma experiência de audição mais uniforme.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Espacial", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Espacial", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Espacialize o áudio e torne o áudio mais tridimensional (nota: isto não é Dolby Atmos)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Espacialize o áudio e torne o áudio mais tridimensional (nota: isto não é Dolby Atmos)",
// Settings - Visual // Settings - Visual
"settings.header.visual": "Visual", "settings.header.visual": "Visual",
"settings.header.visual.description": "Ajustar as Definições de Visual do Cider.", "settings.header.visual.description": "Ajustar as Definições de Visual do Cider.",
@ -178,12 +190,10 @@
"settings.header.visual.hardwareAcceleration.default": "Normal", "settings.header.visual.hardwareAcceleration.default": "Normal",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
// Settings - Visual - Theme name
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "Mostrar Informaçoes Pessoais", // Toggle "settings.option.visual.showPersonalInfo": "Mostrar Informaçoes Pessoais", // Toggle
// Settings - General (Reserved)
"settings.header.general": "Principal",
"settings.header.general.description": "Ajustar as definiçoes principais no Cider.",
// Settings - Lyrics // Settings - Lyrics
"settings.header.lyrics": "Letras", "settings.header.lyrics": "Letras",
@ -211,8 +221,8 @@
"settings.header.experimental": "Experimental", "settings.header.experimental": "Experimental",
"settings.header.experimental.description": "Ajustar as definições experimental no Cider.", "settings.header.experimental.description": "Ajustar as definições experimental no Cider.",
"settings.option.experimental.compactUI": "UI Compacto", // Toggle "settings.option.experimental.compactUI": "UI Compacto", // Toggle
// Refer to term.disabled & term.enabled
// Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.spatialProperties" : "Propriedades do Espacial", "spatial.spatialProperties" : "Propriedades do Espacial",
"spatial.width" : "Largura", "spatial.width" : "Largura",
@ -232,13 +242,12 @@
"spatial.listener" : "Ouvinte", "spatial.listener" : "Ouvinte",
"spatial.audioSource" : "Fonte de Audio", "spatial.audioSource" : "Fonte de Audio",
// Settings - Unfinished // Settings - Unfinished
"settings.header.unfinished": "Inacabado", "settings.header.unfinished": "Inacabado",
// Web Remote // Web Remote
"remote.web.title": "Cider Remoto", "remote.web.title": "Cider Remoto",
"remote.web.description": "Digitalize o código QR para emparelhar seu telefone com esta instância Cider" "remote.web.description": "Digitalize o código QR para emparelhar seu telefone com esta instância Cider"
// About
} }

330
src/i18n/sk_SK.jsonc Normal file
View file

@ -0,0 +1,330 @@
{
// i18n Info
"i18n.languageName": "Slovenčina (SK)", // name of language in native language
"i18n.languageNameEnglish": "Slovak (SK)", // name of language in English
"i18n.category": "main", // main = real language, fun = fun community languages
"i18n.authors": "@jurosic-JurajJanosik", // Authors, if you contribute to this file feel free to add your name seperated with a space
// App info
"app.name": "Cider",
"date.format": "${d} ${m}, ${y}",
// Dialogs
"dialog.cancel": "Zrušit",
"dialog.ok": "OK",
// Notification
"notification.updatingLibrarySongs": "Aktualizujem pesničky v knižnici...",
"notification.updatingLibraryAlbums": "Aktualizujem albumy v knižnici...",
"notification.updatingLibraryArtists": "Aktualizujem tvorcov v knižnici...",
// Terms
"term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music",
"term.applePodcasts": "Apple Podcasts",
"term.itunes": "iTunes",
"term.github": "GitHub",
"term.discord": "Discord",
"term.learnMore": "Zistiť viac",
"term.accountSettings": "Nastavenia účtu",
"term.logout": "Odhlásiť",
"term.login": "Prihlásiť",
"term.about": "About",
"term.privateSession": "Skuromn Počúvanie",
"term.queue": "Poradie",
"term.search": "Vyhládavať",
"term.library": "Knižnica",
"term.listenNow": "Počúvať teraz",
"term.browse": "Prehliadávať",
"term.radio": "Rádio",
"term.recentlyAdded": "Nedávno Pridané",
"term.songs": "Pesničky",
"term.albums": "Albumy",
"term.artists": "Tvorcovia",
"term.podcasts": "Podcasty",
"term.playlists": "Playlisty",
"term.playlist": "Playlist",
"term.newPlaylist": "Nový Playlist",
"term.newPlaylistFolder": "Nový Priečinok Playlistov",
"term.createNewPlaylist": "Urobiť Nový Playlist",
"term.createNewPlaylistFolder": "Urobiť Nový Priečinok Playlistov",
"term.deletePlaylist": "Ste si istý že chcete zmazat tento playlist?",
"term.play": "Play",
"term.pause": "Pause",
"term.previous": "Previous",
"term.next": "Next",
"term.shuffle": "Shuffle",
"term.repeat": "Repeat",
"term.volume": "Hlasitosť",
"term.mute": "Ztlmiť",
"term.unmute": "Vypnúť Ztlmenie",
"term.share": "Zdielať",
"term.settings": "Nastavenia",
"term.seeAll": "Vidieť Všetko",
"term.sortBy": "Zodariť Podľa",
"term.sortBy.album": "Album",
"term.sortBy.artist": "Tvorca",
"term.sortBy.name": "Názov",
"term.sortBy.genre": "Žáner",
"term.sortBy.releaseDate": "Dátum Vydania",
"term.sortBy.duration": "Dĺžka",
"term.sortOrder": "A-Z",
"term.sortOrder.ascending": "Vzostupne",
"term.sortOrder.descending": "Zostupne",
"term.viewAs": "Zobraziť Ako",
"term.viewAs.coverArt": "Náhľadovka",
"term.viewAs.list": "List",
"term.size": "Velkosť",
"term.size.normal": "Normálny",
"term.size.compact": "Kompaktný",
"term.enable": "Zapnúť",
"term.disable": "Vypnúť",
"term.enabled": "Zapnuté",
"term.disabled": "Vypnuté",
"term.connect": "Pripojiť",
"term.connecting": "Pripájam",
"term.disconnect": "Odpojiť",
"term.authed": "Authentikovaný",
"term.confirm": "Podvrdiť ?",
"term.more": "Viac",
"term.less": "Menej",
"term.showMore": "Ukázať viac",
"term.showLess": "Ukázať menej",
"term.topSongs" : "Top Pesničky",
"term.latestReleases": "Najnovšie vydania",
"term.time.added": "Pridané",
"term.time.released": "Vydané",
"term.time.updated": "Aktualizované",
"term.time.hours": "hodín",
"term.time.hour": "hodina",
"term.time.minutes": "minút",
"term.time.minute": "minúta",
"term.time.seconds": "sekúnd",
"term.time.second": "sekunda",
"term.fullscreenView": "Zobrazenie na celej obrazovke",
"term.defaultView": "Default View",
"term.audioSettings": "Nastavenia Zvuku",
"term.clearAll": "Vyčistiť Všetko",
"term.recentStations": "Nedávne Stanice",
"term.language": "Jazyk",
"term.funLanguages": "Zábava",
"term.noLyrics": "Načítavam... / Text nebol najdený./ Instrumental.",
"term.copyright": "Copyright",
"term.rightsReserved": "All Rights Reserved.",
"term.sponsor": "Sponzoruj tento projekt",
"term.ciderTeam": "Cider Team",
"term.developer": "Developer",
"term.socialTeam": "Social Team",
"term.socials": "Socials",
"term.contributors": "Contributors",
"term.equalizer": "Equalizer",
"term.reset": "Resetovať",
"term.tracks": "pesničiek", // Assume x amount of tracks. e.g. 50 tracks
"term.videos": "Videá",
"term.menu": "Menu",
"term.check": "Skontrolovať",
"term.aboutArtist": "Viac o {{artistName}}", // e.g. 'About Doja Cat'
// Home
"home.title": "Domov",
"home.recentlyPlayed": "Nedávno Prehrané",
"home.recentlyAdded": "Nedávno Pridané",
"home.artistsFeed": "Feed Tvojho Tvorcu",
"home.artistsFeed.noArtist": "Najprv sleduj niektorých tvorcov, ich pesničky potom budú tu",
"home.madeForYou": "Robené Pre Teba",
"home.friendsListeningTo": "Kamaráti počúvajú",
"home.followedArtists": "Sledovaný Tvorcovia",
// Errors
"error.appleMusicSubRequired": "Apple Music potrebuje subscription.",
"error.connectionError": "Pri pripojovaní ku Apple Music sa vyskytol problém",
"error.noResults": "Žiadne výsledky",
"error.noResults.description": "Skús nové vyhľádavanie",
// Podcasts
"podcast.followOnCider": "Sleduj na Cider",
"podcast.followedOnCider": "Sledované na Cider",
"podcast.subscribeOnItunes": "Odoberaj na iTunes",
"podcast.subscribedOnItunes": "Odoberane na iTunes",
"podcast.itunesStore": "iTunes Obchod",
"podcast.episodes": "Epizódy",
"podcast.playEpisode": "Prehraj Epizódu",
"podcast.website": "Stránka Podcastu",
// Actions
"action.addToLibrary": "Pridaj do Knižnice",
"action.addToLibrary.success": "Pridané do Knižnice",
"action.addToLibrary.error": "Pri pridávani do Knižnice sa vzskytol problém",
"action.removeFromLibrary": "Odstrániť z Knižnice",
"action.removeFromLibrary.success": "Odstránene z Knižnice",
"action.addToQueue": "Pridať do Poradia",
"action.addToQueue.success": "Pridané do Poradia",
"action.addToQueue.error": "Pri pridávaní do Poradia sa vyskytol problém",
"action.removeFromQueue": "Odstrániť z Poradia",
"action.removeFromQueue.success": "Odstránené z Poradia",
"action.removeFromQueue.error": "Pri odstranovaní z Poradia sa vyskytol probém",
"action.createPlaylist": "Urobiť nový Playlist",
"action.addToPlaylist": "Pridať do Playlistu",
"action.removeFromPlaylist": "Odstrániť z Playlistu",
"action.addToFavorites": "Pridať do Obľubéných",
"action.follow": "Sledovať",
"action.follow.success": "Sleduješ",
"action.follow.error": "Pri Sledovaní sa vyskytol problém",
"action.unfollow": "Zrušit Sledovanie",
"action.unfollow.success": "Sledovanie Zrušené",
"action.unfollow.error": "Pri zrušení sledovania sa vyskytol problém",
"action.playNext": "Hrať Ďalšie",
"action.playLater": "Hrať Neskor",
"action.startRadio": "Zapnúť Rádio",
"action.goToArtist": "Ku Tvorcovi",
"action.goToAlbum": "Ku Albumu",
"action.moveToTop": "Premiestniť Hore",
"action.share": "Zdielať",
"action.rename": "Premenovať",
"action.love": "Love",
"action.unlove": "Unlove",
"action.dislike": "Dislike",
"action.undoDislike": "Zrušiť dislike",
"action.showWebRemoteQR": "Web Remote",
"action.playTracksNext": "Hrať ${app.selectedMediaItems.length} pesničiek ďalej",
"action.playTracksLater": "Hrať ${app.selectedMediaItems.length} pesničiek neskôr",
"action.removeTracks": "Odstrániť ${self.selectedItems.length} pesničiek z poradia",
"action.import": "Importovať",
"action.export": "Exportovať",
"action.showAlbum": "Zobraziť Celý Album",
"action.tray.minimize": "Minimaizovať",
"action.tray.quit": "Odísť",
"action.tray.show": "Ukázať",
"action.update": "Aktualizovať",
// Settings - General
"settings.header.general": "Všeobecné",
"settings.header.general.description": "Zmeniť všeobecné nastavenia pre Cider.",
"settings.option.general.language": "Jazyk",
// Language optgroups
"settings.option.general.language.main": "Jazyky",
"settings.option.general.language.fun": "Zábanve Jazyky",
"settings.option.general.language.unsorted": "Nepotriedené",
// Update Cider
"settings.option.general.updateCider": "Aktualizovať Cider",
// Settings - Audio
"settings.header.audio": "Zvuk",
"settings.header.audio.description": "Zmeniť nastavenia zvuku pre Cider.",
"settings.option.audio.quality": "Kvalita zvuku", // Dropdown
"settings.header.audio.quality.high": "Vysoká",
"settings.header.audio.quality.low": "Nizká",
"settings.header.audio.quality.auto": "Automatické",
"settings.option.audio.seamlessTransition": "Hladký Prevod Zvuku", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "Zapnút Pokročilé Nastavenia Zvuku", // Toggle
"settings.option.audio.enableAdvancedFunctionality.description": "Zapnutie AudioContext funkcionality dovolí rozšírené funkcie zvuku ako Zvuková Normalizávia , Equalizéry a Visualízery, ale na niektorých systémoch to može spôsobiť problémy so zvukom.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoakustické Vylepšenia ktoré urobia zvuk viac bohatý a živý | Urobil Maikiwi.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Sila", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Zmení silu CAP (Agresívná môže spôsobiť nežiadané výsledky)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Štandardná",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Agresívná",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalízacia Zvuku", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalizuje silu zvuku v pesničkách pre hľadší počúvací zážitok",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Priestorový Zvuk", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Priestorový zvuk urobí zvuk 3-dimenzionálny (poznámka: Toto nie je Dolby Atmos)",
// Settings - Visual
"settings.header.visual": "Visuálne",
"settings.header.visual.description": "Zmenit Visuálne nastavenia pre Cider.",
"settings.option.visual.windowBackgroundStyle": "Štýl pozadia okna", // Toggle
"settings.header.visual.windowBackgroundStyle.none": "Žiadne",
"settings.header.visual.windowBackgroundStyle.artwork": "Náhľadovka",
"settings.header.visual.windowBackgroundStyle.image": "Obrátok",
"settings.option.visual.animatedArtwork": "Animované Náhľadovky", // Dropdown
"settings.header.visual.animatedArtwork.always": "Vždy",
"settings.header.visual.animatedArtwork.limited": "Limitované pre stránky a špecialne vydania",
"settings.header.visual.animatedArtwork.disable": "Vypnuť Všade",
"settings.option.visual.animatedArtworkQuality": "Kvalita Animovanej Náhľadovky", // Dropdown
"settings.header.visual.animatedArtworkQuality.low": "Nízka",
"settings.header.visual.animatedArtworkQuality.medium": "Stredná",
"settings.header.visual.animatedArtworkQuality.high": "Vysoká",
"settings.header.visual.animatedArtworkQuality.veryHigh": "Veľmi Vysoká",
"settings.header.visual.animatedArtworkQuality.extreme": "Extrémna",
"settings.option.visual.animatedWindowBackground": "Pozadie Animováneho Okna", // Toggle
"settings.option.visual.hardwareAcceleration": "Hardvérova Akcelerácia", // Dropdown
"settings.option.visual.hardwareAcceleration.description": "Vyžaduje Reštart",
"settings.header.visual.hardwareAcceleration.default": "Predvoľba",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
"settings.header.visual.theme": "Theme",
// Settings - Visual - Theme name
"settings.option.visual.theme.default": "Cider",
"settings.option.visual.theme.dark": "Dark",
// Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "Zobraziť osobné informácie", // Toggle
// Settings - Lyrics
"settings.header.lyrics": "Text",
"settings.header.lyrics.description": "Zmenit nastavenia textu pre Cider.",
"settings.option.lyrics.enableMusixmatch": "Zapnúť Musixmatch Texty", // Toggle
"settings.option.lyrics.enableMusixmatchKaraoke": "Zapnúť Karaoke Režim (Iba pre Musixmatch)", // Toggle
"settings.option.lyrics.musixmatchPreferredLanguage": "Predvolený jazyk pre Musixmatch prekladanie", // Dropdown
"settings.option.lyrics.enableYoutubeLyrics": "Zapnúť Youtube Lyrics pre videá", // Toggle
// Settings - Connectivity
"settings.header.connectivity": "Konektivita",
"settings.header.connectivity.description": "Zmeniť nastavenia konektivity pre Cider.",
"settings.option.connectivity.discordRPC": "Zobraziť status v Discord", // Dropdown
"settings.option.connectivity.playbackNotifications": "Notifikácie", // Toggle
// Refer to term.disabled for the disabled option
"settings.header.connectivity.discordRPC.cider": "Zobraziť ako 'Cider'",
"settings.header.connectivity.discordRPC.appleMusic": "Zobraziť ako 'Apple Music'",
"settings.option.connectivity.discordRPC.clearOnPause": "Vypnút Discord status pri Pauze", // Toggle
"settings.option.connectivity.lastfmScrobble": "Last.fm zaznamenanie počúvanej hudby", // Option to Connect
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm Oneskorenie (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Zapnúť Last.fm Now Playing",
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Odstrániť tvorcov z počúvanej pesničky (Last.fm)",
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrovať loopované pesničky (Last.fm)",
// Refer to term.connect for the connect button
// Settings - Experimental
"settings.header.experimental": "Experimentálne",
"settings.header.experimental.description": "Zmeniť experimentálne nastavenia pre Cider.",
"settings.option.experimental.compactUI": "Compact UI", // Toggle
"settings.option.experimental.close_button_hide": "Zatvoriť by malo skriť aplikáciu",
"settings.option.experimental.compactUI": "Kompaktný UI", // Toggle
"settings.option.experimental.close_button_hide": "Zatvaranie aplikácie ju malo skriť",
// Refer to term.disabled & term.enabled
// Spatialization Menu
"spatial.notTurnedOn": "Priestorový Zvuk je vypnutý. Prosím najprv ho zapnite.",
"spatial.spatialProperties": "Špeciálne Nastavenia",
"spatial.width": "Šírka",
"spatial.height": "Výška",
"spatial.depth": "Hĺbka",
"spatial.gain": "Gain",
"spatial.roomMaterials": "Materiály Priestoru",
"spatial.roomDimensions": "Velkosť Priestoru",
"spatial.roomPositions": "Pozicia v Priestoru",
"spatial.setDimensions": "Nastaviť Rozmery",
"spatial.setPositions": "Nastavit Pozíciu",
"spatial.up": "Hore",
"spatial.front": "V predu",
"spatial.left": "V ľavo",
"spatial.right": "V pravo",
"spatial.back": "V zadu",
"spatial.down": "Dole",
"spatial.listener": "Listener",
"spatial.audioSource": "Zdroj zvuku",
// Settings - Unfinished
"settings.header.unfinished": "Nedokončené",
// Web Remote
"remote.web.title": "Cider Remote",
"remote.web.description": "Naskenujte QR kód aby ste si spárovali telefón s touto Cider session",
// About
"about.thanks": "Ďakujeme Cider Tímu, Komunite a Kontribútorom, bez vás by to nebolo možné."
}

View file

@ -1,4 +1,4 @@
{ // Base File {
// i18n Info // i18n Info
"i18n.languageName": "Svenska (SE)", // name of language in native language "i18n.languageName": "Svenska (SE)", // name of language in native language
@ -19,6 +19,7 @@
"notification.updatingLibrarySongs": "Uppdaterar låtar i biblioteket...", "notification.updatingLibrarySongs": "Uppdaterar låtar i biblioteket...",
"notification.updatingLibraryAlbums": "Uppdaterar album i biblioteket...", "notification.updatingLibraryAlbums": "Uppdaterar album i biblioteket...",
"notification.updatingLibraryArtists": "Uppdaterar artister i biblioteket...", "notification.updatingLibraryArtists": "Uppdaterar artister i biblioteket...",
// Terms // Terms
"term.appleInc": "Apple Inc.", "term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music", "term.appleMusic": "Apple Music",
@ -125,7 +126,6 @@
"term.menu": "Meny", "term.menu": "Meny",
"term.check": "Sök efter uppdateringar", "term.check": "Sök efter uppdateringar",
"term.aboutArtist": "Om {{artistName}}", // e.g. 'About Doja Cat' "term.aboutArtist": "Om {{artistName}}", // e.g. 'About Doja Cat'
"term.updateCider": "Uppdatera Cider",
// Home // Home
"home.title": "Hem", "home.title": "Hem",
@ -136,6 +136,7 @@
"home.madeForYou": "Skapat för dig", "home.madeForYou": "Skapat för dig",
"home.friendsListeningTo": "Vänner lyssnar på", "home.friendsListeningTo": "Vänner lyssnar på",
"home.followedArtists": "Följda artister", "home.followedArtists": "Följda artister",
// Errors // Errors
"error.appleMusicSubRequired": "Apple Music kräver en prenumeration.", "error.appleMusicSubRequired": "Apple Music kräver en prenumeration.",
"error.connectionError": "Ojdå. Det gick inte att ansluta till Apple Music.", "error.connectionError": "Ojdå. Det gick inte att ansluta till Apple Music.",
@ -208,6 +209,9 @@
"settings.option.general.language.fun": "Roliga språk", "settings.option.general.language.fun": "Roliga språk",
"settings.option.general.language.unsorted": "Osorterade", "settings.option.general.language.unsorted": "Osorterade",
// Update Cider
"settings.option.general.updateCider": "Uppdatera Cider", // Button
// Settings - Audio // Settings - Audio
"settings.header.audio": "Ljud", "settings.header.audio": "Ljud",
"settings.header.audio.description": "Ändra Ciders ljudinställningar.", "settings.header.audio.description": "Ändra Ciders ljudinställningar.",
@ -222,6 +226,7 @@
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normaliserar höga ljudnivåer för att förbättra ljudkvaliteten.", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normaliserar höga ljudnivåer för att förbättra ljudkvaliteten.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Spiralljud", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Spiralljud", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Gör ljudet mer 3D (Ej Dolby Atmos)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Gör ljudet mer 3D (Ej Dolby Atmos)",
// Settings - Visual // Settings - Visual
"settings.header.visual": "Visuellt", "settings.header.visual": "Visuellt",
"settings.header.visual.description": "Ändra Ciders visuella inställningar.", "settings.header.visual.description": "Ändra Ciders visuella inställningar.",
@ -244,6 +249,9 @@
"settings.option.visual.hardwareAcceleration.description": "kräver omstart", "settings.option.visual.hardwareAcceleration.description": "kräver omstart",
"settings.header.visual.hardwareAcceleration.default": "Standard", "settings.header.visual.hardwareAcceleration.default": "Standard",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
// Settings - Visual - Theme name
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "Visa personlig information", // Toggle "settings.option.visual.showPersonalInfo": "Visa personlig information", // Toggle
@ -276,8 +284,8 @@
"settings.header.experimental.description": "Ändra Ciders experimentella inställningar.", "settings.header.experimental.description": "Ändra Ciders experimentella inställningar.",
"settings.option.experimental.compactUI": "Kompakt gränssnitt", // Toggle "settings.option.experimental.compactUI": "Kompakt gränssnitt", // Toggle
"settings.option.experimental.close_button_hide": "Stängknappen gömmer Cider istället", "settings.option.experimental.close_button_hide": "Stängknappen gömmer Cider istället",
// Refer to term.disabled & term.enabled
// Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.notTurnedOn": "Spiralljud är av. Akrtivera det först.", "spatial.notTurnedOn": "Spiralljud är av. Akrtivera det först.",
"spatial.spatialProperties": "Spiralljudsintällningar", "spatial.spatialProperties": "Spiralljudsintällningar",

View file

@ -1,4 +1,5 @@
{ {
// i18n Info // i18n Info
"i18n.languageName": "Türkçe", // name of language in native language "i18n.languageName": "Türkçe", // name of language in native language
"i18n.languageNameEnglish": "Turkish", // name of language in English "i18n.languageNameEnglish": "Turkish", // name of language in English
@ -21,8 +22,8 @@
// Terms // Terms
"term.appleInc": "Apple", "term.appleInc": "Apple",
"term.appleMusic": "Apple Müzik", "term.appleMusic": "Apple Music",
"term.applePodcasts": "Apple Podcastler", "term.applePodcasts": "Apple Podcasts",
"term.itunes": "iTunes", "term.itunes": "iTunes",
"term.github": "GitHub", "term.github": "GitHub",
"term.discord": "Discord", "term.discord": "Discord",
@ -124,6 +125,25 @@
"term.time.second": "saniye", "term.time.second": "saniye",
"term.videos": "Video Klipler", "term.videos": "Video Klipler",
"term.menu": "Menü", "term.menu": "Menü",
"term.check": "Şimdi Kontrol Et",
"term.aboutArtist": "About {{artistName}}", // e.g. 'About Doja Cat'
"term.updateCider": "Güncellemeleri Denetle",
"term.share.success": "Panoya Kopyalandı",
"term.topResult": "En İyi Sonuç", // Search Results
"term.sharedPlaylists": "Paylaşılan Listeler", // Search Results
"term.people": "Kişiler", // Search Results
"term.newpreset.name": "Yeni Önayar İsmi", // Equalizer Preset
"term.addedpreset": "Önayar Kaydedildi",
"term.deletepreset.warn": "Bu önayarı silmek istediğinize emin misiniz?",
"term.deletedpreset": "Önayar Silindi",
"term.musicVideos": "Video Klipler", // Search page friendlyTypes
"term.stations": "İstasyonlar",
"term.curators": "Editörler",
"term.appleCurators": "Apple Editörleri",
"term.radioShows": "Radio Şovları",
"term.recordLabels": "Kayıt Stüdyoları",
"term.videoExtras": "Ekstra Videolar",
"term.top": "En İyi",
// Home // Home
"home.title": "Ana Sayfa", "home.title": "Ana Sayfa",
@ -193,8 +213,12 @@
"action.export": "Export", "action.export": "Export",
"action.showAlbum": "Tüm Albümü Göster", "action.showAlbum": "Tüm Albümü Göster",
"action.tray.minimize": "Görev Çubuğuna Küçült", "action.tray.minimize": "Görev Çubuğuna Küçült",
"action.tray.quit": "'den Çık", "action.tray.quit": ık",
"action.tray.show": "'i Göster", "action.tray.show": "Göster",
"action.update": "Güncelle",
"action.copy": "Kopyala",
"action.newpreset": "Yeni Önayar...", // Equalizer Preset
"action.deletepreset": "Önayarı Sil",
// Settings - General // Settings - General
"settings.header.general": "Genel Ayarlar", "settings.header.general": "Genel Ayarlar",
@ -206,16 +230,35 @@
"settings.option.general.language.fun": "Mizahi Diller", "settings.option.general.language.fun": "Mizahi Diller",
"settings.option.general.language.unsorted": "Henüz Tamamlanmamış Diller", "settings.option.general.language.unsorted": "Henüz Tamamlanmamış Diller",
// Update Cider
"settings.option.general.updateCider": "Güncellemeleri Kontrol Et", // Button. Refer to term.check for the check button
"settings.option.general.updateCider.branch": "Seçilen GitHub Versiyonu", // Dropdown
"settings.option.general.updateCider.branch.description": "Cider'in hangi versiyonuna güncelleneceğini seçin",
"settings.option.general.updateCider.branch.main": "Stabil",
"settings.option.general.updateCider.branch.develop": "Deneysel",
// Settings - Audio // Settings - Audio
"settings.header.audio": "Çalma / Oynatma", "settings.header.audio": "Çalma / Oynatma",
"settings.header.audio.description": "Cider'in sizin için en iyi dinleme deneyimini sağlayabilmesi için ses ayarlarınızı yapın.", "settings.header.audio.description": "Cider'in sizin için en iyi dinleme deneyimini sağlayabilmesi için ses ayarlarınızı yapın.",
"settings.option.audio.quality": "Ses Kalitesi", // Dropdown "settings.option.audio.quality": "Ses Kalitesi", // Dropdown
"settings.header.audio.quality.hireslossless": "Yüksek Çözünürlüklü Kayıpsız",
"settings.header.audio.quality.hireslossless.description": "24-bit/192 kHz'e kadar",
"settings.header.audio.quality.lossless": "Kayıpsız",
"settings.header.audio.quality.lossless.description": "24-bit/48 kHz'e kadar",
"settings.header.audio.quality.high": "Yüksek Kalite", "settings.header.audio.quality.high": "Yüksek Kalite",
"settings.header.audio.quality.low": "Yüksek Verimlilik", "settings.header.audio.quality.high.description": "256 kbps",
"settings.header.audio.quality.standard": "Standart",
"settings.header.audio.quality.standard.description": "64 kbps",
"settings.header.audio.quality.auto": "Otomatik", "settings.header.audio.quality.auto": "Otomatik",
"settings.option.audio.seamlessTransition": "Kesintisiz Ses Geçişi", // Toggle "settings.option.audio.seamlessTransition": "Kesintisiz Ses Geçişi", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "Gelişmiş Ses Deneyimi", // Toggle "settings.option.audio.enableAdvancedFunctionality": "Gelişmiş Ses Deneyimi", // Toggle
"settings.option.audio.enableAdvancedFunctionality.description": "Gelişmiş ses deneyiminin etkinleştirilmesi, Ses Normalleştirme, Ekolayzer ve Görselleştirici gibi genişletilmiş ses özelliklerine izin verir, ancak bu durum bazı sistemlerde seste bozulmalara neden olabilir.", "settings.option.audio.enableAdvancedFunctionality.description": "Gelişmiş ses deneyiminin etkinleştirilmesi, Ses Normalleştirme, Ekolayzer ve Görselleştirici gibi genişletilmiş ses özelliklerine izin verir, ancak bu durum bazı sistemlerde seste bozulmalara neden olabilir.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenalin Prosesörü™", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Müziğin hem daha zengin hem de daha canlı duyulmasını sağlayan Psikoakustik Geliştirme Sistemi | Maikiwi tarafından tasarlanmıştır.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP Kuvveti", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Sese yapılan işlemin gücünü değiştirir. (Agresif istenmeyen sonuçlar doğurabilir)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standart",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Agresif",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Ses Normalleştirme", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Ses Normalleştirme", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Ses normalleştirme alçak ve yüksek sesli şarkıları dengeler ve daha düzgün bir dinleme deneyimi sağlar.", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Ses normalleştirme alçak ve yüksek sesli şarkıları dengeler ve daha düzgün bir dinleme deneyimi sağlar.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Uzamsal Ses", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Uzamsal Ses", // Toggle
@ -243,6 +286,12 @@
"settings.option.visual.hardwareAcceleration.description": "Etki etmesi için uygulamayı yeniden başlatmak gerekir.", "settings.option.visual.hardwareAcceleration.description": "Etki etmesi için uygulamayı yeniden başlatmak gerekir.",
"settings.header.visual.hardwareAcceleration.default": "Varsayılan", "settings.header.visual.hardwareAcceleration.default": "Varsayılan",
"settings.header.visual.hardwareAcceleration.webGPU": "Gelişmiş", "settings.header.visual.hardwareAcceleration.webGPU": "Gelişmiş",
"settings.header.visual.theme": "Tema",
// Settings - Visual - Theme name
"settings.option.visual.theme.default": "Cider",
"settings.option.visual.theme.dark": "Karanlık",
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "Kullanıcı Adımı Göster", // Toggle "settings.option.visual.showPersonalInfo": "Kullanıcı Adımı Göster", // Toggle
@ -274,18 +323,18 @@
"settings.header.experimental": "Deneysel", "settings.header.experimental": "Deneysel",
"settings.header.experimental.description": "Cider'deki deneysel özelliklere erişim sağlayın. (Not: Bazı özellikler düzgün çalışmayabilir.)", "settings.header.experimental.description": "Cider'deki deneysel özelliklere erişim sağlayın. (Not: Bazı özellikler düzgün çalışmayabilir.)",
"settings.option.experimental.compactUI": "Kompakt Arayüz", // Toggle "settings.option.experimental.compactUI": "Kompakt Arayüz", // Toggle
"settings.option.experimental.closeButtonBehaviour": "Kapat düğmesi davranışı", "settings.option.experimental.close_button_hide": "Kapatma Düğmesi Cider'i Küçültür",
"settings.option.experimental.closeButtonBehaviour.quit": "Cider'den çık", "settings.option.experimental.copy_log": "Günlüğü Panoya Kopyala",
"settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "Simge durumuna küçült", "settings.option.experimental.inline_playlists": "Listeleri ve Albümleri Açılır Pencere İle göster",
"settings.option.experimental.closeButtonBehaviour.minimizeTray": "Görev çubuğuna küçült",
// Refer to term.disabled & term.enabled
// Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.notTurnedOn": "Uzamsal ses devre dışı. Kullanabilmek için lütfen önce etkinleştirin.", "spatial.notTurnedOn": "Uzamsal ses devre dışı. Kullanabilmek için lütfen önce etkinleştirin.",
"spatial.spatialProperties" : "Uzamsal Özellikler", "spatial.spatialProperties" : "Uzamsal Özellikler",
"spatial.width" : "Genişlik", "spatial.width" : "Genişlik",
"spatial.height" : "Yükseklik", "spatial.height" : "Yükseklik",
"spatial.depth" : "Derinlik", "spatial.depth" : "Derinlik",
"spatial.gain" : "Kazanç",
"spatial.roomMaterials" : "Oda Materyalleri", "spatial.roomMaterials" : "Oda Materyalleri",
"spatial.roomDimensions" : "Oda Ölçüleri", "spatial.roomDimensions" : "Oda Ölçüleri",
"spatial.roomPositions" : "Oda Pozisyonu", "spatial.roomPositions" : "Oda Pozisyonu",
@ -299,7 +348,6 @@
"spatial.down" : "Aşağı", "spatial.down" : "Aşağı",
"spatial.listener" : "Dinleyici", "spatial.listener" : "Dinleyici",
"spatial.audioSource" : "Ses Kaynağı", "spatial.audioSource" : "Ses Kaynağı",
"spatial.gain" : "Kazanç",
// Settings - Unfinished // Settings - Unfinished
"settings.header.unfinished": "Geliştirme Aşamasında", "settings.header.unfinished": "Geliştirme Aşamasında",
@ -310,5 +358,4 @@
//About //About
"about.thanks": "Cider Collective Ekibine ve tüm katkıda bulunanlara çok teşekkür ederiz." "about.thanks": "Cider Collective Ekibine ve tüm katkıda bulunanlara çok teşekkür ederiz."
} }

View file

@ -1,8 +1,4 @@
{ {
// App info
"app.name": "Cider",
"date.format": "${y}年${m}月${d}日",
// i18n Info // i18n Info
"i18n.languageName": "简体中文(中国)", // name of language in native language "i18n.languageName": "简体中文(中国)", // name of language in native language
@ -10,6 +6,11 @@
"i18n.category": "main", // main = real language, fun = fun community languages "i18n.category": "main", // main = real language, fun = fun community languages
"i18n.authors": "@maikirakiwi", // Authors, if you contribute to this file feel free to add your name seperated with a space "i18n.authors": "@maikirakiwi", // Authors, if you contribute to this file feel free to add your name seperated with a space
// App info
"app.name": "Cider",
"date.format": "${y}年${m}月${d}日",
// Dialogs // Dialogs
"dialog.cancel": "取消", "dialog.cancel": "取消",
"dialog.ok": "确定", "dialog.ok": "确定",
@ -118,7 +119,6 @@
"term.menu": "菜单", "term.menu": "菜单",
"term.check": "检查", "term.check": "检查",
"term.aboutArtist": "关于{{artistName}}", // e.g. 'About Doja Cat' "term.aboutArtist": "关于{{artistName}}", // e.g. 'About Doja Cat'
"term.updateCider": "更新 Cider",
// Home // Home
"home.title": "主页", "home.title": "主页",
@ -146,7 +146,6 @@
"podcast.playEpisode": "播放单集", "podcast.playEpisode": "播放单集",
"podcast.website": "Podcast 网站", "podcast.website": "Podcast 网站",
// Actions // Actions
"action.addToLibrary": "加入资料库", "action.addToLibrary": "加入资料库",
"action.addToLibrary.success": "成功加入资料库", "action.addToLibrary.success": "成功加入资料库",
@ -192,6 +191,14 @@
"action.tray.show": "显示", "action.tray.show": "显示",
"action.update": "更新", "action.update": "更新",
// Settings - General
"settings.header.general": "通用",
"settings.header.general.description": "调整 Cider 的通用设置",
// Language optgroups
// Update Cider
"settings.option.general.updateCider": "更新 Cider", // Button
// Settings - Audio // Settings - Audio
"settings.header.audio": "音频", "settings.header.audio": "音频",
@ -203,17 +210,18 @@
"settings.header.audio.quality.lossless.description": "(最高 24 位/48 kHz)", "settings.header.audio.quality.lossless.description": "(最高 24 位/48 kHz)",
"settings.header.audio.quality.enhanced": "数字增强", "settings.header.audio.quality.enhanced": "数字增强",
"settings.header.audio.quality.high": "高音质", "settings.header.audio.quality.high": "高音质",
"settings.header.audio.quality.low": "高效率", "settings.header.audio.quality.standard": "高效率",
"settings.header.audio.quality.auto": "自动", "settings.header.audio.quality.auto": "自动",
"settings.option.audio.seamlessTransition": "无缝播放", // Toggle "settings.option.audio.seamlessTransition": "无缝播放", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "进阶功能", // Toggle "settings.option.audio.enableAdvancedFunctionality": "进阶功能", // Toggle
"settings.option.audio.enableAdvancedFunctionality.description": "启用 AudioContext 将解锁例如音量标准化和音频空间化的功能,但可能会在小部分设备上出现音频上的卡顿。", "settings.option.audio.enableAdvancedFunctionality.description": "启用 AudioContext 将解锁例如音量标准化和音频空间化的功能,但可能会在小部分设备上出现音频上的卡顿。",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider 数字增强引擎", // Toggle "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider 数字增强引擎™️", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "将欺骗您的大脑来感知到近似无损音频的效果。", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "将欺骗您的大脑来感知到近似无损音频的效果。",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "音量标准化", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioNormalization": "音量标准化", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "使所感知到的音频响度统一", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "使所感知到的音频响度统一",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "音频空间化", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "音频空间化", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "使所感知到的音频更有立体感 (注: 这不是杜比全景声)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "使所感知到的音频更有立体感 (注: 这不是杜比全景声)",
// Settings - Visual // Settings - Visual
"settings.header.visual": "外观", "settings.header.visual": "外观",
"settings.header.visual.description": "调整 Cider 的外观", "settings.header.visual.description": "调整 Cider 的外观",
@ -235,11 +243,11 @@
"settings.option.visual.hardwareAcceleration.description": "需要重启 Cider 才会生效", "settings.option.visual.hardwareAcceleration.description": "需要重启 Cider 才会生效",
"settings.header.visual.hardwareAcceleration.default": "默认", "settings.header.visual.hardwareAcceleration.default": "默认",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
// Settings - Visual - Theme name
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "显示个人资料", // Toggle "settings.option.visual.showPersonalInfo": "显示个人资料", // Toggle
// Settings - General (Reserved)
"settings.header.general": "通用",
"settings.header.general.description": "调整 Cider 的通用设置",
// Settings - Lyrics // Settings - Lyrics
"settings.header.lyrics": "歌词", "settings.header.lyrics": "歌词",
@ -268,8 +276,8 @@
"settings.header.experimental.description": "调整Cider的实验性功能", "settings.header.experimental.description": "调整Cider的实验性功能",
"settings.option.experimental.compactUI": "紧凑型 UI", // Toggle "settings.option.experimental.compactUI": "紧凑型 UI", // Toggle
"settings.option.experimental.close_button_hide": "点击关闭按钮时仅隐藏窗口", "settings.option.experimental.close_button_hide": "点击关闭按钮时仅隐藏窗口",
// Refer to term.disabled & term.enabled
// Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.spatialProperties": "空间属性", "spatial.spatialProperties": "空间属性",
"spatial.width": "宽度", "spatial.width": "宽度",

View file

@ -19,6 +19,7 @@
"notification.updatingLibrarySongs": "正在更新資料庫的歌曲...", "notification.updatingLibrarySongs": "正在更新資料庫的歌曲...",
"notification.updatingLibraryAlbums": "正在更新資料庫的專輯...", "notification.updatingLibraryAlbums": "正在更新資料庫的專輯...",
"notification.updatingLibraryArtists": "正在更新資料庫的藝人...", "notification.updatingLibraryArtists": "正在更新資料庫的藝人...",
// Terms // Terms
"term.appleInc": "Apple Inc.", "term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music", // Follows brand term "term.appleMusic": "Apple Music", // Follows brand term
@ -127,7 +128,6 @@
"term.menu": "選項", "term.menu": "選項",
"term.check": "檢查", "term.check": "檢查",
"term.aboutArtist": "關於 {{artistName}}", // e.g. 'About Doja Cat' "term.aboutArtist": "關於 {{artistName}}", // e.g. 'About Doja Cat'
"term.updateCider": "更新 Cider",
"term.topResult": "熱門搜尋結果", // Search Results "term.topResult": "熱門搜尋結果", // Search Results
"term.sharedPlaylists": "播放列表", // Search Results "term.sharedPlaylists": "播放列表", // Search Results
"term.people": "個人檔案", // Search Results "term.people": "個人檔案", // Search Results
@ -135,6 +135,8 @@
"term.addedpreset": "已新增", "term.addedpreset": "已新增",
"term.deletepreset.warn": "你確認要刪除這個範本?", "term.deletepreset.warn": "你確認要刪除這個範本?",
"term.deletedpreset": "已刪除", "term.deletedpreset": "已刪除",
"term.requestError": "處理請求時發生錯誤",
"term.song.link.generate": "正在生成 song.link 分享連結...",
"term.musicVideos": "MV", // Search page friendlyTypes "term.musicVideos": "MV", // Search page friendlyTypes
"term.stations": "電台", "term.stations": "電台",
//"term.curators": "Curators", //"term.curators": "Curators",
@ -153,6 +155,7 @@
"home.madeForYou": "為您推薦", "home.madeForYou": "為您推薦",
"home.friendsListeningTo": "朋友正在聆聽", "home.friendsListeningTo": "朋友正在聆聽",
"home.followedArtists": "追蹤的藝人", "home.followedArtists": "追蹤的藝人",
// Errors // Errors
"error.appleMusicSubRequired": "需要訂閱Apple Music以使用Cider", "error.appleMusicSubRequired": "需要訂閱Apple Music以使用Cider",
"error.connectionError": "無法連接到 Apple Music。", "error.connectionError": "無法連接到 Apple Music。",
@ -228,6 +231,13 @@
"settings.option.general.language.fun": "惡搞語言", "settings.option.general.language.fun": "惡搞語言",
"settings.option.general.language.unsorted": "未分類", "settings.option.general.language.unsorted": "未分類",
// Update Cider
"settings.option.general.updateCider": "更新 Cider", // Button
"settings.option.general.updateCider.branch": "Cider 更新通道", // Dropdown
"settings.option.general.updateCider.branch.description": "選擇你想要接收來自哪個通道的更新",
"settings.option.general.updateCider.branch.main": "穩定",
"settings.option.general.updateCider.branch.develop": "測試",
// Settings - Audio // Settings - Audio
"settings.header.audio": "音訊", "settings.header.audio": "音訊",
"settings.header.audio.description": "調整Cider的音訊設定", "settings.header.audio.description": "調整Cider的音訊設定",
@ -237,17 +247,25 @@
"settings.header.audio.quality.lossless": "無損壓縮", "settings.header.audio.quality.lossless": "無損壓縮",
"settings.header.audio.quality.lossless.description": "(高達 24-bit/48 kHz", "settings.header.audio.quality.lossless.description": "(高達 24-bit/48 kHz",
"settings.header.audio.quality.high": "高素質", "settings.header.audio.quality.high": "高素質",
"settings.header.audio.quality.low": "高效率", //"settings.header.audio.quality.high.description": "256 kbps",
"settings.header.audio.quality.auto": "自動", "settings.header.audio.quality.standard": "高效率",
//"settings.header.audio.quality.standard.description": "64 kbps",
"settings.option.audio.seamlessTransition": "無縫播放", // Toggle "settings.option.audio.seamlessTransition": "無縫播放", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "進階功能", // Toggle "settings.option.audio.enableAdvancedFunctionality": "進階功能", // Toggle
"settings.option.audio.enableAdvancedFunctionality.description": "啟用 AudioContext 將解鎖類似音量平衡和均衡器的進階功能。但是會在一些電腦造成音樂卡頓。", "settings.option.audio.enableAdvancedFunctionality.description": "啟用 AudioContext 將解鎖類似音量平衡和均衡器的進階功能。但是會在一些電腦造成音樂卡頓。",
"settings.option.audio.enableAdvancedFunctionality.decryptLLPW": "無損壓縮解碼", // Toggle "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider 數碼音訊增強處理™️", // Toggle
"settings.option.audio.enableAdvancedFunctionality.decryptLLPW.description": "提供 Cider 解碼無損壓縮檔案的能力,但相應地會增加電腦的工作量。", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "能夠欺騙你的大腦讓你感受到近似無損壓縮的音質 | 由 Maikiwi 設計",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "音訊增強處理不兼容於空間音訊,請先停用空間音訊。",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "數碼音訊增強處理設定", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "將更改音訊處理的激進程度(激進型選項有可能會引起雜訊)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "標準型",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "激進型",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "音量平衡", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioNormalization": "音量平衡", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "將平衡輕柔和響亮的歌曲,建立更統一的聆聽體驗。", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "將平衡輕柔和響亮的歌曲,建立更統一的聆聽體驗。",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "空間音訊", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "空間音訊", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "將音訊進行空間化處理來製造一個更立體的聆聽體驗(注:此功能不是官方的杜比全景聲)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "將音訊進行空間化處理來製造一個更立體的聆聽體驗(注:此功能不是官方的杜比全景聲)",
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "空間音訊不兼容於音訊增強處理,請先停用音訊增強處理。",
// Settings - Visual // Settings - Visual
"settings.header.visual": "外觀", "settings.header.visual": "外觀",
"settings.header.visual.description": "調整Cider的外觀", "settings.header.visual.description": "調整Cider的外觀",

View file

@ -1,15 +1,15 @@
{ {
// App info
"app.name": "Cider",
"date.format": "${y}年${m}月${d}日",
// i18n Info // i18n Info
"i18n.languageName": "繁體中文(台灣)", // name of language in native language "i18n.languageName": "繁體中文(台灣)", // name of language in native language
"i18n.languageNameEnglish": "Trad. Chinese (Taiwan)", // name of language in English "i18n.languageNameEnglish": "Trad. Chinese (Taiwan)", // name of language in English
"i18n.category": "main", // main = real language, fun = fun community languages "i18n.category": "main", // main = real language, fun = fun community languages
"i18n.authors": "@maikirakiwi", // Authors, if you contribute to this file feel free to add your name seperated with a space "i18n.authors": "@maikirakiwi @jay900604 @kyw504100", // Authors, if you contribute to this file feel free to add your name seperated with a space
// App info
"app.name": "Cider",
"date.format": "${y}年${m}月${d}日",
// Dialogs // Dialogs
"dialog.cancel": "取消", "dialog.cancel": "取消",
@ -19,6 +19,7 @@
"notification.updatingLibrarySongs": "正在更新資料庫的歌曲...", "notification.updatingLibrarySongs": "正在更新資料庫的歌曲...",
"notification.updatingLibraryAlbums": "正在更新資料庫的專輯...", "notification.updatingLibraryAlbums": "正在更新資料庫的專輯...",
"notification.updatingLibraryArtists": "正在更新資料庫的藝人...", "notification.updatingLibraryArtists": "正在更新資料庫的藝人...",
// Terms // Terms
"term.appleMusic": "Apple Music", // Follows brand term "term.appleMusic": "Apple Music", // Follows brand term
"term.applePodcasts": "Apple Podcasts", // Follows brand term "term.applePodcasts": "Apple Podcasts", // Follows brand term
@ -54,6 +55,7 @@
"term.mute": "靜音", "term.mute": "靜音",
"term.unmute": "取消靜音", "term.unmute": "取消靜音",
"term.share": "分享", "term.share": "分享",
"term.share.success": "已複製至剪貼簿",
"term.settings": "設定", "term.settings": "設定",
"term.seeAll": "顯示全部", "term.seeAll": "顯示全部",
"term.sortBy": "排序", "term.sortBy": "排序",
@ -71,7 +73,7 @@
"term.viewAs.list": "列表", "term.viewAs.list": "列表",
"term.size": "大小", "term.size": "大小",
"term.size.normal": "正常", "term.size.normal": "正常",
"term.size.compact": "緊", "term.size.compact": "緊",
"term.enable": "啟用", "term.enable": "啟用",
"term.disable": "停用", "term.disable": "停用",
"term.enabled": "已啟用", "term.enabled": "已啟用",
@ -99,26 +101,26 @@
"term.fullscreenView": "全螢幕顯示", "term.fullscreenView": "全螢幕顯示",
"term.defaultView": "預設顯示", "term.defaultView": "預設顯示",
"term.audioSettings": "音訊設定", "term.audioSettings": "音訊設定",
"term.spacializedAudioSetting": "音訊空間化設定", "term.spacializedAudioSetting": "空間音訊設定",
"term.clearAll": "清空", "term.clearAll": "清空",
"term.recentStations": "最近收聽的廣播", "term.recentStations": "最近收聽的廣播",
"term.language": "語言", "term.language": "語言",
"term.noLyrics": "正在載入。。/ 無歌詞結果 / 純音樂", "term.noLyrics": "正在載入。。/ 無歌詞結果 / 純音樂",
"term.copyright": "版權聲明", "term.copyright": "版權聲明",
"term.rightsReserved": "保留所有權利。", "term.rightsReserved": "保留所有權利。",
"term.sponsor": "贊助", "term.sponsor": "贊助我們",
"term.socials": "社群平台",
"term.ciderTeam": "Cider 團隊", "term.ciderTeam": "Cider 團隊",
"term.developer": "開發者", "term.developer": "開發者",
"term.socialTeam": "公關團隊", "term.socialTeam": "公關團隊",
"term.contributors": "貢獻者", "term.contributors": "貢獻者",
"term.equalizer": "等化器", "term.equalizer": "等化器",
"term.reset": "重", "term.reset": "重",
"term.tracks": "首歌曲", // Assume x amount of tracks. e.g. 50 tracks "term.tracks": "首歌曲", // Assume x amount of tracks. e.g. 50 tracks
"term.videos": "影片", "term.videos": "影片",
"term.menu": "選單", "term.menu": "選單",
"term.check": "檢查", "term.check": "檢查",
"term.aboutArtist": "關於{{artistName}}", // e.g. 'About Doja Cat' "term.aboutArtist": "關於{{artistName}}", // e.g. 'About Doja Cat'
"term.updateCider": "更新 Cider",
// Home // Home
"home.title": "首頁", "home.title": "首頁",
@ -129,6 +131,7 @@
"home.madeForYou": "為您推薦", "home.madeForYou": "為您推薦",
"home.friendsListeningTo": "朋友正在聆聽", "home.friendsListeningTo": "朋友正在聆聽",
"home.followedArtists": "追蹤的藝人", "home.followedArtists": "追蹤的藝人",
// Errors // Errors
"error.appleMusicSubRequired": "需要訂閱 Apple Music 以使用 Cider", "error.appleMusicSubRequired": "需要訂閱 Apple Music 以使用 Cider",
"error.connectionError": "無法連接到 Apple Music。", "error.connectionError": "無法連接到 Apple Music。",
@ -182,49 +185,66 @@
"action.playTracksNext": "插播 ${app.selectedMediaItems.length} 首歌曲", "action.playTracksNext": "插播 ${app.selectedMediaItems.length} 首歌曲",
"action.playTracksLater": "最後播放 ${app.selectedMediaItems.length} 首歌曲", "action.playTracksLater": "最後播放 ${app.selectedMediaItems.length} 首歌曲",
"action.removeTracks": "從待播清單刪除 ${self.selectedItems.length} 首歌曲", "action.removeTracks": "從待播清單刪除 ${self.selectedItems.length} 首歌曲",
"action.import": "入", "action.import": "入",
"action.export": "出", "action.export": "出",
"action.showAlbum": "顯示專輯", "action.showAlbum": "顯示專輯",
"action.tray.minimize": "最小化", "action.tray.minimize": "最小化",
"action.tray.quit": "關閉", "action.tray.quit": "關閉",
"action.tray.show": "顯示", "action.tray.show": "顯示",
"action.update": "更新", "action.update": "更新",
"action.copy": "複製", "action.copy": "複製",
"action.newpreset": "新預設", // Equalizer Preset "action.newpreset": "新預設", // Equalizer Preset
"action.deletepreset": "刪除預設", // Equalizer Preset "action.deletepreset": "刪除預設", // Equalizer Preset
// Settings - General
"settings.header.general": "一般",
"settings.header.general.description": "調整 Cider 的一般設定",
// Language optgroups
"settings.option.general.language.main": "語言",
"settings.option.general.language.fun": "特殊語言",
"settings.option.general.language.unsorted": "未分類",
// Update Cider
"settings.option.general.updateCider": "更新 Cider", // Button
"settings.option.general.updateCider.branch": "Cider 更新通道", // Dropdown
"settings.option.general.updateCider.branch.description": "選擇您要接收 Cider 軟體更新的通道",
"settings.option.general.updateCider.branch.main": "穩定版(建議)",
"settings.option.general.updateCider.branch.develop": "開發者測試版(不穩定)",
// Settings - Audio // Settings - Audio
"settings.header.audio": "音訊", "settings.header.audio": "音訊",
"settings.header.audio.description": "調整 Cider 的音訊設定", "settings.header.audio.description": "調整 Cider 的音訊設定",
"settings.option.audio.quality": "音訊音質", // Dropdown "settings.option.audio.quality": "音訊質", // Dropdown
"settings.header.audio.quality.hireslossless": "高品質無損壓縮", "settings.header.audio.quality.hireslossless": "高品質無損壓縮",
"settings.header.audio.quality.hireslossless.description": "(高達 24-bit/192 kHz", "settings.header.audio.quality.hireslossless.description": "(高達 24-bit/192 kHz",
"settings.header.audio.quality.lossless": "無損壓縮", "settings.header.audio.quality.lossless": "無損壓縮",
"settings.header.audio.quality.lossless.description": "(高達 24-bit/48 kHz", "settings.header.audio.quality.lossless.description": "(高達 24-bit/48 kHz",
"settings.header.audio.quality.enhanced": "數位增强", "settings.header.audio.quality.enhanced": "數位增",
"settings.header.audio.quality.high": "高品質", "settings.header.audio.quality.high": "高品質",
"settings.header.audio.quality.low": "高效率", "settings.header.audio.quality.standard": "高效率",
"settings.header.audio.quality.auto": "自動", "settings.header.audio.quality.auto": "自動",
"settings.option.audio.seamlessTransition": "無間斷播放", // Toggle "settings.option.audio.seamlessTransition": "無間斷播放", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "進階機能", // Toggle "settings.option.audio.enableAdvancedFunctionality": "進階音訊功能", // Toggle
"settings.option.audio.enableAdvancedFunctionality.description": "啟用 AudioContext 將解鎖類似音訊標準化和等化器的進階機能。但是會在部分電腦造成音樂卡頓。", "settings.option.audio.enableAdvancedFunctionality.description": "啟用 AudioContext 將開啟類似音訊平衡和等化器的進階設定。但這並不一定適合每部電腦,可能會發生音樂卡頓。",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider 數位增强音訊處理", // Toggle "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider 數位增強音訊處理™️", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "將欺騙您的大腦使其感受近似保真壓縮的音質。| 由 Maikiwi 設計", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "將欺騙您的大腦讓您感受到近似保真壓縮的音質。| 由 Maikiwi 設計",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "數位增强音訊處理設置", // Toggle "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "數位增強音訊處理設定", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "將更改音訊處理的激進程度(增强選項有可能會引起雜訊)", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "將更改音訊處理的激進/振奮程度(增強選項有可能會引起雜訊)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "標準", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "標準",
"settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "增", "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "增",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "音訊標準化", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioNormalization": "音訊平衡", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "將平衡輕柔和響亮的歌曲,建立更統一的聆聽體驗。", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "將平衡輕柔和響亮的歌曲,建立更統一舒適的聆聽體驗。",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "音訊空間化", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "空間音訊", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "將音訊進行空間化處理來製造一個更立體的聆聽體驗(註:此功能不是官方的杜比全景聲)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "將音訊進行空間化處理來製造一個更立體的聆聽體驗(註:此功能不是官方的杜比全景聲)",
// Settings - Visual // Settings - Visual
"settings.header.visual": "外觀", "settings.header.visual": "外觀",
"settings.header.visual.description": "調整 Cider 的外觀", "settings.header.visual.description": "調整 Cider 的外觀",
"settings.option.visual.windowBackgroundStyle": "視窗背景樣式", // Toggle "settings.option.visual.windowBackgroundStyle": "視窗背景樣式", // Toggle
"settings.header.visual.windowBackgroundStyle.none": "空白", "settings.header.visual.windowBackgroundStyle.none": "空白",
"settings.header.visual.windowBackgroundStyle.artwork": "專輯封面", "settings.header.visual.windowBackgroundStyle.artwork": "專輯封面",
"settings.header.visual.windowBackgroundStyle.image": "圖片",
"settings.option.visual.animatedArtwork": "動態專輯封面", // Dropdown "settings.option.visual.animatedArtwork": "動態專輯封面", // Dropdown
"settings.header.visual.animatedArtwork.always": "總是顯示", "settings.header.visual.animatedArtwork.always": "總是顯示",
"settings.header.visual.animatedArtwork.limited": "只在藝人頁面和專輯封面顯示", "settings.header.visual.animatedArtwork.limited": "只在藝人頁面和專輯封面顯示",
@ -237,14 +257,17 @@
"settings.header.visual.animatedArtworkQuality.extreme": "極高", "settings.header.visual.animatedArtworkQuality.extreme": "極高",
"settings.option.visual.animatedWindowBackground": "動態視窗背景", // Toggle "settings.option.visual.animatedWindowBackground": "動態視窗背景", // Toggle
"settings.option.visual.hardwareAcceleration": "硬體加速", // Dropdown "settings.option.visual.hardwareAcceleration": "硬體加速", // Dropdown
"settings.option.visual.hardwareAcceleration.description": "需要重新啟動 Cider 才會生效", "settings.option.visual.hardwareAcceleration.description": "需要重新啟動 Cider 才會套用",
"settings.header.visual.hardwareAcceleration.default": "預設", "settings.header.visual.hardwareAcceleration.default": "預設",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
"settings.header.visual.theme": "主題",
// Settings - Visual - Theme name
"settings.option.visual.theme.default": "Cider",
"settings.option.visual.theme.dark": "暗黑模式",
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "顯示個人檔案", // Toggle "settings.option.visual.showPersonalInfo": "顯示個人檔案", // Toggle
// Settings - General (Reserved)
"settings.header.general": "一般",
"settings.header.general.description": "調整 Cider 的一般設定",
// Settings - Lyrics // Settings - Lyrics
"settings.header.lyrics": "歌詞", "settings.header.lyrics": "歌詞",
@ -258,6 +281,7 @@
"settings.header.connectivity": "外部連接", "settings.header.connectivity": "外部連接",
"settings.header.connectivity.description": "調整 Cider 與外部的連接", "settings.header.connectivity.description": "調整 Cider 與外部的連接",
"settings.option.connectivity.discordRPC": "Discord 動態", // Dropdown "settings.option.connectivity.discordRPC": "Discord 動態", // Dropdown
"settings.option.connectivity.playbackNotifications": "歌曲播放通知", // Toggle
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.header.connectivity.discordRPC.cider": "顯示正在玩 'Cider'", "settings.header.connectivity.discordRPC.cider": "顯示正在玩 'Cider'",
"settings.header.connectivity.discordRPC.appleMusic": "顯示正在玩 'Apple Music'", "settings.header.connectivity.discordRPC.appleMusic": "顯示正在玩 'Apple Music'",
@ -271,13 +295,16 @@
// Settings - Experimental // Settings - Experimental
"settings.header.experimental": "實驗性功能", "settings.header.experimental": "實驗性功能",
"settings.header.experimental.description": "調整 Cider 的實驗性功能", "settings.header.experimental.description": "調整 Cider 的實驗性功能",
"settings.option.experimental.compactUI": "緊凑型 UI", // Toggle "settings.option.experimental.compactUI": "使用緊密的介面設計", // Toggle
"settings.option.experimental.closeButtonBehaviour": "關閉按鈕操作", // Dropdown "settings.option.experimental.closeButtonBehaviour": "關閉按鈕操作", // Dropdown
"settings.option.experimental.close_button_hide": "關閉按鈕會隱藏 Cider", "settings.option.experimental.close_button_hide": "關閉按鈕將 Cider 隱藏至系統列",
// Refer to term.disabled & term.enabled "settings.option.experimental.copy_log": "複製執行紀錄檔至剪貼簿",
"settings.option.experimental.inline_playlists": "將播放列表做為行内元素顯示",
// Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.spatialProperties" : "空間化屬性", "spatial.notTurnedOn": "空間音訊目前是關閉狀態,請先啟用再使用。",
"spatial.spatialProperties" : "空間音訊屬性設定",
"spatial.width" : "寬度", "spatial.width" : "寬度",
"spatial.height" : "高度", "spatial.height" : "高度",
"spatial.depth" : "深度", "spatial.depth" : "深度",
@ -286,7 +313,7 @@
"spatial.roomDimensions" : "空間尺寸", "spatial.roomDimensions" : "空間尺寸",
"spatial.roomPositions" : "空間位置", "spatial.roomPositions" : "空間位置",
"spatial.setDimensions" : "設定尺寸", "spatial.setDimensions" : "設定尺寸",
"spatial.setPositions" : "設定位置", "spatial.setPositions" : "套用設定",
"spatial.up" : "上", "spatial.up" : "上",
"spatial.front" : "前", "spatial.front" : "前",
"spatial.left" : "左", "spatial.left" : "左",
@ -297,7 +324,7 @@
"spatial.audioSource" : "音訊來源", "spatial.audioSource" : "音訊來源",
// Settings - Unfinished // Settings - Unfinished
"settings.header.unfinished": "未完成", "settings.header.unfinished": "未開發完成的功能",
// Web Remote // Web Remote
"remote.web.title": "Cider 遠端操控", "remote.web.title": "Cider 遠端操控",

View file

@ -19,6 +19,7 @@
"notification.updatingLibrarySongs": "更新緊資料庫嘅歌曲...", "notification.updatingLibrarySongs": "更新緊資料庫嘅歌曲...",
"notification.updatingLibraryAlbums": "更新緊資料庫嘅專輯...", "notification.updatingLibraryAlbums": "更新緊資料庫嘅專輯...",
"notification.updatingLibraryArtists": "更新緊資料庫嘅藝人...", "notification.updatingLibraryArtists": "更新緊資料庫嘅藝人...",
// Terms // Terms
"term.appleInc": "Apple Inc.", "term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music", "term.appleMusic": "Apple Music",
@ -127,7 +128,6 @@
"term.menu": "選項", "term.menu": "選項",
"term.check": "檢查", "term.check": "檢查",
"term.aboutArtist": "關於 {{artistName}}", // e.g. 'About Doja Cat' "term.aboutArtist": "關於 {{artistName}}", // e.g. 'About Doja Cat'
"term.updateCider": "更新 Cider",
"term.topResult": "熱門搜尋結果", // Search Results "term.topResult": "熱門搜尋結果", // Search Results
"term.sharedPlaylists": "播放清單", // Search Results "term.sharedPlaylists": "播放清單", // Search Results
"term.people": "個人檔案", // Search Results "term.people": "個人檔案", // Search Results
@ -153,6 +153,7 @@
"home.madeForYou": "為你而整", "home.madeForYou": "為你而整",
"home.friendsListeningTo": "你啲Friend聽緊", "home.friendsListeningTo": "你啲Friend聽緊",
"home.followedArtists": "Follow左嘅藝人", "home.followedArtists": "Follow左嘅藝人",
// Errors // Errors
"error.appleMusicSubRequired": "需要訂閱Apple Music先可以用Cider。", "error.appleMusicSubRequired": "需要訂閱Apple Music先可以用Cider。",
"error.connectionError": "連接唔到Apple Music。", "error.connectionError": "連接唔到Apple Music。",
@ -228,6 +229,9 @@
"settings.option.general.language.fun": "惡搞語言", "settings.option.general.language.fun": "惡搞語言",
"settings.option.general.language.unsorted": "未分類", "settings.option.general.language.unsorted": "未分類",
// Update Cider
"settings.option.general.updateCider": "更新 Cider", // Button
// Settings - Audio // Settings - Audio
"settings.header.audio": "音訊", "settings.header.audio": "音訊",
"settings.header.audio.description": "調整Cider嘅音訊設定", "settings.header.audio.description": "調整Cider嘅音訊設定",
@ -242,6 +246,7 @@
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "平衡輕柔同響亮嘅歌曲,令你有統一嘅聆聽體驗。", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "平衡輕柔同響亮嘅歌曲,令你有統一嘅聆聽體驗。",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "空間音訊", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "空間音訊", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "空間化音訊,製造一個更立體嘅聆聽體驗(注意:呢個功能唔係官方嘅杜比全景聲)", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "空間化音訊,製造一個更立體嘅聆聽體驗(注意:呢個功能唔係官方嘅杜比全景聲)",
// Settings - Visual // Settings - Visual
"settings.header.visual": "外觀", "settings.header.visual": "外觀",
"settings.header.visual.description": "調整Cider嘅外觀", "settings.header.visual.description": "調整Cider嘅外觀",
@ -304,8 +309,8 @@
"settings.option.experimental.close_button_hide": "㩒交叉制嚟隱藏 Cider", "settings.option.experimental.close_button_hide": "㩒交叉制嚟隱藏 Cider",
"settings.option.experimental.copy_log": "將log複製喺剪貼簿", "settings.option.experimental.copy_log": "將log複製喺剪貼簿",
//"settings.option.experimental.inline_playlists": "Inline Playlists and Albums", //"settings.option.experimental.inline_playlists": "Inline Playlists and Albums",
// Refer to term.disabled & term.enabled
// Refer to term.disabled & term.enabled
// Spatialization Menu // Spatialization Menu
"spatial.notTurnedOn": "唔該喺設定入面啟用左空間音訊先。", "spatial.notTurnedOn": "唔該喺設定入面啟用左空間音訊先。",
"spatial.spatialProperties": "空間音訊屬性", "spatial.spatialProperties": "空間音訊屬性",

View file

@ -1,21 +1,18 @@
import {join} from "path"; import {join} from "path";
import {app, BrowserWindow as bw, ipcMain, shell, ShareMenu, Menu, nativeImage} from "electron"; import {app, BrowserWindow as bw, ipcMain, ShareMenu, shell} from "electron";
import * as windowStateKeeper from "electron-window-state"; import * as windowStateKeeper from "electron-window-state";
import * as express from "express"; import * as express from "express";
import * as getPort from "get-port"; import * as getPort from "get-port";
import {search} from "youtube-search-without-api-key"; import {search} from "youtube-search-without-api-key";
import {existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync} from "fs"; import {existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync} from "fs";
import {Stream} from "stream"; import {Stream} from "stream";
import {generate as generateQR} from "qrcode-terminal"; import {networkInterfaces} from "os";
import {hostname, networkInterfaces} from "os";
import * as mm from 'music-metadata'; import * as mm from 'music-metadata';
import fetch from 'electron-fetch' import fetch from 'electron-fetch'
import {wsapi} from "./wsapi"; import {wsapi} from "./wsapi";
import {jsonc} from "jsonc"; import {jsonc} from "jsonc";
import {AppImageUpdater, NsisUpdater} from "electron-updater"; import {AppImageUpdater, NsisUpdater} from "electron-updater";
import {utils} from './utils'; import {utils} from './utils';
import * as path from "path";
export class BrowserWindow { export class BrowserWindow {
@ -57,7 +54,6 @@ export class BrowserWindow {
"components/equalizer", "components/equalizer",
"components/add-to-playlist", "components/add-to-playlist",
"components/queue", "components/queue",
"components/queue-item",
"components/mediaitem-scroller-horizontal", "components/mediaitem-scroller-horizontal",
"components/mediaitem-scroller-horizontal-large", "components/mediaitem-scroller-horizontal-large",
"components/mediaitem-scroller-horizontal-sp", "components/mediaitem-scroller-horizontal-sp",
@ -65,7 +61,6 @@ export class BrowserWindow {
"components/mediaitem-list-item", "components/mediaitem-list-item",
"components/mediaitem-hrect", "components/mediaitem-hrect",
"components/mediaitem-square", "components/mediaitem-square",
"components/mediaitem-square-sp",
"components/mediaitem-mvview", "components/mediaitem-mvview",
"components/libraryartist-item", "components/libraryartist-item",
"components/listennow-child", "components/listennow-child",
@ -287,9 +282,6 @@ export class BrowserWindow {
this.broadcastRemote() this.broadcastRemote()
remote.listen(this.remotePort, () => { remote.listen(this.remotePort, () => {
console.log(`Cider remote port: ${this.remotePort}`); console.log(`Cider remote port: ${this.remotePort}`);
if (firstRequest) {
generateQR(`http://${hostname}:${this.remotePort}`);
}
firstRequest = false; firstRequest = false;
}) })
remote.get("/", (_req, res) => { remote.get("/", (_req, res) => {
@ -537,18 +529,18 @@ export class BrowserWindow {
MusicKit.getInstance().play(); MusicKit.getInstance().play();
}); });
`) `)
}) });
//QR Code //QR Code
ipcMain.handle('showQR', async (_event, _) => { ipcMain.handle('showQR', async (_event, _) => {
let url = `http://${BrowserWindow.getIP()}:${this.remotePort}`; let url = `http://${BrowserWindow.getIP()}:${this.remotePort}`;
shell.openExternal(`https://cider.sh/pair-remote?url=${Buffer.from(encodeURI(url)).toString('base64')}`).catch(console.error); shell.openExternal(`https://cider.sh/pair-remote?url=${Buffer.from(encodeURI(url)).toString('base64')}`).catch(console.error);
}) });
ipcMain.on('get-remote-pair-url', (_event, _) => { ipcMain.on('get-remote-pair-url', (_event, _) => {
let url = `http://${BrowserWindow.getIP()}:${this.remotePort}`; let url = `http://${BrowserWindow.getIP()}:${this.remotePort}`;
BrowserWindow.win.webContents.send('send-remote-pair-url', url); BrowserWindow.win.webContents.send('send-remote-pair-url', url);
}) });
if (process.platform === "darwin") { if (process.platform === "darwin") {
app.setUserActivity('com.CiderCollective.remote.pair', { app.setUserActivity('com.CiderCollective.remote.pair', {
ip: `${BrowserWindow.getIP()}` ip: `${BrowserWindow.getIP()}`
@ -570,9 +562,20 @@ export class BrowserWindow {
}); });
ipcMain.on('check-for-update', async (_event) => { ipcMain.on('check-for-update', async (_event) => {
const branch = utils.getStoreValue('general.update_branch')
let latestbranch = await fetch(`https://circleci.com/api/v1.1/project/gh/ciderapp/Cider/latest/artifacts?branch=${branch}&filter=successful`)
if (latestbranch.status != 200) {
console.log(`Error fetching latest artifact from the **${branch}** branch`)
return
}
let latestbranchjson = await latestbranch.json()
let base_url = latestbranchjson[0].url
base_url = base_url.substr(0, base_url.lastIndexOf('/'))
const options: any = { const options: any = {
provider: 'generic', provider: 'generic',
url: 'https://43-429851205-gh.circle-artifacts.com/0/%7E/Cider/dist/artifacts' //Base URL url: `${base_url}`
} }
/* /*
* Have to handle the auto updaters seperatly until we can support macOS. electron-builder limitation -q * Have to handle the auto updaters seperatly until we can support macOS. electron-builder limitation -q
@ -581,7 +584,7 @@ export class BrowserWindow {
const linux_autoUpdater = new AppImageUpdater(options) //Linux const linux_autoUpdater = new AppImageUpdater(options) //Linux
await win_autoUpdater.checkForUpdatesAndNotify() await win_autoUpdater.checkForUpdatesAndNotify()
await linux_autoUpdater.checkForUpdatesAndNotify() await linux_autoUpdater.checkForUpdatesAndNotify()
}) });
ipcMain.on('share-menu', async (_event, url) => { ipcMain.on('share-menu', async (_event, url) => {
if (process.platform != 'darwin') return; if (process.platform != 'darwin') return;
@ -597,11 +600,6 @@ export class BrowserWindow {
}) })
/* ********************************************************************************************* /* *********************************************************************************************
* Window Events * Window Events
* **********************************************************************************************/ * **********************************************************************************************/
@ -666,118 +664,6 @@ export class BrowserWindow {
shell.openExternal(x.url).catch(console.error); shell.openExternal(x.url).catch(console.error);
return {action: "deny"}; return {action: "deny"};
}); });
/* *********************************************************************************************
* Menu
* **********************************************************************************************/
//@ts-ignore
console.log(path.join(__dirname, '../../src/renderer/views/svg/smartphone.svg'))
const isMac = process.platform === 'darwin';
//TODO: Figure out the icons
const remoteIcon = nativeImage.createFromPath(path.join(__dirname, '../../src/renderer/views/svg/smartphone.svg')).toPNG()
const soundIcon = nativeImage.createFromPath(path.join(__dirname, '../../src/renderer/views/svg/headphones.svg')).toPNG()
const aboutIcon = nativeImage.createFromPath(path.join(__dirname, '../../src/renderer/views/svg/info.svg')).toPNG()
const settingsIcon = nativeImage.createFromPath(path.join(__dirname, '../../src/renderer/views/svg/settings.svg')).toPNG()
const logoutIcon = nativeImage.createFromPath(path.join(__dirname, '../../src/renderer/views/svg/log-out.svg')).toPNG()
const ciderIcon = nativeImage.createFromPath(path.join(__dirname, '../../src/renderer/assets/logocute.png'))
const template = [
// { role: 'appMenu' }
...(isMac ? [{
label: app.name,
submenu: [
{ label: 'Web Remote', accelerator: 'CommandOrControl+W', sublabel: 'Opens in external window', click: () => BrowserWindow.win.webContents.executeJavaScript(`ipcRenderer.invoke('showQR')`)}, //accelerator
{ label: 'Audio Settings', accelerator: 'CommandOrControl+Shift+A', click: () => BrowserWindow.win.webContents.executeJavaScript(`app.modals.audioSettings = true`)},
{ label: 'About', accelerator: 'CommandOrControl+Shift+B', click: () => BrowserWindow.win.webContents.executeJavaScript(`app.appRoute('about'`)},
{ label: 'Settings', accelerator: 'CommandOrControl+,', click: () => BrowserWindow.win.webContents.executeJavaScript(`app.appRoute('settings')`)},
{ label: 'Logout', accelerator: 'CommandOrControl+Shift+O', click: () => BrowserWindow.win.webContents.executeJavaScript(`app.unauthorize(); document.location.reload()`)},
{ type: 'separator' },
{ role: 'quit' }
]
}] : []),
// { role: 'viewMenu' }
{
label: 'View',
submenu: [
{ role: 'reload' },
{ role: 'forceReload' },
{ role: 'toggleDevTools' },
{ type: 'separator' },
{ role: 'resetZoom' },
{ role: 'zoomIn' },
{ role: 'zoomOut' },
{ type: 'separator' },
{ role: 'togglefullscreen' }
]
},
// { role: 'windowMenu' }
{
label: 'Window',
submenu: [
{ role: 'minimize' },
{ role: 'zoom' },
...(isMac ? [
{ type: 'separator' },
{ role: 'front' },
{ type: 'separator' },
{ role: 'window' }
] : [
{ role: 'close' }
])
]
},
{
role: 'help',
submenu: [
{
label: 'Discord',
accelerator: 'CommandOrControl+Shift+D',
click: async () => {
const { shell } = require('electron')
await shell.openExternal('https://discord.gg/applemusic')
}
},
{
label: 'Donate',
accelerator: 'CommandOrControl+D',
icon: ciderIcon,
click: async () => {
const { shell } = require('electron')
await shell.openExternal('https://opencollective.com/ciderapp/')
}
},
{
label: 'Report a...',
submenu: [
{
label: 'Bug',
click: async () => {
const {shell} = require('electron')
await shell.openExternal("https://github.com/ciderapp/Cider/issues/new?assignees=&labels=bug%2Ctriage&template=bug_report.yaml&title=%5BBug%5D%3A+")
}
},
{
label: 'Feature Request',
click: async () => {
const {shell} = require('electron')
await shell.openExternal("https://github.com/ciderapp/Cider/issues/new?assignees=&labels=enhancement%2Ctriage&template=feature_request.yaml&title=%5BEnhancement%5D%3A+")
}
},
{
label: 'Translation Report/Request',
click: async () => {
const {shell} = require('electron')
await shell.openExternal("https://github.com/ciderapp/Cider/issues/new?assignees=&labels=%F0%9F%8C%90+Translations&template=translation.yaml&title=%5BTranslation%5D%3A+")
}
},
]
},
]
}
]
//@ts-ignore
const menu = Menu.buildFromTemplate(template)
Menu.setApplicationMenu(menu)
} }
/** /**

View file

@ -33,7 +33,7 @@ export class Plugins {
if (fs.existsSync(this.userPluginsPath)) { if (fs.existsSync(this.userPluginsPath)) {
fs.readdirSync(this.userPluginsPath).forEach(file => { fs.readdirSync(this.userPluginsPath).forEach(file => {
if (file.endsWith('.ts') || file.endsWith('.js')) { if (file.endsWith('.ts') || file.endsWith('.js')) {
const plugin = require(path.join(this.userPluginsPath, file)).default; const plugin = require(path.join(this.userPluginsPath, file));
file = file.replace('.ts', '').replace('.js', ''); file = file.replace('.ts', '').replace('.js', '');
if (plugins[file] || plugin in plugins) { if (plugins[file] || plugin in plugins) {
console.log(`[${plugin.name}] Plugin already loaded / Duplicate Class Name`); console.log(`[${plugin.name}] Plugin already loaded / Duplicate Class Name`);

View file

@ -6,12 +6,13 @@ export class Store {
private defaults: any = { private defaults: any = {
"general": { "general": {
"close_button_hide": true, "close_button_hide": false,
"open_on_startup": false, "open_on_startup": false,
"discord_rpc": 1, // 0 = disabled, 1 = enabled as Cider, 2 = enabled as Apple Music "discord_rpc": 1, // 0 = disabled, 1 = enabled as Cider, 2 = enabled as Apple Music
"discord_rpc_clear_on_pause": true, "discord_rpc_clear_on_pause": true,
"language": "en_US", // electron.app.getLocale().replace('-', '_') this can be used in future "language": "en_US", // electron.app.getLocale().replace('-', '_') this can be used in future
"playbackNotifications": true "playbackNotifications": true,
"update_branch": "main"
}, },
"home": { "home": {
"followedArtists": [], "followedArtists": [],
@ -26,18 +27,16 @@ export class Store {
}, },
"audio": { "audio": {
"volume": 1, "volume": 1,
"volumeStep": 0.1,
"maxVolume": 1,
"lastVolume": 1, "lastVolume": 1,
"muted": false, "muted": false,
"quality": "256", "quality": "HIGH",
"seamless_audio": true, "seamless_audio": true,
"normalization": false, "normalization": false,
"ciderPPE": false, "ciderPPE": false,
"ciderPPE_value": 0.5, "ciderPPE_value": 0.5,
"spatial": false, "spatial": false,
"maxVolume": 1,
"volumePrecision": 0.1,
"volumeRoundMax": 0.9,
"volumeRoundMin": 0.1,
"spatial_properties": { "spatial_properties": {
"presets": [], "presets": [],
"gain": 0.8, "gain": 0.8,
@ -62,7 +61,6 @@ export class Store {
'frequencies': [32, 63, 125, 250, 500, 1000, 2000, 4000, 8000, 16000], 'frequencies': [32, 63, 125, 250, 500, 1000, 2000, 4000, 8000, 16000],
'gain': [0,0,0,0,0,0,0,0,0,0], 'gain': [0,0,0,0,0,0,0,0,0,0],
'Q': [1,1,1,1,1,1,1,1,1,1], 'Q': [1,1,1,1,1,1,1,1,1,1],
'preamp' : 0,
'mix': 1, 'mix': 1,
'vibrantBass': 0, 'vibrantBass': 0,
'presets': [], 'presets': [],

View file

@ -12,6 +12,8 @@ export class utils {
*/ */
private static paths: any = { private static paths: any = {
srcPath: path.join(__dirname, "../../src"), srcPath: path.join(__dirname, "../../src"),
rendererPath: path.join(__dirname, "../../src/renderer"),
mainPath: path.join(__dirname, "../../src/main"),
resourcePath: path.join(__dirname, "../../resources"), resourcePath: path.join(__dirname, "../../resources"),
i18nPath: path.join(__dirname, "../../src/i18n"), i18nPath: path.join(__dirname, "../../src/i18n"),
ciderCache: path.resolve(app.getPath("userData"), "CiderCache"), ciderCache: path.resolve(app.getPath("userData"), "CiderCache"),

239
src/main/plugins/menubar.ts Normal file
View file

@ -0,0 +1,239 @@
import {app, Menu, shell} from "electron";
export default class Thumbar {
/**
* Private variables for interaction in plugins
*/
private _win: any;
private _app: any;
private _store: any;
/**
* Base Plugin Details (Eventually implemented into a GUI in settings)
*/
public name: string = 'Menubar Plugin';
public description: string = 'Creates the menubar';
public version: string = '1.0.0';
public author: string = 'Core / Quack';
/**
* Thumbnail Toolbar Assets
* NATIVE-IMAGE DOESN'T SUPPORT SVG
private icons: { [key: string]: Electron.NativeImage } = {
remoteIcon: nativeImage.createFromPath(join(utils.getPath('rendererPath'), 'views/svg/smartphone.svg')).toPNG(),
soundIcon: nativeImage.createFromPath(join(utils.getPath('rendererPath'), 'views/svg/headphones.svg')).toPNG(),
aboutIcon: nativeImage.createFromPath(join(utils.getPath('rendererPath'), 'views/svg/info.svg')).toPNG(),
settingsIcon: nativeImage.createFromPath(join(utils.getPath('rendererPath'), 'views/svg/settings.svg')).toPNG(),
logoutIcon: nativeImage.createFromPath(join(utils.getPath('rendererPath'), 'views/svg/log-out.svg')).toPNG(),
ciderIcon: nativeImage.createFromPath(join(utils.getPath('rendererPath'), 'assets/logocute.png')).toPNG(),
}
*/
/**
* Menubar Assets
* @private
*/
private isMac: boolean = process.platform === 'darwin';
private menubarTemplate: any = [
{
label: app.getName(),
submenu: [
{ role: 'about' },
{ type: 'separator' },
{ role: 'services' },
{ type: 'separator' },
{ role: 'hide' },
{ role: 'hideOthers' },
{ role: 'unhide' },
{ type: 'separator' },
{ role: 'quit' }
]
},
{
label: 'View',
submenu: [
{role: 'reload'},
{role: 'forceReload'},
{role: 'toggleDevTools'},
{type: 'separator'},
{role: 'resetZoom'},
{role: 'zoomIn'},
{role: 'zoomOut'},
{type: 'separator'},
{role: 'togglefullscreen'},
]
},
{
label: 'Window',
submenu: [
{role: 'minimize'},
{role: 'zoom'},
...(this.isMac ? [
{type: 'separator'},
{role: 'front'},
{type: 'separator'},
{role: 'window'}
] : [
{role: 'close'}
]),
{type: 'separator'},
{
label: 'Web Remote',
accelerator: 'CommandOrControl+Shift+W',
sublabel: 'Opens in external window',
click: () => this._win.webContents.executeJavaScript(`ipcRenderer.invoke('showQR')`)
},
{
label: 'Audio Settings',
accelerator: 'CommandOrControl+Shift+A',
click: () => this._win.webContents.executeJavaScript(`app.modals.audioSettings = true`)
},
{
label: 'Settings',
accelerator: 'CommandOrControl+,',
click: () => this._win.webContents.executeJavaScript(`app.appRoute('settings')`)
}
]
},
{
label: 'Controls',
submenu: [
{
label: 'Pause / Play',
accelerator: 'Space',
click: () => this._win.webContents.executeJavaScript(`MusicKitInterop.playPause()`)
},
{
label: 'Next',
accelerator: 'CommandOrControl+Right',
click: () => this._win.webContents.executeJavaScript(`MusicKitInterop.next()`)
},
{
label: 'Previous',
accelerator: 'CommandOrControl+Left',
click: () => this._win.webContents.executeJavaScript(`MusicKitInterop.previous()`)
},
{ type: 'separator' },
{
label: 'Volume Up',
accelerator: 'CommandOrControl+Up',
click: () => this._win.webContents.executeJavaScript(`app.volumeUp()`)
},
{
label: 'Volume Down',
accelerator: 'CommandOrControl+Down',
click: () => this._win.webContents.executeJavaScript(`app.volumeDown()`)
}
]
},
{
label: 'Account',
submenu: [
{
label: 'Account Settings',
click: () => this._win.webContents.executeJavaScript(`app.appRoute('apple-account-settings')`)
},
{
label: 'Sign Out',
click: () => this._win.webContents.executeJavaScript(`app.unauthorize()`)
}
]
},
{
label: 'Support',
role: 'help',
submenu: [
{
label: 'Discord',
click: () => shell.openExternal("https://discord.gg/AppleMusic").catch(console.error)
},
{
label: 'GitHub Wiki',
click: () => shell.openExternal("https://github.com/ciderapp/Cider/wiki/Troubleshooting").catch(console.error)
},
{
label: 'About',
click: () => this._win.webContents.executeJavaScript(`app.appRoute('about')`)
},
{type: 'separator'},
{
label: 'Report a...',
submenu: [
{
label: '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',
click: () => shell.openExternal("https://github.com/ciderapp/Cider/issues/new?assignees=&labels=enhancement%2Ctriage&template=feature_request.yaml&title=%5BEnhancement%5D%3A+").catch(console.error)
},
{
label: 'Translation Report/Request',
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',
click: () => shell.openExternal("https://github.com/ciderapp/Cider/blob/main/LICENSE").catch(console.error)
},
{type: 'separator'},
{
label: 'Toggle Developer Tools',
accelerator: 'Option+CommandOrControl+I',
click: () => this._win.webContents.openDevTools()
},
{
label: 'Open Configuration File in Editor',
click: () => this._store.openInEditor()
}
]
}
]
/*******************************************************************************************
* Public Methods
* ****************************************************************************************/
/**
* Runs on plugin load (Currently run on application start)
*/
constructor(app: any, store: any) {
this._app = app;
this._store = store
console.debug(`[Plugin][${this.name}] Loading Complete.`);
}
/**
* Runs on app ready
*/
onReady(win: Electron.BrowserWindow): void {
this._win = win;
Menu.setApplicationMenu(Menu.buildFromTemplate(this.menubarTemplate))
}
/**
* Runs on app stop
*/
onBeforeQuit(): void {
console.debug(`[Plugin][${this.name}] Stopped.`);
}
/**
* Runs on playback State Change
* @param attributes Music Attributes (attributes.status = current state)
*/
onPlaybackStateDidChange(attributes: object): void {
}
/**
* Runs on song change
* @param attributes Music Attributes
*/
onNowPlayingItemDidChange(attributes: object): void {
}
}

View file

@ -20,7 +20,7 @@ export default class Thumbar {
/** /**
* Thumbnail Toolbar Assets * Thumbnail Toolbar Assets
*/ */
private icons: { pause: Electron.NativeImage, play: Electron.NativeImage, next: Electron.NativeImage, previous: Electron.NativeImage } = { private icons: { [key: string]: Electron.NativeImage } = {
pause: nativeImage.createFromPath(join(utils.getPath('resourcePath'), 'icons/thumbar', `${nativeTheme.shouldUseDarkColors ? 'light' : 'dark'}_pause.png`)), pause: nativeImage.createFromPath(join(utils.getPath('resourcePath'), 'icons/thumbar', `${nativeTheme.shouldUseDarkColors ? 'light' : 'dark'}_pause.png`)),
play: nativeImage.createFromPath(join(utils.getPath('resourcePath'), 'icons/thumbar', `${nativeTheme.shouldUseDarkColors ? 'light' : 'dark'}_play.png`)), play: nativeImage.createFromPath(join(utils.getPath('resourcePath'), 'icons/thumbar', `${nativeTheme.shouldUseDarkColors ? 'light' : 'dark'}_play.png`)),
next: nativeImage.createFromPath(join(utils.getPath('resourcePath'), 'icons/thumbar', `${nativeTheme.shouldUseDarkColors ? 'light' : 'dark'}_next.png`)), next: nativeImage.createFromPath(join(utils.getPath('resourcePath'), 'icons/thumbar', `${nativeTheme.shouldUseDarkColors ? 'light' : 'dark'}_next.png`)),

View file

@ -0,0 +1,227 @@
import * as WebSocket from 'ws';
/**
* 0-pad a number.
* @param {Number} number
* @param {Number} length
* @returns String
*/
const pad = (number: number, length: number) => String(number).padStart(length, '0');
/**
* Convert seconds to a time string acceptable to Rainmeter
* https://github.com/tjhrulz/WebNowPlaying-BrowserExtension/blob/master/WebNowPlaying.js#L50-L59
* @param {Number} timeInSeconds
* @returns String
*/
const convertTimeToString = (timeInSeconds: number) => {
const timeInMinutes = timeInSeconds / 60;
if (timeInMinutes < 60) {
return timeInMinutes + ":" + pad(timeInSeconds % 60, 2);
}
return timeInMinutes / 60 + ":" + pad(timeInMinutes % 60, 2) + ":" + pad(timeInSeconds % 60, 2);
}
export default class WebNowPlaying {
/**
* Base Plugin Details (Eventually implemented into a GUI in settings)
*/
public name: string = 'WebNowPlaying';
public description: string = 'Song info and playback control for the Rainmeter WebNowPlaying plugin.';
public version: string = '1.0.0';
public author: string = 'Zennn <me@jozen.blue>';
private _win: any;
private ws: any = null;
private wsapiConn: any = null;
private playerName: string = 'Cider'/* Apple Music */;
constructor() {
console.debug(`[Plugin][${this.name}] Loading Complete.`);
}
sendSongInfo(attributes: any) {
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) return;
const fields = ['STATE', 'TITLE', 'ARTIST', 'ALBUM', 'COVER', 'DURATION', 'POSITION', 'VOLUME', 'REPEAT', 'SHUFFLE'];
fields.forEach((field) => {
try {
let value: any = '';
switch (field) {
case 'STATE':
value = attributes.status ? 1 : 2;
break;
case 'TITLE':
value = attributes.name;
break;
case 'ARTIST':
value = attributes.artistName;
break;
case 'ALBUM':
value = attributes.albumName;
break;
case 'COVER':
value = attributes.artwork.url.replace('{w}', attributes.artwork.width).replace('{h}', attributes.artwork.height);
break;
case 'DURATION':
value = convertTimeToString(attributes.durationInMillis / 1000);
break;
case 'POSITION':
value = convertTimeToString((attributes.durationInMillis - attributes.remainingTime) / 1000);
break;
case 'VOLUME':
value = attributes.volume * 100;
break;
case 'REPEAT':
value = attributes.repeatMode;
break;
case 'SHUFFLE':
value = attributes.shuffleMode;
break;
}
this.ws.send(`${field}:${value}`);
} catch (error) {
if (this.ws.readyState === WebSocket.OPEN) {
this.ws.send(`Error:Error updating ${field} for ${this.playerName}`);
this.ws.send(`ErrorD:${error}`);
}
}
});
}
fireEvent(evt: any) {
if (!evt.data) return;
let value = '';
if (evt.data.split(/ (.+)/).length > 1) {
value = evt.data.split(/ (.+)/)[1];
}
const eventName = evt.data.split(' ')[0].toLowerCase();
try {
switch (eventName) {
case 'playpause':
this._win.webContents.executeJavaScript('MusicKitInterop.playPause()').catch(console.error);
break;
case 'next':
this._win.webContents.executeJavaScript('MusicKitInterop.next()').catch(console.error);
break;
case 'previous':
this._win.webContents.executeJavaScript('MusicKitInterop.previous()').catch(console.error);
break;
case 'setposition':
this._win.webContents.executeJavaScript(`MusicKit.getInstance().seekToTime(${parseFloat(value)})`);
break;
case 'setvolume':
this._win.webContents.executeJavaScript(`MusicKit.getInstance().volume = ${parseFloat(value) / 100}`);
break;
case 'repeat':
this._win.webContents.executeJavaScript('wsapi.toggleRepeat()').catch(console.error);
break;
case 'shuffle':
this._win.webContents.executeJavaScript('wsapi.toggleShuffle()').catch(console.error);
break;
case 'togglethumbsup':
// not implemented
break;
case 'togglethumbsdown':
// not implemented
break;
case 'rating':
// not implemented
break;
}
} catch (error) {
console.debug(error);
if (this.ws.readyState === WebSocket.OPEN) {
this.ws.send(`Error:Error sending event to ${this.playerName}`);
this.ws.send(`ErrorD:${error}`);
}
}
}
/**
* Runs on app ready
*/
onReady(win: any) {
this._win = win;
// Connect to Rainmeter plugin and retry on disconnect.
const init = () => {
try {
this.ws = new WebSocket('ws://127.0.0.1:8974/');
let retry: NodeJS.Timeout;
this.ws.onopen = (() => {
console.info('[WebNowPlaying] Connected to Rainmeter');
this.ws.send(`PLAYER:${this.playerName}`);
}).bind(this);
this.ws.onclose = () => {
clearTimeout(retry);
retry = setTimeout(init, 2000);
};
this.ws.onerror = () => {
clearTimeout(retry);
this.ws.close();
};
this.ws.onmessage = this.fireEvent?.bind(this);
} catch (error) {
console.error(error);
}
};
init();
// Connect to wsapi. Only used to update progress.
try {
this.wsapiConn = new WebSocket('ws://127.0.0.1:26369/');
this.wsapiConn.onopen = () => {
console.info('[WebNowPlaying] Connected to wsapi');
};
this.wsapiConn.onmessage = (evt: { data: string; }) => {
const response = JSON.parse(evt.data);
if (response.type === 'playbackStateUpdate') {
this.sendSongInfo(response.data);
}
};
} catch (error) {
console.error(error);
}
console.debug(`[Plugin][${this.name}] Ready.`);
}
/**
* Runs on app stop
*/
onBeforeQuit() {
if (this.ws) {
this.ws.send('STATE:0');
this.ws.onclose = null; // disable onclose handler first to stop it from retrying
this.ws.close();
}
if (this.wsapiConn) {
this.wsapiConn.close();
}
console.debug(`[Plugin][${this.name}] Stopped.`);
}
/**
* Runs on playback State Change
* @param attributes Music Attributes (attributes.status = current state)
*/
onPlaybackStateDidChange(attributes: any) {
this.sendSongInfo(attributes);
}
/**
* Runs on song change
* @param attributes Music Attributes
*/
onNowPlayingItemDidChange(attributes: any) {
this.sendSongInfo(attributes);
}
}

View file

@ -30,7 +30,7 @@ var CiderAudio = {
CiderAudio.audioNodes.gainNode.disconnect(); } catch(e){} CiderAudio.audioNodes.gainNode.disconnect(); } catch(e){}
try{ CiderAudio.audioNodes.spatialNode.disconnect();} catch(e){} try{ CiderAudio.audioNodes.spatialNode.disconnect();} catch(e){}
try{ try{
CiderAudio.audioNodes.preampNode.disconnect(); // CiderAudio.audioNodes.preampNode.disconnect();
for (var i of CiderAudio.audioNodes.llpw){ for (var i of CiderAudio.audioNodes.llpw){
i.disconnect(); i.disconnect();
} }
@ -126,11 +126,10 @@ var CiderAudio = {
let VIBRANTBASSBANDS = app.cfg.audio.vibrantBass.frequencies; let VIBRANTBASSBANDS = app.cfg.audio.vibrantBass.frequencies;
let VIBRANTBASSGAIN = app.cfg.audio.vibrantBass.gain; let VIBRANTBASSGAIN = app.cfg.audio.vibrantBass.gain;
let VIBRANTBASSQ = app.cfg.audio.vibrantBass.Q; let VIBRANTBASSQ = app.cfg.audio.vibrantBass.Q;
LLPW_Q = [5, 1, 3.536, 1.25, 8.409, 1.25, 14.14, 7.071, 5, 0.625, 16.82, 20, 20, 20, 28.28, 28.28, 28.28, 20, 33.64, 33.64, 10, 28.28, 7.071, 3.856]; let LLPW_Q = [5, 1, 3.536, 1.25, 8.409, 1.25, 14.14, 7.071, 5, 0.625, 16.82, 20, 20, 20, 28.28, 28.28, 28.28, 20, 33.64, 33.64, 10, 28.28, 7.071, 3.856];
LLPW_GAIN = [0.38, -1.81, -0.23, -0.51, 0.4, 0.84, 0.36, -0.34, 0.27, -1.2, -0.42, -0.67, 0.81, 1.31, -0.71, 0.68, -1.04, 0.79, -0.73, -1.33, 1.17, 0.57, 0.35, 6.33]; let LLPW_GAIN = [0.38, -1.81, -0.23, -0.51, 0.4, 0.84, 0.36, -0.34, 0.27, -1.2, -0.42, -0.67, 0.81, 1.31, -0.71, 0.68, -1.04, 0.79, -0.73, -1.33, 1.17, 0.57, 0.35, 6.33];
LLPW_FREQUENCIES = [16.452, 24.636, 37.134, 74.483, 159.54, 308.18, 670.21, 915.81, 1200.7, 2766.4, 2930.6, 4050.6, 4409.1, 5395.2, 5901.6, 6455.5, 7164.1, 7724.1, 8449, 10573, 12368, 14198, 17910, 18916]; let LLPW_FREQUENCIES = [16.452, 24.636, 37.134, 74.483, 159.54, 308.18, 670.21, 915.81, 1200.7, 2766.4, 2930.6, 4050.6, 4409.1, 5395.2, 5901.6, 6455.5, 7164.1, 7724.1, 8449, 10573, 12368, 14198, 17910, 18916];
CiderAudio.audioNodes.audioBands = []; CiderAudio.audioNodes.vibrantbassNode = []; CiderAudio.audioNodes.audioBands = []; CiderAudio.audioNodes.vibrantbassNode = []; CiderAudio.audioNodes.llpw = [];
CiderAudio.audioNodes.llpw = []; CiderAudio.audioNodes.llpwEnabled = 0;
for (i = 0; i < BANDS.length; i++) { for (i = 0; i < BANDS.length; i++) {
CiderAudio.audioNodes.audioBands[i] = CiderAudio.context.createBiquadFilter(); CiderAudio.audioNodes.audioBands[i] = CiderAudio.context.createBiquadFilter();
@ -147,19 +146,21 @@ var CiderAudio = {
CiderAudio.audioNodes.llpw[i].Q.value = LLPW_Q[i]; CiderAudio.audioNodes.llpw[i].Q.value = LLPW_Q[i];
CiderAudio.audioNodes.llpw[i].gain.value = LLPW_GAIN[i] * app.cfg.audio.ciderPPE_value * CiderAudio.audioNodes.llpwEnabled; CiderAudio.audioNodes.llpw[i].gain.value = LLPW_GAIN[i] * app.cfg.audio.ciderPPE_value * CiderAudio.audioNodes.llpwEnabled;
} }
/**
CiderAudio.audioNodes.preampNode = CiderAudio.context.createBiquadFilter(); CiderAudio.audioNodes.preampNode = CiderAudio.context.createBiquadFilter();
CiderAudio.audioNodes.preampNode.type = 'highshelf'; CiderAudio.audioNodes.preampNode.type = 'highshelf';
CiderAudio.audioNodes.preampNode.frequency.value = 0; // allow all CiderAudio.audioNodes.preampNode.frequency.value = 0; // Passthrough
CiderAudio.audioNodes.preampNode.gain.value = app.cfg.audio.equalizer.preamp; CiderAudio.audioNodes.preampNode.gain.value = 0;
/** if (CiderAudio.audioNodes.llpwEnabled === 1) {CiderAudio.audioNodes.preampNode.gain.value = (-Math.max(...app.cfg.audio.equalizer.gain.concat(CiderAudio.audioNodes.llpw[23].gain.value)));}
else {CiderAudio.audioNodes.preampNode.gain.value = (-Math.max(...app.cfg.audio.equalizer.gain));}*/
for (i = 0; i < VIBRANTBASSBANDS.length; i++) { for (i = 0; i < VIBRANTBASSBANDS.length; i++) {
CiderAudio.audioNodes.vibrantbassNode[i] = CiderAudio.context.createBiquadFilter(); CiderAudio.audioNodes.vibrantbassNode[i] = CiderAudio.context.createBiquadFilter();
CiderAudio.audioNodes.vibrantbassNode[i].type = 'peaking'; // 'peaking'; CiderAudio.audioNodes.vibrantbassNode[i].type = 'peaking'; // 'peaking';
CiderAudio.audioNodes.vibrantbassNode[i].frequency.value = VIBRANTBASSBANDS[i]; CiderAudio.audioNodes.vibrantbassNode[i].frequency.value = VIBRANTBASSBANDS[i];
CiderAudio.audioNodes.vibrantbassNode[i].Q.value = VIBRANTBASSQ[i]; CiderAudio.audioNodes.vibrantbassNode[i].Q.value = VIBRANTBASSQ[i];
CiderAudio.audioNodes.vibrantbassNode[i].gain.value = VIBRANTBASSGAIN[i] * app.cfg.audio.vibrantBass.multiplier; CiderAudio.audioNodes.vibrantbassNode[i].gain.value = VIBRANTBASSGAIN[i] * app.cfg.audio.vibrantBass.multiplier;}
}
if (app.cfg.audio.spatial) { if (app.cfg.audio.spatial) {
try{ try{
@ -171,18 +172,18 @@ var CiderAudio = {
CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]); CiderAudio.audioNodes.gainNode.connect(CiderAudio.audioNodes.llpw[0]);
} }
// CiderAudio.audioNodes.preampNode.connect(CiderAudio.audioNodes.llpw[0]);
for (i = 1; i < LLPW_FREQUENCIES.length; i ++) { for (i = 1; i < LLPW_FREQUENCIES.length; i ++) {
CiderAudio.audioNodes.llpw[i-1].connect(CiderAudio.audioNodes.llpw[i]); CiderAudio.audioNodes.llpw[i-1].connect(CiderAudio.audioNodes.llpw[i]);
} }
CiderAudio.audioNodes.llpw[LLPW_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.preampNode); CiderAudio.audioNodes.llpw[LLPW_FREQUENCIES.length-1].connect(CiderAudio.audioNodes.vibrantbassNode[0]);
CiderAudio.audioNodes.preampNode.connect(CiderAudio.audioNodes.vibrantbassNode[0]);
for (i = 1; i < VIBRANTBASSBANDS.length; i ++) { for (i = 1; i < VIBRANTBASSBANDS.length; i ++) {
CiderAudio.audioNodes.vibrantbassNode[i-1].connect(CiderAudio.audioNodes.vibrantbassNode[i]); CiderAudio.audioNodes.vibrantbassNode[i-1].connect(CiderAudio.audioNodes.vibrantbassNode[i]);
} }
CiderAudio.audioNodes.vibrantbassNode[VIBRANTBASSBANDS.length-1].connect(CiderAudio.audioNodes.audioBands[0]); CiderAudio.audioNodes.vibrantbassNode[VIBRANTBASSBANDS.length-1].connect(CiderAudio.audioNodes.audioBands[0]);
for (i = 1; i < BANDS.length; i ++) { for (i = 1; i < BANDS.length; i ++) {
CiderAudio.audioNodes.audioBands[i-1].connect(CiderAudio.audioNodes.audioBands[i]); CiderAudio.audioNodes.audioBands[i-1].connect(CiderAudio.audioNodes.audioBands[i]);
} }

View file

@ -1,78 +1,5 @@
Vue.use(VueObserveVisibility); Vue.use(VueObserveVisibility);
var notyf = new Notyf(); var notyf = new Notyf();
// This is going to suck to code
var CiderContextMenu = {
Menu: function (event) {
this.items = []
},
async Create(event, menudata) {
var menuBackground = document.createElement("div");
var menu = document.createElement("div");
menu.classList.add("context-menu-body");
menu.classList.add("context-menu-open");
menuBackground.classList.add("context-menu");
menu.style.left = 0 + "px";
menu.style.top = 0 + "px";
menu.style.position = "absolute";
menu.style.zIndex = "99909";
menu.addEventListener("animationend", function () {
menu.classList.remove("context-menu-open");
}, {once: true});
function close() {
menuBackground.style.pointerEvents = "none";
menu.classList.add("context-menu-close");
menu.addEventListener("animationend", function () {
menuBackground.remove();
menu.remove();
}, {once: true});
}
// when menubackground is clicked, remove it
menuBackground.addEventListener("click", close);
menuBackground.addEventListener("contextmenu", close);
// add menu to menuBackground
menuBackground.appendChild(menu);
document.body.appendChild(menuBackground);
if (typeof menudata.items == "object") {
menudata.items = Object.values(menudata.items);
}
console.log(menudata);
// for each item in menudata create a menu item
for (var i = 0; i < menudata.items.length; i++) {
let item = document.createElement("button")
if (menudata.items[i]["disabled"] === true) {
continue
}
item.tabIndex = 0
item.classList.add("context-menu-item")
if (menudata.items[i]["icon"]) {
item.innerHTML += `<div class="sidebar-icon">${await app.getSvgIcon(menudata.items[i]["icon"])}</div>`
}
item.innerHTML += menudata.items[i].name
item.onclick = menudata.items[i].action
menu.appendChild(item)
}
menu.style.width = (menu.offsetWidth + 10) + "px";
menu.style.left = event.clientX + "px";
menu.style.top = event.clientY + "px";
// if menu would be off the screen, move it into view, but preserve the width
if (menu.offsetLeft + menu.offsetWidth > window.innerWidth) {
menu.style.left = (window.innerWidth - menu.offsetWidth) + "px";
}
if (menu.offsetTop + menu.offsetHeight > window.innerHeight) {
menu.style.top = (window.innerHeight - menu.offsetHeight) + "px";
}
return menuBackground;
}
}
const MusicKitObjects = { const MusicKitObjects = {
LibraryPlaylist: function () { LibraryPlaylist: function () {
@ -344,6 +271,25 @@ const app = new Vue({
}, },
}, },
methods: { methods: {
songLinkShare(amUrl) {
notyf.open({type: "info", message: app.getLz('term.song.link.generate')})
let self = this
httpRequest = new XMLHttpRequest();
httpRequest.open('GET', `https://api.song.link/v1-alpha.1/links?url=${amUrl}&userCountry=US`, true);
httpRequest.send();
httpRequest.onreadystatechange = function () {
if (httpRequest.readyState === 4) {
if (httpRequest.status === 200) {
let response = JSON.parse(httpRequest.responseText);
console.log(response);
self.copyToClipboard(response.pageUrl)
} else {
console.log('There was a problem with the request.');
notyf.error(app.getLz('term.requestError'))
}
}
}
},
mainMenuVisibility(val) { mainMenuVisibility(val) {
if (val) { if (val) {
(this.chrome.userinfo.id) ? this.chrome.menuOpened = !this.chrome.menuOpened : false (this.chrome.userinfo.id) ? this.chrome.menuOpened = !this.chrome.menuOpened : false
@ -670,23 +616,13 @@ const app = new Vue({
window.localStorage.setItem("currentQueue", JSON.stringify(app.mk.queue.items)) window.localStorage.setItem("currentQueue", JSON.stringify(app.mk.queue.items))
}; };
// Load saved quality if (typeof MusicKit.PlaybackBitrate[app.cfg.audio.quality] !== "string") {
switch (app.cfg.audio.quality) { app.mk.bitrate = MusicKit.PlaybackBitrate[app.cfg.audio.quality]
case "extreme": } else {
app.mk.bitrate = app.cfg.audio.quality = 990 app.mk.bitrate = 256
break; app.cfg.audio.quality = "HIGH"
case "high":
app.mk.bitrate = app.cfg.audio.quality = 256
break;
case "low":
app.mk.bitrate = app.cfg.audio.quality = 64
break;
default:
// app.mk.bitrate = app.cfg.audio.quality
break;
} }
// load last played track // load last played track
try { try {
let lastItem = window.localStorage.getItem("currentTrack") let lastItem = window.localStorage.getItem("currentTrack")
@ -1252,10 +1188,24 @@ const app = new Vue({
return this.playerLCD.playbackDuration return this.playerLCD.playbackDuration
} }
}, },
convertToMins(time) { convertTime(time) {
let mins = Math.floor(time / 60) if (typeof time !== "number") {
let seconds = (Math.floor(time % 60) / 100).toFixed(2) time = parseInt(time)
return `${mins}:${seconds.replace("0.", "")}` }
const timeGates = {
600: 15,
3600: 14,
36000: 12,
}
for (let key in timeGates) {
if (time < key) {
return new Date(time * 1000).toISOString().substring(timeGates[key], 19)
}
}
return new Date(time * 1000).toISOString().substring(11, 19)
}, },
hashCode(str) { hashCode(str) {
let hash = 0, let hash = 0,
@ -1934,7 +1884,7 @@ const app = new Vue({
self.library.backgroundNotification.show = false self.library.backgroundNotification.show = false
self.searchLibrarySongs() self.searchLibrarySongs()
localStorage.setItem("librarySongs", JSON.stringify(library)) localStorage.setItem("librarySongs", JSON.stringify(library))
console.log(library) // console.log(library)
} }
} }
@ -2042,7 +1992,7 @@ const app = new Vue({
self.library.backgroundNotification.show = false self.library.backgroundNotification.show = false
localStorage.setItem("libraryAlbums", JSON.stringify(library)) localStorage.setItem("libraryAlbums", JSON.stringify(library))
self.searchLibraryAlbums(index) self.searchLibraryAlbums(index)
console.log(library) // console.log(library)
} }
} }
@ -2148,7 +2098,7 @@ const app = new Vue({
self.library.backgroundNotification.show = false self.library.backgroundNotification.show = false
localStorage.setItem("libraryArtists", JSON.stringify(library)) localStorage.setItem("libraryArtists", JSON.stringify(library))
self.searchLibraryArtists(index) self.searchLibraryArtists(index)
console.log(library) // console.log(library)
} }
} }
@ -2334,7 +2284,7 @@ const app = new Vue({
this.mk.addToLibrary(id).then((data) => { this.mk.addToLibrary(id).then((data) => {
self.getLibrarySongsFull(true) self.getLibrarySongsFull(true)
}) })
notyf.success('Added to library.'); notyf.success(app.getLz('action.addToLibrary.success'));
}, },
removeFromLibrary(kind, id) { removeFromLibrary(kind, id) {
let self = this let self = this
@ -2346,7 +2296,7 @@ const app = new Vue({
}).then((data) => { }).then((data) => {
self.getLibrarySongsFull(true) self.getLibrarySongsFull(true)
}) })
notyf.success('Removed from library.') notyf.success(app.getLz('action.removeFromLibrary.success'))
}, },
async losslessBadge() { async losslessBadge() {
@ -3083,23 +3033,6 @@ const app = new Vue({
}) })
self.$store.commit("setLCDArtwork", img) self.$store.commit("setLCDArtwork", img)
}) })
// Vibrant.from(this.mk["nowPlayingItem"]["attributes"]["artwork"]["url"].replace('{w}', size).replace('{h}', size)).getPalette().then(palette=>{
// let angle = "140deg"
// let gradient = ""
// let colors = Object.values(palette).filter(color=>color!=null)
// if(colors.length > 0){
// let stops = []
// colors.forEach(color=>{
// stops.push(`${self._rgbToRgb(color._rgb)} 0%`)
// })
// stops.push(`${self._rgbToRgb(colors[0]._rgb)} 100%`)
// gradient = `linear-gradient(${angle}, ${stops.join(", ")}`
// }
//
// document.querySelector("#app").style.setProperty("--bgColor", gradient)
// }).setQuantizer(Vibrant.Quantizer.WebWorker)
try { try {
clearInterval(bginterval); clearInterval(bginterval);
} catch (err) { } catch (err) {
@ -3124,47 +3057,6 @@ const app = new Vue({
} }
}, 200) }, 200)
}, },
// getNowPlayingArtwork(size = 600) {
// if (typeof this.mk.nowPlayingItem === "undefined") return;
// let interval = setInterval(() => {
// try {
// if (this.mk.nowPlayingItem && this.mk.nowPlayingItem["id"] != this.currentTrackIDBG && document.querySelector('.app-playback-controls .artwork')) {
// this.currentTrackIDBG = this.mk.nowPlayingItem["id"];
// if (document.querySelector('.app-playback-controls .artwork') != null) {
// clearInterval(interval);
// }
// if (app.mk.nowPlayingItem.attributes.artwork != null && app.mk.nowPlayingItem.attributes.artwork.url != null && app.mk.nowPlayingItem.attributes.artwork.url!= '' ) {
// document.querySelector('.app-playback-controls .artwork').style.setProperty('--artwork', `url("${decodeURI((this.mk["nowPlayingItem"]["attributes"]["artwork"]["url"])).replace('{w}', size).replace('{h}', size)}")`);
// try {
// clearInterval(interval);
// } catch (err) {
// }
// } else {
// this.setLibraryArt()
// }
// } else if (this.mk.nowPlayingItem["id"] == this.currentTrackID) {
// try {
// clearInterval(interval);
// } catch (err) {
// }
// }
// } catch (e) {
// if (this.mk.nowPlayingItem && this.mk.nowPlayingItem["id"] && document.querySelector('.app-playback-controls .artwork')) {
// this.setLibraryArt()
// try {
// clearInterval(interval);
// } catch (err) {
// }
// }
// }
// }, 200)
// },
async getCurrentArtURL() { async getCurrentArtURL() {
try { try {
this.currentArtUrl = ''; this.currentArtUrl = '';
@ -3179,11 +3071,6 @@ const app = new Vue({
data = data.data.data[0]; data = data.data.data[0];
if (data != null && data !== "" && data.attributes != null && data.attributes.artwork != null) { if (data != null && data !== "" && data.attributes != null && data.attributes.artwork != null) {
this.currentArtUrl = (data["attributes"]["artwork"]["url"] ?? '').replace('{w}', 50).replace('{h}', 50); this.currentArtUrl = (data["attributes"]["artwork"]["url"] ?? '').replace('{w}', 50).replace('{h}', 50);
// if (this.currentArtUrl != ""){
// let attr = MusicKitInterop.getAttributes();
// attr.artwork.url = this.currentArtUrl;
// ipcRenderer.send('forceUpdateRPC',attr)
// }
try { try {
document.querySelector('.app-playback-controls .artwork').style.setProperty('--artwork', `url("${this.currentArtUrl}")`); document.querySelector('.app-playback-controls .artwork').style.setProperty('--artwork', `url("${this.currentArtUrl}")`);
} catch (e) { } catch (e) {
@ -3317,29 +3204,32 @@ const app = new Vue({
} }
}) })
}, },
checkScrollDirectionIsUp(event) {
if (event.wheelDelta) {
return event.wheelDelta > 0;
}
return event.deltaY < 0;
},
volumeUp() {
if ((app.mk.volume + app.cfg.audio.volumeStep) > 1) {
app.mk.volume = app.cfg.audio.maxVolume;
console.log('setting max volume')
} else {
console.log('volume up')
app.mk.volume += app.cfg.audio.volumeStep;
}
},
volumeDown() {
if ((app.mk.volume - app.cfg.audio.volumeStep) < 0) {
app.mk.volume = 0;
console.log('setting volume to 0')
} else {
console.log('volume down')
app.mk.volume -= app.cfg.audio.volumeStep;
}
},
volumeWheel(event) { volumeWheel(event) {
if (this.cfg.audio.maxVolume < 1.0 && this.cfg.audio.maxVolume > 0.01) { app.checkScrollDirectionIsUp(event) ? app.volumeUp() : app.volumeDown()
this.cfg.audio.volumePrecision = 0.01
this.cfg.audio.volumeRoundMax = this.cfg.audio.maxVolume - 0.01
this.cfg.audio.volumeRoundMin = 0.01
}
if (event.deltaY < 0) {
if (this.mk.volume < this.cfg.audio.maxVolume) {
if (this.mk.volume <= this.cfg.audio.volumeRoundMax) {
this.mk.volume += this.cfg.audio.volumePrecision
} else {
this.mk.volume = this.cfg.audio.maxVolume
}
}
} else if (event.deltaY > 0) {
if (this.mk.volume > 0) {
if (this.mk.volume >= this.cfg.audio.volumeRoundMin) {
this.mk.volume -= this.cfg.audio.volumePrecision
} else {
this.mk.volume = 0
}
}
}
}, },
muteButtonPressed() { muteButtonPressed() {
if (this.cfg.audio.muted) { if (this.cfg.audio.muted) {
@ -3405,18 +3295,11 @@ const app = new Vue({
} }
}, },
async nowPlayingContextMenu(event) { async nowPlayingContextMenu(event) {
// function revisedRandId() {
// return Math.random().toString(36).replace(/[^a-z]+/g, '').substr(2, 10);
// }
let self = this let self = this
let data_type = this.mk.nowPlayingItem.playParams.kind let data_type = this.mk.nowPlayingItem.playParams.kind
let item_id = this.mk.nowPlayingItem.attributes.playParams.id ?? this.mk.nowPlayingItem.id let item_id = this.mk.nowPlayingItem.attributes.playParams.id ?? this.mk.nowPlayingItem.id
let isLibrary = this.mk.nowPlayingItem.attributes.playParams.isLibrary ?? false let isLibrary = this.mk.nowPlayingItem.attributes.playParams.isLibrary ?? false
let params = {"fields[songs]": "inLibrary", "fields[albums]": "inLibrary", "relate": "library", "t": "1"} let params = {"fields[songs]": "inLibrary", "fields[albums]": "inLibrary", "relate": "library", "t": "1"}
// let res = await app.mkapi(data_type, isLibrary , item_id, params);
// if (res && res.relationships && res.relationships.library && res.relationships.library.data && res.relationships.library.data.length > 0) {
// item_id = res.relationships.library.data[0].id
// }
app.selectedMediaItems = [] app.selectedMediaItems = []
app.select_selectMediaItem(item_id, data_type, 0, '12344', isLibrary) app.select_selectMediaItem(item_id, data_type, 0, '12344', isLibrary)
let useMenu = "normal" let useMenu = "normal"
@ -3480,7 +3363,6 @@ const app = new Vue({
"disabled": false, "disabled": false,
"action": function () { "action": function () {
app.addToLibrary(app.mk.nowPlayingItem.id); app.addToLibrary(app.mk.nowPlayingItem.id);
// if (!isLibrary) {app.addToLibrary(item_id); this.mk.nowPlayingItem.attributes.playParams["isLibrary"] = true} else { app.removeFromLibrary(data_type,item_id); this.mk.nowPlayingItem.attributes.playParams["isLibrary"] = false};
} }
}, },
{ {
@ -3501,26 +3383,24 @@ const app = new Vue({
app.copyToClipboard((u.data.data.length && u.data.data.length > 0) ? u.data.data[0].attributes.url : u.data.data.attributes.url) app.copyToClipboard((u.data.data.length && u.data.data.length > 0) ? u.data.data[0].attributes.url : u.data.data.attributes.url)
}) })
} }
},
{
"icon": "./assets/feather/share.svg",
"name": `${app.getLz('action.share')} (song.link)`,
"action": function () {
app.mkapi(app.mk.nowPlayingItem.attributes?.playParams?.kind ?? app.mk.nowPlayingItem.type ?? 'songs', false, app.mk.nowPlayingItem._songId ?? app.mk.nowPlayingItem.id ?? '').then(u => {
app.songLinkShare((u.data.data.length && u.data.data.length > 0) ? u.data.data[0].attributes.url : u.data.data.attributes.url)
})
}
} }
] ]
} }
} }
if (this.contextExt) { if (this.contextExt) {
// if this.context-ext.normal is true append all options to the 'normal' menu which is a kvp of arrays
if (this.contextExt.normal) { if (this.contextExt.normal) {
menus.normal.items = menus.normal.items.concat(this.contextExt.normal) menus.normal.items = menus.normal.items.concat(this.contextExt.normal)
} }
} }
// isLibrary = await app.inLibrary([this.mk.nowPlayingItem])
// console.warn(isLibrary)
// if(isLibrary.length != 0) {
// if (isLibrary[0].attributes.inLibrary) {
// menus.normal.items.find(x => x.id == "addToLibrary").disabled = true
// }
// }else{
// menus.normal.items.find(x => x.id == "addToLibrary").disabled = true
// }
this.showMenuPanel(menus[useMenu], event) this.showMenuPanel(menus[useMenu], event)
try { try {

View file

@ -1,10 +1,10 @@
@import url("ameframework.css");
@import url("assets/fonts/Inter/inter.css"); @import url("assets/fonts/Inter/inter.css");
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@100;300;400;500;700;900&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@100;300;400;500;700;900&display=swap');
@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@100;300;400;500;700;900&display=swap"); @import url("https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@100;300;400;500;700;900&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+HK:wght@100;300;400;500;700;900&display=swap"); @import url("https://fonts.googleapis.com/css2?family=Noto+Sans+HK:wght@100;300;400;500;700;900&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@100;300;400;500;700;900&display=swap"); @import url("https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@100;300;400;500;700;900&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100;300;400;500;700;900&display=swap"); @import url("https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100;300;400;500;700;900&display=swap");
@import url("less/ameframework.less");
@import url("less/bootstrap.less"); @import url("less/bootstrap.less");
@import url("less/notyf.less"); @import url("less/notyf.less");
@ -1126,7 +1126,8 @@ body[platform="darwin"] .app-chrome .app-chrome-item > .window-controls > div.cl
width: 100%; width: 100%;
} }
.app-chrome .app-chrome-item > .app-playback-controls .song-name { .app-chrome .app-chrome-item > .app-playback-controls {
.song-name {
font-weight: 600; font-weight: 600;
text-align: center; text-align: center;
font-size: 13px; font-size: 13px;
@ -1153,24 +1154,25 @@ body[platform="darwin"] .app-chrome .app-chrome-item > .window-controls > div.cl
background-repeat: no-repeat; background-repeat: no-repeat;
margin-left: 3px; margin-left: 3px;
} }
}
.lossless-icon { .lossless-icon {
background-image: url("http://localhost:9000/assets/lossless.svg"); background-image: url("./assets/lossless.svg") !important;
height: 9px;
width: 36px;
filter: contrast(0);
background-repeat: no-repeat;
margin-left: 3px;
background-size: contain;
} }
.ppe-icon { .ppe-icon {
background-image: url("./assets/ppe.svg"); background-image: url("./assets/ppe.svg") !important;
height: 12px; }
width: 13px;
.audio-type {
filter: contrast(0); filter: contrast(0);
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: contain; background-size: contain;
height: 15px;
width: 15px;
position: absolute;
right: 0;
margin-bottom: 15px;
} }
} }
@ -5940,7 +5942,7 @@ body.no-gpu {
.modal-window { .modal-window {
height: 330px; height: 330px;
max-height: 330px; max-height: 330px;
width: 800px; width: 740px;
max-width: 800px; max-width: 800px;
overflow: hidden; overflow: hidden;

View file

@ -50,17 +50,14 @@
<mediaitem-artwork :url="currentArtUrl"></mediaitem-artwork> <mediaitem-artwork :url="currentArtUrl"></mediaitem-artwork>
</div> </div>
<div class="playback-info"> <div class="playback-info">
<div class="song-name" style="-webkit-box-orient: horizontal;" <div class="song-name"
:class="[isElementOverflowing('#app-main > div.app-chrome > div.app-chrome--center > div > div > div.playback-info > div.song-name') ? 'marquee' : '']" :class="[isElementOverflowing('#app-main > div.app-chrome > div.app-chrome--center > div > div > div.playback-info > div.song-name') ? 'marquee' : '']">
:style="[mk.nowPlayingItem['attributes']['contentRating'] == 'explicit' || mk.nowPlayingItem['attributes']['lossless'] == true ? {'margin-left' : '23px'} : {'margin-left' : '0px'} ]">
{{ mk.nowPlayingItem["attributes"]["name"] }} {{ mk.nowPlayingItem["attributes"]["name"] }}
<div class="explicit-icon" <div class="explicit-icon"
v-if="mk.nowPlayingItem['attributes']['contentRating'] == 'explicit'" v-if="mk.nowPlayingItem['attributes']['contentRating'] == 'explicit'"
style="display: inline-block"></div> style="display: inline-block"></div>
<div class="ppe-icon"
v-if="app.cfg.advanced.ciderPPE == true"
style="display: inline-block"></div>
</div> </div>
<div class="audio-type ppe-icon" v-if="cfg.advanced.ciderPPE == true"></div>
<div class="song-artist-album"> <div class="song-artist-album">
<div class="song-artist-album-content" <div class="song-artist-album-content"
:class="[isElementOverflowing('#app-main > .app-chrome .app-chrome-item > .app-playback-controls > div >.song-artist-album > .song-artist-album-content') ? 'marquee' : '']" :class="[isElementOverflowing('#app-main > .app-chrome .app-chrome-item > .app-playback-controls > div >.song-artist-album > .song-artist-album-content') ? 'marquee' : '']"
@ -83,8 +80,8 @@
<div class="song-duration" <div class="song-duration"
style="justify-content: space-between; height: 1px;" style="justify-content: space-between; height: 1px;"
:style="[chrome.progresshover ? {'display': 'flex'} : {'display' : 'none'} ]"> :style="[chrome.progresshover ? {'display': 'flex'} : {'display' : 'none'} ]">
<p style="width: auto">{{ convertToMins(getSongProgress()) }}</p> <p style="width: auto">{{ convertTime(getSongProgress()) }}</p>
<p style="width: auto">{{ convertToMins(mk.currentPlaybackDuration) }} <p style="width: auto">{{ convertTime(mk.currentPlaybackDuration) }}
</p> </p>
</div> </div>
@ -111,7 +108,7 @@
<div class="app-chrome-item volume display--large"> <div class="app-chrome-item volume display--large">
<button class="volume-button--small volume" @click="muteButtonPressed()" <button class="volume-button--small volume" @click="muteButtonPressed()"
:class="{'active': this.cfg.audio.volume == 0}"></button> :class="{'active': this.cfg.audio.volume == 0}"></button>
<input type="range" class="" @wheel="volumeWheel" step="0.01" min="0" :max="cfg.audio.maxVolume" <input type="range" @wheel="volumeWheel" :step="cfg.audio.volumeStep" min="0" :max="cfg.audio.maxVolume"
v-model="mk.volume" v-if="typeof mk.volume != 'undefined'" @change="checkMuteChange()"> v-model="mk.volume" v-if="typeof mk.volume != 'undefined'" @change="checkMuteChange()">
</div> </div>
<div class="app-chrome-item generic"> <div class="app-chrome-item generic">

View file

@ -23,11 +23,6 @@
<input tabindex="0" type="range" class="eq-slider mini" orient="vertical" min="-15" max="15" step="1" v-model="$root.cfg.audio.equalizer.vibrantBass" @change="changeVibrantBass()"> <input tabindex="0" type="range" class="eq-slider mini" orient="vertical" min="-15" max="15" step="1" v-model="$root.cfg.audio.equalizer.vibrantBass" @change="changeVibrantBass()">
Vibrant Bass Vibrant Bass
</div> </div>
<div class="input-container mini">
<input tabindex="0" type="number" class="eq-freq" orient="vertical" min="-12" max="12" step="0.1" v-model="$root.cfg.audio.equalizer.preamp" @change="changePreamp()">
<input tabindex="0" type="range" class="eq-slider mini" orient="vertical" min="-12" max="12" step="0.1" v-model="$root.cfg.audio.equalizer.preamp" @change="changePreamp()">
Preamp
</div>
<div class="input-container mini"> <div class="input-container mini">
{{$root.cfg.audio.equalizer.mix}} {{$root.cfg.audio.equalizer.mix}}
<input tabindex="0" type="range" class="eq-slider mini" orient="vertical" min="0" max="2" step="0.1" v-model="$root.cfg.audio.equalizer.mix" @change="changeMix()"> <input tabindex="0" type="range" class="eq-slider mini" orient="vertical" min="0" max="2" step="0.1" v-model="$root.cfg.audio.equalizer.mix" @change="changeMix()">
@ -128,7 +123,6 @@
this.frequencies = [] this.frequencies = []
this.gain = [] this.gain = []
this.Q = [] this.Q = []
this.preamp = 0
this.mix = 1 this.mix = 1
this.vibrantBass = 0 this.vibrantBass = 0
this.userGenerated = true this.userGenerated = true
@ -140,7 +134,6 @@
'frequencies': [32, 63, 125, 250, 500, 1000, 2000, 4000, 8000, 16000], 'frequencies': [32, 63, 125, 250, 500, 1000, 2000, 4000, 8000, 16000],
'gain': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'gain': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
'Q': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'Q': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
'preamp': 0,
'mix': 1, 'mix': 1,
'vibrantBass': 0, 'vibrantBass': 0,
'userGenerated': false 'userGenerated': false
@ -150,7 +143,6 @@
'frequencies': [32, 75, 125, 197, 500, 1000, 2000, 3040, 8000, 16000], 'frequencies': [32, 75, 125, 197, 500, 1000, 2000, 3040, 8000, 16000],
'gain': [0, 2.1, 0, 0.8, 0, 0, 0, -1.5, 0, 0], 'gain': [0, 2.1, 0, 0.8, 0, 0, 0, -1.5, 0, 0],
'Q': [1, 0.7, 1, 1.5, 1, 1, 1, 2, 1, 1], 'Q': [1, 0.7, 1, 1.5, 1, 1, 1, 2, 1, 1],
'preamp': 0,
'mix': 1, 'mix': 1,
'vibrantBass': 0, 'vibrantBass': 0,
'userGenerated': false 'userGenerated': false
@ -160,7 +152,6 @@
'frequencies': [32, 63, 125, 250, 466, 1000, 2000, 4000, 8000, 20000], 'frequencies': [32, 63, 125, 250, 466, 1000, 2000, 4000, 8000, 20000],
'gain': [0, 0, 0, 0, -2, 0, 0, 0, 0, 10], 'gain': [0, 0, 0, 0, -2, 0, 0, 0, 0, 10],
'Q': [1, 1, 1, 1, 0.6, 1, 1, 1, 1, 0.1], 'Q': [1, 1, 1, 1, 0.6, 1, 1, 1, 1, 0.1],
'preamp': 0,
'mix': 1, 'mix': 1,
'vibrantBass': 0, 'vibrantBass': 0,
'userGenerated': false 'userGenerated': false
@ -170,7 +161,6 @@
'frequencies': [32, 75, 125, 220, 700, 1000, 2000, 4000, 10000, 16000], 'frequencies': [32, 75, 125, 220, 700, 1000, 2000, 4000, 10000, 16000],
'gain': [0, -8, 0, -0.1, -3, 0, 0, 0, 4, 0], 'gain': [0, -8, 0, -0.1, -3, 0, 0, 0, 4, 0],
'Q': [1, 0.2, 1, 2.0, 1.4, 1, 1, 1, 0.1, 1], 'Q': [1, 0.2, 1, 2.0, 1.4, 1, 1, 1, 0.1, 1],
'preamp': 0,
'mix': 1, 'mix': 1,
'vibrantBass': 0, 'vibrantBass': 0,
'userGenerated': false 'userGenerated': false
@ -180,7 +170,6 @@
'frequencies': [20, 63, 125, 250, 400, 1000, 2000, 4000, 8000, 20000], 'frequencies': [20, 63, 125, 250, 400, 1000, 2000, 4000, 8000, 20000],
'gain': [-22, 0, 0, 0, -3, 0, 1.8, 0, 0, 3.5], 'gain': [-22, 0, 0, 0, -3, 0, 1.8, 0, 0, 3.5],
'Q': [0.3, 1, 1, 1, 2.0, 1, 0.7, 1, 1, 0.8], 'Q': [0.3, 1, 1, 1, 2.0, 1, 0.7, 1, 1, 0.8],
'preamp': 0,
'mix': 1, 'mix': 1,
'vibrantBass': 0, 'vibrantBass': 0,
'userGenerated': false 'userGenerated': false
@ -190,7 +179,6 @@
'frequencies': [20, 63, 155, 250, 500, 1000, 2000, 5000, 11000, 16000], 'frequencies': [20, 63, 155, 250, 500, 1000, 2000, 5000, 11000, 16000],
'gain': [-15, 0, -3, 0, 0, 0, 0, 3.1, 0, 0], 'gain': [-15, 0, -3, 0, 0, 0, 0, 3.1, 0, 0],
'Q': [0.5, 1, 2, 1, 1, 1, 1, 1.5, 0.1, 1], 'Q': [0.5, 1, 2, 1, 1, 1, 1, 1.5, 0.1, 1],
'preamp': 0,
'mix': 1, 'mix': 1,
'vibrantBass': 0, 'vibrantBass': 0,
'userGenerated': false 'userGenerated': false
@ -200,7 +188,6 @@
'frequencies': [32, 63, 125, 250, 500, 1128, 2000, 4057, 8000, 16000], 'frequencies': [32, 63, 125, 250, 500, 1128, 2000, 4057, 8000, 16000],
'gain': [0, 0, 0, 0, 0, 2, 0, -6.4, 0, 0], 'gain': [0, 0, 0, 0, 0, 2, 0, -6.4, 0, 0],
'Q': [1, 1, 1, 1, 1, 2, 1, 1, 1, 1], 'Q': [1, 1, 1, 1, 1, 2, 1, 1, 1, 1],
'preamp': 0,
'mix': 1, 'mix': 1,
'vibrantBass': 0, 'vibrantBass': 0,
'userGenerated': false 'userGenerated': false
@ -210,7 +197,6 @@
'frequencies': [35, 63, 125, 250, 500, 800, 2000, 4000, 8000, 20000], 'frequencies': [35, 63, 125, 250, 500, 800, 2000, 4000, 8000, 20000],
'gain': [5, 0, 0, 0, 0, -5, 0, 0, 0, 5], 'gain': [5, 0, 0, 0, 0, -5, 0, 0, 0, 5],
'Q': [0.1, 1, 1, 1, 1, 0.6, 1, 1, 1, 0.2], 'Q': [0.1, 1, 1, 1, 1, 0.6, 1, 1, 1, 0.2],
'preamp': 0,
'mix': 1, 'mix': 1,
'vibrantBass': 0, 'vibrantBass': 0,
'userGenerated': false 'userGenerated': false
@ -221,7 +207,6 @@
'frequencies': [45.53,88.06,116.18,161.3,247.05,295.6,365.79,495.13,716.85,960.76], 'frequencies': [45.53,88.06,116.18,161.3,247.05,295.6,365.79,495.13,716.85,960.76],
'gain': [-0.36,4.07,-1.3,1.92,0.77,-0.53,-1.33,0.44,0.46,-0.5], 'gain': [-0.36,4.07,-1.3,1.92,0.77,-0.53,-1.33,0.44,0.46,-0.5],
'Q': [1.768,0.625,5,8.409,10,16.82,5.946,7.071,20,10], 'Q': [1.768,0.625,5,8.409,10,16.82,5.946,7.071,20,10],
'preamp': -2,
'mix': 1, 'mix': 1,
'vibrantBass': 0, 'vibrantBass': 0,
'userGenerated': false 'userGenerated': false
@ -232,7 +217,6 @@
'frequencies': [32, 63, 125, 250, 500, 1000, 2000, 4000, 8000, 16000], 'frequencies': [32, 63, 125, 250, 500, 1000, 2000, 4000, 8000, 16000],
'gain': [2.7, 2.2, 1.6, 1.4, 0.6, 0, 0, 0, 0, 0], 'gain': [2.7, 2.2, 1.6, 1.4, 0.6, 0, 0, 0, 0, 0],
'Q': [1.4, 1.4, 1.4, 1.4, 1.4, 1, 1, 1, 1, 1], 'Q': [1.4, 1.4, 1.4, 1.4, 1.4, 1, 1, 1, 1, 1],
'preamp': 0,
'mix': 1, 'mix': 1,
'vibrantBass': 0, 'vibrantBass': 0,
'userGenerated': false 'userGenerated': false
@ -242,7 +226,6 @@
'frequencies': [32, 63, 160, 250, 500, 1000, 2000, 3500, 8000, 20000], 'frequencies': [32, 63, 160, 250, 500, 1000, 2000, 3500, 8000, 20000],
'gain': [2.7, 2.2, 1.6, 1.4, 0.6, 0, 0, 0, 0, 0], 'gain': [2.7, 2.2, 1.6, 1.4, 0.6, 0, 0, 0, 0, 0],
'Q': [0.7, 0.7, 0.7, 0.7, 0.7, 1, 1, 1, 1, 1], 'Q': [0.7, 0.7, 0.7, 0.7, 0.7, 1, 1, 1, 1, 1],
'preamp': 0,
'mix': 1, 'mix': 1,
'vibrantBass': 0, 'vibrantBass': 0,
'userGenerated': false 'userGenerated': false
@ -335,16 +318,18 @@
CiderAudio.audioNodes.vibrantbassNode[i].gain.value = app.cfg.audio.vibrantBass.gain[i] * (app.cfg.audio.equalizer.vibrantBass / 10); CiderAudio.audioNodes.vibrantbassNode[i].gain.value = app.cfg.audio.vibrantBass.gain[i] * (app.cfg.audio.equalizer.vibrantBass / 10);
} }
}, },
changePreamp() {
CiderAudio.audioNodes.preampNode.gain.value = app.cfg.audio.equalizer.preamp;
},
changeMix() { changeMix() {
for (var i = 0; i < 10; i++) { for (var i = 0; i < 10; i++) {
CiderAudio.audioNodes.audioBands[i].gain.value = app.cfg.audio.equalizer.gain[i] * app.cfg.audio.equalizer.mix CiderAudio.audioNodes.audioBands[i].gain.value = app.cfg.audio.equalizer.gain[i] * app.cfg.audio.equalizer.mix
} }
}, },
changePreamp() {
/** if (CiderAudio.audioNodes.llpwEnabled === 1) {CiderAudio.audioNodes.preampNode.gain.value = (-Math.max(...app.cfg.audio.equalizer.gain.concat(CiderAudio.audioNodes.llpw[23].gain.value)));}
else {CiderAudio.audioNodes.preampNode.gain.value = (-Math.max(...app.cfg.audio.equalizer.gain));} */
},
changeGain(i) { changeGain(i) {
CiderAudio.audioNodes.audioBands[i].gain.value = app.cfg.audio.equalizer.gain[i] * app.cfg.audio.equalizer.mix CiderAudio.audioNodes.audioBands[i].gain.value = app.cfg.audio.equalizer.gain[i] * app.cfg.audio.equalizer.mix
this.changePreamp()
}, },
changeFreq(i) { changeFreq(i) {
CiderAudio.audioNodes.audioBands[i].frequency.value = app.cfg.audio.equalizer.frequencies[i] CiderAudio.audioNodes.audioBands[i].frequency.value = app.cfg.audio.equalizer.frequencies[i]
@ -357,10 +342,10 @@
'frequencies': [32, 63, 125, 250, 500, 1000, 2000, 4000, 8000, 16000], 'frequencies': [32, 63, 125, 250, 500, 1000, 2000, 4000, 8000, 16000],
'gain': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'gain': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
'Q': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], 'Q': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
'preamp': 0,
'mix': 1, 'mix': 1,
'vibrantBass': 0, 'vibrantBass': 0,
}) })
CiderAudio.audioNodes.preampNode.gain.value = 0;
if (app.cfg.audio.equalizer.userGenerated) { if (app.cfg.audio.equalizer.userGenerated) {
this.saveSelectedPreset() this.saveSelectedPreset()
} }
@ -375,7 +360,6 @@
newPreset.frequencies = eqSettings.frequencies newPreset.frequencies = eqSettings.frequencies
newPreset.gain = eqSettings.gain newPreset.gain = eqSettings.gain
newPreset.Q = eqSettings.Q newPreset.Q = eqSettings.Q
newPreset.preamp = eqSettings.preamp
newPreset.mix = eqSettings.mix newPreset.mix = eqSettings.mix
newPreset.vibrantBass = eqSettings.vibrantBass newPreset.vibrantBass = eqSettings.vibrantBass
app.cfg.audio.equalizer.presets.push(newPreset) app.cfg.audio.equalizer.presets.push(newPreset)
@ -393,14 +377,13 @@
preset.frequencies = app.cfg.audio.equalizer.frequencies preset.frequencies = app.cfg.audio.equalizer.frequencies
preset.gain = app.cfg.audio.equalizer.gain preset.gain = app.cfg.audio.equalizer.gain
preset.Q = app.cfg.audio.equalizer.Q preset.Q = app.cfg.audio.equalizer.Q
preset.preamp = app.cfg.audio.equalizer.preamp
preset.mix = app.cfg.audio.equalizer.mix preset.mix = app.cfg.audio.equalizer.mix
preset.vibrantBass = app.cfg.audio.equalizer.vibrantBass preset.vibrantBass = app.cfg.audio.equalizer.vibrantBass
notyf.success("Saved Preset") notyf.success("Saved Preset")
}, },
exportPreset() { exportPreset() {
const preset = app.cfg.audio.equalizer.presets.find(p => p.preset == app.cfg.audio.equalizer.preset) const preset = app.cfg.audio.equalizer.presets.find(p => p.preset == app.cfg.audio.equalizer.preset)
const jsonObj = {"name": preset.name, "author": app.chrome.userinfo.attributes.name, "frequency": preset.frequencies, "gain": preset.gain, "q": preset.Q, "preamp": preset.preamp, "mix": preset.mix, "vibrantBass": preset.vibrantBass}; const jsonObj = {"name": preset.name, "author": app.chrome.userinfo.attributes.name, "frequency": preset.frequencies, "gain": preset.gain, "q": preset.Q, "mix": preset.mix, "vibrantBass": preset.vibrantBass};
ipcRenderer.send("export-eq", jsonObj) ipcRenderer.send("export-eq", jsonObj)
}, },
importPreset() { importPreset() {
@ -411,7 +394,6 @@
newPreset.frequencies = result.frequency newPreset.frequencies = result.frequency
newPreset.gain = result.gain newPreset.gain = result.gain
newPreset.Q = result.q newPreset.Q = result.q
newPreset.preamp = result.preamp
newPreset.mix = result.mix newPreset.mix = result.mix
newPreset.vibrantBass = result.vibrantBass newPreset.vibrantBass = result.vibrantBass
app.cfg.audio.equalizer.presets.push(newPreset) app.cfg.audio.equalizer.presets.push(newPreset)
@ -423,7 +405,6 @@
}, },
applyPreset(preset) { applyPreset(preset) {
Object.assign(this.$root.cfg.audio.equalizer, preset) Object.assign(this.$root.cfg.audio.equalizer, preset)
this.changePreamp()
this.changeVibrantBass() this.changeVibrantBass()
for (var i = 0; i < 10; i++) { for (var i = 0; i < 10; i++) {
this.changeGain(i) this.changeGain(i)

View file

@ -41,8 +41,8 @@
<div class="song-progress"> <div class="song-progress">
<div class="song-duration" style="justify-content: space-between; height: 1px;" <div class="song-duration" style="justify-content: space-between; height: 1px;"
:style="[app.chrome.progresshover ? {'display': 'flex'} : {'display' : 'none'} ]"> :style="[app.chrome.progresshover ? {'display': 'flex'} : {'display' : 'none'} ]">
<p style="width: auto">{{ app.convertToMins(app.getSongProgress()) }}</p> <p style="width: auto">{{ app.convertTime(app.getSongProgress()) }}</p>
<p style="width: auto">{{ app.convertToMins(app.mk.currentPlaybackDuration) }}</p> <p style="width: auto">{{ app.convertTime(app.mk.currentPlaybackDuration) }}</p>
</div> </div>
<input type="range" step="0.01" min="0" :style="app.progressBarStyle()" <input type="range" step="0.01" min="0" :style="app.progressBarStyle()"
@ -80,7 +80,7 @@
<div class="app-chrome-item volume display--large"> <div class="app-chrome-item volume display--large">
<div class="input-container"> <div class="input-container">
<button class="volume-button--small volume" @click="app.muteButtonPressed()" :class="{'active': app.cfg.audio.volume == 0}"></button> <button class="volume-button--small volume" @click="app.muteButtonPressed()" :class="{'active': app.cfg.audio.volume == 0}"></button>
<input type="range" class="slider" @wheel="app.volumeWheel" step="0.01" min="0" :max="$root.cfg.audio.maxVolume" v-model="app.mk.volume" <input type="range" class="slider" @wheel="app.volumeWheel" :step="app.cfg.audio.volumeStep" min="0" :max="$root.cfg.audio.maxVolume" v-model="app.mk.volume"
v-if="typeof app.mk.volume != 'undefined'" @change="app.checkMuteChange()"> v-if="typeof app.mk.volume != 'undefined'" @change="app.checkMuteChange()">
</div> </div>
</div> </div>

View file

@ -29,7 +29,7 @@
<div class="loadbar-sound"></div> <div class="loadbar-sound"></div>
</div> </div>
</div> </div>
<div class="artwork" v-if="showArtwork == true"> <div class="artwork" v-if="showArtwork == true && (showIndex == false ||(showIndex == true && showIndexPlaylist != false)) ">
<mediaitem-artwork <mediaitem-artwork
:url="item.attributes.artwork ? item.attributes.artwork.url : ''" :url="item.attributes.artwork ? item.attributes.artwork.url : ''"
:size="48" :size="48"
@ -410,7 +410,21 @@
app.mkapi(self.item.attributes.playParams.kind, false, self.item.relationships.catalog.data[0].id).then(u => { self.app.copyToClipboard((u.data.data.length && u.data.data.length > 0) ? u.data.data[0].attributes.url : u.data.data.attributes.url) }) app.mkapi(self.item.attributes.playParams.kind, false, self.item.relationships.catalog.data[0].id).then(u => { self.app.copyToClipboard((u.data.data.length && u.data.data.length > 0) ? u.data.data[0].attributes.url : u.data.data.attributes.url) })
} }
} else { } else {
self.app.copyToClipboard(self.item.attributes.url)} self.app.copyToClipboard(self.item.attributes.url)
}
}
},
{
"icon": "./assets/feather/share.svg",
"name": `${app.getLz('action.share')} (song.link)`,
"action": function () {
if (!self.item.attributes.url && self.item.relationships) {
if (self.item.relationships.catalog) {
app.mkapi(self.item.attributes.playParams.kind, false, self.item.relationships.catalog.data[0].id).then(u => { self.app.songLinkShare((u.data.data.length && u.data.data.length > 0) ? u.data.data[0].attributes.url : u.data.data.attributes.url) })
}
} else {
self.app.songLinkShare(self.item.attributes.url)
}
} }
} }
] ]
@ -561,7 +575,8 @@
} }
else { else {
app.playMediaItemById(item.attributes.playParams.id ?? item.id, item.attributes.playParams.kind ?? item.type, item.attributes.playParams.isLibrary ?? false, item.attributes.url) app.playMediaItemById(item.attributes.playParams.id ?? item.id, item.attributes.playParams.kind ?? item.type, item.attributes.playParams.isLibrary ?? false, item.attributes.url)
}}) }
})
}, },
route() { route() {
let kind = (this.item.attributes.playParams ? (this.item.attributes.playParams.kind ?? (this.item.type ?? '')) : (this.item.type ?? '')); let kind = (this.item.attributes.playParams ? (this.item.attributes.playParams.kind ?? (this.item.type ?? '')) : (this.item.type ?? ''));

View file

@ -1,244 +0,0 @@
<script type="text/x-template" id="mediaitem-square-large">
<div ref="main" style="position: relative; display: inline-flex;" @contextmenu="contextMenu">
<div @click.self='app.routeView(item)'
class="cd-mediaitem-square-large" ref="main2">
<div class="artwork">
<mediaitem-artwork
:url="item.attributes.artwork ? item.attributes.artwork.url : ''"
:video="(item.attributes != null && item.attributes.editorialVideo != null) ? (item.attributes.editorialVideo.motionDetailSquare ? item.attributes.editorialVideo.motionDetailSquare.video : (item.attributes.editorialVideo.motionSquareVideo1x1 ? item.attributes.editorialVideo.motionSquareVideo1x1.video : '')) : '' "
size="300"
:type="item.type"></mediaitem-artwork>
</div>
<div class="cd-mediaitem-square-large-overlay" @click.self='app.routeView(item)'>
<div class="button" style="
border-radius: 50%;
background: rgba(50,50,50,0.7);"
:style="[(!(item.attributes.playParams ? (item.attributes.playParams.kind ?? (item.type ?? '')): (item.type ?? '')).includes('radioStation') && !(item.attributes.playParams ? (item.attributes.playParams.kind ?? (item.type ?? '')): (item.type ?? '')).includes('song')) ? {'margin': '140px','position': 'absolute',
width: '40px',
height: '40px',} :
{margin: '35px', 'position': 'absolute',
width: '120px',
height: '120px',}]" @click="app.playMediaItem(item)">
<%- include("../svg/play.svg") %>
</div>
<div class="button" style="
border-radius: 50%;
background: rgba(50,50,50,0.7);"
:style="[(!(item.attributes.playParams ? (item.attributes.playParams.kind ?? (item.type ?? '')): (item.type ?? '')).includes('radioStation') && !(item.attributes.playParams ? (item.attributes.playParams.kind ?? (item.type ?? '')): (item.type ?? '')).includes('song')) ? {'position': 'absolute','margin': '140px',
width: '40px', 'margin-left': '10px',
height: '40px',} :
{display: 'none',margin: '35px','position': 'absolute',
width: '120px',
height: '120px',}]" @click="clickContext() ">
<%- include("../svg/more.svg") %>
</div>
</div>
<div class="title text-overflow-elipsis" @click='app.routeView(item)'>
{{ item.attributes.name ?? '' }}
</div>
<div class="subtitle text-overflow-elipsis item-navigate" v-if="item.attributes.artistName" :style = "{'z-index': ((item.attributes.editorialNotes == null) && item.attributes.artistName) ? '4' : ''}" @click="if(item.attributes.artistName)app.searchAndNavigate(item,'artist')">
{{ item.attributes.artistName ?? '' }}
</div>
</div>
<div class="cd-mediaitem-square-large-overlay" @click.self='app.routeView(item)' tabindex="0">
<div class="button" style="
border-radius: 50%;
background: rgba(50,50,50,0.7);"
:style="[(!(item.attributes.playParams ? (item.attributes.playParams.kind ?? (item.type ?? '')): (item.type ?? '')).includes('radioStation') && !(item.attributes.playParams ? (item.attributes.playParams.kind ?? (item.type ?? '')): (item.type ?? '')).includes('song')) ? {'margin': '140px','position': 'absolute',
width: '40px',
height: '40px',} :
{margin: '35px','position': 'absolute',
width: '120px',
height: '120px',}]" @click="app.playMediaItem(item)">
<%- include("../svg/play.svg") %>
</div>
<div class="button" style="
border-radius: 50%;
background: rgba(50,50,50,0.7);"
:style="[(!(item.attributes.playParams ? (item.attributes.playParams.kind ?? (item.type ?? '')): (item.type ?? '')).includes('radioStation') && !(item.attributes.playParams ? (item.attributes.playParams.kind ?? (item.type ?? '')): (item.type ?? '')).includes('song')) ? {'position': 'absolute','margin': '140px',
width: '40px', 'margin-left': '10px',
height: '40px',} :
{display: 'none',margin: '35px','position': 'absolute',
width: '120px',
height: '120px',}]" @click="console.log('as');contextMenu()">
<%- include("../svg/more.svg") %>
</div>
</div>
</div>
</script>
<script>
Vue.component('mediaitem-square-large', {
template: '#mediaitem-square-large',
props: ['item'],
data: function () {
return {
isVisible: false,
addedToLibrary: false,
app: this.$root,
}
},
methods: {
clickContext() {
var evt = document.createEvent('MouseEvent');
var rect = this.$refs.main2.getBoundingClientRect();
evt.initMouseEvent(
"contextmenu",
true /* bubble */, true /* cancelable */,
window, null,
0, 0, rect.x + 100, rect.y + 100, /* coordinates */
false, false, false, false, /* modifier keys */
0 /*left*/, null
);
this.$refs.main.dispatchEvent(evt);
},
async isInLibrary() {
if (this.item.type && !this.item.type.includes("library")) {
var params = {
"fields[playlists]": "inLibrary",
"fields[albums]": "inLibrary",
"relate": "library",
"extend": this.revisedRandId()
}
var res = await app.mkapi(this.item.attributes.playParams.kind ?? this.item.type, this.item.attributes.playParams.isLibrary ?? false, this.item.attributes.playParams.id ?? this.item.id, params);
this.addedToLibrary = (res && res.attributes && res.attributes.inLibrary) ? res.attributes.inLibrary : false
} else {
this.addedToLibrary = true
}
},
async removeFromLibrary(id) {
var params = {
"fields[playlists]": "inLibrary",
"fields[songs]": "inLibrary",
"fields[albums]": "inLibrary",
"relate": "library",
"extend": this.revisedRandId()
}
var id = this.item.id ?? this.item.attributes.playParams.id
var res = await app.mkapi(this.item.attributes.playParams.kind ?? this.item.type, this.item.attributes.playParams.isLibrary ?? false, this.item.attributes.playParams.id ?? this.item.id, params);
if (res && res.relationships && res.relationships.library && res.relationships.library.data && res.relationships.library.data.length > 0) {
id = res.relationships.library.data[0].id
}
let kind = this.item.attributes.playParams.kind ?? this.item.type ?? '';
var truekind = (!kind.endsWith("s")) ? (kind + "s") : kind;
app.mk.api.v3.music(`v1/me/library/${truekind}/${id.toString()}`,{},
{
fetchOptions: {
method: "DELETE"
}})
this.addedToLibrary = true
},
async contextMenu(event) {
if (!event) { event = this.$refs.main } else { console.log(event) }
let self = this
let useMenu = "normal"
await this.isInLibrary()
if (app.selectedMediaItems.length <= 1) {
app.selectedMediaItems = []
app.select_selectMediaItem(this.item.attributes.playParams.id ?? this.item.id, this.item.attributes.playParams.kind ?? this.item.type, this.index, this.guid, this.item.attributes.playParams.isLibrary ?? false)
} else {
useMenu = "multiple"
}
let menus = {
multiple: {
items: [
{
name: this.$root.getLz('action.playTracksNext').replace("${app.selectedMediaItems.length}", app.selectedMediaItems.length),
action: () => {
let itemsToPlay = {}
app.selectedMediaItems.forEach(item => {
if (!itemsToPlay[item.kind]) {
itemsToPlay[item.kind] = []
}
itemsToPlay[item.kind].push(item.id)
})
// loop through itemsToPlay
for (let kind in itemsToPlay) {
let ids = itemsToPlay[kind]
if (ids.length > 0) {
app.mk.playNext({ [kind + "s"]: itemsToPlay[kind] })
}
}
console.log(itemsToPlay)
app.selectedMediaItems = []
}
},
{
name: app.getLz('action.playTracksLater').replace("${app.selectedMediaItems.length}", app.selectedMediaItems.length),
action: () => {
let itemsToPlay = {}
app.selectedMediaItems.forEach(item => {
if (!itemsToPlay[item.kind]) {
itemsToPlay[item.kind] = []
}
itemsToPlay[item.kind].push(item.id)
})
// loop through itemsToPlay
for (let kind in itemsToPlay) {
let ids = itemsToPlay[kind]
if (ids.length > 0) {
app.mk.playLater({ [kind + "s"]: itemsToPlay[kind] })
}
}
app.selectedMediaItems = []
}
},
]
},
normal: {
items: [
{
"name": "Play Next",
"action": function () {
app.mk.playNext({[self.item.attributes.playParams.kind ?? self.item.type]: self.item.attributes.playParams.id ?? self.item.id})
app.mk.queue._reindex()
app.selectedMediaItems = []
}
},
{
"name": "Play Later",
"action": function () {
app.mk.playLater({[self.item.attributes.playParams.kind ?? self.item.type]: self.item.attributes.playParams.id ?? self.item.id})
app.mk.queue._reindex()
app.selectedMediaItems = []
}
},
{
"id": "addToPlaylist",
"name": "Add to Playlist...",
"action": function () {
app.promptAddToPlaylist()
}
},
{
"name": (this.addedToLibrary) ? "Remove from Library..." : "Add to Library...",
"action": async function () {
let item_id = self.item.attributes.playParams.id ?? self.item.id;
let data_type = self.item.attributes.playParams.kind ?? self.item.type;
if (self.addedToLibrary != true) {
console.log("add");
app.addToLibrary(item_id);
self.addedToLibrary = true
} else {
console.log("remove");
await self.removeFromLibrary(item_id);
self.addedToLibrary = false
}
;
}
},
{
"name": this.$root.getLz('term.share'),
"action": function () {
self.app.copyToClipboard(self.item.attributes.url)
}
}
]
}
}
CiderContextMenu.Create(event, menus[useMenu])
},
}
});
</script>

View file

@ -1,293 +0,0 @@
<script type="text/x-template" id="mediaitem-square-sp">
<div ref="main" style="position: relative; display: inline-flex;" @contextmenu="contextMenu" v-observe-visibility="{callback: visibilityChanged}" width="250px">
<div @click.self='app.routeView(item)' v-if="isVisible"
class="cd-mediaitem-square-sp" ref="main2"
:style="{'--spcolor' : (item.attributes.artwork.bgColor != null) ? ('#'+item.attributes.artwork.bgColor) : `black`}">
<div class="artwork">
<mediaitem-artwork
:url="item.attributes.artwork ? item.attributes.artwork.url : ''"
size="300"
:video="(item.attributes != null && item.attributes.editorialVideo != null) ? (item.attributes.editorialVideo.motionDetailSquare ? item.attributes.editorialVideo.motionDetailSquare.video : (item.attributes.editorialVideo.motionSquareVideo1x1 ? item.attributes.editorialVideo.motionSquareVideo1x1.video : '')) : '' "
:type="item.type"></mediaitem-artwork>
</div>
<div class="cd-mediaitem-square-large-overlay" @click.self='app.routeView(item)'>
<div class="button" style="
border-radius: 50%;
background: rgba(50,50,50,0.7);"
:style="[(!(item.attributes.playParams ? (item.attributes.playParams.kind ?? (item.type ?? '')): (item.type ?? '')).includes('radioStation') && !(item.attributes.playParams ? (item.attributes.playParams.kind ?? (item.type ?? '')): (item.type ?? '')).includes('song')) ? {'margin': '153px','position': 'absolute','margin-left': '153px',
width: '30px',
height: '30px',} :
{margin: '35px',display:'none',
width: '120px',
height: '120px',}]" @click="clickContext()">
<%- include("../svg/more.svg") %>
</div>
<div class="button" style="
border-radius: 50%;
background: rgba(50,50,50,0.7);"
:style="[(!(item.attributes.playParams ? (item.attributes.playParams.kind ?? (item.type ?? '')): (item.type ?? '')).includes('radioStation') && !(item.attributes.playParams ? (item.attributes.playParams.kind ?? (item.type ?? '')): (item.type ?? '')).includes('song')) ? {'position': 'absolute','margin': '153px',
width: '30px', 'margin-left': '8px',
height: '30px',} :
{margin: '35px','position': 'absolute',
width: '120px',
height: '120px',}]" @click="app.playMediaItem(item)">
<%- include("../svg/play.svg") %>
</div>
</div>
<div class="title text-overflow-elipsis"
:style="{'color' : (item.attributes.artwork.textColor1 != null) ? ('#'+item.attributes.artwork.textColor1) : `#eee`}"
style="font-weight: 600">
{{ item.attributes.name }}
</div>
<div class="subtitle text-overflow-elipsis "
:class="{'item-navigate': ((item.attributes.editorialNotes == null) && item.attributes.artistName)}"
:style="{ 'z-index': ((item.attributes.editorialNotes == null) && item.attributes.artistName) ? '4' : '' ,'color' : (item.attributes.artwork.textColor1 != null) ? ('#'+item.attributes.artwork.textColor1) : `#eee`}"
style="padding-left: 4px;padding-right: 4px; display: -webkit-box;-webkit-box-orient: vertical; -webkit-line-clamp: 2;white-space: normal;"
@click="subtitleSearchNavigate(item)"
>
{{ (item.attributes.editorialNotes != null) ? item.attributes.editorialNotes.short
:(item.attributes.artistName ?? '') }}
</div>
</div>
<div class="cd-mediaitem-square-large-overlay" @click.self='app.routeView(item)' tabindex="0" v-if="isVisible">
<div class="button" style="
border-radius: 50%;
background: rgba(50,50,50,0.7);"
:style="[(!(item.attributes.playParams ? (item.attributes.playParams.kind ?? (item.type ?? '')): (item.type ?? '')).includes('radioStation') && !(item.attributes.playParams ? (item.attributes.playParams.kind ?? (item.type ?? '')): (item.type ?? '')).includes('song')) ? {'margin': '153px','position': 'absolute','margin-left': '153px',
width: '30px',
height: '30px',} :
{margin: '35px','position': 'absolute', display: 'none',
width: '120px',
height: '120px',}]" @click="clickContext()">
<%- include("../svg/more.svg") %>
</div>
<div class="button" style="
border-radius: 50%;
background: rgba(50,50,50,0.7);"
:style="[(!(item.attributes.playParams ? (item.attributes.playParams.kind ?? (item.type ?? '')): (item.type ?? '')).includes('radioStation') && !(item.attributes.playParams ? (item.attributes.playParams.kind ?? (item.type ?? '')): (item.type ?? '')).includes('song')) ? {'position': 'absolute','margin': '153px',
width: '30px', 'margin-left': '8px',
height: '30px',} :
{margin: '35px','position': 'absolute',
width: '120px',
height: '120px',}]" @click="app.playMediaItem(item)">
<%- include("../svg/play.svg") %>
</div>
</div>
</div>
</script>
<script>
Vue.component('mediaitem-square-sp', {
template: '#mediaitem-square-sp',
props: ['item'],
data: function () {
return {
app: this.$root,
isVisible: true,
addedToLibrary : false,
}
},
methods: {
revisedRandId() {
return Math.random().toString(36).replace(/[^a-z]+/g, '').substr(2, 10);
},
async isInLibrary() {
if (this.item.type && !this.item.type.includes("library")) {
var params = {"fields[playlists]": "inLibrary", "fields[albums]": "inLibrary", "relate": "library", "extend": this.revisedRandId()}
var res = await app.mkapi(this.item.attributes.playParams.kind ?? this.item.type, this.item.attributes.playParams.isLibrary ?? false, this.item.attributes.playParams.id ?? this.item.id, params);
res = res.data.data[0]
this.addedToLibrary = (res && res.attributes && res.attributes.inLibrary) ? res.attributes.inLibrary : false
} else {
this.addedToLibrary = true
}
},
async removeFromLibrary(id) {
var params = {"fields[playlists]": "inLibrary","fields[songs]": "inLibrary", "fields[albums]": "inLibrary", "relate": "library", "extend": this.revisedRandId()}
var id = this.item.id ?? this.item.attributes.playParams.id
var res = await app.mkapi(this.item.attributes.playParams.kind ?? this.item.type, this.item.attributes.playParams.isLibrary ?? false, this.item.attributes.playParams.id ?? this.item.id, params);
res = res.data.data[0]
if (res && res.relationships && res.relationships.library && res.relationships.library.data && res.relationships.library.data.length > 0) {
id = res.relationships.library.data[0].id
}
let kind = this.item.attributes.playParams.kind ?? this.item.type ?? '';
var truekind = (!kind.endsWith("s")) ? (kind + "s") : kind;
app.mk.api.v3.music(`v1/me/library/${truekind}/${id.toString()}`,{},
{
fetchOptions: {
method: "DELETE"
}})
this.addedToLibrary = true
},
subtitleSearchNavigate(item) {
if((item.attributes.editorialNotes == null) && item.attributes.artistName)app.searchAndNavigate(item,'artist')
},
clickContext() {
var evt = document.createEvent('MouseEvent');
var rect = this.$refs.main2.getBoundingClientRect();
evt.initMouseEvent(
"contextmenu",
true /* bubble */, true /* cancelable */,
window, null,
0, 0, rect.x + 100, rect.y + 100, /* coordinates */
false, false, false, false, /* modifier keys */
0 /*left*/, null
);
this.$refs.main.dispatchEvent(evt);
}
,
visibilityChanged: function (isVisible, entry) {
this.isVisible = isVisible
},
async contextMenu(event) {
if (!event) {
event = this.$refs.main
} else {
console.log(event)
}
let self = this
let useMenu = "normal"
await this.isInLibrary()
if (app.selectedMediaItems.length <= 1) {
app.selectedMediaItems = []
app.select_selectMediaItem(this.item.attributes.playParams.id ?? this.item.id, this.item.attributes.playParams.kind ?? this.item.type, this.index, this.guid, this.item.attributes.playParams.isLibrary ?? false)
} else {
useMenu = "multiple"
}
let menus = {
multiple: {
items: [
{
name: app.getLz('action.playTracksNext').replace("${app.selectedMediaItems.length}", app.selectedMediaItems.length),
action: () => {
let itemsToPlay = {}
app.selectedMediaItems.forEach(item => {
if (!itemsToPlay[item.kind]) {
itemsToPlay[item.kind] = []
}
itemsToPlay[item.kind].push(item.id)
})
// loop through itemsToPlay
for (let kind in itemsToPlay) {
let ids = itemsToPlay[kind]
if (ids.length > 0) {
app.mk.playNext({[kind + "s"]: itemsToPlay[kind]})
}
}
console.log(itemsToPlay)
app.selectedMediaItems = []
}
},
{
name: app.getLz('action.playTracksLater').replace("${app.selectedMediaItems.length}", app.selectedMediaItems.length),
action: () => {
let itemsToPlay = {}
app.selectedMediaItems.forEach(item => {
if (!itemsToPlay[item.kind]) {
itemsToPlay[item.kind] = []
}
itemsToPlay[item.kind].push(item.id)
})
// loop through itemsToPlay
for (let kind in itemsToPlay) {
let ids = itemsToPlay[kind]
if (ids.length > 0) {
app.mk.playLater({[kind + "s"]: itemsToPlay[kind]})
}
}
app.selectedMediaItems = []
}
},
]
},
normal: {
items: [
{
"name": "Play Next",
"action": function () {
app.mk.playNext({[self.item.attributes.playParams.kind ?? self.item.type]: self.item.attributes.playParams.id ?? self.item.id})
app.mk.queue._reindex()
app.selectedMediaItems = []
}
},
{
"name": "Play Later",
"action": function () {
app.mk.playLater({[self.item.attributes.playParams.kind ?? self.item.type]: self.item.attributes.playParams.id ?? self.item.id})
app.mk.queue._reindex()
app.selectedMediaItems = []
}
},
{
"id": "addToPlaylist",
"name": "Add to Playlist...",
"action": function () {
app.promptAddToPlaylist()
}
},
{
"id": "love",
"name": "Love",
"disabled": true,
"action": function () {
app.love(self.item)
}
},
{
"id": "unlove",
"name": "Unlove",
"disabled": true,
"action": function () {
app.unlove(self.item)
}
},
{
"id": "dislike",
"name": "Dislike",
"disabled": true,
"action": function () {
app.dislike(self.item)
}
},
{
"id": "undo_dislike",
"name": "Undo dislike",
"disabled": true,
"action": function () {
app.unlove(self.item)
}
},
{
"name": (this.addedToLibrary) ? "Remove from Library..." : "Add to Library...",
"action": async function () {
let item_id = self.item.attributes.playParams.id ?? self.item.id;
let data_type = self.item.attributes.playParams.kind ?? self.item.type;
if (self.addedToLibrary != true) { console.log("add"); app.addToLibrary(item_id); self.addedToLibrary = true}
else { console.log("remove"); await self.removeFromLibrary(item_id); self.addedToLibrary = false};
}
},
]
}
}
let rating = await app.getRating(self.item)
if(rating == 0) {
menus.normal.items.find(x => x.id == 'love').disabled = false
menus.normal.items.find(x => x.id == 'dislike').disabled = false
}else if(rating == 1) {
menus.normal.items.find(x => x.id == 'unlove').disabled = false
}else if(rating == -1) {
menus.normal.items.find(x => x.id == 'undo_dislike').disabled = false
}
if ((self.item.attributes.playParams.kind ?? self.item.type).includes("playlist")) {
// remove the add to playlist option by id "addToPlaylist" using the .filter() method
menus.normal.items = menus.normal.items.filter(function (item) {
return item.id != "addToPlaylist"
})
}
CiderContextMenu.Create(event, menus[useMenu])
},
}
});
</script>

View file

@ -402,6 +402,18 @@
}else { }else {
self.app.copyToClipboard(self.item.attributes.url)} self.app.copyToClipboard(self.item.attributes.url)}
} }
},
{
"icon": "./assets/feather/share.svg",
"name": `${app.getLz('action.share')} (song.link)`,
"action": function () {
if (!self.item.attributes.url && self.item.relationships){
if (self.item.relationships.catalog){
app.mkapi(self.item.attributes.playParams.kind, false, self.item.relationships.catalog.data[0].id).then(u => {self.app.songLinkShare((u.data.data.length && u.data.data.length > 0)? u.data.data[0].attributes.url : u.data.data.attributes.url)})
}
}else {
self.app.songLinkShare(self.item.attributes.url)}
}
} }
] ]
} }

View file

@ -6,11 +6,15 @@
<span id="mini-pin">📌</span> <span id="mini-pin">📌</span>
</div> </div>
<div class="player-exit" title="Close" @click="app.miniPlayer(false)"> <div class="player-exit" title="Close" @click="app.miniPlayer(false)">
<svg fill="#323232e3" xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21" <svg fill="#323232e3" width="21" height="21" viewBox="0 0 21 21" aria-role="presentation" focusable="false" xmlns="http://www.w3.org/2000/svg">
aria-role="presentation" focusable="false"> <defs>
<path <radialGradient gradientUnits="userSpaceOnUse" cx="10.5" cy="10.5" r="10.5" id="gradient-0">
d="M10.5 21C4.724 21 0 16.275 0 10.5S4.724 0 10.5 0 21 4.725 21 10.5 16.276 21 10.5 21zm-3.543-5.967a.96.96 0 00.693-.295l2.837-2.842 2.85 2.842c.167.167.41.295.693.295.552 0 1.001-.461 1.001-1.012 0-.281-.115-.512-.295-.704L11.899 10.5l2.85-2.855a.875.875 0 00.295-.68c0-.55-.45-.998-1.001-.998a.871.871 0 00-.668.295l-2.888 2.855-2.862-2.843a.891.891 0 00-.668-.281.99.99 0 00-1.001.986c0 .269.116.512.295.678L9.088 10.5l-2.837 2.843a.926.926 0 00-.295.678c0 .551.45 1.012 1.001 1.012z" <stop offset="0" style="stop-color: rgba(168, 163, 163, 1)"/>
fill-rule="nonzero"/> <stop offset="1" style="stop-color: rgba(118, 111, 111, 1)"/>
</radialGradient>
</defs>
<path d="M10.5 21C4.724 21 0 16.275 0 10.5S4.724 0 10.5 0 21 4.725 21 10.5 16.276 21 10.5 21zm-3.543-5.967a.96.96 0 00.693-.295l2.837-2.842 2.85 2.842c.167.167.41.295.693.295.552 0 1.001-.461 1.001-1.012 0-.281-.115-.512-.295-.704L11.899 10.5l2.85-2.855a.875.875 0 00.295-.68c0-.55-.45-.998-1.001-.998a.871.871 0 00-.668.295l-2.888 2.855-2.862-2.843a.891.891 0 00-.668-.281.99.99 0 00-1.001.986c0 .269.116.512.295.678L9.088 10.5l-2.837 2.843a.926.926 0 00-.295.678c0 .551.45 1.012 1.001 1.012z"
fill-rule="nonzero" style="stroke-miterlimit: 11; vector-effect: non-scaling-stroke; stroke-width: 31px; fill: url(#gradient-0);"/>
</svg> </svg>
</div> </div>
<div class="col artwork-col"> <div class="col artwork-col">
@ -44,8 +48,8 @@
<div class="song-progress"> <div class="song-progress">
<div class="song-duration" style="justify-content: space-between; height: 1px; margin-bottom: 1px;" <div class="song-duration" style="justify-content: space-between; height: 1px; margin-bottom: 1px;"
:style="[app.chrome.progresshover ? {'display': 'flex'} : {'display' : 'none'} ]"> :style="[app.chrome.progresshover ? {'display': 'flex'} : {'display' : 'none'} ]">
<p style="width: auto">{{ app.convertToMins(app.getSongProgress()) }}</p> <p style="width: auto">{{ app.convertTime(app.getSongProgress()) }}</p>
<p style="width: auto">{{ app.convertToMins(app.mk.currentPlaybackDuration) }}</p> <p style="width: auto">{{ app.convertTime(app.mk.currentPlaybackDuration) }}</p>
</div> </div>
<input type="range" step="0.01" min="0" :style="app.progressBarStyle()" <input type="range" step="0.01" min="0" :style="app.progressBarStyle()"
@ -83,7 +87,7 @@
<div class="app-chrome-item volume display--large"> <div class="app-chrome-item volume display--large">
<div class="input-container"> <div class="input-container">
<button class="volume-button--small volume" @click="app.muteButtonPressed()" :class="{'active': app.cfg.audio.volume == 0}"></button> <button class="volume-button--small volume" @click="app.muteButtonPressed()" :class="{'active': app.cfg.audio.volume == 0}"></button>
<input type="range" class="slider" @wheel="app.volumeWheel" step="0.01" min="0" max="1" v-model="app.mk.volume" <input type="range" class="slider" @wheel="app.volumeWheel" :step="app.cfg.audio.volumeStep" min="0" :max="app.cfg.audio.maxVolume" v-model="app.mk.volume"
v-if="typeof app.mk.volume != 'undefined'" @change="app.checkMuteChange()"> v-if="typeof app.mk.volume != 'undefined'" @change="app.checkMuteChange()">
</div> </div>
</div> </div>

View file

@ -1,65 +0,0 @@
<script type="text/x-template" id="queue-item">
<template>
<div v-observe-visibility="{callback: visibilityChanged}"
@contextmenu="contextMenu"
class="cd-mediaitem-list-item">
<template v-if="isVisible">
<div class="artwork">
<mediaitem-artwork
:url="item.attributes.artwork ? item.attributes.artwork.url : ''"
size="34"
:type="item.type"></mediaitem-artwork>
</div>
<div class="info-rect" :style="{'padding-left': '16px'}">
<div class="title text-overflow-elipsis">
{{ item.attributes.name }}
</div>
<div class="subtitle text-overflow-elipsis" style="-webkit-box-orient: horizontal;">
<template v-if="item.attributes.artistName" >
<div class="artist item-navigate text-overflow-elipsis" @click="app.searchAndNavigate(item,'artist')">
{{ item.attributes.artistName }}
</div>
<template v-if="item.attributes.albumName">&nbsp;—&nbsp;</template>
<template v-if="item.attributes.albumName">
<div class="artist item-navigate text-overflow-elipsis" @click="app.searchAndNavigate(item,'album')">
{{ item.attributes.albumName }}
</div>
</template>
</template>
</div>
</div>
<div class="duration">
{{ msToMinSec(item.attributes.durationInMillis ?? 0) }}
</div>
</template>
</div>
</template>
</script>
<script>
Vue.component('queue-item', {
template: '#queue-item',
props: ['item'],
data: function () {
return {}
},
methods: {
contextMenu(event) {
let self = this
CiderContextMenu.Create(event, {
items: [{
"name": $root.getLz('action.removeFromQueue'),
"action": function () {
}
}]
});
},
msToMinSec(ms) {
var minutes = Math.floor(ms / 60000);
var seconds = ((ms % 60000) / 1000).toFixed(0);
return minutes + ":" + (seconds < 10 ? '0' : '') + seconds;
},
}
});
</script>

View file

@ -0,0 +1,88 @@
<script type="text/x-template" id="add-to-playlist">
<template>
<div class="modal-fullscreen addtoplaylist-panel" @click.self="app.resetState()" @contextmenu.self="app.resetState()">
<div class="modal-window">
<div class="modal-header">
<div class="modal-title">{{app.getLz('action.addToPlaylist')}}</div>
<button class="close-btn" @click="app.resetState()"></button>
</div>
<div class="modal-content">
<button class="playlist-item"
@click="app.addSelectedToNewPlaylist()" style="width:100%;">
<div class="icon"><%- include("../svg/plus.svg") %></div>
<div class="name">{{app.getLz('action.createPlaylist')}}</div>
</button>
<sidebar-playlist :playlist-select="playlistSelect" v-for="item in $root.getPlaylistFolderChildren('p.playlistsroot')" :item="item">
</sidebar-playlist>
</div>
<div class="modal-search">
<div class="search-input-container" style="width:100%;margin: 16px 0;">
<div class="search-input--icon"></div>
<input type="search"
ref="searchInput"
style="width:100%;"
spellcheck="false"
:placeholder="app.getLz('term.search') + '...'"
v-model="searchQuery"
@input="search()"
class="search-input">
</div>
</div>
</div>
</div>
</template>
</script>
<script>
Vue.component('add-to-playlist', {
template: '#add-to-playlist',
data: function () {
return {
playlistSorted: [],
searchQuery: "",
focused: "",
app: this.$root,
}
},
props: {
playlists: {
type: Array,
required: true
}
},
mounted() {
this.search()
this.$refs.searchInput.focus()
this.$refs.searchInput.addEventListener('keydown', (e) => {
if (e.keyCode == 13) {
if (this.focused != "") {
this.addToPlaylist(this.focused)
}
}
})
},
methods: {
playlistSelect(playlist) {
if(playlist.type != "library-playlist-folders") {
this.addToPlaylist(playlist.id)
}
},
addToPlaylist(id) {
app.addSelectedToPlaylist(id)
},
search() {
this.focused = ""
if (this.searchQuery == "") {
this.playlistSorted = this.playlists
} else {
this.playlistSorted = this.playlists.filter(playlist => {
return playlist.attributes.name.toLowerCase().indexOf(this.searchQuery.toLowerCase()) > -1
})
if (this.playlistSorted.length == 1) {
this.focused = this.playlistSorted[0].id
}
}
},
}
});
</script>

View file

@ -87,6 +87,12 @@
role: app.getLz('term.developer'), role: app.getLz('term.developer'),
avatar: 'https://avatars.githubusercontent.com/u/27716185?v=4' avatar: 'https://avatars.githubusercontent.com/u/27716185?v=4'
}, },
{
name: 'Maikiwi',
link: 'https://github.com/maikirakiwi',
role: app.getLz('term.developer'),
avatar: 'https://avatars.githubusercontent.com/u/74925636?v=4'
},
{ {
name: 'Void', name: 'Void',
link: 'https://twitter.com/MoonyVoid', link: 'https://twitter.com/MoonyVoid',

View file

@ -35,11 +35,10 @@
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<select class="md-select" style="width:180px;" v-model="app.cfg.audio.quality" <select class="md-select" style="width:180px;" v-model="app.cfg.audio.quality"
v-on:change="changeAudioQuality"> v-on:change="changeAudioQuality">
<!-- // <option value="9216">{{$root.getLz('settings.header.audio.quality.hireslossless')}}</option> --> <!-- // <option value="">{{$root.getLz('settings.header.audio.quality.hireslossless')}}</option> -->
<!-- <option value="2304">{{$root.getLz('settings.header.audio.quality.lossless')}}</option> --> <!-- <option value="">{{$root.getLz('settings.header.audio.quality.lossless')}}</option> -->
<option value="256">{{$root.getLz('settings.header.audio.quality.high')}}</option> <option value="HIGH">{{$root.getLz('settings.header.audio.quality.high')}} ({{$root.getLz('settings.header.audio.quality.high.description')}})</option>
<option value="64">{{$root.getLz('settings.header.audio.quality.low')}}</option> <option value="STANDARD">{{$root.getLz('settings.header.audio.quality.standard')}} ({{$root.getLz('settings.header.audio.quality.standard.description')}})</option>
<option value="auto">{{$root.getLz('settings.header.audio.quality.auto')}}</option>
</select> </select>
</div> </div>
</div> </div>
@ -69,7 +68,7 @@
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPE.description')}}</small> <small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPE.description')}}</small>
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<input type="checkbox" v-model="app.cfg.advanced.ciderPPE" switch/> <input type="checkbox" v-model="app.cfg.advanced.ciderPPE" v-on:change="ciderPPE" switch/>
</div> </div>
</div> </div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext && app.cfg.advanced.ciderPPE === true"> <div class="md-option-line" v-show="app.cfg.advanced.AudioContext && app.cfg.advanced.ciderPPE === true">
@ -79,10 +78,10 @@
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description')}}</small> <small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description')}}</small>
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<button class="md-btn" :disabled="app.cfg.audio.ciderPPE_value === 0.5" v-model="app.cfg.audio.ciderPPE_value" onclick="app.cfg.audio.ciderPPE_value = 0.5; ciderPPECompatibility"> <button class="md-btn" :disabled="app.cfg.audio.ciderPPE_value === 0.5" v-model="app.cfg.audio.ciderPPE_value" onclick="app.cfg.audio.ciderPPE_value = 0.5">
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard')}} {{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard')}}
</button> </button>
<button class="md-btn" style="margin-top: 5px;" :disabled="app.cfg.audio.ciderPPE_value === 0.55" v-model="app.cfg.audio.ciderPPE_value" onclick="app.cfg.audio.ciderPPE_value = 0.55; ciderPPECompatibility"> <button class="md-btn" style="margin-top: 5px;" :disabled="app.cfg.audio.ciderPPE_value === 0.55" v-model="app.cfg.audio.ciderPPE_value" onclick="app.cfg.audio.ciderPPE_value = 0.55">
{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive')}} {{$root.getLz('settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive')}}
</button> </button>
</div> </div>
@ -656,7 +655,7 @@
</div> </div>
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
{{$root.getLz('term.updateCider')}} {{$root.getLz('settings.option.general.updateCider')}}
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<button class="md-btn" @click="app.checkForUpdate()"> <button class="md-btn" @click="app.checkForUpdate()">
@ -664,6 +663,22 @@
</button> </button>
</div> </div>
</div> </div>
<div class="md-option-line">
<div class="md-option-segment">
{{$root.getLz('settings.option.general.updateCider.branch')}}<br>
<small>({{$root.getLz('settings.option.general.updateCider.branch.description')}})</small>
</div>
<div class="md-option-segment md-option-segment_auto">
<select class="md-select" style="width:180px;" v-model="app.cfg.general.update_branch">
<option value="main">
{{$root.getLz('settings.option.general.updateCider.branch.main')}}
</option>
<option value="develop">
{{$root.getLz('settings.option.general.updateCider.branch.develop')}}
</option>
</select>
</div>
</div>
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
{{$root.getLz('settings.option.experimental.copy_log')}} {{$root.getLz('settings.option.experimental.copy_log')}}
@ -805,17 +820,23 @@
CiderAudio.normalizerOff() CiderAudio.normalizerOff()
} }
}, },
ciderPPECompatibility: function () { ciderPPE: function () {
if (app.cfg.advanced.ciderPPE) {
if (app.cfg.audio.spatial) { if (app.cfg.audio.spatial) {
notyf.error("CAP is not compatible with Spatialization. Please disable Spatialization to continue.") app.cfg.advanced.ciderPPE = false;
notyf.error(app.getLz('settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility'))
}
} }
}, },
toggleSpatial: function () { toggleSpatial: function () {
if (app.cfg.audio.spatial) { if (app.cfg.audio.spatial) {
if (!app.cfg.audio.advanced.ciderPPE) { if (!app.cfg.advanced.ciderPPE) {
CiderAudio.spatialOn()} CiderAudio.spatialOn()
}
else { else {
notyf.error("Spatialization is not compatible with CAP. Please disable CAP to continue.") CiderAudio.spatialOff()
app.cfg.audio.spatial = false;
notyf.error(app.getLz('settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility'))
} }
} else { } else {
CiderAudio.spatialOff() CiderAudio.spatialOff()
@ -823,7 +844,8 @@
}, },
changeAudioQuality: function () { changeAudioQuality: function () {
app.mk.bitrate = app.cfg.audio.quality 1
app.mk.bitrate = MusicKit.PlaybackBitrate[app.cfg.audio.quality];
}, },
toggleUserInfo: function () { toggleUserInfo: function () {
app.chrome.hideUserInfo = !app.cfg.visual.showuserinfo app.chrome.hideUserInfo = !app.cfg.visual.showuserinfo

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Before After
Before After