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
@ -8,11 +9,15 @@ exports.default = function(context) {
execSync('python3 -m pip install --upgrade castlabs-evs') execSync('python3 -m pip install --upgrade castlabs-evs')
console.log('Castlabs-evs update complete') console.log('Castlabs-evs update complete')
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`.
@ -55,4 +55,29 @@ Update 05/02/2022 09:00 UTC
* `settings.header.audio.quality.lossless`: Added for `en_US`. * `settings.header.audio.quality.lossless`: Added for `en_US`.
* `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,7 +1,7 @@
{ // Base File {
// i18n Info // i18n Info
"i18n.languageName": "Deutsch", // name of language in native language "i18n.languageName": "Deutsch", // name of language in native language
"i18n.languageNameEnglish": "German", // name of language in English "i18n.languageNameEnglish": "German", // 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": "@motz0815", // Authors, if you contribute to this file feel free to add your name seperated with a space "i18n.authors": "@motz0815", // Authors, if you contribute to this file feel free to add your name seperated with a space
@ -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,13 +128,14 @@
"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.",
"error.noResults": "Keine Ergebnisse.", "error.noResults": "Keine Ergebnisse.",
"error.noResults.description": "Versuche einen anderen Suchbegriff.", "error.noResults.description": "Versuche einen anderen Suchbegriff.",
//Podcasts // Podcasts
"podcast.followOnCider": "Folge auf Cider", "podcast.followOnCider": "Folge auf Cider",
"podcast.followedOnCider": "Gefolgt auf Cider", "podcast.followedOnCider": "Gefolgt auf Cider",
"podcast.subscribeOnItunes": "Folge auf iTunes", "podcast.subscribeOnItunes": "Folge auf iTunes",
@ -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",
@ -193,6 +195,8 @@
"settings.option.general.language.main": "Sprachen", "settings.option.general.language.main": "Sprachen",
"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",
@ -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",
@ -296,4 +304,4 @@
// About // About
"about.thanks": "Vielen lieben Dank an das Cider Collective Team und an alle Mithelfer." "about.thanks": "Vielen lieben Dank an das Cider Collective Team und an alle Mithelfer."
} }

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,13 +128,14 @@
"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.",
"error.noResults": "Κανένα αποτέλεσμα.", "error.noResults": "Κανένα αποτέλεσμα.",
"error.noResults.description": "Δοκιμάστε μια νέα αναζήτηση.", "error.noResults.description": "Δοκιμάστε μια νέα αναζήτηση.",
//Podcasts // Podcasts
"podcast.followOnCider": "Ακολούθηση στο Cider", "podcast.followOnCider": "Ακολούθηση στο Cider",
"podcast.followedOnCider": "Ακολουθείτε στο Cider", "podcast.followedOnCider": "Ακολουθείτε στο Cider",
"podcast.subscribeOnItunes": "Συνδρομή στο iTunes", "podcast.subscribeOnItunes": "Συνδρομή στο iTunes",
@ -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": "Γενικά",
@ -193,6 +195,8 @@
"settings.option.general.language.main": "Γλώσσες", "settings.option.general.language.main": "Γλώσσες",
"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": "Ήχος",
@ -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

@ -1,7 +1,7 @@
{ // HODOR { // HODOR
// i18n Info // i18n Info
"i18n.languageName": "HODOR", // name of language in native language "i18n.languageName": "HODOR", // name of language in native language
"i18n.languageNameEnglish": "HODOR", // name of language in English "i18n.languageNameEnglish": "HODOR", // 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": "HODOR", // Authors, if you contribute to this file feel free to add your name seperated with a space "i18n.authors": "HODOR", // Authors, if you contribute to this file feel free to add your name seperated with a space
@ -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",
@ -139,7 +140,7 @@
"error.noResults": "NO HODOR.", "error.noResults": "NO HODOR.",
"error.noResults.description": "TRY NEW HODOR.", "error.noResults.description": "TRY NEW HODOR.",
//Podcasts // Podcasts
"podcast.followOnCider": "FOLLOW ON HODOR", "podcast.followOnCider": "FOLLOW ON HODOR",
"podcast.followedOnCider": "FOLLOWING ON HODOR", "podcast.followedOnCider": "FOLLOWING ON HODOR",
"podcast.subscribeOnItunes": "SUBSCRIBE ON iHODOR", "podcast.subscribeOnItunes": "SUBSCRIBE ON iHODOR",
@ -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,12 +152,14 @@
"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",
"podcast.subscribeOnItunes": "Subscwibe On iTuwunes", "podcast.subscribeOnItunes": "Subscwibe On iTuwunes",
@ -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,16 +1,16 @@
{ // Base File {
// i18n Info // i18n Info
"i18n.languageName": "piss", // name of language in native language "i18n.languageName": "piss", // name of language in native language
"i18n.languageNameEnglish": "English (piss)", // name of language in English "i18n.languageNameEnglish": "English (piss)", // 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": "@SoNothingMC @saboooor", // Authors, if you contribute to this file feel free to add your name seperated with a space "i18n.authors": "@SoNothingMC @saboooor", // Authors, if you contribute to this file feel free to add your name seperated with a space
// App info // App info
"app.name": "piss", "app.name": "piss",
"date.format": "${y}-${m}-${d}", // ISO 8601 for the win!
"date.format": "${y}-${m}-${d}", // ISO 8601 for the win!
// Dialogs // Dialogs
"dialog.cancel": "no piss", "dialog.cancel": "no piss",
"dialog.ok": "yes piss", "dialog.ok": "yes piss",
@ -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",
@ -93,10 +94,10 @@
"term.less": "piss less", "term.less": "piss less",
"term.showMore": "more piss", "term.showMore": "more piss",
"term.showLess": "less piss", "term.showLess": "less piss",
"term.topSongs" : "top piss", "term.topSongs": "top piss",
"term.latestReleases": "latest piss collection", "term.latestReleases": "latest piss collection",
"term.time.added": "pissed", "term.time.added": "pissed",
"term.time.released": "pissed", "term.time.released": "pissed",
"term.time.updated": "pissed", "term.time.updated": "pissed",
"term.time.hours": "hours", "term.time.hours": "hours",
"term.time.hour": "hour", "term.time.hour": "hour",
@ -123,12 +124,11 @@
"term.equalizer": "advanced piss configuration", "term.equalizer": "advanced piss configuration",
"term.reset": "repiss", "term.reset": "repiss",
"term.tracks": "pisses", // Assume x amount of tracks. e.g. 50 tracks "term.tracks": "pisses", // Assume x amount of tracks. e.g. 50 tracks
"term.videos": "piss videos", "term.videos": "piss videos",
"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
"term.newpreset.name": "new advanced piss prepiss name", // Equalizer Preset "term.newpreset.name": "new advanced piss prepiss name", // Equalizer Preset
@ -153,13 +153,14 @@
"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.",
"error.noResults": "no piss found", "error.noResults": "no piss found",
"error.noResults.description": "try pissing somewhere else (or press Enter/Return to search)", "error.noResults.description": "try pissing somewhere else (or press Enter/Return to search)",
//Podcasts // Podcasts
"podcast.followOnCider": "piss on Cider", "podcast.followOnCider": "piss on Cider",
"podcast.followedOnCider": "pissed on Cider", "podcast.followedOnCider": "pissed on Cider",
"podcast.subscribeOnItunes": "piss on iPiss", "podcast.subscribeOnItunes": "piss on iPiss",
@ -215,19 +216,22 @@
"action.tray.show": "piss back", "action.tray.show": "piss back",
"action.update": "piss!", "action.update": "piss!",
"action.copy": "copiss", "action.copy": "copiss",
"action.newpreset": "new prepiss...", // Equalizer Preset "action.newpreset": "new prepiss...", // Equalizer Preset
"action.deletepreset": "unpiss prepiss", "action.deletepreset": "unpiss prepiss",
// Settings - General // Settings - General
"settings.header.general": "general", "settings.header.general": "general",
"settings.header.general.description": "the dumping place for settings when there are no other places to put them into", "settings.header.general.description": "the dumping place for settings when there are no other places to put them into",
"settings.option.general.language": "piss around the world", "settings.option.general.language": "piss around the world",
// Language optgroups // Language optgroups
"settings.option.general.language.main": "actaul human languages", "settings.option.general.language.main": "actaul human languages",
"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,14 +247,15 @@
"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",
"settings.option.visual.windowBackgroundStyle": "background piss", // Toggle "settings.option.visual.windowBackgroundStyle": "background piss", // Toggle
"settings.header.visual.windowBackgroundStyle.none": "no piss", "settings.header.visual.windowBackgroundStyle.none": "no piss",
@ -269,14 +274,14 @@
"settings.option.visual.animatedWindowBackground": "moving background piss", // Toggle "settings.option.visual.animatedWindowBackground": "moving background piss", // Toggle
"settings.option.visual.hardwareAcceleration": "make Cider piss faster", // Dropdown "settings.option.visual.hardwareAcceleration": "make Cider piss faster", // Dropdown
"settings.option.visual.hardwareAcceleration.description": "you need to relaunch Cider", "settings.option.visual.hardwareAcceleration.description": "you need to relaunch Cider",
"settings.header.visual.hardwareAcceleration.default": "default piss", "settings.header.visual.hardwareAcceleration.default": "default piss",
"settings.header.visual.hardwareAcceleration.webGPU": "WebPISS", "settings.header.visual.hardwareAcceleration.webGPU": "WebPISS",
"settings.header.visual.theme": "colored piss", "settings.header.visual.theme": "colored piss",
// Settings - Visual - Theme name // Settings - Visual - Theme name
"settings.option.visual.theme.default": "regular piss", "settings.option.visual.theme.default": "regular piss",
"settings.option.visual.theme.dark": "black piss", "settings.option.visual.theme.dark": "black piss",
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "show yourself to the pissiverse", // Toggle "settings.option.visual.showPersonalInfo": "show yourself to the pissiverse", // Toggle
@ -298,12 +303,12 @@
"settings.header.connectivity.discordRPC.appleMusic": "piss as 'piss music'", "settings.header.connectivity.discordRPC.appleMusic": "piss as 'piss music'",
"settings.option.connectivity.discordRPC.clearOnPause": "flush Pisscord rich pissence when holding your piss", // Toggle "settings.option.connectivity.discordRPC.clearOnPause": "flush Pisscord rich pissence when holding your piss", // Toggle
"settings.option.connectivity.lastfmScrobble": "Piss.fm scrobbling", // Option to Connect "settings.option.connectivity.lastfmScrobble": "Piss.fm scrobbling", // Option to Connect
"settings.option.connectivity.lastfmScrobble.delay": "Piss.fm scrobble delay (%)", "settings.option.connectivity.lastfmScrobble.delay": "Piss.fm scrobble delay (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "push now playing data to Piss.fm", "settings.option.connectivity.lastfmScrobble.nowPlaying": "push now playing data to Piss.fm",
"settings.option.connectivity.lastfmScrobble.removeFeatured": "remove featured pissers from piss names (Piss.fm)", "settings.option.connectivity.lastfmScrobble.removeFeatured": "remove featured pissers from piss names (Piss.fm)",
"settings.option.connectivity.lastfmScrobble.filterLoop": "filter same piss (Piss.fm)", "settings.option.connectivity.lastfmScrobble.filterLoop": "filter same piss (Piss.fm)",
// Refer to term.connect for the connect button // Refer to term.connect for the connect button
// Settings - Experimental // Settings - Experimental
"settings.header.experimental": "piss lab", "settings.header.experimental": "piss lab",
"settings.header.experimental.description": "mitochondria is the powerhouse of the cell", "settings.header.experimental.description": "mitochondria is the powerhouse of the cell",
@ -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",
@ -333,7 +338,7 @@
"spatial.down": "the piss on the floor", "spatial.down": "the piss on the floor",
"spatial.listener": "you", "spatial.listener": "you",
"spatial.audioSource": "piss source", "spatial.audioSource": "piss source",
// Settings - Unfinished // Settings - Unfinished
"settings.header.unfinished": "DLC piss", "settings.header.unfinished": "DLC piss",
@ -343,4 +348,4 @@
// About // About
"about.thanks": "thanks to the Cider Collective team and all the pisseneers putting this together" "about.thanks": "thanks to the Cider Collective team and all the pisseneers putting this together"
} }

View file

