Merge branch 'ciderapp:develop' into develop

This commit is contained in:
Gabriel Davila 2022-05-11 01:13:10 -03:00 committed by GitHub
commit 0dec029ecd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
37 changed files with 412 additions and 261 deletions

View file

@ -21,11 +21,13 @@
"term.accountSettings": "Account Settings", "term.accountSettings": "Account Settings",
"term.logout": "Wogout", "term.logout": "Wogout",
"term.login": "Wog In", "term.login": "Wog In",
"term.quickNav": "Quick Nyav",
"term.cast": "Cast", "term.cast": "Cast",
"term.about": "About", "term.about": "About",
"term.privateSession": "Pwivate Session", "term.privateSession": "Pwivate Session",
"term.disablePrivateSession": "Disabwe Pwivate Session", "term.disablePrivateSession": "Disabwe Pwivate Session",
"term.queue": "Queue", "term.queue": "Queue",
"term.autoplay": "Autopway",
"term.lyrics": "Wywics", "term.lyrics": "Wywics",
"term.miniplayer": "MinyiPwayew", "term.miniplayer": "MinyiPwayew",
"term.history": "Histowy", "term.history": "Histowy",
@ -46,12 +48,19 @@
"term.createNewPlaylist": "Cweate Nyew Pwaywist", "term.createNewPlaylist": "Cweate Nyew Pwaywist",
"term.createNewPlaylistFolder": "Cweate Nyew Pwaywist Fowdew", "term.createNewPlaylistFolder": "Cweate Nyew Pwaywist Fowdew",
"term.deletePlaylist": "Awe you suwe you want to dewete this pwaywist?", "term.deletePlaylist": "Awe you suwe you want to dewete this pwaywist?",
"term.navigateBack": "Nyavigate back",
"term.navigateForward": "Nyavigate fowwawd",
"term.play": "Pway", "term.play": "Pway",
"term.pause": "Pause", "term.pause": "Pause",
"term.previous": "Pwevious", "term.previous": "Pwevious",
"term.next": "Nyext", "term.next": "Nyext",
"term.shuffle": "Shuffwe", "term.shuffle": "Shuffwe",
"term.enableShuffle": "Enyabwe shuffwe",
"term.disableShuffle": "Disabwe shuffwe",
"term.repeat": "Wepeat", "term.repeat": "Wepeat",
"term.enableRepeatOne": "Enyabwe wepeat onye",
"term.disableRepeatOne": "Disabwe wepeat onye",
"term.disableRepeat": "Disabwe wepeat",
"term.volume": "Vowume", "term.volume": "Vowume",
"term.mute": "Mute", "term.mute": "Mute",
"term.unmute": "Unmute", "term.unmute": "Unmute",
@ -254,6 +263,7 @@
"action.newpreset": "Nyew Pweset...", "action.newpreset": "Nyew Pweset...",
"action.deletepreset": "Dewete Pweset", "action.deletepreset": "Dewete Pweset",
"action.open": "Open", "action.open": "Open",
"action.close": "Cwose",
"action.relaunch.confirm": "Do you want to wewaunch Cidew?", "action.relaunch.confirm": "Do you want to wewaunch Cidew?",
"action.cast.chromecast": "Chwomecast", "action.cast.chromecast": "Chwomecast",
"action.cast.todevices": "Cast to Devices", "action.cast.todevices": "Cast to Devices",
@ -264,6 +274,43 @@
"action.cast.scanning": "Scannying...", "action.cast.scanning": "Scannying...",
"action.createNew": "Cweate Nyew...", "action.createNew": "Cweate Nyew...",
"action.openArtworkInBrowser": "Open awtwowk in bwowsew", "action.openArtworkInBrowser": "Open awtwowk in bwowsew",
"action.scrollToTop": "Scwoww to top",
"menubar.options.about": "About",
"menubar.options.settings": "Settings",
"menubar.options.quit": "Quit Cidew",
"menubar.options.view": "View ",
"menubar.options.reload": "Wewoad",
"menubar.options.forcereload": "Fowce Wewoad",
"menubar.options.toggledevtools": "Toggwe Devewopew Toows",
"menubar.options.window": "Window",
"menubar.options.minimize": "Minyimize",
"menubar.options.toggleprivate": "Toggwe Pwivate Session",
"menubar.options.webremote": "Web Wemote",
"menubar.options.audio": "Audio Settings",
"menubar.options.plugins": "Pwu-gins Menyu",
"menubar.options.controls": "Contwows",
"menubar.options.next": "Nyext",
"menubar.options.playpause": "Pway/Pause",
"menubar.options.previous": "Pwevious",
"menubar.options.volumeup": "Vowume Up",
"menubar.options.volumedown": "Vowume Down",
"menubar.options.browse": "Bwowse",
"menubar.options.artists": "Awtists",
"menubar.options.search": "Seawch",
"menubar.options.albums": "Awbums",
"menubar.options.cast": "Cast To Devices",
"menubar.options.account": "Account",
"menubar.options.accountsettings": "Account Settings",
"menubar.options.signout": "Sign Out",
"menubar.options.support": "Suppowt",
"menubar.options.discord": "Discowd",
"menubar.options.github": "GitHub Wiki",
"menubar.options.report": "Wepowt a...",
"menubar.options.bug": "Bug",
"menubar.options.feature": "Featuwe Wequest",
"menubar.options.trans": "Twanswation Wepowt/Wequest",
"menubar.options.license": "View Wicense",
"menubar.options.conf": "Open Configuwation Fiwe in Editow",
"settings.header.general": "Genyewaw", "settings.header.general": "Genyewaw",
"settings.header.general.description": "Adjust the genyewaw settings fow Cidew.", "settings.header.general.description": "Adjust the genyewaw settings fow Cidew.",
"settings.option.general.language": "Wanguage", "settings.option.general.language": "Wanguage",
@ -330,6 +377,7 @@
"settings.option.audio.audioLab.description": "An assowtment of in-house devewoped audio effects fow Cidew.", "settings.option.audio.audioLab.description": "An assowtment of in-house devewoped audio effects fow Cidew.",
"settings.option.audio.audioLab.subheader": "Designyed by Cidew Acoustic Technyowogies in Cawifownyia", "settings.option.audio.audioLab.subheader": "Designyed by Cidew Acoustic Technyowogies in Cawifownyia",
"settings.warn.audioLab.withoutAF": "AudioContext (Advanced Functionyawity) is wequiwed to enyabwe Cidew Audio Wabowatowy.", "settings.warn.audioLab.withoutAF": "AudioContext (Advanced Functionyawity) is wequiwed to enyabwe Cidew Audio Wabowatowy.",
"settings.warn.enableAdvancedFunctionality": "AudioContext (Advanced Functionyawity) is wequiwed to enyabwe this featuwe.",
"settings.option.audio.enableAdvancedFunctionality.analogWarmth": "Anyawog Wawmth", "settings.option.audio.enableAdvancedFunctionality.analogWarmth": "Anyawog Wawmth",
"settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "Simuwates the anyawog wawmth modewwed aftew the Kowg Nyutube 6P1", "settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "Simuwates the anyawog wawmth modewwed aftew the Kowg Nyutube 6P1",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Anyawog Wawmth intensity", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Anyawog Wawmth intensity",
@ -390,6 +438,13 @@
"settings.header.visual.theme.github.page": "Themes fwom GitHub", "settings.header.visual.theme.github.page": "Themes fwom GitHub",
"settings.option.visual.theme.github.install.confirm": "Awe you suwe you want to instaww {{ repo }}?", "settings.option.visual.theme.github.install.confirm": "Awe you suwe you want to instaww {{ repo }}?",
"settings.prompt.visual.theme.github.URL": "Entew the UWW of the theme you want to instaww", "settings.prompt.visual.theme.github.URL": "Entew the UWW of the theme you want to instaww",
"settings.prompt.visual.theme.uninstallTheme": "Awe you suwe you want to unyinstaww {{ theme }}?",
"settings.option.visual.theme.checkForUpdates": "Check fow updates",
"settings.option.visual.theme.manageStyles": "Manyage Stywes",
"settings.option.visual.theme.uninstall": "Unyinstaww",
"settings.option.visual.theme.viewInfo": "View Info",
"settings.option.visual.theme.github.available": "Avaiwabwe",
"settings.option.visual.theme.github.applied": "Appwied",
"settings.notyf.visual.theme.install.success": "Theme instawwed successfuwwy", "settings.notyf.visual.theme.install.success": "Theme instawwed successfuwwy",
"settings.notyf.visual.theme.install.error": "Theme instawwation faiwed", "settings.notyf.visual.theme.install.error": "Theme instawwation faiwed",
"settings.header.visual.plugin": "Pwugin", "settings.header.visual.plugin": "Pwugin",
@ -426,6 +481,7 @@
"settings.option.connectivity.discordRPC.clientName": "Cwient Nyame", "settings.option.connectivity.discordRPC.clientName": "Cwient Nyame",
"settings.option.connectivity.discordRPC.clearOnPause": "Cweaw Discowd Wich Pwesence on Pause", "settings.option.connectivity.discordRPC.clearOnPause": "Cweaw Discowd Wich Pwesence on Pause",
"settings.option.connectivity.discordRPC.hideButtons": "Hide buttons on Discowd Wich Pwesence", "settings.option.connectivity.discordRPC.hideButtons": "Hide buttons on Discowd Wich Pwesence",
"settings.option.connectivity.discordRPC.hideTimestamp": "Hide timestamp on Discowd Wich Pwesence",
"settings.option.connectivity.discordRPC.detailsFormat": "Detaiws Fowmat", "settings.option.connectivity.discordRPC.detailsFormat": "Detaiws Fowmat",
"settings.option.connectivity.discordRPC.stateFormat": "State Fowmat", "settings.option.connectivity.discordRPC.stateFormat": "State Fowmat",
"settings.option.connectivity.lastfmScrobble": "Wast.fm Scwobbwing", "settings.option.connectivity.lastfmScrobble": "Wast.fm Scwobbwing",

View file

@ -21,11 +21,13 @@
"term.accountSettings": "Account Settings", "term.accountSettings": "Account Settings",
"term.logout": "Logout", "term.logout": "Logout",
"term.login": "Log In", "term.login": "Log In",
"term.quickNav": "Quick Nav",
"term.cast": "Cast", "term.cast": "Cast",
"term.about": "About", "term.about": "About",
"term.privateSession": "Private Session", "term.privateSession": "Private Session",
"term.disablePrivateSession": "Disable Private Session", "term.disablePrivateSession": "Disable Private Session",
"term.queue": "Queue", "term.queue": "Queue",
"term.autoplay": "Autoplay",
"term.lyrics": "Lyrics", "term.lyrics": "Lyrics",
"term.miniplayer": "MiniPlayer", "term.miniplayer": "MiniPlayer",
"term.history": "History", "term.history": "History",
@ -46,12 +48,19 @@
"term.createNewPlaylist": "Create New Playlist", "term.createNewPlaylist": "Create New Playlist",
"term.createNewPlaylistFolder": "Create New Playlist Folder", "term.createNewPlaylistFolder": "Create New Playlist Folder",
"term.deletePlaylist": "Are you sure you want to delete this playlist?", "term.deletePlaylist": "Are you sure you want to delete this playlist?",
"term.navigateBack": "Navigate back",
"term.navigateForward": "Navigate forward",
"term.play": "Play", "term.play": "Play",
"term.pause": "Pause", "term.pause": "Pause",
"term.previous": "Previous", "term.previous": "Previous",
"term.next": "Next", "term.next": "Next",
"term.shuffle": "Shuffle", "term.shuffle": "Shuffle",
"term.enableShuffle": "Enable shuffle",
"term.disableShuffle": "Disable shuffle",
"term.repeat": "Repeat", "term.repeat": "Repeat",
"term.enableRepeatOne": "Enable repeat one",
"term.disableRepeatOne": "Disable repeat one",
"term.disableRepeat": "Disable repeat",
"term.volume": "Volume", "term.volume": "Volume",
"term.mute": "Mute", "term.mute": "Mute",
"term.unmute": "Unmute", "term.unmute": "Unmute",
@ -254,6 +263,7 @@
"action.newpreset": "New Preset...", "action.newpreset": "New Preset...",
"action.deletepreset": "Delete Preset", "action.deletepreset": "Delete Preset",
"action.open": "Open", "action.open": "Open",
"action.close": "Close",
"action.relaunch.confirm": "Do you want to relaunch Cider?", "action.relaunch.confirm": "Do you want to relaunch Cider?",
"action.cast.chromecast": "Chromecast", "action.cast.chromecast": "Chromecast",
"action.cast.todevices": "Cast to Devices", "action.cast.todevices": "Cast to Devices",
@ -264,6 +274,7 @@
"action.cast.scanning": "Scanning...", "action.cast.scanning": "Scanning...",
"action.createNew": "Create New...", "action.createNew": "Create New...",
"action.openArtworkInBrowser": "Open artwork in browser", "action.openArtworkInBrowser": "Open artwork in browser",
"action.scrollToTop": "Scroll to top",
"menubar.options.about": "About", "menubar.options.about": "About",
"menubar.options.settings": "Settings", "menubar.options.settings": "Settings",
"menubar.options.quit": "Quit Cider", "menubar.options.quit": "Quit Cider",

View file

