Compare commits

...

19 Commits

Author SHA1 Message Date
Jonas Kvinge
b6c9ef4a15 Release 1.0.23 2024-01-11 20:44:55 +01:00
Jonas Kvinge
20e550bc7d Update Changelog 2024-01-11 17:40:09 +01:00
Jonas Kvinge
a4b7766947 DeviceManager: Add nullptr check for connected device
Possible fix for #1313
2024-01-11 17:03:00 +01:00
Jonas Kvinge
8d1a0071b6 Playlist: Use effective original year for sorting
Fixes #1349
2024-01-11 16:40:12 +01:00
Jonas Kvinge
a3c00e607b README: Update sponsoring info 2024-01-09 18:08:40 +01:00
Jonas Kvinge
de7ca8b736 CI: Enable OpenMandriva 2024-01-04 03:05:44 +01:00
Jonas Kvinge
04e593dc62 CollectionWatcher: Add unavailable song restored logging 2024-01-03 00:45:30 +01:00
Jonas Kvinge
2294c38aa9 CollectionBackend: Rename SqlQuery variable 2024-01-03 00:44:54 +01:00
Jonas Kvinge
6f41d39a9c CI: Remove Mageia from upload release 2024-01-02 23:47:15 +01:00
Jonas Kvinge
7c4e33b676 GstEngine: Treat all stream errors as non-fatal
Fixes #1347
2024-01-02 19:54:19 +01:00
Jonas Kvinge
4cc66bccad CI: Disable Mageia and OpenMandriva
OpenMandriva Cooker has package conflict issues. Mageia 8 is end of life and there is no docker image for Mageia 9 yet.
2024-01-02 19:49:10 +01:00
Jonas Kvinge
55b1d34f48 CI: Use unique artifact names 2024-01-01 06:56:53 +01:00
dependabot[bot]
4da0e8d8ad Bump actions/download-artifact from 3 to 4
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-01 04:48:34 +01:00
dependabot[bot]
b95bfba676 Bump actions/upload-artifact from 3 to 4
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-01 04:48:19 +01:00
Jonas Kvinge
1ff2bfd390 Organize: Only update song path for collection songs
Possible fix for #1341
2023-12-28 23:30:07 +01:00
Jonas Kvinge
a35fa5b158 Require KDSingleApplication 1.1.0 2023-12-26 23:30:25 +01:00
Strawbs Bot
22169bda0d Update translations 2023-12-13 23:59:26 +01:00
Jonas Kvinge
faf5f6c69d CI: Remove Fedora 37 and add 40 2023-12-09 23:51:07 +01:00
Jonas Kvinge
1ae01d4078 Turn on git revision 2023-12-09 23:50:14 +01:00
18 changed files with 104 additions and 95 deletions

View File

