Compare commits

..
Author SHA1 Message Date
Jonah Brüchert f9948bf3c3 WIP 2022-07-29 02:57:13 +02:00
Jonah Brüchert 94c3e653f7 Begin work on MPRIS integration
This code should eventually become a library, therefore we already have
the restriction that the mpris2 static library may not link against
other parts of the AudioTube code.
2022-07-19 16:23:41 +02:00
93 changed files with 4035 additions and 8367 deletions

No files matched your search

-1
View File
@@ -1 +0,0 @@
org.kde.audiotube.json
+1 -2
View File
@@ -3,5 +3,4 @@
# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
include:
- https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/reuse-lint.yml
- https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/flatpak.yml
- 'https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/reuse-lint.yml'
+5 -10
View File
@@ -4,16 +4,11 @@
cmake_minimum_required(VERSION 3.16.0)
# KDE Applications version, managed by release script.
set(RELEASE_SERVICE_VERSION_MAJOR "23")
set(RELEASE_SERVICE_VERSION_MINOR "03")
set(RELEASE_SERVICE_VERSION_MICRO "70")
set(RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
project(audiotube VERSION ${RELEASE_SERVICE_VERSION})
project(audiotube)
include(FeatureSummary)
set(PROJECT_VERSION "22.06")
set(QT5_MIN_VERSION 5.15)
set(KF5_MIN_VERSION 5.81)
@@ -38,11 +33,11 @@ ecm_setup_version(${PROJECT_VERSION}
kde_enable_exceptions()
find_package(Qt${QT_MAJOR_VERSION} ${QT5_MIN_VERSION} REQUIRED COMPONENTS Core Gui Qml QuickControls2 Svg Sql Widgets)
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS Kirigami2 I18n CoreAddons Crash WindowSystem)
find_package(Qt5 ${QT5_MIN_VERSION} REQUIRED COMPONENTS Core Gui Qml QuickControls2 Svg Sql DBus)
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS Kirigami2 I18n CoreAddons Crash)
find_package(pybind11 REQUIRED)
find_package(Ytdlp REQUIRED RUNTIME)
find_package(YTMusicAPI 0.24.0 REQUIRED RUNTIME)
find_package(YTMusicAPI REQUIRED RUNTIME)
ki18n_install(po)
-6
View File
@@ -2,12 +2,6 @@
AudioTube is a client for YouTube Music.
<a href='https://flathub.org/apps/details/org.kde.audiotube'><img width='190px' alt='Download on Flathub' src='https://flathub.org/assets/badges/flathub-badge-i-en.png'/></a>
## Links
* Project page: https://invent.kde.org/plasma-mobile/audiotube
* File issues: https://bugs.kde.org/describecomponents.cgi?product=audiotube
# Dependencies
It depends on Qt, Kirigami, KI18n, KCoreAddons and KCrash in addition to a few python packages:
+1 -13
View File
@@ -4,20 +4,8 @@
find_package(Python3 REQUIRED COMPONENTS Interpreter)
execute_process(COMMAND ${Python3_EXECUTABLE} -c "import ytmusicapi; print(ytmusicapi.version('ytmusicapi'))" RESULT_VARIABLE YTMUSICAPI_CHECK_RESULT OUTPUT_VARIABLE YTMusicAPI_VERSION)
string(STRIP ${YTMusicAPI_VERSION} YTMusicAPI_VERSION)
execute_process(COMMAND ${Python3_EXECUTABLE} -c "import ytmusicapi" RESULT_VARIABLE YTMUSICAPI_CHECK_RESULT)
if (${YTMUSICAPI_CHECK_RESULT} EQUAL 0)
set(YTMusicAPI_FOUND TRUE)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(YTMusicAPI
FOUND_VAR
YTMusicAPI_FOUND
REQUIRED_VARS
Python3_EXECUTABLE
VERSION_VAR
YTMusicAPI_VERSION
)
+16 -16
View File
@@ -5,6 +5,16 @@
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"yt-dlp\" --no-build-isolation"
],
"sources": [
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/f8/a3/622d9acbfb9a71144b5d7609906bc648c62e3ca5fdbb1c8cca222949d82c/websockets-10.3.tar.gz",
"sha256": "fc06cc8073c8e87072138ba1e431300e2d408f054b27047d047b549455066ff4"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/16/b3/f7aa8edf2ff4495116f95fd442b2a346aa55d1d46313143c8814886dbcdb/mutagen-1.45.1-py3-none-any.whl",
"sha256": "9c9f243fcec7f410f138cb12c21c84c64fde4195481a30c9bfb05b5f003adfed"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/2a/18/70c32fe9357f3eea18598b23aa9ed29b1711c3001835f7cf99a9818985d0/Brotli-1.0.9.zip",
@@ -12,28 +22,18 @@
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/71/4c/3db2b8021bd6f2f0ceb0e088d6b2d49147671f25832fb17970e9b583d742/certifi-2022.12.7-py3-none-any.whl",
"sha256": "4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"
"url": "https://files.pythonhosted.org/packages/e9/06/d3d367b7af6305b16f0d28ae2aaeb86154fa91f144f036c2d5002a5a202b/certifi-2022.6.15-py3-none-any.whl",
"sha256": "fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/03/ee/114d7016d2e34f341e212fefb5e7bd87785077ebcfff0ad23a497c70eea1/mutagen-1.46.0-py3-none-any.whl",
"sha256": "8af0728aa2d5c3ee5a727e28d0627966641fddfe804c23eabb5926a4d770aed5"
"url": "https://files.pythonhosted.org/packages/1f/13/b1f7b4e44b11584a5f077af87895961b57911217a629efb8d3a9efd2a491/yt_dlp-2022.7.18-py2.py3-none-any.whl",
"sha256": "d7d1f81d230756f094b4d9ee59b37b2c13b2e63ff5fb72cda53625edb072cdae"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/5d/22/575c7dd7c86843e07a791cfa2143e7292d6b380f5a7cce966a49b9d6c9f4/pycryptodomex-3.16.0.tar.gz",
"sha256": "e9ba9d8ed638733c9e95664470b71d624a6def149e2db6cc52c1aca5a6a2df1d"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/85/dc/549a807a53c13fd4a8dac286f117a7a71260defea9ec0c05d6027f2ae273/websockets-10.4.tar.gz",
"sha256": "eef610b23933c54d5d921c92578ae5f89813438fded840c2e9809d378dc765d3"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/a7/49/b49e0ae6fdc959235ecb89a3a5be77dd050493dc30845f89482fb83e38b4/yt_dlp-2023.1.6-py2.py3-none-any.whl",
"sha256": "bcac3231e2022cad128a83f69948c845b364b2a85fde53415378f7c199808849"
"url": "https://files.pythonhosted.org/packages/52/0d/6cc95a83f6961a1ca041798d222240890af79b381e97eda3b9b538dba16f/pycryptodomex-3.15.0.tar.gz",
"sha256": "7341f1bb2dadb0d1a0047f34c3a58208a92423cdbd3244d998e4b28df5eac0ed"
}
]
}
+12 -12
View File
@@ -7,33 +7,33 @@
"sources": [
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/71/4c/3db2b8021bd6f2f0ceb0e088d6b2d49147671f25832fb17970e9b583d742/certifi-2022.12.7-py3-none-any.whl",
"sha256": "4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"
"url": "https://files.pythonhosted.org/packages/94/69/64b11e8c2fb21f08634468caef885112e682b0ebe2908e74d3616eb1c113/charset_normalizer-2.1.0-py3-none-any.whl",
"sha256": "5189b6f22b01957427f35b6a08d9a0bc45b46d3788ef5a92e978433c7a35f8a5"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/96/d7/1675d9089a1f4677df5eb29c3f8b064aa1e70c1251a0a8a127803158942d/charset-normalizer-3.0.1.tar.gz",
"sha256": "ebea339af930f8ca5d7a699b921106c6e29c617fe9606fa7baa043c1cdae326f"
"url": "https://files.pythonhosted.org/packages/68/47/93d3d28e97c7577f563903907912f4b3804054e4877a5ba6651f7182c53b/urllib3-1.26.10-py2.py3-none-any.whl",
"sha256": "8298d6d56d39be0e3bc13c1c97d133f9b45d797169a0e11cdd0e0489d786f7ec"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl",
"sha256": "90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
"url": "https://files.pythonhosted.org/packages/ca/91/6d9b8ccacd0412c08820f72cebaa4f0c0441b5cda699c90f618b6f8a1b42/requests-2.28.1-py3-none-any.whl",
"sha256": "8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/d2/f4/274d1dbe96b41cf4e0efb70cbced278ffd61b5c7bb70338b62af94ccb25b/requests-2.28.2-py3-none-any.whl",
"sha256": "64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa"
"url": "https://files.pythonhosted.org/packages/0e/5a/4a5316bddbb697d4b1787159291edfeffd10f73c08b59c7248b15291b601/ytmusicapi-0.22.0-py3-none-any.whl",
"sha256": "d042520f3f76eac2c1498130dbc4e8a4af21ca73496590a5ff054fc4da0af1d8"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/fe/ca/466766e20b767ddb9b951202542310cba37ea5f2d792dae7589f1741af58/urllib3-1.26.14-py2.py3-none-any.whl",
"sha256": "75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1"
"url": "https://files.pythonhosted.org/packages/04/a2/d918dcd22354d8958fe113e1a3630137e0fc8b44859ade3063982eacd2a4/idna-3.3-py3-none-any.whl",
"sha256": "84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"
},
{
"type": "file",
"url": "https://files.pythonhosted.org/packages/14/a9/5ba638ca601c74f169e0e0b055526566f2fa6b6402233a29aba607dca58e/ytmusicapi-0.25.0-py3-none-any.whl",
"sha256": "be355bb3409c0e6c25a95ffd92213bd216561cdd8a0493a36a82d1726ff6efb9"
"url": "https://files.pythonhosted.org/packages/e9/06/d3d367b7af6305b16f0d28ae2aaeb86154fa91f144f036c2d5002a5a202b/certifi-2022.6.15-py3-none-any.whl",
"sha256": "fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"
}
]
}
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

