Merge remote-tracking branch 'upstream/upcoming' into upcoming

This commit is contained in:
Onur Gümüş 2022-01-25 16:25:18 +03:00
commit 9c5d5631c9
36 changed files with 508 additions and 186 deletions

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 577 205" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(0.788347,0,0,0.788347,-131.654,-154.131)">
<g id="Release.afdesign" transform="matrix(0.260038,0,0,0.260038,297.279,325.53)">
<g transform="matrix(1,0,0,1,-501,-500)">
<path d="M501,21C765.367,21 980,235.633 980,500C980,764.367 765.367,979 501,979C236.633,979 22,764.367 22,500C22,235.633 236.633,21 501,21ZM501,169C683.684,169 832,317.316 832,500C832,682.684 683.684,831 501,831C318.316,831 170,682.684 170,500C170,317.316 318.316,169 501,169Z" style="fill:rgb(255,38,84);"/>
<path d="M501,224C653.053,224 776.5,347.447 776.5,499.5C776.5,651.553 653.053,775 501,775C348.947,775 225.5,651.553 225.5,499.5C225.5,347.447 348.947,224 501,224ZM589.165,492.207C595.163,495.672 595.163,504.328 589.165,507.793L439.502,594.256C433.502,597.722 426,593.392 426,586.463L426,413.537C426,406.608 433.502,402.278 439.502,405.744L589.165,492.207Z" style="fill:rgb(255,38,84);"/>
</g>
</g>
<g transform="matrix(10.0544,0,0,10.0544,-4614.58,-2607.36)">
<text x="505.982px" y="297.612px" style="font-family:'Inter-Bold', 'Inter';font-weight:700;font-size:16px;fill:rgb(235,235,235);">Cider</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

6
Assets/Release.svg Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 1002 1000" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M501,21C765.367,21 980,235.633 980,500C980,764.367 765.367,979 501,979C236.633,979 22,764.367 22,500C22,235.633 236.633,21 501,21ZM501,169C683.684,169 832,317.316 832,500C832,682.684 683.684,831 501,831C318.316,831 170,682.684 170,500C170,317.316 318.316,169 501,169Z" style="fill:rgb(255,38,84);"/>
<path d="M501,224C653.053,224 776.5,347.447 776.5,499.5C776.5,651.553 653.053,775 501,775C348.947,775 225.5,651.553 225.5,499.5C225.5,347.447 348.947,224 501,224ZM589.165,492.207C595.163,495.672 595.163,504.328 589.165,507.793L439.502,594.256C433.502,597.722 426,593.392 426,586.463L426,413.537C426,406.608 433.502,402.278 439.502,405.744L589.165,492.207Z" style="fill:rgb(255,38,84);"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 257 257" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g id="Cider-Vinyl" serif:id="Cider Vinyl" transform="matrix(2.36243,0,0,2.36243,-4.17297,-4.04967)">
<g id="Vinyl-Ring" serif:id="Vinyl Ring" transform="matrix(0.447755,0,0,0.447755,-245.339,-9.81703)">
<circle cx="673" cy="146.877" r="121.123" style="fill:url(#_Linear1);"/>
<clipPath id="_clip2">
<circle cx="673" cy="146.877" r="121.123"/>
</clipPath>
<g clip-path="url(#_clip2)">
<g transform="matrix(0.945365,0,0,0.945365,36.7693,8.02459)">
<circle cx="673" cy="48" r="101.585" style="fill:white;fill-opacity:0.02;"/>
</g>
</g>
</g>
<g id="Vinyl-Surface" serif:id="Vinyl Surface" transform="matrix(0.423292,0,0,0.423292,-250.04,-148.398)">
<circle cx="723" cy="482.753" r="118.247" style="fill:rgb(15,15,15);"/>
<clipPath id="_clip3">
<circle cx="723" cy="482.753" r="118.247"/>
</clipPath>
<g clip-path="url(#_clip3)">
<g transform="matrix(1,0,0,1,594.877,354.63)">
<path d="M128.123,14.126C191.04,14.126 242.121,65.206 242.121,128.123C242.121,191.04 191.04,242.121 128.123,242.121C65.206,242.121 14.126,191.04 14.126,128.123C14.126,65.206 65.206,14.126 128.123,14.126ZM128.123,21.141C187.168,21.141 235.105,69.078 235.105,128.123C235.105,187.168 187.168,235.105 128.123,235.105C69.078,235.105 21.141,187.168 21.141,128.123C21.141,69.078 69.078,21.141 128.123,21.141ZM128.123,60.877C165.238,60.877 195.37,91.009 195.37,128.123C195.37,165.238 165.238,195.37 128.123,195.37C91.009,195.37 60.877,165.238 60.877,128.123C60.877,91.009 91.009,60.877 128.123,60.877ZM128.123,65.015C162.954,65.015 191.231,93.293 191.231,128.123C191.231,162.954 162.954,191.231 128.123,191.231C93.293,191.231 65.015,162.954 65.015,128.123C65.015,93.293 93.293,65.015 128.123,65.015Z" style="fill:rgb(20,20,20);"/>
</g>
<g transform="matrix(1,0,0,1,594.877,354.63)">
<path d="M236.794,189.735L189.735,236.794L139.329,162.859L162.859,139.329L236.794,189.735ZM19.452,66.512L66.512,19.452L116.917,93.388L93.388,116.917L19.452,66.512Z" style="fill:rgb(37,37,37);"/>
</g>
</g>
</g>
<g id="Play-Button-Fill-Color" serif:id="Play Button Fill Color" transform="matrix(0.399516,0,0,0.399516,30.431,30.431)">
<circle cx="64" cy="64" r="43" style="fill:white;"/>
</g>
<g id="Play-Button" serif:id="Play Button" transform="matrix(0.0920925,0,0,0.0920925,9.86165,9.94759)">
<path d="M501,224C653.053,224 776.5,347.447 776.5,499.5C776.5,651.553 653.053,775 501,775C348.947,775 225.5,651.553 225.5,499.5C225.5,347.447 348.947,224 501,224ZM589.165,492.207C595.163,495.672 595.163,504.328 589.165,507.793L439.502,594.256C433.502,597.722 426,593.392 426,586.463L426,413.537C426,406.608 433.502,402.278 439.502,405.744L589.165,492.207Z" style="fill:url(#_Linear4);"/>
</g>
</g>
<defs>
<linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.22412e-13,242.247,-242.247,1.22412e-13,673,25.7534)"><stop offset="0" style="stop-color:rgb(255,38,84);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(183,0,39);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear4" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(3.3739e-14,551,-551,3.3739e-14,501,224)"><stop offset="0" style="stop-color:rgb(255,38,84);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(183,0,39);stop-opacity:1"/></linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View file

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 257 257" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g id="Cider-Vinyl" serif:id="Cider Vinyl" transform="matrix(2.36243,0,0,2.36243,-4.17297,-4.04967)">
<g id="Vinyl-Ring" serif:id="Vinyl Ring" transform="matrix(0.447755,0,0,0.447755,-245.339,-9.81703)">
<circle cx="673" cy="146.877" r="121.123" style="fill:url(#_Linear1);"/>
<clipPath id="_clip2">
<circle cx="673" cy="146.877" r="121.123"/>
</clipPath>
<g clip-path="url(#_clip2)">
<g transform="matrix(0.945365,0,0,0.945365,36.7693,8.02459)">
<circle cx="673" cy="48" r="101.585" style="fill:white;fill-opacity:0.02;"/>
</g>
</g>
</g>
<g id="Vinyl-Surface" serif:id="Vinyl Surface" transform="matrix(0.423292,0,0,0.423292,-250.04,-148.398)">
<circle cx="723" cy="482.753" r="118.247" style="fill:url(#_Linear3);"/>
<clipPath id="_clip4">
<circle cx="723" cy="482.753" r="118.247"/>
</clipPath>
<g clip-path="url(#_clip4)">
<g transform="matrix(1,0,0,1,594.877,354.63)">
<path d="M128.123,14.126C191.04,14.126 242.121,65.206 242.121,128.123C242.121,191.04 191.04,242.121 128.123,242.121C65.206,242.121 14.126,191.04 14.126,128.123C14.126,65.206 65.206,14.126 128.123,14.126ZM128.123,21.141C187.168,21.141 235.105,69.078 235.105,128.123C235.105,187.168 187.168,235.105 128.123,235.105C69.078,235.105 21.141,187.168 21.141,128.123C21.141,69.078 69.078,21.141 128.123,21.141ZM128.123,60.877C165.238,60.877 195.37,91.009 195.37,128.123C195.37,165.238 165.238,195.37 128.123,195.37C91.009,195.37 60.877,165.238 60.877,128.123C60.877,91.009 91.009,60.877 128.123,60.877ZM128.123,65.015C162.954,65.015 191.231,93.293 191.231,128.123C191.231,162.954 162.954,191.231 128.123,191.231C93.293,191.231 65.015,162.954 65.015,128.123C65.015,93.293 93.293,65.015 128.123,65.015Z" style="fill:rgb(20,20,20);"/>
</g>
<g transform="matrix(1,0,0,1,594.877,354.63)">
<path d="M236.794,189.735L189.735,236.794L139.329,162.859L162.859,139.329L236.794,189.735ZM19.452,66.512L66.512,19.452L116.917,93.388L93.388,116.917L19.452,66.512Z" style="fill:rgb(37,37,37);"/>
</g>
</g>
</g>
<g id="Play-Button-Fill-Color" serif:id="Play Button Fill Color" transform="matrix(0.399516,0,0,0.399516,30.431,30.431)">
<circle cx="64" cy="64" r="43" style="fill:white;"/>
</g>
<g id="Play-Button" serif:id="Play Button" transform="matrix(0.0920925,0,0,0.0920925,9.86165,9.94759)">
<path d="M501,224C653.053,224 776.5,347.447 776.5,499.5C776.5,651.553 653.053,775 501,775C348.947,775 225.5,651.553 225.5,499.5C225.5,347.447 348.947,224 501,224ZM589.165,492.207C595.163,495.672 595.163,504.328 589.165,507.793L439.502,594.256C433.502,597.722 426,593.392 426,586.463L426,413.537C426,406.608 433.502,402.278 439.502,405.744L589.165,492.207Z" style="fill:url(#_Linear5);"/>
</g>
</g>
<defs>
<linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.22412e-13,242.247,-242.247,1.22412e-13,673,25.7534)"><stop offset="0" style="stop-color:rgb(255,38,84);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(183,0,39);stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear3" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(2.24529e-13,236.493,-236.493,2.24529e-13,723,364.507)"><stop offset="0" style="stop-color:rgb(15,15,15);stop-opacity:1"/><stop offset="1" style="stop-color:black;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear5" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(3.3739e-14,551,-551,3.3739e-14,501,224)"><stop offset="0" style="stop-color:rgb(255,38,84);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(183,0,39);stop-opacity:1"/></linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 303 KiB