@ -1,7 +1,7 @@
{ {
// i18n Info // i18n Info
"i18n.languageName": "┤ᖋ|:ᖋᔮᒣ╎ᔮ ᖋ|:i!⍑ᖋᕊᒷᒣ", // name of language in native language "i18n.languageName": "┤ᖋ|:ᖋᔮᒣ╎ᔮ ᖋ|:i!⍑ᖋᕊᒷᒣ", // name of language in native language
"i18n.languageNameEnglish": "Galactic Alphabet", // name of language in English "i18n.languageNameEnglish": "Galactic Alphabet", // 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": "@kyw504100", // Authors, if you contribute to this file feel free to add your name seperated with a space "i18n.authors": "@kyw504100", // Authors, if you contribute to this file feel free to add your name seperated with a space
@ -10,7 +10,7 @@
"app.name": "ᔮ╎↸ᒷ∷", "app.name": "ᔮ╎↸ᒷ∷",
"date.format": "${m} ${d}, ${y}", "date.format": "${m} ${d}, ${y}",
// Dialogs // Dialogs
"dialog.cancel": "ᔮᖋリᔮᒷ|:", "dialog.cancel": "ᔮᖋリᔮᒷ|:",
"dialog.ok": "ᒍ·ǀ·", "dialog.ok": "ᒍ·ǀ·",
@ -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!|:ᒷ ᒲ⚍ϟ╎ᔮ",
@ -93,10 +94,10 @@
"term.less": "|:ᒷϟϟ", "term.less": "|:ᒷϟϟ",
"term.showMore": "ϟ⍑ᒍ∴ ᒲᒍ∷ᒷ", "term.showMore": "ϟ⍑ᒍ∴ ᒲᒍ∷ᒷ",
"term.showLess": "ϟ⍑ᒍ∴ |:ᒷϟϟ", "term.showLess": "ϟ⍑ᒍ∴ |:ᒷϟϟ",
"term.topSongs" : "ᒣi! ϟᒍリ┤ϟ", "term.topSongs": "ᒣi! ϟᒍリ┤ϟ",
"term.latestReleases": "|:ᖋᒣᒷϟᒣ ∷ᒷ|:ᒷᖋϟᒷϟ", "term.latestReleases": "|:ᖋᒣᒷϟᒣ ∷ᒷ|:ᒷᖋϟᒷϟ",
"term.time.added": "ᖋ↸↸ᒷ↸", "term.time.added": "ᖋ↸↸ᒷ↸",
"term.time.released": "∷ᒷ|:ᒷᖋϟᒷ↸", "term.time.released": "∷ᒷ|:ᒷᖋϟᒷ↸",
"term.time.updated": "⚍i!↸ᖋᒣᒷ↸", "term.time.updated": "⚍i!↸ᖋᒣᒷ↸",
"term.time.hours": "⍑ᒍ⚍∷ϟ", "term.time.hours": "⍑ᒍ⚍∷ϟ",
"term.time.hour": "⍑ᒍ⚍∷", "term.time.hour": "⍑ᒍ⚍∷",
@ -124,17 +125,18 @@
"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": "⚍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
"term.newpreset.name": "リᒷ∴ ᒷᑑ i!∷ᒷϟᒷᒣ リᖋᒲᒷ", // Equalizer Preset "term.newpreset.name": "リᒷ∴ ᒷᑑ i!∷ᒷϟᒷᒣ リᖋᒲᒷ", // Equalizer Preset
"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,13 +155,14 @@
"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!|:ᒷ ᒲ⚍ϟ╎ᔮ.",
"error.noResults": "リᒍ ∷ᒷϟ⚍|:ᒣϟ.", "error.noResults": "リᒍ ∷ᒷϟ⚍|:ᒣϟ.",
"error.noResults.description": "ᒣ∷॥ ᖋ リᒷ∴ ϟᒷᖋ∷ᔮ⍑.", "error.noResults.description": "ᒣ∷॥ ᖋ リᒷ∴ ϟᒷᖋ∷ᔮ⍑.",
//Podcasts // Podcasts
"podcast.followOnCider": "⎓ᒍ|:|:ᒍ∴ ᒍリ ᔮ╎↸ᒷ∷", "podcast.followOnCider": "⎓ᒍ|:|:ᒍ∴ ᒍリ ᔮ╎↸ᒷ∷",
"podcast.followedOnCider": "⎓ᒍ|:|:ᒍ∴╎リ┤ ᒍリ ᔮ╎↸ᒷ∷", "podcast.followedOnCider": "⎓ᒍ|:|:ᒍ∴╎リ┤ ᒍリ ᔮ╎↸ᒷ∷",
"podcast.subscribeOnItunes": "ϟ⚍ᕊϟᔮ∷╎ᕊᒷ ᒍリ ╎ᒣ⚍リᒷϟ", "podcast.subscribeOnItunes": "ϟ⚍ᕊϟᔮ∷╎ᕊᒷ ᒍリ ╎ᒣ⚍リᒷϟ",
@ -215,7 +218,7 @@
"action.tray.show": "ϟ⍑ᒍ∴", "action.tray.show": "ϟ⍑ᒍ∴",
"action.update": "⚍i!↸ᖋᒣᒷ", "action.update": "⚍i!↸ᖋᒣᒷ",
"action.copy": "ᔮi!॥", "action.copy": "ᔮi!॥",
"action.newpreset": "リᒷ∴ i!∷ᒷϟᒷᒣ...", // Equalizer Preset "action.newpreset": "リᒷ∴ i!∷ᒷϟᒷᒣ...", // Equalizer Preset
"action.deletepreset": "↸ᒷ|:ᒷᒣᒷ i!∷ᒷϟᒷᒣ", "action.deletepreset": "↸ᒷ|:ᒷᒣᒷ i!∷ᒷϟᒷᒣ",
// Settings - General // Settings - General
@ -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,19 +247,27 @@
"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": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ⍊╎ϟ⚍ᖋ| ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.",
"settings.option.visual.windowBackgroundStyle": "∴╎リ↸ᒍ∴ ᕊᖋᔮ·ǀ·┤∷ᒍ⚍リ↸ ϟᒣ॥|:ᒷ", // Toggle "settings.option.visual.windowBackgroundStyle": "∴╎リ↸ᒍ∴ ᕊᖋᔮ·ǀ·┤∷ᒍ⚍リ↸ ϟᒣ॥|:ᒷ", // Toggle
"settings.header.visual.windowBackgroundStyle.none": "リᒍリᒷ", "settings.header.visual.windowBackgroundStyle.none": "リᒍリᒷ",
@ -268,14 +286,14 @@
"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": "∷ᒷᑑ⚍╎∷ᒷϟ ∷ᒷ|:ᖋ⚍リᔮ⍑", "settings.option.visual.hardwareAcceleration.description": "∷ᒷᑑ⚍╎∷ᒷϟ ∷ᒷ|:ᖋ⚍リᔮ⍑",
"settings.header.visual.hardwareAcceleration.default": "↸ᒷ⎓ᖋ⚍|:ᒣ", "settings.header.visual.hardwareAcceleration.default": "↸ᒷ⎓ᖋ⚍|:ᒣ",
"settings.header.visual.hardwareAcceleration.webGPU": "∴ᒷᕊ┤i!⚍", "settings.header.visual.hardwareAcceleration.webGPU": "∴ᒷᕊ┤i!⚍",
"settings.header.visual.theme": "ᒣ⍑ᒷᒲᒷ", "settings.header.visual.theme": "ᒣ⍑ᒷᒲᒷ",
// Settings - Visual - Theme name // Settings - Visual - Theme name
"settings.option.visual.theme.default": "ᔮ╎↸ᒷ∷", "settings.option.visual.theme.default": "ᔮ╎↸ᒷ∷",
"settings.option.visual.theme.dark": "↸ᖋ∷·ǀ·", "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": "ϟ⍑ᒍ∴ i!ᒷ∷ϟᒍリᖋ|: ╎リ⎓ᒍ", // Toggle "settings.option.visual.showPersonalInfo": "ϟ⍑ᒍ∴ i!ᒷ∷ϟᒍリᖋ|: ╎リ⎓ᒍ", // Toggle
@ -286,7 +304,7 @@
"settings.option.lyrics.enableMusixmatchKaraoke": "ᒷリᖋᕊ|:ᒷ ·ǀ·ᖋ∷ᖋᒍ·ǀ·ᒷ ᒲᒍ↸ᒷ (ᒲ⚍ϟ╎̇/ᒲᖋᒣᔮ⍑ ᒍリ|:॥)", // Toggle "settings.option.lyrics.enableMusixmatchKaraoke": "ᒷリᖋᕊ|:ᒷ ·ǀ·ᖋ∷ᖋᒍ·ǀ·ᒷ ᒲᒍ↸ᒷ (ᒲ⚍ϟ╎̇/ᒲᖋᒣᔮ⍑ ᒍリ|:॥)", // Toggle
"settings.option.lyrics.musixmatchPreferredLanguage": "ᒲ⚍ϟ╎̇/ᒲᖋᒣᔮ⍑ ᒣ∷ᖋリϟ|:ᖋᒣ╎ᒍリ i!∷ᒷ⎓ᒷ∷∷ᒷ↸ |:ᖋリ┤⚍ᖋ┤ᒷ", // Dropdown "settings.option.lyrics.musixmatchPreferredLanguage": "ᒲ⚍ϟ╎̇/ᒲᖋᒣᔮ⍑ ᒣ∷ᖋリϟ|:ᖋᒣ╎ᒍリ i!∷ᒷ⎓ᒷ∷∷ᒷ↸ |:ᖋリ┤⚍ᖋ┤ᒷ", // Dropdown
"settings.option.lyrics.enableYoutubeLyrics": "ᒷリᖋᕊ|:ᒷ ॥ᒍ⚍ᒣ⚍ᕊᒷ |:॥∷╎ᔮϟ ⎓ᒍ∷ ᒲ⚍ϟ╎ᔮ ⍊╎↸ᒷᒍϟ", // Toggle "settings.option.lyrics.enableYoutubeLyrics": "ᒷリᖋᕊ|:ᒷ ॥ᒍ⚍ᒣ⚍ᕊᒷ |:॥∷╎ᔮϟ ⎓ᒍ∷ ᒲ⚍ϟ╎ᔮ ⍊╎↸ᒷᒍϟ", // Toggle
// Settings - Connectivity // Settings - Connectivity
"settings.header.connectivity": "ᔮᒍリリᒷᔮᒣ╎⍊╎ᒣ॥", "settings.header.connectivity": "ᔮᒍリリᒷᔮᒣ╎⍊╎ᒣ॥",
"settings.header.connectivity.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ᔮᒍリリᒷᔮᒣ╎⍊╎ᒣ॥ ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.", "settings.header.connectivity.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ᔮᒍリリᒷᔮᒣ╎⍊╎ᒣ॥ ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.",
@ -297,12 +315,12 @@
"settings.header.connectivity.discordRPC.appleMusic": "↸╎ϟi!|:ᖋ॥ ᖋϟ 'ᖋi!i!|:ᒷ ᒲ⚍ϟ╎ᔮ'", "settings.header.connectivity.discordRPC.appleMusic": "↸╎ϟi!|:ᖋ॥ ᖋϟ 'ᖋi!i!|:ᒷ ᒲ⚍ϟ╎ᔮ'",
"settings.option.connectivity.discordRPC.clearOnPause": "ᔮ|:ᒷᖋ∷ ↸╎ϟᔮᒍ∷↸ ∷╎ᔮ⍑ i!∷ᒷϟᒷリᔮᒷ ᒍリ i!ᖋ⚍ϟᒷ", // Toggle "settings.option.connectivity.discordRPC.clearOnPause": "ᔮ|:ᒷᖋ∷ ↸╎ϟᔮᒍ∷↸ ∷╎ᔮ⍑ i!∷ᒷϟᒷリᔮᒷ ᒍリ i!ᖋ⚍ϟᒷ", // Toggle
"settings.option.connectivity.lastfmScrobble": "|:ᖋϟᒣ.⎓ᒲ ϟᔮ∷ᒍᕊᕊ|:╎リ┤", // Option to Connect "settings.option.connectivity.lastfmScrobble": "|:ᖋϟᒣ.⎓ᒲ ϟᔮ∷ᒍᕊᕊ|:╎リ┤", // Option to Connect
"settings.option.connectivity.lastfmScrobble.delay": "|:ᖋϟᒣ.⎓ᒲ ϟᔮ∷ᒍᕊᕊ|:ᒷ ↸ᒷ|:ᖋ॥ (%)", "settings.option.connectivity.lastfmScrobble.delay": "|:ᖋϟᒣ.⎓ᒲ ϟᔮ∷ᒍᕊᕊ|:ᒷ ↸ᒷ|:ᖋ॥ (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "ᒷリᖋᕊ|:ᒷ |:ᖋϟᒣ.⎓ᒲ リᒍ∴ i!|:ᖋ॥╎リ┤", "settings.option.connectivity.lastfmScrobble.nowPlaying": "ᒷリᖋᕊ|:ᒷ |:ᖋϟᒣ.⎓ᒲ リᒍ∴ i!|:ᖋ॥╎リ┤",
"settings.option.connectivity.lastfmScrobble.removeFeatured": "∷ᒷᒲᒍ⍊ᒷ ⎓ᒷᖋᒣ⚍∷╎リ┤ ᖋ∷ᒣ╎ϟᒣϟ ⎓∷ᒍᒲ ϟᒍリ┤ ᒣ╎ᒣ|:ᒷ (|:ᖋϟᒣ.⎓ᒲ)", "settings.option.connectivity.lastfmScrobble.removeFeatured": "∷ᒷᒲᒍ⍊ᒷ ⎓ᒷᖋᒣ⚍∷╎リ┤ ᖋ∷ᒣ╎ϟᒣϟ ⎓∷ᒍᒲ ϟᒍリ┤ ᒣ╎ᒣ|:ᒷ (|:ᖋϟᒣ.⎓ᒲ)",
"settings.option.connectivity.lastfmScrobble.filterLoop": "⎓╎|:ᒣᒷ∷ |:i!ᒷ↸ ᒣ∷ᖋᔮ·ǀ· (|:ᖋϟᒣ.⎓ᒲ)", "settings.option.connectivity.lastfmScrobble.filterLoop": "⎓╎|:ᒣᒷ∷ |:i!ᒷ↸ ᒣ∷ᖋᔮ·ǀ· (|:ᖋϟᒣ.⎓ᒲ)",
// Refer to term.connect for the connect button // Refer to term.connect for the connect button
// Settings - Experimental // Settings - Experimental
"settings.header.experimental": "ᒷ/i!ᒷ∷╎ᒲᒷリᒣᖋ|:", "settings.header.experimental": "ᒷ/i!ᒷ∷╎ᒲᒷリᒣᖋ|:",
"settings.header.experimental.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ᒷ/i!ᒷ∷╎ᒲᒷリᒣᖋ|: ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.", "settings.header.experimental.description": "ᖋ↸⋮⚍ϟᒣ ᒣ⍑ᒷ ᒷ/i!ᒷ∷╎ᒲᒷリᒣᖋ|: ϟᒷᒣᒣ╎リ┤ϟ ⎓ᒍ∷ ᔮ╎↸ᒷ∷.",
@ -310,36 +328,36 @@
"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!ᒷ∷ᒣ╎ᒷϟ",
"spatial.width" : "∴╎↸ᒣ⍑", "spatial.width": "∴╎↸ᒣ⍑",
"spatial.height" : "⍑ᒷ╎┤⍑ᒣ", "spatial.height": "⍑ᒷ╎┤⍑ᒣ",
"spatial.depth" : "↸ᒷi!ᒣ⍑", "spatial.depth": "↸ᒷi!ᒣ⍑",
"spatial.gain" : "┤ᖋ╎リ", "spatial.gain": "┤ᖋ╎リ",
"spatial.roomMaterials" : "∷ᒍᒍᒲ ᒲᖋᒣᒷ∷╎ᖋ|:ϟ", "spatial.roomMaterials": "∷ᒍᒍᒲ ᒲᖋᒣᒷ∷╎ᖋ|:ϟ",
"spatial.roomDimensions" : "∷ᒍᒍᒲ ↸╎ᒲᒷリϟ╎ᒍリϟ", "spatial.roomDimensions": "∷ᒍᒍᒲ ↸╎ᒲᒷリϟ╎ᒍリϟ",
"spatial.roomPositions" : "∷ᒍᒍᒲ i!ᒍϟ╎ᒣ╎ᒍリϟ", "spatial.roomPositions": "∷ᒍᒍᒲ i!ᒍϟ╎ᒣ╎ᒍリϟ",
"spatial.setDimensions" : "ϟᒷᒣ ↸╎ᒲᒷリϟ╎ᒍリϟ", "spatial.setDimensions": "ϟᒷᒣ ↸╎ᒲᒷリϟ╎ᒍリϟ",
"spatial.setPositions" : "ϟᒷᒣ i!ᒍϟ╎ᒣ╎ᒍリϟ", "spatial.setPositions": "ϟᒷᒣ i!ᒍϟ╎ᒣ╎ᒍリϟ",
"spatial.up" : "⚍i!", "spatial.up": "⚍i!",
"spatial.front" : "⎓∷ᒍリᒣ", "spatial.front": "⎓∷ᒍリᒣ",
"spatial.left" : "|:ᒷ⎓ᒣ", "spatial.left": "|:ᒷ⎓ᒣ",
"spatial.right" : "∷╎┤⍑ᒣ", "spatial.right": "∷╎┤⍑ᒣ",
"spatial.back" : "ᕊᖋᔮ·ǀ·", "spatial.back": "ᕊᖋᔮ·ǀ·",
"spatial.down" : "↸ᒍ∴リ", "spatial.down": "↸ᒍ∴リ",
"spatial.listener" : "|:╎ϟᒣᒷリᒷ∷", "spatial.listener": "|:╎ϟᒣᒷリᒷ∷",
"spatial.audioSource" : "ᖋ⚍↸╎ᒍ ϟᒍ⚍∷ᔮᒷ", "spatial.audioSource": "ᖋ⚍↸╎ᒍ ϟᒍ⚍∷ᔮᒷ",
// Settings - Unfinished // Settings - Unfinished
"settings.header.unfinished": "⚍リ⎓╎リ╎ϟ⍑ᒷ↸", "settings.header.unfinished": "⚍リ⎓╎リ╎ϟ⍑ᒷ↸",
// Web Remote // Web Remote
"remote.web.title": "ᔮ╎↸ᒷ∷ ∷ᒷᒲᒍᒣᒷ", "remote.web.title": "ᔮ╎↸ᒷ∷ ∷ᒷᒲᒍᒣᒷ",
"remote.web.description": "ϟᔮᖋリ ᒣ⍑ᒷ ᑑ∷ ᔮᒍ↸ᒷ ᒣᒍ i!ᖋ╎∷ ॥ᒍ⚍∷ i!⍑ᒍリᒷ ⚍i! ∴╎ᒣ⍑ ᒣ⍑╎ϟ ᔮ╎↸ᒷ∷ ╎リϟᒣᖋリᔮᒷ", "remote.web.description": "ϟᔮᖋリ ᒣ⍑ᒷ ᑑ∷ ᔮᒍ↸ᒷ ᒣᒍ i!ᖋ╎∷ ॥ᒍ⚍∷ i!⍑ᒍリᒷ ⚍i! ∴╎ᒣ⍑ ᒣ⍑╎ϟ ᔮ╎↸ᒷ∷ ╎リϟᒣᖋリᔮᒷ",
// About // About
"about.thanks": "ᒲᖋ⋮ᒍ∷ ᒣ⍑ᖋリ·ǀ·ϟ ᒣᒍ ᒣ⍑ᒷ ᔮ╎↸ᒷ∷ ᔮᒍ|:|:ᒷᔮᒣ╎⍊ᒷ ᒣᒷᖋᒲ ᖋリ↸ ᖋ|:|: ᒍ⎓ ᒍ⚍∷ ᔮᒍリᒣ∷╎ᕊ⚍ᒣᒍ∷ϟ." "about.thanks": "ᒲᖋ⋮ᒍ∷ ᒣ⍑ᖋリ·ǀ·ϟ ᒣᒍ ᒣ⍑ᒷ ᔮ╎↸ᒷ∷ ᔮᒍ|:|:ᒷᔮᒣ╎⍊ᒷ ᒣᒷᖋᒲ ᖋリ↸ ᖋ|:|: ᒍ⎓ ᒍ⚍∷ ᔮᒍリᒣ∷╎ᕊ⚍ᒣᒍ∷ϟ."
} }

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,12 +155,14 @@
"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",
"podcast.subscribeOnItunes": "Subscribe On iTunes", "podcast.subscribeOnItunes": "Subscribe On iTunes",
@ -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,312 +1,320 @@
{ // Base File {
// i18n Info
"i18n.languageName": "Español (ES)", // name of language in native language
"i18n.languageNameEnglish": "Spanish (Spain)", // name of language in English
"i18n.category": "main", // main = real language, fun = fun community languages
"i18n.authors": "@j.fl220", // 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": "Cancelar",
"dialog.ok": "Aceptar",
// Notification
"notification.updatingLibrarySongs": "Actualizando canciones de la biblioteca...",
"notification.updatingLibraryAlbums": "Actualizando álbumes de la biblioteca...",
"notification.updatingLibraryArtists": "Actualizando biblioteca de artistas...",
// Terms
"term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music",
"term.applePodcasts": "Apple Podcasts",
"term.itunes": "iTunes",
"term.github": "GitHub",
"term.discord": "Discord",
"term.learnMore": "Leer más",
"term.accountSettings": "Ajustes de la cuenta",
"term.logout": "Cerrar sesión",
"term.login": "Iniciar sesión",
"term.about": "Más información",
"term.privateSession": "Sesión privada",
"term.queue": "En cola",
"term.search": "Buscar",
"term.library": "Biblioteca",
"term.listenNow": "Escuchar",
"term.browse": "Explorar",
"term.radio": "Radio",
"term.recentlyAdded": "Añadido recientemente",
"term.songs": "Canciones",
"term.albums": "Álbumes",
"term.artists": "Artistas",
"term.podcasts": "Podcasts",
"term.playlists": "Playlists",
"term.playlist": "Playlist",
"term.newPlaylist": "Nueva playlist",
"term.newPlaylistFolder": "Nueva carpeta de playlists",
"term.createNewPlaylist": "Crear nueva playlists",
"term.createNewPlaylistFolder": "Crear nueva carpeta de playlists",
"term.deletePlaylist": "¿Está seguro que desea eliminar esta playlist?",
"term.play": "Reproducir",
"term.pause": "Pausar",
"term.previous": "Anterior",
"term.next": "Siguiente",
"term.shuffle": "Aleatorio",
"term.repeat": "Repetir",
"term.volume": "Volumen",
"term.mute": "Silenciar",
"term.unmute": "Desilenciar",
"term.share": "Compartir",
"term.settings": "Ajustes",
"term.seeAll": "Ver todo",
"term.sortBy": "Ordenar por",
"term.sortBy.album": "Álbum",
"term.sortBy.artist": "Artista",
"term.sortBy.name": "Nombre",
"term.sortBy.genre": "Género",
"term.sortBy.releaseDate": "Fecha de lanzamiento",
"term.sortBy.duration": "Duración",
"term.sortOrder": "A-Z",
"term.sortOrder.ascending": "Ascendiente",
"term.sortOrder.descending": "Descendiente",
"term.viewAs": "Ver como",
"term.viewAs.coverArt": "Carátula",
"term.viewAs.list": "Lista",
"term.size": "Tamaño",
"term.size.normal": "Normal",
"term.size.compact": "Compacto",
"term.enable": "Habilitar",
"term.disable": "Deshabilitar",
"term.enabled": "Activado",
"term.disabled": "Desactivado",
"term.connect": "Conectar",
"term.connecting": "Conectando",
"term.disconnect": "Desconectado",
"term.authed": "Autentificado",
"term.confirm": "¿Confirmar?",
"term.more": "Más",
"term.less": "Menos",
"term.showMore": "Mostrar más",
"term.showLess": "Mostrar menos",
"term.topSongs": "Top canciones",
"term.latestReleases": "Últimos lanzamientos",
"term.time.added": "Añadido",
"term.time.released": "Lanzado",
"term.time.updated": "Actualizado",
"term.time.hours": "horas",
"term.time.hour": "hora",
"term.time.minutes": "minutos",
"term.time.minute": "minuto",
"term.time.seconds": "segundos",
"term.time.second": "segundo",
"term.fullscreenView": "Pantalla completa",
"term.defaultView": "Vista por defecto",
"term.audioSettings": "Ajustes de audio",
"term.clearAll": "Borrar todo",
"term.recentStations": "Radios recientes",
"term.language": "Idioma",
"term.funLanguages": "Divertido",
"term.noLyrics": "Cargando... / Letra no encontrada./ Instrumental.",
"term.copyright": "Copyright",
"term.rightsReserved": "Todos los derechos reservados.",
"term.sponsor": "Apoya este proyecto",
"term.ciderTeam": "Equipo Cider",
"term.developer": "Desarrollador",
"term.socialTeam": "Equipo RRSS",
"term.socials": "Redes sociales",
"term.contributors": "Contribuidores",
"term.equalizer": "Equalizador",
"term.reset": "Resetear",
"term.tracks": "canciones", // Assume x amount of tracks. e.g. 50 tracks
"term.videos": "Vídeos",
"term.menu": "Menú",
"term.check": "Comprobar",
"term.aboutArtist": "Más sobre {{artistName}}", // e.g. 'About Doja Cat'
// Home
"home.title": "Inicio",
"home.recentlyPlayed": "Reproducciones recientes",
"home.recentlyAdded": "Añadido recientemente",
"home.artistsFeed": "Historial de tus artistas",
"home.artistsFeed.noArtist": "Sigue primero a algunos artistas y sus últimos lanzamientos aparecerán aquí",
"home.madeForYou": "Hecho para ti",
"home.friendsListeningTo": "Tus amigos están escuchando",
"home.followedArtists": "Artistas que sigues",
// Errors
"error.appleMusicSubRequired": "Apple Music necesita una suscripción.",
"error.connectionError": "Ha habido un problema al conectar con Apple Music.",
"error.noResults": "Sin resultados",
"error.noResults.description": "Intenta otra búsqueda.",
// Podcasts
"podcast.followOnCider": "Seguir en Cider",
"podcast.followedOnCider": "Siguiendo en Cider",
"podcast.subscribeOnItunes": "Suscribirse en iTunes",
"podcast.subscribedOnItunes": "Suscrito en iTunes",
"podcast.itunesStore": "Tienda de iTunes",
"podcast.episodes": "Episodios",
"podcast.playEpisode": "Iniciar Episodio",
"podcast.website": "Pagina del podcast",
// Actions
"action.addToLibrary": "Añadir a la biblioteca",
"action.addToLibrary.success": "Añadido a la biblioteca",
"action.addToLibrary.error": "Error al añadir a la biblioteca",
"action.removeFromLibrary": "Eliminar de la biblioteca",
"action.removeFromLibrary.success": "Eliminado de la biblioteca",
"action.addToQueue": "Añadir a la cola",
"action.addToQueue.success": "Añadido a la cola",
"action.addToQueue.error": "Error al añadirlo a la cola",
"action.removeFromQueue": "Elimiar de la cola",
"action.removeFromQueue.success": "Eliminado de la cola",
"action.removeFromQueue.error": "Error al eliminarlo de la cola",
"action.createPlaylist": "Crear nueva playlist",
"action.addToPlaylist": "Añadir a la playlist",
"action.removeFromPlaylist": "Eliminar de la playlist",
"action.addToFavorites": "Añadir a favoritos",
"action.follow": "Seguir",
"action.follow.success": "Siguiendo",
"action.follow.error": "Error al seguir",
"action.unfollow": "Dejar de seguir",
"action.unfollow.success": "Has dejado de seguirle",
"action.unfollow.error": "Error al dejar de seguir",
"action.playNext": "Reproducir a continuación",
"action.playLater": "Reproducir al final",
"action.startRadio": "Crear emisora",
"action.goToArtist": "Ir al artista",
"action.goToAlbum": "Mostrar álbum",
"action.moveToTop": "Mover a arriba",
"action.share": "Compartir",
"action.rename": "Renombrar",
"action.love": "Me gusta",
"action.unlove": "Eliminar me gusta",
"action.dislike": "Sugerir menos este estilo",
"action.undoDislike": "Sugerir este estilo",
"action.showWebRemoteQR": "Conexión remota",
"action.playTracksNext": "Reproducir ${app.selectedMediaItems.length} siguiente canción",
"action.playTracksLater": "Reproducir ${app.selectedMediaItems.length} como última canción",
"action.removeTracks": "Eliminar ${self.selectedItems.length} canciones de la cola",
"action.import": "Importar",
"action.export": "Exportar",
"action.showAlbum": "Mostrar álbum completo",
"action.tray.minimize": "Mover a la bandeja",
"action.tray.quit": "Salir",
"action.tray.show": "Abrir",
"action.update": "Actualizar",
// Settings - General
"settings.header.general": "General",
"settings.header.general.description": "Ajustes generales de Cider.",
"settings.option.general.language": "Idioma",
// Language optgroups
"settings.option.general.language.main": "Idiomas",
"settings.option.general.language.fun": "Idiomas divertidos",
"settings.option.general.language.unsorted": "Sin clasificar",
// i18n Info // Update Cider
"i18n.languageName": "Español (ES)", // name of language in native language "settings.option.general.updateCider": "Actualizar Cider", // Button
"i18n.languageNameEnglish": "Spanish (Spain)", // name of language in English
"i18n.category": "main", // main = real language, fun = fun community languages
"i18n.authors": "@j.fl220", // Authors, if you contribute to this file feel free to add your name seperated with a space
// App info // Settings - Audio
"app.name": "Cider", "settings.header.audio": "Audio",
"settings.header.audio.description": "Ajustes del audio de Cider.",
"settings.option.audio.quality": "Calidad de audio", // Dropdown
"settings.header.audio.quality.high": "Alto",
"settings.header.audio.quality.low": "Bajo",
"settings.header.audio.quality.auto": "Auto",
"settings.option.audio.seamlessTransition": "Transición de audio perfecta", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "Activar funciones avanzadas", // Toggle
"settings.option.audio.enableAdvancedFunctionality.description": "Habilitar la funcionalidad de AudioContext permitirá funciones de audio extendidas como Normalización de audio, Ecualizadores y Visualizadores; sin embargo, en algunos sistemas esto puede causar interrupciones en las canciones.",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalizar volumen", // Toggle
"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.description": "Espacializa más el audio y conviértelo más 3-dimensional (nota: Esto no es Dolby Atmos)",
"date.format": "${d} ${m}, ${y}", // Settings - Visual
"settings.header.visual": "Visual",
// Dialogs "settings.header.visual.description": "Ajustes visuales para Cider.",
"dialog.cancel": "Cancelar", "settings.option.visual.windowBackgroundStyle": "Estilo del fondo de la ventana", // Toggle
"dialog.ok": "Aceptar", "settings.header.visual.windowBackgroundStyle.none": "Nada",
"settings.header.visual.windowBackgroundStyle.artwork": "Carátula",
// Notification "settings.header.visual.windowBackgroundStyle.image": "Imagen",
"notification.updatingLibrarySongs": "Actualizando canciones de la biblioteca...", "settings.option.visual.animatedArtwork": "Carátula animada", // Dropdown
"notification.updatingLibraryAlbums": "Actualizando álbumes de la biblioteca...", "settings.header.visual.animatedArtwork.always": "Habilitar siempre",
"notification.updatingLibraryArtists": "Actualizando biblioteca de artistas...", "settings.header.visual.animatedArtwork.limited": "Limitado a algunas páginas",
// Terms "settings.header.visual.animatedArtwork.disable": "Deshabilitar en todas partes",
"term.appleInc": "Apple Inc.", "settings.option.visual.animatedArtworkQuality": "Calidad de la carátula animada", // Dropdown
"term.appleMusic": "Apple Music", "settings.header.visual.animatedArtworkQuality.low": "Bajo",
"term.applePodcasts": "Apple Podcasts", "settings.header.visual.animatedArtworkQuality.medium": "Medio",
"term.itunes": "iTunes", "settings.header.visual.animatedArtworkQuality.high": "Alto",
"term.github": "GitHub", "settings.header.visual.animatedArtworkQuality.veryHigh": "Muy alto",
"term.discord": "Discord", "settings.header.visual.animatedArtworkQuality.extreme": "Extrema",
"term.learnMore": "Leer más", "settings.option.visual.animatedWindowBackground": "Fondo de la ventana animado", // Toggle
"term.accountSettings": "Ajustes de la cuenta", "settings.option.visual.hardwareAcceleration": "Aceleración del hardware", // Dropdown
"term.logout": "Cerrar sesión", "settings.option.visual.hardwareAcceleration.description": "La app requiere reinicio",
"term.login": "Iniciar sesión", "settings.header.visual.hardwareAcceleration.default": "Por defecto",
"term.about": "Más información", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
"term.privateSession": "Sesión privada",
"term.queue": "En cola",
"term.search": "Buscar",
"term.library": "Biblioteca",
"term.listenNow": "Escuchar",
"term.browse": "Explorar",
"term.radio": "Radio",
"term.recentlyAdded": "Añadido recientemente",
"term.songs": "Canciones",
"term.albums": "Álbumes",
"term.artists": "Artistas",
"term.podcasts": "Podcasts",
"term.playlists": "Playlists",
"term.playlist": "Playlist",
"term.newPlaylist": "Nueva playlist",
"term.newPlaylistFolder": "Nueva carpeta de playlists",
"term.createNewPlaylist": "Crear nueva playlists",
"term.createNewPlaylistFolder": "Crear nueva carpeta de playlists",
"term.deletePlaylist": "¿Está seguro que desea eliminar esta playlist?",
"term.play": "Reproducir",
"term.pause": "Pausar",
"term.previous": "Anterior",
"term.next": "Siguiente",
"term.shuffle": "Aleatorio",
"term.repeat": "Repetir",
"term.volume": "Volumen",
"term.mute": "Silenciar",
"term.unmute": "Desilenciar",
"term.share": "Compartir",
"term.settings": "Ajustes",
"term.seeAll": "Ver todo",
"term.sortBy": "Ordenar por",
"term.sortBy.album": "Álbum",
"term.sortBy.artist": "Artista",
"term.sortBy.name": "Nombre",
"term.sortBy.genre": "Género",
"term.sortBy.releaseDate": "Fecha de lanzamiento",
"term.sortBy.duration": "Duración",
"term.sortOrder": "A-Z",
"term.sortOrder.ascending": "Ascendiente",
"term.sortOrder.descending": "Descendiente",
"term.viewAs": "Ver como",
"term.viewAs.coverArt": "Carátula",
"term.viewAs.list": "Lista",
"term.size": "Tamaño",
"term.size.normal": "Normal",
"term.size.compact": "Compacto",
"term.enable": "Habilitar",
"term.disable": "Deshabilitar",
"term.enabled": "Activado",
"term.disabled": "Desactivado",
"term.connect": "Conectar",
"term.connecting": "Conectando",
"term.disconnect": "Desconectado",
"term.authed": "Autentificado",
"term.confirm": "¿Confirmar?",
"term.more": "Más",
"term.less": "Menos",
"term.showMore": "Mostrar más",
"term.showLess": "Mostrar menos",
"term.topSongs" : "Top canciones",
"term.latestReleases": "Últimos lanzamientos",
"term.time.added": "Añadido",
"term.time.released": "Lanzado",
"term.time.updated": "Actualizado",
"term.time.hours": "horas",
"term.time.hour": "hora",
"term.time.minutes": "minutos",
"term.time.minute": "minuto",
"term.time.seconds": "segundos",
"term.time.second": "segundo",
"term.fullscreenView": "Pantalla completa",
"term.defaultView": "Vista por defecto",
"term.audioSettings": "Ajustes de audio",
"term.clearAll": "Borrar todo",
"term.recentStations": "Radios recientes",
"term.language": "Idioma",
"term.funLanguages": "Divertido",
"term.noLyrics": "Cargando... / Letra no encontrada./ Instrumental.",
"term.copyright": "Copyright",
"term.rightsReserved": "Todos los derechos reservados.",
"term.sponsor": "Apoya este proyecto",
"term.ciderTeam": "Equipo Cider",
"term.developer": "Desarrollador",
"term.socialTeam": "Equipo RRSS",
"term.socials": "Redes sociales",
"term.contributors": "Contribuidores",
"term.equalizer": "Equalizador",
"term.reset": "Resetear",
"term.tracks": "canciones", // Assume x amount of tracks. e.g. 50 tracks
"term.videos": "Vídeos",
"term.menu": "Menú",
"term.check": "Comprobar",
"term.aboutArtist": "Más sobre {{artistName}}", // e.g. 'About Doja Cat'
"term.updateCider": "Actualizar Cider",
// Home // Settings - Visual - Theme name
"home.title": "Inicio",
"home.recentlyPlayed": "Reproducciones recientes",
"home.recentlyAdded": "Añadido recientemente",
"home.artistsFeed": "Historial de tus artistas",
"home.artistsFeed.noArtist": "Sigue primero a algunos artistas y sus últimos lanzamientos aparecerán aquí",
"home.madeForYou": "Hecho para ti",
"home.friendsListeningTo": "Tus amigos están escuchando",
"home.followedArtists": "Artistas que sigues",
// Errors
"error.appleMusicSubRequired": "Apple Music necesita una suscripción.",
"error.connectionError": "Ha habido un problema al conectar con Apple Music.",
"error.noResults": "Sin resultados",
"error.noResults.description": "Intenta otra búsqueda.",
//Podcasts // Refer to term.disabled for the disabled option
"podcast.followOnCider": "Seguir en Cider", "settings.option.visual.showPersonalInfo": "Mostrar información personal", // Toggle
"podcast.followedOnCider": "Siguiendo en Cider",
"podcast.subscribeOnItunes": "Suscribirse en iTunes",
"podcast.subscribedOnItunes": "Suscrito en iTunes",
"podcast.itunesStore": "Tienda de iTunes",
"podcast.episodes": "Episodios",
"podcast.playEpisode": "Iniciar Episodio",
"podcast.website": "Pagina del podcast",
// Actions // Settings - Lyrics
"action.addToLibrary": "Añadir a la biblioteca", "settings.header.lyrics": "Letras",
"action.addToLibrary.success": "Añadido a la biblioteca", "settings.header.lyrics.description": "Ajuste las letras para Cider",
"action.addToLibrary.error": "Error al añadir a la biblioteca", "settings.option.lyrics.enableMusixmatch": "Habilitar las letras de Musixmatch", // Toggle
"action.removeFromLibrary": "Eliminar de la biblioteca", "settings.option.lyrics.enableMusixmatchKaraoke": "Habilita el modo Karaoke (solo con Musixmatch)", // Toggle
"action.removeFromLibrary.success": "Eliminado de la biblioteca", "settings.option.lyrics.musixmatchPreferredLanguage": "Idioma de traducción por defecto en Musixmatch", // Dropdown
"action.addToQueue": "Añadir a la cola", "settings.option.lyrics.enableYoutubeLyrics": "Habilitar las letras de Youtube para los videos con música", // Toggle
"action.addToQueue.success": "Añadido a la cola",
"action.addToQueue.error": "Error al añadirlo a la cola",
"action.removeFromQueue": "Elimiar de la cola",
"action.removeFromQueue.success": "Eliminado de la cola",
"action.removeFromQueue.error": "Error al eliminarlo de la cola",
"action.createPlaylist": "Crear nueva playlist",
"action.addToPlaylist": "Añadir a la playlist",
"action.removeFromPlaylist": "Eliminar de la playlist",
"action.addToFavorites": "Añadir a favoritos",
"action.follow": "Seguir",
"action.follow.success": "Siguiendo",
"action.follow.error": "Error al seguir",
"action.unfollow": "Dejar de seguir",
"action.unfollow.success": "Has dejado de seguirle",
"action.unfollow.error": "Error al dejar de seguir",
"action.playNext": "Reproducir a continuación",
"action.playLater": "Reproducir al final",
"action.startRadio": "Crear emisora",
"action.goToArtist": "Ir al artista",
"action.goToAlbum": "Mostrar álbum",
"action.moveToTop": "Mover a arriba",
"action.share": "Compartir",
"action.rename": "Renombrar",
"action.love": "Me gusta",
"action.unlove": "Eliminar me gusta",
"action.dislike": "Sugerir menos este estilo",
"action.undoDislike": "Sugerir este estilo",
"action.showWebRemoteQR": "Conexión remota",
"action.playTracksNext": "Reproducir ${app.selectedMediaItems.length} siguiente canción",
"action.playTracksLater": "Reproducir ${app.selectedMediaItems.length} como última canción",
"action.removeTracks": "Eliminar ${self.selectedItems.length} canciones de la cola",
"action.import": "Importar",
"action.export": "Exportar",
"action.showAlbum": "Mostrar álbum completo",
"action.tray.minimize": "Mover a la bandeja",
"action.tray.quit": "Salir",
"action.tray.show": "Abrir",
"action.update": "Actualizar",
// Settings - General // Settings - Connectivity
"settings.header.general": "General", "settings.header.connectivity": "Conectividad",
"settings.header.general.description": "Ajustes generales de Cider.", "settings.header.connectivity.description": "Ajusta la conectividad para Cider.",
"settings.option.general.language": "Idioma", "settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown
"settings.option.connectivity.playbackNotifications": "Notificaciones de reproducción", // Toggle
// Refer to term.disabled for the disabled option
"settings.header.connectivity.discordRPC.cider": "Mostrar como 'Cider'",
"settings.header.connectivity.discordRPC.appleMusic": "Mostrar como 'Apple Music'",
"settings.option.connectivity.discordRPC.clearOnPause": "Quitar Discord Rich Presence en pausa", // Toggle
"settings.option.connectivity.lastfmScrobble": "Scrobbling Last.fm", // Option to Connect
"settings.option.connectivity.lastfmScrobble.delay": "Delay del Scrobbling en Last.fm (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Habilitar 'Escuchando ahora' en Last.fm",
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Eliminar artistas destacados del título de la canción (Last.fm)",
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrar pista en bucle (Last.fm)",
// Refer to term.connect for the connect button
// Language optgroups // Settings - Experimental
"settings.option.general.language.main": "Idiomas", "settings.header.experimental": "En pruebas",
"settings.option.general.language.fun": "Idiomas divertidos", "settings.header.experimental.description": "Ajustes en pruebas para Cider.",
"settings.option.general.language.unsorted": "Sin clasificar", "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 - Audio
"settings.header.audio": "Audio",
"settings.header.audio.description": "Ajustes del audio de Cider.",
"settings.option.audio.quality": "Calidad de audio", // Dropdown
"settings.header.audio.quality.high": "Alto",
"settings.header.audio.quality.low": "Bajo",
"settings.header.audio.quality.auto": "Auto",
"settings.option.audio.seamlessTransition": "Transición de audio perfecta", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "Activar funciones avanzadas", // Toggle
"settings.option.audio.enableAdvancedFunctionality.description": "Habilitar la funcionalidad de AudioContext permitirá funciones de audio extendidas como Normalización de audio, Ecualizadores y Visualizadores; sin embargo, en algunos sistemas esto puede causar interrupciones en las canciones.",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalizar volumen", // Toggle
"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.description": "Espacializa más el audio y conviértelo más 3-dimensional (nota: Esto no es Dolby Atmos)",
// Settings - Visual
"settings.header.visual": "Visual",
"settings.header.visual.description": "Ajustes visuales para Cider.",
"settings.option.visual.windowBackgroundStyle": "Estilo del fondo de la ventana", // Toggle
"settings.header.visual.windowBackgroundStyle.none": "Nada",
"settings.header.visual.windowBackgroundStyle.artwork": "Carátula",
"settings.header.visual.windowBackgroundStyle.image": "Imagen",
"settings.option.visual.animatedArtwork": "Carátula animada", // Dropdown
"settings.header.visual.animatedArtwork.always": "Habilitar siempre",
"settings.header.visual.animatedArtwork.limited": "Limitado a algunas páginas",
"settings.header.visual.animatedArtwork.disable": "Deshabilitar en todas partes",
"settings.option.visual.animatedArtworkQuality": "Calidad de la carátula animada", // Dropdown
"settings.header.visual.animatedArtworkQuality.low": "Bajo",
"settings.header.visual.animatedArtworkQuality.medium": "Medio",
"settings.header.visual.animatedArtworkQuality.high": "Alto",
"settings.header.visual.animatedArtworkQuality.veryHigh": "Muy alto",
"settings.header.visual.animatedArtworkQuality.extreme": "Extrema",
"settings.option.visual.animatedWindowBackground": "Fondo de la ventana animado", // Toggle
"settings.option.visual.hardwareAcceleration": "Aceleración del hardware", // Dropdown
"settings.option.visual.hardwareAcceleration.description": "La app requiere reinicio",
"settings.header.visual.hardwareAcceleration.default": "Por defecto",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
// Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "Mostrar información personal", // Toggle
// Settings - Lyrics // Refer to term.disabled & term.enabled
"settings.header.lyrics": "Letras", // Spatialization Menu
"settings.header.lyrics.description": "Ajuste las letras para Cider", "spatial.notTurnedOn": "La espacialización del audio esta desactivada. Para usarlo primero actívelo.",
"settings.option.lyrics.enableMusixmatch": "Habilitar las letras de Musixmatch", // Toggle "spatial.spatialProperties": "Propiedades espaciales",
"settings.option.lyrics.enableMusixmatchKaraoke": "Habilita el modo Karaoke (solo con Musixmatch)", // Toggle "spatial.width": "Ancho",
"settings.option.lyrics.musixmatchPreferredLanguage": "Idioma de traducción por defecto en Musixmatch", // Dropdown "spatial.height": "Altura",
"settings.option.lyrics.enableYoutubeLyrics": "Habilitar las letras de Youtube para los videos con música", // Toggle "spatial.depth": "Profundidad",
"spatial.gain": "Ganancia",
"spatial.roomMaterials": "Material de la habitación",
"spatial.roomDimensions": "Dimensión de la habitación",
"spatial.roomPositions": "Posiciones de la habitación",
"spatial.setDimensions": "Establecer dimensiones",
"spatial.setPositions": "Establecer posiciones",
"spatial.up": "Arriba",
"spatial.front": "Delante",
"spatial.left": "Izquierda",
"spatial.right": "Derecha",
"spatial.back": "Atrás",
"spatial.down": "Abajo",
"spatial.listener": "Oyente",
"spatial.audioSource": "Salida del audio",
// Settings - Connectivity // Settings - Unfinished
"settings.header.connectivity": "Conectividad", "settings.header.unfinished": "Sin acabar",
"settings.header.connectivity.description": "Ajusta la conectividad para Cider.", "settings.header.unfinished.description": "Ajustes siendo testeados, no están acabados.",
"settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown
"settings.option.connectivity.playbackNotifications": "Notificaciones de reproducción", // Toggle
// Refer to term.disabled for the disabled option
"settings.header.connectivity.discordRPC.cider": "Mostrar como 'Cider'",
"settings.header.connectivity.discordRPC.appleMusic": "Mostrar como 'Apple Music'",
"settings.option.connectivity.discordRPC.clearOnPause": "Quitar Discord Rich Presence en pausa", // Toggle
"settings.option.connectivity.lastfmScrobble": "Scrobbling Last.fm", // Option to Connect
"settings.option.connectivity.lastfmScrobble.delay": "Delay del Scrobbling en Last.fm (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Habilitar 'Escuchando ahora' en Last.fm",
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Eliminar artistas destacados del título de la canción (Last.fm)",
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrar pista en bucle (Last.fm)",
// Refer to term.connect for the connect button
// Settings - Experimental // Web Remote
"settings.header.experimental": "En pruebas", "remote.web.title": "Cider Remoto",
"settings.header.experimental.description": "Ajustes en pruebas para Cider.", "remote.web.description": "Escanee el código QR para emparejar su teléfono con su cliente de Cider",
"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",
// Refer to term.disabled & term.enabled
// Spatialization Menu // About
"spatial.notTurnedOn": "La espacialización del audio esta desactivada. Para usarlo primero actívelo.", "about.thanks": "Muchísimas gracias al equipo de Cider Collective y también a todos nuestros contribuidores."
"spatial.spatialProperties": "Propiedades espaciales", }
"spatial.width": "Ancho",
"spatial.height": "Altura",
"spatial.depth": "Profundidad",
"spatial.gain": "Ganancia",
"spatial.roomMaterials": "Material de la habitación",
"spatial.roomDimensions": "Dimensión de la habitación",
"spatial.roomPositions": "Posiciones de la habitación",
"spatial.setDimensions": "Establecer dimensiones",
"spatial.setPositions": "Establecer posiciones",
"spatial.up": "Arriba",
"spatial.front": "Delante",
"spatial.left": "Izquierda",
"spatial.right": "Derecha",
"spatial.back": "Atrás",
"spatial.down": "Abajo",
"spatial.listener": "Oyente",
"spatial.audioSource": "Salida del audio",
// Settings - Unfinished
"settings.header.unfinished": "Sin acabar",
"settings.header.unfinished.description": "Ajustes siendo testeados, no están acabados.",
// Web Remote
"remote.web.title": "Cider Remoto",
"remote.web.description": "Escanee el código QR para emparejar su teléfono con su cliente de Cider",
// About
"about.thanks": "Muchísimas gracias al equipo de Cider Collective y también a todos nuestros contribuidores."
}