@ -2,7 +2,7 @@
"i18n.languageName": "日本語", "i18n.languageName": "日本語",
"i18n.languageNameEnglish": "Japanese", "i18n.languageNameEnglish": "Japanese",
"i18n.category": "main", "i18n.category": "main",
"i18n.authors": "@maikirakiwi @aduki_0628", "i18n.authors": "@maikirakiwi @tanaka_kakuel",
"app.name": "Cider", "app.name": "Cider",
"date.format": "${y}年${m}月${d}日", "date.format": "${y}年${m}月${d}日",
"dialog.cancel": "キャンセル", "dialog.cancel": "キャンセル",
@ -23,12 +23,12 @@
"term.login": "サインイン", "term.login": "サインイン",
"term.cast": "Cast", "term.cast": "Cast",
"term.about": "Ciderについて", "term.about": "Ciderについて",
"term.privateSession": "プライベートセッション", "term.privateSession": "プライベートセッション",
"term.disablePrivateSession": "プライベートセッションを無効にする", "term.disablePrivateSession": "プライベートセッションを無効にする",
"term.queue": "次はこちら", "term.queue": "次はこちら",
"term.lyrics": "歌詞", "term.lyrics": "歌詞",
"term.miniplayer": "MiniPlayer", "term.miniplayer": "ミニプレイヤー",
"term.history": "History", "term.history": "履歴",
"term.search": "検索", "term.search": "検索",
"term.library": "ライブラリ", "term.library": "ライブラリ",
"term.listenNow": "今すぐ聴く", "term.listenNow": "今すぐ聴く",
@ -38,14 +38,14 @@
"term.songs": "曲", "term.songs": "曲",
"term.albums": "アルバム", "term.albums": "アルバム",
"term.artists": "アーティスト", "term.artists": "アーティスト",
"term.podcasts": "Podcasts", "term.podcasts": "ポッドキャスト",
"term.playlists": "プレイリスト", "term.playlists": "プレイリスト",
"term.playlist": "プレイリスト", "term.playlist": "プレイリスト",
"term.newPlaylist": "New Playlist", "term.newPlaylist": "New Playlist",
"term.newPlaylistFolder": "New Playlist Folder", "term.newPlaylistFolder": "新しいプレイリストフォルダ",
"term.createNewPlaylist": "Create New Playlist", "term.createNewPlaylist": "新しいプレイリストを作る",
"term.createNewPlaylistFolder": "Create New Playlist Folder", "term.createNewPlaylistFolder": "新しいプレイリストフォルダを作る",
"term.deletePlaylist": "Are you sure you want to delete this playlist?", "term.deletePlaylist": "本当にこのプレイリストを削除しますか?",
"term.play": "再生", "term.play": "再生",
"term.pause": "停止", "term.pause": "停止",
"term.previous": "戻る", "term.previous": "戻る",
@ -116,19 +116,19 @@
"term.fullscreenView": "全画面表示", "term.fullscreenView": "全画面表示",
"term.defaultView": "ウィンドウ表示", "term.defaultView": "ウィンドウ表示",
"term.audioSettings": "オーディオ設定", "term.audioSettings": "オーディオ設定",
"term.audioControls": "Volume Controls", "term.audioControls": "ボリューム設定",
"term.clearAll": "消去", "term.clearAll": "消去",
"term.recentStations": "最近の再生", "term.recentStations": "最近の再生",
"term.language": "言語", "term.language": "言語",
"term.funLanguages": "Fun", "term.funLanguages": "Fun",
"term.noLyrics": "ローディング。。 / 歌詞が見つからない / 器楽曲.", "term.noLyrics": "ローディング。。 / 歌詞が見つからない / 器楽曲.",
"term.copyright": "Copyright", "term.copyright": "Copyright",
"term.rightsReserved": "All Rights Reserved.", "term.rightsReserved": "All Rights Reserved.",
"term.sponsor": "スポンサーになりましょう", "term.sponsor": "スポンサーになりましょう",
"term.ciderTeam": "Cider チーム", "term.ciderTeam": "Cider チーム",
"term.developer": "開発者", "term.developer": "開発者",
"term.socialTeam": "ソーシャル チーム", "term.socialTeam": "ソーシャル チーム",
"term.socials": "Socials", "term.socials": "ソーシャル",
"term.contributors": "貢献者", "term.contributors": "貢献者",
"term.equalizer": "イコライザー", "term.equalizer": "イコライザー",
"term.reset": "リセット", "term.reset": "リセット",
@ -141,43 +141,43 @@
"term.menu": "メニュー", "term.menu": "メニュー",
"term.check": "確認", "term.check": "確認",
"term.aboutArtist": "{{artistName}}について", "term.aboutArtist": "{{artistName}}について",
"term.topResult": "Top Result", "term.topResult": "検索結果",
"term.sharedPlaylists": "プレイリストを共有", "term.sharedPlaylists": "プレイリストを共有",
"term.people": "ユー", "term.people": "ユーザー",
"term.newpreset.name": "名前を入力", "term.newpreset.name": "名前を入力",
"term.addedpreset": "Added Preset", "term.addedpreset": "プリセットを追加",
"term.deletepreset.warn": "Are you sure you want to delete this preset?", "term.deletepreset.warn": "本当にこのプリセットを削除しますか?",
"term.deletedpreset": "Removed preset", "term.deletedpreset": "プリセットを削除",
"term.defaultPresets": "Default Presets", "term.defaultPresets": "プリセットを初期化",
"term.userPresets": "User Presets", "term.userPresets": "ユーザープリセット",
"term.requestError": "There was a problem with the request.", "term.requestError": "リクエストに問題がありました",
"term.song.link.generate": "Getting song.link share URL...", "term.song.link.generate": "song.link を取得する",
"term.musicVideos": "ミュージックビデオ", "term.musicVideos": "ミュージックビデオ",
"term.stations": "ステーション", "term.stations": "ステーション",
"term.curators": "Curators", "term.curators": "キュレーター",
"term.appleCurators": "Apple Curators", "term.appleCurators": "Apple キュレーター",
"term.radioShows": "Radio Shows", "term.radioShows": "ラジオ",
"term.recordLabels": "Record Labels", "term.recordLabels": "レーベル",
"term.videoExtras": "Video Extras", "term.videoExtras": "出演者",
"term.top": "Top", "term.top": "トップ",
"term.version": "バージョン", "term.version": "バージョン",
"term.noVideos": "No videos found.", "term.noVideos": "ビデオが見つかりませんでした",
"term.plugin": "Plug-in", "term.plugin": "プラグイン",
"term.pluginMenu": "Plug-in Menu", "term.pluginMenu": "プラグインメニュー",
"term.pluginMenu.none": "プラグインが見つかりませんでした", "term.pluginMenu.none": "プラグインが見つかりませんでした",
"term.replay": "リプレイ", "term.replay": "リプレイ",
"term.uniqueAlbums": "Unique Albums", "term.uniqueAlbums": "ユニークアルバム",
"term.uniqueArtists": "Unique Artists", "term.uniqueArtists": "ユニークアーティスト",
"term.uniqueSongs": "Unique Songs", "term.uniqueSongs": "ユニークソング",
"term.topArtists": "Top Artists", "term.topArtists": "トップアーティスト",
"term.listenedTo": "Listened to:", "term.listenedTo": "Now Playing:",
"term.times": "times", "term.times": "時間",
"term.topAlbums": "Top Albums", "term.topAlbums": "トップアルバム",
"term.plays": "Plays", "term.plays": "再生",
"term.topGenres": "Top Genres", "term.topGenres": "トップジャンル",
"term.confirmLogout": "本当にログアウトしますか?", "term.confirmLogout": "本当にログアウトしますか?",
"term.creditDesignedBy": "${authorUsername}によってデザインされました", "term.creditDesignedBy": "${authorUsername}によってデザインされました",
"term.discNumber": "Disc ${discNumber}", "term.discNumber": "ディスク ${discNumber}",
"home.title": "ホーム", "home.title": "ホーム",
"home.recentlyPlayed": "最近の再生", "home.recentlyPlayed": "最近の再生",
"home.recentlyAdded": "最近追加した項目", "home.recentlyAdded": "最近追加した項目",
@ -193,14 +193,14 @@
"podcast.followOnCider": "Ciderでフォロー", "podcast.followOnCider": "Ciderでフォロー",
"podcast.followedOnCider": "フォロー中", "podcast.followedOnCider": "フォロー中",
"podcast.subscribeOnItunes": "iTunesで購読", "podcast.subscribeOnItunes": "iTunesで購読",
"podcast.subscribedOnItunes": "Subscribed On iTunes", "podcast.subscribedOnItunes": "iTunesで購読中",
"podcast.itunesStore": "iTunes Store", "podcast.itunesStore": "iTunes Store",
"podcast.episodes": "番組", "podcast.episodes": "番組",
"podcast.playEpisode": "再生", "podcast.playEpisode": "再生",
"podcast.website": "Podcastウェブ", "podcast.website": "Podcastウェブ",
"action.edit": "Edit", "action.edit": "編集",
"action.done": "Done", "action.done": "完了",
"action.editTracklist": "Edit Tracklist", "action.editTracklist": "トラックリストを編集",
"action.addToLibrary": "ライブラリに追加", "action.addToLibrary": "ライブラリに追加",
"action.addToLibrary.success": "ライブラリに追加されました", "action.addToLibrary.success": "ライブラリに追加されました",
"action.addToLibrary.error": "ライブラリへの追加に失敗しました", "action.addToLibrary.error": "ライブラリへの追加に失敗しました",
@ -212,9 +212,9 @@
"action.removeFromQueue": "「次はこちら」から項目を削除", "action.removeFromQueue": "「次はこちら」から項目を削除",
"action.removeFromQueue.success": "「次はこちら」から項目を削除されました", "action.removeFromQueue.success": "「次はこちら」から項目を削除されました",
"action.removeFromQueue.error": "操作を完了できませんでした", "action.removeFromQueue.error": "操作を完了できませんでした",
"action.createPlaylist": "Create a New Playlist", "action.createPlaylist": "新しいプレイリストを作成する",
"action.addToPlaylist": "Add to Playlist", "action.addToPlaylist": "プレイリストに追加する",
"action.removeFromPlaylist": "Remove from Playlist", "action.removeFromPlaylist": "プレイリストから削除する",
"action.addToFavorites": "ラブに追加", "action.addToFavorites": "ラブに追加",
"action.follow": "フォロー", "action.follow": "フォロー",
"action.follow.success": "フォロー中", "action.follow.success": "フォロー中",
@ -243,7 +243,7 @@
"action.showAlbum": "アルバムを表示", "action.showAlbum": "アルバムを表示",
"action.tray.minimize": "最小化", "action.tray.minimize": "最小化",
"action.tray.quit": "終了", "action.tray.quit": "終了",
"action.tray.show": "Show Cider", "action.tray.show": "表示",
"action.update": "アップデート", "action.update": "アップデート",
"action.install": "インストール", "action.install": "インストール",
"action.copy": "コピー", "action.copy": "コピー",
@ -252,52 +252,52 @@
"action.open": "開く", "action.open": "開く",
"action.relaunch.confirm": "Ciderを再開しますか", "action.relaunch.confirm": "Ciderを再開しますか",
"action.cast.chromecast": "Chromecast", "action.cast.chromecast": "Chromecast",
"action.cast.todevices": "Cast to Devices", "action.cast.todevices": "デバイスにキャストする",
"action.cast.stop": "Stop casting to all devices", "action.cast.stop": "すべてのデバイスでキャストを中止する",
"action.cast.airplay": "AirPlay", "action.cast.airplay": "AirPlay",
"action.cast.airplay.underdevelopment": "AirPlay is still under development", "action.cast.airplay.underdevelopment": "AirPlayはまだ開発中です",
"action.cast.scan": "Scan", "action.cast.scan": "スキャン",
"action.cast.scanning": "Scanning...", "action.cast.scanning": "スキャン中...",
"action.createNew": "Create New...", "action.createNew": "新規作成...",
"action.openArtworkInBrowser": "Open artwork in browser", "action.openArtworkInBrowser": "アートワークをブラウザで表示する",
"settings.header.general": "一般", "settings.header.general": "一般",
"settings.header.general.description": "Ciderの一般設定", "settings.header.general.description": "Ciderの一般設定",
"settings.option.general.language": "言語", "settings.option.general.language": "言語",
"settings.option.general.resumebehavior": "Resume behavior", "settings.option.general.resumebehavior": "再開の動作",
"settings.option.general.resumebehavior.description": "Resume behavior affects how Cider will resume your session when you return to the app.", "settings.option.general.resumebehavior.description": "この設定はciderを再起動した際に影響します",
"settings.option.general.resumebehavior.locally": "Locally", "settings.option.general.resumebehavior.locally": "ローカル",
"settings.option.general.resumebehavior.locally.description": "このコンピューターでの最終セッションを復元", "settings.option.general.resumebehavior.locally.description": "このコンピューターでの最終セッションを復元",
"settings.option.general.resumebehavior.history": "History", "settings.option.general.resumebehavior.history": "履歴",
"settings.option.general.resumebehavior.history.description": "Apple Musicの履歴から曲を復元", "settings.option.general.resumebehavior.history.description": "Apple Musicの履歴から曲を復元",
"settings.option.general.resumetabs" : "Open Tab on Launch", "settings.option.general.resumetabs" : "起動時にタブを開く",
"settings.option.general.resumetabs.description" : "You can choose what tab you want to open when you launch Cider.", "settings.option.general.resumetabs.description" : "Ciderを起動したときに開くタブを選択することができます",
"settings.option.general.resumetabs.dynamic" : "Dynamic", "settings.option.general.resumetabs.dynamic" : "ダイナミック",
"settings.option.general.resumetabs.dynamic.description" : "Cider will open the tab that you last used.", "settings.option.general.resumetabs.dynamic.description" : "最後のセッションで開いていたタブを開きます",
"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": "未分類",
"settings.option.general.updateCider": "アップデート", "settings.option.general.updateCider": "アップデート",
"settings.option.general.updateCider.branch": "Cider Update Branch", "settings.option.general.updateCider.branch": "ciderのバージョン詳細",
"settings.option.general.updateCider.branch.description": "Select the branch to update Cider to", "settings.option.general.updateCider.branch.description": "ciderのバージョンを設定できます",
"settings.option.general.updateCider.branch.main": "Stable", "settings.option.general.updateCider.branch.main": "安定版",
"settings.option.general.updateCider.branch.develop": "Development", "settings.option.general.updateCider.branch.develop": "ベータ版",
"settings.option.general.customizeSidebar": "Customize Sidebar Items", "settings.option.general.customizeSidebar": "サイドバーをカスタマイズ",
"settings.option.general.customizeSidebar.customize": "Customize", "settings.option.general.customizeSidebar.customize": "カスタマイズ",
"settings.option.general.keybindings": "Keybindings", "settings.option.general.keybindings": "キーバインド",
"settings.notyf.general.keybindings.update.success": "Keybind updated successfully", "settings.notyf.general.keybindings.update.success": "キーバインドのアップデートに成功しました",
"settings.prompt.general.keybindings.update.success": "Keybind updated successfully. Press OK to relaunch Cider", "settings.prompt.general.keybindings.update.success": "キーバインドのアップデートに成功しました。OKを押すとciderが再起動します",
"settings.option.general.keybindings.open": "Open", "settings.option.general.keybindings.open": "開く",
"settings.description.search": "Search", "settings.description.search": "検索",
"settings.description.albums": "Library Albums", "settings.description.albums": "ライブラリのアルバム",
"settings.description.artists": "Library Artists", "settings.description.artists": "ライブラリのアーティスト",
"settings.description.browse": "Browse", "settings.description.browse": "検索",
"settings.description.private": "Toggle Private Session", "settings.description.private": "プライベートセッションに切り替える",
"settings.description.remote": "Web Remote", "settings.description.remote": "WEBで遠隔操作",
"settings.description.audio": "Audio Settings", "settings.description.audio": "オーディオの設定",
"settings.description.plugins": "Plugins Menu", "settings.description.plugins": "プラグインのメニュー",
"settings.description.cast": "Cast to Devices", "settings.description.cast": "デバイスでキャストする",
"settings.description.settings": "Settings", "settings.description.settings": "設定",
"settings.description.developer": "Developer Tools", "settings.description.developer": "デベロッパーツール",
"settings.notyf.updateCider.update-not-available": "現在最新版です", "settings.notyf.updateCider.update-not-available": "現在最新版です",
"settings.notyf.updateCider.update-downloaded": "アップデートは再起動後に適用されます", "settings.notyf.updateCider.update-downloaded": "アップデートは再起動後に適用されます",
"settings.notyf.updateCider.update-error": "アップデートに失敗しました", "settings.notyf.updateCider.update-error": "アップデートに失敗しました",
@ -306,9 +306,9 @@
"settings.header.audio.description": "Ciderのオーディオ設定", "settings.header.audio.description": "Ciderのオーディオ設定",
"settings.option.audio.volumeStep": "音量調整のステップ", "settings.option.audio.volumeStep": "音量調整のステップ",
"settings.option.audio.maxVolume": "最大音量", "settings.option.audio.maxVolume": "最大音量",
"settings.option.audio.changePlaybackRate": "Change Playback Rate", "settings.option.audio.changePlaybackRate": "再生速度の変更",
"settings.option.audio.playbackRate": "Playback Rate", "settings.option.audio.playbackRate": "再生速度の変更",
"settings.option.audio.playbackRate.change": "Change", "settings.option.audio.playbackRate.change": "変更",
"settings.option.audio.quality": "音質", "settings.option.audio.quality": "音質",
"settings.header.audio.quality.hireslossless": "ハイレゾロスレス", "settings.header.audio.quality.hireslossless": "ハイレゾロスレス",
"settings.header.audio.quality.hireslossless.description": "(最大解像度 24 ビット192 kHz)", "settings.header.audio.quality.hireslossless.description": "(最大解像度 24 ビット192 kHz)",
@ -320,23 +320,23 @@
"settings.option.audio.seamlessTransition": "曲間なしで再生", "settings.option.audio.seamlessTransition": "曲間なしで再生",
"settings.option.audio.enableAdvancedFunctionality": "先進的な機能", "settings.option.audio.enableAdvancedFunctionality": "先進的な機能",
"settings.option.audio.enableAdvancedFunctionality.description": "AudioContextを有効にすると、オーディオーマライズ、空間オーディオ、イコライザーなどの機能を使用できますが、音が途切れるかもしれません。", "settings.option.audio.enableAdvancedFunctionality.description": "AudioContextを有効にすると、オーディオーマライズ、空間オーディオ、イコライザーなどの機能を使用できますが、音が途切れるかもしれません。",
"settings.warn.audio.enableAdvancedFunctionality.lowcores": "Cider thinks your PC can't handle these features. Are you sure you want to continue?", "settings.warn.audio.enableAdvancedFunctionality.lowcores": "あなたのPCがこの処理に耐えられないかもしれません。",
"settings.option.audio.audioLab": "Cider Audio Lab", "settings.option.audio.audioLab": "Cider Audio Lab",
"settings.option.audio.audioLab.description": "An assortment of in-house developed audio effects for Cider.", "settings.option.audio.audioLab.description": "An assortment of in-house developed audio effects for Cider.",
"settings.warn.audioLab.withoutAF": "AudioContext (Advanced Functionality) is required to enable Cider Audio Laboratory.", "settings.warn.audioLab.withoutAF": "Cider Audio Labを有効にするにはAudioContextを有効にする必要があります",
"settings.option.audio.enableAdvancedFunctionality.analogWarmth": "Analog Warmth", "settings.option.audio.enableAdvancedFunctionality.analogWarmth": "Analog Warmth",
"settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "Korg Nutube 6P1をモデルにしたオーディオをシミュレートします", "settings.option.audio.enableAdvancedFunctionality.analogWarmth.description": "Korg Nutube 6P1をモデルにしたオーディオをシミュレートします",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Analog Warmth intensity", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity": "Analog Warmth intensity",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "Changes the intensity of the Analog Warmth Module processing.", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.description": "Changes the intensity of the Analog Warmth Module processing.",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "Smooth", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.smooth": "なめらか",
"settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "Warm", "settings.option.audio.enableAdvancedFunctionality.analogWarmthIntensity.warm": "暖かい",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizer": "Cider Atmosphere Realizer™", "settings.option.audio.enableAdvancedFunctionality.atmosphereRealizer": "Cider Atmosphere Realizer™",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizer.description": "Realizes a different musical atmosphere modelled after the state of the art audio setups.", "settings.option.audio.enableAdvancedFunctionality.atmosphereRealizer.description": "最先端のオーディオセットアップを模した、異なる音楽の雰囲気を実現します。",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode": "Cider Atmosphere Realizer™ Mode", "settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode": "Cider Atmosphere Realizer™ モード",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.description": "Changes the mode of operation of the Atmosphere Realizer module.", "settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.description": "Atmosphere Realizer™のモードを変更します",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.natural1": "Natural (Standard)", "settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.natural1": "自然 (普通)",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.natural2": "Natural (High)", "settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.natural2": "自然 (高い)",
"settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.natural3": "Natural (Plus)", "settings.option.audio.enableAdvancedFunctionality.atmosphereRealizerMode.natural3": "自然 (プラス)",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™", "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™",
"settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "音楽をより豊かに、生き生きとさせます", "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "音楽をより豊かに、生き生きとさせます",
"settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAPはSpatializationと互換性がありません", "settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAPはSpatializationと互換性がありません",
@ -345,13 +345,15 @@
"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": "オーディオノーマライズ", "settings.option.audio.enableAdvancedFunctionality.audioNormalization": "オーディオノーマライズ",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "さまざまな曲の音量を均一にし、より整った音を楽しめるようにする機能です。", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "さまざまな曲の音量を均一にし、より整った音を楽しめるようにする機能です。",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.disabled": "Managed by Audio Lab", "settings.option.audio.enableAdvancedFunctionality.audioNormalization.disabled": "Audio Labの設定",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "オーディオ空間化",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "音声を空間化しすることで、より立体的にできます(Dolby Atmosではありません)",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Cider Tuned Spatialization", "settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization": "Cider Tuned Spatialization",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description": "開発チームがチューニングした設定を使用することができます。(オーディオ空間化を有効にする必要があります)", "settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.description": "開発チームがチューニングした設定を使用することができます。(オーディオ空間化を有効にする必要があります)",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile": "Cider Spatialization Profile", "settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile": "Cider Spatialization Profile",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description": "Changes the Tuning Profile of the Spatialization.", "settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.description": "プロファイルをSpatializationに変更します",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard": "Standard", "settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.standard": "スタンダード",
"settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile": "Audiophile", "settings.option.audio.enableAdvancedFunctionality.tunedAudioSpatialization.profile.audiophile": "Audiophile",
"settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "オーディオ空間化はCAPと互換性がありません", "settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "オーディオ空間化はCAPと互換性がありません",
"settings.header.visual": "ビジュアル", "settings.header.visual": "ビジュアル",
@ -379,7 +381,7 @@
"settings.option.visual.uiscale": "UI Scale", "settings.option.visual.uiscale": "UI Scale",
"settings.header.visual.theme": "テーマ", "settings.header.visual.theme": "テーマ",
"settings.option.visual.theme.github.download": "GitHub URLからインストール", "settings.option.visual.theme.github.download": "GitHub URLからインストール",
"settings.option.visual.theme.github.openfolder": "Open Themes Folder", "settings.option.visual.theme.github.openfolder": "テーマフォルダを開く",
"settings.option.visual.theme.github.explore": "GitHubで探す", "settings.option.visual.theme.github.explore": "GitHubで探す",
"settings.header.visual.theme.github.page": "GitHub", "settings.header.visual.theme.github.page": "GitHub",
"settings.option.visual.theme.github.install.confirm": "本当に {{ repo }} をインストールしますか?", "settings.option.visual.theme.github.install.confirm": "本当に {{ repo }} をインストールしますか?",
@ -402,38 +404,38 @@
"settings.header.window.description": "ウィンドウの設定", "settings.header.window.description": "ウィンドウの設定",
"settings.option.window.openOnStartup": "Ciderをスタートアップに設定する", "settings.option.window.openOnStartup": "Ciderをスタートアップに設定する",
"settings.option.window.openOnStartup.hidden": "パソコン起動時にCiderをトレイに最小化", "settings.option.window.openOnStartup.hidden": "パソコン起動時にCiderをトレイに最小化",
"settings.option.window.useNativeTitleBar": "Use Native Title Bar", "settings.option.window.useNativeTitleBar": "タイトルバーを使用する",
"settings.option.window.windowControlStyle": "Window Control Style", "settings.option.window.windowControlStyle": "ウィンドウの設定",
"settings.option.window.windowControlStyle.right": "右側", "settings.option.window.windowControlStyle.right": "右側",
"settings.option.window.windowControlStyle.left": "左側", "settings.option.window.windowControlStyle.left": "左側",
"settings.header.lyrics": "歌詞", "settings.header.lyrics": "歌詞",
"settings.header.lyrics.description": "Adjust the lyrics settings for Cider.", "settings.header.lyrics.description": "歌詞の設定",
"settings.option.lyrics.enableMusixmatch": "Musixmatchが提供する歌詞を表示する", "settings.option.lyrics.enableMusixmatch": "Musixmatchが提供する歌詞を表示する",
"settings.option.lyrics.enableMusixmatchKaraoke": "カラオケモードを有効にする (Musixmatchのみで利用できます)", "settings.option.lyrics.enableMusixmatchKaraoke": "カラオケモードを有効にする (Musixmatchのみで利用できます)",
"settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatchで表示する歌詞の言語", "settings.option.lyrics.musixmatchPreferredLanguage": "Musixmatchで表示する歌詞の言語",
"settings.option.lyrics.enableYoutubeLyrics": "YouTubeの歌詞をミュージックビデオで使用する", "settings.option.lyrics.enableYoutubeLyrics": "YouTubeの歌詞をミュージックビデオで使用する",
"settings.option.lyrics.enableQQLyrics": "Enable QQ Lyrics", "settings.option.lyrics.enableQQLyrics": "QQの歌詞を表示する",
"settings.header.connectivity": "接続", "settings.header.connectivity": "接続",
"settings.header.connectivity.description": "Ciderの接続設定", "settings.header.connectivity.description": "Ciderの接続設定",
"settings.option.connectivity.playbackNotifications": "再生している曲を通知する", "settings.option.connectivity.playbackNotifications": "再生している曲を通知する",
"settings.option.connectivity.discordRPC": "Discord Rich Presence", "settings.option.connectivity.discordRPC": "Discord Rich Presence",
"settings.option.connectivity.discordRPC.clientName": "Client Name", "settings.option.connectivity.discordRPC.clientName": "クライアントの名前",
"settings.option.connectivity.discordRPC.clearOnPause": "Clear Discord Rich Presence on Pause", "settings.option.connectivity.discordRPC.clearOnPause": "一時停止した時にDiscord Rich Presenceを非表示にする",
"settings.option.connectivity.discordRPC.hideButtons": "Hide buttons on Discord Rich Presence", "settings.option.connectivity.discordRPC.hideButtons": "Discord Rich Presenceのボタンを非表示にする",
"settings.option.connectivity.discordRPC.detailsFormat": "Details Format", "settings.option.connectivity.discordRPC.detailsFormat": "ディティールのフォーマット",
"settings.option.connectivity.discordRPC.stateFormat": "State Format", "settings.option.connectivity.discordRPC.stateFormat": "状態のフォーマット",
"settings.option.connectivity.lastfmScrobble": "Last.fm に接続する", "settings.option.connectivity.lastfmScrobble": "Last.fm に接続する",
"settings.option.connectivity.lastfmScrobble.delay": "遅延 (%)", "settings.option.connectivity.lastfmScrobble.delay": "遅延 (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Last.fm Now Playingを有効化する", "settings.option.connectivity.lastfmScrobble.nowPlaying": "Last.fm Now Playingを有効化する",
"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)",
"settings.header.debug": "デバッグ", "settings.header.debug": "デバッグ",
"settings.option.debug.copy_log": "Copy logs to clipboard", "settings.option.debug.copy_log": "ログをクリップボードにコピーする",
"settings.option.debug.openAppData": "Open Cider Folder", "settings.option.debug.openAppData": "Ciderのフォルダを開く",
"settings.header.experimental": "試験的な機能", "settings.header.experimental": "試験的な機能",
"settings.header.experimental.description": "試験的な設定", "settings.header.experimental.description": "試験的な設定",
"settings.option.experimental.reinstallwidevine": "Reinstall WidevineCDM", "settings.option.experimental.reinstallwidevine": "WidevineCDMを再インストールする",
"settings.option.experimental.reinstallwidevine.confirm": "Are you sure you want to reinstall Widevine?", "settings.option.experimental.reinstallwidevine.confirm": "本当にWidevineを再インストールしますか",
"settings.option.experimental.unknownPlugin": "未知のダウンロード元", "settings.option.experimental.unknownPlugin": "未知のダウンロード元",
"settings.option.experimental.unknownPlugin.description": "外部からプラグインをインストールできるようにする", "settings.option.experimental.unknownPlugin.description": "外部からプラグインをインストールできるようにする",
"settings.option.experimental.compactUI": "コンパクトUI", "settings.option.experimental.compactUI": "コンパクトUI",
@ -443,10 +445,10 @@
"settings.option.advanced.playlistTrackMapping.description": "プレイリストをスキャンすることで含まれる曲をより識別しやすくなります", "settings.option.advanced.playlistTrackMapping.description": "プレイリストをスキャンすることで含まれる曲をより識別しやすくなります",
"settings.option.visual.transparent": "背景の透過", "settings.option.visual.transparent": "背景の透過",
"settings.option.visual.transparent.description": "(テーマがこの機能をサポートしている必要があります)", "settings.option.visual.transparent.description": "(テーマがこの機能をサポートしている必要があります)",
"settings.header.advanced": "Advanced", "settings.header.advanced": "アドバンス",
"settings.header.connect": "Sync", "settings.header.connect": "リンク",
"settings.option.connect.link_account": "Enable Sync with Cider Connect", "settings.option.connect.link_account": "Ciderと他のアプリをリンクさせることができます",
"settings.option.connect.link_account.description": "Linking your Discord account with Cider Connect allows you to store userdata including Settings, EQ's, and eventually more once finished. (Work In Progress)", "settings.option.connect.link_account.description": "DiscordとCiderを接続することで、Ciderの設定を保存することができます(開発中)",
"spatial.notTurnedOn": "オーディオ空間化が無効になっています。この機能を使用するには有効にしてください!", "spatial.notTurnedOn": "オーディオ空間化が無効になっています。この機能を使用するには有効にしてください!",
"spatial.spatialProperties": "空間化のプロパティ", "spatial.spatialProperties": "空間化のプロパティ",
"spatial.width": "幅", "spatial.width": "幅",