@@ -101,6 +101,12 @@ jobs:
- name: Install tagparser
if: matrix.opensuse_version == 'tumbleweed'
run: zypper -n --gpg-auto-import-keys in tagparser-devel
- name: Install kdsingleapplication-devel
if: matrix.opensuse_version == 'tumbleweed' && matrix.qt_version == '5'
run: zypper -n --gpg-auto-import-keys in kdsingleapplication-devel
- name: Install kdsingleapplication-qt6-devel
if: matrix.opensuse_version == 'tumbleweed' && matrix.qt_version == '6'
run: zypper -n --gpg-auto-import-keys in kdsingleapplication-qt6-devel
- name: Checkout
uses: actions/checkout@v4
with:
@@ -135,9 +141,9 @@ jobs:
run: echo "opensuse_subdir=$(echo ${{matrix.opensuse_version}} | sed 's/leap:/lp/g' | sed 's/\.//g')" > $GITHUB_ENV
- name: Upload artifacts
if: matrix.opensuse_version != 'tumbleweed'
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: opensuse-${{env.opensuse_subdir}}
name: opensuse-${{env.opensuse_subdir}}-qt${{matrix.qt_version}}
path: |
/usr/src/packages/SOURCES/*.xz
/usr/src/packages/SRPMS/*.rpm
@@ -166,17 +172,12 @@ jobs:
strategy:
fail-fast: false
matrix:
fedora_version: [ '37', '38', '39' ]
fedora_version: [ '38', '39', '40' ]
container:
image: fedora:${{matrix.fedora_version}}
steps:
- name: Update repositories
run: dnf -y update
- name: Fix dnf
run: |
if [ -f "/usr/bin/dnf5" ] && ! [ -f "/usr/bin/dnf" ]; then
ln -s /usr/bin/dnf5 /usr/bin/dnf
fi
- name: Upgrade packages
run: dnf -y upgrade
- name: Install dependencies
@@ -222,6 +223,7 @@ jobs:
desktop-file-utils
libappstream-glib
hicolor-icon-theme
kdsingleapplication-qt6-devel
- name: Checkout
uses: actions/checkout@v4
with:
@@ -248,7 +250,7 @@ jobs:
working-directory: build
run: rpmbuild -ba ../dist/unix/strawberry.spec
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: fedora-${{matrix.fedora_version}}
path: |
@@ -279,13 +281,12 @@ jobs:
container:
image: openmandriva/${{matrix.openmandriva_version}}
steps:
- name: Update repositories
run: dnf update -y
- name: Upgrade packages
run: dnf upgrade -y
- name: Update distro
run: dnf distro-sync --assumeyes
- name: Install dependencies
run: >
dnf install -y
which
glibc
gcc-c++
git
@@ -306,7 +307,7 @@ jobs:
sqlite-devel
libasound-devel
pulseaudio-devel
lib64GL-devel
libGL-devel
libgst-plugins-base1.0-devel
taglib-devel
chromaprint-devel
@@ -331,6 +332,8 @@ jobs:
appstream
appstream-util
hicolor-icon-theme
- name: Remove files
run: rm -rf /usr/lib64/qt6/lib/cmake/Qt6Sql/{Qt6QMYSQL*,Qt6QODBCD*,Qt6QPSQL*,Qt6QIBase*}
- name: Checkout
uses: actions/checkout@v4
with:
@@ -357,7 +360,7 @@ jobs:
working-directory: build
run: rpmbuild -ba ../dist/unix/strawberry.spec
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: openmandriva-${{matrix.openmandriva_version}}
path: |
@@ -379,12 +382,12 @@ jobs:
build-mageia:
name: Build Mageia
if: github.repository != 'strawberrymusicplayer/strawberry-private'
if: github.repository != 'strawberrymusicplayer/strawberry-private' && false
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
mageia_version: [ '8' ]
mageia_version: [ '9' ]
container:
image: mageia:${{matrix.mageia_version}}
steps:
@@ -459,7 +462,7 @@ jobs:
working-directory: build
run: rpmbuild -ba ../dist/unix/strawberry.spec
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: mageia-${{matrix.mageia_version}}
path: |
@@ -557,7 +560,7 @@ jobs:
- name: Copy deb
run: cp ../*.deb .
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: debian-${{matrix.debian_version}}
path: "*.deb"
@@ -656,7 +659,7 @@ jobs:
- name: Copy deb
run: cp ../*.deb ../*.ddeb .
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: ubuntu-${{matrix.ubuntu_version}}
path: |
@@ -1188,9 +1191,9 @@ jobs:
run: makensis strawberry.nsi
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: windows-mingw
name: windows-mingw-${{matrix.arch}}-${{matrix.buildtype}}
path: build/StrawberrySetup*.exe
- name: SSH key setup
@@ -1548,9 +1551,9 @@ jobs:
run: makensis strawberry.nsi
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: windows-msvc
name: windows-msvc-${{matrix.arch}}-${{matrix.buildtype}}
path: build/StrawberrySetup*.exe
@@ -1562,10 +1565,10 @@ jobs:
- build-windows-msvc
steps:
- name: Download artifacts
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: windows-msvc
path: builds
pattern: windows-msvc-*
- name: View files
run: find builds
- name: SSH key setup
@@ -1580,7 +1583,7 @@ jobs:
- name: rsync
shell: bash
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/ci'
run: rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var builds/StrawberrySetup-*-msvc-*.exe ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{secrets.BUILDS_PATH}}/windows/msvc/
run: rsync -e "ssh -p ${{secrets.SSH_PORT}} -o StrictHostKeyChecking=no" -var builds/*/StrawberrySetup-*-msvc-*.exe ${{secrets.SSH_USER}}@${{secrets.SSH_HOST}}:${{secrets.BUILDS_PATH}}/windows/msvc/
upload-release:
@@ -1590,7 +1593,6 @@ jobs:
needs:
- build-opensuse
- build-fedora
- build-mageia
- build-debian
- build-ubuntu
- build-windows-mingw
@@ -1625,7 +1627,7 @@ jobs:
- name: Download artifacts
if: env.release_version != ''
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
path: artifacts

