Compare commits

...

40 Commits

Author SHA1 Message Date
Clementine Buildbot 1506c27696 Automatic merge of translations from Transifex 2024-05-25 02:32:20 +00:00
Clementine Buildbot d99cbb269b Automatic merge of translations from Transifex 2024-05-21 02:33:03 +00:00
Clementine Buildbot 3cca9bb98a Automatic merge of translations from Transifex 2024-05-20 02:34:10 +00:00
Clementine Buildbot 650bd81508 Automatic merge of translations from Transifex 2024-05-17 02:32:22 +00:00
Clementine Buildbot 7607ddcb96 Automatic merge of translations from Transifex 2024-05-12 02:33:06 +00:00
Clementine Buildbot e249911937 Automatic merge of translations from Transifex 2024-05-05 02:32:03 +00:00
Clementine Buildbot 4ae57a4b5d Automatic merge of translations from Transifex 2024-05-03 02:32:14 +00:00
Clementine Buildbot 2f3464403b Automatic merge of translations from Transifex 2024-04-25 02:31:15 +00:00
Clementine Buildbot f76dbffa6b Automatic merge of translations from Transifex 2024-03-24 02:30:19 +00:00
Clementine Buildbot fbb266adc2 Automatic merge of translations from Transifex 2024-03-15 02:29:14 +00:00
Clementine Buildbot 9638ac70b3 Automatic merge of translations from Transifex 2024-03-13 02:29:55 +00:00
Clementine Buildbot c93b4e1149 Automatic merge of translations from Transifex 2024-02-27 02:27:58 +00:00
Clementine Buildbot d014a315c9 Automatic merge of translations from Transifex 2024-02-23 02:28:36 +00:00
Isaiah W df4181940d oops (:
this is what I meant lol
2024-02-08 14:04:03 +00:00
Isaiah W ebe3c45476 Fix Instructions™
uses all of your cores if you have more than 8, or doesn't try to use more than you have if you have less (:
2024-02-08 14:04:03 +00:00
Clementine Buildbot 634910238d Automatic merge of translations from Transifex 2024-01-03 02:31:14 +00:00
Clementine Buildbot 62ed69fa3d Automatic merge of translations from Transifex 2023-12-19 02:32:39 +00:00
Clementine Buildbot dd0a94e8a6 Automatic merge of translations from Transifex 2023-12-09 02:30:35 +00:00
Clementine Buildbot 1566148c50 Automatic merge of translations from Transifex 2023-11-29 02:32:39 +00:00
Clementine Buildbot 98a520552b Automatic merge of translations from Transifex 2023-11-26 02:32:33 +00:00
Clementine Buildbot 5968648aa1 Automatic merge of translations from Transifex 2023-11-01 02:31:10 +00:00
Clementine Buildbot f3ddd7eee4 Automatic merge of translations from Transifex 2023-10-22 02:30:09 +00:00
Clementine Buildbot 19b44fb831 Automatic merge of translations from Transifex 2023-10-16 02:30:12 +00:00
Robert-André Mauchin 994d16effa Fix missing QTSINGLECOREAPPLICATION_LIBRARIES
In f3837f95db, QTSINGLECOREAPPLICATION_LIBRARIES was mistakenly removed, which prevents building with USE_SYSTEM_QTSINGLEAPPLICATION enabled.
2023-10-15 13:40:14 +01:00
xoza 4768cb9efb Skip subsonic multi-genre tags 2023-10-12 12:27:43 +01:00
Clementine Buildbot 7b678f26e0 Automatic merge of translations from Transifex 2023-10-02 02:29:29 +00:00
Marcus Müller 3f572a4139 RPM & CI: Build rpm packages against native qtsingleapplication
Signed-off-by: Marcus Müller <marcus_clementine@baseband.digital>
2023-09-20 17:52:55 +01:00
Marcus Müller f3837f95db CMake: Re-enable usability of system QtSingleApplication
This seem to have gone broken over time.
As far as I can tell, upstream QtSingleApplication works fine!

Signed-off-by: Marcus Müller <marcus_clementine@baseband.digital>
2023-09-20 17:52:55 +01:00
Marcus Müller 6820a0a58d 3rdparty: remove unused libmygpo-qt
The -qt5 library is still there, and seems to be used.

Signed-off-by: Marcus Müller <marcus_clementine@baseband.digital>
2023-09-17 16:41:15 +01:00
Marcus Müller cfcddf7c0f src: remove unused variable
Signed-off-by: Marcus Müller <marcus_clementine@baseband.digital>
2023-09-17 12:43:13 +01:00
Marcus Müller 98e24f626b library: use boolean, not bitwise, operator on bools
Signed-off-by: Marcus Müller <marcus_clementine@baseband.digital>
2023-09-17 12:43:13 +01:00
Marcus Müller 8e47ab59e5 internet services: consistently use 'override'
Signed-off-by: Marcus Müller <marcus_clementine@baseband.digital>
2023-09-17 12:43:13 +01:00
Marcus Müller 63208b4e1f core/organisefmt: use same visibility for fwd decl as in def
Signed-off-by: Marcus Müller <marcus_clementine@baseband.digital>
2023-09-17 12:43:13 +01:00
Marcus Müller 20773dee29 CMake: Check for minimum version before setting the project name
Signed-off-by: Marcus Müller <marcus_clementine@baseband.digital>
2023-09-17 12:43:13 +01:00
John Maguire c2a5b9b07e Remove Kinetic build 2023-09-14 14:51:42 +01:00
Quentin Snow de7455eebd Adjusted MainWindow::TrackSkipped to only count song skips if listened to for 5 seconds. 2023-09-13 11:53:37 +01:00
Marcus Müller 2a14ec9d4d Lyrics Providers: Remove unreachable ones
This was determined programmatically by means of trying to do a simple
HTTP request to / of any of the URLs given:

```python
from lxml import etree
from urllib import parse
import requests
doc = etree.parse("ultimate_providers.xml")
root = doc.getroot()
for provider in root:
    parsed_url = parse.urlparse(provider.get("url"))
    url = f"{parsed_url.scheme}://{parsed_url.netloc}/"
    try:
        requests.head(url, timeout=5)
    except Exception as e:
        print(parsed_url.netloc)
```

Note that these were also removed from songinfoview as present, and from
outgoingdatacreator. The two lists there were found to be inconsistent,
but this isn't subject of this PR.

Signed-off-by: Marcus Müller <marcus_clementine@baseband.digital>
2023-09-12 13:33:01 +01:00
Clementine Buildbot 86e81cea05 Automatic merge of translations from Transifex 2023-08-26 02:27:18 +00:00
Clementine Buildbot 10570316dd Automatic merge of translations from Transifex 2023-07-22 02:34:48 +00:00
Clementine Buildbot ad8fd81ba9 Automatic merge of translations from Transifex 2023-07-18 02:50:36 +00:00
44 changed files with 1462 additions and 1730 deletions

View File

@ -105,7 +105,6 @@ jobs:
- build_fedora_38 - build_fedora_38
- build_focal_64 - build_focal_64
- build_jammy_64 - build_jammy_64
- build_kinetic_64
# - build_mac # - build_mac
- build_mingw - build_mingw
- build_source - build_source
@ -232,6 +231,8 @@ jobs:
qt5-qtbase-devel qt5-qtbase-devel
qt5-qtx11extras-devel qt5-qtx11extras-devel
qt5-rpm-macros qt5-rpm-macros
qtsingleapplication-qt5-devel
qtsinglecoreapplication-qt5-devel
rpmdevtools rpmdevtools
sha2-devel sha2-devel
sparsehash-devel sparsehash-devel
@ -243,7 +244,7 @@ jobs:
run: git config --global --add safe.directory ${GITHUB_WORKSPACE} run: git config --global --add safe.directory ${GITHUB_WORKSPACE}
- name: cmake - name: cmake
working-directory: bin working-directory: bin
run: cmake .. run: cmake -DUSE_SYSTEM_QTSINGLEAPPLICATION=On ..
- name: Build source tarball - name: Build source tarball
working-directory: bin working-directory: bin
run: ../dist/maketarball.sh run: ../dist/maketarball.sh
@ -304,6 +305,8 @@ jobs:
qt5-qtbase-devel qt5-qtbase-devel
qt5-qtx11extras-devel qt5-qtx11extras-devel
qt5-rpm-macros qt5-rpm-macros
qtsingleapplication-qt5-devel
qtsinglecoreapplication-qt5-devel
rpmdevtools rpmdevtools
sha2-devel sha2-devel
sparsehash-devel sparsehash-devel
@ -315,7 +318,7 @@ jobs:
run: git config --global --add safe.directory ${GITHUB_WORKSPACE} run: git config --global --add safe.directory ${GITHUB_WORKSPACE}
- name: cmake - name: cmake
working-directory: bin working-directory: bin
run: cmake .. run: cmake -DUSE_SYSTEM_QTSINGLEAPPLICATION=On ..
- name: Build source tarball - name: Build source tarball
working-directory: bin working-directory: bin
run: ../dist/maketarball.sh run: ../dist/maketarball.sh
@ -376,6 +379,8 @@ jobs:
qt5-qtbase-devel qt5-qtbase-devel
qt5-qtx11extras-devel qt5-qtx11extras-devel
qt5-rpm-macros qt5-rpm-macros
qtsingleapplication-qt5-devel
qtsinglecoreapplication-qt5-devel
rpmdevtools rpmdevtools
sha2-devel sha2-devel
sparsehash-devel sparsehash-devel
@ -387,7 +392,7 @@ jobs:
run: git config --global --add safe.directory ${GITHUB_WORKSPACE} run: git config --global --add safe.directory ${GITHUB_WORKSPACE}
- name: cmake - name: cmake
working-directory: bin working-directory: bin
run: cmake .. run: cmake -DUSE_SYSTEM_QTSINGLEAPPLICATION=On ..
- name: Build source tarball - name: Build source tarball
working-directory: bin working-directory: bin
run: ../dist/maketarball.sh run: ../dist/maketarball.sh
@ -909,74 +914,6 @@ jobs:
name: release_jammy_64 name: release_jammy_64
path: bin/clementine_*.deb path: bin/clementine_*.deb
build_kinetic_64:
name: Build Ubuntu Kinetic 64-bit deb
runs-on: ubuntu-22.04
container:
image: ubuntu:kinetic
steps:
- name: Install dependencies
env:
DEBIAN_FRONTEND: noninteractive
run: >
apt-get update && apt-get install -y
cmake
dpkg-dev
debhelper
fakeroot
g++
gettext
git
libasound2-dev
libboost-dev
libboost-serialization-dev
libcdio-cdda2
libcdio-dev
libchromaprint-dev
libcrypto++-dev
libdbus-1-dev
libfftw3-dev
libglew-dev
libgpod-dev
libgstreamer-plugins-base1.0-dev
libgstreamer1.0-dev
liblastfm5-dev
libmtp-dev
libmygpo-qt-dev
libplist-dev
libprotobuf-dev
libpulse-dev
libqca-qt5-2-dev
libqca-qt5-2-plugins
libqt5x11extras5-dev
libsparsehash-dev
libsqlite3-dev
libtag1-dev
libusbmuxd-dev
protobuf-compiler
qtbase5-dev
qttools5-dev-tools
qttools5-dev
ssh
- uses: actions/checkout@v1.2.0
- name: git hackery
run: git config --global --add safe.directory ${GITHUB_WORKSPACE}
- name: cmake
working-directory: bin
run: >
cmake ..
-DWITH_DEBIAN=ON
-DDEB_ARCH=amd64
-DDEB_DIST=kinetic
-DENABLE_SPOTIFY_BLOB=OFF
- name: make
working-directory: bin
run : make -j2 deb
- uses: actions/upload-artifact@v2
with:
name: release_kinetic_64
path: bin/clementine_*.deb
build_mac: build_mac:
if: false if: false
name: Build Mac DMG name: Build Mac DMG

View File

@ -1,128 +0,0 @@
/* Copyright 2014, Uwe L. Korn <uwelk@xhochy.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
#include "Json.h"
// Qt version specific includes
#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 )
#include <QJsonDocument>
#include <QMetaProperty>
#else
#include <qjson/parser.h>
#include <qjson/qobjecthelper.h>
#include <qjson/serializer.h>
#endif
namespace QJsonWrapper
{
QVariantMap
qobject2qvariant( const QObject* object )
{
#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 )
QVariantMap map;
if ( object == NULL )
{
return map;
}
const QMetaObject* metaObject = object->metaObject();
for ( int i = 0; i < metaObject->propertyCount(); ++i )
{
QMetaProperty metaproperty = metaObject->property( i );
if ( metaproperty.isReadable() )
{
map[ QLatin1String( metaproperty.name() ) ] = object->property( metaproperty.name() );
}
}
return map;
#else
return QJson::QObjectHelper::qobject2qvariant( object );
#endif
}
void
qvariant2qobject( const QVariantMap& variant, QObject* object )
{
#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 )
for ( QVariantMap::const_iterator iter = variant.begin(); iter != variant.end(); ++iter )
{
QVariant property = object->property( iter.key().toLatin1() );
Q_ASSERT( property.isValid() );
if ( property.isValid() )
{
QVariant value = iter.value();
if ( value.canConvert( property.type() ) )
{
value.convert( property.type() );
object->setProperty( iter.key().toLatin1(), value );
} else if ( QString( QLatin1String("QVariant") ).compare( QLatin1String( property.typeName() ) ) == 0 ) {
object->setProperty( iter.key().toLatin1(), value );
}
}
}
#else
QJson::QObjectHelper::qvariant2qobject( variant, object );
#endif
}
QVariant
parseJson( const QByteArray& jsonData, bool* ok )
{
#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 )
QJsonParseError error;
QJsonDocument doc = QJsonDocument::fromJson( jsonData, &error );
if ( ok != NULL )
{
*ok = ( error.error == QJsonParseError::NoError );
}
return doc.toVariant();
#else
QJson::Parser p;
return p.parse( jsonData, ok );
#endif
}
QByteArray
toJson( const QVariant &variant, bool* ok )
{
#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 )
QJsonDocument doc = QJsonDocument::fromVariant( variant );
if ( ok != NULL )
{
*ok = !doc.isNull();
}
return doc.toJson( QJsonDocument::Compact );
#else
QJson::Serializer serializer;
QByteArray ret = serializer.serialize(variant);
if ( ok != NULL )
{
*ok = !ret.isNull();
}
return ret;
#endif
}
}

View File

@ -1,36 +0,0 @@
/* Copyright 2014, Uwe L. Korn <uwelk@xhochy.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
#pragma once
#ifndef QJSONWRAPPER_JSON_H
#define QJSONWRAPPER_JSON_H
#include <QVariant>
namespace QJsonWrapper
{
QVariantMap qobject2qvariant( const QObject* object );
void qvariant2qobject( const QVariantMap& variant, QObject* object );
QVariant parseJson( const QByteArray& jsonData, bool* ok = 0 );
QByteArray toJson( const QVariant &variant, bool* ok = 0 );
}
#endif // QJSONWRAPPER_JSON_H

View File

@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.0.0)
project(clementine) project(clementine)
cmake_minimum_required(VERSION 3.0.0)
cmake_policy(SET CMP0053 OLD) cmake_policy(SET CMP0053 OLD)
include(CheckCXXCompilerFlag) include(CheckCXXCompilerFlag)
@ -347,11 +347,18 @@ include_directories("3rdparty/qsqlite")
# When/if upstream accepts our patches then these options can be used to link # When/if upstream accepts our patches then these options can be used to link
# to system installed qtsingleapplication instead. # to system installed qtsingleapplication instead.
option(USE_SYSTEM_QTSINGLEAPPLICATION "Don't set this option unless your system QtSingleApplication library has been compiled with the Clementine patches in 3rdparty" OFF) option(USE_SYSTEM_QTSINGLEAPPLICATION "Use the system-provided QtSingleApplication library (needs to have clementine patches, but these seem to be in Qt5)" OFF)
if(USE_SYSTEM_QTSINGLEAPPLICATION) if(USE_SYSTEM_QTSINGLEAPPLICATION)
find_path(QTSINGLEAPPLICATION_INCLUDE_DIRS qtsingleapplication.h PATH_SUFFIXES qt5/QtSolutions) find_path(QTSINGLEAPPLICATION_INCLUDE_DIRS qtsingleapplication.h PATH_SUFFIXES qt5/QtSolutions REQUIRED)
find_library(QTSINGLEAPPLICATION_LIBRARIES Qt5Solutions_SingleApplication-2.6) find_library(QTSINGLEAPPLICATION_LIBRARIES Qt5Solutions_SingleApplication-2.6 REQUIRED)
find_library(QTSINGLECOREAPPLICATION_LIBRARIES Qt5Solutions_SingleCoreApplication-2.6) add_library(qtsingleapplication INTERFACE)
target_link_libraries(qtsingleapplication INTERFACE QTSINGLEAPPLICATION_LIBRARIES)
target_include_directories(qtsingleapplication INTERFACE QTSINGLEAPPLICATION_INCLUDE_DIRS)
find_path(QTSINGLECOREAPPLICATION_INCLUDE_DIRS qtsinglecoreapplication.h PATH_SUFFIXES qt5/QtSolutions REQUIRED)
find_library(QTSINGLECOREAPPLICATION_LIBRARIES Qt5Solutions_SingleCoreApplication-2.6 REQUIRED)
add_library(qtsinglecoreapplication INTERFACE)
target_link_libraries(qtsinglecoreapplication INTERFACE QTSINGLECOREAPPLICATION_LIBRARIES)
target_include_directories(qtsinglecoreapplication INTERFACE QTSINGLECOREAPPLICATION_INCLUDE_DIRS)
else(USE_SYSTEM_QTSINGLEAPPLICATION) else(USE_SYSTEM_QTSINGLEAPPLICATION)
add_subdirectory(3rdparty/qtsingleapplication) add_subdirectory(3rdparty/qtsingleapplication)
set(QTSINGLEAPPLICATION_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/qtsingleapplication) set(QTSINGLEAPPLICATION_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/qtsingleapplication)

View File

@ -41,7 +41,7 @@ Compile and install:
cd bin cd bin
cmake .. cmake ..
make -j8 make -j$(nproc)
sudo make install sudo make install
See the Wiki for more instructions and a list of dependencies: See the Wiki for more instructions and a list of dependencies:

View File

@ -88,17 +88,6 @@
<item begin="&lt;/a" end="&gt;"/> <item begin="&lt;/a" end="&gt;"/>
</exclude> </exclude>
</provider> </provider>
<provider name="hindilyrics.net (Bollywood songs)" title="{title} ({album})" charset="utf-8" url="http://www.hindilyrics.net/lyrics/of-{Title}.html">
<urlFormat replace=" _@;\/&quot;'()[]" with="%20"/>
<urlFormat replace="?" with=""/>
<extract>
<item begin="&lt;div class=nm&gt;Movie&lt;/div&gt;:" end="&lt;/pre&gt;"/>
</extract>
<exclude>
<item begin="&lt;span class=" end="&quot;&gt;"/>
</exclude>
<invalidIndicator value="Couldn't find that page."/>
</provider>
<provider name="letras.mus.br" title="" charset="utf-8" url="https://www.letras.mus.br/winamp.php?musica={title}&amp;artista={artist}"> <provider name="letras.mus.br" title="" charset="utf-8" url="https://www.letras.mus.br/winamp.php?musica={title}&amp;artista={artist}">
<urlFormat replace="_@,;&amp;\/&quot;" with="_"/> <urlFormat replace="_@,;&amp;\/&quot;" with="_"/>
<urlFormat replace=" " with="+"/> <urlFormat replace=" " with="+"/>
@ -114,13 +103,6 @@
</extract> </extract>
<invalidIndicator value="ERROR"/> <invalidIndicator value="ERROR"/>
</provider> </provider>
<provider name="loudson.gs" title="" charset="utf-8" url="http://www.loudson.gs/{a}/{artist}/{album}/{title}">
<urlFormat replace=" _@,;&amp;\/&quot;" with="-"/>
<urlFormat replace="." with=""/>
<extract>
<item tag="&lt;div class=&quot;middle_col_TracksLyrics &quot;&gt;"/>
</extract>
</provider>
<provider name="lyrics.com" title="{artist} - {title} Lyrics" charset="utf-8" url="http://www.lyrics.com/lyrics/{artist}/{title}.html"> <provider name="lyrics.com" title="{artist} - {title} Lyrics" charset="utf-8" url="http://www.lyrics.com/lyrics/{artist}/{title}.html">
<urlFormat replace=" _@,;&amp;\/&quot;" with="-"/> <urlFormat replace=" _@,;&amp;\/&quot;" with="-"/>
<urlFormat replace="'." with=""/> <urlFormat replace="'." with=""/>
@ -194,14 +176,6 @@
</extract> </extract>
<invalidIndicator value="Page not Found"/> <invalidIndicator value="Page not Found"/>
</provider> </provider>
<provider name="lyricstime.com" title="{artist} - {title} Lyrics" charset="iso-8859-1" url="http://www.lyricstime.com/{artist}-{title}-lyrics.html">
<urlFormat replace=" _@,;&amp;\/&quot;'" with="-"/>
<urlFormat replace="." with=""/>
<extract>
<item tag="&lt;div id=&quot;songlyrics&quot; &gt;"/>
<item tag="&lt;p&gt;"/>
</extract>
</provider>
<provider name="lyriki.com" title="" charset="utf-8" url="http://www.lyriki.com/{artist}:{title}"> <provider name="lyriki.com" title="" charset="utf-8" url="http://www.lyriki.com/{artist}:{title}">
<urlFormat replace=" _@,;&amp;\/&quot;" with="_"/> <urlFormat replace=" _@,;&amp;\/&quot;" with="_"/>
<urlFormat replace="." with=""/> <urlFormat replace="." with=""/>
@ -210,20 +184,6 @@
<item tag="&lt;p&gt;"/> <item tag="&lt;p&gt;"/>
</extract> </extract>
</provider> </provider>
<provider name="metrolyrics.com" title="{artist} - {title} LYRICS" charset="utf-8" url="http://www.metrolyrics.com/{title}-lyrics-{artist}.html">
<urlFormat replace=" _@,;&amp;\/&quot;" with="-"/>
<urlFormat replace="'." with=""/>
<extract>
<item tag="&lt;span id=&quot;lyrics&quot;&gt;"/>
</extract>
<extract>
<item tag="&lt;div id=&quot;lyrics&quot;&gt;"/>
</extract>
<exclude>
<item tag="&lt;h5&gt;"/>
</exclude>
<invalidIndicator value="These lyrics are missing"/>
</provider>
<provider name="mp3lyrics.org" title="{artist} &amp;quot;{title}&amp;quot; Lyrics" charset="utf-8" url="http://www.mp3lyrics.org/{a}/{artist}/{title}/"> <provider name="mp3lyrics.org" title="{artist} &amp;quot;{title}&amp;quot; Lyrics" charset="utf-8" url="http://www.mp3lyrics.org/{a}/{artist}/{title}/">
<urlFormat replace=" _@,;&amp;\/&quot;" with="-"/> <urlFormat replace=" _@,;&amp;\/&quot;" with="-"/>
<urlFormat replace="'." with=""/> <urlFormat replace="'." with=""/>
@ -251,13 +211,6 @@
</exclude> </exclude>
<invalidIndicator value="We couldn't find that page."/> <invalidIndicator value="We couldn't find that page."/>
</provider> </provider>
<provider name="seeklyrics.com" title="{artist} - {title} Lyrics" charset="iso-8859-1" url="http://www.seeklyrics.com/lyrics/{Artist}/{Title}.html">
<urlFormat replace=" _@,;&amp;\/'&quot;" with="-"/>
<urlFormat replace="." with=""/>
<extract>
<item tag="&lt;div id=&quot;songlyrics&quot;&gt;"/>
</extract>
</provider>
<provider name="songlyrics.com" title="{title} LYRICS - {artist}" charset="utf-8" url="http://www.songlyrics.com/{artist}/{title}-lyrics/"> <provider name="songlyrics.com" title="{title} LYRICS - {artist}" charset="utf-8" url="http://www.songlyrics.com/{artist}/{title}-lyrics/">
<urlFormat replace=" ._@,;&amp;\/&quot;" with="-"/> <urlFormat replace=" ._@,;&amp;\/&quot;" with="-"/>
<urlFormat replace="'" with="_"/> <urlFormat replace="'" with="_"/>

View File

@ -18,6 +18,7 @@ BuildRequires: liblastfm-qt5-devel
BuildRequires: desktop-file-utils BuildRequires: desktop-file-utils
BuildRequires: hicolor-icon-theme BuildRequires: hicolor-icon-theme
BuildRequires: libappstream-glib BuildRequires: libappstream-glib
BuildRequires: qtsingleapplication-qt5-devel
BuildRequires: pkgconfig BuildRequires: pkgconfig
BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gio-2.0) BuildRequires: pkgconfig(gio-2.0)

View File

@ -27,7 +27,7 @@
#include "core/song.h" #include "core/song.h"
class TranscoderPreset; struct TranscoderPreset;
class OrganiseFormat { class OrganiseFormat {
public: public:

View File

@ -41,16 +41,16 @@ class DigitallyImportedServiceBase : public InternetService {
const QString& api_service_name, const QString& api_service_name,
Application* app, InternetModel* model, Application* app, InternetModel* model,
bool has_premium, QObject* parent = nullptr); bool has_premium, QObject* parent = nullptr);
~DigitallyImportedServiceBase(); ~DigitallyImportedServiceBase() override;
static const char* kSettingsGroup; static const char* kSettingsGroup;
static const int kStreamsCacheDurationSecs; static const int kStreamsCacheDurationSecs;
QStandardItem* CreateRootItem(); QStandardItem* CreateRootItem() override;
void LazyPopulate(QStandardItem* parent); void LazyPopulate(QStandardItem* parent) override;
void ShowContextMenu(const QPoint& global_pos); void ShowContextMenu(const QPoint& global_pos) override;
void ReloadSettings(); void ReloadSettings() override;
bool is_premium_account() const; bool is_premium_account() const;

View File

@ -40,7 +40,7 @@ class IcecastService : public InternetService {
public: public:
IcecastService(Application* app, InternetModel* parent); IcecastService(Application* app, InternetModel* parent);
~IcecastService(); ~IcecastService() override;
static const char* kServiceName; static const char* kServiceName;
static const char* kDirectoryUrl; static const char* kDirectoryUrl;
@ -51,12 +51,12 @@ class IcecastService : public InternetService {
Type_Genre, Type_Genre,
}; };
QStandardItem* CreateRootItem(); QStandardItem* CreateRootItem() override;
void LazyPopulate(QStandardItem* item); void LazyPopulate(QStandardItem* item) override;
void ShowContextMenu(const QPoint& global_pos); void ShowContextMenu(const QPoint& global_pos) override;
QWidget* HeaderWidget() const; QWidget* HeaderWidget() const override;
private slots: private slots:
void LoadDirectory(); void LoadDirectory();

View File

@ -39,7 +39,7 @@ class IntergalacticFMServiceBase : public InternetService {
const QString& name, const QUrl& channel_list_url, const QString& name, const QUrl& channel_list_url,
const QUrl& homepage_url, const QUrl& homepage_url,
const QUrl& donate_page_url, const QIcon& icon); const QUrl& donate_page_url, const QIcon& icon);
~IntergalacticFMServiceBase(); ~IntergalacticFMServiceBase() override;
enum ItemType { enum ItemType {
Type_Stream = 2000, Type_Stream = 2000,
@ -59,14 +59,14 @@ class IntergalacticFMServiceBase : public InternetService {
const QString& url_scheme() const { return url_scheme_; } const QString& url_scheme() const { return url_scheme_; }
const QIcon& icon() const { return icon_; } const QIcon& icon() const { return icon_; }
QStandardItem* CreateRootItem(); QStandardItem* CreateRootItem() override;
void LazyPopulate(QStandardItem* item); void LazyPopulate(QStandardItem* item) override;
void ShowContextMenu(const QPoint& global_pos); void ShowContextMenu(const QPoint& global_pos) override;
PlaylistItem::Options playlistitem_options() const; PlaylistItem::Options playlistitem_options() const override;
QNetworkAccessManager* network() const { return network_; } QNetworkAccessManager* network() const { return network_; }
void ReloadSettings(); void ReloadSettings() override;
bool IsStreamListStale() const { return streams_.IsStale(); } bool IsStreamListStale() const { return streams_.IsStale(); }
StreamList Streams(); StreamList Streams();

View File

@ -34,7 +34,7 @@ class SavedRadio : public InternetService {
public: public:
SavedRadio(Application* app, InternetModel* parent); SavedRadio(Application* app, InternetModel* parent);
~SavedRadio(); ~SavedRadio() override;
enum ItemType { enum ItemType {
Type_Stream = 2000, Type_Stream = 2000,
@ -57,10 +57,10 @@ class SavedRadio : public InternetService {
static const char* kServiceName; static const char* kServiceName;
static const char* kSettingsGroup; static const char* kSettingsGroup;
QStandardItem* CreateRootItem(); QStandardItem* CreateRootItem() override;
void LazyPopulate(QStandardItem* item); void LazyPopulate(QStandardItem* item) override;
void ShowContextMenu(const QPoint& global_pos); void ShowContextMenu(const QPoint& global_pos) override;
void Add(const QUrl& url, const QString& name = QString(), void Add(const QUrl& url, const QString& name = QString(),
const QUrl& url_logo = QUrl()); const QUrl& url_logo = QUrl());

View File

@ -43,14 +43,14 @@ class JamendoService : public InternetService {
public: public:
JamendoService(Application* app, InternetModel* parent); JamendoService(Application* app, InternetModel* parent);
~JamendoService(); ~JamendoService() override;
QStandardItem* CreateRootItem(); QStandardItem* CreateRootItem() override;
void LazyPopulate(QStandardItem* item); void LazyPopulate(QStandardItem* item) override;
void ShowContextMenu(const QPoint& global_pos); void ShowContextMenu(const QPoint& global_pos) override;
QWidget* HeaderWidget() const; QWidget* HeaderWidget() const override;
LibraryBackend* library_backend() const { return library_backend_.get(); } LibraryBackend* library_backend() const { return library_backend_.get(); }

View File

@ -38,7 +38,7 @@ class MagnatuneService : public InternetService {
public: public:
MagnatuneService(Application* app, InternetModel* parent); MagnatuneService(Application* app, InternetModel* parent);
~MagnatuneService(); ~MagnatuneService() override;
// Values are saved in QSettings and are indices into the combo box in // Values are saved in QSettings and are indices into the combo box in
// MagnatuneConfig // MagnatuneConfig
@ -71,14 +71,14 @@ class MagnatuneService : public InternetService {
static QString ReadElementText(QXmlStreamReader& reader); static QString ReadElementText(QXmlStreamReader& reader);
QStandardItem* CreateRootItem(); QStandardItem* CreateRootItem() override;
void LazyPopulate(QStandardItem* item); void LazyPopulate(QStandardItem* item) override;
void ShowContextMenu(const QPoint& global_pos); void ShowContextMenu(const QPoint& global_pos) override;
QWidget* HeaderWidget() const; QWidget* HeaderWidget() const override;
void ReloadSettings(); void ReloadSettings() override;
// Magnatune specific stuff // Magnatune specific stuff
MembershipType membership_type() const { return membership_; } MembershipType membership_type() const { return membership_; }
@ -99,7 +99,7 @@ class MagnatuneService : public InternetService {
void Download(); void Download();
void Homepage(); void Homepage();
void ShowConfig(); void ShowConfig() override;
private: private:
void EnsureMenuCreated(); void EnsureMenuCreated();

View File

@ -44,7 +44,7 @@ class PodcastService : public InternetService {
public: public:
PodcastService(Application* app, InternetModel* parent); PodcastService(Application* app, InternetModel* parent);
~PodcastService(); ~PodcastService() override;
static const char* kServiceName; static const char* kServiceName;
static const char* kSettingsGroup; static const char* kSettingsGroup;
@ -57,12 +57,12 @@ class PodcastService : public InternetService {
enum Role { Role_Podcast = InternetModel::RoleCount, Role_Episode }; enum Role { Role_Podcast = InternetModel::RoleCount, Role_Episode };
QStandardItem* CreateRootItem(); QStandardItem* CreateRootItem() override;
void LazyPopulate(QStandardItem* parent); void LazyPopulate(QStandardItem* parent) override;
bool has_initial_load_settings() const { return true; } bool has_initial_load_settings() const override { return true; }
void ShowContextMenu(const QPoint& global_pos); void ShowContextMenu(const QPoint& global_pos) override;
void ReloadSettings(); void ReloadSettings() override;
void InitialLoadSettings(); void InitialLoadSettings() override;
// Called by SongLoader when the user adds a Podcast URL directly. Adds a // Called by SongLoader when the user adds a Podcast URL directly. Adds a
// subscription to the podcast and displays it in the UI. If the QVariant // subscription to the podcast and displays it in the UI. If the QVariant
// contains an OPML file then this displays it in the Add Podcast dialog. // contains an OPML file then this displays it in the Add Podcast dialog.
@ -81,7 +81,7 @@ class PodcastService : public InternetService {
void DeleteDownloadedData(); void DeleteDownloadedData();
void SetNew(); void SetNew();
void SetListened(); void SetListened();
void ShowConfig(); void ShowConfig() override;
void SubscriptionAdded(const Podcast& podcast); void SubscriptionAdded(const Podcast& podcast);
void SubscriptionRemoved(const Podcast& podcast); void SubscriptionRemoved(const Podcast& podcast);

View File

@ -35,7 +35,7 @@ class RadioBrowserService : public InternetService {
public: public:
RadioBrowserService(Application* app, InternetModel* parent); RadioBrowserService(Application* app, InternetModel* parent);
~RadioBrowserService(){}; ~RadioBrowserService() override{};
enum ItemType { enum ItemType {
Type_Stream = 2000, Type_Stream = 2000,

View File

@ -39,7 +39,7 @@ class SomaFMServiceBase : public InternetService {
const QString& name, const QUrl& channel_list_url, const QString& name, const QUrl& channel_list_url,
const QUrl& homepage_url, const QUrl& donate_page_url, const QUrl& homepage_url, const QUrl& donate_page_url,
const QIcon& icon); const QIcon& icon);
~SomaFMServiceBase(); ~SomaFMServiceBase() override;
enum ItemType { enum ItemType {
Type_Stream = 2000, Type_Stream = 2000,
@ -59,14 +59,14 @@ class SomaFMServiceBase : public InternetService {
const QString& url_scheme() const { return url_scheme_; } const QString& url_scheme() const { return url_scheme_; }
const QIcon& icon() const { return icon_; } const QIcon& icon() const { return icon_; }
QStandardItem* CreateRootItem(); QStandardItem* CreateRootItem() override;
void LazyPopulate(QStandardItem* item); void LazyPopulate(QStandardItem* item) override;
void ShowContextMenu(const QPoint& global_pos); void ShowContextMenu(const QPoint& global_pos) override;
PlaylistItem::Options playlistitem_options() const; PlaylistItem::Options playlistitem_options() const override;
QNetworkAccessManager* network() const { return network_; } QNetworkAccessManager* network() const { return network_; }
void ReloadSettings(); void ReloadSettings() override;
bool IsStreamListStale() const { return streams_.IsStale(); } bool IsStreamListStale() const { return streams_.IsStale(); }
StreamList Streams(); StreamList Streams();

View File

@ -530,6 +530,11 @@ void SubsonicLibraryScanner::OnGetAlbumFinished(QNetworkReply* reply) {
// Read song information // Read song information
while (reader.readNextStartElement()) { while (reader.readNextStartElement()) {
// skip multi-artist and multi-genre tags
if ((reader.name() == "artists") || (reader.name() == "genres")) {
reader.skipCurrentElement();
continue;
}
if (reader.name() != "song") { if (reader.name() != "song") {
ParsingError("song tag expected. Aborting scan."); ParsingError("song tag expected. Aborting scan.");
return; return;

View File

@ -42,7 +42,7 @@ class SubsonicService : public InternetService {
public: public:
SubsonicService(Application* app, InternetModel* parent); SubsonicService(Application* app, InternetModel* parent);
~SubsonicService(); ~SubsonicService() override;
enum LoginState { enum LoginState {
LoginState_Loggedin, LoginState_Loggedin,
@ -90,11 +90,11 @@ class SubsonicService : public InternetService {
bool IsConfigured() const; bool IsConfigured() const;
bool IsAmpache() const; bool IsAmpache() const;
QStandardItem* CreateRootItem(); QStandardItem* CreateRootItem() override;
void LazyPopulate(QStandardItem* item); void LazyPopulate(QStandardItem* item) override;
void ShowContextMenu(const QPoint& global_pos); void ShowContextMenu(const QPoint& global_pos) override;
QWidget* HeaderWidget() const; QWidget* HeaderWidget() const override;
void ReloadSettings(); void ReloadSettings() override;
void Login(); void Login();
void Login(const QString& server, const QString& username, void Login(const QString& server, const QString& username,
@ -175,7 +175,7 @@ class SubsonicService : public InternetService {
void OnLoginStateChanged(SubsonicService::LoginState newstate); void OnLoginStateChanged(SubsonicService::LoginState newstate);
void OnPingFinished(QNetworkReply* reply); void OnPingFinished(QNetworkReply* reply);
void ShowConfig(); void ShowConfig() override;
}; };
class SubsonicLibraryScanner : public QObject { class SubsonicLibraryScanner : public QObject {
@ -184,7 +184,7 @@ class SubsonicLibraryScanner : public QObject {
public: public:
explicit SubsonicLibraryScanner(SubsonicService* service, explicit SubsonicLibraryScanner(SubsonicService* service,
QObject* parent = nullptr); QObject* parent = nullptr);
~SubsonicLibraryScanner(); ~SubsonicLibraryScanner() override;
void Scan(); void Scan();
const SongList& GetSongs() const { return songs_; } const SongList& GetSongs() const { return songs_; }

View File

@ -896,7 +896,7 @@ LibraryBackend::AlbumList LibraryBackend::GetAlbums(const QString& artist,
QString last_artist; QString last_artist;
QString last_album_artist; QString last_album_artist;
while (query.Next()) { while (query.Next()) {
bool compilation = query.Value(3).toBool() | query.Value(4).toBool(); bool compilation = query.Value(3).toBool() || query.Value(4).toBool();
Album info; Album info;
info.artist = compilation ? QString() : query.Value(1).toString(); info.artist = compilation ? QString() : query.Value(1).toString();

View File

@ -92,12 +92,10 @@ void MoodbarBuilder::Normalize(QList<Rgb>* vals, double Rgb::*member) {
} }
double avg = 0; double avg = 0;
int t = 0;
for (const Rgb& rgb : *vals) { for (const Rgb& rgb : *vals) {
const double value = rgb.*member; const double value = rgb.*member;
if (value != mini && value != maxi) { if (value != mini && value != maxi) {
avg += value / vals->count(); avg += value / vals->count();
t++;
} }
} }

View File

@ -98,7 +98,6 @@ void OutgoingDataCreator::CheckEnabledProviders() {
<< "lyricstime.com" << "lyricstime.com"
<< "lyricsreg.com" << "lyricsreg.com"
<< "lyricsmania.com" << "lyricsmania.com"
<< "metrolyrics.com"
<< "azlyrics.com" << "azlyrics.com"
<< "songlyrics.com" << "songlyrics.com"
<< "elyrics.net" << "elyrics.net"
@ -106,7 +105,6 @@ void OutgoingDataCreator::CheckEnabledProviders() {
<< "lyrics.com" << "lyrics.com"
<< "lyricsbay.com" << "lyricsbay.com"
<< "directlyrics.com" << "directlyrics.com"
<< "loudson.gs"
<< "teksty.org" << "teksty.org"
<< "tekstowo.pl (Polish translations)" << "tekstowo.pl (Polish translations)"
<< "vagalume.uol.com.br" << "vagalume.uol.com.br"

View File

@ -1729,13 +1729,11 @@ PlaylistItemList Playlist::RemoveItemsWithoutUndo(int row, int count) {
endRemoveRows(); endRemoveRows();
QList<int>::iterator it = virtual_items_.begin(); QList<int>::iterator it = virtual_items_.begin();
int i = 0;
while (it != virtual_items_.end()) { while (it != virtual_items_.end()) {
if (*it >= items_.count()) if (*it >= items_.count())
it = virtual_items_.erase(it); it = virtual_items_.erase(it);
else else
++it; ++it;
++i;
} }
// Reset current_virtual_index_ // Reset current_virtual_index_

View File

@ -34,12 +34,6 @@
#undef AddJob #undef AddJob
#endif #endif
namespace {
const char kWavHeaderRiffMarker[] = "RIFF";
const char kWavFileTypeFormatChunk[] = "WAVEfmt ";
const char kWavDataString[] = "data";
} // namespace
Ripper::Ripper(int track_count, QObject* parent) Ripper::Ripper(int track_count, QObject* parent)
: QObject(parent), : QObject(parent),
track_count_(track_count), track_count_(track_count),

View File

@ -90,10 +90,8 @@ void SongInfoView::ReloadSettings() {
QVariantList default_order; QVariantList default_order;
default_order << "lyrics.wikia.com" default_order << "lyrics.wikia.com"
<< "lyricstime.com"
<< "lyricsreg.com" << "lyricsreg.com"
<< "lyricsmania.com" << "lyricsmania.com"
<< "metrolyrics.com"
<< "azlyrics.com" << "azlyrics.com"
<< "songlyrics.com" << "songlyrics.com"
<< "elyrics.net" << "elyrics.net"
@ -101,7 +99,6 @@ void SongInfoView::ReloadSettings() {
<< "lyrics.com" << "lyrics.com"
<< "lyricsbay.com" << "lyricsbay.com"
<< "directlyrics.com" << "directlyrics.com"
<< "loudson.gs"
<< "teksty.org" << "teksty.org"
<< "tekstowo.pl (Polish translations)" << "tekstowo.pl (Polish translations)"
<< "vagalume.uol.com.br" << "vagalume.uol.com.br"

File diff suppressed because it is too large Load Diff

View File

@ -3,12 +3,12 @@
# This file is distributed under the same license as the Clementine package. # This file is distributed under the same license as the Clementine package.
# #
# Translators: # Translators:
# Adolfo Jayme-Barrientos, 2014-2015 # Adolfo Jayme Barrientos, 2014-2015
# Adolfo Jayme-Barrientos, 2012-2013,2018 # Adolfo Jayme Barrientos, 2012-2013,2018
# Adolfo Jayme-Barrientos, 2016,2018-2021 # Adolfo Jayme Barrientos, 2016,2018-2021
# Adolfo Jayme-Barrientos, 2015-2016 # Adolfo Jayme Barrientos, 2015-2016
# Adolfo Jayme-Barrientos, 2013 # Adolfo Jayme Barrientos, 2013
# Adolfo Jayme-Barrientos, 2014 # Adolfo Jayme Barrientos, 2014
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010 # FIRST AUTHOR <EMAIL@ADDRESS>, 2010
# Juanjo, 2016-2023 # Juanjo, 2016-2023
# davidsansome <me@davidsansome.com>, 2013 # davidsansome <me@davidsansome.com>, 2013
@ -1005,7 +1005,7 @@ msgid "Display options"
msgstr "Opcions de visualització" msgstr "Opcions de visualització"
msgid "Display the global search popup" msgid "Display the global search popup"
msgstr "" msgstr "Mostra la finestra emergent de cerca global"
msgid "Display the on-screen-display" msgid "Display the on-screen-display"
msgstr "Mostra la indicació a pantalla" msgstr "Mostra la indicació a pantalla"
@ -1496,10 +1496,10 @@ msgid "Invalid API key"
msgstr "La clau de lAPI no és vàlida" msgstr "La clau de lAPI no és vàlida"
msgid "Invalid SKY.fm username or password" msgid "Invalid SKY.fm username or password"
msgstr "" msgstr "Nom d'usuari o contrasenya de SKY.fm no vàlid"
msgid "Invalid di.fm username or password" msgid "Invalid di.fm username or password"
msgstr "" msgstr "Nom d'usuari o contrasenya de di.fm no vàlid"
msgid "Invalid format" msgid "Invalid format"
msgstr "El format no és vàlid" msgstr "El format no és vàlid"
@ -1520,7 +1520,7 @@ msgid "Invalid session key"
msgstr "La clau de sessió no és vàlida" msgstr "La clau de sessió no és vàlida"
msgid "Invalid username and/or password" msgid "Invalid username and/or password"
msgstr "" msgstr "El nom dusuari i/o la contrasenya no és vàlid"
msgid "Jamendo" msgid "Jamendo"
msgstr "Jamendo" msgstr "Jamendo"
@ -1558,7 +1558,7 @@ msgid "Keep the original files"
msgstr "Conserva els fitxers originals" msgstr "Conserva els fitxers originals"
msgid "Kittens" msgid "Kittens"
msgstr "" msgstr "Kittens"
msgid "Language" msgid "Language"
msgstr "Llengua" msgstr "Llengua"
@ -1583,11 +1583,11 @@ msgstr "Last.fm"
#, qt-format #, qt-format
msgid "Last.fm Custom Radio: %1" msgid "Last.fm Custom Radio: %1"
msgstr "" msgstr "Ràdio personalitzada de Last.fm: %1"
#, qt-format #, qt-format
msgid "Last.fm Library - %1" msgid "Last.fm Library - %1"
msgstr "" msgstr "Col·lecció de Last.fm %1"
#, qt-format #, qt-format
msgid "Last.fm Mix Radio - %1" msgid "Last.fm Mix Radio - %1"
@ -1607,7 +1607,7 @@ msgstr "Artistes similars a %1 del Last.fm"
#, qt-format #, qt-format
msgid "Last.fm Tag Radio: %1" msgid "Last.fm Tag Radio: %1"
msgstr "" msgstr "Ràdio de l'etiqueta del Last.fm: %1"
msgid "Last.fm is currently busy, please try again in a few minutes" msgid "Last.fm is currently busy, please try again in a few minutes"
msgstr "Last.fm esta actualment saturat, reintentau passats uns minuts" msgstr "Last.fm esta actualment saturat, reintentau passats uns minuts"
@ -1993,25 +1993,25 @@ msgid "Open device"
msgstr "Obrir dispositiu" msgstr "Obrir dispositiu"
msgid "Open dir.xiph.org in browser" msgid "Open dir.xiph.org in browser"
msgstr "" msgstr "Obre dir.xiph.org al navegador"
msgid "Open in new playlist" msgid "Open in new playlist"
msgstr "Obre en una llista de reproducció nova" msgstr "Obre en una llista de reproducció nova"
msgid "Open jamendo.com in browser" msgid "Open jamendo.com in browser"
msgstr "" msgstr "Obre jamendo.com al navegador"
msgid "Open magnatune.com in browser" msgid "Open magnatune.com in browser"
msgstr "Obre magnatune.com al navegador" msgstr "Obre magnatune.com al navegador"
msgid "Open media..." msgid "Open media..."
msgstr "" msgstr "Obre un mitjà..."
msgid "Open somafm.com in browser" msgid "Open somafm.com in browser"
msgstr "Obre somafm.com al navegador" msgstr "Obre somafm.com al navegador"
msgid "Open intergalacticfm.com in browser" msgid "Open intergalacticfm.com in browser"
msgstr "" msgstr "Obre intergalacticfm.com al navegador"
msgid "Open..." msgid "Open..."
msgstr "Obre…" msgstr "Obre…"
@ -2095,7 +2095,7 @@ msgid "Play custom radio..."
msgstr "Reprodueix la ràdio personalitzada..." msgstr "Reprodueix la ràdio personalitzada..."
msgid "Play from my Library" msgid "Play from my Library"
msgstr "" msgstr "Reprodueix de la meva col·lecció"
msgid "Play if stopped, pause if playing" msgid "Play if stopped, pause if playing"
msgstr "Reprodueix si està parat, posa en pausa si està reproduint" msgstr "Reprodueix si està parat, posa en pausa si està reproduint"
@ -2104,13 +2104,13 @@ msgid "Play if there is nothing already playing"
msgstr "Reprodueix si encara no hi ha res reproduint-se" msgstr "Reprodueix si encara no hi ha res reproduint-se"
msgid "Play last.fm artist radio" msgid "Play last.fm artist radio"
msgstr "" msgstr "Reprodueix la ràdio de l'artista de last.fm"
msgid "Play last.fm tag radio" msgid "Play last.fm tag radio"
msgstr "" msgstr "Reprodueix la ràdio de l'etiqueta del Last.fm"
msgid "Play tag radio..." msgid "Play tag radio..."
msgstr "" msgstr "Reprodueix la ràdio de l'etiqueta..."
msgid "Play the <n>th track in the playlist" msgid "Play the <n>th track in the playlist"
msgstr "Reprodueix la <n>a cançó de la llista de reproducció" msgstr "Reprodueix la <n>a cançó de la llista de reproducció"
@ -2510,7 +2510,7 @@ msgid "Show"
msgstr "Mostrar" msgstr "Mostrar"
msgid "Show Global Search Popup" msgid "Show Global Search Popup"
msgstr "" msgstr "Mostra la finestra de cerca global"
msgid "Show OSD" msgid "Show OSD"
msgstr "Mostra lOSD" msgstr "Mostra lOSD"
@ -2565,7 +2565,7 @@ msgstr "Mostra només les peces sense etiquetar"
#, qt-format #, qt-format
msgid "Show results from %1" msgid "Show results from %1"
msgstr "" msgstr "Mostra els resultats de %1"
msgid "Show the \"love\" and \"ban\" buttons" msgid "Show the \"love\" and \"ban\" buttons"
msgstr "Mostra els botons «Magrada» i «Veta»" msgstr "Mostra els botons «Magrada» i «Veta»"
@ -2586,7 +2586,7 @@ msgid "Shuffle all"
msgstr "Mescla-ho tot" msgstr "Mescla-ho tot"
msgid "Shuffle by album" msgid "Shuffle by album"
msgstr "" msgstr "Remena per àlbum"
msgid "&Shuffle mode" msgid "&Shuffle mode"
msgstr "Mode de me&scla" msgstr "Mode de me&scla"
@ -2688,10 +2688,10 @@ msgid "Start transcoding"
msgstr "Inicia la conversió" msgstr "Inicia la conversió"
msgid "Start typing in the search box above to find music on Grooveshark." msgid "Start typing in the search box above to find music on Grooveshark."
msgstr "" msgstr "Escriviu a la caixa de cerca de dalt per a trobar música al Grooveshark."
msgid "Start typing in the search box above to find music on Spotify." msgid "Start typing in the search box above to find music on Spotify."
msgstr "" msgstr "Escriviu a la caixa de cerca de dalt per a trobar música a l'Spotify."
#, qt-format #, qt-format
msgid "Starting %1" msgid "Starting %1"
@ -2766,7 +2766,7 @@ msgid "Tag fetcher"
msgstr "Recolector detiquetes" msgstr "Recolector detiquetes"
msgid "Tag radio" msgid "Tag radio"
msgstr "Etiqueta la ràdio" msgstr "Ràdio de l'etiqueta"
msgid "Target bitrate" msgid "Target bitrate"
msgstr "Taxa de bits desitjada" msgstr "Taxa de bits desitjada"
@ -2873,7 +2873,7 @@ msgstr "Aquest es el primer cop que connecteu aquest dispositiu. El Clementine a
msgid "" msgid ""
"This playlist will be removed; the action can't be undone. Are you sure you " "This playlist will be removed; the action can't be undone. Are you sure you "
"want to continue?" "want to continue?"
msgstr "" msgstr "Aquesta llista de reproducció es suprimirà. L'acció no es pot desfer. Esteu segur que voleu continuar?"
msgid "This stream is for paid subscribers only" msgid "This stream is for paid subscribers only"
msgstr "Aquest flux es sol per als subscriptors que paguen" msgstr "Aquest flux es sol per als subscriptors que paguen"
@ -2922,7 +2922,7 @@ msgid "Transcode Music"
msgstr "Converteix música" msgstr "Converteix música"
msgid "Transcoder Log" msgid "Transcoder Log"
msgstr "" msgstr "Registre del transcodificador"
msgid "Transcoding" msgid "Transcoding"
msgstr "Conversió" msgstr "Conversió"
@ -3023,7 +3023,7 @@ msgstr "Usat"
#, qt-format #, qt-format
msgid "User %1 doesn't have a Grooveshark Anywhere account" msgid "User %1 doesn't have a Grooveshark Anywhere account"
msgstr "" msgstr "Lusuari %1 no té un compte Grooveshark Anywhere"
msgid "Username" msgid "Username"
msgstr "Nom dusuari" msgstr "Nom dusuari"
@ -3205,7 +3205,7 @@ msgid ""
msgstr "Heu triat un tipus d'àudio Prèmium, però no heu indicat els detalls de cap compte" msgstr "Heu triat un tipus d'àudio Prèmium, però no heu indicat els detalls de cap compte"
msgid "You have selected an invalid audio type setting" msgid "You have selected an invalid audio type setting"
msgstr "" msgstr "Heu escollit una opció de tipus d'àudio no vàlida"
msgid "You love this track" msgid "You love this track"
msgstr "Us encanta aquesta peça" msgstr "Us encanta aquesta peça"
@ -3226,7 +3226,7 @@ msgstr "No podreu reproduir estacions de ràdio del Last.fm, tret que sigueu sub
#, qt-format #, qt-format
msgid "You're logged in as <b>%1</b>" msgid "You're logged in as <b>%1</b>"
msgstr "" msgstr "Heu iniciat sessió com a <b>%1</b>"
msgid "Your Google credentials were incorrect" msgid "Your Google credentials were incorrect"
msgstr "Les vostres credencials de Google no són correctes" msgstr "Les vostres credencials de Google no són correctes"
@ -3241,7 +3241,7 @@ msgid ""
"Your gstreamer installation is missing the 'ofa' plugin. This is required " "Your gstreamer installation is missing the 'ofa' plugin. This is required "
"for automatic tag fetching. Try installing the 'gstreamer-plugins-bad' " "for automatic tag fetching. Try installing the 'gstreamer-plugins-bad' "
"package." "package."
msgstr "" msgstr "A la vostra instal·lació del gstreamer li falta el complement «ofa». Fa falta per a aconseguir automàticament les etiquetes. Mireu d'instal·lar el paquet «gstreamer-plugins-bad»."
msgid "Your library is empty!" msgid "Your library is empty!"
msgstr "La vostra col·lecció és buida." msgstr "La vostra col·lecció és buida."
@ -3325,7 +3325,7 @@ msgid "longest first"
msgstr "el més llarg primer" msgstr "el més llarg primer"
msgid "move songs" msgid "move songs"
msgstr "" msgstr "mou cançons"
msgid "newest first" msgid "newest first"
msgstr "els més recents primer" msgstr "els més recents primer"

View File

@ -1998,7 +1998,7 @@ msgid "Open device"
msgstr "Otevřít zařízení" msgstr "Otevřít zařízení"
msgid "Open dir.xiph.org in browser" msgid "Open dir.xiph.org in browser"
msgstr "" msgstr "Otevřít dir.xiph.org v prohlížeči"
msgid "Open in new playlist" msgid "Open in new playlist"
msgstr "Otevřít v novém seznamu skladeb" msgstr "Otevřít v novém seznamu skladeb"
@ -2675,16 +2675,16 @@ msgid "Spotify login error"
msgstr "Chyba při přihlášení k Spotify" msgstr "Chyba při přihlášení k Spotify"
msgid "Spotify plugin" msgid "Spotify plugin"
msgstr "" msgstr "Přídavný modul Spotify"
msgid "Spotify plugin not installed" msgid "Spotify plugin not installed"
msgstr "" msgstr "Přídavný modul Spotify není nainstalován"
msgid "Standard" msgid "Standard"
msgstr "Obvyklý" msgstr "Obvyklý"
msgid "Starred" msgid "Starred"
msgstr "" msgstr "S hvězdičkou"
msgid "Start the playlist currently playing" msgid "Start the playlist currently playing"
msgstr "Přehrát současnou skladbu v seznamu skladeb" msgstr "Přehrát současnou skladbu v seznamu skladeb"
@ -2693,10 +2693,10 @@ msgid "Start transcoding"
msgstr "Převést" msgstr "Převést"
msgid "Start typing in the search box above to find music on Grooveshark." msgid "Start typing in the search box above to find music on Grooveshark."
msgstr "" msgstr "Začněte zadávání v poli pro hledání výše pro nalezení hudby na Grooveshark."
msgid "Start typing in the search box above to find music on Spotify." msgid "Start typing in the search box above to find music on Spotify."
msgstr "" msgstr "Začněte psát ve vyhledávacím poli pro nalezení hudby na Spotify"
#, qt-format #, qt-format
msgid "Starting %1" msgid "Starting %1"
@ -2744,34 +2744,34 @@ msgid "Super high (%1 fps)"
msgstr "Nadmíru vysoké (%1 fps)" msgstr "Nadmíru vysoké (%1 fps)"
msgid "Super high (60 fps)" msgid "Super high (60 fps)"
msgstr "" msgstr "Velmi vysoké (60 fps)"
msgid "Supported formats" msgid "Supported formats"
msgstr "Podporované formáty" msgstr "Podporované formáty"
msgid "Switch provider" msgid "Switch provider"
msgstr "" msgstr "Přepnout poskytovatele"
msgid "Syncing Spotify inbox" msgid "Syncing Spotify inbox"
msgstr "" msgstr "Synchronizuje se schránka Spotify"
msgid "Syncing Spotify playlist" msgid "Syncing Spotify playlist"
msgstr "" msgstr "Synchronizuje se seznam skladeb Spotify"
msgid "Syncing Spotify starred tracks" msgid "Syncing Spotify starred tracks"
msgstr "" msgstr "Synchronizují se skladby označené hvězdičkou na Spotify"
msgid "Tabs on top" msgid "Tabs on top"
msgstr "Karty nahoře" msgstr "Karty nahoře"
msgid "Tag" msgid "Tag"
msgstr "" msgstr "Značka"
msgid "Tag fetcher" msgid "Tag fetcher"
msgstr "Stahování značek" msgstr "Stahování značek"
msgid "Tag radio" msgid "Tag radio"
msgstr "" msgstr "Označit rádio"
msgid "Target bitrate" msgid "Target bitrate"
msgstr "Cílový datový tok" msgstr "Cílový datový tok"
@ -2795,7 +2795,7 @@ msgstr "Adresář \"%1\" je neplatný"
#, qt-format #, qt-format
msgid "The playlist '%1' was empty or could not be loaded." msgid "The playlist '%1' was empty or could not be loaded."
msgstr "" msgstr "Seznam skladeb \"%1\" je prázdný, nebo se jej nepodařilo nahrát."
msgid "The second value must be greater than the first one!" msgid "The second value must be greater than the first one!"
msgstr "Druhá hodnota musí být větší než první!" msgstr "Druhá hodnota musí být větší než první!"
@ -2826,7 +2826,7 @@ msgstr "Při mazání některých písní nastaly potíže. Nepodařilo se smaza
msgid "" msgid ""
"These files will be deleted from disk, are you sure you want to continue?" "These files will be deleted from disk, are you sure you want to continue?"
msgstr "" msgstr "Tyto soubory budou smazány z disku. Opravdu chcete pokračovat?"
msgid "" msgid ""
"These files will be deleted from the device, are you sure you want to " "These files will be deleted from the device, are you sure you want to "
@ -2878,7 +2878,7 @@ msgstr "Toto zařízení bylo připojeno poprvé. Clementine na něm nyní hled
msgid "" msgid ""
"This playlist will be removed; the action can't be undone. Are you sure you " "This playlist will be removed; the action can't be undone. Are you sure you "
"want to continue?" "want to continue?"
msgstr "" msgstr "Tento seznam skladeb bude nenávratně odstraněn. Opravdu chcete pokračovat?"
msgid "This stream is for paid subscribers only" msgid "This stream is for paid subscribers only"
msgstr "Tento proud je pouze pro předplatitele" msgstr "Tento proud je pouze pro předplatitele"
@ -2888,10 +2888,10 @@ msgid "This type of device is not supported: %1"
msgstr "Tento typ zařízení není podporován: %1" msgstr "Tento typ zařízení není podporován: %1"
msgid "Timeout" msgid "Timeout"
msgstr "" msgstr "Časové omezení"
msgid "Timezone" msgid "Timezone"
msgstr "" msgstr "Časové pásmo"
msgid "Title" msgid "Title"
msgstr "Název" msgstr "Název"
@ -2927,7 +2927,7 @@ msgid "Transcode Music"
msgstr "Převést hudbu" msgstr "Převést hudbu"
msgid "Transcoder Log" msgid "Transcoder Log"
msgstr "" msgstr "Záznam o převodu"
msgid "Transcoding" msgid "Transcoding"
msgstr "Překódování" msgstr "Překódování"
@ -3028,7 +3028,7 @@ msgstr "Použito"
#, qt-format #, qt-format
msgid "User %1 doesn't have a Grooveshark Anywhere account" msgid "User %1 doesn't have a Grooveshark Anywhere account"
msgstr "" msgstr "Uživatel %1 nemá účet Grooveshark Anywhere"
msgid "Username" msgid "Username"
msgstr "Uživatelské jméno" msgstr "Uživatelské jméno"
@ -3043,7 +3043,7 @@ msgid "Variable bit rate"
msgstr "Proměnlivý datový tok" msgstr "Proměnlivý datový tok"
msgid "Various Artists" msgid "Various Artists"
msgstr "" msgstr "Různí umělci"
msgid "Various artists" msgid "Various artists"
msgstr "Různí umělci" msgstr "Různí umělci"
@ -3072,7 +3072,7 @@ msgid "Volume %1%"
msgstr "Hlasitost %1 %" msgstr "Hlasitost %1 %"
msgid "Volume name" msgid "Volume name"
msgstr "" msgstr "Název oddílu"
msgid "Vorbis" msgid "Vorbis"
msgstr "Vorbis" msgstr "Vorbis"
@ -3098,14 +3098,14 @@ msgid ""
msgstr "Při hledání obalu alba se Clementine nejprve podívá po obrázkových souborech, jež obsahují jedno z těchto slov.\nPokud nenajde žádné, které by se shodovaly, potom použije největší obrázek v adresáři." msgstr "Při hledání obalu alba se Clementine nejprve podívá po obrázkových souborech, jež obsahují jedno z těchto slov.\nPokud nenajde žádné, které by se shodovaly, potom použije největší obrázek v adresáři."
msgid "WiFi MAC Address" msgid "WiFi MAC Address"
msgstr "" msgstr "MAC adresa WiFi"
msgid "Wide band (WB)" msgid "Wide band (WB)"
msgstr "Široké pásmo" msgstr "Široké pásmo"
#, qt-format #, qt-format
msgid "Wii Remote %1: actived" msgid "Wii Remote %1: actived"
msgstr "" msgstr "Wii Remote %1: zapnuto"
#, qt-format #, qt-format
msgid "Wii Remote %1: connected" msgid "Wii Remote %1: connected"
@ -3131,13 +3131,13 @@ msgid "Wiimotedev"
msgstr "Wiimotedev" msgstr "Wiimotedev"
msgid "Windows Media 128k (Premium only)" msgid "Windows Media 128k (Premium only)"
msgstr "" msgstr "Windows Media 128k (pouze Premium)"
msgid "Windows Media 40k" msgid "Windows Media 40k"
msgstr "Windows Media 40k" msgstr "Windows Media 40k"
msgid "Windows Media 64k (Premium only)" msgid "Windows Media 64k (Premium only)"
msgstr "" msgstr "Windows Media 64k (pouze Premium)"
msgid "Windows Media audio" msgid "Windows Media audio"
msgstr "Windows Media Audio" msgstr "Windows Media Audio"
@ -3176,7 +3176,7 @@ msgstr "Můžete změnit způsob uspořádání písní v hudební sbírce."
msgid "" msgid ""
"You can listen for free without an account, but Premium members can listen " "You can listen for free without an account, but Premium members can listen "
"to higher quality streams without advertisements." "to higher quality streams without advertisements."
msgstr "" msgstr "Můžete poslouchat zdarma bez účtu, ale členové Premium mohou poslouchat proudy o vyšší kvalitě a bez reklam."
msgid "" msgid ""
"You can listen to Magnatune songs for free without an account. Purchasing a" "You can listen to Magnatune songs for free without an account. Purchasing a"
@ -3190,7 +3190,7 @@ msgid ""
"You can scrobble tracks for free, but only <span style=\" font-" "You can scrobble tracks for free, but only <span style=\" font-"
"weight:600;\">paid subscribers</span> can stream Last.fm radio from " "weight:600;\">paid subscribers</span> can stream Last.fm radio from "
"Clementine." "Clementine."
msgstr "" msgstr "Statistické funkce Last.fm je možné používat zdarma. Poslouchání rádia je však přístupné pouze <span style=\" font-weight:600;\">předplatitelům</span>."
msgid "" msgid ""
"You can use your Wii Remote as a remote control for Clementine. <a " "You can use your Wii Remote as a remote control for Clementine. <a "
@ -3199,18 +3199,18 @@ msgid ""
msgstr "Clementine lze ovládat dálkovým ovladačem od Wii. Pro více informací navštivte <a href=\"http://www.clementine-player.org/wiimote\">wiki Clementine</a>.\n" msgstr "Clementine lze ovládat dálkovým ovladačem od Wii. Pro více informací navštivte <a href=\"http://www.clementine-player.org/wiimote\">wiki Clementine</a>.\n"
msgid "You do not have a Grooveshark Anywhere account." msgid "You do not have a Grooveshark Anywhere account."
msgstr "" msgstr "Nemáte účet Grooveshark Anywhere."
msgid "You do not have a Spotify Premium account." msgid "You do not have a Spotify Premium account."
msgstr "" msgstr "Nemáte účet Spotify Premium."
msgid "" msgid ""
"You have selected a Premium-only audio type but do not have any account " "You have selected a Premium-only audio type but do not have any account "
"details entered" "details entered"
msgstr "" msgstr "Vybrali jste typ zvuku pouze Premium, ale nemáte zadané žádné údaje o účtu."
msgid "You have selected an invalid audio type setting" msgid "You have selected an invalid audio type setting"
msgstr "" msgstr "Vybrali jste nesprávné nastavení typu zvuku"
msgid "You love this track" msgid "You love this track"
msgstr "Tato skladba patří mezi vaše oblíbené" msgstr "Tato skladba patří mezi vaše oblíbené"
@ -3219,7 +3219,7 @@ msgid ""
"You need to launch System Preferences and turn on \"<span style=\" font-" "You need to launch System Preferences and turn on \"<span style=\" font-"
"style:italic;\">Enable access for assistive devices</span>\" to use global " "style:italic;\">Enable access for assistive devices</span>\" to use global "
"shortcuts in Clementine." "shortcuts in Clementine."
msgstr "" msgstr "Aby bylo možné v Clementine používat globální klávesové zkratky, je nutné spustit Nastavení systému a zapnout \"<span style=\" font-style:italic;\">Povolit přístup pro podpůrná zařízení</span>\"."
msgid "You will need to restart Clementine if you change the language." msgid "You will need to restart Clementine if you change the language."
msgstr "Pokud změníte jazyk, budete muset Clementine spustit znovu." msgstr "Pokud změníte jazyk, budete muset Clementine spustit znovu."
@ -3227,17 +3227,17 @@ msgstr "Pokud změníte jazyk, budete muset Clementine spustit znovu."
msgid "" msgid ""
"You will not be able to play Last.fm radio stations as you are not a Last.fm" "You will not be able to play Last.fm radio stations as you are not a Last.fm"
" subscriber." " subscriber."
msgstr "" msgstr "Rádiové stanice Last.fm nebudete moci přehrávat, protože nejste předplatitelem služby Last.fm."
#, qt-format #, qt-format
msgid "You're logged in as <b>%1</b>" msgid "You're logged in as <b>%1</b>"
msgstr "" msgstr "Jste přihlášen jako <b>%1</b>"
msgid "Your Google credentials were incorrect" msgid "Your Google credentials were incorrect"
msgstr "" msgstr "Vaše přihlašovací údaje ke Google byly nesprávné"
msgid "Your Last.fm credentials were incorrect" msgid "Your Last.fm credentials were incorrect"
msgstr "" msgstr "Vaše přihlašovací údaje k Last.fm byly nesprávné"
msgid "Your Magnatune credentials were incorrect" msgid "Your Magnatune credentials were incorrect"
msgstr "Vaše přihlašovací údaje k Magnatune byly nesprávné" msgstr "Vaše přihlašovací údaje k Magnatune byly nesprávné"
@ -3246,7 +3246,7 @@ msgid ""
"Your gstreamer installation is missing the 'ofa' plugin. This is required " "Your gstreamer installation is missing the 'ofa' plugin. This is required "
"for automatic tag fetching. Try installing the 'gstreamer-plugins-bad' " "for automatic tag fetching. Try installing the 'gstreamer-plugins-bad' "
"package." "package."
msgstr "" msgstr "Vaše instalace programu gstreamer postrádá přídavný modul ´ofa´. Ten je vyžadován pro automatické stahování štítků. Zkuste nainstalovat balíček 'gstreamer-plugins-bad'."
msgid "Your library is empty!" msgid "Your library is empty!"
msgstr "Vaše hudební sbírka je prázdná!" msgstr "Vaše hudební sbírka je prázdná!"
@ -3259,7 +3259,7 @@ msgid "Your scrobbles: %1"
msgstr "Váš počet přehrání: %1" msgstr "Váš počet přehrání: %1"
msgid "Your username or password was incorrect." msgid "Your username or password was incorrect."
msgstr "" msgstr "Uživatelské jméno nebo heslo bylo nesprávné."
msgid "Z-A" msgid "Z-A"
msgstr "Z-A" msgstr "Z-A"
@ -3330,7 +3330,7 @@ msgid "longest first"
msgstr "nejprve nejdelší" msgstr "nejprve nejdelší"
msgid "move songs" msgid "move songs"
msgstr "" msgstr "přesunout písně"
msgid "newest first" msgid "newest first"
msgstr "nejprve nejnovější" msgstr "nejprve nejnovější"

View File

@ -42,6 +42,7 @@
# Martin Brodbeck <martin@brodbeck-online.de>, 2013 # Martin Brodbeck <martin@brodbeck-online.de>, 2013
# Martin Herkt <lachs0r@hong-mailing.de>, 2011 # Martin Herkt <lachs0r@hong-mailing.de>, 2011
# Martin Herkt <luck3r@phicode.de>, 2010 # Martin Herkt <luck3r@phicode.de>, 2010
# Michael Kohler, 2024
# MCMicS, 2020 # MCMicS, 2020
# Mohamed Sakhri, 2013 # Mohamed Sakhri, 2013
# Mohamed Sakhri, 2013 # Mohamed Sakhri, 2013
@ -49,7 +50,7 @@
# Paul E. <>, 2012 # Paul E. <>, 2012
# Peter B. <pb@das-werkstatt.com>, 2014-2017,2020 # Peter B. <pb@das-werkstatt.com>, 2014-2017,2020
# Phillip Schichtel, 2013 # Phillip Schichtel, 2013
# Phillip Schichtel, 2013 # 17760e672035fcff50bc74f55db0788a_695e6fa, 2013
# robfloop <robertbeckmann@fastmail.fm>, 2012 # robfloop <robertbeckmann@fastmail.fm>, 2012
# robfloop <robertbeckmann@fastmail.fm>, 2012 # robfloop <robertbeckmann@fastmail.fm>, 2012
# Robin Cornelio Thomas <rc.thomas90@gmail.com>, 2012 # Robin Cornelio Thomas <rc.thomas90@gmail.com>, 2012
@ -70,7 +71,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-04-09 10:24+0000\n" "POT-Creation-Date: 2011-04-09 10:24+0000\n"
"PO-Revision-Date: 2011-10-27 18:53+0000\n" "PO-Revision-Date: 2011-10-27 18:53+0000\n"
"Last-Translator: 6543 <6543@obermui.de>, 2020\n" "Last-Translator: Michael Kohler, 2024\n"
"Language-Team: German (http://app.transifex.com/davidsansome/clementine/language/de/)\n" "Language-Team: German (http://app.transifex.com/davidsansome/clementine/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"
@ -219,7 +220,7 @@ msgid "1 track"
msgstr "1 Titel" msgstr "1 Titel"
msgid "128K MP3" msgid "128K MP3"
msgstr "" msgstr "128K MP3"
msgid "128k MP3" msgid "128k MP3"
msgstr "128k MP3" msgstr "128k MP3"
@ -240,7 +241,7 @@ msgid "A Grooveshark Anywhere account is required."
msgstr "" msgstr ""
msgid "A Spotify Premium account is required." msgid "A Spotify Premium account is required."
msgstr "" msgstr "Spotify Premium Zugang wird benötigt."
msgid "" msgid ""
"A smart playlist is a dynamic list of songs that come from your library. " "A smart playlist is a dynamic list of songs that come from your library. "
@ -293,7 +294,7 @@ msgid "Action"
msgstr "Aktion" msgstr "Aktion"
msgid "Active/deactive Wiiremote" msgid "Active/deactive Wiiremote"
msgstr "" msgstr "Aktivieren/deaktivieren Wiiremote"
msgid "Add Stream" msgid "Add Stream"
msgstr "Datenstrom hinzufügen" msgstr "Datenstrom hinzufügen"
@ -326,7 +327,7 @@ msgid "Add folder..."
msgstr "Ordner hinzufügen …" msgstr "Ordner hinzufügen …"
msgid "Add media" msgid "Add media"
msgstr "" msgstr "Medien hinzufügen ..."
msgid "Add new folder..." msgid "Add new folder..."
msgstr "Neuen Ordner hinzufügen …" msgstr "Neuen Ordner hinzufügen …"
@ -386,7 +387,7 @@ msgid "Add wiimotedev action"
msgstr "Aktion für Wii-Fernbedienung hinzufügen" msgstr "Aktion für Wii-Fernbedienung hinzufügen"
msgid "Add..." msgid "Add..."
msgstr "" msgstr "Hinzufügen …"
msgid "Added this month" msgid "Added this month"
msgstr "Diesen Monat hinzugefügt" msgstr "Diesen Monat hinzugefügt"
@ -422,7 +423,7 @@ msgid "Album info on jamendo.com..."
msgstr "Albuminformationen auf jamendo.com …" msgstr "Albuminformationen auf jamendo.com …"
msgid "Albumartist" msgid "Albumartist"
msgstr "" msgstr "Albumkünstler"
msgid "Albums with covers" msgid "Albums with covers"
msgstr "Alben mit Titelbildern" msgstr "Alben mit Titelbildern"
@ -633,7 +634,7 @@ msgid "CUE sheet support"
msgstr "Unterstützung von Cuesheets" msgstr "Unterstützung von Cuesheets"
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr "Abbrechen"
msgid "Change cover art" msgid "Change cover art"
msgstr "Titelbilder ändern" msgstr "Titelbilder ändern"

File diff suppressed because it is too large Load Diff

View File

@ -3,10 +3,10 @@
# This file is distributed under the same license as the Clementine package. # This file is distributed under the same license as the Clementine package.
# #
# Translators: # Translators:
# Adolfo Jayme-Barrientos, 2014 # Adolfo Jayme Barrientos, 2014
# Adolfo Jayme-Barrientos, 2018-2022 # Adolfo Jayme Barrientos, 2018-2022
# Adolfo Jayme-Barrientos, 2015-2016 # Adolfo Jayme Barrientos, 2015-2016
# Adolfo Jayme-Barrientos, 2014 # Adolfo Jayme Barrientos, 2014
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010 # FIRST AUTHOR <EMAIL@ADDRESS>, 2010
msgid "" msgid ""
msgstr "" msgstr ""
@ -14,7 +14,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-04-09 10:24+0000\n" "POT-Creation-Date: 2011-04-09 10:24+0000\n"
"PO-Revision-Date: 2011-10-27 18:53+0000\n" "PO-Revision-Date: 2011-10-27 18:53+0000\n"
"Last-Translator: Adolfo Jayme-Barrientos, 2018-2022\n" "Last-Translator: Adolfo Jayme Barrientos, 2018-2022\n"
"Language-Team: Esperanto (http://app.transifex.com/davidsansome/clementine/language/eo/)\n" "Language-Team: Esperanto (http://app.transifex.com/davidsansome/clementine/language/eo/)\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"

View File

@ -4,12 +4,12 @@
# #
# Translators: # Translators:
# Coroccotta <adiazubierna@gmail.com>, 2012 # Coroccotta <adiazubierna@gmail.com>, 2012
# Adolfo Jayme-Barrientos, 2014 # Adolfo Jayme Barrientos, 2014
# Adolfo Jayme-Barrientos, 2012-2013,2018,2021 # Adolfo Jayme Barrientos, 2012-2013,2018,2021
# Adolfo Jayme-Barrientos, 2016-2022 # Adolfo Jayme Barrientos, 2016-2022
# Adolfo Jayme-Barrientos, 2015-2016 # Adolfo Jayme Barrientos, 2015-2016
# Adolfo Jayme-Barrientos, 2013 # Adolfo Jayme Barrientos, 2013
# Adolfo Jayme-Barrientos, 2014 # Adolfo Jayme Barrientos, 2014
# Adrián Prado Castro <adrian.prado@gmail.com>, 2013 # Adrián Prado Castro <adrian.prado@gmail.com>, 2013
# Adrián Ramirez Escalante <buried.prophet@gmail.com>, 2012 # Adrián Ramirez Escalante <buried.prophet@gmail.com>, 2012
# Amaury Ortega <amauryocortega@gmail.com>, 2018 # Amaury Ortega <amauryocortega@gmail.com>, 2018

View File

@ -1245,7 +1245,7 @@ msgid "File name"
msgstr "Faili nimi" msgstr "Faili nimi"
msgid "File name (without path)" msgid "File name (without path)"
msgstr "Failinimi (ilma rajata)" msgstr "Failinimi (ilma asukohata)"
msgid "File size" msgid "File size"
msgstr "Faili suurus" msgstr "Faili suurus"
@ -2606,7 +2606,7 @@ msgid "Skip backwards in playlist"
msgstr "Samm lugude nimekirjas tagasi" msgstr "Samm lugude nimekirjas tagasi"
msgid "Skip count" msgid "Skip count"
msgstr "Vahelejätmiskorrad" msgstr "Vahelejätmiskordi"
msgid "Skip forwards in playlist" msgid "Skip forwards in playlist"
msgstr "Samm lugude nimekirjas edasi" msgstr "Samm lugude nimekirjas edasi"

View File

@ -180,7 +180,7 @@ msgid ""
"<p>Tokens start with %, for example: %artist %album %title </p>\n" "<p>Tokens start with %, for example: %artist %album %title </p>\n"
"\n" "\n"
"<p>If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.</p>" "<p>If you surround sections of text that contain a token with curly-braces, that section will be hidden if the token is empty.</p>"
msgstr "<p>Tietueet alkavat %-merkillä, esimerkiksi: %artist %album %title </p>\n\n<p>Jos ympäröit tietueen sisältävän tekstin aaltosulkeilla, se piilotetaan, jos tietue on tyhjä.</p>" msgstr "<p>Tietueet alkavat % merkillä, esim: %artist %album %title </p>\n\n<p>Jos ympäröit sisältävän tekstin sulkeilla, se piilotetaan, jos tietue on tyhjä.</p>"
msgid "A Grooveshark Anywhere account is required." msgid "A Grooveshark Anywhere account is required."
msgstr "Edellyttää Grooveshark Anywhere tiliä." msgstr "Edellyttää Grooveshark Anywhere tiliä."
@ -278,16 +278,16 @@ msgid "Add new folder..."
msgstr "Lisää uusi kansio..." msgstr "Lisää uusi kansio..."
msgid "Add search term" msgid "Add search term"
msgstr "Lisää hakutermi" msgstr "Lisää hakuehto"
msgid "Add song album tag" msgid "Add song album tag"
msgstr "Lisää tunniste levyn nimi" msgstr "Lisää tunniste levyn nimi"
msgid "Add song albumartist tag" msgid "Add song albumartist tag"
msgstr "Lisää tunniste levyn esittäjä" msgstr "Lisää kappaleen levyn tunniste"
msgid "Add song artist tag" msgid "Add song artist tag"
msgstr "Lisää tunniste kappaleen esittäjä" msgstr "Lisää kappaleen esittäjä tunniste"
msgid "Add song composer tag" msgid "Add song composer tag"
msgstr "Lisää tunniste kappaleen säveltäjä" msgstr "Lisää tunniste kappaleen säveltäjä"
@ -362,7 +362,7 @@ msgid "Album (ideal loudness for all tracks)"
msgstr "Albumi (ihanteellinen voimakkuus kaikille kappaleille)" msgstr "Albumi (ihanteellinen voimakkuus kaikille kappaleille)"
msgid "Album artist" msgid "Album artist"
msgstr "Albumin esittäjä" msgstr "Levyn esittäjä"
msgid "Album info on jamendo.com..." msgid "Album info on jamendo.com..."
msgstr "Albumin tiedot jamendo.comissa..." msgstr "Albumin tiedot jamendo.comissa..."
@ -425,7 +425,7 @@ msgid "An error occurred copying the iTunes database from the device"
msgstr "iTunes-tietokantaa kopioitaessa laitteesta tapahtui virhe" msgstr "iTunes-tietokantaa kopioitaessa laitteesta tapahtui virhe"
msgid "An error occurred copying the iTunes database onto the device" msgid "An error occurred copying the iTunes database onto the device"
msgstr "iTunes-tietokannan kopiointi laitteeseen päättyi virheeseen" msgstr "iTunes-tietokannan kopiointi päättyi virheeseen"
msgid "An error occurred loading the iTunes database" msgid "An error occurred loading the iTunes database"
msgstr "iTunes-tietokantaa ladatessa tapahtui virhe" msgstr "iTunes-tietokantaa ladatessa tapahtui virhe"
@ -479,7 +479,7 @@ msgid "Artist's initial"
msgstr "Esittäjän nimen ensimmäinen kirjain" msgstr "Esittäjän nimen ensimmäinen kirjain"
msgid "Audio format" msgid "Audio format"
msgstr "Äänimuoto" msgstr "Audio formaatti"
msgid "Audio type" msgid "Audio type"
msgstr "Audio tyyppi" msgstr "Audio tyyppi"
@ -603,7 +603,7 @@ msgid "Check for updates..."
msgstr "Tarkista päivitykset..." msgstr "Tarkista päivitykset..."
msgid "Choose a name for your smart playlist" msgid "Choose a name for your smart playlist"
msgstr "Anna nimi älykkäälle soittolistalle" msgstr "Anna nimi soittolistalle"
msgid "Choose automatically" msgid "Choose automatically"
msgstr "Valitse automaattisesti" msgstr "Valitse automaattisesti"
@ -728,7 +728,7 @@ msgid "Configure Magnatune..."
msgstr "Magnatune-asetukset..." msgstr "Magnatune-asetukset..."
msgid "Configure Shortcuts" msgid "Configure Shortcuts"
msgstr "Pikanäppäinten asetukset" msgstr "Pikanäppäimet"
msgid "Configure Spotify..." msgid "Configure Spotify..."
msgstr "Spotify asetukset..." msgstr "Spotify asetukset..."
@ -792,7 +792,7 @@ msgid "Couldn't open output file %1"
msgstr "Ei voitu avata kohdetiedostoa %1" msgstr "Ei voitu avata kohdetiedostoa %1"
msgid "Cover Manager" msgid "Cover Manager"
msgstr "Kansikuvaselain" msgstr "Kansikuvat"
msgid "Cover art from embedded image" msgid "Cover art from embedded image"
msgstr "Kansikuva sulautetusta kuvasta" msgstr "Kansikuva sulautetusta kuvasta"
@ -1026,10 +1026,10 @@ msgid "Don't stop!"
msgstr "Älä lopeta!" msgstr "Älä lopeta!"
msgid "Double click to open" msgid "Double click to open"
msgstr "Kaksoisnapsauta avataksesi" msgstr "Avaa painamalla kahdesti"
msgid "Double clicking a song will..." msgid "Double clicking a song will..."
msgstr "Kappaleen kaksoisnapsautus..." msgstr "Kappaleen painaminen kahdesti..."
msgid "Download directory" msgid "Download directory"
msgstr "Latauskansio" msgstr "Latauskansio"
@ -1130,13 +1130,13 @@ msgstr "Anna uusi nimi tälle soittolistalle"
msgid "" msgid ""
"Enter an <b>artist</b> or <b>tag</b> to start listening to Last.fm radio." "Enter an <b>artist</b> or <b>tag</b> to start listening to Last.fm radio."
msgstr "Anna <b>esittäjä</b> tai <b>tunniste</b> ja aloita Last.fm radion kuuntelu." msgstr "Anna <b>artisti</b> tai <b>tunniste</b> ja kuuntele Last.fm radiota."
msgid "Enter search terms here" msgid "Enter search terms here"
msgstr "Etsi tästä" msgstr "Etsi tästä"
msgid "Enter the URL of an internet radio stream:" msgid "Enter the URL of an internet radio stream:"
msgstr "Anna suoratoiston osoite:" msgstr "Anna url-osoite:"
msgid "Entire collection" msgid "Entire collection"
msgstr "Koko kokoelma" msgstr "Koko kokoelma"
@ -1387,16 +1387,16 @@ msgid "Group by Artist"
msgstr "Järjestä esittäjän mukaan" msgstr "Järjestä esittäjän mukaan"
msgid "Group by Artist/Album" msgid "Group by Artist/Album"
msgstr "Järjestä esittäjän/albumin mukaan" msgstr "Järjestä esittäjän/levyn mukaan"
msgid "Group by Artist/Year - Album" msgid "Group by Artist/Year - Album"
msgstr "Järjestä esittäjän/vuoden - albumin mukaan" msgstr "Järjestä esittäjän/vuoden mukaan"
msgid "Group by Genre/Album" msgid "Group by Genre/Album"
msgstr "Järjestä tyylin/albumin mukaan" msgstr "Järjestä tyylin/albumin mukaan"
msgid "Group by Genre/Artist/Album" msgid "Group by Genre/Artist/Album"
msgstr "Järjestä tyylin/esittäjän/albumin mukaan" msgstr "Järjestä tyylin/esittäjän/levyn mukaan"
msgid "HTTP proxy" msgid "HTTP proxy"
msgstr "HTTP-välityspalvelin" msgstr "HTTP-välityspalvelin"
@ -1449,7 +1449,7 @@ msgid ""
msgstr "Jos käytät ohjainta useammassa kuin yhdessä tietokoneessa, tämä nimi auttaa sinua valitsemaan puhelimen, johon haluat muodostaa yhteyden." msgstr "Jos käytät ohjainta useammassa kuin yhdessä tietokoneessa, tämä nimi auttaa sinua valitsemaan puhelimen, johon haluat muodostaa yhteyden."
msgid "Ignore \"The\" in artist names" msgid "Ignore \"The\" in artist names"
msgstr "Älä huomioi sanaa \"The\" esiintyjien nimissä" msgstr "Älä huomioi sanaa \"The\" esittäjän nimissä"
msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgid "Images (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)"
msgstr "Kuvat (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)" msgstr "Kuvat (*.png *.jpg *.jpeg *.bmp *.gif *.xpm *.pbm *.pgm *.ppm *.xbm)"
@ -1538,7 +1538,7 @@ msgid "Jamendo database"
msgstr "Jamendo-tietokanta" msgstr "Jamendo-tietokanta"
msgid "Jump to the currently playing track" msgid "Jump to the currently playing track"
msgstr "Näytä parhaillaan soiva kappale" msgstr "Näytä soiva kappale"
#, qt-format #, qt-format
msgid "Keep buttons for %1 second..." msgid "Keep buttons for %1 second..."
@ -1643,7 +1643,7 @@ msgid "Library rescan notice"
msgstr "Ilmoitus kirjaston läpikäynnistä" msgstr "Ilmoitus kirjaston läpikäynnistä"
msgid "Library search" msgid "Library search"
msgstr "Kirjastohaku" msgstr "Haku kirjastosta"
msgid "Limits" msgid "Limits"
msgstr "Rajat" msgstr "Rajat"
@ -1771,7 +1771,7 @@ msgid "Manufacturer"
msgstr "Valmistaja" msgstr "Valmistaja"
msgid "Match every search term (AND)" msgid "Match every search term (AND)"
msgstr "Täyttää jokaisen hakuehdon (AND)" msgstr "Täsmää jokaiseen hakuehtoon (AND)"
msgid "Match one or more search terms (OR)" msgid "Match one or more search terms (OR)"
msgstr "Täyttää yhden tai useampia hakuehtoja (OR)" msgstr "Täyttää yhden tai useampia hakuehtoja (OR)"
@ -1917,7 +1917,7 @@ msgstr "Ei pitkiä lohkoja"
msgid "" msgid ""
"No matches found. Clear the search box to show the whole playlist again." "No matches found. Clear the search box to show the whole playlist again."
msgstr "Ei osumia haulle. Tyhjennä hakukenttä näyttääksesi koko soittolistan uudelleen." msgstr "Ei osumia. Tyhjennä hakukenttä ja koko soittolista näytetään uudelleen."
msgid "No short blocks" msgid "No short blocks"
msgstr "Ei lyhyitä lohkoja" msgstr "Ei lyhyitä lohkoja"
@ -1953,7 +1953,7 @@ msgid "Not installed"
msgstr "Ei asennettu" msgstr "Ei asennettu"
msgid "Not mounted - double click to mount" msgid "Not mounted - double click to mount"
msgstr "Ei liitetty - kaksoisnapsauta liittääksesi" msgstr "Ei liitetty - paina kahdesti ja yhdistä"
msgid "Notification type" msgid "Notification type"
msgstr "Ilmoituksen tyyppi" msgstr "Ilmoituksen tyyppi"
@ -1984,7 +1984,7 @@ msgid "Open %1 in browser"
msgstr "Avaa %1 selaimessa" msgstr "Avaa %1 selaimessa"
msgid "Open &audio CD..." msgid "Open &audio CD..."
msgstr "Avaa &ääni-CD..." msgstr "Avaa &audio CD..."
msgid "Open device" msgid "Open device"
msgstr "Avaa laite" msgstr "Avaa laite"
@ -2083,7 +2083,7 @@ msgid "Play Artist or Tag"
msgstr "Toista esittäjä tai tunniste" msgstr "Toista esittäjä tai tunniste"
msgid "Play artist radio..." msgid "Play artist radio..."
msgstr "Toista esittäjä radiota..." msgstr "Toista esittäjää radiosta..."
msgid "Play count" msgid "Play count"
msgstr "Soittokertoja" msgstr "Soittokertoja"
@ -2101,7 +2101,7 @@ msgid "Play if there is nothing already playing"
msgstr "Aloita toisto, jos mikään ei soi parhaillaan" msgstr "Aloita toisto, jos mikään ei soi parhaillaan"
msgid "Play last.fm artist radio" msgid "Play last.fm artist radio"
msgstr "Toista last.fm esittäjä radiota" msgstr "Toista esittäjää last.fm radiosta"
msgid "Play last.fm tag radio" msgid "Play last.fm tag radio"
msgstr "Toista last.fm tunniste radiota" msgstr "Toista last.fm tunniste radiota"
@ -2164,7 +2164,7 @@ msgid "Preferred album art filenames (comma separated)"
msgstr "Ensisijainen tiedostonimi albumikuvitukselle (pilkuin eroteltu)" msgstr "Ensisijainen tiedostonimi albumikuvitukselle (pilkuin eroteltu)"
msgid "Preferred audio format" msgid "Preferred audio format"
msgstr "Ensisijainen äänimuoto" msgstr "Ensisijainen audio formaatti"
msgid "Preferred format" msgid "Preferred format"
msgstr "Ensisijainen muoto" msgstr "Ensisijainen muoto"
@ -2204,7 +2204,7 @@ msgid "Progress"
msgstr "Edistyminen" msgstr "Edistyminen"
msgid "Push Wiiremote button" msgid "Push Wiiremote button"
msgstr "Paina Wii Remoten nappia" msgstr "Paina Wii Remote nappia"
msgid "Put songs in a random order" msgid "Put songs in a random order"
msgstr "Aseta kappaleet satunnaiseen järjestykseen" msgstr "Aseta kappaleet satunnaiseen järjestykseen"
@ -2555,7 +2555,7 @@ msgid "Show in various artists"
msgstr "Näytä kohdassa \"Useita esittäjiä\"" msgstr "Näytä kohdassa \"Useita esittäjiä\""
msgid "Show only duplicates" msgid "Show only duplicates"
msgstr "Näytä vain kaksoiskappaleet" msgstr "Näytä kaksoiskappaleet"
msgid "Show only untagged" msgid "Show only untagged"
msgstr "Näytä vain vailla tunnistetta olevat" msgstr "Näytä vain vailla tunnistetta olevat"
@ -2643,10 +2643,10 @@ msgid "Sorry"
msgstr "Pahoittelut" msgstr "Pahoittelut"
msgid "Sort by genre (alphabetically)" msgid "Sort by genre (alphabetically)"
msgstr "Järjestä tyylin mukaan (aakkosjärjestyksessä)" msgstr "Järjestä tyyli (aakkosjen mukaan)"
msgid "Sort by genre (by popularity)" msgid "Sort by genre (by popularity)"
msgstr "Järjestä tyylin mukaan (Järjestä suosion mukaan)" msgstr "Järjestä tyyli (suosion mukaan)"
msgid "Sort by station name" msgid "Sort by station name"
msgstr "Järjestä aseman nimen mukaan" msgstr "Järjestä aseman nimen mukaan"
@ -2682,13 +2682,13 @@ msgid "Start the playlist currently playing"
msgstr "Käynnistä toistettava soittolista" msgstr "Käynnistä toistettava soittolista"
msgid "Start transcoding" msgid "Start transcoding"
msgstr "Aloita muunnos" msgstr "Aloita muuntaminen"
msgid "Start typing in the search box above to find music on Grooveshark." msgid "Start typing in the search box above to find music on Grooveshark."
msgstr "Kirjoita yllä olevaan hakukenttään ja löydät musiikkia Grooveshark:sta." msgstr "Kirjoita hakukenttään ja löydät musiikkia Grooveshark:sta."
msgid "Start typing in the search box above to find music on Spotify." msgid "Start typing in the search box above to find music on Spotify."
msgstr "Kirjoita yllä olevaan hakukenttään ja löydät musiikkia Spotify:sta." msgstr "Kirjoita hakukenttään ja löydät musiikkia Spotify:sta."
#, qt-format #, qt-format
msgid "Starting %1" msgid "Starting %1"
@ -2742,7 +2742,7 @@ msgid "Supported formats"
msgstr "Tuetut muodot" msgstr "Tuetut muodot"
msgid "Switch provider" msgid "Switch provider"
msgstr "Vaihda palveluntarjoajaa" msgstr "Vaihda palvelua"
msgid "Syncing Spotify inbox" msgid "Syncing Spotify inbox"
msgstr "Synkronoi Spotify saapuneet" msgstr "Synkronoi Spotify saapuneet"
@ -2839,7 +2839,7 @@ msgstr "Kolmas taso"
msgid "" msgid ""
"This action will create a database which could be as big as 150 MB.\n" "This action will create a database which could be as big as 150 MB.\n"
"Do you want to continue anyway?" "Do you want to continue anyway?"
msgstr "Tämä toiminto luo tietokannan, jonka koko voi olla jopa 150 megatavua.\nHaluatko silti jatkaa?" msgstr "Tämä luo tietokannan, jonka koko voi olla jopa 150 megatavua.\nHaluatko jatkaa?"
msgid "This album is not available in the requested format" msgid "This album is not available in the requested format"
msgstr "Tämä albumi ei ole saatavilla haluamassasi muodossa" msgstr "Tämä albumi ei ole saatavilla haluamassasi muodossa"
@ -2922,7 +2922,7 @@ msgid "Transcoder Log"
msgstr "Muunnosloki" msgstr "Muunnosloki"
msgid "Transcoding" msgid "Transcoding"
msgstr "Muunnos" msgstr "Muuntaminen"
#, qt-format #, qt-format
msgid "Transcoding %1 files using %2 threads" msgid "Transcoding %1 files using %2 threads"
@ -3132,7 +3132,7 @@ msgid "Windows Media 64k (Premium only)"
msgstr "Windows Media 64k (vain Premium)" msgstr "Windows Media 64k (vain Premium)"
msgid "Windows Media audio" msgid "Windows Media audio"
msgstr "Windows Media -ääni" msgstr "Windows Media audio"
msgid "Would you like to run a full rescan right now?" msgid "Would you like to run a full rescan right now?"
msgstr "Haluatko suorittaa kirjaston läpikäynnin nyt?" msgstr "Haluatko suorittaa kirjaston läpikäynnin nyt?"
@ -3176,7 +3176,7 @@ msgid ""
msgstr "Voit kuunnella Magnatune-kappaleita ilmaiseksi ilman tunnusta. Jäsenyyden osto poistaa viestit kappaleiden lopusta." msgstr "Voit kuunnella Magnatune-kappaleita ilmaiseksi ilman tunnusta. Jäsenyyden osto poistaa viestit kappaleiden lopusta."
msgid "You can listen to background streams at the same time as other music." msgid "You can listen to background streams at the same time as other music."
msgstr "Voit kuunnella taustaääniä samalla kun kuuntelet haluamaasi kappaletta." msgstr "Voit kuulla taustaääniä samanaikaisesti muun musiikin kanssa."
msgid "" msgid ""
"You can scrobble tracks for free, but only <span style=\" font-" "You can scrobble tracks for free, but only <span style=\" font-"

View File

@ -24,7 +24,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"
"Language: he\n" "Language: he\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n" "Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;\n"
"X-Generator: Launchpad (build 13168)\n" "X-Generator: Launchpad (build 13168)\n"
"X-Launchpad-Export-Date: 2011-06-27 04:53+0000\n" "X-Launchpad-Export-Date: 2011-06-27 04:53+0000\n"

View File

@ -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"
"Language: he_IL\n" "Language: he_IL\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n" "Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;\n"
"X-Generator: Launchpad (build 13168)\n" "X-Generator: Launchpad (build 13168)\n"
"X-Launchpad-Export-Date: 2011-06-27 04:53+0000\n" "X-Launchpad-Export-Date: 2011-06-27 04:53+0000\n"

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@
# #
# Translators: # Translators:
# Baiba Bērziņa <baibabeerzinnaa@gmail.com>, 2015 # Baiba Bērziņa <baibabeerzinnaa@gmail.com>, 2015
# Eduards 963, 2023 # Eduards Lasmanis, 2023
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011 # FIRST AUTHOR <EMAIL@ADDRESS>, 2011
# Gatis Kalniņš <>, 2014 # Gatis Kalniņš <>, 2014
# Kristaps, 2012 # Kristaps, 2012
@ -16,7 +16,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-04-09 10:24+0000\n" "POT-Creation-Date: 2011-04-09 10:24+0000\n"
"PO-Revision-Date: 2011-10-27 18:53+0000\n" "PO-Revision-Date: 2011-10-27 18:53+0000\n"
"Last-Translator: Eduards 963, 2023\n" "Last-Translator: Eduards Lasmanis, 2023\n"
"Language-Team: Latvian (http://app.transifex.com/davidsansome/clementine/language/lv/)\n" "Language-Team: Latvian (http://app.transifex.com/davidsansome/clementine/language/lv/)\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"

View File

@ -7,7 +7,7 @@
# arnaudbienner <arnaud.bienner@gmail.com>, 2011 # arnaudbienner <arnaud.bienner@gmail.com>, 2011
# arnaudbienner <arnaud.bienner@gmail.com>, 2011 # arnaudbienner <arnaud.bienner@gmail.com>, 2011
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010 # FIRST AUTHOR <EMAIL@ADDRESS>, 2010
# Hugo Carvalho <hugokarvalho@hotmail.com>, 2015,2020-2023 # Hugo Carvalho <hugokarvalho@hotmail.com>, 2015,2020-2024
# João Santos <joaoopsantos@gmail.com>, 2015 # João Santos <joaoopsantos@gmail.com>, 2015
# Rui <xymarior@yandex.com>, 2019 # Rui <xymarior@yandex.com>, 2019
# Alexandro Casanova <shorterfire@gmail.com>, 2013 # Alexandro Casanova <shorterfire@gmail.com>, 2013
@ -18,7 +18,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-04-09 10:24+0000\n" "POT-Creation-Date: 2011-04-09 10:24+0000\n"
"PO-Revision-Date: 2011-10-27 18:53+0000\n" "PO-Revision-Date: 2011-10-27 18:53+0000\n"
"Last-Translator: Hugo Carvalho <hugokarvalho@hotmail.com>, 2015,2020-2023\n" "Last-Translator: Hugo Carvalho <hugokarvalho@hotmail.com>, 2015,2020-2024\n"
"Language-Team: Portuguese (http://app.transifex.com/davidsansome/clementine/language/pt/)\n" "Language-Team: Portuguese (http://app.transifex.com/davidsansome/clementine/language/pt/)\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"
@ -61,7 +61,7 @@ msgstr "%1 listas de reprodução (%2)"
#, qt-format #, qt-format
msgid "%1 selected of" msgid "%1 selected of"
msgstr "" msgstr "%1 selecionada(s) de"
#, qt-format #, qt-format
msgid "%1 song" msgid "%1 song"
@ -185,10 +185,10 @@ msgid ""
msgstr "<p>Os \"tokens\" iniciam com %, por exemplo: %artist %album %title </p>\n\n<p>Ao colocar parênteses entre as secções de texto que contêm \"tokens\", essa secção será ocultada se o \"token\" estiver vazio</p>" msgstr "<p>Os \"tokens\" iniciam com %, por exemplo: %artist %album %title </p>\n\n<p>Ao colocar parênteses entre as secções de texto que contêm \"tokens\", essa secção será ocultada se o \"token\" estiver vazio</p>"
msgid "A Grooveshark Anywhere account is required." msgid "A Grooveshark Anywhere account is required."
msgstr "" msgstr "Requer uma conta Grooveshark Anywhere"
msgid "A Spotify Premium account is required." msgid "A Spotify Premium account is required."
msgstr "" msgstr "Requer uma conta Spotify Premium."
msgid "" msgid ""
"A smart playlist is a dynamic list of songs that come from your library. " "A smart playlist is a dynamic list of songs that come from your library. "
@ -207,13 +207,13 @@ msgid "AAC"
msgstr "AAC" msgstr "AAC"
msgid "AAC 128k (Premium only)" msgid "AAC 128k (Premium only)"
msgstr "" msgstr "AAC 128k (Premium)"
msgid "AAC 32k" msgid "AAC 32k"
msgstr "AAC 32k" msgstr "AAC 32k"
msgid "AAC 64k (Premium only)" msgid "AAC 64k (Premium only)"
msgstr "" msgstr "AAC 64k (Premium)"
msgid "AIFF" msgid "AIFF"
msgstr "AIFF" msgstr "AIFF"
@ -241,7 +241,7 @@ msgid "Action"
msgstr "Ação" msgstr "Ação"
msgid "Active/deactive Wiiremote" msgid "Active/deactive Wiiremote"
msgstr "" msgstr "Ativar/desativar Wiiremote"
msgid "Add Stream" msgid "Add Stream"
msgstr "Adicionar emissão" msgstr "Adicionar emissão"
@ -253,7 +253,7 @@ msgid "Add action"
msgstr "Adicionar uma ação" msgstr "Adicionar uma ação"
msgid "Add and play now" msgid "Add and play now"
msgstr "" msgstr "Adicionar e reproduzir"
msgid "Add another stream..." msgid "Add another stream..."
msgstr "Adicionar outra emissão..." msgstr "Adicionar outra emissão..."
@ -274,7 +274,7 @@ msgid "Add folder..."
msgstr "Adicionar diretório..." msgstr "Adicionar diretório..."
msgid "Add media" msgid "Add media"
msgstr "" msgstr "Adicionar ficheiros"
msgid "Add new folder..." msgid "Add new folder..."
msgstr "Adicionar novo diretório..." msgstr "Adicionar novo diretório..."
@ -334,7 +334,7 @@ msgid "Add wiimotedev action"
msgstr "Adicionar uma ação wiimotedev" msgstr "Adicionar uma ação wiimotedev"
msgid "Add..." msgid "Add..."
msgstr "" msgstr "Adicionar..."
msgid "Added this month" msgid "Added this month"
msgstr "Adicionadas este mês" msgstr "Adicionadas este mês"
@ -370,7 +370,7 @@ msgid "Album info on jamendo.com..."
msgstr "Informações do álbum em jamendo.com..." msgstr "Informações do álbum em jamendo.com..."
msgid "Albumartist" msgid "Albumartist"
msgstr "" msgstr "Álbum - artista"
msgid "Albums with covers" msgid "Albums with covers"
msgstr "Álbuns com capas" msgstr "Álbuns com capas"

View File

@ -8,7 +8,7 @@
# Iavael, 2012 # Iavael, 2012
# Alexander Vysotskiy <loki13gm@gmail.com>, 2012 # Alexander Vysotskiy <loki13gm@gmail.com>, 2012
# Andrei Demin <Andrei.Demin1996@gmail.com>, 2014 # Andrei Demin <Andrei.Demin1996@gmail.com>, 2014
# Andrei Stepanov, 2014-2023 # Andrei Stepanov, 2014-2024
# Andy Dufrane <>, 2012 # Andy Dufrane <>, 2012
# arnaudbienner <arnaud.bienner@gmail.com>, 2011 # arnaudbienner <arnaud.bienner@gmail.com>, 2011
# Camellan <camellan@yandex.ru>, 2018 # Camellan <camellan@yandex.ru>, 2018
@ -39,7 +39,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-04-09 10:24+0000\n" "POT-Creation-Date: 2011-04-09 10:24+0000\n"
"PO-Revision-Date: 2011-10-27 18:53+0000\n" "PO-Revision-Date: 2011-10-27 18:53+0000\n"
"Last-Translator: Andrei Stepanov, 2014-2023\n" "Last-Translator: Andrei Stepanov, 2014-2024\n"
"Language-Team: Russian (http://app.transifex.com/davidsansome/clementine/language/ru/)\n" "Language-Team: Russian (http://app.transifex.com/davidsansome/clementine/language/ru/)\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"
@ -481,10 +481,10 @@ msgstr "Применять сжатие для предотвращения ис
#, qt-format #, qt-format
msgid "Are you sure you want to delete the \"%1\" preset?" msgid "Are you sure you want to delete the \"%1\" preset?"
msgstr "Вы действительно хотите удалить предустановку «%1»?" msgstr "Уверены, что хотите удалить предустановку «%1»?"
msgid "Are you sure you want to reset this song's statistics?" msgid "Are you sure you want to reset this song's statistics?"
msgstr "Вы действительно хотите сбросить статистику этой песни?" msgstr "Уверены, что хотите сбросить статистику этой песни?"
msgid "Artist" msgid "Artist"
msgstr "Артист" msgstr "Артист"
@ -1209,7 +1209,7 @@ msgid "Except between tracks on the same album or in the same CUE sheet"
msgstr "Кроме треков с одних и тех же альбома или CUE-файла" msgstr "Кроме треков с одних и тех же альбома или CUE-файла"
msgid "&Extras" msgid "&Extras"
msgstr "&Дополнения" msgstr "П&рочее"
msgid "F1" msgid "F1"
msgstr "F1" msgstr "F1"
@ -2416,7 +2416,7 @@ msgid "Save this stream in the Internet tab"
msgstr "Сохранить этот поток во вкладке Интернет" msgstr "Сохранить этот поток во вкладке Интернет"
msgid "Saving tracks" msgid "Saving tracks"
msgstr "Сохранение треков" msgstr "Сохраняются треки"
msgid "Scalable sampling rate profile (SSR)" msgid "Scalable sampling rate profile (SSR)"
msgstr "Профиль Scalable sampling rate (SSR)" msgstr "Профиль Scalable sampling rate (SSR)"
@ -2846,7 +2846,7 @@ msgstr "Эти файлы будут удалены с диска. Хотите
msgid "" msgid ""
"These files will be deleted from the device, are you sure you want to " "These files will be deleted from the device, are you sure you want to "
"continue?" "continue?"
msgstr "Эти файлы будут удалены с устройства. Вы действительно хотите продолжить?" msgstr "Эти файлы будут удалены с устройства. Хотите продолжить?"
msgid "These folders will be scanned for music to make up your library" msgid "These folders will be scanned for music to make up your library"
msgstr "В этих папках происходит поиск музыки для создания вашей фонотеки" msgstr "В этих папках происходит поиск музыки для создания вашей фонотеки"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1262,10 +1262,14 @@ void MainWindow::TrackSkipped(PlaylistItemPtr item) {
const qint64 seconds_left = (length - position) / kNsecPerSec; const qint64 seconds_left = (length - position) / kNsecPerSec;
const qint64 seconds_total = length / kNsecPerSec; const qint64 seconds_total = length / kNsecPerSec;
const qint64 seconds_listened = position / kNsecPerSec;
if (((0.05 * seconds_total > 60 && percentage < 0.98) || if (((0.05 * seconds_total > 60 && percentage < 0.98) ||
percentage < 0.95) && percentage < 0.95) &&
seconds_left > 5) { // Never count the skip if under 5 seconds left (seconds_left > 5 &&
5 < seconds_listened)) { // Never count the skip if under 5 seconds
// left. Or we haven't listened for more than
// 5 seconds.
app_->library_backend()->IncrementSkipCountAsync(song.id(), percentage); app_->library_backend()->IncrementSkipCountAsync(song.id(), percentage);
} }
} }