Compare commits
232
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
590a219f22 | ||
|
|
e68ff6d01c | ||
|
|
d5fcee258e | ||
|
|
d0bf9ecb99 | ||
|
|
068071d263 | ||
|
|
e9064602a6 | ||
|
|
71f574fce9 | ||
|
|
c2a7a9742f | ||
|
|
38a1018817 | ||
|
|
58d877a1e6 | ||
|
|
ea97b5a3f2 | ||
|
|
ea5085bfc7 | ||
|
|
26dd42bf0d | ||
|
|
8a5e0a26f9 | ||
|
|
6b22eb5af0 | ||
|
|
cbafceb01e | ||
|
|
843325d6c7 | ||
|
|
11a1ce02a8 | ||
|
|
8bc3012eb4 | ||
|
|
e108ec5105 | ||
|
|
57b1c07c33 | ||
|
|
f07076910a | ||
|
|
ce74b42e3e | ||
|
|
47e4831bca | ||
|
|
1a15e1578f | ||
|
|
94e8fce0f2 | ||
|
|
e40b9f6e10 | ||
|
|
e44182ee71 | ||
|
|
e1a32deb01 | ||
|
|
9261999563 | ||
|
|
1f5ed15cb9 | ||
|
|
49ad94e2f8 | ||
|
|
faad08c203 | ||
|
|
4237746082 | ||
|
|
989cecaf64 | ||
|
|
a6e3220054 | ||
|
|
0095677485 | ||
|
|
311111f7d8 | ||
|
|
1c590dd38c | ||
|
|
4d4dc7e8ca | ||
|
|
df7e69db9f | ||
|
|
d6f53b7485 | ||
|
|
8e8fe9871c | ||
|
|
9887e6cbc0 | ||
|
|
62ec82a85a | ||
|
|
bae859ff7c | ||
|
|
443183d4cd | ||
|
|
f762a6d8c1 | ||
|
|
4c30f20fed | ||
|
|
1faa7a13fc | ||
|
|
b7438cd452 | ||
|
|
387ea1153a | ||
|
|
d42138cc87 | ||
|
|
b64e23a4ce | ||
|
|
5b717c468b | ||
|
|
a277a5cfa1 | ||
|
|
2bcc2b4622 | ||
|
|
226d187275 | ||
|
|
72148cb630 | ||
|
|
58abc9d38a | ||
|
|
d166a66797 | ||
|
|
81e7627ad1 | ||
|
|
28f821e482 | ||
|
|
832674b5b3 | ||
|
|
28ff9be4ac | ||
|
|
89255083b9 | ||
|
|
3a8788896f | ||
|
|
22d5667995 | ||
|
|
bdfb92a736 | ||
|
|
4e3da60708 | ||
|
|
f7d5d31108 | ||
|
|
1d11e11ee6 | ||
|
|
d14e1189f2 | ||
|
|
378abb7d4b | ||
|
|
51d330e6f3 | ||
|
|
3963eb41ce | ||
|
|
af12a936d6 | ||
|
|
cc6661321d | ||
|
|
e70a8689bb | ||
|
|
6511812f2e | ||
|
|
668642d893 | ||
|
|
151281f58c | ||
|
|
f01057a244 | ||
|
|
e494a6f1a6 | ||
|
|
b43d967f69 | ||
|
|
6b94a459de | ||
|
|
1109b81870 | ||
|
|
9f404d37f6 | ||
|
|
32be492e82 | ||
|
|
c4de93e4d1 | ||
|
|
e5c817b955 | ||
|
|
cc2dcd1abb | ||
|
|
4b343157a2 | ||
|
|
52f330d6be | ||
|
|
435d530b14 | ||
|
|
a2d1288e06 | ||
|
|
72500ef1a8 | ||
|
|
6e67e63c32 | ||
|
|
634ccf7835 | ||
|
|
da6363d6cc | ||
|
|
0447eb3ca2 | ||
|
|
d49addb1ae | ||
|
|
bade37f9f2 | ||
|
|
5581c9f8e9 | ||
|
|
342984283c | ||
|
|
d313c4b79b | ||
|
|
eb3bb80669 | ||
|
|
c56bbb68f6 | ||
|
|
f5a54fc7e7 | ||
|
|
f2f653815b | ||
|
|
4edfc8db71 | ||
|
|
f368c8fd8c | ||
|
|
a0f7854c52 | ||
|
|
fb9e17621f | ||
|
|
d5b2c2c45c | ||
|
|
0e6abff8ff | ||
|
|
a762edafc7 | ||
|
|
d1bf0c711c | ||
|
|
996322c335 | ||
|
|
54d7c276bf | ||
|
|
234f364b33 | ||
|
|
0d019b9499 | ||
|
|
f4d144d53e | ||
|
|
49bff407ad | ||
|
|
1e2df2d6d8 | ||
|
|
7c3d83704b | ||
|
|
2796d9be83 | ||
|
|
4233a323b7 | ||
|
|
cf5d8df35d | ||
|
|
86f16fc7af | ||
|
|
7024e1526f | ||
|
|
d2b256f943 | ||
|
|
dcf1b9df98 | ||
|
|
0f0e8a5974 | ||
|
|
f703f1e357 | ||
|
|
3815759cd3 | ||
|
|
72242e328c | ||
|
|
c38805fa92 | ||
|
|
1ae12c868e | ||
|
|
9f3789eac5 | ||
|
|
a956177d6a | ||
|
|
b900c44188 | ||
|
|
e521c07102 | ||
|
|
e696298bc9 | ||
|
|
b65fbe83f4 | ||
|
|
ce6782a131 | ||
|
|
a37746440a | ||
|
|
eaf62c2770 | ||
|
|
147392f317 | ||
|
|
63d56acd88 | ||
|
|
28d07b370f | ||
|
|
d648ba9c93 | ||
|
|
a82dae6251 | ||
|
|
f99a17339b | ||
|
|
198266c081 | ||
|
|
756c2f8b56 | ||
|
|
abdba9922a | ||
|
|
7ca4095571 | ||
|
|
c3128c9855 | ||
|
|
20ae6c37cb | ||
|
|
3c2fdca5fc | ||
|
|
395c7ad140 | ||
|
|
630b54933d | ||
|
|
2293280316 | ||
|
|
14116b9cd2 | ||
|
|
4c7db5d5c9 | ||
|
|
f26bc80421 | ||
|
|
f934e99254 | ||
|
|
b6cd3c4a2b | ||
|
|
76763b9be1 | ||
|
|
1606f91124 | ||
|
|
cf8c982228 | ||
|
|
e94362854d | ||
|
|
40f3d5eab1 | ||
|
|
dc3b35bffa | ||
|
|
52c654179f | ||
|
|
a07a3c162f | ||
|
|
e4f8f96517 | ||
|
|
6fdb0321d6 | ||
|
|
be9b0d57e9 | ||
|
|
b4c6749a76 | ||
|
|
a98e3c7b92 | ||
|
|
26e7bbbdb8 | ||
|
|
efa7dd674a | ||
|
|
ef59e9d418 | ||
|
|
e1678a76ba | ||
|
|
56ffb52ce5 | ||
|
|
f0a2d2e79a | ||
|
|
182e77a68d | ||
|
|
98ccbfe99d | ||
|
|
53bfc641b4 | ||
|
|
1aabf2eefc | ||
|
|
0d54dfb660 | ||
|
|
8093f16f16 | ||
|
|
bac6ac3362 | ||
|
|
2f914d9f60 | ||
|
|
d3293d22ab | ||
|
|
4de3fdae81 | ||
|
|
9518c73415 | ||
|
|
05be539411 | ||
|
|
f12c4e3109 | ||
|
|
004ef28a15 | ||
|
|
afa9b25aff | ||
|
|
303ce7c816 | ||
|
|
e7cbd07b80 | ||
|
|
923ae5fc96 | ||
|
|
51a3b3c68e | ||
|
|
ef1582c67c | ||
|
|
2091e39b90 | ||
|
|
ab02e72f1f | ||
|
|
d498d6a407 | ||
|
|
6dc6e9538c | ||
|
|
3b0cbefe85 | ||
|
|
38e152fc52 | ||
|
|
0f111b43be | ||
|
|
ffbeab0b14 | ||
|
|
8860b62eec | ||
|
|
93433d8714 | ||
|
|
211a0c6f93 | ||
|
|
aadfc71200 | ||
|
|
1532adedb1 | ||
|
|
16ce656201 | ||
|
|
a398723bdb | ||
|
|
f7a4788e73 | ||
|
|
15425c7b01 | ||
|
|
96c2a505a7 | ||
|
|
b58e3fc2d4 | ||
|
|
4b1cbf11ad | ||
|
|
1037ac8c02 | ||
|
|
572f3c4c94 | ||
|
|
e48d6c8bb6 | ||
|
|
d717e7dff9 |
No files matched your search
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
org.kde.audiotube.json
|
||||||
+2
-1
@@ -3,4 +3,5 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||||
|
|
||||||
include:
|
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/reuse-lint.yml
|
||||||
|
- https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/flatpak.yml
|
||||||
+10
-5
@@ -4,11 +4,16 @@
|
|||||||
|
|
||||||
cmake_minimum_required(VERSION 3.16.0)
|
cmake_minimum_required(VERSION 3.16.0)
|
||||||
|
|
||||||
project(audiotube)
|
# 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})
|
||||||
|
|
||||||
include(FeatureSummary)
|
include(FeatureSummary)
|
||||||
|
|
||||||
set(PROJECT_VERSION "22.04")
|
|
||||||
set(QT5_MIN_VERSION 5.15)
|
set(QT5_MIN_VERSION 5.15)
|
||||||
set(KF5_MIN_VERSION 5.81)
|
set(KF5_MIN_VERSION 5.81)
|
||||||
|
|
||||||
@@ -33,11 +38,11 @@ ecm_setup_version(${PROJECT_VERSION}
|
|||||||
|
|
||||||
kde_enable_exceptions()
|
kde_enable_exceptions()
|
||||||
|
|
||||||
find_package(Qt5 ${QT5_MIN_VERSION} REQUIRED COMPONENTS Core Gui Qml QuickControls2 Svg Sql)
|
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)
|
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS Kirigami2 I18n CoreAddons Crash WindowSystem)
|
||||||
find_package(pybind11 REQUIRED)
|
find_package(pybind11 REQUIRED)
|
||||||
find_package(Ytdlp REQUIRED RUNTIME)
|
find_package(Ytdlp REQUIRED RUNTIME)
|
||||||
find_package(YTMusicAPI REQUIRED RUNTIME)
|
find_package(YTMusicAPI 0.24.0 REQUIRED RUNTIME)
|
||||||
|
|
||||||
ki18n_install(po)
|
ki18n_install(po)
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,12 @@
|
|||||||
|
|
||||||
AudioTube is a client for YouTube Music.
|
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
|
# Dependencies
|
||||||
|
|
||||||
It depends on Qt, Kirigami, KI18n, KCoreAddons and KCrash in addition to a few python packages:
|
It depends on Qt, Kirigami, KI18n, KCoreAddons and KCrash in addition to a few python packages:
|
||||||
|
|||||||
@@ -4,8 +4,20 @@
|
|||||||
|
|
||||||
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
find_package(Python3 REQUIRED COMPONENTS Interpreter)
|
||||||
|
|
||||||
execute_process(COMMAND ${Python3_EXECUTABLE} -c "import ytmusicapi" RESULT_VARIABLE YTMUSICAPI_CHECK_RESULT)
|
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)
|
||||||
|
|
||||||
if (${YTMUSICAPI_CHECK_RESULT} EQUAL 0)
|
if (${YTMUSICAPI_CHECK_RESULT} EQUAL 0)
|
||||||
set(YTMusicAPI_FOUND TRUE)
|
set(YTMusicAPI_FOUND TRUE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
find_package_handle_standard_args(YTMusicAPI
|
||||||
|
FOUND_VAR
|
||||||
|
YTMusicAPI_FOUND
|
||||||
|
REQUIRED_VARS
|
||||||
|
Python3_EXECUTABLE
|
||||||
|
VERSION_VAR
|
||||||
|
YTMusicAPI_VERSION
|
||||||
|
)
|
||||||
+22
-22
@@ -5,26 +5,6 @@
|
|||||||
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"yt-dlp\" --no-build-isolation"
|
"pip3 install --verbose --exists-action=i --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} \"yt-dlp\" --no-build-isolation"
|
||||||
],
|
],
|
||||||
"sources": [
|
"sources": [
|
||||||
{
|
|
||||||
"type": "file",
|
|
||||||
"url": "https://files.pythonhosted.org/packages/9a/bf/1bc7e3096ddc2c398b3d04176530a9c02efe08546d9730c9eef0b07a0a43/yt_dlp-2022.5.18-py2.py3-none-any.whl",
|
|
||||||
"sha256": "deec1009442312c1e2ee5298966842194d0e950b433f0d4fc844ef464b9c32a7"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "file",
|
|
||||||
"url": "https://files.pythonhosted.org/packages/11/dd/e015f3780f42dd9af62cf0107b44ea1298926627ecd70c17b0e484e95bcd/certifi-2022.5.18.1-py3-none-any.whl",
|
|
||||||
"sha256": "f1d53542ee8cbedbe2118b5686372fb33c297fcd6379b050cca0ef13a597382a"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"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",
|
"type": "file",
|
||||||
"url": "https://files.pythonhosted.org/packages/2a/18/70c32fe9357f3eea18598b23aa9ed29b1711c3001835f7cf99a9818985d0/Brotli-1.0.9.zip",
|
"url": "https://files.pythonhosted.org/packages/2a/18/70c32fe9357f3eea18598b23aa9ed29b1711c3001835f7cf99a9818985d0/Brotli-1.0.9.zip",
|
||||||
@@ -32,8 +12,28 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"url": "https://files.pythonhosted.org/packages/24/40/e249ac3845a2333ce50f1bb02299ffb766babdfe80ca9d31e0158ad06afd/pycryptodomex-3.14.1.tar.gz",
|
"url": "https://files.pythonhosted.org/packages/71/4c/3db2b8021bd6f2f0ceb0e088d6b2d49147671f25832fb17970e9b583d742/certifi-2022.12.7-py3-none-any.whl",
|
||||||
"sha256": "2ce76ed0081fd6ac8c74edc75b9d14eca2064173af79843c24fa62573263c1f2"
|
"sha256": "4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"url": "https://files.pythonhosted.org/packages/03/ee/114d7016d2e34f341e212fefb5e7bd87785077ebcfff0ad23a497c70eea1/mutagen-1.46.0-py3-none-any.whl",
|
||||||
|
"sha256": "8af0728aa2d5c3ee5a727e28d0627966641fddfe804c23eabb5926a4d770aed5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -7,33 +7,33 @@
|
|||||||
"sources": [
|
"sources": [
|
||||||
{
|
{
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"url": "https://files.pythonhosted.org/packages/ec/03/062e6444ce4baf1eac17a6a0ebfe36bb1ad05e1df0e20b110de59c278498/urllib3-1.26.9-py2.py3-none-any.whl",
|
"url": "https://files.pythonhosted.org/packages/71/4c/3db2b8021bd6f2f0ceb0e088d6b2d49147671f25832fb17970e9b583d742/certifi-2022.12.7-py3-none-any.whl",
|
||||||
"sha256": "44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"
|
"sha256": "4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"url": "https://files.pythonhosted.org/packages/11/dd/e015f3780f42dd9af62cf0107b44ea1298926627ecd70c17b0e484e95bcd/certifi-2022.5.18.1-py3-none-any.whl",
|
"url": "https://files.pythonhosted.org/packages/96/d7/1675d9089a1f4677df5eb29c3f8b064aa1e70c1251a0a8a127803158942d/charset-normalizer-3.0.1.tar.gz",
|
||||||
"sha256": "f1d53542ee8cbedbe2118b5686372fb33c297fcd6379b050cca0ef13a597382a"
|
"sha256": "ebea339af930f8ca5d7a699b921106c6e29c617fe9606fa7baa043c1cdae326f"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"url": "https://files.pythonhosted.org/packages/06/b3/24afc8868eba069a7f03650ac750a778862dc34941a4bebeb58706715726/charset_normalizer-2.0.12-py3-none-any.whl",
|
"url": "https://files.pythonhosted.org/packages/fc/34/3030de6f1370931b9dbb4dad48f6ab1015ab1d32447850b9fc94e60097be/idna-3.4-py3-none-any.whl",
|
||||||
"sha256": "6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"
|
"sha256": "90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"url": "https://files.pythonhosted.org/packages/2d/61/08076519c80041bc0ffa1a8af0cbd3bf3e2b62af10435d269a9d0f40564d/requests-2.27.1-py2.py3-none-any.whl",
|
"url": "https://files.pythonhosted.org/packages/d2/f4/274d1dbe96b41cf4e0efb70cbced278ffd61b5c7bb70338b62af94ccb25b/requests-2.28.2-py3-none-any.whl",
|
||||||
"sha256": "f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"
|
"sha256": "64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"url": "https://files.pythonhosted.org/packages/0e/5a/4a5316bddbb697d4b1787159291edfeffd10f73c08b59c7248b15291b601/ytmusicapi-0.22.0-py3-none-any.whl",
|
"url": "https://files.pythonhosted.org/packages/fe/ca/466766e20b767ddb9b951202542310cba37ea5f2d792dae7589f1741af58/urllib3-1.26.14-py2.py3-none-any.whl",
|
||||||
"sha256": "d042520f3f76eac2c1498130dbc4e8a4af21ca73496590a5ff054fc4da0af1d8"
|
"sha256": "75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "file",
|
"type": "file",
|
||||||
"url": "https://files.pythonhosted.org/packages/04/a2/d918dcd22354d8958fe113e1a3630137e0fc8b44859ade3063982eacd2a4/idna-3.3-py3-none-any.whl",
|
"url": "https://files.pythonhosted.org/packages/14/a9/5ba638ca601c74f169e0e0b055526566f2fa6b6402233a29aba607dca58e/ytmusicapi-0.25.0-py3-none-any.whl",
|
||||||
"sha256": "84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"
|
"sha256": "be355bb3409c0e6c25a95ffd92213bd216561cdd8a0493a36a82d1726ff6efb9"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -19,14 +19,18 @@ SPDX-License-Identifier: CC0-1.0
|
|||||||
<name xml:lang="fi">AudioTube</name>
|
<name xml:lang="fi">AudioTube</name>
|
||||||
<name xml:lang="fr">AudioTube</name>
|
<name xml:lang="fr">AudioTube</name>
|
||||||
<name xml:lang="hi">ओडियो-ट्यूब</name>
|
<name xml:lang="hi">ओडियो-ट्यूब</name>
|
||||||
|
<name xml:lang="id">AudioTube</name>
|
||||||
<name xml:lang="it">AudioTube</name>
|
<name xml:lang="it">AudioTube</name>
|
||||||
|
<name xml:lang="ka">AudioTube</name>
|
||||||
<name xml:lang="ko">AudioTube</name>
|
<name xml:lang="ko">AudioTube</name>
|
||||||
<name xml:lang="nl">AudioTube</name>
|
<name xml:lang="nl">AudioTube</name>
|
||||||
|
<name xml:lang="nn">AudioTube</name>
|
||||||
<name xml:lang="pa">ਆਡੀਓ-ਟਿਊਬ</name>
|
<name xml:lang="pa">ਆਡੀਓ-ਟਿਊਬ</name>
|
||||||
<name xml:lang="pl">AudioTube</name>
|
<name xml:lang="pl">AudioTube</name>
|
||||||
<name xml:lang="pt">AudioTube</name>
|
<name xml:lang="pt">AudioTube</name>
|
||||||
<name xml:lang="pt-BR">AudioTube</name>
|
<name xml:lang="pt-BR">AudioTube</name>
|
||||||
<name xml:lang="ro">AudioTube</name>
|
<name xml:lang="ro">AudioTube</name>
|
||||||
|
<name xml:lang="ru">AudioTube</name>
|
||||||
<name xml:lang="sk">AudioTube</name>
|
<name xml:lang="sk">AudioTube</name>
|
||||||
<name xml:lang="sl">AudioTube</name>
|
<name xml:lang="sl">AudioTube</name>
|
||||||
<name xml:lang="sv">AudioTube</name>
|
<name xml:lang="sv">AudioTube</name>
|
||||||
@@ -46,16 +50,20 @@ SPDX-License-Identifier: CC0-1.0
|
|||||||
<summary xml:lang="fi">Mukautuva YouTube Music -asiakas</summary>
|
<summary xml:lang="fi">Mukautuva YouTube Music -asiakas</summary>
|
||||||
<summary xml:lang="fr">Client convergent pour musique sur YouTube</summary>
|
<summary xml:lang="fr">Client convergent pour musique sur YouTube</summary>
|
||||||
<summary xml:lang="hi">अभिसृत यूट्यूब संगीत क्लाएंट</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="it">Client YouTube Music convergente</summary>
|
||||||
|
<summary xml:lang="ka">YouTube Music -ის კონვერგენტული კლიენტი</summary>
|
||||||
<summary xml:lang="ko">올인원 YouTube Music 클라이언트</summary>
|
<summary xml:lang="ko">올인원 YouTube Music 클라이언트</summary>
|
||||||
<summary xml:lang="nl">Convergente muziekclient van YouTube</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="pl">Adaptacyjny program do YouTube Music</summary>
|
||||||
<summary xml:lang="pt">Cliente de música do YouTube convergente</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="pt-BR">Um cliente convergente para o YouTube Music</summary>
|
||||||
<summary xml:lang="ro">Client convergent de muzică pentru YouTube</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="sl">Konvergentni odjemalec glasbe YouTube</summary>
|
||||||
<summary xml:lang="sv">Konvergent YouTube-musikprogram</summary>
|
<summary xml:lang="sv">Konvergent YouTube-musikprogram</summary>
|
||||||
<summary xml:lang="tr">Yakınsak YouTube Müzik istemcisi</summary>
|
<summary xml:lang="tr">Yakınsak YouTube Müzik İstemcisi</summary>
|
||||||
<summary xml:lang="uk">Зручний музичний клієнт YouTube</summary>
|
<summary xml:lang="uk">Зручний музичний клієнт YouTube</summary>
|
||||||
<summary xml:lang="x-test">xxConvergent YouTube Music clientxx</summary>
|
<summary xml:lang="x-test">xxConvergent YouTube Music clientxx</summary>
|
||||||
<summary xml:lang="zh-CN">桌面和移动设备通用 YouTube Music 客户端</summary>
|
<summary xml:lang="zh-CN">桌面和移动设备通用 YouTube Music 客户端</summary>
|
||||||
@@ -74,14 +82,18 @@ SPDX-License-Identifier: CC0-1.0
|
|||||||
<developer_name xml:lang="fi">KDE-yhteisö</developer_name>
|
<developer_name xml:lang="fi">KDE-yhteisö</developer_name>
|
||||||
<developer_name xml:lang="fr">Communauté de KDE</developer_name>
|
<developer_name xml:lang="fr">Communauté de KDE</developer_name>
|
||||||
<developer_name xml:lang="hi">केडीई समुदाय</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="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="ko">KDE 커뮤니티</developer_name>
|
||||||
<developer_name xml:lang="nl">KDE-gemeenschap</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="pa">ਕੇਡੀਈ ਕਮਿਊਨਟੀ</developer_name>
|
||||||
<developer_name xml:lang="pl">Społeczność KDE</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">Comunidade do KDE</developer_name>
|
||||||
<developer_name xml:lang="pt-BR">A Comunidade 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="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="sk">KDE komunita</developer_name>
|
||||||
<developer_name xml:lang="sl">Skupnost KDE</developer_name>
|
<developer_name xml:lang="sl">Skupnost KDE</developer_name>
|
||||||
<developer_name xml:lang="sv">KDE-gemenskapen</developer_name>
|
<developer_name xml:lang="sv">KDE-gemenskapen</developer_name>
|
||||||
@@ -92,6 +104,25 @@ SPDX-License-Identifier: CC0-1.0
|
|||||||
<content_rating type="oars-1.0"/>
|
<content_rating type="oars-1.0"/>
|
||||||
<url type="homepage">https://apps.kde.org/en/audiotube</url>
|
<url type="homepage">https://apps.kde.org/en/audiotube</url>
|
||||||
<releases>
|
<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>
|
||||||
|
<ul>
|
||||||
|
<li>Add library page which shows favourites and most played songs</li>
|
||||||
|
<li>Improve layout of the search popup</li>
|
||||||
|
<li>General performance improvements including startup</li>
|
||||||
|
</ul>
|
||||||
|
</description>
|
||||||
|
</release>
|
||||||
<release version="22.04" date="2022-04-26">
|
<release version="22.04" date="2022-04-26">
|
||||||
<url>https://www.plasma-mobile.org/2022/04/26/plasma-mobile-gear-22-04/</url>
|
<url>https://www.plasma-mobile.org/2022/04/26/plasma-mobile-gear-22-04/</url>
|
||||||
<description>
|
<description>
|
||||||
@@ -118,9 +149,18 @@ SPDX-License-Identifier: CC0-1.0
|
|||||||
</releases>
|
</releases>
|
||||||
<launchable type="desktop-id">org.kde.audiotube.desktop</launchable>
|
<launchable type="desktop-id">org.kde.audiotube.desktop</launchable>
|
||||||
<screenshots>
|
<screenshots>
|
||||||
|
<screenshot>
|
||||||
|
<image>https://cdn.kde.org/screenshots/audiotube/library.png</image>
|
||||||
|
</screenshot>
|
||||||
|
<screenshot>
|
||||||
|
<image>https://cdn.kde.org/screenshots/audiotube/player.png</image>
|
||||||
|
</screenshot>
|
||||||
<screenshot>
|
<screenshot>
|
||||||
<image>https://cdn.kde.org/screenshots/audiotube/desktop.png</image>
|
<image>https://cdn.kde.org/screenshots/audiotube/desktop.png</image>
|
||||||
</screenshot>
|
</screenshot>
|
||||||
|
<screenshot>
|
||||||
|
<image>https://cdn.kde.org/screenshots/audiotube/mobile_album.png</image>
|
||||||
|
</screenshot>
|
||||||
<screenshot>
|
<screenshot>
|
||||||
<image>https://cdn.kde.org/screenshots/audiotube/mobile_playlist.png</image>
|
<image>https://cdn.kde.org/screenshots/audiotube/mobile_playlist.png</image>
|
||||||
</screenshot>
|
</screenshot>
|
||||||
@@ -141,14 +181,18 @@ 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="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="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="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 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="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="hi">ऑडियोट्यूब यूट्यूब संगीत खोज सकता है, एल्बम और कलाकारों की सूची बना सकता है, स्वचालित रूप से उत्पन्न की गई गीतसूची, एल्बम बजा सकता है और आपकी अपनी खुद की प्लेलिस्ट को एक साथ रखने में मदद करता है।</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="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="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="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="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">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="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="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="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>
|
<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>
|
||||||
|
|||||||
@@ -12,14 +12,18 @@ Name[eu]=AudioTube
|
|||||||
Name[fi]=AudioTube
|
Name[fi]=AudioTube
|
||||||
Name[fr]=AudioTube
|
Name[fr]=AudioTube
|
||||||
Name[hi]=ओडियो-ट्यूब
|
Name[hi]=ओडियो-ट्यूब
|
||||||
|
Name[id]=AudioTube
|
||||||
Name[it]=AudioTube
|
Name[it]=AudioTube
|
||||||
|
Name[ka]=AudioTube
|
||||||
Name[ko]=AudioTube
|
Name[ko]=AudioTube
|
||||||
Name[nl]=AudioTube
|
Name[nl]=AudioTube
|
||||||
|
Name[nn]=AudioTube
|
||||||
Name[pa]=ਆਡੀਓ-ਟਿਊਬ
|
Name[pa]=ਆਡੀਓ-ਟਿਊਬ
|
||||||
Name[pl]=AudioTube
|
Name[pl]=AudioTube
|
||||||
Name[pt]=AudioTube
|
Name[pt]=AudioTube
|
||||||
Name[pt_BR]=AudioTube
|
Name[pt_BR]=AudioTube
|
||||||
Name[ro]=AudioTube
|
Name[ro]=AudioTube
|
||||||
|
Name[ru]=AudioTube
|
||||||
Name[sk]=AudioTube
|
Name[sk]=AudioTube
|
||||||
Name[sl]=AudioTube
|
Name[sl]=AudioTube
|
||||||
Name[sv]=AudioTube
|
Name[sv]=AudioTube
|
||||||
@@ -40,14 +44,18 @@ Comment[eu]=YouTube Music bezeroa
|
|||||||
Comment[fi]=YouTube Music -asiakas
|
Comment[fi]=YouTube Music -asiakas
|
||||||
Comment[fr]=Client de musique sur Youtube
|
Comment[fr]=Client de musique sur Youtube
|
||||||
Comment[hi]=यूट्यूब संगीत क्लाएंट
|
Comment[hi]=यूट्यूब संगीत क्लाएंट
|
||||||
|
Comment[id]=Klien YouTube Music
|
||||||
Comment[it]=Client YouTube Music
|
Comment[it]=Client YouTube Music
|
||||||
|
Comment[ka]=YouTube Music -ის კლიენტი
|
||||||
Comment[ko]=YouTube Music 클라이언트
|
Comment[ko]=YouTube Music 클라이언트
|
||||||
Comment[nl]=Muziekclient van YouTube
|
Comment[nl]=Muziekclient van YouTube
|
||||||
|
Comment[nn]=YouTube Music-klient
|
||||||
Comment[pa]=ਯੂਟਿਊਬ ਸੰਗੀਤ ਕਲਾਈਂਟ
|
Comment[pa]=ਯੂਟਿਊਬ ਸੰਗੀਤ ਕਲਾਈਂਟ
|
||||||
Comment[pl]=Program do YouTube Music
|
Comment[pl]=Program do YouTube Music
|
||||||
Comment[pt]=Cliente do YouTube Music
|
Comment[pt]=Cliente do YouTube Music
|
||||||
Comment[pt_BR]=Cliente YouTube Music
|
Comment[pt_BR]=Cliente YouTube Music
|
||||||
Comment[ro]=Client de muzică pentru YouTube
|
Comment[ro]=Client de muzică pentru YouTube
|
||||||
|
Comment[ru]=Клиент для YouTube Music
|
||||||
Comment[sk]=Hudobný klient YouTube
|
Comment[sk]=Hudobný klient YouTube
|
||||||
Comment[sl]=Glasbeni odjemalec Youtube
|
Comment[sl]=Glasbeni odjemalec Youtube
|
||||||
Comment[sv]=YouTube-musikprogram
|
Comment[sv]=YouTube-musikprogram
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"id": "org.kde.audiotube",
|
"id": "org.kde.audiotube",
|
||||||
"runtime": "org.kde.Platform",
|
"runtime": "org.kde.Platform",
|
||||||
"runtime-version": "5.15-21.08",
|
"runtime-version": "5.15-22.08",
|
||||||
"sdk": "org.kde.Sdk",
|
"sdk": "org.kde.Sdk",
|
||||||
"command": "audiotube",
|
"command": "audiotube",
|
||||||
"tags": ["nightly"],
|
"tags": ["nightly"],
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
"config-opts": ["-DPYBIND11_FINDPYTHON=ON", "-DPYBIND11_TEST=OFF"],
|
"config-opts": ["-DPYBIND11_FINDPYTHON=ON", "-DPYBIND11_TEST=OFF"],
|
||||||
"buildsystem": "cmake-ninja",
|
"buildsystem": "cmake-ninja",
|
||||||
"builddir": true,
|
"builddir": true,
|
||||||
"sources": [ { "type": "git", "url": "https://github.com/pybind/pybind11", "tag": "v2.9.1" } ]
|
"sources": [ { "type": "git", "url": "https://github.com/pybind/pybind11", "tag": "v2.10.3" } ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "org.kde.audiotube",
|
"name": "org.kde.audiotube",
|
||||||
|
|||||||
+166
-58
@@ -1,13 +1,13 @@
|
|||||||
# Copyright (C) YEAR This file is copyright:
|
# Copyright (C) YEAR This file is copyright:
|
||||||
# This file is distributed under the same license as the audiotube package.
|
# This file is distributed under the same license as the audiotube package.
|
||||||
#
|
#
|
||||||
# Zayed Al-Saidi <[email protected]>, 2022.
|
# Zayed Al-Saidi <[email protected]>, 2022, 2023.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2022-01-21 22:52+0400\n"
|
"PO-Revision-Date: 2023-02-02 11:59+0400\n"
|
||||||
"Last-Translator: Zayed Al-Saidi <[email protected]>\n"
|
"Last-Translator: Zayed Al-Saidi <[email protected]>\n"
|
||||||
"Language-Team: ar\n"
|
"Language-Team: ar\n"
|
||||||
"Language: ar\n"
|
"Language: ar\n"
|
||||||
@@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
|
"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"
|
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
|
||||||
"X-Generator: Lokalize 21.07.70\n"
|
"X-Generator: Lokalize 21.12.3\n"
|
||||||
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "NAME OF TRANSLATORS"
|
msgctxt "NAME OF TRANSLATORS"
|
||||||
@@ -28,47 +28,67 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "شغّل"
|
msgstr "شغّل"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "شغل التالي"
|
msgstr "اخلط"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "أضف إلى قائمة التّشغيل"
|
msgstr "افتح في المتصفّح"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: 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
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
"\"%1\"?"
|
"\"%1\"?"
|
||||||
msgstr "تشغيل الفيديو غير مدعوم حتى الآن. هل تريد تشغيل صوت فقط من \"%1\"؟"
|
msgstr "تشغيل الفيديو غير مدعوم حتى الآن. هل تريد تشغيل صوت فقط من \"%1\"؟"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "الألبومات"
|
msgstr "الألبومات"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "فردي"
|
msgstr "فردي"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "أغاني"
|
msgstr "أغاني"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "الفيديوهات"
|
msgstr "الفيديوهات"
|
||||||
@@ -83,82 +103,170 @@ msgstr "حسنًا"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "ألغِ"
|
msgstr "ألغِ"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "المفضلة"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "أظهر الكلّ"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "الأكثر تشغيلا"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "الأغاني المشغلة"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "تيوب الصوتي"
|
msgstr "تيوب الصوتي"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "المشغل الآن"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "صُفّ"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "الكلمات"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "أزل المسار"
|
msgstr "أزل المسار"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "امسح"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "اخلط"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "ألبث"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "لا يوجد وسائط تعمل"
|
msgstr "لا يوجد وسائط تعمل"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "وسع"
|
msgstr "المكتبة"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: 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
|
#, kde-format
|
||||||
msgid "Artists"
|
msgid "Artists"
|
||||||
msgstr "الفنّانون"
|
msgstr "الفنّانون"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
#: contents/ui/SearchPage.qml:30
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Playlists"
|
msgid "Playlists"
|
||||||
msgstr "قوائم التّشغيل"
|
msgstr "قوائم التّشغيل"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
#: contents/ui/SearchPage.qml:37
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "مجهول"
|
msgstr "مجهول"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play next"
|
msgid "No matching previous searches"
|
||||||
|
msgstr "لا يوجد تطابق من البحوث الأخيرة"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, kde-format
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr "أزل من تاريخ البحث"
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr " اطوِ الشريط الجانبي"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
msgstr "شغل التالي"
|
msgstr "شغل التالي"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Radio"
|
msgid "Add to queue"
|
||||||
msgstr "راديو"
|
msgstr "أضف للطابور"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Find music on YouTube Music"
|
msgid "Remove Favourite"
|
||||||
msgstr "اعثر على موسيقى على موسيقى يوتيوب"
|
msgstr "أزل المفضلة"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Add Favourite"
|
||||||
msgstr "ابحث"
|
msgstr "أضف للمفضلة"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
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 "Clear"
|
||||||
|
#~ msgstr "امسح"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "ألبث"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "وسع"
|
||||||
+172
-59
@@ -6,16 +6,16 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2022-04-22 18:44+0400\n"
|
"PO-Revision-Date: 2022-06-19 12:16+0400\n"
|
||||||
"Last-Translator: Kheyyam Gojayev <[email protected]>\n"
|
"Last-Translator: Kheyyam <[email protected]>\n"
|
||||||
"Language-Team: Azerbaijani <[email protected]>\n"
|
"Language-Team: Azerbaijani <[email protected]>\n"
|
||||||
"Language: az\n"
|
"Language: az\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Lokalize 21.12.3\n"
|
"X-Generator: Lokalize 22.04.2\n"
|
||||||
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "NAME OF TRANSLATORS"
|
msgctxt "NAME OF TRANSLATORS"
|
||||||
@@ -27,25 +27,46 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Başladın"
|
msgstr "Başladın"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Sonrakını oxudun"
|
msgstr "Qarışıq"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "Mahnı siyahısına əlavə edin"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: 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 "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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
@@ -54,22 +75,22 @@ msgstr ""
|
|||||||
"Video göstərilməsi hələlik dəstəklənmir. Siz yalnız \"%1\" videosunun səsini "
|
"Video göstərilməsi hələlik dəstəklənmir. Siz yalnız \"%1\" videosunun səsini "
|
||||||
"oynatmaq istəyirsiniz?"
|
"oynatmaq istəyirsiniz?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Albomlar"
|
msgstr "Albomlar"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "Musiqilər"
|
msgstr "Musiqilər"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "Mahnılar"
|
msgstr "Mahnılar"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Videolar"
|
msgstr "Videolar"
|
||||||
@@ -84,82 +105,174 @@ msgstr "OLDU"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "İmtina"
|
msgstr "İmtina"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Süçilmişlər"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "Hamısı göstərilsin"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "Daha çox dinlənilən"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Played Songs"
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "Oxudulan mahnılar"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "İndi səslənir"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Növbə"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Mahnını silin"
|
msgstr "Mahnını silin"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Təmizləyin"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Qarışıq"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Fasilə"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "Media faylı oynadılmır"
|
msgstr "Media faylı oynadılmır"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Açmaq"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
|
#, 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
|
||||||
|
#, kde-format
|
||||||
|
msgid "Played Songs"
|
||||||
|
msgstr "Oxudulan mahnılar"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:15
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown list of songs"
|
||||||
|
msgstr "Naməlum mahnı siyahısı"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:27
|
||||||
|
#, 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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Artists"
|
msgid "Artists"
|
||||||
msgstr "İfaçılar"
|
msgstr "İfaçılar"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
#: contents/ui/SearchPage.qml:30
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Playlists"
|
msgid "Playlists"
|
||||||
msgstr "Mahnı siyahıları"
|
msgstr "Mahnı siyahıları"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
#: contents/ui/SearchPage.qml:37
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Bilinməyən"
|
msgstr "Bilinməyən"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play next"
|
msgid "No matching previous searches"
|
||||||
msgstr "Sonrakını başladın"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Radio"
|
msgid "remove from search history"
|
||||||
msgstr "Radio"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
#: contents/ui/Sidebar.qml:179
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Find music on YouTube Music"
|
msgid "Collapse Sidebar"
|
||||||
msgstr "Musiqini YouTube Musiqi-də tapın"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Play Next"
|
||||||
msgstr "Axtarın"
|
msgstr "Sonrakını oxudun"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Favourites"
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Süçilmişlər"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Favourites"
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Süçilmişlər"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ 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 "Clear"
|
||||||
|
#~ msgstr "Təmizləyin"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "Fasilə"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "Açmaq"
|
||||||
+160
-78
@@ -1,23 +1,24 @@
|
|||||||
# Translation of audiotube.po to Catalan
|
# Translation of audiotube.po to Catalan
|
||||||
# Copyright (C) 2021 This_file_is_part_of_KDE
|
# Copyright (C) 2021-2023 This_file_is_part_of_KDE
|
||||||
# This file is distributed under the license LGPL version 2.1 or
|
# 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.
|
# version 3 or later versions approved by the membership of KDE e.V.
|
||||||
#
|
#
|
||||||
# Antoni Bella Pérez <[email protected]>, 2021.
|
# Antoni Bella Pérez <[email protected]>, 2021.
|
||||||
|
# Josep M. Ferrer <[email protected]>, 2022, 2023.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2021-12-05 16:03+0100\n"
|
"PO-Revision-Date: 2023-01-27 10:54+0100\n"
|
||||||
"Last-Translator: Antoni Bella Pérez <antonibella5@yahoo.com>\n"
|
"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
|
||||||
"Language-Team: Catalan <[email protected]>\n"
|
"Language-Team: Catalan <[email protected]>\n"
|
||||||
"Language: ca\n"
|
"Language: ca\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Lokalize 21.11.90\n"
|
"X-Generator: Lokalize 20.12.0\n"
|
||||||
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "NAME OF TRANSLATORS"
|
msgctxt "NAME OF TRANSLATORS"
|
||||||
@@ -29,25 +30,45 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Reprodueix"
|
msgstr "Reprodueix"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Reprodueix el següent"
|
msgstr "Barreja"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "Afegeix a la llista de reproducció"
|
msgstr "Obre en el navegador"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: contents/ui/AlbumPage.qml:44
|
||||||
|
#, kde-format
|
||||||
|
msgid "Album • %1"
|
||||||
|
msgstr "Àlbum • %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 "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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
@@ -56,22 +77,22 @@ msgstr ""
|
|||||||
"Encara no s'admet la reproducció de vídeo. Voleu reproduir només l'àudio de "
|
"Encara no s'admet la reproducció de vídeo. Voleu reproduir només l'àudio de "
|
||||||
"«%1»?"
|
"«%1»?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Àlbums"
|
msgstr "Àlbums"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "Individuals"
|
msgstr "Individuals"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "Cançons"
|
msgstr "Cançons"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Vídeos"
|
msgstr "Vídeos"
|
||||||
@@ -86,85 +107,146 @@ msgstr "D'acord"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancel·la"
|
msgstr "Cancel·la"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Preferides"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "Mostra-ho tot"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "Les més reproduïdes"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "Cançons reproduïdes"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Ara s'està reproduint"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Cua"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "Lletra"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Elimina la pista"
|
msgstr "Elimina la pista"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Neteja"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Barreja"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Pausa"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "No s'està reproduint cap suport"
|
msgstr "No s'està reproduint cap suport"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Expandeix"
|
msgstr "Biblioteca"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr "Artistes"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr "Llistes de reproducció"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "Desconeguda"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr "Reprodueix el següent"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "Ràdio"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr "Cerca a la Música de Youtube"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Cerca"
|
msgstr "Cerca"
|
||||||
|
|
||||||
#~ msgid "Play only Audio"
|
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
|
||||||
#~ msgstr "Reprodueix només l'àudio"
|
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
|
||||||
|
#, kde-format
|
||||||
|
msgid "Played Songs"
|
||||||
|
msgstr "Cançons reproduïdes"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:15
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown list of songs"
|
||||||
|
msgstr "Llista desconeguda de cançons"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:27
|
||||||
|
#, 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
|
||||||
|
#, kde-format
|
||||||
|
msgid "Artists"
|
||||||
|
msgstr "Artistes"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:30
|
||||||
|
#, kde-format
|
||||||
|
msgid "Playlists"
|
||||||
|
msgstr "Llistes de reproducció"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:37
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown"
|
||||||
|
msgstr "Desconeguda"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr "No hi ha cerques anteriors coincidents"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, 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:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "Reprodueix el següent"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr "Afegeix a la cua"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Elimina de les preferides"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Afegeix a les preferides"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr "Elimina de l'historial"
|
||||||
+146
-61
@@ -1,23 +1,24 @@
|
|||||||
# Translation of audiotube.po to Catalan (Valencian)
|
# Translation of audiotube.po to Catalan (Valencian)
|
||||||
# Copyright (C) 2021 This_file_is_part_of_KDE
|
# Copyright (C) 2021-2023 This_file_is_part_of_KDE
|
||||||
# This file is distributed under the license LGPL version 2.1 or
|
# 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.
|
# version 3 or later versions approved by the membership of KDE e.V.
|
||||||
#
|
#
|
||||||
# Antoni Bella Pérez <[email protected]>, 2021.
|
# Antoni Bella Pérez <[email protected]>, 2021.
|
||||||
|
# Josep M. Ferrer <[email protected]>, 2022, 2023.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2021-12-05 16:03+0100\n"
|
"PO-Revision-Date: 2023-01-27 10:54+0100\n"
|
||||||
"Last-Translator: Antoni Bella Pérez <antonibella5@yahoo.com>\n"
|
"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
|
||||||
"Language-Team: Catalan <[email protected]>\n"
|
"Language-Team: Catalan <[email protected]>\n"
|
||||||
"Language: ca@valencia\n"
|
"Language: ca@valencia\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Lokalize 21.11.90\n"
|
"X-Generator: Lokalize 20.12.0\n"
|
||||||
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "NAME OF TRANSLATORS"
|
msgctxt "NAME OF TRANSLATORS"
|
||||||
@@ -29,25 +30,45 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Reprodueix"
|
msgstr "Reproduïx"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Reprodueix el següent"
|
msgstr "Barreja"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "Afig a la llista de reproducció"
|
msgstr "Obri en el navegador"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: contents/ui/AlbumPage.qml:44
|
||||||
|
#, kde-format
|
||||||
|
msgid "Album • %1"
|
||||||
|
msgstr "Àlbum • %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 "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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
@@ -56,22 +77,22 @@ msgstr ""
|
|||||||
"Encara no s'admet la reproducció de vídeo. Voleu reproduir només l'àudio de "
|
"Encara no s'admet la reproducció de vídeo. Voleu reproduir només l'àudio de "
|
||||||
"«%1»?"
|
"«%1»?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Àlbums"
|
msgstr "Àlbums"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "Individuals"
|
msgstr "Individuals"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "Cançons"
|
msgstr "Cançons"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Vídeos"
|
msgstr "Vídeos"
|
||||||
@@ -86,82 +107,146 @@ msgstr "D'acord"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancel·la"
|
msgstr "Cancel·la"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Preferides"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "Mostra-ho tot"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "Les més reproduïdes"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "Cançons reproduïdes"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Ara s'està reproduint"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Cua"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "Lletra"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Elimina la pista"
|
msgstr "Elimina la pista"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Neteja"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Barreja"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Pausa"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "No s'està reproduint cap suport"
|
msgstr "No s'està reproduint cap suport"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Expandeix"
|
msgstr "Biblioteca"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
|
#, 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
|
||||||
|
#, kde-format
|
||||||
|
msgid "Played Songs"
|
||||||
|
msgstr "Cançons reproduïdes"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:15
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown list of songs"
|
||||||
|
msgstr "Llista desconeguda de cançons"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:27
|
||||||
|
#, 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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Artists"
|
msgid "Artists"
|
||||||
msgstr "Artistes"
|
msgstr "Artistes"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
#: contents/ui/SearchPage.qml:30
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Playlists"
|
msgid "Playlists"
|
||||||
msgstr "Llistes de reproducció"
|
msgstr "Llistes de reproducció"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
#: contents/ui/SearchPage.qml:37
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Desconeguda"
|
msgstr "Desconeguda"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play next"
|
msgid "No matching previous searches"
|
||||||
msgstr "Reprodueix el següent"
|
msgstr "No hi ha busques anteriors coincidents"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Radio"
|
msgid "remove from search history"
|
||||||
msgstr "Ràdio"
|
msgstr "elimina de l'historial de busques"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
#: contents/ui/Sidebar.qml:179
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Find music on YouTube Music"
|
msgid "Collapse Sidebar"
|
||||||
msgstr "Busca a la Música de Youtube"
|
msgstr "Reduïx la barra lateral"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Play Next"
|
||||||
msgstr "Busca"
|
msgstr "Reproduïx el següent"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr "Afig a la cua"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Elimina de les preferides"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Afig a les preferides"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr "Elimina de l'historial"
|
||||||
+142
-58
@@ -1,21 +1,21 @@
|
|||||||
# Copyright (C) YEAR This file is copyright:
|
# Copyright (C) YEAR This file is copyright:
|
||||||
# This file is distributed under the same license as the audiotube package.
|
# This file is distributed under the same license as the audiotube package.
|
||||||
# Vit Pelcak <vpelcak@suse.cz>, 2021, 2022.
|
# Vit Pelcak <vit@pelcak.org>, 2021, 2022.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2022-01-11 17:36+0100\n"
|
"PO-Revision-Date: 2022-06-28 13:58+0200\n"
|
||||||
"Last-Translator: Vit Pelcak <vpelcak@suse.cz>\n"
|
"Last-Translator: Vit Pelcak <vit@pelcak.org>\n"
|
||||||
"Language-Team: Czech <[email protected]>\n"
|
"Language-Team: Czech <[email protected]>\n"
|
||||||
"Language: cs\n"
|
"Language: cs\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||||
"X-Generator: Lokalize 21.12.0\n"
|
"X-Generator: Lokalize 22.04.2\n"
|
||||||
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "NAME OF TRANSLATORS"
|
msgctxt "NAME OF TRANSLATORS"
|
||||||
@@ -27,25 +27,45 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Přehrát"
|
msgstr "Přehrát"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Přehrát následující"
|
msgstr "Zamíchat"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "Přidat do seznamu skladeb"
|
msgstr "Otevřít v prohlížeči"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: 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 "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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
@@ -54,22 +74,22 @@ msgstr ""
|
|||||||
"Přehrávání videa ještě není podporováno. Chcete z \"%1\" přehrávat pouze "
|
"Přehrávání videa ještě není podporováno. Chcete z \"%1\" přehrávat pouze "
|
||||||
"zvuk?"
|
"zvuk?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Alba"
|
msgstr "Alba"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "Samotné"
|
msgstr "Samotné"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "Písně"
|
msgstr "Písně"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Videa"
|
msgstr "Videa"
|
||||||
@@ -84,82 +104,146 @@ msgstr "OK"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Zrušit"
|
msgstr "Zrušit"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Oblíbené"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "Zobrazit vše"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
|
msgstr "Nejčastěji hrané"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Nyní přehrávám"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Fronta"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "Text písně"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Odstranit skladbu"
|
msgstr "Odstranit skladbu"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Vyprázdnit"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Zamíchat"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Pozastavit"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "Nepřehrává se žádné médium"
|
msgstr "Nepřehrává se žádné médium"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Rozvinout"
|
msgstr "Knihovna"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
|
#, 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
|
||||||
|
#, kde-format
|
||||||
|
msgid "Played Songs"
|
||||||
|
msgstr "Přehrané skladby"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:15
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown list of songs"
|
||||||
|
msgstr "Neznámý seznam skladeb"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:27
|
||||||
|
#, 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 ""
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:28
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Artists"
|
msgid "Artists"
|
||||||
msgstr "Umělci"
|
msgstr "Umělci"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
#: contents/ui/SearchPage.qml:30
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Playlists"
|
msgid "Playlists"
|
||||||
msgstr "Seznamy skladeb"
|
msgstr "Seznamy skladeb"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
#: contents/ui/SearchPage.qml:37
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Neznámý"
|
msgstr "Neznámý"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play next"
|
msgid "No matching previous searches"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, kde-format
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
msgstr "Přehrát následující"
|
msgstr "Přehrát následující"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Radio"
|
msgid "Add to queue"
|
||||||
msgstr "Rádio"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Find music on YouTube Music"
|
msgid "Remove Favourite"
|
||||||
msgstr "Najít hudbu na Hudba YouTube"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Add Favourite"
|
||||||
msgstr "Hledat"
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr ""
|
||||||
+185
-76
@@ -1,22 +1,23 @@
|
|||||||
# Copyright (C) YEAR This file is copyright:
|
# Copyright (C) YEAR This file is copyright:
|
||||||
# This file is distributed under the same license as the audiotube package.
|
# This file is distributed under the same license as the audiotube package.
|
||||||
# Burkhard Lück <[email protected]>, 2021.
|
# Burkhard Lück <[email protected]>, 2021.
|
||||||
# Frederik Schwarzer <[email protected]>, 2021, 2022.
|
# Frederik Schwarzer <[email protected]>, 2021, 2022, 2023.
|
||||||
|
# Frank Steinmetzger <[email protected]>, 2022.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2022-02-20 10:37+0100\n"
|
"PO-Revision-Date: 2023-01-14 23:47+0100\n"
|
||||||
"Last-Translator: Frederik Schwarzer <[email protected]>\n"
|
"Last-Translator: Frederik Schwarzer <[email protected]>\n"
|
||||||
"Language-Team: German <kde-i18n-doc@kde.org>\n"
|
"Language-Team: German <kde-i18n-de@kde.org>\n"
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Lokalize 21.08.0\n"
|
"X-Generator: Lokalize 22.12.1\n"
|
||||||
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "NAME OF TRANSLATORS"
|
msgctxt "NAME OF TRANSLATORS"
|
||||||
@@ -28,25 +29,45 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Wiedergabe"
|
msgstr "Wiedergabe"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Nächste Wiedergabe"
|
msgstr "Zufällig"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "Zur Wiedergabeliste hinzufügen"
|
msgstr "In Browser öffnen"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: 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 "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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
@@ -55,22 +76,22 @@ msgstr ""
|
|||||||
"Die Video-Wiedergabe wird noch nicht unterstützt. Möchten Sie nur die "
|
"Die Video-Wiedergabe wird noch nicht unterstützt. Möchten Sie nur die "
|
||||||
"Audiospur von „%1“ abspielen?"
|
"Audiospur von „%1“ abspielen?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Alben"
|
msgstr "Alben"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "Singles"
|
msgstr "Singles"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "Songs"
|
msgstr "Songs"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Videos"
|
msgstr "Videos"
|
||||||
@@ -85,85 +106,173 @@ msgstr "OK"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Abbrechen"
|
msgstr "Abbrechen"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Favoriten"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "Alle anzeigen"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "Am meisten abgespielt"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "Abgespielte Stücke"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Aktueller Titel"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Warteschlange"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "Liedtext"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Stück entfernen"
|
msgstr "Stück entfernen"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Löschen"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Zufällig"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Pause"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "Es werden keine Medien wiedergegeben"
|
msgstr "Es werden keine Medien wiedergegeben"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Erweitern"
|
msgstr "Bibliothek"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr "Interpreten"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr "Wiedergabelisten"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "Unbekannt"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr "Nächste Wiedergabe"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "Radio"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr "Musik auf YouTube suchen"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Suchen"
|
msgstr "Suchen"
|
||||||
|
|
||||||
|
#: 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 "Abgespielte Stücke"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:15
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown list of songs"
|
||||||
|
msgstr "Unbekannte Liste von Liedern"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:27
|
||||||
|
#, 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
|
||||||
|
#, kde-format
|
||||||
|
msgid "Artists"
|
||||||
|
msgstr "Interpreten"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:30
|
||||||
|
#, kde-format
|
||||||
|
msgid "Playlists"
|
||||||
|
msgstr "Wiedergabelisten"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:37
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown"
|
||||||
|
msgstr "Unbekannt"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, kde-format
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr "Seitenleiste einklappen"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "Nächste Wiedergabe"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr "Zur Warteschlange hinzufügen"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Favoriten entfernen"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Favoriten hinzufügen"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ 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 "Clear"
|
||||||
|
#~ msgstr "Löschen"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "Pause"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "Erweitern"
|
||||||
|
|
||||||
#~ msgid "Play only Audio"
|
#~ msgid "Play only Audio"
|
||||||
#~ msgstr "Nur Audio abspielen"
|
#~ msgstr "Nur Audio abspielen"
|
||||||
+184
-75
@@ -6,16 +6,16 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2022-01-01 15:21+0000\n"
|
"PO-Revision-Date: 2022-12-31 15:53+0000\n"
|
||||||
"Last-Translator: Steve Allewell <[email protected]>\n"
|
"Last-Translator: Steve Allewell <[email protected]>\n"
|
||||||
"Language-Team: British English <kde-l10n-en_gb@kde.org>\n"
|
"Language-Team: English <kde-i18n-doc@kde.org>\n"
|
||||||
"Language: en_GB\n"
|
"Language: en_GB\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Lokalize 21.12.0\n"
|
"X-Generator: Lokalize 21.12.3\n"
|
||||||
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "NAME OF TRANSLATORS"
|
msgctxt "NAME OF TRANSLATORS"
|
||||||
@@ -27,25 +27,45 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Play"
|
msgstr "Play"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Play Next"
|
msgstr "Shuffle"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "Add to Playlist"
|
msgstr "Open in Browser"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: 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 "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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
@@ -54,22 +74,22 @@ msgstr ""
|
|||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
"\"%1\"?"
|
"\"%1\"?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Albums"
|
msgstr "Albums"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "Singles"
|
msgstr "Singles"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "Songs"
|
msgstr "Songs"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Videos"
|
msgstr "Videos"
|
||||||
@@ -84,85 +104,174 @@ msgstr "OK"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancel"
|
msgstr "Cancel"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Favourites"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: 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
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "Most played"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "played Songs"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Now Playing"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Queue"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "Lyrics"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Remove Track"
|
msgstr "Remove Track"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Clear"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Shuffle"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Pause"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "No media playing"
|
msgstr "No media playing"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Expand"
|
msgstr "Library"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr "Artists"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr "Playlists"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "Unknown"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr "Play next"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "Radio"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr "Find music on YouTube Music"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Search"
|
msgstr "Search"
|
||||||
|
|
||||||
|
#: 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 "Played Songs"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:15
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown list of songs"
|
||||||
|
msgstr "Unknown list of songs"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:27
|
||||||
|
#, kde-format
|
||||||
|
msgid "No songs here yet"
|
||||||
|
msgstr "No songs here yet"
|
||||||
|
|
||||||
|
#: 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
|
||||||
|
#, kde-format
|
||||||
|
msgid "Artists"
|
||||||
|
msgstr "Artists"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:30
|
||||||
|
#, kde-format
|
||||||
|
msgid "Playlists"
|
||||||
|
msgstr "Playlists"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:37
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown"
|
||||||
|
msgstr "Unknown"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Previous Searches:"
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr "Previous Searches:"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, kde-format
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr "Collapse Sidebar"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "Play Next"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr "Add to queue"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Remove Favourite"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Add Favourite"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ 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 "Clear"
|
||||||
|
#~ msgstr "Clear"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "Pause"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "Expand"
|
||||||
|
|
||||||
#~ msgid "Play only Audio"
|
#~ msgid "Play only Audio"
|
||||||
#~ msgstr "Play only Audio"
|
#~ msgstr "Play only Audio"
|
||||||
+183
-75
@@ -3,13 +3,13 @@
|
|||||||
# This file is distributed under the same license as the audiotube package.
|
# This file is distributed under the same license as the audiotube package.
|
||||||
#
|
#
|
||||||
# Automatically generated, 2021.
|
# Automatically generated, 2021.
|
||||||
# Eloy Cuadra <[email protected]>, 2021.
|
# Eloy Cuadra <[email protected]>, 2021, 2022, 2023.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2021-12-06 00:36+0100\n"
|
"PO-Revision-Date: 2023-01-29 00:58+0100\n"
|
||||||
"Last-Translator: Eloy Cuadra <[email protected]>\n"
|
"Last-Translator: Eloy Cuadra <[email protected]>\n"
|
||||||
"Language-Team: Spanish <[email protected]>\n"
|
"Language-Team: Spanish <[email protected]>\n"
|
||||||
"Language: es\n"
|
"Language: es\n"
|
||||||
@@ -17,7 +17,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Lokalize 21.11.90\n"
|
"X-Generator: Lokalize 22.12.1\n"
|
||||||
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "NAME OF TRANSLATORS"
|
msgctxt "NAME OF TRANSLATORS"
|
||||||
@@ -29,25 +29,45 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Reproducir"
|
msgstr "Reproducir"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Reproducir siguiente"
|
msgstr "Desordenar"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "Añadir a la lista de reproducción"
|
msgstr "Abrir en el navegador"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: contents/ui/AlbumPage.qml:44
|
||||||
|
#, kde-format
|
||||||
|
msgid "Album • %1"
|
||||||
|
msgstr "Álbum • %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 "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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
@@ -56,22 +76,22 @@ msgstr ""
|
|||||||
"La reproducción de vídeo aún no está permitida. ¿Desea reproducir solo el "
|
"La reproducción de vídeo aún no está permitida. ¿Desea reproducir solo el "
|
||||||
"sonido de «%1»?"
|
"sonido de «%1»?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Álbumes"
|
msgstr "Álbumes"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "Sencillos"
|
msgstr "Sencillos"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "Canciones"
|
msgstr "Canciones"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Vídeos"
|
msgstr "Vídeos"
|
||||||
@@ -86,85 +106,173 @@ msgstr "Aceptar"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancelar"
|
msgstr "Cancelar"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Favoritas"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "Mostrar todas"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "Más reproducidas"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "canciones reproducidas"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Reproduciendo"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Cola"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "Letra"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Eliminar pista"
|
msgstr "Eliminar pista"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Borrar todo"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Desordenar"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Pausar"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "Ningún medio en reproducción"
|
msgstr "Ningún medio en reproducción"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Expandir"
|
msgstr "Biblioteca"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr "Artistas"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr "Listas de reproducción"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "Desconocido"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr "Reproducir siguiente"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "Radio"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr "Encuentre música en YouTube Music"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Buscar"
|
msgstr "Buscar"
|
||||||
|
|
||||||
|
#: 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 "Canciones reproducidas"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:15
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown list of songs"
|
||||||
|
msgstr "Lista de canciones desconocida"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:27
|
||||||
|
#, 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
|
||||||
|
#, kde-format
|
||||||
|
msgid "Artists"
|
||||||
|
msgstr "Artistas"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:30
|
||||||
|
#, kde-format
|
||||||
|
msgid "Playlists"
|
||||||
|
msgstr "Listas de reproducción"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:37
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown"
|
||||||
|
msgstr "Desconocido"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr "No hay búsquedas anteriores coincidentes"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, 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:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "Reproducir siguiente"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr "Añadir a la cola"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Eliminar favorita"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Añadir favorita"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr "Eliminar del historial"
|
||||||
|
|
||||||
|
#~ 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 "Clear"
|
||||||
|
#~ msgstr "Borrar todo"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "Pausar"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "Expandir"
|
||||||
|
|
||||||
#~ msgid "Play only Audio"
|
#~ msgid "Play only Audio"
|
||||||
#~ msgstr "Reproducir solo el sonido"
|
#~ msgstr "Reproducir solo el sonido"
|
||||||
+184
-76
@@ -1,16 +1,16 @@
|
|||||||
# Translation for audiotube.po to Euskara/Basque (eu).
|
# Translation for audiotube.po to Euskara/Basque (eu).
|
||||||
# Copyright (C) 2021-2022, This file is copyright:
|
# Copyright (C) 2021-2023 This file is copyright:
|
||||||
# This file is distributed under the same license as the audiotube package.
|
# This file is distributed under the same license as the audiotube package.
|
||||||
# KDE euskaratzeko proiektuko arduraduna <[email protected]>.
|
# KDE euskaratzeko proiektuko arduraduna <[email protected]>.
|
||||||
#
|
#
|
||||||
# Translators:
|
# Translators:
|
||||||
# Iñigo Salvador Azurmendi <[email protected]>, 2021, 2022.
|
# Iñigo Salvador Azurmendi <[email protected]>, 2021, 2022, 2023.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2022-02-21 18:58+0100\n"
|
"PO-Revision-Date: 2023-01-27 21:02+0100\n"
|
||||||
"Last-Translator: Iñigo Salvador Azurmendi <[email protected]>\n"
|
"Last-Translator: Iñigo Salvador Azurmendi <[email protected]>\n"
|
||||||
"Language-Team: Basque <[email protected]>\n"
|
"Language-Team: Basque <[email protected]>\n"
|
||||||
"Language: eu\n"
|
"Language: eu\n"
|
||||||
@@ -18,7 +18,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Lokalize 21.12.2\n"
|
"X-Generator: Lokalize 22.12.1\n"
|
||||||
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "NAME OF TRANSLATORS"
|
msgctxt "NAME OF TRANSLATORS"
|
||||||
@@ -30,25 +30,45 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Jo"
|
msgstr "Jo"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Jo hurrengoa"
|
msgstr "Nahastu"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "Gehitu jotze-zerrendara"
|
msgstr "Ireki arakatzailean"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: contents/ui/AlbumPage.qml:44
|
||||||
|
#, kde-format
|
||||||
|
msgid "Album • %1"
|
||||||
|
msgstr "Albuma • %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 "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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
@@ -57,22 +77,22 @@ msgstr ""
|
|||||||
"Oraindik ez dago bideoa atzera jotzeko euskarririk. «%1»(r)en audioa "
|
"Oraindik ez dago bideoa atzera jotzeko euskarririk. «%1»(r)en audioa "
|
||||||
"bakarrik jo nahi duzu?"
|
"bakarrik jo nahi duzu?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Albumak"
|
msgstr "Albumak"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "Banakoa"
|
msgstr "Banakoa"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "Abestiak"
|
msgstr "Abestiak"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Bideoak"
|
msgstr "Bideoak"
|
||||||
@@ -87,85 +107,173 @@ msgstr "Ados"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Utzi"
|
msgstr "Utzi"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Gogokoak"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "Erakutsi denak"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "Gehien jotakoa"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "jotako abestiak"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Orain jotzen"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Ilara"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "Hitzak"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Kendu pista"
|
msgstr "Kendu pista"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Garbitu"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Nahastu"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Eten"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "Ez da euskarririk jotzen ari"
|
msgstr "Ez da euskarririk jotzen ari"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Zabaldu"
|
msgstr "Liburutegia"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr "Artistak"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr "Jotze-zerrendak"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "Ezezaguna"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr "Jo hurrengoa"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "Irratia"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr "Aurkitu musika «Youtube Music»en"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Bilatu"
|
msgstr "Bilatu"
|
||||||
|
|
||||||
|
#: 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 "Jotako abestiak"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:15
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown list of songs"
|
||||||
|
msgstr "Abesti zerrenda ezezaguna"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:27
|
||||||
|
#, 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
|
||||||
|
#, kde-format
|
||||||
|
msgid "Artists"
|
||||||
|
msgstr "Artistak"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:30
|
||||||
|
#, kde-format
|
||||||
|
msgid "Playlists"
|
||||||
|
msgstr "Jotze-zerrendak"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:37
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown"
|
||||||
|
msgstr "Ezezaguna"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr "Ez dago bat datorren aurreko bilaketarik"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, 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:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "Jo hurrengoa"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr "Gehitu ilaran"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Kendu gogokoa"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Gehitu gogokoa"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr "Kendu historiatik"
|
||||||
|
|
||||||
|
#~ 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 "Clear"
|
||||||
|
#~ msgstr "Garbitu"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "Eten"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "Zabaldu"
|
||||||
|
|
||||||
#~ msgid "Play only Audio"
|
#~ msgid "Play only Audio"
|
||||||
#~ msgstr "Audio bakarrik jo"
|
#~ msgstr "Audio bakarrik jo"
|
||||||
+187
-74
@@ -6,8 +6,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2022-01-11 22:47+0200\n"
|
"PO-Revision-Date: 2022-10-24 07:57+0300\n"
|
||||||
"Last-Translator: Tommi Nieminen <[email protected]>\n"
|
"Last-Translator: Tommi Nieminen <[email protected]>\n"
|
||||||
"Language-Team: Finnish <[email protected]>\n"
|
"Language-Team: Finnish <[email protected]>\n"
|
||||||
"Language: fi\n"
|
"Language: fi\n"
|
||||||
@@ -15,7 +15,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Lokalize 20.04.2\n"
|
"X-Generator: Lokalize 20.12.0\n"
|
||||||
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "NAME OF TRANSLATORS"
|
msgctxt "NAME OF TRANSLATORS"
|
||||||
@@ -27,25 +27,46 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Toista"
|
msgstr "Toista"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Toista seuraava"
|
msgstr "Sekoita"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "Lisää soittolistaan"
|
msgstr "Avaa selaimeen"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: 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 "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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
@@ -53,22 +74,22 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Videotoistoa ei vielä tueta. Haluatko toistaa videosta ”%1” vain äänen?"
|
"Videotoistoa ei vielä tueta. Haluatko toistaa videosta ”%1” vain äänen?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Albumit"
|
msgstr "Albumit"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "Singlet"
|
msgstr "Singlet"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "Kappaleet"
|
msgstr "Kappaleet"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Videot"
|
msgstr "Videot"
|
||||||
@@ -83,85 +104,177 @@ msgstr "OK"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Peru"
|
msgstr "Peru"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Suosikit"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "Näytä kaikki"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "Soitetuimmat"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Played Songs"
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "Soitetut kappaleet"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Nyt soi"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Jono"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Poista raita"
|
msgstr "Poista raita"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Tyhjennä"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Sekoita"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Tauko"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "Mitään ei toisteta"
|
msgstr "Mitään ei toisteta"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Laajenna"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr "Artistit"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr "Soittolistat"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "Tuntematon"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr "Toista seuraava"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "Radio"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr "Etsi musiikkia Youtube Musicista"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Etsi"
|
msgstr "Etsi"
|
||||||
|
|
||||||
|
#: 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 "Soitetut kappaleet"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:15
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown list of songs"
|
||||||
|
msgstr "Tuntematon kappaleluettelo"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:27
|
||||||
|
#, 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
|
||||||
|
#, kde-format
|
||||||
|
msgid "Artists"
|
||||||
|
msgstr "Artistit"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:30
|
||||||
|
#, kde-format
|
||||||
|
msgid "Playlists"
|
||||||
|
msgstr "Soittolistat"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:37
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown"
|
||||||
|
msgstr "Tuntematon"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, kde-format
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "Toista seuraava"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Favourites"
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Suosikit"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Favourites"
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Suosikit"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ 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 "Clear"
|
||||||
|
#~ msgstr "Tyhjennä"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "Tauko"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "Laajenna"
|
||||||
|
|
||||||
#~ msgid "Play only Audio"
|
#~ msgid "Play only Audio"
|
||||||
#~ msgstr "Toista vain ääni"
|
#~ msgstr "Toista vain ääni"
|
||||||
+186
-77
@@ -1,18 +1,19 @@
|
|||||||
# Xavier Besnard <[email protected]>, 2021.
|
# Xavier Besnard <[email protected]>, 2021, 2022.
|
||||||
|
# Xavier BESNARD <xavier.besnard]neuf.fr>, 2022, 2023.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2021-12-06 10:18+0100\n"
|
"PO-Revision-Date: 2023-01-29 10:52+0100\n"
|
||||||
"Last-Translator: Xavier Besnard <xavier.besnard@neuf.fr>\n"
|
"Last-Translator: Xavier BESNARD <xavier.besnard]neuf.fr>\n"
|
||||||
"Language-Team: French <[email protected]>\n"
|
"Language-Team: fr\n"
|
||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
"X-Generator: Lokalize 21.11.90\n"
|
"X-Generator: Lokalize 22.12.1\n"
|
||||||
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "NAME OF TRANSLATORS"
|
msgctxt "NAME OF TRANSLATORS"
|
||||||
@@ -24,25 +25,45 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Lire"
|
msgstr "Lire"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Lire le suivant"
|
msgstr "Mélanger"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "Ajouter à la liste de lecture"
|
msgstr "Ouvrir dans un navigateur"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: 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 "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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
@@ -51,22 +72,22 @@ msgstr ""
|
|||||||
"La lecture de vidéos n'est pas encore prise en charge. Voulez-vous vraiment "
|
"La lecture de vidéos n'est pas encore prise en charge. Voulez-vous vraiment "
|
||||||
"lire uniquement l'audio de « %1 » ?"
|
"lire uniquement l'audio de « %1 » ?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Albums"
|
msgstr "Albums"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "Titres uniques"
|
msgstr "Titres uniques"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "Chansons"
|
msgstr "Chansons"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Vidéos"
|
msgstr "Vidéos"
|
||||||
@@ -81,85 +102,173 @@ msgstr "Ok"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Annuler"
|
msgstr "Annuler"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Favoris"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "Tout afficher"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "Les plus lus"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "Titres lus"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "En cours de lecture"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Mettre en file d'attente"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "Paroles"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Supprimer une piste"
|
msgstr "Supprimer une piste"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Effacer"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Mélanger"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Pause"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "Aucun média en lecture"
|
msgstr "Aucun média en lecture"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Développer"
|
msgstr "Bibliothèque"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr "Artistes"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr "Listes de lecture"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "Inconnu"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr "Lire le suivant"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "Radio"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr "Rechercher de la musique sur « YouTube Music »"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Rechercher"
|
msgstr "Rechercher"
|
||||||
|
|
||||||
|
#: 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 "Titres lus"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:15
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown list of songs"
|
||||||
|
msgstr "Liste inconnue de titres"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:27
|
||||||
|
#, 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
|
||||||
|
#, kde-format
|
||||||
|
msgid "Artists"
|
||||||
|
msgstr "Artistes"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:30
|
||||||
|
#, kde-format
|
||||||
|
msgid "Playlists"
|
||||||
|
msgstr "Listes de lecture"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:37
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown"
|
||||||
|
msgstr "Inconnu"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr "Aucune correspondance avec les recherches précédentes"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, 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:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "Lire le suivant"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr "Ajouter à la file de lecture"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Supprimer un favori"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Ajouter un favori"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr "Supprimer de l'historique"
|
||||||
|
|
||||||
|
#~ 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 "Clear"
|
||||||
|
#~ msgstr "Effacer"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "Pause"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "Développer"
|
||||||
|
|
||||||
#~ msgid "Play only Audio"
|
#~ msgid "Play only Audio"
|
||||||
#~ msgstr "Ne lire que l'audio"
|
#~ msgstr "Ne lire que l'audio"
|
||||||
+175
-70
@@ -6,7 +6,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2021-09-17 20:09+0530\n"
|
"PO-Revision-Date: 2021-09-17 20:09+0530\n"
|
||||||
"Last-Translator: Raghavendra Kamath <[email protected]>\n"
|
"Last-Translator: Raghavendra Kamath <[email protected]>\n"
|
||||||
"Language-Team: kde-hindi\n"
|
"Language-Team: kde-hindi\n"
|
||||||
@@ -27,25 +27,46 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "बजाएँ"
|
msgstr "बजाएँ"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "अगला बजाएँ"
|
msgstr "फेंटें"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "गीत-सूची में जोड़ें"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: 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
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Artists"
|
||||||
|
msgid "Artist"
|
||||||
|
msgstr "कलाकार"
|
||||||
|
|
||||||
|
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
@@ -53,22 +74,22 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"वीडियो चलाना अभी तक समर्थित नहीं है। क्या आप केवल \"%1\" का ध्वनी चलाना चाहते हैं?"
|
"वीडियो चलाना अभी तक समर्थित नहीं है। क्या आप केवल \"%1\" का ध्वनी चलाना चाहते हैं?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "एल्बम्स"
|
msgstr "एल्बम्स"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "एक गीत"
|
msgstr "एक गीत"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "गीत"
|
msgstr "गीत"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "वीडियो"
|
msgstr "वीडियो"
|
||||||
@@ -83,85 +104,169 @@ msgstr ""
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "ओडियो-ट्यूब"
|
msgstr "ओडियो-ट्यूब"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "No media playing"
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "कोई मीडिया नहीं बजा रहा है"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "गाना हटाएँ"
|
msgstr "गाना हटाएँ"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "साफ करें"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "फेंटें"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "रोकें"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "कोई मीडिया नहीं बजा रहा है"
|
msgstr "कोई मीडिया नहीं बजा रहा है"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "विस्तृत करें"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr "कलाकार"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr "गीत-सूचीयाँ"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "अज्ञात"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr "अगला बजाएँ"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "रेडियो"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr "यूट्यूब संगीत पर संगीत ढूंढें"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "खोजें"
|
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
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Playlists"
|
||||||
|
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:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, kde-format
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "अगला बजाएँ"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Find music on YouTube Music"
|
||||||
|
#~ msgstr "यूट्यूब संगीत पर संगीत ढूंढें"
|
||||||
|
|
||||||
|
#~ msgid "Add to Playlist"
|
||||||
|
#~ msgstr "गीत-सूची में जोड़ें"
|
||||||
|
|
||||||
|
#~ msgid "Play next"
|
||||||
|
#~ msgstr "अगला बजाएँ"
|
||||||
|
|
||||||
|
#~ msgid "Clear"
|
||||||
|
#~ msgstr "साफ करें"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "रोकें"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "विस्तृत करें"
|
||||||
|
|
||||||
#~ msgid "Play only Audio"
|
#~ msgid "Play only Audio"
|
||||||
#~ msgstr "केवल ध्वनी चलाएँ"
|
#~ msgstr "केवल ध्वनी चलाएँ"
|
||||||
@@ -0,0 +1,264 @@
|
|||||||
|
# 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-01-30 01:00+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:109
|
||||||
|
#, kde-format
|
||||||
|
msgid "AudioTube"
|
||||||
|
msgstr "AudioTube"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Sekarang Diputarkan"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Antrean"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "Lirik"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Track"
|
||||||
|
msgstr "Hapus Trek"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
|
#, kde-format
|
||||||
|
msgid "No media playing"
|
||||||
|
msgstr "Tidak ada media yang diputarkan"
|
||||||
|
|
||||||
|
#: 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:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, kde-format
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "Putar Berikutnya"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr "Tambahkan ke antrean"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Hapus Favorit"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Tambahkan Favorit"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ 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"
|
||||||
+183
-75
@@ -1,13 +1,13 @@
|
|||||||
# Copyright (C) YEAR This file is copyright:
|
# Copyright (C) YEAR This file is copyright:
|
||||||
# This file is distributed under the same license as the audiotube package.
|
# This file is distributed under the same license as the audiotube package.
|
||||||
# Vincenzo Reale <[email protected]>, 2021.
|
# Vincenzo Reale <[email protected]>, 2021, 2022, 2023.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2021-12-06 02:46+0100\n"
|
"PO-Revision-Date: 2023-01-27 19:12+0100\n"
|
||||||
"Last-Translator: Vincenzo Reale <[email protected]>\n"
|
"Last-Translator: Vincenzo Reale <[email protected]>\n"
|
||||||
"Language-Team: Italian <[email protected]>\n"
|
"Language-Team: Italian <[email protected]>\n"
|
||||||
"Language: it\n"
|
"Language: it\n"
|
||||||
@@ -15,7 +15,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Lokalize 21.08.3\n"
|
"X-Generator: Lokalize 22.12.1\n"
|
||||||
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "NAME OF TRANSLATORS"
|
msgctxt "NAME OF TRANSLATORS"
|
||||||
@@ -27,25 +27,45 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Riproduci"
|
msgstr "Riproduci"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Riproduci successivo"
|
msgstr "Mescola"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "Aggiungi alla scaletta"
|
msgstr "Apri nel browser"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: 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 "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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
@@ -54,22 +74,22 @@ msgstr ""
|
|||||||
"La riproduzione dei video non è ancora supportata. Vuoi riprodurre solo "
|
"La riproduzione dei video non è ancora supportata. Vuoi riprodurre solo "
|
||||||
"l'audio di «%1»?"
|
"l'audio di «%1»?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Album"
|
msgstr "Album"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "Singoli"
|
msgstr "Singoli"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "Brani"
|
msgstr "Brani"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Video"
|
msgstr "Video"
|
||||||
@@ -84,85 +104,173 @@ msgstr "OK"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Annulla"
|
msgstr "Annulla"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Preferiti"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "Mostra tutto"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "Più riprodotti"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "Brani riprodotti"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "In riproduzione"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Coda"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "Testi"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Rimuovi traccia"
|
msgstr "Rimuovi traccia"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Pulisci"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Mescola"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Pausa"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "Nessun supporto in riproduzione"
|
msgstr "Nessun supporto in riproduzione"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Espandi"
|
msgstr "Raccolta"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr "Artisti"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr "Scalette"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "Sconosciuto"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr "Riproduci successivo"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "Radio"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr "Trova musica su Youtube Music"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Cerca"
|
msgstr "Cerca"
|
||||||
|
|
||||||
|
#: 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 "Brani riprodotti"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:15
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown list of songs"
|
||||||
|
msgstr "Elenco di brani sconosciuto"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:27
|
||||||
|
#, 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
|
||||||
|
#, kde-format
|
||||||
|
msgid "Artists"
|
||||||
|
msgstr "Artisti"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:30
|
||||||
|
#, kde-format
|
||||||
|
msgid "Playlists"
|
||||||
|
msgstr "Scalette"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:37
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown"
|
||||||
|
msgstr "Sconosciuto"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr "Nessuna ricerca precedente corrispondente"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, 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:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "Riproduci successivo"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr "Aggiungi alla coda"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Rimuovi preferito"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Aggiungi preferito"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr "Rimuovi dalla cronologia"
|
||||||
|
|
||||||
|
#~ 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 "Clear"
|
||||||
|
#~ msgstr "Pulisci"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "Pausa"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "Espandi"
|
||||||
|
|
||||||
#~ msgid "Play only Audio"
|
#~ msgid "Play only Audio"
|
||||||
#~ msgstr "Riproduci solo l'audio"
|
#~ msgstr "Riproduci solo l'audio"
|
||||||
@@ -0,0 +1,244 @@
|
|||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: audiotube\n"
|
||||||
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
|
"POT-Creation-Date: 2023-01-30 01:00+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:109
|
||||||
|
#, kde-format
|
||||||
|
msgid "AudioTube"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Track"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
|
#, kde-format
|
||||||
|
msgid "No media playing"
|
||||||
|
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:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, kde-format
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr ""
|
||||||
@@ -0,0 +1,264 @@
|
|||||||
|
# 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-01-30 01:00+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-01-27 08:44+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:109
|
||||||
|
#, kde-format
|
||||||
|
msgid "AudioTube"
|
||||||
|
msgstr "AudioTube"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "მიმდინარეობს დაკვრა"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "რიგი"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "ლირიკა"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Track"
|
||||||
|
msgstr "აუდიობილიკის წაშლა"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
|
#, kde-format
|
||||||
|
msgid "No media playing"
|
||||||
|
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:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr "წინა ძებნებს არ ემთხვევა"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, kde-format
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr "ძებნის ისტორიიდან წაშლა"
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr "გვერდითი ზოლის ჩაკეცვა"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "შემდეგის დაკვრა"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr "რიგში ჩამატება"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "რჩეულის წაშლა"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "რჩეულის დამატება"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
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 "შემდეგის დაკვრა"
|
||||||
+189
-76
@@ -1,21 +1,21 @@
|
|||||||
# Copyright (C) YEAR This file is copyright:
|
# Copyright (C) YEAR This file is copyright:
|
||||||
# This file is distributed under the same license as the audiotube package.
|
# This file is distributed under the same license as the audiotube package.
|
||||||
# Shinjo Park <[email protected]>, 2021.
|
# Shinjo Park <[email protected]>, 2021, 2022.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2021-12-08 00:45+0100\n"
|
"PO-Revision-Date: 2022-10-03 14:20+0200\n"
|
||||||
"Last-Translator: Shinjo Park <[email protected]>\n"
|
"Last-Translator: Shinjo Park <[email protected]>\n"
|
||||||
"Language-Team: Korean <kde-kr@kde.org>\n"
|
"Language-Team: Korean <kde-i18n-doc@kde.org>\n"
|
||||||
"Language: ko\n"
|
"Language: ko\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
"X-Generator: Lokalize 21.08.1\n"
|
"X-Generator: Lokalize 21.12.3\n"
|
||||||
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "NAME OF TRANSLATORS"
|
msgctxt "NAME OF TRANSLATORS"
|
||||||
@@ -27,47 +27,68 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "재생"
|
msgstr "재생"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "다음 재생"
|
msgstr "무순서 재생"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "재생 목록에 추가"
|
msgstr "브라우저로 열기"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: 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
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Artists"
|
||||||
|
msgid "Artist"
|
||||||
|
msgstr "아티스트"
|
||||||
|
|
||||||
|
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
"\"%1\"?"
|
"\"%1\"?"
|
||||||
msgstr "비디오 재생은 지원하지 않습니다. \"%1\"의 오디오만 재생하시겠습니까?"
|
msgstr "비디오 재생은 지원하지 않습니다. \"%1\"의 오디오만 재생하시겠습니까?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "앨범"
|
msgstr "앨범"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "싱글"
|
msgstr "싱글"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "곡"
|
msgstr "곡"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "비디오"
|
msgstr "비디오"
|
||||||
@@ -82,85 +103,177 @@ msgstr "확인"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "취소"
|
msgstr "취소"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "책갈피"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "모두 표시"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "가장 많이 재생됨"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Played Songs"
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "재생한 노래"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "지금 재생 중"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "대기열에 추가"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "트랙 삭제"
|
msgstr "트랙 삭제"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "지우기"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "무순서 재생"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "일시 정지"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "재생 중인 미디어 없음"
|
msgstr "재생 중인 미디어 없음"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "확장"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr "아티스트"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr "재생 목록"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "알 수 없음"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr "다음 재생"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "라디오"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr "YouTube Music에서 음악 찾기"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "검색"
|
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
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Playlists"
|
||||||
|
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:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, kde-format
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "다음 재생"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Favourites"
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "책갈피"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Favourites"
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "책갈피"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
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 "Clear"
|
||||||
|
#~ msgstr "지우기"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "일시 정지"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "확장"
|
||||||
|
|
||||||
#~ msgid "Play only Audio"
|
#~ msgid "Play only Audio"
|
||||||
#~ msgstr "오디오만 재생"
|
#~ msgstr "오디오만 재생"
|
||||||
+184
-76
@@ -1,13 +1,13 @@
|
|||||||
# Copyright (C) YEAR This file is copyright:
|
# Copyright (C) YEAR This file is copyright:
|
||||||
# This file is distributed under the same license as the audiotube package.
|
# This file is distributed under the same license as the audiotube package.
|
||||||
#
|
#
|
||||||
# Freek de Kruijf <[email protected]>, 2021.
|
# Freek de Kruijf <[email protected]>, 2021, 2022, 2023.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2021-12-05 16:48+0100\n"
|
"PO-Revision-Date: 2023-01-27 12:41+0100\n"
|
||||||
"Last-Translator: Freek de Kruijf <[email protected]>\n"
|
"Last-Translator: Freek de Kruijf <[email protected]>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Language: nl\n"
|
"Language: nl\n"
|
||||||
@@ -15,37 +15,57 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||||
"X-Generator: Lokalize 21.08.3\n"
|
"X-Generator: Lokalize 22.12.1\n"
|
||||||
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "NAME OF TRANSLATORS"
|
msgctxt "NAME OF TRANSLATORS"
|
||||||
msgid "Your names"
|
msgid "Your names"
|
||||||
msgstr "Freek de Kruijf - 2021"
|
msgstr "Freek de Kruijf - 2021 t/m 2023"
|
||||||
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "EMAIL OF TRANSLATORS"
|
msgctxt "EMAIL OF TRANSLATORS"
|
||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Afspelen"
|
msgstr "Afspelen"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Volgende afspelen"
|
msgstr "Willekeurig afspelen"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "Aan afspeellijst toevoegen"
|
msgstr "In browser openen"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: 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 "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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
@@ -54,22 +74,22 @@ msgstr ""
|
|||||||
"Afspelen van video wordt nog niet ondersteund. Wilt u alleen het geluid van "
|
"Afspelen van video wordt nog niet ondersteund. Wilt u alleen het geluid van "
|
||||||
"\"%1\" afspelen?"
|
"\"%1\" afspelen?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Albums"
|
msgstr "Albums"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "Enkelvoudige"
|
msgstr "Enkelvoudige"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "Songs"
|
msgstr "Songs"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Video's"
|
msgstr "Video's"
|
||||||
@@ -84,85 +104,173 @@ msgstr "OK"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Annuleren"
|
msgstr "Annuleren"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Favorieten"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "Alles tonen"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "Meest afgespeeld"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "afgespeelde songs"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Speelt nu"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Wachtrij"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "Liedteksten"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Track verwijderen"
|
msgstr "Track verwijderen"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Wissen"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Willekeurig afspelen"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Pauzeren"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "Er speelt geen medium"
|
msgstr "Er speelt geen medium"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Uitbreiden"
|
msgstr "Bibliotheek"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr "Artiesten"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr "Afspeellijsten"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "Onbekend"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr "Volgende afspelen"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "Radio"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr "Muziek zoeken op YouTube Music"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Zoeken"
|
msgstr "Zoeken"
|
||||||
|
|
||||||
|
#: 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 "Afgespeelde songs"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:15
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown list of songs"
|
||||||
|
msgstr "Onbekende lijst met songs"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:27
|
||||||
|
#, 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
|
||||||
|
#, kde-format
|
||||||
|
msgid "Artists"
|
||||||
|
msgstr "Artiesten"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:30
|
||||||
|
#, kde-format
|
||||||
|
msgid "Playlists"
|
||||||
|
msgstr "Afspeellijsten"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:37
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown"
|
||||||
|
msgstr "Onbekend"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr "Geen overeenkomende vorige zoekopdrachten"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, 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:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "Volgende afspelen"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr "Aan wachtrij toevoegen"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Favoriet verwijderen"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Favoriet toevoegen"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr "Uit geschiedenis verwijderen"
|
||||||
|
|
||||||
|
#~ 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 "Clear"
|
||||||
|
#~ msgstr "Wissen"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "Pauzeren"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "Uitbreiden"
|
||||||
|
|
||||||
#~ msgid "Play only Audio"
|
#~ msgid "Play only Audio"
|
||||||
#~ msgstr "Alleen geluid afspelen"
|
#~ msgstr "Alleen geluid afspelen"
|
||||||
@@ -0,0 +1,250 @@
|
|||||||
|
# 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-01-30 01:00+0000\n"
|
||||||
|
"PO-Revision-Date: 2023-01-15 12:33+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.1\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:109
|
||||||
|
#, kde-format
|
||||||
|
msgid "AudioTube"
|
||||||
|
msgstr "AudioTube"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Spelar no"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Kø"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "Songtekst"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Track"
|
||||||
|
msgstr "Fjern spor"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
|
#, kde-format
|
||||||
|
msgid "No media playing"
|
||||||
|
msgstr "Inkje medium vert spela"
|
||||||
|
|
||||||
|
#: 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:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, kde-format
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr "Fald saman sidestolpe"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "Spel som neste"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr "Legg i avspelingskøen"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Fjern frå favorittar"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Legg til favorittar"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr ""
|
||||||
+175
-70
@@ -6,7 +6,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2022-01-01 09:11-0800\n"
|
"PO-Revision-Date: 2022-01-01 09:11-0800\n"
|
||||||
"Last-Translator: A S Alam <[email protected]>\n"
|
"Last-Translator: A S Alam <[email protected]>\n"
|
||||||
"Language-Team: Punjabi <[email protected]>\n"
|
"Language-Team: Punjabi <[email protected]>\n"
|
||||||
@@ -27,47 +27,68 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "alam yellow @ gmail.com"
|
msgstr "alam yellow @ gmail.com"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "ਚਲਾਓ"
|
msgstr "ਚਲਾਓ"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "ਅਗਲਾ ਚਲਾਓ"
|
msgstr "ਰਲਵੇਂ"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "ਪਲੇਅਲਿਸਟ ਵਿੱਚ ਜੋੜੋ"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: 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
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Artists"
|
||||||
|
msgid "Artist"
|
||||||
|
msgstr "ਕਲਾਕਾਰ"
|
||||||
|
|
||||||
|
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
"\"%1\"?"
|
"\"%1\"?"
|
||||||
msgstr "ਵਿਡੀਓ ਪਲੇਅਬੈਕ ਹਾਲੇ ਸਹਾਇਕ ਨਹੀਂ ਹੈ। ਕੀ ਤੁਸੀਂ \"%1\" ਦਾ ਆਡੀਓ ਹੀ ਚਲਾਉਣਾ ਚਾਹੋਗੇ?"
|
msgstr "ਵਿਡੀਓ ਪਲੇਅਬੈਕ ਹਾਲੇ ਸਹਾਇਕ ਨਹੀਂ ਹੈ। ਕੀ ਤੁਸੀਂ \"%1\" ਦਾ ਆਡੀਓ ਹੀ ਚਲਾਉਣਾ ਚਾਹੋਗੇ?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "ਐਲਬਮਾਂ"
|
msgstr "ਐਲਬਮਾਂ"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "ਇਕੱਲੇ"
|
msgstr "ਇਕੱਲੇ"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "ਗੀਤ"
|
msgstr "ਗੀਤ"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "ਵਿਡੀਓ"
|
msgstr "ਵਿਡੀਓ"
|
||||||
@@ -82,85 +103,169 @@ msgstr "ਠੀਕ ਹੈ"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "ਰੱਦ ਕਰੋ"
|
msgstr "ਰੱਦ ਕਰੋ"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "ਆਡੀਓ-ਟਿਊਬ"
|
msgstr "ਆਡੀਓ-ਟਿਊਬ"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "No media playing"
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "ਕੋਈ ਮੀਡੀਆ ਨਹੀਂ ਚੱਲਦਾ"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "ਟਰੈਕ ਨੂੰ ਹਟਾਓ"
|
msgstr "ਟਰੈਕ ਨੂੰ ਹਟਾਓ"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "ਮਿਟਾਓ"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "ਰਲਵੇਂ"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "ਵਿਰਾਮ"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "ਕੋਈ ਮੀਡੀਆ ਨਹੀਂ ਚੱਲਦਾ"
|
msgstr "ਕੋਈ ਮੀਡੀਆ ਨਹੀਂ ਚੱਲਦਾ"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "ਫੈਲਾਓ"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr "ਕਲਾਕਾਰ"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr "ਪਲੇਅਲਿਸਟਾਂ"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "ਅਣਪਛਾਤਾ"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr "ਅਗਲਾ ਚਲਾਓ"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "ਰੇਡੀਓ"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr "ਯੂਟਿਊਬ ਸੰਗੀਤ ਉੱਤੇ ਸੰਗੀਤ ਲੱਭੋ"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "ਖੋਜੋ"
|
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
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Playlists"
|
||||||
|
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:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, kde-format
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "ਅਗਲਾ ਚਲਾਓ"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Find music on YouTube Music"
|
||||||
|
#~ msgstr "ਯੂਟਿਊਬ ਸੰਗੀਤ ਉੱਤੇ ਸੰਗੀਤ ਲੱਭੋ"
|
||||||
|
|
||||||
|
#~ msgid "Add to Playlist"
|
||||||
|
#~ msgstr "ਪਲੇਅਲਿਸਟ ਵਿੱਚ ਜੋੜੋ"
|
||||||
|
|
||||||
|
#~ msgid "Play next"
|
||||||
|
#~ msgstr "ਅਗਲਾ ਚਲਾਓ"
|
||||||
|
|
||||||
|
#~ msgid "Clear"
|
||||||
|
#~ msgstr "ਮਿਟਾਓ"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "ਵਿਰਾਮ"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "ਫੈਲਾਓ"
|
||||||
|
|
||||||
#~ msgid "Play only Audio"
|
#~ msgid "Play only Audio"
|
||||||
#~ msgstr "ਸਿਰਫ਼ ਆਡੀਓ ਹੀ ਚਲਾਓ"
|
#~ msgstr "ਸਿਰਫ਼ ਆਡੀਓ ਹੀ ਚਲਾਓ"
|
||||||
+188
-75
@@ -1,14 +1,14 @@
|
|||||||
# Copyright (C) YEAR This file is copyright:
|
# Copyright (C) YEAR This file is copyright:
|
||||||
# This file is distributed under the same license as the audiotube package.
|
# This file is distributed under the same license as the audiotube package.
|
||||||
#
|
#
|
||||||
# Łukasz Wojniłowicz <[email protected]>, 2021.
|
# Łukasz Wojniłowicz <[email protected]>, 2021, 2022.
|
||||||
# Ignacy Kajdan <[email protected]>, 2021.
|
# Ignacy Kajdan <[email protected]>, 2021.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2021-12-30 12:38+0100\n"
|
"PO-Revision-Date: 2022-10-18 18:06+0200\n"
|
||||||
"Last-Translator: Łukasz Wojniłowicz <[email protected]>\n"
|
"Last-Translator: Łukasz Wojniłowicz <[email protected]>\n"
|
||||||
"Language-Team: Polish <[email protected]>\n"
|
"Language-Team: Polish <[email protected]>\n"
|
||||||
"Language: pl\n"
|
"Language: pl\n"
|
||||||
@@ -17,7 +17,7 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
||||||
"|| n%100>=20) ? 1 : 2);\n"
|
"|| n%100>=20) ? 1 : 2);\n"
|
||||||
"X-Generator: Lokalize 22.03.70\n"
|
"X-Generator: Lokalize 22.08.1\n"
|
||||||
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "NAME OF TRANSLATORS"
|
msgctxt "NAME OF TRANSLATORS"
|
||||||
@@ -29,25 +29,46 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected], [email protected]"
|
msgstr "[email protected], [email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Odtwórz"
|
msgstr "Odtwórz"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Odtwórz następny"
|
msgstr "Wymieszaj"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "Dodaj do listy odtwarzania"
|
msgstr "Otwórz w przeglądarce"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: 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 "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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
@@ -56,22 +77,22 @@ msgstr ""
|
|||||||
"Odtwarzanie wideo nie jest jeszcze obsługiwane. Czy odtworzyć tylko dźwięk z "
|
"Odtwarzanie wideo nie jest jeszcze obsługiwane. Czy odtworzyć tylko dźwięk z "
|
||||||
"„%1”?"
|
"„%1”?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Albumy"
|
msgstr "Albumy"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "Single"
|
msgstr "Single"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "Piosenki"
|
msgstr "Piosenki"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Filmy"
|
msgstr "Filmy"
|
||||||
@@ -86,85 +107,177 @@ msgstr "OK"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Anuluj"
|
msgstr "Anuluj"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Ulubione"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "Pokaż wszystkie"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "Najczęściej odtwarzane"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Played Songs"
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "Odtwarzane utwory"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Teraz odtwarzany"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Kolejka"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Usuń utwór"
|
msgstr "Usuń utwór"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Wyczyść"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Wymieszaj"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Wstrzymaj"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "Nic nie jest odtwarzane"
|
msgstr "Nic nie jest odtwarzane"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Rozwiń"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr "Wykonawcy"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr "Listy odtwarzania"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "Nieznany"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr "Odtwórz następny"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "Radio"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr "Znajdź muzykę w serwisie YouTube Music"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Szukaj"
|
msgstr "Szukaj"
|
||||||
|
|
||||||
|
#: 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 "Odtwarzane utwory"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:15
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown list of songs"
|
||||||
|
msgstr "Nieznana lista utworów"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:27
|
||||||
|
#, 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
|
||||||
|
#, kde-format
|
||||||
|
msgid "Artists"
|
||||||
|
msgstr "Wykonawcy"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:30
|
||||||
|
#, kde-format
|
||||||
|
msgid "Playlists"
|
||||||
|
msgstr "Listy odtwarzania"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:37
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown"
|
||||||
|
msgstr "Nieznany"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, kde-format
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "Odtwórz następny"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Favourites"
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Ulubione"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Favourites"
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Ulubione"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ 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 "Clear"
|
||||||
|
#~ msgstr "Wyczyść"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "Wstrzymaj"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "Rozwiń"
|
||||||
|
|
||||||
#~ msgid "Play only Audio"
|
#~ msgid "Play only Audio"
|
||||||
#~ msgstr "Odtwórz tylko dźwięk"
|
#~ msgstr "Odtwórz tylko dźwięk"
|
||||||
+157
-75
@@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2021-09-04 18:29+0100\n"
|
"PO-Revision-Date: 2023-01-22 23:00+0000\n"
|
||||||
"Last-Translator: José Nuno Coelho Pires <[email protected]>\n"
|
"Last-Translator: José Nuno Coelho Pires <[email protected]>\n"
|
||||||
"Language-Team: Portuguese <[email protected]>\n"
|
"Language-Team: Portuguese <[email protected]>\n"
|
||||||
"Language: pt\n"
|
"Language: pt\n"
|
||||||
@@ -29,25 +29,45 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Reproduzir"
|
msgstr "Reproduzir"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Reproduzir o Seguinte"
|
msgstr "Baralhar"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "Adicionar à Lista de Reprodução"
|
msgstr "Abrir no Navegador"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: contents/ui/AlbumPage.qml:44
|
||||||
|
#, kde-format
|
||||||
|
msgid "Album • %1"
|
||||||
|
msgstr "Álbum • %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 "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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
@@ -56,22 +76,22 @@ msgstr ""
|
|||||||
"A reprodução de vídeos ainda não é suportada. Deseja reproduzir apenas o "
|
"A reprodução de vídeos ainda não é suportada. Deseja reproduzir apenas o "
|
||||||
"áudio de \"%1\"?"
|
"áudio de \"%1\"?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Álbuns"
|
msgstr "Álbuns"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "'Singles'"
|
msgstr "'Singles'"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "Músicas"
|
msgstr "Músicas"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Vídeos"
|
msgstr "Vídeos"
|
||||||
@@ -86,85 +106,147 @@ msgstr "OK"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancelar"
|
msgstr "Cancelar"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Favoritos"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "Mostrar Tudo"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "Mais Tocadas"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "Músicas tocadas"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Agora a Ouvir"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Fila"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "Letras Musicais"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Remover a Faixa"
|
msgstr "Remover a Faixa"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Limpar"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Baralhar"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Pausa"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "Nada em reprodução"
|
msgstr "Nada em reprodução"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Expandir"
|
msgstr "Biblioteca"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr "Artistas"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr "Listas de Reprodução"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "Desconhecido"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr "Reproduzir o seguinte"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "Rádio"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr "Procurar música no YouTube Music"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Procurar"
|
msgstr "Procurar"
|
||||||
|
|
||||||
#~ msgid "Play only Audio"
|
#: contents/ui/NavigationBar.qml:58 contents/ui/NavigationBar.qml:63
|
||||||
#~ msgstr "Reproduzir só o Áudio"
|
#: contents/ui/Sidebar.qml:143 contents/ui/Sidebar.qml:150
|
||||||
|
#, kde-format
|
||||||
|
msgid "Played Songs"
|
||||||
|
msgstr "Músicas Tocadas"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:15
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown list of songs"
|
||||||
|
msgstr "Lista de músicas desconhecida"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:27
|
||||||
|
#, 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
|
||||||
|
#, kde-format
|
||||||
|
msgid "Artists"
|
||||||
|
msgstr "Artistas"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:30
|
||||||
|
#, kde-format
|
||||||
|
msgid "Playlists"
|
||||||
|
msgstr "Listas de Reprodução"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:37
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown"
|
||||||
|
msgstr "Desconhecido"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr "Sem pesquisas anteriores correspondentes"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Remove from History"
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr "Remover do Histórico"
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr "Fechar a Barra Lateral"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "Reproduzir o Seguinte"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr "Adicionar à fila"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Remover o Favorito"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Adicionar aos Favoritos"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr "Remover do Histórico"
|
||||||
+184
-75
@@ -1,14 +1,14 @@
|
|||||||
# Copyright (C) YEAR This file is copyright:
|
# Copyright (C) YEAR This file is copyright:
|
||||||
# This file is distributed under the same license as the audiotube package.
|
# This file is distributed under the same license as the audiotube package.
|
||||||
#
|
#
|
||||||
# Luiz Fernando Ranghetti <[email protected]>, 2021.
|
# Luiz Fernando Ranghetti <[email protected]>, 2021, 2022.
|
||||||
# Thiago Masato Costa Sueto <[email protected]>, 2021.
|
# Thiago Masato Costa Sueto <[email protected]>, 2021.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2021-12-09 10:13-0300\n"
|
"PO-Revision-Date: 2022-12-20 10:48-0300\n"
|
||||||
"Last-Translator: Luiz Fernando Ranghetti <[email protected]>\n"
|
"Last-Translator: Luiz Fernando Ranghetti <[email protected]>\n"
|
||||||
"Language-Team: Portuguese <[email protected]>\n"
|
"Language-Team: Portuguese <[email protected]>\n"
|
||||||
"Language: pt_BR\n"
|
"Language: pt_BR\n"
|
||||||
@@ -16,7 +16,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
"X-Generator: Lokalize 20.04.2\n"
|
"X-Generator: Lokalize 21.12.3\n"
|
||||||
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "NAME OF TRANSLATORS"
|
msgctxt "NAME OF TRANSLATORS"
|
||||||
@@ -28,25 +28,45 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Reproduzir"
|
msgstr "Reproduzir"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Reproduzir próxima"
|
msgstr "Embaralhar"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "Adicionar à lista de reprodução"
|
msgstr "Abrir no navegador"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: contents/ui/AlbumPage.qml:44
|
||||||
|
#, kde-format
|
||||||
|
msgid "Album • %1"
|
||||||
|
msgstr "Álbum • %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 "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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
@@ -55,22 +75,22 @@ msgstr ""
|
|||||||
"A reprodução de vídeos ainda não é suportada. Deseja reproduzir apenas o "
|
"A reprodução de vídeos ainda não é suportada. Deseja reproduzir apenas o "
|
||||||
"áudio de \"%1\"?"
|
"áudio de \"%1\"?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Álbuns"
|
msgstr "Álbuns"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "Singles"
|
msgstr "Singles"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "Músicas"
|
msgstr "Músicas"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Vídeos"
|
msgstr "Vídeos"
|
||||||
@@ -85,85 +105,174 @@ msgstr "OK"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancelar"
|
msgstr "Cancelar"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Favoritas"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "Mostrar tudo"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "Mais reproduzidas"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Played Songs"
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "Músicas reproduzidas"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Reproduzindo agora"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Fila"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "Letras"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Remover faixa"
|
msgstr "Remover faixa"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Limpar"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Embaralhar"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Pausar"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "Nenhuma mídia em reprodução"
|
msgstr "Nenhuma mídia em reprodução"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Expandir"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr "Artistas"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr "Listas de músicas"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "Desconhecido"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr "Reproduzir próxima"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "Rádio"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr "Encontre músicas no YouTube Music"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Pesquisar"
|
msgstr "Pesquisar"
|
||||||
|
|
||||||
|
#: 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 "Músicas reproduzidas"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:15
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown list of songs"
|
||||||
|
msgstr "Lista de músicas desconhecida"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:27
|
||||||
|
#, 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 ""
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:28
|
||||||
|
#, kde-format
|
||||||
|
msgid "Artists"
|
||||||
|
msgstr "Artistas"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:30
|
||||||
|
#, kde-format
|
||||||
|
msgid "Playlists"
|
||||||
|
msgstr "Listas de músicas"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:37
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown"
|
||||||
|
msgstr "Desconhecido"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, kde-format
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "Reproduzir próxima"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr "Adicionar à fila"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Remover das favoritas"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Adicionar favorita"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ 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 "Clear"
|
||||||
|
#~ msgstr "Limpar"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "Pausar"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "Expandir"
|
||||||
|
|
||||||
#~ msgid "Play only Audio"
|
#~ msgid "Play only Audio"
|
||||||
#~ msgstr "Reproduzir apenas áudio"
|
#~ msgstr "Reproduzir apenas áudio"
|
||||||
+179
-79
@@ -1,13 +1,13 @@
|
|||||||
# Copyright (C) YEAR This file is copyright:
|
# Copyright (C) YEAR This file is copyright:
|
||||||
# This file is distributed under the same license as the audiotube package.
|
# This file is distributed under the same license as the audiotube package.
|
||||||
#
|
#
|
||||||
# Alexander Yavorsky <[email protected]>, 2022.
|
# Alexander Yavorsky <[email protected]>, 2022, 2023.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2022-05-10 21:39+0300\n"
|
"PO-Revision-Date: 2023-01-28 13:37+0300\n"
|
||||||
"Last-Translator: Alexander Yavorsky <[email protected]>\n"
|
"Last-Translator: Alexander Yavorsky <[email protected]>\n"
|
||||||
"Language-Team: Russian <[email protected]>\n"
|
"Language-Team: Russian <[email protected]>\n"
|
||||||
"Language: ru\n"
|
"Language: ru\n"
|
||||||
@@ -21,54 +21,75 @@ msgstr ""
|
|||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "NAME OF TRANSLATORS"
|
msgctxt "NAME OF TRANSLATORS"
|
||||||
msgid "Your names"
|
msgid "Your names"
|
||||||
msgstr "Александр Яворский"
|
msgstr "Александр Яворский, Павел Чернышов"
|
||||||
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "EMAIL OF TRANSLATORS"
|
msgctxt "EMAIL OF TRANSLATORS"
|
||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected], [email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Воспроизвести"
|
msgstr "Воспроизвести"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Воспроизвести следующий"
|
msgstr "Перемешать"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr ""
|
msgstr "Открыть в браузере"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: 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
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
"\"%1\"?"
|
"\"%1\"?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Воспроизведение видео пока не поддерживается. Воспроизвести звук трека «%1»?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Альбомы"
|
msgstr "Альбомы"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr ""
|
msgstr "Синглы"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr ""
|
msgstr "Треки"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Видеозаписи"
|
msgstr "Видеозаписи"
|
||||||
@@ -83,82 +104,161 @@ msgstr "ОК"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Отмена"
|
msgstr "Отмена"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Избранное"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "Показать все"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "Часто воспроизводимые"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "Воспроизведённые треки"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Текущий трек"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Очередь воспроизведения"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "Текст песни"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Удалить дорожку"
|
msgstr "Удалить дорожку"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Очистить"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Перемешать"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Приостановить"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr ""
|
msgstr "Ничего не воспроизводится"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr ""
|
msgstr "Библиотека"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "Радио"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Поиск"
|
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:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr "Не найдено соответствующих предыдущих поисковых запросов"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, kde-format
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr "Свернуть боковую панель"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "Воспроизвести следующим"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr "Добавить в очередь воспроизведения"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Убрать из избранного"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Добавить в избранное"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr "Удалить из журнала"
|
||||||
|
|
||||||
|
#~ msgid "Favourite Songs"
|
||||||
|
#~ msgstr "Избранные треки"
|
||||||
|
|
||||||
|
#~ msgid "Back"
|
||||||
|
#~ msgstr "Назад"
|
||||||
|
|
||||||
|
#~ msgid "Find music on YouTube Music"
|
||||||
|
#~ msgstr "Найти музыку в YouTube Music"
|
||||||
|
|
||||||
|
#~ msgid "Clear"
|
||||||
|
#~ msgstr "Очистить"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "Приостановить"
|
||||||
+156
-57
@@ -4,7 +4,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2022-04-07 18:01+0200\n"
|
"PO-Revision-Date: 2022-04-07 18:01+0200\n"
|
||||||
"Last-Translator: Roman Paholik <[email protected]>\n"
|
"Last-Translator: Roman Paholik <[email protected]>\n"
|
||||||
"Language-Team: Slovak <[email protected]>\n"
|
"Language-Team: Slovak <[email protected]>\n"
|
||||||
@@ -25,48 +25,68 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Prehrať"
|
msgstr "Prehrať"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, fuzzy, kde-format
|
|
||||||
#| msgid "Play"
|
|
||||||
msgid "Play Next"
|
|
||||||
msgstr "Prehrať"
|
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Shuffle"
|
||||||
msgstr "Pridať do zoznamu skladieb"
|
msgstr "Zamiešať"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: 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
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Artists"
|
||||||
|
msgid "Artist"
|
||||||
|
msgstr "Interpreti"
|
||||||
|
|
||||||
|
#: contents/ui/ArtistPage.qml:68 contents/ui/SearchPage.qml:70
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
"\"%1\"?"
|
"\"%1\"?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Albumy"
|
msgstr "Albumy"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "Samotné"
|
msgstr "Samotné"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Videá"
|
msgstr "Videá"
|
||||||
@@ -81,82 +101,161 @@ msgstr "OK"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Zrušiť"
|
msgstr "Zrušiť"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "No media playing"
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Neprehráva sa žiadne médium"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Vyčistiť"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Zamiešať"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Pozastaviť"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "Neprehráva sa žiadne médium"
|
msgstr "Neprehráva sa žiadne médium"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Rozvinúť"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
|
#, 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
|
||||||
|
#, 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
|
||||||
|
#, 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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Artists"
|
msgid "Artists"
|
||||||
msgstr "Interpreti"
|
msgstr "Interpreti"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
#: contents/ui/SearchPage.qml:30
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Playlists"
|
msgid "Playlists"
|
||||||
msgstr "Zoznamy skladieb"
|
msgstr "Zoznamy skladieb"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
#: contents/ui/SearchPage.qml:37
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Neznáme"
|
msgstr "Neznáme"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play next"
|
msgid "No matching previous searches"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Radio"
|
msgid "remove from search history"
|
||||||
msgstr "Rádio"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
#: contents/ui/Sidebar.qml:179
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Collapse Sidebar"
|
||||||
msgstr "Hľadať"
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Play"
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "Prehrať"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ msgid "Add to Playlist"
|
||||||
|
#~ msgstr "Pridať do zoznamu skladieb"
|
||||||
|
|
||||||
|
#~ msgid "Clear"
|
||||||
|
#~ msgstr "Vyčistiť"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "Pozastaviť"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "Rozvinúť"
|
||||||
+183
-75
@@ -1,20 +1,20 @@
|
|||||||
# Copyright (C) YEAR This file is copyright:
|
# Copyright (C) YEAR This file is copyright:
|
||||||
# This file is distributed under the same license as the audiotube package.
|
# This file is distributed under the same license as the audiotube package.
|
||||||
#
|
#
|
||||||
# Matjaž Jeran <[email protected]>, 2021.
|
# Matjaž Jeran <[email protected]>, 2021, 2022, 2023.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2021-12-09 13:26+0100\n"
|
"PO-Revision-Date: 2023-01-28 09:50+0100\n"
|
||||||
"Last-Translator: Matjaž Jeran <[email protected]>\n"
|
"Last-Translator: Matjaž Jeran <[email protected]>\n"
|
||||||
"Language-Team: Slovenian <[email protected]>\n"
|
"Language-Team: Slovenian <[email protected]>\n"
|
||||||
"Language: sl\n"
|
"Language: sl\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Generator: Lokalize 21.04.3\n"
|
"X-Generator: Lokalize 22.12.1\n"
|
||||||
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
|
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
|
||||||
"%100==4 ? 3 : 0);\n"
|
"%100==4 ? 3 : 0);\n"
|
||||||
|
|
||||||
@@ -28,47 +28,67 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Predvajaj"
|
msgstr "Predvajaj"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Predvajaj naslednjo"
|
msgstr "Premešaj"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "Dodaj v seznam predvajanja"
|
msgstr "Odpri v brskalniku"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: 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 "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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
"\"%1\"?"
|
"\"%1\"?"
|
||||||
msgstr "Video playback še ni podprt. Ali želite predvajati samo zvok \"%1\"?"
|
msgstr "Video playback še ni podprt. Ali želite predvajati samo zvok \"%1\"?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Albumi"
|
msgstr "Albumi"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "Singli"
|
msgstr "Singli"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "Glasba"
|
msgstr "Glasba"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Videposnetki"
|
msgstr "Videposnetki"
|
||||||
@@ -83,85 +103,173 @@ msgstr "V redu"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Prekliči"
|
msgstr "Prekliči"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Priljubljene"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "Prikaži vse"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "Največkrat predvajane"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "predvajane pesmi"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Pravkar predvajano"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Čakalna vrsta"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "Besedilo"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Odstrani sled"
|
msgstr "Odstrani sled"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Očisti"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Premešaj"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Premor"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "Niče se ne predvaja"
|
msgstr "Niče se ne predvaja"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Razširi"
|
msgstr "Knjižnica"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr "Avtorji"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr "Seznami predvajanja"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "Neznano"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr "Predvajaj naslednjo"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "Radio"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr "Najdi glasbo na Youtube Music"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Išči"
|
msgstr "Išči"
|
||||||
|
|
||||||
|
#: 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 "Predvajane pesmi"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:15
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown list of songs"
|
||||||
|
msgstr "Neznan seznam pesmi"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:27
|
||||||
|
#, 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
|
||||||
|
#, kde-format
|
||||||
|
msgid "Artists"
|
||||||
|
msgstr "Avtorji"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:30
|
||||||
|
#, kde-format
|
||||||
|
msgid "Playlists"
|
||||||
|
msgstr "Seznami predvajanja"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:37
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown"
|
||||||
|
msgstr "Neznano"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr "Ni zadetkov iz prejšnjih iskanj"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, 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:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "Predvajaj naslednjo"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr "Dodaj v v čakalno vrsto"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Odstrani priljubljenega"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Dodaj priljubljenega"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr "Odstrani iz zgodovine"
|
||||||
|
|
||||||
|
#~ 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 "Clear"
|
||||||
|
#~ msgstr "Očisti"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "Premor"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "Razširi"
|
||||||
|
|
||||||
#~ msgid "Play only Audio"
|
#~ msgid "Play only Audio"
|
||||||
#~ msgstr "Predvajaj samo zvok"
|
#~ msgstr "Predvajaj samo zvok"
|
||||||
+187
-74
@@ -1,13 +1,13 @@
|
|||||||
# Copyright (C) YEAR This file is copyright:
|
# Copyright (C) YEAR This file is copyright:
|
||||||
# This file is distributed under the same license as the audiotube package.
|
# This file is distributed under the same license as the audiotube package.
|
||||||
#
|
#
|
||||||
# Stefan Asserhäll <[email protected]>, 2021.
|
# Stefan Asserhäll <[email protected]>, 2021, 2022.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2021-12-05 11:41+0100\n"
|
"PO-Revision-Date: 2022-09-24 14:57+0200\n"
|
||||||
"Last-Translator: Stefan Asserhäll <[email protected]>\n"
|
"Last-Translator: Stefan Asserhäll <[email protected]>\n"
|
||||||
"Language-Team: Swedish <[email protected]>\n"
|
"Language-Team: Swedish <[email protected]>\n"
|
||||||
"Language: sv\n"
|
"Language: sv\n"
|
||||||
@@ -27,47 +27,68 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Spela"
|
msgstr "Spela"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Spela nästa"
|
msgstr "Blanda"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "Lägg till i spellista"
|
msgstr "Öppna i webbläsare"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: 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 "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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
"\"%1\"?"
|
"\"%1\"?"
|
||||||
msgstr "Videouppspelning stöds inte ännu. Vill du bara spela ljudet på \"%1\"?"
|
msgstr "Videouppspelning stöds inte ännu. Vill du bara spela ljudet på \"%1\"?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Album"
|
msgstr "Album"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "Singlar"
|
msgstr "Singlar"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "Låtar"
|
msgstr "Låtar"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Videor"
|
msgstr "Videor"
|
||||||
@@ -82,85 +103,177 @@ msgstr "Ok"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Avbryt"
|
msgstr "Avbryt"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Favoriter"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "Visa alla"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "Mest spelade"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Played Songs"
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "Spelade låtar"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Spelar nu"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Köa"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Ta bort spår"
|
msgstr "Ta bort spår"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Rensa"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Blanda"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Paus"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "Inga media spelar"
|
msgstr "Inga media spelar"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Expandera"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr "Artister"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr "Spellistor"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "Okänd"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr "Spela nästa"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "Radio"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr "Sök efter musik på YouTube musik"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Sök"
|
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 "Spelade låtar"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:15
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown list of songs"
|
||||||
|
msgstr "Okänd låtlista"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:27
|
||||||
|
#, 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
|
||||||
|
#, kde-format
|
||||||
|
msgid "Artists"
|
||||||
|
msgstr "Artister"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:30
|
||||||
|
#, kde-format
|
||||||
|
msgid "Playlists"
|
||||||
|
msgstr "Spellistor"
|
||||||
|
|
||||||
|
#: contents/ui/SearchPage.qml:37
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown"
|
||||||
|
msgstr "Okänd"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, kde-format
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "Spela nästa"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Favourites"
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Favoriter"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, fuzzy, kde-format
|
||||||
|
#| msgid "Favourites"
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Favoriter"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#~ 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 "Clear"
|
||||||
|
#~ msgstr "Rensa"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "Paus"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "Expandera"
|
||||||
|
|
||||||
#~ msgid "Play only Audio"
|
#~ msgid "Play only Audio"
|
||||||
#~ msgstr "Spela bara ljud"
|
#~ msgstr "Spela bara ljud"
|
||||||
+167
-59
@@ -1,13 +1,13 @@
|
|||||||
# Copyright (C) YEAR This file is copyright:
|
# Copyright (C) YEAR This file is copyright:
|
||||||
# This file is distributed under the same license as the audiotube package.
|
# This file is distributed under the same license as the audiotube package.
|
||||||
#
|
#
|
||||||
# Emir SARI <[email protected]>, 2022.
|
# Emir SARI <[email protected]>, 2022, 2023.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: audiotube\n"
|
"Project-Id-Version: audiotube\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2022-04-15 14:41+0300\n"
|
"PO-Revision-Date: 2023-01-27 18:30+0300\n"
|
||||||
"Last-Translator: Emir SARI <[email protected]>\n"
|
"Last-Translator: Emir SARI <[email protected]>\n"
|
||||||
"Language-Team: Turkish <[email protected]>\n"
|
"Language-Team: Turkish <[email protected]>\n"
|
||||||
"Language: tr\n"
|
"Language: tr\n"
|
||||||
@@ -15,7 +15,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
"X-Generator: Lokalize 21.12.3\n"
|
"X-Generator: Lokalize 22.12.1\n"
|
||||||
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgctxt "NAME OF TRANSLATORS"
|
msgctxt "NAME OF TRANSLATORS"
|
||||||
@@ -27,25 +27,45 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Çal"
|
msgstr "Çal"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Sonrakini Çal"
|
msgstr "Karıştır"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "Çalma Listesine Ekle"
|
msgstr "Tarayıcıda Aç"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: contents/ui/AlbumPage.qml:44
|
||||||
|
#, kde-format
|
||||||
|
msgid "Album • %1"
|
||||||
|
msgstr "Albüm • %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 "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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
@@ -54,22 +74,22 @@ msgstr ""
|
|||||||
"Video oynatımı henüz desteklenmiyor. \"%1\" videosunun yalnızca sesinin "
|
"Video oynatımı henüz desteklenmiyor. \"%1\" videosunun yalnızca sesinin "
|
||||||
"çalınmasını ister misiniz?"
|
"çalınmasını ister misiniz?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Albümler"
|
msgstr "Albümler"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "Tekliler"
|
msgstr "Tekliler"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "Şarkılar"
|
msgstr "Şarkılar"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Videolar"
|
msgstr "Videolar"
|
||||||
@@ -84,82 +104,170 @@ msgstr "Tamam"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "İptal"
|
msgstr "İptal"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Beğeniler"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "Tümünü Göster"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "En Çok Çalınanlar"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "Çalınan Şarkılar"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Şimdi Çalınıyor"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Kuyruk"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "Şarkı Sözleri"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Parçayı Kaldır"
|
msgstr "Parçayı Kaldır"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Temizle"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Karıştır"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Duraklat"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "Ortam çalmıyor"
|
msgstr "Ortam çalmıyor"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Genişlet"
|
msgstr "Kitaplık"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
|
#, 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
|
||||||
|
#, kde-format
|
||||||
|
msgid "Played Songs"
|
||||||
|
msgstr "Çalınan Şarkılar"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:15
|
||||||
|
#, kde-format
|
||||||
|
msgid "Unknown list of songs"
|
||||||
|
msgstr "Bilinmeyen şarkılar listesi"
|
||||||
|
|
||||||
|
#: contents/ui/PlaybackHistory.qml:27
|
||||||
|
#, 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
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Artists"
|
msgid "Artists"
|
||||||
msgstr "Sanatçılar"
|
msgstr "Sanatçılar"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
#: contents/ui/SearchPage.qml:30
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Playlists"
|
msgid "Playlists"
|
||||||
msgstr "Çalma Listeleri"
|
msgstr "Çalma Listeleri"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
#: contents/ui/SearchPage.qml:37
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "Bilinmiyor"
|
msgstr "Bilinmiyor"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play next"
|
msgid "No matching previous searches"
|
||||||
msgstr "Sonrakini çal"
|
msgstr "Eşleşen daha önceden yapılmış arama yok"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Radio"
|
msgid "remove from search history"
|
||||||
msgstr "Radyo"
|
msgstr "arama geçmişinden kaldır"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
#: contents/ui/Sidebar.qml:179
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Find music on YouTube Music"
|
msgid "Collapse Sidebar"
|
||||||
msgstr "YouTube Müzik'te müzik bul"
|
msgstr "Kenar Çubuğunu Daralt"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Play Next"
|
||||||
msgstr "Ara"
|
msgstr "Sonrakini Çal"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr "Kuyruğa ekle"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Beğenilerden Kaldır"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Beğenilere Ekle"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr "Geçmişten Kaldır"
|
||||||
|
|
||||||
|
#~ 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 "Clear"
|
||||||
|
#~ msgstr "Temizle"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "Duraklat"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "Genişlet"
|
||||||
+183
-75
@@ -1,14 +1,14 @@
|
|||||||
# Copyright (C) YEAR This file is copyright:
|
# Copyright (C) YEAR This file is copyright:
|
||||||
# This file is distributed under the same license as the PACKAGE package.
|
# This file is distributed under the same license as the PACKAGE package.
|
||||||
#
|
#
|
||||||
# Yuri Chornoivan <[email protected]>, 2021.
|
# Yuri Chornoivan <[email protected]>, 2021, 2022, 2023.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE\n"
|
"Project-Id-Version: PACKAGE\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2021-12-05 08:42+0200\n"
|
"PO-Revision-Date: 2023-01-27 10:54+0200\n"
|
||||||
"Last-Translator: Yuri Chornoivan <[email protected]>\n"
|
"Last-Translator: Fracture dept <[email protected]>\n"
|
||||||
"Language-Team: Ukrainian <[email protected]>\n"
|
"Language-Team: Ukrainian <[email protected]>\n"
|
||||||
"Language: uk\n"
|
"Language: uk\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@@ -28,25 +28,45 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected]"
|
msgstr "[email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "Відтворити"
|
msgstr "Відтворити"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "Відтворити наступну"
|
msgstr "Перемішати"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "Додати до списку відтворення"
|
msgstr "Відкрити у переглядачі"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: 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
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
@@ -55,22 +75,22 @@ msgstr ""
|
|||||||
"Підтримки відтворення відео ще не передбачено. Хочете, щоб було відтворено "
|
"Підтримки відтворення відео ще не передбачено. Хочете, щоб було відтворено "
|
||||||
"лише звукову частину «%1»?"
|
"лише звукову частину «%1»?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "Альбоми"
|
msgstr "Альбоми"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "Одинарні"
|
msgstr "Одинарні"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "Пісні"
|
msgstr "Пісні"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "Відео"
|
msgstr "Відео"
|
||||||
@@ -85,85 +105,173 @@ msgstr "Гаразд"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Скасувати"
|
msgstr "Скасувати"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "Улюблені"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "Показати всі"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
msgstr ""
|
msgstr "Часто слухали"
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
|
msgstr "Відтворені композиції"
|
||||||
|
|
||||||
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "Зараз відтворюємо"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "Додати до черги"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr "Текст"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "Вилучити композицію"
|
msgstr "Вилучити композицію"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "Спорожнити"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "Перемішати"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "Призупинити"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "Відтворення не відбувається"
|
msgstr "Відтворення не відбувається"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "Розгорнути"
|
msgstr "Бібліотека"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: contents/ui/NavigationBar.qml:35 contents/ui/Sidebar.qml:109
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr "Виконавці"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr "Списки відтворення"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "Невідомий"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr "Відтворити наступну"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "Радіо"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr "Шукати музику на сайті «Музика Youtube»"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr "Пошук"
|
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:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr "Немає відповідних попередніх пошуків"
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, kde-format
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr "вилучити з журналу пошуку"
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr "Згорнути бічну панель"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr "Відтворити наступну"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr "Додати до черги"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr "Вилучити з улюблених"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr "Додати до улюблених"
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
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 "Clear"
|
||||||
|
#~ msgstr "Спорожнити"
|
||||||
|
|
||||||
|
#~ msgid "Pause"
|
||||||
|
#~ msgstr "Призупинити"
|
||||||
|
|
||||||
|
#~ msgid "Expand"
|
||||||
|
#~ msgstr "Розгорнути"
|
||||||
|
|
||||||
#~ msgid "Play only Audio"
|
#~ msgid "Play only Audio"
|
||||||
#~ msgstr "Відтворити лише звук"
|
#~ msgstr "Відтворити лише звук"
|
||||||
@@ -1,165 +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: 2022-05-23 00:47+0000\n"
|
|
||||||
"PO-Revision-Date: 2022-05-23 01:48+0000\n"
|
|
||||||
"Last-Translator: transxx.py program <[email protected]>\n"
|
|
||||||
"Language-Team: KDE Test Language <[email protected]>\n"
|
|
||||||
"Language: x-test\n"
|
|
||||||
"MIME-Version: 1.0\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
|
||||||
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "NAME OF TRANSLATORS"
|
|
||||||
msgid "Your names"
|
|
||||||
msgstr "xxYour namesxx"
|
|
||||||
|
|
||||||
#, kde-format
|
|
||||||
msgctxt "EMAIL OF TRANSLATORS"
|
|
||||||
msgid "Your emails"
|
|
||||||
msgstr "xxYour emailsxx"
|
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play"
|
|
||||||
msgstr "xxPlayxx"
|
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play Next"
|
|
||||||
msgstr "xxPlay Nextxx"
|
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
|
||||||
msgid "Add to Playlist"
|
|
||||||
msgstr "xxAdd to Playlistxx"
|
|
||||||
|
|
||||||
#: 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 ""
|
|
||||||
"xxVideo playback is not supported yet. Do you want to play only the audio of "
|
|
||||||
"\"%1\"?xx"
|
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
|
||||||
#, kde-format
|
|
||||||
msgid "Albums"
|
|
||||||
msgstr "xxAlbumsxx"
|
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
|
||||||
#, kde-format
|
|
||||||
msgid "Singles"
|
|
||||||
msgstr "xxSinglesxx"
|
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
|
||||||
#, kde-format
|
|
||||||
msgid "Songs"
|
|
||||||
msgstr "xxSongsxx"
|
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
|
||||||
#, kde-format
|
|
||||||
msgid "Videos"
|
|
||||||
msgstr "xxVideosxx"
|
|
||||||
|
|
||||||
#: contents/ui/ConfirmationMessage.qml:16
|
|
||||||
#, kde-format
|
|
||||||
msgid "OK"
|
|
||||||
msgstr "xxOKxx"
|
|
||||||
|
|
||||||
#: contents/ui/ConfirmationMessage.qml:21
|
|
||||||
#, kde-format
|
|
||||||
msgid "Cancel"
|
|
||||||
msgstr "xxCancelxx"
|
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
|
||||||
#, kde-format
|
|
||||||
msgid "Favourites"
|
|
||||||
msgstr "xxFavouritesxx"
|
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
|
||||||
#, kde-format
|
|
||||||
msgid "Most played"
|
|
||||||
msgstr "xxMost playedxx"
|
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
|
||||||
#, kde-format
|
|
||||||
msgid "AudioTube"
|
|
||||||
msgstr "xxAudioTubexx"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
|
||||||
#, kde-format
|
|
||||||
msgid "Remove Track"
|
|
||||||
msgstr "xxRemove Trackxx"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
|
||||||
#, kde-format
|
|
||||||
msgid "Clear"
|
|
||||||
msgstr "xxClearxx"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "xxShufflexx"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "xxPausexx"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
|
||||||
msgid "No media playing"
|
|
||||||
msgstr "xxNo media playingxx"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
|
||||||
#, kde-format
|
|
||||||
msgid "Expand"
|
|
||||||
msgstr "xxExpandxx"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
|
||||||
#, kde-format
|
|
||||||
msgid "Artists"
|
|
||||||
msgstr "xxArtistsxx"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
|
||||||
#, kde-format
|
|
||||||
msgid "Playlists"
|
|
||||||
msgstr "xxPlaylistsxx"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
|
||||||
#, kde-format
|
|
||||||
msgid "Unknown"
|
|
||||||
msgstr "xxUnknownxx"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
|
||||||
#, kde-format
|
|
||||||
msgid "Play next"
|
|
||||||
msgstr "xxPlay nextxx"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
|
||||||
#, kde-format
|
|
||||||
msgid "Radio"
|
|
||||||
msgstr "xxRadioxx"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
|
||||||
#, kde-format
|
|
||||||
msgid "Find music on YouTube Music"
|
|
||||||
msgstr "xxFind music on YouTube Musicxx"
|
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
|
||||||
#, kde-format
|
|
||||||
msgid "Search"
|
|
||||||
msgstr "xxSearchxx"
|
|
||||||
+139
-55
@@ -2,8 +2,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: kdeorg\n"
|
"Project-Id-Version: kdeorg\n"
|
||||||
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
"POT-Creation-Date: 2022-05-23 00:47+0000\n"
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
"PO-Revision-Date: 2022-05-15 15:46\n"
|
"PO-Revision-Date: 2023-01-12 10:32\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: Chinese Simplified\n"
|
"Language-Team: Chinese Simplified\n"
|
||||||
"Language: zh_CN\n"
|
"Language: zh_CN\n"
|
||||||
@@ -27,47 +27,67 @@ msgctxt "EMAIL OF TRANSLATORS"
|
|||||||
msgid "Your emails"
|
msgid "Your emails"
|
||||||
msgstr "[email protected], [email protected]"
|
msgstr "[email protected], [email protected]"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:19 contents/ui/PlayerFooter.qml:192
|
#: contents/ui/AlbumPage.qml:22 contents/ui/PlaylistPage.qml:26
|
||||||
#: contents/ui/PlaylistPage.qml:19
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play"
|
msgid "Play"
|
||||||
msgstr "播放"
|
msgstr "播放"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:61 contents/ui/ArtistPage.qml:101
|
#: contents/ui/AlbumPage.qml:29 contents/ui/ArtistPage.qml:32
|
||||||
#: contents/ui/PlaylistPage.qml:67
|
#: contents/ui/PlaylistPage.qml:33
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play Next"
|
msgid "Shuffle"
|
||||||
msgstr "播放下一首"
|
msgstr "随机播放"
|
||||||
|
|
||||||
#: contents/ui/AlbumPage.qml:66 contents/ui/ArtistPage.qml:107
|
#: contents/ui/AlbumPage.qml:37 contents/ui/ArtistPage.qml:39
|
||||||
#: contents/ui/PlaylistPage.qml:72 contents/ui/SearchPage.qml:123
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Add to Playlist"
|
msgid "Open in Browser"
|
||||||
msgstr "添加到播放列表"
|
msgstr "在浏览器中打开"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:39 contents/ui/SearchPage.qml:67
|
#: 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
|
#, kde-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Video playback is not supported yet. Do you want to play only the audio of "
|
"Video playback is not supported yet. Do you want to play only the audio of "
|
||||||
"\"%1\"?"
|
"\"%1\"?"
|
||||||
msgstr "视频播放尚未被支持。您想要只播放“%1”中的音频吗?"
|
msgstr "视频播放尚未被支持。您想要只播放“%1”中的音频吗?"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:55 contents/ui/SearchPage.qml:25
|
#: contents/ui/ArtistPage.qml:85 contents/ui/SearchPage.qml:26
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Albums"
|
msgid "Albums"
|
||||||
msgstr "专辑"
|
msgstr "专辑"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:57
|
#: contents/ui/ArtistPage.qml:87
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Singles"
|
msgid "Singles"
|
||||||
msgstr "单曲"
|
msgstr "单曲"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:59 contents/ui/SearchPage.qml:31
|
#: contents/ui/ArtistPage.qml:89 contents/ui/SearchPage.qml:32
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Songs"
|
msgid "Songs"
|
||||||
msgstr "曲目"
|
msgstr "曲目"
|
||||||
|
|
||||||
#: contents/ui/ArtistPage.qml:61 contents/ui/SearchPage.qml:33
|
#: contents/ui/ArtistPage.qml:91 contents/ui/SearchPage.qml:34
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Videos"
|
msgid "Videos"
|
||||||
msgstr "视频"
|
msgstr "视频"
|
||||||
@@ -82,82 +102,146 @@ msgstr "确定"
|
|||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "取消"
|
msgstr "取消"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:15
|
#: 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
|
#, kde-format
|
||||||
msgid "Favourites"
|
msgid "Favourites"
|
||||||
msgstr ""
|
msgstr "收藏夹"
|
||||||
|
|
||||||
#: contents/ui/LibraryPage.qml:67
|
#: contents/ui/LibraryPage.qml:39 contents/ui/LibraryPage.qml:225
|
||||||
|
#, kde-format
|
||||||
|
msgid "Show All"
|
||||||
|
msgstr "显示全部"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:214
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Most played"
|
msgid "Most played"
|
||||||
|
msgstr "最常播放"
|
||||||
|
|
||||||
|
#: contents/ui/LibraryPage.qml:230
|
||||||
|
#, kde-format
|
||||||
|
msgid "played Songs"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/main.qml:94
|
#: contents/ui/main.qml:109
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "AudioTube"
|
msgid "AudioTube"
|
||||||
msgstr "AudioTube"
|
msgstr "AudioTube"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:124
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr "正在播放"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr "播放队列"
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Remove Track"
|
msgid "Remove Track"
|
||||||
msgstr "移除曲目"
|
msgstr "移除曲目"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:141
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
#, kde-format
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
msgid "Clear"
|
|
||||||
msgstr "清除"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:146 contents/ui/PlaylistPage.qml:26
|
|
||||||
#, kde-format
|
|
||||||
msgid "Shuffle"
|
|
||||||
msgstr "随机播放"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:192
|
|
||||||
#, kde-format
|
|
||||||
msgid "Pause"
|
|
||||||
msgstr "暂停"
|
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:222
|
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "No media playing"
|
msgid "No media playing"
|
||||||
msgstr "没有正在播放的媒体"
|
msgstr "没有正在播放的媒体"
|
||||||
|
|
||||||
#: contents/ui/PlayerFooter.qml:266
|
#: contents/ui/NavigationBar.qml:24 contents/ui/Sidebar.qml:93
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Expand"
|
msgid "Library"
|
||||||
msgstr "展开"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:27
|
#: 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
|
#, kde-format
|
||||||
msgid "Artists"
|
msgid "Artists"
|
||||||
msgstr "艺人"
|
msgstr "艺人"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:29
|
#: contents/ui/SearchPage.qml:30
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Playlists"
|
msgid "Playlists"
|
||||||
msgstr "播放列表"
|
msgstr "播放列表"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:36
|
#: contents/ui/SearchPage.qml:37
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr "未知"
|
msgstr "未知"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:117
|
#: contents/ui/SearchWithDropdown.qml:287
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Play next"
|
msgid "No matching previous searches"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, kde-format
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
msgstr "播放下一首"
|
msgstr "播放下一首"
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:129
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Radio"
|
msgid "Add to queue"
|
||||||
msgstr "电台"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:147
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Find music on YouTube Music"
|
msgid "Remove Favourite"
|
||||||
msgstr "查找 YouTube Music 中的音乐"
|
msgstr ""
|
||||||
|
|
||||||
#: contents/ui/SearchPage.qml:150
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
#, kde-format
|
#, kde-format
|
||||||
msgid "Search"
|
msgid "Add Favourite"
|
||||||
msgstr "搜索"
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr ""
|
||||||
@@ -0,0 +1,248 @@
|
|||||||
|
# Chinese translations for audiotube package
|
||||||
|
# audiotube 套件的正體中文翻譯.
|
||||||
|
# Copyright (C) 2022 This file is copyright:
|
||||||
|
# This file is distributed under the same license as the audiotube package.
|
||||||
|
# Automatically generated, 2022.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: audiotube\n"
|
||||||
|
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
|
||||||
|
"POT-Creation-Date: 2023-01-30 01:00+0000\n"
|
||||||
|
"PO-Revision-Date: 2022-05-30 00:47+0000\n"
|
||||||
|
"Last-Translator: Automatically generated\n"
|
||||||
|
"Language-Team: none\n"
|
||||||
|
"Language: zh_TW\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\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:109
|
||||||
|
#, kde-format
|
||||||
|
msgid "AudioTube"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:107
|
||||||
|
#, kde-format
|
||||||
|
msgid "Now Playing"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:132
|
||||||
|
#, kde-format
|
||||||
|
msgid "Queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:157
|
||||||
|
#, kde-format
|
||||||
|
msgid "Lyrics"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:274
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Track"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/MaximizedPlayerPage.qml:316
|
||||||
|
#: contents/ui/MinimizedPlayerControls.qml:90
|
||||||
|
#, kde-format
|
||||||
|
msgid "No media playing"
|
||||||
|
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:287
|
||||||
|
#, kde-format
|
||||||
|
msgid "No matching previous searches"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SearchWithDropdown.qml:322
|
||||||
|
#, kde-format
|
||||||
|
msgid "remove from search history"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/Sidebar.qml:179
|
||||||
|
#, kde-format
|
||||||
|
msgid "Collapse Sidebar"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:113 contents/ui/SongMenu.qml:172
|
||||||
|
#, kde-format
|
||||||
|
msgid "Play Next"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:122 contents/ui/SongMenu.qml:178
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add to queue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove Favourite"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:132 contents/ui/SongMenu.qml:185
|
||||||
|
#, kde-format
|
||||||
|
msgid "Add Favourite"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: contents/ui/SongMenu.qml:148 contents/ui/SongMenu.qml:200
|
||||||
|
#, kde-format
|
||||||
|
msgid "Remove from History"
|
||||||
|
msgstr ""
|
||||||
+1
-1
@@ -3,5 +3,5 @@
|
|||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||||
|
|
||||||
ytmusicapi==0.22.0
|
ytmusicapi==0.25.0
|
||||||
yt-dlp
|
yt-dlp
|
||||||
+11
-8
@@ -16,7 +16,7 @@ add_library(asyncdatabase STATIC
|
|||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(asyncdatabase PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
target_include_directories(asyncdatabase PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
target_link_libraries(asyncdatabase PUBLIC Qt5::Sql)
|
target_link_libraries(asyncdatabase PUBLIC Qt::Sql)
|
||||||
|
|
||||||
add_subdirectory(example)
|
add_subdirectory(example)
|
||||||
|
|
||||||
@@ -36,22 +36,25 @@ add_executable(audiotube
|
|||||||
multiiterableview.h
|
multiiterableview.h
|
||||||
library.cpp
|
library.cpp
|
||||||
resources.qrc
|
resources.qrc
|
||||||
|
blur.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(audiotube
|
target_link_libraries(audiotube
|
||||||
Qt5::Core
|
Qt::Core
|
||||||
Qt5::Gui
|
Qt::Gui
|
||||||
Qt5::Qml
|
Qt::Qml
|
||||||
Qt5::Quick
|
Qt::Quick
|
||||||
Qt5::QuickControls2
|
Qt::QuickControls2
|
||||||
Qt5::Svg
|
Qt::Svg
|
||||||
|
Qt::Widgets
|
||||||
KF5::I18n
|
KF5::I18n
|
||||||
KF5::CoreAddons
|
KF5::CoreAddons
|
||||||
KF5::Crash
|
KF5::Crash
|
||||||
|
KF5::WindowSystem
|
||||||
ytm
|
ytm
|
||||||
asyncdatabase
|
asyncdatabase
|
||||||
)
|
)
|
||||||
|
|
||||||
target_compile_definitions(audiotube PRIVATE -DQT_NO_KEYWORDS -DQT_NO_URL_CAST_FROM_STRING -DQT_QML_DEBUG)
|
target_compile_definitions(audiotube PRIVATE -DQT_NO_KEYWORDS -DQT_NO_URL_CAST_FROM_STRING)
|
||||||
|
|
||||||
install(TARGETS audiotube ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
|
install(TARGETS audiotube ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
|
||||||
+25
-2
@@ -3,8 +3,9 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||||
|
|
||||||
#include "albummodel.h"
|
#include "albummodel.h"
|
||||||
|
#include "playlistutils.h"
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QStringBuilder>
|
||||||
|
|
||||||
AlbumModel::AlbumModel(QObject *parent)
|
AlbumModel::AlbumModel(QObject *parent)
|
||||||
: AbstractYTMusicModel(parent)
|
: AbstractYTMusicModel(parent)
|
||||||
@@ -21,6 +22,7 @@ AlbumModel::AlbumModel(QObject *parent)
|
|||||||
std::sort(m_album.thumbnails.begin(), m_album.thumbnails.end());
|
std::sort(m_album.thumbnails.begin(), m_album.thumbnails.end());
|
||||||
|
|
||||||
Q_EMIT titleChanged();
|
Q_EMIT titleChanged();
|
||||||
|
Q_EMIT artistsChanged();
|
||||||
Q_EMIT thumbnailUrlChanged();
|
Q_EMIT thumbnailUrlChanged();
|
||||||
Q_EMIT playlistIdChanged();
|
Q_EMIT playlistIdChanged();
|
||||||
});
|
});
|
||||||
@@ -45,6 +47,14 @@ QVariant AlbumModel::data(const QModelIndex &index, int role) const
|
|||||||
return QString::fromStdString(m_album.tracks[index.row()].video_id.value_or(std::string()));
|
return QString::fromStdString(m_album.tracks[index.row()].video_id.value_or(std::string()));
|
||||||
case Artists:
|
case Artists:
|
||||||
return QVariant::fromValue(m_album.tracks[index.row()].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();
|
Q_UNREACHABLE();
|
||||||
@@ -57,7 +67,9 @@ QHash<int, QByteArray> AlbumModel::roleNames() const
|
|||||||
return {
|
return {
|
||||||
{Title, "title"},
|
{Title, "title"},
|
||||||
{VideoId, "videoId"},
|
{VideoId, "videoId"},
|
||||||
{Artists, "artists"}
|
{Artists, "artists"},
|
||||||
|
{ThumbnailUrl, "thumbnailUrl"},
|
||||||
|
{ArtistsDisplayString, "artistsDisplayString"}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,6 +89,12 @@ QString AlbumModel::title() const
|
|||||||
return QString::fromStdString(m_album.title);
|
return QString::fromStdString(m_album.title);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString AlbumModel::artists() const
|
||||||
|
{
|
||||||
|
return PlaylistUtils::artistsToString(m_album.artists);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
QUrl AlbumModel::thumbnailUrl() const
|
QUrl AlbumModel::thumbnailUrl() const
|
||||||
{
|
{
|
||||||
if (m_album.thumbnails.empty()) {
|
if (m_album.thumbnails.empty()) {
|
||||||
@@ -90,3 +108,8 @@ QString AlbumModel::playlistId() const
|
|||||||
{
|
{
|
||||||
return QString::fromStdString(m_album.audio_playlist_id);
|
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));
|
||||||
|
}
|
||||||
+10
-1
@@ -16,14 +16,18 @@ class AlbumModel : public AbstractYTMusicModel
|
|||||||
Q_PROPERTY(QString browseId READ browseId WRITE setBrowseId NOTIFY browseIdChanged REQUIRED)
|
Q_PROPERTY(QString browseId READ browseId WRITE setBrowseId NOTIFY browseIdChanged REQUIRED)
|
||||||
|
|
||||||
Q_PROPERTY(QString title READ title NOTIFY titleChanged)
|
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(QUrl thumbnailUrl READ thumbnailUrl NOTIFY thumbnailUrlChanged)
|
||||||
Q_PROPERTY(QString playlistId READ playlistId NOTIFY playlistIdChanged)
|
Q_PROPERTY(QString playlistId READ playlistId NOTIFY playlistIdChanged)
|
||||||
|
Q_PROPERTY(QUrl webUrl READ webUrl NOTIFY webUrlChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum Role {
|
enum Role {
|
||||||
Title = Qt::UserRole + 1,
|
Title = Qt::UserRole + 1,
|
||||||
VideoId,
|
VideoId,
|
||||||
Artists
|
Artists,
|
||||||
|
ThumbnailUrl,
|
||||||
|
ArtistsDisplayString
|
||||||
};
|
};
|
||||||
|
|
||||||
explicit AlbumModel(QObject *parent = nullptr);
|
explicit AlbumModel(QObject *parent = nullptr);
|
||||||
@@ -39,12 +43,17 @@ public:
|
|||||||
QString title() const;
|
QString title() const;
|
||||||
Q_SIGNAL void titleChanged();
|
Q_SIGNAL void titleChanged();
|
||||||
|
|
||||||
|
QString artists() const;
|
||||||
|
Q_SIGNAL void artistsChanged();
|
||||||
QUrl thumbnailUrl() const;
|
QUrl thumbnailUrl() const;
|
||||||
Q_SIGNAL void thumbnailUrlChanged();
|
Q_SIGNAL void thumbnailUrlChanged();
|
||||||
|
|
||||||
QString playlistId() const;
|
QString playlistId() const;
|
||||||
Q_SIGNAL void playlistIdChanged();
|
Q_SIGNAL void playlistIdChanged();
|
||||||
|
|
||||||
|
QUrl webUrl() const;
|
||||||
|
Q_SIGNAL void webUrlChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString m_browseId;
|
QString m_browseId;
|
||||||
|
|
||||||
|
|||||||
+28
-1
@@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
#include "artistmodel.h"
|
#include "artistmodel.h"
|
||||||
|
|
||||||
|
#include <QStringBuilder>
|
||||||
|
|
||||||
#include <asyncytmusic.h>
|
#include <asyncytmusic.h>
|
||||||
|
|
||||||
ArtistModel::ArtistModel(QObject *parent)
|
ArtistModel::ArtistModel(QObject *parent)
|
||||||
@@ -26,9 +28,21 @@ ArtistModel::ArtistModel(QObject *parent)
|
|||||||
std::sort(m_artist.thumbnails.begin(), m_artist.thumbnails.end());
|
std::sort(m_artist.thumbnails.begin(), m_artist.thumbnails.end());
|
||||||
|
|
||||||
albums = m_artist.albums ? m_artist.albums->results : std::vector<artist::Artist::Album>();
|
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>();
|
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>();
|
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>();
|
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
|
// std::span can't know if the data pointer underneath it was changed, so re-create
|
||||||
m_view = MultiIterableView(albums, singles, songs, videos);
|
m_view = MultiIterableView(albums, singles, songs, videos);
|
||||||
@@ -103,6 +117,13 @@ QVariant ArtistModel::data(const QModelIndex &index, int role) const
|
|||||||
|
|
||||||
Q_UNREACHABLE();
|
Q_UNREACHABLE();
|
||||||
}, m_view[index.row()]);
|
}, 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();
|
Q_UNREACHABLE();
|
||||||
@@ -116,7 +137,8 @@ QHash<int, QByteArray> ArtistModel::roleNames() const
|
|||||||
{Title, "title"},
|
{Title, "title"},
|
||||||
{Type, "type"},
|
{Type, "type"},
|
||||||
{Artists, "artists"},
|
{Artists, "artists"},
|
||||||
{VideoId, "videoId"}
|
{VideoId, "videoId"},
|
||||||
|
{ThumbnailUrl, "thumbnailUrl"}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,6 +167,11 @@ QUrl ArtistModel::thumbnailUrl() const
|
|||||||
return QUrl(QString::fromStdString(m_artist.thumbnails.back().url));
|
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)
|
void ArtistModel::triggerItem(int row)
|
||||||
{
|
{
|
||||||
std::visit([&](auto&& item) {
|
std::visit([&](auto&& item) {
|
||||||
|
|||||||
+6
-1
@@ -23,6 +23,7 @@ class ArtistModel : public AbstractYTMusicModel
|
|||||||
|
|
||||||
Q_PROPERTY(QString title READ title NOTIFY titleChanged)
|
Q_PROPERTY(QString title READ title NOTIFY titleChanged)
|
||||||
Q_PROPERTY(QUrl thumbnailUrl READ thumbnailUrl NOTIFY thumbnailUrlChanged)
|
Q_PROPERTY(QUrl thumbnailUrl READ thumbnailUrl NOTIFY thumbnailUrlChanged)
|
||||||
|
Q_PROPERTY(QUrl webUrl READ webUrl NOTIFY webUrlChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum Type {
|
enum Type {
|
||||||
@@ -37,7 +38,8 @@ public:
|
|||||||
Title,
|
Title,
|
||||||
Type,
|
Type,
|
||||||
Artists,
|
Artists,
|
||||||
VideoId
|
VideoId,
|
||||||
|
ThumbnailUrl
|
||||||
};
|
};
|
||||||
|
|
||||||
explicit ArtistModel(QObject *parent = nullptr);
|
explicit ArtistModel(QObject *parent = nullptr);
|
||||||
@@ -56,6 +58,9 @@ public:
|
|||||||
QUrl thumbnailUrl() const;
|
QUrl thumbnailUrl() const;
|
||||||
Q_SIGNAL void thumbnailUrlChanged();
|
Q_SIGNAL void thumbnailUrlChanged();
|
||||||
|
|
||||||
|
QUrl webUrl() const;
|
||||||
|
Q_SIGNAL void webUrlChanged();
|
||||||
|
|
||||||
Q_INVOKABLE void triggerItem(int row);
|
Q_INVOKABLE void triggerItem(int row);
|
||||||
|
|
||||||
Q_SIGNAL void openAlbum(const QString &browseId);
|
Q_SIGNAL void openAlbum(const QString &browseId);
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ struct AsyncSqlDatabasePrivate {
|
|||||||
// Internal asynchronous database class
|
// Internal asynchronous database class
|
||||||
QFuture<void> AsyncSqlDatabase::establishConnection(const DatabaseConfiguration &configuration)
|
QFuture<void> AsyncSqlDatabase::establishConnection(const DatabaseConfiguration &configuration)
|
||||||
{
|
{
|
||||||
return runAsync<void>([=, this] {
|
return runAsync([=, this] {
|
||||||
d->database = QSqlDatabase::addDatabase(configuration.type());
|
d->database = QSqlDatabase::addDatabase(configuration.type());
|
||||||
if (configuration.databaseName()) {
|
if (configuration.databaseName()) {
|
||||||
d->database.setDatabaseName(*configuration.databaseName());
|
d->database.setDatabaseName(*configuration.databaseName());
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ public:
|
|||||||
|
|
||||||
template <typename T, typename ...Args>
|
template <typename T, typename ...Args>
|
||||||
auto getResults(const QString &sqlQuery, Args... args) -> QFuture<std::vector<T>> {
|
auto getResults(const QString &sqlQuery, Args... args) -> QFuture<std::vector<T>> {
|
||||||
return runAsync<std::vector<T>>([=, this] {
|
return runAsync([=, this] {
|
||||||
auto query = executeQuery(sqlQuery, args...);
|
auto query = executeQuery(sqlQuery, args...);
|
||||||
const auto rows = parseRows<typename T::ColumnTypes>(retrieveRows(query));
|
const auto rows = parseRows<typename T::ColumnTypes>(retrieveRows(query));
|
||||||
|
|
||||||
@@ -110,7 +110,7 @@ public:
|
|||||||
|
|
||||||
template <typename T, typename ...Args>
|
template <typename T, typename ...Args>
|
||||||
auto getResult(const QString &sqlQuery, Args... args) -> QFuture<std::optional<T>> {
|
auto getResult(const QString &sqlQuery, Args... args) -> QFuture<std::optional<T>> {
|
||||||
return runAsync<std::optional<T>>([=, this]() -> std::optional<T> {
|
return runAsync([=, this]() -> std::optional<T> {
|
||||||
auto query = executeQuery(sqlQuery, args...);
|
auto query = executeQuery(sqlQuery, args...);
|
||||||
if (const auto row = retrieveOptionalRow(query)) {
|
if (const auto row = retrieveOptionalRow(query)) {
|
||||||
return T::fromSql(parseRow<typename T::ColumnTypes>(*row));
|
return T::fromSql(parseRow<typename T::ColumnTypes>(*row));
|
||||||
@@ -122,13 +122,13 @@ public:
|
|||||||
|
|
||||||
template <typename ...Args>
|
template <typename ...Args>
|
||||||
auto execute(const QString &sqlQuery, Args... args) -> QFuture<void> {
|
auto execute(const QString &sqlQuery, Args... args) -> QFuture<void> {
|
||||||
return runAsync<void>([=, this] {
|
return runAsync([=, this] {
|
||||||
executeQuery(sqlQuery, args...);
|
executeQuery(sqlQuery, args...);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
auto runMigrations(const QString &migrationDirectory) -> QFuture<void> {
|
auto runMigrations(const QString &migrationDirectory) -> QFuture<void> {
|
||||||
return runAsync<void>([=, this] {
|
return runAsync([=, this] {
|
||||||
runDatabaseMigrations(db(), migrationDirectory);
|
runDatabaseMigrations(db(), migrationDirectory);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -149,11 +149,12 @@ private:
|
|||||||
return runQuery(query);
|
return runQuery(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T, typename Functor>
|
template <typename Functor>
|
||||||
QFuture<T> runAsync(Functor func) {
|
QFuture<std::invoke_result_t<Functor>> runAsync(Functor func) {
|
||||||
auto interface = std::make_shared<QFutureInterface<T>>();
|
using ReturnType = std::invoke_result_t<Functor>;
|
||||||
|
auto interface = std::make_shared<QFutureInterface<ReturnType>>();
|
||||||
QMetaObject::invokeMethod(this, [interface, func] {
|
QMetaObject::invokeMethod(this, [interface, func] {
|
||||||
if constexpr (!std::is_same_v<T, void>) {
|
if constexpr (!std::is_same_v<ReturnType, void>) {
|
||||||
auto result = func();
|
auto result = func();
|
||||||
interface->reportResult(result);
|
interface->reportResult(result);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+27
-15
@@ -9,6 +9,7 @@
|
|||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
#include <QJsonArray>
|
#include <QJsonArray>
|
||||||
#include <QFutureInterface>
|
#include <QFutureInterface>
|
||||||
|
#include <QCoreApplication>
|
||||||
|
|
||||||
#include <pybind11/embed.h>
|
#include <pybind11/embed.h>
|
||||||
|
|
||||||
@@ -23,8 +24,8 @@ namespace py = pybind11;
|
|||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
template <typename R, typename T, typename OP>
|
template <typename T, typename OP>
|
||||||
std::optional<R> map_optional(const std::optional<T> &optional, OP op) {
|
std::optional<std::invoke_result_t<OP, T>> mapOptional(const std::optional<T> &optional, OP op) {
|
||||||
if (optional.has_value()) {
|
if (optional.has_value()) {
|
||||||
if constexpr (std::is_member_function_pointer<OP>::value) {
|
if constexpr (std::is_member_function_pointer<OP>::value) {
|
||||||
return (&optional.value()->*op)();
|
return (&optional.value()->*op)();
|
||||||
@@ -61,7 +62,7 @@ AsyncYTMusic::AsyncYTMusic(QObject *parent)
|
|||||||
//
|
//
|
||||||
QFuture<std::vector<search::SearchResultItem>> AsyncYTMusic::search(const QString &query)
|
QFuture<std::vector<search::SearchResultItem>> AsyncYTMusic::search(const QString &query)
|
||||||
{
|
{
|
||||||
return invokeAndCatchOnThread<std::vector<search::SearchResultItem>>([=, this]() {
|
return invokeAndCatchOnThread([=, this]() {
|
||||||
return m_ytm->search(query.toStdString());
|
return m_ytm->search(query.toStdString());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -71,7 +72,7 @@ QFuture<std::vector<search::SearchResultItem>> AsyncYTMusic::search(const QStrin
|
|||||||
//
|
//
|
||||||
QFuture<artist::Artist> AsyncYTMusic::fetchArtist(const QString &channelId)
|
QFuture<artist::Artist> AsyncYTMusic::fetchArtist(const QString &channelId)
|
||||||
{
|
{
|
||||||
return invokeAndCatchOnThread<artist::Artist>([=, this]() {
|
return invokeAndCatchOnThread([=, this]() {
|
||||||
return m_ytm->get_artist(channelId.toStdString());
|
return m_ytm->get_artist(channelId.toStdString());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -81,7 +82,7 @@ QFuture<artist::Artist> AsyncYTMusic::fetchArtist(const QString &channelId)
|
|||||||
//
|
//
|
||||||
QFuture<album::Album> AsyncYTMusic::fetchAlbum(const QString &browseId)
|
QFuture<album::Album> AsyncYTMusic::fetchAlbum(const QString &browseId)
|
||||||
{
|
{
|
||||||
return invokeAndCatchOnThread<album::Album>([=, this]() {
|
return invokeAndCatchOnThread([=, this]() {
|
||||||
return m_ytm->get_album(browseId.toStdString());
|
return m_ytm->get_album(browseId.toStdString());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -91,7 +92,7 @@ QFuture<album::Album> AsyncYTMusic::fetchAlbum(const QString &browseId)
|
|||||||
//
|
//
|
||||||
QFuture<std::optional<song::Song>> AsyncYTMusic::fetchSong(const QString &videoId)
|
QFuture<std::optional<song::Song>> AsyncYTMusic::fetchSong(const QString &videoId)
|
||||||
{
|
{
|
||||||
return invokeAndCatchOnThread<std::optional<song::Song>>([=, this]() {
|
return invokeAndCatchOnThread([=, this]() {
|
||||||
return m_ytm->get_song(videoId.toStdString());
|
return m_ytm->get_song(videoId.toStdString());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -100,7 +101,7 @@ QFuture<std::optional<song::Song>> AsyncYTMusic::fetchSong(const QString &videoI
|
|||||||
// fetchPlaylist
|
// fetchPlaylist
|
||||||
//
|
//
|
||||||
QFuture<playlist::Playlist> AsyncYTMusic::fetchPlaylist(const QString &playlistId) {
|
QFuture<playlist::Playlist> AsyncYTMusic::fetchPlaylist(const QString &playlistId) {
|
||||||
return invokeAndCatchOnThread<playlist::Playlist>([=, this]() {
|
return invokeAndCatchOnThread([=, this]() {
|
||||||
return m_ytm->get_playlist(playlistId.toStdString());
|
return m_ytm->get_playlist(playlistId.toStdString());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -110,7 +111,7 @@ QFuture<playlist::Playlist> AsyncYTMusic::fetchPlaylist(const QString &playlistI
|
|||||||
//
|
//
|
||||||
QFuture<std::vector<artist::Artist::Album>> AsyncYTMusic::fetchArtistAlbums(const QString &channelId, const QString ¶ms)
|
QFuture<std::vector<artist::Artist::Album>> AsyncYTMusic::fetchArtistAlbums(const QString &channelId, const QString ¶ms)
|
||||||
{
|
{
|
||||||
return invokeAndCatchOnThread<std::vector<artist::Artist::Album>>([=, this]() {
|
return invokeAndCatchOnThread([=, this]() {
|
||||||
return m_ytm->get_artist_albums(channelId.toStdString(), params.toStdString());
|
return m_ytm->get_artist_albums(channelId.toStdString(), params.toStdString());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -120,7 +121,7 @@ QFuture<std::vector<artist::Artist::Album>> AsyncYTMusic::fetchArtistAlbums(cons
|
|||||||
//
|
//
|
||||||
QFuture<video_info::VideoInfo> AsyncYTMusic::extractVideoInfo(const QString &videoId)
|
QFuture<video_info::VideoInfo> AsyncYTMusic::extractVideoInfo(const QString &videoId)
|
||||||
{
|
{
|
||||||
return invokeAndCatchOnThread<video_info::VideoInfo>([=, this]() {
|
return invokeAndCatchOnThread([=, this]() {
|
||||||
return m_ytm->extract_video_info(videoId.toStdString());
|
return m_ytm->extract_video_info(videoId.toStdString());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -130,10 +131,19 @@ QFuture<video_info::VideoInfo> AsyncYTMusic::extractVideoInfo(const QString &vid
|
|||||||
//
|
//
|
||||||
QFuture<watch::Playlist> AsyncYTMusic::fetchWatchPlaylist(const std::optional<QString> &videoId, const std::optional<QString> &playlistId)
|
QFuture<watch::Playlist> AsyncYTMusic::fetchWatchPlaylist(const std::optional<QString> &videoId, const std::optional<QString> &playlistId)
|
||||||
{
|
{
|
||||||
return invokeAndCatchOnThread<watch::Playlist>([=, this]() {
|
return invokeAndCatchOnThread([=, this]() {
|
||||||
return m_ytm->get_watch_playlist(
|
return m_ytm->get_watch_playlist(
|
||||||
map_optional<std::string>(videoId, &QString::toStdString),
|
mapOptional(videoId, &QString::toStdString),
|
||||||
map_optional<std::string>(playlistId, &QString::toStdString)
|
mapOptional(playlistId, &QString::toStdString)
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QFuture<Lyrics> AsyncYTMusic::fetchLyrics(const QString &browseId)
|
||||||
|
{
|
||||||
|
return invokeAndCatchOnThread([=, this]() {
|
||||||
|
return m_ytm->get_lyrics(
|
||||||
|
browseId.toStdString()
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -152,17 +162,19 @@ YTMusicThread::~YTMusicThread()
|
|||||||
|
|
||||||
AsyncYTMusic *YTMusicThread::operator->()
|
AsyncYTMusic *YTMusicThread::operator->()
|
||||||
{
|
{
|
||||||
return &m_ytm;
|
return m_ytm;
|
||||||
}
|
}
|
||||||
|
|
||||||
AsyncYTMusic &YTMusicThread::get()
|
AsyncYTMusic &YTMusicThread::get()
|
||||||
{
|
{
|
||||||
return m_ytm;
|
return *m_ytm;
|
||||||
}
|
}
|
||||||
|
|
||||||
YTMusicThread::YTMusicThread()
|
YTMusicThread::YTMusicThread()
|
||||||
|
: m_ytm(new AsyncYTMusic())
|
||||||
{
|
{
|
||||||
|
connect(QCoreApplication::instance(), &QCoreApplication::aboutToQuit, m_ytm, &QObject::deleteLater);
|
||||||
setObjectName(QStringLiteral("YTMusicAPI"));
|
setObjectName(QStringLiteral("YTMusicAPI"));
|
||||||
m_ytm.moveToThread(this);
|
m_ytm->moveToThread(this);
|
||||||
start();
|
start();
|
||||||
}
|
}
|
||||||
+15
-7
@@ -13,6 +13,8 @@
|
|||||||
|
|
||||||
#include <ytmusic.h>
|
#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<artist::Artist::Album>);
|
||||||
Q_DECLARE_METATYPE(std::vector<search::SearchResultItem>)
|
Q_DECLARE_METATYPE(std::vector<search::SearchResultItem>)
|
||||||
Q_DECLARE_METATYPE(artist::Artist)
|
Q_DECLARE_METATYPE(artist::Artist)
|
||||||
@@ -54,17 +56,19 @@ template <typename T, typename QObjectDerivedType, typename Function>
|
|||||||
void connectFuture(const QFuture<T> &future, QObjectDerivedType *self, const Function &fun) {
|
void connectFuture(const QFuture<T> &future, QObjectDerivedType *self, const Function &fun) {
|
||||||
auto watcher = std::make_shared<QFutureWatcher<T>>();
|
auto watcher = std::make_shared<QFutureWatcher<T>>();
|
||||||
watcher->setFuture(future);
|
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_same_v<void, T>) {
|
||||||
if constexpr (std::is_member_function_pointer_v<Function>) {
|
if constexpr (std::is_member_function_pointer_v<Function>) {
|
||||||
(self->*fun)();
|
(self->*fun)();
|
||||||
} else {
|
} else {
|
||||||
|
Q_UNUSED(self);
|
||||||
fun();
|
fun();
|
||||||
}
|
}
|
||||||
} else if (future.resultCount() > 0) {
|
} else if (future.resultCount() > 0) {
|
||||||
if constexpr (std::is_member_function_pointer_v<Function>) {
|
if constexpr (std::is_member_function_pointer_v<Function>) {
|
||||||
(self->*fun)(watcher->result());
|
(self->*fun)(watcher->result());
|
||||||
} else {
|
} else {
|
||||||
|
Q_UNUSED(self);
|
||||||
fun(watcher->result());
|
fun(watcher->result());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -75,12 +79,13 @@ void connectFuture(const QFuture<T> &future, QObjectDerivedType *self, const Fun
|
|||||||
/// Applies a function to a the contained value of a QFuture once it finishes.
|
/// Applies a function to a the contained value of a QFuture once it finishes.
|
||||||
/// @returns a QFuture that finishes once the future given as first argument finished
|
/// @returns a QFuture that finishes once the future given as first argument finished
|
||||||
///
|
///
|
||||||
template <typename T, typename U, typename Func>
|
template <typename T, typename Func>
|
||||||
QFuture<U> mapFuture(const QFuture<T> &future, Func mapFunction) {
|
QFuture<std::invoke_result_t<Func, T>> mapFuture(const QFuture<T> &future, Func mapFunction) {
|
||||||
|
using ReturnType = std::invoke_result_t<Func, T>;
|
||||||
auto watcher = std::make_shared<QFutureWatcher<T>>();
|
auto watcher = std::make_shared<QFutureWatcher<T>>();
|
||||||
watcher->setFuture(future);
|
watcher->setFuture(future);
|
||||||
|
|
||||||
auto interface = std::make_shared<QFutureInterface<U>>();
|
auto interface = std::make_shared<QFutureInterface<ReturnType>>();
|
||||||
QObject::connect(watcher.get(), &QFutureWatcherBase::finished, watcher.get(), [interface, watcher, mapFunction] {
|
QObject::connect(watcher.get(), &QFutureWatcherBase::finished, watcher.get(), [interface, watcher, mapFunction] {
|
||||||
auto result = watcher->result();
|
auto result = watcher->result();
|
||||||
auto mapped = mapFunction(std::move(result));
|
auto mapped = mapFunction(std::move(result));
|
||||||
@@ -116,6 +121,8 @@ public:
|
|||||||
QFuture<watch::Playlist> fetchWatchPlaylist(const std::optional<QString> &videoId = std::nullopt ,
|
QFuture<watch::Playlist> fetchWatchPlaylist(const std::optional<QString> &videoId = std::nullopt ,
|
||||||
const std::optional<QString> &playlistId = std::nullopt);
|
const std::optional<QString> &playlistId = std::nullopt);
|
||||||
|
|
||||||
|
QFuture<Lyrics> fetchLyrics(const QString &browseId);
|
||||||
|
|
||||||
Q_SIGNAL void errorOccurred(const QString &error);
|
Q_SIGNAL void errorOccurred(const QString &error);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -123,8 +130,9 @@ protected:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
/// Invokes the given function on the thread of the YTMusic object, and handles exceptions that occur while invoking it.
|
/// Invokes the given function on the thread of the YTMusic object, and handles exceptions that occur while invoking it.
|
||||||
template <typename ReturnType>
|
template <typename Func>
|
||||||
QFuture<ReturnType> invokeAndCatchOnThread(const std::function<ReturnType()> &fun) {
|
QFuture<std::invoke_result_t<Func>> invokeAndCatchOnThread(Func fun) {
|
||||||
|
using ReturnType = std::invoke_result_t<Func>;
|
||||||
auto interface = std::make_shared<QFutureInterface<ReturnType>>();
|
auto interface = std::make_shared<QFutureInterface<ReturnType>>();
|
||||||
QMetaObject::invokeMethod(this, [=, this]() {
|
QMetaObject::invokeMethod(this, [=, this]() {
|
||||||
try {
|
try {
|
||||||
@@ -154,5 +162,5 @@ public:
|
|||||||
private:
|
private:
|
||||||
YTMusicThread();
|
YTMusicThread();
|
||||||
|
|
||||||
AsyncYTMusic m_ytm;
|
AsyncYTMusic *m_ytm;
|
||||||
};
|
};
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* 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
@@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* 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);
|
||||||
|
};
|
||||||
@@ -13,39 +13,66 @@ Kirigami.ScrollablePage {
|
|||||||
property alias browseId: albumModel.browseId
|
property alias browseId: albumModel.browseId
|
||||||
title: albumModel.title
|
title: albumModel.title
|
||||||
|
|
||||||
actions {
|
|
||||||
main: Kirigami.Action {
|
|
||||||
icon.name: "media-playback-start"
|
|
||||||
text: i18n("Play")
|
|
||||||
onTriggered: {
|
|
||||||
applicationWindow().playPlaylist(albumModel.playlistId)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ListView {
|
ListView {
|
||||||
header: Kirigami.ItemViewHeader {
|
id: songList
|
||||||
backgroundImage.source: albumModel.thumbnailUrl
|
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
|
title: albumModel.title
|
||||||
|
imageSourceURL: albumModel.thumbnailUrl
|
||||||
|
subtitle: i18n("Album • %1" , albumModel.artists)
|
||||||
|
width: songList.width
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
reuseItems: true
|
reuseItems: true
|
||||||
|
|
||||||
model: AlbumModel {
|
model: AlbumModel {
|
||||||
id: albumModel
|
id: albumModel
|
||||||
}
|
}
|
||||||
|
SongMenu {
|
||||||
|
id: menu
|
||||||
|
}
|
||||||
delegate: Kirigami.SwipeListItem {
|
delegate: Kirigami.SwipeListItem {
|
||||||
id: delegateItem
|
id: delegateItem
|
||||||
|
alwaysVisibleActions:true
|
||||||
|
|
||||||
required property string title
|
required property string title
|
||||||
required property string videoId
|
required property string videoId
|
||||||
required property var artists
|
required property var artists
|
||||||
|
required property string thumbnailUrl
|
||||||
|
required property string artistsDisplayString
|
||||||
|
required property int index
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Kirigami.Icon {
|
Controls.Label {
|
||||||
Layout.fillHeight: true
|
text: (index + 1)
|
||||||
source: "emblem-music-symbolic"
|
font.bold: true
|
||||||
|
leftPadding: 5
|
||||||
|
color: Kirigami.Theme.disabledTextColor
|
||||||
|
Layout.preferredWidth: 30
|
||||||
}
|
}
|
||||||
|
|
||||||
Controls.Label {
|
Controls.Label {
|
||||||
@@ -57,18 +84,13 @@ Kirigami.ScrollablePage {
|
|||||||
|
|
||||||
actions: [
|
actions: [
|
||||||
Kirigami.Action {
|
Kirigami.Action {
|
||||||
icon.name: "go-next"
|
icon.name: "view-more-horizontal-symbolic"
|
||||||
text: i18n("Play Next")
|
text: i18n("More")
|
||||||
onTriggered: UserPlaylistModel.playNext(delegateItem.videoId, delegateItem.title, delegateItem.artists)
|
onTriggered: menu.openForSong(delegateItem.videoId, delegateItem.title, delegateItem.artists, delegateItem.artistsDisplayString)
|
||||||
},
|
|
||||||
Kirigami.Action {
|
|
||||||
icon.name: "media-playlist-append"
|
|
||||||
text: i18n("Add to Playlist")
|
|
||||||
onTriggered: UserPlaylistModel.append(delegateItem.videoId, delegateItem.title, delegateItem.artists)
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
onClicked: play(videoId)
|
onClicked: play(delegateItem.videoId)
|
||||||
}
|
}
|
||||||
|
|
||||||
Controls.BusyIndicator {
|
Controls.BusyIndicator {
|
||||||
|
|||||||
@@ -11,13 +11,42 @@ import org.kde.ytmusic 1.0
|
|||||||
|
|
||||||
Kirigami.ScrollablePage {
|
Kirigami.ScrollablePage {
|
||||||
property alias channelId: artistModel.channelId
|
property alias channelId: artistModel.channelId
|
||||||
|
property string radioId
|
||||||
|
property string shuffleId
|
||||||
title: artistModel.title
|
title: artistModel.title
|
||||||
|
|
||||||
|
SongMenu {
|
||||||
|
id: menu
|
||||||
|
}
|
||||||
ListView {
|
ListView {
|
||||||
header: Kirigami.ItemViewHeader {
|
id: songList
|
||||||
backgroundImage.source: artistModel.thumbnailUrl
|
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
]
|
||||||
title: artistModel.title
|
title: artistModel.title
|
||||||
|
imageSourceURL: artistModel.thumbnailUrl
|
||||||
|
subtitle: i18n("Artist")
|
||||||
|
rounded: true
|
||||||
|
width: songList.width
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
reuseItems: true
|
reuseItems: true
|
||||||
@@ -38,15 +67,16 @@ Kirigami.ScrollablePage {
|
|||||||
onOpenVideo: (videoId, title) => {
|
onOpenVideo: (videoId, title) => {
|
||||||
videoPlayMessage.text = i18n("Video playback is not supported yet. Do you want to play only the audio of \"%1\"?", 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.visible = true
|
||||||
videoPlayMessage.okAction = function() {
|
videoPlayMessage.okAction = () => {
|
||||||
play(videoId)
|
play(videoId)
|
||||||
videoPlayMessage.visible = false
|
videoPlayMessage.visible = false
|
||||||
}
|
}
|
||||||
videoPlayMessage.cancelAction = function() {
|
videoPlayMessage.cancelAction = () => {
|
||||||
videoPlayMessage.visible = false
|
videoPlayMessage.visible = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
section.property: "type"
|
section.property: "type"
|
||||||
section.delegate: Kirigami.ListSectionHeader {
|
section.delegate: Kirigami.ListSectionHeader {
|
||||||
text: {
|
text: {
|
||||||
@@ -62,30 +92,25 @@ Kirigami.ScrollablePage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
delegate: Kirigami.SwipeListItem {
|
delegate: Kirigami.SwipeListItem {
|
||||||
id: delegateItem
|
id: delegateItem
|
||||||
|
alwaysVisibleActions:true
|
||||||
|
|
||||||
required property string title
|
required property string title
|
||||||
required property int type
|
required property int type
|
||||||
required property int index
|
required property int index
|
||||||
required property var artists
|
required property var artists
|
||||||
required property string videoId
|
required property string videoId
|
||||||
|
required property string thumbnailUrl
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Kirigami.Icon {
|
RoundedImage {
|
||||||
Layout.fillHeight: true
|
source: delegateItem.thumbnailUrl
|
||||||
source: {
|
height: 35
|
||||||
switch (type) {
|
width: height
|
||||||
case ArtistModel.Album:
|
radius:5
|
||||||
return "media-album-cover"
|
|
||||||
case ArtistModel.Single:
|
|
||||||
case ArtistModel.Song:
|
|
||||||
return "emblem-music-symbolic"
|
|
||||||
case ArtistModel.Video:
|
|
||||||
return "emblem-videos-symbolic"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Controls.Label {
|
Controls.Label {
|
||||||
@@ -97,16 +122,10 @@ Kirigami.ScrollablePage {
|
|||||||
|
|
||||||
actions: [
|
actions: [
|
||||||
Kirigami.Action {
|
Kirigami.Action {
|
||||||
icon.name: "go-next"
|
icon.name: "view-more-horizontal-symbolic"
|
||||||
text: i18n("Play Next")
|
text: i18n("More")
|
||||||
visible: type === ArtistModel.Song
|
visible: type === ArtistModel.Song
|
||||||
onTriggered: UserPlaylistModel.playNext(delegateItem.videoId, delegateItem.title, delegateItem.artists)
|
onTriggered: menu.openForSong(delegateItem.videoId, delegateItem.title, delegateItem.artists, artistModel.title)
|
||||||
},
|
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
+318
-39
@@ -10,98 +10,377 @@ import org.kde.kirigami 2.14 as Kirigami
|
|||||||
import org.kde.ytmusic 1.0
|
import org.kde.ytmusic 1.0
|
||||||
|
|
||||||
Kirigami.ScrollablePage {
|
Kirigami.ScrollablePage {
|
||||||
|
objectName: "libraryPage"
|
||||||
|
Kirigami.Theme.colorSet: Kirigami.Theme.View
|
||||||
|
title: "AudioTube"
|
||||||
|
|
||||||
|
rightPadding: 0
|
||||||
|
leftPadding: 0
|
||||||
|
|
||||||
|
SongMenu {
|
||||||
|
id: menu
|
||||||
|
}
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
Kirigami.Heading {
|
RowLayout {
|
||||||
text: i18n("Favourites")
|
Layout.fillWidth: true
|
||||||
|
Kirigami.Heading {
|
||||||
|
text: i18n("Favourites")
|
||||||
|
Layout.alignment: Qt.AlignLeft
|
||||||
|
leftPadding: 15
|
||||||
|
}
|
||||||
|
|
||||||
|
// Spacer
|
||||||
|
Item {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Controls.ToolButton {
|
||||||
|
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"
|
||||||
|
})}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Controls.ScrollView {
|
Controls.ScrollView {
|
||||||
|
leftPadding: 15
|
||||||
|
rightPadding: 25
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
RowLayout {
|
RowLayout {
|
||||||
|
spacing: 20
|
||||||
Repeater {
|
Repeater {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
model: Library.favourites
|
model: Library.favourites
|
||||||
delegate: ColumnLayout {
|
delegate: ColumnLayout {
|
||||||
id: delegateItem
|
id: delegateItem
|
||||||
required property string title
|
required property string title
|
||||||
required property string artist
|
required property var artists
|
||||||
|
required property string artistsDisplayString
|
||||||
required property string videoId
|
required property string videoId
|
||||||
|
required property int index
|
||||||
|
|
||||||
Layout.fillWidth: false
|
Layout.fillWidth: false
|
||||||
Layout.maximumWidth: 200
|
Layout.maximumWidth: 200
|
||||||
Kirigami.Card {
|
|
||||||
id: card
|
|
||||||
Layout.preferredHeight: 200
|
|
||||||
|
|
||||||
onClicked: play(delegateItem.videoId)
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
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 {
|
ThumbnailSource {
|
||||||
id: thumbnailSource
|
id: thumbnailSource
|
||||||
videoId: delegateItem.videoId
|
videoId: delegateItem.videoId
|
||||||
}
|
}
|
||||||
|
RoundedImage {
|
||||||
header: Image {
|
|
||||||
sourceSize: "200x200"
|
|
||||||
source: thumbnailSource.cachedPath
|
source: thumbnailSource.cachedPath
|
||||||
fillMode: Image.PreserveAspectCrop
|
height: 200
|
||||||
asynchronous: true
|
width: height
|
||||||
|
radius: 10
|
||||||
|
}
|
||||||
|
Rectangle {
|
||||||
|
id: favSelected
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
anchors.fill: parent
|
||||||
|
color: Kirigami.Theme.hoverColor
|
||||||
|
radius: 10
|
||||||
|
opacity: 0.2
|
||||||
|
}
|
||||||
|
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
actions: [
|
|
||||||
Kirigami.Action {
|
|
||||||
icon.name: "delete"
|
|
||||||
onTriggered: Library.removeFavourite(delegateItem.videoId)
|
|
||||||
}
|
|
||||||
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
Controls.Label {
|
Item {
|
||||||
Layout.maximumWidth: 200
|
height: 5
|
||||||
text: delegateItem.title
|
|
||||||
elide: Qt.ElideRight
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Kirigami.Heading {
|
Item {
|
||||||
text: i18n("Most played")
|
height: 20
|
||||||
|
}
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Kirigami.Heading {
|
||||||
|
text: i18n("Most played")
|
||||||
|
Layout.alignment: Qt.AlignLeft
|
||||||
|
leftPadding: 15
|
||||||
|
}
|
||||||
|
|
||||||
|
// Spacer
|
||||||
|
Item {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Controls.ToolButton {
|
||||||
|
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"
|
||||||
|
})}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Controls.ScrollView {
|
Controls.ScrollView {
|
||||||
|
leftPadding: 15
|
||||||
|
rightPadding: 25
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
RowLayout {
|
RowLayout {
|
||||||
|
spacing: 20
|
||||||
Repeater {
|
Repeater {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
model: Library.mostPlayed
|
model: Library.mostPlayed
|
||||||
delegate: ColumnLayout {
|
delegate: ColumnLayout {
|
||||||
id: mpdelegateItem
|
id: mpdelegateItem
|
||||||
required property string title
|
required property string title
|
||||||
required property string artist
|
required property var artists
|
||||||
|
required property string artistsDisplayString
|
||||||
required property string videoId
|
required property string videoId
|
||||||
|
|
||||||
Layout.fillWidth: false
|
Layout.fillWidth: false
|
||||||
Layout.maximumWidth: 200
|
Layout.maximumWidth: 200
|
||||||
Kirigami.Card {
|
|
||||||
id: mpcard
|
|
||||||
Layout.preferredHeight: 200
|
|
||||||
|
|
||||||
onClicked: play(mpdelegateItem.videoId)
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
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 {
|
ThumbnailSource {
|
||||||
id: mpthumbnailSource
|
id: mpthumbnailSource
|
||||||
videoId: mpdelegateItem.videoId
|
videoId: mpdelegateItem.videoId
|
||||||
}
|
}
|
||||||
|
RoundedImage {
|
||||||
header: Image {
|
|
||||||
sourceSize: "200x200"
|
|
||||||
source: mpthumbnailSource.cachedPath
|
source: mpthumbnailSource.cachedPath
|
||||||
fillMode: Image.PreserveAspectCrop
|
height: 200
|
||||||
asynchronous: true
|
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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Controls.Label {
|
RowLayout {
|
||||||
Layout.maximumWidth: 200
|
ColumnLayout {
|
||||||
text: mpdelegateItem.title
|
Controls.Label {
|
||||||
elide: Qt.ElideRight
|
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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,143 @@
|
|||||||
|
// 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
@@ -14,6 +14,7 @@ import org.kde.ytmusic 1.0
|
|||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: root
|
id: root
|
||||||
|
z: 2000
|
||||||
|
|
||||||
required property int progressBarHeight
|
required property int progressBarHeight
|
||||||
required property int minimizedPlayerContentHeight
|
required property int minimizedPlayerContentHeight
|
||||||
@@ -21,14 +22,12 @@ Item {
|
|||||||
required property var info // VideoInfoExtractor object
|
required property var info // VideoInfoExtractor object
|
||||||
required property var audio // Audio object
|
required property var audio // Audio object
|
||||||
|
|
||||||
readonly property bool isWidescreen: width >= Kirigami.Units.gridUnit * 40
|
readonly property bool isWidescreen: width >= Kirigami.Units.gridUnit * 50
|
||||||
|
|
||||||
signal requestOpen()
|
signal requestOpen()
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: miniProgressBar
|
id: miniProgressBar
|
||||||
z: 1
|
z: 1
|
||||||
visible: !root.isWidescreen
|
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
height: root.progressBarHeight
|
height: root.progressBarHeight
|
||||||
@@ -37,14 +36,14 @@ Item {
|
|||||||
}
|
}
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
|
width: !isWidescreen? root.width- controlButtonBox.width: root.width
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
spacing: 0
|
spacing: 0
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: 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)
|
color: Qt.rgba(0, 0, 0, trackClick.containsMouse ? 0.1 : trackClick.pressed ? 0.3 : 0)
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
@@ -62,22 +61,27 @@ Item {
|
|||||||
Layout.maximumHeight: imageSize
|
Layout.maximumHeight: imageSize
|
||||||
Layout.minimumHeight: imageSize
|
Layout.minimumHeight: imageSize
|
||||||
|
|
||||||
Image {
|
RoundedImage {
|
||||||
id: mainIcon
|
id: mainIcon
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
asynchronous: true
|
visible: !loadingIndicator.visible
|
||||||
mipmap: true
|
|
||||||
|
|
||||||
source: info.thumbnail
|
source: info.thumbnail
|
||||||
|
radius: 5
|
||||||
sourceSize.width: 512
|
|
||||||
sourceSize.height: 512
|
|
||||||
fillMode: Image.PreserveAspectCrop
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BusyIndicator {
|
||||||
|
id: loadingIndicator
|
||||||
|
anchors.centerIn: parent
|
||||||
|
visible: UserPlaylistModel.loading
|
||||||
|
Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
|
||||||
|
Kirigami.Theme.inherit: false
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// track information
|
// track information
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
|
|
||||||
@@ -88,6 +92,7 @@ Item {
|
|||||||
wrapMode: Text.Wrap
|
wrapMode: Text.Wrap
|
||||||
Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
|
Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
Layout.maximumWidth: Kirigami.Units.gridUnit * 15
|
||||||
horizontalAlignment: Text.AlignLeft
|
horizontalAlignment: Text.AlignLeft
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
maximumLineCount: 1
|
maximumLineCount: 1
|
||||||
@@ -108,14 +113,16 @@ Item {
|
|||||||
horizontalAlignment: Text.AlignLeft
|
horizontalAlignment: Text.AlignLeft
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
maximumLineCount: 1
|
maximumLineCount: 1
|
||||||
|
Layout.maximumWidth: Kirigami.Units.gridUnit * 15
|
||||||
// Hardcoded because the footerbar blur always makes a dark-ish
|
// Hardcoded because the footerbar blur always makes a dark-ish
|
||||||
// background, so we don't want to use a color scheme color that
|
// background, so we don't want to use a color scheme color that
|
||||||
// might also be dark
|
// might also be dark
|
||||||
color: "white"
|
color: "white"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Item{Layout.fillWidth: true}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
id: trackClick
|
id: trackClick
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
@@ -123,85 +130,162 @@ Item {
|
|||||||
onClicked: root.requestOpen()
|
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)
|
|
||||||
}
|
|
||||||
|
|
||||||
Slider {
|
RowLayout {
|
||||||
Layout.alignment: Qt.AlignVCenter
|
id: controlButtonBox
|
||||||
Layout.fillWidth: true
|
anchors.centerIn: isWidescreen? root:null
|
||||||
from: 0
|
anchors.right: !isWidescreen? root.right:null
|
||||||
to: audio.duration
|
Layout.fillHeight: true
|
||||||
value: audio.position
|
spacing: 2
|
||||||
enabled: audio.seekable
|
|
||||||
onMoved: {
|
|
||||||
console.log("Value:", value);
|
|
||||||
audio.seek(Math.floor(value));
|
|
||||||
}
|
|
||||||
|
|
||||||
Behavior on value {
|
Label {
|
||||||
NumberAnimation {
|
color: "white"
|
||||||
duration: 1000
|
visible: info.title && root.isWidescreen
|
||||||
}
|
text: PlayerUtils.formatTimestamp(audio.position)
|
||||||
}
|
Layout.rightMargin: 20
|
||||||
}
|
|
||||||
|
|
||||||
Label {
|
|
||||||
Layout.alignment: Qt.AlignVCenter
|
|
||||||
color: "white"
|
|
||||||
visible: info.title
|
|
||||||
text: PlayerUtils.formatTimestamp(audio.duration)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Button {
|
||||||
ToolButton {
|
id: skipBackwardButton
|
||||||
id: playPauseButton
|
height: 40
|
||||||
Layout.preferredHeight: Kirigami.Units.gridUnit * 3
|
width: 40
|
||||||
Layout.maximumWidth: height
|
|
||||||
Layout.preferredWidth: height
|
|
||||||
|
|
||||||
enabled: info.audioUrl != ""
|
|
||||||
onClicked: audio.playbackState === Audio.PlayingState ? audio.pause() : audio.play()
|
|
||||||
|
|
||||||
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.colorSet: Kirigami.Theme.Complementary
|
||||||
Kirigami.Theme.inherit: false
|
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: 7
|
||||||
|
corners.bottomLeftRadius: 7
|
||||||
|
|
||||||
|
|
||||||
|
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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ToolButton {
|
Button {
|
||||||
|
id: playPauseButton
|
||||||
|
height: 40
|
||||||
|
width: 60
|
||||||
|
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
|
id: skipForwardButton
|
||||||
Layout.rightMargin: Math.floor(Kirigami.Units.smallSpacing / 2)
|
height: 40
|
||||||
Layout.preferredHeight: Kirigami.Units.gridUnit * 3
|
width: 40
|
||||||
Layout.maximumWidth: height
|
Layout.rightMargin:isWidescreen?0:10
|
||||||
Layout.preferredWidth: height
|
|
||||||
|
Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
|
||||||
|
Kirigami.Theme.inherit: false
|
||||||
|
|
||||||
enabled: UserPlaylistModel.canSkip
|
enabled: UserPlaylistModel.canSkip
|
||||||
onClicked: UserPlaylistModel.next()
|
onClicked: UserPlaylistModel.next()
|
||||||
|
contentItem: Item{
|
||||||
icon.name: "media-skip-forward"
|
Kirigami.Icon {
|
||||||
icon.width: Kirigami.Units.gridUnit
|
anchors.centerIn:parent
|
||||||
icon.height: Kirigami.Units.gridUnit
|
source:"media-skip-forward"
|
||||||
icon.color: "white"
|
color: "white"
|
||||||
|
width: Kirigami.Units.gridUnit
|
||||||
Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
|
height: Kirigami.Units.gridUnit
|
||||||
Kirigami.Theme.inherit: false
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
background: Kirigami.ShadowedRectangle{
|
||||||
|
corners.topRightRadius: 7
|
||||||
|
corners.bottomRightRadius: 7
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
// 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
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
// SPDX-FileCopyrightText: 2022 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.15
|
||||||
|
import QtQuick.Layouts 1.15
|
||||||
|
import QtQuick.Controls 2.15 as Controls
|
||||||
|
|
||||||
|
import org.kde.kirigami 2.15 as Kirigami
|
||||||
|
|
||||||
|
import org.kde.ytmusic 1.0
|
||||||
|
|
||||||
|
Kirigami.ScrollablePage {
|
||||||
|
id: playbackHistoryPage
|
||||||
|
title: i18n("Unknown list of songs")
|
||||||
|
|
||||||
|
property QtObject dataModel
|
||||||
|
SongMenu {
|
||||||
|
id:menu
|
||||||
|
}
|
||||||
|
ListView {
|
||||||
|
id: listView
|
||||||
|
reuseItems: true
|
||||||
|
|
||||||
|
Kirigami.PlaceholderMessage {
|
||||||
|
visible: listView.count < 1
|
||||||
|
text: i18n("No songs here yet")
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
|
||||||
|
model: playbackHistoryPage.dataModel
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
play(videoId)
|
||||||
|
}
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
ThumbnailSource {
|
||||||
|
id: thumbnailSource
|
||||||
|
|
||||||
|
videoId: delegateItem.videoId
|
||||||
|
}
|
||||||
|
|
||||||
|
RoundedImage {
|
||||||
|
source: thumbnailSource.cachedPath
|
||||||
|
height: 35
|
||||||
|
width: height
|
||||||
|
radius: 5
|
||||||
|
}
|
||||||
|
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
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
actions: [
|
||||||
|
Kirigami.Action {
|
||||||
|
icon.name: "view-more-horizontal-symbolic"
|
||||||
|
text: i18n("More")
|
||||||
|
onTriggered: menu.openForSong(delegateItem.videoId, delegateItem.title, delegateItem.artists, delegateItem.artistsDisplayString)
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,9 +17,10 @@ import org.kde.ytmusic 1.0
|
|||||||
Flickable {
|
Flickable {
|
||||||
id: footerItem
|
id: footerItem
|
||||||
|
|
||||||
|
property int footerSpacing:0
|
||||||
property bool maximized: false
|
property bool maximized: false
|
||||||
|
|
||||||
readonly property int progressBarHeight: Kirigami.Units.gridUnit / 6
|
readonly property int progressBarHeight: Kirigami.Units.gridUnit / 4
|
||||||
readonly property int minimizedPlayerContentHeight: Math.round(Kirigami.Units.gridUnit * 3.5)
|
readonly property int minimizedPlayerContentHeight: Math.round(Kirigami.Units.gridUnit * 3.5)
|
||||||
readonly property int minimizedPlayerHeight: minimizedPlayerContentHeight + progressBarHeight
|
readonly property int minimizedPlayerHeight: minimizedPlayerContentHeight + progressBarHeight
|
||||||
|
|
||||||
@@ -96,7 +97,14 @@ Flickable {
|
|||||||
|
|
||||||
onSongChanged: audio.play()
|
onSongChanged: audio.play()
|
||||||
videoId: UserPlaylistModel.currentVideoId
|
videoId: UserPlaylistModel.currentVideoId
|
||||||
onTitleChanged: Library.addPlaybackHistoryItem(info.videoId, info.title)
|
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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
property var audioPlayer: Audio {
|
property var audioPlayer: Audio {
|
||||||
@@ -115,7 +123,7 @@ Flickable {
|
|||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
id: footerLayout
|
id: footerLayout
|
||||||
|
y:-footerSpacing
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
spacing: 0
|
spacing: 0
|
||||||
@@ -128,7 +136,7 @@ Flickable {
|
|||||||
Controls.Control {
|
Controls.Control {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
padding: 0
|
padding: 0
|
||||||
implicitHeight: footerItem.minimizedPlayerHeight
|
implicitHeight: footerItem.minimizedPlayerHeight+footerSpacing
|
||||||
|
|
||||||
// minimized player background
|
// minimized player background
|
||||||
background: Item {
|
background: Item {
|
||||||
@@ -150,8 +158,8 @@ Flickable {
|
|||||||
layer.effect: HueSaturation {
|
layer.effect: HueSaturation {
|
||||||
cached: true
|
cached: true
|
||||||
|
|
||||||
lightness: -0.5
|
lightness: -0.7
|
||||||
saturation: 1.9
|
saturation: 3
|
||||||
|
|
||||||
layer.enabled: true
|
layer.enabled: true
|
||||||
layer.effect: FastBlur {
|
layer.effect: FastBlur {
|
||||||
@@ -178,7 +186,7 @@ Flickable {
|
|||||||
onRequestOpen: toOpen.start();
|
onRequestOpen: toOpen.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MaximizedPlayerPage {
|
MaximizedPlayerPage {
|
||||||
id: maximizedPlayerPage
|
id: maximizedPlayerPage
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
@@ -191,232 +199,8 @@ Flickable {
|
|||||||
onRequestClose: toClose.start();
|
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 {
|
|
||||||
//}
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
@@ -13,27 +13,34 @@ Kirigami.ScrollablePage {
|
|||||||
property alias playlistId: playlistModel.playlistId
|
property alias playlistId: playlistModel.playlistId
|
||||||
title: playlistModel.title
|
title: playlistModel.title
|
||||||
|
|
||||||
actions {
|
SongMenu {
|
||||||
main: Kirigami.Action {
|
id: menu
|
||||||
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 {
|
ListView {
|
||||||
header: Kirigami.ItemViewHeader {
|
id: songList
|
||||||
backgroundImage.source: playlistModel.thumbnailUrl
|
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
title: playlistModel.title
|
title: playlistModel.title
|
||||||
|
imageSourceURL: playlistModel.thumbnailUrl
|
||||||
|
width: songList.width
|
||||||
|
subtitle: i18n("Playlist")
|
||||||
|
|
||||||
}
|
}
|
||||||
model: PlaylistModel {
|
model: PlaylistModel {
|
||||||
id: playlistModel
|
id: playlistModel
|
||||||
@@ -43,34 +50,46 @@ Kirigami.ScrollablePage {
|
|||||||
|
|
||||||
delegate: Kirigami.SwipeListItem {
|
delegate: Kirigami.SwipeListItem {
|
||||||
id: delegateItem
|
id: delegateItem
|
||||||
|
alwaysVisibleActions:true
|
||||||
|
|
||||||
required property string title
|
required property string title
|
||||||
required property string videoId
|
required property string videoId
|
||||||
required property var artists
|
required property var artists
|
||||||
|
required property string thumbnailUrl
|
||||||
|
required property string artistsDisplayString
|
||||||
|
required property int index
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Kirigami.Icon {
|
RoundedImage {
|
||||||
Layout.fillHeight: true
|
source: delegateItem.thumbnailUrl
|
||||||
source: "emblem-music-symbolic"
|
height: 35
|
||||||
|
width: height
|
||||||
|
radius: 5
|
||||||
}
|
}
|
||||||
|
|
||||||
Controls.Label {
|
ColumnLayout {
|
||||||
Layout.fillWidth: true
|
Controls.Label {
|
||||||
text: title
|
Layout.fillWidth: true
|
||||||
elide: Qt.ElideRight
|
text: title
|
||||||
|
elide: Qt.ElideRight
|
||||||
|
}
|
||||||
|
|
||||||
|
Controls.Label {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
visible: delegateItem.artistsDisplayString
|
||||||
|
color: Kirigami.Theme.disabledTextColor
|
||||||
|
text: delegateItem.artistsDisplayString
|
||||||
|
elide: Qt.ElideRight
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
actions: [
|
actions: [
|
||||||
Kirigami.Action {
|
Kirigami.Action {
|
||||||
icon.name: "go-next"
|
icon.name: "view-more-horizontal-symbolic"
|
||||||
text: i18n("Play Next")
|
text: i18n("More")
|
||||||
onTriggered: UserPlaylistModel.playNext(delegateItem.videoId, delegateItem.title, delegateItem.artists)
|
onTriggered: menu.openForSong(delegateItem.videoId, delegateItem.title, delegateItem.artists, delegateItem.artistsDisplayString)
|
||||||
},
|
|
||||||
Kirigami.Action {
|
|
||||||
icon.name: "media-playlist-append"
|
|
||||||
text: i18n("Add to Playlist")
|
|
||||||
onTriggered: UserPlaylistModel.append(delegateItem.videoId, delegateItem.title, delegateItem.artists)
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
// 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
// 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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -10,9 +10,10 @@ import org.kde.kirigami 2.14 as Kirigami
|
|||||||
import org.kde.ytmusic 1.0
|
import org.kde.ytmusic 1.0
|
||||||
|
|
||||||
Kirigami.ScrollablePage {
|
Kirigami.ScrollablePage {
|
||||||
|
id: searchPage
|
||||||
property alias searchQuery: searchModel.searchQuery
|
property alias searchQuery: searchModel.searchQuery
|
||||||
|
objectName: "searchPage"
|
||||||
title: searchQuery
|
title: listView.count === 0 && !searchModel.loading? i18n("Previous Searches:") : searchQuery
|
||||||
|
|
||||||
ListView {
|
ListView {
|
||||||
reuseItems: true
|
reuseItems: true
|
||||||
@@ -37,7 +38,7 @@ Kirigami.ScrollablePage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
section.property: "type"
|
section.property: "type"
|
||||||
|
id: listView
|
||||||
model: SearchModel {
|
model: SearchModel {
|
||||||
id: searchModel
|
id: searchModel
|
||||||
|
|
||||||
@@ -47,9 +48,11 @@ Kirigami.ScrollablePage {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
onOpenArtist: (channelId) => {
|
onOpenArtist: (channelId, radioId, shuffleId) => {
|
||||||
pageStack.push("qrc:/ArtistPage.qml", {
|
pageStack.push("qrc:/ArtistPage.qml", {
|
||||||
"channelId": channelId
|
"channelId": channelId,
|
||||||
|
"radioId": radioId,
|
||||||
|
"shuffleId": shuffleId
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,60 +78,58 @@ Kirigami.ScrollablePage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SongMenu {
|
||||||
|
id: menu
|
||||||
|
}
|
||||||
|
|
||||||
delegate: Kirigami.SwipeListItem {
|
delegate: Kirigami.SwipeListItem {
|
||||||
|
|
||||||
id: delegateItem
|
id: delegateItem
|
||||||
|
alwaysVisibleActions:true
|
||||||
|
|
||||||
required property int index
|
required property int index
|
||||||
required property string title
|
required property string title
|
||||||
required property int type
|
required property int type
|
||||||
required property string videoId
|
required property string videoId
|
||||||
required property var artists
|
required property var artists
|
||||||
|
required property string artistsDisplayString
|
||||||
required property string radioPlaylistId
|
required property string radioPlaylistId
|
||||||
|
required property string thumbnailUrl
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Kirigami.Icon {
|
RoundedImage {
|
||||||
Layout.fillHeight: true
|
source: delegateItem.thumbnailUrl
|
||||||
source: {
|
height: 35
|
||||||
switch (type) {
|
width: height
|
||||||
case SearchModel.Artist:
|
radius: delegateItem.type === SearchModel.Artist?height/2:5
|
||||||
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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Controls.Label {
|
ColumnLayout {
|
||||||
Layout.fillWidth: true
|
Controls.Label {
|
||||||
text: title
|
Layout.fillWidth: true
|
||||||
elide: Qt.ElideRight
|
text: title
|
||||||
|
elide: Qt.ElideRight
|
||||||
|
}
|
||||||
|
|
||||||
|
Controls.Label {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
visible: delegateItem.artistsDisplayString
|
||||||
|
color: Kirigami.Theme.disabledTextColor
|
||||||
|
text: delegateItem.artistsDisplayString
|
||||||
|
elide: Qt.ElideRight
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
actions: [
|
actions: [
|
||||||
Kirigami.Action {
|
Kirigami.Action {
|
||||||
icon.name: "go-next"
|
icon.name: "view-more-horizontal-symbolic"
|
||||||
text: i18n("Play next")
|
text: i18n("More")
|
||||||
visible: delegateItem.type === SearchModel.Song || delegateItem.type == SearchModel.Video
|
visible: delegateItem.type === SearchModel.Song || delegateItem.type === SearchModel.Video
|
||||||
onTriggered: UserPlaylistModel.playNext(delegateItem.videoId, delegateItem.title, delegateItem.artists)
|
onTriggered: menu.openForSong(delegateItem.videoId, delegateItem.title, delegateItem.artists, delegateItem.artistsDisplayString)
|
||||||
},
|
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -138,19 +139,6 @@ Kirigami.ScrollablePage {
|
|||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
visible: searchModel.loading
|
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 {
|
footer: ConfirmationMessage {
|
||||||
|
|||||||
@@ -0,0 +1,343 @@
|
|||||||
|
// 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.heigth
|
||||||
|
}
|
||||||
|
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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,194 @@
|
|||||||
|
// 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
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,209 @@
|
|||||||
|
// 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
|
||||||
|
}
|
||||||
|
|
||||||
|
// Kirigami.Icon {
|
||||||
|
// Layout.margins: Kirigami.Units.smallSpacing
|
||||||
|
// source: "arrow-down"
|
||||||
|
// implicitWidth: Kirigami.Units.gridUnit
|
||||||
|
// implicitHeight: Kirigami.Units.gridUnit
|
||||||
|
// Layout.alignment: Qt.AlignHCenter
|
||||||
|
// }
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+171
-59
@@ -6,15 +6,50 @@ import QtQuick 2.1
|
|||||||
import QtQuick.Controls 2.12 as Controls
|
import QtQuick.Controls 2.12 as Controls
|
||||||
import QtQuick.Layouts 1.3
|
import QtQuick.Layouts 1.3
|
||||||
import org.kde.kirigami 2.14 as Kirigami
|
import org.kde.kirigami 2.14 as Kirigami
|
||||||
|
import QtGraphicalEffects 1.0
|
||||||
|
|
||||||
import org.kde.ytmusic 1.0
|
import org.kde.ytmusic 1.0
|
||||||
|
|
||||||
Kirigami.ApplicationWindow {
|
Kirigami.ApplicationWindow {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
property alias searchField: searchField
|
pageStack.globalToolBar.style: wideScreen? Kirigami.ApplicationHeaderStyle.None: Kirigami.ApplicationHeaderStyle.Breadcrumb
|
||||||
|
|
||||||
|
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 {
|
header: Controls.Control {
|
||||||
|
visible: wideScreen || root.showSearch
|
||||||
padding: Kirigami.Units.largeSpacing
|
padding: Kirigami.Units.largeSpacing
|
||||||
|
|
||||||
background: Rectangle {
|
background: Rectangle {
|
||||||
@@ -25,67 +60,48 @@ Kirigami.ApplicationWindow {
|
|||||||
Kirigami.Theme.colorSet: Kirigami.Theme.Header
|
Kirigami.Theme.colorSet: Kirigami.Theme.Header
|
||||||
color: Kirigami.Theme.backgroundColor
|
color: Kirigami.Theme.backgroundColor
|
||||||
}
|
}
|
||||||
contentItem: RowLayout{
|
|
||||||
Item {
|
contentItem: RowLayout {
|
||||||
Layout.fillWidth: true
|
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
}
|
}
|
||||||
Kirigami.SearchField {
|
Controls.ToolButton {
|
||||||
id: searchField
|
icon.name: "draw-arrow-forward"
|
||||||
delaySearch: true
|
enabled: applicationWindow().pageStack.currentIndex < applicationWindow().pageStack.depth-1
|
||||||
selectByMouse: true
|
onClicked: pageStack.goForward()
|
||||||
Layout.fillWidth: true
|
anchors.left: back.right
|
||||||
Layout.maximumWidth: 400
|
visible: wideScreen
|
||||||
onPressed: {
|
|
||||||
popup.open()
|
|
||||||
}
|
|
||||||
|
|
||||||
Controls.Popup {
|
|
||||||
id: popup
|
|
||||||
x: searchField.y
|
|
||||||
y: searchField.y + searchField.height
|
|
||||||
visible: true
|
|
||||||
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
|
|
||||||
|
|
||||||
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()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onAccepted: {
|
|
||||||
pageStack.clear()
|
|
||||||
|
|
||||||
if (text) {
|
|
||||||
Library.addSearch(text)
|
|
||||||
pageStack.push("qrc:/SearchPage.qml", {
|
|
||||||
"searchQuery": text})
|
|
||||||
} else {
|
|
||||||
pageStack.replace("qrc:/LibraryPage.qml")
|
|
||||||
}
|
|
||||||
|
|
||||||
popup.close()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// spacer
|
||||||
Item {
|
Item {
|
||||||
|
visible: wideScreen
|
||||||
|
Layout.fillWidth: !root.wideScreen
|
||||||
|
}
|
||||||
|
SearchWithDropdown {
|
||||||
|
id: searchLoader
|
||||||
|
visible: root.wideScreen || root.showSearch
|
||||||
|
Layout.alignment: Qt.AlignHCenter
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
Layout.fillHeight: true
|
||||||
|
height: back.height
|
||||||
|
width: wideScreen?null:root.width
|
||||||
|
Layout.maximumWidth: wideScreen ? 400 : root.width
|
||||||
|
}
|
||||||
|
|
||||||
|
Item {
|
||||||
|
width: 2*back.width
|
||||||
|
visible: wideScreen
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -97,6 +113,7 @@ Kirigami.ApplicationWindow {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pageStack.initialPage: "qrc:/LibraryPage.qml"
|
pageStack.initialPage: "qrc:/LibraryPage.qml"
|
||||||
|
pageStack.clip: true
|
||||||
|
|
||||||
function play(videoId) {
|
function play(videoId) {
|
||||||
UserPlaylistModel.initialVideoId = videoId
|
UserPlaylistModel.initialVideoId = videoId
|
||||||
@@ -110,7 +127,7 @@ Kirigami.ApplicationWindow {
|
|||||||
UserPlaylistModel.shuffle = true
|
UserPlaylistModel.shuffle = true
|
||||||
UserPlaylistModel.playlistId = playlistId
|
UserPlaylistModel.playlistId = playlistId
|
||||||
}
|
}
|
||||||
|
function focusSearch(){searchLoader.forceFocus()}
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
target: ErrorHandler
|
target: ErrorHandler
|
||||||
@@ -119,15 +136,110 @@ Kirigami.ApplicationWindow {
|
|||||||
showPassiveNotification(error)
|
showPassiveNotification(error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: searchAlbum
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
id: mpdelegateItem
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
pageStack.anchors.bottomMargin: playerFooter.minimizedPlayerHeight + 1
|
pageStack.anchors.bottomMargin: wideScreen ? playerFooter.minimizedPlayerHeight: playerFooter.minimizedPlayerHeight+bottombar.height
|
||||||
|
pageStack.anchors.leftMargin: wideScreen ? sidebar.width:0
|
||||||
|
|
||||||
// media player
|
// media player
|
||||||
PlayerFooter {
|
PlayerFooter {
|
||||||
id: playerFooter
|
id: playerFooter
|
||||||
anchors.topMargin: -root.header.height
|
anchors.topMargin: -root.header.height
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
footerSpacing: wideScreen ? 0 : bottombar.height
|
||||||
|
|
||||||
// only expand flicking area to full screen when it is open
|
// only expand flicking area to full screen when it is open
|
||||||
z: (contentY === 0) ? -1 : 999
|
z: (contentY === 0) ? -1 : 999
|
||||||
}
|
}
|
||||||
|
|||||||
+104
-23
@@ -40,13 +40,13 @@ Library &Library::instance()
|
|||||||
|
|
||||||
FavouritesModel *Library::favourites()
|
FavouritesModel *Library::favourites()
|
||||||
{
|
{
|
||||||
auto future = m_database->getResults<Song>("select * from favourites natural join songs");
|
auto future = m_database->getResults<Song>("select * from favourites natural join songs order by favourites.rowid desc");
|
||||||
return new FavouritesModel(std::move(future), this);
|
return new FavouritesModel(std::move(future), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Library::addFavourite(const QString &videoId, const QString &title)
|
void Library::addFavourite(const QString &videoId, const QString &title, const QString &artist, const QString &album)
|
||||||
{
|
{
|
||||||
connectFuture(addSong(videoId, title), this, [=, this] {
|
connectFuture(addSong(videoId, title, artist, album), this, [=, this] {
|
||||||
connectFuture(m_database->execute("insert or ignore into favourites (video_id) values (?)", videoId), this, &Library::favouritesChanged);
|
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()
|
SearchHistoryModel *Library::searches()
|
||||||
{
|
{
|
||||||
return new SearchHistoryModel(m_database->getResults<SingleValue<QString>>("select (search_query) from searches order by search_id desc"), this);
|
return new SearchHistoryModel(m_database->getResults<SingleValue<QString>>("select distinct (search_query) from searches order by search_id desc"), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Library::addSearch(const QString &text)
|
void Library::addSearch(const QString &text)
|
||||||
@@ -74,21 +74,40 @@ void Library::addSearch(const QString &text)
|
|||||||
connectFuture(m_database->execute("insert into searches (search_query) values (?)", text), this, &Library::searchesChanged);
|
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()
|
PlaybackHistoryModel *Library::playbackHistory()
|
||||||
{
|
{
|
||||||
auto future = m_database->getResults<PlayedSong>("select * from played_songs natural join songs");
|
auto future = m_database->getResults<PlayedSong>("select * from played_songs natural join songs");
|
||||||
return new PlaybackHistoryModel(std::move(future), this);
|
return new PlaybackHistoryModel(std::move(future), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Library::addPlaybackHistoryItem(const QString &videoId, const QString &title)
|
void Library::addPlaybackHistoryItem(const QString &videoId, const QString &title, const QString &artist, const QString &album)
|
||||||
{
|
{
|
||||||
connectFuture(addSong(videoId, title), this, [=, this] {
|
connectFuture(addSong(videoId, title, artist, album), this, [=, this] {
|
||||||
connectFuture(m_database->execute("insert or ignore into played_songs (video_id, plays) values (?, ?)", videoId, 0), 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);
|
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()
|
PlaybackHistoryModel *Library::mostPlayed()
|
||||||
{
|
{
|
||||||
auto future = m_database->getResults<PlayedSong>("select * from played_songs natural join songs order by plays desc limit 10");
|
auto future = m_database->getResults<PlayedSong>("select * from played_songs natural join songs order by plays desc limit 10");
|
||||||
@@ -100,9 +119,10 @@ QNetworkAccessManager &Library::nam()
|
|||||||
return m_networkImageCacher;
|
return m_networkImageCacher;
|
||||||
}
|
}
|
||||||
|
|
||||||
QFuture<void> Library::addSong(const QString &videoId, const QString &title)
|
QFuture<void> Library::addSong(const QString &videoId, const QString &title, const QString &artist, const QString &album)
|
||||||
{
|
{
|
||||||
return m_database->execute("insert or ignore into songs (video_id, title, artist, album) values (?, ?, null, null)", videoId, 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ThumbnailSource::setVideoId(const QString &id) {
|
void ThumbnailSource::setVideoId(const QString &id) {
|
||||||
@@ -122,15 +142,32 @@ void ThumbnailSource::setVideoId(const QString &id) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto future = YTMusicThread::instance()->extractVideoInfo(id);
|
auto *reply = Library::instance().nam().get(QNetworkRequest(QUrl("https://i.ytimg.com/vi_webp/" % m_videoId % "/maxresdefault.webp")));
|
||||||
connectFuture(future, this, [this, id, cacheLocation](video_info::VideoInfo &&info) {
|
|
||||||
auto *reply = Library::instance().nam().get(QNetworkRequest(QUrl(QString::fromStdString(info.thumbnail))));
|
auto storeResult = [this, cacheLocation](QNetworkReply *reply) {
|
||||||
connect(reply, &QNetworkReply::finished, this, [id, reply, this, cacheLocation]() {
|
QFile file(cacheLocation);
|
||||||
QFile file(cacheLocation);
|
file.open(QFile::WriteOnly);
|
||||||
file.open(QFile::WriteOnly);
|
file.write(reply->readAll());
|
||||||
file.write(reply->readAll());
|
setCachedPath(QUrl::fromLocalFile(cacheLocation));
|
||||||
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);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -148,7 +185,8 @@ QHash<int, QByteArray> PlaybackHistoryModel::roleNames() const {
|
|||||||
return {
|
return {
|
||||||
{Roles::VideoId, "videoId"},
|
{Roles::VideoId, "videoId"},
|
||||||
{Roles::Title, "title"},
|
{Roles::Title, "title"},
|
||||||
{Roles::Artist, "artist"},
|
{Roles::Artists, "artists"},
|
||||||
|
{Roles::ArtistsDisplayString, "artistsDisplayString"},
|
||||||
{Roles::Plays, "plays"}
|
{Roles::Plays, "plays"}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -163,7 +201,14 @@ QVariant PlaybackHistoryModel::data(const QModelIndex &index, int role) const {
|
|||||||
return m_playedSongs.at(index.row()).videoId;
|
return m_playedSongs.at(index.row()).videoId;
|
||||||
case Roles::Title:
|
case Roles::Title:
|
||||||
return m_playedSongs.at(index.row()).title;
|
return m_playedSongs.at(index.row()).title;
|
||||||
case Roles::Artist:
|
case Roles::Artists:
|
||||||
|
return QVariant::fromValue(std::vector<meta::Artist> {
|
||||||
|
{
|
||||||
|
m_playedSongs.at(index.row()).artist.toStdString(),
|
||||||
|
{}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
case Roles::ArtistsDisplayString:
|
||||||
return m_playedSongs.at(index.row()).artist;
|
return m_playedSongs.at(index.row()).artist;
|
||||||
case Roles::Plays:
|
case Roles::Plays:
|
||||||
return m_playedSongs.at(index.row()).plays;
|
return m_playedSongs.at(index.row()).plays;
|
||||||
@@ -186,7 +231,8 @@ QHash<int, QByteArray> FavouritesModel::roleNames() const {
|
|||||||
return {
|
return {
|
||||||
{Roles::VideoId, "videoId"},
|
{Roles::VideoId, "videoId"},
|
||||||
{Roles::Title, "title"},
|
{Roles::Title, "title"},
|
||||||
{Roles::Artist, "artist"}
|
{Roles::Artists, "artists"},
|
||||||
|
{Roles::ArtistsDisplayString, "artistsDisplayString"}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -200,8 +246,15 @@ QVariant FavouritesModel::data(const QModelIndex &index, int role) const {
|
|||||||
return m_favouriteSongs.at(index.row()).videoId;
|
return m_favouriteSongs.at(index.row()).videoId;
|
||||||
case Roles::Title:
|
case Roles::Title:
|
||||||
return m_favouriteSongs.at(index.row()).title;
|
return m_favouriteSongs.at(index.row()).title;
|
||||||
case Roles::Artist:
|
case Roles::ArtistsDisplayString:
|
||||||
return m_favouriteSongs.at(index.row()).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();
|
Q_UNREACHABLE();
|
||||||
@@ -211,9 +264,9 @@ FavouriteWatcher::FavouriteWatcher(Library *library, const QString &videoId)
|
|||||||
: QObject(library), m_videoId(videoId), m_library(library)
|
: QObject(library), m_videoId(videoId), m_library(library)
|
||||||
{
|
{
|
||||||
auto update = [this] {
|
auto update = [this] {
|
||||||
connectFuture(m_library->database().getResult<SingleValue<int>>("select count(*) from favourites where video_id = ?", m_videoId), this, [this](auto count) {
|
connectFuture(m_library->database().getResult<SingleValue<bool>>("select count(*) > 0 from favourites where video_id = ?", m_videoId), this, [this](auto count) {
|
||||||
if (count) {
|
if (count) {
|
||||||
m_isFavourite = count->value > 0;
|
m_isFavourite = count->value;
|
||||||
Q_EMIT isFavouriteChanged();
|
Q_EMIT isFavouriteChanged();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -248,3 +301,31 @@ QVariant SearchHistoryModel::data(const QModelIndex &index, int role) const {
|
|||||||
|
|
||||||
Q_UNREACHABLE();
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
+34
-6
@@ -8,6 +8,7 @@
|
|||||||
#include <QQuickAsyncImageProvider>
|
#include <QQuickAsyncImageProvider>
|
||||||
#include <QNetworkAccessManager>
|
#include <QNetworkAccessManager>
|
||||||
#include <QAbstractListModel>
|
#include <QAbstractListModel>
|
||||||
|
#include <QSortFilterProxyModel>
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
@@ -15,6 +16,7 @@
|
|||||||
#include "asyncdatabase.h"
|
#include "asyncdatabase.h"
|
||||||
|
|
||||||
class FavouriteWatcher;
|
class FavouriteWatcher;
|
||||||
|
class WasPlayedWatcher;
|
||||||
|
|
||||||
struct Song {
|
struct Song {
|
||||||
using ColumnTypes = std::tuple<QString, QString, QString, QString>;
|
using ColumnTypes = std::tuple<QString, QString, QString, QString>;
|
||||||
@@ -36,7 +38,8 @@ class FavouritesModel : public QAbstractListModel {
|
|||||||
enum Roles {
|
enum Roles {
|
||||||
VideoId = Qt::UserRole + 1,
|
VideoId = Qt::UserRole + 1,
|
||||||
Title,
|
Title,
|
||||||
Artist,
|
Artists,
|
||||||
|
ArtistsDisplayString
|
||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@@ -68,14 +71,16 @@ struct PlayedSong {
|
|||||||
class PlaybackHistoryModel : public QAbstractListModel {
|
class PlaybackHistoryModel : public QAbstractListModel {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
enum Roles {
|
enum Roles {
|
||||||
VideoId = Qt::UserRole + 1,
|
VideoId = Qt::UserRole + 1,
|
||||||
Title,
|
Title,
|
||||||
Artist,
|
Artists,
|
||||||
|
ArtistsDisplayString,
|
||||||
Plays
|
Plays
|
||||||
};
|
};
|
||||||
|
Q_ENUM(Roles);
|
||||||
|
|
||||||
public:
|
|
||||||
PlaybackHistoryModel(QFuture<std::vector<PlayedSong>> &&songs, QObject *parent = nullptr);
|
PlaybackHistoryModel(QFuture<std::vector<PlayedSong>> &&songs, QObject *parent = nullptr);
|
||||||
|
|
||||||
QHash<int, QByteArray> roleNames() const override;
|
QHash<int, QByteArray> roleNames() const override;
|
||||||
@@ -114,17 +119,20 @@ public:
|
|||||||
|
|
||||||
FavouritesModel *favourites();
|
FavouritesModel *favourites();
|
||||||
Q_SIGNAL void favouritesChanged();
|
Q_SIGNAL void favouritesChanged();
|
||||||
Q_INVOKABLE void addFavourite(const QString &videoId, const QString &title);
|
Q_INVOKABLE void addFavourite(const QString &videoId, const QString &title, const QString &artist, const QString &album);
|
||||||
Q_INVOKABLE void removeFavourite(const QString &videoId);
|
Q_INVOKABLE void removeFavourite(const QString &videoId);
|
||||||
Q_INVOKABLE FavouriteWatcher *favouriteWatcher(const QString &videoId);
|
Q_INVOKABLE FavouriteWatcher *favouriteWatcher(const QString &videoId);
|
||||||
|
|
||||||
SearchHistoryModel *searches();
|
SearchHistoryModel *searches();
|
||||||
Q_SIGNAL void searchesChanged();
|
Q_SIGNAL void searchesChanged();
|
||||||
Q_INVOKABLE void addSearch(const QString &text);
|
Q_INVOKABLE void addSearch(const QString &text);
|
||||||
|
Q_INVOKABLE void removeSearch(const QString &text);
|
||||||
|
|
||||||
PlaybackHistoryModel *playbackHistory();
|
PlaybackHistoryModel *playbackHistory();
|
||||||
Q_SIGNAL void playbackHistoryChanged();
|
Q_SIGNAL void playbackHistoryChanged();
|
||||||
Q_INVOKABLE void addPlaybackHistoryItem(const QString &videoId, const QString &title);
|
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);
|
||||||
|
|
||||||
PlaybackHistoryModel *mostPlayed();
|
PlaybackHistoryModel *mostPlayed();
|
||||||
|
|
||||||
@@ -134,7 +142,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QFuture<void> addSong(const QString &videoId, const QString &title);
|
QFuture<void> addSong(const QString &videoId, const QString &title, const QString &artist, const QString &album);
|
||||||
|
|
||||||
QNetworkAccessManager m_networkImageCacher;
|
QNetworkAccessManager m_networkImageCacher;
|
||||||
std::unique_ptr<ThreadedDatabase> m_database;
|
std::unique_ptr<ThreadedDatabase> m_database;
|
||||||
@@ -185,3 +193,23 @@ private:
|
|||||||
Library *m_library;
|
Library *m_library;
|
||||||
bool m_isFavourite = false;
|
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();
|
||||||
|
};
|
||||||
@@ -5,11 +5,13 @@
|
|||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QQmlApplicationEngine>
|
#include <QQmlApplicationEngine>
|
||||||
#include <QtQml>
|
#include <QtQml>
|
||||||
|
#include <QSortFilterProxyModel>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
#include <KLocalizedContext>
|
#include <KLocalizedContext>
|
||||||
#include <KLocalizedString>
|
#include <KLocalizedString>
|
||||||
#include <KCrash>
|
#include <KCrash>
|
||||||
#include <KAboutData>
|
#include <KAboutData>
|
||||||
|
#include <QQuickWindow>
|
||||||
|
|
||||||
#include "searchmodel.h"
|
#include "searchmodel.h"
|
||||||
#include "albummodel.h"
|
#include "albummodel.h"
|
||||||
@@ -20,6 +22,7 @@
|
|||||||
#include "playlistmodel.h"
|
#include "playlistmodel.h"
|
||||||
#include "playerutils.h"
|
#include "playerutils.h"
|
||||||
#include "library.h"
|
#include "library.h"
|
||||||
|
#include "blur.h"
|
||||||
|
|
||||||
#include "asyncdatabase.h"
|
#include "asyncdatabase.h"
|
||||||
|
|
||||||
@@ -45,18 +48,25 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
|
|||||||
qmlRegisterType<VideoInfoExtractor>(URI, 1, 0, "VideoInfoExtractor");
|
qmlRegisterType<VideoInfoExtractor>(URI, 1, 0, "VideoInfoExtractor");
|
||||||
qmlRegisterType<ArtistModel>(URI, 1, 0, "ArtistModel");
|
qmlRegisterType<ArtistModel>(URI, 1, 0, "ArtistModel");
|
||||||
qmlRegisterType<PlaylistModel>(URI, 1, 0, "PlaylistModel");
|
qmlRegisterType<PlaylistModel>(URI, 1, 0, "PlaylistModel");
|
||||||
|
qmlRegisterUncreatableType<PlaybackHistoryModel>(URI, 1, 0, "PlaybackHistoryModel","");
|
||||||
|
qmlRegisterType<QSortFilterProxyModel>(URI, 1, 0, "SortFilterModel");
|
||||||
|
qmlRegisterType<Blur>(URI, 1, 0, "Blur");
|
||||||
|
|
||||||
qmlRegisterSingletonType<UserPlaylistModel>(URI, 1, 0, "UserPlaylistModel", [](QQmlEngine *, QJSEngine *) {
|
qmlRegisterSingletonType<UserPlaylistModel>(URI, 1, 0, "UserPlaylistModel", [](QQmlEngine *, QJSEngine *) {
|
||||||
return new UserPlaylistModel();
|
return new UserPlaylistModel();
|
||||||
});
|
});
|
||||||
qmlRegisterSingletonType<ErrorHandler>(URI, 1, 0, "ErrorHandler", [](QQmlEngine *, QJSEngine *) {
|
qmlRegisterSingletonType<ErrorHandler>(URI, 1, 0, "ErrorHandler", [](QQmlEngine *, QJSEngine *) {
|
||||||
return new ErrorHandler();
|
return new ErrorHandler();
|
||||||
});
|
});
|
||||||
|
|
||||||
qmlRegisterSingletonType<PlayerUtils>(URI, 1, 0, "PlayerUtils", [](QQmlEngine *, QJSEngine *) {
|
qmlRegisterSingletonType<PlayerUtils>(URI, 1, 0, "PlayerUtils", [](QQmlEngine *, QJSEngine *) {
|
||||||
return new PlayerUtils();
|
return new PlayerUtils();
|
||||||
});
|
});
|
||||||
|
|
||||||
qmlRegisterSingletonInstance<Library>(URI, 1, 0, "Library", &Library::instance());
|
qmlRegisterSingletonInstance<Library>(URI, 1, 0, "Library", &Library::instance());
|
||||||
qmlRegisterType<ThumbnailSource>(URI, 1, 0, "ThumbnailSource");
|
qmlRegisterType<ThumbnailSource>(URI, 1, 0, "ThumbnailSource");
|
||||||
qmlRegisterAnonymousType<FavouriteWatcher>(URI, 1);
|
qmlRegisterAnonymousType<FavouriteWatcher>(URI, 1);
|
||||||
|
qmlRegisterAnonymousType<WasPlayedWatcher>(URI, 1);
|
||||||
|
|
||||||
engine.rootContext()->setContextObject(new KLocalizedContext(&engine));
|
engine.rootContext()->setContextObject(new KLocalizedContext(&engine));
|
||||||
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
|
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
|
||||||
|
|||||||
+11
-1
@@ -39,7 +39,9 @@ QHash<int, QByteArray> PlaylistModel::roleNames() const
|
|||||||
return {
|
return {
|
||||||
{Title, "title"},
|
{Title, "title"},
|
||||||
{Artists, "artists"},
|
{Artists, "artists"},
|
||||||
{VideoId, "videoId"}
|
{VideoId, "videoId"},
|
||||||
|
{ThumbnailUrl, "thumbnailUrl"},
|
||||||
|
{ArtistsDisplayString, "artistsDisplayString"}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,6 +57,14 @@ QVariant PlaylistModel::data(const QModelIndex &index, int role) const
|
|||||||
return QString::fromStdString(*m_playlist.tracks[index.row()].video_id);
|
return QString::fromStdString(*m_playlist.tracks[index.row()].video_id);
|
||||||
}
|
}
|
||||||
return {};
|
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();
|
Q_UNREACHABLE();
|
||||||
|
|||||||
+3
-1
@@ -26,7 +26,9 @@ public:
|
|||||||
enum Role {
|
enum Role {
|
||||||
Title,
|
Title,
|
||||||
Artists,
|
Artists,
|
||||||
VideoId
|
VideoId,
|
||||||
|
ThumbnailUrl,
|
||||||
|
ArtistsDisplayString
|
||||||
};
|
};
|
||||||
|
|
||||||
int rowCount(const QModelIndex &parent) const override;
|
int rowCount(const QModelIndex &parent) const override;
|
||||||
|
|||||||
+9
-1
@@ -1,5 +1,5 @@
|
|||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2021 Jonah Brüchert <[email protected]>
|
SPDX-FileCopyrightText: 2022 Jonah Brüchert <[email protected]>
|
||||||
|
|
||||||
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||||
-->
|
-->
|
||||||
@@ -18,5 +18,13 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
|
|||||||
<file alias="MaximizedPlayerPage.qml">contents/ui/MaximizedPlayerPage.qml</file>
|
<file alias="MaximizedPlayerPage.qml">contents/ui/MaximizedPlayerPage.qml</file>
|
||||||
<file>migrations/2022-05-20-194850_init/down.sql</file>
|
<file>migrations/2022-05-20-194850_init/down.sql</file>
|
||||||
<file>migrations/2022-05-20-194850_init/up.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>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
+23
-1
@@ -3,6 +3,9 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
// SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||||
|
|
||||||
#include "searchmodel.h"
|
#include "searchmodel.h"
|
||||||
|
#include "playlistutils.h"
|
||||||
|
|
||||||
|
#include <ranges>
|
||||||
|
|
||||||
SearchModel::SearchModel(QObject *parent)
|
SearchModel::SearchModel(QObject *parent)
|
||||||
: AbstractYTMusicModel(parent)
|
: AbstractYTMusicModel(parent)
|
||||||
@@ -21,6 +24,7 @@ SearchModel::SearchModel(QObject *parent)
|
|||||||
beginResetModel();
|
beginResetModel();
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
m_searchResults = results;
|
m_searchResults = results;
|
||||||
|
|
||||||
endResetModel();
|
endResetModel();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -117,6 +121,22 @@ QVariant SearchModel::data(const QModelIndex &index, int role) const
|
|||||||
|
|
||||||
return QString();
|
return QString();
|
||||||
}, m_searchResults.at(index.row()));
|
}, 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();
|
Q_UNREACHABLE();
|
||||||
@@ -131,7 +151,9 @@ QHash<int, QByteArray> SearchModel::roleNames() const
|
|||||||
{Type, "type"},
|
{Type, "type"},
|
||||||
{VideoId, "videoId"},
|
{VideoId, "videoId"},
|
||||||
{Artists, "artists"},
|
{Artists, "artists"},
|
||||||
|
{ArtistsDisplayString, "artistsDisplayString"},
|
||||||
{RadioPlaylistId, "radioPlaylistId"},
|
{RadioPlaylistId, "radioPlaylistId"},
|
||||||
|
{ThumbnailUrl, "thumbnailUrl"}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,7 +175,7 @@ void SearchModel::triggerItem(int row)
|
|||||||
if constexpr (std::is_same_v<T, search::Album>) {
|
if constexpr (std::is_same_v<T, search::Album>) {
|
||||||
Q_EMIT openAlbum(QString::fromStdString(arg.browse_id));
|
Q_EMIT openAlbum(QString::fromStdString(arg.browse_id));
|
||||||
} else if constexpr (std::is_same_v<T, search::Artist>) {
|
} else if constexpr (std::is_same_v<T, search::Artist>) {
|
||||||
Q_EMIT openArtist(QString::fromStdString(arg.browse_id));
|
Q_EMIT openArtist(QString::fromStdString(arg.browse_id), QString::fromStdString(arg.radio_id.value_or("")), QString::fromStdString(arg.shuffle_id.value_or("")));
|
||||||
} else if constexpr (std::is_same_v<T, search::Playlist>) {
|
} else if constexpr (std::is_same_v<T, search::Playlist>) {
|
||||||
Q_EMIT openPlaylist(QString::fromStdString(arg.browse_id));
|
Q_EMIT openPlaylist(QString::fromStdString(arg.browse_id));
|
||||||
} else if constexpr (std::is_same_v<T, search::Song>) {
|
} else if constexpr (std::is_same_v<T, search::Song>) {
|
||||||
|
|||||||
+4
-2
@@ -19,6 +19,7 @@ class SearchModel : public AbstractYTMusicModel
|
|||||||
public:
|
public:
|
||||||
enum Type {
|
enum Type {
|
||||||
Artist,
|
Artist,
|
||||||
|
ArtistsDisplayString,
|
||||||
Album,
|
Album,
|
||||||
Playlist,
|
Playlist,
|
||||||
Song,
|
Song,
|
||||||
@@ -31,7 +32,8 @@ public:
|
|||||||
Type,
|
Type,
|
||||||
VideoId,
|
VideoId,
|
||||||
Artists,
|
Artists,
|
||||||
RadioPlaylistId
|
RadioPlaylistId,
|
||||||
|
ThumbnailUrl
|
||||||
};
|
};
|
||||||
|
|
||||||
explicit SearchModel(QObject *parent = nullptr);
|
explicit SearchModel(QObject *parent = nullptr);
|
||||||
@@ -47,7 +49,7 @@ public:
|
|||||||
Q_INVOKABLE void triggerItem(int row);
|
Q_INVOKABLE void triggerItem(int row);
|
||||||
|
|
||||||
Q_SIGNAL void openAlbum(const QString &browseId);
|
Q_SIGNAL void openAlbum(const QString &browseId);
|
||||||
Q_SIGNAL void openArtist(const QString &browseId);
|
Q_SIGNAL void openArtist(const QString &browseId,const QString &radioId, const QString &shuffleId);
|
||||||
Q_SIGNAL void openPlaylist(const QString &browseId);
|
Q_SIGNAL void openPlaylist(const QString &browseId);
|
||||||
Q_SIGNAL void openSong(const QString &videoId);
|
Q_SIGNAL void openSong(const QString &videoId);
|
||||||
Q_SIGNAL void openVideo(const QString &videoId, const QString &title);
|
Q_SIGNAL void openVideo(const QString &videoId, const QString &title);
|
||||||
|
|||||||
@@ -11,6 +11,8 @@
|
|||||||
#include <QRandomGenerator>
|
#include <QRandomGenerator>
|
||||||
#include <QFutureWatcher>
|
#include <QFutureWatcher>
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
#include "playlistutils.h"
|
#include "playlistutils.h"
|
||||||
|
|
||||||
UserPlaylistModel::UserPlaylistModel(QObject *parent)
|
UserPlaylistModel::UserPlaylistModel(QObject *parent)
|
||||||
@@ -55,6 +57,15 @@ UserPlaylistModel::UserPlaylistModel(QObject *parent)
|
|||||||
connect(&YTMusicThread::instance().get(), &AsyncYTMusic::errorOccurred, this, [this] {
|
connect(&YTMusicThread::instance().get(), &AsyncYTMusic::errorOccurred, this, [this] {
|
||||||
setLoading(false);
|
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
|
int UserPlaylistModel::rowCount(const QModelIndex &parent) const
|
||||||
@@ -71,6 +82,8 @@ QVariant UserPlaylistModel::data(const QModelIndex &index, int role) const
|
|||||||
return QString::fromStdString(m_playlist.tracks[index.row()].video_id);
|
return QString::fromStdString(m_playlist.tracks[index.row()].video_id);
|
||||||
case Artists:
|
case Artists:
|
||||||
return PlaylistUtils::artistsToString(m_playlist.tracks[index.row()].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:
|
case IsCurrent:
|
||||||
return m_playlist.tracks[index.row()].video_id == m_currentVideoId.toStdString();
|
return m_playlist.tracks[index.row()].video_id == m_currentVideoId.toStdString();
|
||||||
}
|
}
|
||||||
@@ -86,7 +99,8 @@ QHash<int, QByteArray> UserPlaylistModel::roleNames() const
|
|||||||
{Title, "title"},
|
{Title, "title"},
|
||||||
{VideoId, "videoId"},
|
{VideoId, "videoId"},
|
||||||
{Artists, "artists"},
|
{Artists, "artists"},
|
||||||
{IsCurrent, "isCurrent"}
|
{Album, "album"},
|
||||||
|
{IsCurrent, "isCurrent"},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,6 +129,20 @@ QString UserPlaylistModel::nextVideoId() const
|
|||||||
return QString::fromStdString((currentTrack + 1)->video_id);
|
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
|
QString UserPlaylistModel::currentVideoId() const
|
||||||
{
|
{
|
||||||
return m_currentVideoId;
|
return m_currentVideoId;
|
||||||
@@ -127,6 +155,18 @@ void UserPlaylistModel::setCurrentVideoId(const QString &videoId)
|
|||||||
emitCurrentVideoChanged(old);
|
emitCurrentVideoChanged(old);
|
||||||
Q_EMIT currentVideoIdChanged();
|
Q_EMIT currentVideoIdChanged();
|
||||||
Q_EMIT canSkipChanged();
|
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
|
bool UserPlaylistModel::canSkip() const
|
||||||
@@ -140,12 +180,32 @@ bool UserPlaylistModel::canSkip() const
|
|||||||
&& currentTrackIt != m_playlist.tracks.end()
|
&& currentTrackIt != m_playlist.tracks.end()
|
||||||
&& !m_playlist.tracks.empty();
|
&& !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()
|
void UserPlaylistModel::next()
|
||||||
{
|
{
|
||||||
setCurrentVideoId(nextVideoId());
|
setCurrentVideoId(nextVideoId());
|
||||||
Q_EMIT currentVideoIdChanged();
|
Q_EMIT currentVideoIdChanged();
|
||||||
Q_EMIT canSkipChanged();
|
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)
|
void UserPlaylistModel::skipTo(const QString &videoId)
|
||||||
@@ -155,6 +215,8 @@ void UserPlaylistModel::skipTo(const QString &videoId)
|
|||||||
emitCurrentVideoChanged(old);
|
emitCurrentVideoChanged(old);
|
||||||
Q_EMIT currentVideoIdChanged();
|
Q_EMIT currentVideoIdChanged();
|
||||||
Q_EMIT canSkipChanged();
|
Q_EMIT canSkipChanged();
|
||||||
|
Q_EMIT canSkipBackChanged();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UserPlaylistModel::playNext(const QString &videoId, const QString &title, const std::vector<meta::Artist> &artists)
|
void UserPlaylistModel::playNext(const QString &videoId, const QString &title, const std::vector<meta::Artist> &artists)
|
||||||
@@ -175,6 +237,8 @@ void UserPlaylistModel::playNext(const QString &videoId, const QString &title, c
|
|||||||
endInsertRows();
|
endInsertRows();
|
||||||
setCurrentVideoId(videoId);
|
setCurrentVideoId(videoId);
|
||||||
Q_EMIT canSkipChanged();
|
Q_EMIT canSkipChanged();
|
||||||
|
Q_EMIT canSkipBackChanged();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,6 +248,8 @@ void UserPlaylistModel::playNext(const QString &videoId, const QString &title, c
|
|||||||
m_playlist.tracks.push_back(std::move(track));
|
m_playlist.tracks.push_back(std::move(track));
|
||||||
endInsertRows();
|
endInsertRows();
|
||||||
Q_EMIT canSkipChanged();
|
Q_EMIT canSkipChanged();
|
||||||
|
Q_EMIT canSkipBackChanged();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,6 +258,8 @@ void UserPlaylistModel::playNext(const QString &videoId, const QString &title, c
|
|||||||
m_playlist.tracks.insert(currentIt + 1, std::move(track));
|
m_playlist.tracks.insert(currentIt + 1, std::move(track));
|
||||||
endInsertRows();
|
endInsertRows();
|
||||||
Q_EMIT canSkipChanged();
|
Q_EMIT canSkipChanged();
|
||||||
|
Q_EMIT canSkipBackChanged();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UserPlaylistModel::append(const QString &videoId, const QString &title, const std::vector<meta::Artist> &artists)
|
void UserPlaylistModel::append(const QString &videoId, const QString &title, const std::vector<meta::Artist> &artists)
|
||||||
@@ -218,6 +286,8 @@ void UserPlaylistModel::clear()
|
|||||||
|
|
||||||
setCurrentVideoId({});
|
setCurrentVideoId({});
|
||||||
Q_EMIT canSkipChanged();
|
Q_EMIT canSkipChanged();
|
||||||
|
Q_EMIT canSkipBackChanged();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UserPlaylistModel::remove(const QString &videoId)
|
void UserPlaylistModel::remove(const QString &videoId)
|
||||||
@@ -235,6 +305,8 @@ void UserPlaylistModel::remove(const QString &videoId)
|
|||||||
endRemoveRows();
|
endRemoveRows();
|
||||||
|
|
||||||
Q_EMIT canSkipChanged();
|
Q_EMIT canSkipChanged();
|
||||||
|
Q_EMIT canSkipBackChanged();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void UserPlaylistModel::shufflePlaylist()
|
void UserPlaylistModel::shufflePlaylist()
|
||||||
@@ -271,11 +343,28 @@ void UserPlaylistModel::emitCurrentVideoChanged(const QString &oldVideoId)
|
|||||||
Q_EMIT dataChanged(index(newIndex), index(newIndex), {IsCurrent});
|
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
|
bool UserPlaylistModel::shuffle() const
|
||||||
{
|
{
|
||||||
return m_shuffle;
|
return m_shuffle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString UserPlaylistModel::lyrics() const {
|
||||||
|
return QString::fromStdString(m_lyrics.lyrics);
|
||||||
|
}
|
||||||
|
|
||||||
void UserPlaylistModel::setShuffle(bool shuffle)
|
void UserPlaylistModel::setShuffle(bool shuffle)
|
||||||
{
|
{
|
||||||
m_shuffle = shuffle;
|
m_shuffle = shuffle;
|
||||||
|
|||||||
+22
-1
@@ -4,6 +4,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <QAbstractListModel>
|
#include <QAbstractListModel>
|
||||||
|
#include <QFuture>
|
||||||
|
|
||||||
#include <ytmusic.h>
|
#include <ytmusic.h>
|
||||||
|
|
||||||
@@ -20,15 +21,20 @@ class UserPlaylistModel : public AbstractYTMusicModel
|
|||||||
|
|
||||||
// output
|
// output
|
||||||
Q_PROPERTY(QString currentVideoId READ currentVideoId NOTIFY currentVideoIdChanged)
|
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 canSkip READ canSkip NOTIFY canSkipChanged)
|
||||||
|
Q_PROPERTY(bool canSkipBack READ canSkipBack NOTIFY canSkipBackChanged)
|
||||||
|
Q_PROPERTY(QString lyrics READ lyrics NOTIFY lyricsChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum Role {
|
enum Role {
|
||||||
Title = Qt::UserRole + 1,
|
Title = Qt::UserRole + 1,
|
||||||
VideoId,
|
VideoId,
|
||||||
Artists,
|
Artists,
|
||||||
IsCurrent
|
Album,
|
||||||
|
IsCurrent,
|
||||||
};
|
};
|
||||||
|
Q_ENUM(Role);
|
||||||
|
|
||||||
explicit UserPlaylistModel(QObject *parent = nullptr);
|
explicit UserPlaylistModel(QObject *parent = nullptr);
|
||||||
|
|
||||||
@@ -41,13 +47,20 @@ public:
|
|||||||
Q_SIGNAL void initialVideoIdChanged();
|
Q_SIGNAL void initialVideoIdChanged();
|
||||||
|
|
||||||
QString nextVideoId() const;
|
QString nextVideoId() const;
|
||||||
|
QString previousVideoId() const;
|
||||||
|
|
||||||
QString currentVideoId() const;
|
QString currentVideoId() const;
|
||||||
void setCurrentVideoId(const QString &videoId);
|
void setCurrentVideoId(const QString &videoId);
|
||||||
Q_SIGNAL void currentVideoIdChanged();
|
Q_SIGNAL void currentVideoIdChanged();
|
||||||
|
|
||||||
|
int currentIndex() const;
|
||||||
|
|
||||||
bool canSkip() const;
|
bool canSkip() const;
|
||||||
|
bool canSkipBack() const;
|
||||||
|
|
||||||
Q_SIGNAL void canSkipChanged();
|
Q_SIGNAL void canSkipChanged();
|
||||||
|
Q_SIGNAL void canSkipBackChanged();
|
||||||
|
|
||||||
|
|
||||||
QString playlistId() const;
|
QString playlistId() const;
|
||||||
void setPlaylistId(const QString &playlistId);
|
void setPlaylistId(const QString &playlistId);
|
||||||
@@ -57,7 +70,12 @@ public:
|
|||||||
bool shuffle() const;
|
bool shuffle() const;
|
||||||
Q_SIGNAL void shuffleChanged();
|
Q_SIGNAL void shuffleChanged();
|
||||||
|
|
||||||
|
QString lyrics() const;
|
||||||
|
Q_SIGNAL void lyricsChanged();
|
||||||
|
|
||||||
Q_INVOKABLE void next();
|
Q_INVOKABLE void next();
|
||||||
|
Q_INVOKABLE void previous();
|
||||||
|
|
||||||
Q_INVOKABLE void skipTo(const QString &videoId);
|
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 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);
|
Q_INVOKABLE void append(const QString &videoId, const QString &title, const std::vector<meta::Artist> &artists);
|
||||||
@@ -68,10 +86,13 @@ public:
|
|||||||
private:
|
private:
|
||||||
void emitCurrentVideoChanged(const QString &oldVideoId);
|
void emitCurrentVideoChanged(const QString &oldVideoId);
|
||||||
|
|
||||||
|
void fetchLyrics(const QString &videoId);
|
||||||
|
|
||||||
QString m_initialVideoId;
|
QString m_initialVideoId;
|
||||||
QString m_playlistId;
|
QString m_playlistId;
|
||||||
QString m_currentVideoId;
|
QString m_currentVideoId;
|
||||||
bool m_shuffle = false;
|
bool m_shuffle = false;
|
||||||
|
|
||||||
watch::Playlist m_playlist;
|
watch::Playlist m_playlist;
|
||||||
|
::Lyrics m_lyrics;
|
||||||
};
|
};
|
||||||
+36
-15
@@ -5,6 +5,7 @@
|
|||||||
#include "ytmusic.h"
|
#include "ytmusic.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
#include <pybind11/embed.h>
|
#include <pybind11/embed.h>
|
||||||
#include <pybind11/stl.h>
|
#include <pybind11/stl.h>
|
||||||
@@ -21,7 +22,7 @@ void pyPrintPretty(py::handle obj) {
|
|||||||
|
|
||||||
#define UNEXPORT __attribute__ ((visibility("hidden")))
|
#define UNEXPORT __attribute__ ((visibility("hidden")))
|
||||||
|
|
||||||
constexpr auto TESTED_YTMUSICAPI_VERSION = "0.22.0";
|
constexpr auto TESTED_YTMUSICAPI_VERSION = "0.25.0";
|
||||||
|
|
||||||
struct UNEXPORT YTMusicPrivate {
|
struct UNEXPORT YTMusicPrivate {
|
||||||
py::scoped_interpreter guard {};
|
py::scoped_interpreter guard {};
|
||||||
@@ -40,10 +41,16 @@ struct UNEXPORT YTMusicPrivate {
|
|||||||
// Some of the called python code randomly fails if the encoding is not utf8
|
// Some of the called python code randomly fails if the encoding is not utf8
|
||||||
setenv("LC_ALL", "en_US.utf8", true);
|
setenv("LC_ALL", "en_US.utf8", true);
|
||||||
|
|
||||||
const auto version = module.attr("_version").attr("__version__").cast<std::string>();
|
auto oldVersion = module.attr("__dict__").contains("_version");
|
||||||
if (version != TESTED_YTMUSICAPI_VERSION) {
|
if (oldVersion) {
|
||||||
std::cerr << "Running with untested version of ytmusicapi." << std::endl;
|
std::cerr << "Running with outdated and untested version of ytmusicapi." << std::endl;
|
||||||
std::cerr << "The currently tested and supported version is " << TESTED_YTMUSICAPI_VERSION << 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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,7 +144,7 @@ album::Track extract_album_track(py::handle track) {
|
|||||||
|
|
||||||
video_info::Format extract_format(py::handle format) {
|
video_info::Format extract_format(py::handle format) {
|
||||||
return {
|
return {
|
||||||
optional_key<int>(format, "quality"),
|
optional_key<float>(format, "quality"),
|
||||||
format["url"].cast<std::string>(),
|
format["url"].cast<std::string>(),
|
||||||
format["vcodec"].cast<std::string>(),
|
format["vcodec"].cast<std::string>(),
|
||||||
format["acodec"].cast<std::string>()
|
format["acodec"].cast<std::string>()
|
||||||
@@ -268,7 +275,8 @@ std::optional<search::SearchResultItem> extract_search_result(py::handle result)
|
|||||||
result["videoId"].cast<std::string>(),
|
result["videoId"].cast<std::string>(),
|
||||||
result["title"].cast<std::string>(),
|
result["title"].cast<std::string>(),
|
||||||
extract_py_list<meta::Artist>(result["artists"]),
|
extract_py_list<meta::Artist>(result["artists"]),
|
||||||
result["views"].cast<std::string>()
|
result["views"].cast<std::string>(),
|
||||||
|
extract_py_list<meta::Thumbnail>(result["thumbnails"])
|
||||||
},
|
},
|
||||||
result["duration"].cast<std::string>()
|
result["duration"].cast<std::string>()
|
||||||
};
|
};
|
||||||
@@ -278,7 +286,8 @@ std::optional<search::SearchResultItem> extract_search_result(py::handle result)
|
|||||||
result["videoId"].cast<std::string>(),
|
result["videoId"].cast<std::string>(),
|
||||||
result["title"].cast<std::string>(),
|
result["title"].cast<std::string>(),
|
||||||
extract_py_list<meta::Artist>(result["artists"]),
|
extract_py_list<meta::Artist>(result["artists"]),
|
||||||
result["duration"].cast<std::string>()
|
result["duration"].cast<std::string>(),
|
||||||
|
extract_py_list<meta::Thumbnail>(result["thumbnails"])
|
||||||
},
|
},
|
||||||
extract_meta_album(result["album"]),
|
extract_meta_album(result["album"]),
|
||||||
result["isExplicit"].cast<bool>()
|
result["isExplicit"].cast<bool>()
|
||||||
@@ -290,21 +299,24 @@ std::optional<search::SearchResultItem> extract_search_result(py::handle result)
|
|||||||
result["type"].cast<std::string>(),
|
result["type"].cast<std::string>(),
|
||||||
extract_py_list<meta::Artist>(result["artists"]),
|
extract_py_list<meta::Artist>(result["artists"]),
|
||||||
result["year"].cast<std::optional<std::string>>(),
|
result["year"].cast<std::optional<std::string>>(),
|
||||||
result["isExplicit"].cast<bool>()
|
result["isExplicit"].cast<bool>(),
|
||||||
|
extract_py_list<meta::Thumbnail>(result["thumbnails"])
|
||||||
};
|
};
|
||||||
} else if (resultType == "playlist") {
|
} else if (resultType == "playlist") {
|
||||||
return search::Playlist {
|
return search::Playlist {
|
||||||
result["browseId"].cast<std::string>(),
|
result["browseId"].cast<std::string>(),
|
||||||
result["title"].cast<std::string>(),
|
result["title"].cast<std::string>(),
|
||||||
result["author"].cast<std::string>(),
|
result["author"].cast<std::string>(),
|
||||||
result["itemCount"].cast<std::string>()
|
result["itemCount"].cast<std::string>(),
|
||||||
|
extract_py_list<meta::Thumbnail>(result["thumbnails"])
|
||||||
};
|
};
|
||||||
} else if (resultType == "artist") {
|
} else if (resultType == "artist") {
|
||||||
return search::Artist {
|
return search::Artist {
|
||||||
result["browseId"].cast<std::string>(),
|
result["browseId"].cast<std::string>(),
|
||||||
result["artist"].cast<std::string>(),
|
result["artist"].cast<std::string>(),
|
||||||
optional_key<std::string>(result, "shuffleId"),
|
optional_key<std::string>(result, "shuffleId"),
|
||||||
optional_key<std::string>(result, "radioId")
|
optional_key<std::string>(result, "radioId"),
|
||||||
|
extract_py_list<meta::Thumbnail>(result["thumbnails"])
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
std::cerr << "Warning: Unsupported search result type found" << std::endl;
|
std::cerr << "Warning: Unsupported search result type found" << std::endl;
|
||||||
@@ -358,7 +370,7 @@ artist::Artist YTMusic::get_artist(const std::string &channel_id) const
|
|||||||
artist["views"].cast<std::optional<std::string>>(),
|
artist["views"].cast<std::optional<std::string>>(),
|
||||||
artist["name"].cast<std::string>(),
|
artist["name"].cast<std::string>(),
|
||||||
artist["channelId"].cast<std::string>(),
|
artist["channelId"].cast<std::string>(),
|
||||||
artist["subscribers"].cast<std::string>(),
|
artist["subscribers"].cast<std::optional<std::string>>(),
|
||||||
artist["subscribed"].cast<bool>(),
|
artist["subscribed"].cast<bool>(),
|
||||||
extract_py_list<meta::Thumbnail>(artist["thumbnails"]),
|
extract_py_list<meta::Thumbnail>(artist["thumbnails"]),
|
||||||
extract_artist_section<artist::Artist::Song>(artist, "songs"),
|
extract_artist_section<artist::Artist::Song>(artist, "songs"),
|
||||||
@@ -473,16 +485,25 @@ 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,
|
watch::Playlist YTMusic::get_watch_playlist(const std::optional<std::string> &videoId,
|
||||||
const std::optional<std::string> &playlistId,
|
const std::optional<std::string> &playlistId,
|
||||||
int limit,
|
int limit) const
|
||||||
const std::optional<std::string> ¶ms) const
|
|
||||||
{
|
{
|
||||||
const auto playlist = d->get_ytmusic().attr("get_watch_playlist")("videoId"_a = videoId,
|
const auto playlist = d->get_ytmusic().attr("get_watch_playlist")("videoId"_a = videoId,
|
||||||
"playlistId"_a = playlistId,
|
"playlistId"_a = playlistId,
|
||||||
"limit"_a = py::int_(limit),
|
"limit"_a = py::int_(limit));
|
||||||
"params"_a = params);
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
extract_py_list<watch::Playlist::Track>(playlist["tracks"]),
|
extract_py_list<watch::Playlist::Track>(playlist["tracks"]),
|
||||||
playlist["lyrics"].cast<std::optional<std::string>>()
|
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>()
|
||||||
|
};
|
||||||
|
}
|
||||||
+14
-4
@@ -44,6 +44,7 @@ struct Media {
|
|||||||
std::string title;
|
std::string title;
|
||||||
std::vector<meta::Artist> artists;
|
std::vector<meta::Artist> artists;
|
||||||
std::string duration;
|
std::string duration;
|
||||||
|
std::vector<meta::Thumbnail> thumbnails;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Video : public Media {
|
struct Video : public Media {
|
||||||
@@ -55,6 +56,7 @@ struct Playlist {
|
|||||||
std::string title;
|
std::string title;
|
||||||
std::string author;
|
std::string author;
|
||||||
std::string item_count;
|
std::string item_count;
|
||||||
|
std::vector<meta::Thumbnail> thumbnails;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Song : public Media {
|
struct Song : public Media {
|
||||||
@@ -69,6 +71,7 @@ struct Album {
|
|||||||
std::vector<meta::Artist> artists;
|
std::vector<meta::Artist> artists;
|
||||||
std::optional<std::string> year;
|
std::optional<std::string> year;
|
||||||
bool is_explicit;
|
bool is_explicit;
|
||||||
|
std::vector<meta::Thumbnail> thumbnails;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Artist {
|
struct Artist {
|
||||||
@@ -76,6 +79,7 @@ struct Artist {
|
|||||||
std::string artist;
|
std::string artist;
|
||||||
std::optional<std::string> shuffle_id;
|
std::optional<std::string> shuffle_id;
|
||||||
std::optional<std::string> radio_id;
|
std::optional<std::string> radio_id;
|
||||||
|
std::vector<meta::Thumbnail> thumbnails;
|
||||||
};
|
};
|
||||||
|
|
||||||
using SearchResultItem = std::variant<Video, Playlist, Song, Album, Artist>;
|
using SearchResultItem = std::variant<Video, Playlist, Song, Album, Artist>;
|
||||||
@@ -131,7 +135,7 @@ struct Artist {
|
|||||||
std::optional<std::string> views;
|
std::optional<std::string> views;
|
||||||
std::string name;
|
std::string name;
|
||||||
std::string channel_id;
|
std::string channel_id;
|
||||||
std::string subscribers;
|
std::optional<std::string> subscribers;
|
||||||
bool subscribed;
|
bool subscribed;
|
||||||
std::vector<meta::Thumbnail> thumbnails;
|
std::vector<meta::Thumbnail> thumbnails;
|
||||||
std::optional<Section<Song>> songs;
|
std::optional<Section<Song>> songs;
|
||||||
@@ -230,7 +234,7 @@ struct Playlist {
|
|||||||
|
|
||||||
namespace video_info {
|
namespace video_info {
|
||||||
struct Format {
|
struct Format {
|
||||||
std::optional<int> quality;
|
std::optional<float> quality;
|
||||||
std::string url;
|
std::string url;
|
||||||
std::string vcodec;
|
std::string vcodec;
|
||||||
std::string acodec;
|
std::string acodec;
|
||||||
@@ -268,6 +272,11 @@ struct Playlist {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct Lyrics {
|
||||||
|
std::string source;
|
||||||
|
std::string lyrics;
|
||||||
|
};
|
||||||
|
|
||||||
class YTMusic
|
class YTMusic
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -306,8 +315,9 @@ public:
|
|||||||
/// https://ytmusicapi.readthedocs.io/en/latest/reference.html#ytmusicapi.YTMusic.get_watch_playlist
|
/// 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,
|
watch::Playlist get_watch_playlist(const std::optional<std::string> &videoId = std::nullopt,
|
||||||
const std::optional<std::string> &playlistId = std::nullopt,
|
const std::optional<std::string> &playlistId = std::nullopt,
|
||||||
int limit = 25,
|
int limit = 25) const;
|
||||||
const std::optional<std::string> ¶ms = std::nullopt) const;
|
|
||||||
|
Lyrics get_lyrics(const std::string &browse_id) const;
|
||||||
|
|
||||||
// TODO wrap more methods
|
// TODO wrap more methods
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user