View File

@@ -305,18 +305,13 @@ if(QT_VERSION_MAJOR EQUAL 5)
else()
set(KDSINGLEAPPLICATION_NAME "KDSingleApplication-qt${QT_VERSION_MAJOR}")
endif()
find_package(${KDSINGLEAPPLICATION_NAME})
find_package(${KDSINGLEAPPLICATION_NAME} 1.1.0)
if(TARGET KDAB::kdsingleapplication)
if(QT_VERSION_MAJOR EQUAL 5)
set(KDSINGLEAPPLICATION_VERSION "${KDSingleApplication_VERSION}")
elseif(QT_VERSION_MAJOR EQUAL 6)
set(KDSINGLEAPPLICATION_VERSION "${KDSingleApplication-qt6_VERSION}")
endif()
if(KDSINGLEAPPLICATION_VERSION VERSION_GREATER_EQUAL 1.0.95)
set(HAVE_KDSINGLEAPPLICATION_OPTIONS ON)
else()
set(HAVE_KDSINGLEAPPLICATION_OPTIONS OFF)
endif()
message(STATUS "Using system KDSingleApplication (Version ${KDSINGLEAPPLICATION_VERSION})")
set(SINGLEAPPLICATION_LIBRARIES KDAB::kdsingleapplication)
else()

View File