View file

@ -21,11 +21,13 @@
"term.accountSettings": "Account Settings", "term.accountSettings": "Account Settings",
"term.logout": "Logout", "term.logout": "Logout",
"term.login": "Log In", "term.login": "Log In",
"term.quickNav": "Quick Nav",
"term.cast": "Cast", "term.cast": "Cast",
"term.about": "About", "term.about": "About",
"term.privateSession": "Private Session", "term.privateSession": "Private Session",
"term.disablePrivateSession": "Disable Private Session", "term.disablePrivateSession": "Disable Private Session",
"term.queue": "Queue", "term.queue": "Queue",
"term.autoplay": "Autoplay",
"term.lyrics": "Lyrics", "term.lyrics": "Lyrics",
"term.miniplayer": "MiniPlayer", "term.miniplayer": "MiniPlayer",
"term.history": "History", "term.history": "History",
@ -46,12 +48,19 @@
"term.createNewPlaylist": "Create New Playlist", "term.createNewPlaylist": "Create New Playlist",
"term.createNewPlaylistFolder": "Create New Playlist Folder", "term.createNewPlaylistFolder": "Create New Playlist Folder",
"term.deletePlaylist": "Are you sure you want to delete this playlist?", "term.deletePlaylist": "Are you sure you want to delete this playlist?",
"term.navigateBack": "Navigate back",
"term.navigateForward": "Navigate forward",
"term.play": "Play", "term.play": "Play",
"term.pause": "Pause", "term.pause": "Pause",
"term.previous": "Previous", "term.previous": "Previous",
"term.next": "Next", "term.next": "Next",
"term.shuffle": "Shuffle", "term.shuffle": "Shuffle",
"term.enableShuffle": "Enable shuffle",
"term.disableShuffle": "Disable shuffle",
"term.repeat": "Repeat", "term.repeat": "Repeat",
"term.enableRepeatOne": "Enable repeat one",
"term.disableRepeatOne": "Disable repeat one",
"term.disableRepeat": "Disable repeat",
"term.volume": "Volume", "term.volume": "Volume",
"term.mute": "Mute", "term.mute": "Mute",
"term.unmute": "Unmute", "term.unmute": "Unmute",
@ -254,6 +263,7 @@
"action.newpreset": "New Preset...", "action.newpreset": "New Preset...",
"action.deletepreset": "Delete Preset", "action.deletepreset": "Delete Preset",
"action.open": "Open", "action.open": "Open",
"action.close": "Close",
"action.relaunch.confirm": "Do you want to relaunch Cider?", "action.relaunch.confirm": "Do you want to relaunch Cider?",
"action.cast.chromecast": "Chromecast", "action.cast.chromecast": "Chromecast",
"action.cast.todevices": "Cast to Devices", "action.cast.todevices": "Cast to Devices",
@ -264,6 +274,7 @@
"action.cast.scanning": "Scanning...", "action.cast.scanning": "Scanning...",
"action.createNew": "Create New...", "action.createNew": "Create New...",
"action.openArtworkInBrowser": "Open artwork in browser", "action.openArtworkInBrowser": "Open artwork in browser",
"action.scrollToTop": "Scroll to top",
"menubar.options.about": "About", "menubar.options.about": "About",
"menubar.options.settings": "Settings", "menubar.options.settings": "Settings",
"menubar.options.quit": "Quit Cider", "menubar.options.quit": "Quit Cider",