+3 -34
View File
@@ -19,18 +19,14 @@ SPDX-License-Identifier: CC0-1.0
<name xml:lang="fi">AudioTube</name>
<name xml:lang="fr">AudioTube</name>
<name xml:lang="hi">ओडियो-ट्यूब</name>
<name xml:lang="id">AudioTube</name>
<name xml:lang="it">AudioTube</name>
<name xml:lang="ka">AudioTube</name>
<name xml:lang="ko">AudioTube</name>
<name xml:lang="nl">AudioTube</name>
<name xml:lang="nn">AudioTube</name>
<name xml:lang="pa">ਆਡੀਓ-ਟਿਊਬ</name>
<name xml:lang="pl">AudioTube</name>
<name xml:lang="pt">AudioTube</name>
<name xml:lang="pt-BR">AudioTube</name>
<name xml:lang="ro">AudioTube</name>
<name xml:lang="ru">AudioTube</name>
<name xml:lang="sk">AudioTube</name>
<name xml:lang="sl">AudioTube</name>
<name xml:lang="sv">AudioTube</name>
@@ -50,20 +46,16 @@ SPDX-License-Identifier: CC0-1.0
<summary xml:lang="fi">Mukautuva YouTube Music -asiakas</summary>
<summary xml:lang="fr">Client convergent pour musique sur YouTube</summary>
<summary xml:lang="hi">अभिसृत यूट्यूब संगीत क्लाएंट</summary>
<summary xml:lang="id">Klien YouTube Music konvergen</summary>
<summary xml:lang="it">Client YouTube Music convergente</summary>
<summary xml:lang="ka">YouTube Music -ის კონვერგენტული კლიენტი</summary>
<summary xml:lang="ko">올인원 YouTube Music 클라이언트</summary>
<summary xml:lang="nl">Convergente muziekclient van YouTube</summary>
<summary xml:lang="nn">YouTube Music-klient, tilpassa ulike brukarflater</summary>
<summary xml:lang="pl">Adaptacyjny program do YouTube Music</summary>
<summary xml:lang="pt">Cliente de música do YouTube convergente</summary>
<summary xml:lang="pt-BR">Um cliente convergente para o YouTube Music</summary>
<summary xml:lang="ro">Client convergent de muzică pentru YouTube</summary>
<summary xml:lang="ru">Клиент для YouTube Music</summary>
<summary xml:lang="sl">Konvergentni odjemalec glasbe YouTube</summary>
<summary xml:lang="sv">Konvergent YouTube-musikprogram</summary>
<summary xml:lang="tr">Yakınsak YouTube Müzik İstemcisi</summary>
<summary xml:lang="tr">Yakınsak YouTube Müzik istemcisi</summary>
<summary xml:lang="uk">Зручний музичний клієнт YouTube</summary>
<summary xml:lang="x-test">xxConvergent YouTube Music clientxx</summary>
<summary xml:lang="zh-CN">桌面和移动设备通用 YouTube Music 客户端</summary>
@@ -82,18 +74,14 @@ SPDX-License-Identifier: CC0-1.0
<developer_name xml:lang="fi">KDE-yhteisö</developer_name>
<developer_name xml:lang="fr">Communauté de KDE</developer_name>
<developer_name xml:lang="hi">केडीई समुदाय</developer_name>
<developer_name xml:lang="id">Komunitas KDE</developer_name>
<developer_name xml:lang="it">Comunità KDE</developer_name>
<developer_name xml:lang="ka">KDE-ის საზოგადოება</developer_name>
<developer_name xml:lang="ko">KDE 커뮤니티</developer_name>
<developer_name xml:lang="nl">KDE-gemeenschap</developer_name>
<developer_name xml:lang="nn">KDE-fellesskapet</developer_name>
<developer_name xml:lang="pa">ਕੇਡੀਈ ਕਮਿਊਨਟੀ</developer_name>
<developer_name xml:lang="pl">Społeczność KDE</developer_name>
<developer_name xml:lang="pt">Comunidade do KDE</developer_name>
<developer_name xml:lang="pt-BR">A Comunidade KDE</developer_name>
<developer_name xml:lang="ro">Comunitatea KDE</developer_name>
<developer_name xml:lang="ru">Сообщество KDE</developer_name>
<developer_name xml:lang="sk">KDE komunita</developer_name>
<developer_name xml:lang="sl">Skupnost KDE</developer_name>
<developer_name xml:lang="sv">KDE-gemenskapen</developer_name>
@@ -104,15 +92,6 @@ SPDX-License-Identifier: CC0-1.0
<content_rating type="oars-1.0"/>
<url type="homepage">https://apps.kde.org/en/audiotube</url>
<releases>
<release version="23.01" date="2023-01-30">
<url>https://plasma-mobile.org/2023/01/30/january-blog-post/</url>
</release>
<release version="22.11" date="2022-11-30">
<url>https://plasma-mobile.org/2022/11/30/plasma-mobile-gear-22-11/</url>
</release>
<release version="22.09" date="2022-09-27">
<url>https://www.plasma-mobile.org/2022/09/27/plasma-mobile-gear-22-09/</url>
</release>
<release version="22.06" date="2022-06-24">
<url>https://www.plasma-mobile.org/2022/06/28/plasma-mobile-gear-22-06/</url>
<description>
@@ -153,17 +132,11 @@ SPDX-License-Identifier: CC0-1.0
<image>https://cdn.kde.org/screenshots/audiotube/library.png</image>
</screenshot>
<screenshot>
<image>https://cdn.kde.org/screenshots/audiotube/player.png</image>
<image>https://cdn.kde.org/screenshots/audiotube/mobile_playlist.png</image>
</screenshot>
<screenshot>
<image>https://cdn.kde.org/screenshots/audiotube/desktop.png</image>
</screenshot>
<screenshot>
<image>https://cdn.kde.org/screenshots/audiotube/mobile_album.png</image>
</screenshot>
<screenshot>
<image>https://cdn.kde.org/screenshots/audiotube/mobile_playlist.png</image>
</screenshot>
</screenshots>
<recommends>
<control>pointing</control>
@@ -181,18 +154,14 @@ SPDX-License-Identifier: CC0-1.0
<p xml:lang="es">AudioTube puede buscar música de YouTube, listar álbumes y artistas, reproducir las listas de reproducción generadas, álbumes y le permite crear su propia lista de reproducción.</p>
<p xml:lang="eu">AudioTube-k YouTube Music-en bilatu dezake, albumak eta artistak zerrendatu, automatikoki sortutako jotze-zerrendak eta albumak jo, eta zure jotze-zerrenda osatzeko aukera eskaintzen dizu.</p>
<p xml:lang="fi">AudioTube osaa etsiä YouTube Music -haun, albumien ja artistien luettelun, luotujen soittolistojen automaattisen toiston ja omien soittolistojen kokoamisen.</p>
<p xml:lang="fr">AudioTube peut effectuer des recherches de musiques sur la partie « Musique » de YouTube, établir une liste d'albums et d'artistes, lire des listes de lecture générées automatiquement, des albums et permet de composer sa propre liste de lecture.</p>
<p xml:lang="fr">AudioTube peut effectuer des recherches de musiques sur YouTube Music, établir une liste d'albums et d'artistes, lire des listes de lecture générées automatiquement, des albums et permet de composer sa propre liste de lecture.</p>
<p xml:lang="hi">ऑडियोट्यूब यूट्यूब संगीत खोज सकता है, एल्बम और कलाकारों की सूची बना सकता है, स्वचालित रूप से उत्पन्न की गई गीतसूची, एल्बम बजा सकता है और आपकी अपनी खुद की प्लेलिस्ट को एक साथ रखने में मदद करता है।</p>
<p xml:lang="id">AudioTube dapat menelusuri YouTube Music, daftarkan album dan artis, putar daftar putar dan yang dibuat secara otomatis dan album, dan memungkinkan Anda untuk membuat daftar putar Anda sendiri.</p>
<p xml:lang="it">AudioTube può eseguire ricerche su YouTube Music, elencare album e artisti, riprodurre scalette e album generati automaticamente e ti consente di creare la tua scaletta.</p>
<p xml:lang="ka">AudioTube -ს შეუძლია მოძებნოს მუსიკა YouTube-ზე, გაჩვენოთ ალბომებისა და შემსრულებლების სია, დაუკრას დაგენერირებული დასაკრავი სიები, ალბომები და საშუალებას გაძლევთ, თქვენი დასაკრავი სია შექმნათ.</p>
<p xml:lang="ko">AudioTube는 YouTube Music을 검색하고, 앨범과 아티스트를 표시하고, 자동 생성된 재생 목록, 앨범을 재생하고, 사용자 정의 재생 목록을 만들 수 있습니다.</p>
<p xml:lang="nl">AudioTube kan in YouTube Music zoeken, een lijst maken van albums en artiesten, automatically gegenereerde afspeellijsten, albums afspelen en biedt u het samenstellen van uw eigen afspeellijst.</p>
<p xml:lang="nn">Med AudioTube kan du søkja på YouTube Music, visa album og artistar, spela automatiske genererte spelelister og album samt laga eigne spelelister.</p>
<p xml:lang="pl">AudioTube może przeszukiwać serwis YouTube Music, wypisać albumy i wykonawców, odtwarzać samoczynnie utworzone listy odtwarzania, albumy oraz umożliwia tworzenie własnych list odtwarzania.</p>
<p xml:lang="pt">O AudioTube consegue pesquisar no YouTube Music, enumerar os álbuns e artistas, reproduzir listas geradas automaticamente, álbuns e permite-lhe reproduzir as suas próprias listas de reprodução.</p>
<p xml:lang="pt-BR">O AudioTube pode pesquisar no YouTube Music, listar álbuns e artistas, rodar listas de reprodução geradas automaticamente, álbuns inteiros, e criar a sua própria lista de reprodução.</p>
<p xml:lang="ru">AudioTube позволяет выполнять поиск в сервисе YouTube Music, просматривать списки найденных альбомов и исполнителей, проигрывать автоматически созданные списки воспроизведения и альбомы, а также использовать свои собственные списки воспроизведения.</p>
<p xml:lang="sl">AudioTube lahko išče po YouTube Music, izdela sezname albumov in avtorjev, samodejno predvaja generirane sezname, albume in sestavlja vaše sezname predvajanja.</p>
<p xml:lang="sv">AudioTube kan söka på YouTube Music, lista album och artister, spela upp automatiskt genererade spellistor, albums och låter dig sammanställa egna spellistor.</p>
<p xml:lang="tr">AudioTube, YouTube Müzik'te arama yapabilir; albümleri, sanatçıları listeler; kendiliğinden oluşturulmuş çalma listelerini, albümleri çalar ve kendi çalma listenizi oluşturmanıza izin verir.</p>
-8
View File
@@ -12,18 +12,14 @@ Name[eu]=AudioTube
Name[fi]=AudioTube
Name[fr]=AudioTube
Name[hi]=ओडियो-ट्यूब
Name[id]=AudioTube
Name[it]=AudioTube
Name[ka]=AudioTube
Name[ko]=AudioTube
Name[nl]=AudioTube
Name[nn]=AudioTube
Name[pa]=ਆਡੀਓ-ਟਿਊਬ
Name[pl]=AudioTube
Name[pt]=AudioTube
Name[pt_BR]=AudioTube
Name[ro]=AudioTube
Name[ru]=AudioTube
Name[sk]=AudioTube
Name[sl]=AudioTube
Name[sv]=AudioTube
@@ -44,18 +40,14 @@ Comment[eu]=YouTube Music bezeroa
Comment[fi]=YouTube Music -asiakas
Comment[fr]=Client de musique sur Youtube
Comment[hi]=यूट्यूब संगीत क्लाएंट
Comment[id]=Klien YouTube Music
Comment[it]=Client YouTube Music
Comment[ka]=YouTube Music -ის კლიენტი
Comment[ko]=YouTube Music 클라이언트
Comment[nl]=Muziekclient van YouTube
Comment[nn]=YouTube Music-klient
Comment[pa]=ਯੂਟਿਊਬ ਸੰਗੀਤ ਕਲਾਈਂਟ
Comment[pl]=Program do YouTube Music
Comment[pt]=Cliente do YouTube Music
Comment[pt_BR]=Cliente YouTube Music
Comment[ro]=Client de muzică pentru YouTube
Comment[ru]=Клиент для YouTube Music
Comment[sk]=Hudobný klient YouTube
Comment[sl]=Glasbeni odjemalec Youtube
Comment[sv]=YouTube-musikprogram
+2 -2
View File
@@ -1,7 +1,7 @@
{
"id": "org.kde.audiotube",
"runtime": "org.kde.Platform",
"runtime-version": "5.15-22.08",
"runtime-version": "5.15-21.08",
"sdk": "org.kde.Sdk",
"command": "audiotube",
"tags": ["nightly"],
@@ -28,7 +28,7 @@
"config-opts": ["-DPYBIND11_FINDPYTHON=ON", "-DPYBIND11_TEST=OFF"],
"buildsystem": "cmake-ninja",
"builddir": true,
"sources": [ { "type": "git", "url": "https://github.com/pybind/pybind11", "tag": "v2.10.3" } ]
"sources": [ { "type": "git", "url": "https://github.com/pybind/pybind11", "tag": "v2.9.1" } ]
},
{
"name": "org.kde.audiotube",
+1 -1
View File
@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" width="48" height="48" viewBox="0 0 12.7 12.7"><defs><linearGradient id="c"><stop offset="0" stop-color="#dc8689"/><stop offset="1" stop-color="#d56062"/></linearGradient><linearGradient id="b"><stop offset="0" stop-color="#da4453"/><stop offset="1" stop-color="#e74c3c"/></linearGradient><linearGradient id="a"><stop offset="0" stop-color="#c0392b"/><stop offset="1" stop-color="#c0392b" stop-opacity="0"/></linearGradient><linearGradient xlink:href="#a" id="e" x1="6.08542" x2="6.08542" y1="6.35" y2="11.3773" gradientUnits="userSpaceOnUse"/><linearGradient xlink:href="#b" id="d" x1="6.61458" x2="6.61458" y1="6.2178" y2="1.0583" gradientTransform="translate(0 -.15143)" gradientUnits="userSpaceOnUse"/><linearGradient xlink:href="#c" id="g" x1="10.58366" x2="11.64167" y1="6.08397" y2="6.08542" gradientUnits="userSpaceOnUse"/><linearGradient xlink:href="#c" id="f" x1="1.05833" x2="2.38125" y1="6.08542" y2="6.08542" gradientTransform="translate(-3.43958)" gradientUnits="userSpaceOnUse"/></defs><rect width="10.583" height="10.583" x="1.0584" y="1.0583" fill="#a83226" paint-order="stroke fill markers" rx="1.5875" ry="1.5875"/><rect width="10.583" height="10.319" x="1.0584" y=".90687" fill="url(#d)" paint-order="stroke fill markers" rx="1.5875" ry="1.5875"/><circle cx="6.35" cy="6.34408" r="3.97467" fill="none" stroke="#a83226" stroke-linecap="square" stroke-width=".51752"/><path fill="url(#e)" d="M1.05885 6.08542v3.83645c0 .87947.70803 1.5875 1.5875 1.5875h7.40782c.87946 0 1.5875-.70803 1.5875-1.5875V6.08542Z" paint-order="stroke fill markers"/><path fill="#ad3327" d="M1.05833 6.08542v.52916h2.51355a.132.132 0 0 0 .13229-.13229v-.26458a.132.132 0 0 0-.1323-.1323H1.05834z"/><path fill="#ac3327" d="M9.6578 6.08542a.132.132 0 0 0-.13228.13229v.26458a.132.132 0 0 0 .13229.1323h1.98386v-.52917Z"/><circle cx="6.3499" cy="6.06637" r="3.97467" fill="none" stroke="#dc8689" stroke-linecap="square" stroke-width=".51752"/><g fill="#ad3327" transform="translate(-.52917 -.26458)"><rect width=".52917" height=".52917" x="4.49792" y="6.35" rx=".13229" ry=".13229"/><rect width=".52917" height="4.7625" x="5.29167" y="4.49792" rx=".13229" ry=".13229"/><rect width=".52917" height="3.70417" x="6.08542" y="5.02708" rx=".13229" ry=".13229"/><rect width=".52917" height="2.64583" x="6.87917" y="5.55625" rx=".13229" ry=".13229"/><rect width=".52917" height="1.5875" x="7.67292" y="6.08542" rx=".13229" ry=".13229"/></g><path fill="#a83226" d="M7.9375 6.489v.27958c0 .06128.059.11059.1323.11059h.26458c.07328 0 .13229-.0493.13229-.1106v-.27956c-.00353.0701-.0613.12557-.1323.12557H8.0698c-.071 0-.12876-.05548-.13229-.12557z"/><path fill="#ad3327" d="M8.73125 6.22443V6.504c0 .06128.059.11058.1323.11058h.26458c.07328 0 .13229-.0493.13229-.11058v-.27957c-.00353.07009-.0613.12557-.1323.12557h-.26458c-.071 0-.12876-.05548-.13229-.12557z"/><rect width=".52917" height=".52917" x="3.96875" y="5.82083" fill="#f0b4ba" rx=".13229" ry=".13229"/><rect width=".52917" height="5.29167" x="4.7625" y="3.43958" fill="#fff" rx=".13229" ry=".13229"/><rect width=".52917" height="4.23333" x="5.55625" y="3.96875" fill="#fff" rx=".13229" ry=".13229"/><rect width=".52917" height="3.175" x="6.35" y="4.49792" fill="#fff" rx=".13229" ry=".13229"/><rect width=".52917" height="2.11667" x="7.14375" y="5.02708" fill="#fff" rx=".13229" ry=".13229"/><rect width=".52917" height="1.05833" x="7.9375" y="5.55625" fill="#fff" rx=".13229" ry=".13229"/><path fill="#dc8689" d="M2.38125 5.82083V6.35h1.19063a.132.132 0 0 0 .13229-.1323v-.26457a.132.132 0 0 0-.1323-.1323z"/><rect width=".52917" height=".52917" x="9.26042" y="6.08542" fill="#f0b4ba" rx=".13229" ry=".13229" transform="translate(-.52917 -.26458)"/><path fill="#dc8689" d="M9.6573 5.82083a.132.132 0 0 0-.1323.1323v.26458a.132.132 0 0 0 .1323.13229h.66145v-.52917Z"/><rect width="1.32292" height=".52917" x="-2.38125" y="5.82083" fill="url(#f)" rx="0" ry="0" transform="scale(-1 1)"/><rect width="1.32292" height=".52917" x="10.31875" y="5.82083" fill="url(#g)" rx="0" ry="0"/></svg>
<?xml version="1.0" encoding="UTF-8"?><svg width="48" height="48" version="1.1" viewBox="0 0 12.7 12.7" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><linearGradient id="a" x1="25" x2="25" y1="3" y2="42.605" gradientTransform="matrix(.26458 0 0 .26458 5.101e-5 3.6667e-7)" gradientUnits="userSpaceOnUse"><stop stop-color="#f47750" offset="0"/><stop stop-color="#ed1515" offset="1"/></linearGradient><linearGradient id="d" x1="24" x2="24" y1="35.353" y2="12.647" gradientUnits="userSpaceOnUse"><stop stop-color="#31363b" offset="0"/><stop stop-color="#5f6a73" offset="1"/></linearGradient><linearGradient id="c" x1="24" x2="24" y1="29" y2="19" gradientUnits="userSpaceOnUse"><stop stop-color="#4d4d4d" offset="0"/><stop stop-color="#737373" offset="1"/></linearGradient><linearGradient id="b" x1="6.35" x2="6.35" y1="9.525" y2="-1.8372" gradientUnits="userSpaceOnUse"><stop stop-color="#7f8c8d" offset="0"/><stop stop-color="#929d9e" offset="1"/></linearGradient></defs><metadata><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><g stroke-width=".26458"><rect x="1.0584" y="1.0583" width="10.583" height="10.583" rx="1.5875" ry="1.5875" fill="#a83226" style="paint-order:stroke fill markers"/><rect x="1.0584" y="1.0583" width="10.583" height="10.319" rx="1.5875" ry="1.5875" fill="url(#a)" style="paint-order:stroke fill markers"/><circle cx="6.35" cy="6.35" r="3.175" fill="none" stroke="#eee" stroke-linecap="square" stroke-width=".26458"/><path d="m8.3465 6.35-3.0549 1.7637 3e-7 -1.7637-3e-7 -1.7637 1.5274 0.88187z" fill="#fff"/><path d="m2.3962 5.8208a3.9538 3.9538 0 0 1 3.9538-3.9538 3.9538 3.9538 0 0 1 3.9538 3.9538" fill="none" stroke="url(#b)" stroke-linecap="square" stroke-width=".26458"/><path d="m4.3731 2.3967a3.9538 3.9538 0 0 1 3.9538 1e-7" fill="none" stroke="#6b6b6b" stroke-linecap="round" stroke-width=".52917"/><path transform="scale(.26458)" d="m8 19c-0.554 0-1 0.446-1 1v8c0 0.554 0.446 1 1 1h2c0.554 0 1-0.446 1-1v-8c0-0.554-0.446-1-1-1h-2zm30 0c-0.554 0-1 0.446-1 1v8c0 0.554 0.446 1 1 1h2c0.554 0 1-0.446 1-1v-8c0-0.554-0.446-1-1-1h-2z" fill="url(#c)"/><path transform="scale(.26458)" d="m8 19c-0.554 0-1 0.446-1 1v8c0 0.554 0.446 1 1 1h2v-10h-2zm30 0v10h2c0.554 0 1-0.446 1-1v-8c0-0.554-0.446-1-1-1h-2z" fill="url(#d)"/></g></svg>

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

+71 -144
View File
@@ -1,22 +1,22 @@
# Copyright (C) YEAR This file is copyright:
# This file is distributed under the same license as the audiotube package.
#
# Zayed Al-Saidi <[email protected]>, 2022, 2023.
# Zayed Al-Saidi <[email protected]>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-02-02 11:59+0400\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-05-28 23:09+0400\n"
"Last-Translator: Zayed Al-Saidi <[email protected]>\n"
"Language-Team: ar\n"
"Language-Team: Arabic <[email protected]>\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
"X-Generator: Lokalize 21.12.3\n"
"X-Generator: Lokalize 21.07.70\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@@ -28,67 +28,52 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "شغّل"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "اخلط"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "افتح في المتصفّح"
msgid "Play Next"
msgstr "شغل التالي"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr "الألبوم • %1"
msgid "Add to Playlist"
msgstr "أضف إلى قائمة التّشغيل"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "المزيد"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "راديو"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "الفنّانون"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
"\"%1\"?"
msgstr "تشغيل الفيديو غير مدعوم حتى الآن. هل تريد تشغيل صوت فقط من \"%1\"؟"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "الألبومات"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "فردي"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "أغاني"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "الفيديوهات"
@@ -103,164 +88,106 @@ msgstr "حسنًا"
msgid "Cancel"
msgstr "ألغِ"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "المفضلة"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "أظهر الكلّ"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "الأغاني المفضّلة"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "الأكثر تشغيلا"
#: contents/ui/LibraryPage.qml:230
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "played Songs"
msgid "Played Songs"
msgstr "الأغاني المشغلة"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "تيوب الصوتي"
msgid "Back"
msgstr "عُد"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "لا يوجد وسائط تعمل"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "أزل المسار"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr "المكتبة"
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "ابحث"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "الأغاني المشغلة"
msgid "AudioTube"
msgstr "تيوب الصوتي"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "المشغل الآن"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "صُفّ"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "أزل المسار"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "لا يوجد وسائط تعمل"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "قائمة غير معروفة من الأغاني"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "لا يوجد أي أغنية بعد"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "قائمة التشغيل"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr "البحوث الأخيرة:"
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "الفنّانون"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "قوائم التّشغيل"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "مجهول"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr "لا يوجد تطابق من البحوث الأخيرة"
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr "أزل من تاريخ البحث"
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr " اطوِ الشريط الجانبي"
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "شغل التالي"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr "أضف للطابور"
msgid "Radio"
msgstr "راديو"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove Favourite"
msgstr "أزل المفضلة"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr "أضف للمفضلة"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr "أزل من التّاريخ"
#~ msgid "Now Playing"
#~ msgstr "المشغل الآن"
#~ msgid "Queue"
#~ msgstr "صُفّ"
#~ msgid "Lyrics"
#~ msgstr "الكلمات"
#~ msgid "Favourite Songs"
#~ msgstr "الأغاني المفضّلة"
#~ msgid "Back"
#~ msgstr "عُد"
#~ msgid "Find music on YouTube Music"
#~ msgstr "اعثر على موسيقى على موسيقى يوتيوب"
#~ msgid "Add to Playlist"
#~ msgstr "أضف إلى قائمة التّشغيل"
#~ msgid "Play next"
#~ msgstr "شغل التالي"
msgid "Find music on YouTube Music"
msgstr "اعثر على موسيقى على موسيقى يوتيوب"
#~ msgid "Clear"
#~ msgstr "امسح"
+69 -144
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-06-19 12:16+0400\n"
"Last-Translator: Kheyyam <[email protected]>\n"
"Language-Team: Azerbaijani <[email protected]>\n"
@@ -27,46 +27,30 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Başladın"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Qarışıq"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr ""
msgid "Play Next"
msgstr "Sonrakını oxudun"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr ""
msgid "Add to Playlist"
msgstr "Mahnı siyahısına əlavə edin"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr ""
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Radio"
#: contents/ui/ArtistPage.qml:46
#, fuzzy, kde-format
#| msgid "Artists"
msgid "Artist"
msgstr "İfaçılar"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
@@ -75,22 +59,22 @@ msgstr ""
"Video göstərilməsi hələlik dəstəklənmir. Siz yalnız \"%1\" videosunun səsini "
"oynatmaq istəyirsiniz?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Albomlar"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Musiqilər"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Mahnılar"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Videolar"
@@ -105,165 +89,106 @@ msgstr "OLDU"
msgid "Cancel"
msgstr "İmtina"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Süçilmişlər"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "Hamısı göstərilsin"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "Seçilmiş mahnılar"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "Daha çox dinlənilən"
#: contents/ui/LibraryPage.qml:230
#, fuzzy, kde-format
#| msgid "Played Songs"
msgid "played Songs"
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "Played Songs"
msgstr "Oxudulan mahnılar"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
msgid "Back"
msgstr "Geriyə"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Media faylı oynadılmır"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Mahnını silin"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr ""
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Axtarın"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Oxudulan mahnılar"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "İndi səslənir"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "Növbə"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Mahnını silin"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "Media faylı oynadılmır"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Naməlum mahnı siyahısı"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "Hələlik burada mahnılar yoxdur"
#: contents/ui/PlaylistPage.qml:42
#, fuzzy, kde-format
#| msgid "Playlists"
msgid "Playlist"
msgstr "Mahnı siyahıları"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr ""
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "İfaçılar"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Mahnı siyahıları"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Bilinməyən"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr ""
msgid "Play next"
msgstr "Sonrakını başladın"
#: contents/ui/SearchWithDropdown.qml:321
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "remove from search history"
msgstr ""
msgid "Radio"
msgstr "Radio"
#: contents/ui/Sidebar.qml:179
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Collapse Sidebar"
msgstr ""
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgstr "Sonrakını oxudun"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#, kde-format
msgid "Add to queue"
msgstr ""
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, fuzzy, kde-format
#| msgid "Favourites"
msgid "Remove Favourite"
msgstr "Süçilmişlər"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, fuzzy, kde-format
#| msgid "Favourites"
msgid "Add Favourite"
msgstr "Süçilmişlər"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr ""
#~ msgid "Now Playing"
#~ msgstr "İndi səslənir"
#~ msgid "Queue"
#~ msgstr "Növbə"
#~ msgid "Favourite Songs"
#~ msgstr "Seçilmiş mahnılar"
#~ msgid "Back"
#~ msgstr "Geriyə"
#~ msgid "Find music on YouTube Music"
#~ msgstr "Musiqini YouTube Musiqi-də tapın"
#~ msgid "Add to Playlist"
#~ msgstr "Mahnı siyahısına əlavə edin"
#~ msgid "Play next"
#~ msgstr "Sonrakını başladın"
msgid "Find music on YouTube Music"
msgstr "Musiqini YouTube Musiqi-də tapın"
#~ msgid "Clear"
#~ msgstr "Təmizləyin"
+70 -119
View File
@@ -1,16 +1,16 @@
# Translation of audiotube.po to Catalan
# Copyright (C) 2021-2023 This_file_is_part_of_KDE
# Copyright (C) 2021-2022 This_file_is_part_of_KDE
# This file is distributed under the license LGPL version 2.1 or
# version 3 or later versions approved by the membership of KDE e.V.
#
# Antoni Bella Pérez <[email protected]>, 2021.
# Josep M. Ferrer <[email protected]>, 2022, 2023.
# Josep M. Ferrer <[email protected]>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-02-08 10:12+0100\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-05-26 09:09+0200\n"
"Last-Translator: Josep M. Ferrer <[email protected]>\n"
"Language-Team: Catalan <[email protected]>\n"
"Language: ca\n"
@@ -30,45 +30,30 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Reprodueix"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Barreja"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "Obre en el navegador"
msgid "Play Next"
msgstr "Reprodueix el següent"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr "Àlbum • %1"
msgid "Add to Playlist"
msgstr "Afegeix a la llista de reproducció"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "Més"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Ràdio"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "Artista"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
@@ -77,22 +62,22 @@ msgstr ""
"Encara no s'admet la reproducció de vídeo. Voleu reproduir només l'àudio de "
"«%1»?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Àlbums"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Individuals"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Cançons"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Vídeos"
@@ -107,137 +92,103 @@ msgstr "D'acord"
msgid "Cancel"
msgstr "Cancel·la"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Preferides"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "Mostra-ho tot"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "Cançons preferides"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "Les més reproduïdes"
#: contents/ui/LibraryPage.qml:230
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "played Songs"
msgid "Played Songs"
msgstr "Cançons reproduïdes"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
msgid "Back"
msgstr "Enrere"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "No s'està reproduint cap suport"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr "%1%"
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Elimina la pista"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr "Biblioteca"
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Cerca"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Cançons reproduïdes"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "Ara s'està reproduint"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "Cua"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Elimina la pista"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "No s'està reproduint cap suport"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Llista desconeguda de cançons"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "Encara no hi ha cap cançó"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "Llista de reproducció"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr "Cerques anteriors:"
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "Artistes"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Llistes de reproducció"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Desconeguda"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr "No hi ha cerques anteriors coincidents"
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr "elimina de l'historial de cerques"
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr "Redueix la barra lateral"
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "Reprodueix el següent"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr "Afegeix a la cua"
msgid "Radio"
msgstr "Ràdio"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove Favourite"
msgstr "Elimina de les preferides"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr "Afegeix a les preferides"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr "Elimina de l'historial"
msgid "Find music on YouTube Music"
msgstr "Cerca a la Música de Youtube"
+70 -119
View File
@@ -1,16 +1,16 @@
# Translation of audiotube.po to Catalan (Valencian)
# Copyright (C) 2021-2023 This_file_is_part_of_KDE
# Copyright (C) 2021-2022 This_file_is_part_of_KDE
# This file is distributed under the license LGPL version 2.1 or
# version 3 or later versions approved by the membership of KDE e.V.
#
# Antoni Bella Pérez <[email protected]>, 2021.
# Josep M. Ferrer <[email protected]>, 2022, 2023.
# Josep M. Ferrer <[email protected]>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-02-08 10:12+0100\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-05-26 09:09+0200\n"
"Last-Translator: Josep M. Ferrer <[email protected]>\n"
"Language-Team: Catalan <[email protected]>\n"
"Language: ca@valencia\n"
@@ -30,45 +30,30 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Reproduïx"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Barreja"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "Obri en el navegador"
msgid "Play Next"
msgstr "Reproduïx el següent"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr "Àlbum • %1"
msgid "Add to Playlist"
msgstr "Afig a la llista de reproducció"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "Més"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Ràdio"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "Artista"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
@@ -77,22 +62,22 @@ msgstr ""
"Encara no s'admet la reproducció de vídeo. Voleu reproduir només l'àudio de "
"«%1»?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Àlbums"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Individuals"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Cançons"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Vídeos"
@@ -107,137 +92,103 @@ msgstr "D'acord"
msgid "Cancel"
msgstr "Cancel·la"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Preferides"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "Mostra-ho tot"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "Cançons preferides"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "Les més reproduïdes"
#: contents/ui/LibraryPage.qml:230
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "played Songs"
msgid "Played Songs"
msgstr "Cançons reproduïdes"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
msgid "Back"
msgstr "Enrere"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "No s'està reproduint cap suport"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr "%1%"
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Elimina la pista"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr "Biblioteca"
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Busca"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Cançons reproduïdes"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "Ara s'està reproduint"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "Cua"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Elimina la pista"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "No s'està reproduint cap suport"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Llista desconeguda de cançons"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "Encara no hi ha cap cançó"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "Llista de reproducció"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr "Busques anteriors:"
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "Artistes"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Llistes de reproducció"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Desconeguda"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr "No hi ha busques anteriors coincidents"
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr "elimina de l'historial de busques"
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr "Reduïx la barra lateral"
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "Reproduïx el següent"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr "Afig a la cua"
msgid "Radio"
msgstr "Ràdio"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove Favourite"
msgstr "Elimina de les preferides"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr "Afig a les preferides"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr "Elimina de l'historial"
msgid "Find music on YouTube Music"
msgstr "Busca a la Música de Youtube"
+72 -121
View File
@@ -1,21 +1,21 @@
# Copyright (C) YEAR This file is copyright:
# This file is distributed under the same license as the audiotube package.
# Vit Pelcak <vit@pelcak.org>, 2021, 2022, 2023.
# Vit Pelcak <vpelcak@suse.cz>, 2021, 2022.
#
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-01-30 16:04+0100\n"
"Last-Translator: Vit Pelcak <vit@pelcak.org>\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-06-28 13:58+0200\n"
"Last-Translator: Vit Pelcak <vpelcak@suse.cz>\n"
"Language-Team: Czech <[email protected]>\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Lokalize 22.12.1\n"
"X-Generator: Lokalize 22.04.2\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@@ -27,45 +27,30 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Přehrát"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Zamíchat"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "Otevřít v prohlížeči"
msgid "Play Next"
msgstr "Přehrát následující"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr "Album • %1"
msgid "Add to Playlist"
msgstr "Přidat do seznamu skladeb"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "Více"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Rádio"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "Umělec"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
@@ -74,22 +59,22 @@ msgstr ""
"Přehrávání videa ještě není podporováno. Chcete z \"%1\" přehrávat pouze "
"zvuk?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Alba"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Samotné"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Písně"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Videa"
@@ -104,137 +89,103 @@ msgstr "OK"
msgid "Cancel"
msgstr "Zrušit"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Oblíbené"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "Zobrazit vše"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "Oblíbené skladby"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "Nejčastěji hrané"
#: contents/ui/LibraryPage.qml:230
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "played Songs"
msgstr "přehrané skladby"
msgid "Played Songs"
msgstr "Přehrané skladby"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
msgid "Back"
msgstr "Zpět"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Nepřehrává se žádné médium"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr "%1%"
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Odstranit skladbu"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr "Knihovna"
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Hledat"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Přehrané skladby"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "Nyní přehrávám"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "Fronta"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Odstranit skladbu"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "Nepřehrává se žádné médium"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Neznámý seznam skladeb"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "Zatím zde nejsou žádné skladby"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "Seznam skladeb"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr "Předchozí hledání:"
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "Umělci"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Seznamy skladeb"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Neznámý"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr "Neodpovídají žádná předchozí hledání"
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr "odstranit z historie hledání"
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr "Svinout postranní panel"
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "Přehrát následující"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr "Zařadit do fronty"
msgid "Radio"
msgstr "Rádio"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove Favourite"
msgstr "Odstranit oblíbené"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr "Přidat oblíbené"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr "Odstranit z historie"
msgid "Find music on YouTube Music"
msgstr "Najít hudbu na Hudba YouTube"
+70 -144
View File
@@ -1,15 +1,14 @@
# Copyright (C) YEAR This file is copyright:
# This file is distributed under the same license as the audiotube package.
# Burkhard Lück <[email protected]>, 2021.
# Frederik Schwarzer <[email protected]>, 2021, 2022, 2023.
# Frank Steinmetzger <[email protected]>, 2022.
# Frederik Schwarzer <[email protected]>, 2021, 2022.
#
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-02-09 00:18+0100\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-07-02 12:04+0200\n"
"Last-Translator: Frederik Schwarzer <[email protected]>\n"
"Language-Team: German <[email protected]>\n"
"Language: de\n"
@@ -17,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 22.12.1\n"
"X-Generator: Lokalize 22.04.1\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@@ -29,45 +28,30 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Wiedergabe"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Zufällig"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "In Browser öffnen"
msgid "Play Next"
msgstr "Nächste Wiedergabe"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr "Album • %1"
msgid "Add to Playlist"
msgstr "Zur Wiedergabeliste hinzufügen"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "Mehr"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Radio"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "Interpret"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
@@ -76,22 +60,22 @@ msgstr ""
"Die Video-Wiedergabe wird noch nicht unterstützt. Möchten Sie nur die "
"Audiospur von „%1“ abspielen?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Alben"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Singles"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Songs"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Videos"
@@ -106,164 +90,106 @@ msgstr "OK"
msgid "Cancel"
msgstr "Abbrechen"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Favoriten"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "Alle anzeigen"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "Lieblingsstücke"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "Am meisten abgespielt"
#: contents/ui/LibraryPage.qml:230
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "played Songs"
msgid "Played Songs"
msgstr "Abgespielte Stücke"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
msgid "Back"
msgstr "Zurück"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Es werden keine Medien wiedergegeben"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr "%1 %"
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Stück entfernen"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr "Bibliothek"
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Suchen"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Abgespielte Stücke"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "Aktueller Titel"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "Warteschlange"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Stück entfernen"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "Es werden keine Medien wiedergegeben"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Unbekannte Liste von Liedern"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "Bisher keine Lieder hier"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "Wiedergabeliste"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr "Vorherige Suchvorgänge:"
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "Interpreten"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Wiedergabelisten"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Unbekannt"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr "Keine passenden vorherigen Suchvorgänge"
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr "Aus Suchverlauf löschen"
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr "Seitenleiste einklappen"
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "Nächste Wiedergabe"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr "Zur Warteschlange hinzufügen"
msgid "Radio"
msgstr "Radio"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove Favourite"
msgstr "Favoriten entfernen"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr "Favoriten hinzufügen"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr "Aus Verlauf löschen"
#~ msgid "Now Playing"
#~ msgstr "Aktueller Titel"
#~ msgid "Queue"
#~ msgstr "Warteschlange"
#~ msgid "Lyrics"
#~ msgstr "Liedtext"
#~ msgid "Favourite Songs"
#~ msgstr "Lieblingsstücke"
#~ msgid "Back"
#~ msgstr "Zurück"
#~ msgid "Find music on YouTube Music"
#~ msgstr "Musik auf YouTube suchen"
#~ msgid "Add to Playlist"
#~ msgstr "Zur Wiedergabeliste hinzufügen"
#~ msgid "Play next"
#~ msgstr "Nächste Wiedergabe"
msgid "Find music on YouTube Music"
msgstr "Musik auf YouTube suchen"
#~ msgid "Clear"
#~ msgstr "Löschen"
+83 -156
View File
@@ -6,16 +6,16 @@ msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2022-12-31 15:53+0000\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-01-01 15:21+0000\n"
"Last-Translator: Steve Allewell <[email protected]>\n"
"Language-Team: English <kde-i18n-doc@kde.org>\n"
"Language-Team: British English <kde-l10n-en_gb@kde.org>\n"
"Language: en_GB\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 21.12.3\n"
"X-Generator: Lokalize 21.12.0\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@@ -27,45 +27,30 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Play"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Shuffle"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "Open in Browser"
msgid "Play Next"
msgstr "Play Next"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr "Album • %1"
msgid "Add to Playlist"
msgstr "Add to Playlist"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "More"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Radio"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "Artist"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
@@ -74,22 +59,22 @@ msgstr ""
"Video playback is not supported yet. Do you want to play only the audio of "
"\"%1\"?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Albums"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Singles"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Songs"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Videos"
@@ -104,165 +89,107 @@ msgstr "OK"
msgid "Cancel"
msgstr "Cancel"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Favourites"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#, kde-format
msgid "Show All"
msgstr "Show All"
#: contents/ui/LibraryPage.qml:214
#, kde-format
msgid "Most played"
msgstr "Most played"
#: contents/ui/LibraryPage.qml:230
#, kde-format
msgid "played Songs"
msgstr "played Songs"
#: contents/ui/main.qml:108
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "No media playing"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Remove Track"
msgstr "Remove Track"
msgid "Show All"
msgstr ""
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Library"
msgstr "Library"
msgid "Favourite Songs"
msgstr ""
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr ""
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "Played Songs"
msgstr ""
#: contents/ui/main.qml:39
#, kde-format
msgid "Back"
msgstr ""
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Search"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Played Songs"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, fuzzy, kde-format
#| msgid "No media playing"
msgid "Now Playing"
msgstr "No media playing"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Remove Track"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "No media playing"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Unknown list of songs"
msgstr ""
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "No songs here yet"
msgstr ""
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "Playlist"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr "Previous Searches:"
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "Artists"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Playlists"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Unknown"
#: contents/ui/SearchWithDropdown.qml:286
#, fuzzy, kde-format
#| msgid "Previous Searches:"
msgid "No matching previous searches"
msgstr "Previous Searches:"
#: contents/ui/SearchWithDropdown.qml:321
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "remove from search history"
msgstr ""
msgid "Play next"
msgstr "Play next"
#: contents/ui/Sidebar.qml:179
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Collapse Sidebar"
msgstr "Collapse Sidebar"
msgid "Radio"
msgstr "Radio"
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Play Next"
msgstr "Play Next"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#, kde-format
msgid "Add to queue"
msgstr "Add to queue"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Remove Favourite"
msgstr "Remove Favourite"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr "Add Favourite"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr ""
#~ msgid "Now Playing"
#~ msgstr "Now Playing"
#~ msgid "Queue"
#~ msgstr "Queue"
#~ msgid "Lyrics"
#~ msgstr "Lyrics"
#~ msgid "Favourite Songs"
#~ msgstr "Favourite Songs"
#~ msgid "Back"
#~ msgstr "Back"
#~ msgid "Find music on YouTube Music"
#~ msgstr "Find music on YouTube Music"
#~ msgid "Add to Playlist"
#~ msgstr "Add to Playlist"
#~ msgid "Play next"
#~ msgstr "Play next"
msgid "Find music on YouTube Music"
msgstr "Find music on YouTube Music"
#~ msgid "Clear"
#~ msgstr "Clear"
+71 -147
View File
@@ -3,13 +3,13 @@
# This file is distributed under the same license as the audiotube package.
#
# Automatically generated, 2021.
# Eloy Cuadra <[email protected]>, 2021, 2022, 2023.
# Eloy Cuadra <[email protected]>, 2021, 2022.
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-02-08 03:34+0100\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-05-27 12:34+0200\n"
"Last-Translator: Eloy Cuadra <[email protected]>\n"
"Language-Team: Spanish <[email protected]>\n"
"Language: es\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 22.12.2\n"
"X-Generator: Lokalize 22.04.1\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@@ -29,45 +29,30 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Reproducir"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Desordenar"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "Abrir en el navegador"
msgid "Play Next"
msgstr "Reproducir siguiente"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr "Álbum • %1"
msgid "Add to Playlist"
msgstr "Añadir a la lista de reproducción"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "Más"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Radio"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "Artista"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
@@ -76,22 +61,22 @@ msgstr ""
"La reproducción de vídeo aún no está permitida. ¿Desea reproducir solo el "
"sonido de «%1»?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Álbumes"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Sencillos"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Canciones"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Vídeos"
@@ -106,167 +91,106 @@ msgstr "Aceptar"
msgid "Cancel"
msgstr "Cancelar"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Favoritas"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "Mostrar todas"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "Canciones favoritas"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "Más reproducidas"
#: contents/ui/LibraryPage.qml:230
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "played Songs"
msgstr "canciones reproducidas"
msgid "Played Songs"
msgstr "Canciones reproducidas"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
msgid "Back"
msgstr "Volver"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Ningún medio en reproducción"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr "%1%"
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Eliminar pista"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr "Biblioteca"
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Buscar"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Canciones reproducidas"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "Reproduciendo"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "Cola"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Eliminar pista"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "Ningún medio en reproducción"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Lista de canciones desconocida"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "Todavía no contiene canciones"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "Lista de reproducción"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr "Búsquedas anteriores:"
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "Artistas"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Listas de reproducción"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Desconocido"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr "No hay búsquedas anteriores coincidentes"
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr "eliminar del historial de búsqueda"
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr "Contraer la barra lateral"
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "Reproducir siguiente"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr "Añadir a la cola"
msgid "Radio"
msgstr "Radio"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove Favourite"
msgstr "Eliminar favorita"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr "Añadir favorita"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr "Eliminar del historial"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Now Playing"
#~ msgstr "Reproduciendo"
#~ msgid "Queue"
#~ msgstr "Cola"
#~ msgid "Lyrics"
#~ msgstr "Letra"
#~ msgid "Favourite Songs"
#~ msgstr "Canciones favoritas"
#~ msgid "Back"
#~ msgstr "Volver"
#~ msgid "Find music on YouTube Music"
#~ msgstr "Encuentre música en YouTube Music"
#~ msgid "Add to Playlist"
#~ msgstr "Añadir a la lista de reproducción"
#~ msgid "Play next"
#~ msgstr "Reproducir siguiente"
msgid "Find music on YouTube Music"
msgstr "Encuentre música en YouTube Music"
#~ msgid "Clear"
#~ msgstr "Borrar todo"
+72 -148
View File
@@ -1,16 +1,16 @@
# Translation for audiotube.po to Euskara/Basque (eu).
# Copyright (C) 2021-2023 This file is copyright:
# Copyright (C) 2021-2022, This file is copyright:
# This file is distributed under the same license as the audiotube package.
# KDE euskaratzeko proiektuko arduraduna <[email protected]>.
#
# Translators:
# Iñigo Salvador Azurmendi <[email protected]>, 2021, 2022, 2023.
# Iñigo Salvador Azurmendi <[email protected]>, 2021, 2022.
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-02-08 07:47+0100\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-07-18 22:37+0200\n"
"Last-Translator: Iñigo Salvador Azurmendi <[email protected]>\n"
"Language-Team: Basque <[email protected]>\n"
"Language: eu\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 22.12.2\n"
"X-Generator: Lokalize 22.04.3\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@@ -30,45 +30,30 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Jo"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Nahastu"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "Ireki arakatzailean"
msgid "Play Next"
msgstr "Jo hurrengoa"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr "Albuma • %1"
msgid "Add to Playlist"
msgstr "Gehitu jotze-zerrendara"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "Gehiago"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Irratia"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "Artista"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
@@ -77,22 +62,22 @@ msgstr ""
"Oraindik ez dago bideoa atzera jotzeko euskarririk. «%1»(r)en audioa "
"bakarrik jo nahi duzu?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Albumak"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Banakoa"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Abestiak"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Bideoak"
@@ -107,167 +92,106 @@ msgstr "Ados"
msgid "Cancel"
msgstr "Utzi"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Gogokoak"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "Erakutsi denak"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "Gogoko abestiak"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "Gehien jotakoa"
#: contents/ui/LibraryPage.qml:230
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "played Songs"
msgstr "jotako abestiak"
msgid "Played Songs"
msgstr "Jotako abestiak"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
msgid "Back"
msgstr "Atzera"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Ez da euskarririk jotzen ari"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr "%%1"
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Kendu pista"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr "Liburutegia"
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Bilatu"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Jotako abestiak"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "Orain jotzen"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "Ilara"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Kendu pista"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "Ez da euskarririk jotzen ari"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Abesti zerrenda ezezaguna"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "Hemen oraindik ez dago abestirik"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "Jotze-zerrenda"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr "Aurreko bilaketak:"
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "Artistak"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Jotze-zerrendak"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Ezezaguna"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr "Ez dago bat datorren aurreko bilaketarik"
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr "Kendu bilaketa-historiatik"
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr "Tolestu Alboko-barra"
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "Jo hurrengoa"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr "Gehitu ilaran"
msgid "Radio"
msgstr "Irratia"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove Favourite"
msgstr "Kendu gogokoa"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr "Gehitu gogokoa"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr "Kendu historiatik"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Now Playing"
#~ msgstr "Orain jotzen"
#~ msgid "Queue"
#~ msgstr "Ilara"
#~ msgid "Lyrics"
#~ msgstr "Hitzak"
#~ msgid "Favourite Songs"
#~ msgstr "Gogoko abestiak"
#~ msgid "Back"
#~ msgstr "Atzera"
#~ msgid "Find music on YouTube Music"
#~ msgstr "Aurkitu musika «Youtube Music»en"
#~ msgid "Add to Playlist"
#~ msgstr "Gehitu jotze-zerrendara"
#~ msgid "Play next"
#~ msgstr "Jo hurrengoa"
msgid "Find music on YouTube Music"
msgstr "Aurkitu musika «Youtube Music»en"
#~ msgid "Clear"
#~ msgstr "Garbitu"
+70 -145
View File
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2022-10-24 07:57+0300\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-06-13 19:11+0300\n"
"Last-Translator: Tommi Nieminen <[email protected]>\n"
"Language-Team: Finnish <[email protected]>\n"
"Language: fi\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 20.12.0\n"
"X-Generator: Lokalize 21.12.3\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@@ -27,46 +27,30 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Toista"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Sekoita"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "Avaa selaimeen"
msgid "Play Next"
msgstr "Toista seuraava"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr ""
msgid "Add to Playlist"
msgstr "Lisää soittolistaan"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr ""
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Radio"
#: contents/ui/ArtistPage.qml:46
#, fuzzy, kde-format
#| msgid "Artists"
msgid "Artist"
msgstr "Artistit"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
@@ -74,22 +58,22 @@ msgid ""
msgstr ""
"Videotoistoa ei vielä tueta. Haluatko toistaa videosta ”%1” vain äänen?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Albumit"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Singlet"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Kappaleet"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Videot"
@@ -104,165 +88,106 @@ msgstr "OK"
msgid "Cancel"
msgstr "Peru"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Suosikit"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "Näytä kaikki"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "Suosikkikappaleet"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "Soitetuimmat"
#: contents/ui/LibraryPage.qml:230
#, fuzzy, kde-format
#| msgid "Played Songs"
msgid "played Songs"
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "Played Songs"
msgstr "Soitetut kappaleet"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
msgid "Back"
msgstr "Takaisin"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Mitään ei toisteta"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Poista raita"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr ""
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Etsi"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Soitetut kappaleet"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "Nyt soi"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "Jono"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Poista raita"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "Mitään ei toisteta"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Tuntematon kappaleluettelo"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "Ei vielä kappaleita"
#: contents/ui/PlaylistPage.qml:42
#, fuzzy, kde-format
#| msgid "Playlists"
msgid "Playlist"
msgstr "Soittolistat"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr ""
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "Artistit"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Soittolistat"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Tuntematon"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr ""
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr ""
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr ""
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "Toista seuraava"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr ""
msgid "Radio"
msgstr "Radio"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, fuzzy, kde-format
#| msgid "Favourites"
msgid "Remove Favourite"
msgstr "Suosikit"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, fuzzy, kde-format
#| msgid "Favourites"
msgid "Add Favourite"
msgstr "Suosikit"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove from History"
msgstr ""
#~ msgid "Now Playing"
#~ msgstr "Nyt soi"
#~ msgid "Queue"
#~ msgstr "Jono"
#~ msgid "Favourite Songs"
#~ msgstr "Suosikkikappaleet"
#~ msgid "Back"
#~ msgstr "Takaisin"
#~ msgid "Find music on YouTube Music"
#~ msgstr "Etsi musiikkia Youtube Musicista"
#~ msgid "Add to Playlist"
#~ msgstr "Lisää soittolistaan"
#~ msgid "Play next"
#~ msgstr "Toista seuraava"
msgid "Find music on YouTube Music"
msgstr "Etsi musiikkia Youtube Musicista"
#~ msgid "Clear"
#~ msgstr "Tyhjennä"
+71 -148
View File
@@ -1,19 +1,18 @@
# Xavier Besnard <[email protected]>, 2021, 2022.
# Xavier BESNARD <xavier.besnard]neuf.fr>, 2022, 2023.
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-02-11 16:25+0100\n"
"Last-Translator: Xavier BESNARD <xavier.besnard]neuf.fr>\n"
"Language-Team: fr\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-06-05 18:56+0200\n"
"Last-Translator: Xavier Besnard <xavier.besnard@neuf.fr>\n"
"Language-Team: French <[email protected]>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 22.12.1\n"
"X-Generator: Lokalize 22.04.1\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@@ -25,45 +24,30 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Lire"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Mélanger"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "Ouvrir dans un navigateur"
msgid "Play Next"
msgstr "Lire le suivant"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr "Album • %1"
msgid "Add to Playlist"
msgstr "Ajouter à la liste de lecture"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "Et plus encore"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Radio"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "Artiste"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
@@ -72,22 +56,22 @@ msgstr ""
"La lecture de vidéos n'est pas encore prise en charge. Voulez-vous vraiment "
"lire uniquement l'audio de « %1 » ?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Albums"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Titres uniques"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Chansons"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Vidéos"
@@ -102,167 +86,106 @@ msgstr "Ok"
msgid "Cancel"
msgstr "Annuler"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Favoris"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "Tout afficher"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "Titres favoris"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "Les plus lus"
#: contents/ui/LibraryPage.qml:230
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "played Songs"
msgid "Played Songs"
msgstr "Titres lus"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
msgid "Back"
msgstr "En arrière"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Aucun média en lecture"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr "%1 %"
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Supprimer une piste"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr "Bibliothèque"
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Rechercher"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Titres lus"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "En cours de lecture"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "Mettre en file d'attente"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Supprimer une piste"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "Aucun média en lecture"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Liste inconnue de titres"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "Aucun titre ici encore"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "Liste de lecture"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr "Recherches précédentes :"
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "Artistes"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Listes de lecture"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Inconnu"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr "Aucune correspondance avec les recherches précédentes"
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr "supprimer de l'historique de recherche"
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr "Réduire la barre latérale"
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "Lire le suivant"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr "Ajouter à la file de lecture"
msgid "Radio"
msgstr "Radio"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove Favourite"
msgstr "Supprimer un favori"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr "Ajouter un favori"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr "Supprimer de l'historique"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Now Playing"
#~ msgstr "En cours de lecture"
#~ msgid "Queue"
#~ msgstr "Mettre en file d'attente"
#~ msgid "Lyrics"
#~ msgstr "Paroles"
#~ msgid "Favourite Songs"
#~ msgstr "Titres favoris"
#~ msgid "Back"
#~ msgstr "En arrière"
#~ msgid "Find music on YouTube Music"
#~ msgstr "Rechercher de la musique sur « YouTube Music »"
#~ msgid "Add to Playlist"
#~ msgstr "Ajouter à la liste de lecture"
#~ msgid "Play next"
#~ msgstr "Lire le suivant"
msgid "Find music on YouTube Music"
msgstr "Rechercher de la musique sur « YouTube Music »"
#~ msgid "Clear"
#~ msgstr "Effacer"
+66 -130
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2021-09-17 20:09+0530\n"
"Last-Translator: Raghavendra Kamath <[email protected]>\n"
"Language-Team: kde-hindi\n"
@@ -27,46 +27,30 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "बजाएँ"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "फेंटें"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr ""
msgid "Play Next"
msgstr "अगला बजाएँ"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr ""
msgid "Add to Playlist"
msgstr "गीत-सूची में जोड़ें"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr ""
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "रेडियो"
#: contents/ui/ArtistPage.qml:46
#, fuzzy, kde-format
#| msgid "Artists"
msgid "Artist"
msgstr "कलाकार"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
@@ -74,22 +58,22 @@ msgid ""
msgstr ""
"वीडियो चलाना अभी तक समर्थित नहीं है। क्या आप केवल \"%1\" का ध्वनी चलाना चाहते हैं?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "एल्बम्स"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "एक गीत"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "गीत"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "वीडियो"
@@ -104,155 +88,107 @@ msgstr ""
msgid "Cancel"
msgstr ""
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr ""
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr ""
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr ""
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr ""
#: contents/ui/LibraryPage.qml:230
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "played Songs"
msgid "Played Songs"
msgstr ""
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "ओडियो-ट्यूब"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "कोई मीडिया नहीं बजा रहा है"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgid "Back"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "गाना हटाएँ"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr ""
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "खोजें"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgid "AudioTube"
msgstr "ओडियो-ट्यूब"
#: contents/ui/MaximizedPlayerPage.qml:92
#, fuzzy, kde-format
#| msgid "No media playing"
msgid "Now Playing"
msgstr "कोई मीडिया नहीं बजा रहा है"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "गाना हटाएँ"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "कोई मीडिया नहीं बजा रहा है"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr ""
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr ""
#: contents/ui/PlaylistPage.qml:42
#, fuzzy, kde-format
#| msgid "Playlists"
msgid "Playlist"
msgstr "गीत-सूचीयाँ"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr ""
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "कलाकार"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "गीत-सूचीयाँ"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "अज्ञात"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr ""
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr ""
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr ""
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "अगला बजाएँ"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr ""
msgid "Radio"
msgstr "रेडियो"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove Favourite"
msgstr ""
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr ""
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr ""
#, fuzzy
#~| msgid "No media playing"
#~ msgid "Now Playing"
#~ msgstr "कोई मीडिया नहीं बजा रहा है"
#~ msgid "Find music on YouTube Music"
#~ msgstr "यूट्यूब संगीत पर संगीत ढूंढें"
#~ msgid "Add to Playlist"
#~ msgstr "गीत-सूची में जोड़ें"
#~ msgid "Play next"
#~ msgstr "अगला बजाएँ"
msgid "Find music on YouTube Music"
msgstr "यूट्यूब संगीत पर संगीत ढूंढें"
#~ msgid "Clear"
#~ msgstr "साफ करें"
-264
View File
@@ -1,264 +0,0 @@
# Copyright (C) YEAR This file is copyright:
# This file is distributed under the same license as the audiotube package.
# Linerly <[email protected]>, 2022, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-01-13 08:23+0700\n"
"Last-Translator: Linerly <[email protected]>\n"
"Language-Team: Indonesian <[email protected]>\n"
"Language: id\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 22.12.1\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Linerly"
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Play"
msgstr "Putar"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#, kde-format
msgid "Shuffle"
msgstr "Acak"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#, kde-format
msgid "Open in Browser"
msgstr "Buka di Peramban"
#: contents/ui/AlbumPage.qml:44
#, kde-format
msgid "Album • %1"
msgstr "Album • %1"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "Lainnya"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Radio"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "Artis"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
"\"%1\"?"
msgstr ""
"Pemutaran video belum didukung. Apakah Anda ingin memutar audionya dari "
"\"%1\" saja?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#, kde-format
msgid "Albums"
msgstr "Album"
#: contents/ui/ArtistPage.qml:87
#, kde-format
msgid "Singles"
msgstr "Single"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#, kde-format
msgid "Songs"
msgstr "Lagu"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#, kde-format
msgid "Videos"
msgstr "Video"
#: contents/ui/ConfirmationMessage.qml:16
#, kde-format
msgid "OK"
msgstr "Oke"
#: contents/ui/ConfirmationMessage.qml:21
#, kde-format
msgid "Cancel"
msgstr "Batalkan"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#, kde-format
msgid "Favourites"
msgstr "Favorit"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#, kde-format
msgid "Show All"
msgstr "Tampilkan Semua"
#: contents/ui/LibraryPage.qml:214
#, kde-format
msgid "Most played"
msgstr "Paling banyak diputar"
#: contents/ui/LibraryPage.qml:230
#, kde-format
msgid "played Songs"
msgstr "Lagu yang telah diputar"
#: contents/ui/main.qml:108
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Tidak ada media yang diputarkan"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Hapus Trek"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr ""
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#, kde-format
msgid "Search"
msgstr "Cari"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#, kde-format
msgid "Played Songs"
msgstr "Lagu yang telah diputar"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Daftar lagu yang tidak diketahui"
#: contents/ui/PlaybackHistory.qml:27
#, kde-format
msgid "No songs here yet"
msgstr "Belum ada lagu di sini"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "Daftar Putar"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr ""
#: contents/ui/SearchPage.qml:28
#, kde-format
msgid "Artists"
msgstr "Artis"
#: contents/ui/SearchPage.qml:30
#, kde-format
msgid "Playlists"
msgstr "Daftar Putar"
#: contents/ui/SearchPage.qml:37
#, kde-format
msgid "Unknown"
msgstr "Tidak diketahui"
#: contents/ui/SearchWithDropdown.qml:286
#, kde-format
msgid "No matching previous searches"
msgstr ""
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr ""
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr ""
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgstr "Putar Berikutnya"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#, kde-format
msgid "Add to queue"
msgstr "Tambahkan ke antrean"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Remove Favourite"
msgstr "Hapus Favorit"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr "Tambahkan Favorit"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr ""
#~ msgid "Now Playing"
#~ msgstr "Sekarang Diputarkan"
#~ msgid "Queue"
#~ msgstr "Antrean"
#~ msgid "Lyrics"
#~ msgstr "Lirik"
#~ msgid "Favourite Songs"
#~ msgstr "Lagu Favorit"
#~ msgid "Back"
#~ msgstr "Kembali"
#~ msgid "Find music on YouTube Music"
#~ msgstr "Cari musik di YouTube Music"
#~ msgid "Add to Playlist"
#~ msgstr "Tambahkan ke Daftar Putar"
#~ msgid "Play next"
#~ msgstr "Putar berikutnya"
+70 -146
View File
@@ -1,13 +1,13 @@
# Copyright (C) YEAR This file is copyright:
# This file is distributed under the same license as the audiotube package.
# Vincenzo Reale <[email protected]>, 2021, 2022, 2023.
# Vincenzo Reale <[email protected]>, 2021, 2022.
#
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-02-05 12:50+0100\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-05-26 14:13+0200\n"
"Last-Translator: Vincenzo Reale <[email protected]>\n"
"Language-Team: Italian <[email protected]>\n"
"Language: it\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 22.12.2\n"
"X-Generator: Lokalize 22.04.1\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@@ -27,45 +27,30 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Riproduci"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Mescola"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "Apri nel browser"
msgid "Play Next"
msgstr "Riproduci successivo"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr "Album • %1"
msgid "Add to Playlist"
msgstr "Aggiungi alla scaletta"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "Altro"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Radio"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "Artista"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
@@ -74,22 +59,22 @@ msgstr ""
"La riproduzione dei video non è ancora supportata. Vuoi riprodurre solo "
"l'audio di «%1»?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Album"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Singoli"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Brani"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Video"
@@ -104,167 +89,106 @@ msgstr "OK"
msgid "Cancel"
msgstr "Annulla"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Preferiti"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "Mostra tutto"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "Brani preferiti"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "Più riprodotti"
#: contents/ui/LibraryPage.qml:230
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "played Songs"
msgid "Played Songs"
msgstr "Brani riprodotti"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
msgid "Back"
msgstr "Indietro"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Nessun supporto in riproduzione"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Rimuovi traccia"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr "Raccolta"
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Cerca"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Brani riprodotti"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "In riproduzione"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "Coda"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Rimuovi traccia"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "Nessun supporto in riproduzione"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Elenco di brani sconosciuto"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "Non c'è ancora alcun brano"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "Scaletta"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr "Ricerche precedenti:"
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "Artisti"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Scalette"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Sconosciuto"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr "Nessuna ricerca precedente corrispondente"
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr "rimuovi dalla cronologia delle ricerche"
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr "Contrai la barra laterale"
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "Riproduci successivo"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr "Aggiungi alla coda"
msgid "Radio"
msgstr "Radio"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove Favourite"
msgstr "Rimuovi preferito"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr "Aggiungi preferito"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr "Rimuovi dalla cronologia"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Now Playing"
#~ msgstr "In riproduzione"
#~ msgid "Queue"
#~ msgstr "Coda"
#~ msgid "Lyrics"
#~ msgstr "Testi"
#~ msgid "Favourite Songs"
#~ msgstr "Brani preferiti"
#~ msgid "Back"
#~ msgstr "Indietro"
#~ msgid "Find music on YouTube Music"
#~ msgstr "Trova musica su Youtube Music"
#~ msgid "Add to Playlist"
#~ msgstr "Aggiungi alla scaletta"
#~ msgid "Play next"
#~ msgstr "Riproduci successivo"
msgid "Find music on YouTube Music"
msgstr "Trova musica su Youtube Music"
#~ msgid "Clear"
#~ msgstr "Pulisci"
-235
View File
@@ -1,235 +0,0 @@
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2021-05-29 19:15-0700\n"
"Last-Translator: Japanese KDE translation team <[email protected]>\n"
"Language-Team: Japanese <[email protected]>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Accelerator-Marker: &\n"
"X-Text-Markup: kde4\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr ""
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr ""
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Play"
msgstr ""
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#, kde-format
msgid "Shuffle"
msgstr ""
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#, kde-format
msgid "Open in Browser"
msgstr ""
#: contents/ui/AlbumPage.qml:44
#, kde-format
msgid "Album • %1"
msgstr ""
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr ""
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr ""
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr ""
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
"\"%1\"?"
msgstr ""
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#, kde-format
msgid "Albums"
msgstr ""
#: contents/ui/ArtistPage.qml:87
#, kde-format
msgid "Singles"
msgstr ""
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#, kde-format
msgid "Songs"
msgstr ""
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#, kde-format
msgid "Videos"
msgstr ""
#: contents/ui/ConfirmationMessage.qml:16
#, kde-format
msgid "OK"
msgstr ""
#: contents/ui/ConfirmationMessage.qml:21
#, kde-format
msgid "Cancel"
msgstr ""
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#, kde-format
msgid "Favourites"
msgstr ""
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#, kde-format
msgid "Show All"
msgstr ""
#: contents/ui/LibraryPage.qml:214
#, kde-format
msgid "Most played"
msgstr ""
#: contents/ui/LibraryPage.qml:230
#, kde-format
msgid "played Songs"
msgstr ""
#: contents/ui/main.qml:108
#, kde-format
msgid "AudioTube"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr ""
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr ""
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#, kde-format
msgid "Search"
msgstr ""
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#, kde-format
msgid "Played Songs"
msgstr ""
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr ""
#: contents/ui/PlaybackHistory.qml:27
#, kde-format
msgid "No songs here yet"
msgstr ""
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr ""
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr ""
#: contents/ui/SearchPage.qml:28
#, kde-format
msgid "Artists"
msgstr ""
#: contents/ui/SearchPage.qml:30
#, kde-format
msgid "Playlists"
msgstr ""
#: contents/ui/SearchPage.qml:37
#, kde-format
msgid "Unknown"
msgstr ""
#: contents/ui/SearchWithDropdown.qml:286
#, kde-format
msgid "No matching previous searches"
msgstr ""
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr ""
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr ""
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgstr ""
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#, kde-format
msgid "Add to queue"
msgstr ""
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Remove Favourite"
msgstr ""
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr ""
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr ""
-267
View File
@@ -1,267 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR This file is copyright:
# This file is distributed under the same license as the audiotube package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-02-08 07:08+0100\n"
"Last-Translator: Temuri Doghonadze <[email protected]>\n"
"Language-Team: Georgian <[email protected]>\n"
"Language: ka\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.2.2\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Temuri Doghonadze"
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Play"
msgstr "დაკვრა"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#, kde-format
msgid "Shuffle"
msgstr "შემთხვევით"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#, kde-format
msgid "Open in Browser"
msgstr "ბრაუზერში გახსნა"
#: contents/ui/AlbumPage.qml:44
#, kde-format
msgid "Album • %1"
msgstr "ალბომი • %1"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "მეტი"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "რადიო"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "შემსრულებელი"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
"\"%1\"?"
msgstr ""
"ვიდეოს დაკვრა ჯერ მხარდაჭერილი არაა. გნებავთ \"%1\"-ის მხოლოდ ხმა დავუკრა?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#, kde-format
msgid "Albums"
msgstr "ალბომები"
#: contents/ui/ArtistPage.qml:87
#, kde-format
msgid "Singles"
msgstr "სინგლები"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#, kde-format
msgid "Songs"
msgstr "სიმღერები"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#, kde-format
msgid "Videos"
msgstr "ვიდეო"
#: contents/ui/ConfirmationMessage.qml:16
#, kde-format
msgid "OK"
msgstr "კარგი"
#: contents/ui/ConfirmationMessage.qml:21
#, kde-format
msgid "Cancel"
msgstr "გაუქმენა"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#, kde-format
msgid "Favourites"
msgstr "რჩეულები"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#, kde-format
msgid "Show All"
msgstr "ყველას ჩვენება"
#: contents/ui/LibraryPage.qml:214
#, kde-format
msgid "Most played"
msgstr "ხშირად დაკრულები"
#: contents/ui/LibraryPage.qml:230
#, kde-format
msgid "played Songs"
msgstr "დაკრული სიმღერები"
#: contents/ui/main.qml:108
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "არაფერს ვუკრავ"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr "%1%"
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "აუდიობილიკის წაშლა"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr "ბიბლიოთეკა"
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#, kde-format
msgid "Search"
msgstr "ძებნა"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#, kde-format
msgid "Played Songs"
msgstr "დაკრული სიმღერები"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "უცნობი სიმღერების სია"
#: contents/ui/PlaybackHistory.qml:27
#, kde-format
msgid "No songs here yet"
msgstr "აქ ჯერ სიმღერები არაა"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "დასაკრავი სია"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr "წინა ძებნები:"
#: contents/ui/SearchPage.qml:28
#, kde-format
msgid "Artists"
msgstr "შემსრულებლები"
#: contents/ui/SearchPage.qml:30
#, kde-format
msgid "Playlists"
msgstr "დასაკრავი სიები"
#: contents/ui/SearchPage.qml:37
#, kde-format
msgid "Unknown"
msgstr "უცნობი"
#: contents/ui/SearchWithDropdown.qml:286
#, kde-format
msgid "No matching previous searches"
msgstr "წინა ძებნებს არ ემთხვევა"
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr "ძებნის ისტორიიდან წაშლა"
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr "გვერდითი ზოლის ჩაკეცვა"
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgstr "შემდეგის დაკვრა"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#, kde-format
msgid "Add to queue"
msgstr "რიგში ჩამატება"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Remove Favourite"
msgstr "რჩეულის წაშლა"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr "რჩეულის დამატება"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr "ისტორიიდან წაშლა"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Now Playing"
#~ msgstr "მიმდინარეობს დაკვრა"
#~ msgid "Queue"
#~ msgstr "რიგი"
#~ msgid "Lyrics"
#~ msgstr "ლირიკა"
#~ msgid "Favourite Songs"
#~ msgstr "რჩეული სიმღერები"
#~ msgid "Back"
#~ msgstr "უკან"
#~ msgid "Find music on YouTube Music"
#~ msgstr "იპოვეთ მუსიკა YouTube Music-ზე"
#~ msgid "Add to Playlist"
#~ msgstr "დასაკრავი სიაში დამატება"
#~ msgid "Play next"
#~ msgstr "შემდეგის დაკვრა"
+70 -145
View File
@@ -6,10 +6,10 @@ msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2022-10-03 14:20+0200\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-07-13 15:34+0200\n"
"Last-Translator: Shinjo Park <[email protected]>\n"
"Language-Team: Korean <kde-i18n-doc@kde.org>\n"
"Language-Team: Korean <kde-kr@kde.org>\n"
"Language: ko\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -27,68 +27,52 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "재생"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "무순서 재생"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "브라우저로 열기"
msgid "Play Next"
msgstr "다음 재생"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr ""
msgid "Add to Playlist"
msgstr "재생 목록에 추가"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr ""
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "라디오"
#: contents/ui/ArtistPage.qml:46
#, fuzzy, kde-format
#| msgid "Artists"
msgid "Artist"
msgstr "아티스트"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
"\"%1\"?"
msgstr "비디오 재생은 지원하지 않습니다. \"%1\"의 오디오만 재생하시겠습니까?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "앨범"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "싱글"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "곡"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "비디오"
@@ -103,165 +87,106 @@ msgstr "확인"
msgid "Cancel"
msgstr "취소"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "책갈피"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "모두 표시"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "책갈피에 등록된 노래"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "가장 많이 재생됨"
#: contents/ui/LibraryPage.qml:230
#, fuzzy, kde-format
#| msgid "Played Songs"
msgid "played Songs"
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "Played Songs"
msgstr "재생한 노래"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
msgid "Back"
msgstr "뒤로"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "재생 중인 미디어 없음"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "트랙 삭제"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr ""
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "검색"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "재생한 노래"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "지금 재생 중"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "대기열에 추가"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "트랙 삭제"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "재생 중인 미디어 없음"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "알 수 없는 노래 목록"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "목록에 등록된 곡 없음"
#: contents/ui/PlaylistPage.qml:42
#, fuzzy, kde-format
#| msgid "Playlists"
msgid "Playlist"
msgstr "재생 목록"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr ""
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "아티스트"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "재생 목록"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "알 수 없음"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr ""
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr ""
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr ""
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "다음 재생"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr ""
msgid "Radio"
msgstr "라디오"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, fuzzy, kde-format
#| msgid "Favourites"
msgid "Remove Favourite"
msgstr "책갈피"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, fuzzy, kde-format
#| msgid "Favourites"
msgid "Add Favourite"
msgstr "책갈피"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove from History"
msgstr ""
#~ msgid "Now Playing"
#~ msgstr "지금 재생 중"
#~ msgid "Queue"
#~ msgstr "대기열에 추가"
#~ msgid "Favourite Songs"
#~ msgstr "책갈피에 등록된 노래"
#~ msgid "Back"
#~ msgstr "뒤로"
#~ msgid "Find music on YouTube Music"
#~ msgstr "YouTube Music에서 음악 찾기"
#~ msgid "Add to Playlist"
#~ msgstr "재생 목록에 추가"
#~ msgid "Play next"
#~ msgstr "다음 재생"
msgid "Find music on YouTube Music"
msgstr "YouTube Music에서 음악 찾기"
#~ msgid "Clear"
#~ msgstr "지우기"
+72 -148
View File
@@ -1,13 +1,13 @@
# Copyright (C) YEAR This file is copyright:
# This file is distributed under the same license as the audiotube package.
#
# Freek de Kruijf <[email protected]>, 2021, 2022, 2023.
# Freek de Kruijf <[email protected]>, 2021, 2022.
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-02-08 14:22+0100\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-05-26 13:17+0200\n"
"Last-Translator: Freek de Kruijf <[email protected]>\n"
"Language-Team: \n"
"Language: nl\n"
@@ -15,57 +15,42 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 22.12.2\n"
"X-Generator: Lokalize 22.04.1\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Freek de Kruijf - 2021 t/m 2023"
msgstr "Freek de Kruijf - 2021 t/m 2022"
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Afspelen"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Willekeurig afspelen"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "In browser openen"
msgid "Play Next"
msgstr "Volgende afspelen"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr "Album • %1"
msgid "Add to Playlist"
msgstr "Aan afspeellijst toevoegen"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "Meer"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Radio"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "Artiest"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
@@ -74,22 +59,22 @@ msgstr ""
"Afspelen van video wordt nog niet ondersteund. Wilt u alleen het geluid van "
"\"%1\" afspelen?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Albums"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Enkelvoudige"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Songs"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Video's"
@@ -104,167 +89,106 @@ msgstr "OK"
msgid "Cancel"
msgstr "Annuleren"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Favorieten"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "Alles tonen"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "Favoriete songs"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "Meest afgespeeld"
#: contents/ui/LibraryPage.qml:230
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "played Songs"
msgstr "afgespeelde songs"
msgid "Played Songs"
msgstr "Afgespeelde songs"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
msgid "Back"
msgstr "Terug"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Er speelt geen medium"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr "%1%"
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Track verwijderen"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr "Bibliotheek"
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Zoeken"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Afgespeelde songs"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "Speelt nu"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "Wachtrij"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Track verwijderen"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "Er speelt geen medium"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Onbekende lijst met songs"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "Er zijn hier nog geen songs"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "Afspeellijst"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr "Vorige zoekopdrachten:"
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "Artiesten"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Afspeellijsten"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Onbekend"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr "Geen overeenkomende vorige zoekopdrachten"
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr "uit zoekgeschiedenis verwijderen"
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr "Zijbalk invouwen"
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "Volgende afspelen"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr "Aan wachtrij toevoegen"
msgid "Radio"
msgstr "Radio"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove Favourite"
msgstr "Favoriet verwijderen"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr "Favoriet toevoegen"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr "Uit geschiedenis verwijderen"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Now Playing"
#~ msgstr "Speelt nu"
#~ msgid "Queue"
#~ msgstr "Wachtrij"
#~ msgid "Lyrics"
#~ msgstr "Liedteksten"
#~ msgid "Favourite Songs"
#~ msgstr "Favoriete songs"
#~ msgid "Back"
#~ msgstr "Terug"
#~ msgid "Find music on YouTube Music"
#~ msgstr "Muziek zoeken op YouTube Music"
#~ msgid "Add to Playlist"
#~ msgstr "Aan afspeellijst toevoegen"
#~ msgid "Play next"
#~ msgstr "Volgende afspelen"
msgid "Find music on YouTube Music"
msgstr "Muziek zoeken op YouTube Music"
#~ msgid "Clear"
#~ msgstr "Wissen"
-241
View File
@@ -1,241 +0,0 @@
# Translation of audiotube to Norwegian Nynorsk
#
# Øystein Steffensen-Alværvik <[email protected]>, 2022.
# Karl Ove Hufthammer <[email protected]>, 2022, 2023.
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-02-09 21:36+0100\n"
"Last-Translator: Karl Ove Hufthammer <[email protected]>\n"
"Language-Team: Norwegian Nynorsk <[email protected]>\n"
"Language: nn\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Lokalize 22.12.2\n"
"X-Environment: kde\n"
"X-Accelerator-Marker: &\n"
"X-Text-Markup: kde4\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Øystein Steffensen-Alværvik"
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Play"
msgstr "Spel av"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#, kde-format
msgid "Shuffle"
msgstr "Stokk om"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#, kde-format
msgid "Open in Browser"
msgstr "Opna i nettlesar"
#: contents/ui/AlbumPage.qml:44
#, kde-format
msgid "Album • %1"
msgstr "Album • %1"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "Meir"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Radio"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "Artist"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
"\"%1\"?"
msgstr "Videoavspeling er endå ikkje støtta. Vil du spela av lyden til «%1»?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#, kde-format
msgid "Albums"
msgstr "Album"
#: contents/ui/ArtistPage.qml:87
#, kde-format
msgid "Singles"
msgstr "Singelplater"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#, kde-format
msgid "Songs"
msgstr "Songar"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#, kde-format
msgid "Videos"
msgstr "Videoar"
#: contents/ui/ConfirmationMessage.qml:16
#, kde-format
msgid "OK"
msgstr "OK"
#: contents/ui/ConfirmationMessage.qml:21
#, kde-format
msgid "Cancel"
msgstr "Avbryt"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#, kde-format
msgid "Favourites"
msgstr "Favorittar"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#, kde-format
msgid "Show All"
msgstr "Vis alle"
#: contents/ui/LibraryPage.qml:214
#, kde-format
msgid "Most played"
msgstr "Oftast avspela"
#: contents/ui/LibraryPage.qml:230
#, kde-format
msgid "played Songs"
msgstr "Avspela songar"
#: contents/ui/main.qml:108
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Inkje medium vert spela"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr "%1 %"
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Fjern spor"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr "Bibliotek"
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#, kde-format
msgid "Search"
msgstr "Søk"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#, kde-format
msgid "Played Songs"
msgstr "Avspela songar"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Ukjend songliste"
#: contents/ui/PlaybackHistory.qml:27
#, kde-format
msgid "No songs here yet"
msgstr "Ingen songar enno"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "Speleliste"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr "Tidlegare søk:"
#: contents/ui/SearchPage.qml:28
#, kde-format
msgid "Artists"
msgstr "Artistar"
#: contents/ui/SearchPage.qml:30
#, kde-format
msgid "Playlists"
msgstr "Spelelister"
#: contents/ui/SearchPage.qml:37
#, kde-format
msgid "Unknown"
msgstr "Ukjend"
#: contents/ui/SearchWithDropdown.qml:286
#, kde-format
msgid "No matching previous searches"
msgstr "Ingen samsvarande tidlegare søk"
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr "Fjern frå søkjeloggen"
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr "Fald saman sidestolpe"
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgstr "Spel som neste"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#, kde-format
msgid "Add to queue"
msgstr "Legg i avspelingskøen"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Remove Favourite"
msgstr "Fjern frå favorittar"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr "Legg til favorittar"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr "Fjern frå loggen"
+66 -130
View File
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-01-01 09:11-0800\n"
"Last-Translator: A S Alam <[email protected]>\n"
"Language-Team: Punjabi <[email protected]>\n"
@@ -27,68 +27,52 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "alam yellow @ gmail.com"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "ਚਲਾਓ"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "ਰਲਵੇਂ"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr ""
msgid "Play Next"
msgstr "ਅਗਲਾ ਚਲਾਓ"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr ""
msgid "Add to Playlist"
msgstr "ਪਲੇਅਲਿਸਟ ਵਿੱਚ ਜੋੜੋ"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr ""
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "ਰੇਡੀਓ"
#: contents/ui/ArtistPage.qml:46
#, fuzzy, kde-format
#| msgid "Artists"
msgid "Artist"
msgstr "ਕਲਾਕਾਰ"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
"\"%1\"?"
msgstr "ਵਿਡੀਓ ਪਲੇਅਬੈਕ ਹਾਲੇ ਸਹਾਇਕ ਨਹੀਂ ਹੈ। ਕੀ ਤੁਸੀਂ \"%1\" ਦਾ ਆਡੀਓ ਹੀ ਚਲਾਉਣਾ ਚਾਹੋਗੇ?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "ਐਲਬਮਾਂ"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "ਇਕੱਲੇ"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "ਗੀਤ"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "ਵਿਡੀਓ"
@@ -103,155 +87,107 @@ msgstr "ਠੀਕ ਹੈ"
msgid "Cancel"
msgstr "ਰੱਦ ਕਰੋ"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr ""
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr ""
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr ""
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr ""
#: contents/ui/LibraryPage.qml:230
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "played Songs"
msgid "Played Songs"
msgstr ""
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "ਆਡੀਓ-ਟਿਊਬ"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "ਕੋਈ ਮੀਡੀਆ ਨਹੀਂ ਚੱਲਦਾ"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgid "Back"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "ਟਰੈਕ ਨੂੰ ਹਟਾਓ"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr ""
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "ਖੋਜੋ"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgid "AudioTube"
msgstr "ਆਡੀਓ-ਟਿਊਬ"
#: contents/ui/MaximizedPlayerPage.qml:92
#, fuzzy, kde-format
#| msgid "No media playing"
msgid "Now Playing"
msgstr "ਕੋਈ ਮੀਡੀਆ ਨਹੀਂ ਚੱਲਦਾ"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "ਟਰੈਕ ਨੂੰ ਹਟਾਓ"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "ਕੋਈ ਮੀਡੀਆ ਨਹੀਂ ਚੱਲਦਾ"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr ""
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr ""
#: contents/ui/PlaylistPage.qml:42
#, fuzzy, kde-format
#| msgid "Playlists"
msgid "Playlist"
msgstr "ਪਲੇਅਲਿਸਟਾਂ"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr ""
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "ਕਲਾਕਾਰ"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "ਪਲੇਅਲਿਸਟਾਂ"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "ਅਣਪਛਾਤਾ"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr ""
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr ""
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr ""
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "ਅਗਲਾ ਚਲਾਓ"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr ""
msgid "Radio"
msgstr "ਰੇਡੀਓ"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove Favourite"
msgstr ""
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr ""
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr ""
#, fuzzy
#~| msgid "No media playing"
#~ msgid "Now Playing"
#~ msgstr "ਕੋਈ ਮੀਡੀਆ ਨਹੀਂ ਚੱਲਦਾ"
#~ msgid "Find music on YouTube Music"
#~ msgstr "ਯੂਟਿਊਬ ਸੰਗੀਤ ਉੱਤੇ ਸੰਗੀਤ ਲੱਭੋ"
#~ msgid "Add to Playlist"
#~ msgstr "ਪਲੇਅਲਿਸਟ ਵਿੱਚ ਜੋੜੋ"
#~ msgid "Play next"
#~ msgstr "ਅਗਲਾ ਚਲਾਓ"
msgid "Find music on YouTube Music"
msgstr "ਯੂਟਿਊਬ ਸੰਗੀਤ ਉੱਤੇ ਸੰਗੀਤ ਲੱਭੋ"
#~ msgid "Clear"
#~ msgstr "ਮਿਟਾਓ"
+70 -145
View File
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2022-10-18 18:06+0200\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-06-26 20:24+0200\n"
"Last-Translator: Łukasz Wojniłowicz <[email protected]>\n"
"Language-Team: Polish <[email protected]>\n"
"Language: pl\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
"X-Generator: Lokalize 22.08.1\n"
"X-Generator: Lokalize 22.03.70\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@@ -29,46 +29,30 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected], [email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Odtwórz"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Wymieszaj"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "Otwórz w przeglądarce"
msgid "Play Next"
msgstr "Odtwórz następny"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr ""
msgid "Add to Playlist"
msgstr "Dodaj do listy odtwarzania"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr ""
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Radio"
#: contents/ui/ArtistPage.qml:46
#, fuzzy, kde-format
#| msgid "Artists"
msgid "Artist"
msgstr "Wykonawcy"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
@@ -77,22 +61,22 @@ msgstr ""
"Odtwarzanie wideo nie jest jeszcze obsługiwane. Czy odtworzyć tylko dźwięk z "
"„%1”?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Albumy"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Single"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Piosenki"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Filmy"
@@ -107,165 +91,106 @@ msgstr "OK"
msgid "Cancel"
msgstr "Anuluj"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Ulubione"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "Pokaż wszystkie"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "Ulubione utwory"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "Najczęściej odtwarzane"
#: contents/ui/LibraryPage.qml:230
#, fuzzy, kde-format
#| msgid "Played Songs"
msgid "played Songs"
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "Played Songs"
msgstr "Odtwarzane utwory"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
msgid "Back"
msgstr "Wstecz"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Nic nie jest odtwarzane"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Usuń utwór"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr ""
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Szukaj"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Odtwarzane utwory"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "Teraz odtwarzany"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "Kolejka"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Usuń utwór"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "Nic nie jest odtwarzane"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Nieznana lista utworów"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "Jeszcze nie ma tutaj utworów"
#: contents/ui/PlaylistPage.qml:42
#, fuzzy, kde-format
#| msgid "Playlists"
msgid "Playlist"
msgstr "Listy odtwarzania"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr ""
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "Wykonawcy"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Listy odtwarzania"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Nieznany"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr ""
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr ""
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr ""
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "Odtwórz następny"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr ""
msgid "Radio"
msgstr "Radio"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, fuzzy, kde-format
#| msgid "Favourites"
msgid "Remove Favourite"
msgstr "Ulubione"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, fuzzy, kde-format
#| msgid "Favourites"
msgid "Add Favourite"
msgstr "Ulubione"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove from History"
msgstr ""
#~ msgid "Now Playing"
#~ msgstr "Teraz odtwarzany"
#~ msgid "Queue"
#~ msgstr "Kolejka"
#~ msgid "Favourite Songs"
#~ msgstr "Ulubione utwory"
#~ msgid "Back"
#~ msgstr "Wstecz"
#~ msgid "Find music on YouTube Music"
#~ msgstr "Znajdź muzykę w serwisie YouTube Music"
#~ msgid "Add to Playlist"
#~ msgstr "Dodaj do listy odtwarzania"
#~ msgid "Play next"
#~ msgstr "Odtwórz następny"
msgid "Find music on YouTube Music"
msgstr "Znajdź muzykę w serwisie YouTube Music"
#~ msgid "Clear"
#~ msgstr "Wyczyść"
+70 -132
View File
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-01-22 23:00+0000\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-06-03 17:36+0100\n"
"Last-Translator: José Nuno Coelho Pires <[email protected]>\n"
"Language-Team: Portuguese <[email protected]>\n"
"Language: pt\n"
@@ -29,45 +29,30 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Reproduzir"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Baralhar"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "Abrir no Navegador"
msgid "Play Next"
msgstr "Reproduzir o Seguinte"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr "Álbum • %1"
msgid "Add to Playlist"
msgstr "Adicionar à Lista de Reprodução"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "Mais"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Rádio"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "Artista"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
@@ -76,22 +61,22 @@ msgstr ""
"A reprodução de vídeos ainda não é suportada. Deseja reproduzir apenas o "
"áudio de \"%1\"?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Álbuns"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "'Singles'"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Músicas"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Vídeos"
@@ -106,150 +91,103 @@ msgstr "OK"
msgid "Cancel"
msgstr "Cancelar"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Favoritos"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "Mostrar Tudo"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "Músicas Favoritas"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "Mais Tocadas"
#: contents/ui/LibraryPage.qml:230
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "played Songs"
msgstr "Músicas tocadas"
msgid "Played Songs"
msgstr "Músicas Tocadas"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
msgid "Back"
msgstr "Recuar"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Nada em reprodução"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr "%1%"
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Remover a Faixa"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr "Biblioteca"
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Procurar"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Músicas Tocadas"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "Agora a Ouvir"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "Fila"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Remover a Faixa"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "Nada em reprodução"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Lista de músicas desconhecida"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "Ainda sem músicas aqui"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "Lista de Reprodução"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr "Pesquisas Anteriores:"
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "Artistas"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Listas de Reprodução"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Desconhecido"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr "Sem pesquisas anteriores correspondentes"
msgid "Play next"
msgstr "Reproduzir o seguinte"
#: contents/ui/SearchWithDropdown.qml:321
#, fuzzy, kde-format
#| msgid "Remove from History"
msgid "remove from search history"
msgstr "Remover do Histórico"
#: contents/ui/Sidebar.qml:179
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Collapse Sidebar"
msgstr "Fechar a Barra Lateral"
msgid "Radio"
msgstr "Rádio"
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Play Next"
msgstr "Reproduzir o Seguinte"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#, kde-format
msgid "Add to queue"
msgstr "Adicionar à fila"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Remove Favourite"
msgstr "Remover o Favorito"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr "Adicionar aos Favoritos"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr "Remover do Histórico"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Now Playing"
#~ msgstr "Agora a Ouvir"
#~ msgid "Queue"
#~ msgstr "Fila"
#~ msgid "Lyrics"
#~ msgstr "Letras Musicais"
msgid "Find music on YouTube Music"
msgstr "Procurar música no YouTube Music"
+71 -144
View File
@@ -1,14 +1,14 @@
# Copyright (C) YEAR This file is copyright:
# This file is distributed under the same license as the audiotube package.
#
# Luiz Fernando Ranghetti <[email protected]>, 2021, 2022, 2023.
# Luiz Fernando Ranghetti <[email protected]>, 2021, 2022.
# Thiago Masato Costa Sueto <[email protected]>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-02-14 11:03-0300\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-07-13 14:59-0300\n"
"Last-Translator: Luiz Fernando Ranghetti <[email protected]>\n"
"Language-Team: Portuguese <[email protected]>\n"
"Language: pt_BR\n"
@@ -28,45 +28,30 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Reproduzir"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Embaralhar"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "Abrir no navegador"
msgid "Play Next"
msgstr "Reproduzir próxima"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr "Álbum • %1"
msgid "Add to Playlist"
msgstr "Adicionar à lista de reprodução"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "Mais"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Rádio"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "Artista"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
@@ -75,22 +60,22 @@ msgstr ""
"A reprodução de vídeos ainda não é suportada. Deseja reproduzir apenas o "
"áudio de \"%1\"?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Álbuns"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Singles"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Músicas"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Vídeos"
@@ -105,164 +90,106 @@ msgstr "OK"
msgid "Cancel"
msgstr "Cancelar"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Favoritas"
msgstr "Favoritos"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "Mostrar tudo"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "Músicas favoritas"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "Mais reproduzidas"
#: contents/ui/LibraryPage.qml:230
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "played Songs"
msgstr "músicas reproduzidas"
msgid "Played Songs"
msgstr "Músicas reproduzidas"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
msgid "Back"
msgstr "Voltar"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Nenhuma mídia em reprodução"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr "%1%"
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Remover faixa"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr "Biblioteca"
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Pesquisar"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Músicas reproduzidas"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "Reproduzindo agora"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "Fila"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Remover faixa"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "Nenhuma mídia em reprodução"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Lista de músicas desconhecida"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "Nenhuma música ainda"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "Lista de músicas"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr "Pesquisas anteriores:"
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "Artistas"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Listas de músicas"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Desconhecido"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr "Nenhuma pesquisa anterior correspondente"
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr "remover do histórico de pesquisa"
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr "Recolher barra lateral"
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "Reproduzir próxima"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr "Adicionar à fila"
msgid "Radio"
msgstr "Rádio"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove Favourite"
msgstr "Remover das favoritas"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr "Adicionar favorita"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr "Remover do histórico"
#~ msgid "Now Playing"
#~ msgstr "Reproduzindo agora"
#~ msgid "Queue"
#~ msgstr "Fila"
#~ msgid "Lyrics"
#~ msgstr "Letras"
#~ msgid "Favourite Songs"
#~ msgstr "Músicas favoritas"
#~ msgid "Back"
#~ msgstr "Voltar"
#~ msgid "Find music on YouTube Music"
#~ msgstr "Encontre músicas no YouTube Music"
#~ msgid "Add to Playlist"
#~ msgstr "Adicionar à lista de reprodução"
#~ msgid "Play next"
#~ msgstr "Reproduzir próxima"
msgid "Find music on YouTube Music"
msgstr "Encontre músicas no YouTube Music"
#~ msgid "Clear"
#~ msgstr "Limpar"
+92 -160
View File
@@ -1,13 +1,13 @@
# Copyright (C) YEAR This file is copyright:
# This file is distributed under the same license as the audiotube package.
#
# Alexander Yavorsky <[email protected]>, 2022, 2023.
# Alexander Yavorsky <[email protected]>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-01-28 13:37+0300\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-05-10 21:39+0300\n"
"Last-Translator: Alexander Yavorsky <[email protected]>\n"
"Language-Team: Russian <[email protected]>\n"
"Language: ru\n"
@@ -21,75 +21,59 @@ msgstr ""
#, kde-format
msgctxt "NAME OF TRANSLATORS"
msgid "Your names"
msgstr "Александр Яворский, Павел Чернышов"
msgstr "Александр Яворский"
#, kde-format
msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected], [email protected]"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Воспроизвести"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Перемешать"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "Открыть в браузере"
msgid "Play Next"
msgstr "Воспроизвести следующий"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr "Альбом • %1"
msgid "Add to Playlist"
msgstr ""
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "Дополнительно"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Радио"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "Исполнитель"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
"\"%1\"?"
msgstr ""
"Воспроизведение видео пока не поддерживается. Воспроизвести звук трека «%1»?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Альбомы"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Синглы"
msgstr ""
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Треки"
msgstr ""
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Видеозаписи"
@@ -104,158 +88,106 @@ msgstr "ОК"
msgid "Cancel"
msgstr "Отмена"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Избранное"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#, kde-format
msgid "Show All"
msgstr "Показать все"
#: contents/ui/LibraryPage.qml:214
#, kde-format
msgid "Most played"
msgstr "Часто воспроизводимые"
#: contents/ui/LibraryPage.qml:230
#, kde-format
msgid "played Songs"
msgstr "Воспроизведённые треки"
#: contents/ui/main.qml:108
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Ничего не воспроизводится"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Remove Track"
msgstr "Удалить дорожку"
msgid "Show All"
msgstr ""
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Library"
msgstr "Библиотека"
msgid "Favourite Songs"
msgstr ""
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr ""
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "Played Songs"
msgstr ""
#: contents/ui/main.qml:39
#, kde-format
msgid "Back"
msgstr ""
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Поиск"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Воспроизведённые треки"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Удалить дорожку"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr ""
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Неизвестный список треков"
#: contents/ui/PlaybackHistory.qml:27
#, kde-format
msgid "No songs here yet"
msgstr "Пока нет ни одного трека"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "Список воспроизведения"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr "Предыдущие поисковые запросы:"
#: contents/ui/SearchPage.qml:28
#, kde-format
msgid "Artists"
msgstr "Исполнители"
#: contents/ui/SearchPage.qml:30
#, kde-format
msgid "Playlists"
msgstr "Списки воспроизведения"
#: contents/ui/SearchPage.qml:37
#, kde-format
msgid "Unknown"
msgstr "Неизвестный тип"
#: contents/ui/SearchWithDropdown.qml:286
#, kde-format
msgid "No matching previous searches"
msgstr "Не найдено соответствующих предыдущих поисковых запросов"
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr ""
#: contents/ui/Sidebar.qml:179
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "Collapse Sidebar"
msgstr "Свернуть боковую панель"
msgid "No songs here yet"
msgstr ""
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Play Next"
msgstr "Воспроизвести следующим"
msgid "Artists"
msgstr ""
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Add to queue"
msgstr "Добавить в очередь воспроизведения"
msgid "Playlists"
msgstr ""
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Remove Favourite"
msgstr "Убрать из избранного"
msgid "Unknown"
msgstr ""
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "Add Favourite"
msgstr "Добавить в избранное"
msgid "Play next"
msgstr ""
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Remove from History"
msgstr "Удалить из журнала"
msgid "Radio"
msgstr "Радио"
#~ msgid "Now Playing"
#~ msgstr "Текущий трек"
#~ msgid "Queue"
#~ msgstr "Очередь воспроизведения"
#~ msgid "Lyrics"
#~ msgstr "Текст песни"
#~ msgid "Favourite Songs"
#~ msgstr "Избранные треки"
#~ msgid "Back"
#~ msgstr "Назад"
#~ msgid "Find music on YouTube Music"
#~ msgstr "Найти музыку в YouTube Music"
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Find music on YouTube Music"
msgstr ""
#~ msgid "Clear"
#~ msgstr "Очистить"
+68 -126
View File
@@ -4,7 +4,7 @@ msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-04-07 18:01+0200\n"
"Last-Translator: Roman Paholik <[email protected]>\n"
"Language-Team: Slovak <[email protected]>\n"
@@ -25,68 +25,53 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Prehrať"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Zamiešať"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#, kde-format
msgid "Open in Browser"
msgstr ""
#: contents/ui/AlbumPage.qml:44
#, kde-format
msgid "Album • %1"
msgstr ""
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr ""
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Rádio"
#: contents/ui/ArtistPage.qml:46
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, fuzzy, kde-format
#| msgid "Artists"
msgid "Artist"
msgstr "Interpreti"
#| msgid "Play"
msgid "Play Next"
msgstr "Prehrať"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Add to Playlist"
msgstr "Pridať do zoznamu skladieb"
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
"\"%1\"?"
msgstr ""
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Albumy"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Samotné"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr ""
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Videá"
@@ -101,151 +86,108 @@ msgstr "OK"
msgid "Cancel"
msgstr "Zrušiť"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr ""
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr ""
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr ""
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr ""
#: contents/ui/LibraryPage.qml:230
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "played Songs"
msgid "Played Songs"
msgstr ""
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Neprehráva sa žiadne médium"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgid "Back"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr ""
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr ""
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Hľadať"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, fuzzy, kde-format
#| msgid "No media playing"
msgid "Now Playing"
msgstr "Neprehráva sa žiadne médium"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "Neprehráva sa žiadne médium"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr ""
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr ""
#: contents/ui/PlaylistPage.qml:42
#, fuzzy, kde-format
#| msgid "Playlists"
msgid "Playlist"
msgstr "Zoznamy skladieb"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr ""
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "Interpreti"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Zoznamy skladieb"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Neznáme"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgid "Play next"
msgstr ""
#: contents/ui/SearchWithDropdown.qml:321
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "remove from search history"
msgstr ""
msgid "Radio"
msgstr "Rádio"
#: contents/ui/Sidebar.qml:179
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Collapse Sidebar"
msgid "Find music on YouTube Music"
msgstr ""
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, fuzzy, kde-format
#| msgid "Play"
msgid "Play Next"
msgstr "Prehrať"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#, kde-format
msgid "Add to queue"
msgstr ""
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Remove Favourite"
msgstr ""
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr ""
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr ""
#, fuzzy
#~| msgid "No media playing"
#~ msgid "Now Playing"
#~ msgstr "Neprehráva sa žiadne médium"
#~ msgid "Add to Playlist"
#~ msgstr "Pridať do zoznamu skladieb"
#~ msgid "Clear"
#~ msgstr "Vyčistiť"
+71 -147
View File
@@ -1,20 +1,20 @@
# Copyright (C) YEAR This file is copyright:
# This file is distributed under the same license as the audiotube package.
#
# Matjaž Jeran <[email protected]>, 2021, 2022, 2023.
# Matjaž Jeran <[email protected]>, 2021, 2022.
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-02-09 08:26+0100\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-05-27 07:50+0200\n"
"Last-Translator: Matjaž Jeran <[email protected]>\n"
"Language-Team: Slovenian <[email protected]>\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 22.12.2\n"
"X-Generator: Lokalize 21.12.2\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
"%100==4 ? 3 : 0);\n"
@@ -28,67 +28,52 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Predvajaj"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Premešaj"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "Odpri v brskalniku"
msgid "Play Next"
msgstr "Predvajaj naslednjo"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr "Album • %1"
msgid "Add to Playlist"
msgstr "Dodaj v seznam predvajanja"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "Več"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Radio"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "Avtor"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
"\"%1\"?"
msgstr "Video playback še ni podprt. Ali želite predvajati samo zvok \"%1\"?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Albumi"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Singli"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Glasba"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Videposnetki"
@@ -103,167 +88,106 @@ msgstr "V redu"
msgid "Cancel"
msgstr "Prekliči"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Priljubljene"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "Prikaži vse"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "Priljubljene pesmi"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "Največkrat predvajane"
#: contents/ui/LibraryPage.qml:230
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "played Songs"
msgstr "predvajane pesmi"
msgid "Played Songs"
msgstr "Predvajane pesmi"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
msgid "Back"
msgstr "Nazaj"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Niče se ne predvaja"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr "%1%"
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Odstrani sled"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr "Knjižnica"
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Išči"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Predvajane pesmi"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "Pravkar predvajano"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "Čakalna vrsta"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Odstrani sled"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "Niče se ne predvaja"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Neznan seznam pesmi"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "Tu še ni nobene pesmi"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "Seznam predvajanja"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr "Prejšnja iskanja:"
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "Avtorji"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Seznami predvajanja"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Neznano"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr "Ni zadetkov iz prejšnjih iskanj"
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr "odstrani iz zgodovine iskanj"
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr "Strni stransko vrstico"
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "Predvajaj naslednjo"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr "Dodaj v v čakalno vrsto"
msgid "Radio"
msgstr "Radio"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove Favourite"
msgstr "Odstrani priljubljenega"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr "Dodaj priljubljenega"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr "Odstrani iz zgodovine"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Now Playing"
#~ msgstr "Pravkar predvajano"
#~ msgid "Queue"
#~ msgstr "Čakalna vrsta"
#~ msgid "Lyrics"
#~ msgstr "Besedilo"
#~ msgid "Favourite Songs"
#~ msgstr "Priljubljene pesmi"
#~ msgid "Back"
#~ msgstr "Nazaj"
#~ msgid "Find music on YouTube Music"
#~ msgstr "Najdi glasbo na Youtube Music"
#~ msgid "Add to Playlist"
#~ msgstr "Dodaj v seznam predvajanja"
#~ msgid "Play next"
#~ msgstr "Predvajaj naslednjo"
msgid "Find music on YouTube Music"
msgstr "Najdi glasbo na Youtube Music"
#~ msgid "Clear"
#~ msgstr "Očisti"
+69 -144
View File
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2022-09-24 14:57+0200\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-05-26 10:40+0200\n"
"Last-Translator: Stefan Asserhäll <[email protected]>\n"
"Language-Team: Swedish <[email protected]>\n"
"Language: sv\n"
@@ -27,68 +27,52 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Spela"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Blanda"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "Öppna i webbläsare"
msgid "Play Next"
msgstr "Spela nästa"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr ""
msgid "Add to Playlist"
msgstr "Lägg till i spellista"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr ""
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Radio"
#: contents/ui/ArtistPage.qml:46
#, fuzzy, kde-format
#| msgid "Artists"
msgid "Artist"
msgstr "Artister"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
"\"%1\"?"
msgstr "Videouppspelning stöds inte ännu. Vill du bara spela ljudet på \"%1\"?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Album"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Singlar"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Låtar"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Videor"
@@ -103,165 +87,106 @@ msgstr "Ok"
msgid "Cancel"
msgstr "Avbryt"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Favoriter"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "Visa alla"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "Favoritlåtar"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "Mest spelade"
#: contents/ui/LibraryPage.qml:230
#, fuzzy, kde-format
#| msgid "Played Songs"
msgid "played Songs"
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "Played Songs"
msgstr "Spelade låtar"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
msgid "Back"
msgstr "Bakåt"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Inga media spelar"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Ta bort spår"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr ""
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Sök"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Spelade låtar"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "Spelar nu"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "Köa"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Ta bort spår"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "Inga media spelar"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Okänd låtlista"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "Inga låtar här ännu"
#: contents/ui/PlaylistPage.qml:42
#, fuzzy, kde-format
#| msgid "Playlists"
msgid "Playlist"
msgstr "Spellistor"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr ""
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "Artister"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Spellistor"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Okänd"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr ""
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr ""
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr ""
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "Spela nästa"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr ""
msgid "Radio"
msgstr "Radio"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, fuzzy, kde-format
#| msgid "Favourites"
msgid "Remove Favourite"
msgstr "Favoriter"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, fuzzy, kde-format
#| msgid "Favourites"
msgid "Add Favourite"
msgstr "Favoriter"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove from History"
msgstr ""
#~ msgid "Now Playing"
#~ msgstr "Spelar nu"
#~ msgid "Queue"
#~ msgstr "Köa"
#~ msgid "Favourite Songs"
#~ msgstr "Favoritlåtar"
#~ msgid "Back"
#~ msgstr "Bakåt"
#~ msgid "Find music on YouTube Music"
#~ msgstr "Sök efter musik på YouTube musik"
#~ msgid "Add to Playlist"
#~ msgstr "Lägg till i spellista"
#~ msgid "Play next"
#~ msgstr "Spela nästa"
msgid "Find music on YouTube Music"
msgstr "Sök efter musik på YouTube musik"
#~ msgid "Clear"
#~ msgstr "Rensa"
+71 -147
View File
@@ -1,13 +1,13 @@
# Copyright (C) YEAR This file is copyright:
# This file is distributed under the same license as the audiotube package.
#
# Emir SARI <[email protected]>, 2022, 2023.
# Emir SARI <[email protected]>, 2022.
msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-02-08 11:05+0300\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-05-26 10:29+0300\n"
"Last-Translator: Emir SARI <[email protected]>\n"
"Language-Team: Turkish <[email protected]>\n"
"Language: tr\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 22.12.2\n"
"X-Generator: Lokalize 22.04.0\n"
#, kde-format
msgctxt "NAME OF TRANSLATORS"
@@ -27,45 +27,30 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Çal"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Karıştır"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "Tarayıcıda Aç"
msgid "Play Next"
msgstr "Sonrakini Çal"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr "Albüm • %1"
msgid "Add to Playlist"
msgstr "Çalma Listesine Ekle"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "Daha Fazla"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Radyo"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "Sanatçı"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
@@ -74,22 +59,22 @@ msgstr ""
"Video oynatımı henüz desteklenmiyor. \"%1\" videosunun yalnızca sesinin "
"çalınmasını ister misiniz?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Albümler"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Tekliler"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Şarkılar"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Videolar"
@@ -104,167 +89,106 @@ msgstr "Tamam"
msgid "Cancel"
msgstr "İptal"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Beğeniler"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "Tümünü Göster"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "Beğenilen Şarkılar"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "En Çok Çalınanlar"
#: contents/ui/LibraryPage.qml:230
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "played Songs"
msgid "Played Songs"
msgstr "Çalınan Şarkılar"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
msgid "Back"
msgstr "Geri"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Ortam çalmıyor"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr "%​%1"
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Parçayı Kaldır"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr "Kitaplık"
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Ara"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Çalınan Şarkılar"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "Şimdi Çalınıyor"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "Kuyruk"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Parçayı Kaldır"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "Ortam çalmıyor"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Bilinmeyen şarkılar listesi"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "Burada henüz şarkı yok"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "Çalma Listesi"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr "Önceki Aramalar:"
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "Sanatçılar"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Çalma Listeleri"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Bilinmiyor"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr "Eşleşen daha önceden yapılmış arama yok"
msgid "Play next"
msgstr "Sonrakini çal"
#: contents/ui/SearchWithDropdown.qml:321
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "remove from search history"
msgstr "arama geçmişinden kaldır"
msgid "Radio"
msgstr "Radyo"
#: contents/ui/Sidebar.qml:179
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Collapse Sidebar"
msgstr "Kenar Çubuğunu Daralt"
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgstr "Sonrakini Çal"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#, kde-format
msgid "Add to queue"
msgstr "Kuyruğa ekle"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Remove Favourite"
msgstr "Beğenilerden Kaldır"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr "Beğenilere Ekle"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr "Geçmişten Kaldır"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Now Playing"
#~ msgstr "Şimdi Çalınıyor"
#~ msgid "Queue"
#~ msgstr "Kuyruk"
#~ msgid "Lyrics"
#~ msgstr "Şarkı Sözleri"
#~ msgid "Favourite Songs"
#~ msgstr "Beğenilen Şarkılar"
#~ msgid "Back"
#~ msgstr "Geri"
#~ msgid "Find music on YouTube Music"
#~ msgstr "YouTube Müzik'te müzik bul"
#~ msgid "Add to Playlist"
#~ msgstr "Çalma Listesine Ekle"
#~ msgid "Play next"
#~ msgstr "Sonrakini çal"
msgid "Find music on YouTube Music"
msgstr "YouTube Müzik'te müzik bul"
#~ msgid "Clear"
#~ msgstr "Temizle"
+69 -145
View File
@@ -1,13 +1,13 @@
# Copyright (C) YEAR This file is copyright:
# This file is distributed under the same license as the PACKAGE package.
#
# Yuri Chornoivan <[email protected]>, 2021, 2022, 2023.
# Yuri Chornoivan <[email protected]>, 2021, 2022.
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-02-08 08:23+0200\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-05-26 08:15+0300\n"
"Last-Translator: Yuri Chornoivan <[email protected]>\n"
"Language-Team: Ukrainian <[email protected]>\n"
"Language: uk\n"
@@ -28,45 +28,30 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "Відтворити"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "Перемішати"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "Відкрити у переглядачі"
msgid "Play Next"
msgstr "Відтворити наступну"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr "Альбом • %1"
msgid "Add to Playlist"
msgstr "Додати до списку відтворення"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr "Більше"
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "Радіо"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr "Виконавець"
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
@@ -75,22 +60,22 @@ msgstr ""
"Підтримки відтворення відео ще не передбачено. Хочете, щоб було відтворено "
"лише звукову частину «%1»?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "Альбоми"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "Одинарні"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "Пісні"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "Відео"
@@ -105,167 +90,106 @@ msgstr "Гаразд"
msgid "Cancel"
msgstr "Скасувати"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "Улюблені"
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "Показати всі"
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr "Улюблені композиції"
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "Часто слухали"
#: contents/ui/LibraryPage.qml:230
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "played Songs"
msgid "Played Songs"
msgstr "Відтворені композиції"
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
msgid "Back"
msgstr "Назад"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "Відтворення не відбувається"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr "%1%"
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr "Вилучити композицію"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr "Бібліотека"
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "Пошук"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "Відтворені композиції"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr "Зараз відтворюємо"
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr "Додати до черги"
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "Вилучити композицію"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "Відтворення не відбувається"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "Невідомий список композицій"
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "Тут ще немає композицій"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr "Список відтворення"
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr "Попередні пошуки:"
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "Виконавці"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "Списки відтворення"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "Невідомий"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr "Немає відповідних попередніх пошуків"
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr "вилучити з журналу пошуку"
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr "Згорнути бічну панель"
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "Відтворити наступну"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr "Додати до черги"
msgid "Radio"
msgstr "Радіо"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove Favourite"
msgstr "Вилучити з улюблених"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr "Додати до улюблених"
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr "Вилучити із журналу"
#~ msgid "%"
#~ msgstr "%"
#~ msgid "Now Playing"
#~ msgstr "Зараз відтворюємо"
#~ msgid "Queue"
#~ msgstr "Додати до черги"
#~ msgid "Lyrics"
#~ msgstr "Текст"
#~ msgid "Favourite Songs"
#~ msgstr "Улюблені композиції"
#~ msgid "Back"
#~ msgstr "Назад"
#~ msgid "Find music on YouTube Music"
#~ msgstr "Шукати музику на сайті «Музика Youtube»"
#~ msgid "Add to Playlist"
#~ msgstr "Додати до списку відтворення"
#~ msgid "Play next"
#~ msgstr "Відтворити наступну"
msgid "Find music on YouTube Music"
msgstr "Шукати музику на сайті «Музика Youtube»"
#~ msgid "Clear"
#~ msgstr "Спорожнити"
+70 -119
View File
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: kdeorg\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"PO-Revision-Date: 2023-02-07 11:03\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-07-16 05:20\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Language: zh_CN\n"
@@ -27,67 +27,52 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr "[email protected], [email protected]"
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr "播放"
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr "随机播放"
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgstr "在浏览器中打开"
msgid "Play Next"
msgstr "播放下一首"
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgstr ""
msgid "Add to Playlist"
msgstr "添加到播放列表"
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr ""
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr "电台"
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr ""
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
"\"%1\"?"
msgstr "视频播放尚未被支持。您想要只播放“%1”中的音频吗?"
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr "专辑"
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr "单曲"
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr "曲目"
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr "视频"
@@ -102,137 +87,103 @@ msgstr "确定"
msgid "Cancel"
msgstr "取消"
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr "收藏夹"
msgstr ""
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr "显示全部"
msgstr ""
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr ""
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr "最常播放"
#: contents/ui/LibraryPage.qml:230
#, kde-format
msgid "played Songs"
msgstr ""
#: contents/ui/main.qml:108
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr "没有正在播放的媒体"
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgid "Played Songs"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#: contents/ui/main.qml:39
#, kde-format
msgid "Remove Track"
msgstr "移除曲目"
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgid "Back"
msgstr ""
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr "搜索"
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgstr "已播放歌曲"
msgid "AudioTube"
msgstr "AudioTube"
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr "移除曲目"
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr "没有正在播放的媒体"
#: contents/ui/PlaybackHistory.qml:15
#, kde-format
msgid "Unknown list of songs"
msgstr "未知歌曲列表"
msgstr ""
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr "此处无歌曲"
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr ""
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr ""
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr "艺人"
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr "播放列表"
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr "未知"
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgstr ""
#: contents/ui/SearchWithDropdown.qml:321
#, kde-format
msgid "remove from search history"
msgstr ""
#: contents/ui/Sidebar.qml:179
#, kde-format
msgid "Collapse Sidebar"
msgstr ""
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgid "Play next"
msgstr "播放下一首"
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "Add to queue"
msgstr ""
msgid "Radio"
msgstr "电台"
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Remove Favourite"
msgstr ""
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr ""
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgstr ""
msgid "Find music on YouTube Music"
msgstr "查找 YouTube Music 中的音乐"
+61 -110
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: audiotube\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2023-02-08 01:02+0000\n"
"POT-Creation-Date: 2022-07-12 00:48+0000\n"
"PO-Revision-Date: 2022-05-30 00:47+0000\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -28,67 +28,52 @@ msgctxt "EMAIL OF TRANSLATORS"
msgid "Your emails"
msgstr ""
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
#: contents/ui/AlbumPage.qml:19 contents/ui/PlaylistPage.qml:19
#, kde-format
msgid "Play"
msgstr ""
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
#: contents/ui/PlaylistPage.qml:33
#: contents/ui/AlbumPage.qml:26 contents/ui/PlaylistPage.qml:26
#, kde-format
msgid "Shuffle"
msgstr ""
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
#: contents/ui/AlbumPage.qml:68 contents/ui/ArtistPage.qml:101
#: contents/ui/PlaybackHistory.qml:74 contents/ui/PlaylistPage.qml:67
#, kde-format
msgid "Open in Browser"
msgid "Play Next"
msgstr ""
#: contents/ui/AlbumPage.qml:44
#: contents/ui/AlbumPage.qml:73 contents/ui/ArtistPage.qml:107
#: contents/ui/PlaybackHistory.qml:79 contents/ui/PlaylistPage.qml:72
#: contents/ui/SearchPage.qml:123
#, kde-format
msgid "Album • %1"
msgid "Add to Playlist"
msgstr ""
#: contents/ui/AlbumPage.qml:88 contents/ui/ArtistPage.qml:126
#: contents/ui/PlaybackHistory.qml:80 contents/ui/PlaylistPage.qml:91
#: contents/ui/SearchPage.qml:130
#, kde-format
msgid "More"
msgstr ""
#: contents/ui/ArtistPage.qml:27
#, kde-format
msgid "Radio"
msgstr ""
#: contents/ui/ArtistPage.qml:46
#, kde-format
msgid "Artist"
msgstr ""
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
#, kde-format
msgid ""
"Video playback is not supported yet. Do you want to play only the audio of "
"\"%1\"?"
msgstr ""
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
#, kde-format
msgid "Albums"
msgstr ""
#: contents/ui/ArtistPage.qml:87
#: contents/ui/ArtistPage.qml:57
#, kde-format
msgid "Singles"
msgstr ""
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
#, kde-format
msgid "Songs"
msgstr ""
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
#, kde-format
msgid "Videos"
msgstr ""
@@ -103,64 +88,65 @@ msgstr ""
msgid "Cancel"
msgstr ""
#: contents/ui/LibraryPage.qml:28 contents/ui/LibraryPage.qml:44
#: contents/ui/NavigationBar.qml:46 contents/ui/NavigationBar.qml:51
#: contents/ui/Sidebar.qml:124 contents/ui/Sidebar.qml:131
#: contents/ui/LibraryPage.qml:27
#, kde-format
msgid "Favourites"
msgstr ""
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
#: contents/ui/LibraryPage.qml:37 contents/ui/LibraryPage.qml:108
#, kde-format
msgid "Show All"
msgstr ""
#: contents/ui/LibraryPage.qml:214
#: contents/ui/LibraryPage.qml:42
#, kde-format
msgid "Favourite Songs"
msgstr ""
#: contents/ui/LibraryPage.qml:98
#, kde-format
msgid "Most played"
msgstr ""
#: contents/ui/LibraryPage.qml:230
#: contents/ui/LibraryPage.qml:113
#, kde-format
msgid "played Songs"
msgid "Played Songs"
msgstr ""
#: contents/ui/main.qml:108
#: contents/ui/main.qml:39
#, kde-format
msgid "AudioTube"
msgid "Back"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:194
#: contents/ui/MinimizedPlayerControls.qml:90
#, kde-format
msgid "No media playing"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:605
#, kde-format
msgid "%1%"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:810
#: contents/ui/MaximizedPlayerPage.qml:911
#, kde-format
msgid "Remove Track"
msgstr ""
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
#, kde-format
msgid "Library"
msgstr ""
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
#: contents/ui/main.qml:73 contents/ui/SearchPage.qml:150
#, kde-format
msgid "Search"
msgstr ""
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
#: contents/ui/main.qml:85
#, kde-format
msgid "Played Songs"
msgid "AudioTube"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:92
#, kde-format
msgid "Now Playing"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:117
#, kde-format
msgid "Queue"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:222
#, kde-format
msgid "Remove Track"
msgstr ""
#: contents/ui/MaximizedPlayerPage.qml:242
#: contents/ui/MinimizedPlayerControls.qml:96
#, kde-format
msgid "No media playing"
msgstr ""
#: contents/ui/PlaybackHistory.qml:15
@@ -168,72 +154,37 @@ msgstr ""
msgid "Unknown list of songs"
msgstr ""
#: contents/ui/PlaybackHistory.qml:27
#: contents/ui/PlaybackHistory.qml:25
#, kde-format
msgid "No songs here yet"
msgstr ""
#: contents/ui/PlaylistPage.qml:42
#, kde-format
msgid "Playlist"
msgstr ""
#: contents/ui/SearchPage.qml:16
#, kde-format
msgid "Previous Searches:"
msgstr ""
#: contents/ui/SearchPage.qml:28
#: contents/ui/SearchPage.qml:27
#, kde-format
msgid "Artists"
msgstr ""
#: contents/ui/SearchPage.qml:30
#: contents/ui/SearchPage.qml:29
#, kde-format
msgid "Playlists"
msgstr ""
#: contents/ui/SearchPage.qml:37
#: contents/ui/SearchPage.qml:36
#, kde-format
msgid "Unknown"
msgstr ""
#: contents/ui/SearchWithDropdown.qml:286
#: contents/ui/SearchPage.qml:117
#, kde-format
msgid "No matching previous searches"
msgid "Play next"
msgstr ""
#: contents/ui/SearchWithDropdown.qml:321
#: contents/ui/SearchPage.qml:129
#, kde-format
msgid "remove from search history"
msgid "Radio"
msgstr ""
#: contents/ui/Sidebar.qml:179
#: contents/ui/SearchPage.qml:147
#, kde-format
msgid "Collapse Sidebar"
msgstr ""
#: contents/ui/SongMenu.qml:116 contents/ui/SongMenu.qml:175
#, kde-format
msgid "Play Next"
msgstr ""
#: contents/ui/SongMenu.qml:125 contents/ui/SongMenu.qml:181
#, kde-format
msgid "Add to queue"
msgstr ""
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Remove Favourite"
msgstr ""
#: contents/ui/SongMenu.qml:135 contents/ui/SongMenu.qml:188
#, kde-format
msgid "Add Favourite"
msgstr ""
#: contents/ui/SongMenu.qml:151 contents/ui/SongMenu.qml:203
#, kde-format
msgid "Remove from History"
msgid "Find music on YouTube Music"
msgstr ""
+1 -1
View File
@@ -3,5 +3,5 @@
#
# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
ytmusicapi==0.25.0
ytmusicapi==0.22.0
yt-dlp
+9 -10
View File
@@ -16,9 +16,10 @@ add_library(asyncdatabase STATIC
)
target_include_directories(asyncdatabase PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(asyncdatabase PUBLIC Qt::Sql)
target_link_libraries(asyncdatabase PUBLIC Qt5::Sql)
add_subdirectory(example)
add_subdirectory(mpris2)
add_executable(audiotube
main.cpp
@@ -36,23 +37,21 @@ add_executable(audiotube
multiiterableview.h
library.cpp
resources.qrc
blur.cpp
)
target_link_libraries(audiotube
Qt::Core
Qt::Gui
Qt::Qml
Qt::Quick
Qt::QuickControls2
Qt::Svg
Qt::Widgets
Qt5::Core
Qt5::Gui
Qt5::Qml
Qt5::Quick
Qt5::QuickControls2
Qt5::Svg
KF5::I18n
KF5::CoreAddons
KF5::Crash
KF5::WindowSystem
ytm
asyncdatabase
mpris2
)
target_compile_definitions(audiotube PRIVATE -DQT_NO_KEYWORDS -DQT_NO_URL_CAST_FROM_STRING)
+2 -25
View File
@@ -3,9 +3,8 @@
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
#include "albummodel.h"
#include "playlistutils.h"
#include <QStringBuilder>
#include <QDebug>
AlbumModel::AlbumModel(QObject *parent)
: AbstractYTMusicModel(parent)
@@ -22,7 +21,6 @@ AlbumModel::AlbumModel(QObject *parent)
std::sort(m_album.thumbnails.begin(), m_album.thumbnails.end());
Q_EMIT titleChanged();
Q_EMIT artistsChanged();
Q_EMIT thumbnailUrlChanged();
Q_EMIT playlistIdChanged();
});
@@ -47,14 +45,6 @@ QVariant AlbumModel::data(const QModelIndex &index, int role) const
return QString::fromStdString(m_album.tracks[index.row()].video_id.value_or(std::string()));
case Artists:
return QVariant::fromValue(m_album.tracks[index.row()].artists);
case ThumbnailUrl:
if (!m_album.thumbnails.empty()) {
return QString::fromStdString(m_album.thumbnails.front().url);
} else {
return {};
}
case ArtistsDisplayString:
return PlaylistUtils::artistsToString(m_album.tracks[index.row()].artists);
}
Q_UNREACHABLE();
@@ -67,9 +57,7 @@ QHash<int, QByteArray> AlbumModel::roleNames() const
return {
{Title, "title"},
{VideoId, "videoId"},
{Artists, "artists"},
{ThumbnailUrl, "thumbnailUrl"},
{ArtistsDisplayString, "artistsDisplayString"}
{Artists, "artists"}
};
}
@@ -89,12 +77,6 @@ QString AlbumModel::title() const
return QString::fromStdString(m_album.title);
}
QString AlbumModel::artists() const
{
return PlaylistUtils::artistsToString(m_album.artists);
}
QUrl AlbumModel::thumbnailUrl() const
{
if (m_album.thumbnails.empty()) {
@@ -108,8 +90,3 @@ QString AlbumModel::playlistId() const
{
return QString::fromStdString(m_album.audio_playlist_id);
}
QUrl AlbumModel::webUrl() const
{
return QUrl(YTMUSIC_WEB_BASE_URL % "/playlist?list=" % QString::fromStdString(m_album.audio_playlist_id));
}
+1 -10
View File
@@ -16,18 +16,14 @@ class AlbumModel : public AbstractYTMusicModel
Q_PROPERTY(QString browseId READ browseId WRITE setBrowseId NOTIFY browseIdChanged REQUIRED)
Q_PROPERTY(QString title READ title NOTIFY titleChanged)
Q_PROPERTY(QString artists READ artists NOTIFY artistsChanged)
Q_PROPERTY(QUrl thumbnailUrl READ thumbnailUrl NOTIFY thumbnailUrlChanged)
Q_PROPERTY(QString playlistId READ playlistId NOTIFY playlistIdChanged)
Q_PROPERTY(QUrl webUrl READ webUrl NOTIFY webUrlChanged)
public:
enum Role {
Title = Qt::UserRole + 1,
VideoId,
Artists,
ThumbnailUrl,
ArtistsDisplayString
Artists
};
explicit AlbumModel(QObject *parent = nullptr);
@@ -43,17 +39,12 @@ public:
QString title() const;
Q_SIGNAL void titleChanged();
QString artists() const;
Q_SIGNAL void artistsChanged();
QUrl thumbnailUrl() const;
Q_SIGNAL void thumbnailUrlChanged();
QString playlistId() const;
Q_SIGNAL void playlistIdChanged();
QUrl webUrl() const;
Q_SIGNAL void webUrlChanged();
private:
QString m_browseId;
+1 -28
View File
@@ -4,8 +4,6 @@
#include "artistmodel.h"
#include <QStringBuilder>
#include <asyncytmusic.h>
ArtistModel::ArtistModel(QObject *parent)
@@ -28,21 +26,9 @@ ArtistModel::ArtistModel(QObject *parent)
std::sort(m_artist.thumbnails.begin(), m_artist.thumbnails.end());
albums = m_artist.albums ? m_artist.albums->results : std::vector<artist::Artist::Album>();
for (auto &album : albums) {
std::sort(album.thumbnails.begin(), album.thumbnails.end());
}
singles = m_artist.singles ? m_artist.singles->results : std::vector<artist::Artist::Single>();
for (auto &single : singles) {
std::sort(single.thumbnails.begin(), single.thumbnails.end());
}
songs = m_artist.songs ? m_artist.songs->results : std::vector<artist::Artist::Song>();
for (auto &song : songs) {
std::sort(song.thumbnails.begin(), song.thumbnails.end());
}
videos = m_artist.videos ? m_artist.videos->results : std::vector<artist::Artist::Video>();
for (auto &video : videos) {
std::sort(video.thumbnails.begin(), video.thumbnails.end());
}
// std::span can't know if the data pointer underneath it was changed, so re-create
m_view = MultiIterableView(albums, singles, songs, videos);
@@ -117,13 +103,6 @@ QVariant ArtistModel::data(const QModelIndex &index, int role) const
Q_UNREACHABLE();
}, m_view[index.row()]);
case ThumbnailUrl:
return std::visit([&](auto&& item) {
if (!item.thumbnails.empty()) {
return QString::fromStdString(item.thumbnails.front().url);
}
return QString();
}, m_view[index.row()]);
}
Q_UNREACHABLE();
@@ -137,8 +116,7 @@ QHash<int, QByteArray> ArtistModel::roleNames() const
{Title, "title"},
{Type, "type"},
{Artists, "artists"},
{VideoId, "videoId"},
{ThumbnailUrl, "thumbnailUrl"}
{VideoId, "videoId"}
};
}
@@ -167,11 +145,6 @@ QUrl ArtistModel::thumbnailUrl() const
return QUrl(QString::fromStdString(m_artist.thumbnails.back().url));
}
QUrl ArtistModel::webUrl() const
{
return QUrl(YTMUSIC_WEB_BASE_URL % u"channel/" % QString::fromStdString(m_artist.channel_id));
}
void ArtistModel::triggerItem(int row)
{
std::visit([&](auto&& item) {
+1 -6
View File
@@ -23,7 +23,6 @@ class ArtistModel : public AbstractYTMusicModel
Q_PROPERTY(QString title READ title NOTIFY titleChanged)
Q_PROPERTY(QUrl thumbnailUrl READ thumbnailUrl NOTIFY thumbnailUrlChanged)
Q_PROPERTY(QUrl webUrl READ webUrl NOTIFY webUrlChanged)
public:
enum Type {
@@ -38,8 +37,7 @@ public:
Title,
Type,
Artists,
VideoId,
ThumbnailUrl
VideoId
};
explicit ArtistModel(QObject *parent = nullptr);
@@ -58,9 +56,6 @@ public:
QUrl thumbnailUrl() const;
Q_SIGNAL void thumbnailUrlChanged();
QUrl webUrl() const;
Q_SIGNAL void webUrlChanged();
Q_INVOKABLE void triggerItem(int row);
Q_SIGNAL void openAlbum(const QString &browseId);
-9
View File
@@ -139,15 +139,6 @@ QFuture<watch::Playlist> AsyncYTMusic::fetchWatchPlaylist(const std::optional<QS
});
}
QFuture<Lyrics> AsyncYTMusic::fetchLyrics(const QString &browseId)
{
return invokeAndCatchOnThread([=, this]() {
return m_ytm->get_lyrics(
browseId.toStdString()
);
});
}
YTMusicThread &YTMusicThread::instance()
{
static YTMusicThread thread;
+1 -7
View File
@@ -13,8 +13,6 @@
#include <ytmusic.h>
constexpr QStringView YTMUSIC_WEB_BASE_URL = u"https://music.youtube.com/";
Q_DECLARE_METATYPE(std::vector<artist::Artist::Album>);
Q_DECLARE_METATYPE(std::vector<search::SearchResultItem>)
Q_DECLARE_METATYPE(artist::Artist)
@@ -56,19 +54,17 @@ template <typename T, typename QObjectDerivedType, typename Function>
void connectFuture(const QFuture<T> &future, QObjectDerivedType *self, const Function &fun) {
auto watcher = std::make_shared<QFutureWatcher<T>>();
watcher->setFuture(future);
QObject::connect(watcher.get(), &QFutureWatcherBase::finished, self, [self, watcher, fun, future]() {
QObject::connect(watcher.get(), &QFutureWatcherBase::finished, self, [self, watcher, fun, future] {
if constexpr (std::is_same_v<void, T>) {
if constexpr (std::is_member_function_pointer_v<Function>) {
(self->*fun)();
} else {
Q_UNUSED(self);
fun();
}
} else if (future.resultCount() > 0) {
if constexpr (std::is_member_function_pointer_v<Function>) {
(self->*fun)(watcher->result());
} else {
Q_UNUSED(self);
fun(watcher->result());
}
}
@@ -121,8 +117,6 @@ public:
QFuture<watch::Playlist> fetchWatchPlaylist(const std::optional<QString> &videoId = std::nullopt ,
const std::optional<QString> &playlistId = std::nullopt);
QFuture<Lyrics> fetchLyrics(const QString &browseId);
Q_SIGNAL void errorOccurred(const QString &error);
protected:
-32
View File
@@ -1,32 +0,0 @@
/*
* SPDX-FileCopyrightText: 2020-2021 Devin Lin <[email protected]>
*
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
*/
#include "blur.h"
#include <KWindowEffects>
#include <QQuickWindow>
#include <QQuickItem>
Blur::Blur(QObject *parent): QObject(parent)
{
}
void Blur::setBlur(QQuickItem *item, bool blur)
{
auto setWindows = [item, blur]() {
auto reg = QRect(QPoint(0, 0), item->window()->size());
KWindowEffects::enableBackgroundContrast(item->window(), blur, 1, 1, 1, reg);
KWindowEffects::enableBlurBehind(item->window(), blur, reg);
};
disconnect(item->window(), &QQuickWindow::heightChanged, this, nullptr);
disconnect(item->window(), &QQuickWindow::widthChanged, this, nullptr);
connect(item->window(), &QQuickWindow::heightChanged, this, setWindows);
connect(item->window(), &QQuickWindow::widthChanged, this, setWindows);
setWindows();
}
-20
View File
@@ -1,20 +0,0 @@
/*
* SPDX-FileCopyrightText: 2020-2021 Devin Lin <[email protected]>
*
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
*/
#pragma once
#include <QObject>
class QQuickItem;
class Blur : public QObject
{
Q_OBJECT
public:
Blur(QObject *parent = 0);
Q_INVOKABLE void setBlur(QQuickItem *item, bool blur);
};
+32 -47
View File
@@ -13,66 +13,46 @@ Kirigami.ScrollablePage {
property alias browseId: albumModel.browseId
title: albumModel.title
ListView {
id: songList
header: ListHeader {
visibleActions: [
Kirigami.Action {
icon.name: "media-playback-start"
text: i18n("Play")
onTriggered: {
applicationWindow().playPlaylist(albumModel.playlistId)
}
},
Kirigami.Action {
icon.name: "media-playlist-shuffle"
text: i18n("Shuffle")
onTriggered: {
applicationWindow().playShufflePlaylist(albumModel.playlistId)
}
}
]
overflowActions: [
Kirigami.Action {
text: i18n("Open in Browser")
icon.name: "internet-services"
onTriggered: Qt.openUrlExternally(albumModel.webUrl)
}
]
title: albumModel.title
imageSourceURL: albumModel.thumbnailUrl
subtitle: i18n("Album • %1" , albumModel.artists)
width: songList.width
actions {
main: Kirigami.Action {
icon.name: "media-playback-start"
text: i18n("Play")
onTriggered: {
applicationWindow().playPlaylist(albumModel.playlistId)
}
}
right: Kirigami.Action {
icon.name: "media-playlist-shuffle"
text: i18n("Shuffle")
onTriggered: {
applicationWindow().playShufflePlaylist(albumModel.playlistId)
}
}
}
ListView {
header: Kirigami.ItemViewHeader {
backgroundImage.source: albumModel.thumbnailUrl
title: albumModel.title
}
reuseItems: true
model: AlbumModel {
id: albumModel
}
SongMenu {
id: menu
}
delegate: Kirigami.SwipeListItem {
id: delegateItem
alwaysVisibleActions:true
required property string title
required property string videoId
required property var artists
required property string thumbnailUrl
required property string artistsDisplayString
required property int index
RowLayout {
Layout.fillHeight: true
Controls.Label {
text: (index + 1)
font.bold: true
leftPadding: 5
color: Kirigami.Theme.disabledTextColor
Layout.preferredWidth: 30
Kirigami.Icon {
Layout.fillHeight: true
source: "emblem-music-symbolic"
}
Controls.Label {
@@ -84,13 +64,18 @@ Kirigami.ScrollablePage {
actions: [
Kirigami.Action {
icon.name: "view-more-horizontal-symbolic"
text: i18n("More")
onTriggered: menu.openForSong(delegateItem.videoId, delegateItem.title, delegateItem.artists, delegateItem.artistsDisplayString)
icon.name: "go-next"
text: i18n("Play Next")
onTriggered: UserPlaylistModel.playNext(delegateItem.videoId, delegateItem.title, delegateItem.artists)
},
Kirigami.Action {
icon.name: "media-playlist-append"
text: i18n("Add to Playlist")
onTriggered: UserPlaylistModel.append(delegateItem.videoId, delegateItem.title, delegateItem.artists)
}
]
onClicked: play(delegateItem.videoId)
onClicked: play(videoId)
}
Controls.BusyIndicator {
+27 -46
View File
@@ -11,42 +11,13 @@ import org.kde.ytmusic 1.0
Kirigami.ScrollablePage {
property alias channelId: artistModel.channelId
property string radioId
property string shuffleId
title: artistModel.title
SongMenu {
id: menu
}
ListView {
id: songList
header: ListHeader {
visibleActions: [
Kirigami.Action {
text: i18n("Radio")
icon.name: "radio"
onTriggered: playPlaylist(radioId)
},
Kirigami.Action {
text: i18n("Shuffle")
icon.name: "media-playlist-shuffle"
onTriggered: playPlaylist(shuffleId)
}
]
overflowActions: [
Kirigami.Action {
text: i18n("Open in Browser")
icon.name: "internet-services"
onTriggered: Qt.openUrlExternally(artistModel.webUrl)
}
]
header: Kirigami.ItemViewHeader {
backgroundImage.source: artistModel.thumbnailUrl
title: artistModel.title
imageSourceURL: artistModel.thumbnailUrl
subtitle: i18n("Artist")
rounded: true
width: songList.width
}
reuseItems: true
@@ -67,16 +38,15 @@ Kirigami.ScrollablePage {
onOpenVideo: (videoId, title) => {
videoPlayMessage.text = i18n("Video playback is not supported yet. Do you want to play only the audio of \"%1\"?", title)
videoPlayMessage.visible = true
videoPlayMessage.okAction = () => {
videoPlayMessage.okAction = function() {
play(videoId)
videoPlayMessage.visible = false
}
videoPlayMessage.cancelAction = () => {
videoPlayMessage.cancelAction = function() {
videoPlayMessage.visible = false
}
}
}
section.property: "type"
section.delegate: Kirigami.ListSectionHeader {
text: {
@@ -92,25 +62,30 @@ Kirigami.ScrollablePage {
}
}
}
delegate: Kirigami.SwipeListItem {
id: delegateItem
alwaysVisibleActions:true
required property string title
required property int type
required property int index
required property var artists
required property string videoId
required property string thumbnailUrl
RowLayout {
Layout.fillHeight: true
RoundedImage {
source: delegateItem.thumbnailUrl
height: 35
width: height
radius:5
Kirigami.Icon {
Layout.fillHeight: true
source: {
switch (type) {
case ArtistModel.Album:
return "media-album-cover"
case ArtistModel.Single:
case ArtistModel.Song:
return "emblem-music-symbolic"
case ArtistModel.Video:
return "emblem-videos-symbolic"
}
}
}
Controls.Label {
@@ -122,10 +97,16 @@ Kirigami.ScrollablePage {
actions: [
Kirigami.Action {
icon.name: "view-more-horizontal-symbolic"
text: i18n("More")
icon.name: "go-next"
text: i18n("Play Next")
visible: type === ArtistModel.Song
onTriggered: menu.openForSong(delegateItem.videoId, delegateItem.title, delegateItem.artists, artistModel.title)
onTriggered: UserPlaylistModel.playNext(delegateItem.videoId, delegateItem.title, delegateItem.artists)
},
Kirigami.Action {
icon.name: "media-playlist-append"
text: i18n("Add to Playlist")
visible: type === ArtistModel.Song
onTriggered: UserPlaylistModel.append(delegateItem.videoId, delegateItem.title, delegateItem.artists)
}
]
+50 -332
View File
@@ -10,24 +10,22 @@ import org.kde.kirigami 2.14 as Kirigami
import org.kde.ytmusic 1.0
Kirigami.ScrollablePage {
objectName: "libraryPage"
Kirigami.Theme.colorSet: Kirigami.Theme.View
title: "AudioTube"
rightPadding: 0
leftPadding: 0
SongMenu {
id: menu
globalToolBarStyle: Kirigami.ApplicationHeaderStyle.None
// so that there is still a separator, since the header style is none
Kirigami.Separator {
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
}
ColumnLayout {
RowLayout {
Layout.fillWidth: true
Kirigami.Heading {
text: i18n("Favourites")
Layout.alignment: Qt.AlignLeft
leftPadding: 15
}
// Spacer
@@ -39,210 +37,66 @@ Kirigami.ScrollablePage {
text: i18n("Show All")
Layout.alignment: Qt.AlignRight
icon.name: "arrow-right"
onClicked: {pageStack.push("qrc:/PlaybackHistory.qml", {
"dataModel": Library.favourites,
"title": i18n("Favourites"),
"objectName": "favourites"
})}
onClicked: pageStack.layers.push("qrc:/PlaybackHistory.qml", {
"dataModel": Library.favourites,
"title": i18n("Favourite Songs")
})
}
}
Kirigami.Icon {
id: favouritesPlaceholder
implicitWidth: Kirigami.Units.gridUnit * 19
implicitHeight: Kirigami.Units.gridUnit * 19
visible: favouriteRepeater.count === 0
opacity: 0.4
isMask: true
source: "qrc:/resources/favourites_placeholder.svg"
color: Kirigami.Theme.hoverColor
Layout.margins: Kirigami.Units.gridUnit * 2
Layout.alignment: Qt.AlignHCenter
Layout.fillWidth: true
}
Controls.Label {
visible: favouriteRepeater.count === 0
color: Kirigami.Theme.disabledTextColor
text: i18n("No Favourites Yet")
font {
bold: true
pointSize: 15
}
anchors.centerIn: favouritesPlaceholder
}
Controls.ScrollView {
leftPadding: 15
rightPadding: 25
Layout.fillWidth: true
RowLayout {
spacing: 20
Repeater {
id: favouriteRepeater
Layout.fillWidth: true
model: Library.favourites
delegate: ColumnLayout {
id: delegateItem
required property string title
required property var artists
required property string artistsDisplayString
required property string artists
required property string videoId
required property int index
Layout.fillWidth: false
Layout.maximumWidth: 200
Kirigami.Card {
id: card
Layout.preferredHeight: 200
Kirigami.ShadowedRectangle {
color: Kirigami.Theme.backgroundColor
id: favCover
MouseArea {
id: favArea
anchors.fill: parent
onClicked: play(delegateItem.videoId)
hoverEnabled: !Kirigami.Settings.hasTransientTouchInput
onEntered: {
if (!Kirigami.Settings.hasTransientTouchInput){
favSelected.visible = true
favTitle.color = Kirigami.Theme.hoverColor
favSubtitle.color = Kirigami.Theme.hoverColor
favTitle.font.bold = true
playAnimationPosition.running = true
playAnimationOpacity.running = true
}
onClicked: play(delegateItem.videoId)
}
onExited:{
favSelected.visible = false
favTitle.color = Kirigami.Theme.textColor
favSubtitle.color = Kirigami.Theme.disabledTextColor
favTitle.font.bold = false
}
}
Layout.margins: 5
width: 200
height: 200
radius: 10
shadow.size: 15
shadow.xOffset: 5
shadow.yOffset: 5
shadow.color: Qt.rgba(0, 0, 0, 0.2)
ThumbnailSource {
id: thumbnailSource
videoId: delegateItem.videoId
}
RoundedImage {
header: Image {
sourceSize: "200x200"
source: thumbnailSource.cachedPath
height: 200
width: height
radius: 10
fillMode: Image.PreserveAspectCrop
asynchronous: true
}
Rectangle {
id: favSelected
Rectangle {
anchors.fill: parent
color: Kirigami.Theme.hoverColor
radius: 10
opacity: 0.2
actions: [
Kirigami.Action {
icon.name: "delete"
onTriggered: Library.removeFavourite(delegateItem.videoId)
}
Item{
height: parent.height
width: parent.width
NumberAnimation on opacity{
id: playAnimationOpacity
easing.type: Easing.OutCubic
running: false
from: 0; to: 1
}
NumberAnimation on y {
id: playAnimationPosition
easing.type: Easing.OutCubic
running: false
from: 20; to: 0
duration: 100
}
Rectangle {
height: 45
width: 45
radius: 50
color: Kirigami.Theme.hoverColor
opacity: 0.8
anchors.centerIn: parent
}
Kirigami.Icon {
x: 100 - 0.43 * height
y: 100 - 0.5 * height
color: "white"
source: "media-playback-start"
}
}
visible: false
anchors.fill: parent
radius: 9
border.color: Kirigami.Theme.hoverColor
border.width: 2
color: "transparent"
}
]
}
RowLayout {
ColumnLayout {
Controls.Label {
id:favTitle
text: delegateItem.title
Layout.maximumWidth: 200
Layout.fillWidth: true
leftPadding: 5
elide: Text.ElideRight
}
Controls.Label {
id: favSubtitle
Layout.fillWidth: true
Layout.maximumWidth: 200
leftPadding: 5
color: Kirigami.Theme.disabledTextColor
text: delegateItem.artistsDisplayString
elide: Text.ElideRight
}
}
Controls.ToolButton {
Layout.fillHeight: true
icon.name: "view-more-horizontal-symbolic"
onPressed: menu.openForSong(delegateItem.videoId,
delegateItem.title,
delegateItem.artists,
delegateItem.artistsDisplayString)
}
}
Item {
height: 5
Controls.Label {
Layout.maximumWidth: 200
text: delegateItem.title
elide: Qt.ElideRight
}
}
}
}
}
Item {
height: 20
}
RowLayout {
Layout.fillWidth: true
Kirigami.Heading {
text: i18n("Most played")
Layout.alignment: Qt.AlignLeft
leftPadding: 15
}
// Spacer
@@ -254,184 +108,48 @@ Kirigami.ScrollablePage {
text: i18n("Show All")
Layout.alignment: Qt.AlignRight
icon.name: "arrow-right"
onClicked: {pageStack.push("qrc:/PlaybackHistory.qml", {
"dataModel": Library.playbackHistory,
"title": i18n("played Songs"),
"objectName": "history"
})}
onClicked: pageStack.layers.push("qrc:/PlaybackHistory.qml", {
"dataModel": Library.playbackHistory,
"title": i18n("Played Songs")
})
}
}
Kirigami.Icon {
visible: mostPlayedRepeater.count == 0
Layout.margins: 20
isMask: true
opacity:0.4
color: Kirigami.Theme.hoverColor
id:playedPlaceholder
Layout.alignment: Qt.AlignHCenter
Layout.fillWidth: true
implicitWidth: 190
implicitHeight: 190
source: "qrc:/resources/played_placeholder.svg"
}
Controls.Label {
visible: mostPlayedRepeater.count == 0
color: Kirigami.Theme.disabledTextColor
anchors.centerIn:playedPlaceholder
font.bold: true
font.pointSize: 15
text: i18n("No Songs Played Yet")
}
Controls.ScrollView {
leftPadding: 15
rightPadding: 25
Layout.fillWidth: true
RowLayout {
spacing: 20
Repeater {
id: mostPlayedRepeater
Layout.fillWidth: true
model: Library.mostPlayed
delegate: ColumnLayout {
id: mpdelegateItem
required property string title
required property var artists
required property string artistsDisplayString
required property string artists
required property string videoId
Layout.fillWidth: false
Layout.maximumWidth: 200
Kirigami.Card {
id: mpcard
Layout.preferredHeight: 200
Kirigami.ShadowedRectangle {
color: Kirigami.Theme.backgroundColor
id: recCover
MouseArea {
id: recArea
anchors.fill: parent
onClicked: play(mpdelegateItem.videoId)
hoverEnabled: !Kirigami.Settings.hasTransientTouchInput
onEntered: {
if (!Kirigami.Settings.hasTransientTouchInput)
recSelected.visible = true
recTitle.color = Kirigami.Theme.hoverColor
recSubtitle.color = Kirigami.Theme.hoverColor
recTitle.font.bold = true
playAnimationPositionRec.running = true
playAnimationOpacityRec.running = true
}
onExited:{
recSelected.visible = false
recTitle.color = Kirigami.Theme.textColor
recSubtitle.color = Kirigami.Theme.disabledTextColor
recTitle.font.bold = false
}
onClicked: play(mpdelegateItem.videoId)
}
Layout.margins: 5
width: 200
height: 200
radius: 10
shadow.size: 15
shadow.xOffset: 5
shadow.yOffset: 5
shadow.color: Qt.rgba(0, 0, 0, 0.2)
ThumbnailSource {
id: mpthumbnailSource
videoId: mpdelegateItem.videoId
}
RoundedImage {
header: Image {
sourceSize: "200x200"
source: mpthumbnailSource.cachedPath
height: 200
width: height
radius: 10
}
Rectangle {
id: recSelected
Rectangle {
anchors.fill: parent
color: Kirigami.Theme.hoverColor
radius: 10
opacity: 0.2
}
Item{
height: parent.height
width: parent.width
NumberAnimation on opacity{
id: playAnimationOpacityRec
easing.type: Easing.OutCubic
running: false
from: 0; to: 1
}
NumberAnimation on y {
id: playAnimationPositionRec
easing.type: Easing.OutCubic
running: false
from: 20; to: 0
duration: 100
}
Rectangle {
height: 45
width: 45
radius: 50
color: Kirigami.Theme.hoverColor
opacity: 0.8
anchors.centerIn: parent
}
Kirigami.Icon {
x: 100 - 0.43 * height
y: 100 - 0.5 * height
color: "white"
source: "media-playback-start"
}
}
visible: false
anchors.fill: parent
radius: 9
border.color: Kirigami.Theme.hoverColor
border.width: 2
color: "transparent"
fillMode: Image.PreserveAspectCrop
asynchronous: true
}
}
RowLayout {
ColumnLayout {
Controls.Label {
id: recTitle
text: mpdelegateItem.title
Layout.maximumWidth: 200
Layout.fillWidth: true
leftPadding: 5
elide: Text.ElideRight
}
Controls.Label {
id: recSubtitle
Layout.fillWidth: true
Layout.maximumWidth: 200
leftPadding: 5
color: Kirigami.Theme.disabledTextColor
text: mpdelegateItem.artistsDisplayString
elide: Text.ElideRight
}
}
Controls.ToolButton {
Layout.fillHeight: true
icon.name: "view-more-horizontal-symbolic"
onPressed: menu.openForSong(mpdelegateItem.videoId,
mpdelegateItem.title,
mpdelegateItem.artists,
mpdelegateItem.artistsDisplayString)
}
}
Item {
height: 5
Controls.Label {
Layout.maximumWidth: 200
text: mpdelegateItem.title
elide: Qt.ElideRight
}
}
}
-143
View File
@@ -1,143 +0,0 @@
// SPDX-FileCopyrightText: 2022 Mathis Brüchert <[email protected]>
//
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
import QtQuick 2.15
import org.kde.kirigami 2.14 as Kirigami
import QtQuick.Controls 2.14 as Controls
import QtQuick.Layouts 1.3
import QtGraphicalEffects 1.0
import org.kde.ytmusic 1.0
Item {
id:root
required property string imageSourceURL
property bool rounded : false
required property string title
property string subtitle
property list<Kirigami.Action> visibleActions
property list<Kirigami.Action> overflowActions
height: root.width > 500 ? 200 : 400
Item {
anchors.fill: parent
Image {
scale: 1.8
anchors.fill: parent
asynchronous: true
source: imageSourceURL
fillMode: Image.PreserveAspectCrop
sourceSize.width: 512
sourceSize.height: 512
}
layer.enabled: true
layer.effect: HueSaturation {
cached: true
saturation: 1.9
layer.enabled: true
layer.effect: FastBlur {
cached: true
radius: 100
}
}
}
Rectangle {
anchors.fill: parent
gradient: Gradient{
GradientStop { position: -1.0; color: "transparent" }
GradientStop { position: 1.0; color: Kirigami.Theme.backgroundColor }
}
}
GridLayout {
width: parent.width
flow: root.width > 500?GridLayout.LeftToRight:GridLayout.TopToBottom
Kirigami.ShadowedRectangle {
color: Kirigami.Theme.backgroundColor
Layout.margins: 30
width: 150
height: width
radius: rounded ? 100 : 10
shadow.size: 15
shadow.xOffset: 5
shadow.yOffset: 5
shadow.color: Qt.rgba(0, 0, 0, 0.2)
RoundedImage {
source: imageSourceURL
height: parent.height
width: height
radius: rounded ? 100 : 10
}
}
ColumnLayout {
Layout.leftMargin: 30
Layout.fillWidth: true
Controls.Label {
Layout.fillWidth: true
text: title
font.bold: true
font.pixelSize: 22
elide: Qt.ElideRight
}
Controls.Label {
Layout.fillWidth: true
text: subtitle
elide: Qt.ElideRight
}
RowLayout {
visible: root.visibleActions.length>0
Layout.topMargin: 30
Layout.rightMargin: 30
Repeater {
model: root.visibleActions
delegate: Controls.RoundButton{
required property var modelData
Layout.fillWidth: root.width <= 500
leftPadding: 20
rightPadding: 20
icon.name: modelData.icon.name
text:modelData.text
onClicked: modelData.triggered()
}
}
Controls.Menu {
id: overflowMenu
Instantiator {
model: root.overflowActions
onObjectAdded: overflowMenu.insertItem(index, object)
onObjectRemoved: overflowMenu.removeItem(object)
delegate: Controls.MenuItem {
required property var modelData
icon.name: modelData.icon.name
text:modelData.text
onTriggered: modelData.triggered()
}
}
}
Controls.RoundButton {
onClicked: overflowMenu.popup()
visible: root.overflowActions.length > 0
icon.name: "overflow-menu"
}
}
}
}
}
File diff suppressed because it is too large. Load diff
+82 -153
View File
@@ -14,7 +14,6 @@ import org.kde.ytmusic 1.0
Item {
id: root
z: 2000
required property int progressBarHeight
required property int minimizedPlayerContentHeight
@@ -22,12 +21,14 @@ Item {
required property var info // VideoInfoExtractor object
required property var audio // Audio object
readonly property bool isWidescreen: width >= Kirigami.Units.gridUnit * 50
readonly property bool isWidescreen: width >= Kirigami.Units.gridUnit * 40
signal requestOpen()
Rectangle {
id: miniProgressBar
z: 1
visible: !root.isWidescreen
anchors.top: parent.top
anchors.left: parent.left
height: root.progressBarHeight
@@ -36,14 +37,14 @@ Item {
}
RowLayout {
width: !isWidescreen ? root.width - controlButtonBox.width: root.width
anchors.fill: parent
spacing: 0
Rectangle {
Layout.fillHeight: true
Layout.fillWidth: true
Layout.maximumWidth: Kirigami.Units.gridUnit * 20
Layout.preferredWidth: Kirigami.Units.gridUnit * 20
color: Qt.rgba(0, 0, 0, trackClick.containsMouse ? 0.1 : trackClick.pressed ? 0.3 : 0)
RowLayout {
@@ -61,12 +62,19 @@ Item {
Layout.maximumHeight: imageSize
Layout.minimumHeight: imageSize
RoundedImage {
Image {
id: mainIcon
anchors.fill: parent
visible: !loadingIndicator.visible
asynchronous: true
mipmap: true
source: info.thumbnail
radius: 5
sourceSize.width: 512
sourceSize.height: 512
fillMode: Image.PreserveAspectCrop
}
BusyIndicator {
@@ -76,12 +84,10 @@ Item {
Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
Kirigami.Theme.inherit: false
}
}
// track information
ColumnLayout {
Layout.fillWidth: true
Layout.fillHeight: true
@@ -92,7 +98,6 @@ Item {
wrapMode: Text.Wrap
Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
Layout.fillWidth: true
Layout.maximumWidth: Kirigami.Units.gridUnit * 15
horizontalAlignment: Text.AlignLeft
elide: Text.ElideRight
maximumLineCount: 1
@@ -113,16 +118,14 @@ Item {
horizontalAlignment: Text.AlignLeft
elide: Text.ElideRight
maximumLineCount: 1
Layout.maximumWidth: Kirigami.Units.gridUnit * 15
// Hardcoded because the footerbar blur always makes a dark-ish
// background, so we don't want to use a color scheme color that
// might also be dark
color: "white"
}
}
Item{Layout.fillWidth: true}
}
MouseArea {
id: trackClick
anchors.fill: parent
@@ -130,159 +133,85 @@ Item {
onClicked: root.requestOpen()
}
}
}
RowLayout {
visible: root.isWidescreen
Layout.preferredWidth: 0
Layout.fillHeight: true
Layout.fillWidth: true
Layout.leftMargin: Kirigami.Units.largeSpacing
Layout.rightMargin: Kirigami.Units.largeSpacing
spacing: Kirigami.Units.smallSpacing
Label {
Layout.alignment: Qt.AlignVCenter
color: "white"
visible: info.title
text: PlayerUtils.formatTimestamp(audio.position)
}
RowLayout {
id: controlButtonBox
anchors.centerIn: isWidescreen ? parent : null
anchors.right: !isWidescreen ? parent.right : null
anchors.top: parent.top
anchors.bottom: parent.bottom
spacing: 2
Slider {
Layout.alignment: Qt.AlignVCenter
Layout.fillWidth: true
from: 0
to: audio.duration
value: audio.position
enabled: audio.seekable
onMoved: {
console.log("Value:", value);
audio.seek(Math.floor(value));
}
Label {
color: "white"
visible: info.title && root.isWidescreen
text: PlayerUtils.formatTimestamp(audio.position)
Layout.rightMargin: 20
Behavior on value {
NumberAnimation {
duration: 1000
}
}
}
Label {
Layout.alignment: Qt.AlignVCenter
color: "white"
visible: info.title
text: PlayerUtils.formatTimestamp(audio.duration)
}
}
Button {
id: skipBackwardButton
implicitHeight: 40
implicitWidth: 40
Layout.fillHeight: !isWidescreen
Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
Kirigami.Theme.inherit: false
enabled: UserPlaylistModel.canSkipBack
onClicked: UserPlaylistModel.previous()
contentItem: Item {
Kirigami.Icon {
anchors.centerIn: parent
source:"media-skip-backward"
color: "white"
width: Kirigami.Units.gridUnit
height: Kirigami.Units.gridUnit
}
}
background: Kirigami.ShadowedRectangle {
corners.topLeftRadius: isWidescreen ? 7 : 0
corners.bottomLeftRadius: isWidescreen ? 7 : 0
color: if (isWidescreen) {
if (parent.down) {
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.3)
} else if(parent.hovered) {
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.7)
} else {
Qt.rgba(1, 1, 1, 0.2)
}
} else {
if (parent.down) {
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.3)
} else if (parent.hovered){
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.7)
} else {
"transparent"
}
}
}
}
Button {
ToolButton {
id: playPauseButton
implicitHeight: 40
implicitWidth: 60
Layout.fillHeight: !isWidescreen
Layout.preferredHeight: Kirigami.Units.gridUnit * 3
Layout.maximumWidth: height
Layout.preferredWidth: height
enabled: info.audioUrl != ""
onClicked: audio.playbackState === Audio.PlayingState ? audio.pause() : audio.play()
contentItem: Item {
Kirigami.Icon {
anchors.centerIn:parent
source: audio.playbackState === Audio.PlayingState ? "media-playback-pause" : "media-playback-start"
color: "white"
width: Kirigami.Units.gridUnit
height: Kirigami.Units.gridUnit
}
}
background: Kirigami.ShadowedRectangle {
color: if (isWidescreen) {
if (parent.down) {
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.3)
} else if (parent.hovered) {
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.7)
} else {
Qt.rgba(1, 1, 1, 0.2)
}
} else {
if (parent.down) {
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.3)
} else if (parent.hovered) {
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.7)
} else {
"transparent"
}
}
}
}
Button {
id: skipForwardButton
implicitHeight: 40
implicitWidth: 40
Layout.fillHeight: !isWidescreen
Layout.rightMargin: isWidescreen ? 0 : 10
Layout.alignment: !Qt.AlignVCenter
icon.name: audio.playbackState === Audio.PlayingState ? "media-playback-pause" : "media-playback-start"
icon.width: Kirigami.Units.gridUnit
icon.height: Kirigami.Units.gridUnit
icon.color: "white"
Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
Kirigami.Theme.inherit: false
}
ToolButton {
id: skipForwardButton
Layout.rightMargin: Math.floor(Kirigami.Units.smallSpacing / 2)
Layout.preferredHeight: Kirigami.Units.gridUnit * 3
Layout.maximumWidth: height
Layout.preferredWidth: height
enabled: UserPlaylistModel.canSkip
onClicked: UserPlaylistModel.next()
contentItem: Item {
Kirigami.Icon {
anchors.centerIn: parent
source:"media-skip-forward"
color: "white"
width: Kirigami.Units.gridUnit
height: Kirigami.Units.gridUnit
}
}
background: Kirigami.ShadowedRectangle {
corners.topRightRadius: isWidescreen ? 7 : 0
corners.bottomRightRadius: isWidescreen ? 7 : 0
color: if (isWidescreen) {
if (parent.down) {
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.3)
} else if (parent.hovered) {
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.7)
} else {
Qt.rgba(1, 1, 1, 0.2)
}
} else {
if (parent.down) {
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.3)
} else if(parent.hovered) {
Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.hoverColor, "transparent", 0.7)
} else {
"transparent"
}
}
}
}
Label {
color: "white"
visible: info.title && root.isWidescreen
text: PlayerUtils.formatTimestamp(audio.duration)
Layout.leftMargin: 20
icon.name: "media-skip-forward"
icon.width: Kirigami.Units.gridUnit
icon.height: Kirigami.Units.gridUnit
icon.color: "white"
Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
Kirigami.Theme.inherit: false
}
}
}
-70
View File
@@ -1,70 +0,0 @@
// SPDX-FileCopyrightText: 2022 Mathis Brüchert <[email protected]>
//
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
import QtQuick 2.12
import QtQuick.Controls 2.4
import QtQuick.Layouts 1.2
import org.kde.kirigami 2.20 as Kirigami
import org.kde.ytmusic 1.0
Kirigami.NavigationTabBar {
id: root
anchors.bottom: parent.bottom
width:parent.width
backgroundColor: "transparent"
foregroundColor: "white"
highlightForegroundColor: "white"
shadow: false
actions: [
Kirigami.Action {
iconName: "file-library-symbolic"
text: i18n("Library")
checked: pageStack.currentItem && pageStack.currentItem.objectName == "libraryPage"
onTriggered: {
pageStack.replace("qrc:/LibraryPage.qml")
applicationWindow().showSearch = false
}
},
Kirigami.Action {
iconName: "search"
text: i18n("Search")
checked: pageStack.currentItem && pageStack.currentItem.objectName == "searchPage"
onTriggered: {
pageStack.replace("qrc:/SearchHistoryPage.qml",)
applicationWindow().showSearch = true
applicationWindow().searchField.forceActiveFocus();
}
},
Kirigami.Action {
iconName: "non-starred-symbolic"
text: i18n("Favourites")
checked: pageStack.currentItem && pageStack.currentItem.objectName == "favourites"
onTriggered: {
pageStack.replace("qrc:/PlaybackHistory.qml", {
"dataModel": Library.favourites,
"title": i18n("Favourites"),
"objectName": "favourites"})
applicationWindow().showSearch = false
}
},
Kirigami.Action {
iconName: "edit-undo-history"
text: i18n("Played Songs")
checked: pageStack.currentItem && pageStack.currentItem.objectName == "history"
onTriggered: {
pageStack.replace("qrc:/PlaybackHistory.qml", {
"dataModel": Library.playbackHistory,
"title": i18n("Played Songs"),
"objectName": "history"})
applicationWindow().showSearch = false
}
}
]
}
+28 -29
View File
@@ -15,9 +15,7 @@ Kirigami.ScrollablePage {
title: i18n("Unknown list of songs")
property QtObject dataModel
SongMenu {
id:menu
}
ListView {
id: listView
reuseItems: true
@@ -32,13 +30,9 @@ Kirigami.ScrollablePage {
delegate: Kirigami.SwipeListItem {
id: delegateItem
alwaysVisibleActions:true
required property string title
required property string videoId
required property var artists
required property string artistsDisplayString
required property int index
required property string artists
onClicked: {
play(videoId)
@@ -51,34 +45,39 @@ Kirigami.ScrollablePage {
videoId: delegateItem.videoId
}
RoundedImage {
source: thumbnailSource.cachedPath
height: 35
width: height
radius: 5
Item {
width: Kirigami.Units.gridUnit * 3
height: Kirigami.Units.gridUnit * 3
Image {
sourceSize: "200x200"
source: thumbnailSource.cachedPath
fillMode: Image.PreserveAspectCrop
asynchronous: true
width: Kirigami.Units.gridUnit * 3
height: Kirigami.Units.gridUnit * 3
Layout.alignment: Qt.AlignLeft
}
}
ColumnLayout {
Controls.Label {
text: delegateItem.title
Layout.fillWidth: true
elide: Qt.ElideRight
}
Controls.Label {
Layout.fillWidth: true
color: Kirigami.Theme.disabledTextColor
text: delegateItem.artistsDisplayString
elide: Qt.ElideRight
}
Controls.Label {
text: delegateItem.title
Layout.fillWidth: true
}
}
actions: [
Kirigami.Action {
icon.name: "view-more-horizontal-symbolic"
text: i18n("More")
onTriggered: menu.openForSong(delegateItem.videoId, delegateItem.title, delegateItem.artists, delegateItem.artistsDisplayString)
icon.name: "go-next"
text: i18n("Play Next")
onTriggered: UserPlaylistModel.playNext(delegateItem.videoId, delegateItem.title, [])
},
Kirigami.Action {
icon.name: "media-playlist-append"
text: i18n("Add to Playlist")
onTriggered: UserPlaylistModel.append(delegateItem.videoId, delegateItem.title, [])
}
]
}
+243 -17
View File
@@ -17,10 +17,9 @@ import org.kde.ytmusic 1.0
Flickable {
id: footerItem
property int footerSpacing:0
property bool maximized: false
readonly property int progressBarHeight: Kirigami.Units.gridUnit / 4
readonly property int progressBarHeight: Kirigami.Units.gridUnit / 6
readonly property int minimizedPlayerContentHeight: Math.round(Kirigami.Units.gridUnit * 3.5)
readonly property int minimizedPlayerHeight: minimizedPlayerContentHeight + progressBarHeight
@@ -97,16 +96,19 @@ Flickable {
onSongChanged: audio.play()
videoId: UserPlaylistModel.currentVideoId
onTitleChanged: {
let index = UserPlaylistModel.index(UserPlaylistModel.currentIndex, 0)
let videoId = UserPlaylistModel.data(index, UserPlaylistModel.VideoId)
let title = UserPlaylistModel.data(index, UserPlaylistModel.Title)
let artist = UserPlaylistModel.data(index, UserPlaylistModel.Artists)
let album = UserPlaylistModel.data(index, UserPlaylistModel.Album)
Library.addPlaybackHistoryItem(videoId, title, artist, album)
}
onTitleChanged: Library.addPlaybackHistoryItem(info.videoId, info.title)
}
MprisPlayer {
id: mpris
trackTitle: info.title
album: "Test Album"
playbackState: MprisPlayer.PlaybackRunning
playerName: "AudioTube"
trackDuration: audio.duration
}
property var audioPlayer: Audio {
id: audio
@@ -123,7 +125,7 @@ Flickable {
ColumnLayout {
id: footerLayout
y:-footerSpacing
anchors.left: parent.left
anchors.right: parent.right
spacing: 0
@@ -136,7 +138,7 @@ Flickable {
Controls.Control {
Layout.fillWidth: true
padding: 0
implicitHeight: footerItem.minimizedPlayerHeight+footerSpacing
implicitHeight: footerItem.minimizedPlayerHeight
// minimized player background
background: Item {
@@ -158,8 +160,8 @@ Flickable {
layer.effect: HueSaturation {
cached: true
lightness: -0.7
saturation: 3
lightness: -0.5
saturation: 1.9
layer.enabled: true
layer.effect: FastBlur {
@@ -186,7 +188,7 @@ Flickable {
onRequestOpen: toOpen.start();
}
}
MaximizedPlayerPage {
id: maximizedPlayerPage
Layout.fillWidth: true
@@ -199,8 +201,232 @@ Flickable {
onRequestClose: toClose.start();
}
//GridLayout {
//id: playerLayout
//readonly property bool mobile: width > height
//Layout.fillHeight: footerItem.maximized
//Layout.fillWidth: true
//flow: width > height ? GridLayout.LeftToRight : GridLayout.TopToBottom
//visible: footerItem.maximized
//ColumnLayout {
//Layout.preferredWidth: footerLayout.width * (playerLayout.mobile ? 1 : 0.5)
//Layout.preferredHeight: footerLayout.height * (playerLayout.mobile ? 0.5 : 1)
//Item {
//Layout.fillWidth: true
//Layout.fillHeight: true
//Image {
//anchors.fill: parent
//source: info.thumbnail
//fillMode: Image.PreserveAspectFit
//}
//}
//Controls.RoundButton {
//readonly property QtObject favouriteWatcher: Library.favouriteWatcher(info.videoId)
//Layout.alignment: Qt.AlignHCenter
//icon.name: favouriteWatcher ? (favouriteWatcher.isFavourite ? "starred-symbolic" : "non-starred-symbolic") : ""
//onClicked: if (favouriteWatcher)
//favouriteWatcher.isFavourite
//? Library.removeFavourite(info.videoId)
//: Library.addFavourite(info.videoId, info.title)
//}
//}
//Item {
//Layout.fillWidth: true
//Layout.fillHeight: true
//Layout.preferredWidth: footerLayout.width * (playerLayout.mobile ? 1 : 0.5)
//Layout.preferredHeight: footerLayout.height * (playerLayout.mobile ? 0.5 : 1)
//Controls.ScrollView {
//anchors.fill: parent
//ListView {
//anchors.fill: parent
//id: playlistView
//clip: true
//Controls.BusyIndicator {
//anchors.centerIn: parent
//visible: UserPlaylistModel.loading || UserPlaylistModel.loading
//}
//onCountChanged: {
//if (count < 1) {
//footerItem.maximized = false
//}
//}
//model: UserPlaylistModel
//delegate: Kirigami.SwipeListItem {
//id: delegateItem
//required property string title
//required property string videoId
//required property string artists
//required property bool isCurrent
//highlighted: isCurrent
//onClicked: UserPlaylistModel.skipTo(videoId)
//ColumnLayout {
//Layout.fillWidth: true
//Kirigami.Heading {
//elide: Text.ElideRight
//Layout.fillWidth: true
//level: 2
//text: title
//}
//Controls.Label {
//elide: Text.ElideRight
//Layout.fillWidth: true
//text: artists
//}
//}
//actions: [
//Kirigami.Action {
//text: i18n("Remove Track")
//icon.name: "list-remove"
//onTriggered: UserPlaylistModel.remove(delegateItem.videoId)
//}
//]
//}
//header: Controls.ToolBar {
//anchors.left: parent.left
//anchors.right: parent.right
//RowLayout {
//anchors.fill: parent
//Item {
//Layout.fillWidth: true
//}
//Controls.ToolButton {
//text: i18n("Clear")
//icon.name: "edit-clear-all"
//onClicked: UserPlaylistModel.clear()
//}
//Controls.ToolButton {
//text: i18n("Shuffle")
//icon.name: "media-playlist-shuffle"
//onClicked: UserPlaylistModel.shufflePlaylist()
//}
//}
//}
//}
//}
//}
//}
//Kirigami.Separator {
//Layout.fillWidth: true
//}
//RowLayout {
//id: player
//Layout.fillWidth: true
//Layout.fillHeight: !footer.maximized
//Controls.ToolButton {
//display: Controls.AbstractButton.IconOnly
//Layout.preferredWidth: parent.height
//Layout.fillHeight: true
//enabled: info.audioUrl != ""
//text: audio.playbackState === Audio.PlayingState ? i18n("Pause") : i18n("Play")
//visible: !info.loading
//icon.name: audio.playbackState === Audio.PlayingState ? "media-playback-pause" : "media-playback-start"
//onClicked: audio.playbackState === Audio.PlayingState ? audio.pause() : audio.play()
//}
//Controls.ToolButton {
//display: Controls.AbstractButton.IconOnly
//Layout.preferredWidth: parent.height
//Layout.fillHeight: true
//enabled: UserPlaylistModel.canSkip
//visible: !info.loading
//icon.name: "media-skip-forward"
//onClicked: UserPlaylistModel.next()
//}
//Controls.BusyIndicator {
//Layout.fillHeight: true
//visible: info.loading
//}
//ColumnLayout {
//Layout.fillHeight: true
//Layout.topMargin: Kirigami.Units.smallSpacing
//Layout.bottomMargin: Kirigami.Units.smallSpacing
//Kirigami.Heading {
//level: 3
//Layout.fillWidth: true
//elide: Qt.ElideRight
//text: info.title ? info.title : i18n("No media playing")
//}
//RowLayout{
//Controls.Label{
//visible: info.title
//text: PlayerUtils.formatTimestamp(audio.position)
//}
//Controls.Slider {
//Layout.fillWidth: true
//from: 0
//to: audio.duration
//value: audio.position
//enabled: audio.seekable
//onMoved: {
//console.log("Value:", value);
//audio.seek(Math.floor(value));
//}
//Behavior on value {
//NumberAnimation {
//duration: 1000
//}
//}
//}
//Controls.Label{
//visible: info.title
//text: PlayerUtils.formatTimestamp(audio.duration)
//}
//}
//}
//Controls.ToolButton {
//display: Controls.AbstractButton.IconOnly
//Layout.preferredWidth: parent.height
//text: i18n("Expand")
//enabled: playlistView.count > 0
//Layout.fillHeight: true
//icon.name: footerItem.maximized ? "arrow-down" : "arrow-up"
//onClicked: footerItem.maximized = !footerItem.maximized
//}
//}
}
//Behavior on height {
//NumberAnimation {
//}
//}
}
+33 -52
View File
@@ -13,34 +13,27 @@ Kirigami.ScrollablePage {
property alias playlistId: playlistModel.playlistId
title: playlistModel.title
SongMenu {
id: menu
actions {
main: Kirigami.Action {
icon.name: "media-playback-start"
text: i18n("Play")
onTriggered: {
applicationWindow().playPlaylist(playlistModel.playlistId)
}
}
right: Kirigami.Action {
icon.name: "media-playlist-shuffle"
text: i18n("Shuffle")
onTriggered: {
applicationWindow().playShufflePlaylist(playlistModel.playlistId)
}
}
}
ListView {
id: songList
header: ListHeader {
visibleActions: [
Kirigami.Action {
icon.name: "media-playback-start"
text: i18n("Play")
onTriggered: {
applicationWindow().playPlaylist(playlistModel.playlistId)
}
},
Kirigami.Action {
icon.name: "media-playlist-shuffle"
text: i18n("Shuffle")
onTriggered: {
applicationWindow().playShufflePlaylist(playlistModel.playlistId)
}
}
]
header: Kirigami.ItemViewHeader {
backgroundImage.source: playlistModel.thumbnailUrl
title: playlistModel.title
imageSourceURL: playlistModel.thumbnailUrl
width: songList.width
subtitle: i18n("Playlist")
}
model: PlaylistModel {
id: playlistModel
@@ -50,46 +43,34 @@ Kirigami.ScrollablePage {
delegate: Kirigami.SwipeListItem {
id: delegateItem
alwaysVisibleActions:true
required property string title
required property string videoId
required property var artists
required property string thumbnailUrl
required property string artistsDisplayString
required property int index
RowLayout {
Layout.fillHeight: true
RoundedImage {
source: delegateItem.thumbnailUrl
height: 35
width: height
radius: 5
Kirigami.Icon {
Layout.fillHeight: true
source: "emblem-music-symbolic"
}
ColumnLayout {
Controls.Label {
Layout.fillWidth: true
text: title
elide: Qt.ElideRight
}
Controls.Label {
Layout.fillWidth: true
visible: delegateItem.artistsDisplayString
color: Kirigami.Theme.disabledTextColor
text: delegateItem.artistsDisplayString
elide: Qt.ElideRight
}
Controls.Label {
Layout.fillWidth: true
text: title
elide: Qt.ElideRight
}
}
actions: [
Kirigami.Action {
icon.name: "view-more-horizontal-symbolic"
text: i18n("More")
onTriggered: menu.openForSong(delegateItem.videoId, delegateItem.title, delegateItem.artists, delegateItem.artistsDisplayString)
icon.name: "go-next"
text: i18n("Play Next")
onTriggered: UserPlaylistModel.playNext(delegateItem.videoId, delegateItem.title, delegateItem.artists)
},
Kirigami.Action {
icon.name: "media-playlist-append"
text: i18n("Add to Playlist")
onTriggered: UserPlaylistModel.append(delegateItem.videoId, delegateItem.title, delegateItem.artists)
}
]
-33
View File
@@ -1,33 +0,0 @@
// SPDX-FileCopyrightText: 2022 Mathis Brüchert <[email protected]>
//
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
import QtQuick 2.15
import QtQuick.Window 2.15
import QtGraphicalEffects 1.0
Item {
property alias radius: mask.radius
property alias source: image.source
id: icon
Image {
id:image
source: source
anchors.fill: parent
fillMode: Image.PreserveAspectCrop
asynchronous: true
sourceSize.width: parent.implicitWidth * Screen.devicePixelRatio
layer.enabled: true
layer.effect: OpacityMask {
maskSource: mask
}
}
Rectangle {
id: mask
anchors.fill: parent
visible: false
}
}
-93
View File
@@ -1,93 +0,0 @@
// SPDX-FileCopyrightText: Mathis Brüchert <[email protected]>
//
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
import org.kde.kirigami 2.12 as Kirigami
import QtQuick.Controls 2.15 as Controls
import QtQuick 2.15
import QtQuick.Layouts 1.15
import org.kde.ytmusic 1.0
Kirigami.ScrollablePage {
objectName: "searchPage"
topPadding: 0
bottomPadding: 0
leftPadding: 0
rightPadding: 0
Kirigami.Theme.colorSet: Kirigami.Theme.View
ColumnLayout {
Controls.ScrollView {
Layout.fillWidth: true
id: recents
visible: searchLoader.text && recentsRepeater.count > 0
leftPadding: 10
topPadding: 10
Controls.ScrollBar.horizontal.policy: Controls.ScrollBar.AlwaysOff
RowLayout {
id: recentsLayout
spacing: 10
Layout.fillWidth: true
Repeater {
id: recentsRepeater
Layout.fillWidth: true
model: SortFilterModel {
filterRole: PlaybackHistoryModel.Title
filterRegularExpression: searchLoader.filterExpression
sourceModel: Library.playbackHistory
}
delegate: Kirigami.DelegateRecycler {
Layout.alignment: Qt.AlignTop
sourceComponent: searchAlbum
}
}
}
}
Kirigami.Separator {
Layout.fillWidth: true
visible: recents.visible
}
id: completionList
Repeater {
Layout.fillHeight: true
Layout.fillWidth: true
model: SortFilterModel {
sourceModel: Library.searches
filterRegularExpression: searchLoader.filterExpression
}
delegate: Kirigami.AbstractListItem {
implicitHeight: Kirigami.Units.gridUnit * 2
Layout.fillWidth: true
RowLayout {
Kirigami.Icon {
source: "search"
implicitHeight: Kirigami.Units.gridUnit
implicitWidth: Kirigami.Units.gridUnit
color: Kirigami.Theme.disabledTextColor
}
Controls.Label {
text: model.display
Layout.fillWidth: true
}
}
onClicked: {
searchLoader.text = model.display
searchLoader.accepted()
}
}
}
}
}
+54 -42
View File
@@ -10,10 +10,9 @@ import org.kde.kirigami 2.14 as Kirigami
import org.kde.ytmusic 1.0
Kirigami.ScrollablePage {
id: searchPage
property alias searchQuery: searchModel.searchQuery
objectName: "searchPage"
title: listView.count === 0 && !searchModel.loading? i18n("Previous Searches:") : searchQuery
title: searchQuery
ListView {
reuseItems: true
@@ -38,7 +37,7 @@ Kirigami.ScrollablePage {
}
}
section.property: "type"
id: listView
model: SearchModel {
id: searchModel
@@ -48,11 +47,9 @@ Kirigami.ScrollablePage {
})
}
onOpenArtist: (channelId, radioId, shuffleId) => {
onOpenArtist: (channelId) => {
pageStack.push("qrc:/ArtistPage.qml", {
"channelId": channelId,
"radioId": radioId,
"shuffleId": shuffleId
"channelId": channelId
})
}
@@ -78,58 +75,60 @@ Kirigami.ScrollablePage {
}
}
}
SongMenu {
id: menu
}
delegate: Kirigami.SwipeListItem {
id: delegateItem
alwaysVisibleActions:true
required property int index
required property string title
required property int type
required property string videoId
required property var artists
required property string artistsDisplayString
required property string radioPlaylistId
required property string thumbnailUrl
RowLayout {
Layout.fillHeight: true
RoundedImage {
source: delegateItem.thumbnailUrl
height: 35
width: height
radius: delegateItem.type === SearchModel.Artist?height/2:5
Kirigami.Icon {
Layout.fillHeight: true
source: {
switch (type) {
case SearchModel.Artist:
return "view-media-artist"
case SearchModel.Album:
return "media-album-cover"
case SearchModel.Playlist:
return "view-media-playlist"
case SearchModel.Song:
return "emblem-music-symbolic"
case SearchModel.Video:
return "emblem-videos-symbolic"
}
}
}
ColumnLayout {
Controls.Label {
Layout.fillWidth: true
text: title
elide: Qt.ElideRight
}
Controls.Label {
Layout.fillWidth: true
visible: delegateItem.artistsDisplayString
color: Kirigami.Theme.disabledTextColor
text: delegateItem.artistsDisplayString
elide: Qt.ElideRight
}
Controls.Label {
Layout.fillWidth: true
text: title
elide: Qt.ElideRight
}
}
actions: [
Kirigami.Action {
icon.name: "view-more-horizontal-symbolic"
text: i18n("More")
visible: delegateItem.type === SearchModel.Song || delegateItem.type === SearchModel.Video
onTriggered: menu.openForSong(delegateItem.videoId, delegateItem.title, delegateItem.artists, delegateItem.artistsDisplayString)
icon.name: "go-next"
text: i18n("Play next")
visible: delegateItem.type === SearchModel.Song || delegateItem.type == SearchModel.Video
onTriggered: UserPlaylistModel.playNext(delegateItem.videoId, delegateItem.title, delegateItem.artists)
},
Kirigami.Action {
icon.name: "media-playlist-append"
text: i18n("Add to Playlist")
visible: delegateItem.type === SearchModel.Song || delegateItem.type == SearchModel.Video
onTriggered: UserPlaylistModel.append(delegateItem.videoId, delegateItem.title, delegateItem.artists)
},
Kirigami.Action {
icon.name: "radio"
text: i18n("Radio")
visible: delegateItem.type === SearchModel.Artist && delegateItem.radioPlaylistId
onTriggered: playPlaylist(delegateItem.radioPlaylistId)
}
]
@@ -139,6 +138,19 @@ Kirigami.ScrollablePage {
anchors.centerIn: parent
visible: searchModel.loading
}
Kirigami.PlaceholderMessage {
anchors.centerIn: parent
width: parent.width - (Kirigami.Units.largeSpacing * 4)
visible: parent.count === 0 && !searchModel.loading
text: i18n("Find music on YouTube Music")
helpfulAction: Kirigami.Action {
onTriggered: searchField.forceActiveFocus()
text: i18n("Search")
icon.name: "search"
}
}
}
footer: ConfirmationMessage {
-339
View File
@@ -1,339 +0,0 @@
// SPDX-FileCopyrightText: 2023 Mathis Brüchert <[email protected]>
// SPDX-FileCopyrightText: 2021 Jonah Brüchert <[email protected]>
//
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
import QtQuick 2.1
import QtQuick.Controls 2.12 as Controls
import QtQuick.Layouts 1.3
import org.kde.kirigami 2.14 as Kirigami
import QtGraphicalEffects 1.0
import org.kde.ytmusic 1.0
Item {
function forceFocus(){searchField.forceActiveFocus()}
function accepted(){searchField.accepted()}
property alias filterExpression: searchField.filterExpression
property alias text: searchField.text
id: root
Controls.TextField{
id: dummy
x:searchField.x
y:searchField.y
width: searchField.width
readOnly: true
}
Kirigami.SearchField {
property var filterExpression: new RegExp(`.*${searchField.text}.*`, "i")
id: searchField
autoAccept: false
width: root.width
selectByMouse: true
onFocusChanged: {
if (wideScreen && focus)
popup.open()
}
onAccepted: {
popup.close()
while (pageStack.depth > 0) {
pageStack.pop()
}
pageStack.layers.clear()
if (text) {
Library.addSearch(text)
pageStack.push("qrc:/SearchPage.qml", {
"searchQuery": text,
objectName: "searchPage"
})
} else {
wideScreen
? pageStack.push("qrc:/LibraryPage.qml")
: pageStack.push("qrc:/SearchHistoryPage.qml")
}
searchField.focus = false
}
}
Controls.Popup {
id: popup
property int expansion: 5
property int shadowSize: 15
onAboutToShow:{
searchField.parent = fieldContainer
onOpened: searchField.background.visible = false
playOpenHeight.running = true
playOpenWidth.running = true
playOpenX.running = true
playOpenY.running = true
playOpenRadius.running = true
}
onAboutToHide:{
searchField.parent = root
onOpened: searchField.background.visible = true
searchField.focus = false
playCloseHeight.running = true
playCloseWidth.running = true
playCloseX.running = true
playCloseY.running = true
playCloseRadius.running = true
}
x: -(popup.shadowSize+popup.expansion)
y: -(popup.shadowSize+popup.expansion)
rightPadding:popup.shadowSize+1
leftPadding:popup.shadowSize+1
bottomPadding:popup.shadowSize
rightInset: popup.shadowSize
leftInset: popup.shadowSize
bottomInset: popup.shadowSize
leftMargin:-popup.shadowSize
background: Kirigami.ShadowedRectangle{
id: bg
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.View
color: Kirigami.Theme.backgroundColor
radius: popup.expansion+2
shadow.size: popup.shadowSize
shadow.yOffset: popup.expansion
shadow.color: Qt.rgba(0, 0, 0, 0.2)
border.width: 1
border.color: Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.backgroundColor, Kirigami.Theme.textColor, 0.3);
NumberAnimation on radius{
id: playOpenRadius
easing.type: Easing.OutCubic
running: false
from: 2
duration: 100
to: popup.expansion+2
}
NumberAnimation on radius{
id: playCloseRadius
easing.type: Easing.OutCubic
running: false
from: popup.expansion+2
duration: 100
to: 2
}
}
width: searchField.width + 2*(popup.shadowSize+popup.expansion)
height: completionList
? (Math.min(content.implicitHeight, Kirigami.Units.gridUnit * 20))+2*(popup.shadowSize+popup.expansion)
: (Kirigami.Units.gridUnit * 20)+2*(popup.shadowSize+popup.expansion)
NumberAnimation on height{
id: playOpenHeight
easing.type: Easing.OutCubic
running: false
from: searchField.height
duration: 200
to: completionList
? (Math.min(fieldContainer.height+ completionList.count * Kirigami.Units.gridUnit * 2 + recents.implicitHeight, Kirigami.Units.gridUnit * 20))+2*(popup.shadowSize+popup.expansion)
: (Kirigami.Units.gridUnit * 20)+2*(popup.shadowSize+popup.expansion)
}
NumberAnimation on width{
id: playOpenWidth
easing.type: Easing.OutCubic
running: false
from: searchField.width
duration: 100
to: searchField.width +2*(popup.shadowSize+popup.expansion)
}
NumberAnimation on x{
id: playOpenX
easing.type: Easing.OutCubic
running: false
from: 0
duration: 100
to: -(popup.shadowSize+popup.expansion)
}
NumberAnimation on y{
id: playOpenY
easing.type: Easing.OutCubic
running: false
from: 0
duration: 100
to: -popup.expansion
}
NumberAnimation on height{
id: playCloseHeight
easing.type: Easing.OutCubic
running: false
from: completionList
? (Math.min(content.implicitHeight, Kirigami.Units.gridUnit * 20))+2*(popup.shadowSize+popup.expansion)
: (Kirigami.Units.gridUnit * 20)+2*(popup.shadowSize+popup.expansion)
duration: 100
to: searchField.height
}
NumberAnimation on width{
id: playCloseWidth
easing.type: Easing.OutCubic
running: false
from: searchField.width + 2*(popup.shadowSize+popup.expansion)
duration: 100
to: searchField.width + 2*(popup.shadowSize)
}
NumberAnimation on x{
id: playCloseX
easing.type: Easing.OutCubic
running: false
from: -(popup.shadowSize+popup.expansion)
duration: 100
to: -popup.shadowSize
}
NumberAnimation on y{
id: playCloseY
easing.type: Easing.OutCubic
running: false
from: - popup.expansion
duration: 100
to: -0
}
contentItem: ColumnLayout{
id: content
width: parent.width
Controls.Control{
Layout.fillHeight: true
Layout.fillWidth: true
Controls.Control{
x: popup.expansion
y:-popup.expansion
id: fieldContainer
height:searchField.height
}
implicitHeight: fieldContainer.height
}
Controls.ScrollView {
id: mainScrollView
clip: true
Layout.fillHeight: true
Layout.fillWidth: true
Keys.enabled: false
contentWidth: availableWidth
ColumnLayout {
width: mainScrollView.contentWidth
Controls.ScrollView {
id: recents
Layout.fillWidth: true
Layout.maximumWidth: popup.width
visible: searchField.text && recentsRepeater.count > 0
leftPadding: 10
rightPadding: 40
topPadding: 10
Controls.ScrollBar.horizontal.policy: Controls.ScrollBar.AlwaysOff
RowLayout {
spacing: 10
Layout.fillWidth: true
Layout.maximumWidth: popup.width - 23
Repeater {
id: recentsRepeater
Layout.fillWidth: true
model: SortFilterModel {
filterRole: PlaybackHistoryModel.Title
filterRegularExpression: searchField.filterExpression
sourceModel: Library.playbackHistory
}
delegate: Kirigami.DelegateRecycler {
Layout.alignment: Qt.AlignTop
width: popup.width
sourceComponent: searchAlbum
}
}
}
}
Kirigami.Separator{
Layout.fillWidth: true
visible: searchField.text && recentsRepeater.count > 0
implicitWidth: popup.width
}
RowLayout{
Layout.margins: 10
visible: completionList.count == 0
Kirigami.Icon {
source: "documentinfo"
implicitHeight: Kirigami.Units.gridUnit
implicitWidth: Kirigami.Units.gridUnit
color: Kirigami.Theme.disabledTextColor
}
Controls.Label {
text: i18n("No matching previous searches")
Layout.fillWidth: true
color: Kirigami.Theme.disabledTextColor
}
}
Repeater {
Layout.fillWidth: true
id: completionList
model: SortFilterModel {
sourceModel: Library.searches
filterRegularExpression: searchField.filterExpression
}
delegate: Kirigami.AbstractListItem {
id: completionDelegate
highlighted: focus
Kirigami.Theme.colorSet: Kirigami.Theme.Window
Kirigami.Theme.inherit: false
Layout.fillWidth: true
height: Kirigami.Units.gridUnit * 2
contentItem: RowLayout {
Kirigami.Icon {
source: "search"
implicitHeight: Kirigami.Units.gridUnit
implicitWidth: Kirigami.Units.gridUnit
color: Kirigami.Theme.disabledTextColor
}
Controls.Label{
text: model.display
Layout.fillWidth: true
}
Controls.ToolButton {
icon.name: "list-remove"
text: i18n("remove from search history")
display: Controls.AbstractButton.IconOnly
onClicked: {
Library.removeSearch(model.display)
}
}
}
onClicked: {
searchField.text = model.display
searchField.accepted()
}
}
}
}
}
}
}
}
-194
View File
@@ -1,194 +0,0 @@
// SPDX-FileCopyrightText: 2022 Mathis Brüchert <[email protected]>
//
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
import QtQuick 2.15
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.15 as Controls
import org.kde.kirigami 2.20 as Kirigami
import org.kde.ytmusic 1.0
Rectangle {
property bool collapsed: false
id: sidebar
width: 200
clip:true
Kirigami.Theme.colorSet: Kirigami.Theme.Window
Kirigami.Theme.inherit: false
color: "transparent"
Rectangle {
anchors.fill: parent
color: Kirigami.Theme.backgroundColor
opacity: 0.8
}
NumberAnimation on width{
id: collapse
easing.type: Easing.OutCubic
running: false
from: 200; to: 60
}
NumberAnimation on width{
id: show
easing.type: Easing.OutCubic
running: false
from: 60; to: 200
//this is only a workaround to stop the text from disappearing
onFinished:{
libraryButton.checked =!libraryButton.checked
libraryButton.checked =!libraryButton.checked
favouritesButton.checked =!favouritesButton.checked
favouritesButton.checked =!favouritesButton.checked
historyButton.checked =!historyButton.checked
historyButton.checked =!historyButton.checked
searchButton.checked =!searchButton.checked
searchButton.checked =!searchButton.checked
collapseButton.checked =!collapseButton.checked
collapseButton.checked =false
}
}
Kirigami.Separator {
height: parent.height
anchors.right: parent.right
z:100
}
ColumnLayout {
anchors.fill: parent
spacing: 0
Kirigami.Separator {
Layout.fillWidth: true
}
Controls.ScrollView {
id: scrollView
Layout.fillWidth: true
Layout.fillHeight: true
Controls.ScrollBar.vertical.policy: Controls.ScrollBar.AlwaysOff
Controls.ScrollBar.horizontal.policy: Controls.ScrollBar.AlwaysOff
contentWidth: -1 // disable horizontal scroll
ColumnLayout {
id: column
width: scrollView.width
spacing: 0
Kirigami.NavigationTabButton {
id: libraryButton
Layout.fillWidth: true
width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
implicitHeight: 50
display: Controls.AbstractButton.TextBesideIcon
text: collapsed? "" : i18n("Library")
icon.name: "file-library-symbolic"
checked: pageStack.currentItem && pageStack.currentItem.objectName == "libraryPage"
onClicked: {
pageStack.clear()
pageStack.push("qrc:/LibraryPage.qml")
}
}
Kirigami.NavigationTabButton {
id: searchButton
Layout.fillWidth: true
width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
implicitHeight: 50
display: Controls.AbstractButton.TextBesideIcon
text: collapsed? "" : i18n("Search")
icon.name: "search"
checked: pageStack.currentItem && pageStack.currentItem.objectName == "searchPage"
onClicked: {
searchField.forceActiveFocus()
focusSearch()
}
}
Kirigami.NavigationTabButton {
id: favouritesButton
Layout.fillWidth: true
width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
implicitHeight: 50
display: Controls.AbstractButton.TextBesideIcon
text: collapsed ? "" : i18n("Favourites")
icon.name: "non-starred-symbolic"
checked: pageStack.currentItem && pageStack.currentItem.objectName == "favourites"
onClicked: {
pageStack.clear()
pageStack.push("qrc:/PlaybackHistory.qml", {
"dataModel": Library.favourites,
"title": i18n("Favourites"),
"objectName": "favourites"
})}
}
Kirigami.NavigationTabButton {
id: historyButton
Layout.fillWidth: true
width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
implicitHeight: 50
display: Controls.AbstractButton.TextBesideIcon
text: collapsed? "" : i18n("Played Songs")
icon.name: "edit-undo-history"
checked: pageStack.currentItem && pageStack.currentItem.objectName == "history"
onClicked: {
pageStack.clear()
pageStack.push("qrc:/PlaybackHistory.qml", {
"dataModel": Library.playbackHistory,
"title": i18n("Played Songs"),
"objectName": "history"
})}
}
// Kirigami.NavigationTabButton {
// Layout.fillWidth: true
// width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
// implicitHeight: 50
// display: Controls.AbstractButton.TextBesideIcon
// text: i18n("Charts")
// icon.name: "office-chart-line-forecast"
// }
}
}
Kirigami.Separator {
Layout.fillWidth: true
Layout.rightMargin: Kirigami.Units.smallSpacing
Layout.leftMargin: Kirigami.Units.smallSpacing
}
Kirigami.NavigationTabButton {
id: collapseButton
Layout.fillWidth: true
width: column.width - column.Layout.leftMargin - column.Layout.rightMargin
display: Controls.AbstractButton.TextBesideIcon
text: collapsed? "" : i18n("Collapse Sidebar")
checked: collapsed == true
implicitHeight: 50
icon.name: "sidebar-collapse"
onClicked: {
if (!sidebar.collapsed)
collapse.running = true
else
show.running = true
sidebar.collapsed = !sidebar.collapsed
}
}
}
}
-212
View File
@@ -1,212 +0,0 @@
// SPDX-FileCopyrightText: 2022 Mathis Brüchert <[email protected]>
//
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
import QtQuick 2.15
import QtQuick.Controls 2.15 as Controls
import org.kde.ytmusic 1.0
import org.kde.kirigami 2.19 as Kirigami
import QtQuick.Layouts 1.15
Item {
function openForSong(videoId, songTitle, artists, artistsDisplayString) {
menu.videoId = videoId
drawer.videoId = videoId
menu.songTitle = songTitle
drawer.songTitle = songTitle
menu.artists = artists
drawer.artists = artists
menu.artistsDisplayString = artistsDisplayString
drawer.artistsDisplayString = artistsDisplayString
if (Kirigami.Settings.isMobile) {
drawer.interactive = true
drawer.open()
} else {
menu.popup()
}
}
Controls.Drawer {
edge: Qt.BottomEdge
height:contents.implicitHeight+20
width: applicationWindow().width
interactive: false
background: Kirigami.ShadowedRectangle{
corners.topRightRadius: 10
corners.topLeftRadius: 10
shadow.size: 20
shadow.color: Qt.rgba(0, 0, 0, 0.5)
color: Kirigami.Theme.backgroundColor
}
onClosed: drawer.interactive = false
id: drawer
property string videoId
property string songTitle
property var artists
property string artistsDisplayString
ColumnLayout {
id: contents
anchors.fill: parent
ThumbnailSource {
id: thumbnailSource
videoId: drawer.videoId
}
Rectangle {
Layout.margins: 5
radius:50
Layout.alignment: Qt.AlignHCenter
color: Kirigami.Theme.textColor
opacity: 0.7
width: 40
height: 4
}
RowLayout {
spacing: 10
Kirigami.ShadowedRectangle {
Layout.margins: 10
color: Kirigami.Theme.backgroundColor
width: 60
height: width
radius: 5
shadow.size: 15
shadow.xOffset: 5
shadow.yOffset: 5
shadow.color: Qt.rgba(0, 0, 0, 0.2)
RoundedImage {
source: thumbnailSource.cachedPath
height: width
width: parent.width
radius: parent.radius
}
}
ColumnLayout {
Controls.Label{
text: drawer.songTitle
elide: Text.ElideRight
Layout.fillWidth: true
}
Controls.Label{
text: drawer.artistsDisplayString
color: Kirigami.Theme.disabledTextColor
elide: Text.ElideRight
Layout.fillWidth: true
}
}
}
Kirigami.Separator {
Layout.fillWidth: true
Layout.leftMargin: 10
Layout.rightMargin: 10
}
Kirigami.BasicListItem{
label: i18n("Play Next")
icon: "go-next"
onClicked: {
UserPlaylistModel.playNext(drawer.videoId, drawer.songTitle, drawer.artists)
drawer.close()
}
}
Kirigami.BasicListItem{
label: i18n("Add to queue")
icon: "media-playlist-append"
onClicked: {
UserPlaylistModel.append(drawer.videoId, drawer.songTitle, drawer.artists)
drawer.close()
}
}
Kirigami.BasicListItem{
readonly property QtObject favouriteWatcher: Library.favouriteWatcher(drawer.videoId)
label: favouriteWatcher ? (favouriteWatcher.isFavourite ? i18n("Remove Favourite"): i18n("Add Favourite")): ""
icon: favouriteWatcher ? (favouriteWatcher.isFavourite ? "starred-symbolic" : "non-starred-symbolic") : ""
onClicked: {
if (favouriteWatcher) {
if (favouriteWatcher.isFavourite) {
Library.removeFavourite(drawer.videoId)
} else {
Library.addFavourite(drawer.videoId, drawer.songTitle, drawer.artistsDisplayString, "")
}
}
drawer.close()
}
}
Kirigami.BasicListItem{
readonly property QtObject wasPlayedWatcher: Library.wasPlayedWatcher(drawer.videoId)
label: i18n("Remove from History")
icon: "list-remove"
onClicked: {
Library.removePlaybackHistoryItem(drawer.videoId)
drawer.close()
}
visible: wasPlayedWatcher ? wasPlayedWatcher.wasPlayed : false
enabled: wasPlayedWatcher ? wasPlayedWatcher.wasPlayed : false
}
Item{
Layout.fillHeight: true
}
}
}
Controls.Menu {
property string videoId
property string songTitle
property var artists
property string artistsDisplayString
id: menu
Controls.MenuItem {
text: i18n("Play Next")
icon.name: "go-next"
onTriggered: UserPlaylistModel.playNext(menu.videoId, menu.songTitle, menu.artists)
}
Controls.MenuItem {
text: i18n("Add to queue")
icon.name: "media-playlist-append"
onTriggered: UserPlaylistModel.append(menu.videoId, menu.songTitle, menu.artists)
}
Controls.MenuItem {
readonly property QtObject favouriteWatcher: Library.favouriteWatcher(menu.videoId)
text: favouriteWatcher ? (favouriteWatcher.isFavourite ? i18n("Remove Favourite"): i18n("Add Favourite")): ""
icon.name: favouriteWatcher ? (favouriteWatcher.isFavourite ? "starred-symbolic" : "non-starred-symbolic") : ""
onTriggered: {
if (favouriteWatcher) {
if (favouriteWatcher.isFavourite) {
Library.removeFavourite(menu.videoId)
} else {
Library.addFavourite(menu.videoId, menu.songTitle, menu.artistsDisplayString, "")
}
}
}
}
Controls.MenuItem{
readonly property QtObject wasPlayedWatcher: Library.wasPlayedWatcher(menu.videoId)
text: i18n("Remove from History")
icon.name: "list-remove"
onTriggered: {
Library.removePlaybackHistoryItem(menu.videoId)
}
enabled: wasPlayedWatcher ? wasPlayedWatcher.wasPlayed : false
visible: wasPlayedWatcher ? wasPlayedWatcher.wasPlayed : false
}
}
}
+88 -147
View File
@@ -6,50 +6,18 @@ import QtQuick 2.1
import QtQuick.Controls 2.12 as Controls
import QtQuick.Layouts 1.3
import org.kde.kirigami 2.14 as Kirigami
import QtGraphicalEffects 1.0
import org.kde.ytmusic 1.0
Kirigami.ApplicationWindow {
id: root
pageStack.globalToolBar.style: wideScreen? Kirigami.ApplicationHeaderStyle.None: Kirigami.ApplicationHeaderStyle.Breadcrumb
property alias searchField: searchLoader.item // TODO
color: "transparent"
Blur{id:blur}
Component.onCompleted: {
blur.setBlur(sidebar, true);
}
pageStack.columnView.columnResizeMode: Kirigami.ColumnView.SingleColumn
property alias searchField: searchLoader // TODO
property bool wideScreen: width >= 600
property bool showSearch: false // only applicable if not widescreen
// so that there is still a separator, since the header style is none
Kirigami.Separator {
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
visible: wideScreen
}
Sidebar {
id:sidebar
visible: wideScreen
height: pageStack.height - playerFooter.implicitHeight
}
NavigationBar{
id: bottombar
visible: !wideScreen
}
header: Controls.Control {
visible: wideScreen || root.showSearch
padding: Kirigami.Units.largeSpacing
background: Rectangle {
@@ -62,45 +30,54 @@ Kirigami.ApplicationWindow {
}
contentItem: RowLayout {
spacing: 0
Row {
Controls.ToolButton {
id: searchBack
Layout.alignment: Qt.AlignLeft
visible:
(!root.wideScreen && root.showSearch && root.searchField.text === "")
|| pageStack.layers.depth > 1
text: i18n("Back")
icon.name: "go-previous-view"
display: Controls.ToolButton.IconOnly
onClicked: if (root.showSearch)
root.showSearch = false
else
pageStack.layers.pop()
}
Controls.ToolButton {
id: back
enabled: applicationWindow().pageStack.layers.depth > 1 || (applicationWindow().pageStack.depth > 1 && (applicationWindow().pageStack.currentIndex > 0 || applicationWindow().pageStack.contentItem.contentX > 0)) // Copied from https://invent.kde.org/frameworks/kirigami/-/blob/master/src/controls/templates/private/BackButton.qml#L16
icon.name: "draw-arrow-back"
onClicked: pageStack.goBack()
visible: wideScreen
}
Controls.ToolButton {
icon.name: "draw-arrow-forward"
enabled: applicationWindow().pageStack.currentIndex < applicationWindow().pageStack.depth-1
onClicked: pageStack.goForward()
visible: wideScreen
}
Kirigami.Heading {
Layout.alignment: Qt.AlignLeft
Layout.leftMargin: Kirigami.Units.largeSpacing
level: 1
text: "AudioTube"
visible: !root.wideScreen && !root.showSearch
}
// spacer
Item {
visible: wideScreen
Layout.fillWidth: !root.wideScreen
}
SearchWithDropdown {
Loader {
id: searchLoader
visible: root.wideScreen || root.showSearch
Layout.alignment: Qt.AlignHCenter
Layout.fillWidth: true
Layout.fillHeight: true
height: back.height
width: wideScreen?null:root.width
Layout.maximumWidth: wideScreen ? 400 : root.width
Layout.maximumWidth: 400
sourceComponent: searchFieldComponent
}
Item {
width: 2*back.width
visible: wideScreen
Controls.ToolButton {
Layout.alignment: Qt.AlignRight
visible: !root.wideScreen && !root.showSearch
text: i18n("Search")
icon.name: "search"
display: Controls.ToolButton.TextBesideIcon
onClicked: {
root.showSearch = true
root.searchField.forceActiveFocus();
root.searchField.popup.open();
}
}
}
}
@@ -112,7 +89,6 @@ Kirigami.ApplicationWindow {
}
pageStack.initialPage: "qrc:/LibraryPage.qml"
pageStack.clip: true
function play(videoId) {
UserPlaylistModel.initialVideoId = videoId
@@ -126,7 +102,7 @@ Kirigami.ApplicationWindow {
UserPlaylistModel.shuffle = true
UserPlaylistModel.playlistId = playlistId
}
function focusSearch(){searchLoader.forceFocus()}
Connections {
target: ErrorHandler
@@ -135,110 +111,75 @@ Kirigami.ApplicationWindow {
showPassiveNotification(error)
}
}
Component {
id: searchAlbum
id: searchFieldComponent
Kirigami.SearchField {
id: searchField
delaySearch: true
selectByMouse: true
onPressed: {
popup.open()
}
property alias popup: popup
ColumnLayout {
id: mpdelegateItem
Controls.Popup {
id: popup
x: searchField.y
y: searchField.y + searchField.height
width: searchField.width
height: completionList
? Math.min(completionList.count * Kirigami.Units.gridUnit * 2 + Kirigami.Units.gridUnit * 2, Kirigami.Units.gridUnit * 20)
: Kirigami.Units.gridUnit * 20
width: 100
Layout.maximumWidth: 70
Kirigami.ShadowedRectangle {
id: recCover
MouseArea {
id: recArea
anchors.fill: parent
onClicked: play(model.videoId)
hoverEnabled: !Kirigami.Settings.hasTransientTouchInput
onEntered: {
if (!Kirigami.Settings.hasTransientTouchInput)
recSelected.visible = true
searchTitle.color = Kirigami.Theme.hoverColor
searchTitle.font.bold = true
}
onExited:{
recSelected.visible = false
searchTitle.color = Kirigami.Theme.textColor
searchTitle.font.bold = false
}
}
Layout.margins: 5
width: 70
height: 70
radius: 10
shadow.size: 15
shadow.xOffset: 5
shadow.yOffset: 5
shadow.color: Qt.rgba(0, 0, 0, 0.2)
Rectangle {
width: 70
height: 70
color: "transparent"
ThumbnailSource {
id: thumbnailSource
videoId: model ? model.videoId : ""
}
RoundedImage {
source: thumbnailSource.cachedPath
height: parent.height
width: height
radius: 10
}
Rectangle {
id: recSelected
Rectangle {
anchors.fill: parent
color: Kirigami.Theme.hoverColor
radius: 10
opacity: 0.2
contentItem: Controls.ScrollView {
Controls.ScrollBar.horizontal.policy: Controls.ScrollBar.AlwaysOff
ListView {
id: completionList
model: Library.searches
delegate: Controls.ItemDelegate {
Kirigami.Theme.colorSet: Kirigami.Theme.Window
Kirigami.Theme.inherit: false
id: completionDelegate
width: parent.width
height: Kirigami.Units.gridUnit * 2
text: model.display
onClicked: {
searchField.text = model.display
searchField.accepted()
}
}
visible: false
anchors.fill: parent
radius: 9
border.color: Kirigami.Theme.hoverColor
border.width: 2
color: "transparent"
}
}
}
Controls.Label {
id: searchTitle
leftPadding:5
Layout.maximumWidth: 70
text: model ? model.title : ""
elide: Qt.ElideRight
wrapMode: Text.WordWrap
Layout.maximumHeight: 40
}
Item {
height: 5
onAccepted: {
pageStack.clear()
pageStack.layers.clear()
if (text) {
Library.addSearch(text)
pageStack.push("qrc:/SearchPage.qml", {
"searchQuery": text})
} else {
pageStack.replace("qrc:/LibraryPage.qml")
}
popup.close()
}
}
}
pageStack.anchors.bottomMargin: wideScreen ? playerFooter.minimizedPlayerHeight: playerFooter.minimizedPlayerHeight+bottombar.height
pageStack.anchors.leftMargin: wideScreen ? sidebar.width:0
pageStack.anchors.bottomMargin: playerFooter.minimizedPlayerHeight + 1
// media player
PlayerFooter {
id: playerFooter
anchors.topMargin: -root.header.height
anchors.fill: parent
footerSpacing: wideScreen ? 0 : bottombar.height
// only expand flicking area to full screen when it is open
z: (contentY === 0) ? -1 : 999
}
+21 -102
View File
@@ -40,13 +40,13 @@ Library &Library::instance()
FavouritesModel *Library::favourites()
{
auto future = m_database->getResults<Song>("select * from favourites natural join songs order by favourites.rowid desc");
auto future = m_database->getResults<Song>("select * from favourites natural join songs");
return new FavouritesModel(std::move(future), this);
}
void Library::addFavourite(const QString &videoId, const QString &title, const QString &artist, const QString &album)
void Library::addFavourite(const QString &videoId, const QString &title)
{
connectFuture(addSong(videoId, title, artist, album), this, [=, this] {
connectFuture(addSong(videoId, title), this, [=, this] {
connectFuture(m_database->execute("insert or ignore into favourites (video_id) values (?)", videoId), this, &Library::favouritesChanged);
});
}
@@ -66,7 +66,7 @@ FavouriteWatcher *Library::favouriteWatcher(const QString &videoId)
SearchHistoryModel *Library::searches()
{
return new SearchHistoryModel(m_database->getResults<SingleValue<QString>>("select distinct (search_query) from searches order by search_id desc"), this);
return new SearchHistoryModel(m_database->getResults<SingleValue<QString>>("select (search_query) from searches order by search_id desc"), this);
}
void Library::addSearch(const QString &text)
@@ -74,40 +74,21 @@ void Library::addSearch(const QString &text)
connectFuture(m_database->execute("insert into searches (search_query) values (?)", text), this, &Library::searchesChanged);
}
void Library::removeSearch(const QString &text)
{
connectFuture(m_database->execute("delete from searches where search_query = ?", text), this, &Library::searchesChanged);
}
PlaybackHistoryModel *Library::playbackHistory()
{
auto future = m_database->getResults<PlayedSong>("select * from played_songs natural join songs");
return new PlaybackHistoryModel(std::move(future), this);
}
void Library::addPlaybackHistoryItem(const QString &videoId, const QString &title, const QString &artist, const QString &album)
void Library::addPlaybackHistoryItem(const QString &videoId, const QString &title)
{
connectFuture(addSong(videoId, title, artist, album), this, [=, this] {
connectFuture(addSong(videoId, title), this, [=, this] {
connectFuture(m_database->execute("insert or ignore into played_songs (video_id, plays) values (?, ?)", videoId, 0), this, [=, this] {
connectFuture(m_database->execute("update played_songs set plays = plays + 1 where video_id = ? ", videoId), this, &Library::playbackHistoryChanged);
});
});
}
void Library::removePlaybackHistoryItem(const QString &videoId)
{
connectFuture(m_database->execute("delete from played_songs where video_id = ?", videoId), this, &Library::playbackHistoryChanged);
}
WasPlayedWatcher *Library::wasPlayedWatcher(const QString& videoId)
{
if(videoId.isEmpty()){
return nullptr;
}
return new WasPlayedWatcher(this, videoId);
}
PlaybackHistoryModel *Library::mostPlayed()
{
auto future = m_database->getResults<PlayedSong>("select * from played_songs natural join songs order by plays desc limit 10");
@@ -119,10 +100,9 @@ QNetworkAccessManager &Library::nam()
return m_networkImageCacher;
}
QFuture<void> Library::addSong(const QString &videoId, const QString &title, const QString &artist, const QString &album)
QFuture<void> Library::addSong(const QString &videoId, const QString &title)
{
// replace is used here to update songs from times when we didn't store artist and album
return m_database->execute("insert or replace into songs (video_id, title, artist, album) values (?, ?, ?, ?)", videoId, title, artist, album);
return m_database->execute("insert or ignore into songs (video_id, title, artist, album) values (?, ?, null, null)", videoId, title);
}
void ThumbnailSource::setVideoId(const QString &id) {
@@ -142,32 +122,15 @@ void ThumbnailSource::setVideoId(const QString &id) {
return;
}
auto *reply = Library::instance().nam().get(QNetworkRequest(QUrl("https://i.ytimg.com/vi_webp/" % m_videoId % "/maxresdefault.webp")));
auto storeResult = [this, cacheLocation](QNetworkReply *reply) {
QFile file(cacheLocation);
file.open(QFile::WriteOnly);
file.write(reply->readAll());
setCachedPath(QUrl::fromLocalFile(cacheLocation));
reply->deleteLater();
};
connect(reply, &QNetworkReply::errorOccurred, this, [this, storeResult](auto error) {
if (error == QNetworkReply::NetworkError::ContentNotFoundError) {
qDebug() << "Naive thumbnail resolution failed, falling back to yt-dlp (slower)";
connectFuture(YTMusicThread::instance()->extractVideoInfo(m_videoId), this, [this, storeResult](auto info) {
auto *reply = Library::instance().nam().get(QNetworkRequest(QUrl(QString::fromStdString(info.thumbnail))));
connect(reply, &QNetworkReply::finished, this, [reply, storeResult]() {
storeResult(reply);
});
});
}
});
connect(reply, &QNetworkReply::finished, this, [reply, storeResult]() {
storeResult(reply);
auto future = YTMusicThread::instance()->extractVideoInfo(id);
connectFuture(future, this, [this, id, cacheLocation](video_info::VideoInfo &&info) {
auto *reply = Library::instance().nam().get(QNetworkRequest(QUrl(QString::fromStdString(info.thumbnail))));
connect(reply, &QNetworkReply::finished, this, [id, reply, this, cacheLocation]() {
QFile file(cacheLocation);
file.open(QFile::WriteOnly);
file.write(reply->readAll());
setCachedPath(QUrl::fromLocalFile(cacheLocation));
});
});
}
@@ -185,8 +148,7 @@ QHash<int, QByteArray> PlaybackHistoryModel::roleNames() const {
return {
{Roles::VideoId, "videoId"},
{Roles::Title, "title"},
{Roles::Artists, "artists"},
{Roles::ArtistsDisplayString, "artistsDisplayString"},
{Roles::Artist, "artists"},
{Roles::Plays, "plays"}
};
}
@@ -201,14 +163,7 @@ QVariant PlaybackHistoryModel::data(const QModelIndex &index, int role) const {
return m_playedSongs.at(index.row()).videoId;
case Roles::Title:
return m_playedSongs.at(index.row()).title;
case Roles::Artists:
return QVariant::fromValue(std::vector<meta::Artist> {
{
m_playedSongs.at(index.row()).artist.toStdString(),
{}
}
});
case Roles::ArtistsDisplayString:
case Roles::Artist:
return m_playedSongs.at(index.row()).artist;
case Roles::Plays:
return m_playedSongs.at(index.row()).plays;
@@ -231,8 +186,7 @@ QHash<int, QByteArray> FavouritesModel::roleNames() const {
return {
{Roles::VideoId, "videoId"},
{Roles::Title, "title"},
{Roles::Artists, "artists"},
{Roles::ArtistsDisplayString, "artistsDisplayString"}
{Roles::Artist, "artists"}
};
}
@@ -246,15 +200,8 @@ QVariant FavouritesModel::data(const QModelIndex &index, int role) const {
return m_favouriteSongs.at(index.row()).videoId;
case Roles::Title:
return m_favouriteSongs.at(index.row()).title;
case Roles::ArtistsDisplayString:
case Roles::Artist:
return m_favouriteSongs.at(index.row()).artist;
case Roles::Artists:
return QVariant::fromValue(std::vector<meta::Artist> {
{
m_favouriteSongs.at(index.row()).artist.toStdString(),
{}
}
});
}
Q_UNREACHABLE();
@@ -301,31 +248,3 @@ QVariant SearchHistoryModel::data(const QModelIndex &index, int role) const {
Q_UNREACHABLE();
}
WasPlayedWatcher::WasPlayedWatcher(Library* library, const QString& videoId)
: QObject(library), m_videoId(videoId), m_library(library)
{
connect(m_library, &Library::playbackHistoryChanged, this, &WasPlayedWatcher::query);
query();
}
void WasPlayedWatcher::query()
{
connectFuture(m_library->database().getResult<SingleValue<bool>>("select count(*) > 0 from played_songs where video_id = ?", m_videoId), this, &WasPlayedWatcher::update);
}
bool WasPlayedWatcher::wasPlayed() const
{
return m_wasPlayed;
}
void WasPlayedWatcher::update(std::optional<SingleValue<bool>> result)
{
if(result.has_value())
{
m_wasPlayed = result->value;
Q_EMIT wasPlayedChanged();
}
}
+6 -34
View File
@@ -8,7 +8,6 @@
#include <QQuickAsyncImageProvider>
#include <QNetworkAccessManager>
#include <QAbstractListModel>
#include <QSortFilterProxyModel>
#include <memory>
@@ -16,7 +15,6 @@
#include "asyncdatabase.h"
class FavouriteWatcher;
class WasPlayedWatcher;
struct Song {
using ColumnTypes = std::tuple<QString, QString, QString, QString>;
@@ -38,8 +36,7 @@ class FavouritesModel : public QAbstractListModel {
enum Roles {
VideoId = Qt::UserRole + 1,
Title,
Artists,
ArtistsDisplayString
Artist,
};
public:
@@ -71,16 +68,14 @@ struct PlayedSong {
class PlaybackHistoryModel : public QAbstractListModel {
Q_OBJECT
public:
enum Roles {
VideoId = Qt::UserRole + 1,
Title,
Artists,
ArtistsDisplayString,
Artist,
Plays
};
Q_ENUM(Roles);
public:
PlaybackHistoryModel(QFuture<std::vector<PlayedSong>> &&songs, QObject *parent = nullptr);
QHash<int, QByteArray> roleNames() const override;
@@ -119,20 +114,17 @@ public:
FavouritesModel *favourites();
Q_SIGNAL void favouritesChanged();
Q_INVOKABLE void addFavourite(const QString &videoId, const QString &title, const QString &artist, const QString &album);
Q_INVOKABLE void addFavourite(const QString &videoId, const QString &title);
Q_INVOKABLE void removeFavourite(const QString &videoId);
Q_INVOKABLE FavouriteWatcher *favouriteWatcher(const QString &videoId);
SearchHistoryModel *searches();
Q_SIGNAL void searchesChanged();
Q_INVOKABLE void addSearch(const QString &text);
Q_INVOKABLE void removeSearch(const QString &text);
PlaybackHistoryModel *playbackHistory();
Q_SIGNAL void playbackHistoryChanged();
Q_INVOKABLE void addPlaybackHistoryItem(const QString &videoId, const QString &title, const QString &artist, const QString &album);
Q_INVOKABLE void removePlaybackHistoryItem(const QString &videoId);
Q_INVOKABLE WasPlayedWatcher *wasPlayedWatcher(const QString &videoId);
Q_INVOKABLE void addPlaybackHistoryItem(const QString &videoId, const QString &title);
PlaybackHistoryModel *mostPlayed();
@@ -142,7 +134,7 @@ public:
}
private:
QFuture<void> addSong(const QString &videoId, const QString &title, const QString &artist, const QString &album);
QFuture<void> addSong(const QString &videoId, const QString &title);
QNetworkAccessManager m_networkImageCacher;
std::unique_ptr<ThreadedDatabase> m_database;
@@ -193,23 +185,3 @@ private:
Library *m_library;
bool m_isFavourite = false;
};
class WasPlayedWatcher : public QObject {
Q_OBJECT
Q_PROPERTY(bool wasPlayed READ wasPlayed NOTIFY wasPlayedChanged)
public:
WasPlayedWatcher(Library *Library, const QString &VideoId);
bool wasPlayed() const;
Q_SIGNAL void wasPlayedChanged();
private:
bool m_wasPlayed = false;
QString m_videoId;
Library *m_library;
Q_SLOT void update(std::optional<SingleValue<bool>> result);
Q_SLOT void query();
};
+4 -11
View File
@@ -5,14 +5,14 @@
#include <QApplication>
#include <QQmlApplicationEngine>
#include <QtQml>
#include <QSortFilterProxyModel>
#include <QUrl>
#include <KLocalizedContext>
#include <KLocalizedString>
#include <KCrash>
#include <KAboutData>
#include <QQuickWindow>
#include "declarativemprisplayer.h"
#include "mpris2.h"
#include "searchmodel.h"
#include "albummodel.h"
#include "videoinfoextractor.h"
@@ -22,9 +22,8 @@
#include "playlistmodel.h"
#include "playerutils.h"
#include "library.h"
#include "blur.h"
#include "asyncdatabase.h"
#include <mediaplayer2.h>
constexpr auto URI = "org.kde.ytmusic";
@@ -48,25 +47,19 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
qmlRegisterType<VideoInfoExtractor>(URI, 1, 0, "VideoInfoExtractor");
qmlRegisterType<ArtistModel>(URI, 1, 0, "ArtistModel");
qmlRegisterType<PlaylistModel>(URI, 1, 0, "PlaylistModel");
qmlRegisterUncreatableType<PlaybackHistoryModel>(URI, 1, 0, "PlaybackHistoryModel","");
qmlRegisterType<QSortFilterProxyModel>(URI, 1, 0, "SortFilterModel");
qmlRegisterType<Blur>(URI, 1, 0, "Blur");
qmlRegisterType<DeclarativeMprisPlayer>(URI, 1, 0, "MprisPlayer");
qmlRegisterSingletonType<UserPlaylistModel>(URI, 1, 0, "UserPlaylistModel", [](QQmlEngine *, QJSEngine *) {
return new UserPlaylistModel();
});
qmlRegisterSingletonType<ErrorHandler>(URI, 1, 0, "ErrorHandler", [](QQmlEngine *, QJSEngine *) {
return new ErrorHandler();
});
qmlRegisterSingletonType<PlayerUtils>(URI, 1, 0, "PlayerUtils", [](QQmlEngine *, QJSEngine *) {
return new PlayerUtils();
});
qmlRegisterSingletonInstance<Library>(URI, 1, 0, "Library", &Library::instance());
qmlRegisterType<ThumbnailSource>(URI, 1, 0, "ThumbnailSource");
qmlRegisterAnonymousType<FavouriteWatcher>(URI, 1);
qmlRegisterAnonymousType<WasPlayedWatcher>(URI, 1);
engine.rootContext()->setContextObject(new KLocalizedContext(&engine));
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
+16
View File
@@ -0,0 +1,16 @@
# SPDX-FileCopyrightText: 2021 Jonah Brüchert <[email protected]>
#
# SPDX-License-Identifier: BSD-2-Clause
add_library(mpris2 STATIC
mediaplayer2.cpp
mediaplayer2.h
mediaplayer2player.cpp
mediaplayer2player.h
mpris2.cpp
mpris2.h
declarativemprisplayer.cpp
declarativemprisplayer.h
)
target_link_libraries(mpris2 PUBLIC Qt::Core Qt::Gui Qt::DBus KF5::CoreAddons)
+61
View File
@@ -0,0 +1,61 @@
#include "declarativemprisplayer.h"
#include <QTimer>
DeclarativeMprisPlayer::DeclarativeMprisPlayer()
{
QTimer::singleShot(0, [this]() {
connect(m_mpris.player(), &MediaPlayer2Player::play, this, &DeclarativeMprisPlayer::play);
connect(m_mpris.player(), &MediaPlayer2Player::playPause, this, &DeclarativeMprisPlayer::playPause);
connect(m_mpris.player(), &MediaPlayer2Player::Stop, this, &DeclarativeMprisPlayer::stop);
});
}
QString DeclarativeMprisPlayer::playerName() const {
return m_mpris.playerName();
}
void DeclarativeMprisPlayer::setPlayerName(const QString &name) {
m_mpris.setPlayerName(name);
Q_EMIT playerNameChanged();
}
DeclarativeMprisPlayer::PlaybackState DeclarativeMprisPlayer::playbackState() {
return PlaybackState(m_mpris.player()->playbackState());
}
void DeclarativeMprisPlayer::setPlaybackState(PlaybackState state) {
m_mpris.player()->setPlaybackState(MediaPlayer2Player::PlaybackState(state));
}
void DeclarativeMprisPlayer::setAlbum(const QString &album) {
m_mpris.player()->setCurrentTrackAlbum(album);
}
QString DeclarativeMprisPlayer::album() const {
return m_mpris.player()->currentTrackAlbum();
}
QUrl DeclarativeMprisPlayer::albumArt() const {
return m_mpris.player()->currentTrackCoverArt();
}
void DeclarativeMprisPlayer::setAlbumArt(const QUrl &url) {
m_mpris.player()->setCurrentTrackCoverArt(url);
}
QString DeclarativeMprisPlayer::trackTitle() const
{
return m_mpris.player()->currentTrackTitle();
}
void DeclarativeMprisPlayer::setTrackTitle(const QString &title)
{
m_mpris.player()->setCurrentTrackTitle(title);
}
void DeclarativeMprisPlayer::setTrackDuration(qlonglong trackDuration)
{
return m_mpris.player()->setDuration(trackDuration);
}
qlonglong DeclarativeMprisPlayer::trackDuration() const { return 0; }
+66
View File
@@ -0,0 +1,66 @@
#pragma once
#include <QObject>
#include "mediaplayer2player.h"
#include "mpris2.h"
class DeclarativeMprisPlayer : public QObject
{
Q_OBJECT
Q_PROPERTY(QString playerName READ playerName WRITE setPlayerName NOTIFY playerNameChanged)
Q_PROPERTY(PlaybackState playbackState READ playbackState WRITE setPlaybackState NOTIFY playbackStateChanged)
Q_PROPERTY(QString album READ album WRITE setAlbum NOTIFY albumChanged)
Q_PROPERTY(QUrl albumArt READ albumArt WRITE setAlbumArt NOTIFY albumArtChanged)
Q_PROPERTY(QString trackTitle READ trackTitle WRITE setTrackTitle NOTIFY trackTitleChanged);
Q_PROPERTY(qlonglong trackDuration READ trackDuration WRITE setTrackDuration NOTIFY trackDurationChanged);
public:
enum PlaybackState {
PlaybackStopped = MediaPlayer2Player::PlaybackStopped,
PlaybackRunning = MediaPlayer2Player::PlaybackRunning,
PlaybackPaused = MediaPlayer2Player::PlaybackPaused
};
Q_ENUM(PlaybackState)
DeclarativeMprisPlayer();
QString playerName() const;
void setPlayerName(const QString &name);
Q_SIGNAL void playerNameChanged();
PlaybackState playbackState();
void setPlaybackState(PlaybackState state);
Q_SIGNAL void playbackStateChanged();
void setAlbum(const QString &album);
QString album() const;
Q_SIGNAL void albumChanged();
QUrl albumArt() const;
void setAlbumArt(const QUrl &url);
Q_SIGNAL void albumArtChanged();
QString trackTitle() const;
void setTrackTitle(const QString &title);
Q_SIGNAL void trackTitleChanged();
qlonglong trackDuration() const;
void setTrackDuration(qlonglong trackDuration);
Q_SIGNAL void trackDurationChanged();
Q_SIGNAL void changeVolume();
Q_SIGNAL void play();
Q_SIGNAL void playPause();
Q_SIGNAL void stop();
Q_SIGNAL void goPrevious();
Q_SIGNAL void goNext();
private:
Mpris2 m_mpris;
};
+71
View File
@@ -0,0 +1,71 @@
// SPDX-FileCopyrightText: 2014 (c) Sujith Haridasan <[email protected]>
// SPDX-FileCopyrightText: 2014 (c) Ashish Madeti <[email protected]>
// SPDX-FileCopyrightText: 2016 (c) Matthieu Gallien <[email protected]>
// SPDX-License-Identifier: GPL-3.0-or-later
#include "mediaplayer2.h"
#include <QCoreApplication>
#include <KAboutData>
MediaPlayer2::MediaPlayer2(QObject* parent)
: QDBusAbstractAdaptor(parent)
{
}
MediaPlayer2::~MediaPlayer2()
= default;
bool MediaPlayer2::CanQuit() const
{
return true;
}
bool MediaPlayer2::CanRaise() const
{
return true;
}
bool MediaPlayer2::HasTrackList() const
{
return false;
}
void MediaPlayer2::Quit()
{
QCoreApplication::quit();
}
void MediaPlayer2::Raise()
{
Q_EMIT raisePlayer();
}
QString MediaPlayer2::Identity() const
{
return KAboutData::applicationData().displayName();
}
QString MediaPlayer2::DesktopEntry() const
{
return KAboutData::applicationData().desktopFileName();
}
QStringList MediaPlayer2::SupportedUriSchemes() const
{
return QStringList() << QStringLiteral("file");
}
QStringList MediaPlayer2::SupportedMimeTypes() const
{
// KService::Ptr app = KService::serviceByDesktopName(KCmdLineArgs::aboutData()->appName());
// if (app) {
// return app->mimeTypes();
// }
return QStringList();
}
#include "moc_mediaplayer2.cpp"
+51
View File
@@ -0,0 +1,51 @@
/***************************************************************************
SPDX-FileCopyrightText: 2014 (c) Sujith Haridasan <[email protected]>
SPDX-FileCopyrightText: 2014 (c) Ashish Madeti <[email protected]>
SPDX-FileCopyrightText: 2016 (c) Matthieu Gallien <[email protected]>
SPDX-License-Identifier: GPL-3.0-or-later
***************************************************************************/
#pragma once
#include <QDBusAbstractAdaptor>
#include <QStringList>
class MediaPlayer2 : public QDBusAbstractAdaptor
{
Q_OBJECT
Q_CLASSINFO("D-Bus Interface", "org.mpris.MediaPlayer2") // Docs: https://specifications.freedesktop.org/mpris-spec/latest/Media_Player.html
Q_PROPERTY(bool CanQuit READ CanQuit CONSTANT)
Q_PROPERTY(bool CanRaise READ CanRaise CONSTANT)
Q_PROPERTY(bool HasTrackList READ HasTrackList CONSTANT)
Q_PROPERTY(QString Identity READ Identity CONSTANT)
Q_PROPERTY(QString DesktopEntry READ DesktopEntry CONSTANT)
Q_PROPERTY(QStringList SupportedUriSchemes READ SupportedUriSchemes CONSTANT)
Q_PROPERTY(QStringList SupportedMimeTypes READ SupportedMimeTypes CONSTANT)
public:
explicit MediaPlayer2(QObject* parent = nullptr);
~MediaPlayer2() override;
[[nodiscard]] bool CanQuit() const;
[[nodiscard]] bool CanRaise() const;
[[nodiscard]] bool HasTrackList() const;
[[nodiscard]] QString Identity() const;
[[nodiscard]] QString DesktopEntry() const;
[[nodiscard]] QStringList SupportedUriSchemes() const;
[[nodiscard]] QStringList SupportedMimeTypes() const;
public Q_SLOTS:
void Quit();
void Raise();
Q_SIGNALS:
void raisePlayer();
};
+383
View File
@@ -0,0 +1,383 @@
// SPDX-FileCopyrightText: 2014 (c) Sujith Haridasan <[email protected]>
// SPDX-FileCopyrightText: 2014 (c) Ashish Madeti <[email protected]>
// SPDX-FileCopyrightText: 2016 (c) Matthieu Gallien <[email protected]>
// SPDX-FileCopyrightText: 2022 (c) Jonah Brüchert <[email protected]>
// SPDX-License-Identifier: GPL-3.0-or-later
#include "mediaplayer2player.h"
#include <QStringList>
#include <QStringBuilder>
#include <QDBusConnection>
#include <QMetaClassInfo>
#include <QImage>
#include <QBuffer>
constexpr double MAX_RATE = 1.0;
constexpr const double MIN_RATE = 1.0;
MediaPlayer2Player::MediaPlayer2Player(QObject* parent)
: QDBusAbstractAdaptor(parent)
{
m_volume = 0; // TODO
m_canPlay = true; // TODO
signalPropertiesChange(QStringLiteral("Volume"), Volume());
m_mediaPlayerPresent = 1;
}
MediaPlayer2Player::~MediaPlayer2Player() = default;
QString MediaPlayer2Player::PlaybackStatus() const
{
switch (m_playbackState) {
case PlaybackStopped:
return QStringLiteral("Stopped");
case PlaybackRunning:
return QStringLiteral("Playing");
case PlaybackPaused:
return QStringLiteral("Paused");
}
Q_UNREACHABLE();
}
bool MediaPlayer2Player::CanGoNext() const
{
return m_canGoNext;
}
void MediaPlayer2Player::Next()
{
Q_EMIT next();
}
bool MediaPlayer2Player::CanGoPrevious() const
{
return m_canGoPrevious;
}
void MediaPlayer2Player::Previous()
{
Q_EMIT previous();
}
bool MediaPlayer2Player::CanPause() const
{
return m_canPlay;
}
void MediaPlayer2Player::Pause()
{
Q_EMIT pause();
}
void MediaPlayer2Player::PlayPause()
{
Q_EMIT playPause();
}
void MediaPlayer2Player::Stop()
{
Q_EMIT stop();
}
bool MediaPlayer2Player::CanPlay() const
{
return m_canPlay;
}
void MediaPlayer2Player::Play()
{
Q_EMIT play();
}
double MediaPlayer2Player::Volume() const
{
return m_volume;
}
void MediaPlayer2Player::setVolume(double volume)
{
m_volume = qBound(0.0, volume, 1.0);
Q_EMIT volumeChanged(m_volume);
signalPropertiesChange(QStringLiteral("Volume"), Volume());
}
void MediaPlayer2Player::setPropertyPosition(int newPositionInMs)
{
// TODO
}
QVariantMap MediaPlayer2Player::Metadata() const
{
return m_metadata;
}
qlonglong MediaPlayer2Player::Position() const
{
return m_position;
}
double MediaPlayer2Player::Rate() const
{
return m_rate;
}
void MediaPlayer2Player::setRate(double newRate)
{
if (newRate <= 0.0001 && newRate >= -0.0001) {
Pause();
} else {
m_rate = qBound(MinimumRate(), newRate, MaximumRate());
Q_EMIT rateChanged(m_rate);
signalPropertiesChange(QStringLiteral("Rate"), Rate());
}
}
double MediaPlayer2Player::MinimumRate() const
{
return MIN_RATE;
}
double MediaPlayer2Player::MaximumRate() const
{
return MAX_RATE;
}
bool MediaPlayer2Player::CanSeek() const
{
return m_playerIsSeekableChanged;
}
bool MediaPlayer2Player::CanControl() const
{
return true;
}
void MediaPlayer2Player::Seek(qlonglong Offset)
{
Q_EMIT seek(Offset);
}
void MediaPlayer2Player::SetPosition(const QDBusObjectPath &trackId, qlonglong pos)
{
Q_EMIT positionRequested(pos);
}
void MediaPlayer2Player::OpenUri(const QString &uri)
{
Q_UNUSED(uri);
}
//void MediaPlayer2Player::playerSourceChanged()
//{
// setCurrentTrack(m_manageAudioPlayer->playListPosition());
//}
void MediaPlayer2Player::playControlEnabledChanged()
{
signalPropertiesChange(QStringLiteral("CanPause"), CanPause());
signalPropertiesChange(QStringLiteral("CanPlay"), CanPlay());
Q_EMIT canPauseChanged();
Q_EMIT canPlayChanged();
}
void MediaPlayer2Player::skipBackwardControlEnabledChanged()
{
signalPropertiesChange(QStringLiteral("CanGoPrevious"), CanGoPrevious());
Q_EMIT canGoPreviousChanged();
}
void MediaPlayer2Player::skipForwardControlEnabledChanged()
{
signalPropertiesChange(QStringLiteral("CanGoNext"), CanGoNext());
Q_EMIT canGoNextChanged();
}
void MediaPlayer2Player::playerPlaybackStateChanged()
{
signalPropertiesChange(QStringLiteral("PlaybackStatus"), PlaybackStatus());
Q_EMIT playbackStatusChanged();
playerIsSeekableChanged();
}
void MediaPlayer2Player::playerIsSeekableChanged()
{
signalPropertiesChange(QStringLiteral("CanSeek"), CanSeek());
Q_EMIT canSeekChanged();
}
void MediaPlayer2Player::audioPositionChanged()
{
setPropertyPosition(m_position);
}
void MediaPlayer2Player::playerSeeked(qint64 position)
{
Q_EMIT Seeked(position * 1000);
}
void MediaPlayer2Player::audioDurationChanged()
{
m_metadata = getMetadataOfCurrentTrack();
signalPropertiesChange(QStringLiteral("Metadata"), Metadata());
skipBackwardControlEnabledChanged();
skipForwardControlEnabledChanged();
playerPlaybackStateChanged();
playerIsSeekableChanged();
setPropertyPosition(m_position);
}
QVariantMap MediaPlayer2Player::getMetadataOfCurrentTrack()
{
auto result = QVariantMap();
if (m_currentTrackId.isEmpty()) {
return {};
}
result[QStringLiteral("mpris:trackid")] = QVariant::fromValue<QDBusObjectPath>(QDBusObjectPath(m_currentTrackId));
result[QStringLiteral("mpris:length")] = m_duration * 1000;
//convert milli-seconds into micro-seconds
result[QStringLiteral("xesam:title")] = m_currentTrackTitle;
result[QStringLiteral("xesam:url")] = m_currentTrackUrl;
result[QStringLiteral("xesam:album")] = m_currentTrackAlbum;
result[QStringLiteral("xesam:artist")] = m_currentTrackArtist;
result[QStringLiteral("mpris:artUrl")] = m_coverArtUrl;
return result;
}
int MediaPlayer2Player::mediaPlayerPresent() const
{
return m_mediaPlayerPresent;
}
void MediaPlayer2Player::setDuration(qlonglong duration) {
m_duration = duration;
}
void MediaPlayer2Player::setPlaybackState(PlaybackState newState)
{
m_playbackState = newState;
}
void MediaPlayer2Player::setCurrentTrackTitle(const QString &title)
{
m_currentTrackTitle = title;
}
QString MediaPlayer2Player::currentTrackTitle() const
{
return m_currentTrackTitle;
}
void MediaPlayer2Player::setCurrentTrackUrl(const QUrl &url)
{
m_currentTrackUrl = url;
}
void MediaPlayer2Player::setCurrentTrackAlbum(const QString &album)
{
m_currentTrackAlbum = album;
}
QString MediaPlayer2Player::currentTrackAlbum() const
{
return m_currentTrackAlbum;
}
void MediaPlayer2Player::setCurrentTrackArtist(const QString &artist)
{
m_currentTrackArtist = artist;
}
QString MediaPlayer2Player::currentTrackArtist() const
{
return m_currentTrackArtist;
}
void MediaPlayer2Player::setCurrentTrackCoverArt(const QUrl &url)
{
m_coverArtUrl = url;
}
QUrl MediaPlayer2Player::currentTrackCoverArt() const
{
return m_coverArtUrl;
}
void MediaPlayer2Player::setCurrentTrackCoverArt(const QImage &image)
{
QByteArray data;
QBuffer buffer(&data);
image.save(&buffer);
m_coverArtUrl = QUrl(QString("data:image/png;base64," % data));
}
void MediaPlayer2Player::setCanGoPrevious(bool value)
{
m_canGoPrevious = value;
}
void MediaPlayer2Player::canGoForward(bool value)
{
m_canGoNext = value;
}
void MediaPlayer2Player::canPause(bool value)
{
m_canPause = value;
}
void MediaPlayer2Player::canPlay(bool value)
{
m_canPlay = value;
}
void MediaPlayer2Player::setPosition(qlonglong position) {
m_position = position;
}
void MediaPlayer2Player::setMediaPlayerPresent(int status)
{
if (m_mediaPlayerPresent != status) {
m_mediaPlayerPresent = status;
Q_EMIT mediaPlayerPresentChanged();
signalPropertiesChange(QStringLiteral("CanGoNext"), CanGoNext());
signalPropertiesChange(QStringLiteral("CanGoPrevious"), CanGoPrevious());
signalPropertiesChange(QStringLiteral("CanPause"), CanPause());
signalPropertiesChange(QStringLiteral("CanPlay"), CanPlay());
Q_EMIT canGoNextChanged();
Q_EMIT canGoPreviousChanged();
Q_EMIT canPauseChanged();
Q_EMIT canPlayChanged();
}
}
void MediaPlayer2Player::signalPropertiesChange(const QString &property, const QVariant &value)
{
QVariantMap properties;
properties[property] = value;
const int ifaceIndex = metaObject()->indexOfClassInfo("D-Bus Interface");
QDBusMessage msg = QDBusMessage::createSignal(QStringLiteral("/org/mpris/MediaPlayer2"),
QStringLiteral("org.freedesktop.DBus.Properties"), QStringLiteral("PropertiesChanged"));
msg << QLatin1String(metaObject()->classInfo(ifaceIndex).value());
msg << properties;
msg << QStringList();
QDBusConnection::sessionBus().send(msg);
}
#include "moc_mediaplayer2player.cpp"
+244
View File
@@ -0,0 +1,244 @@
// SPDX-FileCopyrightText: 2014 (c) Sujith Haridasan <[email protected]>
// SPDX-FileCopyrightText: 2014 (c) Ashish Madeti <[email protected]>
// SPDX-FileCopyrightText: 2016 (c) Matthieu Gallien <[email protected]>
// SPDX-FileCopyrightText: 2022 (c) Jonah Brüchert <[email protected]>
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#include <QDBusAbstractAdaptor>
#include <QDBusObjectPath>
#include <QDBusMessage>
#include <QUrl>
class MediaPlayListProxyModel;
class ManageAudioPlayer;
class ManageMediaPlayerControl;
class ManageHeaderBar;
class AudioWrapper;
class MediaPlayer2Player : public QDBusAbstractAdaptor
{
Q_OBJECT
Q_CLASSINFO("D-Bus Interface", "org.mpris.MediaPlayer2.Player") // Docs: https://specifications.freedesktop.org/mpris-spec/latest/Player_Interface.html
Q_PROPERTY(QString PlaybackStatus READ PlaybackStatus NOTIFY playbackStatusChanged)
Q_PROPERTY(double Rate READ Rate WRITE setRate NOTIFY rateChanged)
Q_PROPERTY(QVariantMap Metadata READ Metadata NOTIFY playbackStatusChanged)
Q_PROPERTY(double Volume READ Volume WRITE setVolume NOTIFY volumeChanged)
Q_PROPERTY(qlonglong Position READ Position WRITE setPropertyPosition NOTIFY playbackStatusChanged)
Q_PROPERTY(double MinimumRate READ MinimumRate CONSTANT)
Q_PROPERTY(double MaximumRate READ MaximumRate CONSTANT)
Q_PROPERTY(bool CanGoNext READ CanGoNext NOTIFY canGoNextChanged)
Q_PROPERTY(bool CanGoPrevious READ CanGoPrevious NOTIFY canGoPreviousChanged)
Q_PROPERTY(bool CanPlay READ CanPlay NOTIFY canPlayChanged)
Q_PROPERTY(bool CanPause READ CanPause NOTIFY canPauseChanged)
Q_PROPERTY(bool CanControl READ CanControl NOTIFY canControlChanged)
Q_PROPERTY(bool CanSeek READ CanSeek NOTIFY canSeekChanged)
Q_PROPERTY(int mediaPlayerPresent READ mediaPlayerPresent WRITE setMediaPlayerPresent NOTIFY mediaPlayerPresentChanged)
public:
explicit MediaPlayer2Player(QObject* parent = nullptr);
~MediaPlayer2Player() override;
QString PlaybackStatus() const;
double Rate() const;
QVariantMap Metadata() const;
double Volume() const;
qlonglong Position() const;
double MinimumRate() const;
double MaximumRate() const;
bool CanGoNext() const;
bool CanGoPrevious() const;
bool CanPlay() const;
bool CanPause() const;
bool CanSeek() const;
bool CanControl() const;
int currentTrack() const;
int mediaPlayerPresent() const;
void setDesktopFileName(const QString &fileName);
///
/// Signal to the mpris interface that the playback is now at a new position
///
void setPosition(qlonglong pos);
///
/// Signal the length of the current track to the mpris interface
///
void setDuration(qlonglong duration);
enum PlaybackState {
PlaybackStopped,
PlaybackRunning,
PlaybackPaused
};
///
/// Set the current playback state
///
void setPlaybackState(PlaybackState newState);
PlaybackState playbackState() const {
return m_playbackState;
}
///
/// Set the current track's title
///
void setCurrentTrackTitle(const QString &title);
QString currentTrackTitle() const;
///
/// Set the current track's URL
///
void setCurrentTrackUrl(const QUrl &url);
///
/// Set the album of the currently playing track
///
void setCurrentTrackAlbum(const QString &album);
QString currentTrackAlbum() const;
///
/// Set current track's artist
///
void setCurrentTrackArtist(const QString &artist);
QString currentTrackArtist() const;
///
/// Set cover art url
///
void setCurrentTrackCoverArt(const QUrl &url);
QUrl currentTrackCoverArt() const;
///
/// Set cover art image
///
void setCurrentTrackCoverArt(const QImage &image);
void setCanGoPrevious(bool);
void canGoForward(bool);
void canPause(bool value);
void canPlay(bool value);
Q_SIGNALS:
void Seeked(qlonglong Position);
void rateChanged(double newRate);
///
/// Emitted when the volume should be changed to newVol
///
void volumeChanged(double newVol);
void playbackStatusChanged();
void canGoNextChanged();
void canGoPreviousChanged();
void canPlayChanged();
void canPauseChanged();
void canControlChanged();
void canSeekChanged();
void currentTrackChanged();
void mediaPlayerPresentChanged();
///
/// Emitted when the player should skip to the next track
///
void next();
///
/// Emitted when it is requested to skip to the previous track
/// over the MPRIS interface
///
void previous();
///
/// Emitted when play / pause should be toggled
///
void playPause();
///
/// Emitted when the playback should be stopped
///
void stop();
///
/// Emitted when playback should be resumed
///
void play();
///
/// Emitted when the player should seek
///
void seek(qlonglong offset);
///
/// Emitted when the player should skip to the given position
///
void positionRequested(qlonglong position);
public Q_SLOTS:
void Next();
void Previous();
void Pause();
void PlayPause();
void Stop();
void Play();
void Seek(qlonglong Offset);
void SetPosition(const QDBusObjectPath &trackId, qlonglong pos);
void OpenUri(const QString &uri);
private Q_SLOTS:
void playControlEnabledChanged();
void skipBackwardControlEnabledChanged();
void skipForwardControlEnabledChanged();
void playerPlaybackStateChanged();
void playerIsSeekableChanged();
void audioPositionChanged();
void playerSeeked(qint64 position);
void audioDurationChanged();
private:
void signalPropertiesChange(const QString &property, const QVariant &value);
void setMediaPlayerPresent(int status);
void setRate(double newRate);
void setVolume(double volume);
void setPropertyPosition(int newPositionInMs);
QVariantMap getMetadataOfCurrentTrack();
QVariantMap m_metadata;
QString m_currentTrack;
QString m_currentTrackId;
double m_rate = 1.0;
double m_volume = 0.0;
int m_mediaPlayerPresent = 0;
bool m_canPause = true;
bool m_canPlay = false;
bool m_canGoNext = false;
bool m_canGoPrevious = false;
qlonglong m_position = 0;
bool m_playerIsSeekableChanged = false;
mutable QDBusMessage mProgressIndicatorSignal;
int mPreviousProgressPosition = 0;
// Current track metadata
qlonglong m_duration;
PlaybackState m_playbackState = PlaybackStopped;
QString m_currentTrackTitle;
QUrl m_currentTrackUrl;
QString m_currentTrackAlbum;
QString m_currentTrackArtist;
QUrl m_coverArtUrl;
};
+79
View File
@@ -0,0 +1,79 @@
/***************************************************************************
SPDX-FileCopyrightText: 2014 (c) Sujith Haridasan <[email protected]>
SPDX-FileCopyrightText: 2014 (c) Ashish Madeti <[email protected]>
SPDX-FileCopyrightText: 2016 (c) Matthieu Gallien <[email protected]>
SPDX-License-Identifier: GPL-3.0-or-later
***************************************************************************/
#include "mpris2.h"
#include "mediaplayer2.h"
#include "mediaplayer2player.h"
#include <QDBusConnection>
#if defined Q_OS_WIN
#include <Windows.h>
#else
#include <unistd.h>
#endif
Mpris2::Mpris2(QObject* parent)
: QObject(parent)
{
}
void Mpris2::initDBusService()
{
QString mspris2Name(QStringLiteral("org.mpris.MediaPlayer2.") + m_playerName);
bool success = QDBusConnection::sessionBus().registerService(mspris2Name);
// If the above failed, it's likely because we're not the first instance
// or the name is already taken. In that event the MPRIS2 spec wants the
// following:
if (!success) {
#if defined Q_OS_WIN
success = QDBusConnection::sessionBus().registerService(mspris2Name + QLatin1String(".instance") + QString::number(GetCurrentProcessId()));
#else
success = QDBusConnection::sessionBus().registerService(mspris2Name + QLatin1String(".instance") + QString::number(getpid()));
#endif
}
if (success) {
m_mp2 = std::make_unique<MediaPlayer2>(this);
m_mp2p = std::make_unique<MediaPlayer2Player>(this);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/org/mpris/MediaPlayer2"), this, QDBusConnection::ExportAdaptors);
connect(m_mp2.get(), &MediaPlayer2::raisePlayer, this, &Mpris2::raisePlayer);
}
}
Mpris2::~Mpris2()
= default;
QString Mpris2::playerName() const
{
return m_playerName;
}
void Mpris2::setPlayerName(const QString &playerName)
{
if (m_playerName == playerName) {
return;
}
m_playerName = playerName;
if (!m_playerName.isEmpty()) {
if (!m_mp2) {
initDBusService();
}
}
Q_EMIT playerNameChanged();
}
#include "moc_mpris2.cpp"
+63
View File
@@ -0,0 +1,63 @@
/***************************************************************************
SPDX-FileCopyrightText: 2014 (c) Sujith Haridasan <[email protected]>
SPDX-FileCopyrightText: 2014 (c) Ashish Madeti <[email protected]>
SPDX-FileCopyrightText: 2016 (c) Matthieu Gallien <[email protected]>
SPDX-License-Identifier: GPL-3.0-or-later
***************************************************************************/
#pragma once
#include <QObject>
#include <memory>
class MediaPlayer2;
class MediaPlayer2Player;
class Mpris2 : public QObject
{
Q_OBJECT
Q_PROPERTY(QString playerName
READ playerName
WRITE setPlayerName
NOTIFY playerNameChanged)
public:
explicit Mpris2(QObject* parent = nullptr);
~Mpris2() override;
[[nodiscard]] QString playerName() const;
MediaPlayer2Player *player() const {
return m_mp2p.get();
}
void setPlayerName(const QString &playerName);
Q_SIGNALS:
void raisePlayer();
void playerNameChanged();
void playListModelChanged();
void audioPlayerManagerChanged();
void manageMediaPlayerControlChanged();
void headerBarManagerChanged();
void audioPlayerChanged();
void showProgressOnTaskBarChanged();
private:
void initDBusService();
std::unique_ptr<MediaPlayer2> m_mp2;
std::unique_ptr<MediaPlayer2Player> m_mp2p;
QString m_playerName;
bool mShowProgressOnTaskBar = true;
};
+1 -11
View File
@@ -39,9 +39,7 @@ QHash<int, QByteArray> PlaylistModel::roleNames() const
return {
{Title, "title"},
{Artists, "artists"},
{VideoId, "videoId"},
{ThumbnailUrl, "thumbnailUrl"},
{ArtistsDisplayString, "artistsDisplayString"}
{VideoId, "videoId"}
};
}
@@ -57,14 +55,6 @@ QVariant PlaylistModel::data(const QModelIndex &index, int role) const
return QString::fromStdString(*m_playlist.tracks[index.row()].video_id);
}
return {};
case ThumbnailUrl:
if (!m_playlist.tracks[index.row()].thumbnails.empty()) {
return QString::fromStdString(m_playlist.tracks[index.row()].thumbnails.front().url);
} else {
return {};
}
case ArtistsDisplayString:
return PlaylistUtils::artistsToString(m_playlist.tracks[index.row()].artists);
}
Q_UNREACHABLE();
+1 -3
View File
@@ -26,9 +26,7 @@ public:
enum Role {
Title,
Artists,
VideoId,
ThumbnailUrl,
ArtistsDisplayString
VideoId
};
int rowCount(const QModelIndex &parent) const override;
+1 -10
View File
@@ -1,5 +1,5 @@
<!--
SPDX-FileCopyrightText: 2022 Jonah Brüchert <[email protected]>
SPDX-FileCopyrightText: 2021 Jonah Brüchert <[email protected]>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
-->
@@ -19,14 +19,5 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
<file>migrations/2022-05-20-194850_init/down.sql</file>
<file>migrations/2022-05-20-194850_init/up.sql</file>
<file alias="PlaybackHistory.qml">contents/ui/PlaybackHistory.qml</file>
<file alias="SongMenu.qml">contents/ui/SongMenu.qml</file>
<file alias="ListHeader.qml">contents/ui/ListHeader.qml</file>
<file alias="RoundedImage.qml">contents/ui/RoundedImage.qml</file>
<file alias="Sidebar.qml">contents/ui/Sidebar.qml</file>
<file alias="NavigationBar.qml">contents/ui/NavigationBar.qml</file>
<file alias="SearchHistoryPage.qml">contents/ui/SearchHistoryPage.qml</file>
<file alias="SearchWithDropdown.qml">contents/ui/SearchWithDropdown.qml</file>
<file>resources/favourites_placeholder.svg</file>
<file>resources/played_placeholder.svg</file>
</qresource>
</RCC>
-93
View File
@@ -1,93 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
SPDX-FileCopyrightText: 2023 Mathis Brüchert <[email protected]>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
-->
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="410mm"
height="200mm"
viewBox="0 0 410 199.99998"
version="1.1"
id="svg5"
xml:space="preserve"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="favourites_placeholder.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.64658308"
inkscape:cx="852.9453"
inkscape:cy="645.70202"
inkscape:window-width="1707"
inkscape:window-height="990"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"><inkscape:grid
type="xygrid"
id="grid1378"
originx="-36.839489"
originy="49.025167" /></sodipodi:namedview><defs
id="defs2" /><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-36.839491,49.025176)"><g
id="g3754"
transform="translate(1.0239803,48.048198)"><path
id="path2136"
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.86189;stroke-dasharray:none;stroke-opacity:0.882353"
d="m 440.67683,-32.99624 c -12.80337,1.985129 -26.29162,9.680256 -39.10109,11.658868 l -1.33455,11.4329407 -5.14902,44.1397733 c -1.82871,-1.736935 -4.17283,-2.833887 -6.67796,-3.126198 -6.39434,-0.746382 -12.18423,3.830112 -12.93037,10.224494 -0.0906,0.775869 -0.10208,1.545901 -0.0416,2.296047 l -1.26165,1.759668 c 1.98087,2.357577 2.98079,3.562436 4.86071,5.753708 0.007,0.0069 0.0142,0.01424 0.0213,0.02136 1.76301,1.667675 4.05668,2.802348 6.65171,3.105172 6.39434,0.746383 12.18421,-3.835358 12.93037,-10.22975 l 6.37844,-54.684776 33.64731,-5.196316 -5.00192,42.857776 c -1.8287,-1.736995 -4.16757,-2.833886 -6.67272,-3.126197 -6.39433,-0.746383 -12.18418,3.835419 -12.93036,10.22975 -0.0956,0.821011 -0.10393,1.630593 -0.0316,2.42214 l -2.30656,0.257437 4.76548,5.884602 c 0.0172,0.02136 0.0355,0.04169 0.0529,0.06304 l 0.23121,0.288955 0.005,-0.0053 c 1.84309,2.159621 4.47063,3.659097 7.51339,4.01414 6.39435,0.746384 12.17896,-3.830121 12.92511,-10.224492 l 6.23137,-53.402774 1.3398,-11.432941 z"
sodipodi:nodetypes="cccccsccccccccccscccscccsccc" /><path
id="path2134"
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.49536;stroke-dasharray:none;stroke-opacity:0.882353"
d="m 218.05645,-38.280046 a 20.012256,20.012265 17.519729 0 0 -25.10697,13.059977 c -3.40195,10.753794 -2.04184,28.2651872 22.1953,54.681772 l 0.004,-0.0029 0.003,0.005 c 35.01078,-7.713326 46.17698,-21.2704644 49.56589,-32.0283659 l -0.007,-0.00212 -10e-4,-3.858e-4 a 20.012256,20.012256 0 0 0 -13.05955,-25.1082743 20.012256,20.012256 0 0 0 -19.95876,4.738745 20.012256,20.012265 17.519729 0 0 -13.63368,-15.34313 z" /><path
id="path2132"
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.53185;stroke-dasharray:none;stroke-opacity:0.882353"
d="m 47.065658,-47.571342 6.262552,10.574758 10.981614,51.374016 C 61.210315,12.9092 57.718215,12.485874 54.357672,13.170999 45.779848,14.919656 40.24373,23.290951 41.992449,31.868766 43.741106,40.44659 52.112412,45.982697 60.690225,44.233979 69.268051,42.485321 74.804158,34.114026 73.055439,25.536212 L 61.28653,-29.699689 C 80.958225,-21.28437 83.410948,2.2050731 82.443029,5.8174106 l 3.749617,2.4150647 C 98.341428,-22.694892 68.952283,-23.159305 53.105037,-48.318315 Z"
sodipodi:nodetypes="cccssscccccc" /><path
id="path234"
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.53185;stroke-dasharray:none;stroke-opacity:0.882353"
d="m 47.083379,-47.229598 1.414458,6.93869 10.981613,51.374017 C 56.379942,9.6148752 52.887844,9.191549 49.527299,9.8766741 40.949475,11.625331 35.413357,19.996628 37.162076,28.574441 38.910733,37.152266 47.282039,42.688372 55.859853,40.939654 64.437677,39.190997 69.973785,30.819701 68.225065,22.241888 L 56.456157,-32.994014 C 71.640443,-20.266549 82.613067,-16.645 82.443029,5.8174106 94.591811,-25.109957 69.143154,-23.336999 53.295908,-48.496009 Z"
sodipodi:nodetypes="cccsssccccc" /><path
id="path1206"
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.86189;stroke-dasharray:none;stroke-opacity:0.882353"
d="m 440.67491,-32.994014 -4.78137,0.737131 -4.5e-4,0.0038 -38.43113,5.936232 -1.3359,11.436417 -5.14833,44.138482 c -1.82871,-1.736934 -4.1708,-2.833246 -6.67596,-3.125556 -6.39434,-0.746384 -12.18473,3.831504 -12.93086,10.225907 -0.74639,6.394351 3.8354,12.185169 10.22974,12.931338 6.39435,0.746384 12.1809,-3.831952 12.92706,-10.226364 l 6.38021,-54.684527 33.64971,-5.199365 -5.00263,42.860104 c -1.82871,-1.736996 -4.17036,-2.83713 -6.67551,-3.12944 -6.39435,-0.746384 -12.18131,3.835856 -12.92748,10.230207 -0.74638,6.394341 3.83194,12.18089 10.22635,12.927028 6.39437,0.746383 12.1809,-3.831951 12.92704,-10.226343 l 6.23365,-53.398483 z" /><path
id="path1761"
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.49536;stroke-dasharray:none;stroke-opacity:0.882353"
d="m 216.50808,-45.145682 a 20.012256,20.012265 17.519729 0 0 -25.10696,13.059976 c -3.40194,10.753794 -2.04184,28.2651868 22.19531,54.681772 l 0.004,-0.0029 0.003,0.005 C 248.6142,14.88484 259.7804,1.3277008 263.16933,-9.4302005 l -0.007,-0.00208 -10e-4,-3.863e-4 a 20.012256,20.012256 0 0 0 -13.05955,-25.1082752 20.012256,20.012256 0 0 0 -19.95876,4.738746 20.012256,20.012265 17.519729 0 0 -13.63368,-15.343131 z" /><circle
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:22.9781;stroke-dasharray:none;stroke-opacity:0.882353"
id="path2242"
cx="100.14573"
cy="-33.542244"
r="7.3963723" /><circle
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:34.0385;stroke-dasharray:none;stroke-opacity:0.882353"
id="circle2244"
cx="160.65797"
cy="30.305696"
r="10.956545" /><circle
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:34.4533;stroke-dasharray:none;stroke-opacity:0.882353"
id="circle2246"
cx="308.24826"
cy="-28.016548"
r="11.090084" /><circle
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:22.9781;stroke-dasharray:none;stroke-opacity:0.882353"
id="circle2248"
cx="321.48218"
cy="29.99456"
r="7.3963723" /></g></g></svg>

Before

Width:  |  Height:  |  Size: 7.1 KiB

-121
View File
@@ -1,121 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<!--
SPDX-FileCopyrightText: 2023 Mathis Brüchert <[email protected]>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
-->
<svg
width="410mm"
height="200mm"
viewBox="0 0 410.00001 199.99999"
version="1.1"
id="svg5"
xml:space="preserve"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="played_placeholder.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#999999"
borderopacity="1"
inkscape:showpageshadow="0"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="0.26286253"
inkscape:cx="549.717"
inkscape:cy="682.86645"
inkscape:window-width="853"
inkscape:window-height="990"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="layer1"
showguides="false"><inkscape:grid
type="xygrid"
id="grid1378"
originx="-39.082456"
originy="83.308533" /></sodipodi:namedview><defs
id="defs2"><inkscape:path-effect
effect="fillet_chamfer"
id="path-effect3380"
is_visible="true"
lpeversion="1"
nodesatellites_param="F,0,0,1,0,5.2916667,0,1 @ F,0,0,1,0,5.2916667,0,1 @ F,0,0,1,0,5.2916667,0,1"
unit="px"
method="auto"
mode="F"
radius="20"
chamfer_steps="1"
flexible="false"
use_knot_distance="true"
apply_no_radius="true"
apply_with_radius="true"
only_selected="false"
hide_knots="false" /></defs><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-39.082456,83.30855)"><g
id="g3784"
transform="translate(5.5779931,16.882453)"><path
id="path2136"
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.86189;stroke-dasharray:none;stroke-opacity:0.882353"
d="m 250.59587,-83.30855 c -12.80337,1.985129 -26.29162,9.680256 -39.10109,11.658868 l -1.33455,11.432941 -5.14902,44.139773 c -1.82871,-1.736935 -4.17283,-2.833887 -6.67796,-3.126198 -6.39434,-0.746382 -12.18423,3.830112 -12.93037,10.2244936 -0.0906,0.775869 -0.10208,1.545901 -0.0416,2.296047 l -1.26165,1.759668 c 1.98087,2.357577 2.98079,3.562436 4.86071,5.75370803 0.007,0.0069 0.0142,0.01424 0.0213,0.02136 1.76301,1.66767497 4.05668,2.80234797 6.65171,3.10517197 6.39434,0.746383 12.18421,-3.83535797 12.93037,-10.22975 l 6.37844,-54.6847756 33.64731,-5.196316 -5.00192,42.857775 c -1.8287,-1.736995 -4.16757,-2.833886 -6.67272,-3.126197 -6.39433,-0.746383 -12.18418,3.835419 -12.93036,10.229751 -0.0956,0.821011 -0.10393,1.630593 -0.0316,2.42214 l -2.30656,0.257437 4.76548,5.8846016 c 0.0172,0.02136 0.0355,0.04169 0.0529,0.06304 l 0.23121,0.288955 0.005,-0.0053 c 1.84309,2.159621 4.47063,3.659097 7.51339,4.01414 6.39435,0.746384 12.17896,-3.830121 12.92511,-10.2244916 l 6.23137,-53.402774 1.3398,-11.432941 z"
sodipodi:nodetypes="cccccsccccccccccscccscccsccc" /><path
id="path2132"
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.53185;stroke-dasharray:none;stroke-opacity:0.882353"
d="m 414.76305,-42.591595 1.52996,12.194434 -10.39972,51.494964 c -2.25772,-2.581735 -5.2919,-4.361549 -8.64712,-5.072299 -8.56418,-1.814311 -16.9776,3.657567 -18.79186,12.221761 -1.81431,8.564179 3.65758,16.977596 12.22178,18.791851 8.56417,1.81431 16.97759,-3.657572 18.79184,-12.221765 l 11.21655,-55.350711 c 14.689,15.5572013 7.57838,38.078497 5.25117,41.005941 l 2.47668,3.709204 c 23.46666,-23.52468967 -3.30326,-35.661777 -7.81246,-65.051881 z"
sodipodi:nodetypes="cccssscccccc" /><path
id="path234"
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2.53185;stroke-dasharray:none;stroke-opacity:0.882353"
d="m 414.64312,-42.271095 -1.46766,6.927632 -10.39973,51.494961 c -2.25773,-2.581737 -5.29189,-4.361547 -8.64712,-5.072297 -8.56417,-1.8143106 -16.9776,3.657569 -18.79185,12.221761 -1.81431,8.56418 3.65758,16.977596 12.22178,18.791851 8.56417,1.814311 16.97759,-3.657572 18.79184,-12.221765 l 11.21655,-55.35071 c 8.85494,17.7240249 17.47561,25.41804533 8.36872,45.952243 23.46665,-23.5246907 -0.58071,-32.03949 -5.08991,-61.429595 z"
sodipodi:nodetypes="cccsssccccc" /><path
id="path1206"
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.86189;stroke-dasharray:none;stroke-opacity:0.882353"
d="m 250.59395,-83.306324 -4.78137,0.737131 -4.5e-4,0.0038 -38.43113,5.936232 -1.3359,11.436417 -5.14833,44.138482 c -1.82871,-1.736935 -4.1708,-2.833247 -6.67596,-3.125557 -6.39434,-0.746384 -12.18473,3.831505 -12.93086,10.225908 -0.74639,6.3943506 3.8354,12.1851686 10.22974,12.9313376 6.39435,0.74638403 12.1809,-3.831952 12.92706,-10.2263636 l 6.38021,-54.684527 33.64971,-5.199365 -5.00263,42.860103 c -1.82871,-1.736995 -4.17036,-2.837129 -6.67551,-3.129439 -6.39435,-0.746384 -12.18131,3.835855 -12.92748,10.230207 -0.74638,6.394341 3.83194,12.1808896 10.22635,12.9270276 6.39437,0.746383 12.1809,-3.8319506 12.92704,-10.2263426 l 6.23365,-53.398483 z" /><circle
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:22.9781;stroke-dasharray:none;stroke-opacity:0.882353"
id="path2242"
cx="46.478828"
cy="-28.027006"
r="7.3963723" /><circle
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:34.0385;stroke-dasharray:none;stroke-opacity:0.882353"
id="circle2244"
cx="160.65797"
cy="29.776529"
r="10.956545" /><circle
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:34.4533;stroke-dasharray:none;stroke-opacity:0.882353"
id="circle2246"
cx="308.24826"
cy="-28.545715"
r="11.090084" /><circle
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:22.9781;stroke-dasharray:none;stroke-opacity:0.882353"
id="circle2248"
cx="358.07913"
cy="27.152491"
r="7.3963723" /><path
id="path3189"
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.564999;stroke-dasharray:none;stroke-opacity:1"
d="M 88.302198,-20.630633 A 28.690096,29.400146 0 0 0 59.612472,8.7696393 28.690096,29.400146 0 0 0 88.302198,38.169912 28.690096,29.400146 0 0 0 116.99244,8.7696393 28.690096,29.400146 0 0 0 88.302198,-20.630633 Z m 0,21.7413083 a 7.4738884,7.6588593 0 0 1 7.47397,7.658964 7.4738884,7.6588593 0 0 1 -7.47397,7.6589647 7.4738884,7.6588593 0 0 1 -7.473967,-7.6589647 7.4738884,7.6588593 0 0 1 7.473967,-7.658964 z" /><path
id="path3271"
style="opacity:0.31;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.564999;stroke-dasharray:none;stroke-opacity:1"
d="M 90.948048,-17.455631 A 28.690096,29.400146 0 0 0 62.258307,11.94464 28.690096,29.400146 0 0 0 90.948048,41.344914 28.690096,29.400146 0 0 0 119.63829,11.94464 28.690096,29.400146 0 0 0 90.948048,-17.455631 Z m 0,21.7413065 a 7.4738884,7.6588593 0 0 1 7.47397,7.6589645 7.4738884,7.6588593 0 0 1 -7.47397,7.658966 7.4738884,7.6588593 0 0 1 -7.47397,-7.658966 7.4738884,7.6588593 0 0 1 7.47397,-7.6589645 z" /><path
id="path3325"
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.214388;stroke-dasharray:none;stroke-opacity:1"
inkscape:transform-center-x="-4.959854"
inkscape:transform-center-y="4.9598554"
d="m 239.8962,20.171856 a 4.3815311,4.3815311 0 0 0 -4.54524,5.504241 l 13.25331,49.461093 a 4.381492,4.381492 0 0 0 7.33034,1.964688 L 292.1424,40.893356 a 4.3814927,4.3814927 0 0 0 -1.96395,-7.330342 l -49.46109,-13.25257 a 4.3815311,4.3815311 0 0 0 -0.82116,-0.138588 z" /><path
id="path3383"
style="opacity:0.33;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.214388;stroke-dasharray:none;stroke-opacity:1"
inkscape:transform-center-x="-4.959769"
inkscape:transform-center-y="4.9598588"
d="m 243.6907,24.72525 c -3.0042,-0.215135 -5.32469,2.594953 -4.54523,5.504241 -0.32195,7.307721 10.08785,46.26688 10.08785,46.26688 l 4.6507,5.473874 0.007,-0.01556 c 1.73787,1.402494 4.25249,1.273523 5.83774,-0.29941 L 295.93673,45.44675 c 1.46747,-1.470769 1.70023,-3.769945 0.55731,-5.504982 l 0.004,-0.0022 -0.0334,-0.04447 c -0.069,-0.101093 -0.14213,-0.199256 -0.21937,-0.294223 l -3.74508,-4.49848 c -14.28035,8.610206 -33.42491,-5.131775 -47.989,-10.238538 -0.2687,-0.07216 -0.54366,-0.118568 -0.82116,-0.138588 z"
sodipodi:nodetypes="ccccccccccccccc" /></g></g></svg>

Before

Width:  |  Height:  |  Size: 8.9 KiB

+1 -23
View File
@@ -3,9 +3,6 @@
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
#include "searchmodel.h"
#include "playlistutils.h"
#include <ranges>
SearchModel::SearchModel(QObject *parent)
: AbstractYTMusicModel(parent)
@@ -24,7 +21,6 @@ SearchModel::SearchModel(QObject *parent)
beginResetModel();
setLoading(false);
m_searchResults = results;
endResetModel();
});
});
@@ -121,22 +117,6 @@ QVariant SearchModel::data(const QModelIndex &index, int role) const
return QString();
}, m_searchResults.at(index.row()));
case ThumbnailUrl:
return std::visit([&](auto &&arg) {
if (!arg.thumbnails.empty()) {
return QString::fromStdString(arg.thumbnails.front().url);
}
return QString();
}, m_searchResults.at(index.row()));
case ArtistsDisplayString:
return QVariant::fromValue(std::visit([&](auto&& arg) {
using T = std::decay_t<decltype(arg)>;
if constexpr (std::is_same_v<T, search::Song> || std::is_same_v<T, search::Video> || std::is_same_v<T, search::Album>) {
return PlaylistUtils::artistsToString(arg.artists);
}
return QString();
}, m_searchResults.at(index.row())));
}
Q_UNREACHABLE();
@@ -151,9 +131,7 @@ QHash<int, QByteArray> SearchModel::roleNames() const
{Type, "type"},
{VideoId, "videoId"},
{Artists, "artists"},
{ArtistsDisplayString, "artistsDisplayString"},
{RadioPlaylistId, "radioPlaylistId"},
{ThumbnailUrl, "thumbnailUrl"}
};
}
@@ -175,7 +153,7 @@ void SearchModel::triggerItem(int row)
if constexpr (std::is_same_v<T, search::Album>) {
Q_EMIT openAlbum(QString::fromStdString(arg.browse_id));
} else if constexpr (std::is_same_v<T, search::Artist>) {
Q_EMIT openArtist(QString::fromStdString(arg.browse_id), QString::fromStdString(arg.radio_id.value_or("")), QString::fromStdString(arg.shuffle_id.value_or("")));
Q_EMIT openArtist(QString::fromStdString(arg.browse_id));
} else if constexpr (std::is_same_v<T, search::Playlist>) {
Q_EMIT openPlaylist(QString::fromStdString(arg.browse_id));
} else if constexpr (std::is_same_v<T, search::Song>) {
+2 -4
View File
@@ -19,7 +19,6 @@ class SearchModel : public AbstractYTMusicModel
public:
enum Type {
Artist,
ArtistsDisplayString,
Album,
Playlist,
Song,
@@ -32,8 +31,7 @@ public:
Type,
VideoId,
Artists,
RadioPlaylistId,
ThumbnailUrl
RadioPlaylistId
};
explicit SearchModel(QObject *parent = nullptr);
@@ -49,7 +47,7 @@ public:
Q_INVOKABLE void triggerItem(int row);
Q_SIGNAL void openAlbum(const QString &browseId);
Q_SIGNAL void openArtist(const QString &browseId,const QString &radioId, const QString &shuffleId);
Q_SIGNAL void openArtist(const QString &browseId);
Q_SIGNAL void openPlaylist(const QString &browseId);
Q_SIGNAL void openSong(const QString &videoId);
Q_SIGNAL void openVideo(const QString &videoId, const QString &title);
+1 -90
View File
@@ -11,8 +11,6 @@
#include <QRandomGenerator>
#include <QFutureWatcher>
#include <iostream>
#include "playlistutils.h"
UserPlaylistModel::UserPlaylistModel(QObject *parent)
@@ -57,15 +55,6 @@ UserPlaylistModel::UserPlaylistModel(QObject *parent)
connect(&YTMusicThread::instance().get(), &AsyncYTMusic::errorOccurred, this, [this] {
setLoading(false);
});
connect(this, &UserPlaylistModel::currentVideoIdChanged, this, [this]() {
// Clear lyrics, so we won't display old ones if the next song doesn't have any.
m_lyrics = {};
Q_EMIT lyricsChanged();
if (!m_currentVideoId.isEmpty()) {
fetchLyrics(m_currentVideoId);
}
});
}
int UserPlaylistModel::rowCount(const QModelIndex &parent) const
@@ -82,8 +71,6 @@ QVariant UserPlaylistModel::data(const QModelIndex &index, int role) const
return QString::fromStdString(m_playlist.tracks[index.row()].video_id);
case Artists:
return PlaylistUtils::artistsToString(m_playlist.tracks[index.row()].artists);
case Album:
return QString::fromStdString(m_playlist.tracks[index.row()].album.value_or(meta::Album()).name);
case IsCurrent:
return m_playlist.tracks[index.row()].video_id == m_currentVideoId.toStdString();
}
@@ -99,8 +86,7 @@ QHash<int, QByteArray> UserPlaylistModel::roleNames() const
{Title, "title"},
{VideoId, "videoId"},
{Artists, "artists"},
{Album, "album"},
{IsCurrent, "isCurrent"},
{IsCurrent, "isCurrent"}
};
}
@@ -129,20 +115,6 @@ QString UserPlaylistModel::nextVideoId() const
return QString::fromStdString((currentTrack + 1)->video_id);
}
QString UserPlaylistModel::previousVideoId() const
{
auto currentTrack = std::find_if(m_playlist.tracks.begin(), m_playlist.tracks.end(),
[this](const watch::Playlist::Track &track) {
return track.video_id == m_currentVideoId.toStdString();
});
if (currentTrack == m_playlist.tracks.end() || currentTrack - 1 == m_playlist.tracks.end()) {
return {};
}
return QString::fromStdString((currentTrack - 1)->video_id);
}
QString UserPlaylistModel::currentVideoId() const
{
return m_currentVideoId;
@@ -155,18 +127,6 @@ void UserPlaylistModel::setCurrentVideoId(const QString &videoId)
emitCurrentVideoChanged(old);
Q_EMIT currentVideoIdChanged();
Q_EMIT canSkipChanged();
Q_EMIT canSkipBackChanged();
}
int UserPlaylistModel::currentIndex() const
{
auto currentTrack = std::find_if(m_playlist.tracks.begin(), m_playlist.tracks.end(),
[this](const watch::Playlist::Track &track) {
return track.video_id == m_currentVideoId.toStdString();
});
return std::distance(m_playlist.tracks.begin(), currentTrack);
}
bool UserPlaylistModel::canSkip() const
@@ -180,32 +140,12 @@ bool UserPlaylistModel::canSkip() const
&& currentTrackIt != m_playlist.tracks.end()
&& !m_playlist.tracks.empty();
}
bool UserPlaylistModel::canSkipBack() const
{
const auto currentTrackIt = std::ranges::find_if(m_playlist.tracks, [this](const watch::Playlist::Track &track) {
return track.video_id == m_currentVideoId.toStdString();
});
return currentTrackIt != m_playlist.tracks.begin()
&& !m_playlist.tracks.empty();
}
void UserPlaylistModel::next()
{
setCurrentVideoId(nextVideoId());
Q_EMIT currentVideoIdChanged();
Q_EMIT canSkipChanged();
Q_EMIT canSkipBackChanged();
}
void UserPlaylistModel::previous()
{
setCurrentVideoId(previousVideoId());
Q_EMIT currentVideoIdChanged();
Q_EMIT canSkipChanged();
Q_EMIT canSkipBackChanged();
}
void UserPlaylistModel::skipTo(const QString &videoId)
@@ -215,8 +155,6 @@ void UserPlaylistModel::skipTo(const QString &videoId)
emitCurrentVideoChanged(old);
Q_EMIT currentVideoIdChanged();
Q_EMIT canSkipChanged();
Q_EMIT canSkipBackChanged();
}
void UserPlaylistModel::playNext(const QString &videoId, const QString &title, const std::vector<meta::Artist> &artists)
@@ -237,8 +175,6 @@ void UserPlaylistModel::playNext(const QString &videoId, const QString &title, c
endInsertRows();
setCurrentVideoId(videoId);
Q_EMIT canSkipChanged();
Q_EMIT canSkipBackChanged();
return;
}
@@ -248,8 +184,6 @@ void UserPlaylistModel::playNext(const QString &videoId, const QString &title, c
m_playlist.tracks.push_back(std::move(track));
endInsertRows();
Q_EMIT canSkipChanged();
Q_EMIT canSkipBackChanged();
return;
}
@@ -258,8 +192,6 @@ void UserPlaylistModel::playNext(const QString &videoId, const QString &title, c
m_playlist.tracks.insert(currentIt + 1, std::move(track));
endInsertRows();
Q_EMIT canSkipChanged();
Q_EMIT canSkipBackChanged();
}
void UserPlaylistModel::append(const QString &videoId, const QString &title, const std::vector<meta::Artist> &artists)
@@ -286,8 +218,6 @@ void UserPlaylistModel::clear()
setCurrentVideoId({});
Q_EMIT canSkipChanged();
Q_EMIT canSkipBackChanged();
}
void UserPlaylistModel::remove(const QString &videoId)
@@ -305,8 +235,6 @@ void UserPlaylistModel::remove(const QString &videoId)
endRemoveRows();
Q_EMIT canSkipChanged();
Q_EMIT canSkipBackChanged();
}
void UserPlaylistModel::shufflePlaylist()
@@ -343,28 +271,11 @@ void UserPlaylistModel::emitCurrentVideoChanged(const QString &oldVideoId)
Q_EMIT dataChanged(index(newIndex), index(newIndex), {IsCurrent});
}
void UserPlaylistModel::fetchLyrics(const QString &videoId)
{
auto future = YTMusicThread::instance()->fetchWatchPlaylist(videoId);
connectFuture(future, this, [=, this](const auto &playlist) {
if (playlist.lyrics) {
connectFuture(YTMusicThread::instance()->fetchLyrics(QString::fromStdString(*playlist.lyrics)), this, [=, this](const auto &lyrics) {
m_lyrics = lyrics;
Q_EMIT lyricsChanged();
});
}
});
}
bool UserPlaylistModel::shuffle() const
{
return m_shuffle;
}
QString UserPlaylistModel::lyrics() const {
return QString::fromStdString(m_lyrics.lyrics);
}
void UserPlaylistModel::setShuffle(bool shuffle)
{
m_shuffle = shuffle;
+1 -22
View File
@@ -4,7 +4,6 @@
#pragma once
#include <QAbstractListModel>
#include <QFuture>
#include <ytmusic.h>
@@ -21,20 +20,15 @@ class UserPlaylistModel : public AbstractYTMusicModel
// output
Q_PROPERTY(QString currentVideoId READ currentVideoId NOTIFY currentVideoIdChanged)
Q_PROPERTY(int currentIndex READ currentIndex NOTIFY currentVideoIdChanged)
Q_PROPERTY(bool canSkip READ canSkip NOTIFY canSkipChanged)
Q_PROPERTY(bool canSkipBack READ canSkipBack NOTIFY canSkipBackChanged)
Q_PROPERTY(QString lyrics READ lyrics NOTIFY lyricsChanged)
public:
enum Role {
Title = Qt::UserRole + 1,
VideoId,
Artists,
Album,
IsCurrent,
IsCurrent
};
Q_ENUM(Role);
explicit UserPlaylistModel(QObject *parent = nullptr);
@@ -47,20 +41,13 @@ public:
Q_SIGNAL void initialVideoIdChanged();
QString nextVideoId() const;
QString previousVideoId() const;
QString currentVideoId() const;
void setCurrentVideoId(const QString &videoId);
Q_SIGNAL void currentVideoIdChanged();
int currentIndex() const;
bool canSkip() const;
bool canSkipBack() const;
Q_SIGNAL void canSkipChanged();
Q_SIGNAL void canSkipBackChanged();
QString playlistId() const;
void setPlaylistId(const QString &playlistId);
@@ -70,12 +57,7 @@ public:
bool shuffle() const;
Q_SIGNAL void shuffleChanged();
QString lyrics() const;
Q_SIGNAL void lyricsChanged();
Q_INVOKABLE void next();
Q_INVOKABLE void previous();
Q_INVOKABLE void skipTo(const QString &videoId);
Q_INVOKABLE void playNext(const QString &videoId, const QString &title, const std::vector<meta::Artist> &artists);
Q_INVOKABLE void append(const QString &videoId, const QString &title, const std::vector<meta::Artist> &artists);
@@ -86,13 +68,10 @@ public:
private:
void emitCurrentVideoChanged(const QString &oldVideoId);
void fetchLyrics(const QString &videoId);
QString m_initialVideoId;
QString m_playlistId;
QString m_currentVideoId;
bool m_shuffle = false;
watch::Playlist m_playlist;
::Lyrics m_lyrics;
};
+14 -34
View File
@@ -22,7 +22,7 @@ void pyPrintPretty(py::handle obj) {
#define UNEXPORT __attribute__ ((visibility("hidden")))
constexpr auto TESTED_YTMUSICAPI_VERSION = "0.25.0";
constexpr auto TESTED_YTMUSICAPI_VERSION = "0.22.0";
struct UNEXPORT YTMusicPrivate {
py::scoped_interpreter guard {};
@@ -41,16 +41,10 @@ struct UNEXPORT YTMusicPrivate {
// Some of the called python code randomly fails if the encoding is not utf8
setenv("LC_ALL", "en_US.utf8", true);
auto oldVersion = module.attr("__dict__").contains("_version");
if (oldVersion) {
std::cerr << "Running with outdated and untested version of ytmusicapi." << std::endl;
const auto version = module.attr("_version").attr("__version__").cast<std::string>();
if (version != TESTED_YTMUSICAPI_VERSION) {
std::cerr << "Running with untested version of ytmusicapi." << std::endl;
std::cerr << "The currently tested and supported version is " << TESTED_YTMUSICAPI_VERSION << std::endl;
} else {
const auto version = module.attr("__version__").cast<std::string>();
if (version != TESTED_YTMUSICAPI_VERSION) {
std::cerr << "Running with untested version of ytmusicapi " << version << "." << std::endl;
std::cerr << "The currently tested and supported version is " << TESTED_YTMUSICAPI_VERSION << std::endl;
}
}
}
@@ -144,7 +138,7 @@ album::Track extract_album_track(py::handle track) {
video_info::Format extract_format(py::handle format) {
return {
optional_key<float>(format, "quality"),
optional_key<int>(format, "quality"),
format["url"].cast<std::string>(),
format["vcodec"].cast<std::string>(),
format["acodec"].cast<std::string>()
@@ -275,8 +269,7 @@ std::optional<search::SearchResultItem> extract_search_result(py::handle result)
result["videoId"].cast<std::string>(),
result["title"].cast<std::string>(),
extract_py_list<meta::Artist>(result["artists"]),
result["views"].cast<std::string>(),
extract_py_list<meta::Thumbnail>(result["thumbnails"])
result["views"].cast<std::string>()
},
result["duration"].cast<std::string>()
};
@@ -286,8 +279,7 @@ std::optional<search::SearchResultItem> extract_search_result(py::handle result)
result["videoId"].cast<std::string>(),
result["title"].cast<std::string>(),
extract_py_list<meta::Artist>(result["artists"]),
result["duration"].cast<std::string>(),
extract_py_list<meta::Thumbnail>(result["thumbnails"])
result["duration"].cast<std::string>()
},
extract_meta_album(result["album"]),
result["isExplicit"].cast<bool>()
@@ -299,24 +291,21 @@ std::optional<search::SearchResultItem> extract_search_result(py::handle result)
result["type"].cast<std::string>(),
extract_py_list<meta::Artist>(result["artists"]),
result["year"].cast<std::optional<std::string>>(),
result["isExplicit"].cast<bool>(),
extract_py_list<meta::Thumbnail>(result["thumbnails"])
result["isExplicit"].cast<bool>()
};
} else if (resultType == "playlist") {
return search::Playlist {
result["browseId"].cast<std::string>(),
result["title"].cast<std::string>(),
result["author"].cast<std::string>(),
result["itemCount"].cast<std::string>(),
extract_py_list<meta::Thumbnail>(result["thumbnails"])
result["itemCount"].cast<std::string>()
};
} else if (resultType == "artist") {
return search::Artist {
result["browseId"].cast<std::string>(),
result["artist"].cast<std::string>(),
optional_key<std::string>(result, "shuffleId"),
optional_key<std::string>(result, "radioId"),
extract_py_list<meta::Thumbnail>(result["thumbnails"])
optional_key<std::string>(result, "radioId")
};
} else {
std::cerr << "Warning: Unsupported search result type found" << std::endl;
@@ -485,25 +474,16 @@ video_info::VideoInfo YTMusic::extract_video_info(const std::string &video_id) c
watch::Playlist YTMusic::get_watch_playlist(const std::optional<std::string> &videoId,
const std::optional<std::string> &playlistId,
int limit) const
int limit,
const std::optional<std::string> &params) const
{
const auto playlist = d->get_ytmusic().attr("get_watch_playlist")("videoId"_a = videoId,
"playlistId"_a = playlistId,
"limit"_a = py::int_(limit));
"limit"_a = py::int_(limit),
"params"_a = params);
return {
extract_py_list<watch::Playlist::Track>(playlist["tracks"]),
playlist["lyrics"].cast<std::optional<std::string>>()
};
}
Lyrics YTMusic::get_lyrics(const std::string &browse_id) const
{
auto lyrics = d->get_ytmusic().attr("get_lyrics")(browse_id);
return {
lyrics["source"].cast<std::string>(),
lyrics["lyrics"].cast<std::string>()
};
}
+3 -13
View File
@@ -44,7 +44,6 @@ struct Media {
std::string title;
std::vector<meta::Artist> artists;
std::string duration;
std::vector<meta::Thumbnail> thumbnails;
};
struct Video : public Media {
@@ -56,7 +55,6 @@ struct Playlist {
std::string title;
std::string author;
std::string item_count;
std::vector<meta::Thumbnail> thumbnails;
};
struct Song : public Media {
@@ -71,7 +69,6 @@ struct Album {
std::vector<meta::Artist> artists;
std::optional<std::string> year;
bool is_explicit;
std::vector<meta::Thumbnail> thumbnails;
};
struct Artist {
@@ -79,7 +76,6 @@ struct Artist {
std::string artist;
std::optional<std::string> shuffle_id;
std::optional<std::string> radio_id;
std::vector<meta::Thumbnail> thumbnails;
};
using SearchResultItem = std::variant<Video, Playlist, Song, Album, Artist>;
@@ -234,7 +230,7 @@ struct Playlist {
namespace video_info {
struct Format {
std::optional<float> quality;
std::optional<int> quality;
std::string url;
std::string vcodec;
std::string acodec;
@@ -272,11 +268,6 @@ struct Playlist {
};
}
struct Lyrics {
std::string source;
std::string lyrics;
};
class YTMusic
{
public:
@@ -315,9 +306,8 @@ public:
/// https://ytmusicapi.readthedocs.io/en/latest/reference.html#ytmusicapi.YTMusic.get_watch_playlist
watch::Playlist get_watch_playlist(const std::optional<std::string> &videoId = std::nullopt,
const std::optional<std::string> &playlistId = std::nullopt,
int limit = 25) const;
Lyrics get_lyrics(const std::string &browse_id) const;
int limit = 25,
const std::optional<std::string> &params = std::nullopt) const;
// TODO wrap more methods