After

Width:  |  Height:  |  Size: 295 KiB

Before After
Before After

View file

@ -166,7 +166,7 @@
// 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.header.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
// Refer to term.connect for the connect button // Refer to term.connect for the connect button

View file

@ -1,3 +1,5 @@
{ {
"date.format": "${d} ${m}, ${y}",
"home.friendsListeningTo": "Bruv's Listening To" "home.friendsListeningTo": "Bruv's Listening To"
} }

View file

@ -1,6 +1,9 @@
{ // Base File { // Base File
// App info // App info
"app.name": "Cider", "app.name": "Cider",
"date.format": "${m} ${d}, ${y}",
// Dialogs // Dialogs
"dialog.cancel": "Cancel", "dialog.cancel": "Cancel",
"dialog.ok": "OK", "dialog.ok": "OK",
@ -9,7 +12,6 @@
"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.appleMusic": "Apple Music", "term.appleMusic": "Apple Music",
"term.applePodcasts": "Apple Podcasts", "term.applePodcasts": "Apple Podcasts",
@ -80,18 +82,24 @@
"term.time.updated": "Updated", "term.time.updated": "Updated",
"term.fullscreenView": "Fullscreen View", "term.fullscreenView": "Fullscreen View",
"term.defaultView": "Default View", "term.defaultView": "Default View",
"term.spacializedAudioSetting": "Spacialized Audio Setting",
"term.clearAll": "Clear All",
"term.recentStations": "Recent Stations",
"term.language": "Language",
// Home // Home
"home.title": "Home", "home.title": "Home",
"home.recentlyPlayed": "Recently Played", "home.recentlyPlayed": "Recently Played",
"home.recentlyAdded": "Recently Added", "home.recentlyAdded": "Recently Added",
"home.artistsFeed": "Your Artists Feed", "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.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.noResults": "No Results.",
"error.noResults.description": "Try a new search.",
// Actions // Actions
"action.addToLibrary": "Add to Library", "action.addToLibrary": "Add to Library",
@ -127,6 +135,7 @@
"action.dislike": "Dislike", "action.dislike": "Dislike",
"action.undoDislike": "Undo dislike", "action.undoDislike": "Undo dislike",
"action.showWebRemoteQR": "Show Web Remote QR", "action.showWebRemoteQR": "Show Web Remote QR",
// 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.",
@ -155,9 +164,11 @@
"settings.header.visual.animatedArtworkQuality.low": "Low", "settings.header.visual.animatedArtworkQuality.low": "Low",
"settings.header.visual.animatedArtworkQuality.medium": "Medium", "settings.header.visual.animatedArtworkQuality.medium": "Medium",
"settings.header.visual.animatedArtworkQuality.high": "High", "settings.header.visual.animatedArtworkQuality.high": "High",
"settings.header.visual.animatedArtworkQuality.veryHigh": "Very High",
"settings.header.visual.animatedArtworkQuality.extreme": "Extreme", "settings.header.visual.animatedArtworkQuality.extreme": "Extreme",
"settings.option.visual.animatedWindowBackground": "Animated Window Background", // Toggle "settings.option.visual.animatedWindowBackground": "Animated Window Background", // Toggle
"settings.option.visual.hardwareAcceleration": "Hardware Acceleration", // Dropdown "settings.option.visual.hardwareAcceleration": "Hardware Acceleration", // Dropdown
"settings.option.visual.hardwareAcceleration.description": "Requires relaunch",
"settings.header.visual.hardwareAcceleration.default": "Default", "settings.header.visual.hardwareAcceleration.default": "Default",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
@ -181,7 +192,7 @@
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.header.connectivity.discordRPC.cider": "Display as 'Cider'", "settings.header.connectivity.discordRPC.cider": "Display as 'Cider'",
"settings.header.connectivity.discordRPC.appleMusic": "Display as 'Apple Music'", "settings.header.connectivity.discordRPC.appleMusic": "Display as 'Apple Music'",
"settings.header.connectivity.discordRPC.clearOnPause": "Clear Discord Rich Presence on Pause", // Toggle "settings.option.connectivity.discordRPC.clearOnPause": "Clear Discord Rich Presence on Pause", // Toggle
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling", // Option to Connect "settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling", // Option to Connect
// Refer to term.connect for the connect button // Refer to term.connect for the connect button
@ -191,6 +202,9 @@
"settings.option.experimental.compactUI": "Compact UI", // Toggle "settings.option.experimental.compactUI": "Compact UI", // Toggle
// Refer to term.disabled & term.enabled // Refer to term.disabled & term.enabled
// Settings - 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"

View file

@ -181,7 +181,7 @@
// 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.header.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
// Refer to term.connect for the connect button // Refer to term.connect for the connect button

View file

@ -1,6 +1,9 @@
{ {
// App info // App info
"app.name": "Cider", "app.name": "Cider",
"date.format": "${y}年${m}月${d}日",
// Dialogs // Dialogs
"dialog.cancel": "キャンセル", "dialog.cancel": "キャンセル",
"dialog.ok": "OK", "dialog.ok": "OK",
@ -25,6 +28,9 @@
"term.queue": "次はこちら", "term.queue": "次はこちら",
"term.search": "検索", "term.search": "検索",
"term.library": "ライブラリ", "term.library": "ライブラリ",
"term.listenNow": "今すぐ聴く",
"term.browse": "見つける",
"term.radio": "ラジオ",
"term.recentlyAdded": "最近追加した項目", "term.recentlyAdded": "最近追加した項目",
"term.songs": "曲", "term.songs": "曲",
"term.albums": "アルバム", "term.albums": "アルバム",
@ -43,7 +49,7 @@
"term.unmute": "ミュート解除", "term.unmute": "ミュート解除",
"term.share": "共有", "term.share": "共有",
"term.settings": "設定", "term.settings": "設定",
"term.seeAll": "すべてを表示", "term.seeAll": "すべて見る",
"term.sortBy": "並べ替え", "term.sortBy": "並べ替え",
"term.sortBy.album": "アルバム", "term.sortBy.album": "アルバム",
"term.sortBy.artist": "アーティスト", "term.sortBy.artist": "アーティスト",
@ -51,12 +57,13 @@
"term.sortBy.genre": "ジャンル", "term.sortBy.genre": "ジャンル",
"term.sortBy.releaseDate": "配信開始日", "term.sortBy.releaseDate": "配信開始日",
"term.sortBy.duration": "時間", "term.sortBy.duration": "時間",
"term.sortOrder": "アルファベット順", "term.sortOrder": "並べ替え",
"term.sortOrder.ascending": "A-Z順", "term.sortOrder.ascending": "順",
"term.sortOrder.descending": "Z-A順", "term.sortOrder.descending": "順",
"term.viewAs": "表示", "term.viewAs": "表示",
"term.viewAs.coverArt": "カバーアート", "term.viewAs.coverArt": "カバーアート",
"term.viewAs.list": "リスト", "term.viewAs.list": "リスト",
"term.size": "サイズ",
"term.size.normal": "普通", "term.size.normal": "普通",
"term.size.compact": "コンパクト", "term.size.compact": "コンパクト",
"term.enable": "ON", "term.enable": "ON",
@ -64,17 +71,38 @@
"term.enabled": "ON", "term.enabled": "ON",
"term.disabled": "OFF", "term.disabled": "OFF",
"term.connect": "接続", "term.connect": "接続",
"term.confirm": "よろしいでしょうか?",
"term.more": "もっと",
"term.less": "減らす",
"term.showMore": "もっと見る",
"term.showLess": "表示数を少なくする",
"term.topSongs" : "トップソング",
"term.latestReleases": "ニューリリース",
"term.time.added": "追加日",
"term.time.released": "配信開始日",
"term.time.updated": "最終更新日",
"term.fullscreenView": "全画面表示",
"term.defaultView": "ウィンドウ表示",
"term.spacializedAudioSetting": "オーディオ空間化設定",
"term.clearAll": "クリア",
"term.recentStations": "最近の再生",
"term.language": "言語",
// Home // Home
"home.title": "ホーム", "home.title": "ホーム",
"home.recentlyPlayed": "最近の再生", "home.recentlyPlayed": "最近の再生",
"home.recentlyAdded": "最近追加した項目", "home.recentlyAdded": "最近追加した項目",
"home.artistsFeed": "アーティストのフィード", "home.artistsFeed": "アーティストのフィード",
"home.artistsFeed.noArtist": "自分の好きなアーティストをフォローしましょう・",
"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.noResults": "見つかりませんでした",
"error.noResults.description": "もう一度お試しください。",
// Actions // Actions
"action.addToLibrary": "ライブラリに追加", "action.addToLibrary": "ライブラリに追加",
"action.addToLibrary.success": "ライブラリに追加されました", "action.addToLibrary.success": "ライブラリに追加されました",
@ -84,6 +112,9 @@
"action.addToQueue": "キューに追加", "action.addToQueue": "キューに追加",
"action.addToQueue.success": "キューに追加されました", "action.addToQueue.success": "キューに追加されました",
"action.addToQueue.error": "操作を完了できませんでした", "action.addToQueue.error": "操作を完了できませんでした",
"action.addToPlaylist": "プレイリストに追加",
"action.removeFromPlaylist": "プレイリストから削除",
"action.addToFavorites": " ",
"action.removeFromQueue": "キューから削除", "action.removeFromQueue": "キューから削除",
"action.removeFromQueue.success": "キューから削除されました", "action.removeFromQueue.success": "キューから削除されました",
"action.removeFromQueue.error": "操作を完了できませんでした", "action.removeFromQueue.error": "操作を完了できませんでした",
@ -98,7 +129,9 @@
"action.startRadio": "ステーションを作成", "action.startRadio": "ステーションを作成",
"action.goToArtist": "アーティストへ移動", "action.goToArtist": "アーティストへ移動",
"action.goToAlbum": "アルバムへ移動", "action.goToAlbum": "アルバムへ移動",
"action.moveToTop": "上に戻る",
"action.share": "曲を共有", "action.share": "曲を共有",
"action.rename": "リネーム",
"action.love": "ラブ", "action.love": "ラブ",
"action.unlove": "ラブを解除", "action.unlove": "ラブを解除",
"action.dislike": "これに似たものをすすめない", "action.dislike": "これに似たものをすすめない",
@ -130,11 +163,13 @@
"settings.header.visual.animatedArtwork.disable": "オフ", "settings.header.visual.animatedArtwork.disable": "オフ",
"settings.option.visual.animatedArtworkQuality": "アニメーションアートワークの品質", // Dropdown "settings.option.visual.animatedArtworkQuality": "アニメーションアートワークの品質", // Dropdown
"settings.header.visual.animatedArtworkQuality.low": "低", "settings.header.visual.animatedArtworkQuality.low": "低",
"settings.header.visual.animatedArtworkQuality.medium": "標準", "settings.header.visual.animatedArtworkQuality.medium": "",
"settings.header.visual.animatedArtworkQuality.high": "高", "settings.header.visual.animatedArtworkQuality.high": "高",
"settings.header.visual.animatedArtworkQuality.veryHigh": "超高",
"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": "アプリを再起動する必要があります",
"settings.header.visual.hardwareAcceleration.default": "既定", "settings.header.visual.hardwareAcceleration.default": "既定",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
@ -158,7 +193,7 @@
// 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.header.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
// Refer to term.connect for the connect button // Refer to term.connect for the connect button
@ -168,8 +203,11 @@
"settings.option.experimental.compactUI": "コンパクトインターフェース", // Toggle "settings.option.experimental.compactUI": "コンパクトインターフェース", // Toggle
// Refer to term.disabled & term.enabled // Refer to term.disabled & term.enabled
// Settings - 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とスマートフォンをペアリングする"
} }

View file

@ -188,7 +188,7 @@
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
"settings.header.connectivity.discordRPC.cider": "'Cider' Olarak", "settings.header.connectivity.discordRPC.cider": "'Cider' Olarak",
"settings.header.connectivity.discordRPC.appleMusic": "'Apple Music' Olarak", "settings.header.connectivity.discordRPC.appleMusic": "'Apple Music' Olarak",
"settings.header.connectivity.discordRPC.clearOnPause": "Duraklatıldığında Discord'da Gösterme", // Toggle "settings.option.connectivity.discordRPC.clearOnPause": "Duraklatıldığında Discord'da Gösterme", // Toggle
"settings.option.connectivity.lastfmScrobble": "LastFM Bağlantısı", // Option to Connect "settings.option.connectivity.lastfmScrobble": "LastFM Bağlantısı", // Option to Connect
// Refer to term.connect for the connect button // Refer to term.connect for the connect button

View file

@ -1,6 +1,9 @@
{ {
// App info // App info
"app.name": "Cider", "app.name": "Cider",
"date.format": "${y}年${m}月${d}日",
// Dialogs // Dialogs
"dialog.cancel": "取消", "dialog.cancel": "取消",
"dialog.ok": "确定", "dialog.ok": "确定",
@ -25,6 +28,9 @@
"term.queue": "队列", "term.queue": "队列",
"term.search": "搜索", "term.search": "搜索",
"term.library": "资料库", "term.library": "资料库",
"term.listenNow": "现在就听",
"term.browse": "浏览",
"term.radio": "广播",
"term.recentlyAdded": "最近添加", "term.recentlyAdded": "最近添加",
"term.songs": "歌曲", "term.songs": "歌曲",
"term.albums": "专辑", "term.albums": "专辑",
@ -57,6 +63,7 @@
"term.viewAs": "显示模式", "term.viewAs": "显示模式",
"term.viewAs.coverArt": "专辑封面", "term.viewAs.coverArt": "专辑封面",
"term.viewAs.list": "列表", "term.viewAs.list": "列表",
"term.size": "大小",
"term.size.normal": "正常", "term.size.normal": "正常",
"term.size.compact": "紧凑", "term.size.compact": "紧凑",
"term.enable": "启用", "term.enable": "启用",
@ -64,18 +71,38 @@
"term.enabled": "已启用", "term.enabled": "已启用",
"term.disabled": "已禁用", "term.disabled": "已禁用",
"term.connect": "连接", "term.connect": "连接",
"term.confirm": "确认?",
"term.more": "更多",
"term.less": "较少",
"term.showMore": "显示更多",
"term.showLess": "显示更少",
"term.topSongs" : "热门歌曲",
"term.latestReleases": "最新发行",
"term.time.added": "添加于",
"term.time.released": "发行于",
"term.time.updated": "更新于",
"term.fullscreenView": "全屏",
"term.defaultView": "默认",
"term.spacializedAudioSetting": "音频空间化设置",
"term.clearAll": "清空",
"term.recentStations": "最近播放的频道",
"term.language": "语言",
// Home // Home
"home.title": "主页", "home.title": "主页",
"home.recentlyPlayed": "最近播放", "home.recentlyPlayed": "最近播放",
"home.recentlyAdded": "最近添加", "home.recentlyAdded": "最近添加",
"home.artistsFeed": "艺人推荐", "home.artistsFeed": "艺人推荐",
"home.artistsFeed.noArtist": "追踪您喜爱的艺人后便可查看他们的最新发行。",
"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.noResults": "没有结果",
"error.noResults.description": "尝试更改搜索条件。",
// Actions // Actions
"action.addToLibrary": "加入资料库", "action.addToLibrary": "加入资料库",
@ -89,6 +116,9 @@
"action.removeFromQueue": "从队列中移除", "action.removeFromQueue": "从队列中移除",
"action.removeFromQueue.success": "已从队列中移除", "action.removeFromQueue.success": "已从队列中移除",
"action.removeFromQueue.error": "从队列中移除的过程发生了错误", "action.removeFromQueue.error": "从队列中移除的过程发生了错误",
"action.addToPlaylist": "加入播放列表",
"action.removeFromPlaylist": "从播放列表中移除",
"action.addToFavorites": "加至收藏",
"action.follow": "关注", "action.follow": "关注",
"action.follow.success": "已关注", "action.follow.success": "已关注",
"action.follow.error": "尝试关注的过程发生了错误", "action.follow.error": "尝试关注的过程发生了错误",
@ -100,7 +130,9 @@
"action.startRadio": "开始电台", "action.startRadio": "开始电台",
"action.goToArtist": "前往艺人", "action.goToArtist": "前往艺人",
"action.goToAlbum": "前往专辑", "action.goToAlbum": "前往专辑",
"action.moveToTop": "移到顶部",
"action.share": "分享歌曲", "action.share": "分享歌曲",
"action.rename": "重命名",
"action.love": "喜欢", "action.love": "喜欢",
"action.unlove": "踩", "action.unlove": "踩",
"action.dislike": "减少此类建议", "action.dislike": "减少此类建议",
@ -134,9 +166,11 @@
"settings.header.visual.animatedArtworkQuality.low": "低", "settings.header.visual.animatedArtworkQuality.low": "低",
"settings.header.visual.animatedArtworkQuality.medium": "中", "settings.header.visual.animatedArtworkQuality.medium": "中",
"settings.header.visual.animatedArtworkQuality.high": "高", "settings.header.visual.animatedArtworkQuality.high": "高",
"settings.header.visual.animatedArtworkQuality.veryHigh": "非常高",
"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.header.visual.hardwareAcceleration.default": "默认", "settings.header.visual.hardwareAcceleration.default": "默认",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
@ -160,16 +194,19 @@
// 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.header.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
// 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
// Refer to term.disabled & term.enabled // Refer to term.disabled & term.enabled
// Settings - Unfinished
"settings.header.unfinished": "未完成",
// Web Remote // Web Remote
"remote.web.title": "Cider 远程控制", "remote.web.title": "Cider 远程控制",
"remote.web.description": "扫描以下的二维码以控制 Cider" "remote.web.description": "扫描以下的二维码以控制 Cider"

View file

@ -2,6 +2,8 @@
// App info // App info
"app.name": "Cider", "app.name": "Cider",
"date.format": "${y}年${m}月${d}日",
// Dialogs // Dialogs
"dialog.cancel": "取消", "dialog.cancel": "取消",
"dialog.ok": "確認", "dialog.ok": "確認",
@ -25,6 +27,9 @@
"term.queue": "播放清單", "term.queue": "播放清單",
"term.search": "搜尋", "term.search": "搜尋",
"term.library": "資料庫", "term.library": "資料庫",
"term.listenNow": "立即聆聽",
"term.browse": "瀏覽",
"term.radio": "廣播",
"term.recentlyAdded": "最近加入", "term.recentlyAdded": "最近加入",
"term.songs": "歌曲", "term.songs": "歌曲",
"term.albums": "專輯", "term.albums": "專輯",
@ -77,17 +82,25 @@
"term.time.updated": "更新於", "term.time.updated": "更新於",
"term.fullscreenView": "全螢幕檢視", "term.fullscreenView": "全螢幕檢視",
"term.defaultView": "一般檢視", "term.defaultView": "一般檢視",
"term.spacializedAudioSetting": "音频空间化设置",
"term.clearAll": "清空",
"term.recentStations": "最近播放的頻道",
"term.language": "語言",
// Home // Home
"home.title": "主頁", "home.title": "主頁",
"home.recentlyPlayed": "最近播放", "home.recentlyPlayed": "最近播放",
"home.recentlyAdded": "最近加入", "home.recentlyAdded": "最近加入",
"home.artistsFeed": "藝人動態", "home.artistsFeed": "藝人動態",
"home.artistsFeed.noArtist": "追蹤一些藝人來獲得他們的最新歌曲資訊。",
"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": "There was a problem connecting to Apple Music.",
"error.noResults": "No Results.",
"error.noResults.description": "Try a new search.",
// Actions // Actions
"action.addToLibrary": "加入資料庫", "action.addToLibrary": "加入資料庫",
"action.addToLibrary.success": "成功加入資料庫", "action.addToLibrary.success": "成功加入資料庫",
@ -151,9 +164,11 @@
"settings.header.visual.animatedArtworkQuality.low": "低", "settings.header.visual.animatedArtworkQuality.low": "低",
"settings.header.visual.animatedArtworkQuality.medium": "中", "settings.header.visual.animatedArtworkQuality.medium": "中",
"settings.header.visual.animatedArtworkQuality.high": "高", "settings.header.visual.animatedArtworkQuality.high": "高",
"settings.header.visual.animatedArtworkQuality.veryHigh": "非常高",
"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.header.visual.hardwareAcceleration.default": "默認", "settings.header.visual.hardwareAcceleration.default": "默認",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
@ -168,7 +183,7 @@
"settings.option.lyrics.enableMusixmatch": "啟用 Musixmatch 歌詞", // Toggle "settings.option.lyrics.enableMusixmatch": "啟用 Musixmatch 歌詞", // Toggle
"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": "外部連結",
@ -177,16 +192,18 @@
// 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.header.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
// 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
// Refer to term.disabled & term.enabled // Refer to term.disabled & term.enabled
// Settings - Unfinished
"settings.header.unfinished": "未完成",
// Web Remote // Web Remote
"remote.web.title": "遙距控制 Cider", "remote.web.title": "遙距控制 Cider",

View file

@ -2,6 +2,8 @@
// App info // App info
"app.name": "Cider", "app.name": "Cider",
"date.format": "${y}年${m}月${d}日",
// Dialogs // Dialogs
"dialog.cancel": "取消", "dialog.cancel": "取消",
"dialog.ok": "OK", "dialog.ok": "OK",
@ -25,6 +27,9 @@
"term.queue": "待播清單", "term.queue": "待播清單",
"term.search": "搜尋", "term.search": "搜尋",
"term.library": "資料庫", "term.library": "資料庫",
"term.listenNow": "立即聆聽",
"term.browse": "瀏覽",
"term.radio": "廣播",
"term.recentlyAdded": "最近加入", "term.recentlyAdded": "最近加入",
"term.songs": "歌曲", "term.songs": "歌曲",
"term.albums": "專輯", "term.albums": "專輯",
@ -57,6 +62,7 @@
"term.viewAs": "顯示模式", "term.viewAs": "顯示模式",
"term.viewAs.coverArt": "專輯封面", "term.viewAs.coverArt": "專輯封面",
"term.viewAs.list": "列表", "term.viewAs.list": "列表",
"term.size": "大小",
"term.size.normal": "正常", "term.size.normal": "正常",
"term.size.compact": "緊凑", "term.size.compact": "緊凑",
"term.enable": "啟用", "term.enable": "啟用",
@ -64,17 +70,37 @@
"term.enabled": "已啟用", "term.enabled": "已啟用",
"term.disabled": "已停用", "term.disabled": "已停用",
"term.connect": "連接", "term.connect": "連接",
"term.confirm": "確定?",
"term.more": "更多",
"term.less": "更少",
"term.showMore": "顯示更多",
"term.showLess": "顯示更少",
"term.topSongs" : "熱門歌曲",
"term.latestReleases": "最新發行",
"term.time.added": "加入于",
"term.time.released": "發行于",
"term.time.updated": "更改于",
"term.fullscreenView": "全螢幕顯示",
"term.defaultView": "預設顯示",
"term.spacializedAudioSetting": "音频空间化设置",
"term.clearAll": "清空",
"term.recentStations": "最近收聽的廣播",
"term.language": "語言",
// Home // Home
"home.title": "主頁", "home.title": "主頁",
"home.recentlyPlayed": "最近播放", "home.recentlyPlayed": "最近播放",
"home.recentlyAdded": "最近加入", "home.recentlyAdded": "最近加入",
"home.artistsFeed": "藝人追蹤", "home.artistsFeed": "藝人追蹤",
"home.artistsFeed.noArtist": "追蹤一些藝人來獲得他們的最新歌曲。",
"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.noResults": "沒有結果",
"error.noResults.description": "嘗試新的搜尋項目。",
// Actions // Actions
"action.addToLibrary": "加入資料庫", "action.addToLibrary": "加入資料庫",
"action.addToLibrary.success": "成功加入資料庫", "action.addToLibrary.success": "成功加入資料庫",
@ -87,6 +113,9 @@
"action.removeFromQueue": "從代播清單刪除", "action.removeFromQueue": "從代播清單刪除",
"action.removeFromQueue.success": "已從代播清單刪除", "action.removeFromQueue.success": "已從代播清單刪除",
"action.removeFromQueue.error": "從代播清單刪除的過程發生錯誤", "action.removeFromQueue.error": "從代播清單刪除的過程發生錯誤",
"action.addToPlaylist": "加入播放列表",
"action.removeFromPlaylist": "從播放列表刪除",
"action.addToFavorites": "加入我的最愛",
"action.follow": "追蹤", "action.follow": "追蹤",
"action.follow.success": "追蹤中", "action.follow.success": "追蹤中",
"action.follow.error": "追蹤的過程發生錯誤", "action.follow.error": "追蹤的過程發生錯誤",
@ -98,7 +127,9 @@
"action.startRadio": "建立電台", "action.startRadio": "建立電台",
"action.goToArtist": "前往藝人", "action.goToArtist": "前往藝人",
"action.goToAlbum": "前往專輯", "action.goToAlbum": "前往專輯",
"action.moveToTop": "移至頂端",
"action.share": "分享歌曲", "action.share": "分享歌曲",
"action.rename": "Rename",
"action.love": "喜愛", "action.love": "喜愛",
"action.unlove": "取消喜愛", "action.unlove": "取消喜愛",
"action.dislike": "減少此類建議", "action.dislike": "減少此類建議",
@ -133,9 +164,11 @@
"settings.header.visual.animatedArtworkQuality.low": "低", "settings.header.visual.animatedArtworkQuality.low": "低",
"settings.header.visual.animatedArtworkQuality.medium": "中", "settings.header.visual.animatedArtworkQuality.medium": "中",
"settings.header.visual.animatedArtworkQuality.high": "高", "settings.header.visual.animatedArtworkQuality.high": "高",
"settings.header.visual.animatedArtworkQuality.veryHigh": "非常高",
"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.header.visual.hardwareAcceleration.default": "默認", "settings.header.visual.hardwareAcceleration.default": "默認",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
@ -146,11 +179,11 @@
// Settings - Lyrics // Settings - Lyrics
"settings.header.lyrics": "歌詞", "settings.header.lyrics": "歌詞",
"settings.header.lyrics.description": "調整Cider的歌詞設定", "settings.header.lyrics.description": "調整 Cider 的歌詞設定",
"settings.option.lyrics.enableMusixmatch": "啟用 Musixmatch 歌詞", // Toggle "settings.option.lyrics.enableMusixmatch": "啟用 Musixmatch 歌詞", // Toggle
"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": "外部連接",
@ -159,16 +192,18 @@
// 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.header.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
// 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
// Refer to term.disabled & term.enabled // Refer to term.disabled & term.enabled
// Settings - Unfinished
"settings.header.unfinished": "未完成",
// Web Remote // Web Remote
"remote.web.title": "Cider 遠控", "remote.web.title": "Cider 遠控",

View file

@ -178,12 +178,12 @@ const app = new Vue({
}, },
songs: { songs: {
sortingOptions: { sortingOptions: {
"albumName": "Album", "albumName": "0",
"artistName": "Artist", "artistName": "0",
"name": "Name", "name": "0",
"genre": "Genre", "genre": "0",
"releaseDate": "Release Date", "releaseDate": "0",
"durationInMillis": "Duration" "durationInMillis": "0"
}, },
sorting: "name", sorting: "name",
sortOrder: "asc", sortOrder: "asc",
@ -195,10 +195,10 @@ const app = new Vue({
}, },
albums: { albums: {
sortingOptions: { sortingOptions: {
"artistName": "Artist", "albumName": "0",
"name": "Name", "artistName": "0",
"genre": "Genre", "name": "0",
"releaseDate": "Release Date" "genre": "0"
}, },
viewAs: 'covers', viewAs: 'covers',
sorting: ["dateAdded", "name"], // [0] = recentlyadded page, [1] = albums page sorting: ["dateAdded", "name"], // [0] = recentlyadded page, [1] = albums page
@ -211,10 +211,10 @@ const app = new Vue({
}, },
artists: { artists: {
sortingOptions: { sortingOptions: {
"artistName": "Artist", "artistName": "0",
"name": "Name", "name": "0",
"genre": "Genre", "genre": "0",
"releaseDate": "Release Date" "releaseDate": "0"
}, },
viewAs: 'covers', viewAs: 'covers',
sorting: ["dateAdded", "name"], // [0] = recentlyadded page, [1] = albums page sorting: ["dateAdded", "name"], // [0] = recentlyadded page, [1] = albums page
@ -350,6 +350,30 @@ const app = new Vue({
return message return message
} }
}, },
setLzManual() {
app.$data.library.songs.sortingOptions = {
"albumName": app.getLz('term.sortBy.album'),
"artistName": app.getLz('term.sortBy.artist'),
"name": app.getLz('term.sortBy.name'),
"genre": app.getLz('term.sortBy.genre'),
"releaseDate": app.getLz('term.sortBy.releaseDate'),
"durationInMillis": app.getLz('term.sortBy.duration')
}
app.$data.library.albums.sortingOptions = {
"albumName": app.getLz('term.sortBy.album'),
"artistName": app.getLz('term.sortBy.artist'),
"name": app.getLz('term.sortBy.name'),
"genre": app.getLz('term.sortBy.genre')
}
app.$data.library.artists.sortingOptions = {
"artistName": app.getLz('term.sortBy.artist'),
"name": app.getLz('term.sortBy.name'),
"genre": app.getLz('term.sortBy.genre'),
"releaseDate": app.getLz('term.sortBy.releaseDate')
}
},
async showSocialListeningTo() { async showSocialListeningTo() {
let contentIds = Object.keys(app.socialBadges.badgeMap) let contentIds = Object.keys(app.socialBadges.badgeMap)
app.showCollection({ data: this.socialBadges.mediaItems }, "Friends Listening To", "albums") app.showCollection({ data: this.socialBadges.mediaItems }, "Friends Listening To", "albums")
@ -504,6 +528,7 @@ const app = new Vue({
async init() { async init() {
let self = this let self = this
this.setLz(this.cfg.general.language) this.setLz(this.cfg.general.language)
this.setLzManual()
clearTimeout(this.hangtimer) clearTimeout(this.hangtimer)
this.mk = MusicKit.getInstance() this.mk = MusicKit.getInstance()
let needsReload = (typeof localStorage["music.ampwebplay.media-user-token"] == "undefined") let needsReload = (typeof localStorage["music.ampwebplay.media-user-token"] == "undefined")
@ -1710,7 +1735,7 @@ const app = new Vue({
} }
this.library.songs.downloadState = 1 this.library.songs.downloadState = 1
this.library.downloadNotification.show = true this.library.downloadNotification.show = true
this.library.downloadNotification.message = "Updating library songs..." this.library.downloadNotification.message = app.getLz('notification.updatingLibrarySongs')
function downloadChunk() { function downloadChunk() {
const params = { const params = {
@ -1791,7 +1816,7 @@ const app = new Vue({
} }
this.library.albums.downloadState = 1 this.library.albums.downloadState = 1
this.library.downloadNotification.show = true this.library.downloadNotification.show = true
this.library.downloadNotification.message = "Updating library albums..." this.library.downloadNotification.message = app.getLz('notification.updatingLibraryAlbums')
function downloadChunk() { function downloadChunk() {
self.library.albums.downloadState = 1 self.library.albums.downloadState = 1
@ -1871,7 +1896,7 @@ const app = new Vue({
} }
this.library.artists.downloadState = 1 this.library.artists.downloadState = 1
this.library.downloadNotification.show = true this.library.downloadNotification.show = true
this.library.downloadNotification.message = "Updating library artists..." this.library.downloadNotification.message = app.getLz('notification.updatingLibraryArtists')
function downloadChunk() { function downloadChunk() {
self.library.artists.downloadState = 1 self.library.artists.downloadState = 1
@ -3372,9 +3397,19 @@ const app = new Vue({
this.webremoteurl = await ipcRenderer.invoke('showQR','') this.webremoteurl = await ipcRenderer.invoke('showQR','')
//this.modals.qrcode = true; //this.modals.qrcode = true;
},
checkMarquee() {
if(isElementOverflowing('#app-main > div.app-chrome > div.app-chrome--center > div > div > div.playback-info > div.song-artist') == true) {
document.getElementsByClassName('song-artist')[0].classList.add('marquee');
document.getElementsByClassName('song-artist')[1].classList.add('marquee-after');
}
if(isElementOverflowing('#app-main > div.app-chrome > div.app-chrome--center > div > div > div.playback-info > div.song-name') == true) {
document.getElementsByClassName('song-name')[0].classList.add('marquee');
document.getElementsByClassName('song-name')[1].classList.add('marquee-after');
}
}
} }
}
}) })
Vue.component('animated-number', { Vue.component('animated-number', {

View file

@ -1112,27 +1112,7 @@ input[type=range].web-slider::-webkit-slider-runnable-track {
} }
.app-chrome .app-chrome-item > .app-playback-controls .song-artist {
font-weight: 400;
font-size: 12px;
text-align: center;
/*height: 1.2em;
line-height: 1.2em;*/
z-index: 1;
max-width: 360px;
.song-artist-normal {
height: inherit;
}
&.song-artist-marquee {
> marquee {
margin-bottom: -3px;
}
}
}
.app-chrome .app-chrome-item > .app-playback-controls .song-progress { .app-chrome .app-chrome-item > .app-playback-controls .song-progress {
@bgColor: transparent; @bgColor: transparent;
@ -1256,7 +1236,7 @@ input[type=range].web-slider::-webkit-slider-runnable-track {
overflow: hidden; overflow: hidden;
} }
.app-chrome .app-chrome-item > .app-playback-controls .playback-info > div { .app-chrome .app-chrome-item > .app-playback-controls .playback-info > .song-progress{
width: 100%; width: 100%;
} }
@ -1267,6 +1247,31 @@ input[type=range].web-slider::-webkit-slider-runnable-track {
display: flex; display: flex;
position: relative; position: relative;
} }
.app-chrome .app-chrome-item > .app-playback-controls .song-artist-album {
font-weight: 400;
font-size: 12px;
text-align: center;
/*height: 1.2em;
line-height: 1.2em;*/
z-index: 1;
align-items: center;
justify-content: center;
width: 80%;
max-width: 340px;
overflow: hidden;
.song-artist-normal {
height: inherit;
}
&.song-artist-marquee {
> marquee {
margin-bottom: -3px;
}
}
}
.display--small { .display--small {
display: none !important; display: none !important;
@ -4570,7 +4575,7 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb {
.queue-col { .queue-col {
width: 60vh; width: 60vh;
height: 50vh; height: 62vh;
.queue-title { .queue-title {
opacity: 0.6; opacity: 0.6;
@ -5163,7 +5168,42 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb {
} }
} }
/* Cider */ // Cider App
.mediaitem-list-item__grid {
overflow-x: overlay;
overflow-y: hidden;
background: rgba(200, 200, 200, 0.05);
border-radius: 10px;
padding: var(--contentInnerPadding);
box-shadow: rgba(0, 0, 0, 0.08) 0px 0px 0px 1px;
height: 300px;
display: flex;
align-items: center;
.grid-body {
display: grid;
grid-auto-flow: column dense;
grid-template-rows: auto auto auto auto;
grid-gap: 0 6px;
padding: 2px 0;
justify-content: left;
width: 0;
}
.cd-mediaitem-list-item {
width: 350px;
height: 60px;
}
&::-webkit-scrollbar {
display: none;
}
&:hover::-webkit-scrollbar {
display: initial;
}
}
.settings-page { .settings-page {
padding:0px; padding:0px;

View file

@ -21,7 +21,7 @@
ref="searchInput" ref="searchInput"
style="width:100%;" style="width:100%;"
spellcheck="false" spellcheck="false"
placeholder="Search..." :placeholder="app.getLz('term.search') + '...'"
v-model="searchQuery" v-model="searchQuery"
@input="search()" @input="search()"
class="search-input"> class="search-input">

View file

@ -121,7 +121,7 @@
"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.length && u.length > 0)? u[0].attributes.url : u.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)}

View file

@ -400,7 +400,7 @@
"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.length && u.length > 0)? u[0].attributes.url : u.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)}

View file

@ -229,7 +229,7 @@
} }
}, },
{ {
"name": "Share", "name": this.$root.getLz('term.share'),
"action": function () { "action": function () {
self.app.copyToClipboard(self.item.attributes.url) self.app.copyToClipboard(self.item.attributes.url)
} }

View file

@ -48,7 +48,7 @@
let self = this let self = this
CiderContextMenu.Create(event, { CiderContextMenu.Create(event, {
items: [{ items: [{
"name": app.getLz('action.removeFromQueue'), "name": $root.getLz('action.removeFromQueue'),
"action": function () { "action": function () {
} }

View file

@ -33,7 +33,7 @@
</draggable> </draggable>
</div> </div>
<div class="queue-footer"> <div class="queue-footer">
<button class="md-btn" style="width:100%;" v-if="queueItems.length > 1" @click="app.mk.clearQueue();updateQueue()">Clear All</button> <button class="md-btn" style="width:100%;" v-if="queueItems.length > 1" @click="app.mk.clearQueue();updateQueue()">{{app.getLz('term.clearAll')}}</button>
</div> </div>
</div> </div>
</script> </script>

View file

@ -105,7 +105,7 @@
let menu = { let menu = {
items: { items: {
"moveToParent": { "moveToParent": {
name: app.getLz('action.moveToTop'), name: this.$root.getLz('action.moveToTop'),
action: () => { action: () => {
let self = this let self = this
this.move(this.item, { this.move(this.item, {
@ -116,7 +116,7 @@
} }
}, },
"rename": { "rename": {
name: app.getLz('action.rename'), name: this.$root.getLz('action.rename'),
action: () => { action: () => {
this.renaming = true this.renaming = true
setTimeout(()=>{ setTimeout(()=>{
@ -126,13 +126,13 @@
} }
}, },
"deleteFromPlaylist": { "deleteFromPlaylist": {
name: app.getLz('action.removeFromLibrary'), name: this.$root.getLz('action.removeFromLibrary'),
action: () => { action: () => {
this.$root.deletePlaylist(playlist_id) this.$root.deletePlaylist(playlist_id)
} }
}, },
"addToFavorites": { "addToFavorites": {
name: app.getLz('action.addToFavorites'), name: this.$root.getLz('action.addToFavorites'),
disabled: true, disabled: true,
hidden: true, hidden: true,
action: () => { action: () => {

View file

@ -96,7 +96,7 @@
style="display: inline-block"></div> style="display: inline-block"></div>
</div> </div>
<!-- :class="[isElementOverflowing('#app-main > div.app-chrome > div.app-chrome--center > div > div > div.playback-info > div.song-artist') ? 'marquee' : '']" --> <!-- :class="[isElementOverflowing('#app-main > div.app-chrome > div.app-chrome--center > div > div > div.playback-info > div.song-artist') ? 'marquee' : '']" -->
<div class="song-artist" <div class="song-artist-album"
style="display: inline-block; -webkit-box-orient: horizontal; white-space: nowrap;"> style="display: inline-block; -webkit-box-orient: horizontal; white-space: nowrap;">
<div class="item-navigate song-artist" style="display: inline-block" <div class="item-navigate song-artist" style="display: inline-block"
@click="getNowPlayingItemDetailed(`artist`)"> @click="getNowPlayingItemDetailed(`artist`)">
@ -188,7 +188,7 @@
@focus="search.showHints = true" @focus="search.showHints = true"
@blur="setTimeout(()=>{search.showHints = false}, 300)" @blur="setTimeout(()=>{search.showHints = false}, 300)"
v-on:keyup.enter="searchQuery();search.showHints = false" @change="showSearch();" v-on:keyup.enter="searchQuery();search.showHints = false" @change="showSearch();"
@input="getSearchHints()" placeholder="Search..." v-model="search.term" @input="getSearchHints()" :placeholder="$root.getLz('term.search') + '...'" v-model="search.term"
ref="searchInput" class="search-input"> ref="searchInput" class="search-input">
</div> </div>
</div> </div>
@ -247,7 +247,7 @@
<button class="usermenu-item" @click="toggleHideUserInfo()"> <button class="usermenu-item" @click="toggleHideUserInfo()">
<div class="row nopadding"> <div class="row nopadding">
<div class="col nopadding"> <div class="col nopadding">
Show Personal Info {{$root.getLz('settings.option.visual.showPersonalInfo')}}
</div> </div>
<div class="col-auto nopadding" v-if="!chrome.hideUserInfo"> <div class="col-auto nopadding" v-if="!chrome.hideUserInfo">
✔️ ✔️
@ -257,7 +257,7 @@
<button class="usermenu-item" @click="mk.privateEnabled = !mk.privateEnabled"> <button class="usermenu-item" @click="mk.privateEnabled = !mk.privateEnabled">
<div class="row nopadding"> <div class="row nopadding">
<div class="col nopadding"> <div class="col nopadding">
Private Session {{$root.getLz('term.privateSession')}}
</div> </div>
<div class="col-auto nopadding" v-if="mk.privateEnabled"> <div class="col-auto nopadding" v-if="mk.privateEnabled">
✔️ ✔️
@ -266,22 +266,22 @@
</button> </button>
<button class="usermenu-item" v-if="cfg.advanced.AudioContext && cfg.audio.spatial" <button class="usermenu-item" v-if="cfg.advanced.AudioContext && cfg.audio.spatial"
@click="modals.spatialProperties = true"> @click="modals.spatialProperties = true">
Spatialized Audio Settings {{$root.getLz('term.spacializedAudioSetting')}}
</button> </button>
<button class="usermenu-item" @click="appRoute('apple-account-settings')"> <button class="usermenu-item" @click="appRoute('apple-account-settings')">
Account Settings {{$root.getLz('term.accountSettings')}}
</button> </button>
<button class="usermenu-item" @click="appRoute('about')"> <button class="usermenu-item" @click="appRoute('about')">
About {{$root.getLz('term.about')}}
</button> </button>
<button class="usermenu-item" @click="window.open('https://discord.gg/applemusic')"> <button class="usermenu-item" @click="window.open('https://discord.gg/applemusic')">
Discord {{$root.getLz('term.discord')}}
</button> </button>
<button class="usermenu-item" @click="appRoute('settings')"> <button class="usermenu-item" @click="appRoute('settings')">
Settings {{$root.getLz('term.settings')}}
</button> </button>
<button class="usermenu-item" @click="unauthorize()"> <button class="usermenu-item" @click="unauthorize()">
Sign Out {{$root.getLz('term.logout')}}
</button> </button>
</div> </div>
</div> </div>
@ -466,7 +466,7 @@
<div><input type="text" v-model="quickPlayQuery"> <div><input type="text" v-model="quickPlayQuery">
<button @click="quickPlay(quickPlayQuery)">Play</button> <button @click="quickPlay(quickPlayQuery)">Play</button>
</div> </div>
<h1 class="header-text">Browse</h1> <h1 class="header-text">{{$root.getLz('term.browse')}}</h1>
<p> <p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod, urna eu Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod, urna eu
tincidunt tincidunt
@ -485,7 +485,7 @@
</div> </div>
<br> <br>
<br> <br>
<h1 class="header-text">Listen Now</h1> <h1 class="header-text">{{$root.getLz('term.listenNow')}}</h1>
<div class="winbox"> <div class="winbox">
<div class="fancy">990kbps</div> <div class="fancy">990kbps</div>
<div class=""> <div class="">
@ -509,8 +509,8 @@
<transition v-on:enter="getRadioStations()" name="wpfade"> <transition v-on:enter="getRadioStations()" name="wpfade">
<template v-if="page == 'radio'" @created="console.log('radio')"> <template v-if="page == 'radio'" @created="console.log('radio')">
<div class="content-inner"> <div class="content-inner">
<h1 class="header-text">Radio</h1> <h1 class="header-text">{{$root.getLz('term.radio')}}</h1>
<h3>Recent Stations</h3> <h3>{{$root.getLz('term.recentStations')}}</h3>
<mediaitem-square :item="item" v-for="item in radio.personal"></mediaitem-square> <mediaitem-square :item="item" v-for="item in radio.personal"></mediaitem-square>
</div> </div>
</template> </template>

View file

@ -72,23 +72,18 @@
<div class="col" style="padding:0;"> <div class="col" style="padding:0;">
<h3>{{app.getLz('term.topSongs')}}</h3> <h3>{{app.getLz('term.topSongs')}}</h3>
</div> </div>
<div class="col-auto flex-center" v-if="data.views['top-songs'].data.length >= 10" style="padding:0;"> <div class="col-auto flex-center" v-if="data.views['top-songs'].data.length >= 16" style="padding:0;">
<button class="cd-btn-seeall" @click="app.showArtistView(data.id, data.attributes.name + ' - Top Songs', 'top-songs')">{{app.getLz('term.seeAll')}}</button> <button class="cd-btn-seeall" @click="app.showArtistView(data.id, data.attributes.name + ' - Top Songs', 'top-songs')">{{app.getLz('term.seeAll')}}</button>
</div> </div>
</div> </div>
<div class="mediaitem-list-item__grid">
<div class="grid-body">
<mediaitem-list-item <mediaitem-list-item
v-for="(song, index) in data.views['top-songs'].data.limit(topSongsExpanded ? 10 : 5)" v-for="(song, index) in data.views['top-songs'].data.limit(16)"
:index="index" :index="index"
:item="song"></mediaitem-list-item> :item="song"></mediaitem-list-item>
<button class="showmoreless" </div>
@click="topSongsExpanded = !topSongsExpanded"> </div>
<template v-if="!topSongsExpanded">
{{app.getLz('term.showMore')}}
</template>
<template v-else>
{{app.getLz('term.showLess')}}
</template>
</button>
</div> </div>
</div> </div>
</div> </div>

View file

@ -48,7 +48,7 @@
<div v-else-if="data.attributes.description.standard" class="content" v-html="data.attributes.description.standard"></div> <div v-else-if="data.attributes.description.standard" class="content" v-html="data.attributes.description.standard"></div>
<button v-if="data.attributes.description.short" class="more-btn" <button v-if="data.attributes.description.short" class="more-btn"
@click="editorialNotesExpanded = !editorialNotesExpanded"> @click="editorialNotesExpanded = !editorialNotesExpanded">
{{app.getLz('term.more')}} {{app.getLz('term.showMore')}}
</button> </button>
</div> </div>
</div> </div>
@ -57,7 +57,7 @@
<div class="playlist-desc-expanded"> <div class="playlist-desc-expanded">
<div class="content" <div class="content"
v-html="((data.attributes.editorialNotes) ? (data.attributes.editorialNotes.standard ?? (data.attributes.editorialNotes.short ?? '') ) : (data.attributes.description ? (data.attributes.description.standard ?? (data.attributes.description.short ?? '')) : ''))"></div> v-html="((data.attributes.editorialNotes) ? (data.attributes.editorialNotes.standard ?? (data.attributes.editorialNotes.short ?? '') ) : (data.attributes.description ? (data.attributes.description.standard ?? (data.attributes.description.short ?? '')) : ''))"></div>
<button class="more-btn" @click="editorialNotesExpanded = !editorialNotesExpanded">{{app.getLz('term.less')}} <button class="more-btn" @click="editorialNotesExpanded = !editorialNotesExpanded">{{app.getLz('term.showLess')}}
</button> </button>
</div> </div>
</template> </template>
@ -388,7 +388,7 @@
app.showMenuPanel({ app.showMenuPanel({
items: { items: {
"share": { "share": {
name: "Share", name: app.getLz('term.share'),
icon: "./assets/feather/share.svg", icon: "./assets/feather/share.svg",
action: () => { action: () => {
let route = "" let route = ""

View file

@ -15,7 +15,7 @@
</template> </template>
</template> </template>
<button v-if="triggerEnabled" style="opacity:0;height: 32px;" <button v-if="triggerEnabled" style="opacity:0;height: 32px;"
v-observe-visibility="{callback: visibilityChanged}">{{app.getLz('term.showMore')}} v-observe-visibility="{callback: visibilityChanged}">{{this.app.getLz('term.showMore')}}
</button> </button>
</div> </div>
<transition name="fabfade"> <transition name="fabfade">

View file

@ -3,7 +3,7 @@
<div v-if="page == 'main'"> <div v-if="page == 'main'">
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<h3>Recently Played</h3> <h3>{{app.getLz('home.recentlyPlayed')}}</h3>
<div class="well artistfeed-well"> <div class="well artistfeed-well">
<template v-if="isSectionReady('recentlyPlayed')"> <template v-if="isSectionReady('recentlyPlayed')">
<mediaitem-list-item v-for="item in recentlyPlayed.limit(6)" <mediaitem-list-item v-for="item in recentlyPlayed.limit(6)"
@ -15,7 +15,7 @@
<div class="col"> <div class="col">
<div class="row nopadding"> <div class="row nopadding">
<div class="col nopadding"> <div class="col nopadding">
<h3>Your Artists Feed</h3> <h3>{{app.getLz('home.artistsFeed')}}</h3>
</div> </div>
<div class="col-auto nopadding flex-center"> <div class="col-auto nopadding flex-center">
<button class="cd-btn-seeall" @click="app.appRoute('artist-feed')">{{app.getLz('term.seeAll')}}</button> <button class="cd-btn-seeall" @click="app.appRoute('artist-feed')">{{app.getLz('term.seeAll')}}</button>
@ -26,7 +26,7 @@
<mediaitem-list-item v-for="item in artistFeed.limit(6)" :item="item"></mediaitem-list-item> <mediaitem-list-item v-for="item in artistFeed.limit(6)" :item="item"></mediaitem-list-item>
</template> </template>
<div class="spinner" v-else-if="followedArtists.length > 0"></div> <div class="spinner" v-else-if="followedArtists.length > 0"></div>
<div class="no-artist" v-else> Follow some artists first and their latest releases will be here</div> <div class="no-artist" v-else> {{app.getLz('home.artistsFeed.noArtist')}}</div>
</div> </div>
</div> </div>
</div> </div>
@ -44,7 +44,7 @@
<!-- </div>--> <!-- </div>-->
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<h3>Made For You</h3> <h3>{{app.getLz('home.madeForYou')}}</h3>
<div class="well"> <div class="well">
<template v-if="isSectionReady('madeForYou')"> <template v-if="isSectionReady('madeForYou')">
<mediaitem-square kind="small" v-for="item in madeForYou" :item="item"></mediaitem-square> <mediaitem-square kind="small" v-for="item in madeForYou" :item="item"></mediaitem-square>
@ -57,7 +57,7 @@
<div class="col"> <div class="col">
<div class="row"> <div class="row">
<div class="col nopadding"> <div class="col nopadding">
<h3>Friends Listening To</h3> <h3>{{app.getLz('home.friendsListeningTo')}}</h3>
</div> </div>
<div class="col-auto nopadding flex-center"> <div class="col-auto nopadding flex-center">
<button class="cd-btn-seeall" @click="app.showSocialListeningTo()">{{app.getLz('term.seeAll')}}</button> <button class="cd-btn-seeall" @click="app.showSocialListeningTo()">{{app.getLz('term.seeAll')}}</button>

View file

@ -7,7 +7,7 @@
<input type="search" <input type="search"
style="width:100%;" style="width:100%;"
spellcheck="false" spellcheck="false"
placeholder="Search..." :placeholder="$root.getLz('term.search') + '...'"
@change="searchPodcasts();librarySearch()" @change="searchPodcasts();librarySearch()"
v-model="search.term" class="search-input"> v-model="search.term" class="search-input">
</div> </div>
@ -59,8 +59,8 @@
<h3>Episodes</h3> <h3>Episodes</h3>
</div> </div>
<div v-if="this.search.results.length == 0 && podcastSelected.id == -1" class="podcast-no-search-results"> <div v-if="this.search.results.length == 0 && podcastSelected.id == -1" class="podcast-no-search-results">
<h3>No Results</h3> <h3>{{$root.getLz('error.noResults')}}</h3>
<p>Try a new search.</p> <p>{{$root.getLz('error.noResults.description')}}</p>
</div> </div>
<podcast-episode :isselected="selected.id == episode.id" @dblclick.native="playEpisode(episode)" @click.native="selectEpisode(episode)" :item="episode" <podcast-episode :isselected="selected.id == episode.id" @dblclick.native="playEpisode(episode)" @click.native="selectEpisode(episode)" :item="episode"
v-for="episode in episodes"></podcast-episode> v-for="episode in episodes"></podcast-episode>

View file

@ -9,8 +9,8 @@
</template> </template>
</div> </div>
<div v-else style="text-align: center"> <div v-else style="text-align: center">
<h3>No Results</h3> <h3>{{app.getLz('error.noResults')}}</h3>
<p>Try a new search.</p> <p>{{app.getLz('error.noResults.description')}}</p>
</div> </div>
<div class="col" v-if="search.results.song"> <div class="col" v-if="search.results.song">
<div class="row"> <div class="row">
@ -19,13 +19,15 @@
</div> </div>
<div class="col-auto flex-center" <div class="col-auto flex-center"
@click="app.showSearchView(app.search.term, 'song', app.friendlyTypes('song'))" @click="app.showSearchView(app.search.term, 'song', app.friendlyTypes('song'))"
v-if="search.results.song.data.length >= 6"> v-if="search.results.song.data.length >= 12">
<button class="cd-btn-seeall">{{app.getLz('term.seeAll')}}</button> <button class="cd-btn-seeall">{{app.getLz('term.seeAll')}}</button>
</div> </div>
</div> </div>
<div> <div class="mediaitem-list-item__grid">
<div class="grid-body">
<mediaitem-list-item :item="item" :index="index" <mediaitem-list-item :item="item" :index="index"
v-for="(item, index) in search.results.song.data.limit(6)"></mediaitem-list-item> v-for="(item, index) in search.results.song.data.limit(12)"></mediaitem-list-item>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -106,24 +108,25 @@
data: function () { data: function () {
return { return {
app: this.$root, app: this.$root,
categoriesView : [], categoriesView: [],
categoriesReady : false, categoriesReady: false,
} }
}, },
methods: { methods: {
getTopResult() { getTopResult() {
try { try {
return this.search.results[this.search.results.meta.results.order[0]]["data"][0] return this.search.results[this.search.results.meta.results.order[0]]["data"][0]
} catch( error ) { } catch (error) {
return false return false
} }
}, },
async getCategories() { async getCategories() {
if(this.categoriesView != [] && this.categoriesView.length > 0) {this.categoriesReady = true; return await true;} else { if (this.categoriesView != [] && this.categoriesView.length > 0) { this.categoriesReady = true; return await true; } else {
let response = await this.app.mk.api.v3.music(`/v1/recommendations/${this.app.mk.storefrontId}?timezone=${encodeURIComponent(this.app.formatTimezoneOffset())}&name=search-landing&platform=web&extend=editorialArtwork&art%5Burl%5D=f%2Cc&types=editorial-items%2Capple-curators%2Cactivities`); let response = await this.app.mk.api.v3.music(`/v1/recommendations/${this.app.mk.storefrontId}?timezone=${encodeURIComponent(this.app.formatTimezoneOffset())}&name=search-landing&platform=web&extend=editorialArtwork&art%5Burl%5D=f%2Cc&types=editorial-items%2Capple-curators%2Cactivities`);
this.categoriesView = response.data.data; this.categoriesView = response.data.data;
this.categoriesReady = true; this.categoriesReady = true;
return await true;} return await true;
}
} }
} }
}) })

View file

@ -2,25 +2,25 @@
<div class="content-inner settings-page"> <div class="content-inner settings-page">
<div class="md-option-container"> <div class="md-option-container">
<div class="md-option-header"> <div class="md-option-header">
<span>Audio</span> <span>{{$root.getLz('settings.header.audio')}}</span>
</div> </div>
<div class="settings-option-body"> <div class="settings-option-body">
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
Audio Quality {{$root.getLz('settings.option.audio.quality')}}
</div> </div>
<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" v-on:change="changeAudioQuality"> <select class="md-select" style="width:180px;" v-model="app.cfg.audio.quality" v-on:change="changeAudioQuality">
<!-- // <option value="990">Extreme</option> --> <!-- // <option value="990">Extreme</option> -->
<option value="256">High</option> <option value="256">{{$root.getLz('settings.header.audio.quality.high')}}</option>
<option value="64">Low</option> <option value="64">{{$root.getLz('settings.header.audio.quality.low')}}</option>
<option value="auto">Auto</option> <option value="auto">{{$root.getLz('settings.header.audio.quality.auto')}}</option>
</select> </select>
</div> </div>
</div> </div>
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
Seamless Audio Transitions {{$root.getLz('settings.option.audio.seamlessTransition')}}
</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.audio.seamless_audio" switch/> <input type="checkbox" v-model="app.cfg.audio.seamless_audio" switch/>
@ -28,9 +28,9 @@
</div> </div>
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
Enable Advanced Functionality {{$root.getLz('settings.option.audio.enableAdvancedFunctionality')}}
<br> <br>
<small>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.</small> <small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.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.AudioContext" v-on:change="toggleAudioContext" switch/> <input type="checkbox" v-model="app.cfg.advanced.AudioContext" v-on:change="toggleAudioContext" switch/>
@ -38,7 +38,9 @@
</div> </div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext"> <div class="md-option-line" v-show="app.cfg.advanced.AudioContext">
<div class="md-option-segment" > <div class="md-option-segment" >
Audio Normalization {{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioNormalization')}}
<br>
<small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioNormalization.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.audio.normalization" v-on:change="toggleNormalization" switch/> <input type="checkbox" v-model="app.cfg.audio.normalization" v-on:change="toggleNormalization" switch/>
@ -46,9 +48,9 @@
</div> </div>
<div class="md-option-line" v-show="app.cfg.advanced.AudioContext"> <div class="md-option-line" v-show="app.cfg.advanced.AudioContext">
<div class="md-option-segment" > <div class="md-option-segment" >
Audio Spatialization {{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioSpatialization')}}
<br> <br>
<small>Spatialize audio and make audio more 3-dimensional (note: This is not Dolby Atmos)</small> <small>{{$root.getLz('settings.option.audio.enableAdvancedFunctionality.audioSpatialization.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.audio.spatial" v-on:change="toggleSpatial" switch/> <input type="checkbox" v-model="app.cfg.audio.spatial" v-on:change="toggleSpatial" switch/>
@ -56,49 +58,49 @@
</div> </div>
</div> </div>
<div class="md-option-header"> <div class="md-option-header">
<span>Visual</span> <span>{{$root.getLz('settings.header.visual')}}</span>
</div> </div>
<div class="settings-option-body"> <div class="settings-option-body">
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
Window Background Style {{$root.getLz('settings.option.visual.windowBackgroundStyle')}}
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<select class="md-select" @change="$root.getNowPlayingArtworkBG(undefined, true)" v-model="app.cfg.visual.window_background_style"> <select class="md-select" @change="$root.getNowPlayingArtworkBG(undefined, true)" v-model="app.cfg.visual.window_background_style">
<option value="none">None</option> <option value="none">{{$root.getLz('settings.header.visual.windowBackgroundStyle.none')}}</option>
<option value="artwork">Artwork</option> <option value="artwork">{{$root.getLz('settings.header.visual.windowBackgroundStyle.artwork')}}</option>
</select> </select>
</div> </div>
</div> </div>
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
Animated Artwork {{$root.getLz('settings.option.visual.animatedArtwork')}}
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<select class="md-select" v-model="app.cfg.visual.animated_artwork"> <select class="md-select" v-model="app.cfg.visual.animated_artwork">
<option value="always">Always</option> <option value="always">{{$root.getLz('settings.header.visual.animatedArtwork.always')}}</option>
<option value="limited">Limit to pages and special entries</option> <option value="limited">{{$root.getLz('settings.header.visual.animatedArtwork.limited')}}</option>
<option value="disabled">Disable Everywhere</option> <option value="disabled">{{$root.getLz('settings.header.visual.animatedArtwork.disable')}}</option>
</select> </select>
</div> </div>
</div> </div>
<div class="md-option-line" v-if="app.cfg.visual.animated_artwork == 'always' || app.cfg.visual.animated_artwork == 'limited'"> <div class="md-option-line" v-if="app.cfg.visual.animated_artwork == 'always' || app.cfg.visual.animated_artwork == 'limited'">
<div class="md-option-segment"> <div class="md-option-segment">
Animated Artwork Quality {{$root.getLz('settings.option.visual.animatedArtworkQuality')}}
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<select class="md-select" v-model="app.cfg.visual.animated_artwork_qualityLevel"> <select class="md-select" v-model="app.cfg.visual.animated_artwork_qualityLevel">
<option value="0">Low</option> <option value="0">{{$root.getLz('settings.header.visual.animatedArtworkQuality.low')}}</option>
<option value="1">Medium</option> <option value="1">{{$root.getLz('settings.header.visual.animatedArtworkQuality.medium')}}</option>
<option value="2">High</option> <option value="2">{{$root.getLz('settings.header.visual.animatedArtworkQuality.high')}}</option>
<option value="3">Very High</option> <option value="3">{{$root.getLz('settings.header.visual.animatedArtworkQuality.veryHigh')}}</option>
<option value="4">Extreme</option> <option value="4">{{$root.getLz('settings.header.visual.animatedArtworkQuality.extreme')}}</option>
</select> </select>
</div> </div>
</div> </div>
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
Animated Window Background {{$root.getLz('settings.option.visual.animatedWindowBackground')}}
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<input type="checkbox" switch v-model="app.cfg.visual.bg_artwork_rotation"/> <input type="checkbox" switch v-model="app.cfg.visual.bg_artwork_rotation"/>
@ -106,20 +108,20 @@
</div> </div>
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
Hardware Acceleration<br> {{$root.getLz('settings.option.visual.hardwareAcceleration')}}<br>
<small>(Requires relaunch)</small> <small>({{$root.getLz('settings.option.visual.hardwareAcceleration.description')}})</small>
</div> </div>
<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.visual.hw_acceleration" > <select class="md-select" style="width:180px;" v-model="app.cfg.visual.hw_acceleration" >
<option value="default">Default</option> <option value="default">{{$root.getLz('settings.header.visual.hardwareAcceleration.default')}}</option>
<option value="webgpu">WebGPU</option> <option value="webgpu">{{$root.getLz('settings.header.visual.hardwareAcceleration.webGPU')}}</option>
<option value="disabled">Disabled</option> <option value="disabled">{{$root.getLz('term.disabled')}}</option>
</select> </select>
</div> </div>
</div> </div>
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
Show Personal Info {{$root.getLz('settings.option.visual.showPersonalInfo')}}
</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.visual.showuserinfo" v-on:change="toggleUserInfo" switch/> <input type="checkbox" v-model="app.cfg.visual.showuserinfo" v-on:change="toggleUserInfo" switch/>
@ -128,12 +130,12 @@
</div> </div>
<div class="md-option-header"> <div class="md-option-header">
<span>Lyrics</span> <span>{{$root.getLz('settings.header.lyrics')}}</span>
</div> </div>
<div class="settings-option-body"> <div class="settings-option-body">
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
Enable Musixmatch Lyrics {{$root.getLz('settings.option.lyrics.enableMusixmatch')}}
</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.lyrics.enable_mxm" switch/> <input type="checkbox" v-model="app.cfg.lyrics.enable_mxm" switch/>
@ -141,7 +143,7 @@
</div> </div>
<div class="md-option-line" v-if="app.cfg.lyrics.enable_mxm"> <div class="md-option-line" v-if="app.cfg.lyrics.enable_mxm">
<div class="md-option-segment"> <div class="md-option-segment">
Enable Karaoke Mode (Musixmatch only) {{$root.getLz('settings.option.lyrics.enableMusixmatchKaraoke')}}
</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.lyrics.mxm_karaoke" switch/> <input type="checkbox" v-model="app.cfg.lyrics.mxm_karaoke" switch/>
@ -149,7 +151,7 @@
</div> </div>
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
Musixmatch Translation Preferred Language {{$root.getLz('settings.option.lyrics.musixmatchPreferredLanguage')}}
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<select class="md-select" v-model="app.cfg.lyrics.mxm_language"> <select class="md-select" v-model="app.cfg.lyrics.mxm_language">
@ -424,7 +426,7 @@
</div> </div>
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
Enable Youtube Lyrics for Music Videos {{$root.getLz('settings.option.lyrics.enableYoutubeLyrics')}}
</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.lyrics.enable_yt" switch/> <input type="checkbox" v-model="app.cfg.lyrics.enable_yt" switch/>
@ -432,40 +434,40 @@
</div> </div>
</div> </div>
<div class="md-option-header"> <div class="md-option-header">
<span>Connectivity</span> <span>{{$root.getLz('settings.header.connectivity')}}</span>
</div> </div>
<div class="settings-option-body"> <div class="settings-option-body">
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
Discord Rich Presence {{$root.getLz('settings.option.connectivity.discordRPC')}}
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<select class="md-select" v-model="app.cfg.general.discord_rpc"> <select class="md-select" v-model="app.cfg.general.discord_rpc">
<option value="0">Disabled</option> <option value="0">{{$root.getLz('term.disabled')}}</option>
<option value="1">Display as 'Cider'</option> <option value="1">{{$root.getLz('settings.header.connectivity.discordRPC.cider')}}</option>
<option value="2">Display as 'Apple Music'</option> <option value="2">{{$root.getLz('settings.header.connectivity.discordRPC.appleMusic')}}</option>
</select> </select>
</div> </div>
</div> </div>
<div class="md-option-line" v-show="app.cfg.general.discord_rpc != 0"> <div class="md-option-line" v-show="app.cfg.general.discord_rpc != 0">
<div class="md-option-segment"> <div class="md-option-segment">
Clear Discord RPC on Pause {{$root.getLz('settings.option.connectivity.discordRPC.clearOnPause')}}
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<select class="md-select" v-model="app.cfg.general.discordClearActivityOnPause"> <select class="md-select" v-model="app.cfg.general.discordClearActivityOnPause">
<option value="0">Disabled</option> <option value="0">{{$root.getLz('term.disabled')}}</option>
<option value="1">Enabled</option> <option value="1">{{$root.getLz('term.enabled')}}</option>
</select> </select>
</div> </div>
</div> </div>
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
LastFM Scrobbling {{$root.getLz('settings.option.connectivity.lastfmScrobble')}}
</div> </div>
<div class="md-option-segment md-btn md-option-segment_auto"> <div class="md-option-segment md-btn md-option-segment_auto">
<label class="list-button list-element" id="lfmConnect" ref="lfmConnect" <label class="list-button list-element" id="lfmConnect" ref="lfmConnect"
onclick="app.LastFMAuthenticate()">Connect</label> onclick="app.LastFMAuthenticate()">{{$root.getLz('term.connect')}}</label>
</div> </div>
</div> </div>
<div class="md-option-line" v-show ="app.cfg.lastfm.enabled"> <div class="md-option-line" v-show ="app.cfg.lastfm.enabled">
@ -494,24 +496,24 @@
</div> </div>
</div> </div>
<div class="md-option-header"> <div class="md-option-header">
<span>Experimental</span> <span>{{$root.getLz('settings.header.experimental')}}</span>
</div> </div>
<div class="settings-option-body"> <div class="settings-option-body">
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
Compact UI {{$root.getLz('settings.option.experimental.compactUI')}}
</div> </div>
<div class="md-option-segment md-option-segment_auto" > <div class="md-option-segment md-option-segment_auto" >
<button class="md-btn" :class="{'md-btn-primary': app.cfg.advanced.experiments.includes('compactui')}" @click="app.cfg.advanced.experiments.includes('compactui') ? removeExperiment('compactui') : addExperiment('compactui')"> <button class="md-btn" :class="{'md-btn-primary': app.cfg.advanced.experiments.includes('compactui')}" @click="app.cfg.advanced.experiments.includes('compactui') ? removeExperiment('compactui') : addExperiment('compactui')">
{{app.cfg.advanced.experiments.includes('compactui') ? 'Enabled' : 'Disabled'}} {{app.cfg.advanced.experiments.includes('compactui') ? $root.getLz('term.enabled') : $root.getLz('term.disabled')}}
</button> </button>
</div> </div>
</div> </div>
<div class="md-option-line"> <div class="md-option-line">
<div class="md-option-segment"> <div class="md-option-segment">
Language {{$root.getLz('term.language')}}
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<select class="md-select" @change="$root.setLz('')" v-model="app.cfg.general.language"> <select class="md-select" @change="$root.setLz('')" v-model="app.cfg.general.language">
@ -527,7 +529,7 @@
</div> </div>
<div style="opacity: 0.5; pointer-events: none"> <div style="opacity: 0.5; pointer-events: none">
<div class="md-option-header"> <div class="md-option-header">
<span>Unfinished / Non Functional</span> <span>{{$root.getLz('settings.header.unfinished')}}</span>
</div> </div>
<div class="settings-option-body"> <div class="settings-option-body">
<div class="md-option-line"> <div class="md-option-line">