View file

@ -828,8 +828,9 @@ const app = new Vue({
} }
}); });
this.mk.addEventListener(MusicKit.Events.playbackStateDidChange, () => { this.mk.addEventListener(MusicKit.Events.playbackStateDidChange, (event) => {
ipcRenderer.send('wsapi-updatePlaybackState', wsapi.getAttributes()); ipcRenderer.send('wsapi-updatePlaybackState', wsapi.getAttributes());
document.body.setAttribute("playback-state", event.state == 2 ? "playing" : "paused")
}) })
this.mk.addEventListener(MusicKit.Events.playbackTimeDidChange, (a) => { this.mk.addEventListener(MusicKit.Events.playbackTimeDidChange, (a) => {
@ -887,8 +888,10 @@ const app = new Vue({
if (type.includes("musicVideo") || type.includes("uploadedVideo") || type.includes("music-movie")) { if (type.includes("musicVideo") || type.includes("uploadedVideo") || type.includes("music-movie")) {
document.getElementById("apple-music-video-container").style.display = "block"; document.getElementById("apple-music-video-container").style.display = "block";
document.body.setAttribute("video-playing", "true")
// app.chrome.topChromeVisible = false // app.chrome.topChromeVisible = false
} else { } else {
document.body.removeAttribute("video-playing")
document.getElementById("apple-music-video-container").style.display = "none"; document.getElementById("apple-music-video-container").style.display = "none";
// app.chrome.topChromeVisible = true // app.chrome.topChromeVisible = true
} }
@ -3869,12 +3872,14 @@ const app = new Vue({
el.play() el.play()
}) })
document.querySelector("body").classList.remove("stopanimation") document.querySelector("body").classList.remove("stopanimation")
document.body.setAttribute("focus-state", "focused")
this.animateBackground = true this.animateBackground = true
} else { } else {
document.querySelectorAll(".animated-artwork-video").forEach(el => { document.querySelectorAll(".animated-artwork-video").forEach(el => {
el.pause() el.pause()
}) })
document.querySelector("body").classList.add("stopanimation") document.querySelector("body").classList.add("stopanimation")
document.body.setAttribute("focus-state", "blurred")
this.animateBackground = false this.animateBackground = false
} }
}, },

View file

@ -39,7 +39,8 @@
</div> </div>
<template v-if="mk.nowPlayingItem['attributes']['playParams']"> <template v-if="mk.nowPlayingItem['attributes']['playParams']">
<div class="actions"> <div class="actions">
<button class="lcdMenu" @click="nowPlayingContextMenu"> <button class="lcdMenu" @click="nowPlayingContextMenu"
:title="$root.getLz('term.more')" v-b-tooltip.hover>
<div class="svg-icon"></div> <div class="svg-icon"></div>
</button> </button>
</div> </div>
@ -55,27 +56,36 @@
<div class="app-chrome-playback-controls"> <div class="app-chrome-playback-controls">
<div class="app-chrome-item"> <div class="app-chrome-item">
<button class="playback-button--small shuffle" v-if="mk.shuffleMode == 0" <button class="playback-button--small shuffle" v-if="mk.shuffleMode == 0"
@click="mk.shuffleMode = 1"></button> @click="mk.shuffleMode = 1" :title="$root.getLz('term.enableShuffle')"
v-b-tooltip.hover></button>
<button class="playback-button--small shuffle active" v-else <button class="playback-button--small shuffle active" v-else
@click="mk.shuffleMode = 0"></button> @click="mk.shuffleMode = 0" :title="$root.getLz('term.disableShuffle')"
v-b-tooltip.hover></button>
</div> </div>
<div class="app-chrome-item"> <div class="app-chrome-item">
<button class="playback-button previous" @click="prevButton()"></button> <button class="playback-button previous" @click="prevButton()"
:title="$root.getLz('term.previous')" v-b-tooltip.hover></button>
</div> </div>
<div class="app-chrome-item"> <div class="app-chrome-item">
<button class="playback-button pause" @click="mk.pause()" v-if="mk.isPlaying"></button> <button class="playback-button pause" @click="mk.pause()" v-if="mk.isPlaying"
<button class="playback-button play" @click="mk.play()" v-else></button> :title="$root.getLz('term.pause')" v-b-tooltip.hover></button>
<button class="playback-button play" @click="mk.play()" v-else
:title="$root.getLz('term.play')" v-b-tooltip.hover></button>
</div> </div>
<div class="app-chrome-item"> <div class="app-chrome-item">
<button class="playback-button next" @click="skipToNextItem()"></button> <button class="playback-button next" @click="skipToNextItem()"
:title="$root.getLz('term.next')" v-b-tooltip.hover></button>
</div> </div>
<div class="app-chrome-item"> <div class="app-chrome-item">
<button class="playback-button--small repeat" v-if="mk.repeatMode == 0" <button class="playback-button--small repeat" v-if="mk.repeatMode == 0"
@click="mk.repeatMode = 1"></button> @click="mk.repeatMode = 1" :title="$root.getLz('term.enableRepeatOne')"
v-b-tooltip.hover></button>
<button class="playback-button--small repeat repeatOne" @click="mk.repeatMode = 2" <button class="playback-button--small repeat repeatOne" @click="mk.repeatMode = 2"
v-else-if="mk.repeatMode == 1"></button> v-else-if="mk.repeatMode == 1" :title="$root.getLz('term.disableRepeatOne')"
v-b-tooltip.hover></button>
<button class="playback-button--small repeat active" @click="mk.repeatMode = 0" <button class="playback-button--small repeat active" @click="mk.repeatMode = 0"
v-else-if="mk.repeatMode == 2"></button> v-else-if="mk.repeatMode == 2" :title="$root.getLz('term.disableRepeat')"
v-b-tooltip.hover></button>
</div> </div>
</div> </div>
<div class="app-chrome-playback-duration"> <div class="app-chrome-playback-duration">
@ -98,7 +108,9 @@
<div class="app-chrome--right"> <div class="app-chrome--right">
<div class="app-chrome-item volume"> <div class="app-chrome-item volume">
<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}"
:title="cfg.audio.muted ? $root.getLz('term.unmute') : $root.getLz('term.mute')"
v-b-tooltip.hover></button>
<input type="range" @wheel="volumeWheel" :step="cfg.audio.volumeStep" 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()"
v-b-tooltip.hover :title="formatVolumeTooltip()"> v-b-tooltip.hover :title="formatVolumeTooltip()">

View file