@@ -2,6 +2,19 @@ Strawberry Music Player
=======================
ChangeLog
Version 1.0.23 (2024.01.11):
Bugfixes:
* Fixed possible duplication of song entries after organizing (#1341).
* Fixed possible crash when connecting devices (#1313).
* Fixed playlist sorting of original year (#1349).
* (macOS) Fixed crash when adding collection directory (QTBUG-120469) (#1350).
Enhancements:
* Treat all stream errors as non-fatal (#1347).
* Require KDSingleApplication 1.1.0.
* Fix logging of restored unavailable songs.
Version 1.0.22 (2023.12.09):
Bugfixes:

View File

@@ -32,9 +32,9 @@ Resources:
### :moneybag: Sponsoring
The program is free software, released under GPL. If you like this program and can make use of it, consider sponsoring or donating to help fund the project.
There are currently 3 options for sponsoring:
There are currently 4 options for sponsoring:
1. [GitHub Sponsors](https://github.com/sponsors/jonaski)
1. [GitHub](https://github.com/sponsors/jonaski)
2. [Patreon](https://www.patreon.com/jonaskvinge)
3. [Ko-fi](https://ko-fi.com/jonaskvinge)
4. [PayPal](https://paypal.me/jonaskvinge)
@@ -65,7 +65,7 @@ Funding developers is a way to contribute to open source projects you appreciate
It has so far been tested to work on Linux, OpenBSD, FreeBSD, macOS and Windows.
**macOS releases are currently limited to sponsors. This is because macOS releases require a developer account, Apple hardware and maintaining all libraries strawberry depends on. If you are sponsoring strawberry, e-mail support@strawberrymusicplayer.org for access to downloads.**
**macOS releases are currently limited to sponsors. This is because Strawberry mainly has one contributor/developer and supporting macOS requires Apple hardware, building libraries Strawberry depends and a Apple developer account for signing releases. If you are sponsoring strawberry through Patreon, releases are available directly on Patreon, if you are sponsoring through GitHub, Ko-fi or Paypal, please e-mail support@strawberrymusicplayer.org for access to downloads.**
### :heavy_exclamation_mark: Requirements

View File

@@ -1,6 +1,6 @@
set(STRAWBERRY_VERSION_MAJOR 1)
set(STRAWBERRY_VERSION_MINOR 0)
set(STRAWBERRY_VERSION_PATCH 22)
set(STRAWBERRY_VERSION_PATCH 23)
#set(STRAWBERRY_VERSION_PRERELEASE rc1)
set(INCLUDE_GIT_REVISION OFF)

View File

@@ -50,6 +50,7 @@
</screenshots>
<update_contact>eclipseo@fedoraproject.org</update_contact>
<releases>
<release version="1.0.23" date="2024-01-11"/>
<release version="1.0.22" date="2023-12-09"/>
<release version="1.0.21" date="2023-10-21"/>
<release version="1.0.20" date="2023-09-24"/>

View File

@@ -907,14 +907,14 @@ void CollectionBackend::MarkSongsUnavailable(const SongList &songs, const bool u
QMutexLocker l(db_->Mutex());
QSqlDatabase db(db_->Connect());
SqlQuery remove(db);
remove.prepare(QString("UPDATE %1 SET unavailable = %2 WHERE ROWID = :id").arg(songs_table_).arg(static_cast<int>(unavailable)));
SqlQuery query(db);
query.prepare(QString("UPDATE %1 SET unavailable = %2 WHERE ROWID = :id").arg(songs_table_).arg(static_cast<int>(unavailable)));
ScopedTransaction transaction(&db);
for (const Song &song : songs) {
remove.BindValue(":id", song.id());
if (!remove.Exec()) {
db_->ReportErrors(remove);
query.BindValue(":id", song.id());
if (!query.Exec()) {
db_->ReportErrors(query);
return;
}
}

View File

@@ -627,6 +627,7 @@ void CollectionWatcher::ScanSubdirectory(const QString &path, const CollectionSu
// Nothing has changed - mark the song available without re-scanning
else if (matching_song.unavailable()) {
qLog(Debug) << "Unavailable song" << file << "restored.";
t->readded_songs << matching_songs;
}
@@ -886,7 +887,7 @@ void CollectionWatcher::AddChangedSong(const QString &file, const Song &matching
QStringList changes;
if (matching_song.unavailable()) {
qLog(Debug) << "unavailable song" << file << "restored.";
qLog(Debug) << "Unavailable song" << file << "restored.";
notify_new = true;
}
else {

View File

@@ -58,6 +58,4 @@
#cmakedefine HAVE_EBUR128
#cmakedefine HAVE_KDSINGLEAPPLICATION_OPTIONS
#endif // CONFIG_H_IN

View File

@@ -830,7 +830,7 @@ void DeviceManager::DeviceTaskStarted(const int id) {
for (int i = 0; i < devices_.count(); ++i) {
DeviceInfo *info = devices_[i];
if (&*info->device_ == device) {
if (info->device_ && &*info->device_ == device) {
QModelIndex index = ItemToIndex(info);
if (!index.isValid()) continue;
active_tasks_[id] = index;

View File

@@ -569,7 +569,7 @@ void GstEngine::HandlePipelineError(const int pipeline_id, const int domain, con
error_code == static_cast<int>(GST_RESOURCE_ERROR_OPEN_READ) ||
error_code == static_cast<int>(GST_RESOURCE_ERROR_NOT_AUTHORIZED)
))
|| (domain == static_cast<int>(GST_STREAM_ERROR) && error_code == static_cast<int>(GST_STREAM_ERROR_TYPE_NOT_FOUND))
|| (domain == static_cast<int>(GST_STREAM_ERROR))
) {
emit InvalidSongRequested(stream_url_);
}

View File

@@ -156,11 +156,7 @@ int main(int argc, char *argv[]) {
// Only start a core application now, so we can check if there's another instance without requiring an X server.
// This MUST be done before parsing the commandline options so QTextCodec gets the right system locale for filenames.
QCoreApplication core_app(argc, argv);
#ifdef HAVE_KDSINGLEAPPLICATION_OPTIONS
KDSingleApplication single_app(QCoreApplication::applicationName(), KDSingleApplication::Option::IncludeUsernameInSocketName);
#else
KDSingleApplication single_app(QCoreApplication::applicationName());
#endif
// Parse commandline options - need to do this before starting the full QApplication, so it works without an X server
if (!options.Parse()) return 1;
logging::SetLevels(options.log_levels());
@@ -197,11 +193,7 @@ int main(int argc, char *argv[]) {
QGuiApplication::setQuitOnLastWindowClosed(false);
QApplication a(argc, argv);
#ifdef HAVE_KDSINGLEAPPLICATION_OPTIONS
KDSingleApplication single_app(QCoreApplication::applicationName(), KDSingleApplication::Option::IncludeUsernameInSocketName);
#else
KDSingleApplication single_app(QCoreApplication::applicationName());
#endif
if (!single_app.isPrimaryInstance()) {
if (options.is_empty()) {
qLog(Info) << "Strawberry is already running - activating existing window (2)";

View File

@@ -251,7 +251,7 @@ void Organize::ProcessSomeFiles() {
job.progress_ = std::bind(&Organize::SetSongProgress, this, std::placeholders::_1, !task.transcoded_filename_.isEmpty());
if (destination_->CopyToStorage(job)) {
if (job.remove_original_ && (destination_->source() == Song::Source::Collection || destination_->source() == Song::Source::Device)) {
if (job.remove_original_ && song.is_collection_song() && destination_->source() == Song::Source::Collection) {
// Notify other aspects of system that song has been invalidated
QString root = destination_->LocalPath();
QFileInfo new_file = QFileInfo(root + "/" + task.song_info_.new_filename_);

View File

@@ -1303,7 +1303,7 @@ bool Playlist::CompareItems(const int column, const Qt::SortOrder order, Playlis
case Column_Track: cmp(track);
case Column_Disc: cmp(disc);
case Column_Year: cmp(year);
case Column_OriginalYear: cmp(originalyear);
case Column_OriginalYear: cmp(effective_originalyear);
case Column_Genre: strcmp(genre);
case Column_AlbumArtist: strcmp(playlist_albumartist_sortable);
case Column_Composer: strcmp(composer);

View File

@@ -43,13 +43,14 @@
# Guido T. <GuidoTelscher@web.de>, 2022. #zanata
# Jonas Kvinge <jonas@jkvinge.net>, 2022. #zanata
# Daniel Ostertag <dakes@vivaldi.net>, 2023. #zanata
# Stefan Skopnik <sskopnik@gmail.com>, 2023. #zanata
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"MIME-Version: 1.0\n"
"PO-Revision-Date: 2023-08-03 08:26-0400\n"
"Last-Translator: Daniel Ostertag <dakes@vivaldi.net>\n"
"PO-Revision-Date: 2023-12-02 05:25-0500\n"
"Last-Translator: Stefan Skopnik <sskopnik@gmail.com>\n"
"Language-Team: German\n"
"Language: de\n"
"X-Generator: Zanata 4.6.2\n"
@@ -283,7 +284,7 @@ msgstr "%n verbleibend"
#, c-format, qt-plural-format
msgctxt ""
msgid "%n track(s)"
msgstr ""
msgstr "%n Stück(e)"
#: ../build/src/ui_contextsettingspage.h:415
#: ../build/src/ui_notificationssettingspage.h:472
@@ -821,7 +822,7 @@ msgstr "Album - Disc"
#: playlist/playlist.cpp:1372
msgid "Album Artist"
msgstr ""
msgstr "Album-Interpret"
#: collection/savedgroupingmanager.cpp:92 organize/organizedialog.cpp:108
#: ../build/src/ui_groupbydialog.h:193 ../build/src/ui_groupbydialog.h:215
@@ -1156,7 +1157,7 @@ msgstr "Optimal"
#: playlist/playlist.cpp:1382
msgid "Bit Depth"
msgstr ""
msgstr "Bit-Tiefe"
#: context/contextview.cpp:165 collection/savedgroupingmanager.cpp:146
#: organize/organizedialog.cpp:121 ../build/src/ui_groupbydialog.h:209
@@ -1764,11 +1765,11 @@ msgstr "Datenbankfehler festgestellt"
#: playlist/playlist.cpp:1390
msgid "Date Created"
msgstr ""
msgstr "Erstellungsdatum"
#: playlist/playlist.cpp:1389
msgid "Date Modified"
msgstr ""
msgstr "Änderungsdatum"
#: ../build/src/ui_edittagdialog.h:881
msgid "Date created"
@@ -1916,7 +1917,7 @@ msgstr "Unterbrochene Übertragung"
#: ../build/src/ui_collectionsettingspage.h:446
msgid "Disk Cache Size"
msgstr "Größe des Cachespeichers auf der Fesplatte"
msgstr "Größe des Cachespeichers auf der Festplatte"
#: collection/collectionfilterwidget.cpp:139
#: ../build/src/ui_collectionsettingspage.h:439
@@ -2419,19 +2420,19 @@ msgstr "Datei %1 kann nicht als korrekte Audiodatei erkannt werden."
#: playlist/playlist.cpp:1385
msgid "File Name"
msgstr ""
msgstr "Dateiname"
#: playlist/playlist.cpp:1386
msgid "File Name (without path)"
msgstr ""
msgstr "Dateiname (ohne Dateipfad)"
#: playlist/playlist.cpp:1387
msgid "File Size"
msgstr ""
msgstr "Dateigröße"
#: playlist/playlist.cpp:1388
msgid "File Type"
msgstr ""
msgstr "Dateityp"
#: organize/organizedialog.cpp:122
msgid "File extension"
@@ -2899,7 +2900,7 @@ msgstr "Strawberry aus PPA installieren:"
#: playlist/playlist.cpp:1398
msgid "Integrated Loudness"
msgstr ""
msgstr "Integrierte Lautheit"
#: core/database.cpp:486
msgid "Integrity check"
@@ -2980,7 +2981,7 @@ msgstr "Große Seitenleiste"
#: playlist/playlist.cpp:1379
msgid "Last Played"
msgstr ""
msgstr "Zuletzt gespielt"
#: smartplaylists/smartplaylistsmodel.cpp:91
#: ../build/src/ui_lastfmimportdialog.h:150
@@ -3118,7 +3119,7 @@ msgstr "Langzeitvorhersageprofil (LTP)"
#: playlist/playlist.cpp:1399
msgid "Loudness Range"
msgstr ""
msgstr "Lautstärkeumfang"
#: globalshortcuts/globalshortcutsmanager.cpp:79
#: ../build/src/ui_mainwindow.h:634
@@ -3641,7 +3642,7 @@ msgstr "Dateien organisieren"
#: playlist/playlist.cpp:1370
msgid "Original Year"
msgstr ""
msgstr "Ursprüngliches Jahr"
#: dialogs/trackselectiondialog.cpp:192
msgid "Original tags"
@@ -3775,7 +3776,7 @@ msgstr "Wiedergabe"
#: playlist/playlist.cpp:1377
msgid "Play Count"
msgstr ""
msgstr "Wiedergabezähler"
#: ../build/src/ui_appearancesettingspage.h:553
msgid "Play control buttons"
@@ -4428,7 +4429,7 @@ msgstr "Das Gerät nach dem Kopiervorgang sicher entfernen"
#: playlist/playlist.cpp:1381
msgid "Sample Rate"
msgstr ""
msgstr "Abtastrate"
#: collection/savedgroupingmanager.cpp:143 organize/organizedialog.cpp:120
#: ../build/src/ui_groupbydialog.h:208 ../build/src/ui_groupbydialog.h:230
@@ -4904,7 +4905,7 @@ msgstr "Ska"
#: playlist/playlist.cpp:1378
msgid "Skip Count"
msgstr ""
msgstr "Übersprungzähler"
#: core/commandlineoptions.cpp:224
msgid "Skip backwards in playlist"
@@ -5011,7 +5012,7 @@ msgstr "Speex"
#: core/mainwindow.cpp:1068
msgid "Sponsoring Strawberry"
msgstr ""
msgstr "Sponsoring Strawberry"
#: covermanager/spotifycoverprovider.cpp:149
msgid "Spotify Authentication"
@@ -5110,6 +5111,9 @@ msgid ""
"consider sponsoring the project. For more information about sponsorship see "
"our website %1"
msgstr ""
"Strawberry ist freie Open-Source Software. Wenn Ihnen Strawberry gefällt, "
"können sie das Projekt sponsern. Für weitere Informationen zum Thema "
"Sponsorschaft schauen Sie auf unsere Web-Seite %1"
#: dialogs/about.cpp:117
#, qt-format
@@ -5915,6 +5919,9 @@ msgid ""
"is unsupported and known to have issues. You should download Strawberry for "
"the correct CPU architecture from %1"
msgstr ""
"Sie betreiben Strawberry unter Rosetta. Der Betrieb von Strawberry unter "
"Rosetta wird nicht unterstützt und führt zu Problemen. Bitte laden Sie "
"Strawberry für die korrekte CPU-Architektur von %1 herunter"
#: widgets/loginstatewidget.cpp:83
#, qt-format

View File

@@ -48,8 +48,8 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"MIME-Version: 1.0\n"
"PO-Revision-Date: 2023-09-27 12:01-0400\n"
"Last-Translator: David Geiger <geiger.david68210@gmail.com>\n"
"PO-Revision-Date: 2023-12-11 11:29-0500\n"
"Last-Translator: hatstand <john.maguire@gmail.com>\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Language-Team: French\n"
@@ -280,7 +280,7 @@ msgstr "%n restant"
#, c-format, qt-plural-format
msgctxt ""
msgid "%n track(s)"
msgstr ""
msgstr "%n morceau(x)"
#: ../build/src/ui_contextsettingspage.h:415
#: ../build/src/ui_notificationssettingspage.h:472

View File

@@ -36,7 +36,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"MIME-Version: 1.0\n"
"PO-Revision-Date: 2023-11-29 06:45-0500\n"
"PO-Revision-Date: 2023-12-04 06:08-0500\n"
"Last-Translator: Andrei Stepanov <adem4ik@gmail.com>\n"
"Language-Team: Russian\n"
"Language: ru\n"
@@ -878,7 +878,7 @@ msgstr "Разрешить кодирование в виде суммы и ра
#: ../build/src/ui_transcodedialog.h:231
msgid "Alongside the originals"
msgstr "Вместе с оригиналами"
msgstr "Рядом с исходными"
#: ../build/src/ui_behavioursettingspage.h:298
#: ../build/src/ui_behavioursettingspage.h:312
@@ -912,7 +912,7 @@ msgstr "Внешний вид"
#: ../build/src/ui_tidalsettingspage.h:339
msgid "Append explicit to album title for explicit albums"
msgstr "Добавить явно к названию альбома для явных альбомов"
msgstr "Добавлять «Explicit» в имена альбомов с нецензурной лексикой"
#: core/commandlineoptions.cpp:236
msgid "Append files/URLs to the playlist"
@@ -2054,7 +2054,7 @@ msgstr "Включить HTTP/2 для потокового вещания"
#: ../build/src/ui_contextsettingspage.h:426
msgid "Enable Items"
msgstr "Задействовать объекты"
msgstr "Задействовать элементы"
#: ../build/src/ui_collectionsettingspage.h:456
#: ../build/src/ui_playlistsettingspage.h:188
@@ -2471,7 +2471,7 @@ msgstr "Шрифт"
#: ../build/src/ui_contextsettingspage.h:437
msgid "Font for data and lyrics"
msgstr "Шрифт для данных и текста песен"
msgstr "Шрифт данных и текста песни"
#: ../build/src/ui_contextsettingspage.h:432
msgid "Font for headline"
@@ -3634,8 +3634,8 @@ msgstr "Выходные параметры"
#: ../build/src/ui_collectionsettingspage.h:453
msgid "Overwrite database playcount when songs are re-read from disk"
msgstr ""
"Перезаписать счётчики воспроизведения базы данных при повторном чтении песен "
"с диска"
"Обновлять счётчик прослушивания базы данных при повторном чтении песен с "
"диска"
#: ../build/src/ui_collectionsettingspage.h:454
msgid "Overwrite database rating when songs are re-read from disk"
@@ -4035,7 +4035,7 @@ msgstr "Оценка"
#: ../build/src/ui_playlistsettingspage.h:193
msgid "Re&lative"
msgstr "&Относительно"
msgstr "&Относительные"
#: covermanager/albumcovermanager.cpp:259
msgid "Really cancel?"
@@ -4785,7 +4785,7 @@ msgstr "Показать текст песни"
#: ../build/src/ui_behavioursettingspage.h:282
msgid "Show song progress on system tray icon"
msgstr "Показывать прогресс песни на значке в трее"
msgstr "Показывать ход проигрывания песни на значке в трее"
#: context/contextview.cpp:263
msgid "Show song technical data"
@@ -5102,11 +5102,11 @@ msgstr "Метод адреса потока"
#: settings/settingsdialog.cpp:158
msgid "Streaming"
msgstr "Прослушивание потоков"
msgstr "Проигрывание потоков"
#: ../build/src/ui_appearancesettingspage.h:543
msgid "Stretch image to fill playlist"
msgstr "Подгонять изображение к размеру плейлиста"
msgstr "Подгонять к размеру плейлиста"
#: ../build/src/ui_appearancesettingspage.h:515
#: ../build/src/ui_appearancesettingspage.h:516
@@ -5702,7 +5702,7 @@ msgstr "Различные артисты"
#: ../build/src/ui_subsonicsettingspage.h:254
msgid "Verify server certificate"
msgstr "Верифицировать сертификат сервера"
msgstr "Проверять сертификат сервера"
#: dialogs/about.cpp:107
#, qt-format