View file

@ -1,7 +1,7 @@
{ // 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
"i18n.languageNameEnglish": "French (CA)", // name of language in English "i18n.languageNameEnglish": "French (CA)", // 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": "brock#7527", // Authors, if you contribute to this file feel free to add your name seperated with a space "i18n.authors": "brock#7527", // Authors, if you contribute to this file feel free to add your name seperated with a space
@ -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,13 +129,14 @@
"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.",
"error.noResults": "Pas de resultats.", "error.noResults": "Pas de resultats.",
"error.noResults.description": "Essayez une nouvelle recherche.", "error.noResults.description": "Essayez une nouvelle recherche.",
//Podcasts // Podcasts
"podcast.followOnCider": "Suivez sur Cider", "podcast.followOnCider": "Suivez sur Cider",
"podcast.followedOnCider": "Suivi sur Cider", "podcast.followedOnCider": "Suivi sur Cider",
"podcast.subscribeOnItunes": "S'abonner sur iTunes", "podcast.subscribeOnItunes": "S'abonner sur iTunes",
@ -193,6 +195,8 @@
"settings.option.general.language.main": "Langue", "settings.option.general.language.main": "Langue",
"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",
@ -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,347 +1,351 @@
{ // 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
"i18n.languageNameEnglish": "French", // name of language in English "i18n.languageNameEnglish": "French", // 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": "@ErwanGit", // Authors, if you contribute to this file feel free to add your name seperated with a space "i18n.authors": "@ErwanGit", // 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": "Annuler",
"dialog.ok": "OK",
// Notification
"notification.updatingLibrarySongs": "Mise à jour des chansons de la bibliothèque...",
"notification.updatingLibraryAlbums": "Mise à jour des albums de la bibliothèque...",
"notification.updatingLibraryArtists": "Mise à jour des artistes de la bibliothèque...",
// Terms
"term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music",
"term.applePodcasts": "Apple Podcasts",
"term.itunes": "iTunes",
"term.github": "GitHub",
"term.discord": "Discord",
"term.learnMore": "En savoir plus",
"term.accountSettings": "Paramètres du compte",
"term.logout": "Déconnexion",
"term.login": "Connexion",
"term.about": "À propos",
"term.privateSession": "Session privée",
"term.queue": "File d'attente",
"term.history": "Historique",
"term.search": "Recherche",
"term.library": "Bibliothèque",
"term.listenNow": "Écoutez maintenant",
"term.browse": "Explorer",
"term.radio": "Radio",
"term.recentlyAdded": "Ajouté récemment",
"term.songs": "Musiques",
"term.albums": "Albums",
"term.artists": "Artistes",
"term.podcasts": "Podcasts",
"term.playlists": "Playlists",
"term.playlist": "Playlist",
"term.newPlaylist": "Nouvelle Playlist",
"term.newPlaylistFolder": "Nouveau dossier de playlist",
"term.createNewPlaylist": "Créer une nouvelle playlist",
"term.createNewPlaylistFolder": "Create New Playlist Folder",
"term.deletePlaylist": "Êtes-vous sûr de vouloir supprimer cette playlist ?",
"term.play": "Lecture",
"term.pause": "Pause",
"term.previous": "Précédent",
"term.next": "Suivant",
"term.shuffle": "Aléatoire",
"term.repeat": "Répéter",
"term.volume": "Volume",
"term.mute": "Rendre muet",
"term.unmute": "Ne plus rendre muet",
"term.share": "Partager",
"term.settings": "Paramètres",
"term.share.success": "Copié dans le presse-papier",
"term.seeAll": "Voir tout",
"term.sortBy": "Trier par",
"term.sortBy.album": "Album",
"term.sortBy.artist": "Artiste",
"term.sortBy.name": "Nom",
"term.sortBy.genre": "Genre",
"term.sortBy.releaseDate": "Date de sortie",
"term.sortBy.duration": "Durée",
"term.sortOrder": "A-Z",
"term.sortOrder.ascending": "Ascendant",
"term.sortOrder.descending": "Descendant",
"term.viewAs": "Voir comme",
"term.viewAs.coverArt": "Pochette d'album",
"term.viewAs.list": "Liste",
"term.size": "Taille",
"term.size.normal": "Normal",
"term.size.compact": "Compacte",
"term.enable": "Activer",
"term.disable": "Désactiver",
"term.enabled": "Activé",
"term.disabled": "Désactivé",
"term.connect": "Connecter",
"term.connecting": "Connexion",
"term.disconnect": "Déconnexion",
"term.authed": "Authentifié",
"term.confirm": "Confirmer ?",
"term.more": "Plus",
"term.less": "Moins",
"term.showMore": "Afficher plus",
"term.showLess": "Afficher moins",
"term.topSongs" : "Meilleurs titres",
"term.latestReleases": "Dernières sorties",
"term.time.added": "Ajouté",
"term.time.released": "Publié",
"term.time.updated": "Mis à jour",
"term.time.hours": "heures",
"term.time.hour": "heure",
"term.time.minutes": "minutes",
"term.time.minute": "minute",
"term.time.seconds": "secondes",
"term.time.second": "seconde",
"term.fullscreenView": "Vue plein écran",
"term.defaultView": "Vue par défaut",
"term.spacializedAudioSetting": "Paramètres audio spatialisés",
"term.clearAll": "Tout effacer",
"term.recentStations": "Stations récentes",
"term.language": "Langue",
"term.funLanguages": "Amusant",
"term.noLyrics": "Chargement... / Paroles non trouvé./ Instrumental.",
"term.copyright": "Copyright",
"term.rightsReserved": "Tous droits réservés.",
"term.sponsor": "Soutenez ce projet",
"term.ciderTeam": "Équipe Cider",
"term.developer": "Développeur",
"term.socialTeam": "Équipe de communication",
"term.socials": "Réseaux sociaux",
"term.contributors": "Contributeurs",
"term.equalizer": "Égaliseur",
"term.reset": "Réinitialiser",
"term.tracks": "musiques", // Assume x amount of tracks. e.g. 50 tracks
"term.videos": "Vidéos",
"term.menu": "Menu",
"term.check": "Vérifier",
"term.aboutArtist": "À propos de {{artistName}}", // e.g. 'About Doja Cat'
"term.updateCider": "Mettre à jour Cider",
"term.topResult": "Meilleurs résultats", // Search Results
"term.sharedPlaylists": "Playlists partagées", // Search Results
"term.people": "Personnes", // Search Results
"term.newpreset.name": "Nouveau nom du préréglage de l'égaliseur", // Equalizer Preset
"term.addedpreset": "Ajout d'un préréglage",
"term.deletepreset.warn": "Êtes-vous sûr de vouloir supprimer ce préréglage ?",
"term.deletedpreset": "Suppression d'un préréglage",
"term.musicVideos": "Vidéos musicales", // Search page friendlyTypes
"term.stations": "Stations",
"term.curators": "Curateurs",
"term.appleCurators": "Curateurs Apple",
"term.radioShows": "Émissions de radio",
"term.recordLabels": "Labels de disques",
"term.videoExtras": "Vidéos bonus",
"term.top": "Top",
// Home
"home.title": "Accueil",
"home.recentlyPlayed": "Joué récemment",
"home.recentlyAdded": "Récemment ajouté",
"home.artistsFeed": "Votre file d'artistes",
"home.artistsFeed.noArtist": "Suivez d'abord certains artistes et leurs dernières sorties seront ici",
"home.madeForYou": "Fait pour vous",
"home.friendsListeningTo": "Vos amis écoutent",
"home.followedArtists": "Artistes suivis",
// Errors
"error.appleMusicSubRequired": "Apple Music nécessite un abonnement.",
"error.connectionError": "Il y a eu un problème de connexion à Apple Music.",
"error.noResults": "Aucun résultat.",
"error.noResults.description": "Essayez une nouvelle recherche.",
//Podcasts
"podcast.followOnCider": "Suivre sur Cider",
"podcast.followedOnCider": "Suivi sur Cider",
"podcast.subscribeOnItunes": "Suivre sur iTunes",
"podcast.subscribedOnItunes": "Suivi sur iTunes",
"podcast.itunesStore": "iTunes Store",
"podcast.episodes": "Épisodes",
"podcast.playEpisode": "Lire l'épisode",
"podcast.website": "Site du podcast",
// Actions
"action.addToLibrary": "Ajouter à la bibliothèque",
"action.addToLibrary.success": "Ajouté à la bibliothèque",
"action.addToLibrary.error": "Erreur lors de l'ajout à la bibliothèque",
"action.removeFromLibrary": "Retirer de la bibliothèque",
"action.removeFromLibrary.success": "Retiré de la bibliothèque",
"action.addToQueue": "Ajouter à la file d'attente",
"action.addToQueue.success": "Ajouté à la file d'attente",
"action.addToQueue.error": "Erreur lors de l'ajout à la file d'attente",
"action.removeFromQueue": "Retirer de la file d'attente",
"action.removeFromQueue.success": "Retiré de la file d'attente",
"action.removeFromQueue.error": "Erreur lors du retrait de la file d'attente",
"action.createPlaylist": "Créer une nouvelle playlist",
"action.addToPlaylist": "Ajouter à une playlist",
"action.removeFromPlaylist": "Retirer de la playlist",
"action.addToFavorites": "Ajouter aux favoris",
"action.follow": "Suivre",
"action.follow.success": "Suivi",
"action.follow.error": "Erreur lors de l'abonnement",
"action.unfollow": "Se désabonner",
"action.unfollow.success": "Désabonné",
"action.unfollow.error": "Erreur lors du désabonnement",
"action.playNext": "Jouer après",
"action.playLater": "Jouer plus tard",
"action.startRadio": "Lancer la radio",
"action.goToArtist": "Aller à l'artiste",
"action.goToAlbum": "Aller à l'album",
"action.moveToTop": "Haut de page",
"action.share": "Partager",
"action.rename": "Renommer",
"action.love": "Aimer",
"action.unlove": "Ne plus aimer",
"action.dislike": "Je n'aime pas",
"action.undoDislike": "Je n'aime plus",
"action.showWebRemoteQR": "Afficher le QR Code de la télécommande à distance",
"action.playTracksNext": "Jouer ${app.selectedMediaItems.length} musiques après",
"action.playTracksLater": "Jouer ${app.selectedMediaItems.length} musiques plus tard",
"action.removeTracks": "Retirer ${self.selectedItems.length} musiques de la file d'attente",
"action.import": "Importer",
"action.export": "Exporter",
"action.showAlbum": "Afficher l'album complet",
"action.tray.minimize": "Réduire dans la barre d'outils",
"action.tray.quit": "Quitter",
"action.tray.show": "Afficher",
"action.update": "Mettre à jour",
"action.copy": "Copier",
"action.newpreset": "Nouveau préréglage...", // Equalizer Preset
"action.deletepreset": "Supprimer le préréglage",
// Settings - General
"settings.header.general": "Général",
"settings.header.general.description": "Ajuster les paramètres généraux de Cider.",
"settings.option.general.language": "Langue",
// Language optgroups
"settings.option.general.language.main": "Langues",
"settings.option.general.language.fun": "Langues amusantes",
"settings.option.general.language.unsorted": "Non trié",
// Settings - Audio
"settings.header.audio": "Audio",
"settings.header.audio.description": "Ajuster les paramètres audio de Cider.",
"settings.option.audio.quality": "Qualité Audio", // Dropdown
"settings.header.audio.quality.hireslossless": "Lossless haute qualité (Hi-Res)",
"settings.header.audio.quality.hireslossless.description": "(jusqu'à 24 bits/192 kHz)",
"settings.header.audio.quality.lossless": "Lossless",
"settings.header.audio.quality.lossless.description": "(jusqu'à 24 bits/48 kHz)",
"settings.header.audio.quality.enhanced": "Amélioré",
"settings.header.audio.quality.high": "Élevée",
"settings.header.audio.quality.low": "Faible",
"settings.header.audio.quality.auto": "Automatique",
"settings.option.audio.seamlessTransition": "Fondu audio transparent", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "Activer les fonctions avancées", // Toggle
"settings.option.audio.enableAdvancedFunctionality.description": "L'activation de la fonctionnalité AudioContext permet d'utiliser des fonctions audio étendues telles que la normalisation du son, les égaliseurs et les visualiseurs. Toutefois, sur certains systèmes, cela peut provoquer des bégaiements dans les pistes audio.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Moteur de traitement psycho-acoustique Cider", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Un processus de traitement qui fait croire à votre cerveau que les fichiers sont de meilleure qualité.",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalisation du son", // Toggle
"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.description": "Spatialiser l'audio et rendre l'audio plus tridimensionnel (note: Ce n'est pas Dolby Atmos)",
// Settings - Visual
"settings.header.visual": "Visuel",
"settings.header.visual.description": "Ajuster les paramètres visuels de Cider.",
"settings.option.visual.windowBackgroundStyle": "Style d'arrière-plan de la fenêtre", // Toggle
"settings.header.visual.windowBackgroundStyle.none": "Aucun",
"settings.header.visual.windowBackgroundStyle.artwork": "Pochette d'album",
"settings.header.visual.windowBackgroundStyle.image": "Image",
"settings.option.visual.animatedArtwork": "Pochette d'album animée", // Dropdown
"settings.header.visual.animatedArtwork.always": "Toujours",
"settings.header.visual.animatedArtwork.limited": "Limité aux pages et aux entrées spéciales",
"settings.header.visual.animatedArtwork.disable": "Désactiver partout",
"settings.option.visual.animatedArtworkQuality": "Qualité de la pochette d'album animée", // Dropdown
"settings.header.visual.animatedArtworkQuality.low": "Faible",
"settings.header.visual.animatedArtworkQuality.medium": "Moyen",
"settings.header.visual.animatedArtworkQuality.high": "Élevée",
"settings.header.visual.animatedArtworkQuality.veryHigh": "Très élevée",
"settings.header.visual.animatedArtworkQuality.extreme": "Extrême",
"settings.option.visual.animatedWindowBackground": "Arrière-plan de fenêtre animé", // Toggle
"settings.option.visual.hardwareAcceleration": "Accélération matérielle", // Dropdown
"settings.option.visual.hardwareAcceleration.description": "Nécessite un relancement",
"settings.header.visual.hardwareAcceleration.default": "Défaut",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
"settings.header.visual.theme": "Thème",
// Settings - Visual - Theme name // App info
"settings.option.visual.theme.default": "Cider", "app.name": "Cider",
"settings.option.visual.theme.dark": "Sombre",
"date.format": "${d} ${m} ${y}",
// Refer to term.disabled for the disabled option // Dialogs
"settings.option.visual.showPersonalInfo": "Afficher vos informations personnelles", // Toggle "dialog.cancel": "Annuler",
"dialog.ok": "OK",
// Notification
"notification.updatingLibrarySongs": "Mise à jour des chansons de la bibliothèque...",
"notification.updatingLibraryAlbums": "Mise à jour des albums de la bibliothèque...",
"notification.updatingLibraryArtists": "Mise à jour des artistes de la bibliothèque...",
// Terms
"term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music",
"term.applePodcasts": "Apple Podcasts",
"term.itunes": "iTunes",
"term.github": "GitHub",
"term.discord": "Discord",
"term.learnMore": "En savoir plus",
"term.accountSettings": "Paramètres du compte",
"term.logout": "Déconnexion",
"term.login": "Connexion",
"term.about": "À propos",
"term.privateSession": "Session privée",
"term.queue": "File d'attente",
"term.history": "Historique",
"term.search": "Recherche",
"term.library": "Bibliothèque",
"term.listenNow": "Écoutez maintenant",
"term.browse": "Explorer",
"term.radio": "Radio",
"term.recentlyAdded": "Ajouté récemment",
"term.songs": "Musiques",
"term.albums": "Albums",
"term.artists": "Artistes",
"term.podcasts": "Podcasts",
"term.playlists": "Playlists",
"term.playlist": "Playlist",
"term.newPlaylist": "Nouvelle Playlist",
"term.newPlaylistFolder": "Nouveau dossier de playlist",
"term.createNewPlaylist": "Créer une nouvelle playlist",
"term.createNewPlaylistFolder": "Create New Playlist Folder",
"term.deletePlaylist": "Êtes-vous sûr de vouloir supprimer cette playlist ?",
"term.play": "Lecture",
"term.pause": "Pause",
"term.previous": "Précédent",
"term.next": "Suivant",
"term.shuffle": "Aléatoire",
"term.repeat": "Répéter",
"term.volume": "Volume",
"term.mute": "Rendre muet",
"term.unmute": "Ne plus rendre muet",
"term.share": "Partager",
"term.settings": "Paramètres",
"term.share.success": "Copié dans le presse-papier",
"term.seeAll": "Voir tout",
"term.sortBy": "Trier par",
"term.sortBy.album": "Album",
"term.sortBy.artist": "Artiste",
"term.sortBy.name": "Nom",
"term.sortBy.genre": "Genre",
"term.sortBy.releaseDate": "Date de sortie",
"term.sortBy.duration": "Durée",
"term.sortOrder": "A-Z",
"term.sortOrder.ascending": "Ascendant",
"term.sortOrder.descending": "Descendant",
"term.viewAs": "Voir comme",
"term.viewAs.coverArt": "Pochette d'album",
"term.viewAs.list": "Liste",
"term.size": "Taille",
"term.size.normal": "Normal",
"term.size.compact": "Compacte",
"term.enable": "Activer",
"term.disable": "Désactiver",
"term.enabled": "Activé",
"term.disabled": "Désactivé",
"term.connect": "Connecter",
"term.connecting": "Connexion",
"term.disconnect": "Déconnexion",
"term.authed": "Authentifié",
"term.confirm": "Confirmer ?",
"term.more": "Plus",
"term.less": "Moins",
"term.showMore": "Afficher plus",
"term.showLess": "Afficher moins",
"term.topSongs": "Meilleurs titres",
"term.latestReleases": "Dernières sorties",
"term.time.added": "Ajouté",
"term.time.released": "Publié",
"term.time.updated": "Mis à jour",
"term.time.hours": "heures",
"term.time.hour": "heure",
"term.time.minutes": "minutes",
"term.time.minute": "minute",
"term.time.seconds": "secondes",
"term.time.second": "seconde",
"term.fullscreenView": "Vue plein écran",
"term.defaultView": "Vue par défaut",
"term.spacializedAudioSetting": "Paramètres audio spatialisés",
"term.clearAll": "Tout effacer",
"term.recentStations": "Stations récentes",
"term.language": "Langue",
"term.funLanguages": "Amusant",
"term.noLyrics": "Chargement... / Paroles non trouvé./ Instrumental.",
"term.copyright": "Copyright",
"term.rightsReserved": "Tous droits réservés.",
"term.sponsor": "Soutenez ce projet",
"term.ciderTeam": "Équipe Cider",
"term.developer": "Développeur",
"term.socialTeam": "Équipe de communication",
"term.socials": "Réseaux sociaux",
"term.contributors": "Contributeurs",
"term.equalizer": "Égaliseur",
"term.reset": "Réinitialiser",
"term.tracks": "musiques", // Assume x amount of tracks. e.g. 50 tracks
"term.videos": "Vidéos",
"term.menu": "Menu",
"term.check": "Vérifier",
"term.aboutArtist": "À propos de {{artistName}}", // e.g. 'About Doja Cat'
"term.topResult": "Meilleurs résultats", // Search Results
"term.sharedPlaylists": "Playlists partagées", // Search Results
"term.people": "Personnes", // Search Results
"term.newpreset.name": "Nouveau nom du préréglage de l'égaliseur", // Equalizer Preset
"term.addedpreset": "Ajout d'un préréglage",
"term.deletepreset.warn": "Êtes-vous sûr de vouloir supprimer ce préréglage ?",
"term.deletedpreset": "Suppression d'un préréglage",
"term.musicVideos": "Vidéos musicales", // Search page friendlyTypes
"term.stations": "Stations",
"term.curators": "Curateurs",
"term.appleCurators": "Curateurs Apple",
"term.radioShows": "Émissions de radio",
"term.recordLabels": "Labels de disques",
"term.videoExtras": "Vidéos bonus",
"term.top": "Top",
// Home
"home.title": "Accueil",
"home.recentlyPlayed": "Joué récemment",
"home.recentlyAdded": "Récemment ajouté",
"home.artistsFeed": "Votre file d'artistes",
"home.artistsFeed.noArtist": "Suivez d'abord certains artistes et leurs dernières sorties seront ici",
"home.madeForYou": "Fait pour vous",
"home.friendsListeningTo": "Vos amis écoutent",
"home.followedArtists": "Artistes suivis",
// Settings - Lyrics // Errors
"settings.header.lyrics": "Paroles", "error.appleMusicSubRequired": "Apple Music nécessite un abonnement.",
"settings.header.lyrics.description": "Ajuster les paramètres des paroles pour Cider.", "error.connectionError": "Il y a eu un problème de connexion à Apple Music.",
"settings.option.lyrics.enableMusixmatch": "Activer les paroles Musixmatch", // Toggle "error.noResults": "Aucun résultat.",
"settings.option.lyrics.enableMusixmatchKaraoke": "Activer le mode karaoké (Musixmatch seulement)", // Toggle "error.noResults.description": "Essayez une nouvelle recherche.",
"settings.option.lyrics.musixmatchPreferredLanguage": "Langue préférée pour les traductions Musixmatch", // Dropdown
"settings.option.lyrics.enableYoutubeLyrics": "Activer les paroles YouTube pour les vidéos de musique", // Toggle // Podcasts
"podcast.followOnCider": "Suivre sur Cider",
"podcast.followedOnCider": "Suivi sur Cider",
"podcast.subscribeOnItunes": "Suivre sur iTunes",
"podcast.subscribedOnItunes": "Suivi sur iTunes",
"podcast.itunesStore": "iTunes Store",
"podcast.episodes": "Épisodes",
"podcast.playEpisode": "Lire l'épisode",
"podcast.website": "Site du podcast",
// Actions
"action.addToLibrary": "Ajouter à la bibliothèque",
"action.addToLibrary.success": "Ajouté à la bibliothèque",
"action.addToLibrary.error": "Erreur lors de l'ajout à la bibliothèque",
"action.removeFromLibrary": "Retirer de la bibliothèque",
"action.removeFromLibrary.success": "Retiré de la bibliothèque",
"action.addToQueue": "Ajouter à la file d'attente",
"action.addToQueue.success": "Ajouté à la file d'attente",
"action.addToQueue.error": "Erreur lors de l'ajout à la file d'attente",
"action.removeFromQueue": "Retirer de la file d'attente",
"action.removeFromQueue.success": "Retiré de la file d'attente",
"action.removeFromQueue.error": "Erreur lors du retrait de la file d'attente",
"action.createPlaylist": "Créer une nouvelle playlist",
"action.addToPlaylist": "Ajouter à une playlist",
"action.removeFromPlaylist": "Retirer de la playlist",
"action.addToFavorites": "Ajouter aux favoris",
"action.follow": "Suivre",
"action.follow.success": "Suivi",
"action.follow.error": "Erreur lors de l'abonnement",
"action.unfollow": "Se désabonner",
"action.unfollow.success": "Désabonné",
"action.unfollow.error": "Erreur lors du désabonnement",
"action.playNext": "Jouer après",
"action.playLater": "Jouer plus tard",
"action.startRadio": "Lancer la radio",
"action.goToArtist": "Aller à l'artiste",
"action.goToAlbum": "Aller à l'album",
"action.moveToTop": "Haut de page",
"action.share": "Partager",
"action.rename": "Renommer",
"action.love": "Aimer",
"action.unlove": "Ne plus aimer",
"action.dislike": "Je n'aime pas",
"action.undoDislike": "Je n'aime plus",
"action.showWebRemoteQR": "Afficher le QR Code de la télécommande à distance",
"action.playTracksNext": "Jouer ${app.selectedMediaItems.length} musiques après",
"action.playTracksLater": "Jouer ${app.selectedMediaItems.length} musiques plus tard",
"action.removeTracks": "Retirer ${self.selectedItems.length} musiques de la file d'attente",
"action.import": "Importer",
"action.export": "Exporter",
"action.showAlbum": "Afficher l'album complet",
"action.tray.minimize": "Réduire dans la barre d'outils",
"action.tray.quit": "Quitter",
"action.tray.show": "Afficher",
"action.update": "Mettre à jour",
"action.copy": "Copier",
"action.newpreset": "Nouveau préréglage...", // Equalizer Preset
"action.deletepreset": "Supprimer le préréglage",
// Settings - General
"settings.header.general": "Général",
"settings.header.general.description": "Ajuster les paramètres généraux de Cider.",
"settings.option.general.language": "Langue",
// Settings - Connectivity // Language optgroups
"settings.header.connectivity": "Connectivité", "settings.option.general.language.main": "Langues",
"settings.header.connectivity.description": "Ajuster les paramètres de connectivité de Cider.", "settings.option.general.language.fun": "Langues amusantes",
"settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown "settings.option.general.language.unsorted": "Non trié",
"settings.option.connectivity.playbackNotifications": "Notifications de lecture", // Toggle
// Refer to term.disabled for the disabled option // Update Cider
"settings.header.connectivity.discordRPC.cider": "Afficher comme 'Cider'", "settings.option.general.updateCider": "Mettre à jour Cider", // Button
"settings.header.connectivity.discordRPC.appleMusic": "Afficher comme 'Apple Music'",
"settings.option.connectivity.discordRPC.clearOnPause": "Désactiver le Discord Rich Presence quand la musique est en pause", // Toggle // Settings - Audio
"settings.option.connectivity.lastfmScrobble": "Scrobble LastFM", // Option to Connect "settings.header.audio": "Audio",
"settings.option.connectivity.lastfmScrobble.delay": "Délai de Scrobble LastFM (%)", "settings.header.audio.description": "Ajuster les paramètres audio de Cider.",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Activer la lecture en cours sur LastFM", "settings.option.audio.quality": "Qualité Audio", // Dropdown
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Supprimer les artistes en vedette du titre de la chanson (LastFM)", "settings.header.audio.quality.hireslossless": "Lossless haute qualité (Hi-Res)",
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrer les titres en boucle (LastFM)", "settings.header.audio.quality.hireslossless.description": "(jusqu'à 24 bits/192 kHz)",
// Refer to term.connect for the connect button "settings.header.audio.quality.lossless": "Lossless",
"settings.header.audio.quality.lossless.description": "(jusqu'à 24 bits/48 kHz)",
"settings.header.audio.quality.enhanced": "Amélioré",
"settings.header.audio.quality.high": "Élevée",
"settings.header.audio.quality.low": "Faible",
"settings.header.audio.quality.auto": "Automatique",
"settings.option.audio.seamlessTransition": "Fondu audio transparent", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "Activer les fonctions avancées", // Toggle
"settings.option.audio.enableAdvancedFunctionality.description": "L'activation de la fonctionnalité AudioContext permet d'utiliser des fonctions audio étendues telles que la normalisation du son, les égaliseurs et les visualiseurs. Toutefois, sur certains systèmes, cela peut provoquer des bégaiements dans les pistes audio.",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Moteur de traitement psycho-acoustique Cider", // Toggle
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Un processus de traitement qui fait croire à votre cerveau que les fichiers sont de meilleure qualité.",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalisation du son", // Toggle
"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.description": "Spatialiser l'audio et rendre l'audio plus tridimensionnel (note: Ce n'est pas Dolby Atmos)",
// Settings - Visual
"settings.header.visual": "Visuel",
"settings.header.visual.description": "Ajuster les paramètres visuels de Cider.",
"settings.option.visual.windowBackgroundStyle": "Style d'arrière-plan de la fenêtre", // Toggle
"settings.header.visual.windowBackgroundStyle.none": "Aucun",
"settings.header.visual.windowBackgroundStyle.artwork": "Pochette d'album",
"settings.header.visual.windowBackgroundStyle.image": "Image",
"settings.option.visual.animatedArtwork": "Pochette d'album animée", // Dropdown
"settings.header.visual.animatedArtwork.always": "Toujours",
"settings.header.visual.animatedArtwork.limited": "Limité aux pages et aux entrées spéciales",
"settings.header.visual.animatedArtwork.disable": "Désactiver partout",
"settings.option.visual.animatedArtworkQuality": "Qualité de la pochette d'album animée", // Dropdown
"settings.header.visual.animatedArtworkQuality.low": "Faible",
"settings.header.visual.animatedArtworkQuality.medium": "Moyen",
"settings.header.visual.animatedArtworkQuality.high": "Élevée",
"settings.header.visual.animatedArtworkQuality.veryHigh": "Très élevée",
"settings.header.visual.animatedArtworkQuality.extreme": "Extrême",
"settings.option.visual.animatedWindowBackground": "Arrière-plan de fenêtre animé", // Toggle
"settings.option.visual.hardwareAcceleration": "Accélération matérielle", // Dropdown
"settings.option.visual.hardwareAcceleration.description": "Nécessite un relancement",
"settings.header.visual.hardwareAcceleration.default": "Défaut",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
"settings.header.visual.theme": "Thème",
// Settings - Experimental // Settings - Visual - Theme name
"settings.header.experimental": "Expérimental", "settings.option.visual.theme.default": "Cider",
"settings.header.experimental.description": "Ajuster les paramètres expérimentaux de Cider.", "settings.option.visual.theme.dark": "Sombre",
"settings.option.experimental.compactUI": "Interface utilisateur compacte", // Toggle
"settings.option.experimental.close_button_hide": "Le bouton de fermeture doit masquer l'application", // Refer to term.disabled for the disabled option
"settings.option.experimental.copy_log": "Copier les logs dans le presse-papier", "settings.option.visual.showPersonalInfo": "Afficher vos informations personnelles", // Toggle
"settings.option.experimental.inline_playlists": "Playlists et albums en ligne",
// Refer to term.disabled & term.enabled
// Spatialization Menu // Settings - Lyrics
"spatial.notTurnedOn": "La spatialisation audio est désactivée. Pour l'utiliser, vous devez d'abord l'activer.", "settings.header.lyrics": "Paroles",
"spatial.spatialProperties": "Propriétés spatiales", "settings.header.lyrics.description": "Ajuster les paramètres des paroles pour Cider.",
"spatial.width": "Largeur", "settings.option.lyrics.enableMusixmatch": "Activer les paroles Musixmatch", // Toggle
"spatial.height": "Hauteur", "settings.option.lyrics.enableMusixmatchKaraoke": "Activer le mode karaoké (Musixmatch seulement)", // Toggle
"spatial.depth": "Profondeur", "settings.option.lyrics.musixmatchPreferredLanguage": "Langue préférée pour les traductions Musixmatch", // Dropdown
"spatial.gain": "Gain", "settings.option.lyrics.enableYoutubeLyrics": "Activer les paroles YouTube pour les vidéos de musique", // Toggle
"spatial.roomMaterials": "Matériaux de la pièce",
"spatial.roomDimensions": "Dimensions de la pièce",
"spatial.roomPositions": "Positions de la pièce",
"spatial.setDimensions": "Définir les dimensions",
"spatial.setPositions": "Définir les positions",
"spatial.up": "Haut",
"spatial.front": "Avant",
"spatial.left": "Gauche",
"spatial.right": "Droite",
"spatial.back": "Retour",
"spatial.down": "Bas",
"spatial.listener": "Auditeur",
"spatial.audioSource": "Source Audio",
// Settings - Unfinished
"settings.header.unfinished": "Inachevée",
// Web Remote // Settings - Connectivity
"remote.web.title": "Cider à distance", "settings.header.connectivity": "Connectivité",
"remote.web.description": "Scanner le QR code pour associer votre téléphone avec cette instance Cider", "settings.header.connectivity.description": "Ajuster les paramètres de connectivité de Cider.",
"settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown
"settings.option.connectivity.playbackNotifications": "Notifications de lecture", // Toggle
// Refer to term.disabled for the disabled option
"settings.header.connectivity.discordRPC.cider": "Afficher comme 'Cider'",
"settings.header.connectivity.discordRPC.appleMusic": "Afficher comme 'Apple Music'",
"settings.option.connectivity.discordRPC.clearOnPause": "Désactiver le Discord Rich Presence quand la musique est en pause", // Toggle
"settings.option.connectivity.lastfmScrobble": "Scrobble LastFM", // Option to Connect
"settings.option.connectivity.lastfmScrobble.delay": "Délai de Scrobble LastFM (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Activer la lecture en cours sur LastFM",
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Supprimer les artistes en vedette du titre de la chanson (LastFM)",
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrer les titres en boucle (LastFM)",
// Refer to term.connect for the connect button
// Settings - Experimental
"settings.header.experimental": "Expérimental",
"settings.header.experimental.description": "Ajuster les paramètres expérimentaux de Cider.",
"settings.option.experimental.compactUI": "Interface utilisateur compacte", // Toggle
"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.inline_playlists": "Playlists et albums en ligne",
// Refer to term.disabled & term.enabled
// Spatialization Menu
"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.width": "Largeur",
"spatial.height": "Hauteur",
"spatial.depth": "Profondeur",
"spatial.gain": "Gain",
"spatial.roomMaterials": "Matériaux de la pièce",
"spatial.roomDimensions": "Dimensions de la pièce",
"spatial.roomPositions": "Positions de la pièce",
"spatial.setDimensions": "Définir les dimensions",
"spatial.setPositions": "Définir les positions",
"spatial.up": "Haut",
"spatial.front": "Avant",
"spatial.left": "Gauche",
"spatial.right": "Droite",
"spatial.back": "Retour",
"spatial.down": "Bas",
"spatial.listener": "Auditeur",
"spatial.audioSource": "Source Audio",
// About // Settings - Unfinished
"about.thanks": "Un grand merci à l'équipe de la Cider Collective et à tous nos contributeurs." "settings.header.unfinished": "Inachevée",
}
// Web Remote
"remote.web.title": "Cider à distance",
"remote.web.description": "Scanner le QR code pour associer votre téléphone avec cette instance Cider",
// About
"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,28 +1,29 @@
{ // 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",
"date.format": "${m} ${d}, ${y}", "date.format": "${m} ${d}, ${y}",
// Dialogs // Dialogs
"dialog.cancel": "Mégsem", "dialog.cancel": "Mégsem",
"dialog.ok": "OK", "dialog.ok": "OK",
// Notification // Notification
"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",
@ -91,10 +93,10 @@
"term.less": "Kevesebb", "term.less": "Kevesebb",
"term.showMore": "Mutass többet", "term.showMore": "Mutass többet",
"term.showLess": "Mutass kevesebbet", "term.showLess": "Mutass kevesebbet",
"term.topSongs" : "A legjobb dalok", "term.topSongs": "A legjobb dalok",
"term.latestReleases": "Új megjelenések", "term.latestReleases": "Új megjelenések",
"term.time.added": "Hozzáadva", "term.time.added": "Hozzáadva",
"term.time.released": "Kiadva", "term.time.released": "Kiadva",
"term.time.updated": "Frissítve", "term.time.updated": "Frissítve",
"term.time.hours": "óra", "term.time.hours": "óra",
"term.time.hour": "óra", "term.time.hour": "óra",
@ -104,45 +106,60 @@
"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.",
"error.noResults": "Nincs találat", "error.noResults": "Nincs találat",
"error.noResults.description": "Próbálkozzon új kereséssel", "error.noResults.description": "Próbálkozzon új kereséssel",
//Podcasts // Podcasts
"podcast.followOnCider": "Követés a Cideren", "podcast.followOnCider": "Követés a Cideren",
"podcast.followedOnCider": "Követve a Cideren", "podcast.followedOnCider": "Követve a Cideren",
"podcast.subscribeOnItunes": "Feliratkozás az iTunesban", "podcast.subscribeOnItunes": "Feliratkozás az iTunesban",
@ -151,13 +168,13 @@
"podcast.episodes": "Epizódok", "podcast.episodes": "Epizódok",
"podcast.playEpisode": "Epizód lejátszása", "podcast.playEpisode": "Epizód lejátszása",
"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
@ -242,45 +277,53 @@
"settings.option.visual.animatedWindowBackground": "Animált ablakháttér", // Toggle "settings.option.visual.animatedWindowBackground": "Animált ablakháttér", // Toggle
"settings.option.visual.hardwareAcceleration": "Hardveres gyorsítás", // Dropdown "settings.option.visual.hardwareAcceleration": "Hardveres gyorsítás", // Dropdown
"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
// Settings - Lyrics // Settings - Lyrics
"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",
"settings.option.connectivity.discordRPC.clearOnPause": "Discord Rich Presence törlése megállításnál", // Toggle "settings.option.connectivity.discordRPC.clearOnPause": "Discord Rich Presence törlése megállításnál", // Toggle
"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
// Settings - Experimental // Settings - Experimental
"settings.header.experimental": "Kísérleti", "settings.header.experimental": "Kísérleti",
"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",
"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 // 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",
@ -301,11 +344,11 @@
// Settings - Unfinished // Settings - Unfinished
"settings.header.unfinished": "Befejezetlen", "settings.header.unfinished": "Befejezetlen",
// Web Remote // Web Remote
"remote.web.title": "Cider Remote", "remote.web.title": "Cider Remote",
"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,13 +135,14 @@
"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.",
"error.noResults": "Nessun risultato.", "error.noResults": "Nessun risultato.",
"error.noResults.description": "Prova un'altra ricerca.", "error.noResults.description": "Prova un'altra ricerca.",
//Podcasts // Podcasts
"podcast.followOnCider": "Segui in Cider", "podcast.followOnCider": "Segui in Cider",
"podcast.followedOnCider": "Seguiti in Cider", "podcast.followedOnCider": "Seguiti in Cider",
"podcast.subscribeOnItunes": "Iscriviti in iTunes", "podcast.subscribeOnItunes": "Iscriviti in iTunes",
@ -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",
@ -205,6 +206,8 @@
"settings.option.general.language.main": "Lingue", "settings.option.general.language.main": "Lingue",
"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",
@ -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,24 +1,25 @@
{ {
// App info
"app.name": "Cider", // i18n Info
"i18n.languageName": "日本語", // name of language in native language
"date.format": "${y}年${m}月${d}日",
// i18n Info
"i18n.languageName": "日本語", // name of language in native language
"i18n.languageNameEnglish": "Japanese", // name of language in English "i18n.languageNameEnglish": "Japanese", // 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", // 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",
// Notification // Notification
"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
@ -85,10 +86,10 @@
"term.less": "減らす", "term.less": "減らす",
"term.showMore": "もっと見る", "term.showMore": "もっと見る",
"term.showLess": "表示数を少なくする", "term.showLess": "表示数を少なくする",
"term.topSongs" : "トップソング", "term.topSongs": "トップソング",
"term.latestReleases": "ニューリリース", "term.latestReleases": "ニューリリース",
"term.time.added": "追加日", "term.time.added": "追加日",
"term.time.released": "配信開始日", "term.time.released": "配信開始日",
"term.time.updated": "最終更新日", "term.time.updated": "最終更新日",
"term.time.hours": "時間", "term.time.hours": "時間",
"term.time.hour": "時間", "term.time.hour": "時間",
@ -114,12 +115,11 @@
"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": "ホーム",
"home.recentlyPlayed": "最近の再生", "home.recentlyPlayed": "最近の再生",
@ -129,13 +129,14 @@
"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に接続できません。",
"error.noResults": "見つかりませんでした", "error.noResults": "見つかりませんでした",
"error.noResults.description": "もう一度お試しください。", "error.noResults.description": "もう一度お試しください。",
//Podcasts // Podcasts
"podcast.followOnCider": "Ciderでフォロー", "podcast.followOnCider": "Ciderでフォロー",
"podcast.followedOnCider": "フォロー中", "podcast.followedOnCider": "フォロー中",
"podcast.subscribeOnItunes": "iTunesで購読", "podcast.subscribeOnItunes": "iTunesで購読",
@ -144,7 +145,7 @@
"podcast.episodes": "番組", "podcast.episodes": "番組",
"podcast.playEpisode": "再生", "podcast.playEpisode": "再生",
"podcast.website": "Podcast ウェブ", "podcast.website": "Podcast ウェブ",
// Actions // Actions
"action.addToLibrary": "ライブラリに追加", "action.addToLibrary": "ライブラリに追加",
"action.addToLibrary.success": "ライブラリに追加されました", "action.addToLibrary.success": "ライブラリに追加されました",
@ -190,8 +191,17 @@
"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
// Update Cider
"settings.option.general.updateCider": "Cider 更新", // Button
// Settings - Audio // Settings - Audio
"settings.header.audio": "オーディオ", "settings.header.audio": "オーディオ",
@ -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のビジュアル設定",
@ -237,13 +248,14 @@
"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": "アプリを再起動する必要があります", "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": "歌詞",
@ -252,7 +264,7 @@
"settings.option.lyrics.enableMusixmatchKaraoke": "カラオケモードを有効にする (Musixmatchのみ)", // Toggle "settings.option.lyrics.enableMusixmatchKaraoke": "カラオケモードを有効にする (Musixmatchのみ)", // Toggle
"settings.option.lyrics.musixmatchPreferredLanguage": "歌詞の優先言語", // Dropdown "settings.option.lyrics.musixmatchPreferredLanguage": "歌詞の優先言語", // Dropdown
"settings.option.lyrics.enableYoutubeLyrics": "YouTubeの歌詞をミュージックビデオに使用する", // Toggle "settings.option.lyrics.enableYoutubeLyrics": "YouTubeの歌詞をミュージックビデオに使用する", // Toggle
// Settings - Connectivity // Settings - Connectivity
"settings.header.connectivity": "アプリと連携", "settings.header.connectivity": "アプリと連携",
"settings.header.connectivity.description": "Ciderの連携設定", "settings.header.connectivity.description": "Ciderの連携設定",
@ -262,46 +274,45 @@
"settings.header.connectivity.discordRPC.appleMusic": "'Apple Music' を表示する", "settings.header.connectivity.discordRPC.appleMusic": "'Apple Music' を表示する",
"settings.option.connectivity.discordRPC.clearOnPause": "一時停止時にDiscord Rich Presenceをクリアする", // Toggle "settings.option.connectivity.discordRPC.clearOnPause": "一時停止時にDiscord Rich Presenceをクリアする", // Toggle
"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 Delay (%)", "settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobble Delay (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Enable LastFM Now Playing", "settings.option.connectivity.lastfmScrobble.nowPlaying": "Enable LastFM Now Playing",
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Remove featuring artists from song title (LastFM)", "settings.option.connectivity.lastfmScrobble.removeFeatured": "Remove featuring artists from song title (LastFM)",
// Refer to term.connect for the connect button // Refer to term.connect for the connect button
// Settings - Experimental // Settings - Experimental
"settings.header.experimental": "試験的な機能", "settings.header.experimental": "試験的な機能",
"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": "幅",
"spatial.height" : "高さ", "spatial.height": "高さ",
"spatial.depth" : "奥行", "spatial.depth": "奥行",
"spatial.gain" : "ゲイン", "spatial.gain": "ゲイン",
"spatial.roomMaterials" : "部屋のマテリアル", "spatial.roomMaterials": "部屋のマテリアル",
"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": "左",
"spatial.right" : "右", "spatial.right": "右",
"spatial.back" : "後", "spatial.back": "後",
"spatial.down" : "下", "spatial.down": "下",
"spatial.listener" : "リスナー", "spatial.listener": "リスナー",
"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 リモート",
"remote.web.description": "QRコードを使用して、Ciderとスマートフォンをペアリングする", "remote.web.description": "QRコードを使用して、Ciderとスマートフォンをペアリングする",
//About //About
"about.thanks": "Cider Collective とご協力いただいた貢献者様に感謝申し上げます。" "about.thanks": "Cider Collective とご協力いただいた貢献者様に感謝申し上げます。"
}
}

View file

@ -1,14 +1,14 @@
{ // Base File {
// i18n Info // i18n Info
"i18n.languageName": "한국어 (KR)", // name of language in native language "i18n.languageName": "한국어 (KR)", // name of language in native language
"i18n.languageNameEnglish": "Korean (KR)", // name of language in English "i18n.languageNameEnglish": "Korean (KR)", // 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": "@Hazealign", // Authors, if you contribute to this file feel free to add your name seperated with a space "i18n.authors": "@Hazealign", // 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": "${y}. ${m}. ${d}", "date.format": "${y}. ${m}. ${d}",
// Dialogs // Dialogs
@ -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
@ -143,7 +143,7 @@
"term.recordLabels": "레코드 레이블", "term.recordLabels": "레코드 레이블",
"term.videoExtras": "추가 비디오", "term.videoExtras": "추가 비디오",
"term.top": "Top", "term.top": "Top",
// Home // Home
"home.title": "홈", "home.title": "홈",
"home.recentlyPlayed": "최근 재생한 항목", "home.recentlyPlayed": "최근 재생한 항목",
@ -153,13 +153,14 @@
"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에 연결하지 못했습니다.",
"error.noResults": "결과 없음", "error.noResults": "결과 없음",
"error.noResults.description": "다시 시도해주세요.", "error.noResults.description": "다시 시도해주세요.",
//Podcasts // Podcasts
"podcast.followOnCider": "Cider에서 팔로우하기", "podcast.followOnCider": "Cider에서 팔로우하기",
"podcast.followedOnCider": "팔로우 중", "podcast.followedOnCider": "팔로우 중",
"podcast.subscribeOnItunes": "iTunes에서 구독", "podcast.subscribeOnItunes": "iTunes에서 구독",
@ -168,7 +169,7 @@
"podcast.episodes": "방송", "podcast.episodes": "방송",
"podcast.playEpisode": "재생", "podcast.playEpisode": "재생",
"podcast.website": "팟캐스트 사이트", "podcast.website": "팟캐스트 사이트",
// Actions // Actions
"action.addToLibrary": "보관함에 추가", "action.addToLibrary": "보관함에 추가",
"action.addToLibrary.success": "보관함에 추가됨", "action.addToLibrary.success": "보관함에 추가됨",
@ -217,17 +218,20 @@
"action.copy": "복사", "action.copy": "복사",
"action.newpreset": "새 프리셋", // Equalizer Preset "action.newpreset": "새 프리셋", // Equalizer Preset
"action.deletepreset": "프리셋 삭제", "action.deletepreset": "프리셋 삭제",
// Settings - General // Settings - General
"settings.header.general": "일반", "settings.header.general": "일반",
"settings.header.general.description": "Cider의 일반 기능을 설정합니다.", "settings.header.general.description": "Cider의 일반 기능을 설정합니다.",
"settings.option.general.language": "언어", "settings.option.general.language": "언어",
// Language optgroups // Language optgroups
"settings.option.general.language.main": "언어", "settings.option.general.language.main": "언어",
"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의 시각 기능을 설정합니다.",
@ -265,14 +270,14 @@
"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.header.visual.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": "다크", "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 - Lyrics // Settings - Lyrics
"settings.header.lyrics": "가사", "settings.header.lyrics": "가사",
"settings.header.lyrics.description": "Cider의 가사 기능을 설정합니다.", "settings.header.lyrics.description": "Cider의 가사 기능을 설정합니다.",
@ -280,7 +285,7 @@
"settings.option.lyrics.enableMusixmatchKaraoke": "노래방 모드 활성화 (Musixmatch만 가능)", // Toggle "settings.option.lyrics.enableMusixmatchKaraoke": "노래방 모드 활성화 (Musixmatch만 가능)", // Toggle
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 번역 선호 언어", // Dropdown "settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 번역 선호 언어", // Dropdown
"settings.option.lyrics.enableYoutubeLyrics": "뮤직 비디오에 대한 유튜브 자막 활성화", // Toggle "settings.option.lyrics.enableYoutubeLyrics": "뮤직 비디오에 대한 유튜브 자막 활성화", // Toggle
// Settings - Connectivity // Settings - Connectivity
"settings.header.connectivity": "연동", "settings.header.connectivity": "연동",
"settings.header.connectivity.description": "Cider의 연동 기능을 설정합니다.", "settings.header.connectivity.description": "Cider의 연동 기능을 설정합니다.",
@ -296,16 +301,16 @@
"settings.option.connectivity.lastfmScrobble.removeFeatured": "곡 제목에서 피쳐링 아티스트를 제외하기 (Last.fm)", "settings.option.connectivity.lastfmScrobble.removeFeatured": "곡 제목에서 피쳐링 아티스트를 제외하기 (Last.fm)",
"settings.option.connectivity.lastfmScrobble.filterLoop": "루프 트랙을 필터하기 (Last.fm)", "settings.option.connectivity.lastfmScrobble.filterLoop": "루프 트랙을 필터하기 (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": "실험실", "settings.header.experimental": "실험실",
"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": "닫기 버튼이 애플리케이션을 가릴 것입니다",
"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": "공간 설정",
@ -326,14 +331,14 @@
"spatial.down": "아래", "spatial.down": "아래",
"spatial.listener": "사용자", "spatial.listener": "사용자",
"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 리모트",
"remote.web.description": "QR 코드를 스캔해서 Cider와 스마트폰을 연결하기", "remote.web.description": "QR 코드를 스캔해서 Cider와 스마트폰을 연결하기",
// About // About
"about.thanks": "Cider Collective Team과 모든 기여자들에게 감사합니다." "about.thanks": "Cider Collective Team과 모든 기여자들에게 감사합니다."
} }

View file

@ -1,15 +1,16 @@
{ // Base File {
// i18n Info
"i18n.languageName": "Português ( brasileiro )", // name of language in native language
"i18n.languageNameEnglish": "Portuguese (Brazil)", // name of language in English
"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
// App info // App info
"app.name": "Cider", "app.name": "Cider",
"date.format": "${d} ${m}, ${y}", "date.format": "${d} ${m}, ${y}",
// i18n Info
"i18n.languageName": "Português ( brasileiro )", // name of language in native language
"i18n.languageNameEnglish": "Portuguese (Brazil)", // name of language in English
"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
// 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,24 +1,25 @@
{ // 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
"i18n.languageNameEnglish": "Swedish (SE)", // name of language in English "i18n.languageNameEnglish": "Swedish (SE)", // 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": "@thisismemeboi", // Authors, if you contribute to this file feel free to add your name seperated with a space "i18n.authors": "@thisismemeboi", // 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": "${d} ${m}, ${y}", "date.format": "${d} ${m}, ${y}",
// Dialogs // Dialogs
"dialog.cancel": "Avbryt", "dialog.cancel": "Avbryt",
"dialog.ok": "OK", "dialog.ok": "OK",
// Notification // Notification
"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",
@ -91,10 +92,10 @@
"term.less": "Mindre", "term.less": "Mindre",
"term.showMore": "Visa mer", "term.showMore": "Visa mer",
"term.showLess": "Visa mindre", "term.showLess": "Visa mindre",
"term.topSongs" : "Topplåtar", "term.topSongs": "Topplåtar",
"term.latestReleases": "Senaste releaserna", "term.latestReleases": "Senaste releaserna",
"term.time.added": "Tillagd", "term.time.added": "Tillagd",
"term.time.released": "Tillagd den", "term.time.released": "Tillagd den",
"term.time.updated": "Uppdaterad", "term.time.updated": "Uppdaterad",
"term.time.hours": "timmar", "term.time.hours": "timmar",
"term.time.hour": "timme", "term.time.hour": "timme",
@ -121,12 +122,11 @@
"term.equalizer": "EQ", "term.equalizer": "EQ",
"term.reset": "Återställ", "term.reset": "Återställ",
"term.tracks": "låtar", // Assume x amount of tracks. e.g. 50 tracks "term.tracks": "låtar", // Assume x amount of tracks. e.g. 50 tracks
"term.videos": "Videor", "term.videos": "Videor",
"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",
"home.recentlyPlayed": "Senast spelade", "home.recentlyPlayed": "Senast spelade",
@ -136,13 +136,14 @@
"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.",
"error.noResults": "Inga träffar.", "error.noResults": "Inga träffar.",
"error.noResults.description": "Prova en ny sökning.", "error.noResults.description": "Prova en ny sökning.",
//Podcasts // Podcasts
"podcast.followOnCider": "Följ på Cider", "podcast.followOnCider": "Följ på Cider",
"podcast.followedOnCider": "Följer på Cider", "podcast.followedOnCider": "Följer på Cider",
"podcast.subscribeOnItunes": "Följ på iTunes", "podcast.subscribeOnItunes": "Följ på iTunes",
@ -151,7 +152,7 @@
"podcast.episodes": "Avsnitt", "podcast.episodes": "Avsnitt",
"podcast.playEpisode": "Spela avsnitt", "podcast.playEpisode": "Spela avsnitt",
"podcast.website": "Öppna webbsida", "podcast.website": "Öppna webbsida",
// Actions // Actions
"action.addToLibrary": "Lägg till i bibliotek", "action.addToLibrary": "Lägg till i bibliotek",
"action.addToLibrary.success": "Tillagd i biblioteket", "action.addToLibrary.success": "Tillagd i biblioteket",
@ -197,16 +198,19 @@
"action.tray.quit": "Avsluta", "action.tray.quit": "Avsluta",
"action.tray.show": "Visa Cider", "action.tray.show": "Visa Cider",
"action.update": "Uppdatera", "action.update": "Uppdatera",
// Settings - General // Settings - General
"settings.header.general": "Allmänt", "settings.header.general": "Allmänt",
"settings.header.general.description": "Ändra Ciders allmänna inställningar.", "settings.header.general.description": "Ändra Ciders allmänna inställningar.",
"settings.option.general.language": "Språk", "settings.option.general.language": "Språk",
// Language optgroups // Language optgroups
"settings.option.general.language.main": "Språk", "settings.option.general.language.main": "Språk",
"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",
@ -222,8 +226,9 @@
"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.",
"settings.option.visual.windowBackgroundStyle": "Stil för bakgrunden", // Toggle "settings.option.visual.windowBackgroundStyle": "Stil för bakgrunden", // Toggle
"settings.header.visual.windowBackgroundStyle.none": "Ingen", "settings.header.visual.windowBackgroundStyle.none": "Ingen",
@ -242,11 +247,14 @@
"settings.option.visual.animatedWindowBackground": "Animerad fönsterbakgrund", // Toggle "settings.option.visual.animatedWindowBackground": "Animerad fönsterbakgrund", // Toggle
"settings.option.visual.hardwareAcceleration": "Hårdvaruacceleration", // Dropdown "settings.option.visual.hardwareAcceleration": "Hårdvaruacceleration", // Dropdown
"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
// Settings - Lyrics // Settings - Lyrics
"settings.header.lyrics": "Låttext", "settings.header.lyrics": "Låttext",
"settings.header.lyrics.description": "Ändra Ciders låttextsinställningar.", "settings.header.lyrics.description": "Ändra Ciders låttextsinställningar.",
@ -254,7 +262,7 @@
"settings.option.lyrics.enableMusixmatchKaraoke": "Aktivera karaokeläge (Endast Musixmatch)", // Toggle "settings.option.lyrics.enableMusixmatchKaraoke": "Aktivera karaokeläge (Endast Musixmatch)", // Toggle
"settings.option.lyrics.musixmatchPreferredLanguage": "Språk för låttextsöversättning (Endast Musixmatch)", // Dropdown "settings.option.lyrics.musixmatchPreferredLanguage": "Språk för låttextsöversättning (Endast Musixmatch)", // Dropdown
"settings.option.lyrics.enableYoutubeLyrics": "Använd YouTube Lyrcis för videor", // Toggle "settings.option.lyrics.enableYoutubeLyrics": "Använd YouTube Lyrcis för videor", // Toggle
// Settings - Connectivity // Settings - Connectivity
"settings.header.connectivity": "Anslutning", "settings.header.connectivity": "Anslutning",
"settings.header.connectivity.description": "Ändra Ciders anslutningsinställningar.", "settings.header.connectivity.description": "Ändra Ciders anslutningsinställningar.",
@ -265,19 +273,19 @@
"settings.header.connectivity.discordRPC.appleMusic": "På, visa som 'Apple Music'", "settings.header.connectivity.discordRPC.appleMusic": "På, visa som 'Apple Music'",
"settings.option.connectivity.discordRPC.clearOnPause": "Rensa Discord notiser från Cider när du pausar", // Toggle "settings.option.connectivity.discordRPC.clearOnPause": "Rensa Discord notiser från Cider när du pausar", // Toggle
"settings.option.connectivity.lastfmScrobble": "Last.fm integration", // Option to Connect "settings.option.connectivity.lastfmScrobble": "Last.fm integration", // Option to Connect
"settings.option.connectivity.lastfmScrobble.delay": "Last.fm fördröjning i %", "settings.option.connectivity.lastfmScrobble.delay": "Last.fm fördröjning i %",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Visa vad som spelas nu i Last.fm", "settings.option.connectivity.lastfmScrobble.nowPlaying": "Visa vad som spelas nu i Last.fm",
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Visa inte extraartister i Last.fm", "settings.option.connectivity.lastfmScrobble.removeFeatured": "Visa inte extraartister i Last.fm",
"settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrera bort loopade låtar i Last.fm", "settings.option.connectivity.lastfmScrobble.filterLoop": "Filtrera bort loopade låtar i 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": "Experimentellt", "settings.header.experimental": "Experimentellt",
"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",
@ -301,11 +309,11 @@
// Settings - Unfinished // Settings - Unfinished
"settings.header.unfinished": "Ej tillgängligt", "settings.header.unfinished": "Ej tillgängligt",
// Web Remote // Web Remote
"remote.web.title": "Cider fjärrkontroll", "remote.web.title": "Cider fjärrkontroll",
"remote.web.description": "Skanna QR koden för att ansluta din telefon till Cider.", "remote.web.description": "Skanna QR koden för att ansluta din telefon till Cider.",
// About // About
"about.thanks": "Stort tack till Ciders Collective Team och alla som har bidragit!" "about.thanks": "Stort tack till Ciders Collective Team och alla som har bidragit!"
} }

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",
@ -141,7 +161,7 @@
"error.noResults": "Hiç sonuç yok", "error.noResults": "Hiç sonuç yok",
"error.noResults.description": "Tekrar deneyin.", "error.noResults.description": "Tekrar deneyin.",
//Podcasts // Podcasts
"podcast.followOnCider": "Cider'de Takip Et", "podcast.followOnCider": "Cider'de Takip Et",
"podcast.followedOnCider": "Cider'de Takip Ediliyor", "podcast.followedOnCider": "Cider'de Takip Ediliyor",
"podcast.subscribeOnItunes": "itunes'de Abone Ol", "podcast.subscribeOnItunes": "itunes'de Abone Ol",
@ -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,24 +1,25 @@
{ {
// i18n Info
"i18n.languageName": "简体中文(中国)", // name of language in native language
"i18n.languageNameEnglish": "Simp. Chinese (China)", // name of language in English
"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
// App info // App info
"app.name": "Cider", "app.name": "Cider",
"date.format": "${y}年${m}月${d}日", "date.format": "${y}年${m}月${d}日",
// i18n Info
"i18n.languageName": "简体中文(中国)", // name of language in native language
"i18n.languageNameEnglish": "Simp. Chinese (China)", // name of language in English
"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
// Dialogs // Dialogs
"dialog.cancel": "取消", "dialog.cancel": "取消",
"dialog.ok": "确定", "dialog.ok": "确定",
// Notification // Notification
"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
@ -85,10 +86,10 @@
"term.less": "较少", "term.less": "较少",
"term.showMore": "显示更多", "term.showMore": "显示更多",
"term.showLess": "显示更少", "term.showLess": "显示更少",
"term.topSongs" : "热门歌曲", "term.topSongs": "热门歌曲",
"term.latestReleases": "最新发行", "term.latestReleases": "最新发行",
"term.time.added": "添加于", "term.time.added": "添加于",
"term.time.released": "发行于", "term.time.released": "发行于",
"term.time.updated": "更新于", "term.time.updated": "更新于",
"term.time.hours": "小时", "term.time.hours": "小时",
"term.time.hour": "小时", "term.time.hour": "小时",
@ -114,12 +115,11 @@
"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": "主页",
"home.recentlyPlayed": "最近播放", "home.recentlyPlayed": "最近播放",
@ -129,14 +129,14 @@
"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。",
"error.noResults": "没有结果", "error.noResults": "没有结果",
"error.noResults.description": "尝试更改搜索条件。", "error.noResults.description": "尝试更改搜索条件。",
//Podcasts // Podcasts
"podcast.followOnCider": "在 Cider 中追踪", "podcast.followOnCider": "在 Cider 中追踪",
"podcast.followedOnCider": "已追踪", "podcast.followedOnCider": "已追踪",
"podcast.subscribeOnItunes": "在 iTunes 上订阅", "podcast.subscribeOnItunes": "在 iTunes 上订阅",
@ -145,8 +145,7 @@
"podcast.episodes": "单集", "podcast.episodes": "单集",
"podcast.playEpisode": "播放单集", "podcast.playEpisode": "播放单集",
"podcast.website": "Podcast 网站", "podcast.website": "Podcast 网站",
// Actions // Actions
"action.addToLibrary": "加入资料库", "action.addToLibrary": "加入资料库",
"action.addToLibrary.success": "成功加入资料库", "action.addToLibrary.success": "成功加入资料库",
@ -192,7 +191,15 @@
"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": "音频",
"settings.header.audio.description": "调整 Cider 的音频设置", "settings.header.audio.description": "调整 Cider 的音频设置",
@ -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 的外观",
@ -233,13 +241,13 @@
"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 - 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": "歌词",
@ -248,7 +256,7 @@
"settings.option.lyrics.enableMusixmatchKaraoke": "启用卡拉 OK 模式(仅 Musixmatch", // Toggle "settings.option.lyrics.enableMusixmatchKaraoke": "启用卡拉 OK 模式(仅 Musixmatch", // Toggle
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 歌词语言偏好", // Dropdown "settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 歌词语言偏好", // Dropdown
"settings.option.lyrics.enableYoutubeLyrics": "播放 MV 时使用 YouTube 歌词", // Toggle "settings.option.lyrics.enableYoutubeLyrics": "播放 MV 时使用 YouTube 歌词", // Toggle
// Settings - Connectivity // Settings - Connectivity
"settings.header.connectivity": "外部连接", "settings.header.connectivity": "外部连接",
"settings.header.connectivity.description": "调整Cider与外部应用的交互设置", "settings.header.connectivity.description": "调整Cider与外部应用的交互设置",
@ -258,45 +266,45 @@
"settings.header.connectivity.discordRPC.appleMusic": "显示正在玩 'Apple Music'", "settings.header.connectivity.discordRPC.appleMusic": "显示正在玩 'Apple Music'",
"settings.option.connectivity.discordRPC.clearOnPause": "暂停时清除Discord 动态", // Toggle "settings.option.connectivity.discordRPC.clearOnPause": "暂停时清除Discord 动态", // Toggle
"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 延迟 (%)", "settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobble 延迟 (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "启用 LastFM 正在播放", "settings.option.connectivity.lastfmScrobble.nowPlaying": "启用 LastFM 正在播放",
"settings.option.connectivity.lastfmScrobble.removeFeatured": "从歌名里去除艺人推荐 (LastFM)", "settings.option.connectivity.lastfmScrobble.removeFeatured": "从歌名里去除艺人推荐 (LastFM)",
// Refer to term.connect for the connect button // Refer to term.connect for the connect button
// 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": "紧凑型 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": "宽度",
"spatial.height" : "高度", "spatial.height": "高度",
"spatial.depth" : "深度", "spatial.depth": "深度",
"spatial.gain": "增益", "spatial.gain": "增益",
"spatial.roomMaterials" : "空间材质", "spatial.roomMaterials": "空间材质",
"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": "左",
"spatial.right" : "右", "spatial.right": "右",
"spatial.back" : "后", "spatial.back": "后",
"spatial.down" : "下", "spatial.down": "下",
"spatial.listener" : "您", "spatial.listener": "您",
"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 远程控制",
"remote.web.description": "扫描以下的二维码以控制 Cider", "remote.web.description": "扫描以下的二维码以控制 Cider",
//About //About
"about.thanks": "郑重感谢 Cider Collective 以及为这个项目提供支持的贡献者。" "about.thanks": "郑重感谢 Cider Collective 以及为这个项目提供支持的贡献者。"
} }

View file

@ -1,7 +1,7 @@
{ {
// i18n Info // i18n Info
"i18n.languageName": "繁體中文(香港)", // name of language in native language "i18n.languageName": "繁體中文(香港)", // name of language in native language
"i18n.languageNameEnglish": "Trad. Chinese (Hong Kong)", // name of language in English "i18n.languageNameEnglish": "Trad. Chinese (Hong Kong)", // 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": "@kyw504100 @maikirakiwi", // Authors, if you contribute to this file feel free to add your name seperated with a space "i18n.authors": "@kyw504100 @maikirakiwi", // Authors, if you contribute to this file feel free to add your name seperated with a space
@ -9,7 +9,7 @@
// App info // App info
"app.name": "Cider", "app.name": "Cider",
"date.format": "${y}年${m}月${d}日", "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.appleInc": "Apple Inc.", "term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music", // Follows brand term "term.appleMusic": "Apple Music", // Follows brand term
@ -93,10 +94,10 @@
"term.less": "較少", "term.less": "較少",
"term.showMore": "顯示更多", "term.showMore": "顯示更多",
"term.showLess": "顯示較少", "term.showLess": "顯示較少",
"term.topSongs" : "熱門歌曲", "term.topSongs": "熱門歌曲",
"term.latestReleases": "最新發行", "term.latestReleases": "最新發行",
"term.time.added": "加入於", "term.time.added": "加入於",
"term.time.released": "發行於", "term.time.released": "發行於",
"term.time.updated": "更新於", "term.time.updated": "更新於",
"term.time.hours": "小時", "term.time.hours": "小時",
"term.time.hour": "小時", "term.time.hour": "小時",
@ -123,18 +124,19 @@
"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", "term.topResult": "熱門搜尋結果", // Search Results
"term.topResult": "熱門搜尋結果", // Search Results
"term.sharedPlaylists": "播放列表", // Search Results "term.sharedPlaylists": "播放列表", // Search Results
"term.people": "個人檔案", // Search Results "term.people": "個人檔案", // Search Results
"term.newpreset.name": "新均衡器範本名稱", // Equalizer Preset "term.newpreset.name": "新均衡器範本名稱", // Equalizer Preset
"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,13 +155,14 @@
"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。",
"error.noResults": "沒有結果", "error.noResults": "沒有結果",
"error.noResults.description": "請嘗試新的搜尋內容。", "error.noResults.description": "請嘗試新的搜尋內容。",
//Podcasts // Podcasts
"podcast.followOnCider": "在Cider上追蹤", "podcast.followOnCider": "在Cider上追蹤",
"podcast.followedOnCider": "已在Cider上追蹤", "podcast.followedOnCider": "已在Cider上追蹤",
"podcast.subscribeOnItunes": "在iTunes上訂閱", "podcast.subscribeOnItunes": "在iTunes上訂閱",
@ -215,7 +218,7 @@
"action.tray.show": "顯示", "action.tray.show": "顯示",
"action.update": "更新", "action.update": "更新",
"action.copy": "複製", "action.copy": "複製",
"action.newpreset": "新增範本", //Equallizer preset "action.newpreset": "新增範本", // Equallizer preset
"action.deletepreset": "刪除範本", "action.deletepreset": "刪除範本",
// Settings - General // Settings - General
@ -227,6 +230,13 @@
"settings.option.general.language.main": "語言", "settings.option.general.language.main": "語言",
"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": "音訊",
@ -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的外觀",
@ -268,14 +286,14 @@
"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.header.visual.theme": "主題",
// Settings - Visual - Theme name // Settings - Visual - Theme name
"settings.option.visual.theme.default": "預設", "settings.option.visual.theme.default": "預設",
"settings.option.visual.theme.dark": "午夜暗", "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
@ -314,24 +332,24 @@
// Spatialization Menu // Spatialization Menu
"spatial.notTurnedOn": "請先在設定中啟用空間音訊。", "spatial.notTurnedOn": "請先在設定中啟用空間音訊。",
"spatial.spatialProperties" : "空間音訊屬性", "spatial.spatialProperties": "空間音訊屬性",
"spatial.width" : "闊度", "spatial.width": "闊度",
"spatial.height" : "高度", "spatial.height": "高度",
"spatial.depth" : "深度", "spatial.depth": "深度",
"spatial.gain" : "增益", "spatial.gain": "增益",
"spatial.roomMaterials" : "空間材質", "spatial.roomMaterials": "空間材質",
"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": "左方",
"spatial.right" : "右方", "spatial.right": "右方",
"spatial.back" : "後方", "spatial.back": "後方",
"spatial.down" : "下方", "spatial.down": "下方",
"spatial.listener" : "觀眾", "spatial.listener": "觀眾",
"spatial.audioSource" : "音源", "spatial.audioSource": "音源",
// Settings - Unfinished // Settings - Unfinished
"settings.header.unfinished": "未完成", "settings.header.unfinished": "未完成",

View file

@ -1,24 +1,25 @@
{ {
// i18n Info
"i18n.languageName": "繁體中文(台灣)", // name of language in native language
"i18n.languageNameEnglish": "Trad. Chinese (Taiwan)", // name of language in English
"i18n.category": "main", // main = real language, fun = fun community languages
"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 info
"app.name": "Cider", "app.name": "Cider",
"date.format": "${y}年${m}月${d}日", "date.format": "${y}年${m}月${d}日",
// i18n Info
"i18n.languageName": "繁體中文(台灣)", // name of language in native language
"i18n.languageNameEnglish": "Trad. Chinese (Taiwan)", // name of language in English
"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
// Dialogs // Dialogs
"dialog.cancel": "取消", "dialog.cancel": "取消",
"dialog.ok": "確定", "dialog.ok": "確定",
// Notification // Notification
"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": "已啟用",
@ -85,10 +87,10 @@
"term.less": "更少", "term.less": "更少",
"term.showMore": "顯示更多", "term.showMore": "顯示更多",
"term.showLess": "顯示更少", "term.showLess": "顯示更少",
"term.topSongs" : "熱門歌曲", "term.topSongs": "熱門歌曲",
"term.latestReleases": "最新發行", "term.latestReleases": "最新發行",
"term.time.added": "加入於", "term.time.added": "加入於",
"term.time.released": "發行於", "term.time.released": "發行於",
"term.time.updated": "更改於", "term.time.updated": "更改於",
"term.time.hours": "小時", "term.time.hours": "小時",
"term.time.hour": "小時", "term.time.hour": "小時",
@ -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,13 +131,14 @@
"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。",
"error.noResults": "沒有結果", "error.noResults": "沒有結果",
"error.noResults.description": "嘗試新的搜尋項目。", "error.noResults.description": "嘗試新的搜尋項目。",
//Podcasts // Podcasts
"podcast.followOnCider": "在 Cider 上追蹤", "podcast.followOnCider": "在 Cider 上追蹤",
"podcast.followedOnCider": "已追蹤", "podcast.followedOnCider": "已追蹤",
"podcast.subscribeOnItunes": "在 iTunes 上訂閱", "podcast.subscribeOnItunes": "在 iTunes 上訂閱",
@ -144,7 +147,7 @@
"podcast.episodes": "單集", "podcast.episodes": "單集",
"podcast.playEpisode": "播放單集", "podcast.playEpisode": "播放單集",
"podcast.website": "Podcast 網站", "podcast.website": "Podcast 網站",
// Actions // Actions
"action.addToLibrary": "加入資料庫", "action.addToLibrary": "加入資料庫",
"action.addToLibrary.success": "成功加入資料庫", "action.addToLibrary.success": "成功加入資料庫",
@ -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": "歌詞",
@ -253,31 +276,35 @@
"settings.option.lyrics.enableMusixmatchKaraoke": "啟用K歌模式僅限Musixmatch", // Toggle "settings.option.lyrics.enableMusixmatchKaraoke": "啟用K歌模式僅限Musixmatch", // Toggle
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 歌詞語言偏好", // Dropdown "settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 歌詞語言偏好", // Dropdown
"settings.option.lyrics.enableYoutubeLyrics": "播放 MV 時使用 YouTube 歌詞", // Toggle "settings.option.lyrics.enableYoutubeLyrics": "播放 MV 時使用 YouTube 歌詞", // Toggle
// Settings - Connectivity // Settings - Connectivity
"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'",
"settings.option.connectivity.discordRPC.clearOnPause": "暫停時清除 Discord 動態", // Toggle "settings.option.connectivity.discordRPC.clearOnPause": "暫停時清除 Discord 動態", // Toggle
"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 延遲 (%)", "settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobble 延遲 (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "啟用 LastFM 目前聆聽", // Toggle "settings.option.connectivity.lastfmScrobble.nowPlaying": "啟用 LastFM 目前聆聽", // Toggle
"settings.option.connectivity.lastfmScrobble.removeFeatured": "從歌名中移除藝人推薦 (LastFM)", "settings.option.connectivity.lastfmScrobble.removeFeatured": "從歌名中移除藝人推薦 (LastFM)",
// Refer to term.connect for the connect button // Refer to term.connect for the connect button
// 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,12 +324,12 @@
"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 遠端操控",
"remote.web.description": "掃描以下的行動條碼以操控 Cider", "remote.web.description": "掃描以下的行動條碼以操控 Cider",
//About //About
"about.thanks": "著重感謝 Cider Collective 的成員以及所有為項目付出的貢獻者。" "about.thanks": "著重感謝 Cider Collective 的成員以及所有為項目付出的貢獻者。"
} }

View file

@ -5,20 +5,21 @@
"i18n.languageNameEnglish": "Cantonese (Hong Kong)", // name of language in English "i18n.languageNameEnglish": "Cantonese (Hong Kong)", // 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": "@tszngaiyip @strikesnc", // Authors, if you contribute to this file feel free to add your name seperated with a space "i18n.authors": "@tszngaiyip @strikesnc", // 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": "${y}年${m}月${d}日", "date.format": "${y}年${m}月${d}日",
// Dialogs // Dialogs
"dialog.cancel": "取消", "dialog.cancel": "取消",
"dialog.ok": "確認", "dialog.ok": "確認",
// Notification // Notification
"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",
@ -93,10 +94,10 @@
"term.less": "少啲", "term.less": "少啲",
"term.showMore": "顯示多啲", "term.showMore": "顯示多啲",
"term.showLess": "顯示少啲", "term.showLess": "顯示少啲",
"term.topSongs" : "熱門歌曲", "term.topSongs": "熱門歌曲",
"term.latestReleases": "最新出嘅", "term.latestReleases": "最新出嘅",
"term.time.added": "加入於", "term.time.added": "加入於",
"term.time.released": "發行於", "term.time.released": "發行於",
"term.time.updated": "更新於", "term.time.updated": "更新於",
"term.time.hours": "粒鐘", "term.time.hours": "粒鐘",
"term.time.hour": "粒鐘", "term.time.hour": "粒鐘",
@ -123,12 +124,11 @@
"term.equalizer": "均衡器 (EQ)", "term.equalizer": "均衡器 (EQ)",
"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", "term.topResult": "熱門搜尋結果", // Search Results
"term.topResult": "熱門搜尋結果", // Search Results
"term.sharedPlaylists": "播放清單", // Search Results "term.sharedPlaylists": "播放清單", // Search Results
"term.people": "個人檔案", // Search Results "term.people": "個人檔案", // Search Results
"term.newpreset.name": "新EQ範本嘅名", // Equalizer Preset "term.newpreset.name": "新EQ範本嘅名", // Equalizer Preset
@ -153,13 +153,14 @@
"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。",
"error.noResults": "冇結果。", "error.noResults": "冇結果。",
"error.noResults.description": "重新搵過啦。", "error.noResults.description": "重新搵過啦。",
//Podcasts // Podcasts
"podcast.followOnCider": "喺Cider上Follow", "podcast.followOnCider": "喺Cider上Follow",
"podcast.followedOnCider": "喺Cider上Follow左", "podcast.followedOnCider": "喺Cider上Follow左",
"podcast.subscribeOnItunes": "喺iTunes上訂閱", "podcast.subscribeOnItunes": "喺iTunes上訂閱",
@ -168,7 +169,7 @@
"podcast.episodes": "單集", "podcast.episodes": "單集",
"podcast.playEpisode": "播呢集", "podcast.playEpisode": "播呢集",
"podcast.website": "Podcast 網頁", "podcast.website": "Podcast 網頁",
// Actions // Actions
"action.addToLibrary": "加入資料庫", "action.addToLibrary": "加入資料庫",
"action.addToLibrary.success": "加入咗資料庫", "action.addToLibrary.success": "加入咗資料庫",
@ -215,18 +216,21 @@
"action.tray.show": "顯示", "action.tray.show": "顯示",
"action.update": "更新", "action.update": "更新",
"action.copy": "複製", "action.copy": "複製",
"action.newpreset": "新增範本", // Equalizer Preset "action.newpreset": "新增範本", // Equalizer Preset
"action.deletepreset": "刪除範本", "action.deletepreset": "刪除範本",
// Settings - General // Settings - General
"settings.header.general": "一般", "settings.header.general": "一般",
"settings.header.general.description": "調整Cider嘅一般設定", "settings.header.general.description": "調整Cider嘅一般設定",
"settings.option.general.language": "語言", "settings.option.general.language": "語言",
// Language optgroups // Language optgroups
"settings.option.general.language.main": "語言", "settings.option.general.language.main": "語言",
"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": "音訊",
@ -242,8 +246,9 @@
"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": "空白",
@ -262,17 +267,17 @@
"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.header.visual.theme": "主題",
// Settings - Visual - Theme name // Settings - Visual - Theme name
"settings.option.visual.theme.default": "預設", "settings.option.visual.theme.default": "預設",
"settings.option.visual.theme.dark": "黑色", "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 - Lyrics // Settings - Lyrics
"settings.header.lyrics": "歌詞", "settings.header.lyrics": "歌詞",
"settings.header.lyrics.description": "調整Cider嘅歌詞設定", "settings.header.lyrics.description": "調整Cider嘅歌詞設定",
@ -280,7 +285,7 @@
"settings.option.lyrics.enableMusixmatchKaraoke": "開啟唱K模式僅限Musixmatch)", // Toggle "settings.option.lyrics.enableMusixmatchKaraoke": "開啟唱K模式僅限Musixmatch)", // Toggle
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 歌詞語言偏好", // Dropdown "settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatch 歌詞語言偏好", // Dropdown
"settings.option.lyrics.enableYoutubeLyrics": "播放MV嘅時候用YouTube字幕", // Toggle "settings.option.lyrics.enableYoutubeLyrics": "播放MV嘅時候用YouTube字幕", // Toggle
// Settings - Connectivity // Settings - Connectivity
"settings.header.connectivity": "外部連結", "settings.header.connectivity": "外部連結",
"settings.header.connectivity.description": "調整Cider同外部嘅連結", "settings.header.connectivity.description": "調整Cider同外部嘅連結",
@ -291,12 +296,12 @@
"settings.header.connectivity.discordRPC.appleMusic": "顯示為'Apple Music'", "settings.header.connectivity.discordRPC.appleMusic": "顯示為'Apple Music'",
"settings.option.connectivity.discordRPC.clearOnPause": "暫停時清除 Discord 狀態", // Toggle "settings.option.connectivity.discordRPC.clearOnPause": "暫停時清除 Discord 狀態", // Toggle
"settings.option.connectivity.lastfmScrobble": "Last.FM Scrobbling 記錄", // Option to Connect "settings.option.connectivity.lastfmScrobble": "Last.FM Scrobbling 記錄", // Option to Connect
"settings.option.connectivity.lastfmScrobble.delay": "Last.FM Scrobble 延遲 (%)", "settings.option.connectivity.lastfmScrobble.delay": "Last.FM Scrobble 延遲 (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "啟用 Last.FM 正在播放", "settings.option.connectivity.lastfmScrobble.nowPlaying": "啟用 Last.FM 正在播放",
"settings.option.connectivity.lastfmScrobble.removeFeatured": "從歌名中移除藝人推薦 (Last.FM)", "settings.option.connectivity.lastfmScrobble.removeFeatured": "從歌名中移除藝人推薦 (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": "實驗性功能", "settings.header.experimental": "實驗性功能",
"settings.header.experimental.description": "調整Cider嘅實驗性功能", "settings.header.experimental.description": "調整Cider嘅實驗性功能",
@ -304,36 +309,36 @@
"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": "空間音訊屬性",
"spatial.width" : "幾闊", "spatial.width": "幾闊",
"spatial.height" : "幾高", "spatial.height": "幾高",
"spatial.depth" : "幾深", "spatial.depth": "幾深",
"spatial.gain" : "增益", "spatial.gain": "增益",
"spatial.roomMaterials" : "空間材質", "spatial.roomMaterials": "空間材質",
"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": "左邊",
"spatial.right" : "右邊", "spatial.right": "右邊",
"spatial.back" : "後面", "spatial.back": "後面",
"spatial.down" : "下面", "spatial.down": "下面",
"spatial.listener" : "觀眾", "spatial.listener": "觀眾",
"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",
"remote.web.description": "Scan 呢個 QR Code 去控制 Cider", "remote.web.description": "Scan 呢個 QR Code 去控制 Cider",
// About // About
"about.thanks": "多謝 Cider Collective 同埋所有合作人作出嘅貢獻。" "about.thanks": "多謝 Cider Collective 同埋所有合作人作出嘅貢獻。"
} }

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",
@ -199,9 +194,9 @@ export class BrowserWindow {
res.render("main", this.EnvironmentVariables); res.render("main", this.EnvironmentVariables);
}); });
app.get("/api/playback/:action", (req, res)=>{ app.get("/api/playback/:action", (req, res) => {
const action = req.params.action; const action = req.params.action;
switch(action) { switch (action) {
case "playpause": case "playpause":
BrowserWindow.win.webContents.executeJavaScript("wsapi.togglePlayPause()") BrowserWindow.win.webContents.executeJavaScript("wsapi.togglePlayPause()")
res.send("Play/Pause toggle") res.send("Play/Pause toggle")
@ -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,22 +529,22 @@ 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()}`
}, `http://${BrowserWindow.getIP()}:${this.remotePort}`); }, `http://${BrowserWindow.getIP()}:${this.remotePort}`);
} }
// Get previews for normalization // Get previews for normalization
ipcMain.on("getPreviewURL", (_event, url) => { ipcMain.on("getPreviewURL", (_event, url) => {
@ -565,14 +557,25 @@ export class BrowserWindow {
console.log('sc', SoundCheckTag) console.log('sc', SoundCheckTag)
BrowserWindow.win.webContents.send('SoundCheckTag', SoundCheckTag) BrowserWindow.win.webContents.send('SoundCheckTag', SoundCheckTag)
}).catch(err => { }).catch(err => {
console.log(err) console.log(err)
}); });
}); });
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,10 +584,10 @@ 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;
//https://www.electronjs.org/docs/latest/api/share-menu //https://www.electronjs.org/docs/latest/api/share-menu
console.log('[Share Sheet - App.ts]', url) console.log('[Share Sheet - App.ts]', url)
const options = { const options = {
@ -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,
@ -61,10 +60,9 @@ export class Store {
'preset': "default", 'preset': "default",
'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': [],
'userGenerated': false 'userGenerated': false
}, },

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();
@ -139,7 +138,7 @@ var CiderAudio = {
CiderAudio.audioNodes.audioBands[i].Q.value = Q[i]; CiderAudio.audioNodes.audioBands[i].Q.value = Q[i];
CiderAudio.audioNodes.audioBands[i].gain.value = GAIN[i] * app.cfg.audio.equalizer.mix; CiderAudio.audioNodes.audioBands[i].gain.value = GAIN[i] * app.cfg.audio.equalizer.mix;
} }
for (i = 0; i < LLPW_FREQUENCIES.length; i++) { for (i = 0; i < LLPW_FREQUENCIES.length; i++) {
CiderAudio.audioNodes.llpw[i] = CiderAudio.context.createBiquadFilter(); CiderAudio.audioNodes.llpw[i] = CiderAudio.context.createBiquadFilter();
CiderAudio.audioNodes.llpw[i].type = 'peaking'; // 'peaking'; CiderAudio.audioNodes.llpw[i].type = 'peaking'; // 'peaking';
@ -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{
@ -170,18 +171,18 @@ var CiderAudio = {
CiderAudio.audioNodes.gainNode.disconnect(CiderAudio.context.destination);} catch(e){} CiderAudio.audioNodes.gainNode.disconnect(CiderAudio.context.destination);} catch(e){}
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,51 +1126,53 @@ 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 {
font-weight: 600; .song-name {
text-align: center; font-weight: 600;
font-size: 13px; text-align: center;
height: 1.3em; font-size: 13px;
line-height: 1.3em; height: 1.3em;
white-space: nowrap; line-height: 1.3em;
max-width: 360px; white-space: nowrap;
max-width: 360px;
.song-name-normal { .song-name-normal {
height: inherit; height: inherit;
} }
&.song-artist-marquee { &.song-artist-marquee {
> marquee { > marquee {
//margin-bottom: -3px; //margin-bottom: -3px;
}
}
.explicit-icon {
background-image: url("./assets/explicit.svg");
height: 9px;
width: 13px;
filter: contrast(0);
background-repeat: no-repeat;
margin-left: 3px;
} }
} }
.explicit-icon {
background-image: url("./assets/explicit.svg");
height: 9px;
width: 13px;
filter: contrast(0);
background-repeat: no-repeat;
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
@ -333,18 +316,20 @@
app.cfg.audio.vibrantBass.multiplier = app.cfg.audio.equalizer.vibrantBass / 10 app.cfg.audio.vibrantBass.multiplier = app.cfg.audio.equalizer.vibrantBass / 10
for (var i = 0; i < 21; i++) { for (var i = 0; i < 21; i++) {
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"
@ -90,17 +90,17 @@
} }
}, },
props: { props: {
'item': {type: Object, required: true}, 'item': { type: Object, required: true },
'parent': {type: String, required: false}, 'parent': { type: String, required: false },
'index': {type: Number, required: false, default: -1}, 'index': { type: Number, required: false, default: -1 },
'show-artwork': {type: Boolean, default: true}, 'show-artwork': { type: Boolean, default: true },
'show-library-status': {type: Boolean, default: true}, 'show-library-status': { type: Boolean, default: true },
'show-meta-data': {type: Boolean, default: false}, 'show-meta-data': { type: Boolean, default: false },
'show-duration': {type: Boolean, default: true}, 'show-duration': { type: Boolean, default: true },
'showIndex': {type: Boolean, required: false}, 'showIndex': { type: Boolean, required: false },
'showIndexPlaylist': {type: Boolean, required: false}, 'showIndexPlaylist': { type: Boolean, required: false },
'contextExt': {type: Object, required: false}, 'contextExt': { type: Object, required: false },
'class-list': {type: String, required: false, default: ""}, 'class-list': { type: String, required: false, default: "" },
}, },
mounted() { mounted() {
let duration = this.item.attributes.durationInMillis ?? 0 let duration = this.item.attributes.durationInMillis ?? 0
@ -115,8 +115,8 @@
return color return color
}, },
async checkLibrary() { async checkLibrary() {
if(this.addedToLibrary) {return this.addedToLibrary} if (this.addedToLibrary) { return this.addedToLibrary }
if(this.item.type.includes("library-playlists") || this.item.type.includes("station")) { if (this.item.type.includes("library-playlists") || this.item.type.includes("station")) {
this.addedToLibrary = true this.addedToLibrary = true
return return
} }
@ -126,10 +126,10 @@
return this.addedToLibrary return this.addedToLibrary
}, },
getClasses() { getClasses() {
if(this.classList) { if (this.classList) {
this.addClasses = {} this.addClasses = {}
let classList = this.classList.split(' ') let classList = this.classList.split(' ')
for(let i = 0; i < classList.length; i++) { for (let i = 0; i < classList.length; i++) {
this.addClasses[classList[i]] = true this.addClasses[classList[i]] = true
} }
} }
@ -259,7 +259,7 @@
for (let kind in itemsToPlay) { for (let kind in itemsToPlay) {
let ids = itemsToPlay[kind] let ids = itemsToPlay[kind]
if (ids.length > 0) { if (ids.length > 0) {
app.mk.playNext({[kind + "s"]: itemsToPlay[kind]}) app.mk.playNext({ [kind + "s"]: itemsToPlay[kind] })
} }
} }
console.log(itemsToPlay) console.log(itemsToPlay)
@ -281,7 +281,7 @@
for (let kind in itemsToPlay) { for (let kind in itemsToPlay) {
let ids = itemsToPlay[kind] let ids = itemsToPlay[kind]
if (ids.length > 0) { if (ids.length > 0) {
app.mk.playLater({[kind + "s"]: itemsToPlay[kind]}) app.mk.playLater({ [kind + "s"]: itemsToPlay[kind] })
} }
} }
app.selectedMediaItems = [] app.selectedMediaItems = []
@ -363,7 +363,7 @@
"name": app.getLz('action.playNext'), "name": app.getLz('action.playNext'),
"icon": "./assets/arrow-bend-up.svg", "icon": "./assets/arrow-bend-up.svg",
"action": function () { "action": function () {
app.mk.playNext({[self.item.attributes.playParams.kind ?? self.item.type]: self.item.attributes.playParams.id ?? self.item.id}) app.mk.playNext({ [self.item.attributes.playParams.kind ?? self.item.type]: self.item.attributes.playParams.id ?? self.item.id })
app.mk.queue._reindex() app.mk.queue._reindex()
app.selectedMediaItems = [] app.selectedMediaItems = []
} }
@ -372,7 +372,7 @@
"name": app.getLz('action.playLater'), "name": app.getLz('action.playLater'),
"icon": "./assets/arrow-bend-down.svg", "icon": "./assets/arrow-bend-down.svg",
"action": function () { "action": function () {
app.mk.playLater({[self.item.attributes.playParams.kind ?? self.item.type]: self.item.attributes.playParams.id ?? self.item.id}) app.mk.playLater({ [self.item.attributes.playParams.kind ?? self.item.type]: self.item.attributes.playParams.id ?? self.item.id })
app.mk.queue._reindex() app.mk.queue._reindex()
app.selectedMediaItems = [] app.selectedMediaItems = []
} }
@ -381,7 +381,7 @@
"icon": "./assets/feather/radio.svg", "icon": "./assets/feather/radio.svg",
"name": app.getLz('action.startRadio'), "name": app.getLz('action.startRadio'),
"action": function () { "action": function () {
app.mk.setStationQueue({song: self.item.attributes.playParams.id ?? self.item.id}).then(() => { app.mk.setStationQueue({ song: self.item.attributes.playParams.id ?? self.item.id }).then(() => {
app.mk.play() app.mk.play()
app.selectedMediaItems = [] app.selectedMediaItems = []
}) })
@ -405,12 +405,26 @@
"icon": "./assets/feather/share.svg", "icon": "./assets/feather/share.svg",
"name": app.getLz('action.share'), "name": app.getLz('action.share'),
"action": function () { "action": function () {
if (!self.item.attributes.url && self.item.relationships){ if (!self.item.attributes.url && self.item.relationships) {
if (self.item.relationships.catalog){ if (self.item.relationships.catalog) {
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)
}
} }
} }
] ]
@ -430,30 +444,30 @@
try { try {
await this.checkLibrary().then(res => { await this.checkLibrary().then(res => {
console.log(res) console.log(res)
if(res) { if (res) {
menus.normal.items.find(x => x.id == 'addToLibrary').hidden = true menus.normal.items.find(x => x.id == 'addToLibrary').hidden = true
menus.normal.items.find(x => x.id == 'removeFromLibrary').hidden = false menus.normal.items.find(x => x.id == 'removeFromLibrary').hidden = false
}else{ } else {
menus.normal.items.find(x => x.id == 'addToLibrary').disabled = false menus.normal.items.find(x => x.id == 'addToLibrary').disabled = false
} }
}) })
}catch(e) { } catch (e) {
} }
try{ try {
let rating = await app.getRating(self.item) let rating = await app.getRating(self.item)
if (rating == 0) { if (rating == 0) {
menus.normal.headerItems.find(x => x.id == 'love').disabled = false menus.normal.headerItems.find(x => x.id == 'love').disabled = false
menus.normal.headerItems.find(x => x.id == 'dislike').disabled = false menus.normal.headerItems.find(x => x.id == 'dislike').disabled = false
} else if (rating == 1) { } else if (rating == 1) {
menus.normal.headerItems.find(x => x.id == 'unlove').hidden = false menus.normal.headerItems.find(x => x.id == 'unlove').hidden = false
menus.normal.headerItems.find(x => x.id == 'love').hidden = true menus.normal.headerItems.find(x => x.id == 'love').hidden = true
} else if (rating == -1) { } else if (rating == -1) {
menus.normal.headerItems.find(x => x.id == 'undo_dislike').hidden = false menus.normal.headerItems.find(x => x.id == 'undo_dislike').hidden = false
menus.normal.headerItems.find(x => x.id == 'dislike').hidden = true menus.normal.headerItems.find(x => x.id == 'dislike').hidden = true
} }
} catch(err) { } catch (err) {
} }
}, },
@ -474,7 +488,7 @@
}, },
async removeFromLibrary() { async removeFromLibrary() {
let item = this.item let item = this.item
let params = {"fields[songs]": "inLibrary", "fields[albums]": "inLibrary", "relate": "library"} let params = { "fields[songs]": "inLibrary", "fields[albums]": "inLibrary", "relate": "library" }
let id = item.id ?? item.attributes.playParams.id let id = item.id ?? item.attributes.playParams.id
let res = await app.mkapi(item.attributes.playParams.kind ?? item.type, item.attributes.playParams.isLibrary ?? false, item.attributes.playParams.id ?? item.id, params); let res = await app.mkapi(item.attributes.playParams.kind ?? item.type, item.attributes.playParams.isLibrary ?? false, item.attributes.playParams.id ?? item.id, params);
if (res && res.relationships && res.relationships.library && res.relationships.library.data && res.relationships.library.data.length > 0) { if (res && res.relationships && res.relationships.library && res.relationships.library.data && res.relationships.library.data.length > 0) {
@ -502,10 +516,10 @@
let truekind = (!kind.endsWith("s")) ? (kind + "s") : kind; let truekind = (!kind.endsWith("s")) ? (kind + "s") : kind;
console.log(item, parent, childIndex, kind, id, isLibrary, kind == "playlists", id.startsWith("p.") || id.startsWith("pl.u")) console.log(item, parent, childIndex, kind, id, isLibrary, kind == "playlists", id.startsWith("p.") || id.startsWith("pl.u"))
app.mk.stop().then(() => { app.mk.stop().then(() => {
if (parent != null && childIndex != null) { if (parent != null && childIndex != null) {
app.queueParentandplayChild(parent, childIndex, item); app.queueParentandplayChild(parent, childIndex, item);
} }
else if (kind.includes("playlist") && (id.startsWith("p.") || id.startsWith("pl."))){ else if (kind.includes("playlist") && (id.startsWith("p.") || id.startsWith("pl."))) {
function shuffleArray(array) { function shuffleArray(array) {
for (var i = array.length - 1; i > 0; i--) { for (var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1)); var j = Math.floor(Math.random() * (i + 1));
@ -514,58 +528,59 @@
array[j] = temp; array[j] = temp;
} }
} }
app.mk.setQueue({[truekind]: [item.attributes.playParams.id ?? item.id]}).then(function () { app.mk.setQueue({ [truekind]: [item.attributes.playParams.id ?? item.id] }).then(function () {
app.mk.play().then(function (){ app.mk.play().then(function () {
var playlistId = id var playlistId = id
function getPlaylist(id, isLibrary){ function getPlaylist(id, isLibrary) {
if (isLibrary){ if (isLibrary) {
return this.app.mk.api.v3.music(`/v1/me/library/playlists/${id}`) return this.app.mk.api.v3.music(`/v1/me/library/playlists/${id}`)
} else { return this.app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/playlists/${id}`)} } else { return this.app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/playlists/${id}`) }
}
try {
getPlaylist(id, isLibrary).then(res => {
//let query = res.relationships.tracks.data.map(item => new MusicKit.MediaItem(item));
//if (app.mk.shuffleMode == 1){shuffleArray(query); }
// console.log(query)
// app.mk.queue.append(query)
if (!res.data.relationships.tracks.next) {
return
} else {
getPlaylistTracks(res.data.relationships.tracks.next)
} }
try {
getPlaylist(id, isLibrary).then(res => {
//let query = res.relationships.tracks.data.map(item => new MusicKit.MediaItem(item));
//if (app.mk.shuffleMode == 1){shuffleArray(query); }
// console.log(query)
// app.mk.queue.append(query)
if (!res.data.relationships.tracks.next) {
return
} else {
getPlaylistTracks(res.data.relationships.tracks.next)
}
function getPlaylistTracks(next) { function getPlaylistTracks(next) {
app.apiCall(app.musicBaseUrl + next, res => { app.apiCall(app.musicBaseUrl + next, res => {
// if (res.id != playlistId || next.includes(playlistId)) { // if (res.id != playlistId || next.includes(playlistId)) {
// return // return
// } // }
console.log('nextres', res) console.log('nextres', res)
let query = res.data.map(item => new MusicKit.MediaItem(item)) let query = res.data.map(item => new MusicKit.MediaItem(item))
if (app.mk.shuffleMode == 1){shuffleArray(query); console.log('shf')} if (app.mk.shuffleMode == 1) { shuffleArray(query); console.log('shf') }
app.mk.queue.append(query) app.mk.queue.append(query)
if (res.next) { if (res.next) {
getPlaylistTracks(res.next) getPlaylistTracks(res.next)
}
})
} }
}) })
} catch (e) {} }
})
} catch (e) { }
}) })
}) })
} }
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 ?? ''));
if (kind.toLowerCase().includes('album') || kind.toLowerCase().includes('playlist')){ if (kind.toLowerCase().includes('album') || kind.toLowerCase().includes('playlist')) {
app.routeView(this.item) app.routeView(this.item)
} else { } else {
this.playTrack() this.playTrack()
@ -573,4 +588,4 @@
} }
} }
}); });
</script> </script>

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,25 +820,32 @@
CiderAudio.normalizerOff() CiderAudio.normalizerOff()
} }
}, },
ciderPPECompatibility: function () { ciderPPE: function () {
if (app.cfg.audio.spatial) { if (app.cfg.advanced.ciderPPE) {
notyf.error("CAP is not compatible with Spatialization. Please disable Spatialization to continue.") if (app.cfg.audio.spatial) {
} 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()
} }
}, },
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