@ -14,17 +14,20 @@
<button class="app-mainmenu" <button class="app-mainmenu"
@blur="mainMenuVisibility(false)" @blur="mainMenuVisibility(false)"
@click="mainMenuVisibility(true)" @click="mainMenuVisibility(true)"
:class="{active: chrome.menuOpened}"></button> :class="{active: chrome.menuOpened}"
:aria-label="$root.getLz('term.quickNav')"></button>
</div> </div>
<template v-if="getThemeDirective('appNavigation') != 'seperate'"> <template v-if="getThemeDirective('appNavigation') != 'seperate'">
<div class="vdiv display--large" v-if="getThemeDirective('windowLayout') == 'twopanel'"></div> <div class="vdiv display--large" v-if="getThemeDirective('windowLayout') == 'twopanel'"></div>
<div class="app-chrome-item"> <div class="app-chrome-item">
<button class="playback-button navigation" @click="navigateBack()"> <button class="playback-button navigation" @click="navigateBack()"
:title="$root.getLz('term.navigateBack')" v-b-tooltip.hover>
<%- include('../svg/chevron-left.svg') %> <%- include('../svg/chevron-left.svg') %>
</button> </button>
</div> </div>
<div class="app-chrome-item"> <div class="app-chrome-item">
<button class="playback-button navigation" @click="navigateForward()"> <button class="playback-button navigation" @click="navigateForward()"
:title="$root.getLz('term.navigateForward')" v-b-tooltip.hover>
<%- include('../svg/chevron-right.svg') %> <%- include('../svg/chevron-right.svg') %>
</button> </button>
</div> </div>
@ -33,27 +36,36 @@
<template v-if="getThemeDirective('windowLayout') != 'twopanel'"> <template v-if="getThemeDirective('windowLayout') != 'twopanel'">
<div class="app-chrome-item display--large"> <div class="app-chrome-item display--large">
<button class="playback-button--small shuffle" v-if="mk.shuffleMode == 0" <button class="playback-button--small shuffle" v-if="mk.shuffleMode == 0"
@click="mk.shuffleMode = 1"></button> @click="mk.shuffleMode = 1" :title="$root.getLz('term.enableShuffle')"
v-b-tooltip.hover></button>
<button class="playback-button--small shuffle active" v-else <button class="playback-button--small shuffle active" v-else
@click="mk.shuffleMode = 0"></button> @click="mk.shuffleMode = 0" :title="$root.getLz('term.disableShuffle')"
v-b-tooltip.hover></button>
</div> </div>
<div class="app-chrome-item display--large"> <div class="app-chrome-item display--large">
<button class="playback-button previous" @click="prevButton()"></button> <button class="playback-button previous" @click="prevButton()"
:title="$root.getLz('term.previous')" v-b-tooltip.hover></button>
</div> </div>
<div class="app-chrome-item display--large"> <div class="app-chrome-item display--large">
<button class="playback-button pause" @click="mk.pause()" v-if="mk.isPlaying"></button> <button class="playback-button pause" @click="mk.pause()" v-if="mk.isPlaying"
<button class="playback-button play" @click="mk.play()" v-else></button> :title="$root.getLz('term.pause')" v-b-tooltip.hover></button>
<button class="playback-button play" @click="mk.play()" v-else
:title="$root.getLz('term.play')" v-b-tooltip.hover></button>
</div> </div>
<div class="app-chrome-item display--large"> <div class="app-chrome-item display--large">
<button class="playback-button next" @click="skipToNextItem()"></button> <button class="playback-button next" @click="skipToNextItem()"
:title="$root.getLz('term.next')" v-b-tooltip.hover></button>
</div> </div>
<div class="app-chrome-item display--large"> <div class="app-chrome-item display--large">
<button class="playback-button--small repeat" v-if="mk.repeatMode == 0" <button class="playback-button--small repeat" v-if="mk.repeatMode == 0"
@click="mk.repeatMode = 1"></button> @click="mk.repeatMode = 1" :title="$root.getLz('term.enableRepeatOne')"
v-b-tooltip.hover></button>
<button class="playback-button--small repeat repeatOne" @click="mk.repeatMode = 2" <button class="playback-button--small repeat repeatOne" @click="mk.repeatMode = 2"
v-else-if="mk.repeatMode == 1"></button> v-else-if="mk.repeatMode == 1" :title="$root.getLz('term.disableRepeatOne')"
v-b-tooltip.hover></button>
<button class="playback-button--small repeat active" @click="mk.repeatMode = 0" <button class="playback-button--small repeat active" @click="mk.repeatMode = 0"
v-else-if="mk.repeatMode == 2"></button> v-else-if="mk.repeatMode == 2" :title="$root.getLz('term.disableRepeat')"
v-b-tooltip.hover></button>
</div> </div>
</template> </template>
</div> </div>
@ -113,7 +125,8 @@
</div> </div>
<template v-if="mk.nowPlayingItem['attributes']['playParams']"> <template v-if="mk.nowPlayingItem['attributes']['playParams']">
<div class="actions"> <div class="actions">
<button class="lcdMenu" @click="nowPlayingContextMenu"> <button class="lcdMenu" @click="nowPlayingContextMenu"
:title="$root.getLz('term.more')" v-b-tooltip.hover>
<div class="svg-icon"></div> <div class="svg-icon"></div>
</button> </button>
</div> </div>
@ -131,7 +144,9 @@
<template v-if="getThemeDirective('windowLayout') != 'twopanel'"> <template v-if="getThemeDirective('windowLayout') != 'twopanel'">
<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}"
:title="cfg.audio.muted ? $root.getLz('term.unmute') : $root.getLz('term.mute')"
v-b-tooltip.hover></button>
<input type="range" @wheel="volumeWheel" :step="cfg.audio.volumeStep" 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()"
v-b-tooltip.hover :title="formatVolumeTooltip()"> v-b-tooltip.hover :title="formatVolumeTooltip()">

View file

@ -43,7 +43,7 @@
</sidebar-library-item> </sidebar-library-item>
</template> </template>
<div class="app-sidebar-header-text" <div class="app-sidebar-header-text"
@click="cfg.general.sidebarCollapsed.library = !cfg.general.sidebarCollapsed.library" @click="cfg.general.sidebarCollapsed.library = !cfg.general.sidebarCollapsed.library"
:class="{collapsed: cfg.general.sidebarCollapsed.library}"> :class="{collapsed: cfg.general.sidebarCollapsed.library}">
{{$root.getLz('term.library')}} {{$root.getLz('term.library')}}
@ -65,7 +65,7 @@
</template> </template>
<template v-if="getPlaylistFolderChildren('p.applemusic').length != 0"> <template v-if="getPlaylistFolderChildren('p.applemusic').length != 0">
<div class="app-sidebar-header-text" <div class="app-sidebar-header-text"
@click="cfg.general.sidebarCollapsed.amplaylists = !cfg.general.sidebarCollapsed.amplaylists" @click="cfg.general.sidebarCollapsed.amplaylists = !cfg.general.sidebarCollapsed.amplaylists"
@contextmenu="playlistHeaderContextMenu" @contextmenu="playlistHeaderContextMenu"
:class="{collapsed: cfg.general.sidebarCollapsed.amplaylists}"> :class="{collapsed: cfg.general.sidebarCollapsed.amplaylists}">
@ -76,7 +76,7 @@
</sidebar-playlist> </sidebar-playlist>
</template> </template>
</template> </template>
<div class="app-sidebar-header-text" <div class="app-sidebar-header-text"
@click="cfg.general.sidebarCollapsed.playlists = !cfg.general.sidebarCollapsed.playlists" @click="cfg.general.sidebarCollapsed.playlists = !cfg.general.sidebarCollapsed.playlists"
@contextmenu="playlistHeaderContextMenu" @contextmenu="playlistHeaderContextMenu"
:class="{collapsed: cfg.general.sidebarCollapsed.playlists}"> :class="{collapsed: cfg.general.sidebarCollapsed.playlists}">
@ -187,32 +187,44 @@
<div class="control-buttons"> <div class="control-buttons">
<div class="app-chrome-item"> <div class="app-chrome-item">
<button class="playback-button--small shuffle" v-if="mk.shuffleMode == 0" <button class="playback-button--small shuffle" v-if="mk.shuffleMode == 0"
@click="mk.shuffleMode = 1"></button> @click="mk.shuffleMode = 1" :title="$root.getLz('term.enableShuffle')"
<button class="playback-button--small shuffle active" v-else @click="mk.shuffleMode = 0"></button> v-b-tooltip.hover.righttop></button>
<button class="playback-button--small shuffle active" v-else
@click="mk.shuffleMode = 0" :title="$root.getLz('term.disableShuffle')"
v-b-tooltip.hover.righttop></button>
</div> </div>
<div class="app-chrome-item"> <div class="app-chrome-item">
<button class="playback-button previous" @click="prevButton()"></button> <button class="playback-button previous" @click="prevButton()"
:title="$root.getLz('term.previous')" v-b-tooltip.hover></button>
</div> </div>
<div class="app-chrome-item"> <div class="app-chrome-item">
<button class="playback-button pause" @click="mk.pause()" v-if="mk.isPlaying"></button> <button class="playback-button pause" @click="mk.pause()" v-if="mk.isPlaying"
<button class="playback-button play" @click="mk.play()" v-else></button> :title="$root.getLz('term.pause')" v-b-tooltip.hover></button>
<button class="playback-button play" @click="mk.play()" v-else
:title="$root.getLz('term.play')" v-b-tooltip.hover></button>
</div> </div>
<div class="app-chrome-item"> <div class="app-chrome-item">
<button class="playback-button next" @click="skipToNextItem()"></button> <button class="playback-button next" @click="skipToNextItem()"
:title="$root.getLz('term.next')" v-b-tooltip.hover></button>
</div> </div>
<div class="app-chrome-item"> <div class="app-chrome-item">
<button class="playback-button--small repeat" v-if="mk.repeatMode == 0" <button class="playback-button--small repeat" v-if="mk.repeatMode == 0"
@click="mk.repeatMode = 1"></button> @click="mk.repeatMode = 1" :title="$root.getLz('term.enableRepeatOne')"
v-b-tooltip.hover></button>
<button class="playback-button--small repeat repeatOne" @click="mk.repeatMode = 2" <button class="playback-button--small repeat repeatOne" @click="mk.repeatMode = 2"
v-else-if="mk.repeatMode == 1"></button> v-else-if="mk.repeatMode == 1" :title="$root.getLz('term.disableRepeatOne')"
v-b-tooltip.hover></button>
<button class="playback-button--small repeat active" @click="mk.repeatMode = 0" <button class="playback-button--small repeat active" @click="mk.repeatMode = 0"
v-else-if="mk.repeatMode == 2"></button> v-else-if="mk.repeatMode == 2" :title="$root.getLz('term.disableRepeat')"
v-b-tooltip.hover></button>
</div> </div>
</div> </div>
<div class="app-chrome-item volume"> <div class="app-chrome-item volume">
<div class="input-container"> <div class="input-container">
<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}"
:title="cfg.audio.muted ? $root.getLz('term.unmute') : $root.getLz('term.mute')"
v-b-tooltip.hover></button>
<input type="range" class="" @wheel="volumeWheel" :step="cfg.audio.volumeStep" min="0" <input type="range" class="" @wheel="volumeWheel" :step="cfg.audio.volumeStep" min="0"
:max="cfg.audio.maxVolume" v-model="mk.volume" v-if="typeof mk.volume != 'undefined'" :max="cfg.audio.maxVolume" v-model="mk.volume" v-if="typeof mk.volume != 'undefined'"
@change="checkMuteChange()" v-b-tooltip.hover @change="checkMuteChange()" v-b-tooltip.hover

View file

@ -3,7 +3,7 @@
<div class="modal-window"> <div class="modal-window">
<div class="modal-header"> <div class="modal-header">
<div class="modal-title">{{app.getLz('action.addToPlaylist')}}</div> <div class="modal-title">{{app.getLz('action.addToPlaylist')}}</div>
<button class="close-btn" @click="app.resetState()"></button> <button class="close-btn" @click="app.resetState()" :aria-label="app.getLz('action.close')"></button>
</div> </div>
<div class="modal-content"> <div class="modal-content">
<button class="playlist-item" <button class="playlist-item"
@ -25,7 +25,7 @@
v-model="searchQuery" v-model="searchQuery"
@input="search()" @input="search()"
class="search-input"> class="search-input">
</div> </div>
</div> </div>
</div> </div>
</div> </div>

View file

@ -3,7 +3,7 @@
<div class="modal-window airplay-modal"> <div class="modal-window airplay-modal">
<div class="modal-header"> <div class="modal-header">
<div class="modal-title">{{'Enter password'}}</div> <div class="modal-title">{{'Enter password'}}</div>
<button class="close-btn" @click="close()"></button> <button class="close-btn" @click="close()" :aria-label="app.getLz('action.close')"></button>
</div> </div>
<div class="modal-content" style="overflow-y: overlay; padding: 3%"> <div class="modal-content" style="overflow-y: overlay; padding: 3%">
<input type="text" v-model="passcode"/> <input type="text" v-model="passcode"/>

View file

@ -4,7 +4,7 @@
<div class="modal-window"> <div class="modal-window">
<div class="modal-header"> <div class="modal-header">
<div class="modal-title">{{app.getLz('term.audioControls')}}</div> <div class="modal-title">{{app.getLz('term.audioControls')}}</div>
<button class="close-btn" @click="app.resetState()"></button> <button class="close-btn" @click="app.resetState()" :aria-label="app.getLz('action.close')"></button>
</div> </div>
<div class="modal-content"> <div class="modal-content">
<div class="md-option-line"> <div class="md-option-line">

View file

@ -4,7 +4,7 @@
<div class="modal-window"> <div class="modal-window">
<div class="modal-header"> <div class="modal-header">
<div class="modal-title">{{app.getLz('settings.option.audio.changePlaybackRate')}}</div> <div class="modal-title">{{app.getLz('settings.option.audio.changePlaybackRate')}}</div>
<button class="close-btn" @click="app.resetState()"></button> <button class="close-btn" @click="app.resetState()" :aria-label="app.getLz('action.close')"></button>
</div> </div>
<div class="modal-content"> <div class="modal-content">
<div class="md-option-line"> <div class="md-option-line">

View file

@ -4,7 +4,7 @@
<div class="modal-window"> <div class="modal-window">
<div class="modal-header"> <div class="modal-header">
<div class="modal-title">{{app.getLz('term.audioSettings')}}</div> <div class="modal-title">{{app.getLz('term.audioSettings')}}</div>
<button class="close-btn" @click="app.resetState()"></button> <button class="close-btn" @click="app.resetState()" :aria-label="app.getLz('action.close')"></button>
</div> </div>
<div class="modal-content"> <div class="modal-content">
<button class="playlist-item" <button class="playlist-item"

View file

