Merge branch 'ciderapp:upcoming' into upcoming

This commit is contained in:
KaHim Chan 2022-01-25 23:31:53 +08:00 committed by GitHub
commit ffef1d8a51
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
20 changed files with 465 additions and 107 deletions

View file

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- https://github.com/electron/electron-notarize#prerequisites -->
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<!-- https://github.cm/electron-userland/electron-builder/issues/3940 -->
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>

View file

@ -95,8 +95,8 @@
"mirror": "https://github.com/castlabs/electron-releases/releases/download/v" "mirror": "https://github.com/castlabs/electron-releases/releases/download/v"
}, },
"appId": "cider", "appId": "cider",
"afterPack": "./build/afterPack.js", "afterPack": "./resources/afterPack.js",
"afterSign": "./build/notarize.js", "afterSign": "./resources/notarize.js",
"protocols": [ "protocols": [
{ {
"name": "Cider", "name": "Cider",
@ -158,8 +158,8 @@
"gatekeeperAssess": false, "gatekeeperAssess": false,
"icon": "./resources/icons/icon.icns", "icon": "./resources/icons/icon.icns",
"category": "public.app-category.music", "category": "public.app-category.music",
"entitlements": "build/entitlements.mac.plist", "entitlements": "./resources/entitlements.mac.plist",
"entitlementsInherit": "build/entitlements.mac.plist", "entitlementsInherit": "./resources/entitlements.mac.plist",
"darkModeSupport": true, "darkModeSupport": true,
"target": [ "target": [
"dmg" "dmg"

View file

@ -2,11 +2,13 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<!-- https://github.com/electron/electron-notarize#prerequisites -->
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key> <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/> <true/>
<!-- https://github.cm/electron-userland/electron-builder/issues/3940 -->
<key>com.apple.security.cs.disable-library-validation</key> <key>com.apple.security.cs.disable-library-validation</key>
<true/> <true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<false/>
</dict> </dict>
</plist> </plist>

View file

@ -13,6 +13,7 @@
"notification.updatingLibraryAlbums": "Updating library albums...", "notification.updatingLibraryAlbums": "Updating library albums...",
"notification.updatingLibraryArtists": "Updating library artists...", "notification.updatingLibraryArtists": "Updating library artists...",
// Terms // Terms
"term.appleInc": "Apple Inc.",
"term.appleMusic": "Apple Music", "term.appleMusic": "Apple Music",
"term.applePodcasts": "Apple Podcasts", "term.applePodcasts": "Apple Podcasts",
"term.itunes": "iTunes", "term.itunes": "iTunes",
@ -70,6 +71,9 @@
"term.enabled": "Enabled", "term.enabled": "Enabled",
"term.disabled": "Disabled", "term.disabled": "Disabled",
"term.connect": "Connect", "term.connect": "Connect",
"term.connecting": "Connecting",
"term.disconnect": "Disconnect",
"term.authed": "Authed",
"term.confirm": "Confirm ?", "term.confirm": "Confirm ?",
"term.more": "More", "term.more": "More",
"term.less": "Less", "term.less": "Less",
@ -86,6 +90,15 @@
"term.clearAll": "Clear All", "term.clearAll": "Clear All",
"term.recentStations": "Recent Stations", "term.recentStations": "Recent Stations",
"term.language": "Language", "term.language": "Language",
"term.noLyrics": "Loading... / Lyrics not found./ Instrumental.",
"term.copyright": "Copyright",
"term.rightsReserved": "All Rights Reserved.",
"term.sponsor": "Sponsor this project",
"term.ciderTeam": "Cider Team",
"term.developer": "Developer",
"term.socialTeam": "Social Team",
"term.contributors": "Contributors",
// Home // Home
"home.title": "Home", "home.title": "Home",
"home.recentlyPlayed": "Recently Played", "home.recentlyPlayed": "Recently Played",
@ -101,6 +114,16 @@
"error.noResults": "No Results.", "error.noResults": "No Results.",
"error.noResults.description": "Try a new search.", "error.noResults.description": "Try a new search.",
//Podcasts
"podcast.followOnCider": "Follow On Cider",
"podcast.followedOnCider": "Following On Cider",
"podcast.subscribeOnItunes": "Subscribe On iTunes",
"podcast.subscribedOnItunes": "Subscribed On iTunes",
"podcast.itunesStore": "iTunes Store",
"podcast.episodes": "Episodes",
"podcast.playEpisode": "Play Episode",
"podcast.website": "Podcast Website",
// Actions // Actions
"action.addToLibrary": "Add to Library", "action.addToLibrary": "Add to Library",
"action.addToLibrary.success": "Added to Library", "action.addToLibrary.success": "Added to Library",
@ -194,6 +217,9 @@
"settings.header.connectivity.discordRPC.appleMusic": "Display as 'Apple Music'", "settings.header.connectivity.discordRPC.appleMusic": "Display as 'Apple Music'",
"settings.option.connectivity.discordRPC.clearOnPause": "Clear Discord Rich Presence on Pause", // Toggle "settings.option.connectivity.discordRPC.clearOnPause": "Clear Discord Rich Presence on Pause", // Toggle
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling", // Option to Connect "settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling", // Option to Connect
"settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobble Delay (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Enable LastFM Now Playing",
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Remove featuring artists from song title (LastFM)",
// Refer to term.connect for the connect button // Refer to term.connect for the connect button
// Settings - Experimental // Settings - Experimental
@ -202,10 +228,32 @@
"settings.option.experimental.compactUI": "Compact UI", // Toggle "settings.option.experimental.compactUI": "Compact UI", // Toggle
// Refer to term.disabled & term.enabled // Refer to term.disabled & term.enabled
// Spatialization Menu
"spatial.spatialProperties" : "Spatial Properties",
"spatial.width" : "Width",
"spatial.height" : "Height",
"spatial.depth" : "Depth",
"spatial.roomMaterials" : "Room Materials",
"spatial.roomDimensions" : "Room Dimensions",
"spatial.roomPositions" : "Room Positions",
"spatial.setDimensions" : "Set Dimensions",
"spatial.setPositions" : "Set Positions",
"spatial.up" : "Up",
"spatial.front" : "Front",
"spatial.left" : "Left",
"spatial.right" : "Right",
"spatial.back" : "Back",
"spatial.down" : "Down",
"spatial.listener" : "Listener",
"spatial.audioSource" : "Audio Source",
// Settings - Unfinished // Settings - Unfinished
"settings.header.unfinished": "Unfinished", "settings.header.unfinished": "Unfinished",
// Web Remote // Web Remote
"remote.web.title": "Cider Remote", "remote.web.title": "Cider Remote",
"remote.web.description": "Scan the QR code to pair your phone up with this Cider instance" "remote.web.description": "Scan the QR code to pair your phone up with this Cider instance",
//About
"about.thanks": "Major thanks to the Cider Collective Team and all of our contributors."
} }

230
src/i18n/pt_BR.jsonc Normal file
View file

@ -0,0 +1,230 @@
{ // Base File
// App info
"app.name": "Cider",
"date.format": "${d} ${m}, ${y}",
// Dialogs
"dialog.cancel": "Cancelar",
"dialog.ok": "OK",
// Notification
"notification.updatingLibrarySongs": "Atualizando músicas na biblioteca...",
"notification.updatingLibraryAlbums": "Atualizando albuns na biblioteca...",
"notification.updatingLibraryArtists": "Atualizando artistas na biblioteca...",
"notification.connectionError": "Houve um problema a se conectar no Apple Music",
// Terms
"term.appleMusic": "Apple Music",
"term.applePodcasts": "Apple Podcasts",
"term.itunes": "iTunes",
"term.github": "GitHub",
"term.discord": "Discord",
"term.learnMore": "Saiba Mais",
"term.accountSettings": "Definições da Conta",
"term.logout": "Sair",
"term.login": "Entrar",
"term.about": "Sobre",
"term.privateSession": "Sessão Privada",
"term.queue": "Fila",
"term.search": "Procurar",
"term.library": "Biblioteca",
"term.listenNow": "Ouça Agora",
"term.browse": "Pesquisar",
"term.radio": "Radio",
"term.recentlyAdded": "Adicionado Recentemente",
"term.songs": "Músicas",
"term.albums": "Albuns",
"term.artists": "Artistas",
"term.podcasts": "Podcasts",
"term.playlists": "Listas de Reprodução",
"term.playlist": "Lista de Reprodução",
"term.play": "Tocar",
"term.pause": "Pausar",
"term.previous": "Anterior",
"term.next": "Próximo",
"term.shuffle": "Aleatório",
"term.repeat": "Repetir",
"term.volume": "Volume",
"term.mute": "Mudo",
"term.unmute": "Tirar o Mudo",
"term.share": "Partilhar",
"term.settings": "Definições",
"term.seeAll": "Ver Tudo",
"term.sortBy": "Organizar Por",
"term.sortBy.album": "Album",
"term.sortBy.artist": "Artista",
"term.sortBy.name": "Nome",
"term.sortBy.genre": "Genero",
"term.sortBy.releaseDate": "Data de Lançamento",
"term.sortBy.duration": "Duração",
"term.sortOrder": "A-Z",
"term.sortOrder.ascending": "Ascendente",
"term.sortOrder.descending": "Descendente",
"term.viewAs": "Ver Como",
"term.viewAs.coverArt": "Capa",
"term.viewAs.list": "Lista",
"term.size": "Tamanho",
"term.size.normal": "Normal",
"term.size.compact": "Compacto",
"term.enable": "Ativar",
"term.disable": "Desativar",
"term.enabled": "Ativado",
"term.disabled": "Desativado",
"term.connect": "Conectar",
"term.confirm": "Confirmar ?",
"term.more": "Mais",
"term.less": "Menos",
"term.showMore": "Mostrar Mais",
"term.showLess": "Mostrar Menos",
"term.topSongs" : "Top de Músicas",
"term.latestReleases": "Ultimos Lançamentos",
"term.time.added": "Adicionado",
"term.time.released": "Lançado",
"term.time.updated": "Atualizado",
"term.fullscreenView": "Visualização em Tela Cheia",
"term.defaultView": "Visualização Normal",
"term.spacializedAudioSetting": "Definições de Audio Espacial",
"term.clearAll": "Limpar Tudo",
// Home
"home.title": "Inicio",
"home.recentlyPlayed": "Tocado Recentemente",
"home.recentlyAdded": "Adicionado Recentemente",
"home.artistsFeed": "Novidades dos seus Artistas",
"home.madeForYou": "Feito para Você",
"home.friendsListeningTo": "Amigos Ouvindo",
"home.followedArtists": "Artistas Seguidos",
// Errors
"error.appleMusicSubRequired": "Necessário uma assinatura Apple Music.",
// Actions
"action.addToLibrary": "Adicionar à Biblioteca",
"action.addToLibrary.success": "Adicionado à Biblioteca",
"action.addToLibrary.error": "Erro ao Adicionar na Biblioteca",
"action.removeFromLibrary": "Remover da Biblioteca",
"action.removeFromLibrary.success": "Removido da Biblioteca",
"action.addToQueue": "Adicionar à Fila",
"action.addToQueue.success": "Adicionado à Fila",
"action.addToQueue.error": "Erro ao Adicionar à Fila",
"action.removeFromQueue": "Remover da Fila",
"action.removeFromQueue.success": "Removido da Fila",
"action.removeFromQueue.error": "Erro ao Remover da Fila",
"action.addToPlaylist": "Adicionar à Lista de Reprodução",
"action.removeFromPlaylist": "Remover da Lista de Reprodução",
"action.addToFavorites": "Adicionar aos Favoritos",
"action.follow": "Seguir",
"action.follow.success": "A Seguir",
"action.follow.error": "Erro ao Seguir",
"action.unfollow": "Deixar de Seguir",
"action.unfollow.success": "Deixou de Seguir",
"action.unfollow.error": "Erro ao Deixar de Seguir",
"action.playNext": "Tocar Proximo",
"action.playLater": "Tocar por Ultimo",
"action.startRadio": "Começar Radio",
"action.goToArtist": "Ir para o Artista",
"action.goToAlbum": "Ir para o Album",
"action.moveToTop": "Mover para cima",
"action.share": "Partilhar",
"action.rename": "Mudar o Nome",
"action.love": "Gostar",
"action.unlove": "Deixar de Gostar",
"action.dislike": "Não Gostar",
"action.undoDislike": "Deixar de Não Gostar",
"action.showWebRemoteQR": "Mostrar o QR para Página Remota",
// Settings - Audio
"settings.header.audio": "Audio",
"settings.header.audio.description": "Ajustar as definições de audio no Cider.",
"settings.option.audio.quality": "Qualidade do Audio", // Dropdown
"settings.header.audio.quality.high": "Alta",
"settings.header.audio.quality.low": "Baixa",
"settings.header.audio.quality.auto": "Automatico",
"settings.option.audio.seamlessTransition": "Transição de Áudio Perfeita", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "Ativar Funcionabilidades Avançadas", // Toggle
"settings.option.audio.enableAdvancedFunctionality.description": "Habilitar a funcionalidade AudioContext permitirá recursos de áudio estendidos, como Normalização de Áudio , Equalizadores e Visualizadores. No entanto, em alguns sistemas, isso pode causar travamentos nas faixas de áudio.",
"settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Normalização de Audio", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normaliza o volume alto para faixas individuais para criar uma experiência de audição mais uniforme.",
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Audio Espacial", // Toggle
"settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Espacialize o áudio e torne o áudio mais tridimensional (nota: isto não é Dolby Atmos)",
// Settings - Visual
"settings.header.visual": "Visual",
"settings.header.visual.description": "Ajustar as Definições de Visual do Cider.",
"settings.option.visual.windowBackgroundStyle": "Estilo do Fundo da Janela", // Toggle
"settings.header.visual.windowBackgroundStyle.none": "Nenhum",
"settings.header.visual.windowBackgroundStyle.artwork": "Capa",
"settings.option.visual.animatedArtwork": "Capa Animada", // Dropdown
"settings.header.visual.animatedArtwork.always": "Sempre",
"settings.header.visual.animatedArtwork.limited": "Limitado a páginas e entradas especiais",
"settings.header.visual.animatedArtwork.disable": "Desativar em Tudo",
"settings.option.visual.animatedArtworkQuality": "Qualidade da Capa Animada", // Dropdown
"settings.header.visual.animatedArtworkQuality.low": "Baixa",
"settings.header.visual.animatedArtworkQuality.medium": "Media",
"settings.header.visual.animatedArtworkQuality.high": "Alta",
"settings.header.visual.animatedArtworkQuality.extreme": "Extrema",
"settings.option.visual.animatedWindowBackground": "Fundo de Janela Animado", // Toggle
"settings.option.visual.hardwareAcceleration": "Acelaração no Hardware", // Dropdown
"settings.header.visual.hardwareAcceleration.default": "Normal",
"settings.header.visual.hardwareAcceleration.webGPU": "WebGPU",
// Refer to term.disabled for the disabled option
"settings.option.visual.showPersonalInfo": "Mostrar Informaçoes Pessoais", // Toggle
// Settings - General (Reserved)
"settings.header.general": "Principal",
"settings.header.general.description": "Ajustar as definiçoes principais no Cider.",
// Settings - Lyrics
"settings.header.lyrics": "Letras",
"settings.header.lyrics.description": "Ajustar as definições das letras no Cider.",
"settings.option.lyrics.enableMusixmatch": "Ativar Letras do Musixmatch", // Toggle
"settings.option.lyrics.enableMusixmatchKaraoke": "Ativar Modo Karaoke (só para Musixmatch)", // Toggle
"settings.option.lyrics.musixmatchPreferredLanguage": "Idioma Preferido para Tradução Musixmatch", // Dropdown
"settings.option.lyrics.enableYoutubeLyrics": "Ativar letras do Youtube para videos musicais", // Toggle
// Settings - Connectivity
"settings.header.connectivity": "Conectividade",
"settings.header.connectivity.description": "Ajustar as definições de conectividade no Cider.",
"settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown
// Refer to term.disabled for the disabled option
"settings.header.connectivity.discordRPC.cider": "Mostrar como 'Cider'",
"settings.header.connectivity.discordRPC.appleMusic": "Mostrar como 'Apple Music'",
"settings.header.connectivity.discordRPC.clearOnPause": "Apagar Discord Rich Presence quando estiver pausado", // Toggle
"settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling", // Option to Connect
"settings.option.connectivity.lastfmScrobble.delay": "Atraso dos Scrobbles do LastFM (%)",
"settings.option.connectivity.lastfmScrobble.nowPlaying": "Ativar LastFM Now Playing",
"settings.option.connectivity.lastfmScrobble.removeFeatured": "Remover artistas de colaboração do nome da música (LastFM)",
// Refer to term.connect for the connect button
// Settings - Experimental
"settings.header.experimental": "Experimental",
"settings.header.experimental.description": "Ajustar as definições experimental no Cider.",
"settings.option.experimental.compactUI": "UI Compacto", // Toggle
// Refer to term.disabled & term.enabled
// Spatialization Menu
"spatial.spatialProperties" : "Propriedades do Espacial",
"spatial.width" : "Largura",
"spatial.height" : "Altura",
"spatial.depth" : "Profundidade",
"spatial.roomMaterials" : "Materiais da Sala",
"spatial.roomDimensions" : "Dimensões da Sala",
"spatial.roomPositions" : "Posições da Sala",
"spatial.setDimensions" : "Definir Dimensões",
"spatial.setPositions" : "Definir Posições",
"spatial.up" : "Acima",
"spatial.front" : "Frente",
"spatial.left" : "Esquerda",
"spatial.right" : "Direita",
"spatial.back" : "Atrás",
"spatial.down" : "Abaixo",
"spatial.listener" : "Ouvinte",
"spatial.audioSource" : "Fonte de Audio",
// Settings - Unfinished
"settings.header.unfinished": "Inacabado",
// Web Remote
"remote.web.title": "Cider Remoto",
"remote.web.description": "Digitalize o código QR para emparelhar seu telefone com esta instância Cider"
}

View file

@ -1,10 +1,9 @@
{ {
// Turkish Language support by gms10ur
//updated to the base file at 24.01.2022 21:00 GTM+3
// App info // App info
"app.name": "Cider", "app.name": "Cider",
"date.format": "${d} ${m}, ${y}",
// Dialogs // Dialogs
"dialog.cancel": "İptal", "dialog.cancel": "İptal",
"dialog.ok": "Tamam", "dialog.ok": "Tamam",
@ -15,6 +14,7 @@
"notification.updatingLibraryArtists": "Arşiv'deki sanatçılar alınıyor...", "notification.updatingLibraryArtists": "Arşiv'deki sanatçılar alınıyor...",
// Terms // Terms
"term.appleInc": "Apple",
"term.appleMusic": "Apple Müzik", "term.appleMusic": "Apple Müzik",
"term.applePodcasts": "Apple Podcastler", "term.applePodcasts": "Apple Podcastler",
"term.itunes": "iTunes", "term.itunes": "iTunes",
@ -67,35 +67,63 @@
"term.size": "Boyut", "term.size": "Boyut",
"term.size.normal": "Normal", "term.size.normal": "Normal",
"term.size.compact": "Daha Sıkı", "term.size.compact": "Daha Sıkı",
"term.enable": "Etkinleştir", "term.enable": "",
"term.disable": "Devre Dışı Bırak", "term.disable": "Kapa",
"term.enabled": "Etkin", "term.enabled": "ık",
"term.disabled": "Devre Dışı", "term.disabled": "Kapalı",
"term.connect": "Bağlan", "term.connect": "Bağlan",
"term.connecting": "Bağlanıyor",
"term.authed": "Bağlantı sağlandı",
"term.confirm": "Onayla?", "term.confirm": "Onayla?",
"term.more": "Daha Fazla", "term.more": "Daha Fazla",
"term.less": "Daha Az", "term.less": "Daha Az",
"term.showMore": "Daha Fazla Göster", "term.showMore": "Daha Fazla Göster",
"term.showLess": "Daha Az Göster", "term.showLess": "Daha Az Göster",
"term.topSongs" : "En İyi Şarkılar", "term.topSongs" : "Popüler Parçalar",
"term.latestReleases": "Son Çıkanlar", "term.latestReleases": "Yeni Çıkan",
"term.time.added": "Şu tarihte eklendi: ", "term.time.added": "Şu tarihte eklendi: ",
"term.time.released": "Şu tarihte yayınalndı: ", "term.time.released": "Şu tarihte yayınalndı: ",
"term.time.updated": "Şu tarihte güncellendi: ", "term.time.updated": "Şu tarihte güncellendi: ",
"term.fullscreenView": "Tam Ekran Görünümü", "term.fullscreenView": "Tam Ekrana Geç",
"term.defaultView": "Normal Görünüm", "term.defaultView": "Normal Görünüme Dön",
"term.spacializedAudioSetting": "Uzamsal Ses Ayarları",
"term.clearAll": "Tümünü Temizle",
"term.recentStations": "Son İstasyonlar",
"term.language": "Dil Seçimi",
"term.noLyrics": "Yükleniyor... / Şarkı Sözü Bulunamadı./ Enstrumantal.",
"term.copyright": "Copyright",
"term.rightsReserved": "Tüm Haklası Saklıdır.",
"term.sponsor": "Bu Projeye Destek Olun",
"term.ciderTeam": "Cider Ekibi",
"term.developer": "Geliştirici",
"term.socialTeam": "Sosyal Ekip",
"term.contributors": "Katkıda Bulunanlar",
// Home // Home
"home.title": "Ana Sayfa", "home.title": "Ana Sayfa",
"home.recentlyPlayed": "Son Oynatılanlar", "home.recentlyPlayed": "Son Oynatılanlar",
"home.recentlyAdded": "Son Eklenenler", "home.recentlyAdded": "Son Eklenenler",
"home.artistsFeed": "Sanatçılarınızın Son Yayınları", "home.artistsFeed": "Son Çıkanlar",
"home.artistsFeed.noArtist": "Birkaç sanatçı takip ettiğinizde, sanatçılarınızın son çıkan yayınları burada gözükür.",
"home.madeForYou": "Sadece Size Özel", "home.madeForYou": "Sadece Size Özel",
"home.friendsListeningTo": "Arkadaşlarınızın Dinledikleri", "home.friendsListeningTo": "Arkadaşlarınızın Dinledikleri",
"home.followedArtists": "Takip Edilen Sanatçılar", "home.followedArtists": "Takip Edilen Sanatçılar",
// Errors // Errors
"error.appleMusicSubRequired": "Apple Müzik, aktif bir abonelik gerektirir.", "error.appleMusicSubRequired": "Apple Müzik, aktif bir abonelik gerektirir.",
"error.connectionError": "Apple Müzik ile bağlantı kurulamadı.",
"error.noResults": "Hiç sonuç yok",
"error.noResults.description": "Tekrar deneyin.",
//Podcasts
"podcast.followOnCider": "Cider'de Takip Et",
"podcast.followedOnCider": "Cider'de Takip Ediliyor",
"podcast.subscribeOnItunes": "itunes'de Abone Ol",
"podcast.subscribedOnItunes": "iTunes'de Abone Olundu",
"podcast.itunesStore": "iTunes Mağazası",
"podcast.episodes": "Bölümler",
"podcast.playEpisode": "Bölümü Oynat",
"podcast.website": "Web Sayfası",
// Actions // Actions
"action.addToLibrary": "Arşiv'e Ekle", "action.addToLibrary": "Arşiv'e Ekle",
@ -137,7 +165,7 @@
"settings.header.audio.description": "Cider'in sizin için en iyi dinleme deneyimini sağlayabilmesi için ses ayarlarınızı yapın.", "settings.header.audio.description": "Cider'in sizin için en iyi dinleme deneyimini sağlayabilmesi için ses ayarlarınızı yapın.",
"settings.option.audio.quality": "Ses Kalitesi", // Dropdown "settings.option.audio.quality": "Ses Kalitesi", // Dropdown
"settings.header.audio.quality.high": "Yüksek Kalite", "settings.header.audio.quality.high": "Yüksek Kalite",
"settings.header.audio.quality.low": "yüksek Verimlilik", "settings.header.audio.quality.low": "Yüksek Verimlilik",
"settings.header.audio.quality.auto": "Otomatik", "settings.header.audio.quality.auto": "Otomatik",
"settings.option.audio.seamlessTransition": "Kesintisiz Ses Geçişi", // Toggle "settings.option.audio.seamlessTransition": "Kesintisiz Ses Geçişi", // Toggle
"settings.option.audio.enableAdvancedFunctionality": "Gelişmiş Ses Deneyimi", // Toggle "settings.option.audio.enableAdvancedFunctionality": "Gelişmiş Ses Deneyimi", // Toggle
@ -161,9 +189,11 @@
"settings.header.visual.animatedArtworkQuality.low": "Düşük", "settings.header.visual.animatedArtworkQuality.low": "Düşük",
"settings.header.visual.animatedArtworkQuality.medium": "Orta", "settings.header.visual.animatedArtworkQuality.medium": "Orta",
"settings.header.visual.animatedArtworkQuality.high": "Yüksek", "settings.header.visual.animatedArtworkQuality.high": "Yüksek",
"settings.header.visual.animatedArtworkQuality.extreme": "En Yüksek", "settings.header.visual.animatedArtworkQuality.veryHigh": "Daha Yüksek",
"settings.header.visual.animatedArtworkQuality.extreme": "Ekstrem",
"settings.option.visual.animatedWindowBackground": "Hareketli Uygulama Arka Planı", // Toggle "settings.option.visual.animatedWindowBackground": "Hareketli Uygulama Arka Planı", // Toggle
"settings.option.visual.hardwareAcceleration": "Donanım Hızlandırması", // Dropdown "settings.option.visual.hardwareAcceleration": "Donanım Hızlandırması", // Dropdown
"settings.option.visual.hardwareAcceleration.description": "Etki etmesi için uygulamayı yeniden başlatmak gerekir.",
"settings.header.visual.hardwareAcceleration.default": "Varsayılan", "settings.header.visual.hardwareAcceleration.default": "Varsayılan",
"settings.header.visual.hardwareAcceleration.webGPU": "Gelişmiş", "settings.header.visual.hardwareAcceleration.webGPU": "Gelişmiş",
// Refer to term.disabled for the disabled option // Refer to term.disabled for the disabled option
@ -198,8 +228,34 @@
"settings.option.experimental.compactUI": "Kompakt Arayüz", // Toggle "settings.option.experimental.compactUI": "Kompakt Arayüz", // Toggle
// Refer to term.disabled & term.enabled // Refer to term.disabled & term.enabled
// Spatialization Menu
"spatial.spatialProperties" : "Uzamsal Özellikler",
"spatial.width" : "Genişlik",
"spatial.height" : "Yükseklik",
"spatial.depth" : "Derinlik",
"spatial.roomMaterials" : "Oda Materyalleri",
"spatial.roomDimensions" : "Oda Ölçüleri",
"spatial.roomPositions" : "Oda Pozisyonu",
"spatial.setDimensions" : "Ölçüleri Ayarla",
"spatial.setPositions" : "Pozisyonu Ayarla",
"spatial.up" : "Üst",
"spatial.front" : "Ön",
"spatial.left" : "Sol",
"spatial.right" : "Sağ",
"spatial.back" : "Arka",
"spatial.down" : "Aşağı",
"spatial.listener" : "Dinleyici",
"spatial.audioSource" : "Ses Kaynağı",
// Settings - Unfinished
"settings.header.unfinished": "Geliştirme Aşamasında",
// Web Remote // Web Remote
"remote.web.title": "Cider'e Bağlan", "remote.web.title": "Cider'e Bağlan",
"remote.web.description": "Telefonunuzu Bu Cider Oturumuyla Eşleştirmek için QR Kodunu Tarayın" "remote.web.description": "Telefonunuzu Bu Cider Oturumuyla Eşleştirmek için QR Kodunu Tarayın",
//About
"about.thanks": "Cider Collective Ekibine ve tüm katkıda bulunanlara çok teşekkür ederiz."
} }

View file

@ -60,7 +60,8 @@ export class ConfigStore {
"animated_artwork_qualityLevel": 1, "animated_artwork_qualityLevel": 1,
"bg_artwork_rotation": false, "bg_artwork_rotation": false,
"hw_acceleration": "default", // default, webgpu, disabled "hw_acceleration": "default", // default, webgpu, disabled
"showuserinfo": true "showuserinfo": true,
"miniplayer_top_toggle": true
}, },
"lyrics": { "lyrics": {
"enable_mxm": false, "enable_mxm": false,

View file

@ -50,8 +50,8 @@ export class Win {
height: 600, height: 600,
x: undefined, x: undefined,
y: undefined, y: undefined,
minWidth: 844, minWidth: 900,
minHeight: 410, minHeight: 390,
frame: false, frame: false,
title: "Cider", title: "Cider",
vibrancy: "dark", vibrancy: "dark",
@ -430,6 +430,10 @@ export class Win {
this.win.setMinimumSize(width,height); this.win.setMinimumSize(width,height);
}) })
electron.ipcMain.on("windowontop", (event, ontop) => {
this.win.setAlwaysOnTop(ontop);
});
// Set scale // Set scale
electron.ipcMain.on("windowresize", (event, width, height, lock = false) => { electron.ipcMain.on("windowresize", (event, width, height, lock = false) => {
this.win.setContentSize(width, height); this.win.setContentSize(width, height);

View file

@ -1768,7 +1768,7 @@ const app = new Vue({
downloaded = response downloaded = response
library = library.concat(downloaded.data) library = library.concat(downloaded.data)
self.library.downloadNotification.show = true self.library.downloadNotification.show = true
self.library.downloadNotification.message = "Updating library songs..." self.library.downloadNotification.message = app.getLz('notification.updatingLibrarySongs')
self.library.downloadNotification.total = downloaded.meta.total self.library.downloadNotification.total = downloaded.meta.total
self.library.downloadNotification.progress = library.length self.library.downloadNotification.progress = library.length
@ -1848,7 +1848,7 @@ const app = new Vue({
downloaded = response downloaded = response
library = library.concat(downloaded.data) library = library.concat(downloaded.data)
self.library.downloadNotification.show = true self.library.downloadNotification.show = true
self.library.downloadNotification.message = "Updating library albums..." self.library.downloadNotification.message = app.getLz('notification.updatingLibraryAlbums')
self.library.downloadNotification.total = downloaded.meta.total self.library.downloadNotification.total = downloaded.meta.total
self.library.downloadNotification.progress = library.length self.library.downloadNotification.progress = library.length
if (downloaded.meta.total == 0) { if (downloaded.meta.total == 0) {
@ -1931,7 +1931,7 @@ const app = new Vue({
downloaded = response downloaded = response
library = library.concat(downloaded.data) library = library.concat(downloaded.data)
self.library.downloadNotification.show = true self.library.downloadNotification.show = true
self.library.downloadNotification.message = "Updating library artists..." self.library.downloadNotification.message = app.getLz('notification.updatingLibraryArtists')
self.library.downloadNotification.total = downloaded.meta.total self.library.downloadNotification.total = downloaded.meta.total
self.library.downloadNotification.progress = library.length self.library.downloadNotification.progress = library.length
if (downloaded.meta.total == 0) { if (downloaded.meta.total == 0) {
@ -3237,7 +3237,7 @@ const app = new Vue({
}, },
{ {
"icon": "./assets/feather/radio.svg", "icon": "./assets/feather/radio.svg",
"name": "Start Radio", "name": app.getLz('action.startRadio'),
"action": function() { "action": function() {
app.mk.setStationQueue({ song: app.mk.nowPlayingItem.id }).then(() => { app.mk.setStationQueue({ song: app.mk.nowPlayingItem.id }).then(() => {
app.mk.play() app.mk.play()
@ -3288,7 +3288,7 @@ const app = new Vue({
app.cfg.lastfm.auth_token = ""; app.cfg.lastfm.auth_token = "";
app.cfg.lastfm.enabled = false; app.cfg.lastfm.enabled = false;
const element = document.getElementById('lfmConnect'); const element = document.getElementById('lfmConnect');
element.innerHTML = 'Connect'; element.innerHTML = getLz('term.connect');
element.onclick = app.LastFMAuthenticate; element.onclick = app.LastFMAuthenticate;
}, },
LastFMAuthenticate() { LastFMAuthenticate() {
@ -3296,12 +3296,12 @@ const app = new Vue({
const element = document.getElementById('lfmConnect'); const element = document.getElementById('lfmConnect');
// new key : f9986d12aab5a0fe66193c559435ede3 // new key : f9986d12aab5a0fe66193c559435ede3
window.open('https://www.last.fm/api/auth?api_key=f9986d12aab5a0fe66193c559435ede3&cb=cider://auth/lastfm'); window.open('https://www.last.fm/api/auth?api_key=f9986d12aab5a0fe66193c559435ede3&cb=cider://auth/lastfm');
element.innerText = 'Connecting...'; element.innerText = app.getLz('term.connecting') + '...';
/* Just a timeout for the button */ /* Just a timeout for the button */
setTimeout(() => { setTimeout(() => {
if (element.innerText === 'Connecting...') { if (element.innerText === app.getLz('term.connecting') +'...') {
element.innerText = 'Connect'; element.innerText = app.getLz('term.connect');
console.warn('[LastFM] Attempted connection timed out.'); console.warn('[LastFM] Attempted connection timed out.');
} }
}, 20000); }, 20000);
@ -3309,7 +3309,7 @@ const app = new Vue({
ipcRenderer.on('LastfmAuthenticated', function(_event, lfmAuthKey) { ipcRenderer.on('LastfmAuthenticated', function(_event, lfmAuthKey) {
app.cfg.lastfm.auth_token = lfmAuthKey; app.cfg.lastfm.auth_token = lfmAuthKey;
app.cfg.lastfm.enabled = true; app.cfg.lastfm.enabled = true;
element.innerHTML = `Disconnect\n<p style="font-size: 8px"><i>(Authed: ${lfmAuthKey})</i></p>`; element.innerHTML = `${app.getLz('term.disconnect')}\n<p style="font-size: 8px"><i>(${app.getLz('term.authed')}: ${lfmAuthKey})</i></p>`;
element.onclick = app.LastFMDeauthorize; element.onclick = app.LastFMDeauthorize;
}); });
}, },
@ -3357,9 +3357,20 @@ const app = new Vue({
} else { } else {
ipcRenderer.send('windowmin', 844, 410) ipcRenderer.send('windowmin', 844, 410)
ipcRenderer.send('windowresize', this.tmpWidth, this.tmpHeight, false) ipcRenderer.send('windowresize', this.tmpWidth, this.tmpHeight, false)
ipcRenderer.send('windowontop', false)
this.cfg.visual.miniplayer_top_toggle = true;
app.appMode = 'player'; app.appMode = 'player';
} }
}, },
pinMiniPlayer() {
if (this.cfg.visual.miniplayer_top_toggle) {
ipcRenderer.send('windowontop', true)
this.cfg.visual.miniplayer_top_toggle = false
} else {
ipcRenderer.send('windowontop', false)
this.cfg.visual.miniplayer_top_toggle = true;
}
},
formatTimezoneOffset: (e = new Date) => { formatTimezoneOffset: (e = new Date) => {
let leadingZeros = (e, s = 2) => { let leadingZeros = (e, s = 2) => {
let n = "" + e; let n = "" + e;

View file

@ -4799,6 +4799,24 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb {
-webkit-app-region: no-drag; -webkit-app-region: no-drag;
} }
.player-pin {
z-index: 3;
position: absolute;
min-width: 20px;
min-height: 20px;
top: 5px;
right: 30px;
-webkit-app-region: no-drag;
}
#mini-pin{
display: none;
}
.player-pin:hover #mini-pin {
display: block;
}
.playback-button--small { .playback-button--small {
opacity: 0.7; opacity: 0.7;
} }

View file

@ -35,7 +35,7 @@
</template> </template>
<template v-else> <template v-else>
<div class="no-lyrics"> <div class="no-lyrics">
Loading... / Lyrics not found./ Instrumental.</div> {{app.getLz('term.noLyrics')}}</div>
</template> </template>
</div> </div>
</script> </script>

View file

@ -2,6 +2,9 @@
<div class="mini-view" tabindex="0"> <div class="mini-view" tabindex="0">
<div class="background"> <div class="background">
</div> </div>
<div class="player-pin" title="Pin to Top" @click="app.pinMiniPlayer()">
<span id="mini-pin">📌</span>
</div>
<div class="player-exit" title="Close" @click="app.miniPlayer(false)"> <div class="player-exit" title="Close" @click="app.miniPlayer(false)">
<svg fill="#323232e3" xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21" <svg fill="#323232e3" xmlns="http://www.w3.org/2000/svg" width="21" height="21" viewBox="0 0 21 21"
aria-role="presentation" focusable="false"> aria-role="presentation" focusable="false">

View file

@ -2,15 +2,15 @@
<div class="modal-fullscreen spatialproperties-panel"> <div class="modal-fullscreen spatialproperties-panel">
<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">Spatial Properties</div> <div class="modal-title">{{$root.getLz('spatial.spatialProperties')}}</div>
<button class="close-btn" @click="close()"></button> <button class="close-btn" @click="close()"></button>
</div> </div>
<div class="modal-content"> <div class="modal-content">
<template v-if="roomEditType == 'dimensions'"> <template v-if="roomEditType == 'dimensions'">
<div class="row"> <div class="row">
<div class="col"><h3>Room Dimensions</h3></div> <div class="col"><h3>{{$root.getLz('spatial.roomDimensions')}}</h3></div>
<div class="col-auto flex-center"> <div class="col-auto flex-center">
<button class="md-btn" @click="roomEditType = 'positions'">Set Positions</button> <button class="md-btn" @click="roomEditType = 'positions'">{{$root.getLz('spatial.setPositions')}}</button>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -18,7 +18,7 @@
<div class="row"> <div class="row">
<div class="col-3 flex-center"> <div class="col-3 flex-center">
Width {{$root.getLz('spatial.width')}}
</div> </div>
<div class="col flex-center"> <div class="col flex-center">
<input type="range" class="md-slider" min="0" max="100" @change="setRoom()" style="width: 100%;" <input type="range" class="md-slider" min="0" max="100" @change="setRoom()" style="width: 100%;"
@ -32,7 +32,7 @@
<div class="row"> <div class="row">
<div class="col-3 flex-center"> <div class="col-3 flex-center">
Height {{$root.getLz('spatial.height')}}
</div> </div>
<div class="col flex-center"> <div class="col flex-center">
<input type="range" class="md-slider" min="0" max="100" @change="setRoom()" style="width: 100%;" <input type="range" class="md-slider" min="0" max="100" @change="setRoom()" style="width: 100%;"
@ -46,7 +46,7 @@
<div class="row"> <div class="row">
<div class="col-3 flex-center"> <div class="col-3 flex-center">
Depth {{$root.getLz('spatial.depth')}}
</div> </div>
<div class="col flex-center"> <div class="col flex-center">
<input type="range" class="md-slider" min="0" max="100" @change="setRoom()" style="width: 100%;" <input type="range" class="md-slider" min="0" max="100" @change="setRoom()" style="width: 100%;"
@ -73,9 +73,9 @@
</template> </template>
<template v-if="roomEditType == 'positions'"> <template v-if="roomEditType == 'positions'">
<div class="row"> <div class="row">
<div class="col"><h3>Room Positions</h3></div> <div class="col"><h3>{{$root.getLz('spatial.roomPositons')}}</h3></div>
<div class="col-auto flex-center"> <div class="col-auto flex-center">
<button class="md-btn" @click="roomEditType = 'dimensions'">Set Dimensions</button> <button class="md-btn" @click="roomEditType = 'dimensions'">{{$root.getLz('spatial.setDimensions')}}</button>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -83,7 +83,7 @@
<div class="row"> <div class="row">
<div class="col-3 flex-center"> <div class="col-3 flex-center">
X (Listener) X ({{$root.getLz('spatial.listener')}})
</div> </div>
<div class="col flex-center"> <div class="col flex-center">
<input type="range" class="md-slider" min="0" max="100" @change="setRoom()" style="width: 100%;" <input type="range" class="md-slider" min="0" max="100" @change="setRoom()" style="width: 100%;"
@ -97,7 +97,7 @@
<div class="row"> <div class="row">
<div class="col-3 flex-center"> <div class="col-3 flex-center">
Y (Listener) Y ({{$root.getLz('spatial.listener')}})
</div> </div>
<div class="col flex-center"> <div class="col flex-center">
<input type="range" class="md-slider" min="0" max="100" @change="setRoom()" style="width: 100%;" <input type="range" class="md-slider" min="0" max="100" @change="setRoom()" style="width: 100%;"
@ -111,7 +111,7 @@
<div class="row"> <div class="row">
<div class="col-3 flex-center"> <div class="col-3 flex-center">
Z (Listener) Z ({{$root.getLz('spatial.listener')}})
</div> </div>
<div class="col flex-center"> <div class="col flex-center">
<input type="range" class="md-slider" min="0" max="100" @change="setRoom()" style="width: 100%;" <input type="range" class="md-slider" min="0" max="100" @change="setRoom()" style="width: 100%;"
@ -125,7 +125,7 @@
<div class="row"> <div class="row">
<div class="col-3 flex-center"> <div class="col-3 flex-center">
X (Audio Source) X ({{$root.getLz('spatial.audioSource')}})
</div> </div>
<div class="col flex-center"> <div class="col flex-center">
<input type="range" class="md-slider" min="0" max="100" @change="setRoom()" style="width: 100%;" <input type="range" class="md-slider" min="0" max="100" @change="setRoom()" style="width: 100%;"
@ -139,7 +139,7 @@
<div class="row"> <div class="row">
<div class="col-3 flex-center"> <div class="col-3 flex-center">
Y (Audio Source) Y ({{$root.getLz('spatial.audioSource')}})
</div> </div>
<div class="col flex-center"> <div class="col flex-center">
<input type="range" class="md-slider" min="0" max="100" @change="setRoom()" style="width: 100%;" <input type="range" class="md-slider" min="0" max="100" @change="setRoom()" style="width: 100%;"
@ -153,7 +153,7 @@
<div class="row"> <div class="row">
<div class="col-3 flex-center"> <div class="col-3 flex-center">
Z (Audio Source) Z ({{$root.getLz('spatial.audioSource')}})
</div> </div>
<div class="col flex-center"> <div class="col flex-center">
<input type="range" class="md-slider" min="0" max="100" @change="setRoom()" style="width: 100%;" <input type="range" class="md-slider" min="0" max="100" @change="setRoom()" style="width: 100%;"
@ -179,13 +179,13 @@
</template> </template>
<div class="row"> <div class="row">
<div class="col"><h3>Room Materials</h3></div> <div class="col"><h3>{{$root.getLz('spatial.roomMaterials')}}</h3></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col"></div> <div class="col"></div>
<div class="col flex-center"> <div class="col flex-center">
<label> <label>
Up {{$root.getLz('spatial.up')}}
<select class="md-select" @change="setRoom()" <select class="md-select" @change="setRoom()"
v-model="room_materials.up"> v-model="room_materials.up">
<option v-for="prop in roomProps" :value="prop">{{ prop }}</option> <option v-for="prop in roomProps" :value="prop">{{ prop }}</option>
@ -197,7 +197,7 @@
<div class="row"> <div class="row">
<div class="col flex-center"> <div class="col flex-center">
<label> <label>
Left {{$root.getLz('spatial.left')}}
<select class="md-select" @change="setRoom()" <select class="md-select" @change="setRoom()"
v-model="room_materials.left"> v-model="room_materials.left">
<option v-for="prop in roomProps" :value="prop">{{ prop }}</option> <option v-for="prop in roomProps" :value="prop">{{ prop }}</option>
@ -206,14 +206,14 @@
</div> </div>
<div class="col flex-center"> <div class="col flex-center">
<label> <label>
Front {{$root.getLz('spatial.front')}}
<select class="md-select" @change="setRoom()" <select class="md-select" @change="setRoom()"
v-model="room_materials.front"> v-model="room_materials.front">
<option v-for="prop in roomProps" :value="prop">{{ prop }}</option> <option v-for="prop in roomProps" :value="prop">{{ prop }}</option>
</select> </select>
</label> </label>
<label> <label>
Back {{$root.getLz('spatial.back')}}
<select class="md-select" @change="setRoom()" <select class="md-select" @change="setRoom()"
v-model="room_materials.back"> v-model="room_materials.back">
<option v-for="prop in roomProps" :value="prop">{{ prop }}</option> <option v-for="prop in roomProps" :value="prop">{{ prop }}</option>
@ -222,7 +222,7 @@
</div> </div>
<div class="col flex-center"> <div class="col flex-center">
<label> <label>
Right {{$root.getLz('spatial.right')}}
<select class="md-select" @change="setRoom()" <select class="md-select" @change="setRoom()"
v-model="room_materials.right"> v-model="room_materials.right">
<option v-for="prop in roomProps" :value="prop">{{ prop }}</option> <option v-for="prop in roomProps" :value="prop">{{ prop }}</option>
@ -234,7 +234,7 @@
<div class="col"></div> <div class="col"></div>
<div class="col flex-center"> <div class="col flex-center">
<label> <label>
Down {{$root.getLz('spatial.down')}}
<select class="md-select" @change="setRoom()" <select class="md-select" @change="setRoom()"
v-model="room_materials.down"> v-model="room_materials.down">
<option v-for="prop in roomProps" :value="prop">{{ prop }}</option> <option v-for="prop in roomProps" :value="prop">{{ prop }}</option>

View file

@ -586,12 +586,11 @@
<cider-queue ref="queue" v-if="drawer.panel == 'queue'"></cider-queue> <cider-queue ref="queue" v-if="drawer.panel == 'queue'"></cider-queue>
</div> </div>
</transition> </transition>
<cider-menu-panel v-if="menuPanel.visible">
</cider-menu-panel>
</div> </div>
</div> </div>
</transition> </transition>
<cider-menu-panel v-if="menuPanel.visible">
</cider-menu-panel>
<transition name="fsModeSwitch"> <transition name="fsModeSwitch">
<div class="fullscreen-view-container" v-if="appMode == 'fullscreen'"> <div class="fullscreen-view-container" v-if="appMode == 'fullscreen'">
<fullscreen-view :image="currentArtUrl.replace('50x50', '600x600')" :time="lyriccurrenttime" <fullscreen-view :image="currentArtUrl.replace('50x50', '600x600')" :time="lyriccurrenttime"

View file

@ -3,15 +3,14 @@
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<img src="assets/banner.png" alt="Cider Logo" style="display:block;margin:0 auto;width: 500px;"> <img src="assets/banner.png" alt="Cider Logo" style="display:block;margin:0 auto;width: 500px;">
<p style="text-align: center">Major thanks to the Cider Collective Team and all of our contributors.</p> <p style="text-align: center"> {{$root.getLz('about.thanks')}} </p>
<p style="text-align: center">"Apple Music" - Copyright © 2021 <a href="https://www.apple.com/" class="dt-footer__link" <p style="text-align: center">"{{$root.getLz('term.appleMusic')}}" - {{$root.getLz('term.copyright')}} © 2022 <a href="https://www.apple.com/" class="dt-footer__link"
target="_blank" target="_blank"
rel="noopener" data-dt-link-to-exclude="">Apple Inc.</a> rel="noopener" data-dt-link-to-exclude="">{{$root.getLz('term.appleInc')}}</a>
All Rights {{$root.getLz('term.rightsReserved')}}</p>
Reserved.</p>
<hr> <hr>
<h3>Sponsor this project</h3> <h3>{{$root.getLz('term.sponsor')}}</h3>
<button onclick="window.open('https://ko-fi.com/cryptofyre')" class="md-btn sponsorBtn"><img src="./assets/ko_fi.svg"/>Ko-fi</button> <button onclick="window.open('https://ko-fi.com/cryptofyre')" class="md-btn sponsorBtn"><img src="./assets/ko_fi.svg"/>Ko-fi</button>
<button onclick="window.open('https://opencollective.com/ciderapp')" class="md-btn sponsorBtn"><img src="./assets/open_collective.svg"/>Open Collective</button> <button onclick="window.open('https://opencollective.com/ciderapp')" class="md-btn sponsorBtn"><img src="./assets/open_collective.svg"/>Open Collective</button>
@ -19,7 +18,7 @@
<div class="col"> <div class="col">
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<h3>Cider Team</h3> <h3>{{$root.getLz('term.ciderTeam')}}</h3>
<button class="md-btn teamBtn" @click="window.open(member.link)" v-for="member in team"> <button class="md-btn teamBtn" @click="window.open(member.link)" v-for="member in team">
<img :src="member.avatar"/> <img :src="member.avatar"/>
<div class="row" style="width:100%;"> <div class="row" style="width:100%;">
@ -36,7 +35,7 @@
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<h3></h3> <h3></h3>
<h3>Contributors</h3> <h3>{{$root.getLz('term.contributors')}}</h3>
<img class="md-contributors" <img class="md-contributors"
style="cursor:pointer;width:100%;" style="cursor:pointer;width:100%;"
onclick="window.open('https://github.com/ciderapp/Cider/graphs/contributors')" onclick="window.open('https://github.com/ciderapp/Cider/graphs/contributors')"
@ -58,43 +57,43 @@
{ {
name: 'cryptofyre', name: 'cryptofyre',
link: 'https://github.com/cryptofyre', link: 'https://github.com/cryptofyre',
role: 'Developer', role: app.getLz('term.developer'),
avatar: 'https://avatars.githubusercontent.com/u/33162551?v=4' avatar: 'https://avatars.githubusercontent.com/u/33162551?v=4'
}, },
{ {
name: 'Core', name: 'Core',
link: 'https://github.com/coredev-uk', link: 'https://github.com/coredev-uk',
role: 'Developer', role: app.getLz('term.developer'),
avatar: 'https://avatars.githubusercontent.com/u/64542347?v=4' avatar: 'https://avatars.githubusercontent.com/u/64542347?v=4'
}, },
{ {
name: 'Quacksire', name: 'Quacksire',
link: 'https://github.com/quacksire', link: 'https://github.com/quacksire',
role: 'Developer', role: app.getLz('term.developer'),
avatar: 'https://avatars.githubusercontent.com/u/19170969?v=4' avatar: 'https://avatars.githubusercontent.com/u/19170969?v=4'
}, },
{ {
name: 'booploops', name: 'booploops',
link: 'https://github.com/booploops', link: 'https://github.com/booploops',
role: 'Developer', role: app.getLz('term.developer'),
avatar: 'https://avatars.githubusercontent.com/u/49113086?v=4' avatar: 'https://avatars.githubusercontent.com/u/49113086?v=4'
}, },
{ {
name: 'vapormusic', name: 'vapormusic',
link: 'https://github.com/vapormusic', link: 'https://github.com/vapormusic',
role: 'Developer', role: app.getLz('term.developer'),
avatar: 'https://avatars.githubusercontent.com/u/27716185?v=4' avatar: 'https://avatars.githubusercontent.com/u/27716185?v=4'
}, },
{ {
name: 'Void', name: 'Void',
link: 'https://twitter.com/MoonyVoid', link: 'https://twitter.com/MoonyVoid',
role: 'Social Team', role: app.getLz('term.socialTeam'),
avatar: 'https://pbs.twimg.com/profile_images/1226463559472816129/8LScNYED_400x400.jpg' avatar: 'https://pbs.twimg.com/profile_images/1226463559472816129/8LScNYED_400x400.jpg'
}, },
{ {
name: 'NoseySG', name: 'NoseySG',
link: 'https://twitter.com/noah_grose', link: 'https://twitter.com/noah_grose',
role: 'Social Team', role: app.getLz('term.socialTeam'),
avatar: 'https://pbs.twimg.com/profile_images/1422541289837535239/qg-aaoP9_400x400.jpg' avatar: 'https://pbs.twimg.com/profile_images/1422541289837535239/qg-aaoP9_400x400.jpg'
} }
] ]

View file

@ -441,11 +441,11 @@
let month, year; let month, year;
try { try {
const releaseDate = new Date(date); const releaseDate = new Date(date);
month = new Intl.DateTimeFormat('en-US', {month: 'long'}).format(releaseDate); // month = new Intl.DateTimeFormat(this.app.cfg.general.language.replace('_','-'), {month: 'long'}).format(releaseDate);
date = releaseDate.getDate(); // date = releaseDate.getDate();
year = releaseDate.getFullYear(); // year = releaseDate.getFullYear();
return prefix + date + " " + month + " " + year; return prefix + new Intl.DateTimeFormat(this.app.cfg.general.language?.replace('_','-') ?? 'en-US', {day:'numeric',month: 'long', year: 'numeric'}).format(releaseDate);
} catch (e) { } catch (e) {
return "" return ""
} }

View file

@ -14,20 +14,20 @@
</div> </div>
<div v-if="search.term == ''"> <div v-if="search.term == ''">
<div class="podcast-list-header" v-if="ciderPodcasts.length != 0"> <div class="podcast-list-header" v-if="ciderPodcasts.length != 0">
Followed on Cider {{$root.getLz('podcast.followedOnCider')}}
</div> </div>
<div class="podcast-list-header" v-if="podcasts.length != 0"> <div class="podcast-list-header" v-if="podcasts.length != 0">
Subscribed on iTunes {{$root.getLz('podcast.subscribedOnItunes')}}
</div> </div>
<podcast-tab :isselected="podcastSelected.id == podcast.id" @click.native="selectPodcast(podcast)" v-for="podcast in podcasts" :item="podcast"></podcast-tab> <podcast-tab :isselected="podcastSelected.id == podcast.id" @click.native="selectPodcast(podcast)" v-for="podcast in podcasts" :item="podcast"></podcast-tab>
</div> </div>
<div v-else> <div v-else>
<div class="podcast-list-header" v-if="podcasts.length != 0"> <div class="podcast-list-header" v-if="podcasts.length != 0">
Library {{$root.getLz('term.library')}}
</div> </div>
<podcast-tab :isselected="podcastSelected.id == podcast.id" @click.native="selectPodcast(podcast)" v-for="podcast in search.resultsLibrary" :item="podcast"></podcast-tab> <podcast-tab :isselected="podcastSelected.id == podcast.id" @click.native="selectPodcast(podcast)" v-for="podcast in search.resultsLibrary" :item="podcast"></podcast-tab>
<div class="podcast-list-header" v-if="podcasts.length != 0"> <div class="podcast-list-header" v-if="podcasts.length != 0">
iTunes Store {{$root.getLz('podcast.itunesStore')}}
</div> </div>
<podcast-tab :isselected="podcastSelected.id == podcast.id" @click.native="selectPodcast(podcast)" v-for="podcast in search.results" :item="podcast"></podcast-tab> <podcast-tab :isselected="podcastSelected.id == podcast.id" @click.native="selectPodcast(podcast)" v-for="podcast in search.results" :item="podcast"></podcast-tab>
</div> </div>
@ -50,13 +50,13 @@
<div class="well podcast-show-description">{{ podcastSelected.attributes.description.standard }}</div> <div class="well podcast-show-description">{{ podcastSelected.attributes.description.standard }}</div>
<div class="row" v-if="!isSubscribed(podcastSelected.id)"> <div class="row" v-if="!isSubscribed(podcastSelected.id)">
<div class="col"> <div class="col">
<button class="md-btn md-btn-block">Follow on Cider</button> <button class="md-btn md-btn-block">{{$root.getLz('podcast.followOnCider')}}</button>
</div> </div>
<div class="col"> <div class="col">
<button class="md-btn md-btn-block">Subscribe on iTunes</button> <button class="md-btn md-btn-block">{{$root.getLz('podcast.subscribeOnItunes')}}</button>
</div> </div>
</div> </div>
<h3>Episodes</h3> <h3>{{$root.getLz('podcast.episodes')}}</h3>
</div> </div>
<div v-if="this.search.results.length == 0 && podcastSelected.id == -1" class="podcast-no-search-results"> <div v-if="this.search.results.length == 0 && podcastSelected.id == -1" class="podcast-no-search-results">
<h3>{{$root.getLz('error.noResults')}}</h3> <h3>{{$root.getLz('error.noResults')}}</h3>
@ -74,7 +74,7 @@
<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>
</div> </div>
<h3 class="podcast-header">{{ selected.attributes.name }}</h3> <h3 class="podcast-header">{{ selected.attributes.name }}</h3>
<button @click="playEpisode(selected)" class="md-btn podcast-play-btn">Play Episode</button> <button @click="playEpisode(selected)" class="md-btn podcast-play-btn">{{$root.getLz('podcast.playEpisode')}}</button>
<div class="podcast-genre"> <div class="podcast-genre">
{{ selected.attributes.genreNames[0] }} {{ selected.attributes.genreNames[0] }}
</div> </div>
@ -84,10 +84,10 @@
<div class="well podcast-description" v-if="selected.attributes.description.standard">{{ selected.attributes.description.standard }}</div> <div class="well podcast-description" v-if="selected.attributes.description.standard">{{ selected.attributes.description.standard }}</div>
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<button class="md-btn md-btn-block meta-btn" @click="openUrl(selected.attributes.websiteUrl)">Podcast Website</button> <button class="md-btn md-btn-block meta-btn" @click="openUrl(selected.attributes.websiteUrl)">{{$root.getLz('podcast.website')}}</button>
</div> </div>
<div class="col"> <div class="col">
<button class="md-btn md-btn-block meta-btn">Share</button> <button class="md-btn md-btn-block meta-btn">{{$root.getLz('action.share')}}</button>
</div> </div>
</div> </div>
</div> </div>

View file

@ -472,7 +472,7 @@
</div> </div>
<div class="md-option-line" v-show ="app.cfg.lastfm.enabled"> <div class="md-option-line" v-show ="app.cfg.lastfm.enabled">
<div class="md-option-segment"> <div class="md-option-segment">
LastFM Scrobble Delay (%) {{$root.getLz('settings.option.connectivity.lastfmScrobble.delay')}}
</div> </div>
<div class="md-option-segment md-option-segment_auto" > <div class="md-option-segment md-option-segment_auto" >
<input type="number" min="50" max="100" v-model="app.cfg.lastfm.scrobble_after"/> <input type="number" min="50" max="100" v-model="app.cfg.lastfm.scrobble_after"/>
@ -480,7 +480,7 @@
</div> </div>
<div class="md-option-line" v-show ="app.cfg.lastfm.enabled"> <div class="md-option-line" v-show ="app.cfg.lastfm.enabled">
<div class="md-option-segment"> <div class="md-option-segment">
Enable LastFM Now Playing {{$root.getLz('settings.option.connectivity.lastfmScrobble.nowPlaying')}}
</div> </div>
<div class="md-option-segment md-option-segment_auto" > <div class="md-option-segment md-option-segment_auto" >
<input type="checkbox" v-model="app.cfg.lastfm.NowPlaying" switch/> <input type="checkbox" v-model="app.cfg.lastfm.NowPlaying" switch/>
@ -488,7 +488,7 @@
</div> </div>
<div class="md-option-line" v-show ="app.cfg.lastfm.enabled"> <div class="md-option-line" v-show ="app.cfg.lastfm.enabled">
<div class="md-option-segment"> <div class="md-option-segment">
Remove featuring artists from song title (LastFM) {{$root.getLz('settings.option.connectivity.lastfmScrobble.removeFeatured')}}
</div> </div>
<div class="md-option-segment md-option-segment_auto" > <div class="md-option-segment md-option-segment_auto" >
<input type="checkbox" v-model="app.cfg.lastfm.enabledRemoveFeaturingArtists" switch/> <input type="checkbox" v-model="app.cfg.lastfm.enabledRemoveFeaturingArtists" switch/>
@ -520,6 +520,7 @@
<option value="en_US">en_US</option> <option value="en_US">en_US</option>
<option value="el_GR">el_GR</option> <option value="el_GR">el_GR</option>
<option value="ja_JP">ja_JP</option> <option value="ja_JP">ja_JP</option>
<option value="pt_BR">pt_BR</option>
<option value="tr_TR">tr_TR</option> <option value="tr_TR">tr_TR</option>
<option value="zh_CN">zh_CN</option> <option value="zh_CN">zh_CN</option>
<option value="zh_TW">zh_TW</option> <option value="zh_TW">zh_TW</option>