@ -3,7 +3,7 @@
<div class="modal-window"> <div class="modal-window">
<div class="modal-header"> <div class="modal-header">
<div class="modal-title">{{$root.getLz('action.cast.todevices')}}</div> <div class="modal-title">{{$root.getLz('action.cast.todevices')}}</div>
<button class="close-btn" @click="close()"></button> <button class="close-btn" @click="close()" :aria-label="app.getLz('action.close')"></button>
</div> </div>
<div class="modal-content" style="overflow-y: overlay; padding: 3%"> <div class="modal-content" style="overflow-y: overlay; padding: 3%">
<div class="md-labeltext">{{$root.getLz('action.cast.chromecast')}}</div> <div class="md-labeltext">{{$root.getLz('action.cast.chromecast')}}</div>
@ -111,11 +111,11 @@
}, },
setCast(device) { setCast(device) {
CiderAudio.sendAudio(); CiderAudio.sendAudio();
this.activeCasts.push(device); this.activeCasts.push(device);
ipcRenderer.send('performGCCast', device, "Cider", "Playing ...", "Test build", ''); ipcRenderer.send('performGCCast', device, "Cider", "Playing ...", "Test build", '');
}, },
setAirPlayCast(device) { setAirPlayCast(device) {
this.activeCasts.push(device); this.activeCasts.push(device);
ipcRenderer.send("performAirplayPCM",device.host,device.port,null,"","","","",device.txt) ipcRenderer.send("performAirplayPCM",device.host,device.port,null,"","","","",device.txt)
}, },
stopCasting() { stopCasting() {

View file

@ -4,10 +4,10 @@
<div class="modal-window"> <div class="modal-window">
<div class="modal-header"> <div class="modal-header">
<div class="modal-title">{{app.getLz('action.addToLibrary')}}</div> <div class="modal-title">{{app.getLz('action.addToLibrary')}}</div>
<button class="close-btn" @click="app.resetState()"></button> <button class="close-btn" @click="app.resetState()" :aria-label="app.getLz('action.close')"></button>
</div> </div>
<div class="modal-content"> <div class="modal-content">
<button class="playlist-item" <button class="playlist-item"
:class="{ focused: playlist.id == focused }" :class="{ focused: playlist.id == focused }"
@click="addToPlaylist(playlist.id)" style="width:100%;" v-for="playlist in playlistSorted" v-if="playlist.attributes.canEdit && playlist.type != 'library-playlist-folders'"> @click="addToPlaylist(playlist.id)" style="width:100%;" v-for="playlist in playlistSorted" v-if="playlist.attributes.canEdit && playlist.type != 'library-playlist-folders'">
<div class="icon"><%- include("../svg/playlist.svg") %></div> <div class="icon"><%- include("../svg/playlist.svg") %></div>
@ -25,7 +25,7 @@
v-model="searchQuery" v-model="searchQuery"
@input="search()" @input="search()"
class="search-input"> class="search-input">
</div> </div>
</div> </div>
</div> </div>
</div> </div>

View file

@ -3,7 +3,7 @@
<div class="modal-window" > <div class="modal-window" >
<div class="modal-header"> <div class="modal-header">
<div class="modal-title">{{$root.getLz('term.equalizer')}}</div> <div class="modal-title">{{$root.getLz('term.equalizer')}}</div>
<button class="close-btn" @click="close()"></button> <button class="close-btn" @click="close()" :aria-label="$root.getLz('action.close')"></button>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<select class="md-select" style="width:220px;text-align:center;margin-right:245px" v-model="$root.cfg.audio.equalizer.preset" v-on:change="changePreset($root.cfg.audio.equalizer.preset)"> <select class="md-select" style="width:220px;text-align:center;margin-right:245px" v-model="$root.cfg.audio.equalizer.preset" v-on:change="changePreset($root.cfg.audio.equalizer.preset)">
<optgroup :label="$root.getLz('term.userPresets')"> <optgroup :label="$root.getLz('term.userPresets')">
@ -50,7 +50,7 @@
<input tabindex="0" type="number" class="eq-freq" orient="vertical" min="-12" max="12" step="0.1" v-model="$root.cfg.audio.equalizer.gain[2]" @change="changeGain(2)"> <input tabindex="0" type="number" class="eq-freq" orient="vertical" min="-12" max="12" step="0.1" v-model="$root.cfg.audio.equalizer.gain[2]" @change="changeGain(2)">
<input tabindex="0" type="range" class="eq-slider" orient="vertical" min="-12" max="12" step="0.1" v-model="$root.cfg.audio.equalizer.gain[2]" @change="changeGain(2)"> <input tabindex="0" type="range" class="eq-slider" orient="vertical" min="-12" max="12" step="0.1" v-model="$root.cfg.audio.equalizer.gain[2]" @change="changeGain(2)">
<input type="number" class="eq-freq" orient="vertical" min="88" max="177" step="8" v-model="$root.cfg.audio.equalizer.frequencies[2]" @change="changeFreq(2)"> <input type="number" class="eq-freq" orient="vertical" min="88" max="177" step="8" v-model="$root.cfg.audio.equalizer.frequencies[2]" @change="changeFreq(2)">
<input type="number" class="eq-q" orient="vertical" min="0" max="5" step="0.1" v-model="$root.cfg.audio.equalizer.Q[2]" @change="changeQ(2)"> <input type="number" class="eq-q" orient="vertical" min="0" max="5" step="0.1" v-model="$root.cfg.audio.equalizer.Q[2]" @change="changeQ(2)">
</div> </div>
<div class="input-container"> <div class="input-container">
<input tabindex="0" type="number" class="eq-freq" orient="vertical" min="-12" max="12" step="0.1" v-model="$root.cfg.audio.equalizer.gain[3]" @change="changeGain(3)"> <input tabindex="0" type="number" class="eq-freq" orient="vertical" min="-12" max="12" step="0.1" v-model="$root.cfg.audio.equalizer.gain[3]" @change="changeGain(3)">
@ -95,8 +95,8 @@
<input type="number" class="eq-q" orient="vertical" min="0" max="5" step="0.1" v-model="$root.cfg.audio.equalizer.Q[9]" @change="changeQ(9)"> <input type="number" class="eq-q" orient="vertical" min="0" max="5" step="0.1" v-model="$root.cfg.audio.equalizer.Q[9]" @change="changeQ(9)">
</div> </div>
</div> </div>
</div> </div>
<div class="modal-lowercontent"> <div class="modal-lowercontent">
<div class="row"> <div class="row">
<div class="col"> <div class="col">

View file

@ -51,39 +51,49 @@
:max="app.mk.currentPlaybackDuration" :value="app.getSongProgress()"> :max="app.mk.currentPlaybackDuration" :value="app.getSongProgress()">
</div> </div>
</div> </div>
<div class="control-buttons"> <div class="control-buttons">
<div class="app-chrome-item"> <div class="app-chrome-item">
<button class="playback-button--small shuffle" v-if="app.mk.shuffleMode == 0" <button class="playback-button--small shuffle" v-if="app.mk.shuffleMode == 0"
@click="app.mk.shuffleMode = 1"></button> @click="app.mk.shuffleMode = 1" :title="$root.getLz('term.enableShuffle')"
v-b-tooltip.hover></button>
<button class="playback-button--small shuffle active" v-else <button class="playback-button--small shuffle active" v-else
@click="app.mk.shuffleMode = 0"></button> @click="app.mk.shuffleMode = 0" :title="$root.getLz('term.disableShuffle')"
v-b-tooltip.hover></button>
</div> </div>
<div class="app-chrome-item"> <div class="app-chrome-item">
<button class="playback-button previous" @click="app.prevButton()"></button> <button class="playback-button previous" @click="app.prevButton()"
:title="$root.getLz('term.previous')" v-b-tooltip.hover></button>
</div> </div>
<div class="app-chrome-item"> <div class="app-chrome-item">
<button class="playback-button pause" @click="app.mk.pause()" v-if="app.mk.isPlaying"></button> <button class="playback-button pause" @click="app.mk.pause()" v-if="app.mk.isPlaying"
<button class="playback-button play" @click="app.mk.play()" v-else></button> :title="$root.getLz('term.pause')" v-b-tooltip.hover></button>
<button class="playback-button play" @click="app.mk.play()" v-else
:title="$root.getLz('term.play')" v-b-tooltip.hover></button>
</div> </div>
<div class="app-chrome-item"> <div class="app-chrome-item">
<button class="playback-button next" @click="app.skipToNextItem()"></button> <button class="playback-button next" @click="app.skipToNextItem()"
:title="$root.getLz('term.next')" v-b-tooltip.hover></button>
</div> </div>
<div class="app-chrome-item"> <div class="app-chrome-item">
<button class="playback-button--small repeat" v-if="app.mk.repeatMode == 0" <button class="playback-button--small repeat" v-if="app.mk.repeatMode == 0"
@click="app.mk.repeatMode = 1"></button> @click="app.mk.repeatMode = 1" :title="$root.getLz('term.enableRepeatOne')"
v-b-tooltip.hover></button>
<button class="playback-button--small repeat repeatOne" @click="app.mk.repeatMode = 2" <button class="playback-button--small repeat repeatOne" @click="app.mk.repeatMode = 2"
v-else-if="app.mk.repeatMode == 1"></button> v-else-if="app.mk.repeatMode == 1" :title="$root.getLz('term.disableRepeatOne')"
v-b-tooltip.hover></button>
<button class="playback-button--small repeat active" @click="app.mk.repeatMode = 0" <button class="playback-button--small repeat active" @click="app.mk.repeatMode = 0"
v-else-if="app.mk.repeatMode == 2"></button> v-else-if="app.mk.repeatMode == 2" :title="$root.getLz('term.disableRepeat')"
v-b-tooltip.hover></button>
</div> </div>
</div> </div>
<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}"
:title="app.cfg.audio.muted ? $root.getLz('term.unmute') : $root.getLz('term.mute')" v-b-tooltip.hover></button>
<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" <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()"
v-b-tooltip.hover :title="$root.formatVolumeTooltip()"> v-b-tooltip.hover :title="$root.formatVolumeTooltip()">
</div> </div>
</div> </div>
</div> </div>
</template> </template>
@ -99,17 +109,17 @@
<lyrics-view :yoffset="120" :time="time" :lyrics="lyrics" <lyrics-view :yoffset="120" :time="time" :lyrics="lyrics"
:richlyrics="richlyrics"></lyrics-view> :richlyrics="richlyrics"></lyrics-view>
</div> </div>
<div class="queue-col" v-if="tabMode == 'queue'"> <div class="queue-col" v-if="tabMode == 'queue'">
<cider-queue v-if="tabMode == 'queue'" ref="queue" ></cider-queue> <cider-queue v-if="tabMode == 'queue'" ref="queue" ></cider-queue>
</div> </div>
</div> </div>
</div> </div>
<div class="tab-toggles"> <div class="tab-toggles">
<div class="lyrics" :class="{active: tabMode == 'lyrics'}" @click="tabMode = (tabMode == 'lyrics') ? '' : 'lyrics'"></div> <div class="lyrics" :class="{active: tabMode == 'lyrics'}" @click="tabMode = (tabMode == 'lyrics') ? '' : 'lyrics'"></div>
<div class="queue" :class="{active: tabMode == 'queue'}" @click="tabMode = (tabMode == 'queue') ? '' :'queue'"></div> <div class="queue" :class="{active: tabMode == 'queue'}" @click="tabMode = (tabMode == 'queue') ? '' :'queue'"></div>
</div> </div>
</div> </div>
</script> </script>

View file

@ -18,7 +18,7 @@
</button> </button>
</div> </div>
<transition name="fabfade"> <transition name="fabfade">
<button class="top-fab" v-show="showFab" @click="scrollToTop()"> <button class="top-fab" v-show="showFab" @click="scrollToTop()" :aria-label="app.getLz('action.scrollToTop')">
<%- include("../svg/arrow-up.svg") %> <%- include("../svg/arrow-up.svg") %>
</button> </button>
</transition> </transition>

View file

@ -20,10 +20,10 @@
<div class="popular" v-if="!showInLibrary && item?.meta?.popularity != null && item?.meta?.popularity > 0.7"></div> <div class="popular" v-if="!showInLibrary && item?.meta?.popularity != null && item?.meta?.popularity > 0.7"></div>
<div class="isLibrary" v-if="showLibraryStatus == true"> <div class="isLibrary" v-if="showLibraryStatus == true">
<div v-if="showInLibrary" :style="{display: (showInLibrary ? 'block' : 'none'), 'margin-left':'11px'}"> <div v-if="showInLibrary" :style="{display: (showInLibrary ? 'block' : 'none'), 'margin-left':'11px'}">
<button @click="addToLibrary()" v-if="!addedToLibrary && (showIndex == false ||(showIndex == true && showIndexPlaylist != false))"> <button @click="addToLibrary()" v-if="!addedToLibrary && (showIndex == false ||(showIndex == true && showIndexPlaylist != false))" :aria-label="$root.getLz('action.addToLibrary')">
<div class="svg-icon addIcon" :style="{'--color': 'var(--keyColor)', '--url': 'url(./assets/feather/plus.svg)'}"></div> <div class="svg-icon addIcon" :style="{'--color': 'var(--keyColor)', '--url': 'url(./assets/feather/plus.svg)'}"></div>
</button> </button>
<button v-else-if='!(showArtwork == true && (showIndex == false ||(showIndex == true && showIndexPlaylist != false)))' @click="playTrack()"> <button v-else-if='!(showArtwork == true && (showIndex == false ||(showIndex == true && showIndexPlaylist != false)))' @click="playTrack()" :aria-label="$root.getLz('term.play')">
<div class="svg-icon playIcon" :style="{'--color': 'var(--keyColor)', '--url': 'url(./assets/feather/play.svg)'}"></div> <div class="svg-icon playIcon" :style="{'--color': 'var(--keyColor)', '--url': 'url(./assets/feather/play.svg)'}"></div>
</button> </button>
</div> </div>
@ -42,7 +42,9 @@
:size="48" :size="48"
:bgcolor="getBgColor()" :bgcolor="getBgColor()"
:type="item.type"></mediaitem-artwork> :type="item.type"></mediaitem-artwork>
<button class="overlay-play" @click="playTrack()"><%- include("../svg/play.svg") %></button> <button class="overlay-play" @click="playTrack()" :aria-label="$root.getLz('term.play')">
<%- include("../svg/play.svg") %>
</button>
</div> </div>
<div class="info-rect" :style="{'padding-left': (showArtwork ? '' : '16px')}" <div class="info-rect" :style="{'padding-left': (showArtwork ? '' : '16px')}"
@dblclick="route()"> @dblclick="route()">

View file

@ -8,7 +8,7 @@
<div v-if="reasonShown" class="reasonSP ">{{item?.meta?.reason?.stringForDisplay ?? ''}}</div> <div v-if="reasonShown" class="reasonSP ">{{item?.meta?.reason?.stringForDisplay ?? ''}}</div>
<div style="{'--spcolor': getBgColor()}" <div style="{'--spcolor': getBgColor()}"
class="cd-mediaitem-square" :class="getClasses()" @contextmenu="getContextMenu"> class="cd-mediaitem-square" :class="getClasses()" @contextmenu="getContextMenu">
<template> <template>
<div class="artwork-container"> <div class="artwork-container">
<div class="unavailable-overlay" v-if="unavailable"> <div class="unavailable-overlay" v-if="unavailable">
<div class="codicon codicon-circle-slash"></div> <div class="codicon codicon-circle-slash"></div>
@ -24,9 +24,13 @@
:type="item.type"></mediaitem-artwork> :type="item.type"></mediaitem-artwork>
</div> </div>
<button class="menu-btn" v-if="!nomenu.includes(item.type)" <button class="menu-btn" v-if="!nomenu.includes(item.type)"
@click="getContextMenu"><%- include("../svg/more.svg") %></button> @click="getContextMenu" :aria-label="$root.getLz('term.more')">
<%- include("../svg/more.svg") %>
</button>
<button class="play-btn" v-if="!noplay.includes(item.type)" <button class="play-btn" v-if="!noplay.includes(item.type)"
@click="app.playMediaItem(item)"><%- include("../svg/play.svg") %></button> @click="app.playMediaItem(item)" :aria-label="$root.getLz('term.play')">
<%- include("../svg/play.svg") %>
</button>
<div class="badge-container" v-if="itemBadges.length != 0"> <div class="badge-container" v-if="itemBadges.length != 0">
<div class="socialBadge" v-for="badge in itemBadges.limit(1)"> <div class="socialBadge" v-for="badge in itemBadges.limit(1)">
<mediaitem-artwork <mediaitem-artwork
@ -39,7 +43,7 @@
<div class="title" :title="item.attributes?.name ?? (item.relationships?.contents?.data[0]?.attributes?.name ?? '')" v-if="item.attributes.artistNames == null || kind!= 'card'" @click='app.routeView(item)'> <div class="title" :title="item.attributes?.name ?? (item.relationships?.contents?.data[0]?.attributes?.name ?? '')" v-if="item.attributes.artistNames == null || kind!= 'card'" @click='app.routeView(item)'>
<div class="item-navigate text-overflow-elipsis">{{ item.attributes?.name ?? (item.relationships?.contents?.data[0]?.attributes?.name ?? '') }}</div> <div class="item-navigate text-overflow-elipsis">{{ item.attributes?.name ?? (item.relationships?.contents?.data[0]?.attributes?.name ?? '') }}</div>
<div class="explicit-icon" v-if="item.attributes && item.attributes.contentRating == 'explicit'" style= "background-image: url(./assets/explicit.svg);height: 12px;width: 12px;filter: contrast(0);background-repeat: no-repeat;margin-top: 2.63px;margin-left: 4px;"></div> <div class="explicit-icon" v-if="item.attributes && item.attributes.contentRating == 'explicit'" style= "background-image: url(./assets/explicit.svg);height: 12px;width: 12px;filter: contrast(0);background-repeat: no-repeat;margin-top: 2.63px;margin-left: 4px;"></div>
</div> </div>
<div :title="getSubtitle()" class="subtitle item-navigate text-overflow-elipsis" @click="getSubtitleNavigation()" <div :title="getSubtitle()" class="subtitle item-navigate text-overflow-elipsis" @click="getSubtitleNavigation()"
v-if="getSubtitle() != ''"> v-if="getSubtitle() != ''">
{{ getSubtitle() }} {{ getSubtitle() }}
@ -242,9 +246,9 @@
let type = [] let type = []
try{ try{
type = this.item.type type = this.item.type
}catch(e) {console.log('sd',this.item)} }catch(e) {console.log('sd',this.item)}
if (this.kind != "") { if (this.kind != "") {
type = this.kind type = this.kind
} }
@ -252,7 +256,7 @@
default: default:
return [] return []
break; break;
case "editorial-elements": case "editorial-elements":
case "card": case "card":
return ["mediaitem-card"] return ["mediaitem-card"]
break; break;
@ -265,7 +269,7 @@
case "music-videos": case "music-videos":
case "uploadedVideo": case "uploadedVideo":
case "uploaded-videos": case "uploaded-videos":
case "library-music-videos": case "library-music-videos":
return "mediaitem-video"; return "mediaitem-video";
break; break;
} }

View file

@ -4,12 +4,12 @@
<div class="modal-header"> <div class="modal-header">
<div class="modal-title">{{data.title}}</div> <div class="modal-title">{{data.title}}</div>
<div class="modal-subtitle modal-title">{{data.subtitle ?? ""}}</div> <div class="modal-subtitle modal-title">{{data.subtitle ?? ""}}</div>
<button class="close-btn" @click="close()"></button> <button class="close-btn" @click="close()" :aria-label="app.getLz('action.close')"></button>
</div> </div>
<div class="modal-content"> <div class="modal-content">
<div class="content" v-html="data.content"> <div class="content" v-html="data.content">
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</script> </script>
@ -31,7 +31,7 @@
self.timedelay = true self.timedelay = true
}, 1000); }, 1000);
}) })
}, },
methods: { methods: {
close() { close() {

View file

@ -3,7 +3,7 @@
<div class="modal-window"> <div class="modal-window">
<div class="modal-header"> <div class="modal-header">
<div class="modal-title">{{$root.getLz('term.pluginMenu')}}</div> <div class="modal-title">{{$root.getLz('term.pluginMenu')}}</div>
<button class="close-btn" @click="app.resetState()"></button> <button class="close-btn" @click="app.resetState()" :aria-label="app.getLz('action.close')"></button>
</div> </div>
<div class="modal-content"> <div class="modal-content">
<span class="playlist-item" v-if="!app.pluginInstalled"> <span class="playlist-item" v-if="!app.pluginInstalled">

View file

@ -3,11 +3,11 @@
<div class="modal-window" > <div class="modal-window" >
<div class="modal-header"> <div class="modal-header">
<div class="modal-title">{{`Web Remote QR : ` + url }}</div> <div class="modal-title">{{`Web Remote QR : ` + url }}</div>
<button class="close-btn" @click="close()"></button> <button class="close-btn" @click="close()" :aria-label="app.getLz('action.close')"></button>
</div> </div>
<div class="modal-content"> <div class="modal-content">
<img class="qrimg" :src="src"/> <img class="qrimg" :src="src"/>
</div> </div>
</div> </div>
</div> </div>
</script> </script>
@ -18,12 +18,12 @@
data: function () { data: function () {
return { return {
app: this.$root, app: this.$root,
} }
}, },
props: ["src","url"], props: ["src","url"],
mounted() { mounted() {
}, },
methods: { methods: {
close() { close() {

View file

@ -5,7 +5,11 @@
<h3 class="queue-header-text">{{app.getLz('term.queue')}}</h3> <h3 class="queue-header-text">{{app.getLz('term.queue')}}</h3>
</div> </div>
<div class="col-auto flex-center"> <div class="col-auto flex-center">
<button class="autoplay" :style="{'background': app.mk.autoplayEnabled ? 'var(--keyColor)' : ''}" @click="app.mk.autoplayEnabled = !app.mk.autoplayEnabled"> <img class="infinity"></button> <button class="autoplay" :style="{'background': app.mk.autoplayEnabled ? 'var(--keyColor)' : ''}"
@click="app.mk.autoplayEnabled = !app.mk.autoplayEnabled"
:title="app.getLz('term.autoplay')" v-b-tooltip.hover>
<img class="infinity">
</button>
</div> </div>
</div> </div>
<div class="queue-body" v-if="page == 'history'"> <div class="queue-body" v-if="page == 'history'">

View file

@ -4,7 +4,7 @@
<div class="modal-window"> <div class="modal-window">
<div class="modal-header"> <div class="modal-header">
<div class="modal-title">{{app.getLz('action.addToPlaylist')}}</div> <div class="modal-title">{{app.getLz('action.addToPlaylist')}}</div>
<button class="close-btn" @click="app.resetState()"></button> <button class="close-btn" @click="app.resetState()" :aria-label="app.getLz('action.close')"></button>
</div> </div>
<div class="modal-content"> <div class="modal-content">
<button class="playlist-item" <button class="playlist-item"
@ -26,7 +26,7 @@
v-model="searchQuery" v-model="searchQuery"
@input="search()" @input="search()"
class="search-input"> class="search-input">
</div> </div>
</div> </div>
</div> </div>
</div> </div>

View file

@ -3,7 +3,7 @@
<div class="modal-window" v-if="ready"> <div class="modal-window" v-if="ready">
<div class="modal-header"> <div class="modal-header">
<div class="modal-title">{{$root.getLz('spatial.spatialProperties')}}</div> <div class="modal-title">{{$root.getLz('spatial.spatialProperties')}}</div>
<button class="close-btn" @click="close()"></button> <button class="close-btn" @click="close()" :aria-label="$root.getLz('action.close')"></button>
</div> </div>
<div class="modal-content"> <div class="modal-content">
<template v-if="roomEditType == 'dimensions'"> <template v-if="roomEditType == 'dimensions'">
@ -15,7 +15,7 @@
</div> </div>
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<div class="row"> <div class="row">
<div class="col-3 flex-center"> <div class="col-3 flex-center">
{{$root.getLz('spatial.width')}} {{$root.getLz('spatial.width')}}
@ -29,7 +29,7 @@
v-model="room_dimensions.width" step="1"/> v-model="room_dimensions.width" step="1"/>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-3 flex-center"> <div class="col-3 flex-center">
{{$root.getLz('spatial.height')}} {{$root.getLz('spatial.height')}}
@ -43,7 +43,7 @@
v-model="room_dimensions.height" step="1"/> v-model="room_dimensions.height" step="1"/>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-3 flex-center"> <div class="col-3 flex-center">
{{$root.getLz('spatial.depth')}} {{$root.getLz('spatial.depth')}}
@ -80,7 +80,7 @@
</div> </div>
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<div class="row"> <div class="row">
<div class="col-3 flex-center"> <div class="col-3 flex-center">
X ({{$root.getLz('spatial.listener')}}) X ({{$root.getLz('spatial.listener')}})

View file

@ -65,7 +65,7 @@
<div id="LOADER"> <div id="LOADER">
<%- include("../assets/cider-round.svg") %> <%- include("../assets/cider-round.svg") %>
</div> </div>
<div id="app" :class="getAppClasses()"> <div id="app" :class="getAppClasses()" :window-style="cfg.visual.directives.windowLayout">
<transition name="fsModeSwitch"> <transition name="fsModeSwitch">
<div id="app-main" v-show="appMode == 'player'"> <div id="app-main" v-show="appMode == 'player'">
<%- include('app/chrome-top'); %> <%- include('app/chrome-top'); %>

View file

@ -16,7 +16,7 @@
size="190" type="artists"></mediaitem-artwork> size="190" type="artists"></mediaitem-artwork>
<button class="overlay-play" @click="app.mk.setStationQueue({artist:'a-'+data.id}).then(()=>{ <button class="overlay-play" @click="app.mk.setStationQueue({artist:'a-'+data.id}).then(()=>{
app.mk.play() app.mk.play()
})"> })" :aria-label="app.getLz('term.play')">
<%- include("../svg/play.svg") %> <%- include("../svg/play.svg") %>
</button> </button>
</div> </div>
@ -26,11 +26,11 @@
> >
<button class="artist-play" @click="app.mk.setStationQueue({artist:'a-'+data.id}).then(()=>{ <button class="artist-play" @click="app.mk.setStationQueue({artist:'a-'+data.id}).then(()=>{
app.mk.play() app.mk.play()
})"><%- include("../svg/play.svg") %></button> })" :aria-label="app.getLz('term.play')"><%- include("../svg/play.svg") %></button>
<h1>{{ data.attributes.name }}</h1> <h1>{{ data.attributes.name }}</h1>
</div> </div>
</div> </div>
<button class="more-btn-round" @click="artistMenu" style="pointer-events: all;"> <button class="more-btn-round" @click="artistMenu" style="pointer-events: all;" :aria-label="app.getLz('term.more')">
<div class="svg-icon"></div> <div class="svg-icon"></div>
</button> </button>
</div> </div>
@ -43,13 +43,13 @@
<div class="col-auto flex-center"> <div class="col-auto flex-center">
<button class="artist-play" style="display:block;" @click="app.mk.setStationQueue({artist:'a-'+data.id}).then(()=>{ <button class="artist-play" style="display:block;" @click="app.mk.setStationQueue({artist:'a-'+data.id}).then(()=>{
app.mk.play() app.mk.play()
})"><%- include("../svg/play.svg") %></button> })" :aria-label="app.getLz('term.play')"><%- include("../svg/play.svg") %></button>
</div> </div>
<div class="col"> <div class="col">
<h3>{{ data.attributes.name }}</h3> <h3>{{ data.attributes.name }}</h3>
</div> </div>
<div class="col-auto flex-center"> <div class="col-auto flex-center">
<button class="more-btn-round" @click="artistMenu"> <button class="more-btn-round" @click="artistMenu" :aria-label="app.getLz('term.more')">
<div class="svg-icon"></div> <div class="svg-icon"></div>
</button> </button>
</div> </div>
@ -79,10 +79,10 @@
<div class="mediaitem-list-item__grid"> <div class="mediaitem-list-item__grid">
<listitem-horizontal :items="data.views['top-songs'].data.limit(20)"> <listitem-horizontal :items="data.views['top-songs'].data.limit(20)">
</listitem-horizontal> </listitem-horizontal>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="row well"> <div class="row well">
@ -112,7 +112,7 @@
</template> </template>
<div class="row"> <div class="row">
<div class="col" v-if="data.attributes.artistBio"> <div class="col" v-if="data.attributes.artistBio">
<h3>{{ $root.stringTemplateParser($root.getLz('term.aboutArtist'), {"artistName": data.attributes.name}) }}</h3> <h3>{{ $root.stringTemplateParser($root.getLz('term.aboutArtist'), {"artistName": data.attributes.name}) }}</h3>
<p v-html="data.attributes.artistBio"></p> <p v-html="data.attributes.artistBio"></p>
</div> </div>
<div class="col"> <div class="col">

View file

@ -94,7 +94,7 @@
<img :class="(!inLibrary) ? 'md-ico-add' : 'md-ico-remove'"> <img :class="(!inLibrary) ? 'md-ico-add' : 'md-ico-remove'">
{{app.getLz('term.confirm')}} {{app.getLz('term.confirm')}}
</button> </button>
<button class="more-btn-round" style="float:right;" @click="menu"> <button class="more-btn-round" style="float:right;" @click="menu" :aria-label="app.getLz('term.more')">
<div class="svg-icon"></div> <div class="svg-icon"></div>
</button> </button>
</div> </div>
@ -145,7 +145,7 @@
</div> </div>
</div> </div>
<div class="col-auto flex-center"> <div class="col-auto flex-center">
<button class="more-btn-round" style="float:right;" @click="menu"> <button class="more-btn-round" style="float:right;" @click="menu" :aria-label="app.getLz('term.more')">
<div class="svg-icon"></div> <div class="svg-icon"></div>
</button> </button>
</div> </div>

View file

@ -18,7 +18,7 @@
</button> </button>
</div> </div>
<transition name="fabfade"> <transition name="fabfade">
<button class="top-fab" v-show="showFab" @click="scrollToTop()"> <button class="top-fab" v-show="showFab" @click="scrollToTop()" :aria-label="app.getLz('action.scrollToTop')">
<%- include("../svg/arrow-up.svg") %> <%- include("../svg/arrow-up.svg") %>
</button> </button>
</transition> </transition>

View file

@ -5,7 +5,8 @@
<h1 class="header-text">{{$root.getLz('term.albums')}}</h1> <h1 class="header-text">{{$root.getLz('term.albums')}}</h1>
</div> </div>
<div class="col-auto"> <div class="col-auto">
<button v-if="library.albums.downloadState == 2" @click="$root.getLibraryAlbumsFull(true, 1)" class="reload-btn"><%- include('../svg/redo.svg') %></button> <button v-if="library.albums.downloadState == 2" @click="$root.getLibraryAlbumsFull(true, 1)"
class="reload-btn" :aria-label="app.getLz('menubar.options.reload')"><%- include('../svg/redo.svg') %></button>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -49,11 +50,11 @@
</div> </div>
</div> </div>
<div class="well"> <div class="well">
<div class="albums-square-container"> <div class="albums-square-container">
<div> <div>
<mediaitem-square v-if="prefs.viewAs == 'covers'" :size="'300'" :item="item" v-for="item in library.albums.displayListing"> <mediaitem-square v-if="prefs.viewAs == 'covers'" :size="'300'" :item="item" v-for="item in library.albums.displayListing">
</mediaitem-square> </mediaitem-square>
</div> </div>
</div> </div>
<mediaitem-list-item v-if="prefs.viewAs == 'list'" :show-duration="false" :show-meta-data="true" :show-library-status="false" :item="item" v-for="item in library.albums.displayListing"> <mediaitem-list-item v-if="prefs.viewAs == 'list'" :show-duration="false" :show-meta-data="true" :show-library-status="false" :item="item" v-for="item in library.albums.displayListing">
</mediaitem-list-item> </mediaitem-list-item>
@ -72,9 +73,9 @@
} }
}, },
mounted() { mounted() {
this.$root.getLibraryAlbumsFull(null, 1); this.$root.getLibraryAlbumsFull(null, 1);
this.$root.getAlbumSort(); this.$root.getAlbumSort();
this.$root.searchLibraryAlbums(1); this.$root.searchLibraryAlbums(1);
this.$root.getLibrarySongsFull() ; this.$root.getLibrarySongsFull() ;
this.$root.searchLibraryAlbums(1); this.$root.searchLibraryAlbums(1);
}, },

View file

@ -6,7 +6,7 @@
</div> </div>
<div class="col-auto"> <div class="col-auto">
<button v-if="library.albums.downloadState == 2" @click="getLibraryAlbumsFull(true, 0)" <button v-if="library.albums.downloadState == 2" @click="getLibraryAlbumsFull(true, 0)"
class="reload-btn"><%- include('../svg/redo.svg') %></button> class="reload-btn" :aria-label="app.getLz('menubar.options.reload')"><%- include('../svg/redo.svg') %></button>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -44,7 +44,7 @@
</div> </div>
</div> </div>
<div class="well"> <div class="well">
<div class="albums-square-container"> <div class="albums-square-container">
<mediaitem-square v-if="library.albums.viewAs == 'covers'" :item="item" <mediaitem-square v-if="library.albums.viewAs == 'covers'" :item="item"
v-for="item in library.albums.displayListing"> v-for="item in library.albums.displayListing">
</mediaitem-square> </mediaitem-square>

View file

@ -15,7 +15,7 @@
v-model="library.songs.search" class="search-input"> v-model="library.songs.search" class="search-input">
</div> </div>
</div> </div>
<div class="col-auto flex-center"> <div class="col-auto flex-center">
<div class="row"> <div class="row">
<button class="col md-btn md-btn-primary md-btn-icon" style="min-width: 100px;margin-right: 3px;" <button class="col md-btn md-btn-primary md-btn-icon" style="min-width: 100px;margin-right: 3px;"
@click="app.mk.shuffleMode = 0; play()"> <img class="md-ico-play"> @click="app.mk.shuffleMode = 0; play()"> <img class="md-ico-play">
@ -24,7 +24,7 @@
<button class="col md-btn md-btn-primary md-btn-icon" style="min-width: 100px;margin-right: 3px;" <button class="col md-btn md-btn-primary md-btn-icon" style="min-width: 100px;margin-right: 3px;"
@click="app.mk.shuffleMode = 1;play()"> <img class="md-ico-shuffle"> @click="app.mk.shuffleMode = 1;play()"> <img class="md-ico-shuffle">
{{app.getLz('term.shuffle')}} {{app.getLz('term.shuffle')}}
</button> </button>
<div class="col"> <div class="col">
<select class="md-select" v-model="prefs.sort" @change="$root.searchLibrarySongs()"> <select class="md-select" v-model="prefs.sort" @change="$root.searchLibrarySongs()">
<optgroup :label="app.getLz('term.sortBy')"> <optgroup :label="app.getLz('term.sortBy')">
@ -51,8 +51,9 @@
</div> </div>
</div> </div>
<div class="col-auto flex-center"> <div class="col-auto flex-center">
<button v-if="library.songs.downloadState == 2" @click="$root.getLibrarySongsFull(true)" class="reload-btn"><%- include('../svg/redo.svg') %></button> <button v-if="library.songs.downloadState == 2" @click="$root.getLibrarySongsFull(true)"
<button v-else class="reload-btn" style="opacity: 0.8;pointer-events: none"> class="reload-btn" :aria-label="app.getLz('menubar.options.reload')"><%- include('../svg/redo.svg') %></button>
<button v-else class="reload-btn" style="opacity: 0.8;pointer-events: none" :aria-label="app.getLz('menubar.options.reload')">
<div class="spinner"></div> <div class="spinner"></div>
</button> </button>
</div> </div>

View file

@ -101,7 +101,7 @@
<img :class="(!inLibrary) ? 'md-ico-add' : 'md-ico-remove'"> <img :class="(!inLibrary) ? 'md-ico-add' : 'md-ico-remove'">
{{app.getLz('term.confirm')}} {{app.getLz('term.confirm')}}
</button> </button>
<button class="more-btn-round" style="float:right;" @click="menu"> <button class="more-btn-round" style="float:right;" @click="menu" :aria-label="app.getLz('term.more')">
<div class="svg-icon"></div> <div class="svg-icon"></div>
</button> </button>
</div> </div>
@ -145,7 +145,7 @@
</div> </div>
</div> </div>
<div class="col-auto flex-center"> <div class="col-auto flex-center">
<button class="more-btn-round" style="float:right;" @click="menu"> <button class="more-btn-round" style="float:right;" @click="menu" :aria-label="term.more">
<div class="svg-icon"></div> <div class="svg-icon"></div>
</button> </button>
</div> </div>
@ -159,7 +159,7 @@
<div style="width:100%"> <div style="width:100%">
<draggable :sort="data.attributes.canEdit && data.type == 'library-playlists'" <draggable :sort="data.attributes.canEdit && data.type == 'library-playlists'"
v-model="data.relationships.tracks.data" @start="drag=true" @end="drag=false;put()"> v-model="data.relationships.tracks.data" @start="drag=true" @end="drag=false;put()">
<template v-if="nestedPlaylist == [] || nestedPlaylist.length <= 1"> <template v-if="nestedPlaylist == [] || nestedPlaylist.length <= 1">
<mediaitem-list-item :item="item" :parent="getItemParent(data)" :index="index" <mediaitem-list-item :item="item" :parent="getItemParent(data)" :index="index"
:showIndex="true" :showIndex="true"
:showIndexPlaylist="(data.attributes.playParams.kind ?? data.type ?? '').includes('playlist')" :showIndexPlaylist="(data.attributes.playParams.kind ?? data.type ?? '').includes('playlist')"
@ -173,14 +173,14 @@
:showIndex="true" :showIndex="true"
:showIndexPlaylist="(data.attributes.playParams.kind ?? data.type ?? '').includes('playlist')" :showIndexPlaylist="(data.attributes.playParams.kind ?? data.type ?? '').includes('playlist')"
:context-ext="buildContextMenu()" :context-ext="buildContextMenu()"
v-for="(item,index) in disc.tracks"></mediaitem-list-item> v-for="(item,index) in disc.tracks"></mediaitem-list-item>
</div> </div>
</template> </template>
</draggable> </draggable>
</div> </div>
</div> </div>
<div class="friends-info" v-if="itemBadges.length != 0"> <div class="friends-info" v-if="itemBadges.length != 0">
<div class="well"> <div class="well">
@ -228,7 +228,7 @@
</div> </div>
</b-tab> </b-tab>
</template> </template>
</b-tabs> </b-tabs>
</div> </div>
</template> </template>
@ -361,7 +361,7 @@
if (this.data.type.includes('albums')) { if (this.data.type.includes('albums')) {
let date = this.data.attributes.releaseDate; let date = this.data.attributes.releaseDate;
if (date == null || date === "") return ""; if (date == null || date === "") return "";
return `${this.data.relationships.tracks.data[0].attributes.genreNames[0]} · ${new Date(date).getFullYear()}` return `${this.data.relationships.tracks.data[0].attributes.genreNames[0]} · ${new Date(date).getFullYear()}`
} }
}, },
async isInLibrary() { async isInLibrary() {

View file

@ -68,7 +68,7 @@
<transition name="wpfade"> <transition name="wpfade">
<div class="podcasts-details" v-if="selected.id != -1"> <div class="podcasts-details" v-if="selected.id != -1">
<div class="podcasts-details-header"> <div class="podcasts-details-header">
<button class="close-btn" @click="selected.id = -1"></button> <button class="close-btn" @click="selected.id = -1" :aria-label="app.getLz('action.close')"></button>
</div> </div>
<div class="podcast-artwork"> <div class="podcast-artwork">
<mediaitem-artwork shadow="large" :url="selected.attributes.artwork.url" size="300"></mediaitem-artwork> <mediaitem-artwork shadow="large" :url="selected.attributes.artwork.url" size="300"></mediaitem-artwork>

View file

@ -468,7 +468,7 @@
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<label> <label>
<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" @change="promptForRelaunch()">
<option value="default"> <option value="default">
{{$root.getLz('settings.header.visual.hardwareAcceleration.default')}} {{$root.getLz('settings.header.visual.hardwareAcceleration.default')}}
</option> </option>
@ -515,7 +515,8 @@
</div> </div>
<div class="md-option-segment md-option-segment_auto"> <div class="md-option-segment md-option-segment_auto">
<label> <label>
<input type="checkbox" v-model="app.cfg.visual.nativeTitleBar" switch/> <input type="checkbox" v-model="app.cfg.visual.nativeTitleBar" switch
@change="promptForRelaunch()"/>
</label> </label>
</div> </div>
</div> </div>

View file

@ -14,9 +14,13 @@
:type="item.type"></mediaitem-artwork> :type="item.type"></mediaitem-artwork>
</div> </div>
<button class="menu-btn" v-if="!nomenu.includes(item.type)" <button class="menu-btn" v-if="!nomenu.includes(item.type)"
@click="contextMenu"><%- include("../svg/more.svg") %></button> @click="contextMenu" :aria-label="$root.getLz('term.more')">
<%- include("../svg/more.svg") %>
</button>
<button class="play-btn" v-if="!noplay.includes(item.type)" <button class="play-btn" v-if="!noplay.includes(item.type)"
@click="app.playMediaItem(item)"><%- include("../svg/play.svg") %></button> @click="app.playMediaItem(item)" :aria-label="$root.getLz('term.play')">
<%- include("../svg/play.svg") %>
</button>
<div class="badge-container" v-if="itemBadges.length != 0"> <div class="badge-container" v-if="itemBadges.length != 0">
<div class="socialBadge" v-for="badge in itemBadges.limit(1)"> <div class="socialBadge" v-for="badge in itemBadges.limit(1)">
<mediaitem-artwork <mediaitem-artwork
@ -29,7 +33,7 @@
<div class="title" v-if="item.attributes.artistNames == null || kind!= 'card'" @click='app.routeView(item)'> <div class="title" v-if="item.attributes.artistNames == null || kind!= 'card'" @click='app.routeView(item)'>
<div class="item-navigate text-overflow-elipsis">{{ item.attributes.name }}</div> <div class="item-navigate text-overflow-elipsis">{{ item.attributes.name }}</div>
<div class="explicit-icon" v-if="item.attributes && item.attributes.contentRating == 'explicit'" style= "background-image: url(./assets/explicit.svg);height: 12px;width: 12px;filter: contrast(0);background-repeat: no-repeat;margin-top: 2.63px;margin-left: 4px;"></div> <div class="explicit-icon" v-if="item.attributes && item.attributes.contentRating == 'explicit'" style= "background-image: url(./assets/explicit.svg);height: 12px;width: 12px;filter: contrast(0);background-repeat: no-repeat;margin-top: 2.63px;margin-left: 4px;"></div>
</div> </div>
<div class="subtitle item-navigate text-overflow-elipsis" @click="getSubtitleNavigation()" <div class="subtitle item-navigate text-overflow-elipsis" @click="getSubtitleNavigation()"
v-if="getSubtitle() != ''"> v-if="getSubtitle() != ''">
{{ getSubtitle() }} {{ getSubtitle() }}