summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore86
-rw-r--r--.gitlab-ci.yml2
-rw-r--r--.gitlab/issue_templates/default.md40
-rw-r--r--.gitmodules3
-rw-r--r--NEWS227
-rw-r--r--README.md20
-rw-r--r--data/icons/music-artist-symbolic.svg1
-rw-r--r--data/icons/music-playlist-symbolic.svg1
-rw-r--r--data/icons/playlist2-symbolic.svg6
-rw-r--r--data/icons/welcome-music.svg552
-rw-r--r--data/meson.build16
-rw-r--r--data/org.gnome.Music.appdata.xml.in.in48
-rw-r--r--data/org.gnome.Music.gresource.xml15
-rw-r--r--data/org.gnome.Music.gschema.xml5
-rw-r--r--data/screenshots/gnome-music-1.pngbin338369 -> 811486 bytes
-rw-r--r--data/screenshots/gnome-music-2.pngbin51604 -> 174805 bytes
-rw-r--r--data/screenshots/gnome-music-3.pngbin144226 -> 252608 bytes
-rw-r--r--data/screenshots/gnome-music-4.pngbin44042 -> 106184 bytes
-rw-r--r--data/style.css (renamed from data/org.gnome.Music.css)77
-rw-r--r--data/ui/AboutDialog.ui.in214
-rw-r--r--data/ui/AlbumCover.ui24
-rw-r--r--data/ui/AlbumCoverListItem.ui50
-rw-r--r--data/ui/AlbumWidget.ui227
-rw-r--r--data/ui/AlbumsView.ui63
-rw-r--r--data/ui/AppMenu.ui36
-rw-r--r--data/ui/ArtistAlbumsWidget.ui20
-rw-r--r--data/ui/ArtistSearchTile.ui26
-rw-r--r--data/ui/ArtistTile.ui15
-rw-r--r--data/ui/ArtistsView.ui31
-rw-r--r--data/ui/DiscBox.ui24
-rw-r--r--data/ui/DiscListItem.ui29
-rw-r--r--data/ui/DropDown.ui29
-rw-r--r--data/ui/EmptyView.ui71
-rw-r--r--data/ui/FilterView.ui15
-rw-r--r--data/ui/HeaderBar.ui158
-rw-r--r--data/ui/LastfmDialog.ui16
-rw-r--r--data/ui/LoadingNotification.ui20
-rw-r--r--data/ui/NotificationsPopup.ui23
-rw-r--r--data/ui/PlayerToolbar.ui145
-rw-r--r--data/ui/PlaylistControls.ui107
-rw-r--r--data/ui/PlaylistDialog.ui143
-rw-r--r--data/ui/PlaylistDialogRow.ui7
-rw-r--r--data/ui/PlaylistNotification.ui39
-rw-r--r--data/ui/PlaylistTile.ui10
-rw-r--r--data/ui/PlaylistsView.ui25
-rw-r--r--data/ui/PlaylistsWidget.ui19
-rw-r--r--data/ui/SearchHeaderBar.ui94
-rw-r--r--data/ui/SearchView.ui341
-rw-r--r--data/ui/SelectionBarMenuButton.ui32
-rw-r--r--data/ui/SelectionToolbar.ui9
-rw-r--r--data/ui/SongListItem.ui72
-rw-r--r--data/ui/SongWidget.ui158
-rw-r--r--data/ui/SongWidgetMenu.ui58
-rw-r--r--data/ui/SongsView.ui124
-rw-r--r--data/ui/TwoLineTip.ui9
-rw-r--r--data/ui/Window.ui71
-rw-r--r--data/ui/help-overlay.ui24
-rw-r--r--data/ui/meson.build24
-rw-r--r--debian/changelog51
-rw-r--r--debian/control27
-rw-r--r--debian/control.in25
-rw-r--r--debian/gbp.conf2
-rw-r--r--debian/patches/meson-Remove-incorrect-i18n.merge_file-argument.patch29
-rw-r--r--debian/patches/series1
-rw-r--r--debian/upstream/metadata6
-rw-r--r--debian/watch4
-rwxr-xr-xgnome-music.in26
-rw-r--r--gnomemusic/about.py258
-rw-r--r--gnomemusic/albumart.py7
-rw-r--r--gnomemusic/application.py64
-rw-r--r--gnomemusic/artcache.py133
-rw-r--r--gnomemusic/artistart.py8
-rw-r--r--gnomemusic/asyncqueue.py61
-rw-r--r--gnomemusic/corealbum.py36
-rw-r--r--gnomemusic/coreartist.py35
-rw-r--r--gnomemusic/coredisc.py59
-rw-r--r--gnomemusic/coregrilo.py37
-rw-r--r--gnomemusic/coremodel.py198
-rw-r--r--gnomemusic/coresong.py12
-rw-r--r--gnomemusic/coverpaintable.py215
-rw-r--r--gnomemusic/defaulticon.py141
-rw-r--r--gnomemusic/embeddedart.py14
-rw-r--r--gnomemusic/fileexistsasync.py2
-rw-r--r--gnomemusic/griloartqueue.py104
-rw-r--r--gnomemusic/grilowrappers/grlsearchwrapper.py8
-rw-r--r--gnomemusic/grilowrappers/grltrackerplaylists.py28
-rw-r--r--gnomemusic/grilowrappers/grltrackerwrapper.py239
-rw-r--r--gnomemusic/mediaartloader.py119
-rw-r--r--gnomemusic/mediakeys.py106
-rw-r--r--gnomemusic/musiclogger.py1
-rw-r--r--gnomemusic/notificationmanager.py30
-rw-r--r--gnomemusic/player.py34
-rw-r--r--gnomemusic/playlisttoast.py75
-rw-r--r--gnomemusic/scrobbler.py86
-rw-r--r--gnomemusic/songart.py4
-rw-r--r--gnomemusic/songliststore.py116
-rw-r--r--gnomemusic/songtoast.py85
-rw-r--r--gnomemusic/storeart.py47
-rw-r--r--gnomemusic/texturecache.py172
-rw-r--r--gnomemusic/trackerwrapper.py50
-rw-r--r--gnomemusic/utils.py52
-rw-r--r--gnomemusic/views/albumsview.py281
-rw-r--r--gnomemusic/views/artistsview.py185
-rw-r--r--gnomemusic/views/emptyview.py12
-rw-r--r--gnomemusic/views/playlistsview.py2
-rw-r--r--gnomemusic/views/searchview.py239
-rw-r--r--gnomemusic/views/songsview.py313
-rw-r--r--gnomemusic/widgets/aboutdialog.py5
-rw-r--r--gnomemusic/widgets/albumcover.py16
-rw-r--r--gnomemusic/widgets/albumwidget.py89
-rw-r--r--gnomemusic/widgets/appmenu.py2
-rw-r--r--gnomemusic/widgets/artistalbumswidget.py63
-rw-r--r--gnomemusic/widgets/artistsearchtile.py26
-rw-r--r--gnomemusic/widgets/artisttile.py45
-rw-r--r--gnomemusic/widgets/artstack.py157
-rw-r--r--gnomemusic/widgets/discbox.py (renamed from gnomemusic/widgets/disclistboxwidget.py)91
-rw-r--r--gnomemusic/widgets/headerbar.py50
-rw-r--r--gnomemusic/widgets/lastfmdialog.py6
-rw-r--r--gnomemusic/widgets/notificationspopup.py252
-rw-r--r--gnomemusic/widgets/playertoolbar.py49
-rw-r--r--gnomemusic/widgets/playlistcontrols.py6
-rw-r--r--gnomemusic/widgets/playlistdialog.py3
-rw-r--r--gnomemusic/widgets/playlistswidget.py22
-rw-r--r--gnomemusic/widgets/searchheaderbar.py31
-rw-r--r--gnomemusic/widgets/smoothscale.py12
-rw-r--r--gnomemusic/widgets/songwidget.py108
-rw-r--r--gnomemusic/widgets/songwidgetmenu.py101
-rw-r--r--gnomemusic/widgets/starhandlerwidget.py143
-rw-r--r--gnomemusic/window.py93
-rw-r--r--gnomemusic/windowplacement.py39
-rw-r--r--help/LINGUAS3
-rw-r--r--help/ca/ca.po44
-rw-r--r--help/da/da.po21
-rw-r--r--help/fr/fr.po118
-rw-r--r--help/hr/hr.po66
-rw-r--r--help/nl/nl.po93
-rw-r--r--help/ru/ru.po459
-rw-r--r--help/sv/sv.po12
-rw-r--r--help/tr/tr.po456
-rw-r--r--help/zh_CN/zh_CN.po418
-rw-r--r--meson.build49
-rwxr-xr-xmeson_post_conf.py12
-rwxr-xr-xmeson_post_install.py21
-rw-r--r--org.gnome.Music.json32
-rw-r--r--po/LINGUAS2
-rw-r--r--po/POTFILES.in11
-rw-r--r--po/POTFILES.skip1
-rw-r--r--po/ab.po4683
-rw-r--r--po/be.po410
-rw-r--r--po/bg.po838
-rw-r--r--po/ca.po344
-rw-r--r--po/cs.po326
-rw-r--r--po/da.po403
-rw-r--r--po/de.po424
-rw-r--r--po/el.po406
-rw-r--r--po/en_GB.po439
-rw-r--r--po/es.po404
-rw-r--r--po/eu.po378
-rw-r--r--po/fa.po408
-rw-r--r--po/fi.po335
-rw-r--r--po/fr.po400
-rw-r--r--po/fur.po540
-rw-r--r--po/fy.po1283
-rw-r--r--po/gl.po409
-rw-r--r--po/he.po405
-rw-r--r--po/hr.po386
-rw-r--r--po/hu.po361
-rw-r--r--po/id.po403
-rw-r--r--po/is.po714
-rw-r--r--po/it.po468
-rw-r--r--po/ja.po412
-rw-r--r--po/ka.po576
-rw-r--r--po/kk.po392
-rw-r--r--po/ko.po387
-rw-r--r--po/lt.po441
-rw-r--r--po/lv.po574
-rw-r--r--po/nb.po412
-rw-r--r--po/ne.po814
-rw-r--r--po/nl.po414
-rw-r--r--po/oc.po397
-rw-r--r--po/pa.po681
-rw-r--r--po/pl.po332
-rw-r--r--po/pt.po398
-rw-r--r--po/pt_BR.po327
-rw-r--r--po/ro.po394
-rw-r--r--po/ru.po578
-rw-r--r--po/sk.po383
-rw-r--r--po/sl.po411
-rw-r--r--po/sr.po570
-rw-r--r--po/sv.po405
-rw-r--r--po/tr.po494
-rw-r--r--po/uk.po399
-rw-r--r--po/vi.po243
-rw-r--r--po/zh_CN.po397
-rw-r--r--po/zh_TW.po677
-rw-r--r--subprojects/gfm/gtkfilterlistmodel.c711
-rw-r--r--subprojects/gfm/gtkfilterlistmodel.h81
-rw-r--r--subprojects/gfm/gtkflattenlistmodel.c541
-rw-r--r--subprojects/gfm/gtkflattenlistmodel.h52
-rw-r--r--subprojects/gfm/gtkintl.h15
-rw-r--r--subprojects/gfm/gtkrbtree.c800
-rw-r--r--subprojects/gfm/gtkrbtreeprivate.h75
-rw-r--r--subprojects/gfm/gtkslicelistmodel.c527
-rw-r--r--subprojects/gfm/gtkslicelistmodel.h66
-rw-r--r--subprojects/gfm/gtksortlistmodel.c563
-rw-r--r--subprojects/gfm/gtksortlistmodel.h68
-rw-r--r--subprojects/gfm/meson.build85
-rw-r--r--subprojects/gfm/meson_options.txt6
-rw-r--r--subprojects/shared-modules/CODEOWNERS12
-rw-r--r--subprojects/shared-modules/README.md9
-rw-r--r--subprojects/shared-modules/SDL/SDL_ttf-2.0.11.json3
-rw-r--r--subprojects/shared-modules/SDL/sdl12-compat.json14
-rw-r--r--subprojects/shared-modules/clutter/clutter.json69
-rw-r--r--subprojects/shared-modules/dbus-glib/dbus-glib.json (renamed from subprojects/shared-modules/dbus-glib/dbus-glib-0.110.json)4
-rw-r--r--subprojects/shared-modules/glew/glew.json20
-rw-r--r--subprojects/shared-modules/glu/glu-9.json4
-rw-r--r--subprojects/shared-modules/gtk2/arc-gtk2-theme-Replace-Inkscape-dependency-with-rsvg-convert.patch180
-rw-r--r--subprojects/shared-modules/gtk2/gtk2-common-themes.json250
-rw-r--r--subprojects/shared-modules/gtk2/gtk2-fix-crash-in-show-uri.patch30
-rw-r--r--subprojects/shared-modules/gtk2/gtk2-use-adwaita-theme.patch2
-rw-r--r--subprojects/shared-modules/gtk2/gtk2.json21
-rw-r--r--subprojects/shared-modules/gtk2/murrine-engine-fix-crash.patch12
-rw-r--r--subprojects/shared-modules/gudev/gudev.json12
-rw-r--r--subprojects/shared-modules/gzdoom/description.patch18
-rw-r--r--subprojects/shared-modules/gzdoom/gzdoom.json50
-rw-r--r--subprojects/shared-modules/intltool/intltool-0.51.json4
-rw-r--r--subprojects/shared-modules/intltool/intltool-perl5.26-regex-fixes.patch59
-rw-r--r--subprojects/shared-modules/libappindicator/libappindicator-fix-crash-from-incorrect-signal-emission.patch74
-rw-r--r--subprojects/shared-modules/libappindicator/libappindicator-fix-crash-iterating-icon-themes.patch11
-rw-r--r--subprojects/shared-modules/libappindicator/libappindicator-gtk2-12.10.json13
-rw-r--r--subprojects/shared-modules/libappindicator/libappindicator-gtk3-12.10.json13
-rw-r--r--subprojects/shared-modules/libappindicator/libappindicator-gtk3-introspection-12.10.json13
-rw-r--r--subprojects/shared-modules/libappindicator/libappindicator.json.in13
-rw-r--r--subprojects/shared-modules/libcanberra/0001-gtk-Don-t-assume-all-GdkDisplays-are-GdkX11Displays-.patch123
-rw-r--r--subprojects/shared-modules/libcanberra/libcanberra.json35
-rw-r--r--subprojects/shared-modules/libmad/libmad.json8
-rw-r--r--subprojects/shared-modules/libmad/mad.pc11
-rw-r--r--subprojects/shared-modules/libsecret/libsecret.json8
-rw-r--r--subprojects/shared-modules/libusb/libusb.json19
-rw-r--r--subprojects/shared-modules/linux-audio/dssi.json29
-rw-r--r--subprojects/shared-modules/linux-audio/fftw3f-static.json44
-rw-r--r--subprojects/shared-modules/linux-audio/fftw3f.json41
-rw-r--r--subprojects/shared-modules/linux-audio/fluidsynth2-static.json27
-rw-r--r--subprojects/shared-modules/linux-audio/fluidsynth2.json21
-rw-r--r--subprojects/shared-modules/linux-audio/jack2.json23
-rw-r--r--subprojects/shared-modules/linux-audio/ladspa.json17
-rw-r--r--subprojects/shared-modules/linux-audio/lash.json41
-rw-r--r--subprojects/shared-modules/linux-audio/libinstpatch.json17
-rw-r--r--subprojects/shared-modules/linux-audio/liblo-static.json25
-rw-r--r--subprojects/shared-modules/linux-audio/liblo.json17
-rw-r--r--subprojects/shared-modules/linux-audio/lilv.json100
-rw-r--r--subprojects/shared-modules/linux-audio/lrdf.json50
-rw-r--r--subprojects/shared-modules/linux-audio/lv2.json26
-rw-r--r--subprojects/shared-modules/linux-audio/patches/lash-0.5.3-no-static-lib.patch10
-rw-r--r--subprojects/shared-modules/linux-audio/patches/lash-configure.patch11
-rw-r--r--subprojects/shared-modules/linux-audio/patches/lash-gcc47.patch11
-rw-r--r--subprojects/shared-modules/linux-audio/patches/lash-linking.patch90
-rw-r--r--subprojects/shared-modules/linux-audio/patches/stk-install.sh54
-rw-r--r--subprojects/shared-modules/linux-audio/stk.json28
-rw-r--r--subprojects/shared-modules/lua5.1/lua-5.1.5-so.patch43
-rw-r--r--subprojects/shared-modules/lua5.1/lua-5.1.5.json38
-rw-r--r--subprojects/shared-modules/lua5.3/lua-5.3.0-autotoolize.patch192
-rw-r--r--subprojects/shared-modules/lua5.3/lua-5.3.0-configure-compat-module.patch35
-rw-r--r--subprojects/shared-modules/lua5.3/lua-5.3.0-idsize.patch12
-rw-r--r--subprojects/shared-modules/lua5.3/lua-5.3.5.json42
-rw-r--r--subprojects/shared-modules/lua5.3/lua.pc.in8
-rw-r--r--subprojects/shared-modules/lua5.3/makefile-add-liblua.so-rule.patch47
-rw-r--r--subprojects/shared-modules/lua5.4/lua-5.4.json44
-rw-r--r--subprojects/shared-modules/lua5.4/lua.pc.in8
-rw-r--r--subprojects/shared-modules/lua5.4/makefile-add-liblua.so-rule.patch42
-rw-r--r--subprojects/shared-modules/mac/mac.json19
-rw-r--r--subprojects/shared-modules/openjpeg/openjpeg.json25
-rw-r--r--subprojects/shared-modules/physfs/physfs.json18
-rw-r--r--subprojects/shared-modules/pygame/pygame-1.9.6.json (renamed from subprojects/shared-modules/pygame/pygame-1.9.4.json)8
-rw-r--r--subprojects/shared-modules/pygtk/pygtk.json107
-rw-r--r--subprojects/shared-modules/pygtk/pygtk.patch39
-rw-r--r--subprojects/shared-modules/python2.7/python-2.7.json4
-rw-r--r--subprojects/shared-modules/qt4/fixgcc11.patch11
-rw-r--r--subprojects/shared-modules/qt4/fixgcc9.patch31
-rw-r--r--subprojects/shared-modules/qt4/qt4-4.8.7-minimal.json8
-rw-r--r--subprojects/shared-modules/smpeg/smpeg-0.4.5.json6
-rw-r--r--subprojects/shared-modules/vorbisgain/0001-temp_files.patch75
-rw-r--r--subprojects/shared-modules/vorbisgain/0002-errno.patch33
-rw-r--r--subprojects/shared-modules/vorbisgain/0003-manpage.patch248
-rw-r--r--subprojects/shared-modules/vorbisgain/0004-vorbisgain_mtime.patch183
-rw-r--r--subprojects/shared-modules/vorbisgain/0005-double_fclose.patch21
-rw-r--r--subprojects/shared-modules/vorbisgain/0006-manpage_hyphens.patch56
-rw-r--r--subprojects/shared-modules/vorbisgain/0007-recursively_spelling.patch14
-rw-r--r--subprojects/shared-modules/vorbisgain/0008-manpage_recursion_mistake.patch23
-rw-r--r--subprojects/shared-modules/vorbisgain/0009-hardening.patch13
-rw-r--r--subprojects/shared-modules/vorbisgain/0010-fclose.patch13
-rw-r--r--subprojects/shared-modules/vorbisgain/README.md23
-rw-r--r--subprojects/shared-modules/vorbisgain/vorbisgain_0.37-2.json29
293 files changed, 25141 insertions, 19205 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..ff4b7f4c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,86 @@
+*~
+builddir/
+/*.bak
+/*.lo
+/*.o
+/*.orig
+/*.rej
+/*.tab.c
+/*~
+/.*.sw[nop]
+/.deps
+/.dirstamp
+/.gitignore
+/.libs
+/.mypy_cache
+/AUTHORS
+/ABOUT-NLS
+/GPATH
+/GRTAGS
+/GSYMS
+/GTAGS
+/ID
+/INSTALL
+/Makefile
+/Makefile.in
+/TAGS
+/_build
+/_libs
+/aclocal.m4
+/autom4te.cache
+/autoscan.log
+/compile
+/config.cache
+/config.guess
+/config.h
+/config.h.in
+/config.log
+/config.lt
+/config.rpath
+/config.status
+/config.status.lineno
+/config.sub
+/configure
+/configure.lineno
+/configure.scan
+/depcomp
+/install-sh
+/libtool
+/ltmain.sh
+/m4
+/missing
+/mkinstalldirs
+/po/*.gmo
+/po/*.mo
+/po/Makefile
+/po/Makefile.in
+/po/Makefile.in.in
+/po/POTFILES
+/po/gnome-music.pot
+/po/stamp-it
+/so_locations
+/stamp-h1
+/tags
+/gnome-music/*.pyc
+/gnome-music/Makefile
+/gnome-music/Makefile.in
+/py-compile
+*.tar.xz
+*.desktop
+*.gresource
+*.compiled
+data/Makefile
+data/Makefile.in
+*.patch
+*.pyc
+Makefile
+gnome-music
+*.valid
+/gnomemusic/Makefile.in
+/data/AboutDialog.ui
+/data/gnome-music.appdata.xml
+/help/Makefile.in
+/help/**/*.page
+/help/**/*.mo
+/help/**/*.stamp
+/help/**/legal.xml
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index fdbf4bad..5a22033a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -25,12 +25,14 @@ nightly:
flake8:
stage: check
+ image: registry.fedoraproject.org/fedora:latest
script:
- dnf install -y python3-flake8
- flake8 --ignore E402,W503 --show-source gnomemusic/
mypy:
stage: check
+ image: registry.fedoraproject.org/fedora:latest
script:
- dnf install -y python3-mypy
- mypy --ignore-missing-imports --disallow-incomplete-defs gnomemusic
diff --git a/.gitlab/issue_templates/default.md b/.gitlab/issue_templates/default.md
new file mode 100644
index 00000000..e312ce03
--- /dev/null
+++ b/.gitlab/issue_templates/default.md
@@ -0,0 +1,40 @@
+## Description
+
+[Description of the bug or feature]
+
+
+## Steps To Reproduce
+
+- Step 1
+- Step 2
+- Step 3
+
+
+## Expected Behaviour
+
+[What you expected to happen]
+
+
+## Actual Behaviour
+
+[What actually happened]
+
+
+## Specifications
+
+Gnome Music Version:
+
+Desktop Environment:
+
+Wayland or Xorg:
+
+Flatpak or Native:
+
+Tracker Version:
+
+Grilo Version:
+
+
+## Additional Information
+
+
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 00000000..6f6409cc
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "subprojects/shared-modules"]
+ path = subprojects/shared-modules
+ url = https://github.com/flathub/shared-modules.git
diff --git a/NEWS b/NEWS
index bb1177ab..72beeed6 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,230 @@
+Overview of changes in 45.0
+===========================
+
+• Minor quality of life improvements
+
+Thanks to our contributors this release:
+ Carlos Garnacho
+ Jean Felder
+ Harold Knowlden
+ Marinus Schraal
+
+Updated or added translations:
+ Abkhazian
+ Romanian
+ Italian
+ Turkish
+ British English
+ French
+ Hungarian
+ German
+ Hebrew
+ Ukrainian
+ Greek
+ Slovenian
+ Belarusian
+ Russian
+ Portuguese
+ Chinese (China)
+ Polish
+ Finnish
+ Spanish
+ Indonesian
+ Galician
+ Basque
+ Occitan
+ Georgian
+ Kazakh
+ Swedish
+ Czech
+ Punjabi
+ Korean
+ Dutch
+ Lithuanian
+ Danish
+ Catalan
+ Latvian
+
+
+Overview of changes in 44.0
+===========================
+
+• Update appdata for the 44.0 release
+
+Overview of changes in 44.rc
+============================
+
+• Shortcuts menu cleanups
+• Misc focus fixes in album widgets
+• Decrease memory usage in SongsView
+
+Bugs Fixed:
+ SongView popup is a memory hog (#495)
+ Shuffle on/off mixup (#543)
+ Default template for issues (#525)
+
+Thanks to our contributors this release:
+ Andre Klapper
+ Automeris Naranja
+ Ezike Ebuka
+ Jean Felder
+ Marinus Schraal
+ Sabri Ãœnal
+
+
+Overview of changes in 44.beta
+==============================
+
+• Make shuffle shuffle again
+• Fix time display in RTL languages
+• Port to soup 3
+• Port about to AdwAboutWindow
+• No longer mismatch art on scrolling
+• Fix async queue block on fresh art retrieval
+• Use new GNOME Settings app id in flatpak
+• Fix welcome image rendering
+
+Bugs fixed:
+ Rework ArtStack to handle cycling widgets better (#500)
+ Shuffle broken in Music 42 (#515)
+ Time is reversed in RTL (#509)
+
+Thanks to our contributors this release:
+ Carlos Garnacho
+ Christopher Davis
+ Georges Basile Stavracas Neto
+ Jean Felder
+ Marinus Schraal
+ Yosef Or Boczko
+
+Updated or added translations:
+ Abkhazian
+ Basque
+ Belarusian
+ Brazilian Portuguese
+ Bulgarian
+ Catalan
+ Chinese (China)
+ Chinese (Taiwan)
+ Croatian
+ Czech
+ Danish
+ Dutch
+ Finnish
+ French
+ Friulian
+ Galician
+ Georgian
+ German
+ Greek
+ Hebrew
+ Hungarian
+ Icelandic
+ Indonesian
+ Kazakh
+ Korean
+ Latvian
+ Lithuanian
+ Nepali
+ Occitan
+ Persian
+ Polish
+ Portuguese
+ Russian
+ Serbian
+ Slovak
+ Slovenian
+ Spanish
+ Swedish
+ Turkish
+ Ukrainian
+
+
+Overview of changes in 42.0
+===========================
+
+• GTK-4 regression fixes
+
+Bugs fixed:
+ App title untranslated (#510)
+
+Thanks to our contributors this release:
+ Fabian Bornschein
+ Georges Basile Stavracas Neto
+ Jean Felder
+ Marinus Schraal
+ Sophie Herold
+
+Updated translations:
+ Ukrainian
+ Portuguese
+ Brazilian Portuguese
+ Indonesian
+ Catalan
+ Russian
+ Chinese (China)
+ Lithuanian
+ Hebrew
+ Czech
+ Persian
+ French
+ Turkish
+ Finnish
+ Spanish
+ Galician
+ Slovak
+ Slovenian
+ Polish
+ Basque
+ Swedish
+ Korean
+ Croatian
+ Danish
+ Bulgarian
+ Hungarian
+ Kazakh
+ Japanese
+ Serbian
+ German
+ Occitan
+ Norwegian Bokmål
+ Italian
+
+
+Overview of changes in 42.beta
+==============================
+
+• Port to GTK-4
+• Dark mode switching
+
+Bugs fixed:
+ Fix slow startup (!923)
+
+Thanks to our contributors this release:
+ Christopher Davis
+ Jakub Steiner
+ Jean Felder
+ Koushik Sahu
+ Marinus Schraal
+ Michael Catanzaro
+ Sam Hewitt
+ Sophie Herold
+
+Updated translations:
+ Danish
+ Icelandic
+ Swedish
+ Russian
+ Indonesian
+ Catalan
+ Friulian
+ Latvian
+ Frisian
+ Bulgarian
+ Serbian
+ Vietnamese
+
+
Overview of changes in 41.0
===========================
diff --git a/README.md b/README.md
index d06c9400..6abac74c 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,10 @@
-Music is the new GNOME music playing application.
+Music is the GNOME music playing application.
# Where can I find more?
-Music has a wiki page at
-https://wiki.gnome.org/Apps/Music.
+Music has a wiki page at https://wiki.gnome.org/Apps/Music.
-You can join the developers on IRC: [#gnome-music](irc://irc.gnome.org/gnome-music) on [GIMPNet](https://wiki.gnome.org/Community/GettingInTouch/IRC).
+You can join the developers on IRC: [#gnome-music](irc://irc.libera.chat/gnome-music) on [Libera Chat](https://wiki.gnome.org/GettingInTouch/IRC).
# Join the development
@@ -139,15 +138,6 @@ def selected(self, value: bool) -> None:
### PyGObject specifics
-#### Treemodel
-
-Use PyGObject shorthands for manipulating `GtkTreeModel` & `GtkListStore`:
-
-```python
-model[iter][0] = "artist"
-artist, title = model[iter][1, 4]
-```
-
#### Properties
Most objects in Music are derived from GObject and have properties. Use [PyGObject properties](https://pygobject.readthedocs.io/en/latest/guide/api/properties.html) through decorator usage if you add properties to your code.
@@ -184,9 +174,7 @@ Note that GObject multi-word properties are separated by `-` as in `'selection-m
#### Templates
-Recent PyGObject (3.29.1 and up) allows template usage and Music is [starting to convert](https://gitlab.gnome.org/GNOME/gnome-music/issues/183) to using this to build the user interface. More information can be found in the PyGObject source and [examples](https://gitlab.gnome.org/GNOME/gnome-music/blob/master/gnomemusic/widgets/songwidget.py) in the Music code.
-
-The basic usage in Python is as follows, with the `widget.ui` file being a regular GTK template:
+Music uses ui templates extensively for building the user interface. The basic usage in Python is as follows, with the `widget.ui` file being a regular GTK template:
```python
@Gtk.Template(resource_path="/org/gnome/Music/widget.ui")
diff --git a/data/icons/music-artist-symbolic.svg b/data/icons/music-artist-symbolic.svg
new file mode 100644
index 00000000..e42973f1
--- /dev/null
+++ b/data/icons/music-artist-symbolic.svg
@@ -0,0 +1 @@
+<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path d="M8 2a3 3 0 1 0 0 6 3 3 0 0 0 0-6zM6.5 9A4.49 4.49 0 0 0 2 13.5v.5c0 1 1 1 1 1h6.188A2.935 2.935 0 0 1 9 14c0-1.645 1.355-3 3-3V9.756A4.485 4.485 0 0 0 9.5 9h-3zM13 9v3.27a2 2 0 0 0-1-.27 2 2 0 0 0-2 2 2 2 0 0 0 2 2 2 2 0 0 0 2-2v-3h2V9h-3z" style="fill:#3d3846"/></svg> \ No newline at end of file
diff --git a/data/icons/music-playlist-symbolic.svg b/data/icons/music-playlist-symbolic.svg
new file mode 100644
index 00000000..7f80d5fb
--- /dev/null
+++ b/data/icons/music-playlist-symbolic.svg
@@ -0,0 +1 @@
+<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path style="fill:#241f31" d="M3 3v2h10V3H3zm0 4v2h7.979V7H3zm9 0v3.27a2 2 0 0 0-1-.27 2 2 0 0 0-2 2 2 2 0 0 0 2 2 2 2 0 0 0 2-2V9h2V7h-3zm-9 4v2h5.01L8 11H3z"/></svg> \ No newline at end of file
diff --git a/data/icons/playlist2-symbolic.svg b/data/icons/playlist2-symbolic.svg
deleted file mode 100644
index ed1ea2eb..00000000
--- a/data/icons/playlist2-symbolic.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <g fill="#2e3436">
- <path d="M3 3v2h10V3zm0 4v2h7.979V7zm0 4v2h5.01L8 11z"/>
- <path d="M12 7v3.27a2 2 0 00-1-.27 2 2 0 00-2 2 2 2 0 002 2 2 2 0 002-2V9h2V7h-2z"/>
- </g>
-</svg>
diff --git a/data/icons/welcome-music.svg b/data/icons/welcome-music.svg
index 942efb2e..e8c9ed18 100644
--- a/data/icons/welcome-music.svg
+++ b/data/icons/welcome-music.svg
@@ -1 +1,551 @@
-<svg height="600" width="800" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="f"><stop style="stop-color:#bfbebc;stop-opacity:1" offset="0"/><stop style="stop-color:#9f9e9b;stop-opacity:.94509804" offset=".854"/><stop style="stop-color:#b8b7b4;stop-opacity:.93725497" offset="1"/></linearGradient><linearGradient id="i"><stop style="stop-color:#555458;stop-opacity:1" offset="0"/><stop style="stop-color:#77767b;stop-opacity:1" offset="1"/></linearGradient><linearGradient id="k"><stop style="stop-color:#5e5c64;stop-opacity:1" offset="0"/><stop style="stop-color:#737178;stop-opacity:1" offset=".033"/><stop style="stop-color:#64626a;stop-opacity:1" offset=".103"/><stop style="stop-color:#5e5c64;stop-opacity:1" offset=".613"/><stop style="stop-color:#5d5a63;stop-opacity:1" offset=".729"/><stop style="stop-color:#4a494f;stop-opacity:1" offset="1"/></linearGradient><linearGradient id="j"><stop style="stop-color:#5e5c64;stop-opacity:1" offset="0"/><stop style="stop-color:#65636a;stop-opacity:1" offset=".033"/><stop style="stop-color:#4c4a51;stop-opacity:1" offset=".103"/><stop style="stop-color:#4e4d53;stop-opacity:1" offset=".708"/><stop style="stop-color:#525057;stop-opacity:1" offset=".832"/><stop style="stop-color:#38373c;stop-opacity:1" offset="1"/></linearGradient><linearGradient id="a"><stop style="stop-color:#9d9da1;stop-opacity:1" offset="0"/><stop style="stop-color:#77767b;stop-opacity:.94957983" offset="1"/></linearGradient><linearGradient id="b"><stop offset="0" style="stop-color:#3d3846;stop-opacity:0"/><stop offset="1" style="stop-color:#3d3846;stop-opacity:.25210086"/></linearGradient><linearGradient id="c"><stop style="stop-color:#eae9e7;stop-opacity:1" offset="0"/><stop offset=".649" style="stop-color:#b5b3ad;stop-opacity:1"/><stop style="stop-color:#fcfcfc;stop-opacity:1" offset="1"/></linearGradient><linearGradient id="d"><stop style="stop-color:#cacac9;stop-opacity:1" offset="0"/><stop offset=".311" style="stop-color:#b0aeab;stop-opacity:.94117647"/><stop style="stop-color:#6c6b66;stop-opacity:.94901961" offset=".688"/><stop style="stop-color:#d6d6d4;stop-opacity:.96638656" offset="1"/></linearGradient><linearGradient id="e"><stop style="stop-color:#fff;stop-opacity:1" offset="0"/><stop style="stop-color:#fff;stop-opacity:0" offset="1"/></linearGradient><linearGradient id="g"><stop style="stop-color:#deddda;stop-opacity:1" offset="0"/><stop style="stop-color:#959592;stop-opacity:1" offset=".56"/><stop style="stop-color:#1b1b19;stop-opacity:1" offset=".8"/><stop style="stop-color:#3f3d38;stop-opacity:1" offset="1"/></linearGradient><linearGradient xlink:href="#h" id="l" x1="59.78" y1="600.527" x2="1130.727" y2="600.527" gradientUnits="userSpaceOnUse"/><linearGradient id="h"><stop style="stop-color:#2ec27e;stop-opacity:1" offset="0"/><stop style="stop-color:#62a0ea;stop-opacity:1" offset="1"/></linearGradient><linearGradient xlink:href="#j" id="o" gradientUnits="userSpaceOnUse" gradientTransform="translate(230 179)" x1="605.074" y1="363.148" x2="689.59" y2="363.148"/><linearGradient xlink:href="#k" id="p" gradientUnits="userSpaceOnUse" gradientTransform="translate(230 179)" x1="604.913" y1="412.037" x2="695.556" y2="412.037"/><radialGradient xlink:href="#f" id="q" gradientUnits="userSpaceOnUse" gradientTransform="translate(103.628 87.555) scale(1.23242)" cx="543.718" cy="393.443" fx="543.718" fy="393.443" r="50"/><radialGradient xlink:href="#i" id="r" cx="545" cy="387.793" fx="545" fy="387.793" r="29.997" gradientUnits="userSpaceOnUse" gradientTransform="matrix(2.18529 0 0 2.18529 -415.981 -290.826)"/><radialGradient xlink:href="#f" id="s" cx="543.718" cy="393.443" fx="543.718" fy="393.443" r="50" gradientUnits="userSpaceOnUse" gradientTransform="translate(103.628 87.555) scale(1.23242)"/><clipPath clipPathUnits="userSpaceOnUse" id="m"><rect ry="32" rx="32" y="-116" x="32.5" height="320" width="447" style="opacity:1;fill:#fb8c14;fill-opacity:1;stroke:none;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4,2;stroke-dashoffset:0;stroke-opacity:1"/></clipPath><clipPath clipPathUnits="userSpaceOnUse" id="n"><path style="opacity:1;fill:#949390;fill-opacity:1;stroke:none;stroke-width:16;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:11.2;stroke-opacity:1" d="M208 4h96v48h-96z"/></clipPath></defs><g transform="matrix(.66859 0 0 .66859 18.272 -86.219)" style="display:inline"><path style="display:inline;fill:url(#l);fill-opacity:1;stroke:none;stroke-width:2.68319;stroke-linejoin:round;stop-color:#000" d="M830.003 275.638v107.317a13.27 13.27 135 0 1-13.27 13.27h-.291a13.27 13.27 45 0 1-13.271-13.27 26.977 26.977 45 0 0-26.977-26.977 26.832 26.832 134.69 0 0-26.687 26.977v123.14a13.27 13.27 135 0 1-13.27 13.27h-.291a13.27 13.27 45 0 1-13.27-13.27v-17.44a24 24 45 0 0-24-24h-5.664a24 24 135 0 0-24 24v23.093a13.27 13.27 135 0 1-13.271 13.27h-.29a13.27 13.27 45 0 1-13.271-13.27v-51.275a24 24 45 0 0-24-24h-5.664a24 24 135 0 0-24 24v2.978a13.27 13.27 135 0 1-13.27 13.27h-.291a13.27 13.27 45 0 1-13.271-13.27V342.707a26.977 26.977 45 0 0-26.977-26.977 26.832 26.832 134.69 0 0-26.687 26.977v67.08a13.27 13.27 135 0 1-13.27 13.27h-.291a13.27 13.27 45 0 1-13.27-13.27 26.977 26.977 45 0 0-26.978-26.977 26.832 26.832 134.69 0 0-26.686 26.977 13.27 13.27 135 0 1-13.271 13.27h-.29a13.27 13.27 45 0 1-13.271-13.27v-134.16a26.977 26.977 45 0 0-26.978-26.977 26.832 26.832 134.69 0 0-26.686 26.977v93.912a13.27 13.27 135 0 1-13.27 13.27h-.291a13.27 13.27 45 0 1-13.271-13.27 26.977 26.977 45 0 0-26.977-26.977 26.832 26.832 134.69 0 0-26.687 26.977v80.496a13.27 13.27 135 0 1-13.27 13.27h-.291a13.27 13.27 45 0 1-13.27-13.27 26.977 26.977 45 0 0-26.978-26.978 26.832 26.832 134.69 0 0-26.686 26.978v53.663a13.27 13.27 135 0 1-13.271 13.271h-.29a13.27 13.27 45 0 1-13.271-13.27 26.977 26.977 45 0 0-26.978-26.978 26.832 26.832 134.69 0 0-26.686 26.977 22.861 22.861 137.566 0 1-23.999 21.94l-27.696-.318a23.726 23.726 135.328 0 0-23.998 23.725 24.049 24.049 45.036 0 0 24 24.03l27.693.078a24.068 24.068 45.08 0 1 24 24.068v.071a26.977 26.977 45 0 0 26.977 26.977 26.832 26.832 134.69 0 0 26.687-26.977 13.257 13.257 135.059 0 1 13.27-13.243h.29a13.27 13.27 45 0 1 13.272 13.27v53.664a26.977 26.977 45 0 0 26.977 26.977 26.832 26.832 134.69 0 0 26.686-26.977 13.27 13.27 135 0 1 13.271-13.27h.29a13.27 13.27 45 0 1 13.271 13.27v80.496a26.977 26.977 45 0 0 26.977 26.977 26.832 26.832 134.69 0 0 26.687-26.977 13.27 13.27 135 0 1 13.27-13.27h.291a13.27 13.27 45 0 1 13.27 13.27v93.911a26.977 26.977 45 0 0 26.978 26.978 26.832 26.832 134.69 0 0 26.687-26.978V691.231a13.27 13.27 135 0 1 13.27-13.27h.29a13.27 13.27 45 0 1 13.272 13.27 26.977 26.977 45 0 0 26.977 26.977 26.832 26.832 134.69 0 0 26.686-26.977 13.27 13.27 135 0 1 13.271-13.27h.29a13.27 13.27 45 0 1 13.271 13.27v67.08a26.977 26.977 45 0 0 26.977 26.977 26.832 26.832 134.69 0 0 26.687-26.977V637.567a13.27 13.27 135 0 1 13.27-13.27h.291a13.27 13.27 45 0 1 13.27 13.27 26.977 26.977 45 0 0 26.978 26.977 26.832 26.832 134.69 0 0 26.687-26.977V589.27A13.27 13.27 135 0 1 655.45 576h.29a13.27 13.27 45 0 1 13.272 13.27 26.977 26.977 45 0 0 26.977 26.977 26.832 26.832 134.69 0 0 26.686-26.977A13.27 13.27 135 0 1 735.946 576h.29a13.27 13.27 45 0 1 13.271 13.27v128.793a26.977 26.977 45 0 0 26.977 26.977 26.832 26.832 134.69 0 0 26.687-26.977 13.27 13.27 135 0 1 13.27-13.27h.291a13.27 13.27 45 0 1 13.27 13.27v81.891a26.977 26.977 45 0 0 26.978 26.978 26.832 26.832 134.69 0 0 26.687-26.978v-93.911a13.27 13.27 135 0 1 13.27-13.27h.29a13.27 13.27 45 0 1 13.272 13.27 26.977 26.977 45 0 0 26.977 26.977 26.832 26.832 134.69 0 0 26.686-26.977V597.319a13.27 13.27 135 0 1 13.271-13.27h.29a13.27 13.27 45 0 1 13.271 13.27 26.977 26.977 45 0 0 26.977 26.978 26.832 26.832 134.69 0 0 26.687-26.978v-.274a23.935 23.935 135.077 0 1 24-23.935l17.247.047a23.935 23.935 135.077 0 0 24-23.936 23.62 23.62 44.117 0 0-24-23.271l-17.247.026a23.963 23.963 44.956 0 1-24-23.963 26.148 26.148 43.153 0 0-26.977-25.292 26.832 26.832 134.69 0 0-26.687 26.977 13.27 13.27 135 0 1-13.27 13.271h-.291a13.27 13.27 45 0 1-13.27-13.27v-134.15a26.977 26.977 45 0 0-26.978-26.977A26.832 26.832 134.69 0 0 910.5 369.55a13.27 13.27 135 0 1-13.271 13.271h-.29a13.27 13.27 45 0 1-13.271-13.27v-93.912a26.977 26.977 45 0 0-26.978-26.977 26.832 26.832 134.69 0 0-26.686 26.977z"/><g style="display:inline;enable-background:new" transform="matrix(-1.76362 0 0 -1.76362 -682.748 759.447)"><rect ry="8" rx="8" y="217.775" x="-686.787" height="80" width="111.75" style="display:inline;opacity:1;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1,.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"/><rect ry="4" rx="4" y="225.775" x="-678.912" height="56" width="96" style="display:inline;opacity:1;fill:#ed333b;fill-opacity:1;stroke:none;stroke-width:.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1,.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"/><rect ry="7.988" rx="7.988" y="245.775" x="-658.9" height="15.975" width="55.975" style="display:inline;opacity:1;fill:#d5d3cf;fill-opacity:1;stroke:#d5d3cf;stroke-width:8;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:11.2;stroke-opacity:1;enable-background:new"/><circle r="7.988" cy="253.762" cx="-650.912" style="display:inline;opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1,.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"/><circle style="display:inline;opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1,.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" cx="-610.912" cy="253.762" r="7.988"/><g transform="matrix(.25 0 0 .25 -694.912 246.775)" style="display:inline;fill:#949390;fill-opacity:1;stroke:#949390;stroke-opacity:1;enable-background:new" clip-path="url(#m)"><path style="fill:#949390;fill-opacity:1;stroke:#949390;stroke-width:32;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" d="M128 236h256l-32-96H160z"/></g><g transform="matrix(.25 0 0 .25 -694.912 246.775)" style="display:inline;fill:#424048;fill-opacity:1;enable-background:new"><circle style="opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:32;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4,2;stroke-dashoffset:0;stroke-opacity:1" cx="56" cy="-92" r="8"/><circle r="8" cy="164" cx="56" style="opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:32;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4,2;stroke-dashoffset:0;stroke-opacity:1"/><circle r="8" cy="-92" cx="456" style="opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:32;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4,2;stroke-dashoffset:0;stroke-opacity:1"/><circle style="opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:32;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4,2;stroke-dashoffset:0;stroke-opacity:1" cx="456" cy="164" r="8"/></g><path style="display:inline;opacity:1;fill:#949390;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:11.2;stroke-opacity:1;enable-background:new" d="M-636.912 247.775h12v11.975h-12z"/><path style="display:inline;opacity:1;fill:#fff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:11.2;stroke-opacity:1;enable-background:new" d="M-678.912 231.775h96v4h-96zM-678.912 271.775h96v4h-96z"/><path d="M-686.787 285.775v4c0 4.432 3.568 8 8 8h95.75c4.432 0 8-3.568 8-8v-4c0 4.432-3.568 8-8 8h-95.75c-4.432 0-8-3.568-8-8z" style="display:inline;opacity:1;fill:#f3f7fb;fill-opacity:1;stroke:none;stroke-width:.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1,.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"/></g><g style="display:inline;enable-background:new" transform="matrix(0 1.76362 -1.76362 0 764.467 1146.99)"><rect ry="8" rx="8" y="273.775" x="-424.787" height="24" width="112" style="display:inline;opacity:1;fill:#1a5fb4;fill-opacity:1;stroke:none;stroke-width:.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1,.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"/><rect style="display:inline;opacity:1;fill:#62a0ea;fill-opacity:1;stroke:none;stroke-width:.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1,.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" width="112" height="76" x="-424.787" y="217.775" rx="8" ry="8"/><path style="display:inline;fill:#3584e4;fill-opacity:1;stroke:#3584e4;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;enable-background:new" d="M-396.787 291.775h56l-4-10h-48z"/><g transform="translate(-432.787 21.775)" style="display:inline;enable-background:new"><circle r="2" cy="202" cx="14" style="display:inline;opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1,.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"/><circle style="display:inline;opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1,.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" cx="14" cy="266" r="2"/><circle style="display:inline;opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1,.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" cx="114" cy="202" r="2"/><circle r="2" cy="266" cx="114" style="display:inline;opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1,.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"/></g><path style="display:inline;opacity:1;fill:#1a5fb4;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" d="M-400.787 291.775h64v6h-64z"/><path style="display:inline;opacity:1;fill:#f6f5f4;fill-opacity:1;stroke:none;stroke-width:.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1,.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" d="M-408.787 225.775h80l8 8v44h-96v-44z"/><g transform="translate(-432.787 21.775)" style="display:inline;enable-background:new"><path style="display:inline;opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" d="M16 218h96v28H16z"/><circle r="6" cy="232" cx="40" style="display:inline;opacity:1;fill:#f6f5f4;fill-opacity:1;stroke:none;stroke-width:.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1,.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"/><circle style="display:inline;opacity:1;fill:#f6f5f4;fill-opacity:1;stroke:none;stroke-width:.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1,.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" cx="88" cy="232" r="6"/><path style="display:inline;opacity:1;fill:#949390;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:11.2;stroke-opacity:1;enable-background:new" d="M52 226h24v12H52z"/><path d="M272 28c0 61.856-50.144 112-112 112S48 89.856 48 28 98.144-84 160-84 272-33.856 272 28z" clip-path="url(#n)" style="display:inline;opacity:.5;fill:#424048;fill-opacity:1;stroke:none;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4,2;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" transform="matrix(.25 0 0 .25 0 225)"/></g></g><g transform="matrix(2.52414 0 0 2.52414 -1317.014 -691.54)"><ellipse style="display:inline;fill:#494949;fill-opacity:1;stroke:none;stroke-width:2.00885;stroke-linejoin:round;stop-color:#000" cx="775" cy="519.485" rx="50" ry="50.444"/><path style="display:inline;fill:#3f3f3f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linejoin:round;stop-color:#000" d="M810 508h55v30h-55z"/><circle style="display:inline;fill:#3f3f3f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linejoin:round;stop-color:#000" cx="775" cy="521.929" r="50"/><circle style="display:inline;fill:#373737;fill-opacity:1;stroke:none;stroke-width:1.19986;stroke-linejoin:round;stop-color:#000" cx="775" cy="521.797" r="29.997"/><path style="display:inline;fill:#3f3f3f;fill-opacity:1;stroke:none;stroke-width:1.74773;stroke-linejoin:round;stop-color:#000" d="M823 568h42v30h-42c3.187-9.984 2.097-19.99 0-30z"/><rect style="display:inline;fill:#231e30;fill-opacity:1;stroke:none;stroke-width:2.08893;stroke-linejoin:round;stop-color:#000" width="55" height="60" x="835" y="553" rx="7.428" ry="8.103"/><path style="display:inline;fill:url(#o);fill-opacity:1;stroke:none;stroke-width:1.90693;stroke-linejoin:round;stop-color:#000" d="M842.427 498c-4.115 0-7.427 3-7.427 3v40.248c0 .307.03.605.074.9A5 5 0 0 0 840 548H896.28A23.644 23.644 0 0 1 920 571.719V578a5 5 0 0 0 10 0v-6.281c0-7.1-2.223-13.699-6-19.145V522l-19-18h-15.05c-.409-3.384-3.543-6-7.378-6z"/><path style="font-variation-settings:normal;display:inline;vector-effect:none;fill:url(#p);fill-opacity:1;stroke:none;stroke-width:1.90693;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000" d="M930 528c0 19.8-14.91 28.063-30 28h-65v52a5 5 0 0 0 5 5h60c14.912 0 30-14.913 30-30v-5z"/><path style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#6d6b75;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000" d="M840 501h56.281A28.718 28.718 45 0 1 925 529.718 27.527 27.527 137.537 0 1 896.28 556H840"/><path style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#777;fill-opacity:1;stroke:none;stroke-width:1.90693;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000" d="M823 508h12v1h-12z"/><path style="display:inline;fill:none;stroke:#c061cb;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" d="M805 409h90.145A19.855 19.855 45 0 1 915 428.855 17.658 17.658 142.664 0 1 895.145 444H694.249a17.418 17.418 135 0 0-17.418 17.418v110.164A17.418 17.418 45 0 0 694.249 589h51.463"/><rect style="display:inline;fill:#613583;stroke:none;stroke-width:2;stroke-linejoin:round;stop-color:#000" width="28" height="10" x="788" y="404" rx="5" ry="5"/><rect style="display:inline;fill:#deddda;stroke:none;stroke-width:2;stroke-linejoin:round;stop-color:#000" width="18" height="4" x="775" y="407" rx="2" ry="2"/><circle style="display:inline;fill:#deddda;stroke:none;stroke-width:1.39585;stroke-linejoin:round;stop-color:#000" cx="778.338" cy="409" r="3.49"/><path style="display:inline;fill:#dadad9;fill-opacity:1;stroke:none;stroke-width:.761396px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m776.41 406.07-1.714.888a2.313 2.313 89.617 0 0 .028 4.12l1.755.881a.355.355 147.997 0 0 .514-.321l-.059-5.254a.359.359 30.978 0 0-.523-.314z"/><path style="display:inline;fill:#241f31;fill-opacity:1;stroke:none;stroke-width:2;stroke-linejoin:round;stop-color:#000" d="M782.95 407a2 2 0 0 0-.478.07 2 2 0 0 1 1.475 1.93 2 2 0 0 1-1.47 1.93 2 2 0 0 0 .523.07 2 2 0 0 0 2-2 2 2 0 0 0-2-2 2 2 0 0 0-.05 0zM786 407a2 2 0 0 0-.479.07 2 2 0 0 1 1.475 1.93 2 2 0 0 1-1.47 1.93 2 2 0 0 0 .523.07 2 2 0 0 0 2-2 2 2 0 0 0-2-2 2 2 0 0 0-.05 0z"/><circle style="display:inline;fill:#5d5d5d;fill-opacity:1;stroke:none;stroke-width:2;stroke-linejoin:round;stop-color:#000" cx="775" cy="576.799" r="50"/><circle style="display:inline;fill:url(#q);fill-opacity:1;stroke:none;stroke-width:2;stroke-linejoin:round;stop-color:#000" cx="775" cy="584.048" r="50"/><circle style="display:inline;fill:url(#r);fill-opacity:1;stroke:none;stroke-width:1.19986;stroke-linejoin:round;stop-color:#000" cx="775" cy="584.048" r="29.997"/><path style="color:#000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000;solid-opacity:1;vector-effect:none;fill:url(#s);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#000" d="M765 549c2.655 11.465 4 23.232 4 35s-1.345 23.535-4 35h20a155.291 155.291 0 0 1-4-35c0-11.768 1.345-23.535 4-35z"/><path style="display:inline;fill:none;fill-opacity:1;stroke:#a6a6a6;stroke-width:1.89499;stroke-linejoin:round;stroke-opacity:1;stop-color:#000" d="M741.5 550.549a47.375 47.375 0 0 1 66.999 0"/><path style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#777;fill-opacity:1;stroke:none;stroke-width:1.90693;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000" d="M823 567h12v1h-12z"/></g><rect style="fill:#949390;fill-opacity:1;stroke:none;stroke-width:56.7699;stroke-linecap:round;stroke-linejoin:round;stop-color:#000" width="13.246" height="3.785" x="373.788" y="236.387" rx="0" ry="0"/><rect style="fill:#949390;fill-opacity:1;stroke:none;stroke-width:111.494;stroke-linecap:round;stroke-linejoin:round;stop-color:#000" width="51.093" height="3.785" x="407.85" y="236.387" rx="0" ry="0"/><rect style="fill:#949390;fill-opacity:1;stroke:none;stroke-width:56.7699;stroke-linecap:round;stroke-linejoin:round;stop-color:#000" width="13.246" height="3.785" x="472.189" y="236.387" rx="0" ry="0"/></g></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ height="600"
+ width="800"
+ version="1.1"
+ id="svg181"
+ sodipodi:docname="welcome-music.svg"
+ inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <sodipodi:namedview
+ id="namedview183"
+ pagecolor="#ffffff"
+ bordercolor="#999999"
+ borderopacity="1"
+ inkscape:pageshadow="0"
+ inkscape:pageopacity="0"
+ inkscape:pagecheckerboard="0"
+ showgrid="false"
+ inkscape:zoom="1"
+ inkscape:cx="284.5"
+ inkscape:cy="485"
+ inkscape:window-width="3840"
+ inkscape:window-height="2091"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg181" />
+ <defs
+ id="defs57">
+ <linearGradient
+ id="d">
+ <stop
+ style="stop-color:#bfbebc;stop-opacity:1"
+ offset="0"
+ id="stop2" />
+ <stop
+ style="stop-color:#9f9e9b;stop-opacity:.94509804"
+ offset=".854"
+ id="stop4" />
+ <stop
+ style="stop-color:#b8b7b4;stop-opacity:.93725497"
+ offset="1"
+ id="stop6" />
+ </linearGradient>
+ <linearGradient
+ id="e">
+ <stop
+ style="stop-color:#555458;stop-opacity:1"
+ offset="0"
+ id="stop9" />
+ <stop
+ style="stop-color:#77767b;stop-opacity:1"
+ offset="1"
+ id="stop11" />
+ </linearGradient>
+ <linearGradient
+ id="c">
+ <stop
+ style="stop-color:#5e5c64;stop-opacity:1"
+ offset="0"
+ id="stop14" />
+ <stop
+ style="stop-color:#737178;stop-opacity:1"
+ offset=".033"
+ id="stop16" />
+ <stop
+ style="stop-color:#64626a;stop-opacity:1"
+ offset=".103"
+ id="stop18" />
+ <stop
+ style="stop-color:#5e5c64;stop-opacity:1"
+ offset=".613"
+ id="stop20" />
+ <stop
+ style="stop-color:#5d5a63;stop-opacity:1"
+ offset=".729"
+ id="stop22" />
+ <stop
+ style="stop-color:#4a494f;stop-opacity:1"
+ offset="1"
+ id="stop24" />
+ </linearGradient>
+ <linearGradient
+ id="b">
+ <stop
+ style="stop-color:#5e5c64;stop-opacity:1"
+ offset="0"
+ id="stop27" />
+ <stop
+ style="stop-color:#65636a;stop-opacity:1"
+ offset=".033"
+ id="stop29" />
+ <stop
+ style="stop-color:#4c4a51;stop-opacity:1"
+ offset=".103"
+ id="stop31" />
+ <stop
+ style="stop-color:#4e4d53;stop-opacity:1"
+ offset=".708"
+ id="stop33" />
+ <stop
+ style="stop-color:#525057;stop-opacity:1"
+ offset=".832"
+ id="stop35" />
+ <stop
+ style="stop-color:#38373c;stop-opacity:1"
+ offset="1"
+ id="stop37" />
+ </linearGradient>
+ <linearGradient
+ xlink:href="#a"
+ id="f"
+ x1="59.779999"
+ y1="600.52698"
+ x2="1130.7271"
+ y2="600.52698"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="a">
+ <stop
+ style="stop-color:#2ec27e;stop-opacity:1"
+ offset="0"
+ id="stop41" />
+ <stop
+ style="stop-color:#62a0ea;stop-opacity:1"
+ offset="1"
+ id="stop43" />
+ </linearGradient>
+ <linearGradient
+ xlink:href="#b"
+ id="i"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(230,179)"
+ x1="605.07397"
+ y1="363.14801"
+ x2="689.59003"
+ y2="363.14801" />
+ <linearGradient
+ xlink:href="#c"
+ id="j"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(230,179)"
+ x1="604.91302"
+ y1="412.03699"
+ x2="695.55603"
+ y2="412.03699" />
+ <radialGradient
+ xlink:href="#d"
+ id="k"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.23242,0,0,1.23242,103.628,87.555)"
+ cx="543.71802"
+ cy="393.44299"
+ fx="543.71802"
+ fy="393.44299"
+ r="50" />
+ <radialGradient
+ xlink:href="#e"
+ id="l"
+ cx="545"
+ cy="387.793"
+ fx="545"
+ fy="387.793"
+ r="29.997"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(2.18529,0,0,2.18529,-415.981,-290.826)" />
+ <radialGradient
+ xlink:href="#d"
+ id="m"
+ cx="543.71802"
+ cy="393.44299"
+ fx="543.71802"
+ fy="393.44299"
+ r="50"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(1.23242,0,0,1.23242,103.628,87.555)" />
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="g">
+ <rect
+ ry="32"
+ rx="32"
+ y="-116"
+ x="32.5"
+ height="320"
+ width="447"
+ style="opacity:1;fill:#fb8c14;fill-opacity:1;stroke:none;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4, 2;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect51" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="h">
+ <path
+ style="opacity:1;fill:#949390;fill-opacity:1;stroke:none;stroke-width:16;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:11.2;stroke-opacity:1"
+ d="m 208,4 h 96 v 48 h -96 z"
+ id="path54" />
+ </clipPath>
+ </defs>
+ <g
+ transform="matrix(0.6666321,0,0,0.66706216,21.101698,-82.283362)"
+ style="display:inline"
+ id="g179">
+ <path
+ style="display:inline;fill:url(#f);fill-opacity:1;stroke:none;stroke-width:2.68319;stroke-linejoin:round;stop-color:#000000"
+ d="m 830.003,275.638 v 107.317 a 13.27,13.27 135 0 1 -13.27,13.27 h -0.291 a 13.27,13.27 45 0 1 -13.271,-13.27 26.977,26.977 45 0 0 -26.977,-26.977 26.832,26.832 134.69 0 0 -26.687,26.977 v 123.14 a 13.27,13.27 135 0 1 -13.27,13.27 h -0.291 a 13.27,13.27 45 0 1 -13.27,-13.27 v -17.44 a 24,24 45 0 0 -24,-24 h -5.664 a 24,24 135 0 0 -24,24 v 23.093 a 13.27,13.27 135 0 1 -13.271,13.27 h -0.29 a 13.27,13.27 45 0 1 -13.271,-13.27 v -51.275 a 24,24 45 0 0 -24,-24 h -5.664 a 24,24 135 0 0 -24,24 v 2.978 a 13.27,13.27 135 0 1 -13.27,13.27 h -0.291 a 13.27,13.27 45 0 1 -13.271,-13.27 V 342.707 A 26.977,26.977 45 0 0 534.707,315.73 26.832,26.832 134.69 0 0 508.02,342.707 v 67.08 a 13.27,13.27 135 0 1 -13.27,13.27 h -0.291 a 13.27,13.27 45 0 1 -13.27,-13.27 26.977,26.977 45 0 0 -26.978,-26.977 26.832,26.832 134.69 0 0 -26.686,26.977 13.27,13.27 135 0 1 -13.271,13.27 h -0.29 a 13.27,13.27 45 0 1 -13.271,-13.27 v -134.16 a 26.977,26.977 45 0 0 -26.978,-26.977 26.832,26.832 134.69 0 0 -26.686,26.977 v 93.912 a 13.27,13.27 135 0 1 -13.27,13.27 h -0.291 a 13.27,13.27 45 0 1 -13.271,-13.27 26.977,26.977 45 0 0 -26.977,-26.977 26.832,26.832 134.69 0 0 -26.687,26.977 v 80.496 a 13.27,13.27 135 0 1 -13.27,13.27 h -0.291 a 13.27,13.27 45 0 1 -13.27,-13.27 26.977,26.977 45 0 0 -26.978,-26.978 26.832,26.832 134.69 0 0 -26.686,26.978 v 53.663 a 13.27,13.27 135 0 1 -13.271,13.271 h -0.29 a 13.27,13.27 45 0 1 -13.271,-13.27 26.977,26.977 45 0 0 -26.978,-26.978 26.832,26.832 134.69 0 0 -26.686,26.977 22.861,22.861 137.566 0 1 -23.999,21.94 L 53.847,525.32 a 23.726,23.726 135.328 0 0 -23.998,23.725 24.049,24.049 45.036 0 0 24,24.03 l 27.693,0.078 a 24.068,24.068 45.08 0 1 24,24.068 v 0.071 a 26.977,26.977 45 0 0 26.977,26.977 26.832,26.832 134.69 0 0 26.687,-26.977 13.257,13.257 135.059 0 1 13.27,-13.243 h 0.29 a 13.27,13.27 45 0 1 13.272,13.27 v 53.664 a 26.977,26.977 45 0 0 26.977,26.977 26.832,26.832 134.69 0 0 26.686,-26.977 13.27,13.27 135 0 1 13.271,-13.27 h 0.29 a 13.27,13.27 45 0 1 13.271,13.27 v 80.496 a 26.977,26.977 45 0 0 26.977,26.977 26.832,26.832 134.69 0 0 26.687,-26.977 13.27,13.27 135 0 1 13.27,-13.27 h 0.291 a 13.27,13.27 45 0 1 13.27,13.27 v 93.911 a 26.977,26.977 45 0 0 26.978,26.978 26.832,26.832 134.69 0 0 26.687,-26.978 V 691.231 a 13.27,13.27 135 0 1 13.27,-13.27 h 0.29 a 13.27,13.27 45 0 1 13.272,13.27 26.977,26.977 45 0 0 26.977,26.977 26.832,26.832 134.69 0 0 26.686,-26.977 13.27,13.27 135 0 1 13.271,-13.27 h 0.29 a 13.27,13.27 45 0 1 13.271,13.27 v 67.08 a 26.977,26.977 45 0 0 26.977,26.977 26.832,26.832 134.69 0 0 26.687,-26.977 V 637.567 a 13.27,13.27 135 0 1 13.27,-13.27 h 0.291 a 13.27,13.27 45 0 1 13.27,13.27 26.977,26.977 45 0 0 26.978,26.977 26.832,26.832 134.69 0 0 26.687,-26.977 V 589.27 A 13.27,13.27 135 0 1 655.45,576 h 0.29 a 13.27,13.27 45 0 1 13.272,13.27 26.977,26.977 45 0 0 26.977,26.977 26.832,26.832 134.69 0 0 26.686,-26.977 13.27,13.27 135 0 1 13.271,-13.27 h 0.29 a 13.27,13.27 45 0 1 13.271,13.27 v 128.793 a 26.977,26.977 45 0 0 26.977,26.977 26.832,26.832 134.69 0 0 26.687,-26.977 13.27,13.27 135 0 1 13.27,-13.27 h 0.291 a 13.27,13.27 45 0 1 13.27,13.27 v 81.891 a 26.977,26.977 45 0 0 26.978,26.978 26.832,26.832 134.69 0 0 26.687,-26.978 v -93.911 a 13.27,13.27 135 0 1 13.27,-13.27 h 0.29 a 13.27,13.27 45 0 1 13.272,13.27 26.977,26.977 45 0 0 26.977,26.977 26.832,26.832 134.69 0 0 26.686,-26.977 V 597.319 a 13.27,13.27 135 0 1 13.271,-13.27 h 0.29 a 13.27,13.27 45 0 1 13.271,13.27 26.977,26.977 45 0 0 26.977,26.978 26.832,26.832 134.69 0 0 26.687,-26.978 v -0.274 a 23.935,23.935 135.077 0 1 24,-23.935 l 17.247,0.047 a 23.935,23.935 135.077 0 0 24,-23.936 23.62,23.62 44.117 0 0 -24,-23.271 l -17.247,0.026 a 23.963,23.963 44.956 0 1 -24,-23.963 26.148,26.148 43.153 0 0 -26.977,-25.292 26.832,26.832 134.69 0 0 -26.687,26.977 13.27,13.27 135 0 1 -13.27,13.271 h -0.291 a 13.27,13.27 45 0 1 -13.27,-13.27 V 369.549 A 26.977,26.977 45 0 0 937.185,342.572 26.832,26.832 134.69 0 0 910.5,369.55 13.27,13.27 135 0 1 897.229,382.821 h -0.29 a 13.27,13.27 45 0 1 -13.271,-13.27 v -93.912 a 26.977,26.977 45 0 0 -26.978,-26.977 26.832,26.832 134.69 0 0 -26.686,26.977 z"
+ id="path59" />
+ <g
+ style="display:inline;enable-background:new"
+ transform="matrix(-1.76362,0,0,-1.76362,-682.748,759.448)"
+ id="g91">
+ <rect
+ ry="8"
+ rx="8"
+ y="217.77499"
+ x="-686.78699"
+ height="80"
+ width="111.75"
+ style="display:inline;opacity:1;fill:#d5d3cf;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1, 0.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
+ id="rect61" />
+ <rect
+ ry="4"
+ rx="4"
+ y="225.77499"
+ x="-678.91199"
+ height="56"
+ width="96"
+ style="display:inline;opacity:1;fill:#ed333b;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1, 0.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
+ id="rect63" />
+ <rect
+ ry="7.9879999"
+ rx="7.9879999"
+ y="245.77499"
+ x="-658.90002"
+ height="15.975"
+ width="55.974998"
+ style="display:inline;opacity:1;fill:#d5d3cf;fill-opacity:1;stroke:#d5d3cf;stroke-width:8;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:11.2;stroke-opacity:1;enable-background:new"
+ id="rect65" />
+ <circle
+ r="7.9879999"
+ cy="253.76199"
+ cx="-650.91199"
+ style="display:inline;opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1, 0.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
+ id="circle67" />
+ <circle
+ style="display:inline;opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1, 0.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
+ cx="-610.91199"
+ cy="253.76199"
+ r="7.9879999"
+ id="circle69" />
+ <g
+ transform="matrix(0.25,0,0,0.25,-694.912,246.775)"
+ style="display:inline;fill:#949390;fill-opacity:1;stroke:#949390;stroke-opacity:1;enable-background:new"
+ clip-path="url(#g)"
+ id="g73">
+ <path
+ style="fill:#949390;fill-opacity:1;stroke:#949390;stroke-width:32;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+ d="M 128,236 H 384 L 352,140 H 160 Z"
+ id="path71" />
+ </g>
+ <g
+ transform="matrix(0.25,0,0,0.25,-694.912,246.775)"
+ style="display:inline;fill:#424048;fill-opacity:1;enable-background:new"
+ id="g83">
+ <circle
+ style="opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:32;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4, 2;stroke-dashoffset:0;stroke-opacity:1"
+ cx="56"
+ cy="-92"
+ r="8"
+ id="circle75" />
+ <circle
+ r="8"
+ cy="164"
+ cx="56"
+ style="opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:32;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4, 2;stroke-dashoffset:0;stroke-opacity:1"
+ id="circle77" />
+ <circle
+ r="8"
+ cy="-92"
+ cx="456"
+ style="opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:32;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4, 2;stroke-dashoffset:0;stroke-opacity:1"
+ id="circle79" />
+ <circle
+ style="opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:32;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4, 2;stroke-dashoffset:0;stroke-opacity:1"
+ cx="456"
+ cy="164"
+ r="8"
+ id="circle81" />
+ </g>
+ <path
+ style="display:inline;opacity:1;fill:#949390;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:11.2;stroke-opacity:1;enable-background:new"
+ d="m -636.912,247.775 h 12 v 11.975 h -12 z"
+ id="path85" />
+ <path
+ style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:11.2;stroke-opacity:1;enable-background:new"
+ d="m -678.912,231.775 h 96 v 4 h -96 z m 0,40 h 96 v 4 h -96 z"
+ id="path87" />
+ <path
+ d="m -686.787,285.775 v 4 c 0,4.432 3.568,8 8,8 h 95.75 c 4.432,0 8,-3.568 8,-8 v -4 c 0,4.432 -3.568,8 -8,8 h -95.75 c -4.432,0 -8,-3.568 -8,-8 z"
+ style="display:inline;opacity:1;fill:#f3f7fb;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1, 0.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
+ id="path89" />
+ </g>
+ <g
+ style="display:inline;enable-background:new"
+ transform="matrix(0,1.76362,-1.76362,0,764.466,1146.99)"
+ id="g125">
+ <rect
+ ry="8"
+ rx="8"
+ y="273.77499"
+ x="-424.78699"
+ height="24"
+ width="112"
+ style="display:inline;opacity:1;fill:#1a5fb4;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1, 0.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
+ id="rect93" />
+ <rect
+ style="display:inline;opacity:1;fill:#62a0ea;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1, 0.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
+ width="112"
+ height="76"
+ x="-424.78699"
+ y="217.77499"
+ rx="8"
+ ry="8"
+ id="rect95" />
+ <path
+ style="display:inline;fill:#3584e4;fill-opacity:1;stroke:#3584e4;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;enable-background:new"
+ d="m -396.787,291.775 h 56 l -4,-10 h -48 z"
+ id="path97" />
+ <g
+ transform="translate(-432.787,21.775)"
+ style="display:inline;enable-background:new"
+ id="g107">
+ <circle
+ r="2"
+ cy="202"
+ cx="14"
+ style="display:inline;opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1, 0.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
+ id="circle99" />
+ <circle
+ style="display:inline;opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1, 0.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
+ cx="14"
+ cy="266"
+ r="2"
+ id="circle101" />
+ <circle
+ style="display:inline;opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1, 0.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
+ cx="114"
+ cy="202"
+ r="2"
+ id="circle103" />
+ <circle
+ r="2"
+ cy="266"
+ cx="114"
+ style="display:inline;opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1, 0.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
+ id="circle105" />
+ </g>
+ <path
+ style="display:inline;opacity:1;fill:#1a5fb4;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
+ d="m -400.787,291.775 h 64 v 6 h -64 z"
+ id="path109" />
+ <path
+ style="display:inline;opacity:1;fill:#f6f5f4;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1, 0.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
+ d="m -408.787,225.775 h 80 l 8,8 v 44 h -96 v -44 z"
+ id="path111" />
+ <g
+ transform="translate(-432.787,21.775)"
+ style="display:inline;enable-background:new"
+ id="g123">
+ <path
+ style="display:inline;opacity:1;fill:#424048;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
+ d="m 16,218 h 96 v 28 H 16 Z"
+ id="path113" />
+ <circle
+ r="6"
+ cy="232"
+ cx="40"
+ style="display:inline;opacity:1;fill:#f6f5f4;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1, 0.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
+ id="circle115" />
+ <circle
+ style="display:inline;opacity:1;fill:#f6f5f4;fill-opacity:1;stroke:none;stroke-width:0.25;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1, 0.5;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
+ cx="88"
+ cy="232"
+ r="6"
+ id="circle117" />
+ <path
+ style="display:inline;opacity:1;fill:#949390;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:11.2;stroke-opacity:1;enable-background:new"
+ d="m 52,226 h 24 v 12 H 52 Z"
+ id="path119" />
+ <path
+ d="M 272,28 C 272,89.856 221.856,140 160,140 98.144,140 48,89.856 48,28 48,-33.856 98.144,-84 160,-84 c 61.856,0 112,50.144 112,112 z"
+ clip-path="url(#h)"
+ style="display:inline;opacity:0.5;fill:#424048;fill-opacity:1;stroke:none;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:4, 2;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
+ transform="matrix(0.25,0,0,0.25,0,225)"
+ id="path121" />
+ </g>
+ </g>
+ <g
+ transform="matrix(2.52414,0,0,2.52414,-1317.014,-691.54)"
+ id="g171">
+ <ellipse
+ style="display:inline;fill:#494949;fill-opacity:1;stroke:none;stroke-width:2.00885;stroke-linejoin:round;stop-color:#000000"
+ cx="775"
+ cy="519.48499"
+ rx="50"
+ ry="50.444"
+ id="ellipse127" />
+ <path
+ style="display:inline;fill:#3f3f3f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linejoin:round;stop-color:#000000"
+ d="m 810,508 h 55 v 30 h -55 z"
+ id="path129" />
+ <circle
+ style="display:inline;fill:#3f3f3f;fill-opacity:1;stroke:none;stroke-width:2;stroke-linejoin:round;stop-color:#000000"
+ cx="775"
+ cy="521.92902"
+ r="50"
+ id="circle131" />
+ <circle
+ style="display:inline;fill:#373737;fill-opacity:1;stroke:none;stroke-width:1.19986;stroke-linejoin:round;stop-color:#000000"
+ cx="775"
+ cy="521.797"
+ r="29.997"
+ id="circle133" />
+ <path
+ style="display:inline;fill:#3f3f3f;fill-opacity:1;stroke:none;stroke-width:1.74773;stroke-linejoin:round;stop-color:#000000"
+ d="m 823,568 h 42 v 30 h -42 c 3.187,-9.984 2.097,-19.99 0,-30 z"
+ id="path135" />
+ <rect
+ style="display:inline;fill:#231e30;fill-opacity:1;stroke:none;stroke-width:2.08893;stroke-linejoin:round;stop-color:#000000"
+ width="55"
+ height="60"
+ x="835"
+ y="553"
+ rx="7.428"
+ ry="8.1029997"
+ id="rect137" />
+ <path
+ style="display:inline;fill:url(#i);fill-opacity:1;stroke:none;stroke-width:1.90693;stroke-linejoin:round;stop-color:#000000"
+ d="m 842.427,498 c -4.115,0 -7.427,3 -7.427,3 v 40.248 c 0,0.307 0.03,0.605 0.074,0.9 A 5,5 0 0 0 840,548 h 56.28 A 23.644,23.644 0 0 1 920,571.719 V 578 a 5,5 0 0 0 10,0 v -6.281 c 0,-7.1 -2.223,-13.699 -6,-19.145 V 522 l -19,-18 h -15.05 c -0.409,-3.384 -3.543,-6 -7.378,-6 z"
+ id="path139" />
+ <path
+ style="font-variation-settings:normal;display:inline;vector-effect:none;fill:url(#j);fill-opacity:1;stroke:none;stroke-width:1.90693;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
+ d="m 930,528 c 0,19.8 -14.91,28.063 -30,28 h -65 v 52 a 5,5 0 0 0 5,5 h 60 c 14.912,0 30,-14.913 30,-30 v -5 z"
+ id="path141" />
+ <path
+ style="font-variation-settings:normal;display:inline;vector-effect:none;fill:none;fill-opacity:1;stroke:#6d6b75;stroke-width:10;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
+ d="m 840,501 h 56.281 A 28.718,28.718 45 0 1 925,529.718 27.527,27.527 137.537 0 1 896.28,556 H 840"
+ id="path143" />
+ <path
+ style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#777777;fill-opacity:1;stroke:none;stroke-width:1.90693;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
+ d="m 823,508 h 12 v 1 h -12 z"
+ id="path145" />
+ <path
+ style="display:inline;fill:none;stroke:#c061cb;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 805,409 h 90.145 A 19.855,19.855 45 0 1 915,428.855 17.658,17.658 142.664 0 1 895.145,444 H 694.249 a 17.418,17.418 135 0 0 -17.418,17.418 V 571.582 A 17.418,17.418 45 0 0 694.249,589 h 51.463"
+ id="path147" />
+ <rect
+ style="display:inline;fill:#613583;stroke:none;stroke-width:2;stroke-linejoin:round;stop-color:#000000"
+ width="28"
+ height="10"
+ x="788"
+ y="404"
+ rx="5"
+ ry="5"
+ id="rect149" />
+ <rect
+ style="display:inline;fill:#deddda;stroke:none;stroke-width:2;stroke-linejoin:round;stop-color:#000000"
+ width="18"
+ height="4"
+ x="775"
+ y="407"
+ rx="2"
+ ry="2"
+ id="rect151" />
+ <circle
+ style="display:inline;fill:#deddda;stroke:none;stroke-width:1.39585;stroke-linejoin:round;stop-color:#000000"
+ cx="778.33801"
+ cy="409"
+ r="3.49"
+ id="circle153" />
+ <path
+ style="display:inline;fill:#dadad9;fill-opacity:1;stroke:none;stroke-width:0.761396px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 776.41,406.07 -1.714,0.888 a 2.313,2.313 89.617 0 0 0.028,4.12 l 1.755,0.881 a 0.355,0.355 147.997 0 0 0.514,-0.321 l -0.059,-5.254 a 0.359,0.359 30.978 0 0 -0.523,-0.314 z"
+ id="path155" />
+ <path
+ style="display:inline;fill:#241f31;fill-opacity:1;stroke:none;stroke-width:2;stroke-linejoin:round;stop-color:#000000"
+ d="m 782.95,407 a 2,2 0 0 0 -0.478,0.07 2,2 0 0 1 1.475,1.93 2,2 0 0 1 -1.47,1.93 2,2 0 0 0 0.523,0.07 2,2 0 0 0 2,-2 2,2 0 0 0 -2,-2 2,2 0 0 0 -0.05,0 z m 3.05,0 a 2,2 0 0 0 -0.479,0.07 2,2 0 0 1 1.475,1.93 2,2 0 0 1 -1.47,1.93 2,2 0 0 0 0.523,0.07 2,2 0 0 0 2,-2 2,2 0 0 0 -2,-2 2,2 0 0 0 -0.05,0 z"
+ id="path157" />
+ <circle
+ style="display:inline;fill:#5d5d5d;fill-opacity:1;stroke:none;stroke-width:2;stroke-linejoin:round;stop-color:#000000"
+ cx="775"
+ cy="576.79901"
+ r="50"
+ id="circle159" />
+ <circle
+ style="display:inline;fill:url(#k);fill-opacity:1;stroke:none;stroke-width:2;stroke-linejoin:round;stop-color:#000000"
+ cx="775"
+ cy="584.04797"
+ r="50"
+ id="circle161" />
+ <circle
+ style="display:inline;fill:url(#l);fill-opacity:1;stroke:none;stroke-width:1.19986;stroke-linejoin:round;stop-color:#000000"
+ cx="775"
+ cy="584.04797"
+ r="29.997"
+ id="circle163" />
+ <path
+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:400;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:url(#m);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#000000"
+ d="m 765,549 c 2.655,11.465 4,23.232 4,35 0,11.768 -1.345,23.535 -4,35 h 20 a 155.291,155.291 0 0 1 -4,-35 c 0,-11.768 1.345,-23.535 4,-35 z"
+ id="path165" />
+ <path
+ style="display:inline;fill:none;fill-opacity:1;stroke:#a6a6a6;stroke-width:1.89499;stroke-linejoin:round;stroke-opacity:1;stop-color:#000000"
+ d="m 741.5,550.549 a 47.375,47.375 0 0 1 66.999,0"
+ id="path167" />
+ <path
+ style="font-variation-settings:normal;display:inline;vector-effect:none;fill:#777777;fill-opacity:1;stroke:none;stroke-width:1.90693;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000"
+ d="m 823,567 h 12 v 1 h -12 z"
+ id="path169" />
+ </g>
+ <rect
+ style="fill:#949390;fill-opacity:1;stroke:none;stroke-width:56.7699;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000"
+ width="13.246"
+ height="3.7850001"
+ x="373.78799"
+ y="236.38699"
+ rx="0"
+ ry="0"
+ id="rect173" />
+ <rect
+ style="fill:#949390;fill-opacity:1;stroke:none;stroke-width:111.494;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000"
+ width="51.092999"
+ height="3.7850001"
+ x="407.85001"
+ y="236.38699"
+ rx="0"
+ ry="0"
+ id="rect175" />
+ <rect
+ style="fill:#949390;fill-opacity:1;stroke:none;stroke-width:56.7699;stroke-linecap:round;stroke-linejoin:round;stop-color:#000000"
+ width="13.246"
+ height="3.7850001"
+ x="472.189"
+ y="236.38699"
+ rx="0"
+ ry="0"
+ id="rect177" />
+ </g>
+</svg>
diff --git a/data/meson.build b/data/meson.build
index 145ee522..7b364dc5 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -6,14 +6,16 @@ gnome.compile_resources(
gresource_bundle: true,
source_dir: meson.current_build_dir(),
install_dir: PKGDATA_DIR,
- install: true,
- dependencies: about_dialog
+ install: true
)
+schema_src = PROJECT_RDNN_NAME + '.gschema.xml'
+gnome.compile_schemas(build_by_default: true, depend_files: files(schema_src))
+
# Installing the schema file
install_data(
- PROJECT_RDNN_NAME + '.gschema.xml',
- install_dir: 'share/glib-2.0/schemas'
+ schema_src,
+ install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas')
)
# Merging the translations with the desktop file
@@ -26,7 +28,7 @@ i18n.merge_file(
input: PROJECT_RDNN_NAME + '.desktop.in.in',
configuration: desktop_conf),
output: APPLICATION_ID + '.desktop',
- po_dir: join_paths(meson.source_root(), 'po'),
+ po_dir: join_paths(meson.project_source_root(), 'po'),
install: true,
install_dir: join_paths(get_option('prefix'), get_option('datadir'), 'applications')
)
@@ -53,7 +55,7 @@ i18n.merge_file(
configuration: appdata_conf
),
output: APPLICATION_ID + '.appdata.xml',
- po_dir: join_paths(meson.source_root(), 'po'),
+ po_dir: join_paths(meson.project_source_root(), 'po'),
install: true,
install_dir: join_paths(get_option('prefix'), get_option('datadir'), 'metainfo')
)
@@ -64,7 +66,7 @@ if appstream_util.found()
test (
'Validate appdata file',
appstream_util,
- args: ['validate-relax', join_paths(meson.current_build_dir (), APPLICATION_ID + '.appdata.xml')]
+ args: ['validate-relax', '--nonet', join_paths(meson.current_build_dir (), APPLICATION_ID + '.appdata.xml')]
)
endif
diff --git a/data/org.gnome.Music.appdata.xml.in.in b/data/org.gnome.Music.appdata.xml.in.in
index 02a242b3..b307b930 100644
--- a/data/org.gnome.Music.appdata.xml.in.in
+++ b/data/org.gnome.Music.appdata.xml.in.in
@@ -3,7 +3,7 @@
<id>@appid@.desktop</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-2.0+ and LGPL-2.0+ and CC-BY-SA-4.0</project_license>
- <name>GNOME Music</name>
+ <name>Music</name>
<summary>Play and organize your music collection</summary>
<description>
<p>
@@ -15,19 +15,57 @@
</description>
<screenshots>
<screenshot type="default">
- <image type="source">https://gitlab.gnome.org/GNOME/gnome-music/raw/master/data/screenshots/gnome-music-1.png</image>
+ <image type="source">https://gitlab.gnome.org/GNOME/gnome-music/raw/HEAD/data/screenshots/gnome-music-1.png</image>
</screenshot>
<screenshot>
- <image type="source">https://gitlab.gnome.org/GNOME/gnome-music/raw/master/data/screenshots/gnome-music-2.png</image>
+ <image type="source">https://gitlab.gnome.org/GNOME/gnome-music/raw/HEAD/data/screenshots/gnome-music-2.png</image>
</screenshot>
<screenshot>
- <image type="source">https://gitlab.gnome.org/GNOME/gnome-music/raw/master/data/screenshots/gnome-music-3.png</image>
+ <image type="source">https://gitlab.gnome.org/GNOME/gnome-music/raw/HEAD/data/screenshots/gnome-music-3.png</image>
</screenshot>
<screenshot>
- <image type="source">https://gitlab.gnome.org/GNOME/gnome-music/raw/master/data/screenshots/gnome-music-4.png</image>
+ <image type="source">https://gitlab.gnome.org/GNOME/gnome-music/raw/HEAD/data/screenshots/gnome-music-4.png</image>
</screenshot>
</screenshots>
<releases>
+ <release version="45.0" date="2023-09-16">
+ <description>
+ <p>Minor quality of life improvements</p>
+ </description>
+ </release>
+ <release version="44.0" date="2023-03-22">
+ <description>
+ <p>
+ First stable release for GNOME 44. This version mostly consists
+ of stability improvements. There are also some notable
+ improvements:
+ </p>
+ <ul>
+ <li>Port to soup 3</li>
+ <li>Fix shuffle</li>
+ <li>Decrease memory usage in SongsView</li>
+ </ul>
+ <p>This release also updates translations.</p>
+ </description>
+ </release>
+ <release version="42.1" date="2022-04-25">
+ <description>
+ <ul>
+ <li>Make shuffle shuffle again</li>
+ <li>Fix time display in RTL languages</li>
+ <li>No longer mismatch art on scrolling</li>
+ <li>Fix async queue block on fresh art retrieval</li>
+ </ul>
+ </description>
+ </release>
+ <release version="42.0" date="2022-03-20">
+ <description>
+ <p>
+ Music has been ported to GTK-4. This brings some performance
+ improvements for larger collections.
+ </p>
+ </description>
+ </release>
<release version="41.0" date="2021-09-18">
<description>
<p>
diff --git a/data/org.gnome.Music.gresource.xml b/data/org.gnome.Music.gresource.xml
index 5ea55cdd..77029c6d 100644
--- a/data/org.gnome.Music.gresource.xml
+++ b/data/org.gnome.Music.gresource.xml
@@ -2,11 +2,10 @@
<gresources>
<gresource prefix="/org/gnome/Music">
<file alias="gtk/help-overlay.ui" preprocess="xml-stripblanks">ui/help-overlay.ui</file>
- <file>org.gnome.Music.css</file>
- <file>icons/playlist2-symbolic.svg</file>
+ <file>style.css</file>
<file>icons/welcome-music.svg</file>
- <file preprocess="xml-stripblanks">ui/AboutDialog.ui</file>
<file preprocess="xml-stripblanks">ui/AlbumCover.ui</file>
+ <file preprocess="xml-stripblanks">ui/AlbumCoverListItem.ui</file>
<file preprocess="xml-stripblanks">ui/AlbumWidget.ui</file>
<file preprocess="xml-stripblanks">ui/AlbumsView.ui</file>
<file preprocess="xml-stripblanks">ui/ArtistAlbumsWidget.ui</file>
@@ -15,18 +14,13 @@
<file preprocess="xml-stripblanks">ui/ArtistsView.ui</file>
<file preprocess="xml-stripblanks">ui/ArtistTile.ui</file>
<file preprocess="xml-stripblanks">ui/DiscBox.ui</file>
- <file preprocess="xml-stripblanks">ui/DropDown.ui</file>
<file preprocess="xml-stripblanks">ui/EmptyView.ui</file>
- <file preprocess="xml-stripblanks">ui/FilterView.ui</file>
<file preprocess="xml-stripblanks">ui/HeaderBar.ui</file>
<file preprocess="xml-stripblanks">ui/LastfmDialog.ui</file>
- <file preprocess="xml-stripblanks">ui/LoadingNotification.ui</file>
- <file preprocess="xml-stripblanks">ui/NotificationsPopup.ui</file>
<file preprocess="xml-stripblanks">ui/PlayerToolbar.ui</file>
<file preprocess="xml-stripblanks">ui/PlaylistControls.ui</file>
<file preprocess="xml-stripblanks">ui/PlaylistDialog.ui</file>
<file preprocess="xml-stripblanks">ui/PlaylistDialogRow.ui</file>
- <file preprocess="xml-stripblanks">ui/PlaylistNotification.ui</file>
<file preprocess="xml-stripblanks">ui/PlaylistsView.ui</file>
<file preprocess="xml-stripblanks">ui/PlaylistsWidget.ui</file>
<file preprocess="xml-stripblanks">ui/PlaylistTile.ui</file>
@@ -34,10 +28,15 @@
<file preprocess="xml-stripblanks">ui/SearchView.ui</file>
<file preprocess="xml-stripblanks">ui/SelectionBarMenuButton.ui</file>
<file preprocess="xml-stripblanks">ui/SelectionToolbar.ui</file>
+ <file preprocess="xml-stripblanks">ui/SongListItem.ui</file>
<file preprocess="xml-stripblanks">ui/SongsView.ui</file>
<file preprocess="xml-stripblanks">ui/SongWidget.ui</file>
<file preprocess="xml-stripblanks">ui/SongWidgetMenu.ui</file>
<file preprocess="xml-stripblanks">ui/TwoLineTip.ui</file>
<file preprocess="xml-stripblanks">ui/Window.ui</file>
</gresource>
+ <gresource prefix="/org/gnome/Music/icons/scalable/actions">
+ <file alias="music-playlist-symbolic.svg">icons/music-playlist-symbolic.svg</file>
+ <file alias="music-artist-symbolic.svg">icons/music-artist-symbolic.svg</file>
+ </gresource>
</gresources>
diff --git a/data/org.gnome.Music.gschema.xml b/data/org.gnome.Music.gschema.xml
index 31eed34b..d92cf230 100644
--- a/data/org.gnome.Music.gschema.xml
+++ b/data/org.gnome.Music.gschema.xml
@@ -12,11 +12,6 @@
<summary>Window size</summary>
<description>Window size (width and height).</description>
</key>
- <key type="ai" name="window-position">
- <default>[]</default>
- <summary>Window position</summary>
- <description>Window position (x and y).</description>
- </key>
<key type="b" name="window-maximized">
<default>true</default>
<summary>Window maximized</summary>
diff --git a/data/screenshots/gnome-music-1.png b/data/screenshots/gnome-music-1.png
index 0029479d..be5016ae 100644
--- a/data/screenshots/gnome-music-1.png
+++ b/data/screenshots/gnome-music-1.png
Binary files differ
diff --git a/data/screenshots/gnome-music-2.png b/data/screenshots/gnome-music-2.png
index e25a8717..789a15f2 100644
--- a/data/screenshots/gnome-music-2.png
+++ b/data/screenshots/gnome-music-2.png
Binary files differ
diff --git a/data/screenshots/gnome-music-3.png b/data/screenshots/gnome-music-3.png
index 7f7faf5c..54e3f849 100644
--- a/data/screenshots/gnome-music-3.png
+++ b/data/screenshots/gnome-music-3.png
Binary files differ
diff --git a/data/screenshots/gnome-music-4.png b/data/screenshots/gnome-music-4.png
index 61523bf4..dd08501c 100644
--- a/data/screenshots/gnome-music-4.png
+++ b/data/screenshots/gnome-music-4.png
Binary files differ
diff --git a/data/org.gnome.Music.css b/data/style.css
index 9e2cea71..f7bf1021 100644
--- a/data/org.gnome.Music.css
+++ b/data/style.css
@@ -8,6 +8,17 @@
color: @theme_fg_color;
}
+/* AlbumsView */
+
+#albums gridview {
+ padding: 18px;
+}
+
+#albums gridview > child {
+ margin: 9px;
+ padding: 6px;
+}
+
/* By default in Adwaita dark this is not transparent */
.tile {
background-color: transparent;
@@ -25,43 +36,12 @@
}
/* PlayerToolbar */
-.border-solid {
- border-style: solid;
-}
-
-.semi-circular {
- border-radius: 20px;
- -gtk-outline-radius: 20px;
-}
-
-.semi-circular:hover {
- border-top-width: 0px;
- border-bottom-width: 0px;
- border-left-width: 0px;
- border-right-width: 0px;
-}
-
-.pill {
- border-radius: 9999px;
- -gtk-outline-radius: 9999px;
-}
.smooth-scale {
padding-top: 0px;
padding-bottom: 0px;
}
-/* FIXME: Remove once songsview is ported to the new style */
-.songs-list-old {
- box-shadow: inset 0 -1px shade(@borders, 1.30);
- background-color: @theme_bg_color;
-}
-
-.songs-list-old:selected {
- color: @theme_fg_color;
- border-color: mix(@theme_fg_color, @theme_bg_color, 0.5);
-}
-
/* We use background-image as a workaround on the StarImage widget to
enable transitions between the non-starred and starred icons. */
.star {
@@ -80,8 +60,6 @@
transition: 100ms linear;
}
-.content-view { background-color: @theme_bg; }
-
.grey-image {
color: alpha(@theme_fg_color, 0.3);
}
@@ -96,16 +74,6 @@
font-weight: bold;
}
-/* Lists style */
-
-/* workaround to avoid a black background issue
-in AlbumWidget and PlaylistsView
-https://gitlab.gnome.org/GNOME/gtk/issues/694
-*/
-list {
- background-color: transparent;
-}
-
.playlistdialog-row:selected {
color: @theme_fg_color;
background-color: @theme_insensitive_bg_color;
@@ -134,8 +102,27 @@ list {
font-weight: bold;
}
-/* SongWidget */
+/* SongsView */
+/* boxed-list style does not work for
+GtkListView at the moment */
+.songs-list {
+ border-left: 1px solid @borders;
+ border-right: 1px solid @borders;
+ border-top: 1px solid @borders;
+}
+
+.songs-list:first-child {
+ border-top-left-radius: 12px;
+ border-top-right-radius: 12px;
+}
+
+.songs-list:last-child {
+ border-bottom-left-radius: 12px;
+ border-bottom-right-radius: 12px;
+}
-.songwidget {
+/* SongWidget and SongsView rows*/
+.songwidget,
+.songs-list row {
padding: 12px;
}
diff --git a/data/ui/AboutDialog.ui.in b/data/ui/AboutDialog.ui.in
deleted file mode 100644
index 5c626a1f..00000000
--- a/data/ui/AboutDialog.ui.in
+++ /dev/null
@@ -1,214 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
- <!-- interface-requires gtk+ 3.0 -->
- <template class="AboutDialog" parent="GtkAboutDialog">
- <property name="can_focus">False</property>
- <property name="modal">True</property>
- <property name="program_name">@PROGRAM_NAME@</property>
- <property name="version">@PACKAGE_VERSION@</property>
- <property name="copyright" translatable="yes">Copyright © 2018 GNOME Music Developers</property>
- <property name="comments" translatable="yes">A music player and management application for GNOME.</property>
- <property name="website">@PACKAGE_URL@</property>
- <property name="website_label" translatable="yes">Visit GNOME Music website</property>
- <property name="license" translatable="yes">GNOME Music is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
-
-GNOME Music is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-The GNOME Music authors hereby grant permission for non-GPL compatible GStreamer plugins to be used and distributed together with GStreamer and GNOME Music. This permission is above and beyond the permissions granted by the GPL license by which GNOME Music is covered. If you modify this code, you may extend this exception to your version of the code, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.</property>
- <property name="authors">Abhinav Singh
-Adam Blanchet
-Adrian Solom
-Alberto Fanjul
-Alexander Mikhaylenko
-Andre Klapper
-Andreas Nilsson
-Apostol Bakalov
-Arnel A. Borja
-Ashwani Singh Tanwar
-Ashwin Mohan
-Atharva Veer
-Benoît Legat
-Bilal Elmoussaoui
-Billy Barrow
-Bruce Cowan
-Carlos Garnacho
-Carlos Soriano
-Chinmay Gurjar
-Christophe van den Abbeele
-Christopher Davis
-Clayton G. Hobbs
-Divyanshu Vishwakarma
-Eslam Mostafa
-Elias Entrup
-Erik Inkinen
-Evan Nehring
-Evandro Giovanini
-Fabiano Fidêncio
-Felipe Borges
-Florian Darfeuille
-Gaurav Narula
-Georges Basile Stavracas Neto
-Guillaume Quintard
-Gyanesh Malhotra
-Harry Xie
-Hugo Posnic
-Ishaan Shah
-Islam Bahnasy
-Jakub Steiner
-James A. Baker
-Jan Alexander Steffens
-Janne Körkkö
-Jan-Michael Brummer
-Jean Felder
-Jeremy Bicha
-Jesus Bermudez Velazquez
-Jordan Petridis
-Juan José González
-Juan Suarez
-Kainaat Singh
-Kalev Lember
-Kevin Haller
-Konstantin Pospelov
-Lucy Coleclough
-Marinus Schraal
-Mohanna Datta Yelugoti
-Nick Richards
-Niels De Graef
-Nikolay Yanchuk
-Nils Reuße
-Pablo Palácios
-Phil Dawson
-Piotr DrÄ…g
-Prashant Tyagi
-Rafael Coelho
-Rashi Sah
-Rasmus Thomsen
-Reuben Dsouza
-Robert Greener
-Sabri Ãœnal
-Sagar Lakhani
-Sai Suman Prayaga
-Sam Hewitt
-Sam Thursfield
-Sambhav Kothari
-Seif Lotfy
-Shivani Poddar
-Shivansh Handa
-Simon McVittie
-Subhadip Jana
-Sumaid Syed
-Suyash Garg
-Tapasweni Pathak
-Taylor Garcia
-Tjipke van der Heide
-Vadim Rutkovsky
-Veerasamy Sevagen
-Vineet Reddy
-Weifang Lai
-Yann Delaby
-Yash Singh
- </property>
- <property name="artists">Allan Day
-Jakub Steiner
-William Jon McCann
- </property>
- <property name="translator_credits">Adolfo Jayme Barrientos
-à®…à®°à¯à®³à¯à®°à®¾à®œà®©à¯ à®… லை
-A S Alam
-Alain Lojewski
-Alan Mortensen
-Alexandre Franke
-Anders Jonsson
-Andika Triwidada
-Anish Sheela
-Arash Mousavi
-Asier Sarasua Garmendia
-Ask Hjorth Larsen
-Aurimas ÄŒernius
-Balázs Meskó
-Balázs Úr
-Baurzhan Muftakhidinov
-Bruce Cowan
-Boyuan Yang
-Carmen Bianca Bakker
-Cédric Valmary
-Chao-Hsiung Liao
-Charles Monzat
-Cheng Lu
-Cheng-Chia Tseng
-Danial Behzadi
-Daniel Korostil
-Daniel Mustieles García
-Daniel Șerbănescu
-David King
-Dušan Kazik
-Efstathios Iosifidis
-Emin Tufan Çetin
-Enrico Nicoletto
-Fábio Nogueira
-Fabio Tomat
-Florentina Mușat
-Fran Diéguez
-Furkan Tokaç
-Gábor Kelemen
-Gil Forcada Codinachs
-Goran Vidović
-Guillaume Bernard
-Henrique Machado Campos
-Inaki Larranaga Murgoitio
-Jiri Grönroos
-Joe Hansen
-Jor Teron
-Jordi Mas
-Juliano Camargo
-Julien Humbert
-Justin van Steijn
-Kjartan Maraas
-Kristjan Schmidt
-Kukuh Syafaat
-Марко КоÑтић
-Marek Černocký
-Mario Blättermann
-Matej UrbanÄiÄ
-Milo Casagrande
-Mingcong Bai
-Mpho Jele
-МироÑлав Ðиколић
-Милош Поповић
-Nathan Follens
-Osman Karagöz
-Petr Kovář
-Philipp Kiemle
-Piotr DrÄ…g
-Quentin Pagès
-Rafael Fontenelle
-Rodrigo Lledó Milanca
-Ryuta Fujii
-RÅ«dolfs Mazurs
-Sabri Ãœnal
-Sebastian Rasmussen
-Seong-ho Cho
-Stas Solovey
-Sveinn í Felli
-Tiago Santos
-Tim Sabsch
-Tjipke van der Heide
-Tom Tryfonidis
-Trần Ngá»c Quân
-Vinzenz Vietzke
-Xavi Ivars
-Yaron Shahrabani
-Yi-Jyun Pan
-Yosef Or Boczko
-Yuras Shumovich
-Yuri Chornoivan
-Yuri Myasoedov
-Zander Brown
-Zmicer Turok
- </property>
- <property name="logo_icon_name">@APPID@</property>
- <property name="wrap_license">True</property>
- </template>
-</interface>
diff --git a/data/ui/AlbumCover.ui b/data/ui/AlbumCover.ui
index a4e1738d..32c3ed17 100644
--- a/data/ui/AlbumCover.ui
+++ b/data/ui/AlbumCover.ui
@@ -1,24 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <requires lib="gtk+" version="3.18"/>
<template class="AlbumCover" parent="GtkFlowBoxChild">
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="has_tooltip">True</property>
<property name="valign">start</property>
<property name="orientation">vertical</property>
<signal name="query-tooltip" handler="_on_tooltip_query"/>
<child>
<object class="GtkOverlay">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="margin-bottom">4</property>
<child>
- <object class="ArtStack" id="_art_stack">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="GtkImage" id="_cover_image">
+ <property name="focusable">False</property>
<property name="vexpand">True</property>
<property name="valign">end</property>
<property name="halign">center</property>
@@ -26,19 +22,20 @@
</child>
<child type="overlay">
<object class="GtkCheckButton" id="_check">
- <property name="can_focus">True</property>
+ <property name="focusable">True</property>
<property name="receives_default">False</property>
<property name="halign">end</property>
<property name="valign">end</property>
- <property name="draw_indicator">True</property>
+ <style>
+ <class name="selection-mode"/>
+ </style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel" id="_title_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="justify">center</property>
<property name="wrap">True</property>
<property name="ellipsize">middle</property>
@@ -48,8 +45,7 @@
</child>
<child>
<object class="GtkLabel" id="_artist_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="ellipsize">middle</property>
<property name="max_width_chars">20</property>
<style>
diff --git a/data/ui/AlbumCoverListItem.ui b/data/ui/AlbumCoverListItem.ui
new file mode 100644
index 00000000..8fa7acce
--- /dev/null
+++ b/data/ui/AlbumCoverListItem.ui
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <requires lib="gtk" version="4.0"/>
+ <object class="GtkBox" id="_album_cover">
+ <property name="has_tooltip">True</property>
+ <property name="valign">start</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkOverlay">
+ <property name="margin-bottom">6</property>
+ <child>
+ <object class="GtkImage" id="_cover_image">
+ <property name="vexpand">True</property>
+ <property name="valign">center</property>
+ <property name="halign">center</property>
+ </object>
+ </child>
+ <child type="overlay">
+ <object class="GtkCheckButton" id="_check">
+ <property name="visible">False</property>
+ <property name="halign">end</property>
+ <property name="valign">end</property>
+ <style>
+ <class name="selection-mode"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel">
+ <property name="justify">center</property>
+ <property name="wrap">True</property>
+ <property name="ellipsize">middle</property>
+ <property name="max_width_chars">20</property>
+ <property name="lines">2</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="_artist_label">
+ <property name="ellipsize">middle</property>
+ <property name="max_width_chars">20</property>
+ <style>
+ <class name="albumcover-artist-label"/>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/data/ui/AlbumWidget.ui b/data/ui/AlbumWidget.ui
index 2c71e044..0dc30d0f 100644
--- a/data/ui/AlbumWidget.ui
+++ b/data/ui/AlbumWidget.ui
@@ -1,163 +1,130 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.20.0 -->
<interface>
- <requires lib="gtk+" version="3.12"/>
- <template class="AlbumWidget" parent="HdyClamp">
- <property name="margin-bottom">48</property>
- <property name="margin-top">48</property>
- <property name="maximum-size">1000</property>
- <property name="orientation">horizontal</property>
- <property name="visible">True</property>
+ <template class="AlbumWidget" parent="AdwBin">
<child>
- <object class="GtkBox">
- <property name="halign">fill</property>
- <property name="orientation">vertical</property>
- <property name="visible">True</property>
+ <object class="AdwClamp">
+ <property name="margin-bottom">48</property>
+ <property name="margin-top">48</property>
+ <property name="maximum-size">1000</property>
<child>
- <object class="GtkBox" id="albumInfo">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="GtkBox">
<property name="halign">fill</property>
- <property name="hexpand">True</property>
- <property name="spacing">32</property>
+ <property name="orientation">vertical</property>
<child>
- <object class="ArtStack" id="_art_stack">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">center</property>
- <property name="valign">start</property>
- <property name="hhomogeneous">False</property>
- <property name="vhomogeneous">False</property>
- </object>
- </child>
- <child>
- <object class="GtkBox" id="albumDetails">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">center</property>
- <property name="valign">start</property>
- <property name="orientation">vertical</property>
- <property name="margin-top">18</property>
- <child>
- <object class="GtkLabel" id="_title_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="ellipsize">middle</property>
- <property name="margin-bottom">18</property>
- <style>
- <class name="title-1"/>
- </style>
- </object>
- </child>
- <child>
- <object class="GtkLabel" id="_artist_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="ellipsize">middle</property>
- <property name="margin-bottom">12</property>
- <style>
- <class name="title-3"/>
- </style>
- </object>
- </child>
+ <object class="GtkBox" id="albumInfo">
+ <property name="halign">fill</property>
+ <property name="hexpand">True</property>
+ <property name="spacing">32</property>
<child>
- <object class="GtkLabel" id="_released_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="use_markup">True</property>
- <property name="margin-bottom">12</property>
- <style>
- <class name="dim-label"/>
- </style>
+ <object class="GtkImage" id="_cover_image">
+ <property name="halign">center</property>
+ <property name="valign">center</property>
</object>
</child>
<child>
- <object class="GtkLabel" id="_composer_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="ellipsize">end</property>
- <property name="margin-bottom">12</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- </child>
- <child>
- <object class="GtkBox">
- <property name="orientation">horizontal</property>
- <property name="visible">True</property>
- <property name="spacing">12</property>
- <property name="margin-top">6</property>
+ <object class="GtkBox" id="albumDetails">
+ <property name="halign">center</property>
+ <property name="valign">start</property>
+ <property name="orientation">vertical</property>
+ <property name="margin-top">18</property>
+ <child>
+ <object class="GtkLabel" id="_title_label">
+ <property name="focusable">False</property>
+ <property name="halign">start</property>
+ <property name="ellipsize">middle</property>
+ <property name="margin-bottom">18</property>
+ <style>
+ <class name="title-1"/>
+ </style>
+ </object>
+ </child>
<child>
- <object class="GtkButton" id="_play_button">
- <property name="width-request">44</property>
- <property name="height-request">44</property>
- <property name="visible">True</property>
- <property name="can-focus">True</property>
- <property name="receives-default">True</property>
- <property name="image">_play_image</property>
- <property name="always_show_image">True</property>
- <property name="tooltip-text" translatable="yes">Play</property>
- <property name="valign">center</property>
- <signal name="clicked" handler="_on_play_button_clicked" swapped="no"/>
+ <object class="GtkLabel" id="_artist_label">
+ <property name="focusable">False</property>
+ <property name="halign">start</property>
+ <property name="ellipsize">middle</property>
+ <property name="margin-bottom">12</property>
<style>
- <class name="circular"/>
+ <class name="title-3"/>
</style>
</object>
</child>
<child>
- <object class="GtkMenuButton" id="_menu_button">
- <property name="width-request">44</property>
- <property name="height-request">44</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
+ <object class="GtkLabel" id="_released_label">
+ <property name="focusable">False</property>
<property name="halign">start</property>
- <property name="valign">center</property>
- <property name="focus_on_click">False</property>
- <property name="menu-model">album_menu</property>
- <property name="direction">none</property>
- <property name="use_popover">True</property>
- <property name="image">_view_more_image</property>
+ <property name="use_markup">True</property>
+ <property name="margin-bottom">12</property>
<style>
- <class name="image-button"/>
- <class name="circular"/>
+ <class name="dim-label"/>
</style>
</object>
</child>
+ <child>
+ <object class="GtkLabel" id="_composer_label">
+ <property name="focusable">False</property>
+ <property name="halign">start</property>
+ <property name="ellipsize">end</property>
+ <property name="margin-bottom">12</property>
+ <style>
+ <class name="dim-label"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <property name="spacing">12</property>
+ <property name="margin-top">6</property>
+ <child>
+ <object class="GtkButton" id="_play_button">
+ <property name="width-request">44</property>
+ <property name="height-request">44</property>
+ <property name="icon-name">media-playback-start-symbolic</property>
+ <property name="tooltip-text" translatable="yes">Play</property>
+ <property name="valign">center</property>
+ <signal name="clicked" handler="_on_play_button_clicked" swapped="no"/>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="_menu_button">
+ <property name="width-request">44</property>
+ <property name="height-request">44</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <property name="focus_on_click">False</property>
+ <property name="menu-model">album_menu</property>
+ <property name="direction">none</property>
+ <property name="icon_name">view-more-symbolic</property>
+ <style>
+ <class name="circular"/>
+ </style>
+ </object>
+ </child>
+ </object>
+ </child>
</object>
</child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="DiscListBox" id="_disc_list_box">
- <property name="can_focus">False</property>
- <property name="margin-top">48</property>
- <property name="selection_mode">0</property>
- <property name="visible">True</property>
+ <child>
+ <object class="GtkListBox" id="_disc_list_box">
+ <property name="focusable">False</property>
+ <property name="margin-top">48</property>
+ <property name="selection_mode">0</property>
+ <style>
+ <class name="background"/>
+ </style>
+ </object>
+ </child>
</object>
</child>
</object>
</child>
</template>
- <object class="GtkImage" id="_view_more_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">view-more-symbolic</property>
- <property name="icon_size">4</property>
- </object>
- <object class="GtkImage" id="_play_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">media-playback-start-symbolic</property>
- <property name="icon_size">4</property>
- </object>
<menu id="album_menu">
<item>
<attribute name="label" translatable="yes">_Play</attribute>
diff --git a/data/ui/AlbumsView.ui b/data/ui/AlbumsView.ui
index a6c29081..5523af53 100644
--- a/data/ui/AlbumsView.ui
+++ b/data/ui/AlbumsView.ui
@@ -1,49 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <requires lib="gtk+" version="3.18"/>
+ <requires lib="gtk" version="4.0"/>
<template class="AlbumsView" parent="GtkStack">
- <property name="visible">True</property>
<child>
- <object class="GtkScrolledWindow" id="_scrolled_window">
- <property name="visible">True</property>
- <child>
- <object class="GtkFlowBox" id="_flowbox">
- <property name="column_spacing">20</property>
- <property name="halign">fill</property>
- <property name="hexpand">True</property>
- <property name="homogeneous">True</property>
- <property name="margin-bottom">18</property>
- <property name="margin-end">18</property>
- <property name="margin-start">18</property>
- <property name="margin-top">18</property>
- <property name="max-children-per-line">20</property>
- <property name="min-children-per-line">1</property>
- <property name="row_spacing">12</property>
- <property name="selection-mode">none</property>
- <property name="valign">start</property>
- <property name="visible">True</property>
- <signal name="selected-children-changed" handler="_on_selected_children_changed" swapped="no"/>
- <style>
- <class name="content-view"/>
- </style>
+ <object class="GtkStackPage">
+ <property name="name">grid</property>
+ <property name="child">
+ <object class="GtkScrolledWindow" id="_scrolled_window">
+ <child>
+ <object class="GtkGridView" id="_gridview">
+ <property name="max-columns">10</property>
+ </object>
+ </child>
</object>
- </child>
+ </property>
</object>
</child>
<child>
- <object class="GtkScrolledWindow" id="_album_scrolled_window">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="hexpand">True</property>
- <property name="vexpand">True</property>
- <property name="hscrollbar_policy">never</property>
+ <object class="GtkStackPage">
+ <property name="name">widget</property>
+ <property name="child">
+ <object class="GtkScrolledWindow" id="_album_scrolled_window">
+ <property name="focusable">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="hscrollbar_policy">never</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="scroll-to-focus">True</property>
+ </object>
+ </child>
+ </object>
+ </property>
</object>
</child>
</template>
- <object class="GtkGestureLongPress" id="_flowbox_long_press">
- <property name="propagation-phase">capture</property>
- <property name="widget">_flowbox</property>
- <signal name="begin" handler="_on_flowbox_press_begin" swapped="no"/>
- <signal name="cancel" handler="_on_flowbox_press_cancel" swapped="no"/>
- </object>
</interface>
diff --git a/data/ui/AppMenu.ui b/data/ui/AppMenu.ui
index 71ae356b..70f9e7f5 100644
--- a/data/ui/AppMenu.ui
+++ b/data/ui/AppMenu.ui
@@ -1,24 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.22.1 -->
<interface>
- <requires lib="gtk+" version="3.20"/>
- <template class="AppMenu" parent="GtkPopoverMenu">
- <property name="can_focus">False</property>
+ <template class="AppMenu" parent="GtkPopover">
+ <property name="focusable">False</property>
+ <style>
+ <class name="menu"/>
+ </style>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="margin-bottom">6</property>
<property name="margin-end">6</property>
<property name="margin-start">6</property>
<property name="margin-top">6</property>
+ <property name="spacing">6</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkModelButton" id="lastfm_account_button">
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="halign">fill</property>
<property name="hexpand">False</property>
- <property name="visible">True</property>
<property name="action_name">app.lastfm-configure</property>
<property name="text" translatable="yes">Last.fm Account</property>
</object>
@@ -26,38 +26,33 @@
<child>
<object class="GtkBox" id="_lastfm_box">
<property name="margin-end">5</property>
- <property name="margin-start">5</property>
<property name="visible">False</property>
<child>
<object class="GtkLabel">
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="margin-end">12</property>
<property name="halign">start</property>
<property name="hexpand">False</property>
- <property name="visible">True</property>
<property name="label" translatable="yes">Report Music Listening</property>
</object>
</child>
<child>
<object class="GtkSwitch" id="_lastfm_switch">
- <property name="can_focus">True</property>
+ <property name="focusable">True</property>
<property name="halign">end</property>
- <property name="visible">True</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkSeparator">
- <property name="visible">True</property>
</object>
</child>
<child>
<object class="GtkModelButton" id="_keyboard_shortcuts_model_button">
<property name="halign">fill</property>
<property name="hexpand">False</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="focusable">True</property>
<property name="receives_default">True</property>
<property name="action_name">win.show-help-overlay</property>
<property name="text" translatable="yes">_Keyboard Shortcuts</property>
@@ -67,8 +62,7 @@
<object class="GtkModelButton" id="_help_model_button">
<property name="halign">fill</property>
<property name="hexpand">False</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="focusable">True</property>
<property name="receives_default">True</property>
<property name="action_name">app.help</property>
<property name="text" translatable="yes">_Help</property>
@@ -78,17 +72,13 @@
<object class="GtkModelButton" id="_about_model_button">
<property name="halign">fill</property>
<property name="hexpand">False</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="focusable">True</property>
<property name="receives_default">True</property>
<property name="action_name">app.about</property>
<property name="text" translatable="yes">_About Music</property>
</object>
</child>
</object>
- <packing>
- <property name="submenu">main</property>
- </packing>
</child>
</template>
</interface>
diff --git a/data/ui/ArtistAlbumsWidget.ui b/data/ui/ArtistAlbumsWidget.ui
index ae6a4cf5..f38c85b9 100644
--- a/data/ui/ArtistAlbumsWidget.ui
+++ b/data/ui/ArtistAlbumsWidget.ui
@@ -1,13 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <requires lib="gtk+" version="3.18"/>
- <template class="ArtistAlbumsWidget" parent="HdyClamp">
- <property name="maximum-size">1000</property>
- <property name="orientation">horizontal</property>
- <property name="visible">True</property>
+ <requires lib="gtk" version="4.0"/>
+ <template class="ArtistAlbumsWidget" parent="GtkBox">
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkListBox" id="_listbox">
- <property name="visible">True</property>
+ <object class="AdwClamp">
+ <property name="maximum-size">1000</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkListBox" id="_listbox">
+ <style>
+ <class name="background"/>
+ </style>
+ </object>
+ </child>
</object>
</child>
</template>
diff --git a/data/ui/ArtistSearchTile.ui b/data/ui/ArtistSearchTile.ui
index dac94c56..e95d950f 100644
--- a/data/ui/ArtistSearchTile.ui
+++ b/data/ui/ArtistSearchTile.ui
@@ -1,51 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <requires lib="gtk+" version="3.18"/>
<template class="ArtistSearchTile" parent="GtkFlowBoxChild">
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="has_tooltip">True</property>
<property name="valign">start</property>
<property name="orientation">vertical</property>
<signal name="query-tooltip" handler="_on_tooltip_query" swapped="no"/>
<child>
<object class="GtkOverlay">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="margin-bottom">4</property>
<child>
- <object class="GtkEventBox" id="_events">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <signal name="button-release-event" handler="_on_artist_event" swapped="no"/>
+ <object class="GtkImage" id="_cover_image">
+ <property name="hexpand">True</property>
<child>
- <object class="ArtStack" id="_art_stack">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="vexpand">True</property>
- <property name="valign">end</property>
- <property name="halign">center</property>
+ <object class="GtkGestureClick">
+ <signal name="released" handler="_on_artist_event" swapped="no"/>
</object>
</child>
</object>
</child>
<child type="overlay">
<object class="GtkCheckButton" id="_check">
- <property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="halign">end</property>
<property name="valign">end</property>
- <property name="draw_indicator">True</property>
+ <style>
+ <class name="selection-mode"/>
+ </style>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel" id="_artist_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="justify">center</property>
<property name="wrap">True</property>
<property name="ellipsize">middle</property>
diff --git a/data/ui/ArtistTile.ui b/data/ui/ArtistTile.ui
index c7af54de..e10f2b76 100644
--- a/data/ui/ArtistTile.ui
+++ b/data/ui/ArtistTile.ui
@@ -1,22 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <template class="ArtistTile" parent="GtkListBoxRow">
- <property name="can_focus">False</property>
- <property name="visible">True</property>
+ <template class="ArtistTile" parent="GtkBox">
+ <property name="focusable">False</property>
<child>
<object class="GtkBox">
<property name="orientation">horizontal</property>
- <property name="visible">True</property>
<property name="margin-start">10</property>
<child>
- <object class="ArtStack" id="_art_stack">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="GtkImage" id="_cover_image">
+ <property name="halign">center</property>
+ <property name="valign">center</property>
</object>
</child>
<child>
<object class="GtkLabel" id="_label">
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="ellipsize">end</property>
<property name="halign">start</property>
<property name="hexpand">False</property>
@@ -24,7 +22,6 @@
<property name="margin-end">10</property>
<property name="margin-start">10</property>
<property name="margin-top">16</property>
- <property name="visible">True</property>
</object>
</child>
</object>
diff --git a/data/ui/ArtistsView.ui b/data/ui/ArtistsView.ui
index 2e82fc83..8053288f 100644
--- a/data/ui/ArtistsView.ui
+++ b/data/ui/ArtistsView.ui
@@ -1,39 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <requires lib="gtk+" version="3.18"/>
+ <requires lib="gtk" version="4.0"/>
<template class="ArtistsView" parent="GtkPaned">
- <property name="visible">True</property>
+ <property name="shrink-start-child">0</property>
<child>
<object class="GtkScrolledWindow">
- <property name="visible">True</property>
<property name="width_request">220</property>
- <style>
- <class name="sidebar"/>
- </style>
<child>
- <object class="GtkListBox" id="_sidebar">
- <property name="selection_mode">single</property>
- <property name="visible">True</property>
- <signal name="row-activated" handler="_on_artist_activated" swapped="no"/>
+ <object class="GtkListView" id="_sidebar">
+ <property name="single-click-activate">True</property>
+ <signal name="activate" handler="_on_artist_activated" swapped="no"/>
+ <style>
+ <class name="navigation-sidebar"/>
+ </style>
</object>
</child>
</object>
- <packing>
- <property name="shrink">False</property>
- </packing>
</child>
<child>
- <object class="GtkScrolledWindow" id="_artist_container">
+ <object class="GtkScrolledWindow" id="_artist_view">
<property name="hexpand">True</property>
<property name="vexpand">True</property>
- <property name="visible">True</property>
- <child>
- <object class="GtkStack" id="_artist_view">
- <property name="transition-type">crossfade</property>
- <property name="vhomogeneous">False</property>
- <property name="visible">True</property>
- </object>
- </child>
</object>
</child>
</template>
diff --git a/data/ui/DiscBox.ui b/data/ui/DiscBox.ui
index 57df9e70..4899ecf8 100644
--- a/data/ui/DiscBox.ui
+++ b/data/ui/DiscBox.ui
@@ -1,23 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.20.0 -->
<interface>
- <requires lib="gtk+" version="3.12"/>
+ <requires lib="gtk" version="4.0"/>
<template parent="GtkListBoxRow" class="DiscBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="activatable">False</property>
<property name="selectable">False</property>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="_disc_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="halign">fill</property>
- <!-- <property name="hexpand">True</property> -->
<property name="xalign">0.0</property>
<style>
<class name="disc-label"/>
@@ -26,23 +21,16 @@
</child>
<child>
<object class="GtkListBox" id="_list_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="valign">start</property>
<property name="selection_mode">none</property>
<signal name="row-activated" handler="_song_activated" swapped="no"/>
<style>
- <class name="content"/>
+ <class name="boxed-list"/>
</style>
</object>
</child>
</object>
</child>
</template>
- <object class="GtkGestureMultiPress" id="_list_box_ctrlr">
- <property name="widget">_list_box</property>
- <property name="propagation-phase">capture</property>
- <property name="button">3</property>
- <signal name="pressed" handler="_list_box_right_click" swapped="no"/>
- </object>
</interface>
diff --git a/data/ui/DiscListItem.ui b/data/ui/DiscListItem.ui
new file mode 100644
index 00000000..dd3c85f3
--- /dev/null
+++ b/data/ui/DiscListItem.ui
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <requires lib="gtk+" version="4.0"/>
+ <template class="DiscListItem" parent="GtkListItem">
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel">
+ <binding name="label">
+ <lookup name="disc_nr" type="CoreDisc">
+ <lookup name="item">GtkListItem</lookup>
+ </lookup>
+ </binding>
+ </object>
+ </child>
+ <child>
+ <object class="DiscBox" id="_disc_box">
+ <binding name="model">
+ <lookup name="model" type="CoreDisc">
+ <lookup name="item">GtkListItem</lookup>
+ </lookup>
+ </binding>
+ </object>
+ </child>
+ </object>
+ </property>
+ </template>
+</interface>
diff --git a/data/ui/DropDown.ui b/data/ui/DropDown.ui
deleted file mode 100644
index fd4bffe3..00000000
--- a/data/ui/DropDown.ui
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
- <template class="DropDown" parent="GtkRevealer">
- <property name="halign">center</property>
- <property name="valign">start</property>
- <property name="visible">True</property>
- <child>
- <object class="GtkFrame">
- <property name="opacity">0.9</property>
- <property name="shadow-type">in</property>
- <property name="visible">True</property>
- <child>
- <object class="GtkGrid" id="_grid">
- <property name="orientation">horizontal</property>
- <property name="visible">True</property>
- <child>
- <object class="FilterView" id="_source_filter">
- </object>
- </child>
- <child>
- <object class="FilterView" id="_search_filter">
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- </template>
-</interface>
diff --git a/data/ui/EmptyView.ui b/data/ui/EmptyView.ui
index 61b74899..ea571e10 100644
--- a/data/ui/EmptyView.ui
+++ b/data/ui/EmptyView.ui
@@ -1,54 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <!-- interface-requires gtk+ 3.0 -->
<template class="EmptyView" parent="GtkStack">
- <property name="transition_type">crossfade</property>
<property name="visible">False</property>
<child>
- <object class="HdyStatusPage" id="_status_page">
- <property name="visible">True</property>
+ <object class="AdwStatusPage" id="_status_page">
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="icon_name">emblem-music-symbolic</property>
</object>
</child>
</template>
- <object class="GtkBox" id="_initial_state">
- <property name="visible">False</property>
- <property name="can_focus">False</property>
- <property name="valign">start</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="resource">/org/gnome/Music/icons/welcome-music.svg</property>
- <property name="height-request">600</property>
- <property name="width-request">800</property>
- </object>
- </child>
- <child>
- <object class="GtkLabel" id="_title_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="justify">center</property>
- <property name="label" translatable="yes">Welcome to Music</property>
- <style>
- <class name="title"/>
- <class name="large-title"/>
- </style>
- </object>
- </child>
+ <object class="AdwClamp" id="_initial_state">
+ <property name="maximum-size">620</property>
+ <property name="tightening-threshold">500</property>
<child>
- <object class="GtkLabel" id="_description_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="justify">center</property>
- <property name="use-markup">True</property>
- <style>
- <class name="description"/>
- <class name="body"/>
- </style>
+ <object class="GtkBox">
+ <property name="valign">start</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkPicture">
+ <property name="can-shrink">true</property>
+ <property name="keep-aspect-ratio">true</property>
+ <property name="file">resource:///org/gnome/Music/icons/welcome-music.svg</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="_title_label">
+ <property name="justify">center</property>
+ <property name="label" translatable="yes">Welcome to Music</property>
+ <style>
+ <class name="title-1"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="_description_label">
+ <property name="justify">center</property>
+ <property name="use-markup">True</property>
+ <style>
+ <class name="body"/>
+ </style>
+ </object>
+ </child>
</object>
</child>
</object>
diff --git a/data/ui/FilterView.ui b/data/ui/FilterView.ui
deleted file mode 100644
index 36816ae8..00000000
--- a/data/ui/FilterView.ui
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
- <template class="FilterView" parent="GtkTreeView">
- <property name="activate-on-single-click">True</property>
- <property name="enable-search">False</property>
- <property name="headers-visible">False</property>
- <property name="visible">True</property>
- <signal name="row-activated" handler="_on_row_activated"/>
- <child internal-child="selection">
- <object class="GtkTreeSelection">
- <property name="mode">none</property>
- </object>
- </child>
- </template>
-</interface>
diff --git a/data/ui/HeaderBar.ui b/data/ui/HeaderBar.ui
index 4ffd0db5..7064e406 100644
--- a/data/ui/HeaderBar.ui
+++ b/data/ui/HeaderBar.ui
@@ -1,123 +1,87 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.10 -->
- <template class="HeaderBar" parent="HdyHeaderBar">
- <property name="visible">True</property>
- <property name="vexpand">False</property>
- <style>
- <class name="titlebar"/>
- </style>
+ <template class="HeaderBar" parent="AdwBin">
<child>
- <object class="GtkMenuButton" id="_menu_button">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="valign">center</property>
- <property name="sensitive">True</property>
- <property name="tooltip_text" translatable="yes">Menu</property>
+ <object class="AdwHeaderBar" id="_headerbar">
+ <property name="vexpand">False</property>
<style>
- <class name="image-button"/>
+ <class name="titlebar"/>
</style>
- <child>
- <object class="GtkImage" id="_menu_button_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <child type="end">
+ <object class="GtkMenuButton" id="_menu_button">
+ <property name="valign">center</property>
+ <property name="sensitive">True</property>
<property name="icon-name">open-menu-symbolic</property>
- <property name="icon-size">1</property>
+ <property name="primary">True</property>
+ <property name="tooltip_text" translatable="yes">Menu</property>
</object>
</child>
- </object>
- <packing>
- <property name="pack_type">end</property>
- </packing>
- </child>
- <child>
- <object class="GtkToggleButton" id="_select_button">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="valign">center</property>
- <property name="sensitive">True</property>
- <property name="tooltip_text" translatable="yes">Select</property>
- <style>
- <class name="image-button"/>
- </style>
- <child>
- <object class="GtkImage" id="_select_button_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon-name">object-select-symbolic</property>
- <property name="icon-size">1</property>
+ <child type="end">
+ <object class="GtkToggleButton" id="_select_button">
+ <property name="valign">center</property>
+ <property name="sensitive">True</property>
+ <property name="icon-name">selection-mode-symbolic</property>
+ <property name="tooltip_text" translatable="yes">Select</property>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkButton" id="_cancel_button">
+ <property name="visible">False</property>
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="use_underline">True</property>
+ <property name="valign">center</property>
+ <property name="sensitive">True</property>
+ <signal name="clicked" handler="_on_cancel_button_clicked" swapped="no"/>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkToggleButton" id="_search_button">
+ <property name="valign">center</property>
+ <property name="sensitive">True</property>
+ <property name="icon-name">edit-find-symbolic</property>
+ <property name="tooltip_text" translatable="yes">Search</property>
+ </object>
+ </child>
+ <child type="start">
+ <object class="GtkButton" id="_back_button">
+ <property name="valign">center</property>
+ <property name="sensitive">True</property>
+ <property name="icon-name">go-previous-symbolic</property>
+ <property name="tooltip_text" translatable="yes">Back</property>
+ <signal name="clicked" handler="_on_back_button_clicked" swapped="no"/>
</object>
</child>
</object>
- <packing>
- <property name="pack_type">end</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="_cancel_button">
- <property name="visible">False</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">_Cancel</property>
- <property name="use_underline">True</property>
- <property name="valign">center</property>
- <property name="sensitive">True</property>
- <signal name="clicked" handler="_on_cancel_button_clicked" swapped="no"/>
- <style>
- <class name="text-button"/>
- </style>
- </object>
- <packing>
- <property name="pack_type">end</property>
- </packing>
</child>
+ </template>
+ <object class="GtkBox" id="_label_title_box">
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkToggleButton" id="_search_button">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="valign">center</property>
- <property name="sensitive">True</property>
- <property name="tooltip_text" translatable="yes">Search</property>
+ <object class="GtkLabel" id="_label_title">
+ <property name="single-line-mode">True</property>
+ <property name="ellipsize">end</property>
+ <property name="width-chars">5</property>
+ <property name="vexpand">True</property>
+ <property name="yalign">1.0</property>
<style>
- <class name="image-button"/>
+ <class name="title"/>
</style>
- <child>
- <object class="GtkImage" id="_search_button_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon-name">edit-find-symbolic</property>
- <property name="icon-size">1</property>
- </object>
- </child>
</object>
- <packing>
- <property name="pack_type">end</property>
- </packing>
</child>
<child>
- <object class="GtkButton" id="_back_button">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="valign">center</property>
- <property name="sensitive">True</property>
- <property name="tooltip_text" translatable="yes">Back</property>
- <signal name="clicked" handler="_on_back_button_clicked" swapped="no"/>
+ <object class="GtkLabel" id="_label_subtitle">
+ <property name="single-line-mode">True</property>
+ <property name="ellipsize">end</property>
+ <property name="width-chars">5</property>
+ <property name="vexpand">True</property>
+ <property name="yalign">0.0</property>
<style>
- <class name="image-button"/>
+ <class name="subtitle"/>
</style>
- <child>
- <object class="GtkImage" id="_back_button_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon-name">go-previous-symbolic</property>
- <property name="icon-size">1</property>
- </object>
- </child>
</object>
- <packing>
- <property name="pack_type">start</property>
- </packing>
</child>
- </template>
+ </object>
<object class="GtkSizeGroup" id="size1">
<property name="mode">vertical</property>
<widgets>
diff --git a/data/ui/LastfmDialog.ui b/data/ui/LastfmDialog.ui
index 6096f608..926c7872 100644
--- a/data/ui/LastfmDialog.ui
+++ b/data/ui/LastfmDialog.ui
@@ -1,15 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="LastfmDialog" parent="GtkDialog">
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="destroy_with_parent">True</property>
<property name="modal">True</property>
<property name="resizable">False</property>
<property name="title" translatable="yes">Last.fm Account</property>
- <property name="type_hint">dialog</property>
<property name="valign">start</property>
- <property name="window_position">center-on-parent</property>
- <child internal-child="vbox">
+ <child internal-child="content_area">
<object class="GtkBox">
<property name="margin-bottom">16</property>
<property name="margin-end">16</property>
@@ -17,13 +15,11 @@
<property name="margin-top">16</property>
<property name="orientation">vertical</property>
<property name="valign">start</property>
- <property name="visible">True</property>
<child>
<object class="GtkLabel" id="introduction_label">
<property name="halign">start</property>
<property name="label" translatable="yes">Last.fm is a music discovery service that gives you personalised recommendations based on the music you listen to.</property>
<property name="margin-bottom">16</property>
- <property name="visible">True</property>
<property name="max_width_chars">60</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
@@ -34,7 +30,6 @@
<property name="halign">start</property>
<property name="label" translatable="yes">Music Reporting Not Setup</property>
<property name="margin-bottom">8</property>
- <property name="visible">True</property>
<property name="max_width_chars">60</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
@@ -48,7 +43,6 @@
<property name="halign">start</property>
<property name="label" translatable="yes">Login to your Last.fm account to report your music listening.</property>
<property name="margin-bottom">12</property>
- <property name="visible">True</property>
<property name="max_width_chars">60</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
@@ -56,17 +50,13 @@
</child>
<child>
<object class="GtkButton" id="_action_button">
+ <signal name="clicked" handler="_on_action_button_clicked" swapped="no"/>
<property name="halign">start</property>
<property name="label" translatable="yes">Login</property>
<property name="margin-bottom">8</property>
- <property name="visible">True</property>
</object>
</child>
</object>
</child>
</template>
- <object class="GtkGestureMultiPress" id="_action_button_gesture">
- <property name="widget">_action_button</property>
- <signal name="released" handler="_on_action_button_clicked" swapped="no"/>
- </object>
</interface>
diff --git a/data/ui/LoadingNotification.ui b/data/ui/LoadingNotification.ui
deleted file mode 100644
index 3af3a1ac..00000000
--- a/data/ui/LoadingNotification.ui
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
- <template class="LoadingNotification" parent="GtkGrid">
- <property name="column_spacing">18</property>
- <child>
- <object class="GtkSpinner">
- <property name="visible">True</property>
- <property name="active">True</property>
- </object>
- </child>
- <child>
- <object class="GtkLabel">
- <property name="visible">True</property>
- <property name="halign">start</property>
- <property name="hexpand">True</property>
- <property name="label" translatable="yes">Loading</property>
- </object>
- </child>
- </template>
-</interface>
diff --git a/data/ui/NotificationsPopup.ui b/data/ui/NotificationsPopup.ui
deleted file mode 100644
index 5215c413..00000000
--- a/data/ui/NotificationsPopup.ui
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
- <template class="NotificationsPopup" parent="GtkRevealer">
- <property name="visible">True</property>
- <property name="halign">center</property>
- <property name="valign">start</property>
- <child>
- <object class="GtkFrame">
- <property name="visible">True</property>
- <child>
- <object class="GtkBox" id="_box">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <property name="spacing">6</property>
- </object>
- </child>
- <style>
- <class name="app-notification"/>
- </style>
- </object>
- </child>
- </template>
-</interface>
diff --git a/data/ui/PlayerToolbar.ui b/data/ui/PlayerToolbar.ui
index fe73ce70..39616b80 100644
--- a/data/ui/PlayerToolbar.ui
+++ b/data/ui/PlayerToolbar.ui
@@ -1,56 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <requires lib="gtk+" version="3.12"/>
- <object class="GtkImage" id="next_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">media-skip-forward-symbolic</property>
- <property name="icon_size">1</property>
- </object>
- <object class="GtkImage" id="_pause_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">media-playback-pause-symbolic</property>
- <property name="icon_size">3</property>
- <property name="margin-bottom">4</property>
- <property name="margin-top">4</property>
- </object>
- <object class="GtkImage" id="_play_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">media-playback-start-symbolic</property>
- <property name="icon_size">3</property>
- <property name="margin-bottom">4</property>
- <property name="margin-top">4</property>
- </object>
- <object class="GtkImage" id="previous_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">media-skip-backward-symbolic</property>
- <property name="icon_size">1</property>
- </object>
+ <requires lib="gtk" version="4.0"/>
<template class="PlayerToolbar" parent="GtkActionBar">
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
+ <property name="revealed">False</property>
<child>
<object class="GtkBox" id="_song_info_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="halign">center</property>
<property name="has_tooltip">True</property>
<property name="valign">center</property>
<property name="spacing">8</property>
- <property name="margin">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-start">6</property>
+ <property name="margin-top">6</property>
<signal name="query-tooltip" handler="_on_tooltip_query"/>
<child>
- <object class="ArtStack" id="_art_stack">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="GtkImage" id="_cover_image">
</object>
</child>
<child>
<object class="GtkBox" id="nowplaying_labels">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="orientation">vertical</property>
@@ -58,8 +30,7 @@
<property name="spacing">3</property>
<child>
<object class="GtkLabel" id="_title_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="halign">start</property>
<property name="ellipsize">middle</property>
<property name="max_width_chars">28</property>
@@ -70,8 +41,7 @@
</child>
<child>
<object class="GtkLabel" id="_artist_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="halign">start</property>
<property name="ellipsize">middle</property>
<property name="max_width_chars">28</property>
@@ -83,86 +53,77 @@
</child>
<child type="center">
<object class="GtkBox" id="_buttons_and_scale">
+ <property name="hexpand">True</property>
<property name="orientation">vertical</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="margin">6</property>
+ <property name="focusable">False</property>
+ <property name="margin-bottom">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-start">6</property>
+ <property name="margin-top">6</property>
<child>
<object class="GtkBox" id="buttons">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="halign">center</property>
<property name="spacing">4</property>
<child>
<object class="GtkButton" id="_prev_button">
- <property name="width_request">42</property>
- <property name="visible">True</property>
<property name="sensitive">False</property>
- <property name="can_focus">True</property>
+ <property name="focusable">True</property>
<property name="receives_default">True</property>
- <property name="image">previous_image</property>
- <property name="always_show_image">True</property>
+ <property name="icon_name">media-skip-backward-symbolic</property>
<property name="tooltip_text" translatable="yes">Previous</property>
+ <property name="valign">center</property>
<signal name="clicked" handler="_on_prev_button_clicked" swapped="no"/>
<style>
- <class name="flat"/>
- <class name="semi-circular"/>
+ <class name="circular"/>
</style>
</object>
</child>
<child>
<object class="GtkButton" id="_play_button">
- <property name="width_request">80</property>
- <property name="visible">True</property>
<property name="sensitive">False</property>
- <property name="can_focus">True</property>
+ <property name="focusable">True</property>
<property name="receives_default">True</property>
- <property name="image">_play_image</property>
- <property name="always_show_image">True</property>
<property name="tooltip_text" translatable="yes">Play</property>
<signal name="clicked" handler="_on_play_button_clicked" swapped="no"/>
<style>
- <class name="border-solid"/>
<class name="pill"/>
</style>
+ <child>
+ <object class="GtkImage" id="_play_pause_image">
+ <property name="icon_name">media-playback-start-symbolic</property>
+ <property name="icon_size">2</property>
+ </object>
+ </child>
</object>
</child>
<child>
<object class="GtkButton" id="_next_button">
- <property name="width_request">42</property>
- <property name="visible">True</property>
<property name="sensitive">False</property>
- <property name="can_focus">True</property>
+ <property name="focusable">True</property>
<property name="receives_default">True</property>
- <property name="image">next_image</property>
- <property name="always_show_image">True</property>
+ <property name="icon_name">media-skip-forward-symbolic</property>
<property name="tooltip_text" translatable="yes">Next</property>
+ <property name="valign">center</property>
<signal name="clicked" handler="_on_next_button_clicked" swapped="no"/>
<style>
- <class name="flat"/>
- <class name="semi-circular"/>
+ <class name="circular"/>
</style>
</object>
</child>
- <style>
- <class name="linked"/>
- </style>
</object>
</child>
<child>
- <object class="HdyClamp">
+ <object class="AdwClamp">
<property name="maximum-size">1000</property>
- <property name="visible">True</property>
<child>
<object class="GtkBox" id="scale_and_timer">
- <property name="visible">True</property>
<property name="orientation">horizontal</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="margin_top">12</property>
<child>
<object class="GtkLabel" id="_progress_time_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="label">0∶00</property>
@@ -173,8 +134,7 @@
</child>
<child>
<object class="SmoothScale" id="_progress_scale">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="focusable">True</property>
<property name="valign">center</property>
<property name="hexpand">True</property>
<property name="draw_value">False</property>
@@ -186,8 +146,7 @@
</child>
<child>
<object class="GtkLabel" id="_duration_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="label">0∶00</property>
@@ -202,37 +161,34 @@
</child>
</object>
</child>
- <child>
+ <child type="end">
<object class="GtkBox" id="menuBox">
<property name="height_request">34</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="halign">end</property>
<property name="valign">center</property>
- <property name="margin">6</property>
+ <property name="margin-bottom">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-start">6</property>
+ <property name="margin-top">6</property>
<child>
<object class="GtkMenuButton" id="_repeat_menu_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="focusable">True</property>
<property name="receives_default">True</property>
- <property name="use_popover">True</property>
<child>
<object class="GtkBox" id="replayBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkImage" id="_repeat_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="icon_name">media-playlist-consecutive-symbolic</property>
<property name="icon_size">1</property>
</object>
</child>
<child>
<object class="GtkImage" id="downArrow">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="icon_name">pan-down-symbolic</property>
<property name="icon_size">1</property>
</object>
@@ -242,9 +198,6 @@
</object>
</child>
</object>
- <packing>
- <property name="pack-type">end</property>
- </packing>
</child>
</template>
</interface>
diff --git a/data/ui/PlaylistControls.ui b/data/ui/PlaylistControls.ui
index 83624112..04ea750b 100644
--- a/data/ui/PlaylistControls.ui
+++ b/data/ui/PlaylistControls.ui
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <!-- interface-requires gtk+ 3.12 -->
<menu id="playlistMenu">
<item>
<attribute name="label" translatable="yes">_Play</attribute>
@@ -15,30 +14,15 @@
<attribute name="action">win.playlist_rename</attribute>
</item>
</menu>
- <object class="GtkImage" id="_view_more_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">view-more-symbolic</property>
- <property name="icon_size">4</property>
- </object>
- <object class="GtkImage" id="_play_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">media-playback-start-symbolic</property>
- <property name="icon_size">4</property>
- </object>
<template class="PlaylistControls" parent="GtkBox">
<property name="orientation">vertical</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="margin-top">30</property>
<child>
<object class="GtkStack" id="_name_stack">
- <property name="visible">True</property>
<child>
<object class="GtkLabel" id="_name_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="hexpand">True</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Playlist Name</property>
@@ -50,50 +34,49 @@
</object>
</child>
<child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="orientation">horizontal</property>
- <style>
- <class name="linked"/>
- </style>
- <child>
- <object class="GtkEntry" id="_rename_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="is_focus">True</property>
- <property name="has_focus">True</property>
- <property name="receives_default">True</property>
- <signal name="activate" handler="_on_playlist_renamed" swapped="no"/>
- <signal name="changed" handler="_on_rename_entry_changed" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="_rename_done_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="has_focus">True</property>
- <property name="receives_default">True</property>
- <property name="label" translatable="yes">_Done</property>
- <property name="use_underline">True</property>
- <property name="sensitive">True</property>
- <signal name="clicked" handler="_on_playlist_renamed" swapped="no" />
+ <object class="GtkStackPage">
+ <property name="name">renaming_dialog</property>
+ <property name="child">
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
<style>
- <class name="suggested-action"/>
+ <class name="linked"/>
</style>
+ <child>
+ <object class="GtkEntry" id="_rename_entry">
+ <child>
+ <object class="GtkEventControllerKey" id="_rename_controller">
+ <signal name="key-pressed" handler="_on_rename_entry_key_pressed" swapped="no"/>
+ </object>
+ </child>
+ <property name="focusable">True</property>
+ <property name="receives_default">True</property>
+ <signal name="activate" handler="_on_playlist_renamed" swapped="no"/>
+ <signal name="changed" handler="_on_rename_entry_changed" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="_rename_done_button">
+ <property name="focusable">True</property>
+ <property name="receives_default">True</property>
+ <property name="label" translatable="yes">_Done</property>
+ <property name="use_underline">True</property>
+ <property name="sensitive">True</property>
+ <signal name="clicked" handler="_on_playlist_renamed" swapped="no" />
+ <style>
+ <class name="suggested-action"/>
+ </style>
+ </object>
+ </child>
</object>
- </child>
+ </property>
</object>
- <packing>
- <property name="name">renaming_dialog</property>
- </packing>
</child>
</object>
</child>
<child>
<object class="GtkLabel" id="_songs_count_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="halign">start</property>
<property name="label"></property>
<property name="margin-bottom">4</property>
@@ -105,7 +88,6 @@
<child>
<object class="GtkBox">
<property name="orientation">horizontal</property>
- <property name="visible">True</property>
<property name="spacing">12</property>
<property name="margin-top">18</property>
<property name="margin-bottom">8</property>
@@ -113,11 +95,9 @@
<object class="GtkButton" id="_play_button">
<property name="height-request">44</property>
<property name="width-request">44</property>
- <property name="visible">True</property>
- <property name="can-focus">True</property>
+ <property name="focusable">True</property>
<property name="receives-default">True</property>
- <property name="image">_play_image</property>
- <property name="always_show_image">True</property>
+ <property name="icon_name">media-playback-start-symbolic</property>
<property name="tooltip-text" translatable="yes">Play</property>
<property name="valign">center</property>
<signal name="clicked" handler="_on_play_button_clicked" swapped="no"/>
@@ -130,18 +110,15 @@
<object class="GtkMenuButton" id="_menubutton">
<property name="height-request">44</property>
<property name="width-request">44</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="focusable">True</property>
<property name="receives_default">True</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="focus_on_click">False</property>
<property name="menu-model">playlistMenu</property>
<property name="direction">none</property>
- <property name="use_popover">True</property>
- <property name="image">_view_more_image</property>
+ <property name="icon_name">view-more-symbolic</property>
<style>
- <class name="image-button"/>
<class name="circular"/>
</style>
</object>
@@ -149,8 +126,4 @@
</object>
</child>
</template>
- <object class="GtkEventControllerKey" id="_rename_controller">
- <property name="widget">_rename_entry</property>
- <signal name="key-pressed" handler="_on_rename_entry_key_pressed" swapped="no"/>
- </object>
</interface>
diff --git a/data/ui/PlaylistDialog.ui b/data/ui/PlaylistDialog.ui
index 30e2384a..51e58c87 100644
--- a/data/ui/PlaylistDialog.ui
+++ b/data/ui/PlaylistDialog.ui
@@ -1,42 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.20.0 -->
<interface>
- <requires lib="gtk+" version="3.10"/>
+ <requires lib="gtk" version="4.0"/>
<template class="PlaylistDialog" parent="GtkDialog">
<property name="width_request">400</property>
<property name="height_request">500</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="modal">True</property>
<property name="destroy_with_parent">True</property>
- <property name="type_hint">dialog</property>
- <child internal-child="vbox">
+ <child internal-child="content_area">
<object class="GtkBox" id="dialog-vbox">
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="orientation">vertical</property>
- <child internal-child="action_area">
- <object class="GtkButtonBox">
- <property name="can_focus">False</property>
- </object>
- <packing>
- <property name="position">0</property>
- </packing>
- </child>
<child>
<object class="GtkStack" id="_add_playlist_stack">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="transition_duration">250</property>
<child>
<object class="GtkBox" id="_empty_box">
<property name="visible">False</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="orientation">vertical</property>
<property name="valign">fill</property>
<property name="vexpand">True</property>
@@ -46,8 +34,7 @@
<property name="margin-top">18</property>
<child>
<object class="GtkImage" id="image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="valign">center</property>
<property name="pixel_size">100</property>
<property name="icon_name">emblem-music-symbolic</property>
@@ -61,8 +48,7 @@
</child>
<child>
<object class="GtkLabel" id="label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="label" translatable="yes">Enter a name for your first playlist</property>
<property name="valign">end</property>
</object>
@@ -71,8 +57,7 @@
<object class="GtkEntry" id="_first_playlist_entry">
<property name="width_request">300</property>
<property name="height_request">10</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="focusable">True</property>
<property name="halign">center</property>
<property name="margin-bottom">16</property>
<property name="margin-end">18</property>
@@ -80,7 +65,11 @@
<property name="margin-top">18</property>
<signal name="activate" handler="_on_editing_done" swapped="no"/>
<signal name="changed" handler="_on_add_playlist_entry_changed" swapped="no"/>
- <signal name="focus-in-event" handler="_on_add_playlist_entry_focused" swapped="no"/>
+ <child>
+ <object class="GtkEventControllerFocus">
+ <signal name="enter" handler="_on_add_playlist_entry_focused" swapped="no"/>
+ </object>
+ </child>
</object>
</child>
<child>
@@ -89,9 +78,8 @@
<property name="use_underline">True</property>
<property name="width_request">120</property>
<property name="height_request">25</property>
- <property name="visible">True</property>
<property name="sensitive">False</property>
- <property name="can_focus">True</property>
+ <property name="focusable">True</property>
<property name="receives_default">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
@@ -105,8 +93,8 @@
</object>
</child>
<child>
- <object class="GtkButtonBox">
- <property name="can_focus">False</property>
+ <object class="GtkBox">
+ <property name="focusable">False</property>
</object>
</child>
</object>
@@ -114,60 +102,65 @@
<child>
<object class="GtkBox" id="_normal_box">
<property name="visible">False</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="focusable">True</property>
<property name="vexpand">True</property>
<child>
- <object class="GtkListBox" id="_listbox">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="selection_mode">single</property>
- <property name="valign">start</property>
- <signal name="selected-rows-changed" handler="_on_selected_rows_changed" swapped="no"/>
+ <object class="GtkViewport">
+ <property name="scroll-to-focus">True</property>
+ <child>
+ <object class="GtkListBox" id="_listbox">
+ <property name="focusable">True</property>
+ <property name="selection_mode">single</property>
+ <property name="valign">start</property>
+ <signal name="selected-rows-changed" handler="_on_selected_rows_changed" swapped="no"/>
+ </object>
+ </child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkSeparator">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
</object>
</child>
<child>
<object class="GtkBox" id="new-playlist-hbox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="border_width">6</property>
+ <property name="focusable">False</property>
+ <property name="margin-bottom">6</property>
+ <property name="margin-end">6</property>
+ <property name="margin-start">6</property>
+ <property name="margin-top">6</property>
<child>
<object class="GtkEntry" id="_new_playlist_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="focusable">True</property>
<property name="hexpand">True</property>
<property name="placeholder_text" translatable="yes">New Playlist…</property>
<signal name="activate" handler="_on_editing_done" swapped="no"/>
<signal name="changed" handler="_on_add_playlist_entry_changed" swapped="no"/>
- <signal name="focus-in-event" handler="_on_add_playlist_entry_focused" swapped="no"/>
<style>
<class name="linked"/>
</style>
+ <child>
+ <object class="GtkEventControllerFocus">
+ <signal name="enter" handler="_on_add_playlist_entry_focused" swapped="no"/>
+ </object>
+ </child>
</object>
</child>
<child>
<object class="GtkButton" id="_new_playlist_button">
<property name="label" translatable="yes">Add</property>
- <property name="visible">True</property>
<property name="sensitive">False</property>
- <property name="can_focus">True</property>
+ <property name="focusable">True</property>
<property name="receives_default">False</property>
<signal name="clicked" handler="_on_editing_done" swapped="no"/>
<style>
@@ -182,18 +175,11 @@
</object>
</child>
</object>
- <packing>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
</child>
<child>
- <object class="GtkButtonBox">
- <property name="can_focus">False</property>
+ <object class="GtkBox">
+ <property name="focusable">False</property>
</object>
- <packing>
- <property name="position">2</property>
- </packing>
</child>
</object>
</child>
@@ -201,41 +187,48 @@
</child>
</object>
</child>
+ <child internal-child="action_area">
+ <object class="GtkBox">
+ <property name="focusable">False</property>
+ <property name="visible">False</property>
+ </object>
+ </child>
</template>
<object class="GtkHeaderBar" id="_title_bar">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="title" translatable="yes">Add to Playlist</property>
+ <property name="focusable">False</property>
+ <property name="show_title_buttons">False</property>
+ <property name="title-widget">
+ <object class="GtkLabel">
+ <property name="label" translatable="yes">Add to Playlist</property>
+ <property name="single-line-mode">True</property>
+ <property name="ellipsize">end</property>
+ <property name="width-chars">5</property>
+ <style>
+ <class name="title"/>
+ </style>
+ </object>
+ </property>
<child>
<object class="GtkButton" id="_cancel_button">
<property name="label" translatable="yes">_Cancel</property>
<property name="use_underline">True</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="receives_default">False</property>
<signal name="clicked" handler="_on_cancel_button_clicked" swapped="no"/>
- <style>
- <class name="text-button"/>
- </style>
</object>
</child>
- <child>
+ <child type="end">
<object class="GtkButton" id="_select_button">
<property name="label" translatable="yes">_Add</property>
<property name="sensitive">False</property>
<property name="use_underline">True</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="receives_default">False</property>
<signal name="clicked" handler="_on_selection" swapped="no"/>
<style>
<class name="suggested-action"/>
- <class name="text-button"/>
</style>
</object>
- <packing>
- <property name="pack_type">end</property>
- </packing>
</child>
</object>
</interface>
diff --git a/data/ui/PlaylistDialogRow.ui b/data/ui/PlaylistDialogRow.ui
index 0810e0f6..c9c96175 100644
--- a/data/ui/PlaylistDialogRow.ui
+++ b/data/ui/PlaylistDialogRow.ui
@@ -1,13 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="PlaylistDialogRow" parent="GtkListBoxRow">
- <property name="visible">True</property>
<style>
<class name="playlistdialog-row"/>
</style>
<child>
<object class="GtkBox" id="hbox">
- <property name="visible">True</property>
<child>
<object class="GtkLabel" id="_label">
<property name="ellipsize">end</property>
@@ -15,14 +13,13 @@
<property name="margin-end">8</property>
<property name="margin-start">8</property>
<property name="margin-top">8</property>
- <property name="visible">True</property>
<property name="xalign">0.0</property>
</object>
</child>
<child>
<object class="GtkImage" id="_selection_icon">
- <property name="icon-name">object-select-symbolic</property>
- <property name="icon-size">2</property>
+ <property name="icon-name">selection-mode-symbolic</property>
+ <property name="icon-size">1</property>
</object>
</child>
</object>
diff --git a/data/ui/PlaylistNotification.ui b/data/ui/PlaylistNotification.ui
deleted file mode 100644
index b10ee723..00000000
--- a/data/ui/PlaylistNotification.ui
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<interface>
- <object class="GtkImage" id="close_notification_window">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">window-close-symbolic</property>
- <property name="icon_size">1</property>
- </object>
- <template class="PlaylistNotification" parent="GtkGrid">
- <property name="visible">True</property>
- <property name="column_spacing">18</property>
- <child>
- <object class="GtkLabel" id="_label">
- <property name="visible">True</property>
- <property name="halign">start</property>
- <property name="hexpand">True</property>
- <property name="label" translatable="yes"></property>
- </object>
- </child>
- <child>
- <object class="GtkButton">
- <property name="label" translatable="yes">_Undo</property>
- <property name="use_underline">True</property>
- <property name="visible">True</property>
- <signal name="clicked" handler="_undo_deletion" swapped="no"/>
- </object>
- </child>
- <child>
- <object class="GtkButton">
- <property name="always_show_image">True</property>
- <property name="image">close_notification_window</property>
- <property name="image_position">right</property>
- <property name="relief">none</property>
- <property name="visible">True</property>
- <signal name="clicked" handler="_close_notification" swapped="no"/>
- </object>
- </child>
- </template>
-</interface>
diff --git a/data/ui/PlaylistTile.ui b/data/ui/PlaylistTile.ui
index 16fb590e..2375857f 100644
--- a/data/ui/PlaylistTile.ui
+++ b/data/ui/PlaylistTile.ui
@@ -1,17 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="PlaylistTile" parent="GtkListBoxRow">
- <property name="visible">True</property>
<child>
<object class="GtkBox">
<property name="orientation">horizontal</property>
- <property name="visible">True</property>
<property name="margin-start">10</property>
<child>
<object class="GtkImage" id="_icon">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_size">4</property>
+ <property name="focusable">False</property>
+ <property name="icon-size">normal</property>
<property name="valign">center</property>
<style>
<class name="playlist-icon"/>
@@ -20,7 +17,7 @@
</child>
<child>
<object class="GtkLabel" id="_label">
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="ellipsize">end</property>
<property name="halign">start</property>
<property name="hexpand">False</property>
@@ -28,7 +25,6 @@
<property name="margin-end">10</property>
<property name="margin-start">10</property>
<property name="margin-top">16</property>
- <property name="visible">True</property>
</object>
</child>
</object>
diff --git a/data/ui/PlaylistsView.ui b/data/ui/PlaylistsView.ui
index 8cb743e1..a1ac17fc 100644
--- a/data/ui/PlaylistsView.ui
+++ b/data/ui/PlaylistsView.ui
@@ -1,26 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <requires lib="gtk+" version="3.18"/>
<template class="PlaylistsView" parent="GtkPaned">
- <property name="visible">True</property>
+ <property name="shrink-start-child">0</property>
<child>
<object class="GtkScrolledWindow">
- <property name="visible">True</property>
<property name="width-request">220</property>
- <style>
- <class name="sidebar"/>
- </style>
<child>
- <object class="GtkListBox" id="_sidebar">
- <property name="selection-mode">single</property>
- <property name="visible">True</property>
- <signal name="row-activated" handler="_on_playlist_activated" swapped="no"/>
+ <object class="GtkViewport">
+ <property name="scroll-to-focus">True</property>
+ <child>
+ <object class="GtkListBox" id="_sidebar">
+ <property name="selection-mode">single</property>
+ <signal name="row-activated" handler="_on_playlist_activated" swapped="no"/>
+ <style>
+ <class name="navigation-sidebar"/>
+ </style>
+ </object>
+ </child>
</object>
</child>
</object>
- <packing>
- <property name="shrink">False</property>
- </packing>
</child>
</template>
</interface>
diff --git a/data/ui/PlaylistsWidget.ui b/data/ui/PlaylistsWidget.ui
index 026dc401..7a9e3cfb 100644
--- a/data/ui/PlaylistsWidget.ui
+++ b/data/ui/PlaylistsWidget.ui
@@ -2,14 +2,11 @@
<interface>
<template class="PlaylistsWidget" parent="GtkBox">
<property name="orientation">vertical</property>
- <property name="visible">True</property>
<child>
- <object class="HdyClamp">
+ <object class="AdwClamp">
<property name="maximum-size">1000</property>
- <property name="visible">True</property>
<child>
<object class="PlaylistControls" id="_pl_ctrls">
- <property name="visible">True</property>
</object>
</child>
</object>
@@ -17,19 +14,17 @@
<child>
<object class="GtkScrolledWindow" id="playlist-container">
<property name="vexpand">True</property>
- <property name="visible">True</property>
<child>
- <object class="HdyClamp">
+ <object class="AdwClamp">
<property name="maximum-size">1000</property>
- <property name="visible">True</property>
+ <property name="valign">start</property>
<child>
<object class="GtkListBox" id="_songs_list">
<property name="margin-bottom">20</property>
<property name="margin-top">20</property>
- <property name="visible">True</property>
<signal name="row-activated" handler="_on_song_activated" swapped="no"/>
<style>
- <class name="content"/>
+ <class name="boxed-list"/>
</style>
</object>
</child>
@@ -38,10 +33,4 @@
</object>
</child>
</template>
- <object class="GtkGestureMultiPress" id="_songs_list_ctrlr">
- <property name="widget">_songs_list</property>
- <property name="propagation-phase">capture</property>
- <property name="button">3</property>
- <signal name="pressed" handler="_songs_list_right_click" swapped="no"/>
- </object>
</interface>
diff --git a/data/ui/SearchHeaderBar.ui b/data/ui/SearchHeaderBar.ui
index 37c70b66..d8dec507 100644
--- a/data/ui/SearchHeaderBar.ui
+++ b/data/ui/SearchHeaderBar.ui
@@ -1,81 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <!-- interface-requires gtk+ 3.10 -->
- <template class="SearchHeaderBar" parent="HdyHeaderBar">
- <property name="visible">True</property>
- <property name="vexpand">False</property>
- <style>
- <class name="titlebar"/>
- </style>
+ <template class="SearchHeaderBar" parent="AdwBin">
<child>
- <object class="GtkToggleButton" id="_select_button">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="valign">center</property>
- <property name="sensitive">True</property>
- <property name="tooltip_text" translatable="yes">Select</property>
+ <object class="AdwHeaderBar" id="_headerbar">
+ <property name="vexpand">False</property>
<style>
- <class name="image-button"/>
+ <class name="titlebar"/>
</style>
- <child>
- <object class="GtkImage" id="_select_button_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon-name">object-select-symbolic</property>
- <property name="icon-size">1</property>
+ <child type="end">
+ <object class="GtkToggleButton" id="_select_button">
+ <property name="valign">center</property>
+ <property name="sensitive">True</property>
+ <property name="icon-name">selection-mode-symbolic</property>
+ <property name="tooltip_text" translatable="yes">Select</property>
</object>
</child>
- </object>
- <packing>
- <property name="pack_type">end</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="_cancel_button">
- <property name="visible">False</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">_Cancel</property>
- <property name="use_underline">True</property>
- <property name="valign">center</property>
- <property name="sensitive">True</property>
- <signal name="clicked" handler="_on_cancel_button_clicked" swapped="no"/>
- <style>
- <class name="text-button"/>
- </style>
- </object>
- <packing>
- <property name="pack_type">end</property>
- </packing>
- </child>
- <child>
- <object class="GtkToggleButton" id="_search_button">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="valign">center</property>
- <property name="sensitive">True</property>
- <property name="tooltip_text" translatable="yes">Search</property>
- <style>
- <class name="image-button"/>
- </style>
- <child>
- <object class="GtkImage" id="_search_button_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <child type="end">
+ <object class="GtkButton" id="_cancel_button">
+ <property name="label" translatable="yes">_Cancel</property>
+ <property name="use_underline">True</property>
+ <property name="valign">center</property>
+ <property name="sensitive">True</property>
+ <signal name="clicked" handler="_on_cancel_button_clicked" swapped="no"/>
+ </object>
+ </child>
+ <child type="end">
+ <object class="GtkToggleButton" id="_search_button">
+ <property name="valign">center</property>
+ <property name="sensitive">True</property>
<property name="icon-name">edit-find-symbolic</property>
- <property name="icon-size">1</property>
+ <property name="tooltip_text" translatable="yes">Search</property>
</object>
</child>
</object>
- <packing>
- <property name="pack_type">end</property>
- </packing>
</child>
</template>
<object class="GtkSizeGroup" id="size1">
- <property name="mode">vertical</property>
- <widgets>
- <widget name="_search_button"/>
- <widget name="_cancel_button"/>
- </widgets>
+ <property name="mode">vertical</property>
+ <widgets>
+ <widget name="_search_button"/>
+ <widget name="_cancel_button"/>
+ </widgets>
</object>
</interface>
diff --git a/data/ui/SearchView.ui b/data/ui/SearchView.ui
index a6e41ee3..8a2af34b 100644
--- a/data/ui/SearchView.ui
+++ b/data/ui/SearchView.ui
@@ -1,170 +1,138 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <object class="GtkImage" id="view_all_image_artist">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">go-next-symbolic</property>
- <property name="icon_size">1</property>
- </object>
- <object class="GtkImage" id="view_all_image_album">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="icon_name">go-next-symbolic</property>
- <property name="icon_size">1</property>
- </object>
<template class="SearchView" parent="GtkStack">
- <property name="visible">True</property>
<child>
<object class="GtkScrolledWindow" id="_search_results">
<property name="hexpand">True</property>
<property name="vexpand">True</property>
- <property name="visible">True</property>
<child>
- <object class="HdyClamp">
- <property name="maximum-size">1600</property>
- <property name="visible">True</property>
+ <object class="GtkViewport">
+ <property name="scroll-to-focus">True</property>
<child>
- <object class="GtkBox" id="container">
- <property name="halign">fill</property>
- <property name="hexpand">True</property>
- <property name="margin-bottom">20</property>
- <property name="margin-end">120</property>
- <property name="margin-start">120</property>
- <property name="margin-top">20</property>
- <property name="orientation">vertical</property>
- <property name="visible">True</property>
+ <object class="AdwClamp">
+ <property name="maximum-size">1600</property>
<child>
- <object class="GtkBox" id="_artist_header">
+ <object class="GtkBox" id="container">
<property name="halign">fill</property>
<property name="hexpand">True</property>
- <property name="homogeneous">True</property>
- <property name="orientation">horizontal</property>
- <property name="visible">True</property>
+ <property name="margin-bottom">20</property>
+ <property name="margin-end">120</property>
+ <property name="margin-start">120</property>
+ <property name="margin-top">20</property>
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkLabel">
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="label" translatable="yes">Artists</property>
- <property name="visible">True</property>
- <style>
- <class name="search-header"/>
- </style>
+ <object class="GtkBox" id="_artist_header">
+ <property name="halign">fill</property>
+ <property name="hexpand">True</property>
+ <property name="homogeneous">True</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="focusable">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Artists</property>
+ <style>
+ <class name="search-header"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="_view_all_artists">
+ <property name="halign">end</property>
+ <property name="label" translatable="yes">View All</property>
+ <property name="icon-name">go-next-symbolic</property>
+ <signal name="clicked" handler="_on_all_artists_clicked" swapped="no"/>
+ </object>
+ </child>
</object>
</child>
<child>
- <object class="GtkButton" id="_view_all_artists">
- <property name="halign">end</property>
- <property name="label" translatable="yes">View All</property>
- <property name="always_show_image">True</property>
- <property name="image">view_all_image_artist</property>
- <property name="image_position">right</property>
- <property name="visible">True</property>
- <signal name="button-release-event" handler="_on_all_artists_clicked" swapped="no"/>
+ <object class="GtkFlowBox" id="_artist_flowbox">
+ <property name="column_spacing">6</property>
+ <property name="halign">fill</property>
+ <property name="hexpand">True</property>
+ <property name="homogeneous">True</property>
+ <property name="margin-bottom">18</property>
+ <property name="margin-top">18</property>
+ <property name="max-children-per-line">6</property>
+ <property name="min-children-per-line">1</property>
+ <property name="row_spacing">12</property>
+ <property name="selection-mode">none</property>
+ <property name="valign">start</property>
+ <signal name="child-activated" handler="_on_artist_activated" swapped="no"/>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="GtkFlowBox" id="_artist_flowbox">
- <property name="column_spacing">6</property>
- <property name="halign">fill</property>
- <property name="hexpand">True</property>
- <property name="homogeneous">True</property>
- <property name="margin-bottom">18</property>
- <property name="margin-top">18</property>
- <property name="max-children-per-line">6</property>
- <property name="min-children-per-line">1</property>
- <property name="row_spacing">12</property>
- <property name="selection-mode">none</property>
- <property name="valign">start</property>
- <property name="visible">True</property>
- <signal name="child-activated" handler="_on_artist_activated" swapped="no"/>
- <style>
- <class name="content-view"/>
- </style>
- </object>
- </child>
- <child>
- <object class="GtkBox" id="_album_header">
- <property name="halign">fill</property>
- <property name="hexpand">True</property>
- <property name="homogeneous">True</property>
- <property name="orientation">horizontal</property>
- <property name="visible">True</property>
<child>
- <object class="GtkLabel">
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="label" translatable="yes">Albums</property>
- <property name="visible">True</property>
- <style>
- <class name="search-header"/>
- </style>
+ <object class="GtkBox" id="_album_header">
+ <property name="halign">fill</property>
+ <property name="hexpand">True</property>
+ <property name="homogeneous">True</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="focusable">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Albums</property>
+ <style>
+ <class name="search-header"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="_view_all_albums">
+ <property name="halign">end</property>
+ <property name="label" translatable="yes">View All</property>
+ <property name="icon_name">go-next-symbolic</property>
+ <signal name="clicked" handler="_on_all_albums_clicked" swapped="no"/>
+ </object>
+ </child>
</object>
</child>
<child>
- <object class="GtkButton" id="_view_all_albums">
- <property name="halign">end</property>
- <property name="label" translatable="yes">View All</property>
- <property name="always_show_image">True</property>
- <property name="image">view_all_image_album</property>
- <property name="image_position">right</property>
- <property name="visible">True</property>
- <signal name="button-release-event" handler="_on_all_albums_clicked" swapped="no"/>
+ <object class="GtkFlowBox" id="_album_flowbox">
+ <property name="halign">fill</property>
+ <property name="hexpand">True</property>
+ <property name="valign">start</property>
+ <property name="homogeneous">True</property>
+ <property name="min_children_per_line">1</property>
+ <property name="max_children_per_line">6</property>
+ <property name="margin-bottom">18</property>
+ <property name="margin-top">18</property>
+ <property name="row_spacing">12</property>
+ <property name="column_spacing">6</property>
+ <property name="selection_mode">none</property>
+ <signal name="child-activated" handler="_on_album_activated" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="_songs_header">
+ <property name="halign">fill</property>
+ <property name="hexpand">True</property>
+ <property name="homogeneous">True</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="focusable">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Songs</property>
+ <style>
+ <class name="search-header"/>
+ </style>
+ </object>
+ </child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="GtkFlowBox" id="_album_flowbox">
- <property name="halign">fill</property>
- <property name="hexpand">True</property>
- <property name="valign">start</property>
- <property name="homogeneous">True</property>
- <property name="min_children_per_line">1</property>
- <property name="max_children_per_line">6</property>
- <property name="margin-bottom">18</property>
- <property name="margin-top">18</property>
- <property name="row_spacing">12</property>
- <property name="column_spacing">6</property>
- <property name="selection_mode">none</property>
- <property name="visible">True</property>
- <signal name="child-activated" handler="_on_album_activated" swapped="no"/>
- <style>
- <class name="content-view"/>
- </style>
- </object>
- </child>
- <child>
- <object class="GtkBox" id="_songs_header">
- <property name="halign">fill</property>
- <property name="hexpand">True</property>
- <property name="homogeneous">True</property>
- <property name="orientation">horizontal</property>
- <property name="visible">True</property>
<child>
- <object class="GtkLabel">
- <property name="can_focus">False</property>
- <property name="halign">start</property>
- <property name="label" translatable="yes">Songs</property>
- <property name="visible">True</property>
+ <object class="GtkListBox" id="_songs_listbox">
+ <property name="margin-top">20</property>
+ <signal name="row-activated" handler="_song_activated" swapped="no"/>
<style>
- <class name="search-header"/>
+ <class name="boxed-list"/>
</style>
</object>
</child>
</object>
</child>
- <child>
- <object class="GtkListBox" id="_songs_listbox">
- <property name="margin-top">20</property>
- <property name="visible">True</property>
- <signal name="row-activated" handler="_song_activated" swapped="no"/>
- <style>
- <class name="content"/>
- </style>
- </object>
- </child>
</object>
</child>
</object>
@@ -175,58 +143,53 @@
<object class="GtkScrolledWindow" id="_all_search_results">
<property name="hexpand">True</property>
<property name="vexpand">True</property>
- <property name="visible">True</property>
<child>
- <object class="HdyClamp">
- <property name="maximum-size">1600</property>
- <property name="visible">True</property>
+ <object class="GtkViewport">
+ <property name="scroll-to-focus">True</property>
<child>
- <object class="GtkBox">
- <property name="halign">fill</property>
- <property name="hexpand">True</property>
- <property name="margin-bottom">20</property>
- <property name="margin-end">120</property>
- <property name="margin-start">120</property>
- <property name="margin-top">20</property>
- <property name="orientation">vertical</property>
- <property name="visible">True</property>
+ <object class="AdwClamp">
+ <property name="maximum-size">1600</property>
<child>
- <object class="GtkFlowBox" id="_artist_all_flowbox">
- <property name="column_spacing">6</property>
+ <object class="GtkBox">
<property name="halign">fill</property>
<property name="hexpand">True</property>
- <property name="homogeneous">True</property>
- <property name="margin-bottom">18</property>
- <property name="margin-top">18</property>
- <property name="max-children-per-line">6</property>
- <property name="min-children-per-line">1</property>
- <property name="row_spacing">12</property>
- <property name="selection-mode">none</property>
- <property name="valign">start</property>
- <signal name="child-activated" handler="_on_artist_activated" swapped="no"/>
- <style>
- <class name="content-view"/>
- </style>
- </object>
- </child>
- <child>
- <object class="GtkFlowBox" id="_album_all_flowbox">
- <property name="halign">fill</property>
- <property name="hexpand">True</property>
- <property name="valign">start</property>
- <property name="homogeneous">True</property>
- <property name="min_children_per_line">1</property>
- <property name="max_children_per_line">6</property>
- <property name="margin-bottom">18</property>
- <property name="margin-top">18</property>
- <property name="row_spacing">12</property>
- <property name="column_spacing">6</property>
- <property name="selection_mode">none</property>
- <property name="visible">True</property>
- <signal name="child-activated" handler="_on_album_activated" swapped="no"/>
- <style>
- <class name="content-view"/>
- </style>
+ <property name="margin-bottom">20</property>
+ <property name="margin-end">120</property>
+ <property name="margin-start">120</property>
+ <property name="margin-top">20</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFlowBox" id="_artist_all_flowbox">
+ <property name="column_spacing">6</property>
+ <property name="halign">fill</property>
+ <property name="hexpand">True</property>
+ <property name="homogeneous">True</property>
+ <property name="margin-bottom">18</property>
+ <property name="margin-top">18</property>
+ <property name="max-children-per-line">6</property>
+ <property name="min-children-per-line">1</property>
+ <property name="row_spacing">12</property>
+ <property name="selection-mode">none</property>
+ <property name="valign">start</property>
+ <signal name="child-activated" handler="_on_artist_activated" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkFlowBox" id="_album_all_flowbox">
+ <property name="halign">fill</property>
+ <property name="hexpand">True</property>
+ <property name="valign">start</property>
+ <property name="homogeneous">True</property>
+ <property name="min_children_per_line">1</property>
+ <property name="max_children_per_line">6</property>
+ <property name="margin-bottom">18</property>
+ <property name="margin-top">18</property>
+ <property name="row_spacing">12</property>
+ <property name="column_spacing">6</property>
+ <property name="selection_mode">none</property>
+ <signal name="child-activated" handler="_on_album_activated" swapped="no"/>
+ </object>
+ </child>
</object>
</child>
</object>
@@ -237,15 +200,13 @@
</child>
<child>
<object class="GtkScrolledWindow" id="_scrolled_album_widget">
- <property name="visible">True</property>
<property name="hscrollbar_policy">never</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="scroll-to-focus">True</property>
+ </object>
+ </child>
</object>
</child>
</template>
- <object class="GtkGestureMultiPress" id="_songs_listbox_ctrlr">
- <property name="widget">_songs_listbox</property>
- <property name="propagation-phase">capture</property>
- <property name="button">3</property>
- <signal name="pressed" handler="_songs_listbox_right_click" swapped="no"/>
- </object>
</interface>
diff --git a/data/ui/SelectionBarMenuButton.ui b/data/ui/SelectionBarMenuButton.ui
index 25c3c529..6787651b 100644
--- a/data/ui/SelectionBarMenuButton.ui
+++ b/data/ui/SelectionBarMenuButton.ui
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <!-- interface-requires gtk+ 3.10 -->
+ <requires lib="gtk" version="4.4"/>
<menu id="selection-menu">
<section>
<item>
@@ -14,33 +14,9 @@
</section>
</menu>
<template class="SelectionBarMenuButton" parent="GtkMenuButton">
+ <property name="always-show-arrow">True</property>
+ <property name="focusable">True</property>
+ <property name="label" translatable="yes">Click on items to select them</property>
<property name="menu-model">selection-menu</property>
- <property name="visible">True</property>
- <property name="can-focus">True</property>
- <child>
- <object class="GtkBox" id="selection-menu-button-box">
- <property name="visible">True</property>
- <property name="can-focus">False</property>
- <property name="orientation">horizontal</property>
- <property name="spacing">6</property>
- <child>
- <object class="GtkLabel" id="_menu_label">
- <property name="visible">True</property>
- <property name="can-focus">False</property>
- <property name="label" translatable="yes">Click on items to select them</property>
- </object>
- </child>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="can-focus">False</property>
- <property name="icon-name">pan-down-symbolic</property>
- </object>
- </child>
- </object>
- </child>
- <style>
- <class name="selection-menu"/>
- </style>
</template>
</interface>
diff --git a/data/ui/SelectionToolbar.ui b/data/ui/SelectionToolbar.ui
index ec64876c..852b7367 100644
--- a/data/ui/SelectionToolbar.ui
+++ b/data/ui/SelectionToolbar.ui
@@ -1,20 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <!-- interface-requires gtk+ 3.12 -->
<template class="SelectionToolbar" parent="GtkActionBar">
<property name="visible">False</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<child>
<object class="GtkButton" id="_add_to_playlist_button">
<property name="label" translatable="yes">_Add to Playlist</property>
<property name="use_underline">True</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="focusable">True</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="_on_add_to_playlist_button_clicked" swapped="no"/>
- <style>
- <class name="text-button"/>
- </style>
</object>
</child>
</template>
diff --git a/data/ui/SongListItem.ui b/data/ui/SongListItem.ui
new file mode 100644
index 00000000..3d906d61
--- /dev/null
+++ b/data/ui/SongListItem.ui
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <requires lib="gtk+" version="4.0"/>
+ <object class="GtkBox" id="_song_box">
+ <property name="focusable">False</property>
+ <property name="valign">start</property>
+ <child>
+ <object class="GtkCheckButton" id="_check">
+ <property name="visible">False</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox">
+ <property name="homogeneous">True</property>
+ <child>
+ <object class="GtkLabel" id="_title_label">
+ <property name="halign">start</property>
+ <property name="hexpand">True</property>
+ <property name="ellipsize">end</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="_album_label">
+ <property name="ellipsize">end</property>
+ <property name="halign">start</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="_artist_label">
+ <property name="ellipsize">end</property>
+ <property name="halign">start</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="_duration_label">
+ <property name="halign">start</property>
+ <property name="single_line_mode">True</property>
+ <property name="width_chars">5</property>
+ <property name="xalign">1.0</property>
+ <attributes>
+ <attribute name="font-features" value="tnum=1"/>
+ </attributes>
+ </object>
+ </child>
+ <child>
+ <object class="GtkBox" id="_star_box">
+ <property name="focusable">0</property>
+ <property name="halign">end</property>
+ <property name="valign">center</property>
+ <child>
+ <object class="StarImage" id="_star_image">
+ <property name="focusable">False</property>
+ <property name="valign">center</property>
+ <property name="margin-end">12</property>
+ <property name="margin-start">12</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="_menu_button">
+ <property name="focusable">True</property>
+ <property name="icon-name">view-more-symbolic</property>
+ <style>
+ <class name="flat"/>
+ </style>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/data/ui/SongWidget.ui b/data/ui/SongWidget.ui
index 56708a39..050f3b08 100644
--- a/data/ui/SongWidget.ui
+++ b/data/ui/SongWidget.ui
@@ -1,59 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.20.0 -->
<interface>
- <requires lib="gtk+" version="3.10"/>
+ <requires lib="gtk" version="4.0"/>
<template class="SongWidget" parent="GtkListBoxRow">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
<property name="selectable">False</property>
- <signal name="drag_data_received" handler="_on_drag_data_received"/>
<child>
<object class="GtkBox" id="box1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="spacing">6</property>
<child>
- <object class="GtkEventBox" id="_dnd_eventbox">
+ <object class="GtkImage" id="_dnd_icon">
<property name="visible">False</property>
- <signal name="drag-begin" handler="_on_drag_begin"/>
- <signal name="drag-end" handler="_on_drag_end"/>
- <signal name="drag_data_get" handler="_on_drag_data_get"/>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="icon-name">list-drag-handle-symbolic</property>
- <style>
- <class name="drag-handle"/>
- </style>
- </object>
- </child>
+ <property name="icon-name">list-drag-handle-symbolic</property>
+ <style>
+ <class name="drag-handle"/>
+ </style>
</object>
</child>
<child>
<object class="GtkBox" id="box3">
<property name="width_request">48</property>
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkImage" id="_play_icon">
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="icon_size">1</property>
</object>
</child>
<child>
<object class="GtkCheckButton" id="_select_button">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="receives_default">False</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="_on_select_button_toggled"/>
</object>
</child>
<child>
<object class="GtkLabel" id="_number_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="halign">end</property>
<property name="justify">right</property>
<style>
@@ -65,13 +47,11 @@
</child>
<child>
<object class="GtkBox" id="title_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="hexpand">True</property>
<child>
- <object class="DzlBoldingLabel" id="_title_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="GtkLabel" id="_title_label">
+ <property name="focusable">False</property>
<property name="xalign">0</property>
<property name="halign">start</property>
<property name="hexpand">True</property>
@@ -86,12 +66,11 @@
<child>
<object class="GtkBox" id="_artist_box">
<property name="visible">False</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="hexpand">True</property>
<child>
<object class="GtkLabel" id="_artist_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="xalign">0</property>
<property name="halign">start</property>
<property name="hexpand">True</property>
@@ -105,14 +84,13 @@
</child>
<child>
<object class="GtkBox" id="_album_duration_box">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="hexpand">True</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="_album_label">
<property name="visible">False</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="xalign">0</property>
<property name="halign">start</property>
<property name="hexpand">True</property>
@@ -123,8 +101,7 @@
</child>
<child>
<object class="GtkLabel" id="_duration_label">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="halign">end</property>
<property name="hexpand">True</property>
<property name="single_line_mode">True</property>
@@ -137,59 +114,84 @@
</child>
<child>
<object class="GtkStack" id="_star_stack">
- <property name="can-focus">False</property>
- <property name="visible">True</property>
+ <property name="focusable">False</property>
<child>
- <object class="GtkEventBox" id="_star_eventbox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="halign">end</property>
- <property name="valign">center</property>
- <property name="visible_window">True</property>
- <signal name="button-release-event" handler="_on_star_toggle" swapped="no"/>
- <child>
- <object class="StarImage" id="_star_image">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
+ <object class="GtkStackPage">
+ <property name="name">star</property>
+ <property name="child">
+ <object class="GtkBox" id="_star_box">
+ <property name="focusable">0</property>
+ <property name="halign">end</property>
<property name="valign">center</property>
- <property name="margin-end">12</property>
- <property name="margin-start">12</property>
+ <child>
+ <object class="GtkGestureClick">
+ <property name="button">1</property>
+ <property name="propagation-phase">capture</property>
+ <signal name="released" handler="_on_star_toggle" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkEventControllerMotion">
+ <signal name="enter" handler="_on_star_hover" swapped="no"/>
+ <signal name="leave" handler="_on_star_unhover" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="StarImage" id="_star_image">
+ <property name="focusable">False</property>
+ <property name="valign">center</property>
+ <property name="margin-end">12</property>
+ <property name="margin-start">12</property>
+ </object>
+ </child>
</object>
- </child>
+ </property>
</object>
- <packing>
- <property name="name">star</property>
- </packing>
</child>
<child>
- <object class="GtkBox">
- <property name="visible">True</property>
- </object>
- <packing>
+ <object class="GtkStackPage">
<property name="name">empty</property>
- <property name="position">1</property>
- </packing>
+ <property name="child">
+ <object class="GtkBox"/>
+ </property>
+ </object>
</child>
</object>
</child>
<child>
<object class="GtkMenuButton" id="_menu_button">
<property name="visible">False</property>
- <property name="can-focus">True</property>
+ <property name="focusable">True</property>
+ <property name="icon-name">view-more-symbolic</property>
<style>
<class name="flat"/>
</style>
- <child>
- <object class="GtkImage">
- <property name="visible">True</property>
- <property name="can-focus">False</property>
- <property name="icon-name">view-more-symbolic</property>
- </object>
- </child>
</object>
</child>
</object>
</child>
+ <child>
+ <object class="GtkGestureClick">
+ <property name="button">1</property>
+ <signal name="released" handler="_on_click" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkDragSource" id="_drag_source">
+ <property name="actions">move</property>
+ <property name="propagation-phase">none</property>
+ <signal name="prepare" handler="_on_drag_prepare" swapped="no"/>
+ <signal name="drag-begin" handler="_on_drag_begin" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkDropTarget">
+ <property name="actions">move</property>
+ <property name="formats">SongWidget</property>
+ <property name="preload">True</property>
+ <signal name="drop" handler="_on_drop" swapped="no"/>
+ </object>
+ </child>
<style>
<class name="songwidget"/>
</style>
@@ -202,10 +204,4 @@
<widget name="_album_duration_box"/>
</widgets>
</object>
- <object class="GtkEventControllerMotion" id="_controller_motion">
- <property name="propagation-phase">target</property>
- <property name="widget">_star_eventbox</property>
- <signal name="enter" handler="_on_star_hover" swapped="no"/>
- <signal name="leave" handler="_on_star_unhover" swapped="no"/>
- </object>
</interface>
diff --git a/data/ui/SongWidgetMenu.ui b/data/ui/SongWidgetMenu.ui
index 8868176f..17c7a34a 100644
--- a/data/ui/SongWidgetMenu.ui
+++ b/data/ui/SongWidgetMenu.ui
@@ -1,49 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="SongWidgetMenu" parent="GtkPopoverMenu">
- <property name="modal">True</property>
+ <property name="autohide">True</property>
<property name="position">bottom</property>
<property name="visible">False</property>
- <child>
- <object class="GtkBox">
- <property name="can-focus">False</property>
- <property name="margin-bottom">6</property>
- <property name="margin-end">6</property>
- <property name="margin-start">6</property>
- <property name="margin-top">6</property>
- <property name="orientation">vertical</property>
- <property name="visible">True</property>
- <child>
- <object class="GtkModelButton">
- <property name="visible">True</property>
- <property name="text" translatable="yes">Play</property>
- <signal name="clicked" handler="_on_play_clicked" swapped="no"/>
- <style>
- <class name="flat"/>
- </style>
- </object>
- </child>
- <child>
- <object class="GtkModelButton">
- <property name="visible">True</property>
- <property name="text" translatable="yes">Add to Playlist…</property>
- <signal name="clicked" handler="_on_add_to_playlist_clicked" swapped="no"/>
- <style>
- <class name="flat"/>
- </style>
- </object>
- </child>
- <child>
- <object class="GtkModelButton" id="_remove_from_playlist_button">
- <property name="visible">True</property>
- <property name="text" translatable="yes">Remove From Playlist</property>
- <signal name="clicked" handler="_on_remove_from_playlist_clicked" swapped="no"/>
- <style>
- <class name="flat"/>
- </style>
- </object>
- </child>
- </object>
- </child>
+ <property name="menu-model">song-menu</property>
</template>
+ <menu id="song-menu">
+ <item>
+ <attribute name="label" translatable="yes">_Play</attribute>
+ <attribute name="action">songwidget.play</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Add to Playlist…</attribute>
+ <attribute name="action">songwidget.add_playlist</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">_Remove from Playlist</attribute>
+ <attribute name="action">songwidget.remove_playlist</attribute>
+ </item>
+ </menu>
</interface>
diff --git a/data/ui/SongsView.ui b/data/ui/SongsView.ui
index 223df375..c2dc2126 100644
--- a/data/ui/SongsView.ui
+++ b/data/ui/SongsView.ui
@@ -1,123 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <requires lib="gtk+" version="3.18"/>
- <template class="SongsView" parent="GtkScrolledWindow">
- <property name="hexpand">True</property>
- <property name="vexpand">True</property>
- <property name="visible">True</property>
+ <requires lib="gtk" version="4.0"/>
+ <template class="SongsView" parent="GtkBox">
+ <property name="margin-bottom">48</property>
+ <property name="margin-top">48</property>
<child>
- <object class="GtkTreeView" id="_songs_view">
- <property name="activate-on-single-click">True</property>
- <property name="headers_visible">False</property>
- <property name="valign">start</property>
- <property name="visible">True</property>
- <signal name="row-activated" handler="_on_item_activated" swapped="no"/>
- <style>
- <class name="songs-list-old"/>
- </style>
- <child internal-child="selection">
- <object class="GtkTreeSelection">
- <property name="mode">single</property>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="_now_playing_column">
- <property name="fixed_width">48</property>
- <property name="visible">True</property>
- <child>
- <object class="GtkCellRendererPixbuf" id="_now_playing_cell">
- <property name="xalign">0.5</property>
- <property name="xpad">0</property>
- <property name="yalign">0.5</property>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="_selection_column">
- <property name="fixed_width">48</property>
- <property name="visible">False</property>
- <child>
- <object class="GtkCellRendererToggle">
- </object>
- <attributes>
- <attribute name="active">1</attribute>
- </attributes>
- </child>
- </object>
- </child>
+ <object class="GtkScrolledWindow">
<child>
- <object class="GtkTreeViewColumn" id="_title_column">
- <property name="expand">True</property>
- <property name="visible">True</property>
+ <object class="AdwClampScrollable" id="_adw_clamp_scrollable">
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <property name="maximum-size">1000</property>
<child>
- <object class="GtkCellRendererText">
- <property name="ellipsize">end</property>
- <property name="height">48</property>
- <property name="xalign">0</property>
- <property name="xpad">0</property>
- <property name="yalign">0.5</property>
+ <object class="GtkListView" id="_listview">
+ <property name="show-separators">True</property>
+ <style>
+ <class name="songs-list"/>
+ </style>
</object>
- <attributes>
- <attribute name="text">2</attribute>
- </attributes>
</child>
</object>
</child>
- <child>
- <object class="GtkTreeViewColumn" id="_artist_column">
- <property name="expand">True</property>
- <property name="visible">True</property>
- <child>
- <object class="GtkCellRendererText">
- <property name="ellipsize">end</property>
- <property name="xpad">32</property>
- </object>
- <attributes>
- <attribute name="text">3</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="_album_column">
- <property name="expand">True</property>
- <property name="visible">True</property>
- <child>
- <object class="GtkCellRendererText">
- <property name="ellipsize">end</property>
- <property name="xpad">32</property>
- </object>
- <attributes>
- <attribute name="text">4</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="_duration_column">
- <property name="visible">True</property>
- <child>
- <object class="GtkCellRendererText" id="_duration_renderer">
- <property name="xalign">1</property>
- </object>
- <attributes>
- <attribute name="text">5</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="_star_column">
- <property name="visible">True</property>
- </object>
- </child>
</object>
</child>
</template>
- <object class="GtkGestureMultiPress" id="_songs_ctrlr">
- <property name="widget">_songs_view</property>
- <property name="propagation-phase">capture</property>
- <signal name="released" handler="_on_view_clicked" swapped="no"/>
- </object>
</interface>
diff --git a/data/ui/TwoLineTip.ui b/data/ui/TwoLineTip.ui
index 54cb04e9..2ebece59 100644
--- a/data/ui/TwoLineTip.ui
+++ b/data/ui/TwoLineTip.ui
@@ -1,15 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="TwoLineTip" parent="GtkBox">
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="vexpand">False</property>
<property name="orientation">vertical</property>
- <property name="visible">True</property>
<child>
<object class="GtkLabel" id="_title_label">
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="halign">start</property>
- <property name="visible">True</property>
<style>
<class name="tooltip-title"/>
</style>
@@ -17,9 +15,8 @@
</child>
<child>
<object class="GtkLabel" id="_subtitle_label">
- <property name="can_focus">False</property>
+ <property name="focusable">False</property>
<property name="halign">start</property>
- <property name="visible">True</property>
</object>
</child>
</template>
diff --git a/data/ui/Window.ui b/data/ui/Window.ui
index 27695259..9c9b80bc 100644
--- a/data/ui/Window.ui
+++ b/data/ui/Window.ui
@@ -1,53 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
- <template class="Window" parent="HdyApplicationWindow">
+ <template class="Window" parent="AdwApplicationWindow">
<property name="default-height">500</property>
<property name="default-width">300</property>
<child>
- <object class="GtkBox">
- <property name="orientation">vertical</property>
- <property name="visible">True</property>
- <child>
- <object class="GtkStack" id="_headerbar_stack">
- <property name="transition-type">crossfade</property>
- <property name="visible">True</property>
- </object>
- </child>
+ <object class="GtkEventControllerKey">
+ <property name="propagation-phase">capture</property>
+ <signal name="key-pressed" handler="_on_key_press" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="AdwToastOverlay" id="_toast_overlay">
<child>
- <object class="GtkOverlay" id="_overlay">
- <property name="vexpand">True</property>
- <property name="visible">True</property>
+ <object class="GtkBox">
+ <property name="orientation">vertical</property>
<child>
- <object class="GtkStack" id="_stack">
- <property name="can-focus">False</property>
- <property name="hhomogeneous">False</property>
- <property name="vhomogeneous">False</property>
- <property name="transition-duration">100</property>
+ <object class="GtkStack" id="_headerbar_stack">
<property name="transition-type">crossfade</property>
- <property name="visible">True</property>
</object>
</child>
- <child type="overlay">
- <object class="NotificationsPopup" id="notifications_popup">
- <property name="halign">center</property>
- <property name="transition-type">slide-down</property>
- <property name="valign">start</property>
+ <child>
+ <object class="GtkOverlay" id="_overlay">
+ <property name="vexpand">True</property>
+ <child>
+ <object class="AdwViewStack" id="_stack">
+ <property name="focusable">False</property>
+ <property name="hhomogeneous">False</property>
+ <property name="vhomogeneous">False</property>
+ </object>
+ </child>
+ <child type="overlay">
+ <object class="GtkProgressBar" id="_loading_progress">
+ <property name="valign">start</property>
+ <property name="visible">False</property>
+ <style>
+ <class name="osd"/>
+ </style>
+ </object>
+ </child>
</object>
</child>
+ <child>
+ <object class="SelectionToolbar" id="_selection_toolbar"/>
+ </child>
+ <child>
+ <object class="PlayerToolbar" id="_player_toolbar"/>
+ </child>
</object>
</child>
- <child>
- <object class="SelectionToolbar" id="_selection_toolbar"/>
- </child>
- <child>
- <object class="PlayerToolbar" id="_player_toolbar"/>
- </child>
</object>
</child>
</template>
- <object class="GtkEventControllerKey" id="_key_controller">
- <property name="widget">Window</property>
- <property name="propagation-phase">capture</property>
- <signal name="key-pressed" handler="_on_key_press" swapped="no"/>
- </object>
</interface>
diff --git a/data/ui/help-overlay.ui b/data/ui/help-overlay.ui
index 86b0f0fc..809063b7 100644
--- a/data/ui/help-overlay.ui
+++ b/data/ui/help-overlay.ui
@@ -4,78 +4,66 @@
<property name="modal">True</property>
<child>
<object class="GtkShortcutsSection">
- <property name="visible">True</property>
<property name="section-name">shortcuts</property>
<property name="max-height">17</property>
<child>
<object class="GtkShortcutsGroup">
- <property name="visible">True</property>
<property name="title" translatable="yes" context="shortcut window">General</property>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">True</property>
<property name="title" translatable="yes" context="shortcut window">Close window</property>
- <property name="accelerator">&lt;Primary&gt;Q</property>
+ <property name="action-name">app.quit</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">True</property>
<property name="title" translatable="yes" context="shortcut window">Search</property>
<property name="accelerator">&lt;Primary&gt;F</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">True</property>
<property name="title" translatable="yes" context="shortcut window">Help</property>
- <property name="accelerator">F1</property>
+ <property name="action-name">app.help</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">True</property>
<property name="title" translatable="yes" context="shortcut window">Shortcuts</property>
- <property name="accelerator">&lt;Primary&gt;question</property>
+ <property name="action-name">win.show-help-overlay</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkShortcutsGroup">
- <property name="visible">True</property>
<property name="title" translatable="yes" context="shortcut window">Playback</property>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">True</property>
<property name="title" translatable="yes" context="shortcut window">Play/Pause</property>
<property name="accelerator">&lt;Ctrl&gt;space</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">True</property>
<property name="title" translatable="yes" context="shortcut window">Next song</property>
<property name="accelerator">&lt;Ctrl&gt;N</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">True</property>
<property name="title" translatable="yes" context="shortcut window">Previous song</property>
<property name="accelerator">&lt;Ctrl&gt;B</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">True</property>
<property name="title" translatable="yes" context="shortcut window">Toggle repeat</property>
<property name="accelerator">&lt;Ctrl&gt;R</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">True</property>
<property name="title" translatable="yes" context="shortcut window">Toggle shuffle</property>
<property name="accelerator">&lt;Ctrl&gt;S</property>
</object>
@@ -84,39 +72,33 @@
</child>
<child>
<object class="GtkShortcutsGroup">
- <property name="visible">True</property>
<property name="title" translatable="yes" context="shortcut window">Navigation</property>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">True</property>
<property name="title" translatable="yes" context="shortcut window">Go to Albums</property>
<property name="accelerator">&lt;Alt&gt;1</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">True</property>
<property name="title" translatable="yes" context="shortcut window">Go to Artists</property>
<property name="accelerator">&lt;Alt&gt;2</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">True</property>
<property name="title" translatable="yes" context="shortcut window">Go to Songs</property>
<property name="accelerator">&lt;Alt&gt;3</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">True</property>
<property name="title" translatable="yes" context="shortcut window">Go to Playlists</property>
<property name="accelerator">&lt;Alt&gt;4</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
- <property name="visible">True</property>
<property name="title" translatable="yes" context="shortcut window">Go back</property>
<property name="accelerator">&lt;Alt&gt;Left</property>
</object>
diff --git a/data/ui/meson.build b/data/ui/meson.build
deleted file mode 100644
index 73d1f554..00000000
--- a/data/ui/meson.build
+++ /dev/null
@@ -1,24 +0,0 @@
-# AboutDialog.ui configuration
-VCS_TAG = ''
-if get_option('profile') != 'default'
- git = find_program('git', required : false)
- if git.found()
- VCS_TAG = run_command('git', 'rev-parse', '--short', 'HEAD').stdout().strip()
- endif
- if VCS_TAG == ''
- VCS_TAG = '-devel'
- else
- VCS_TAG = '-@0@'.format(VCS_TAG)
- endif
-endif
-about_dialog_conf = configuration_data()
-about_dialog_conf.set('PACKAGE_VERSION', '@0@@1@'.format(meson.project_version(), VCS_TAG))
-about_dialog_conf.set('PACKAGE_URL', PACKAGE_URL)
-about_dialog_conf.set('PROGRAM_NAME', 'Music' + NAME_SUFFIX)
-about_dialog_conf.set('APPID', APPLICATION_ID)
-
-about_dialog = configure_file(
- input: 'AboutDialog.ui.in',
- output: 'AboutDialog.ui',
- configuration: about_dialog_conf
-) \ No newline at end of file
diff --git a/debian/changelog b/debian/changelog
index a4165c18..78b1f9e2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,54 @@
+gnome-music (45.0-1) unstable; urgency=medium
+
+ * New upstream release
+ * debian/control.in: Build-Depend on appstream-util for build tests
+ * Update standards version to 4.6.2, no changes needed
+
+ -- Jeremy Bícha <jbicha@ubuntu.com> Mon, 18 Sep 2023 08:58:28 -0400
+
+gnome-music (44.0-2) unstable; urgency=medium
+
+ * Drop all patches
+ * Update dependencies to switch to libsoup3
+ * Release to unstable
+
+ -- Jeremy Bícha <jbicha@ubuntu.com> Mon, 15 May 2023 16:06:07 -0400
+
+gnome-music (44.0-1) experimental; urgency=medium
+
+ * Team upload
+
+ [ Nathan Pratta Teodosio ]
+ * New upstream release
+
+ [ Jeremy Bicha ]
+ * Revert 2 commits that switch to libsoup3
+
+ -- Nathan Pratta Teodosio <nathan.teodosio@canonical.com> Thu, 23 Mar 2023 10:22:28 -0300
+
+gnome-music (42.1-1) unstable; urgency=medium
+
+ * New upstream release
+
+ -- Jeremy Bicha <jbicha@ubuntu.com> Mon, 25 Apr 2022 09:12:24 -0400
+
+gnome-music (42.0-1) unstable; urgency=medium
+
+ * New upstream release
+ * Switch to gtk4 & libadwaita
+ * debian/control.in: Build-Depend on desktop-file-utils
+ * Drop all patches: applied in new release
+
+ -- Jeremy Bicha <jbicha@ubuntu.com> Mon, 21 Mar 2022 13:53:14 -0400
+
+gnome-music (41.0-4) unstable; urgency=medium
+
+ * Cherry-pick patch to drop obsolete GNOME MediaKeys support
+ * Cherry-pick patches to support GNOME 42 dark theme preference
+ * debian/control.in: Bump minimum libhandy to 1.5.90
+
+ -- Jeremy Bicha <jeremy.bicha@canonical.com> Thu, 17 Feb 2022 12:54:10 -0500
+
gnome-music (41.0-2) unstable; urgency=medium
* Team upload
diff --git a/debian/control b/debian/control
index 7563e612..c475a7a7 100644
--- a/debian/control
+++ b/debian/control
@@ -6,50 +6,49 @@ Source: gnome-music
Section: gnome
Priority: optional
Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
-Uploaders: Iain Lane <laney@debian.org>, Jeremy Bicha <jbicha@debian.org>, Laurent Bigonville <bigon@debian.org>
+Uploaders: Iain Lane <laney@debian.org>, Jeremy Bícha <jbicha@ubuntu.com>, Laurent Bigonville <bigon@debian.org>, Tim Lunn <tim@feathertop.org>
Build-Depends: debhelper-compat (= 13),
+ appstream-util <!nocheck>,
+ desktop-file-utils,
dh-sequence-gir,
dh-sequence-gnome,
dh-sequence-python3,
- grilo-plugins-0.3 (>= 0.3.13-3~),
+ grilo-plugins-0.3 (>= 0.3.16-1.1~),
itstool,
- libdazzle-1.0-dev (>= 3.28.0),
+ libadwaita-1-dev (>= 1.0),
libgdk-pixbuf2.0-bin,
libgirepository1.0-dev (>= 1.35.9),
libglib2.0-dev (>= 2.67.1),
libgoa-1.0-dev (>= 3.35.90),
- libgrilo-0.3-dev (>= 0.3.13),
- libgtk-3-dev (>= 3.24.14),
- libhandy-1-dev (>= 1.2.0),
+ libgrilo-0.3-dev (>= 0.3.15-1.1~),
+ libgtk-4-dev (>= 4.5.0),
libmediaart-2.0-dev (>= 1.9.1),
libpango1.0-dev (>= 1.44.0),
librsvg2-common:native,
- libsoup2.4-dev,
- libtracker-sparql-3.0-dev (>= 2.99.3),
+ libtracker-sparql-3.0-dev (>= 3.3.3),
meson (>= 0.49.0),
pkg-config (>= 0.22),
python-gi-dev (>= 3.36.1),
python3 (>= 3.7),
python3-cairo-dev (>= 1.14.0)
Rules-Requires-Root: no
-Standards-Version: 4.6.0
+Standards-Version: 4.6.2
Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-music
Vcs-Git: https://salsa.debian.org/gnome-team/gnome-music.git
Homepage: https://wiki.gnome.org/Apps/Music
Package: gnome-music
Architecture: any
-Depends: gir1.2-dazzle-1.0 (>= 3.28.0),
+Depends: gir1.2-adw-1 (>= 1.0),
gir1.2-glib-2.0 (>= 1.35.9),
gir1.2-goa-1.0 (>= 3.35.90),
- gir1.2-grilo-0.3 (>= 0.3.13),
+ gir1.2-grilo-0.3 (>= 0.3.15-1.1~),
gir1.2-gst-plugins-base-1.0,
gir1.2-gstreamer-1.0,
- gir1.2-gtk-3.0 (>= 3.24.14),
- gir1.2-handy-1 (>= 1.2.0),
+ gir1.2-gtk-4.0 (>= 4.5.0),
gir1.2-mediaart-2.0 (>= 1.9.1),
gir1.2-pango-1.0 (>= 1.44.0),
- gir1.2-soup-2.4,
+ gir1.2-soup-3.0,
gir1.2-totemplparser-1.0,
gir1.2-tracker-3.0,
gnome-settings-daemon,
diff --git a/debian/control.in b/debian/control.in
index 15b212f7..71ac1d82 100644
--- a/debian/control.in
+++ b/debian/control.in
@@ -4,48 +4,47 @@ Priority: optional
Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
Uploaders: @GNOME_TEAM@
Build-Depends: debhelper-compat (= 13),
+ appstream-util <!nocheck>,
+ desktop-file-utils,
dh-sequence-gir,
dh-sequence-gnome,
dh-sequence-python3,
- grilo-plugins-0.3 (>= 0.3.13-3~),
+ grilo-plugins-0.3 (>= 0.3.16-1.1~),
itstool,
- libdazzle-1.0-dev (>= 3.28.0),
+ libadwaita-1-dev (>= 1.0),
libgdk-pixbuf2.0-bin,
libgirepository1.0-dev (>= 1.35.9),
libglib2.0-dev (>= 2.67.1),
libgoa-1.0-dev (>= 3.35.90),
- libgrilo-0.3-dev (>= 0.3.13),
- libgtk-3-dev (>= 3.24.14),
- libhandy-1-dev (>= 1.2.0),
+ libgrilo-0.3-dev (>= 0.3.15-1.1~),
+ libgtk-4-dev (>= 4.5.0),
libmediaart-2.0-dev (>= 1.9.1),
libpango1.0-dev (>= 1.44.0),
librsvg2-common:native,
- libsoup2.4-dev,
- libtracker-sparql-3.0-dev (>= 2.99.3),
+ libtracker-sparql-3.0-dev (>= 3.3.3),
meson (>= 0.49.0),
pkg-config (>= 0.22),
python-gi-dev (>= 3.36.1),
python3 (>= 3.7),
python3-cairo-dev (>= 1.14.0)
Rules-Requires-Root: no
-Standards-Version: 4.6.0
+Standards-Version: 4.6.2
Vcs-Browser: https://salsa.debian.org/gnome-team/gnome-music
Vcs-Git: https://salsa.debian.org/gnome-team/gnome-music.git
Homepage: https://wiki.gnome.org/Apps/Music
Package: gnome-music
Architecture: any
-Depends: gir1.2-dazzle-1.0 (>= 3.28.0),
+Depends: gir1.2-adw-1 (>= 1.0),
gir1.2-glib-2.0 (>= 1.35.9),
gir1.2-goa-1.0 (>= 3.35.90),
- gir1.2-grilo-0.3 (>= 0.3.13),
+ gir1.2-grilo-0.3 (>= 0.3.15-1.1~),
gir1.2-gst-plugins-base-1.0,
gir1.2-gstreamer-1.0,
- gir1.2-gtk-3.0 (>= 3.24.14),
- gir1.2-handy-1 (>= 1.2.0),
+ gir1.2-gtk-4.0 (>= 4.5.0),
gir1.2-mediaart-2.0 (>= 1.9.1),
gir1.2-pango-1.0 (>= 1.44.0),
- gir1.2-soup-2.4,
+ gir1.2-soup-3.0,
gir1.2-totemplparser-1.0,
gir1.2-tracker-3.0,
gnome-settings-daemon,
diff --git a/debian/gbp.conf b/debian/gbp.conf
index df9828fd..7ad7f9fc 100644
--- a/debian/gbp.conf
+++ b/debian/gbp.conf
@@ -1,6 +1,6 @@
[DEFAULT]
pristine-tar = True
-debian-branch = debian/master
+debian-branch = debian/latest
upstream-branch = upstream/latest
[buildpackage]
diff --git a/debian/patches/meson-Remove-incorrect-i18n.merge_file-argument.patch b/debian/patches/meson-Remove-incorrect-i18n.merge_file-argument.patch
deleted file mode 100644
index 51d90a75..00000000
--- a/debian/patches/meson-Remove-incorrect-i18n.merge_file-argument.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From: Jean Felder <jfelder@src.gnome.org>
-Date: Thu, 18 Nov 2021 12:09:26 +0100
-Subject: meson: Remove incorrect i18n.merge_file argument
-
-The positional argument was being silently ignored until meson 0.60.0
-where it returns a deprecation message:
-"DEPRECATION: i18n.merge_file does not take any positional
-arguments. This will become a hard error in the next Meson release."
-
-See: https://github.com/mesonbuild/meson/issues/9441
-
-Origin: upstream, 42, commit:d9f35b542adbf6b0e1114c7c077df04212a98fc7
-Bug-Debian: https://bugs.debian.org/1005574
----
- data/meson.build | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/data/meson.build b/data/meson.build
-index 25ff1e1..145ee52 100644
---- a/data/meson.build
-+++ b/data/meson.build
-@@ -47,7 +47,6 @@ appdata_conf.set('appid', APPLICATION_ID)
- appdata_conf.set('package_url', PACKAGE_URL)
- appdata_conf.set('package_url_bug', PACKAGE_URL_BUG)
- i18n.merge_file(
-- 'appdata',
- input: configure_file(
- output: PROJECT_RDNN_NAME + '.appdata.xml.in',
- input: PROJECT_RDNN_NAME + '.appdata.xml.in.in',
diff --git a/debian/patches/series b/debian/patches/series
index a34460bc..e69de29b 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +0,0 @@
-meson-Remove-incorrect-i18n.merge_file-argument.patch
diff --git a/debian/upstream/metadata b/debian/upstream/metadata
index 0892cc4b..f9066b8b 100644
--- a/debian/upstream/metadata
+++ b/debian/upstream/metadata
@@ -1,4 +1,4 @@
-Bug-Database: https://gitlab.gnome.org/GNOME/gnome-music/issues
-Bug-Submit: https://gitlab.gnome.org/GNOME/gnome-music/issues/new
+Bug-Database: https://gitlab.gnome.org/GNOME/gnome-music/-/issues
+Bug-Submit: https://gitlab.gnome.org/GNOME/gnome-music/-/issues/new
Repository: https://gitlab.gnome.org/gnome/gnome-music.git
-Repository-Browse: https://gitlab.gnome.org/gnome/gnome-music
+Repository-Browse: https://gitlab.gnome.org/GNOME/gnome-music
diff --git a/debian/watch b/debian/watch
index 6b05f4ad..64675b41 100644
--- a/debian/watch
+++ b/debian/watch
@@ -1,4 +1,4 @@
version=4
-opts="searchmode=plain, uversionmangle=s/\.(alpha|beta|rc)/~$1/" \
+opts="searchmode=plain, uversionmangle=s/\.(alpha|beta|rc)/~$1/, downloadurlmangle=s|cache.json||" \
https://download.gnome.org/sources/@PACKAGE@/cache.json \
- \d+/@PACKAGE@-([\d.]+)@ARCHIVE_EXT@
+ [\d.]+/@PACKAGE@-([\d.]+)@ARCHIVE_EXT@
diff --git a/gnome-music.in b/gnome-music.in
index ca1a3dda..7f69c1b0 100755
--- a/gnome-music.in
+++ b/gnome-music.in
@@ -40,29 +40,18 @@ if _LOCAL:
import gi
-gi.require_version('Gtk', '3.0')
+gi.require_version("Adw", "1")
+gi.require_version('Gtk', '4.0')
gi.require_version('GIRepository', '2.0')
gi.require_version('Gst', '1.0')
-gi.require_version("Handy", "1")
-from gi.repository import GIRepository, Gio, Gtk, Gst, Handy
+from gi.repository import Adw, GIRepository, Gio, Gtk, Gst
Gst.init(None)
-Handy.init()
+Adw.init()
LOCALE_DIR = '@localedir@'
PKGDATA_DIR = '@pkgdatadir@'
-
-
-def set_gfm():
- """Configures application to use gfm."""
- gfm_libdir = '@gfmlibdir@'
- if _LOCAL:
- gfm_typelibdir = '@gfmlibdir@'
- else:
- gfm_typelibdir = '@gfmlibdir@/girepository-1.0'
-
- GIRepository.Repository.prepend_search_path(gfm_typelibdir)
- GIRepository.Repository.prepend_library_path(gfm_libdir)
+VERSION = '@version@'
def set_exception_hook():
"""Configures sys.excepthook to enforce Gtk application exiting."""
@@ -103,15 +92,14 @@ def run_application():
"""Runs GNOME Music application and returns its exit code."""
from gnomemusic.application import Application
- app = Application('@application_id@')
+ app = Application('@application_id@', VERSION)
signal.signal(signal.SIGINT, signal.SIG_DFL)
return app.run(sys.argv)
def main():
"""Sets environment and runs GNOME Music."""
- set_gfm()
- set_exception_hook()
+ # set_exception_hook()
set_internationalization()
set_resources()
return run_application()
diff --git a/gnomemusic/about.py b/gnomemusic/about.py
new file mode 100644
index 00000000..1d6a708b
--- /dev/null
+++ b/gnomemusic/about.py
@@ -0,0 +1,258 @@
+# aboutwindow.py
+#
+# Copyright 2022 Christopher Davis <christopherdavis@gnome.org>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+from gettext import gettext as _
+
+from gi.repository import Adw, Gtk
+
+
+def show_about(app_id, version, parent):
+ developers = [
+ "Abhinav Singh",
+ "Adam Blanchet",
+ "Adrian Solom",
+ "Alberto Fanjul",
+ "Alexander Mikhaylenko",
+ "Andre Klapper",
+ "Andreas Nilsson",
+ "Apostol Bakalov",
+ "Arnel A. Borja",
+ "Ashwani Singh Tanwar",
+ "Ashwin Mohan",
+ "Atharva Veer",
+ "Automeris Naranja",
+ "Benoît Legat",
+ "Bilal Elmoussaoui",
+ "Billy Barrow",
+ "Bruce Cowan",
+ "Carlos Garnacho",
+ "Carlos Soriano",
+ "Chinmay Gurjar",
+ "Christophe van den Abbeele",
+ "Christopher Davis",
+ "Clayton G. Hobbs",
+ "Divyanshu Vishwakarma",
+ "Eslam Mostafa",
+ "Elias Entrup",
+ "Erik Inkinen",
+ "Evan Nehring",
+ "Evandro Giovanini",
+ "Ezike Ebuka",
+ "Fabiano Fidêncio",
+ "Felipe Borges",
+ "Florian Darfeuille",
+ "Gaurav Narula",
+ "Georges Basile Stavracas Neto",
+ "Guillaume Quintard",
+ "Gyanesh Malhotra",
+ "Harry Xie",
+ "Hugo Posnic",
+ "Ishaan Shah",
+ "Islam Bahnasy",
+ "Jakub Steiner",
+ "James A. Baker",
+ "Jan Alexander Steffens",
+ "Janne Körkkö",
+ "Jan-Michael Brummer",
+ "Jean Felder",
+ "Jeremy Bicha",
+ "Jesus Bermudez Velazquez",
+ "Jordan Petridis",
+ "Juan José González",
+ "Juan Suarez",
+ "Kainaat Singh",
+ "Kalev Lember",
+ "Kevin Haller",
+ "Konstantin Pospelov",
+ "Koushik Sahu",
+ "Lucy Coleclough",
+ "Marinus Schraal",
+ "Michael Catanzaro",
+ "Mohanna Datta Yelugoti",
+ "Nick Richards",
+ "Niels De Graef",
+ "Nikolay Yanchuk",
+ "Nils Reuße",
+ "Pablo Palácios",
+ "Phil Dawson",
+ "Piotr DrÄ…g",
+ "Prashant Tyagi",
+ "Rafael Coelho",
+ "Rashi Sah",
+ "Rasmus Thomsen",
+ "Reuben Dsouza",
+ "Robert Greener",
+ "Sabri Ãœnal",
+ "Sagar Lakhani",
+ "Sai Suman Prayaga",
+ "Sam Hewitt",
+ "Sam Thursfield",
+ "Sambhav Kothari",
+ "Seif Lotfy",
+ "Shivani Poddar",
+ "Shivansh Handa",
+ "Simon McVittie",
+ "Sophie Herold",
+ "Subhadip Jana",
+ "Sumaid Syed",
+ "Suyash Garg",
+ "Tapasweni Pathak",
+ "Taylor Garcia",
+ "Tjipke van der Heide",
+ "Vadim Rutkovsky",
+ "Veerasamy Sevagen",
+ "Vineet Reddy",
+ "Weifang Lai",
+ "Yann Delaby",
+ "Yash Singh",
+ "Yosef Or Boczko"
+ ]
+
+ designers = [
+ "Allan Day",
+ "Jakub Steiner",
+ "William Jon McCann"
+ ]
+
+ translators = [
+ "Adolfo Jayme Barrientos",
+ "à®…à®°à¯à®³à¯à®°à®¾à®œà®©à¯ à®… லை",
+ "A S Alam",
+ "Alain Lojewski",
+ "Alan Mortensen",
+ "Aleksandr Melman",
+ "Alexander Shopov",
+ "Alexandre Franke",
+ "Alexey Rubtsov",
+ "Anders Jonsson",
+ "Andika Triwidada",
+ "Anish Sheela",
+ "Arash Mousavi",
+ "Asier Sarasua Garmendia",
+ "Ask Hjorth Larsen",
+ "Aurimas ÄŒernius",
+ "Balázs Meskó",
+ "Balázs Úr",
+ "Baurzhan Muftakhidinov",
+ "Bruce Cowan",
+ "Boyuan Yang",
+ "Carmen Bianca Bakker",
+ "Cédric Valmary",
+ "Chao-Hsiung Liao",
+ "Charles Monzat",
+ "Cheng Lu",
+ "Cheng-Chia Tseng",
+ "Claude Paroz",
+ "Danial Behzadi",
+ "Daniel Korostil",
+ "Daniel Mustieles García",
+ "Daniel Șerbănescu",
+ "David King",
+ "Dušan Kazik",
+ "Efstathios Iosifidis",
+ "Emin Tufan Çetin",
+ "Enrico Nicoletto",
+ "Fábio Nogueira",
+ "Fabio Tomat",
+ "Florentina Mușat",
+ "Fran Diéguez",
+ "Furkan Tokaç",
+ "Gábor Kelemen",
+ "Gil Forcada Codinachs",
+ "Goran Vidović",
+ "Guillaume Bernard",
+ "Henrique Machado Campos",
+ "Hugo Carvalho",
+ "Inaki Larranaga Murgoitio",
+ "Jiri Grönroos",
+ "Joe Hansen",
+ "Jor Teron",
+ "Jordi Mas",
+ "Juliano Camargo",
+ "Julien Humbert",
+ "Justin van Steijn",
+ "Kjartan Maraas",
+ "Kristjan Schmidt",
+ "Kukuh Syafaat",
+ "Leônidas Araújo",
+ "Luna Jernberg",
+ "Марко КоÑтић",
+ "Marek Černocký",
+ "Mario Blättermann",
+ "Matej UrbanÄiÄ",
+ "Matheus Barbosa",
+ "Milo Casagrande",
+ "Mingcong Bai",
+ "Mpho Jele",
+ "МироÑлав Ðиколић",
+ "Милош Поповић",
+ "Nart Tlisha",
+ "Nathan Follens",
+ "Osman Karagöz",
+ "Pawan Chitrakar",
+ "Petr Kovář",
+ "Philipp Kiemle",
+ "Piotr DrÄ…g",
+ "Quentin Pagès",
+ "Rafael Fontenelle",
+ "Rodrigo Lledó Milanca",
+ "RÅ«dolfs Mazurs",
+ "Ryuta Fujii",
+ "RÅ«dolfs Mazurs",
+ "Sabri Ãœnal",
+ "Sebastian Rasmussen",
+ "Seong-ho Cho",
+ "Stas Solovey",
+ "Sveinn í Felli",
+ "Tiago Santos",
+ "Tim Sabsch",
+ "Tjipke van der Heide",
+ "Tom Tryfonidis",
+ "Trần Ngá»c Quân",
+ "Vasil Pupkin",
+ "Vinzenz Vietzke",
+ "Xavi Ivars",
+ "Yaron Shahrabani",
+ "Yi-Jyun Pan",
+ "Yosef Or Boczko",
+ "Yuras Shumovich",
+ "Yuri Chornoivan",
+ "Yuri Myasoedov",
+ "Zander Brown",
+ "Zmicer Turok",
+ "Zurab Kargareteli"
+ ]
+
+ about = Adw.AboutWindow(
+ application_name=_("Music"),
+ application_icon=app_id,
+ developer_name=_("The GNOME Project"),
+ transient_for=parent,
+ developers=developers,
+ designers=designers,
+ translator_credits=_("translator-credits"),
+ version=version,
+ website="https://wiki.gnome.org/Apps/Music",
+ issue_url="https://gitlab.gnome.org/GNOME/gnome-music/-/issues/new",
+ copyright=_("Copyright The GNOME Music Developers"),
+ license_type=Gtk.License.GPL_2_0)
+
+ about.add_credit_section(_("Translated by"), translators)
+
+ about.present()
diff --git a/gnomemusic/albumart.py b/gnomemusic/albumart.py
index 7a8f6a12..6e3348df 100644
--- a/gnomemusic/albumart.py
+++ b/gnomemusic/albumart.py
@@ -29,6 +29,8 @@ from gi.repository import GObject, MediaArt
from gnomemusic.asyncqueue import AsyncQueue
from gnomemusic.embeddedart import EmbeddedArt
from gnomemusic.fileexistsasync import FileExistsAsync
+from gnomemusic.griloartqueue import GriloArtQueue
+from gnomemusic.utils import CoreObjectType
class AlbumArt(GObject.GObject):
@@ -50,19 +52,20 @@ class AlbumArt(GObject.GObject):
self._album = self._corealbum.props.title
self._artist = self._corealbum.props.artist
+ self._grilo_art_queue = GriloArtQueue(application)
+
self._in_cache()
def _on_embedded_art_found(self, embeddedart, found):
if found:
self._in_cache()
else:
- self._coregrilo.get_album_art(self._corealbum)
+ self._grilo_art_queue.queue(self._corealbum, CoreObjectType.ALBUM)
def _in_cache(self):
success, thumb_file = MediaArt.get_file(
self._artist, self._album, "album")
if not success:
- self._corealbum.props.thumbnail = "generic"
return
def on_file_exists_async_finished(obj, result):
diff --git a/gnomemusic/application.py b/gnomemusic/application.py
index c92a6aa1..dc6cbe18 100644
--- a/gnomemusic/application.py
+++ b/gnomemusic/application.py
@@ -30,10 +30,12 @@
# code, but you are not obligated to do so. If you do not wish to do so,
# delete this exception statement from your version.
+from typing import Optional
from gettext import gettext as _
-from gi.repository import Gtk, Gio, GLib, Gdk, GObject
+from gi.repository import Adw, Gtk, Gio, GLib, Gdk, GObject
+from gnomemusic.about import show_about
from gnomemusic.coregrilo import CoreGrilo
from gnomemusic.coremodel import CoreModel
from gnomemusic.coreselection import CoreSelection
@@ -45,14 +47,13 @@ from gnomemusic.pauseonsuspend import PauseOnSuspend
from gnomemusic.player import Player
from gnomemusic.scrobbler import LastFmScrobbler
from gnomemusic.search import Search
-from gnomemusic.widgets.aboutdialog import AboutDialog
from gnomemusic.widgets.lastfmdialog import LastfmDialog
from gnomemusic.window import Window
-class Application(Gtk.Application):
+class Application(Adw.Application):
- def __init__(self, application_id):
+ def __init__(self, application_id, version):
super().__init__(
application_id=application_id,
flags=Gio.ApplicationFlags.FLAGS_NONE)
@@ -61,7 +62,7 @@ class Application(Gtk.Application):
GLib.set_prgname(application_id)
GLib.setenv("PULSE_PROP_media.role", "music", True)
- self._init_style()
+ self._version = version
self._window = None
self._log = MusicLogger()
@@ -78,17 +79,11 @@ class Application(Gtk.Application):
self._lastfm_scrobbler = LastFmScrobbler(self)
self._player = Player(self)
+ self._lastfm_dialog: Optional[LastfmDialog] = None
+
InhibitSuspend(self)
PauseOnSuspend(self._player)
- def _init_style(self):
- css_provider = Gtk.CssProvider()
- css_provider.load_from_resource('/org/gnome/Music/org.gnome.Music.css')
- screen = Gdk.Screen.get_default()
- style_context = Gtk.StyleContext()
- style_context.add_provider_for_screen(
- screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
-
@GObject.Property(
type=CoreGrilo, default=None, flags=GObject.ParamFlags.READABLE)
def coregrilo(self):
@@ -202,24 +197,41 @@ class Application(Gtk.Application):
if accel is not None:
self.set_accels_for_action(*accel)
- def _help(self, action, param):
- try:
- Gtk.show_uri(None, "help:gnome-music", Gdk.CURRENT_TIME)
- except GLib.Error:
- self._log.message("Help handler not available.")
+ def _help(self, action: Gio.Action, param: Optional[GLib.Variant]) -> None:
+
+ def show_uri_cb(parent: Gtk.Window, result: Gio.AsyncResult) -> None:
+ try:
+ Gtk.show_uri_full_finish(parent, result)
+ except GLib.Error:
+ self._log.message("Help handler not available.")
+
+ Gtk.show_uri_full(
+ self._window, "help:gnome-music", Gdk.CURRENT_TIME, None,
+ show_uri_cb)
+
+ def _lastfm_account(
+ self, action: Gio.SimpleAction,
+ param: Optional[GLib.Variant]) -> None:
+
+ def on_response(dialog: LastfmDialog, response_id: int) -> None:
+ if not self._lastfm_dialog:
+ return
+
+ self._lastfm_dialog.destroy()
+ self._lastfm_dialog = None
- def _lastfm_account(self, action, param):
- lastfm_dialog = LastfmDialog(self._window, self._lastfm_scrobbler)
- lastfm_dialog.run()
- lastfm_dialog.destroy()
+ self._lastfm_dialog = LastfmDialog(
+ self._window, self._lastfm_scrobbler)
+ self._lastfm_dialog.connect("response", on_response)
+ self._lastfm_dialog.present()
def _about(self, action, param):
- about = AboutDialog()
- about.props.transient_for = self._window
- about.present()
+ show_about(self.props.application_id, self._version, self._window)
def do_startup(self):
- Gtk.Application.do_startup(self)
+ Adw.Application.do_startup(self)
+ Adw.StyleManager.get_default().set_color_scheme(
+ Adw.ColorScheme.PREFER_LIGHT)
self._set_actions()
def _quit(self, action=None, param=None):
diff --git a/gnomemusic/artcache.py b/gnomemusic/artcache.py
deleted file mode 100644
index 6a53776f..00000000
--- a/gnomemusic/artcache.py
+++ /dev/null
@@ -1,133 +0,0 @@
-# Copyright 2020 The GNOME Music developers
-#
-# GNOME Music is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# GNOME Music is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with GNOME Music; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# The GNOME Music authors hereby grant permission for non-GPL compatible
-# GStreamer plugins to be used and distributed together with GStreamer
-# and GNOME Music. This permission is above and beyond the permissions
-# granted by the GPL license by which GNOME Music is covered. If you
-# modify this code, you may extend this exception to your version of the
-# code, but you are not obligated to do so. If you do not wish to do so,
-# delete this exception statement from your version.
-
-from gi.repository import Gdk, GdkPixbuf, Gio, GLib, GObject
-
-from gnomemusic.corealbum import CoreAlbum
-from gnomemusic.coreartist import CoreArtist
-from gnomemusic.coresong import CoreSong
-from gnomemusic.defaulticon import DefaultIcon, make_icon_frame
-from gnomemusic.musiclogger import MusicLogger
-from gnomemusic.utils import ArtSize
-
-
-class ArtCache(GObject.GObject):
- """Handles retrieval of MediaArt cache art
-
- Uses signals to indicate success or failure and always returns a
- Cairo.Surface.
- """
-
- __gtype_name__ = "ArtCache"
-
- __gsignals__ = {
- "finished": (GObject.SignalFlags.RUN_FIRST, None, (object, ))
- }
-
- _log = MusicLogger()
-
- def __init__(self):
- super().__init__()
-
- self._size = ArtSize.SMALL
- self._scale = 1
-
- self._coreobject = None
- self._default_icon = None
- self._surface = None
-
- def start(self, coreobject, size, scale):
- """Start the cache query
-
- :param coreobject: The object to search art for
- :param ArtSize size: The desired size
- :param int scale: The scaling factor
- """
- self._coreobject = coreobject
- self._scale = scale
- self._size = size
-
- if isinstance(coreobject, CoreArtist):
- self._default_icon = DefaultIcon().get(
- DefaultIcon.Type.ARTIST, self._size, self._scale)
- elif (isinstance(coreobject, CoreAlbum)
- or isinstance(coreobject, CoreSong)):
- self._default_icon = DefaultIcon().get(
- DefaultIcon.Type.ALBUM, self._size, self._scale)
-
- thumbnail_uri = coreobject.props.thumbnail
- if thumbnail_uri == "generic":
- self.emit("finished", self._default_icon)
- return
-
- thumb_file = Gio.File.new_for_uri(thumbnail_uri)
- if thumb_file:
- thumb_file.read_async(
- GLib.PRIORITY_LOW, None, self._open_stream, None)
- return
-
- self.emit("finished", self._default_icon)
-
- def _open_stream(self, thumb_file, result, arguments):
- try:
- stream = thumb_file.read_finish(result)
- except GLib.Error as error:
- self._log.warning(
- "Error: {}, {}".format(error.domain, error.message))
- self.emit("finished", self._default_icon)
- return
-
- GdkPixbuf.Pixbuf.new_from_stream_async(
- stream, None, self._pixbuf_loaded, None)
-
- def _pixbuf_loaded(self, stream, result, data):
- try:
- pixbuf = GdkPixbuf.Pixbuf.new_from_stream_finish(result)
- except GLib.Error as error:
- self._log.warning(
- "Error: {}, {}".format(error.domain, error.message))
- self.emit("finished", self._default_icon)
- return
-
- stream.close_async(GLib.PRIORITY_LOW, None, self._close_stream, None)
-
- surface = Gdk.cairo_surface_create_from_pixbuf(
- pixbuf, self._scale, None)
- if isinstance(self._coreobject, CoreArtist):
- surface = make_icon_frame(
- surface, self._size, self._scale, round_shape=True)
- elif (isinstance(self._coreobject, CoreAlbum)
- or isinstance(self._coreobject, CoreSong)):
- surface = make_icon_frame(surface, self._size, self._scale)
-
- self._surface = surface
-
- def _close_stream(self, stream, result, data):
- try:
- stream.close_finish(result)
- except GLib.Error as error:
- self._log.warning(
- "Error: {}, {}".format(error.domain, error.message))
-
- self.emit("finished", self._surface)
diff --git a/gnomemusic/artistart.py b/gnomemusic/artistart.py
index 04d913c7..c9360658 100644
--- a/gnomemusic/artistart.py
+++ b/gnomemusic/artistart.py
@@ -28,6 +28,8 @@ from gi.repository import GObject, MediaArt
from gnomemusic.asyncqueue import AsyncQueue
from gnomemusic.fileexistsasync import FileExistsAsync
+from gnomemusic.griloartqueue import GriloArtQueue
+from gnomemusic.utils import CoreObjectType
class ArtistArt(GObject.GObject):
@@ -48,20 +50,22 @@ class ArtistArt(GObject.GObject):
self._coregrilo = application.props.coregrilo
self._artist = self._coreartist.props.artist
+ self._grilo_art_queue = GriloArtQueue(application)
+
self._in_cache()
def _in_cache(self):
success, thumb_file = MediaArt.get_file(self._artist, None, "artist")
if not success:
- self._coreartist.props.thumbnail = "generic"
return
def on_file_exists_async_finished(obj, result):
if result:
self._coreartist.props.thumbnail = thumb_file.get_uri()
else:
- self._coregrilo.get_artist_art(self._coreartist)
+ self._grilo_art_queue.queue(
+ self._coreartist, CoreObjectType.ARTIST)
file_exists_async = FileExistsAsync()
file_exists_async.connect(
diff --git a/gnomemusic/asyncqueue.py b/gnomemusic/asyncqueue.py
index 093a2664..6658c103 100644
--- a/gnomemusic/asyncqueue.py
+++ b/gnomemusic/asyncqueue.py
@@ -56,8 +56,9 @@ class AsyncQueue(GObject.GObject):
self._async_pool: Dict[int, Tuple] = {}
self._async_active_pool: Dict[int, Tuple] = {}
+ self._async_data: Dict[object, Tuple[int, float]] = {}
self._log = MusicLogger()
- self._max_async = 4
+ self._max_async = 40
self._queue_name = queue_name if queue_name else self
self._timeout_id = 0
@@ -71,43 +72,49 @@ class AsyncQueue(GObject.GObject):
"""
async_obj_id = id(args[0])
- if (async_obj_id not in self._async_pool
- and async_obj_id not in self._async_active_pool):
- self._async_pool[async_obj_id] = (args)
+ if async_obj_id in self._async_active_pool:
+ obj = args[0]
+ handler_id, _ = self._async_data.pop(obj)
+ obj.disconnect(handler_id)
+ self._async_active_pool.pop(id(obj))
+ elif async_obj_id in self._async_pool:
+ self._async_pool.pop(async_obj_id)
+
+ self._async_pool[async_obj_id] = (args)
if self._timeout_id == 0:
self._timeout_id = GLib.timeout_add(100, self._dispatch)
def _dispatch(self) -> bool:
- result_id = 0
tick = time.time()
- def on_async_finished(obj, *signal_args):
- t = (time.time() - tick) * 1000
- self._log.debug(f"{self._queue_name}: {t:.2f} ms task")
-
- a = len(self._async_active_pool)
- self._log.debug(
- f"{self._queue_name}: "
- f"{a} active task(s) of {len(self._async_pool) + a}")
-
- obj.disconnect(result_id)
- self._async_active_pool.pop(id(obj))
+ while len(self._async_active_pool) < self._max_async:
+ if len(self._async_pool) == 0:
+ self._timeout_id = 0
+ return GLib.SOURCE_REMOVE
- if len(self._async_pool) > 0:
- key = list(self._async_pool.keys())[0]
- args = self._async_pool.pop(key)
- self.queue(*args)
-
- if len(self._async_pool) == 0:
- self._timeout_id = 0
- return GLib.SOURCE_REMOVE
- elif len(self._async_active_pool) < self._max_async:
- async_obj_id, async_task_args = self._async_pool.popitem()
+ async_obj_id = list(self._async_pool.keys())[0]
+ async_task_args = self._async_pool.pop(async_obj_id)
async_obj = async_task_args[0]
self._async_active_pool[async_obj_id] = async_task_args
- result_id = async_obj.connect("finished", on_async_finished)
+ self._async_data[async_obj] = (
+ async_obj.connect("finished", self._on_async_finished),
+ tick)
async_obj.start(*async_task_args[1:])
+ self._log.debug(
+ f"{self._queue_name}: "
+ f"{len(self._async_active_pool)} active task(s)"
+ f"with {len(self._async_pool)} remaining")
+
return GLib.SOURCE_CONTINUE
+
+ def _on_async_finished(
+ self, obj: Any, *signal_args: Any) -> None:
+ handler_id, tick = self._async_data.pop(obj)
+ t = (time.time() - tick) * 1000
+ self._log.debug(f"{self._queue_name}: {t:.2f} ms task")
+
+ obj.disconnect(handler_id)
+ self._async_active_pool.pop(id(obj))
diff --git a/gnomemusic/corealbum.py b/gnomemusic/corealbum.py
index 9ce98772..dca42dc8 100644
--- a/gnomemusic/corealbum.py
+++ b/gnomemusic/corealbum.py
@@ -22,9 +22,11 @@
# code, but you are not obligated to do so. If you do not wish to do so,
# delete this exception statement from your version.
+from __future__ import annotations
+
import gi
-gi.require_versions({"Gfm": "0.1", "Grl": "0.3"})
-from gi.repository import Gfm, Gio, Grl, GObject
+gi.require_versions({"Grl": "0.3"})
+from gi.repository import Gio, Grl, Gtk, GObject
import gnomemusic.utils as utils
@@ -35,13 +37,15 @@ class CoreAlbum(GObject.GObject):
"""Exposes a Grl.Media with relevant data as properties
"""
+ __gtype_name__ = "CoreAlbum"
+
artist = GObject.Property(type=str)
composer = GObject.Property(type=str, default=None)
duration = GObject.Property(type=int, default=0)
media = GObject.Property(type=Grl.Media)
title = GObject.Property(type=str)
url = GObject.Property(type=str)
- year = GObject.Property(type=str, default="----")
+ year = GObject.Property(type=str, default=None)
def __init__(self, application, media):
"""Initiate the CoreAlbum object
@@ -73,20 +77,27 @@ class CoreAlbum(GObject.GObject):
def _get_album_model(self):
disc_model = Gio.ListStore()
- disc_model_sort = Gfm.SortListModel.new(disc_model)
+ disc_model_sort = Gtk.SortListModel.new(disc_model)
- def _disc_order_sort(disc_a, disc_b):
- return disc_a.props.disc_nr - disc_b.props.disc_nr
+ def _disc_order_sort(disc_a, disc_b, data=None):
+ order = disc_a.props.disc_nr - disc_b.props.disc_nr
+ if order < 0:
+ return Gtk.Ordering.SMALLER
+ elif order > 0:
+ return Gtk.Ordering.LARGER
+ else:
+ return Gtk.Ordering.EQUAL
- disc_model_sort.set_sort_func(
- utils.wrap_list_store_sort_func(_disc_order_sort))
+ disc_sorter = Gtk.CustomSorter()
+ disc_sorter.set_sort_func(_disc_order_sort)
+ disc_model_sort.set_sorter(disc_sorter)
self._coregrilo.get_album_discs(self.props.media, disc_model)
return disc_model_sort
@GObject.Property(
- type=Gfm.SortListModel, default=None,
+ type=Gtk.SortListModel, default=None,
flags=GObject.ParamFlags.READABLE)
def model(self):
if self._model is None:
@@ -153,3 +164,10 @@ class CoreAlbum(GObject.GObject):
:param string value: uri or "generic"
"""
self._thumbnail = value
+
+ if self._thumbnail != "generic":
+ self.props.media.set_thumbnail(self._thumbnail)
+
+ @GObject.Property(type=object, flags=GObject.ParamFlags.READABLE)
+ def corealbum(self) -> CoreAlbum:
+ return self
diff --git a/gnomemusic/coreartist.py b/gnomemusic/coreartist.py
index 4da04719..b8d8521b 100644
--- a/gnomemusic/coreartist.py
+++ b/gnomemusic/coreartist.py
@@ -23,8 +23,8 @@
# delete this exception statement from your version.
import gi
-gi.require_versions({"Gfm": "0.1", "Grl": "0.3"})
-from gi.repository import Gfm, Grl, GObject
+gi.require_versions({"Grl": "0.3"})
+from gi.repository import Grl, Gtk, GObject
from gnomemusic.artistart import ArtistArt
import gnomemusic.utils as utils
@@ -59,24 +59,34 @@ class CoreArtist(GObject.GObject):
self.props.artist = utils.get_artist_name(media)
def _get_artist_album_model(self):
- albums_model_filter = Gfm.FilterListModel.new(
+ albums_model_filter = Gtk.FilterListModel.new(
self._coremodel.props.albums)
- albums_model_filter.set_filter_func(lambda a: False)
+ albums_model_filter.set_filter(Gtk.AnyFilter())
- albums_model_sort = Gfm.SortListModel.new(albums_model_filter)
+ albums_model_sort = Gtk.SortListModel.new(albums_model_filter)
self._coregrilo.get_artist_albums(
self.props.media, albums_model_filter)
- def _album_sort(album_a, album_b):
- return album_a.props.year > album_b.props.year
-
- albums_model_sort.set_sort_func(
- utils.wrap_list_store_sort_func(_album_sort))
+ def _album_sort(album_a, album_b, data=None):
+ year_a = album_a.props.year
+ year_b = album_b.props.year
+ if None in [year_a, year_b]:
+ return Gtk.Ordering.EQUAL
+ elif year_a > year_b:
+ return Gtk.Ordering.LARGER
+ elif year_a < year_b:
+ return Gtk.Ordering.SMALLER
+ else:
+ return Gtk.Ordering.EQUAL
+
+ albums_sorter = Gtk.CustomSorter()
+ albums_sorter.set_sort_func(_album_sort)
+ albums_model_sort.set_sorter(albums_sorter)
return albums_model_sort
- @GObject.Property(type=Gfm.SortListModel, default=None)
+ @GObject.Property(type=Gtk.SortListModel, default=None)
def model(self):
if self._model is None:
self._model = self._get_artist_album_model()
@@ -127,3 +137,6 @@ class CoreArtist(GObject.GObject):
:param string value: uri or "generic"
"""
self._thumbnail = value
+
+ if self._thumbnail != "generic":
+ self.props.media.set_thumbnail(self._thumbnail)
diff --git a/gnomemusic/coredisc.py b/gnomemusic/coredisc.py
index 697089a6..ece33ba2 100644
--- a/gnomemusic/coredisc.py
+++ b/gnomemusic/coredisc.py
@@ -22,13 +22,13 @@
# code, but you are not obligated to do so. If you do not wish to do so,
# delete this exception statement from your version.
-from gi.repository import GObject, Gio, Gfm, Grl
-
-import gnomemusic.utils as utils
+from gi.repository import GObject, Gio, Grl, Gtk
class CoreDisc(GObject.GObject):
+ __gtype_name__ = "CoreDisc"
+
disc_nr = GObject.Property(type=int, default=0)
duration = GObject.Property(type=int, default=None)
media = GObject.Property(type=Grl.Media, default=None)
@@ -47,7 +47,6 @@ class CoreDisc(GObject.GObject):
self._filter_model = None
self._log = application.props.log
self._model = None
- self._old_album_ids = []
self._selected = False
self.update(media)
@@ -58,20 +57,28 @@ class CoreDisc(GObject.GObject):
@GObject.Property(type=Gio.ListModel, default=None)
def model(self):
- def _disc_sort(song_a, song_b):
- return song_a.props.track_number - song_b.props.track_number
+ def _disc_sort(song_a, song_b, data=None):
+ order = song_a.props.track_number - song_b.props.track_number
+ if order < 0:
+ return Gtk.Ordering.SMALLER
+ elif order > 0:
+ return Gtk.Ordering.LARGER
+ else:
+ return Gtk.Ordering.EQUAL
if self._model is None:
- self._filter_model = Gfm.FilterListModel.new(
+ self._filter_model = Gtk.FilterListModel.new(
self._coremodel.props.songs)
- self._filter_model.set_filter_func(lambda a: False)
- self._model = Gfm.SortListModel.new(self._filter_model)
- self._model.set_sort_func(
- utils.wrap_list_store_sort_func(_disc_sort))
+ self._filter_model.set_filter(Gtk.AnyFilter())
+
+ self._model = Gtk.SortListModel.new(self._filter_model)
+ disc_sorter = Gtk.CustomSorter()
+ disc_sorter.set_sort_func(_disc_sort)
+ self._model.set_sorter(disc_sorter)
self._model.connect("items-changed", self._on_disc_changed)
- self._get_album_disc(
+ self._coregrilo.get_album_disc(
self.props.media, self.props.disc_nr, self._filter_model)
return self._model
@@ -85,36 +92,16 @@ class CoreDisc(GObject.GObject):
self.props.duration = duration
- def _get_album_disc(self, media, discnr, model):
- album_ids = []
- model_filter = model
-
- def _filter_func(core_song):
- return core_song.props.grlid in album_ids
-
- def _callback(source, op_id, media, remaining, error):
- if error:
- self._log.warning("Error: {}".format(error))
- return
-
- if media is None:
- if sorted(album_ids) == sorted(self._old_album_ids):
- return
- model_filter.set_filter_func(_filter_func)
- self._old_album_ids = album_ids
- return
-
- album_ids.append(media.get_source() + media.get_id())
-
- self._coregrilo.populate_album_disc_songs(media, discnr, _callback)
-
@GObject.Property(
- type=bool, default=False, flags=GObject.BindingFlags.SYNC_CREATE)
+ type=bool, default=False, flags=GObject.ParamFlags.READWRITE)
def selected(self):
return self._selected
@selected.setter # type: ignore
def selected(self, value):
+ if value == self._selected:
+ return
+
self._selected = value
# The model is loaded on-demand, so the first time the model is
diff --git a/gnomemusic/coregrilo.py b/gnomemusic/coregrilo.py
index 99368882..e5c17aca 100644
--- a/gnomemusic/coregrilo.py
+++ b/gnomemusic/coregrilo.py
@@ -25,8 +25,8 @@
import weakref
import gi
-gi.require_version('Grl', '0.3')
-from gi.repository import Grl, GLib, GObject
+gi.require_version("Grl", "0.3")
+from gi.repository import Grl, GLib, GObject, Gtk
from gnomemusic.grilowrappers.grlsearchwrapper import GrlSearchWrapper
from gnomemusic.grilowrappers.grltrackerwrapper import GrlTrackerWrapper
@@ -178,7 +178,7 @@ class CoreGrilo(GObject.GObject):
"""Get all album by an artist
:param Grl.Media media: A Grilo Media item that represents Artist
- :param Gfm.FilterListModel filter_model: The model to fill
+ :param Gtk.FilterListModel filter_model: The model to fill
"""
source = media.get_source()
self._wrappers[source].get_artist_albums(media, filter_model)
@@ -187,21 +187,22 @@ class CoreGrilo(GObject.GObject):
"""Get all discs from an album
:param Grl.Media media: A Grilo Media item that represents Album
- :param Gfm.SortListModel disc_model: The model to fill
+ :param Gtk.SortListModel disc_model: The model to fill
"""
source = media.get_source()
self._wrappers[source].get_album_discs(media, disc_model)
- def populate_album_disc_songs(self, media, discnr, callback):
+ def get_album_disc(
+ self, media: Grl.Media, discnr: int,
+ model: Gtk.FilterListModel) -> None:
"""Get all songs from an album disc
- :param Grl.Media media: A Grilo Media item that represents Album
+ :param Grl.Media media: An album
:param int discnr: The disc number
- :param callback: The callback to call for every song added
+ :param Gtk.FilterListModel model: The model to fill
"""
source = media.get_source()
- self._wrappers[source].populate_album_disc_songs(
- media, discnr, callback)
+ self._wrappers[source].get_album_disc(media, discnr, model)
def writeback(self, media, key):
"""Store the values associated with the key.
@@ -241,29 +242,35 @@ class CoreGrilo(GObject.GObject):
for wrapper in self._search_wrappers.values():
wrapper.search(text)
- def get_song_art(self, coresong):
+ def get_song_art(self, coresong, storeart=None):
"""Retrieve song art for the given CoreSong
:param CoreSong coresong: CoreSong to retrieve art for
+ :param StoreArt storeart: StoreArt instance or None
"""
if "grl-tracker3-source" in self._wrappers:
- self._wrappers["grl-tracker3-source"].get_song_art(coresong)
+ self._wrappers["grl-tracker3-source"].get_song_art(
+ coresong, storeart)
- def get_album_art(self, corealbum):
+ def get_album_art(self, corealbum, storeart=None):
"""Retrieve album art for the given CoreAlbum
:param CoreAlbum corealbum: CoreAlbum to retrieve art for
+ :param StoreArt storeart: StoreArt instance or None
"""
if "grl-tracker3-source" in self._wrappers:
- self._wrappers["grl-tracker3-source"].get_album_art(corealbum)
+ self._wrappers["grl-tracker3-source"].get_album_art(
+ corealbum, storeart)
- def get_artist_art(self, coreartist):
+ def get_artist_art(self, coreartist, storeart=None):
"""Retrieve artist art for the given CoreArtist
:param CoreArtist coreartist: CoreArtist to retrieve art for
+ :param StoreArt storeart: StoreArt instance or None
"""
if "grl-tracker3-source" in self._wrappers:
- self._wrappers["grl-tracker3-source"].get_artist_art(coreartist)
+ self._wrappers["grl-tracker3-source"].get_artist_art(
+ coreartist, storeart)
def stage_playlist_deletion(self, playlist):
"""Prepares playlist deletion.
diff --git a/gnomemusic/coremodel.py b/gnomemusic/coremodel.py
index b9110a8d..2ab5a59c 100644
--- a/gnomemusic/coremodel.py
+++ b/gnomemusic/coremodel.py
@@ -23,19 +23,16 @@
# delete this exception statement from your version.
from __future__ import annotations
-from typing import Optional, Union
+from typing import Any, Optional, Union
import typing
-import gi
-gi.require_version("Gfm", "0.1")
-from gi.repository import GLib, GObject, Gio, Gfm, Gtk
+from gi.repository import GLib, GObject, Gio, Gtk
from gnomemusic.corealbum import CoreAlbum
from gnomemusic.coreartist import CoreArtist
from gnomemusic.coresong import CoreSong
from gnomemusic.grilowrappers.grltrackerplaylists import Playlist
from gnomemusic.player import PlayerPlaylist
-from gnomemusic.songliststore import SongListStore
from gnomemusic.widgets.songwidget import SongWidget
if typing.TYPE_CHECKING:
from gnomemusic.application import Application
@@ -85,86 +82,91 @@ class CoreModel(GObject.GObject):
"""
super().__init__()
- self._flatten_model: Optional[Gfm.FlattenListModel] = None
+ self._application = application
+ self._flatten_model: Optional[Gtk.FlattenListModel] = None
self._player_signal_id = 0
self._current_playlist_model: Optional[Union[
- Gfm.FlattenListModel, Gfm.SortListModel, Gio.ListModel]] = None
+ Gtk.FlattenListModel, Gtk.SortListModel, Gio.ListModel]] = None
self._previous_playlist_model: Optional[Union[
- Gfm.FlattenListModel, Gfm.SortListModel, Gio.ListModel]] = None
+ Gtk.FlattenListModel, Gtk.SortListModel, Gio.ListModel]] = None
self._songs_model_proxy: Gio.ListStore = Gio.ListStore.new(
Gio.ListModel)
- self._songs_model: Gfm.FlattenListModel = Gfm.FlattenListModel.new(
- CoreSong, self._songs_model_proxy)
- self._songliststore = SongListStore(self._songs_model)
-
- self._application = application
+ self._flatten_songs_model = Gtk.FlattenListModel.new(
+ self._songs_model_proxy)
+ self._songs_model = Gtk.SortListModel.new(self._flatten_songs_model)
+ sorter = Gtk.CustomSorter()
+ sorter.set_sort_func(self._songs_sort)
+ self._songs_model.props.incremental = True
+ self._songs_model.set_sorter(sorter)
self._albums_model_proxy: Gio.ListStore = Gio.ListStore.new(
Gio.ListModel)
- self._albums_model: Gfm.FlattenListModel = Gfm.FlattenListModel.new(
- CoreAlbum, self._albums_model_proxy)
- self._albums_model_sort: Gfm.SortListModel = Gfm.SortListModel.new(
+ self._albums_model: Gtk.FlattenListModel = Gtk.FlattenListModel.new(
+ self._albums_model_proxy)
+ self._albums_model_sort: Gtk.SortListModel = Gtk.SortListModel.new(
self._albums_model)
- self._albums_model_sort.set_sort_func(
- utils.wrap_list_store_sort_func(self._albums_sort))
+ albums_sorter = Gtk.CustomSorter()
+ albums_sorter.set_sort_func(self._albums_sort)
+ self._albums_model_sort.set_sorter(albums_sorter)
self._artists_model_proxy: Gio.ListStore = Gio.ListStore.new(
Gio.ListModel)
- self._artists_model: Gfm.FlattenListModel = Gfm.FlattenListModel.new(
- CoreArtist, self._artists_model_proxy)
- self._artists_model_sort: Gfm.SortListModel = Gfm.SortListModel.new(
+ self._artists_model: Gtk.FlattenListModel = Gtk.FlattenListModel.new(
+ self._artists_model_proxy)
+ self._artists_model_sort: Gtk.SortListModel = Gtk.SortListModel.new(
self._artists_model)
- self._artists_model_sort.set_sort_func(
- utils.wrap_list_store_sort_func(self._artist_sort))
+ artists_sorter = Gtk.CustomSorter()
+ artists_sorter.set_sort_func(self._artist_sort)
+ self._artists_model_sort.set_sorter(artists_sorter)
self._playlist_model: Gio.ListStore = Gio.ListStore.new(CoreSong)
- self._playlist_model_sort: Gfm.SortListModel = Gfm.SortListModel.new(
+ self._playlist_model_sort: Gtk.SortListModel = Gtk.SortListModel.new(
self._playlist_model)
- self._playlist_model_recent: Gfm.SliceListModel = (
- Gfm.SliceListModel.new(
+ self._playlist_model_recent: Gtk.SliceListModel = (
+ Gtk.SliceListModel.new(
self._playlist_model_sort, 0, self._recent_size))
self._active_core_object: Optional[Union[
CoreAlbum, CoreArtist, Playlist]] = None
self._songs_search_proxy: Gio.ListStore = Gio.ListStore.new(
- Gfm.FilterListModel)
- self._songs_search_flatten: Gfm.FlattenListModel = (
- Gfm.FlattenListModel.new(CoreSong))
+ Gtk.FilterListModel)
+ self._songs_search_flatten: Gtk.FlattenListModel = (
+ Gtk.FlattenListModel())
self._songs_search_flatten.set_model(self._songs_search_proxy)
self._albums_search_proxy: Gio.Liststore = Gio.ListStore.new(
- Gfm.FilterListModel)
- self._albums_search_flatten: Gfm.FlattenListModel = (
- Gfm.FlattenListModel.new(CoreAlbum))
+ Gtk.FilterListModel)
+ self._albums_search_flatten: Gtk.FlattenListModel = (
+ Gtk.FlattenListModel())
self._albums_search_flatten.set_model(self._albums_search_proxy)
-
- self._albums_search_filter: Gfm.FilterListModel = (
- Gfm.FilterListModel.new(self._albums_search_flatten))
+ self._albums_search_filter: Gtk.FilterListModel = (
+ Gtk.FilterListModel.new(Gtk.AnyFilter()))
self._artists_search_proxy: Gio.Liststore = Gio.ListStore.new(
- Gfm.FilterListModel)
- self._artists_search_flatten: Gfm.FlattenListModel = (
- Gfm.FlattenListModel.new(CoreArtist))
+ Gtk.FilterListModel)
+ self._artists_search_flatten: Gtk.FlattenListModel = (
+ Gtk.FlattenListModel())
self._artists_search_flatten.set_model(self._artists_search_proxy)
-
- self._artists_search_filter: Gfm.FilterListModel = (
- Gfm.FilterListModel.new(self._artists_search_flatten))
+ self._artists_search_filter: Gtk.FilterListModel = (
+ Gtk.FilterListModel.new(Gtk.AnyFilter()))
self._playlists_model: Gio.ListStore = Gio.ListStore.new(Playlist)
- self._playlists_model_filter: Gfm.FilterListModel = (
- Gfm.FilterListModel.new(self._playlists_model))
- self._playlists_model_sort: Gfm.SortListModel = Gfm.SortListModel.new(
+ self._playlists_model_filter: Gtk.FilterListModel = (
+ Gtk.FilterListModel.new(self._playlists_model))
+ self._playlists_model_sort: Gtk.SortListModel = Gtk.SortListModel.new(
self._playlists_model_filter)
- self._playlists_model_sort.set_sort_func(
- utils.wrap_list_store_sort_func(self._playlists_sort))
-
- self._user_playlists_model_filter: Gfm.FilterListModel = (
- Gfm.FilterListModel.new(self._playlists_model))
- self._user_playlists_model_sort: Gfm.SortListModel = (
- Gfm.SortListModel.new(self._user_playlists_model_filter))
- self._user_playlists_model_sort.set_sort_func(
- utils.wrap_list_store_sort_func(self._playlists_sort))
+ playlists_sorter = Gtk.CustomSorter()
+ playlists_sorter.set_sort_func(self._playlists_sort)
+ self._playlists_model_sort.set_sorter(playlists_sorter)
+
+ self._user_playlists_model_filter: Gtk.FilterListModel = (
+ Gtk.FilterListModel.new(self._playlists_model))
+ self._user_playlists_model_sort: Gtk.SortListModel = (
+ Gtk.SortListModel.new(self._user_playlists_model_filter))
+ user_playlists_sorter = Gtk.CustomSorter()
+ user_playlists_sorter.set_sort_func(self._playlists_sort)
+ self._user_playlists_model_sort.set_sorter(user_playlists_sorter)
self._search: Search = application.props.search
@@ -183,29 +185,50 @@ class CoreModel(GObject.GObject):
else:
self.props.songs_available = False
- def _filter_selected(self, coresong):
- return coresong.props.selected
-
- def _albums_sort(self, album_a, album_b):
+ def _songs_sort(
+ self, song_a: CoreSong, song_b: CoreSong, data: Any = None) -> int:
+ title_a = song_a.props.title
+ title_b = song_b.props.title
+ song_cmp = (utils.normalize_caseless(title_a)
+ == utils.normalize_caseless(title_b))
+ if not song_cmp:
+ return utils.natural_sort_names(title_a, title_b)
+
+ artist_a = song_a.props.artist
+ artist_b = song_b.props.artist
+ artist_cmp = (utils.normalize_caseless(artist_a)
+ == utils.normalize_caseless(artist_b))
+ if not artist_cmp:
+ return utils.natural_sort_names(artist_a, artist_b)
+
+ return utils.natural_sort_names(song_a.props.album, song_b.props.album)
+
+ def _albums_sort(self, album_a, album_b, data=None):
return utils.natural_sort_names(
album_a.props.title, album_b.props.title)
- def _artist_sort(self, artist_a, artist_b):
+ def _artist_sort(self, artist_a, artist_b, data=None):
return utils.natural_sort_names(
artist_a.props.artist, artist_b.props.artist)
- def _playlists_sort(self, playlist_a, playlist_b):
+ def _playlists_sort(self, playlist_a, playlist_b, data=None):
if playlist_a.props.is_smart:
if not playlist_b.props.is_smart:
- return -1
+ return Gtk.Ordering.SMALLER
return utils.natural_sort_names(
playlist_a.props.title, playlist_b.props.title)
if playlist_b.props.is_smart:
- return 1
+ return Gtk.Ordering.LARGER
- return GLib.DateTime.compare(
+ date_compare = GLib.DateTime.compare(
playlist_b.props.creation_date, playlist_a.props.creation_date)
+ if date_compare == -1:
+ return Gtk.Ordering.SMALLER
+ elif date_compare == 1:
+ return Gtk.Ordering.LARGER
+ else:
+ return Gtk.Ordering.EQUAL
def _set_player_model(self, playlist_type, model):
"""Set the model for PlayerPlaylist to use
@@ -260,8 +283,7 @@ class CoreModel(GObject.GObject):
for disc in model:
proxy_model.append(disc.props.model)
- self._flatten_model = Gfm.FlattenListModel.new(
- CoreSong, proxy_model)
+ self._flatten_model = Gtk.FlattenListModel.new(proxy_model)
self._current_playlist_model = self._flatten_model
for model_song in self._flatten_model:
@@ -276,8 +298,7 @@ class CoreModel(GObject.GObject):
for disc in artist_album.model:
proxy_model.append(disc.props.model)
- self._flatten_model = Gfm.FlattenListModel.new(
- CoreSong, proxy_model)
+ self._flatten_model = Gtk.FlattenListModel.new(proxy_model)
self._current_playlist_model = self._flatten_model
for model_song in self._flatten_model:
@@ -286,9 +307,9 @@ class CoreModel(GObject.GObject):
songs_added.append(song)
elif playlist_type == PlayerPlaylist.Type.SONGS:
- self._current_playlist_model = self._songliststore.props.model
+ self._current_playlist_model = self._songs_model
- for song in self._songliststore.props.model:
+ for song in self._songs_model:
songs_added.append(song)
if song.props.state == SongWidget.State.PLAYING:
@@ -363,7 +384,7 @@ class CoreModel(GObject.GObject):
return self._songs_model
@GObject.Property(
- type=Gfm.FlattenListModel, default=None,
+ type=Gtk.FlattenListModel, default=None,
flags=GObject.ParamFlags.READABLE)
def songs_proxy(self):
return self._songs_model_proxy
@@ -374,7 +395,7 @@ class CoreModel(GObject.GObject):
return self._albums_model
@GObject.Property(
- type=Gfm.FlattenListModel, default=None,
+ type=Gtk.FlattenListModel, default=None,
flags=GObject.ParamFlags.READABLE)
def albums_proxy(self):
return self._albums_model_proxy
@@ -385,7 +406,7 @@ class CoreModel(GObject.GObject):
return self._artists_model
@GObject.Property(
- type=Gfm.FlattenListModel, default=None,
+ type=Gtk.FlattenListModel, default=None,
flags=GObject.ParamFlags.READABLE)
def artists_proxy(self):
return self._artists_model_proxy
@@ -396,25 +417,25 @@ class CoreModel(GObject.GObject):
return self._playlist_model
@GObject.Property(
- type=Gfm.SortListModel, default=None,
+ type=Gtk.SortListModel, default=None,
flags=GObject.ParamFlags.READABLE)
def albums_sort(self):
return self._albums_model_sort
@GObject.Property(
- type=Gfm.SortListModel, default=None,
+ type=Gtk.SortListModel, default=None,
flags=GObject.ParamFlags.READABLE)
def artists_sort(self):
return self._artists_model_sort
@GObject.Property(
- type=Gfm.SortListModel, default=None,
+ type=Gtk.SortListModel, default=None,
flags=GObject.ParamFlags.READABLE)
def playlist_sort(self):
return self._playlist_model_sort
@GObject.Property(
- type=Gfm.SliceListModel, default=None,
+ type=Gtk.SliceListModel, default=None,
flags=GObject.ParamFlags.READABLE)
def recent_playlist(self):
return self._playlist_model_recent
@@ -426,7 +447,7 @@ class CoreModel(GObject.GObject):
return self._recent_size // 2
@GObject.Property(
- type=Gfm.FilterListModel, default=None,
+ type=Gtk.FilterListModel, default=None,
flags=GObject.ParamFlags.READABLE)
def songs_search(self):
return self._songs_search_flatten
@@ -438,13 +459,13 @@ class CoreModel(GObject.GObject):
return self._songs_search_proxy
@GObject.Property(
- type=Gfm.FlattenListModel, default=None,
+ type=Gtk.FlattenListModel, default=None,
flags=GObject.ParamFlags.READABLE)
- def albums_search(self) -> Gfm.FlattenListModel:
+ def albums_search(self) -> Gtk.FlattenListModel:
return self._albums_search_flatten
@GObject.Property(
- type=Gfm.FilterListModel, default=None,
+ type=Gtk.FilterListModel, default=None,
flags=GObject.ParamFlags.READABLE)
def albums_search_filter(self):
return self._albums_search_filter
@@ -455,13 +476,13 @@ class CoreModel(GObject.GObject):
return self._albums_search_proxy
@GObject.Property(
- type=Gfm.FlattenListModel, default=None,
+ type=Gtk.FlattenListModel, default=None,
flags=GObject.ParamFlags.READABLE)
- def artists_search(self) -> Gfm.FlattenListModel:
+ def artists_search(self) -> Gtk.FlattenListModel:
return self._artists_search_flatten
@GObject.Property(
- type=Gfm.FilterListModel, default=None,
+ type=Gtk.FilterListModel, default=None,
flags=GObject.ParamFlags.READABLE)
def artists_search_filter(self):
return self._artists_search_filter
@@ -472,35 +493,30 @@ class CoreModel(GObject.GObject):
return self._artists_search_proxy
@GObject.Property(
- type=Gtk.ListStore, default=None, flags=GObject.ParamFlags.READABLE)
- def songs_gtkliststore(self):
- return self._songliststore
-
- @GObject.Property(
type=Gio.ListStore, default=None, flags=GObject.ParamFlags.READABLE)
def playlists(self):
return self._playlists_model
@GObject.Property(
- type=Gfm.SortListModel, default=None,
+ type=Gtk.SortListModel, default=None,
flags=GObject.ParamFlags.READABLE)
def playlists_sort(self):
return self._playlists_model_sort
@GObject.Property(
- type=Gfm.SortListModel, default=None,
+ type=Gtk.SortListModel, default=None,
flags=GObject.ParamFlags.READABLE)
def playlists_filter(self):
return self._playlists_model_filter
@GObject.Property(
- type=Gfm.SortListModel, default=None,
+ type=Gtk.SortListModel, default=None,
flags=GObject.ParamFlags.READABLE)
def user_playlists_sort(self):
return self._user_playlists_model_sort
@GObject.Property(
- type=Gfm.SortListModel, default=None,
+ type=Gtk.SortListModel, default=None,
flags=GObject.ParamFlags.READABLE)
def user_playlists_filter(self):
return self._user_playlists_model_filter
diff --git a/gnomemusic/coresong.py b/gnomemusic/coresong.py
index 064a6f8d..585f28e8 100644
--- a/gnomemusic/coresong.py
+++ b/gnomemusic/coresong.py
@@ -24,6 +24,7 @@
from __future__ import annotations
from enum import IntEnum
+from random import randint
from typing import Optional
import typing
@@ -43,6 +44,8 @@ class CoreSong(GObject.GObject):
"""Exposes a Grl.Media with relevant data as properties
"""
+ __gtype_name__ = "CoreSong"
+
album = GObject.Property(type=str)
album_disc_number = GObject.Property(type=int)
artist = GObject.Property(type=str)
@@ -50,6 +53,7 @@ class CoreSong(GObject.GObject):
media = GObject.Property(type=Grl.Media)
grlid = GObject.Property(type=str, default=None)
play_count = GObject.Property(type=int)
+ shuffle_pos = GObject.Property(type=int)
state = GObject.Property() # FIXME: How to set an IntEnum type?
title = GObject.Property(type=str)
track_number = GObject.Property(type=int)
@@ -82,6 +86,7 @@ class CoreSong(GObject.GObject):
self._is_tracker: bool = media.get_source() == "grl-tracker3-source"
self.props.validation = CoreSong.Validation.PENDING
self.update(media)
+ self.update_shuffle_pos()
def __eq__(self, other: object) -> bool:
return (isinstance(other, CoreSong)
@@ -148,6 +153,9 @@ class CoreSong(GObject.GObject):
"""
self._thumbnail = value
+ if self._thumbnail != "generic":
+ self.props.media.set_thumbnail(self._thumbnail)
+
def update(self, media: Grl.Media) -> None:
self.props.media = media
self.props.album = utils.get_album_title(media)
@@ -175,3 +183,7 @@ class CoreSong(GObject.GObject):
self.props.media.set_last_played(GLib.DateTime.new_now_utc())
self._coregrilo.writeback_tracker(
self.props.media, "last-played")
+
+ def update_shuffle_pos(self) -> None:
+ """Randomizes the shuffle position of this song"""
+ self.props.shuffle_pos = randint(1, 1_000_000)
diff --git a/gnomemusic/coverpaintable.py b/gnomemusic/coverpaintable.py
new file mode 100644
index 00000000..3a2d1238
--- /dev/null
+++ b/gnomemusic/coverpaintable.py
@@ -0,0 +1,215 @@
+# Copyright 2022 The GNOME Music developers
+#
+# GNOME Music is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GNOME Music is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with GNOME Music; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# The GNOME Music authors hereby grant permission for non-GPL compatible
+# GStreamer plugins to be used and distributed together with GStreamer
+# and GNOME Music. This permission is above and beyond the permissions
+# granted by the GPL license by which GNOME Music is covered. If you
+# modify this code, you may extend this exception to your version of the
+# code, but you are not obligated to do so. If you do not wish to do so,
+# delete this exception statement from your version.
+
+from __future__ import annotations
+from typing import Optional, Union
+import typing
+
+import gi
+gi.require_versions({"Gdk": "4.0", "Gtk": "4.0", "Gsk": "4.0"})
+from gi.repository import Adw, Gsk, Gtk, GObject, Graphene, Gdk
+
+from gnomemusic.texturecache import TextureCache
+from gnomemusic.utils import ArtSize, DefaultIconType
+if typing.TYPE_CHECKING:
+ from gnomemusic.corealbum import CoreAlbum
+ from gnomemusic.coreartist import CoreArtist
+ from gnomemusic.coresong import CoreSong
+
+if typing.TYPE_CHECKING:
+ CoreObject = Union[CoreAlbum, CoreArtist, CoreSong]
+
+
+class CoverPaintable(GObject.GObject, Gdk.Paintable):
+ """An album/artist cover or placeholder
+
+ Provides the full looks. Rounded corners for albums and round for
+ artists.
+ """
+
+ __gtype_name__ = "CoverPaintable"
+
+ def __init__(
+ self, widget: Gtk.Widget, art_size: ArtSize,
+ icon_type: DefaultIconType) -> None:
+ """Initiliaze CoverPaintable
+
+ :param Gtk.Widget widget: Widget using the cover
+ :param ArtSize art_size: Size of the cover
+ :param DefaultIconType icon_type: Type of cover
+ """
+ super().__init__()
+
+ self._art_size = art_size
+ self._coreobject: Optional[CoreObject] = None
+ self._icon_theme = Gtk.IconTheme.new().get_for_display(
+ widget.get_display())
+ self._icon_type = icon_type
+ self._style_manager = Adw.StyleManager.get_default()
+ self._texture = None
+ self._texture_cache = TextureCache()
+ self._thumbnail_id = 0
+ self._widget = widget
+
+ self._style_manager.connect("notify::dark", self._on_dark_changed)
+
+ def do_snapshot(self, snapshot: Gtk.Snapshot, w: int, h: int) -> None:
+ if self._icon_type == DefaultIconType.ARTIST:
+ radius = 90.0
+ elif self._art_size == ArtSize.SMALL:
+ radius = 4.5
+ else:
+ radius = 9.0
+
+ w_s = w
+ h_s = h
+ if self._texture is not None:
+ ratio = self._texture.get_height() / self._texture.get_width()
+ # Scale down the image according to the biggest axis
+ if ratio > 1:
+ w = int(w / ratio)
+ else:
+ h = int(h * ratio)
+
+ rect = Graphene.Rect().init((w_s - w) / 2, (h_s - h) / 2, w, h)
+ rounded_rect = Gsk.RoundedRect()
+ rounded_rect.init_from_rect(rect, radius)
+ snapshot.push_rounded_clip(rounded_rect)
+
+ if self._texture is not None:
+ snapshot.append_texture(self._texture, rect)
+ else:
+ i_s = 1 / 3 # Icon scale
+ icon_pt = self._icon_theme.lookup_icon(
+ self._icon_type.value, None, w * i_s,
+ self._widget.props.scale_factor, 0, 0)
+
+ bg_color = Gdk.RGBA()
+ bg_color.parse("rgba(95%, 95%, 95%, 1)")
+ if self._style_manager.props.dark:
+ bg_color.parse("rgba(30%, 30%, 30%, 1)")
+
+ snapshot.append_color(bg_color, Graphene.Rect().init(0, 0, w, h))
+ snapshot.translate(
+ Graphene.Point().init(
+ (w / 2) - (w * (i_s / 2)), (h / 2) - (h * (i_s / 2))))
+ snapshot.push_opacity(0.7)
+ icon_pt.snapshot(snapshot, w * i_s, h * i_s)
+ snapshot.pop()
+
+ snapshot.pop()
+
+ def _on_dark_changed(
+ self, style_manager: Adw.StyleManager,
+ pspec: GObject.ParamSpecBoolean) -> None:
+ if self._texture is not None:
+ return
+
+ self.invalidate_contents()
+
+ @GObject.Property(type=object, default=None)
+ def coreobject(self) -> Optional[CoreObject]:
+ """Get the current core object in use
+
+ :returns: The corrent coreobject
+ :rtype: Union[CoreAlbum, CoreArtist, CoreSong] or None
+ """
+ return self._coreobject
+
+ @coreobject.setter # type: ignore
+ def coreobject(self, coreobject: CoreObject) -> None:
+ """Update the coreobject used for CoverPaintable
+
+ :param Union[CoreAlbum, CoreArtist, CoreSong] coreobject:
+ The coreobject to set
+ """
+ if coreobject is self._coreobject:
+ return
+
+ self._texture_cache.clear_pending_lookup_callback()
+
+ if self._texture:
+ self._texture = None
+ self.invalidate_contents()
+
+ if self._thumbnail_id != 0:
+ self._coreobject.disconnect(self._thumbnail_id)
+ self._thumbnail_id = 0
+
+ self._coreobject = coreobject
+ self._thumbnail_id = self._coreobject.connect(
+ "notify::thumbnail", self._on_thumbnail_changed)
+
+ if self._coreobject.props.thumbnail is not None:
+ self._on_thumbnail_changed(self._coreobject, None)
+
+ def _on_thumbnail_changed(
+ self, coreobject: CoreObject,
+ uri: GObject.ParamSpecString) -> None:
+ thumbnail_uri = coreobject.props.thumbnail
+
+ if thumbnail_uri == "generic":
+ self._texture = None
+ self.invalidate_contents()
+ return
+
+ self._texture_cache.connect("texture", self._on_texture_cache)
+ self._texture_cache.lookup(thumbnail_uri)
+
+ def _on_texture_cache(
+ self, texture_cache: TextureCache, texture: Gdk.Texture) -> None:
+ if texture == self._texture:
+ return
+
+ self._texture = texture
+ self.invalidate_contents()
+
+ @GObject.Property(type=object, flags=GObject.ParamFlags.READWRITE)
+ def icon_type(self) -> DefaultIconType:
+ """Icon type of the cover
+
+ :returns: The type of the default icon
+ :rtype: DefaultIconType
+ """
+ return self._icon_type
+
+ @icon_type.setter # type: ignore
+ def icon_type(self, value: DefaultIconType) -> None:
+ """Set the cover icon type
+
+ :param DefaultIconType value: The default icon type for the
+ cover
+ """
+ self._icon_type = value
+
+ self.invalidate_contents()
+
+ def do_get_flags(self) -> Gdk.PaintableFlags:
+ return Gdk.PaintableFlags.SIZE
+
+ def do_get_intrinsic_height(self) -> int:
+ return self._art_size.height
+
+ def do_get_intrinsic_width(self) -> int:
+ return self._art_size.width
diff --git a/gnomemusic/defaulticon.py b/gnomemusic/defaulticon.py
deleted file mode 100644
index 0ce4da6f..00000000
--- a/gnomemusic/defaulticon.py
+++ /dev/null
@@ -1,141 +0,0 @@
-# Copyright 2021 The GNOME Music developers
-#
-# GNOME Music is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# GNOME Music is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with GNOME Music; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# The GNOME Music authors hereby grant permission for non-GPL compatible
-# GStreamer plugins to be used and distributed together with GStreamer
-# and GNOME Music. This permission is above and beyond the permissions
-# granted by the GPL license by which GNOME Music is covered. If you
-# modify this code, you may extend this exception to your version of the
-# code, but you are not obligated to do so. If you do not wish to do so,
-# delete this exception statement from your version.
-
-from enum import Enum
-from math import pi
-from typing import Dict, Tuple
-
-import cairo
-from gi.repository import Gtk, GObject
-
-from gnomemusic.utils import ArtSize
-
-
-def make_icon_frame(
- icon_surface, art_size=None, scale=1, default_icon=False,
- round_shape=False):
- """Create an Art frame, square or round.
-
- :param cairo.Surface icon_surface: The surface to use
- :param art_size: The size of the art
- :param int scale: The scale of the art
- :param bool default_icon: Indicates of this is a default icon
- :param bool round_shape: Square or round indicator
-
- :return: The framed surface
- :rtype: cairo.Surface
- """
- degrees = pi / 180
- if art_size == ArtSize.SMALL:
- radius = 4.5
- else:
- radius = 9
- icon_w = icon_surface.get_width()
- icon_h = icon_surface.get_height()
- ratio = icon_h / icon_w
-
- # Scale down the image according to the biggest axis
- if ratio > 1:
- w = int(art_size.width / ratio)
- h = art_size.height
- else:
- w = art_size.width
- h = int(art_size.height * ratio)
-
- surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, w * scale, h * scale)
- surface.set_device_scale(scale, scale)
- ctx = cairo.Context(surface)
-
- if round_shape:
- ctx.arc(w / 2, h / 2, w / 2, 0, 2 * pi)
- else:
- ctx.arc(w - radius, radius, radius, -90 * degrees, 0 * degrees)
- ctx.arc(
- w - radius, h - radius, radius, 0 * degrees, 90 * degrees)
- ctx.arc(radius, h - radius, radius, 90 * degrees, 180 * degrees)
- ctx.arc(radius, radius, radius, 180 * degrees, 270 * degrees)
-
- if default_icon:
- ctx.set_source_rgb(1, 1, 1)
- ctx.fill()
- ctx.set_source_rgba(0, 0, 0, 0.3)
- ctx.mask_surface(icon_surface, w / 3, h / 3)
- ctx.fill()
- else:
- ctx.scale((w * scale) / icon_w, (h * scale) / icon_h)
- ctx.set_source_surface(icon_surface, 0, 0)
- ctx.fill()
-
- return surface
-
-
-class DefaultIcon(GObject.GObject):
- """Provides the symbolic fallback icons."""
-
- class Type(Enum):
- ALBUM = "folder-music-symbolic"
- ARTIST = "avatar-default-symbolic"
-
- _cache: Dict[
- Tuple["DefaultIcon.Type", ArtSize, int, bool], cairo.Surface] = {}
-
- _default_theme = Gtk.IconTheme.get_default()
-
- def __init__(self):
- super().__init__()
-
- def _make_default_icon(self, icon_type, art_size, scale, round_shape):
- icon_info = self._default_theme.lookup_icon_for_scale(
- icon_type.value, art_size.width / 3, scale, 0)
- icon = icon_info.load_surface()
-
- icon_surface = make_icon_frame(
- icon, art_size, scale, True, round_shape=round_shape)
-
- return icon_surface
-
- def get(self, icon_type, art_size, scale=1):
- """Returns the requested symbolic icon
-
- Returns a cairo surface of the requested symbolic icon in the
- given size and shape.
-
- :param enum icon_type: The DefaultIcon.Type of the icon
- :param enum art_size: The ArtSize requested
- :param int scale: The scale
-
- :return: The symbolic icon
- :rtype: cairo.Surface
- """
- if icon_type == DefaultIcon.Type.ALBUM:
- round_shape = False
- else:
- round_shape = True
-
- if (icon_type, art_size, scale, round_shape) not in self._cache.keys():
- new_icon = self._make_default_icon(
- icon_type, art_size, scale, round_shape)
- self._cache[(icon_type, art_size, scale, round_shape)] = new_icon
-
- return self._cache[(icon_type, art_size, scale, round_shape)]
diff --git a/gnomemusic/embeddedart.py b/gnomemusic/embeddedart.py
index 2648c5ea..ec3e7932 100644
--- a/gnomemusic/embeddedart.py
+++ b/gnomemusic/embeddedart.py
@@ -134,7 +134,9 @@ class EmbeddedArt(GObject.GObject):
"image-type", GstTag.TagImageType)
if not success:
continue
- if image_type != GstTag.TagImageType.FRONT_COVER:
+ if image_type not in [
+ GstTag.TagImageType.UNDEFINED,
+ GstTag.TagImageType.FRONT_COVER]:
continue
buf = sample.get_buffer()
@@ -161,10 +163,11 @@ class EmbeddedArt(GObject.GObject):
self._lookup_cover_in_directory()
else:
self._file.create_async(
- Gio.FileCreateFlags.NONE, GLib.PRIORITY_LOW, None,
+ Gio.FileCreateFlags.NONE, GLib.PRIORITY_DEFAULT_IDLE, None,
self._output_stream_created, pixbuf)
finally:
- stream.close_async(GLib.PRIORITY_LOW, None, self._stream_closed)
+ stream.close_async(
+ GLib.PRIORITY_DEFAULT_IDLE, None, self._stream_closed)
def _output_stream_created(
self, stream: Gio.FileOutputStream, result: Gio.AsyncResult,
@@ -174,6 +177,7 @@ class EmbeddedArt(GObject.GObject):
except GLib.Error as error:
# File already exists.
self._log.info(f"Error: {error.domain}, {error.message}")
+ self.emit("art-found", True)
else:
pixbuf.save_to_streamv_async(
output_stream, "jpeg", None, None, None,
@@ -191,7 +195,7 @@ class EmbeddedArt(GObject.GObject):
self.emit("art-found", True)
finally:
output_stream.close_async(
- GLib.PRIORITY_LOW, None, self._stream_closed)
+ GLib.PRIORITY_DEFAULT_IDLE, None, self._stream_closed)
def _stream_closed(
self, stream: Gio.OutputStream, result: Gio.AsyncResult) -> None:
@@ -205,7 +209,7 @@ class EmbeddedArt(GObject.GObject):
self._media_art.uri_async(
MediaArt.Type.ALBUM, MediaArt.ProcessFlags.NONE,
self._coreobject.props.url, self._artist, self._album,
- GLib.PRIORITY_LOW, None, self._uri_async_cb, None)
+ GLib.PRIORITY_DEFAULT_IDLE, None, self._uri_async_cb, None)
def _uri_async_cb(self, src, result, data):
try:
diff --git a/gnomemusic/fileexistsasync.py b/gnomemusic/fileexistsasync.py
index 18a09b6d..3433f160 100644
--- a/gnomemusic/fileexistsasync.py
+++ b/gnomemusic/fileexistsasync.py
@@ -47,7 +47,7 @@ class FileExistsAsync(GObject.GObject):
"""
thumb_file.query_info_async(
Gio.FILE_ATTRIBUTE_STANDARD_TYPE, Gio.FileQueryInfoFlags.NONE,
- GLib.PRIORITY_DEFAULT, None, self._on_query_info_finished)
+ GLib.PRIORITY_DEFAULT_IDLE, None, self._on_query_info_finished)
def _on_query_info_finished(
self, thumb_file: Gio.File, res: Gio.AsyncResult) -> None:
diff --git a/gnomemusic/griloartqueue.py b/gnomemusic/griloartqueue.py
new file mode 100644
index 00000000..71c4d48d
--- /dev/null
+++ b/gnomemusic/griloartqueue.py
@@ -0,0 +1,104 @@
+# Copyright 2022 The GNOME Music developers
+#
+# GNOME Music is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GNOME Music is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with GNOME Music; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# The GNOME Music authors hereby grant permission for non-GPL compatible
+# GStreamer plugins to be used and distributed together with GStreamer
+# and GNOME Music. This permission is above and beyond the permissions
+# granted by the GPL license by which GNOME Music is covered. If you
+# modify this code, you may extend this exception to your version of the
+# code, but you are not obligated to do so. If you do not wish to do so,
+# delete this exception statement from your version.
+
+from __future__ import annotations
+from typing import Dict, List, Union
+import typing
+
+from gi.repository import GLib, GObject
+
+from gnomemusic.storeart import StoreArt
+from gnomemusic.utils import CoreObjectType
+if typing.TYPE_CHECKING:
+ from gnomemusic.application import Application
+ from gnomemusic.corealbum import CoreAlbum
+ from gnomemusic.coreartist import CoreArtist
+ from gnomemusic.coresong import CoreSong
+ CoreObject = Union[CoreAlbum, CoreArtist, CoreSong]
+
+
+class GriloArtQueue(GObject.GObject):
+ """Queue for Grilo art lookup
+
+ Grilo remote art lookup is quite taxing when done in parallel. This
+ class runs the lookup queries serialized.
+ """
+
+ __gtype_name__ = "GriloArtQueue"
+
+ _queue: Dict[CoreObject, CoreObjectType] = {}
+ _active_queue: List[CoreObject] = []
+
+ def __init__(self, application: Application) -> None:
+ """Initialize GriloArtQueue
+
+ :param Application application: The application instance
+ """
+ super().__init__()
+
+ self._coregrilo = application.props.coregrilo
+
+ self._timeout_id = 0
+
+ def queue(
+ self, coreobject: CoreObject,
+ coreobjecttype: CoreObjectType) -> None:
+ """Queue Grilo art lookup for the coreobject
+
+ :param coreobject: Core object to retrieve art for
+ :param CoreObjectType coreobjecttype: The CoreObjectType
+ """
+ if coreobject not in [self._queue.keys(), self._active_queue]:
+ self._queue[coreobject] = coreobjecttype
+
+ if self._timeout_id == 0:
+ self._timeout_id = GLib.timeout_add(100, self._dispatch)
+
+ def _dispatch(self) -> bool:
+ if len(self._queue) == 0:
+ self._timeout_id = 0
+ return GLib.SOURCE_REMOVE
+
+ if len(self._active_queue) > 0:
+ return GLib.SOURCE_CONTINUE
+
+ coreobject, coreobjecttype = self._queue.popitem()
+
+ storeart = StoreArt()
+ storeart.connect("finished", self._on_async_finished, coreobject)
+ if coreobjecttype == CoreObjectType.ARTIST:
+ self._coregrilo.get_artist_art(coreobject, storeart)
+ elif coreobjecttype == CoreObjectType.ALBUM:
+ self._coregrilo.get_album_art(coreobject, storeart)
+ elif coreobjecttype == CoreObjectType.SONG:
+ self._coregrilo.get_song_art(coreobject, storeart)
+
+ self._active_queue.append(coreobject)
+
+ return GLib.SOURCE_CONTINUE
+
+ def _on_async_finished(
+ self, storeart: StoreArt, coreobject: CoreObject) -> None:
+ if coreobject in self._active_queue:
+ self._active_queue.remove(coreobject)
diff --git a/gnomemusic/grilowrappers/grlsearchwrapper.py b/gnomemusic/grilowrappers/grlsearchwrapper.py
index 5a90fa6f..9db9149e 100644
--- a/gnomemusic/grilowrappers/grlsearchwrapper.py
+++ b/gnomemusic/grilowrappers/grlsearchwrapper.py
@@ -23,8 +23,8 @@
# delete this exception statement from your version.
import gi
-gi.require_versions({"Gfm": "0.1", "Grl": "0.3"})
-from gi.repository import Gfm, Gio, Grl, GObject
+gi.require_versions({"Grl": "0.3"})
+from gi.repository import Gio, Grl, Gtk, GObject
from gnomemusic.coresong import CoreSong
@@ -75,9 +75,9 @@ class GrlSearchWrapper(GObject.GObject):
self._song_search_store = Gio.ListStore.new(CoreSong)
# FIXME: Workaround for adding the right list type to the proxy
# list model.
- self._song_search_model = Gfm.FilterListModel.new(
+ self._song_search_model = Gtk.FilterListModel.new(
self._song_search_store)
- self._song_search_model.set_filter_func(lambda a: True)
+ self._song_search_model.set_filter(Gtk.AnyFilter())
self._song_search_proxy.append(self._song_search_model)
self._fast_options = Grl.OperationOptions()
diff --git a/gnomemusic/grilowrappers/grltrackerplaylists.py b/gnomemusic/grilowrappers/grltrackerplaylists.py
index 695ee7e1..4d80aa49 100644
--- a/gnomemusic/grilowrappers/grltrackerplaylists.py
+++ b/gnomemusic/grilowrappers/grltrackerplaylists.py
@@ -27,8 +27,8 @@ import time
from gettext import gettext as _
import gi
-gi.require_versions({"Grl": "0.3"})
-from gi.repository import Gio, Grl, GLib, GObject, Tracker
+gi.require_versions({"Grl": "0.3", "Tracker": "3.0"})
+from gi.repository import Gio, Grl, Gtk, GLib, GObject, Tracker
from gnomemusic.coresong import CoreSong
import gnomemusic.utils as utils
@@ -68,7 +68,9 @@ class GrlTrackerPlaylists(GObject.GObject):
self._notificationmanager = application.props.notificationmanager
self._window = application.props.window
- self._user_model_filter.set_filter_func(self._user_playlists_filter)
+ user_playlists_filter = Gtk.CustomFilter()
+ user_playlists_filter.set_filter_func(self._user_playlists_filter)
+ self._user_model_filter.set_filter(user_playlists_filter)
self._fast_options = Grl.OperationOptions()
self._fast_options.set_resolution_flags(
@@ -146,7 +148,9 @@ class GrlTrackerPlaylists(GObject.GObject):
:param Playlist playlist: playlist
"""
self._pls_todelete.append(playlist)
- self._model_filter.set_filter_func(self._playlists_filter)
+ playlists_filter = Gtk.CustomFilter()
+ playlists_filter.set_filter_func(self._playlists_filter)
+ self._model_filter.set_filter(playlists_filter)
def finish_playlist_deletion(self, playlist, deleted):
"""Removes playlist from the list of playlists to delete
@@ -154,11 +158,15 @@ class GrlTrackerPlaylists(GObject.GObject):
:param Playlist playlist: playlist
:param bool deleted: indicates if the playlist has been deleted
"""
+ playlists_filter = Gtk.CustomFilter()
+ playlists_filter.set_filter_func(self._playlists_filter)
+ user_playlists_filter = Gtk.CustomFilter()
+ user_playlists_filter.set_filter_func(self._playlists_filter)
+
self._pls_todelete.remove(playlist)
if deleted is False:
- self._model_filter.set_filter_func(self._playlists_filter)
- self._user_model_filter.set_filter_func(
- self._user_playlists_filter)
+ self._model_filter.set_filter(playlists_filter)
+ self._user_model_filter.set_filter(user_playlists_filter)
return
def _delete_cb(conn, res, data):
@@ -173,7 +181,9 @@ class GrlTrackerPlaylists(GObject.GObject):
self._model.remove(idx)
break
- self._model_filter.set_filter_func(self._playlists_filter)
+ playlists_filter = Gtk.CustomFilter()
+ playlists_filter.set_filter_func(self._playlists_filter)
+ self._model_filter.set_filter(playlists_filter)
self._notificationmanager.pop_loading()
self._notificationmanager.push_loading()
@@ -282,7 +292,7 @@ class Playlist(GObject.GObject):
count = GObject.Property(type=int, default=0)
creation_date = GObject.Property(type=GLib.DateTime, default=None)
- icon_name = GObject.Property(type=str, default="playlist2-symbolic")
+ icon_name = GObject.Property(type=str, default="music-playlist-symbolic")
is_smart = GObject.Property(type=bool, default=False)
pl_id = GObject.Property(type=str, default=None)
query = GObject.Property(type=str, default=None)
diff --git a/gnomemusic/grilowrappers/grltrackerwrapper.py b/gnomemusic/grilowrappers/grltrackerwrapper.py
index 6d920398..2831b977 100644
--- a/gnomemusic/grilowrappers/grltrackerwrapper.py
+++ b/gnomemusic/grilowrappers/grltrackerwrapper.py
@@ -27,8 +27,8 @@ from typing import Callable, Dict, List, Optional
import typing
import gi
-gi.require_versions({"Gfm": "0.1", "Grl": "0.3", "Tracker": "3.0"})
-from gi.repository import Gfm, Gio, Grl, GLib, GObject, Tracker
+gi.require_versions({"Grl": "0.3", "Tracker": "3.0"})
+from gi.repository import Grl, Gio, Gtk, GLib, GObject, Tracker
from gnomemusic.asyncqueue import AsyncQueue
from gnomemusic.corealbum import CoreAlbum
@@ -37,13 +37,14 @@ from gnomemusic.coredisc import CoreDisc
from gnomemusic.coresong import CoreSong
from gnomemusic.grilowrappers.grltrackerplaylists import (
GrlTrackerPlaylists, Playlist)
-from gnomemusic.storeart import StoreArt
from gnomemusic.trackerwrapper import TrackerWrapper
+from gnomemusic.utils import CoreObjectType
if typing.TYPE_CHECKING:
from gnomemusic.application import Application
from gnomemusic.coremodel import CoreModel
from gnomemusic.musiclogger import MusicLogger
from gnomemusic.notificationmanager import NotificationManager
+ from gnomemusic.storeart import StoreArt
class GrlTrackerWrapper(GObject.GObject):
@@ -126,28 +127,41 @@ class GrlTrackerWrapper(GObject.GObject):
self._notificationmanager: NotificationManager = (
application.props.notificationmanager)
- self._songs_search: Gfm.FilterListModel = Gfm.FilterListModel.new(
+ self._songs_search: Gtk.FilterListModel = Gtk.FilterListModel.new(
self._songs_model)
- self._songs_search.set_filter_func(lambda a: False)
+ self._songs_search.set_filter(Gtk.AnyFilter())
cm.props.songs_search_proxy.append(self._songs_search)
- self._albums_search: Gfm.FilterListModel = Gfm.FilterListModel.new(
+ self._albums_search: Gtk.FilterListModel = Gtk.FilterListModel.new(
self._albums_model)
- self._albums_search.set_filter_func(lambda a: False)
+ self._albums_search.set_filter(Gtk.AnyFilter())
cm.props.albums_search_proxy.append(self._albums_search)
- self._artists_search: Gfm.FilterListModel = Gfm.FilterListModel.new(
+ self._artists_search: Gtk.FilterListModel = Gtk.FilterListModel.new(
self._artists_model)
- self._artists_search.set_filter_func(lambda a: False)
+ self._artists_search.set_filter(Gtk.AnyFilter())
cm.props.artists_search_proxy.append(self._artists_search)
self._fast_options: Grl.OperationOptions = Grl.OperationOptions()
+ self._fast_options.set_type_filter(Grl.TypeFilter.AUDIO)
self._fast_options.set_resolution_flags(
Grl.ResolutionFlags.FAST_ONLY)
+
+ self._fast_options_lprio = Grl.OperationOptions()
+ self._fast_options_lprio.set_type_filter(Grl.TypeFilter.AUDIO)
+ self._fast_options_lprio.set_resolution_flags(
+ Grl.ResolutionFlags.FAST_ONLY | Grl.ResolutionFlags.IDLE_RELAY)
+
self._full_options: Grl.OperationOptions = Grl.OperationOptions()
+ self._full_options.set_type_filter(Grl.TypeFilter.AUDIO)
self._full_options.set_resolution_flags(
Grl.ResolutionFlags.FULL)
+ self._full_options_lprio = Grl.OperationOptions()
+ self._full_options_lprio.set_type_filter(Grl.TypeFilter.AUDIO)
+ self._full_options_lprio.set_resolution_flags(
+ Grl.ResolutionFlags.FULL | Grl.ResolutionFlags.IDLE_RELAY)
+
self._content_changed_id: int = 0
self.props.source = source
@@ -395,10 +409,20 @@ class GrlTrackerWrapper(GObject.GObject):
self._songs_model.remove(idx)
break
- def _song_media_query(self, ids: List[str]) -> str:
- media_ids: str = str(ids)[1:-1].replace("'", "")
+ def _song_media_query(self, ids: Optional[List[str]] = None) -> str:
+ """Returns a songs query string
- query = """
+ :param list ids: List of Media ids to filter by or None
+ """
+ songs_filter = ""
+ if ids is not None:
+ media_ids = ", ".join([f"<{media_id}>" for media_id in ids])
+ songs_filter = f"FILTER ( ?song in ( {media_ids} ) )"
+
+ location_filter = self._tracker_wrapper.location_filter()
+ media_type = int(Grl.MediaType.AUDIO)
+ miner_fs_busname = self._tracker_wrapper.props.miner_fs_busname
+ query = " ".join(f"""
SELECT
?type ?urn ?title ?id ?url
?artist ?album
@@ -406,11 +430,11 @@ class GrlTrackerWrapper(GObject.GObject):
?albumDiscNumber
nie:usageCounter(?urn) AS ?playCount
?tag AS ?favorite
- WHERE {
- SERVICE <dbus:%(miner_fs_busname)s> {
- GRAPH tracker:Audio {
+ WHERE {{
+ SERVICE <dbus:{miner_fs_busname}> {{
+ GRAPH tracker:Audio {{
SELECT DISTINCT
- %(media_type)s AS ?type
+ {media_type} AS ?type
?song AS ?urn
nie:title(?song) AS ?title
?song AS ?id
@@ -421,24 +445,19 @@ class GrlTrackerWrapper(GObject.GObject):
nmm:trackNumber(?song) AS ?trackNumber
nmm:setNumber(nmm:musicAlbumDisc(?song))
AS ?albumDiscNumber
- WHERE {
+ WHERE {{
?song a nmm:MusicPiece .
- FILTER ( ?song in ( %(media_ids)s ) )
- %(location_filter)s
- }
- }
- }
- OPTIONAL {
+ {songs_filter}
+ {location_filter}
+ }}
+ }}
+ }}
+ OPTIONAL {{
?urn nao:hasTag ?tag .
FILTER (?tag = nao:predefined-tag-favorite)
- }
- }
- """.replace('\n', ' ').strip() % {
- "miner_fs_busname": self._tracker_wrapper.props.miner_fs_busname,
- "media_type": int(Grl.MediaType.AUDIO),
- 'location_filter': self._tracker_wrapper.location_filter(),
- 'media_ids': media_ids
- }
+ }}
+ }} ORDER BY ?title ?artist
+ """.split())
return query
@@ -506,50 +525,9 @@ class GrlTrackerWrapper(GObject.GObject):
self._songs_model.get_n_items(), 0, songs_added)
songs_added.clear()
- query = """
- SELECT
- ?type ?urn ?title ?id ?url
- ?artist ?album
- ?duration ?trackNumber
- ?albumDiscNumber
- nie:usageCounter(?urn) AS ?playCount
- ?tag AS ?favorite
- WHERE {
- SERVICE <dbus:%(miner_fs_busname)s> {
- GRAPH tracker:Audio {
- SELECT
- %(media_type)s AS ?type
- ?song AS ?urn
- nie:title(?song) AS ?title
- ?song AS ?id
- nie:isStoredAs(?song) AS ?url
- nmm:artistName(nmm:artist(?song)) AS ?artist
- nie:title(nmm:musicAlbum(?song)) AS ?album
- nfo:duration(?song) AS ?duration
- nmm:trackNumber(?song) AS ?trackNumber
- nmm:setNumber(nmm:musicAlbumDisc(?song))
- AS ?albumDiscNumber
- WHERE {
- ?song a nmm:MusicPiece .
- %(location_filter)s
- }
- ORDER BY ?title
- }
- }
- OPTIONAL {
- ?urn nao:hasTag ?tag .
- FILTER (?tag = nao:predefined-tag-favorite)
- }
- }
- """.replace('\n', ' ').strip() % {
- "miner_fs_busname": self._tracker_wrapper.props.miner_fs_busname,
- "media_type": int(Grl.MediaType.AUDIO),
- 'location_filter': self._tracker_wrapper.location_filter()
- }
-
self.props.source.query(
- query, self._METADATA_SONG_FILL_KEYS, self._fast_options,
- _add_to_model)
+ self._song_media_query(), self._METADATA_SONG_FILL_KEYS,
+ self._fast_options, _add_to_model)
def _initial_albums_fill(self) -> None:
self._notificationmanager.push_loading()
@@ -689,11 +667,11 @@ class GrlTrackerWrapper(GObject.GObject):
query, metadata_keys, self._fast_options, _add_to_artists_model)
def get_artist_albums(
- self, media: Grl.Source, model: Gfm.FilterListModel) -> None:
+ self, media: Grl.Source, model: Gtk.FilterListModel) -> None:
"""Get all albums by an artist
:param Grl.Media media: The media with the artist id
- :param Gfm.FilterListModel model: The model to fill
+ :param Gtk.FilterListModel model: The model to fill
"""
self._notificationmanager.push_loading()
artist_id = media.get_id()
@@ -731,7 +709,7 @@ class GrlTrackerWrapper(GObject.GObject):
'location_filter': self._tracker_wrapper.location_filter()
}
- albums: List[Grl.Media] = []
+ albums: List[str] = []
def query_cb(
source: Grl.Source, op_id: int, media: Optional[Grl.Media],
@@ -742,29 +720,26 @@ class GrlTrackerWrapper(GObject.GObject):
return
if not media:
- model.set_filter_func(albums_filter, albums)
+ custom_filter = Gtk.CustomFilter()
+ custom_filter.set_filter_func(albums_filter, albums)
+ model.set_filter(custom_filter)
self._notificationmanager.pop_loading()
return
- albums.append(media)
+ albums.append(media.get_id())
- def albums_filter(
- corealbum: CoreAlbum, albums: List[Grl.Media]) -> bool:
- for media in albums:
- if media.get_id() == corealbum.props.media.get_id():
- return True
-
- return False
+ def albums_filter(corealbum: CoreAlbum, albums: List[str]) -> bool:
+ return corealbum.props.media.get_id() in albums
self.props.source.query(
query, [Grl.METADATA_KEY_TITLE], self._fast_options, query_cb)
def get_album_discs(
- self, media: Grl.Media, disc_model: Gfm.SortListModel) -> None:
+ self, media: Grl.Media, disc_model: Gtk.SortListModel) -> None:
"""Get all discs of an album
:param Grl.Media media: The media with the album id
- :param Gfm.SortListModel disc_model: The model to fill
+ :param Gtk.SortListModel disc_model: The model to fill
"""
self._notificationmanager.push_loading()
album_id = media.get_id()
@@ -817,21 +792,16 @@ class GrlTrackerWrapper(GObject.GObject):
query, [Grl.METADATA_KEY_ALBUM_DISC_NUMBER], self._fast_options,
_disc_nr_cb)
- def populate_album_disc_songs(
+ def get_album_disc(
self, media: Grl.Media, disc_nr: int,
- callback: Callable[
- [Grl.Source, int, Optional[Grl.Media], int,
- Optional[GLib.Error]], None]) -> None:
- # FIXME: Pass a model and fill it.
- # FIXME: The query is similar to the other song queries, reuse
- # if possible.
+ model: Gtk.FilterListModel) -> None:
"""Get all songs of an album disc
:param Grl.Media media: The media with the album id
:param int disc_nr: The disc number
- :param callback: The callback to call for every song added
+ :param Gtk.FilterListModel model: The model to fill
"""
- album_id: str = media.get_id()
+ album_id = media.get_id()
query = """
SELECT
@@ -895,8 +865,28 @@ class GrlTrackerWrapper(GObject.GObject):
Grl.METADATA_KEY_URL
]
+ disc_song_ids: List[str] = []
+
+ def _filter_func(coresong: CoreSong) -> bool:
+ return coresong.props.grlid in disc_song_ids
+
+ def _callback(
+ source: Grl.Source, op_id: int, media: Grl.Media,
+ remaining: int, error: GLib.Error) -> None:
+ if error:
+ self._log.warning(f"Error: {error.domain}, {error.message}")
+ return
+
+ if media is None:
+ custom_filter = Gtk.CustomFilter()
+ custom_filter.set_filter_func(_filter_func)
+ model.set_filter(custom_filter)
+ return
+
+ disc_song_ids.append(media.get_source() + media.get_id())
+
self.props.source.query(
- query, metadata_keys, self._fast_options, callback)
+ query, metadata_keys, self._fast_options, _callback)
def search(self, text: str) -> None:
# FIXME: Searches are limited to not bog down the UI with
@@ -976,7 +966,9 @@ class GrlTrackerWrapper(GObject.GObject):
return
if not media:
- self._artists_search.set_filter_func(artist_filter)
+ custom_filter = Gtk.CustomFilter()
+ custom_filter.set_filter_func(artist_filter)
+ self._artists_search.set_filter(custom_filter)
self._notificationmanager.pop_loading()
return
@@ -1045,7 +1037,9 @@ class GrlTrackerWrapper(GObject.GObject):
return
if not media:
- self._albums_search.set_filter_func(album_filter)
+ custom_filter = Gtk.CustomFilter()
+ custom_filter.set_filter_func(album_filter)
+ self._albums_search.set_filter(custom_filter)
self._notificationmanager.pop_loading()
return
@@ -1119,7 +1113,9 @@ class GrlTrackerWrapper(GObject.GObject):
return
if not media:
- self._songs_search.set_filter_func(songs_filter)
+ custom_filter = Gtk.CustomFilter()
+ custom_filter.set_filter_func(songs_filter)
+ self._songs_search.set_filter(custom_filter)
self._notificationmanager.pop_loading()
return
@@ -1189,7 +1185,7 @@ class GrlTrackerWrapper(GObject.GObject):
return query
- def get_song_art(self, coresong: CoreSong) -> None:
+ def get_song_art(self, coresong: CoreSong, storeart: StoreArt) -> None:
"""Retrieve song art for the given CoreSong
Since MediaArt does not really support per-song art this
@@ -1197,6 +1193,7 @@ class GrlTrackerWrapper(GObject.GObject):
art and store it.
:param CoreSong coresong: CoreSong to get art for
+ :param StoreArt storeart: StoreArt instance to use
"""
media: Grl.Media = coresong.props.media
@@ -1205,7 +1202,6 @@ class GrlTrackerWrapper(GObject.GObject):
if (media.get_album() is None
and (media.get_album_artist() is None
or media.get_artist() is None)):
- coresong.props.thumbnail = "generic"
return
def art_retrieved_cb(
@@ -1214,27 +1210,28 @@ class GrlTrackerWrapper(GObject.GObject):
error: Optional[GLib.Error]) -> None:
if error:
self._log.warning("Error: {}".format(error))
- coresong.props.thumbnail = "generic"
+ self.emit("finished")
return
if queried_media is None:
- coresong.props.thumbnail = "generic"
return
self._async_queue.queue(
- StoreArt(), coresong, queried_media.get_thumbnail())
+ storeart, coresong, queried_media.get_thumbnail(),
+ CoreObjectType.SONG)
song_id: str = media.get_id()
query: str = self._get_album_for_media_id_query(song_id)
self.props.source.query(
- query, self._METADATA_THUMBNAIL_KEYS, self._full_options,
+ query, self._METADATA_THUMBNAIL_KEYS, self._full_options_lprio,
art_retrieved_cb)
- def get_album_art(self, corealbum: CoreAlbum) -> None:
+ def get_album_art(self, corealbum: CoreAlbum, storeart: StoreArt) -> None:
"""Retrieve album art for the given CoreAlbum
:param CoreAlbum corealbum: CoreAlbum to get art for
+ :param StoreArt storeart: StoreArt instance to use
"""
media: Grl.Media = corealbum.props.media
@@ -1244,29 +1241,31 @@ class GrlTrackerWrapper(GObject.GObject):
error: Optional[GLib.Error]) -> None:
if error:
self._log.warning("Error: {}".format(error))
- corealbum.props.thumbnail = "generic"
+ storeart.emit("finished")
return
if queried_media is None:
- corealbum.props.thumbnail = "generic"
return
self._async_queue.queue(
- StoreArt(), corealbum, queried_media.get_thumbnail())
+ storeart, corealbum, queried_media.get_thumbnail(),
+ CoreObjectType.ALBUM)
album_id: str = media.get_id()
query: str = self._get_album_for_media_id_query(album_id, False)
self.props.source.query(
- query, self._METADATA_THUMBNAIL_KEYS, self._full_options,
+ query, self._METADATA_THUMBNAIL_KEYS, self._full_options_lprio,
art_retrieved_cb)
- def get_artist_art(self, coreartist: CoreArtist) -> None:
+ def get_artist_art(
+ self, coreartist: CoreArtist, storeart: StoreArt) -> None:
"""Retrieve artist art for the given CoreArtist
This retrieves art through Grilo online services only.
:param CoreArtist coreartist: CoreArtist to get art for
+ :param StoreArt storeart: StoreArt instance to use
"""
media: Grl.Media = coreartist.props.media
@@ -1275,19 +1274,25 @@ class GrlTrackerWrapper(GObject.GObject):
resolved_media: Optional[Grl.Media],
error: Optional[GLib.Error]) -> None:
if error:
+ storeart.emit("finished")
self._log.warning("Error: {}".format(error))
- coreartist.props.thumbnail = "generic"
return
if resolved_media is None:
- coreartist.props.thumbnail = "generic"
+ storeart.emit("finished")
+ return
+
+ thumbnail = resolved_media.get_thumbnail()
+ if thumbnail is None:
+ storeart.emit("finished")
return
self._async_queue.queue(
- StoreArt(), coreartist, resolved_media.get_thumbnail())
+ storeart, coreartist, resolved_media.get_thumbnail(),
+ CoreObjectType.ARTIST)
self.props.source.resolve(
- media, [Grl.METADATA_KEY_THUMBNAIL], self._full_options,
+ media, [Grl.METADATA_KEY_THUMBNAIL], self._full_options_lprio,
art_resolved_cb)
def stage_playlist_deletion(self, playlist: Optional[Playlist]) -> None:
diff --git a/gnomemusic/mediaartloader.py b/gnomemusic/mediaartloader.py
new file mode 100644
index 00000000..3b622e8a
--- /dev/null
+++ b/gnomemusic/mediaartloader.py
@@ -0,0 +1,119 @@
+# Copyright 2022 The GNOME Music developers
+#
+# GNOME Music is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GNOME Music is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with GNOME Music; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# The GNOME Music authors hereby grant permission for non-GPL compatible
+# GStreamer plugins to be used and distributed together with GStreamer
+# and GNOME Music. This permission is above and beyond the permissions
+# granted by the GPL license by which GNOME Music is covered. If you
+# modify this code, you may extend this exception to your version of the
+# code, but you are not obligated to do so. If you do not wish to do so,
+# delete this exception statement from your version.
+
+from __future__ import annotations
+from typing import Optional
+
+from gi.repository import Gdk, Gio, GLib, GObject
+
+from gnomemusic.musiclogger import MusicLogger
+
+
+class MediaArtLoader(GObject.GObject):
+ """Handles retrieval of MediaArt cache art
+
+ Signals when the media is loaded and passes a texture or None.
+ """
+
+ __gtype_name__ = "MediaArtLoader"
+
+ __gsignals__ = {
+ "finished": (GObject.SignalFlags.RUN_FIRST, None, (object, ))
+ }
+
+ _chunksize = 32768
+ _log = MusicLogger()
+
+ def __init__(self) -> None:
+ """Intialize MediaArtLoader
+ """
+ super().__init__()
+
+ self._bytearray = bytearray()
+ self._texture: Optional[Gdk.Texture] = None
+
+ def start(self, uri: str) -> None:
+ """Start the cache query
+
+ :param str uri: The MediaArt uri
+ """
+ thumb_file = Gio.File.new_for_uri(uri)
+ if thumb_file:
+ thumb_file.read_async(
+ GLib.PRIORITY_DEFAULT_IDLE, None, self._open_stream)
+ else:
+ self.emit("finished", self._texture)
+
+ def _open_stream(
+ self, thumb_file: Gio.File, result: Gio.AsyncResult) -> None:
+ try:
+ stream = thumb_file.read_finish(result)
+ except GLib.Error as error:
+ self._log.warning(
+ "Error: {}, {}".format(error.domain, error.message))
+ self.emit("finished", self._texture)
+ else:
+ stream.read_bytes_async(
+ self._chunksize, GLib.PRIORITY_DEFAULT_IDLE, None,
+ self._read_bytes_async_cb)
+
+ def _read_bytes_async_cb(
+ self, stream: Gio.FileInputStream,
+ result: Gio.AsyncResult) -> None:
+ try:
+ gbytes = stream.read_bytes_finish(result)
+ except GLib.Error as error:
+ self._log.warning(
+ "Error: {}, {}".format(error.domain, error.message))
+ stream.close_async(
+ GLib.PRIORITY_DEFAULT_IDLE, None, self._close_stream)
+ return
+
+ gbytes_size = gbytes.get_size()
+ if gbytes_size > 0:
+ self._bytearray += gbytes.unref_to_data()
+
+ stream.read_bytes_async(
+ self._chunksize, GLib.PRIORITY_DEFAULT_IDLE, None,
+ self._read_bytes_async_cb)
+ else:
+ # FIXME: Use GTask to load textures async.
+ # See pygobject#114 for bytes conversion.
+ self._texture = Gdk.Texture.new_from_bytes(
+ GLib.Bytes(bytes(self._bytearray)))
+
+ self._bytearray = bytearray()
+
+ stream.close_async(
+ GLib.PRIORITY_DEFAULT_IDLE, None, self._close_stream)
+
+ def _close_stream(
+ self, stream: Gio.InputStream, result: Gio.AsyncResult) -> None:
+ try:
+ stream.close_finish(result)
+ except GLib.Error as error:
+ self._log.warning(
+ "Error: {}, {}".format(error.domain, error.message))
+
+ self.emit("finished", self._texture)
diff --git a/gnomemusic/mediakeys.py b/gnomemusic/mediakeys.py
deleted file mode 100644
index f0ba1623..00000000
--- a/gnomemusic/mediakeys.py
+++ /dev/null
@@ -1,106 +0,0 @@
-# Copyright 2018 The GNOME Music developers
-#
-# GNOME Music is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# GNOME Music is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with GNOME Music; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# The GNOME Music authors hereby grant permission for non-GPL compatible
-# GStreamer plugins to be used and distributed together with GStreamer
-# and GNOME Music. This permission is above and beyond the permissions
-# granted by the GPL license by which GNOME Music is covered. If you
-# modify this code, you may extend this exception to your version of the
-# code, but you are not obligated to do so. If you do not wish to do so,
-# delete this exception statement from your version.
-
-from gi.repository import GObject, Gio, GLib, Gtk
-
-from gnomemusic.musiclogger import MusicLogger
-
-
-class MediaKeys(GObject.GObject):
- """Media keys handling for Music
- """
-
- __gtype_name__ = 'MediaKeys'
-
- def __init__(self, player, window):
- """Initialize media keys handling
-
- :param Player player: Player object
- :param Gtk.Window window: Window to grab keys if focused
- """
- super().__init__()
-
- self._log = MusicLogger()
-
- self._player = player
- self._window = window
-
- self._media_keys_proxy = None
-
- self._init_media_keys_proxy()
-
- def _init_media_keys_proxy(self):
- def name_appeared(connection, name, name_owner, data=None):
- Gio.DBusProxy.new_for_bus(
- Gio.BusType.SESSION,
- Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES, None,
- "org.gnome.SettingsDaemon.MediaKeys",
- "/org/gnome/SettingsDaemon/MediaKeys",
- "org.gnome.SettingsDaemon.MediaKeys", None,
- self._media_keys_proxy_ready)
-
- Gio.bus_watch_name(
- Gio.BusType.SESSION, "org.gnome.SettingsDaemon.MediaKeys",
- Gio.BusNameWatcherFlags.NONE, name_appeared, None)
-
- def _media_keys_proxy_ready(self, proxy, result, data=None):
- try:
- self._media_keys_proxy = proxy.new_finish(result)
- except GLib.Error as e:
- self._log.warning(
- "Error: Failed to contact settings daemon:", e.message)
- return
-
- self._media_keys_proxy.connect("g-signal", self._handle_media_keys)
-
- self._ctrlr = Gtk.EventControllerKey().new(self._window)
- self._ctrlr.props.propagation_phase = Gtk.PropagationPhase.CAPTURE
- self._ctrlr.connect("focus-in", self._grab_media_player_keys)
-
- def _grab_media_player_keys(self, controllerkey=None):
- def proxy_call_finished(proxy, result, data=None):
- try:
- proxy.call_finish(result)
- except GLib.Error as e:
- self._log.warning(
- "Error: Failed to grab mediaplayer keys: {}".format(
- e.message))
-
- self._media_keys_proxy.call(
- "GrabMediaPlayerKeys", GLib.Variant("(su)", ("Music", 0)),
- Gio.DBusCallFlags.NONE, -1, None, proxy_call_finished)
-
- def _handle_media_keys(self, proxy, sender, signal, parameters):
- app, response = parameters.unpack()
- if app != "Music":
- return
-
- if "Play" in response:
- self._player.play_pause()
- elif "Stop" in response:
- self._player.stop()
- elif "Next" in response:
- self._player.next()
- elif "Previous" in response:
- self._player.previous()
diff --git a/gnomemusic/musiclogger.py b/gnomemusic/musiclogger.py
index d7c9e121..63e855c0 100644
--- a/gnomemusic/musiclogger.py
+++ b/gnomemusic/musiclogger.py
@@ -49,6 +49,7 @@ class MusicLogger(GObject.GObject):
function = stack[2][3]
if level in [GLib.LogLevelFlags.LEVEL_DEBUG,
+ GLib.LogLevelFlags.LEVEL_INFO,
GLib.LogLevelFlags.LEVEL_WARNING]:
message = "({}, {}, {}) {}".format(
filename, function, line, message)
diff --git a/gnomemusic/notificationmanager.py b/gnomemusic/notificationmanager.py
index 6ffee620..5ea0520e 100644
--- a/gnomemusic/notificationmanager.py
+++ b/gnomemusic/notificationmanager.py
@@ -22,13 +22,16 @@
# code, but you are not obligated to do so. If you do not wish to do so,
# delete this exception statement from your version.
-from gi.repository import GObject
+from gi.repository import GLib, GObject
class NotificationManager(GObject.Object):
"""Managing wrapper around the notification widgets
"""
+ _pulse_id = 0
+ _loading_counter = 0
+
def __init__(self, application):
"""Initialize the notification manager
@@ -37,7 +40,6 @@ class NotificationManager(GObject.Object):
super().__init__()
self._application = application
- self._pushed = False
self._window = application.props.window
if self._window is None:
@@ -46,16 +48,24 @@ class NotificationManager(GObject.Object):
def _on_window_changed(self, klass, value):
self._window = self._application.props.window
+ if self._loading_counter > 0:
+ self._window.loading_visible(True)
def push_loading(self):
"""Push a loading notifcation."""
- if self._window:
- # This makes sure push/pop are in sync when starting.
- self._pushed = True
- self._window.notifications_popup.push_loading()
+ self._loading_counter += 1
+
+ if (self._pulse_id == 0
+ and self._window):
+ self._window.loading_visible(True)
+ self._pulse_id = GLib.timeout_add(100, self._window.loading_pulse)
def pop_loading(self):
- """Pop a loading notification."""
- if (self._window
- and self._pushed):
- self._window.notifications_popup.pop_loading()
+ self._loading_counter -= 1
+
+ if (self._loading_counter == 0
+ and self._pulse_id != 0):
+ GLib.Source.remove(self._pulse_id)
+ self._pulse_id = 0
+ if self._window:
+ self._window.loading_visible(False)
diff --git a/gnomemusic/player.py b/gnomemusic/player.py
index 7e6ddf28..da7d0cff 100644
--- a/gnomemusic/player.py
+++ b/gnomemusic/player.py
@@ -24,28 +24,27 @@
from enum import Enum, IntEnum
from gettext import gettext as _
-from random import randint, randrange
+from random import randrange
import time
import typing
import gi
gi.require_version('GstPbutils', '1.0')
-from gi.repository import GObject, GstPbutils
+from gi.repository import GObject, GstPbutils, Gtk
from gnomemusic.coresong import CoreSong
from gnomemusic.gstplayer import GstPlayer, Playback
from gnomemusic.widgets.songwidget import SongWidget
-import gnomemusic.utils as utils
class RepeatMode(Enum):
"""Enum for player repeat mode"""
# Translators: "shuffle" causes tracks to play in random order.
- SHUFFLE = 0, "media-playlist-shuffle-symbolic", _("Shuffle")
+ NONE = 0, "media-playlist-consecutive-symbolic", _("Shuffle/Repeat Off")
SONG = 1, "media-playlist-repeat-song-symbolic", _("Repeat Song")
ALL = 2, "media-playlist-repeat-symbolic", _("Repeat All")
- NONE = 3, "media-playlist-consecutive-symbolic", _("Shuffle/Repeat Off")
+ SHUFFLE = 3, "media-playlist-shuffle-symbolic", _("Shuffle")
# The type checking is necessary to avoid false positives
# See: https://github.com/python/mypy/issues/1021
@@ -277,15 +276,23 @@ class PlayerPlaylist(GObject.GObject):
self._model_recent.set_offset(offset)
def _on_repeat_mode_changed(self, klass, param):
- # FIXME: This shuffle is too simple.
- def _shuffle_sort(song_a, song_b):
- return randint(-1, 1)
+ def _shuffle_sort(song_a, song_b, data=None):
+ if song_a.props.shuffle_pos < song_b.props.shuffle_pos:
+ return Gtk.Ordering.SMALLER
+ elif song_a.props.shuffle_pos > song_b.props.shuffle_pos:
+ return Gtk.Ordering.LARGER
+ else:
+ return Gtk.Ordering.EQUAL
if self.props.repeat_mode == RepeatMode.SHUFFLE:
- self._model.set_sort_func(
- utils.wrap_list_store_sort_func(_shuffle_sort))
+ for idx, coresong in enumerate(self._model):
+ coresong.update_shuffle_pos()
+
+ songs_sorter = Gtk.CustomSorter()
+ songs_sorter.set_sort_func(_shuffle_sort)
+ self._model.set_sorter(songs_sorter)
elif self.props.repeat_mode in [RepeatMode.NONE, RepeatMode.ALL]:
- self._model.set_sort_func(None)
+ self._model.set_sorter(None)
def _validate_song(self, coresong):
# Song is being processed or has already been processed.
@@ -585,11 +592,6 @@ class Player(GObject.GObject):
if (percentage > 0.5
and self._new_clock):
self._new_clock = False
- # FIXME: we should not need to update smart
- # playlists here but removing it may introduce
- # a bug. So, we keep it for the time being.
- # FIXME: Not using Playlist class anymore.
- # playlists.update_all_smart_playlists()
current_song.bump_play_count()
current_song.set_last_played()
diff --git a/gnomemusic/playlisttoast.py b/gnomemusic/playlisttoast.py
new file mode 100644
index 00000000..3de4b268
--- /dev/null
+++ b/gnomemusic/playlisttoast.py
@@ -0,0 +1,75 @@
+# Copyright 2022 The GNOME Music Developers
+#
+# GNOME Music is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GNOME Music is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with GNOME Music; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# The GNOME Music authors hereby grant permission for non-GPL compatible
+# GStreamer plugins to be used and distributed together with GStreamer
+# and GNOME Music. This permission is above and beyond the permissions
+# granted by the GPL license by which GNOME Music is covered. If you
+# modify this code, you may extend this exception to your version of the
+# code, but you are not obligated to do so. If you do not wish to do so,
+# delete this exception statement from your version.
+
+from __future__ import annotations
+from typing import Optional
+import typing
+
+from gettext import gettext as _
+from gi.repository import Adw, GLib, GObject, Gio, Gtk
+if typing.TYPE_CHECKING:
+ from gnomemusic.application import Application
+ from gnomemusic.grilowrappers.grltrackerplaylists import Playlist
+
+
+class PlaylistToast(GObject.Object):
+ """Toast for playlist deletion, including undo
+ """
+
+ __gtype_name__ = "PlaylistToast"
+
+ def __init__(self, application: Application, playlist: Playlist) -> None:
+ """Initialize the toast for song deletion
+
+ :param Application application: Application object
+ :param Playlist playlist: The playlist that contains the song
+ """
+ super().__init__()
+
+ self._coregrilo = application.props.coregrilo
+ self._playlist = playlist
+ self._undo = False
+
+ toast = Adw.Toast.new(
+ _("Playlist {} removed".format(self._playlist.props.title)))
+ toast.set_button_label(_("Undo"))
+
+ toast.set_action_name("toast.undo")
+ application.props.window.install_action(
+ "toast.undo", None, self._toast_undo_cb)
+
+ toast.connect("dismissed", self._on_dismissed)
+ self._coregrilo.stage_playlist_deletion(self._playlist)
+
+ application.props.window._toast_overlay.add_toast(toast)
+
+ def _toast_undo_cb(
+ self, widget: Gtk.Widget, action: Gio.Action,
+ param: Optional[GLib.Variant]) -> None:
+ self._undo = True
+ self._coregrilo.finish_playlist_deletion(self._playlist, False)
+
+ def _on_dismissed(self, widget: Gtk.Widget) -> None:
+ if not self._undo:
+ self._coregrilo.finish_playlist_deletion(self._playlist, True)
diff --git a/gnomemusic/scrobbler.py b/gnomemusic/scrobbler.py
index aed95156..8025d590 100644
--- a/gnomemusic/scrobbler.py
+++ b/gnomemusic/scrobbler.py
@@ -22,12 +22,14 @@
# code, but you are not obligated to do so. If you do not wish to do so,
# delete this exception statement from your version.
+from __future__ import annotations
+from typing import Dict, Optional, Union, cast
from enum import IntEnum
from hashlib import md5
import gi
gi.require_version('Goa', '1.0')
-gi.require_version('Soup', '2.4')
+gi.require_version("Soup", "3.0")
from gi.repository import Gio, GLib, Goa, GObject, Soup
from gnomemusic.musiclogger import MusicLogger
@@ -51,12 +53,14 @@ class GoaLastFM(GObject.GObject):
DISABLED = 2
ENABLED = 3
- def __init__(self):
+ def __init__(self) -> None:
+ """Initialize GoaLastFM
+ """
super().__init__()
-
self._log = MusicLogger()
- self._client = None
+ self._client: Optional[Goa.Client] = None
+ self._connection: Optional[Gio.DBusConnection] = None
self._state = GoaLastFM.State.NOT_AVAILABLE
self.notify("state")
self._reset_attributes()
@@ -180,35 +184,37 @@ class GoaLastFM(GObject.GObject):
e.message))
return None
- def configure(self):
+ def configure(self) -> None:
+ """Open the LastFM GOA Settings panel"""
if self.props.state == GoaLastFM.State.NOT_AVAILABLE:
self._log.warning("Error, cannot configure a Last.fm account.")
return
- Gio.bus_get(Gio.BusType.SESSION, None, self._get_connection_db, None)
+ Gio.bus_get(Gio.BusType.SESSION, None, self._get_dbus_connection)
- def _get_connection_db(self, source, res, user_data=None):
+ def _get_dbus_connection(
+ self, source: None, result: Gio.AsyncResult) -> None:
try:
- connection = Gio.bus_get_finish(res)
+ self._connection = Gio.bus_get_finish(result)
except GLib.Error as e:
self._log.warning(
"Error: Unable to get the DBus connection: {}".format(
e.message))
return
- Gio.DBusProxy.new(
- connection, Gio.DBusProxyFlags.NONE, None,
- "org.gnome.ControlCenter", "/org/gnome/ControlCenter",
- "org.gtk.Actions", None, self._get_control_center_proxy_cb, None)
-
- def _get_control_center_proxy_cb(self, source, res, user_data=None):
try:
- settings_proxy = Gio.DBusProxy.new_finish(res)
+ proxy = Gio.DBusProxy.new_sync(
+ self._connection, Gio.DBusProxyFlags.DO_NOT_CONNECT_SIGNALS
+ | Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES, None,
+ "org.gnome.Settings", "/org/gnome/Settings", "org.gtk.Actions",
+ None)
except GLib.Error as e:
- self._log.warning(
- "Error: Unable to get a proxy: {}".format(e.message))
- return
+ self._log.warning(f"Unable to create proxy: {e.message}")
+ else:
+ self._activate_settings(proxy, True)
+ def _activate_settings(
+ self, settings_proxy: Gio.DBusProxy, try_fallback: bool) -> None:
if self._state == GoaLastFM.State.NOT_CONFIGURED:
params = [GLib.Variant("s", "add"), GLib.Variant("s", "lastfm")]
else:
@@ -218,15 +224,24 @@ class GoaLastFM(GObject.GObject):
variant = GLib.Variant("(sava{sv})", ("launch-panel", [args], {}))
settings_proxy.call(
"Activate", variant, Gio.DBusCallFlags.NONE, -1, None,
- self._on_control_center_activated)
+ self._on_settings_activated, try_fallback)
- def _on_control_center_activated(self, proxy, res, user_data=None):
+ def _on_settings_activated(
+ self, proxy: Gio.DBusProxy, result: Gio.AsyncResult,
+ try_fallback: bool) -> None:
try:
- proxy.call_finish(res)
+ proxy.call_finish(result)
except GLib.Error as e:
- self._log.warning(
- "Error: Failed to activate control-center: {}".format(
- e.message))
+ if try_fallback:
+ proxy = Gio.DBusProxy.new_sync(
+ self._connection, Gio.DBusProxyFlags.DO_NOT_CONNECT_SIGNALS
+ | Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES, None,
+ "org.gnome.ControlCenter", "/org/gnome/ControlCenter",
+ "org.gtk.Actions", None)
+ self._activate_settings(proxy, False)
+ else:
+ self._log.warning(
+ f"Error: Failed to activate Settings: {e.message}")
class LastFmScrobbler(GObject.GObject):
@@ -404,13 +419,24 @@ class LastFmScrobbler(GObject.GObject):
"api_sig": api_sig
})
- msg = Soup.form_request_new_from_hash(
- "POST", "https://ws.audioscrobbler.com/2.0/", request_dict)
- self._soup_session.queue_message(
- msg, self._lastfm_api_callback, request_type_key)
+ msg = Soup.Message.new_from_encoded_form(
+ "POST", "https://ws.audioscrobbler.com/2.0/",
+ Soup.form_encode_hash(request_dict))
+ data = {
+ "msg": msg,
+ "request_type_key": request_type_key,
+ }
+ self._soup_session.send_async(
+ msg, GLib.PRIORITY_DEFAULT, None, self._lastfm_api_callback, data)
+
+ def _lastfm_api_callback(
+ self, session: Soup.Session,
+ result: Gio.AsyncResult,
+ data: Dict[str, Union[str, Soup.Message]]) -> None:
+ """Internal callback method called by queue_message"""
+ msg = cast(Soup.Message, data["msg"])
+ request_type_key = cast(str, data["request_type_key"])
- def _lastfm_api_callback(self, session, msg, request_type_key):
- """Internall callback method called by queue_message"""
status_code = msg.props.status_code
if status_code != 200:
self._log.debug("Failed to {} track {} : {}".format(
diff --git a/gnomemusic/songart.py b/gnomemusic/songart.py
index 94bf46c9..18c4f204 100644
--- a/gnomemusic/songart.py
+++ b/gnomemusic/songart.py
@@ -29,6 +29,7 @@ from gi.repository import GObject, MediaArt
from gnomemusic.asyncqueue import AsyncQueue
from gnomemusic.embeddedart import EmbeddedArt
from gnomemusic.fileexistsasync import FileExistsAsync
+from gnomemusic.storeart import StoreArt
class SongArt(GObject.GObject):
@@ -56,13 +57,12 @@ class SongArt(GObject.GObject):
if found:
self._in_cache()
else:
- self._coregrilo.get_song_art(self._coresong)
+ self._coregrilo.get_song_art(self._coresong, StoreArt())
def _in_cache(self):
success, thumb_file = MediaArt.get_file(
self._artist, self._album, "album")
if not success:
- self._coresong.props.thumbnail = "generic"
return
def on_file_exists_async_finished(obj, result):
diff --git a/gnomemusic/songliststore.py b/gnomemusic/songliststore.py
deleted file mode 100644
index ecd0c77c..00000000
--- a/gnomemusic/songliststore.py
+++ /dev/null
@@ -1,116 +0,0 @@
-# Copyright 2019 The GNOME Music developers
-#
-# GNOME Music is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# GNOME Music is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with GNOME Music; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# The GNOME Music authors hereby grant permission for non-GPL compatible
-# GStreamer plugins to be used and distributed together with GStreamer
-# and GNOME Music. This permission is above and beyond the permissions
-# granted by the GPL license by which GNOME Music is covered. If you
-# modify this code, you may extend this exception to your version of the
-# code, but you are not obligated to do so. If you do not wish to do so,
-# delete this exception statement from your version.
-
-from gi.repository import Gfm, Gio, GObject, Gtk
-
-import gnomemusic.utils as utils
-
-
-class SongListStore(Gtk.ListStore):
-
- def __init__(self, model):
- """Initialize SongListStore.
-
- :param Gio.ListStore model: The songs model to use
- """
- super().__init__()
-
- self._model = Gfm.SortListModel.new(model)
- self._model.set_sort_func(
- utils.wrap_list_store_sort_func(self._songs_sort))
-
- self.set_column_types([
- GObject.TYPE_STRING, # play or invalid icon
- GObject.TYPE_BOOLEAN, # selected
- GObject.TYPE_STRING, # title
- GObject.TYPE_STRING, # artist
- GObject.TYPE_STRING, # album
- GObject.TYPE_STRING, # duration
- GObject.TYPE_INT, # favorite
- GObject.TYPE_OBJECT, # coresong
- GObject.TYPE_INT, # validation
- GObject.TYPE_BOOLEAN, # iter_to_clean
- ])
-
- self._model.connect("items-changed", self._on_items_changed)
-
- def _songs_sort(self, song_a, song_b):
- title_a = song_a.props.title
- title_b = song_b.props.title
- song_cmp = (utils.normalize_caseless(title_a)
- == utils.normalize_caseless(title_b))
- if not song_cmp:
- return utils.natural_sort_names(title_a, title_b)
-
- artist_a = song_a.props.artist
- artist_b = song_b.props.artist
- artist_cmp = (utils.normalize_caseless(artist_a)
- == utils.normalize_caseless(artist_b))
- if not artist_cmp:
- return utils.natural_sort_names(artist_a, artist_b)
-
- return utils.natural_sort_names(song_a.props.album, song_b.props.album)
-
- def _on_items_changed(self, model, position, removed, added):
- if removed > 0:
- for i in list(range(removed)):
- path = Gtk.TreePath.new_from_string("{}".format(position))
- iter_ = self.get_iter(path)
- self.remove(iter_)
-
- if added > 0:
- for i in list(range(added)):
- coresong = model[position + i]
- time = utils.seconds_to_string(coresong.props.duration)
- self.insert_with_valuesv(
- position + i, [2, 3, 4, 5, 6, 7],
- [coresong.props.title, coresong.props.artist,
- coresong.props.album, time,
- int(coresong.props.favorite), coresong])
- coresong.connect(
- "notify::favorite", self._on_favorite_changed)
- coresong.connect(
- "notify::validation", self._on_validation_state_changed)
-
- def _on_favorite_changed(self, coresong, value):
- for row in self:
- if coresong == row[7]:
- row[6] = coresong.props.favorite
- break
-
- def _on_validation_state_changed(self, coresong, value):
- for row in self:
- if coresong == row[7]:
- row[8] = coresong.props.validation
- break
-
- @GObject.Property(
- type=Gio.ListStore, default=None, flags=GObject.ParamFlags.READABLE)
- def model(self):
- """Gets the model of songs sorted.
-
- :returns: a list model of sorted songs
- :rtype: Gfm.SortListModel
- """
- return self._model
diff --git a/gnomemusic/songtoast.py b/gnomemusic/songtoast.py
new file mode 100644
index 00000000..084acc22
--- /dev/null
+++ b/gnomemusic/songtoast.py
@@ -0,0 +1,85 @@
+# Copyright 2022 The GNOME Music Developers
+#
+# GNOME Music is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GNOME Music is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with GNOME Music; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# The GNOME Music authors hereby grant permission for non-GPL compatible
+# GStreamer plugins to be used and distributed together with GStreamer
+# and GNOME Music. This permission is above and beyond the permissions
+# granted by the GPL license by which GNOME Music is covered. If you
+# modify this code, you may extend this exception to your version of the
+# code, but you are not obligated to do so. If you do not wish to do so,
+# delete this exception statement from your version.
+
+from __future__ import annotations
+from typing import Optional
+import typing
+
+from gettext import gettext as _
+from gi.repository import Adw, GLib, GObject, Gio, Gtk
+if typing.TYPE_CHECKING:
+ from gnomemusic.application import Application
+ from gnomemusic.grilowrappers.grltrackerplaylists import Playlist
+ from gnomemusic.coresong import CoreSong
+
+
+class SongToast(GObject.Object):
+ """Toast for song deletion, including undo
+ """
+
+ __gtype_name__ = "SongToast"
+
+ def __init__(
+ self, application: Application, playlist: Playlist, position: int,
+ coresong: CoreSong) -> None:
+ """Initialize the toast for song deletion
+
+ :param Application application: Application object
+ :param Playlist playlist: The playlist that contains the song
+ :param int position: The song position in the playlist
+ :param CoreSong coresong: The coresong to be deleted
+ """
+ super().__init__()
+
+ self._coregrilo = application.props.coregrilo
+ self._coresong = coresong
+ self._playlist = playlist
+ self._position = position
+ self._undo = False
+
+ playlist_title = self._playlist.props.title
+ song_title = self._coresong.props.title
+ toast = Adw.Toast.new(
+ _("{} removed from {}".format(song_title, playlist_title)))
+ toast.set_button_label(_("Undo"))
+
+ toast.set_action_name("toast.undo")
+ application.props.window.install_action(
+ "toast.undo", None, self._toast_undo_cb)
+
+ toast.connect("dismissed", self._on_dismissed)
+ playlist.stage_song_deletion(self._coresong, position)
+
+ application.props.window._toast_overlay.add_toast(toast)
+
+ def _toast_undo_cb(
+ self, widget: Gtk.Widget, action: Gio.Action,
+ param: Optional[GLib.Variant]) -> None:
+ self._undo = True
+ self._playlist.undo_pending_song_deletion(
+ self._coresong, self._position)
+
+ def _on_dismissed(self, widget: Gtk.Widget) -> None:
+ if not self._undo:
+ self._playlist.finish_song_deletion(self._coresong, self._position)
diff --git a/gnomemusic/storeart.py b/gnomemusic/storeart.py
index 75dd47ea..ffee7abd 100644
--- a/gnomemusic/storeart.py
+++ b/gnomemusic/storeart.py
@@ -23,13 +23,11 @@
# delete this exception statement from your version.
import gi
-gi.require_versions({"MediaArt": "2.0", "Soup": "2.4"})
+gi.require_versions({"MediaArt": "2.0", "Soup": "3.0"})
from gi.repository import Gio, GLib, GObject, MediaArt, Soup, GdkPixbuf
from gnomemusic.musiclogger import MusicLogger
-from gnomemusic.coreartist import CoreArtist
-from gnomemusic.corealbum import CoreAlbum
-from gnomemusic.coresong import CoreSong
+from gnomemusic.utils import CoreObjectType
class StoreArt(GObject.Object):
@@ -54,23 +52,22 @@ class StoreArt(GObject.Object):
self._log = MusicLogger()
self._soup_session = Soup.Session.new()
- def start(self, coreobject, uri):
+ def start(self, coreobject, uri, coreobjecttype):
self._coreobject = coreobject
if (uri is None
or uri == ""):
- self._coreobject.props.thumbnail = "generic"
self.emit("finished")
return
- if isinstance(self._coreobject, CoreArtist):
+ if coreobjecttype == CoreObjectType.ARTIST:
success, self._file = MediaArt.get_file(
self._coreobject.props.artist, None, "artist")
- elif isinstance(self._coreobject, CoreAlbum):
+ elif coreobjecttype == CoreObjectType.ALBUM:
success, self._file = MediaArt.get_file(
self._coreobject.props.artist, self._coreobject.props.title,
"album")
- elif isinstance(self._coreobject, CoreSong):
+ elif coreobjecttype == CoreObjectType.SONG:
success, self._file = MediaArt.get_file(
self._coreobject.props.artist, self._coreobject.props.album,
"album")
@@ -78,7 +75,6 @@ class StoreArt(GObject.Object):
success = False
if not success:
- self._coreobject.props.thumbnail = "generic"
self.emit("finished")
return
@@ -87,7 +83,7 @@ class StoreArt(GObject.Object):
cache_dir_file = Gio.File.new_for_path(cache_dir)
cache_dir_file.query_info_async(
Gio.FILE_ATTRIBUTE_ACCESS_CAN_READ, Gio.FileQueryInfoFlags.NONE,
- GLib.PRIORITY_LOW, None, self._cache_dir_info_read, uri)
+ GLib.PRIORITY_DEFAULT_IDLE, None, self._cache_dir_info_read, uri)
def _cache_dir_info_read(self, cache_dir_file, res, uri):
try:
@@ -99,23 +95,23 @@ class StoreArt(GObject.Object):
except GLib.Error as error:
self._log.warning(
"Error: {}, {}".format(error.domain, error.message))
- self._coreobject.props.thumbnail = "generic"
self.emit("finished")
return
msg = Soup.Message.new("GET", uri)
- self._soup_session.queue_message(msg, self._read_callback, None)
+ self._soup_session.send_and_read_async(
+ msg, GLib.PRIORITY_DEFAULT, None, self._read_callback)
- def _read_callback(self, src, result, data):
- if result.props.status_code != 200:
+ def _read_callback(
+ self, session: Soup.Session, result: Gio.AsyncResult) -> None:
+ try:
+ bytes = session.send_and_read_finish(result)
+ except GLib.Error as error:
self._log.debug(
- "Failed to get remote art: {}".format(
- result.props.reason_phrase))
+ f"Failed to get remote art: {error.domain}, {error.message}")
self.emit("finished")
- return
- istream = Gio.MemoryInputStream.new_from_bytes(
- result.props.response_body_data)
+ istream = Gio.MemoryInputStream.new_from_bytes(bytes)
GdkPixbuf.Pixbuf.new_from_stream_async(
istream, None, self._pixbuf_from_stream_finished)
@@ -129,10 +125,11 @@ class StoreArt(GObject.Object):
self.emit("finished")
else:
self._file.create_async(
- Gio.FileCreateFlags.NONE, GLib.PRIORITY_LOW, None,
+ Gio.FileCreateFlags.NONE, GLib.PRIORITY_DEFAULT_IDLE, None,
self._output_stream_created, pixbuf)
finally:
- stream.close_async(GLib.PRIORITY_LOW, None, self._stream_closed)
+ stream.close_async(
+ GLib.PRIORITY_DEFAULT_IDLE, None, self._stream_closed)
def _output_stream_created(
self, stream: Gio.FileOutputStream, result: Gio.AsyncResult,
@@ -142,6 +139,7 @@ class StoreArt(GObject.Object):
except GLib.Error as error:
# File already exists.
self._log.info(f"Error: {error.domain}, {error.message}")
+ self.emit("finished")
else:
pixbuf.save_to_streamv_async(
output_stream, "jpeg", None, None, None,
@@ -155,10 +153,11 @@ class StoreArt(GObject.Object):
except GLib.Error as error:
self._log.warning(f"Error: {error.domain}, {error.message}")
else:
- self.emit("finished")
+ self._coreobject.props.thumbnail = self._file.get_uri()
finally:
+ self.emit("finished")
output_stream.close_async(
- GLib.PRIORITY_LOW, None, self._stream_closed)
+ GLib.PRIORITY_DEFAULT_IDLE, None, self._stream_closed)
def _stream_closed(
self, stream: Gio.OutputStream, result: Gio.AsyncResult) -> None:
diff --git a/gnomemusic/texturecache.py b/gnomemusic/texturecache.py
new file mode 100644
index 00000000..300f2e0c
--- /dev/null
+++ b/gnomemusic/texturecache.py
@@ -0,0 +1,172 @@
+# Copyright 2022 The GNOME Music developers
+#
+# GNOME Music is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GNOME Music is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with GNOME Music; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# The GNOME Music authors hereby grant permission for non-GPL compatible
+# GStreamer plugins to be used and distributed together with GStreamer
+# and GNOME Music. This permission is above and beyond the permissions
+# granted by the GPL license by which GNOME Music is covered. If you
+# modify this code, you may extend this exception to your version of the
+# code, but you are not obligated to do so. If you do not wish to do so,
+# delete this exception statement from your version.
+
+from __future__ import annotations
+from enum import IntEnum
+from typing import Dict, Optional, Tuple, Union
+import time
+import typing
+
+from gi.repository import GLib, GObject, Gdk, Gio
+
+from gnomemusic.asyncqueue import AsyncQueue
+from gnomemusic.musiclogger import MusicLogger
+from gnomemusic.mediaartloader import MediaArtLoader
+if typing.TYPE_CHECKING:
+ from gnomemusic.corealbum import CoreAlbum
+ from gnomemusic.coreartist import CoreArtist
+ from gnomemusic.coresong import CoreSong
+
+if typing.TYPE_CHECKING:
+ CoreObject = Union[CoreAlbum, CoreArtist, CoreSong]
+
+
+class TextureCache(GObject.GObject):
+ """Retrieval and cache for artwork textures
+ """
+
+ class LoadingState(IntEnum):
+ """The loading status of the URI
+
+ AVAILABLE: The texture is currently cached
+ UNAVAILABLE: No texture is available for the URI
+ CLEARED: The texture was available, has been cleared and
+ should be available on lookup
+ """
+ AVAILABLE = 0
+ UNAVAILABLE = 1
+ CLEARED = 2
+
+ __gtype_name__ = "TextureCache"
+
+ __gsignals__ = {
+ "texture": (GObject.SignalFlags.RUN_FIRST, None, (object, ))
+ }
+
+ # Music has two main cycling views (AlbumsView and ArtistsView),
+ # both have around 200 cycling items each when fully used. For
+ # the cache to be useful it needs to be larger than the given
+ # numbers combined.
+ _MAX_CACHE_SIZE = 800
+
+ _async_queue = AsyncQueue("TextureCache")
+ _cleanup_id = 0
+ _log = MusicLogger()
+ _memory_monitor = Gio.MemoryMonitor.dup_default()
+ _size = _MAX_CACHE_SIZE
+ _textures: Dict[str, Tuple[
+ TextureCache.LoadingState, float, Optional[Gdk.Texture]]] = {}
+
+ def __init__(self) -> None:
+ """Initialize Texturecache
+ """
+ super().__init__()
+
+ self._art_loader: MediaArtLoader
+ self._art_loading_id = 0
+
+ if TextureCache._cleanup_id == 0:
+ TextureCache._cleanup_id = GLib.timeout_add_seconds(
+ 10, TextureCache._cache_cleanup)
+ TextureCache._memory_monitor.connect(
+ "low-memory-warning", TextureCache._low_memory_warning)
+
+ def clear_pending_lookup_callback(self) -> None:
+ """Disconnect ongoing lookup callback
+ """
+ if self._art_loading_id != 0:
+ self._art_loader.disconnect(self._art_loading_id)
+ self._art_loading_id = 0
+
+ def lookup(self, uri: str) -> None:
+ """Look up a texture for the given MediaArt uri
+
+ :param str uri: The MediaArt uri
+ """
+ self.clear_pending_lookup_callback()
+
+ if uri in TextureCache._textures.keys():
+ state, _, texture = TextureCache._textures[uri]
+ if state in [
+ TextureCache.LoadingState.AVAILABLE,
+ TextureCache.LoadingState.UNAVAILABLE]:
+ self.emit("texture", texture)
+ TextureCache._textures[uri] = (state, time.time(), texture)
+ return
+
+ self._art_loader = MediaArtLoader()
+ self._art_loading_id = self._art_loader.connect(
+ "finished", self._on_art_loading_finished, uri)
+ self._async_queue.queue(self._art_loader, uri)
+
+ @classmethod
+ def _low_memory_warning(
+ cls, mm: Gio.MemoryMonitor,
+ level: Gio.MemoryMonitorWarningLevel) -> None:
+ if level < Gio.MemoryMonitorWarningLevel.LOW:
+ TextureCache._size = TextureCache._MAX_CACHE_SIZE
+ else:
+ # List slicing with 0 gives an empty list in
+ # _cache_cleanup.
+ TextureCache._size = 1
+
+ @classmethod
+ def _cache_cleanup(cls) -> None:
+ """Sorts the available cache entries by recency and evicts
+ the oldest items to match the maximum cache size.
+ """
+ sorted_available = {
+ k: (state, t, texture)
+ for k, (state, t, texture) in sorted(
+ TextureCache._textures.items(), key=lambda item: item[1][1])
+ if state in [TextureCache.LoadingState.AVAILABLE]}
+
+ sorted_available_l = len(sorted_available)
+ if sorted_available_l < TextureCache._size:
+ return GLib.SOURCE_CONTINUE
+
+ keys_to_clear = list(sorted_available.keys())[:-TextureCache._size]
+ for key in keys_to_clear:
+ state, t, texture = TextureCache._textures[key]
+ TextureCache._textures[key] = (
+ TextureCache.LoadingState.CLEARED, t, None)
+
+ keys_l = len(keys_to_clear)
+ TextureCache._log.info(
+ f"Cleared {keys_l} items, texture cache contains"
+ f" {sorted_available_l-keys_l} available items.")
+
+ return GLib.SOURCE_CONTINUE
+
+ def _on_art_loading_finished(
+ self, art_loader: MediaArtLoader, texture: Gdk.Texture,
+ uri: str) -> None:
+ if texture:
+ state = TextureCache.LoadingState.AVAILABLE
+ else:
+ state = TextureCache.LoadingState.UNAVAILABLE
+
+ TextureCache._textures[uri] = (state, time.time(), texture)
+
+ self.emit("texture", texture)
diff --git a/gnomemusic/trackerwrapper.py b/gnomemusic/trackerwrapper.py
index 7a4faf86..3ab69c2c 100644
--- a/gnomemusic/trackerwrapper.py
+++ b/gnomemusic/trackerwrapper.py
@@ -21,12 +21,19 @@
# code, but you are not obligated to do so. If you do not wish to do so,
# delete this exception statement from your version.
+from __future__ import annotations
import os
-
+import typing
from enum import IntEnum
+from typing import Optional
from gi.repository import Gio, GLib, GObject, Tracker
+if typing.TYPE_CHECKING:
+ from gi.repository import Grl
+
+ from gnomemusic.application import Application
+
class TrackerState(IntEnum):
"""Tracker Status
@@ -38,7 +45,7 @@ class TrackerState(IntEnum):
class TrackerWrapper(GObject.GObject):
- def __init__(self, application):
+ def __init__(self, application: Application) -> None:
"""Create a connection to an instance of Tracker
:param Application application: The application object
@@ -48,18 +55,18 @@ class TrackerWrapper(GObject.GObject):
self._log = application.props.log
self._application_id = application.props.application_id
- self._local_db = None
+ self._local_db: Tracker.SparqlConnection = None
self._local_db_available = TrackerState.UNAVAILABLE
- self._miner_fs = None
- self._miner_fs_busname = None
+ self._miner_fs: Tracker.SparqlConnection = None
+ self._miner_fs_busname = ""
self._miner_fs_available = TrackerState.UNAVAILABLE
self._setup_local_db()
self._setup_host_miner_fs()
@staticmethod
- def _in_flatpak():
+ def _in_flatpak() -> bool:
"""Indicates if Music is running as flatpak
:returns: True if running as flatpak.
@@ -67,7 +74,7 @@ class TrackerWrapper(GObject.GObject):
"""
return os.path.exists("/.flatpak-info")
- def _setup_host_miner_fs(self):
+ def _setup_host_miner_fs(self) -> None:
self._miner_fs_busname = "org.freedesktop.Tracker3.Miner.Files"
self._log.debug(
@@ -87,10 +94,10 @@ class TrackerWrapper(GObject.GObject):
if self._in_flatpak():
self._setup_local_miner_fs()
else:
- self._miner_fs_busname = None
+ self._miner_fs_busname = ""
self.notify("tracker-available")
- def _setup_local_miner_fs(self):
+ def _setup_local_miner_fs(self) -> None:
self._miner_fs_busname = self._application_id + ".Tracker3.Miner.Files"
self._log.debug(
"Connecting to bundled Tracker indexer at {}".format(
@@ -114,7 +121,8 @@ class TrackerWrapper(GObject.GObject):
Gio.DBusCallFlags.NONE, miner_fs_startup_timeout_msec, None,
self._setup_local_miner_fs_ping_cb)
- def _setup_local_miner_fs_ping_cb(self, klass, result):
+ def _setup_local_miner_fs_ping_cb(
+ self, klass: Gio.DBusProxy, result: Gio.AsyncResult) -> None:
try:
klass.call_finish(result)
self._log.info("Using bundled tracker-miner-fs-3")
@@ -126,10 +134,10 @@ class TrackerWrapper(GObject.GObject):
self._log.warning(
"Could not start local Tracker miner-fs at {}: {}".format(
self._miner_fs_busname, error))
- self._miner_fs_busname = None
+ self._miner_fs_busname = ""
self.notify("tracker-available")
- def _setup_local_db(self):
+ def _setup_local_db(self) -> None:
# Open a local Tracker database.
try:
self._local_db = Tracker.SparqlConnection.new(
@@ -149,7 +157,7 @@ class TrackerWrapper(GObject.GObject):
self._local_db_available = TrackerState.AVAILABLE
self.notify("tracker-available")
- def cache_directory(self):
+ def cache_directory(self) -> str:
"""Get directory which contains Music private data.
:returns: private store path
@@ -160,17 +168,17 @@ class TrackerWrapper(GObject.GObject):
[GLib.get_user_cache_dir(), "gnome-music", "db"])
@GObject.Property(type=str, flags=GObject.ParamFlags.READABLE)
- def miner_fs_busname(self):
+ def miner_fs_busname(self) -> str:
return self._miner_fs_busname
@GObject.Property(type=object, flags=GObject.ParamFlags.READABLE)
- def local_db(self):
+ def local_db(self) -> Tracker.SparqlConnection:
return self._local_db
@GObject.Property(
type=int, default=TrackerState.UNAVAILABLE,
flags=GObject.ParamFlags.READABLE)
- def tracker_available(self):
+ def tracker_available(self) -> TrackerState:
"""Get Tracker availability.
:returns: tracker availability
@@ -185,7 +193,7 @@ class TrackerWrapper(GObject.GObject):
else:
return TrackerState.UNAVAILABLE
- def location_filter(self):
+ def location_filter(self) -> Optional[str]:
try:
music_dir = GLib.get_user_special_dir(
GLib.UserDirectory.DIRECTORY_MUSIC)
@@ -202,7 +210,7 @@ class TrackerWrapper(GObject.GObject):
return query
- def _update_favorite(self, media):
+ def _update_favorite(self, media: Grl.Media) -> None:
"""Update favorite state of a song
:param Grl.Media media: media which contains updated favorite state
@@ -234,7 +242,7 @@ class TrackerWrapper(GObject.GObject):
self._local_db.update_async(update, None, _update_favorite_cb)
- def _update_play_count(self, media):
+ def _update_play_count(self, media: Grl.Media) -> None:
update = """
DELETE WHERE {
<%(urn)s> nie:usageCounter ?count .
@@ -257,7 +265,7 @@ class TrackerWrapper(GObject.GObject):
self._local_db.update_async(update, None, _update_play_count_cb)
- def _update_last_played(self, media):
+ def _update_last_played(self, media: Grl.Media) -> None:
last_played = media.get_last_played().format_iso8601()
update = """
DELETE WHERE {
@@ -281,7 +289,7 @@ class TrackerWrapper(GObject.GObject):
self._local_db.update_async(update, None, _update_last_played_cb)
- def update_tag(self, media, tag):
+ def update_tag(self, media: Grl.Media, tag: str) -> None:
"""Update property of a resource.
:param Grl.Media media: media which contains updated tag
diff --git a/gnomemusic/utils.py b/gnomemusic/utils.py
index 5d3262a0..208f8707 100644
--- a/gnomemusic/utils.py
+++ b/gnomemusic/utils.py
@@ -23,12 +23,12 @@
# delete this exception statement from your version.
from enum import Enum, IntEnum
+from typing import List, Union
import re
import unicodedata
from gettext import gettext as _
-from gi.repository import Gio, GLib
-from gi._gi import pygobject_new_full
+from gi.repository import Gio, GLib, Gtk
from gnomemusic.musiclogger import MusicLogger
@@ -46,6 +46,18 @@ class ArtSize(Enum):
self.height = height
+class CoreObjectType(Enum):
+ """Indicates the type of the CoreObject passed"""
+ ALBUM = 0
+ ARTIST = 1
+ SONG = 2
+
+
+class DefaultIconType(Enum):
+ ALBUM = "folder-music-symbolic"
+ ARTIST = "music-artist-symbolic"
+
+
class SongStateIcon(Enum):
"""Enum for icons used in song playing and validation"""
ERROR = "dialog-error-symbolic"
@@ -138,13 +150,13 @@ def get_media_year(item):
"""Returns the year when the media was published.
:param Grl.Media item: A Grilo Media object
- :return: The publication year or '----' if not defined
- :rtype: str
+ :return: The publication year or None if not defined
+ :rtype: str or None
"""
date = item.get_publication_date()
if not date:
- return "----"
+ return None
return str(date.get_year())
@@ -160,7 +172,7 @@ def seconds_to_string(duration):
minutes = seconds // 60
seconds %= 60
- return '{:d}∶{:02d}'.format(minutes, seconds)
+ return '{:d}:{:02d}'.format(minutes, seconds)
def normalize_caseless(text):
@@ -173,7 +185,7 @@ def normalize_caseless(text):
return unicodedata.normalize("NFKD", text.casefold())
-def natural_sort_names(name_a, name_b):
+def natural_sort_names(name_a: str, name_b: str) -> int:
"""Natural order comparison of two strings.
A natural order is an alphabetical order which takes into account
@@ -184,22 +196,18 @@ def natural_sort_names(name_a, name_b):
:param str name_a: first string to compare
:param str name_b: second string to compare
- :returns: False if name_a should be before name_b. True otherwise.
- :rtype: boolean
+ :returns: Gtk Ordering
+ :rtype: int
"""
- def _extract_numbers(text):
+ def _extract_numbers(text: str) -> List[Union[int, str]]:
return [int(tmp) if tmp.isdigit() else tmp
for tmp in re.split(r"(\d+)", normalize_caseless(text))]
- return _extract_numbers(name_b) < _extract_numbers(name_a)
-
-
-def wrap_list_store_sort_func(func):
- """PyGI wrapper for SortListModel set_sort_func.
- """
- def wrap(a, b, *user_data):
- a = pygobject_new_full(a, False)
- b = pygobject_new_full(b, False)
- return func(a, b, *user_data)
-
- return wrap
+ extract_a = _extract_numbers(name_a)
+ extract_b = _extract_numbers(name_b)
+ if extract_a < extract_b:
+ return Gtk.Ordering.SMALLER
+ elif extract_a > extract_b:
+ return Gtk.Ordering.LARGER
+ else:
+ return Gtk.Ordering.EQUAL
diff --git a/gnomemusic/views/albumsview.py b/gnomemusic/views/albumsview.py
index 36978a8e..44123267 100644
--- a/gnomemusic/views/albumsview.py
+++ b/gnomemusic/views/albumsview.py
@@ -22,14 +22,20 @@
# code, but you are not obligated to do so. If you do not wish to do so,
# delete this exception statement from your version.
-import math
+from __future__ import annotations
+import typing
from gettext import gettext as _
-from gi.repository import Gdk, GLib, GObject, Gtk
+from gi.repository import GObject, Gtk
+from typing import Dict, List
+from gnomemusic.coverpaintable import CoverPaintable
+from gnomemusic.utils import ArtSize, DefaultIconType
from gnomemusic.widgets.headerbar import HeaderBar
-from gnomemusic.widgets.albumcover import AlbumCover
from gnomemusic.widgets.albumwidget import AlbumWidget
+if typing.TYPE_CHECKING:
+ from gnomemusic.application import Application
+ from gnomemusic.corealbum import CoreAlbum
@Gtk.Template(resource_path="/org/gnome/Music/ui/AlbumsView.ui")
@@ -51,10 +57,9 @@ class AlbumsView(Gtk.Stack):
_album_scrolled_window = Gtk.Template.Child()
_scrolled_window = Gtk.Template.Child()
- _flowbox = Gtk.Template.Child()
- _flowbox_long_press = Gtk.Template.Child()
+ _gridview = Gtk.Template.Child()
- def __init__(self, application):
+ def __init__(self, application: Application) -> None:
"""Initialize AlbumsView
:param application: The Application object
@@ -65,18 +70,33 @@ class AlbumsView(Gtk.Stack):
self._application = application
self._window = application.props.window
- self._headerbar = self._window._headerbar
- self._adjustment_timeout_id = 0
- self._viewport = self._scrolled_window.get_child()
- self._widget_counter = 1
- self._ctrl_hold = False
-
- model = self._application.props.coremodel.props.albums_sort
- self._flowbox.bind_model(model, self._create_widget)
- self._flowbox.set_hadjustment(self._scrolled_window.get_hadjustment())
- self._flowbox.set_vadjustment(self._scrolled_window.get_vadjustment())
- self._flowbox.connect("child-activated", self._on_child_activated)
+ self._headerbar = self._window.props.headerbar
+ self._list_item_bindings: Dict[
+ Gtk.ListItem, List[GObject.Binding]] = {}
+ self._list_item_star_controllers: Dict[
+ Gtk.ListItem, List[GObject.Binding]] = {}
+
+ list_item_factory = Gtk.SignalListItemFactory()
+ list_item_factory.connect("setup", self._setup_list_item)
+ list_item_factory.connect("bind", self._bind_list_item)
+ list_item_factory.connect("unbind", self._unbind_list_item)
+
+ self._gridview.props.factory = list_item_factory
+
+ self._selection_model = Gtk.MultiSelection.new(
+ self._application.props.coremodel.props.albums_sort)
+ self._gridview.props.model = self._selection_model
+
+ self._gridview.connect("activate", self._on_album_activated)
+
+ self.bind_property(
+ "selection-mode", self._gridview, "single-click-activate",
+ GObject.BindingFlags.SYNC_CREATE
+ | GObject.BindingFlags.INVERT_BOOLEAN)
+ self.bind_property(
+ "selection-mode", self._gridview, "enable-rubberband",
+ GObject.BindingFlags.SYNC_CREATE)
self.bind_property(
"selection-mode", self._window, "selection-mode",
GObject.BindingFlags.DEFAULT)
@@ -89,67 +109,12 @@ class AlbumsView(Gtk.Stack):
"selection-mode", self, "selection-mode",
GObject.BindingFlags.BIDIRECTIONAL)
- self._album_scrolled_window.add(self._album_widget)
+ viewport = self._album_scrolled_window.get_first_child()
+ viewport.set_child(self._album_widget)
self.connect(
"notify::search-mode-active", self._on_search_mode_changed)
- self._scrolled_window.props.vadjustment.connect(
- "value-changed", self._on_vadjustment_changed)
- self._scrolled_window.props.vadjustment.connect(
- "changed", self._on_vadjustment_changed)
-
- def _on_vadjustment_changed(self, adjustment):
- if self._adjustment_timeout_id != 0:
- GLib.source_remove(self._adjustment_timeout_id)
- self._adjustment_timeout_id = 0
-
- self._adjustment_timeout_id = GLib.timeout_add(
- 200, self._retrieve_covers, adjustment.props.value,
- priority=GLib.PRIORITY_DEFAULT - 10)
-
- def _retrieve_covers(self, old_adjustment):
- adjustment = self._scrolled_window.props.vadjustment.props.value
-
- if old_adjustment != adjustment:
- return GLib.SOURCE_CONTINUE
-
- first_cover = self._flowbox.get_child_at_index(0)
- if first_cover is None:
- return GLib.SOURCE_REMOVE
-
- cover_size, _ = first_cover.get_allocated_size()
- if cover_size.width == 0 or cover_size.height == 0:
- return GLib.SOURCE_REMOVE
-
- viewport_size, _ = self._viewport.get_allocated_size()
-
- h_space = self._flowbox.get_column_spacing()
- v_space = self._flowbox.get_row_spacing()
- nr_cols = (
- (viewport_size.width + h_space) // (cover_size.width + h_space))
-
- top_left_cover = self._flowbox.get_child_at_index(
- nr_cols * (adjustment // (cover_size.height + v_space)))
-
- covers_col = math.ceil(viewport_size.width / cover_size.width)
- covers_row = math.ceil(viewport_size.height / cover_size.height)
-
- children = self._flowbox.get_children()
- retrieve_list = []
- for i, albumcover in enumerate(children):
- if top_left_cover == albumcover:
- retrieve_covers = covers_row * covers_col
- retrieve_list = children[i:i + retrieve_covers]
- break
-
- for albumcover in retrieve_list:
- albumcover.retrieve()
-
- self._adjustment_timeout_id = 0
-
- return GLib.SOURCE_REMOVE
-
def _on_selection_mode_changed(self, widget, data=None):
selection_mode = self._window.props.selection_mode
if (selection_mode == self.props.selection_mode
@@ -159,40 +124,24 @@ class AlbumsView(Gtk.Stack):
self.props.selection_mode = selection_mode
if not self.props.selection_mode:
self.deselect_all()
- self._flowbox.props.selection_mode = Gtk.SelectionMode.NONE
def _on_search_mode_changed(self, klass, param):
if (not self.props.search_mode_active
and self._headerbar.props.stack.props.visible_child == self
- and self.get_visible_child() == self._album_widget):
+ and self.get_visible_child_name() == "widget"):
self._set_album_headerbar(self._album_widget.props.corealbum)
- def _create_widget(self, corealbum):
- album_widget = AlbumCover(corealbum)
-
- self.bind_property(
- "selection-mode", album_widget, "selection-mode",
- GObject.BindingFlags.SYNC_CREATE
- | GObject.BindingFlags.BIDIRECTIONAL)
-
- # NOTE: Adding SYNC_CREATE here will trigger all the nested
- # models to be created. This will slow down initial start,
- # but will improve initial 'select all' speed.
- album_widget.bind_property(
- "selected", corealbum, "selected",
- GObject.BindingFlags.BIDIRECTIONAL)
-
- GLib.timeout_add(
- self._widget_counter * 250, album_widget.retrieve,
- priority=GLib.PRIORITY_LOW)
- self._widget_counter = self._widget_counter + 1
-
- return album_widget
-
def _back_button_clicked(self, widget, data=None):
self._headerbar.state = HeaderBar.State.MAIN
self.props.visible_child = self._scrolled_window
+ def _on_album_activated(self, widget, position):
+ corealbum = widget.props.model[position]
+
+ self._album_widget.props.corealbum = corealbum
+ self._set_album_headerbar(corealbum)
+ self.props.visible_child = self._album_scrolled_window
+
def _on_child_activated(self, widget, child, user_data=None):
corealbum = child.props.corealbum
if self.props.selection_mode:
@@ -202,66 +151,112 @@ class AlbumsView(Gtk.Stack):
self._album_widget.props.corealbum = corealbum
self._set_album_headerbar(corealbum)
- self.set_visible_child(self._album_scrolled_window)
+ self.set_visible_child_name("widget")
- def _set_album_headerbar(self, corealbum):
+ def _set_album_headerbar(self, corealbum: CoreAlbum) -> None:
self._headerbar.props.state = HeaderBar.State.CHILD
- self._headerbar.props.title = corealbum.props.title
- self._headerbar.props.subtitle = corealbum.props.artist
-
- @Gtk.Template.Callback()
- def _on_flowbox_press_begin(self, gesture, sequence):
- event = gesture.get_last_event(sequence)
- ok, state = event.get_state()
- if ((ok is True
- and state == Gdk.ModifierType.CONTROL_MASK)
- or self.props.selection_mode is True):
- self._flowbox.props.selection_mode = Gtk.SelectionMode.MULTIPLE
- if state == Gdk.ModifierType.CONTROL_MASK:
- self._ctrl_hold = True
-
- @Gtk.Template.Callback()
- def _on_flowbox_press_cancel(self, gesture, sequence):
- self._flowbox.props.selection_mode = Gtk.SelectionMode.NONE
-
- @Gtk.Template.Callback()
- def _on_selected_children_changed(self, flowbox):
- if self._flowbox.props.selection_mode == Gtk.SelectionMode.NONE:
- return
-
- if self.props.selection_mode is False:
- self.props.selection_mode = True
-
- rubberband_selection = len(self._flowbox.get_selected_children()) > 1
- with self._application.props.coreselection.freeze_notify():
- if (rubberband_selection
- and not self._ctrl_hold):
- self.deselect_all()
- for child in self._flowbox.get_selected_children():
- if (self._ctrl_hold is True
- or not rubberband_selection):
- child.props.selected = not child.props.selected
- else:
- child.props.selected = True
-
- self._ctrl_hold = False
- self._flowbox.props.selection_mode = Gtk.SelectionMode.NONE
+ self._headerbar.set_label_title(
+ corealbum.props.title, corealbum.props.artist)
def _toggle_all_selection(self, selected):
"""Selects or deselects all items.
"""
with self._application.props.coreselection.freeze_notify():
- if self.get_visible_child() == self._album_widget:
+ if self.get_visible_child_name() == "widget":
if selected is True:
self._album_widget.select_all()
else:
self._album_widget.deselect_all()
else:
- for child in self._flowbox.get_children():
- child.props.selected = selected
+ if selected:
+ self._selection_model.select_all()
+ else:
+ self._selection_model.unselect_all()
def select_all(self):
self._toggle_all_selection(True)
def deselect_all(self):
self._toggle_all_selection(False)
+
+ def _setup_list_item(
+ self, factory: Gtk.SignalListItemFactory,
+ list_item: Gtk.ListItem) -> None:
+ builder = Gtk.Builder.new_from_resource(
+ "/org/gnome/Music/ui/AlbumCoverListItem.ui")
+ list_item.props.child = builder.get_object("_album_cover")
+ cover_image = list_item.props.child.get_first_child().get_first_child()
+ cover_image.set_size_request(
+ ArtSize.MEDIUM.width, ArtSize.MEDIUM.height)
+ cover_image.props.paintable = CoverPaintable(
+ self, ArtSize.MEDIUM, icon_type=DefaultIconType.ALBUM)
+
+ self.bind_property(
+ "selection-mode", list_item, "selectable",
+ GObject.BindingFlags.SYNC_CREATE)
+ self.bind_property(
+ "selection-mode", list_item, "activatable",
+ GObject.BindingFlags.SYNC_CREATE
+ | GObject.BindingFlags.INVERT_BOOLEAN)
+
+ def _bind_list_item(
+ self, factory: Gtk.SignalListItemFactory,
+ list_item: Gtk.ListItem) -> None:
+ album_cover = list_item.props.child
+ corealbum = list_item.props.item
+
+ cover_image = album_cover.get_first_child().get_first_child()
+ check = cover_image.get_next_sibling()
+ album_label = album_cover.get_first_child().get_next_sibling()
+ artist_label = album_label.get_next_sibling()
+
+ b1 = corealbum.bind_property(
+ "corealbum", cover_image.props.paintable, "coreobject",
+ GObject.BindingFlags.SYNC_CREATE)
+ b2 = corealbum.bind_property(
+ "title", album_label, "label", GObject.BindingFlags.SYNC_CREATE)
+ b3 = corealbum.bind_property(
+ "artist", artist_label, "label", GObject.BindingFlags.SYNC_CREATE)
+
+ b4 = list_item.bind_property(
+ "selected", corealbum, "selected",
+ GObject.BindingFlags.SYNC_CREATE)
+ b5 = list_item.bind_property(
+ "selected", check, "active", GObject.BindingFlags.SYNC_CREATE)
+ b6 = self.bind_property(
+ "selection-mode", check, "visible",
+ GObject.BindingFlags.SYNC_CREATE)
+
+ def on_activated(widget, value):
+ if check.props.active:
+ self._selection_model.select_item(
+ list_item.get_position(), False)
+ else:
+ self._selection_model.unselect_item(
+ list_item.get_position())
+
+ # the listitem selected property is read-only.
+ # It cannot be bound from the check active property.
+ # It is necessary to update the selection model in order
+ # to update it.
+ check.connect("notify::active", on_activated)
+
+ self._list_item_bindings[list_item] = [b1, b2, b3, b4, b5, b6]
+
+ def _unbind_list_item(
+ self, factory: Gtk.SignalListItemFactory,
+ list_item: Gtk.ListItem) -> None:
+ bindings = self._list_item_bindings.pop(list_item)
+ [binding.unbind() for binding in bindings]
+
+ album_cover = list_item.props.child
+
+ cover_image = album_cover.get_first_child().get_first_child()
+ check = cover_image.get_next_sibling()
+
+ signal_id, detail_id = GObject.signal_parse_name(
+ "notify::active", check, True)
+ handler_id = GObject.signal_handler_find(
+ check, GObject.SignalMatchType.ID, signal_id, detail_id, None, 0,
+ 0)
+ check.disconnect(handler_id)
diff --git a/gnomemusic/views/artistsview.py b/gnomemusic/views/artistsview.py
index f3e1d064..b4c92809 100644
--- a/gnomemusic/views/artistsview.py
+++ b/gnomemusic/views/artistsview.py
@@ -22,11 +22,16 @@
# code, but you are not obligated to do so. If you do not wish to do so,
# delete this exception statement from your version.
+from __future__ import annotations
+import typing
+
from gettext import gettext as _
-from gi.repository import GLib, GObject, Gtk
+from gi.repository import GObject, Gtk
from gnomemusic.widgets.artistalbumswidget import ArtistAlbumsWidget
from gnomemusic.widgets.artisttile import ArtistTile
+if typing.TYPE_CHECKING:
+ from gnomemusic.application import Application
@Gtk.Template(resource_path="/org/gnome/Music/ui/ArtistsView.ui")
@@ -40,16 +45,15 @@ class ArtistsView(Gtk.Paned):
__gtype_name__ = "ArtistsView"
icon_name = GObject.Property(
- type=str, default="system-users-symbolic",
+ type=str, default="music-artist-symbolic",
flags=GObject.ParamFlags.READABLE)
title = GObject.Property(
type=str, default=_("Artists"), flags=GObject.ParamFlags.READABLE)
- _artist_container = Gtk.Template.Child()
_artist_view = Gtk.Template.Child()
_sidebar = Gtk.Template.Child()
- def __init__(self, application):
+ def __init__(self, application: Application) -> None:
"""Initialize
:param GtkApplication application: The application object
@@ -58,13 +62,6 @@ class ArtistsView(Gtk.Paned):
self.props.name = "artists"
- self._application = application
- self._artists = {}
- self._widget_counter = 1
-
- self._selected_artist = None
- self._loaded_artists = []
-
# This indicates if the current list has been empty and has
# had no user interaction since.
self._untouched_list = True
@@ -73,107 +70,58 @@ class ArtistsView(Gtk.Paned):
self._coremodel = application.props.coremodel
self._model = self._coremodel.props.artists_sort
- self._sidebar.bind_model(self._model, self._create_widget)
-
- self._model.connect_after(
- "items-changed", self._on_model_items_changed)
- self._on_model_items_changed(self._model, 0, 0, 0)
+ self._selection_model = Gtk.SingleSelection.new(self._model)
+ self._sidebar.props.model = self._selection_model
+ artist_item_factory = Gtk.SignalListItemFactory()
+ artist_item_factory.connect("setup", self._on_list_view_setup)
+ artist_item_factory.connect("bind", self._on_list_view_bind)
+ self._sidebar.props.factory = artist_item_factory
- self._selection_mode = False
+ self._artist_album = ArtistAlbumsWidget(application)
+ self._artist_view.props.child = self._artist_album
+ self.bind_property(
+ "selection-mode", self._artist_album, "selection-mode",
+ GObject.BindingFlags.SYNC_CREATE
+ | GObject.BindingFlags.BIDIRECTIONAL)
self._window.bind_property(
"selection-mode", self, "selection-mode",
GObject.BindingFlags.BIDIRECTIONAL)
- def _create_widget(self, coreartist):
- row = ArtistTile(coreartist)
- row.props.text = coreartist.props.artist
-
- GLib.timeout_add(
- self._widget_counter * 300, row.retrieve,
- priority=GLib.PRIORITY_LOW)
- self._widget_counter = self._widget_counter + 1
+ self._selection_model.connect_after(
+ "items-changed", self._on_model_items_changed)
+ self._on_model_items_changed(self._selection_model, 0, 0, 0)
- return row
+ self._selection_mode = False
- def _on_model_items_changed(self, model, position, removed, added):
+ def _on_list_view_setup(
+ self, factory: Gtk.SignalListItemFactory,
+ list_item: Gtk.ListItem) -> None:
+ list_item.props.child = ArtistTile()
+
+ def _on_list_view_bind(
+ self, factory: Gtk.SignalListItemFactory,
+ list_item: Gtk.ListItem) -> None:
+ coreartist = list_item.props.item
+ artist_tile = list_item.props.child
+ artist_tile.props.coreartist = coreartist
+
+ def _on_model_items_changed(
+ self, model: Gtk.SingleSelection, position: int, removed: int,
+ added: int) -> None:
if model.get_n_items() == 0:
self._untouched_list = True
- return
+ # FIXME: Add an empty state.
elif self._untouched_list is True:
- first_row = self._sidebar.get_row_at_index(0)
- if first_row is None:
- return
-
- self._sidebar.select_row(first_row)
- self._on_artist_activated(self._sidebar, first_row, True)
- return
-
- if removed == 0:
- return
-
- removed_artist = None
- artists = [coreartist.props.artist for coreartist in model]
- for artist in self._loaded_artists:
- if artist not in artists:
- removed_artist = artist
- break
-
- if removed_artist is None:
- return
-
- self._loaded_artists.remove(removed_artist)
- if self._artist_view.get_visible_child_name() == removed_artist:
- row_next = (self._sidebar.get_row_at_index(position)
- or self._sidebar.get_row_at_index(position - 1))
- if row_next:
- self._sidebar.select_row(row_next)
- self._on_artist_activated(self._sidebar, row_next, True)
-
- removed_artist_page = self._artist_view.get_child_by_name(
- removed_artist)
- self._artist_view.remove(removed_artist_page)
+ self._untouched_list = False
+ self._sidebar.emit("activate", 0)
@Gtk.Template.Callback()
- def _on_artist_activated(self, sidebar, row, data=None, untouched=False):
+ def _on_artist_activated(
+ self, sidebar: Gtk.ListView, position: int) -> None:
"""Initializes new artist album widgets"""
- # On application start the first row of ArtistView is activated
- # to show an intial artist. When this happens while any of the
- # views are in selection mode, this artist will be incorrectly
- # selected.
- # When selecting items check that the current visible view is
- # ArtistsView, to circumvent this issue.
- if (self.props.selection_mode
- and self._window.props.active_view is self):
- return
-
- if untouched is False:
- self._untouched_list = False
-
- selected_row = self._sidebar.get_selected_row()
- self._selected_artist = selected_row.props.coreartist
-
- # Prepare a new artist_albums_widget here
- coreartist = row.props.coreartist
- if coreartist.props.artist in self._loaded_artists:
- scroll_vadjustment = self._artist_container.props.vadjustment
- scroll_vadjustment.props.value = 0.
- self._artist_view.set_visible_child_name(coreartist.props.artist)
- return
-
- artist_albums = ArtistAlbumsWidget(coreartist, self._application)
-
- self.bind_property(
- "selection-mode", artist_albums, "selection-mode",
- GObject.BindingFlags.SYNC_CREATE
- | GObject.BindingFlags.BIDIRECTIONAL)
-
- self._artist_view.add_named(artist_albums, coreartist.props.artist)
- scroll_vadjustment = self._artist_container.props.vadjustment
- scroll_vadjustment.props.value = 0.
- self._artist_view.set_visible_child(artist_albums)
-
- self._loaded_artists.append(coreartist.props.artist)
+ coreartist = self._selection_model.get_item(position)
+ self._artist_album.props.coreartist = coreartist
@GObject.Property(type=bool, default=False)
def selection_mode(self):
@@ -191,35 +139,22 @@ class ArtistsView(Gtk.Paned):
:param bool value: Activate selection mode
"""
if (value == self._selection_mode
- or self.get_parent().get_visible_child() != self):
+ or self._window.props.active_view is not self):
return
self._selection_mode = value
self._sidebar.props.sensitive = not self._selection_mode
- if self._selection_mode:
- self._sidebar.props.selection_mode = Gtk.SelectionMode.NONE
- else:
+ if not self._selection_mode:
self.deselect_all()
- self._sidebar.props.selection_mode = Gtk.SelectionMode.SINGLE
- selected_row = self._sidebar.get_row_at_index(0)
- if selected_row is None:
- self._selected_artist = None
- return
-
- for row in self._sidebar:
- if row.props.coreartist == self._selected_artist:
- selected_row = row
- break
-
- self._sidebar.select_row(selected_row)
- self._selected_artist = None
-
- def select_all(self):
- artist_albums = self._artist_view.get_visible_child().get_child()
- for row in artist_albums:
- row.get_child().select_all()
-
- def deselect_all(self):
- artist_albums = self._artist_view.get_visible_child().get_child()
- for row in artist_albums:
- row.get_child().deselect_all()
+
+ def select_all(self) -> None:
+ """Select all items"""
+ coreartist = self._selection_model.get_selected_item()
+ if coreartist:
+ coreartist.props.selected = True
+
+ def deselect_all(self) -> None:
+ """Deselect all items"""
+ coreartist = self._selection_model.get_selected_item()
+ if coreartist:
+ coreartist.props.selected = False
diff --git a/gnomemusic/views/emptyview.py b/gnomemusic/views/emptyview.py
index 737dbc67..e1dc068a 100644
--- a/gnomemusic/views/emptyview.py
+++ b/gnomemusic/views/emptyview.py
@@ -76,12 +76,12 @@ class EmptyView(Gtk.Stack):
folder_text = _("The contents of your {} will appear here.")
self._content_text = folder_text.format(href_text)
- # Hack to get to HdyClamp, so it can be hidden for the
+ # Hack to get to AdwClamp, so it can be hidden for the
# initial state.
- child_of_child = self._status_page.get_child().get_child()
- self._hdy_clamp = child_of_child.get_child().get_children()[0]
+ child_of_child = self._status_page.get_first_child().get_first_child()
+ self._adw_clamp = child_of_child.get_first_child().get_first_child()
- self._status_page.add(self._initial_state)
+ self._status_page.set_child(self._initial_state)
self._state = EmptyView.State.EMPTY
@@ -102,7 +102,7 @@ class EmptyView(Gtk.Stack):
"""
self._state = value
- self._hdy_clamp.props.visible = True
+ self._adw_clamp.props.visible = True
self._initial_state.props.visible = False
if self._state == EmptyView.State.EMPTY:
@@ -115,7 +115,7 @@ class EmptyView(Gtk.Stack):
self._set_tracker_outdated_state()
def _set_empty_state(self):
- self._hdy_clamp.props.visible = False
+ self._adw_clamp.props.visible = False
self._initial_state.props.visible = True
self._description_label.props.label = self._content_text
diff --git a/gnomemusic/views/playlistsview.py b/gnomemusic/views/playlistsview.py
index 4c1a2f78..58c107e7 100644
--- a/gnomemusic/views/playlistsview.py
+++ b/gnomemusic/views/playlistsview.py
@@ -63,7 +63,7 @@ class PlaylistsView(Gtk.Paned):
self._untouched_list = True
self._playlist_widget = PlaylistsWidget(application, self)
- self.add(self._playlist_widget)
+ self.props.end_child = self._playlist_widget
self._sidebar.set_header_func(self._sidebar_header_func)
self._sidebar.bind_model(self._model, self._add_playlist_to_sidebar)
diff --git a/gnomemusic/views/searchview.py b/gnomemusic/views/searchview.py
index bea60950..cd7cf3f9 100644
--- a/gnomemusic/views/searchview.py
+++ b/gnomemusic/views/searchview.py
@@ -28,9 +28,10 @@ from gettext import gettext as _
from typing import Optional
import typing
-from gi.repository import Gdk, GObject, Gtk
+from gi.repository import GObject, Gtk
from gnomemusic.search import Search
+from gnomemusic.utils import ArtSize
from gnomemusic.widgets.albumcover import AlbumCover
from gnomemusic.widgets.albumwidget import AlbumWidget
from gnomemusic.widgets.headerbar import HeaderBar
@@ -40,6 +41,7 @@ from gnomemusic.widgets.songwidget import SongWidget
from gnomemusic.widgets.songwidgetmenu import SongWidgetMenu
if typing.TYPE_CHECKING:
from gnomemusic.application import Application
+ from gnomemusic.corealbum import CoreAlbum
from gnomemusic.coresong import CoreSong
@@ -78,7 +80,6 @@ class SearchView(Gtk.Stack):
_search_results = Gtk.Template.Child()
_songs_header = Gtk.Template.Child()
_songs_listbox = Gtk.Template.Child()
- _songs_listbox_ctrlr = Gtk.Template.Child()
_view_all_albums = Gtk.Template.Child()
_view_all_artists = Gtk.Template.Child()
@@ -94,41 +95,32 @@ class SearchView(Gtk.Stack):
self._application = application
self._coremodel = application.props.coremodel
self._model = self._coremodel.props.songs_search
- self._album_model = self._coremodel.props.albums_search
- self._album_filter = self._coremodel.props.albums_search_filter
- self._album_filter.set_filter_func(
- self._core_filter, self._album_model, 12)
+ self._player = self._application.props.player
+ self._window = application.props.window
+ self._headerbar = self._window.props.headerbar
+ self._album_model = self._coremodel.props.albums_search
self._artist_model = self._coremodel.props.artists_search
- self._artist_filter = self._coremodel.props.artists_search_filter
- self._artist_filter.set_filter_func(
- self._core_filter, self._artist_model, 6)
+
+ self._album_slice = Gtk.SliceListModel.new(self._album_model, 0, 8)
+ self._artist_slice = Gtk.SliceListModel.new(self._artist_model, 0, 6)
self._model.connect_after(
"items-changed", self._on_model_items_changed)
self._songs_listbox.bind_model(self._model, self._create_song_widget)
self._on_model_items_changed(self._model, 0, 0, 0)
- self._album_filter.connect_after(
+ self._album_slice.connect_after(
"items-changed", self._on_album_model_items_changed)
self._album_flowbox.bind_model(
- self._album_filter, self._create_album_widget)
- self._album_flowbox.connect(
- "size-allocate", self._on_album_flowbox_size_allocate)
- self._on_album_model_items_changed(self._album_filter, 0, 0, 0)
+ self._album_slice, self._create_album_cover)
+ self._application.props.window.connect(
+ "notify::default-width", self._on_window_width_change)
- self._artist_filter.connect_after(
+ self._artist_slice.connect_after(
"items-changed", self._on_artist_model_items_changed)
self._artist_flowbox.bind_model(
- self._artist_filter, self._create_artist_widget)
- self._artist_flowbox.connect(
- "size-allocate", self._on_artist_flowbox_size_allocate)
- self._on_artist_model_items_changed(self._artist_filter, 0, 0, 0)
-
- self._player = self._application.props.player
-
- self._window = application.props.window
- self._headerbar = self._window._headerbar
+ self._artist_slice, self._create_artist_widget)
self.connect("notify::selection-mode", self._on_selection_mode_changed)
@@ -140,7 +132,8 @@ class SearchView(Gtk.Stack):
self._album_widget.bind_property(
"selection-mode", self, "selection-mode",
GObject.BindingFlags.BIDIRECTIONAL)
- self._scrolled_album_widget.add(self._album_widget)
+ viewport = self._scrolled_album_widget.get_first_child()
+ viewport.set_child(self._album_widget)
self._scrolled_artist_window: Optional[Gtk.ScrolledWindow] = None
@@ -169,23 +162,23 @@ class SearchView(Gtk.Stack):
return song_widget
- def _create_album_widget(self, corealbum):
- album_widget = AlbumCover(corealbum)
- album_widget.retrieve()
+ def _create_album_cover(self, corealbum: CoreAlbum) -> AlbumCover:
+ album_cover = AlbumCover(corealbum)
+ album_cover.retrieve()
self.bind_property(
- "selection-mode", album_widget, "selection-mode",
+ "selection-mode", album_cover, "selection-mode",
GObject.BindingFlags.SYNC_CREATE
| GObject.BindingFlags.BIDIRECTIONAL)
# NOTE: Adding SYNC_CREATE here will trigger all the nested
# models to be created. This will slow down initial start,
# but will improve initial 'select all' speed.
- album_widget.bind_property(
+ album_cover.bind_property(
"selected", corealbum, "selected",
GObject.BindingFlags.BIDIRECTIONAL)
- return album_widget
+ return album_cover
def _create_artist_widget(self, coreartist):
artist_tile = ArtistSearchTile(coreartist)
@@ -206,11 +199,6 @@ class SearchView(Gtk.Stack):
nr_albums = self._album_model.get_n_items()
self._view_all_albums.props.visible = (nr_albums > model.get_n_items())
- def set_child_visible(child):
- child.props.visible = True
-
- self._album_flowbox.foreach(set_child_visible)
-
def _on_artist_model_items_changed(self, model, position, removed, added):
items_found = model.get_n_items() > 0
self._artist_header.props.visible = items_found
@@ -221,11 +209,6 @@ class SearchView(Gtk.Stack):
self._view_all_artists.props.visible = (
nr_artists > model.get_n_items())
- def set_child_visible(child):
- child.props.visible = True
-
- self._artist_flowbox.foreach(set_child_visible)
-
def _on_model_items_changed(self, model, position, removed, added):
items_found = model.get_n_items() > 0
self._songs_header.props.visible = items_found
@@ -247,124 +230,26 @@ class SearchView(Gtk.Stack):
@Gtk.Template.Callback()
def _song_activated(
self, list_box: Gtk.ListBox, song_widget: SongWidget) -> bool:
- if song_widget.props.select_click:
- song_widget.props.select_click = False
- return True
-
- event = Gtk.get_current_event()
- (_, state) = event.get_state()
- mod_mask = Gtk.accelerator_get_default_mod_mask()
- if ((state & mod_mask) == Gdk.ModifierType.CONTROL_MASK
- and not self.props.selection_mode):
- self.props.selection_mode = True
- song_widget.props.select_click = True
- song_widget.props.coresong.props.selected = True
- return True
-
+ coresong = song_widget.props.coresong
if self.props.selection_mode:
- song_widget.props.select_click = True
- selection_state = song_widget.props.selected
+ selection_state = coresong.props.selected
song_widget.props.selected = not selection_state
- song_widget.props.coresong.props.selected = not selection_state
+ coresong.props.selected = not selection_state
return True
- (_, button) = event.get_button()
- if (button == Gdk.BUTTON_PRIMARY
- and not self.props.selection_mode):
- coresong = song_widget.props.coresong
- self._coremodel.props.active_core_object = coresong
- self._player.play(coresong)
+ self._coremodel.props.active_core_object = coresong
+ self._player.play(coresong)
return True
- @Gtk.Template.Callback()
- def _songs_listbox_right_click(
- self, gesture: Gtk.GestureMultiPress, n_press: int, x: int,
- y: int) -> None:
- song_widget = self._songs_listbox.get_row_at_y(y)
-
- _, y0 = song_widget.translate_coordinates(self._songs_listbox, 0, 0)
- row_height = song_widget.get_allocated_height()
- rect = Gdk.Rectangle()
- rect.x = x
- rect.y = y0 + 0.5 * row_height
-
- song_context_menu = SongWidgetMenu(
- self._application, song_widget, song_widget.props.coresong)
- song_context_menu.props.relative_to = self._songs_listbox
- song_context_menu.props.pointing_to = rect
- song_context_menu.popup()
-
- def _on_album_flowbox_size_allocate(self, widget, allocation, data=None):
- nb_children = self._album_filter.get_n_items()
- if nb_children == 0:
- return
-
- first_child = self._album_flowbox.get_child_at_index(0)
- child_height = first_child.get_allocation().height
- if allocation.height > 2.5 * child_height:
- for i in range(nb_children - 1, -1, -1):
- child = self._album_flowbox.get_child_at_index(i)
- if child.props.visible is True:
- child.props.visible = False
- return
-
- children_hidden = False
- for idx in range(nb_children):
- child = self._album_flowbox.get_child_at_index(idx)
- if not child.props.visible:
- children_hidden = True
- break
- if children_hidden is False:
- return
-
- last_visible_child = self._album_flowbox.get_child_at_index(idx - 1)
- first_row_last = self._album_flowbox.get_child_at_index((idx - 1) // 2)
- second_row_pos = last_visible_child.get_allocation().x
- first_row_pos = first_row_last.get_allocation().x
- child_width = last_visible_child.get_allocation().width
- nb_children_to_add = (first_row_pos - second_row_pos) // child_width
- nb_children_to_add = min(nb_children_to_add + idx, nb_children)
- for i in range(idx, nb_children_to_add):
- child = self._album_flowbox.get_child_at_index(i)
- child.props.visible = True
-
- def _on_artist_flowbox_size_allocate(self, widget, allocation, data=None):
- nb_children = self._artist_filter.get_n_items()
- if nb_children == 0:
- return
-
- first_child = self._artist_flowbox.get_child_at_index(0)
- # FIXME: It looks like it is possible that the widget is not
- # yet created, resulting in a crash with first_child being
- # None.
- # Look for a cleaner solution.
- if first_child is None:
- return
+ def _on_window_width_change(self, widget, value):
+ allocation = self._album_flowbox.get_allocation()
+ # FIXME: Just a bit of guesswork here.
+ padding = 32
+ items_per_row = allocation.width // (ArtSize.MEDIUM.width + padding)
- child_height = first_child.get_allocation().height
- if allocation.height > 1.5 * child_height:
- for i in range(nb_children - 1, -1, -1):
- child = self._artist_flowbox.get_child_at_index(i)
- if child.props.visible is True:
- child.props.visible = False
- return
-
- children_hidden = False
- for idx in range(nb_children):
- child = self._artist_flowbox.get_child_at_index(idx)
- if not child.props.visible:
- children_hidden = True
- break
- if children_hidden is False:
- return
-
- last_child = self._artist_flowbox.get_child_at_index(idx - 1)
- last_child_allocation = last_child.get_allocation()
- child_width = last_child_allocation.width
- if (last_child_allocation.x + 2 * child_width) < allocation.width:
- child = self._artist_flowbox.get_child_at_index(idx)
- child.props.visible = True
+ self._album_slice.props.size = 2 * items_per_row
+ self._artist_slice.props.size = items_per_row
@Gtk.Template.Callback()
def _on_album_activated(self, widget, child, user_data=None):
@@ -378,8 +263,8 @@ class SearchView(Gtk.Stack):
self.props.state = SearchView.State.ALBUM
self._headerbar.props.state = HeaderBar.State.SEARCH
- self._headerbar.props.title = corealbum.props.title
- self._headerbar.props.subtitle = corealbum.props.artist
+ self._headerbar.set_label_title(
+ corealbum.props.title, corealbum.props.artist)
self.set_visible_child(self._scrolled_album_widget)
self.props.search_mode_active = False
@@ -390,15 +275,15 @@ class SearchView(Gtk.Stack):
if self.props.selection_mode:
return
- artist_albums_widget = ArtistAlbumsWidget(
- coreartist, self._application)
+ artist_albums_widget = ArtistAlbumsWidget(self._application)
+ artist_albums_widget.props.coreartist = coreartist
# FIXME: Recreating a view here. Alternate solution is used
# in AlbumsView: one view created and an update function.
# Settle on one design.
self._scrolled_artist_window = Gtk.ScrolledWindow()
- self._scrolled_artist_window.add(artist_albums_widget)
+ self._scrolled_artist_window.props.child = artist_albums_widget
self._scrolled_artist_window.props.visible = True
- self.add(self._scrolled_artist_window)
+ self.add_child(self._scrolled_artist_window)
artist_albums_widget.show()
self.bind_property(
@@ -407,18 +292,16 @@ class SearchView(Gtk.Stack):
self.props.state = SearchView.State.ARTIST
self._headerbar.props.state = HeaderBar.State.SEARCH
- self._headerbar.props.title = coreartist.props.artist
- self._headerbar.props.subtitle = None
+ self._headerbar.set_label_title(coreartist.props.artist, "")
self.set_visible_child(self._scrolled_artist_window)
self.props.search_mode_active = False
@Gtk.Template.Callback()
- def _on_all_artists_clicked(self, widget, event, user_data=None):
+ def _on_all_artists_clicked(self, widget, user_data=None):
self.props.state = SearchView.State.ALL_ARTISTS
self._headerbar.props.state = HeaderBar.State.SEARCH
- self._headerbar.props.title = _("Artists Results")
- self._headerbar.props.subtitle = None
+ self._headerbar.set_label_title(_("Artists Results"), "")
self._artist_all_flowbox.props.visible = True
self._album_all_flowbox.props.visible = False
@@ -429,38 +312,36 @@ class SearchView(Gtk.Stack):
self.props.search_mode_active = False
@Gtk.Template.Callback()
- def _on_all_albums_clicked(self, widget, event, user_data=None):
+ def _on_all_albums_clicked(self, widget, user_data=None):
self.props.state = SearchView.State.ALL_ALBUMS
self._headerbar.props.state = HeaderBar.State.SEARCH
- self._headerbar.props.title = _("Albums Results")
- self._headerbar.props.subtitle = None
+ self._headerbar.set_label_title(_("Albums Results"), "")
self._artist_all_flowbox.props.visible = False
self._album_all_flowbox.props.visible = True
self._album_all_flowbox.bind_model(
- self._album_model, self._create_album_widget)
+ self._album_model, self._create_album_cover)
self.props.visible_child = self._all_search_results
self.props.search_mode_active = False
- def _select_all(self, value):
- def child_select(child):
- child.props.selected = value
-
+ def _select_all(self, value: bool) -> None:
if self.props.state == SearchView.State.MAIN:
with self._model.freeze_notify():
- def song_select(child):
- child.props.coresong.props.selected = value
-
- self._songs_listbox.foreach(song_select)
- self._album_flowbox.foreach(child_select)
- self._artist_flowbox.foreach(child_select)
+ for coresong in self._model:
+ coresong.props.selected = value
+ for corealbum in self._album_model:
+ corealbum.props.selected = value
+ for coreartist in self._artist_model:
+ coreartist.props.selected = value
elif self.props.state == SearchView.State.ALL_ALBUMS:
with self._model.freeze_notify():
- self._album_all_flowbox.foreach(child_select)
+ for corealbum in self._album_model:
+ corealbum.props.selected = value
elif self.props.state == SearchView.State.ALL_ARTISTS:
with self._model.freeze_notify():
- self._artist_all_flowbox.foreach(child_select)
+ for corealbum in self._album_model:
+ corealbum.props.selected = value
elif self.props.state == SearchView.State.ALBUM:
view = self._album_widget
if value is True:
@@ -485,8 +366,6 @@ class SearchView(Gtk.Stack):
return
elif self.get_visible_child() == self._scrolled_artist_window:
self.remove(self._scrolled_artist_window)
- self._scrolled_artist_window.destroy()
- self._scrolled_artist_window = None
self.set_visible_child(self._search_results)
self.props.search_mode_active = True
diff --git a/gnomemusic/views/songsview.py b/gnomemusic/views/songsview.py
index ee7752ee..3de6b3d9 100644
--- a/gnomemusic/views/songsview.py
+++ b/gnomemusic/views/songsview.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2016 The GNOME Music Developers
+# Copyright 2022 The GNOME Music Developers
#
# GNOME Music is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -22,16 +22,21 @@
# code, but you are not obligated to do so. If you do not wish to do so,
# delete this exception statement from your version.
+from __future__ import annotations
+import typing
+
from gettext import gettext as _
-from gi.repository import Gdk, GObject, Gtk, Pango
+from gi.repository import GObject, Gtk
+from typing import Dict, List
-from gnomemusic.coresong import CoreSong
-from gnomemusic.utils import SongStateIcon
-from gnomemusic.widgets.starhandlerwidget import StarHandlerWidget
+from gnomemusic.widgets.songwidgetmenu import SongWidgetMenu
+import gnomemusic.utils as utils
+if typing.TYPE_CHECKING:
+ from gnomemusic.application import Application
@Gtk.Template(resource_path="/org/gnome/Music/ui/SongsView.ui")
-class SongsView(Gtk.ScrolledWindow):
+class SongsView(Gtk.Box):
"""Main view of all songs sorted artistwise
Consists all songs along with songname, star, length, artist
@@ -46,14 +51,9 @@ class SongsView(Gtk.ScrolledWindow):
title = GObject.Property(
type=str, default=_("Songs"), flags=GObject.ParamFlags.READABLE)
- _duration_renderer = Gtk.Template.Child()
- _now_playing_column = Gtk.Template.Child()
- _now_playing_cell = Gtk.Template.Child()
- _songs_ctrlr = Gtk.Template.Child()
- _songs_view = Gtk.Template.Child()
- _star_column = Gtk.Template.Child()
+ _listview = Gtk.Template.Child()
- def __init__(self, application):
+ def __init__(self, application: Application) -> None:
"""Initialize
:param GtkApplication window: The application object
@@ -62,50 +62,173 @@ class SongsView(Gtk.ScrolledWindow):
self.props.name = "songs"
- self._window = application.props.window
+ self._application = application
self._coremodel = application.props.coremodel
+ self._coreselection = application.props.coreselection
+ self._player = application.props.player
+ self._window = application.props.window
- self._iter_to_clean = None
- self._set_list_renderers()
+ self._list_item_bindings: Dict[
+ Gtk.ListItem, List[GObject.Binding]] = {}
+ self._list_item_star_controllers: Dict[
+ Gtk.ListItem, List[GObject.Binding]] = {}
- self._playlist_model = self._coremodel.props.playlist_sort
- self._songs_view.props.model = self._coremodel.props.songs_gtkliststore
- self._model = self._songs_view.props.model
+ self._selection_model = Gtk.MultiSelection.new(
+ self._coremodel.props.songs)
- self._player = application.props.player
- self._player.connect('song-changed', self._update_model)
+ list_item_factory = Gtk.SignalListItemFactory()
+ list_item_factory.connect("setup", self._setup_list_item)
+ list_item_factory.connect("bind", self._bind_list_item)
+ list_item_factory.connect("unbind", self._unbind_list_item)
+
+ self._listview.props.factory = list_item_factory
+ self._listview.props.model = self._selection_model
+
+ self._listview.connect("activate", self._on_song_activated)
self._selection_mode = False
+ self.bind_property(
+ "selection-mode", self._listview, "single-click-activate",
+ GObject.BindingFlags.SYNC_CREATE
+ | GObject.BindingFlags.INVERT_BOOLEAN)
+ self.bind_property(
+ "selection-mode", self._listview, "enable-rubberband",
+ GObject.BindingFlags.SYNC_CREATE)
self._window.bind_property(
"selection-mode", self, "selection-mode",
GObject.BindingFlags.BIDIRECTIONAL)
- def _set_list_renderers(self):
- self._now_playing_column.set_cell_data_func(
- self._now_playing_cell, self._on_list_widget_icon_render, None)
+ def _on_song_activated(self, widget, position):
+ coresong = widget.props.model[position]
- self._star_handler = StarHandlerWidget(self, 6)
- self._star_handler.add_star_renderers(self._star_column)
-
- attrs = Pango.AttrList()
- attrs.insert(Pango.AttrFontFeatures.new("tnum=1"))
- self._duration_renderer.props.attributes = attrs
-
- def _on_list_widget_icon_render(self, col, cell, model, itr, data):
- current_song = self._player.props.current_song
- if current_song is None:
- return
+ self._coremodel.props.active_core_object = coresong
+ self._player.play(coresong)
- coresong = model[itr][7]
- if coresong.props.validation == CoreSong.Validation.FAILED:
- cell.props.icon_name = SongStateIcon.ERROR.value
- cell.props.visible = True
- elif coresong.props.grlid == current_song.props.grlid:
- cell.props.icon_name = SongStateIcon.PLAYING.value
- cell.props.visible = True
- else:
- cell.props.visible = False
+ def _setup_list_item(
+ self, factory: Gtk.SignalListItemFactory,
+ list_item: Gtk.ListItem) -> None:
+ builder = Gtk.Builder.new_from_resource(
+ "/org/gnome/Music/ui/SongListItem.ui")
+ song_box = builder.get_object("_song_box")
+ list_item.props.child = song_box
+
+ menu_button = builder.get_object("_menu_button")
+ song_menu = SongWidgetMenu(self._application, song_box, None)
+ menu_button.props.popover = song_menu
+
+ self.bind_property(
+ "selection-mode", list_item, "selectable",
+ GObject.BindingFlags.SYNC_CREATE)
+ self.bind_property(
+ "selection-mode", list_item, "activatable",
+ GObject.BindingFlags.SYNC_CREATE
+ | GObject.BindingFlags.INVERT_BOOLEAN)
+
+ def _bind_list_item(
+ self, factory: Gtk.SignalListItemFactory,
+ list_item: Gtk.ListItem) -> None:
+ list_row = list_item.props.child
+ coresong = list_item.props.item
+
+ check = list_row.get_first_child()
+ info_box = check.get_next_sibling()
+ duration_label = info_box.get_next_sibling()
+ star_box = duration_label.get_next_sibling()
+ star_image = star_box.get_first_child()
+ title_label = info_box.get_first_child()
+ album_label = title_label.get_next_sibling()
+ artist_label = album_label.get_next_sibling()
+ menu_button = star_box.get_next_sibling()
+
+ def _on_star_toggle(
+ controller: Gtk.GestureClick, n_press: int, x: float,
+ y: float) -> None:
+ controller.set_state(Gtk.EventSequenceState.CLAIMED)
+ coresong.props.favorite = not coresong.props.favorite
+ star_image.props.favorite = coresong.props.favorite
+
+ star_click = Gtk.GestureClick()
+ star_click.props.button = 1
+ star_click.connect("released", _on_star_toggle)
+ star_image.add_controller(star_click)
+
+ def _on_star_enter(
+ controller: Gtk.EventControllerMotion, x: float,
+ y: float) -> None:
+ star_image.props.hover = True
+
+ def _on_star_leave(controller: Gtk.EventControllerMotion) -> None:
+ star_image.props.hover = False
+
+ star_hover = Gtk.EventControllerMotion()
+ star_hover.connect("enter", _on_star_enter)
+ star_hover.connect("leave", _on_star_leave)
+ star_image.add_controller(star_hover)
+
+ song_menu = menu_button.props.popover
+ song_menu.props.coreobject = coresong
+
+ b1 = coresong.bind_property(
+ "title", title_label, "label", GObject.BindingFlags.SYNC_CREATE)
+ b2 = coresong.bind_property(
+ "album", album_label, "label", GObject.BindingFlags.SYNC_CREATE)
+ b3 = coresong.bind_property(
+ "artist", artist_label, "label", GObject.BindingFlags.SYNC_CREATE)
+
+ b4 = coresong.bind_property(
+ "favorite", star_image, "favorite")
+
+ duration_label.props.label = utils.seconds_to_string(
+ coresong.props.duration)
+
+ b5 = list_item.bind_property(
+ "selected", coresong, "selected", GObject.BindingFlags.SYNC_CREATE)
+ b6 = list_item.bind_property(
+ "selected", check, "active", GObject.BindingFlags.SYNC_CREATE)
+ b7 = self.bind_property(
+ "selection-mode", check, "visible",
+ GObject.BindingFlags.SYNC_CREATE)
+
+ def on_activated(widget, value):
+ if check.props.active:
+ self._selection_model.select_item(
+ list_item.get_position(), False)
+ else:
+ self._selection_model.unselect_item(
+ list_item.get_position())
+
+ # The listitem selected property is read-only.
+ # It cannot be bound from the check active property.
+ # It is necessary to update the selection model in order
+ # to update it.
+ check.connect("notify::active", on_activated)
+
+ self._list_item_bindings[list_item] = [b1, b2, b3, b4, b5, b6, b7]
+ self._list_item_star_controllers[list_item] = [star_click, star_hover]
+
+ def _unbind_list_item(
+ self, factory: Gtk.SignalListItemFactory,
+ list_item: Gtk.ListItem) -> None:
+ bindings = self._list_item_bindings.pop(list_item)
+ [binding.unbind() for binding in bindings]
+
+ list_row = list_item.props.child
+ check = list_row.get_first_child()
+ info_box = check.get_next_sibling()
+ duration_label = info_box.get_next_sibling()
+ star_box = duration_label.get_next_sibling()
+ star_image = star_box.get_first_child()
+
+ controllers = self._list_item_star_controllers.pop(list_item)
+ [star_image.remove_controller(ctrl) for ctrl in controllers]
+
+ signal_id, detail_id = GObject.signal_parse_name(
+ "notify::active", check, True)
+ handler_id = GObject.signal_handler_find(
+ check, GObject.SignalMatchType.ID, signal_id, detail_id, None, 0,
+ 0)
+ check.disconnect(handler_id)
@GObject.Property(type=bool, default=False)
def selection_mode(self):
@@ -130,101 +253,17 @@ class SongsView(Gtk.ScrolledWindow):
if self._selection_mode is False:
self.deselect_all()
- cols = self._songs_view.get_columns()
- cols[1].props.visible = self._selection_mode
-
- @Gtk.Template.Callback()
- def _on_item_activated(self, treeview, path, column):
- """Action performed when clicking on a song
-
- clicking on star column toggles favorite
- clicking on an other columns launches player
-
- :param Gtk.TreeView treeview: self._songs_view
- :param Gtk.TreePath path: activated row index
- :param Gtk.TreeViewColumn column: activated column
+ def _toggle_all_selection(self, selected):
+ """Selects or deselects all items.
"""
- if self._star_handler.star_renderer_click:
- self._star_handler.star_renderer_click = False
- return
-
- if self.props.selection_mode:
- return
-
- itr = self._model.get_iter(path)
- coresong = self._model[itr][7]
- self._coremodel.props.active_core_object = coresong
-
- self._player.play(coresong)
-
- @Gtk.Template.Callback()
- def _on_view_clicked(self, gesture, n_press, x, y):
- """Ctrl+click on self._songs_view triggers selection mode."""
- _, state = Gtk.get_current_event_state()
- modifiers = Gtk.accelerator_get_default_mod_mask()
- if (state & modifiers == Gdk.ModifierType.CONTROL_MASK
- and not self.props.selection_mode):
- self.props.selection_mode = True
-
- # FIXME: In selection mode, star clicks might still trigger
- # activation.
- if self.props.selection_mode:
- path = self._songs_view.get_path_at_pos(x, y)
- if path is None:
- return
-
- iter_ = self._model.get_iter(path[0])
- new_fav_status = not self._model[iter_][1]
- self._model[iter_][1] = new_fav_status
- self._model[iter_][7].props.selected = new_fav_status
-
- def _update_model(self, player):
- """Updates model when the song changes
-
- :param Player player: The main player object
- """
- # iter_to_clean is necessary because of a bug in GtkTreeView
- # See https://gitlab.gnome.org/GNOME/gtk/issues/503
- if self._iter_to_clean:
- self._model[self._iter_to_clean][9] = False
-
- index = self._player.props.position
- current_coresong = self._playlist_model[index]
- for idx, liststore in enumerate(self._model):
- if liststore[7] == current_coresong:
- break
-
- iter_ = self._model.get_iter_from_string(str(idx))
- path = self._model.get_path(iter_)
- self._model[iter_][9] = True
- self._songs_view.scroll_to_cell(path, None, True, 0.5, 0.5)
-
- if self._model[iter_][0] != SongStateIcon.ERROR.value:
- self._iter_to_clean = iter_.copy()
-
- return False
-
- @GObject.Property(
- type=Gtk.ListStore, default=None, flags=GObject.ParamFlags.READABLE)
- def model(self):
- """Get songs view model
-
- :returns: songs view model
- :rtype: Gtk.ListStore
- """
- return self._model
-
- def _select(self, value):
- with self._model.freeze_notify():
- itr = self._model.iter_children(None)
- while itr is not None:
- self._model[itr][7].props.selected = value
- self._model[itr][1] = value
-
- itr = self._model.iter_next(itr)
+ with self._coreselection.freeze_notify():
+ if selected:
+ self._selection_model.select_all()
+ else:
+ self._selection_model.unselect_all()
def select_all(self):
- self._select(True)
+ self._toggle_all_selection(True)
def deselect_all(self):
- self._select(False)
+ self._toggle_all_selection(False)
diff --git a/gnomemusic/widgets/aboutdialog.py b/gnomemusic/widgets/aboutdialog.py
index ac8b20e2..303ab036 100644
--- a/gnomemusic/widgets/aboutdialog.py
+++ b/gnomemusic/widgets/aboutdialog.py
@@ -33,8 +33,3 @@ class AboutDialog(Gtk.AboutDialog):
def __init__(self):
super().__init__()
-
- self.connect("response", self._about_response)
-
- def _about_response(self, klass, data=None):
- klass.destroy()
diff --git a/gnomemusic/widgets/albumcover.py b/gnomemusic/widgets/albumcover.py
index ec51de65..b7755246 100644
--- a/gnomemusic/widgets/albumcover.py
+++ b/gnomemusic/widgets/albumcover.py
@@ -26,9 +26,9 @@ import gi
gi.require_version('Grl', '0.3')
from gi.repository import GObject, Gtk
-from gnomemusic.defaulticon import DefaultIcon
from gnomemusic.corealbum import CoreAlbum
-from gnomemusic.utils import ArtSize
+from gnomemusic.coverpaintable import CoverPaintable
+from gnomemusic.utils import ArtSize, DefaultIconType
from gnomemusic.widgets.twolinetip import TwoLineTip
@@ -41,8 +41,8 @@ class AlbumCover(Gtk.FlowBoxChild):
__gtype_name__ = 'AlbumCover'
- _art_stack = Gtk.Template.Child()
_check = Gtk.Template.Child()
+ _cover_image = Gtk.Template.Child()
_title_label = Gtk.Template.Child()
_artist_label = Gtk.Template.Child()
@@ -82,10 +82,10 @@ class AlbumCover(Gtk.FlowBoxChild):
self.connect('query-tooltip', self._on_tooltip_query)
- self._art_stack.props.size = ArtSize.MEDIUM
- self._art_stack.props.art_type = DefaultIcon.Type.ALBUM
-
- self.show()
+ self._cover_image.set_size_request(
+ ArtSize.MEDIUM.width, ArtSize.MEDIUM.height)
+ self._cover_image.props.paintable = CoverPaintable(
+ self, ArtSize.MEDIUM, DefaultIconType.ALBUM)
def retrieve(self):
"""Start retrieving the actual album cover
@@ -97,7 +97,7 @@ class AlbumCover(Gtk.FlowBoxChild):
return
self._retrieved = True
- self._art_stack.props.coreobject = self._corealbum
+ self._cover_image.props.paintable.props.coreobject = self._corealbum
@GObject.Property(type=CoreAlbum, flags=GObject.ParamFlags.READABLE)
def corealbum(self):
diff --git a/gnomemusic/widgets/albumwidget.py b/gnomemusic/widgets/albumwidget.py
index 6cc1fca0..0a91ab9a 100644
--- a/gnomemusic/widgets/albumwidget.py
+++ b/gnomemusic/widgets/albumwidget.py
@@ -27,13 +27,12 @@ from gettext import ngettext
from typing import Optional, Union
import typing
-from gi.repository import Gfm, Gio, GLib, GObject, Gtk, Handy
+from gi.repository import Adw, Gio, GLib, GObject, Gtk
from gnomemusic.corealbum import CoreAlbum
-from gnomemusic.defaulticon import DefaultIcon
-from gnomemusic.utils import ArtSize
-from gnomemusic.widgets.disclistboxwidget import DiscBox
-from gnomemusic.widgets.disclistboxwidget import DiscListBox # noqa: F401
+from gnomemusic.coverpaintable import CoverPaintable
+from gnomemusic.utils import ArtSize, DefaultIconType
+from gnomemusic.widgets.discbox import DiscBox
from gnomemusic.widgets.playlistdialog import PlaylistDialog
if typing.TYPE_CHECKING:
from gnomemusic.application import Application
@@ -44,7 +43,7 @@ if typing.TYPE_CHECKING:
@Gtk.Template(resource_path='/org/gnome/Music/ui/AlbumWidget.ui')
-class AlbumWidget(Handy.Clamp):
+class AlbumWidget(Adw.Bin):
"""Album widget.
The album widget consists of an image with the album art
@@ -55,7 +54,7 @@ class AlbumWidget(Handy.Clamp):
_artist_label = Gtk.Template.Child()
_composer_label = Gtk.Template.Child()
- _art_stack = Gtk.Template.Child()
+ _cover_image = Gtk.Template.Child()
_disc_list_box = Gtk.Template.Child()
_menu_button = Gtk.Template.Child()
_play_button = Gtk.Template.Child()
@@ -72,6 +71,7 @@ class AlbumWidget(Handy.Clamp):
"""
super().__init__()
+ self._album_model = None
self._application = application
self._corealbum: CoreAlbum
self._active_coreobject: Union[CoreAlbum, CoreArtist]
@@ -80,8 +80,12 @@ class AlbumWidget(Handy.Clamp):
self._year_signal_id = 0
self._model_signal_id = 0
- self._art_stack.props.size = ArtSize.LARGE
- self._art_stack.props.art_type = DefaultIcon.Type.ALBUM
+ self._playlist_dialog: Optional[PlaylistDialog] = None
+
+ self._cover_image.set_size_request(
+ ArtSize.LARGE.width, ArtSize.LARGE.height)
+ self._cover_image.props.paintable = CoverPaintable(
+ self, ArtSize.LARGE, DefaultIconType.ALBUM)
self._player = self._application.props.player
self.bind_property(
@@ -136,7 +140,7 @@ class AlbumWidget(Handy.Clamp):
self._corealbum = corealbum
- self._art_stack.props.coreobject = self._corealbum
+ self._cover_image.props.paintable.props.coreobject = self._corealbum
album_name = self._corealbum.props.title
artist = self._corealbum.props.artist
@@ -152,6 +156,9 @@ class AlbumWidget(Handy.Clamp):
self._year_signal_id = self._corealbum.connect(
"notify::year", self._on_release_info_changed)
self._set_composer_label()
+ # In case the duration is no longer changing, make sure it is
+ # displayed.
+ self._corealbum.notify("duration")
self._album_model = self._corealbum.props.model
self._model_signal_id = self._album_model.connect_after(
@@ -171,8 +178,8 @@ class AlbumWidget(Handy.Clamp):
already the corealbum. In the later case, the active_coreobject is
an artist. It needs to be set.
- :returns: The current CoreAlbum
- :rtype: CoreAlbum or None
+ :returns: The current CoreObject
+ :rtype: Union[CoreAlbum, CoreArtist]
"""
try:
return self._active_coreobject
@@ -192,7 +199,9 @@ class AlbumWidget(Handy.Clamp):
disc_box = DiscBox(self._application, self._corealbum, disc)
disc_box.connect('song-activated', self._song_activated)
- self._disc_list_box.bind_property(
+ self._corealbum.bind_property(
+ "selected", disc, "selected", GObject.BindingFlags.SYNC_CREATE)
+ self.bind_property(
"selection-mode", disc_box, "selection-mode",
GObject.BindingFlags.BIDIRECTIONAL
| GObject.BindingFlags.SYNC_CREATE)
@@ -200,7 +209,7 @@ class AlbumWidget(Handy.Clamp):
return disc_box
def _on_model_items_changed(
- self, model: Gfm.SortListModel, position: int, removed: int,
+ self, model: Gtk.SortListModel, position: int, removed: int,
added: int) -> None:
n_items: int = model.get_n_items()
if n_items == 1:
@@ -225,7 +234,6 @@ class AlbumWidget(Handy.Clamp):
show = True
self._composer_label.props.visible = show
- self._composer_label.props.visible = show
def _on_release_info_changed(
self, klass: CoreAlbum,
@@ -237,7 +245,7 @@ class AlbumWidget(Handy.Clamp):
mins_text = ngettext("{} minute", "{} minutes", mins).format(mins)
year = self._corealbum.props.year
- if year == "----":
+ if year is None:
label = mins_text
else:
label = f"{year}, {mins_text}"
@@ -264,10 +272,14 @@ class AlbumWidget(Handy.Clamp):
self._play(song_widget.props.coresong)
def select_all(self) -> None:
- self._disc_list_box.select_all()
+ if self._album_model:
+ for coredisc in self._album_model:
+ coredisc.props.selected = True
def deselect_all(self) -> None:
- self._disc_list_box.deselect_all()
+ if self._album_model:
+ for coredisc in self._album_model:
+ coredisc.props.selected = False
def _on_selection_mode_changed(
self, widget: Gtk.Widget, value: GObject.ParamSpecBoolean) -> None:
@@ -286,21 +298,30 @@ class AlbumWidget(Handy.Clamp):
def _on_add_playlist_action(
self, action: Gio.SimpleAction,
data: Optional[GLib.Variant]) -> None:
+
+ def on_response(dialog: PlaylistDialog, response_id: int) -> None:
+ if not self._playlist_dialog:
+ return
+
+ if response_id == Gtk.ResponseType.ACCEPT:
+ playlist = self._playlist_dialog.props.selected_playlist
+ coresongs = [
+ song
+ for disc in self._corealbum.props.model
+ for song in disc.props.model]
+ playlist.add_songs(coresongs)
+
+ self._playlist_dialog.destroy()
+ self._playlist_dialog = None
+
if not self._corealbum:
return
- playlist_dialog = PlaylistDialog(self._application)
+ self._playlist_dialog = PlaylistDialog(self._application)
active_window = self._application.props.active_window
- playlist_dialog.props.transient_for = active_window
- if playlist_dialog.run() == Gtk.ResponseType.ACCEPT:
- playlist = playlist_dialog.props.selected_playlist
- coresongs = [
- song
- for disc in self._corealbum.props.model
- for song in disc.props.model]
- playlist.add_songs(coresongs)
-
- playlist_dialog.destroy()
+ self._playlist_dialog.props.transient_for = active_window
+ self._playlist_dialog.connect("response", on_response)
+ self._playlist_dialog.present()
def _on_play_action(
self, action: Gio.SimpleAction,
@@ -309,4 +330,12 @@ class AlbumWidget(Handy.Clamp):
@Gtk.Template.Callback()
def _on_play_button_clicked(self, button: Gtk.Button) -> None:
- self._play()
+ # When the coreobject is an artist, the first song of the album
+ # needs to be loaded. Otherwise, the first album of the artist
+ # is played.
+ coresong: Optional[CoreSong] = None
+ if self.props.active_coreobject != self.props.corealbum:
+ coredisc = self.props.corealbum.props.model[0]
+ coresong = coredisc.props.model[0]
+
+ self._play(coresong)
diff --git a/gnomemusic/widgets/appmenu.py b/gnomemusic/widgets/appmenu.py
index b1464162..c0baecb7 100644
--- a/gnomemusic/widgets/appmenu.py
+++ b/gnomemusic/widgets/appmenu.py
@@ -28,7 +28,7 @@ from gnomemusic.scrobbler import GoaLastFM
@Gtk.Template(resource_path="/org/gnome/Music/ui/AppMenu.ui")
-class AppMenu(Gtk.PopoverMenu):
+class AppMenu(Gtk.Popover):
"""AppMenu shown from the HeaderBar within the main view"""
__gtype_name__ = "AppMenu"
diff --git a/gnomemusic/widgets/artistalbumswidget.py b/gnomemusic/widgets/artistalbumswidget.py
index 4f213157..74255d62 100644
--- a/gnomemusic/widgets/artistalbumswidget.py
+++ b/gnomemusic/widgets/artistalbumswidget.py
@@ -23,18 +23,19 @@
# delete this exception statement from your version.
from __future__ import annotations
+from typing import Optional
import typing
-from gi.repository import GObject, Gtk, Handy
+from gi.repository import GObject, Gtk
+from gnomemusic.coreartist import CoreArtist
from gnomemusic.widgets.albumwidget import AlbumWidget
if typing.TYPE_CHECKING:
from gnomemusic.application import Application
- from gnomemusic.coreartist import CoreArtist
@Gtk.Template(resource_path="/org/gnome/Music/ui/ArtistAlbumsWidget.ui")
-class ArtistAlbumsWidget(Handy.Clamp):
+class ArtistAlbumsWidget(Gtk.Box):
"""Widget containing all albums by an artist
A vertical list of AlbumWidget, containing all the albums
@@ -48,57 +49,71 @@ class ArtistAlbumsWidget(Handy.Clamp):
selection_mode = GObject.Property(type=bool, default=False)
- def __init__(
- self, coreartist: CoreArtist, application: Application) -> None:
+ def __init__(self, application: Application) -> None:
"""Initialize the ArtistAlbumsWidget
- :param CoreArtist coreartist: The CoreArtist object
:param Aplication application: The Application object
"""
super().__init__()
self._application = application
- self._artist = coreartist
- self._model = coreartist.props.model
- self._player = self._application.props.player
+ self._coreartist: Optional[CoreArtist] = None
- self._listbox.bind_model(self._model, self._add_album)
+ def _update_model(self) -> None:
+ if self._coreartist is not None:
+ self._listbox.bind_model(
+ self._coreartist.props.model, self._add_album)
def _add_album(self, corealbum):
row = Gtk.ListBoxRow()
row.props.selectable = False
row.props.activatable = False
- row.props.can_focus = False
+ row.props.focusable = False
widget = AlbumWidget(self._application)
widget.props.corealbum = corealbum
- widget.props.active_coreobject = self._artist
+ widget.props.active_coreobject = self._coreartist
widget.props.show_artist_label = False
+ self._coreartist.bind_property(
+ "selected", corealbum, "selected",
+ GObject.BindingFlags.SYNC_CREATE)
self.bind_property(
'selection-mode', widget, 'selection-mode',
GObject.BindingFlags.BIDIRECTIONAL
| GObject.BindingFlags.SYNC_CREATE)
- row.add(widget)
+ row.set_child(widget)
return row
def select_all(self) -> None:
"""Select all items"""
- def toggle_selection(row: Gtk.ListBoxRow) -> None:
- row.get_child().select_all()
-
- self._listbox.foreach(toggle_selection)
+ if self._coreartist is not None:
+ self._coreartist.props.selected = True
def deselect_all(self) -> None:
"""Deselect all items"""
- def toggle_selection(row: Gtk.ListBoxRow) -> None:
- row.get_child().deselect_all()
+ if self._coreartist is not None:
+ self._coreartist.props.selected = False
+
+ @GObject.Property(
+ type=CoreArtist, flags=GObject.ParamFlags.READWRITE, default=None)
+ def coreartist(self) -> CoreArtist:
+ """Current CoreArtist object
+
+ :param CoreArtist coreartist: The CoreArtist object
+ :rtype: CoreArtist
+ """
+ return self._coreartist
- self._listbox.foreach(toggle_selection)
+ @coreartist.setter # type: ignore
+ def coreartist(self, coreartist: CoreArtist) -> None:
+ """Sets the CoreArtist for the widget
+
+ :param CoreArtist coreartist: The CoreArtist to use
+ """
+ if self._coreartist is not coreartist:
+ self._coreartist = coreartist
- @GObject.Property(type=str, flags=GObject.ParamFlags.READABLE)
- def artist(self) -> str:
- """Artist name"""
- return self._artist.props.artist
+ self._update_model()
diff --git a/gnomemusic/widgets/artistsearchtile.py b/gnomemusic/widgets/artistsearchtile.py
index 2eaad972..c7f3f31d 100644
--- a/gnomemusic/widgets/artistsearchtile.py
+++ b/gnomemusic/widgets/artistsearchtile.py
@@ -25,9 +25,8 @@
from gi.repository import Gdk, GObject, Gtk
from gnomemusic.coreartist import CoreArtist
-from gnomemusic.defaulticon import DefaultIcon
-from gnomemusic.utils import ArtSize
-from gnomemusic.widgets.artstack import ArtStack # noqa: F401
+from gnomemusic.coverpaintable import CoverPaintable
+from gnomemusic.utils import ArtSize, DefaultIconType
from gnomemusic.widgets.twolinetip import TwoLineTip
@@ -41,9 +40,8 @@ class ArtistSearchTile(Gtk.FlowBoxChild):
__gtype_name__ = "ArtistSearchTile"
_artist_label = Gtk.Template.Child()
- _art_stack = Gtk.Template.Child()
+ _cover_image = Gtk.Template.Child()
_check = Gtk.Template.Child()
- _events = Gtk.Template.Child()
coreartist = GObject.Property(
type=CoreArtist, default=None, flags=GObject.ParamFlags.READWRITE)
@@ -61,9 +59,12 @@ class ArtistSearchTile(Gtk.FlowBoxChild):
self.props.coreartist = coreartist
- self._art_stack.props.size = ArtSize.MEDIUM
- self._art_stack.props.art_type = DefaultIcon.Type.ARTIST
- self._art_stack.props.coreobject = self.props.coreartist
+ self._cover_image.set_size_request(
+ ArtSize.MEDIUM.width, ArtSize.MEDIUM.height)
+ self._cover_image.props.paintable = CoverPaintable(
+ self, ArtSize.MEDIUM, DefaultIconType.ARTIST)
+
+ self._cover_image.props.paintable.props.coreobject = coreartist
self._tooltip = TwoLineTip()
self._tooltip.props.subtitle_visible = False
@@ -84,14 +85,11 @@ class ArtistSearchTile(Gtk.FlowBoxChild):
"selection-mode", self._check, "visible",
GObject.BindingFlags.BIDIRECTIONAL)
- self._events.add_events(Gdk.EventMask.TOUCH_MASK)
-
- self.show()
-
@Gtk.Template.Callback()
- def _on_artist_event(self, evbox, event, data=None):
+ def _on_artist_event(self, gesture_click, n_press, x, y):
+ state = gesture_click.get_current_event_state()
modifiers = Gtk.accelerator_get_default_mod_mask()
- if ((event.get_state() & modifiers) == Gdk.ModifierType.CONTROL_MASK
+ if (state & modifiers == Gdk.ModifierType.CONTROL_MASK
and not self.props.selection_mode):
self.props.selection_mode = True
diff --git a/gnomemusic/widgets/artisttile.py b/gnomemusic/widgets/artisttile.py
index da2c5d55..543bdc59 100644
--- a/gnomemusic/widgets/artisttile.py
+++ b/gnomemusic/widgets/artisttile.py
@@ -22,15 +22,18 @@
# code, but you are not obligated to do so. If you do not wish to do so,
# delete this exception statement from your version.
+from __future__ import annotations
+from typing import Optional
+
from gi.repository import GObject, Gtk
from gnomemusic.coreartist import CoreArtist
-from gnomemusic.defaulticon import DefaultIcon
-from gnomemusic.utils import ArtSize
+from gnomemusic.coverpaintable import CoverPaintable
+from gnomemusic.utils import ArtSize, DefaultIconType
@Gtk.Template(resource_path='/org/gnome/Music/ui/ArtistTile.ui')
-class ArtistTile(Gtk.ListBoxRow):
+class ArtistTile(Gtk.Box):
"""Row for sidebars
Contains a label and an optional checkbox.
@@ -38,26 +41,42 @@ class ArtistTile(Gtk.ListBoxRow):
__gtype_name__ = 'ArtistTile'
- _art_stack = Gtk.Template.Child()
+ _cover_image = Gtk.Template.Child()
_label = Gtk.Template.Child()
- coreartist = GObject.Property(type=CoreArtist, default=None)
text = GObject.Property(type=str, default='')
- def __init__(self, coreartist=None):
+ def __init__(self) -> None:
+ """Initialise ArtistTile"""
super().__init__()
- self.props.coreartist = coreartist
+ self._coreartist: Optional[CoreArtist] = None
- self._art_stack.props.size = ArtSize.XSMALL
- self._art_stack.props.art_type = DefaultIcon.Type.ARTIST
+ self._cover_image.set_size_request(
+ ArtSize.XSMALL.width, ArtSize.XSMALL.height)
+ self._cover_image.props.paintable = CoverPaintable(
+ self, ArtSize.XSMALL, DefaultIconType.ARTIST)
self.bind_property('text', self._label, 'label')
self.bind_property('text', self._label, 'tooltip-text')
- self.show()
+ @GObject.Property(
+ type=CoreArtist, flags=GObject.ParamFlags.READWRITE, default=None)
+ def coreartist(self) -> CoreArtist:
+ """CoreArtist to use for ArtistTile
- def retrieve(self):
- """Start retrieving artist art
+ :returns: The artist object
+ :rtype: CoreArtist
"""
- self._art_stack.props.coreobject = self.props.coreartist
+ return self._coreartist
+
+ @coreartist.setter # type: ignore
+ def coreartist(self, coreartist: CoreArtist) -> None:
+ """CoreArtist setter
+
+ :param CoreArtist coreartist: The coreartist to use
+ """
+ self._coreartist = coreartist
+
+ self._cover_image.props.paintable.props.coreobject = coreartist
+ self.props.text = coreartist.props.artist
diff --git a/gnomemusic/widgets/artstack.py b/gnomemusic/widgets/artstack.py
deleted file mode 100644
index 0c0b9d37..00000000
--- a/gnomemusic/widgets/artstack.py
+++ /dev/null
@@ -1,157 +0,0 @@
-# Copyright 2020 The GNOME Music developers
-#
-# GNOME Music is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# GNOME Music is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with GNOME Music; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# The GNOME Music authors hereby grant permission for non-GPL compatible
-# GStreamer plugins to be used and distributed together with GStreamer
-# and GNOME Music. This permission is above and beyond the permissions
-# granted by the GPL license by which GNOME Music is covered. If you
-# modify this code, you may extend this exception to your version of the
-# code, but you are not obligated to do so. If you do not wish to do so,
-# delete this exception statement from your version.
-
-from gi.repository import GObject, Gtk
-
-from gnomemusic.asyncqueue import AsyncQueue
-from gnomemusic.artcache import ArtCache
-from gnomemusic.defaulticon import DefaultIcon
-from gnomemusic.utils import ArtSize
-
-
-class ArtStack(Gtk.Stack):
- """Provides a smooth transition between image states
-
- Uses a Gtk.Stack to provide an in-situ transition between an image
- state. Between the 'loading' and 'default' art state and in between
- songs.
- """
-
- __gtype_name__ = "ArtStack"
-
- _async_queue = AsyncQueue("ArtStack")
-
- def __init__(self, size: ArtSize = ArtSize.MEDIUM) -> None:
- """Initialize the ArtStack
-
- :param ArtSize size: The size of the art used for the cover
- """
- super().__init__()
-
- self._art_type = DefaultIcon.Type.ALBUM
- self._cache = ArtCache()
- self._coreobject = None
- self._handler_id = 0
- self._size = size
- self._thumbnail_id = 0
-
- self._cover_a = Gtk.Image()
- self._cover_a.props.visible = True
- self._cover_b = Gtk.Image()
- self._cover_b.props.visible = True
-
- self.add_named(self._cover_a, "A")
- self.add_named(self._cover_b, "B")
-
- self.props.size = size
- self.props.transition_type = Gtk.StackTransitionType.CROSSFADE
- self.props.visible_child_name = "A"
-
- self.connect("destroy", self._on_destroy)
-
- @GObject.Property(type=object, flags=GObject.ParamFlags.READWRITE)
- def size(self):
- """Size of the cover
-
- :returns: The size used
- :rtype: ArtSize
- """
- return self._size
-
- @size.setter # type: ignore
- def size(self, value):
- """Set the cover size
-
- :param ArtSize value: The size to use for the cover
- """
- self.set_size_request(value.width, value.height)
- self._size = value
-
- @GObject.Property(type=object, flags=GObject.ParamFlags.READWRITE)
- def art_type(self) -> DefaultIcon.Type:
- """Type of the stack cover
-
- :returns: The type of the default icon
- :rtype: DefaultIcon.Type
- """
- return self._type
-
- @art_type.setter # type: ignore
- def art_type(self, value: DefaultIcon.Type) -> None:
- """Set the stack cover type
-
- :param DefaultIcon.Type value: The default icon type for the
- stack
- """
- self._type = value
-
- default_icon = DefaultIcon().get(
- self._type, self._size, self.props.scale_factor)
-
- self._on_cache_result(None, default_icon)
-
- @GObject.Property(type=object, default=None)
- def coreobject(self):
- return self._coreobject
-
- @coreobject.setter # type: ignore
- def coreobject(self, coreobject):
- if self._thumbnail_id != 0:
- self._coreobject.disconnect(self._thumbnail_id)
- self._thumbnail_id = 0
-
- self._coreobject = coreobject
- self._thumbnail_id = self._coreobject.connect(
- "notify::thumbnail", self._on_thumbnail_changed)
-
- if self._coreobject.props.thumbnail is not None:
- self._on_thumbnail_changed(self._coreobject, None)
-
- def _on_thumbnail_changed(self, coreobject, uri):
- self._disconnect_cache()
-
- self._handler_id = self._cache.connect(
- "finished", self._on_cache_result)
-
- self._async_queue.queue(
- self._cache, coreobject, self._size, self.props.scale_factor)
-
- def _on_cache_result(self, cache, surface):
- if self.props.visible_child_name == "B":
- self._cover_a.props.surface = surface
- self.props.visible_child_name = "A"
- else:
- self._cover_b.props.surface = surface
- self.props.visible_child_name = "B"
-
- def _on_destroy(self, widget):
- # If the stack is destroyed while the art is updated, an error
- # can occur once the art is retrieved because the ArtStack does
- # not have children anymore.
- self._disconnect_cache()
-
- def _disconnect_cache(self):
- if self._handler_id != 0:
- self._cache.disconnect(self._handler_id)
- self._handler_id = 0
diff --git a/gnomemusic/widgets/disclistboxwidget.py b/gnomemusic/widgets/discbox.py
index 251c2c1c..85bcd379 100644
--- a/gnomemusic/widgets/disclistboxwidget.py
+++ b/gnomemusic/widgets/discbox.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2016 The GNOME Music Developers
+# Copyright (c) 2021 The GNOME Music Developers
#
# GNOME Music is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -41,13 +41,12 @@ class DiscBox(Gtk.ListBoxRow):
"""A widget which compromises one disc
DiscBox contains a disc label for the disc number on top
- with a DiscSongsFlowBox beneath.
+ with a GtkListBox beneath.
"""
__gtype_name__ = 'DiscBox'
_disc_label = Gtk.Template.Child()
_list_box = Gtk.Template.Child()
- _list_box_ctrlr = Gtk.Template.Child()
__gsignals__ = {
'song-activated': (GObject.SignalFlags.RUN_FIRST, None, (Gtk.Widget,))
@@ -69,6 +68,7 @@ class DiscBox(Gtk.ListBoxRow):
self._application = application
self._corealbum = corealbum
+ self._coredisc = coredisc
self._model: Gio.ListModel = coredisc.props.model
disc_nr: int = coredisc.props.disc_nr
@@ -82,23 +82,21 @@ class DiscBox(Gtk.ListBoxRow):
def select_all(self):
"""Select all songs"""
- def child_select_all(child):
- child.props.coresong.props.selected = True
-
- self._list_box.foreach(child_select_all)
+ for coresong in self._model:
+ coresong.props.selected = True
def deselect_all(self):
"""Deselect all songs"""
- def child_deselect_all(child):
- child.props.coresong.props.selected = False
-
- self._list_box.foreach(child_deselect_all)
+ for coresong in self._model:
+ coresong.props.selected = False
def _create_widget(self, coresong):
song_widget = SongWidget(coresong)
song_widget.props.menu = SongWidgetMenu(
self._application, song_widget, self._corealbum)
+ self._coredisc.bind_property(
+ "selected", coresong, "selected", GObject.BindingFlags.SYNC_CREATE)
self.bind_property(
"selection-mode", song_widget, "selection-mode",
GObject.BindingFlags.BIDIRECTIONAL
@@ -109,75 +107,10 @@ class DiscBox(Gtk.ListBoxRow):
@Gtk.Template.Callback()
def _song_activated(
self, list_box: Gtk.ListBox, song_widget: SongWidget) -> bool:
- if song_widget.props.select_click:
- song_widget.props.select_click = False
- return True
-
- event = Gtk.get_current_event()
- (_, state) = event.get_state()
- mod_mask = Gtk.accelerator_get_default_mod_mask()
- if ((state & mod_mask) == Gdk.ModifierType.CONTROL_MASK
- and not self.props.selection_mode):
- self.props.selection_mode = True
- song_widget.props.select_click = True
- song_widget.props.coresong.props.selected = True
- return True
-
- (_, button) = event.get_button()
- if (button == Gdk.BUTTON_PRIMARY
- and not self.props.selection_mode):
- self.emit("song-activated", song_widget)
-
if self.props.selection_mode:
- song_widget.props.select_click = True
selection_state = song_widget.props.coresong.props.selected
song_widget.props.coresong.props.selected = not selection_state
+ else:
+ self.emit("song-activated", song_widget)
- return True
-
- @Gtk.Template.Callback()
- def _list_box_right_click(
- self, gesture: Gtk.GestureMultiPress, n_press: int, x: int,
- y: int) -> None:
- song_widget = self._list_box.get_row_at_y(y)
-
- _, y0 = song_widget.translate_coordinates(self._list_box, 0, 0)
- row_height = song_widget.get_allocated_height()
- rect = Gdk.Rectangle()
- rect.x = x
- rect.y = y0 + 0.5 * row_height
-
- song_context_menu = SongWidgetMenu(
- self._application, song_widget, self._corealbum)
- song_context_menu.props.relative_to = self._list_box
- song_context_menu.props.pointing_to = rect
- song_context_menu.popup()
-
-
-class DiscListBox(Gtk.ListBox):
- """A ListBox widget containing all discs of a particular
- album
- """
- __gtype_name__ = 'DiscListBox'
-
- selection_mode = GObject.Property(type=bool, default=False)
-
- def __init__(self):
- """Initialize"""
- super().__init__()
-
- self.props.valign = Gtk.Align.START
-
- def select_all(self):
- """Select all songs"""
- def child_select_all(child):
- child.select_all()
-
- self.foreach(child_select_all)
-
- def deselect_all(self):
- """Deselect all songs"""
- def child_deselect_all(child):
- child.deselect_all()
-
- self.foreach(child_deselect_all)
+ return Gdk.EVENT_STOP
diff --git a/gnomemusic/widgets/headerbar.py b/gnomemusic/widgets/headerbar.py
index 8190638d..5efb2186 100644
--- a/gnomemusic/widgets/headerbar.py
+++ b/gnomemusic/widgets/headerbar.py
@@ -25,7 +25,7 @@
from enum import IntEnum
from gettext import gettext as _, ngettext
-from gi.repository import GObject, Gtk, Handy
+from gi.repository import Adw, GObject, Gtk
from gnomemusic.widgets.appmenu import AppMenu
@@ -39,8 +39,6 @@ class SelectionBarMenuButton(Gtk.MenuButton):
__gtype_name__ = "SelectionBarMenuButton"
- _menu_label = Gtk.Template.Child()
-
def __init__(self):
super().__init__()
@@ -66,13 +64,13 @@ class SelectionBarMenuButton(Gtk.MenuButton):
if value > 0:
text = ngettext(
"Selected {} song", "Selected {} songs", value).format(value)
- self._menu_label.props.label = text
+ self.props.label = text
else:
- self._menu_label.props.label = _("Click on items to select them")
+ self.props.label = _("Click on items to select them")
@Gtk.Template(resource_path="/org/gnome/Music/ui/HeaderBar.ui")
-class HeaderBar(Handy.HeaderBar):
+class HeaderBar(Adw.Bin):
"""Headerbar of the application"""
class State(IntEnum):
@@ -92,12 +90,16 @@ class HeaderBar(Handy.HeaderBar):
_select_button = Gtk.Template.Child()
_cancel_button = Gtk.Template.Child()
_back_button = Gtk.Template.Child()
+ _headerbar = Gtk.Template.Child()
+ _label_title_box = Gtk.Template.Child()
+ _label_title = Gtk.Template.Child()
+ _label_subtitle = Gtk.Template.Child()
_menu_button = Gtk.Template.Child()
search_mode_active = GObject.Property(type=bool, default=False)
selected_songs_count = GObject.Property(type=int, default=0, minimum=0)
selection_mode_allowed = GObject.Property(type=bool, default=True)
- stack = GObject.Property(type=Gtk.Stack)
+ stack = GObject.Property(type=Adw.ViewStack)
def __init__(self, application):
"""Initialize Headerbar
@@ -108,16 +110,16 @@ class HeaderBar(Handy.HeaderBar):
self._selection_mode = False
- self._stack_switcher = Handy.ViewSwitcher(
- can_focus=False, halign="center")
- self._stack_switcher.show()
+ self._stack_switcher = Adw.ViewSwitcher(
+ focusable=False, halign="center",
+ policy=Adw.ViewSwitcherPolicy.WIDE)
self._selection_menu = SelectionBarMenuButton()
- self._menu_button.set_popover(AppMenu(application))
+ self._menu_button.props.popover = AppMenu(application)
self.bind_property(
- "selection-mode", self, "show-close-button",
+ "selection-mode", self._headerbar, "show-end-title-buttons",
GObject.BindingFlags.INVERT_BOOLEAN
| GObject.BindingFlags.SYNC_CREATE)
self.bind_property(
@@ -205,6 +207,24 @@ class HeaderBar(Handy.HeaderBar):
self._select_button.props.sensitive = True
self._stack_switcher.show()
+ def set_label_title(self, title: str, subtitle: str) -> None:
+ """Set the headerbar title-widget as two labels:
+ a title and a subtitle
+
+ :param str title: headerbar title
+ :param str subtitle: headerbar subtitle
+ :returns:
+ """
+ self._headerbar.props.title_widget = self._label_title_box
+ self._label_title.props.label = title
+ self._label_subtitle.props.label = subtitle
+ if not subtitle:
+ self._label_title.props.valign = Gtk.Align.CENTER
+ self._label_subtitle.props.visible = False
+ else:
+ self._label_title.props.valign = Gtk.Align.FILL
+ self._label_subtitle.props.visible = True
+
@Gtk.Template.Callback()
def _on_back_button_clicked(self, widget=None):
self.emit('back-button-clicked')
@@ -215,11 +235,11 @@ class HeaderBar(Handy.HeaderBar):
def _update(self):
if self.props.selection_mode:
- self.props.custom_title = self._selection_menu
+ self._headerbar.props.title_widget = self._selection_menu
elif self.props.state != HeaderBar.State.MAIN:
- self.props.custom_title = None
+ self._headerbar.props.title_widget = None
else:
- self.props.custom_title = self._stack_switcher
+ self._headerbar.props.title_widget = self._stack_switcher
self._back_button.props.visible = (
not self.props.selection_mode
diff --git a/gnomemusic/widgets/lastfmdialog.py b/gnomemusic/widgets/lastfmdialog.py
index 5ba22656..00d39ed6 100644
--- a/gnomemusic/widgets/lastfmdialog.py
+++ b/gnomemusic/widgets/lastfmdialog.py
@@ -24,7 +24,7 @@
from gettext import gettext as _
-from gi.repository import Gtk
+from gi.repository import Gdk, Gtk
from gnomemusic.scrobbler import GoaLastFM
@@ -36,7 +36,6 @@ class LastfmDialog(Gtk.Dialog):
__gtype_name__ = "LastfmDialog"
_action_button = Gtk.Template.Child()
- _action_button_gesture = Gtk.Template.Child()
_action_label = Gtk.Template.Child()
_status_label = Gtk.Template.Child()
@@ -73,5 +72,6 @@ class LastfmDialog(Gtk.Dialog):
self._action_label.props.label = action
@Gtk.Template.Callback()
- def _on_action_button_clicked(self, widget, n_press, x, y):
+ def _on_action_button_clicked(self, btn: Gtk.Button) -> bool:
self._lastfm_scrobbler.configure()
+ return Gdk.EVENT_STOP
diff --git a/gnomemusic/widgets/notificationspopup.py b/gnomemusic/widgets/notificationspopup.py
deleted file mode 100644
index 3ba9c55c..00000000
--- a/gnomemusic/widgets/notificationspopup.py
+++ /dev/null
@@ -1,252 +0,0 @@
-# Copyright (c) 2018 The GNOME Music Developers
-#
-# GNOME Music is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# GNOME Music is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with GNOME Music; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# The GNOME Music authors hereby grant permission for non-GPL compatible
-# GStreamer plugins to be used and distributed together with GStreamer
-# and GNOME Music. This permission is above and beyond the permissions
-# granted by the GPL license by which GNOME Music is covered. If you
-# modify this code, you may extend this exception to your version of the
-# code, but you are not obligated to do so. If you do not wish to do so,
-# delete this exception statement from your version.
-
-from enum import IntEnum
-from gettext import gettext as _
-from gi.repository import GLib, GObject, Gtk
-
-
-@Gtk.Template(resource_path="/org/gnome/Music/ui/NotificationsPopup.ui")
-class NotificationsPopup(Gtk.Revealer):
- """Display notification messages as popups
-
- There are two types of messages:
- - loading notification
- - playlist or song deletion
- Messages are arranged under each other
- """
-
- __gtype_name__ = "NotificationsPopup"
-
- _box = Gtk.Template.Child()
-
- def __init__(self):
- super().__init__()
-
- self._loading_notification = LoadingNotification()
- self._loading_notification.connect('visible', self._set_visibility)
- self._loading_notification.connect('invisible', self._set_visibility)
- self._box.add(self._loading_notification)
-
- def _hide_notifications(self, notification, remove):
- if remove:
- self._box.remove(notification)
- self._loading_notification.hide()
- self.hide()
-
- def _set_visibility(self, notification, remove=False):
- """Display or hide Notifications Popup.
-
- Popup is displayed if a loading is active or if a playlist
- deletion is in progress.
- """
- loading_finished = self._loading_notification._counter == 0
- no_other_notif = (len(self._box.get_children()) == 1
- or (len(self._box.get_children()) == 2
- and notification != self._loading_notification))
- invisible = loading_finished and no_other_notif
-
- if not invisible:
- if remove:
- self._box.remove(notification)
- self.show()
- else:
- # notification has to be removed from grid once unreveal is
- # finished. Otherwise, an empty grid will be unrevealed.
- duration = self.get_transition_duration()
- GLib.timeout_add(
- duration + 100, self._hide_notifications, notification, remove)
- self.set_reveal_child(not invisible)
-
- def pop_loading(self):
- """Decrease loading notification counter.
-
- If it reaches zero, the notification is withdrawn.
- """
- self._loading_notification.pop()
-
- def push_loading(self):
- """Increase loading notification counter.
-
- If no notification is visible, start loading notification.
- """
- self._loading_notification.push()
-
- def add_notification(self, notification):
- """Display a new notification
-
- :param notification: notification to display
- """
- self._box.add(notification)
- self.show()
- self.set_reveal_child(True)
-
- def remove_notification(self, notification):
- """Removes notification.
-
- :param notification: notification to remove
- """
- self._set_visibility(notification, True)
-
- def terminate_pending(self):
- """Terminate all pending playlists notifications"""
- children = self._box.get_children()
- if len(children) > 1:
- for notification in children[:-1]:
- notification._finish_deletion()
-
-
-@Gtk.Template(resource_path="/org/gnome/Music/ui/LoadingNotification.ui")
-class LoadingNotification(Gtk.Grid):
- """LoadingNotification displays a loading notification message
-
- It can be triggered by different all main views. Message is
- displayed as long as at least one loading operation is in progress.
- """
-
- __gsignals__ = {
- 'visible': (GObject.SignalFlags.RUN_FIRST, None, ()),
- 'invisible': (GObject.SignalFlags.RUN_FIRST, None, ())
- }
-
- __gtype_name__ = "LoadingNotification"
-
- def __init__(self):
- super().__init__()
- self._counter = 0
- self._timeout_id = 0
-
- def pop(self):
- """Decrease the counter. Hide notification if it reaches 0."""
- self._counter = self._counter - 1
-
- if self._counter == 0:
- # Stop the timeout if necessary
- if self._timeout_id > 0:
- if not self.is_visible():
- GLib.source_remove(self._timeout_id)
- self._timeout_id = 0
- self.emit('invisible')
-
- def push(self):
- """Increase the counter. Start notification if necessary."""
- def callback():
- self.props.visible = True
- self.emit('visible')
-
- if self._counter == 0:
- # Only show the notification after a small delay, thus
- # add a timeout. 500ms feels good enough.
- self._timeout_id = GLib.timeout_add(500, callback)
-
- self._counter = self._counter + 1
-
-
-@Gtk.Template(resource_path="/org/gnome/Music/ui/PlaylistNotification.ui")
-class PlaylistNotification(Gtk.Grid):
- """Show a notification on playlist or song deletion.
-
- It also provides an option to undo removal. Notification is added
- to the NotificationsPopup.
- """
-
- __gtype_name__ = "PlaylistNotification"
-
- _label = Gtk.Template.Child()
-
- class Type(IntEnum):
- """Enum for Playlists Notifications"""
- PLAYLIST = 0
- SONG = 1
-
- def __init__(
- self, notifications_popup, application, type_, playlist,
- position=None, coresong=None):
- """Creates a playlist deletion notification popup (song or playlist)
-
- :param GtkRevealer notifications_popup: the popup object
- :param Application application: application object
- :param enum type_: NotificationType (song or playlist)
- :param Playlist playlist: playlist
- :param int position: position of the object to delete
- :param object coresong: CoreSong for song deletion
- """
- super().__init__()
- self._notifications_popup = notifications_popup
- self._coregrilo = application.props.coregrilo
- self.type_ = type_
- self._playlist = playlist
- self._position = position
- self._coresong = coresong
-
- message = self._create_notification_message()
- self._label.props.label = message
-
- if self.type_ == PlaylistNotification.Type.PLAYLIST:
- self._coregrilo.stage_playlist_deletion(self._playlist)
- else:
- playlist.stage_song_deletion(self._coresong, position)
-
- self._timeout_id = GLib.timeout_add_seconds(5, self._finish_deletion)
- self._notifications_popup.add_notification(self)
-
- def _create_notification_message(self):
- if self.type_ == PlaylistNotification.Type.PLAYLIST:
- msg = _("Playlist {} removed".format(self._playlist.props.title))
- else:
- playlist_title = self._playlist.props.title
- song_title = self._coresong.props.title
- msg = _("{} removed from {}".format(
- song_title, playlist_title))
-
- return msg
-
- @Gtk.Template.Callback()
- def _undo_deletion(self, widget_):
- """Undo deletion and remove notification"""
- if self._timeout_id > 0:
- GLib.source_remove(self._timeout_id)
- self._timeout_id = 0
-
- self._notifications_popup.remove_notification(self)
- if self.type_ == PlaylistNotification.Type.PLAYLIST:
- self._coregrilo.finish_playlist_deletion(self._playlist, False)
- else:
- self._playlist.undo_pending_song_deletion(
- self._coresong, self._position)
-
- @Gtk.Template.Callback()
- def _close_notification(self, widget_):
- if self._timeout_id > 0:
- GLib.source_remove(self._timeout_id)
- self._timeout_id = 0
-
- self._finish_deletion()
-
- def _finish_deletion(self):
- self._notifications_popup.remove_notification(self)
- if self.type_ == PlaylistNotification.Type.PLAYLIST:
- self._coregrilo.finish_playlist_deletion(self._playlist, True)
- else:
- self._playlist.finish_song_deletion(self._coresong, self._position)
diff --git a/gnomemusic/widgets/playertoolbar.py b/gnomemusic/widgets/playertoolbar.py
index 5b98d0e5..71a094d1 100644
--- a/gnomemusic/widgets/playertoolbar.py
+++ b/gnomemusic/widgets/playertoolbar.py
@@ -25,9 +25,9 @@
from gettext import gettext as _
from gi.repository import Gio, GLib, GObject, Gtk
-from gnomemusic.defaulticon import DefaultIcon
+from gnomemusic.coverpaintable import CoverPaintable
from gnomemusic.gstplayer import Playback
-from gnomemusic.utils import ArtSize
+from gnomemusic.utils import ArtSize, DefaultIconType
from gnomemusic.player import Player, RepeatMode
from gnomemusic.widgets.smoothscale import SmoothScale # noqa: F401
from gnomemusic.widgets.twolinetip import TwoLineTip
@@ -44,13 +44,11 @@ class PlayerToolbar(Gtk.ActionBar):
__gtype_name__ = 'PlayerToolbar'
_artist_label = Gtk.Template.Child()
- _art_stack = Gtk.Template.Child()
- _buttons_and_scale = Gtk.Template.Child()
+ _cover_image = Gtk.Template.Child()
_duration_label = Gtk.Template.Child()
_next_button = Gtk.Template.Child()
- _pause_image = Gtk.Template.Child()
_play_button = Gtk.Template.Child()
- _play_image = Gtk.Template.Child()
+ _play_pause_image = Gtk.Template.Child()
_prev_button = Gtk.Template.Child()
_progress_scale = Gtk.Template.Child()
_progress_time_label = Gtk.Template.Child()
@@ -64,18 +62,13 @@ class PlayerToolbar(Gtk.ActionBar):
self._player = None
- self._art_stack.props.size = ArtSize.SMALL
- self._art_stack.props.art_type = DefaultIcon.Type.ALBUM
+ self._cover_image.set_size_request(
+ ArtSize.SMALL.width, ArtSize.SMALL.height)
+ self._cover_image.props.paintable = CoverPaintable(
+ self, ArtSize.SMALL, DefaultIconType.ALBUM)
self._tooltip = TwoLineTip()
- # A centered widget has an expand child property set to False
- # by default. It needs to be True to have a progress scale
- # at the correct size.
- main_container = self._buttons_and_scale.get_parent()
- main_container.child_set_property(
- self._buttons_and_scale, "expand", True)
-
repeat_menu = Gio.Menu.new()
for mode in RepeatMode:
item = Gio.MenuItem.new()
@@ -88,6 +81,10 @@ class PlayerToolbar(Gtk.ActionBar):
self._repeat_action: Gio.SimpleAction = Gio.SimpleAction.new_stateful(
"repeat", GLib.VariantType.new("s"), GLib.Variant("s", ""))
+ action_group = Gio.SimpleActionGroup()
+ action_group.add_action(self._repeat_action)
+ self.insert_action_group("playertoolbar", action_group)
+
# FIXME: This is a workaround for not being able to pass the player
# object via init when using Gtk.Builder.
@GObject.Property(type=Player, default=None)
@@ -122,9 +119,6 @@ class PlayerToolbar(Gtk.ActionBar):
self._repeat_action.set_state(
GLib.Variant("s", str(repeat_mode.value)))
self._repeat_action.connect("activate", self._repeat_menu_changed)
- action_group = Gio.SimpleActionGroup()
- action_group.add_action(self._repeat_action)
- self.insert_action_group("playertoolbar", action_group)
self._sync_repeat_image()
@@ -133,7 +127,6 @@ class PlayerToolbar(Gtk.ActionBar):
self._repeat_action.set_state(new_state)
new_mode = new_state.get_string()
self._player.props.repeat_mode = RepeatMode(int(new_mode))
- self._repeat_menu_button.props.active = False
@Gtk.Template.Callback()
def _on_progress_value_changed(self, progress_scale):
@@ -158,26 +151,26 @@ class PlayerToolbar(Gtk.ActionBar):
def _sync_repeat_image(self) -> None:
self._repeat_image.set_from_icon_name(
- self._player.props.repeat_mode.icon, Gtk.IconSize.MENU)
+ self._player.props.repeat_mode.icon)
def _sync_playing(self, player, state):
if (self._player.props.state == Playback.STOPPED
and not self._player.props.has_next
and not self._player.props.has_previous):
- self.hide()
+ self.props.revealed = False
return
- self.show()
+ self.props.revealed = True
if self._player.props.state == Playback.PLAYING:
- image = self._pause_image
+ icon_name = "media-playback-pause-symbolic"
tooltip = _("Pause")
else:
- image = self._play_image
+ icon_name = "media-playback-start-symbolic"
tooltip = _("Play")
- if self._play_button.get_image() != image:
- self._play_button.set_image(image)
+ if self._play_pause_image.props.icon_name != icon_name:
+ self._play_pause_image.props.icon_name = icon_name
self._play_button.set_tooltip_text(tooltip)
@@ -193,7 +186,7 @@ class PlayerToolbar(Gtk.ActionBar):
coresong = player.props.current_song
self._duration_label.props.label = utils.seconds_to_string(
coresong.props.duration)
- self._progress_time_label.props.label = "0∶00"
+ self._progress_time_label.props.label = "0:00"
self._play_button.set_sensitive(True)
self._sync_prev_next()
@@ -207,7 +200,7 @@ class PlayerToolbar(Gtk.ActionBar):
self._tooltip.props.title = title
self._tooltip.props.subtitle = artist
- self._art_stack.props.coreobject = coresong
+ self._cover_image.props.paintable.props.coreobject = coresong
@Gtk.Template.Callback()
def _on_tooltip_query(self, widget, x, y, kb, tooltip, data=None):
diff --git a/gnomemusic/widgets/playlistcontrols.py b/gnomemusic/widgets/playlistcontrols.py
index 0637082a..46432024 100644
--- a/gnomemusic/widgets/playlistcontrols.py
+++ b/gnomemusic/widgets/playlistcontrols.py
@@ -27,7 +27,7 @@ import gettext
from gi.repository import Gdk, GObject, Gio, Gtk
from gnomemusic.grilowrappers.grltrackerplaylists import Playlist
-from gnomemusic.widgets.notificationspopup import PlaylistNotification
+from gnomemusic.playlisttoast import PlaylistToast
@Gtk.Template(resource_path='/org/gnome/Music/ui/PlaylistControls.ui')
@@ -99,9 +99,7 @@ class PlaylistControls(Gtk.Box):
self._player.stop()
self._window.set_player_visible(False)
- PlaylistNotification(
- self._window.notifications_popup, self._application,
- PlaylistNotification.Type.PLAYLIST, self.props.playlist)
+ PlaylistToast(self._application, self.props.playlist)
@Gtk.Template.Callback()
def _on_play_button_clicked(self, button: Gtk.Button) -> None:
diff --git a/gnomemusic/widgets/playlistdialog.py b/gnomemusic/widgets/playlistdialog.py
index 2c67defb..fa402f76 100644
--- a/gnomemusic/widgets/playlistdialog.py
+++ b/gnomemusic/widgets/playlistdialog.py
@@ -132,5 +132,6 @@ class PlaylistDialog(Gtk.Dialog):
self._add_playlist_button.props.sensitive = False
@Gtk.Template.Callback()
- def _on_add_playlist_entry_focused(self, editable, data=None):
+ def _on_add_playlist_entry_focused(
+ self, controller: Gtk.EventControllerFocus) -> None:
self._listbox.unselect_all()
diff --git a/gnomemusic/widgets/playlistswidget.py b/gnomemusic/widgets/playlistswidget.py
index 2dab98da..2e4748d4 100644
--- a/gnomemusic/widgets/playlistswidget.py
+++ b/gnomemusic/widgets/playlistswidget.py
@@ -25,7 +25,7 @@
from __future__ import annotations
import typing
-from gi.repository import Gdk, GObject, Gtk
+from gi.repository import GObject, Gtk
from gnomemusic.widgets.playlistcontrols import PlaylistControls # noqa: F401
from gnomemusic.widgets.songwidget import SongWidget
@@ -34,7 +34,7 @@ if typing.TYPE_CHECKING:
from gnomemusic.application import Application
from gnomemusic.coresong import CoreSong
from gnomemusic.grilowrappers.grltrackerplaylists import Playlist
- from gnomemusic.view.playlistsview import PlaylistsView
+ from gnomemusic.views.playlistsview import PlaylistsView
@Gtk.Template(resource_path="/org/gnome/Music/ui/PlaylistsWidget.ui")
@@ -45,7 +45,6 @@ class PlaylistsWidget(Gtk.Box):
_pl_ctrls = Gtk.Template.Child()
_songs_list = Gtk.Template.Child()
- _songs_list_ctrlr = Gtk.Template.Child()
def __init__(
self, application: Application,
@@ -128,23 +127,6 @@ class PlaylistsWidget(Gtk.Box):
and current_playlist.props.is_smart):
current_playlist.update()
- @Gtk.Template.Callback()
- def _songs_list_right_click(self, gesture, n_press, x, y):
- song_widget = self._songs_list.get_row_at_y(y)
-
- _, y0 = song_widget.translate_coordinates(self._songs_list, 0, 0)
- row_height = song_widget.get_allocated_height()
- rect = Gdk.Rectangle()
- rect.x = x
- rect.y = y0 + 0.5 * row_height
-
- current_playlist = self._playlists_view.props.current_playlist
- song_context_menu = SongWidgetMenu(
- self._application, song_widget, current_playlist)
- song_context_menu.props.relative_to = self._songs_list
- song_context_menu.props.pointing_to = rect
- song_context_menu.popup()
-
def _on_play_playlist(self, menuitem, data=None):
self._play()
diff --git a/gnomemusic/widgets/searchheaderbar.py b/gnomemusic/widgets/searchheaderbar.py
index d5efaea5..3c2298bd 100644
--- a/gnomemusic/widgets/searchheaderbar.py
+++ b/gnomemusic/widgets/searchheaderbar.py
@@ -24,14 +24,15 @@
from enum import IntEnum
-from gi.repository import GLib, GObject, Gtk, Handy
+from gettext import gettext as _
+from gi.repository import Adw, GObject, Gtk
from gnomemusic.search import Search
from gnomemusic.widgets.headerbar import HeaderBar, SelectionBarMenuButton
@Gtk.Template(resource_path="/org/gnome/Music/ui/SearchHeaderBar.ui")
-class SearchHeaderBar(Handy.HeaderBar):
+class SearchHeaderBar(Adw.Bin):
"""SearcnHeaderbar of the application"""
class State(IntEnum):
@@ -43,6 +44,7 @@ class SearchHeaderBar(Handy.HeaderBar):
__gtype_name__ = "SearchHeaderBar"
+ _headerbar = Gtk.Template.Child()
_search_button = Gtk.Template.Child()
_select_button = Gtk.Template.Child()
_cancel_button = Gtk.Template.Child()
@@ -51,16 +53,17 @@ class SearchHeaderBar(Handy.HeaderBar):
search_state = GObject.Property(type=int, default=Search.State.NONE)
selected_songs_count = GObject.Property(type=int, default=0, minimum=0)
selection_mode_allowed = GObject.Property(type=bool, default=True)
- stack = GObject.Property(type=Gtk.Stack)
+ stack = GObject.Property(type=Adw.ViewStack)
def __init__(self, application):
super().__init__()
self._coregrilo = application.props.coregrilo
self._selection_mode = False
- self._timeout = None
self._entry = Gtk.SearchEntry()
+ self._entry.props.placeholder_text = _(
+ "Search songs, artists, albums and playlists")
self._entry.props.halign = Gtk.Align.CENTER
self._entry.props.visible = True
self._entry.props.width_request = 500
@@ -68,7 +71,7 @@ class SearchHeaderBar(Handy.HeaderBar):
self._selection_menu = SelectionBarMenuButton()
self.bind_property(
- "selection-mode", self, "show-close-button",
+ "selection-mode", self._headerbar, "show-end-title-buttons",
GObject.BindingFlags.INVERT_BOOLEAN
| GObject.BindingFlags.SYNC_CREATE)
self.bind_property(
@@ -99,7 +102,7 @@ class SearchHeaderBar(Handy.HeaderBar):
"notify::search-mode-active", self._on_search_mode_changed)
self.connect("notify::search-state", self._search_state_changed)
- self._entry.connect("changed", self._search_entry_timeout)
+ self._entry.connect("search-changed", self._search_entry_changed)
@GObject.Property(type=bool, default=False)
def selection_mode(self):
@@ -164,9 +167,9 @@ class SearchHeaderBar(Handy.HeaderBar):
def _update(self):
if self.props.selection_mode:
- self.props.custom_title = self._selection_menu
+ self._headerbar.props.title_widget = self._selection_menu
else:
- self.props.custom_title = self._entry
+ self._headerbar.props.title_widget = self._entry
def _on_selection_mode_allowed_changed(self, widget, data):
if self.props.selection_mode_allowed:
@@ -174,16 +177,7 @@ class SearchHeaderBar(Handy.HeaderBar):
else:
self._select_button.props.sensitive = False
- def _search_entry_timeout(self, widget):
- if self._timeout:
- GLib.source_remove(self._timeout)
-
- self._timeout = GLib.timeout_add(
- 500, self._search_entry_changed, widget)
-
- def _search_entry_changed(self, widget):
- self._timeout = None
-
+ def _search_entry_changed(self, widget: Gtk.SearchEntry) -> bool:
search_term = self._entry.get_text()
if search_term != "":
self.props.stack.set_visible_child_name("search")
@@ -195,7 +189,6 @@ class SearchHeaderBar(Handy.HeaderBar):
def _on_search_mode_changed(self, klass, data):
if self.props.search_mode_active:
- # self._search_entry.realize()
self._entry.grab_focus()
def _search_state_changed(self, klass, data):
diff --git a/gnomemusic/widgets/smoothscale.py b/gnomemusic/widgets/smoothscale.py
index d1f6d3f9..8892c4c4 100644
--- a/gnomemusic/widgets/smoothscale.py
+++ b/gnomemusic/widgets/smoothscale.py
@@ -46,10 +46,10 @@ class SmoothScale(Gtk.Scale):
self._timeout = None
- self._controller = Gtk.GestureMultiPress().new(self)
- self._controller.props.propagation_phase = Gtk.PropagationPhase.CAPTURE
- self._controller.connect("pressed", self._on_button_pressed)
- self._controller.connect("released", self._on_button_released)
+ ctrl = Gtk.GestureClick()
+ ctrl.connect("pressed", self._on_button_pressed)
+ ctrl.connect("released", self._on_button_released)
+ self.add_controller(ctrl)
self.connect('change-value', self._on_smooth_scale_seek)
@@ -162,10 +162,8 @@ class SmoothScale(Gtk.Scale):
duration = abs(self._player.props.duration)
style_context = self.get_style_context()
- state = style_context.get_state()
-
width = self.get_allocated_width()
- padding = style_context.get_padding(state)
+ padding = style_context.get_padding()
width = max(width - (padding.left + padding.right), 1)
timeout_period = min(1000 * duration // width, 200)
diff --git a/gnomemusic/widgets/songwidget.py b/gnomemusic/widgets/songwidget.py
index 3649a12d..ff3dbf3f 100644
--- a/gnomemusic/widgets/songwidget.py
+++ b/gnomemusic/widgets/songwidget.py
@@ -22,13 +22,12 @@
# code, but you are not obligated to do so. If you do not wish to do so,
# delete this exception statement from your version.
+from __future__ import annotations
+
from enum import IntEnum
from typing import Optional
-import gi
-gi.require_version('Dazzle', '1.0')
from gi.repository import Gdk, GObject, Gtk
-from gi.repository.Dazzle import BoldingLabel # noqa: F401
from gnomemusic import utils
from gnomemusic.coresong import CoreSong
@@ -38,7 +37,7 @@ from gnomemusic.widgets.starimage import StarImage # noqa: F401
@Gtk.Template(resource_path='/org/gnome/Music/ui/SongWidget.ui')
class SongWidget(Gtk.ListBoxRow):
- """The single song widget used in DiscListBox
+ """The single song widget used in DiscBox
Contains
* play icon (depending on state)
@@ -56,7 +55,6 @@ class SongWidget(Gtk.ListBoxRow):
}
coresong = GObject.Property(type=CoreSong, default=None)
- select_click = GObject.Property(type=bool, default=False)
selected = GObject.Property(type=bool, default=False)
show_song_number = GObject.Property(type=bool, default=True)
@@ -64,14 +62,13 @@ class SongWidget(Gtk.ListBoxRow):
_album_duration_box = Gtk.Template.Child()
_artist_box = Gtk.Template.Child()
_artist_label = Gtk.Template.Child()
- _controller_motion = Gtk.Template.Child()
- _dnd_eventbox = Gtk.Template.Child()
+ _dnd_icon = Gtk.Template.Child()
+ _drag_source = Gtk.Template.Child()
_menu_button = Gtk.Template.Child()
_select_button = Gtk.Template.Child()
_number_label = Gtk.Template.Child()
_title_label = Gtk.Template.Child()
_duration_label = Gtk.Template.Child()
- _star_eventbox = Gtk.Template.Child()
_star_image = Gtk.Template.Child()
_star_stack = Gtk.Template.Child()
_play_icon = Gtk.Template.Child()
@@ -126,8 +123,7 @@ class SongWidget(Gtk.ListBoxRow):
self._select_button.set_visible(False)
- self._play_icon.set_from_icon_name(
- 'media-playback-start-symbolic', Gtk.IconSize.SMALL_TOOLBAR)
+ self._play_icon.set_from_icon_name("media-playback-start-symbolic")
self.props.coresong.bind_property(
'selected', self._select_button, 'active',
@@ -149,74 +145,74 @@ class SongWidget(Gtk.ListBoxRow):
if not self.props.coresong.props.is_tracker:
self._star_stack.props.visible_child_name = "empty"
- if can_dnd is True:
- self._dnd_eventbox.props.visible = True
- self._drag_widget = None
- entries = [
- Gtk.TargetEntry.new(
- "GTK_EVENT_BOX", Gtk.TargetFlags.SAME_APP, 0)
- ]
- self._dnd_eventbox.drag_source_set(
- Gdk.ModifierType.BUTTON1_MASK, entries,
- Gdk.DragAction.MOVE)
- self.drag_dest_set(
- Gtk.DestDefaults.ALL, entries, Gdk.DragAction.MOVE)
+ self._drag_x = 0.
+ self._drag_y = 0.
+ self._drag_widget: Optional[Gtk.ListBox] = None
+ if can_dnd:
+ capture_phase = Gtk.PropagationPhase.CAPTURE
+ self._drag_source.props.propagation_phase = capture_phase
+ self._dnd_icon.props.visible = True
@Gtk.Template.Callback()
- def _on_drag_begin(self, klass, context):
- gdk_window = self.get_window()
- _, x, y, _ = gdk_window.get_device_position(context.get_device())
- allocation = self.get_allocation()
+ def _on_drag_prepare(
+ self, drag_source: Gtk.DragSource, x: float,
+ y: float) -> Gdk.ContentProvider:
+ self._drag_x = x
+ self._drag_y = y
+ return Gdk.ContentProvider.new_for_value(self)
+ @Gtk.Template.Callback()
+ def _on_drag_begin(
+ self, drag_source: Gtk.DragSource, drag: Gdk.Drag) -> None:
+ allocation = self.get_allocation()
self._drag_widget = Gtk.ListBox()
self._drag_widget.set_size_request(allocation.width, allocation.height)
- drag_row = SongWidget(self.props.coresong)
+ drag_row = SongWidget(self.props.coresong, False, True)
drag_row.props.show_song_number = self.props.show_song_number
-
- self._drag_widget.add(drag_row)
+ self._drag_widget.append(drag_row)
self._drag_widget.drag_highlight_row(drag_row)
- self._drag_widget.props.visible = True
- Gtk.drag_set_icon_widget(
- context, self._drag_widget, x - allocation.x, y - allocation.y)
- @Gtk.Template.Callback()
- def _on_drag_end(self, klass, context):
- self._drag_widget = None
+ drag_icon = Gtk.DragIcon.get_for_drag(drag)
+ drag_icon.props.child = self._drag_widget
+ drag.set_hotspot(self._drag_x, self._drag_y)
@Gtk.Template.Callback()
- def _on_drag_data_get(self, klass, context, selection_data, info, time_):
- row_position = self.get_index()
- selection_data.set(
- Gdk.Atom.intern("row_position", False), 0,
- bytes(str(row_position), encoding="UTF8"))
+ def _on_drop(
+ self, target: Gtk.DropTarget,
+ source_widget: SongWidget, x: float, y: float) -> bool:
+ self._drag_widget = None
+ self._drag_x = 0.
+ self._drag_y = 0.
- @Gtk.Template.Callback()
- def _on_drag_data_received(
- self, klass, context, x, y, selection_data, info, time_):
- source_position = int(str(selection_data.get_data(), "UTF-8"))
+ source_position = source_widget.get_index()
target_position = self.get_index()
if source_position == target_position:
- return
+ return False
self.emit("widget-moved", source_position)
+ return True
@Gtk.Template.Callback()
- def _on_select_button_toggled(self, widget):
- # This property is used to ignore the second click event
- # (one event in SongWidget and the other one in select_button).
- self.props.select_click = not self.props.select_click
+ def _on_click(
+ self, gesture_click: Gtk.GestureClick, n_click: int, x: int,
+ y: int) -> bool:
+ state = gesture_click.get_current_event_state()
+ modifiers = Gtk.accelerator_get_default_mod_mask()
+ if (state & modifiers == Gdk.ModifierType.CONTROL_MASK
+ and not self.props.selection_mode):
+ self.props.selection_mode = True
- @Gtk.Template.Callback()
- def _on_star_toggle(self, widget, event):
- (_, button) = event.get_button()
- if button != Gdk.BUTTON_PRIMARY:
- return False
+ return Gdk.EVENT_STOP
+ @Gtk.Template.Callback()
+ def _on_star_toggle(
+ self, controller: Gtk.GestureClick, n_press: int, x: float,
+ y: float) -> bool:
+ controller.set_state(Gtk.EventSequenceState.CLAIMED)
favorite = not self._star_image.favorite
self._star_image.props.favorite = favorite
-
- return True
+ return Gdk.EVENT_STOP
@Gtk.Template.Callback()
def _on_star_hover(self, controller, x, y):
diff --git a/gnomemusic/widgets/songwidgetmenu.py b/gnomemusic/widgets/songwidgetmenu.py
index fea83d1c..6874ea9d 100644
--- a/gnomemusic/widgets/songwidgetmenu.py
+++ b/gnomemusic/widgets/songwidgetmenu.py
@@ -23,19 +23,20 @@
# delete this exception statement from your version.
from __future__ import annotations
-from typing import Union
+from typing import Any, Optional, Union, cast
import typing
-from gi.repository import Gtk
+from gi.repository import Gio, GObject, Gtk
from gnomemusic.grilowrappers.grltrackerplaylists import Playlist
-from gnomemusic.widgets.notificationspopup import PlaylistNotification
+from gnomemusic.songtoast import SongToast
from gnomemusic.widgets.playlistdialog import PlaylistDialog
+from gnomemusic.widgets.songwidget import SongWidget
if typing.TYPE_CHECKING:
from gnomemusic.application import Application
from gnomemusic.corealbum import CoreAlbum
from gnomemusic.coresong import CoreSong
- from gnomemusic.widgets.songwidget import SongWidget
+ CoreObject = Union[CoreAlbum, CoreSong, Playlist]
@Gtk.Template(resource_path="/org/gnome/Music/ui/SongWidgetMenu.ui")
@@ -43,16 +44,15 @@ class SongWidgetMenu(Gtk.PopoverMenu):
__gtype_name__ = "SongWidgetMenu"
- _remove_from_playlist_button = Gtk.Template.Child()
-
def __init__(
- self, application: Application, song_widget: SongWidget,
- coreobject: Union[CoreAlbum, CoreSong, Playlist]) -> None:
+ self, application: Application,
+ song_widget: Union[SongWidget, Gtk.ListItem],
+ coreobject: Optional[CoreObject]) -> None:
"""Menu to interact with the song of a SongWidget.
:param Application application: The application object
:param SongWidget song_widget: The songwidget associated with the menu
- :param Union[CoreAlbum, CoreSong, Playlist] coreboject: The
+ :param Union[CoreAlbum, CoreSong, Playlist] coreobject: The
coreobject associated with the menu
"""
super().__init__()
@@ -63,18 +63,32 @@ class SongWidgetMenu(Gtk.PopoverMenu):
self._window = application.props.window
self._coreobject = coreobject
+ self._coresong: CoreSong
self._song_widget = song_widget
- self._coresong = song_widget.props.coresong
-
- if isinstance(self._coreobject, Playlist):
- self._remove_from_playlist_button.props.visible = True
- self._remove_from_playlist_button.props.sensitive = (
- not self._coreobject.props.is_smart)
- else:
- self._remove_from_playlist_button.props.visible = False
-
- @Gtk.Template.Callback()
- def _on_play_clicked(self, widget: Gtk.Button) -> None:
+ self.props.coreobject = coreobject
+
+ self._playlist_dialog: Optional[PlaylistDialog] = None
+
+ action_group = Gio.SimpleActionGroup()
+ action_entries = [
+ ("play", self._play_song),
+ ("add_playlist", self._add_to_playlist)
+ ]
+ if (isinstance(self._coreobject, Playlist)
+ and not self._coreobject.props.is_smart):
+ action_entries.append(
+ ("remove_playlist", self._remove_from_playlist))
+ elif not isinstance(self._coreobject, Playlist):
+ self.props.menu_model.remove(2)
+
+ for name, callback in action_entries:
+ action = Gio.SimpleAction.new(name, None)
+ action.connect("activate", callback)
+ action_group.add_action(action)
+
+ self.insert_action_group("songwidget", action_group)
+
+ def _play_song(self, action: Gio.Simple, param: Any) -> None:
self.popdown()
signal_id = 0
@@ -86,22 +100,41 @@ class SongWidgetMenu(Gtk.PopoverMenu):
"playlist-loaded", _on_playlist_loaded)
self._coremodel.props.active_core_object = self._coreobject
- @Gtk.Template.Callback()
- def _on_add_to_playlist_clicked(self, widget: Gtk.Button) -> None:
- self.popdown()
- playlist_dialog = PlaylistDialog(self._application)
- playlist_dialog.props.transient_for = self._window
- if playlist_dialog.run() == Gtk.ResponseType.ACCEPT:
- playlist = playlist_dialog.props.selected_playlist
- playlist.add_songs([self._coresong])
+ def _add_to_playlist(self, action: Gio.Simple, param: Any) -> None:
+
+ def on_response(dialog: PlaylistDialog, response_id: int) -> None:
+ if not self._playlist_dialog:
+ return
+
+ if response_id == Gtk.ResponseType.ACCEPT:
+ playlist = self._playlist_dialog.props.selected_playlist
+ playlist.add_songs([self._coresong])
- playlist_dialog.destroy()
+ self._playlist_dialog.destroy()
+ self._playlist_dialog = None
- @Gtk.Template.Callback()
- def _on_remove_from_playlist_clicked(self, widget: Gtk.Button) -> None:
+ self.popdown()
+ self._playlist_dialog = PlaylistDialog(self._application)
+ self._playlist_dialog.props.transient_for = self._window
+ self._playlist_dialog.connect("response", on_response)
+ self._playlist_dialog.present()
+
+ def _remove_from_playlist(self, action: Gio.Simple, param: Any) -> None:
self.popdown()
position = self._song_widget.get_index()
- notification = PlaylistNotification( # noqa: F841
- self._window.notifications_popup, self._application,
- PlaylistNotification.Type.SONG, self._coreobject, position,
+ SongToast(
+ self._application, cast(Playlist, self._coreobject), position,
self._coresong)
+
+ @GObject.Property(type=GObject.GObject)
+ def coreobject(self) -> CoreObject:
+ return self._coreobject
+
+ @coreobject.setter # type: ignore
+ def coreobject(self, coreobject: CoreObject) -> None:
+ self._coreobject = coreobject
+
+ if isinstance(self._song_widget, SongWidget):
+ self._coresong = self._song_widget.props.coresong
+ else:
+ self._coresong = coreobject
diff --git a/gnomemusic/widgets/starhandlerwidget.py b/gnomemusic/widgets/starhandlerwidget.py
deleted file mode 100644
index 1ea3193f..00000000
--- a/gnomemusic/widgets/starhandlerwidget.py
+++ /dev/null
@@ -1,143 +0,0 @@
-# Copyright 2018 The GNOME Music Developers
-#
-# GNOME Music is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# GNOME Music is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with GNOME Music; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# The GNOME Music authors hereby grant permission for non-GPL compatible
-# GStreamer plugins to be used and distributed together with GStreamer
-# and GNOME Music. This permission is above and beyond the permissions
-# granted by the GPL license by which GNOME Music is covered. If you
-# modify this code, you may extend this exception to your version of the
-# code, but you are not obligated to do so. If you do not wish to do so,
-# delete this exception statement from your version.
-
-from gi.repository import GObject, Gtk
-
-
-class CellRendererStar(Gtk.CellRendererPixbuf):
- """Starwidget cellrenderer implementation"""
-
- __gsignals__ = {
- 'clicked': (GObject.SignalFlags.RUN_LAST, None, (str,))
- }
-
- def __init__(self):
- super().__init__()
-
- self.props.mode = Gtk.CellRendererMode.ACTIVATABLE
- self.props.xpad = 32
-
- _, width, height = Gtk.IconSize.lookup(Gtk.IconSize.SMALL_TOOLBAR)
-
- self._icon_width = width
- self._icon_height = height
-
- self._show_star = 0
-
- def do_render(self, ctx, widget, bg_area, cell_area, flags):
- style_ctx = widget.get_style_context()
- style_ctx.save()
- style_ctx.add_class('star')
-
- if self.props.show_star == 1:
- style_ctx.set_state(Gtk.StateFlags.SELECTED)
- else:
- style_ctx.set_state(Gtk.StateFlags.NORMAL)
-
- y = cell_area.y + ((cell_area.height - self._icon_height) / 2)
- x = cell_area.x + ((cell_area.width - self._icon_width) / 2)
-
- Gtk.render_background(
- style_ctx, ctx, x, y, self._icon_width, self._icon_height)
-
- style_ctx.restore()
-
- def do_get_preferred_width(self, widget):
- width = self._icon_width + self.props.xpad * 2
-
- return (width, width)
-
- def do_get_preferred_height(self, widget):
- height = self._icon_height + self.props.ypad * 2
-
- return (height, height)
-
- def do_activate(self, event, widget, path, bg_area, cell_area, flags):
- """Activate event for the cellrenderer"""
- self.emit('clicked', path)
-
- @GObject.Property(type=int, default=0, minimum=0, maximum=2)
- def show_star(self):
- return self._show_star
-
- @show_star.setter # type: ignore
- def show_star(self, value):
- """Set the show-star value
-
- :param int value: Possible values: 0 = not selected,
- 1 = selected, 2 = do not show.
- """
- self._show_star = value
-
- if value == 2:
- self.props.visible = False
- else:
- self.props.visible = True
-
-
-class StarHandlerWidget(object):
- """Handles the treeview column for favorites (stars)."""
-
- def __init__(self, parent, star_index):
- """Initialize.
-
- :param parent: The parent widget
- :param int star_index: The column of the stars
- """
- self.star_renderer_click = False
- self._star_index = star_index
- self._parent = parent
-
- def add_star_renderers(self, col):
- """Adds the star renderer column
-
- :param col: GtkTreeViewColumn to use
- """
- star_renderer = CellRendererStar()
- star_renderer.connect("clicked", self._on_star_toggled)
-
- col.pack_start(star_renderer, False)
- col.add_attribute(star_renderer, 'show_star', self._star_index)
-
- def _on_star_toggled(self, widget, path):
- """Called if a star is clicked"""
- model = self._parent.props.model
- try:
- _iter = model.get_iter(path)
- except ValueError:
- return
-
- try:
- if model[_iter][self._star_index] == 2:
- return
- except AttributeError:
- return
-
- new_value = not model[_iter][self._star_index]
- model[_iter][self._star_index] = new_value
- coresong = model[_iter][7]
- coresong.props.favorite = new_value
-
- # Use this flag to ignore the upcoming _on_item_activated call
- self.star_renderer_click = True
diff --git a/gnomemusic/window.py b/gnomemusic/window.py
index 846e3b81..f0eb4312 100644
--- a/gnomemusic/window.py
+++ b/gnomemusic/window.py
@@ -22,11 +22,12 @@
# code, but you are not obligated to do so. If you do not wish to do so,
# delete this exception statement from your version.
-from gi.repository import Gtk, Gdk, Gio, GLib, GObject, Handy
+from typing import Optional
+
+from gi.repository import Adw, Gtk, Gdk, Gio, GLib, GObject
from gettext import gettext as _
from gnomemusic.gstplayer import Playback
-from gnomemusic.mediakeys import MediaKeys
from gnomemusic.player import RepeatMode
from gnomemusic.search import Search
from gnomemusic.trackerwrapper import TrackerState
@@ -38,7 +39,6 @@ from gnomemusic.views.searchview import SearchView
from gnomemusic.views.songsview import SongsView
from gnomemusic.views.playlistsview import PlaylistsView
from gnomemusic.widgets.headerbar import HeaderBar
-from gnomemusic.widgets.notificationspopup import NotificationsPopup # noqa
from gnomemusic.widgets.playertoolbar import PlayerToolbar # noqa: F401
from gnomemusic.widgets.playlistdialog import PlaylistDialog
from gnomemusic.widgets.searchheaderbar import SearchHeaderBar
@@ -47,7 +47,7 @@ from gnomemusic.windowplacement import WindowPlacement
@Gtk.Template(resource_path="/org/gnome/Music/ui/Window.ui")
-class Window(Handy.ApplicationWindow):
+class Window(Adw.ApplicationWindow):
__gtype_name__ = "Window"
@@ -55,13 +55,13 @@ class Window(Handy.ApplicationWindow):
selected_songs_count = GObject.Property(type=int, default=0, minimum=0)
selection_mode = GObject.Property(type=bool, default=False)
- notifications_popup = Gtk.Template.Child()
_headerbar_stack = Gtk.Template.Child()
- _key_controller = Gtk.Template.Child()
+ _loading_progress = Gtk.Template.Child()
_overlay = Gtk.Template.Child()
_player_toolbar = Gtk.Template.Child()
_selection_toolbar = Gtk.Template.Child()
_stack = Gtk.Template.Child()
+ _toast_overlay = Gtk.Template.Child()
def __init__(self, app):
"""Initialize the main window.
@@ -90,14 +90,14 @@ class Window(Handy.ApplicationWindow):
self._current_view = None
self._view_before_search = None
+ self._playlist_dialog: Optional[PlaylistDialog] = None
+
self._player = app.props.player
self._search = app.props.search
self._startup_timeout_id = 0
self._setup_view()
- MediaKeys(self._player, self)
-
def _setup_view(self):
self._headerbar = HeaderBar(self._app)
self._headerbar.props.stack = self._stack
@@ -228,11 +228,11 @@ class Window(Handy.ApplicationWindow):
if self.views[View.ALBUM] is not None:
return
- self._btn_ctrl = Gtk.GestureMultiPress().new(self)
- self._btn_ctrl.props.propagation_phase = Gtk.PropagationPhase.CAPTURE
+ ctrl = Gtk.GestureClick().new()
# Mouse button 8 is the back button.
- self._btn_ctrl.props.button = 8
- self._btn_ctrl.connect("pressed", self._on_back_button_pressed)
+ ctrl.props.button = 8
+ ctrl.connect("pressed", self._on_back_button_pressed)
+ self.add_controller(ctrl)
self.views[View.EMPTY].props.state = EmptyView.State.SEARCH
@@ -249,9 +249,9 @@ class Window(Handy.ApplicationWindow):
# from being displayed during startup
for i in self.views[View.ALBUM:]:
if i.props.title:
- self._stack.add_titled(i, i.props.name, i.props.title)
- self._stack.child_set_property(
- i, "icon-name", i.props.icon_name)
+ stackpage = self._stack.add_titled(
+ i, i.props.name, i.props.title)
+ stackpage.props.icon_name = i.props.icon_name
else:
self._stack.add_named(i, i.props.name)
@@ -282,12 +282,22 @@ class Window(Handy.ApplicationWindow):
self.props.active_view.deselect_all()
+ @GObject.Property(
+ type=HeaderBar, default=None, flags=GObject.ParamFlags.READABLE)
+ def headerbar(self) -> HeaderBar:
+ """Get headerbar instance.
+
+ :returns: The headerbar
+ :rtype: HeaderBar
+ """
+ return self._headerbar
+
@Gtk.Template.Callback()
def _on_key_press(self, controller, keyval, keycode, state):
modifiers = state & Gtk.accelerator_get_default_mod_mask()
control_mask = Gdk.ModifierType.CONTROL_MASK
shift_mask = Gdk.ModifierType.SHIFT_MASK
- mod1_mask = Gdk.ModifierType.MOD1_MASK
+ alt_mask = Gdk.ModifierType.ALT_MASK
shift_ctrl_mask = control_mask | shift_mask
# Ctrl+<KEY>
@@ -327,7 +337,7 @@ class Window(Handy.ApplicationWindow):
if keyval == Gdk.KEY_A:
self._deselect_all()
# Alt+<KEY>
- elif modifiers == mod1_mask:
+ elif modifiers == alt_mask:
# Go back from child view on Alt + Left
if keyval == Gdk.KEY_Left:
self._switch_back_from_childview()
@@ -374,6 +384,7 @@ class Window(Handy.ApplicationWindow):
and GLib.unichar_isprint(chr(key_unic))
and (modifiers == shift_mask
or modifiers == 0)
+ and self.views[View.PLAYLIST] is not None
and not self.views[View.PLAYLIST].rename_active
and not self.props.selection_mode
and self._headerbar.props.state != HeaderBar.State.SEARCH):
@@ -442,9 +453,22 @@ class Window(Handy.ApplicationWindow):
def _on_selection_mode_changed(self, widget, data=None):
if (not self.props.selection_mode
and self._player.state == Playback.STOPPED):
- self._player_toolbar.hide()
+ self._player_toolbar.props.revealed = False
+
+ def _on_add_to_playlist(self, widget: SelectionToolbar) -> None:
+
+ def on_response(dialog: PlaylistDialog, response_id: int) -> None:
+ if not self._playlist_dialog:
+ return
+
+ if response_id == Gtk.ResponseType.ACCEPT:
+ playlist = self._playlist_dialog.props.selected_playlist
+ playlist.add_songs(selected_songs)
+
+ self.props.selection_mode = False
+ self._playlist_dialog.destroy()
+ self._playlist_dialog = None
- def _on_add_to_playlist(self, widget):
if self.props.active_view == self.views[View.PLAYLIST]:
return
@@ -453,18 +477,31 @@ class Window(Handy.ApplicationWindow):
if len(selected_songs) < 1:
return
- playlist_dialog = PlaylistDialog(self._app)
- playlist_dialog.props.transient_for = self
- if playlist_dialog.run() == Gtk.ResponseType.ACCEPT:
- playlist = playlist_dialog.props.selected_playlist
- playlist.add_songs(selected_songs)
-
- self.props.selection_mode = False
- playlist_dialog.destroy()
+ self._playlist_dialog = PlaylistDialog(self._app)
+ self._playlist_dialog.props.transient_for = self
+ self._playlist_dialog.connect("response", on_response)
+ self._playlist_dialog.present()
def set_player_visible(self, visible):
"""Set PlayWidget action visibility
:param bool visible: actionbar visibility
"""
- self._player_toolbar.set_visible(visible)
+ self._player_toolbar.props.revealed = visible
+
+ def loading_pulse(self) -> bool:
+ """Pulse the loading progress bar
+
+ :returns: GLib.SOURCE_CONTINUE
+ :rtype: bool
+ """
+ self._loading_progress.pulse()
+
+ return GLib.SOURCE_CONTINUE
+
+ def loading_visible(self, show: bool) -> None:
+ """Sets visibility of the loading progressbar
+
+ :param bool show: Wheter to show the loading bar
+ """
+ self._loading_progress.props.visible = show
diff --git a/gnomemusic/windowplacement.py b/gnomemusic/windowplacement.py
index 2eb5bff7..ee7889c5 100644
--- a/gnomemusic/windowplacement.py
+++ b/gnomemusic/windowplacement.py
@@ -22,8 +22,14 @@
# code, but you are not obligated to do so. If you do not wish to do so,
# delete this exception statement from your version.
+from __future__ import annotations
+import typing
+
from gi.repository import GLib, GObject
+if typing.TYPE_CHECKING:
+ from gnomemusic.window import Window
+
class WindowPlacement(GObject.GObject):
"""Main window placement
@@ -47,42 +53,35 @@ class WindowPlacement(GObject.GObject):
self._restore_window_state()
- self._window_placement_update_timeout = None
+ self._window_placement_update_timeout = 0
self._window.connect('notify::is-maximized', self._on_maximized)
- self._window.connect('configure-event', self._on_configure_event)
+ self._window.connect("notify::default-height", self._on_size_change)
+ self._window.connect("notify::default-width", self._on_size_change)
def _restore_window_state(self):
size_setting = self._settings.get_value('window-size')
if (len(size_setting) == 2
and isinstance(size_setting[0], int)
and isinstance(size_setting[1], int)):
- self._window.resize(size_setting[0], size_setting[1])
-
- position_setting = self._settings.get_value('window-position')
- if (len(position_setting) == 2
- and isinstance(position_setting[0], int)
- and isinstance(position_setting[1], int)):
- self._window.move(position_setting[0], position_setting[1])
+ self._window.set_default_size(size_setting[0], size_setting[1])
if self._settings.get_value('window-maximized'):
self._window.maximize()
- def _on_configure_event(self, widget, event):
- if self._window_placement_update_timeout is None:
+ def _on_size_change(
+ self, window: Window, size: GObject.ParamSpecInt) -> None:
+ if self._window_placement_update_timeout == 0:
self._window_placement_update_timeout = GLib.timeout_add(
- 500, self._store_size_and_position, widget)
-
- def _store_size_and_position(self, widget):
- size = widget.get_size()
- self._settings.set_value(
- 'window-size', GLib.Variant('ai', [size[0], size[1]]))
+ 500, self._store_size, window)
- position = widget.get_position()
+ def _store_size(self, window: Window) -> bool:
+ width = window.get_width()
+ height = window.get_height()
self._settings.set_value(
- 'window-position', GLib.Variant('ai', [position[0], position[1]]))
+ "window-size", GLib.Variant("ai", [width, height]))
GLib.source_remove(self._window_placement_update_timeout)
- self._window_placement_update_timeout = None
+ self._window_placement_update_timeout = 0
return False
diff --git a/help/LINGUAS b/help/LINGUAS
index 8a3116eb..1c5acb5a 100644
--- a/help/LINGUAS
+++ b/help/LINGUAS
@@ -16,5 +16,8 @@ nl
pl
pt_BR
ro
+ru
sv
+tr
uk
+zh_CN
diff --git a/help/ca/ca.po b/help/ca/ca.po
index 2b89acc9..7ace15e6 100644
--- a/help/ca/ca.po
+++ b/help/ca/ca.po
@@ -2,9 +2,9 @@
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
-"POT-Creation-Date: 2019-09-24 00:24+0000\n"
-"PO-Revision-Date: 2018-02-05 19:52+0000\n"
-"Last-Translator: Jaume Jorba <jaume.jorba@gmail.com>\n"
+"POT-Creation-Date: 2022-07-25 15:45+0000\n"
+"PO-Revision-Date: 2022-08-09 19:52+0000\n"
+"Last-Translator: Jordi Mas i Herǹandez <jmas@softcatala.org>\n"
"Language-Team: Catalan (http://www.transifex.com/softcatala/gnome-"
"documentation-catalan/language/ca/)\n"
"Language: ca\n"
@@ -19,7 +19,7 @@ msgid "translator-credits"
msgstr "Jaume Jorba <jaume.jorba@gmail.com>, 2018"
#. (itstool) path: credit/name
-#: C/introduction.page:11 C/index.page:11 C/play-music.page:11
+#: C/introduction.page:11 C/index.page:12 C/play-music.page:11
#: C/playlist-create-albums.page:11 C/playlist-create-songs.page:11
#: C/playlist-create-artists.page:11 C/playlist-delete.page:11
#: C/playlist-remove-songs.page:11 C/playlist-repeat.page:11
@@ -28,7 +28,7 @@ msgid "Shobha Tyagi"
msgstr "Shobha Tyagi"
#. (itstool) path: credit/years
-#: C/introduction.page:13 C/index.page:13 C/play-music.page:13
+#: C/introduction.page:13 C/index.page:14 C/play-music.page:13
#: C/playlist-create-albums.page:13 C/playlist-create-songs.page:13
#: C/playlist-create-artists.page:13 C/playlist-delete.page:13
#: C/playlist-remove-songs.page:13 C/playlist-repeat.page:13
@@ -43,7 +43,7 @@ msgid ""
"A simple and elegant replacement for using <app>Files</app> to show the "
"music directory."
msgstr ""
-"Un senzill i elegant reemplaçament per a utilitzar el <app>Fitxers</app> per "
+"Un senzill i elegant reemplaçament del <app>Fitxers</app> com a eina per "
"a mostrar el directori de música."
#. (itstool) path: page/title
@@ -53,18 +53,24 @@ msgstr "Introducció al Música"
#. (itstool) path: info/title
#: C/index.page:6
-msgctxt "link"
+msgctxt "link:trail"
msgid "Music"
msgstr "Música"
#. (itstool) path: info/title
#: C/index.page:7
+msgctxt "link"
+msgid "Music"
+msgstr "Música"
+
+#. (itstool) path: info/title
+#: C/index.page:8
msgctxt "text"
msgid "Music"
msgstr "Música"
#. (itstool) path: page/title
-#: C/index.page:18
+#: C/index.page:19
msgid "<_:media-1/> Music"
msgstr "<_:media-1/> Música"
@@ -99,14 +105,14 @@ msgid ""
"You can play your favorite music by creating a playlist or by simply "
"clicking on the song of your choice from any view."
msgstr ""
-"Podeu reproduir la teva música preferida creant una llista de reproducció o "
-"simplement fent clic sobre la cançó escollida des de qualsevol vista."
+"Podeu reproduir la vostra música preferida creant una llista de reproducció "
+"o simplement fent clic sobre la cançó escollida des de qualsevol vista."
#. (itstool) path: steps/title
#: C/play-music.page:28 C/playlist-delete.page:27
#: C/playlist-remove-songs.page:27
msgid "While in <em>Playlists</em>:"
-msgstr "Mentre s'estigui a la <em>llista de reproducció</em>:"
+msgstr "Mentre s'estigui a les <em>llistes de reproducció</em>:"
#. (itstool) path: item/p
#: C/play-music.page:30
@@ -171,7 +177,7 @@ msgstr ""
#: C/playlist-create-artists.page:40
msgid "Click on <gui>New Playlist</gui> and type a name for your playlist."
msgstr ""
-"Feu clic a <gui>Llista nova de reproducció</gui> i escriviu un nom per a la "
+"Feu clic a <gui>Llista de reproducció nova</gui> i escriviu un nom per a la "
"llista."
#. (itstool) path: item/p
@@ -214,7 +220,7 @@ msgid ""
"gui><gui>Select All</gui></guiseq> in the toolbar or press "
"<keyseq><key>Ctrl</key><key>A</key></keyseq>."
msgstr ""
-"Per a seleccionar totes les cançons fer clic a <guiseq><gui>Feu clic als "
+"Per a seleccionar totes les cançons feu clic a <guiseq><gui>Feu clic als "
"elements per a seleccionar-los</gui><gui>Selecciona-ho tot</gui></guiseq> a "
"la barra d'eines o premeu <keyseq><key>Ctrl</key><key>A</key></keyseq>."
@@ -245,7 +251,7 @@ msgid ""
"You can view all the songs by clicking on the <gui style=\"button\">Songs</"
"gui> button."
msgstr ""
-"Es poden veure totes les cançons fent clic al botó <gui style=\"button"
+"Es poden veure totes les cançons fent clic al botó <gui style=\"button"
"\">Cançons</gui>."
#. (itstool) path: steps/title
@@ -267,7 +273,7 @@ msgid ""
"Click on <gui style=\"button\">New Playlist</gui> and type a name for your "
"playlist."
msgstr ""
-"Feu clic a <gui style=\"button\">Nova llista de reproducció</gui> i escriure "
+"Feu clic a <gui style=\"button\">Llista de reproducció nova</gui> i escriure "
"el nom de la llista."
#. (itstool) path: info/desc
@@ -405,7 +411,7 @@ msgstr ""
#. (itstool) path: info/desc
#: C/playlist-shuffle.page:18
msgid "Shuffle songs in the playlist."
-msgstr "Barrejar les cançons a la llista de reproducció."
+msgstr "Mesclar les cançons a la llista de reproducció."
#. (itstool) path: page/title
#: C/playlist-shuffle.page:22
@@ -418,7 +424,7 @@ msgid ""
"In the taskbar, click on the button on right hand side and select "
"<gui>Shuffle</gui>."
msgstr ""
-"A la barra de tasques, fer clic al botó de la banda dreta i seleccionar "
+"A la barra de tasques, fer clic al botó de la banda dreta i seleccioneu "
"<gui>Mescla</gui>."
#. (itstool) path: info/desc
@@ -439,8 +445,8 @@ msgid ""
"searching."
msgstr ""
"Es poden cercar àlbums, artistes, cançons i llistes de reproducció. "
-"Seleccionar el que es vol cercar i aleshores fer clic al botó <gui>Cerca</"
-"gui> i començar la cerca."
+"Seleccioneu el que voleu cercar i aleshores feu clic al botó <gui>Cerca</"
+"gui> i comenceu la cerca."
#. (itstool) path: p/link
#: C/legal.xml:5
diff --git a/help/da/da.po b/help/da/da.po
index a7458dd1..250236ed 100644
--- a/help/da/da.po
+++ b/help/da/da.po
@@ -6,15 +6,16 @@
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
-"POT-Creation-Date: 2020-12-18 14:03+0000\n"
-"PO-Revision-Date: 2020-12-30 00:00+0200\n"
-"Last-Translator: scootergrisen\n"
+"POT-Creation-Date: 2021-04-29 10:20+0000\n"
+"PO-Revision-Date: 2022-01-26 19:41+0100\n"
+"Last-Translator: Alan Mortensen <alanmortensen.am@gmail.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
"Language: da\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.3\n"
#. Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2
msgctxt "_"
@@ -27,7 +28,7 @@ msgstr ""
"E-mail <dansk@dansk-gruppen.dk>"
#. (itstool) path: credit/name
-#: C/introduction.page:11 C/index.page:11 C/play-music.page:11
+#: C/introduction.page:11 C/index.page:12 C/play-music.page:11
#: C/playlist-create-albums.page:11 C/playlist-create-songs.page:11
#: C/playlist-create-artists.page:11 C/playlist-delete.page:11
#: C/playlist-remove-songs.page:11 C/playlist-repeat.page:11
@@ -36,7 +37,7 @@ msgid "Shobha Tyagi"
msgstr "Shobha Tyagi"
#. (itstool) path: credit/years
-#: C/introduction.page:13 C/index.page:13 C/play-music.page:13
+#: C/introduction.page:13 C/index.page:14 C/play-music.page:13
#: C/playlist-create-albums.page:13 C/playlist-create-songs.page:13
#: C/playlist-create-artists.page:13 C/playlist-delete.page:13
#: C/playlist-remove-songs.page:13 C/playlist-repeat.page:13
@@ -60,18 +61,24 @@ msgstr "Introduktion til Musik"
#. (itstool) path: info/title
#: C/index.page:6
-msgctxt "link"
+msgctxt "link:trail"
msgid "Music"
msgstr "Musik"
#. (itstool) path: info/title
#: C/index.page:7
+msgctxt "link"
+msgid "Music"
+msgstr "Musik"
+
+#. (itstool) path: info/title
+#: C/index.page:8
msgctxt "text"
msgid "Music"
msgstr "Musik"
#. (itstool) path: page/title
-#: C/index.page:18
+#: C/index.page:19
msgid "<_:media-1/> Music"
msgstr "<_:media-1/> Musik"
diff --git a/help/fr/fr.po b/help/fr/fr.po
index 68b0fc24..cdb39d6f 100644
--- a/help/fr/fr.po
+++ b/help/fr/fr.po
@@ -3,31 +3,32 @@
# This file is distributed under the same license as the gnome-music package.
# Alain Lojewski <allomervan@gmail.com>, 2014.
# Julien Hardelin <jhardlin@orange.fr>, 2014.
-# Charles Monzat <superboa@hotmail.fr>, 2017.
+# Charles Monzat <charles.monzat@free.fr>, 2017-2022.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
-"POT-Creation-Date: 2017-03-02 18:53+0000\n"
-"PO-Revision-Date: 2017-03-02 23:11+0100\n"
-"Last-Translator: Charles Monzat <superboa@hotmail.fr>\n"
-"Language-Team: français <gnomefr@traduc.org>\n"
+"POT-Creation-Date: 2021-12-25 18:25+0000\n"
+"PO-Revision-Date: 2022-04-11 22:35+0200\n"
+"Last-Translator: Charles Monzat <charles.monzat@free.fr>\n"
+"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Gtranslator 2.91.7\n"
+"X-Generator: Gtranslator 40.0\n"
#. Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2
msgctxt "_"
msgid "translator-credits"
msgstr ""
"Alain Lojewski <allomervan@gmail.com>, 2014\n"
-"Julien Hardelin <jhardlin@orange.fr>, 2014."
+"Julien Hardelin <jhardlin@orange.fr>, 2014\n"
+"Charles Monzat <charles.monzat@free.fr>, 2017-2022"
#. (itstool) path: credit/name
-#: C/introduction.page:11 C/index.page:11 C/play-music.page:11
+#: C/introduction.page:11 C/index.page:12 C/play-music.page:11
#: C/playlist-create-albums.page:11 C/playlist-create-songs.page:11
#: C/playlist-create-artists.page:11 C/playlist-delete.page:11
#: C/playlist-remove-songs.page:11 C/playlist-repeat.page:11
@@ -36,7 +37,7 @@ msgid "Shobha Tyagi"
msgstr "Shobha Tyagi"
#. (itstool) path: credit/years
-#: C/introduction.page:13 C/index.page:13 C/play-music.page:13
+#: C/introduction.page:13 C/index.page:14 C/play-music.page:13
#: C/playlist-create-albums.page:13 C/playlist-create-songs.page:13
#: C/playlist-create-artists.page:13 C/playlist-delete.page:13
#: C/playlist-remove-songs.page:13 C/playlist-repeat.page:13
@@ -51,8 +52,8 @@ msgid ""
"A simple and elegant replacement for using <app>Files</app> to show the "
"music directory."
msgstr ""
-"Une alternative simple et élégante à <app>Fichiers</app> pour l'affichage "
-"du répertoire de Musique."
+"Une alternative simple et élégante à <app>Fichiers</app> pour l’affichage du "
+"répertoire de Musique."
#. (itstool) path: page/title
#: C/introduction.page:22
@@ -61,30 +62,36 @@ msgstr "Introduction à Musique"
#. (itstool) path: info/title
#: C/index.page:6
-msgctxt "link"
+msgctxt "link:trail"
msgid "Music"
msgstr "Musique"
#. (itstool) path: info/title
#: C/index.page:7
+msgctxt "link"
+msgid "Music"
+msgstr "Musique"
+
+#. (itstool) path: info/title
+#: C/index.page:8
msgctxt "text"
msgid "Music"
msgstr "Musique"
#. (itstool) path: page/title
-#: C/index.page:18
+#: C/index.page:19
msgid "<_:media-1/> Music"
msgstr "<_:media-1/> Musique"
#. (itstool) path: section/title
#: C/index.page:25
msgid "Create playlist"
-msgstr "Création d'une liste de lecture"
+msgstr "Création d’une liste de lecture"
#. (itstool) path: section/title
#: C/index.page:28
msgid "Play a song"
-msgstr "Lecture d'un morceau"
+msgstr "Lecture d’un morceau"
#. (itstool) path: section/title
#: C/index.page:31
@@ -99,7 +106,7 @@ msgstr "Lire vos morceaux préférés."
#. (itstool) path: page/title
#: C/play-music.page:22
msgid "Play music"
-msgstr "Lecture d'un morceau"
+msgstr "Lecture d’un morceau"
#. (itstool) path: page/p
#: C/play-music.page:24
@@ -108,7 +115,7 @@ msgid ""
"clicking on the song of your choice from any view."
msgstr ""
"Pour lire votre musique préférée, créez une liste de lecture ou cliquez "
-"seulement sur le morceau de votre choix depuis n'importe quelle vue."
+"seulement sur le morceau de votre choix depuis n’importe quelle vue."
#. (itstool) path: steps/title
#: C/play-music.page:28 C/playlist-delete.page:27
@@ -129,17 +136,17 @@ msgstr "Cliquez sur le bouton ⚙ situé à droite."
#. (itstool) path: item/p
#: C/play-music.page:36
msgid "Click on <gui>Play</gui>."
-msgstr "Cliquez sur <gui>Lecture</gui>."
+msgstr "Cliquez sur <gui>Lire</gui>."
#. (itstool) path: info/desc
#: C/playlist-create-albums.page:18
msgid "Add songs to playlists using albums."
-msgstr "Ajouter des morceaux aux listes de lecture à partir d'albums."
+msgstr "Ajouter des morceaux aux listes de lecture à partir d’albums."
#. (itstool) path: page/title
#: C/playlist-create-albums.page:21
msgid "Create a playlist using albums"
-msgstr "Création d'une liste de lecture à partir d'un album"
+msgstr "Création d’une liste de lecture à partir d’un album"
#. (itstool) path: page/p
#: C/playlist-create-albums.page:23
@@ -153,27 +160,27 @@ msgstr ""
#. (itstool) path: steps/title
#: C/playlist-create-albums.page:27
msgid "To add all the songs in an album:"
-msgstr "Pour ajouter tous les morceaux d'un album :"
+msgstr "Pour ajouter tous les morceaux d’un album :"
#. (itstool) path: item/p
#: C/playlist-create-albums.page:29 C/playlist-create-songs.page:29
#: C/playlist-create-artists.page:30
msgid "Click on the check button in the top-right of the window."
msgstr ""
-"cliquez sur le bouton de vérification dans le coin supérieur droit de la "
-"fenêtre,"
+"Cliquez sur le bouton de sélection dans le coin supérieur droit de la "
+"fenêtre."
#. (itstool) path: item/p
#: C/playlist-create-albums.page:32
msgid "Select albums."
-msgstr "sélectionnez les albums,"
+msgstr "Sélectionnez les albums."
#. (itstool) path: item/p
#: C/playlist-create-albums.page:35 C/playlist-create-albums.page:60
#: C/playlist-create-songs.page:35 C/playlist-create-artists.page:37
msgid "Click on the <gui style=\"button\">Add to Playlist</gui> button."
msgstr ""
-"cliquez sur le bouton <gui style=\"button\">Ajouter à la liste de lecture</"
+"Cliquez sur le bouton <gui style=\"button\">Ajouter à la liste de lecture</"
"gui>."
#. (itstool) path: item/p
@@ -202,17 +209,17 @@ msgstr "Pour ajouter des morceaux choisis dans un album :"
#. (itstool) path: item/p
#: C/playlist-create-albums.page:51
msgid "Click on an album."
-msgstr "cliquez sur l'album,"
+msgstr "Cliquez sur l’album."
#. (itstool) path: item/p
#: C/playlist-create-albums.page:54
msgid "Click on the check button."
-msgstr "cliquez sur le bouton de vérification,"
+msgstr "Cliquez sur le bouton de sélection."
#. (itstool) path: item/p
#: C/playlist-create-albums.page:57
msgid "Select songs."
-msgstr "sélectionnez les morceaux."
+msgstr "Sélectionnez les morceaux."
#. (itstool) path: note/p
#: C/playlist-create-albums.page:72 C/playlist-create-songs.page:47
@@ -222,9 +229,10 @@ msgid ""
"gui><gui>Select All</gui></guiseq> in the toolbar or press "
"<keyseq><key>Ctrl</key><key>A</key></keyseq>."
msgstr ""
-"Pour sélectionner tous les morceaux, cliquez sur <guiseq><gui>Click on items "
-"to select them</gui><gui>Tout sélectionner</gui></guiseq> dans la barre "
-"d'outils, ou bien appuyez sur <keyseq><key>Ctrl</key><key>A</key></keyseq>."
+"Pour sélectionner tous les morceaux, cliquez sur <guiseq><gui>Cliquez sur "
+"les éléments pour les sélectionner</gui><gui>Tout sélectionner</gui></"
+"guiseq> dans la barre d’outils, ou bien appuyez sur <keyseq><key>Ctrl</"
+"key><key>A</key></keyseq>."
#. (itstool) path: note/p
#: C/playlist-create-albums.page:76 C/playlist-create-songs.page:51
@@ -233,8 +241,9 @@ msgid ""
"To clear the selection click <guiseq><gui>Click on items to select them</"
"gui><gui>Select None</gui></guiseq> in the toolbar."
msgstr ""
-"Pour annuler la sélection, cliquez sur <guiseq><gui>Click on items to select "
-"them</gui><gui>Tout désélectionner</gui></guiseq> dans la barre d'outils."
+"Pour annuler la sélection, cliquez sur <guiseq><gui>Cliquez sur les éléments "
+"pour les sélectionner</gui><gui>Tout désélectionner</gui></guiseq> dans la "
+"barre d’outils."
#. (itstool) path: info/desc
#: C/playlist-create-songs.page:18
@@ -260,13 +269,13 @@ msgstr ""
msgid "To create a new playlist while in <em>Songs</em> view:"
msgstr ""
"Pour créer une nouvelle liste de lecture en étant dans la fenêtre "
-"<em>morceaux</em> :"
+"<em>Morceaux</em> :"
#. (itstool) path: item/p
#: C/playlist-create-songs.page:32
msgid "Select all the songs you want to add to the playlist."
msgstr ""
-"sélectionnez tous les morceaux que vous voulez ajouter à la liste de lecture,"
+"Sélectionnez tous les morceaux que vous voulez ajouter à la liste de lecture."
#. (itstool) path: item/p
#: C/playlist-create-songs.page:38
@@ -274,7 +283,7 @@ msgid ""
"Click on <gui style=\"button\">New Playlist</gui> and type a name for your "
"playlist."
msgstr ""
-"cliquez sur <gui style=\"button\">Nouvelle liste de lecture</gui> et donnez-"
+"Cliquez sur <gui style=\"button\">Nouvelle liste de lecture</gui> et donnez-"
"lui un nom."
#. (itstool) path: info/desc
@@ -300,14 +309,15 @@ msgstr ""
#: C/playlist-create-artists.page:28
msgid "To create a new playlist while in <em>Artists</em> view:"
msgstr ""
-"Pour créer une nouvelle liste de lecture en fonction de <em>l'artiste</em> :"
+"Pour créer une nouvelle liste de lecture en étant dans la fenêtre "
+"<em>Artistes</em> :"
#. (itstool) path: item/p
#: C/playlist-create-artists.page:33
msgid "Select all the artists whose songs you want to add to the playlist."
msgstr ""
-"sélectionnez tous les artistes dont vous voulez regrouper les morceaux dans "
-"la liste de lecture,"
+"Sélectionnez tous les artistes dont vous voulez regrouper les morceaux dans "
+"la liste de lecture."
#. (itstool) path: item/p
#: C/playlist-create-artists.page:44
@@ -322,7 +332,7 @@ msgstr "Supprimer une liste de lecture superflue."
#. (itstool) path: page/title
#: C/playlist-delete.page:22
msgid "Delete a playlist"
-msgstr "Suppression d'une liste de lecture"
+msgstr "Suppression d’une liste de lecture"
#. (itstool) path: page/p
#: C/playlist-delete.page:24
@@ -332,12 +342,12 @@ msgstr "Pour supprimer une ancienne liste de lecture :"
#. (itstool) path: item/p
#: C/playlist-delete.page:29
msgid "Select the playlist which you want to delete."
-msgstr "sélectionnez la liste de lecture à supprimer,"
+msgstr "Sélectionnez la liste de lecture à supprimer."
#. (itstool) path: item/p
#: C/playlist-delete.page:35
msgid "Click on <gui>Delete</gui>."
-msgstr "cliquez sur <gui>Supprimer</gui>."
+msgstr "Cliquez sur <gui>Supprimer</gui>."
#. (itstool) path: info/desc
#: C/playlist-remove-songs.page:18
@@ -352,34 +362,34 @@ msgstr "Suppression de morceaux"
#. (itstool) path: page/p
#: C/playlist-remove-songs.page:24
msgid "You can remove any unwanted songs from a playlist."
-msgstr "Pour supprimer des morceaux obsolètes d'une liste de lecture :"
+msgstr "Pour supprimer des morceaux obsolètes d’une liste de lecture :"
#. (itstool) path: item/p
#: C/playlist-remove-songs.page:29
msgid "Select the playlist from which you want to remove songs."
-msgstr "sélectionnez la liste de lecture à nettoyer,"
+msgstr "Sélectionnez la liste de lecture à nettoyer."
#. (itstool) path: item/p
#: C/playlist-remove-songs.page:32
msgid "Click on the check button on the toolbar."
-msgstr "cliquez sur le bouton de vérification dans la barre d'outils,"
+msgstr "Cliquez sur le bouton de sélection dans la barre d’outils."
#. (itstool) path: item/p
#: C/playlist-remove-songs.page:35
msgid "Select all the songs which you want to remove."
-msgstr "sélectionnez tous les morceaux à supprimer,"
+msgstr "Sélectionnez tous les morceaux à supprimer."
#. (itstool) path: item/p
#: C/playlist-remove-songs.page:38
msgid "Click on <gui style=\"button\">Remove from Playlist</gui>."
msgstr ""
-"cliquez sur <gui style=\"button\">Supprimer de la liste de lecture</gui>."
+"Cliquez sur <gui style=\"button\">Supprimer de la liste de lecture</gui>."
#. (itstool) path: info/desc
#: C/playlist-repeat.page:18
msgid "Repeat all songs in the playlist or only the current song."
msgstr ""
-"Répéter tous les tittres d'une liste de lecture ou seulement la chanson en "
+"Répéter tous les titres d’une liste de lecture ou seulement la chanson en "
"cours de lecture."
#. (itstool) path: page/title
@@ -390,7 +400,7 @@ msgstr "Répétition de pistes"
#. (itstool) path: list/title
#: C/playlist-repeat.page:25
msgid "In the taskbar, click on the button on the right side:"
-msgstr "Dans la barre de tâches, Cliquez sur le bouton situé à droite."
+msgstr "Dans la barre des tâches, cliquez sur le bouton situé à droite, puis :"
#. (itstool) path: item/p
#: C/playlist-repeat.page:27
@@ -420,7 +430,7 @@ msgid ""
"In the taskbar, click on the button on right hand side and select "
"<gui>Shuffle</gui>."
msgstr ""
-"Dans la barre des tâches, cliquez sur le bouton sur la droite et "
+"Dans la barre des tâches, cliquez sur le bouton situé à droite et "
"sélectionnez <gui>Mélanger</gui>."
#. (itstool) path: info/desc
@@ -442,17 +452,19 @@ msgid ""
msgstr ""
"Vous pouvez faire une recherche sur un artiste, sur un morceau ou sur une "
"liste de lecture. Sélectionnez votre choix et appuyez sur <gui>Rechercher</"
-"gui> pour lancer l'opération."
+"gui> pour lancer l’opération."
#. (itstool) path: p/link
#: C/legal.xml:5
msgid "Creative Commons Attribution-ShareAlike 3.0 Unported License"
-msgstr "Licence Creative Commons Attribution-ShareAlike 3.0 Unported"
+msgstr ""
+"Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 3.0 "
+"non transposé"
#. (itstool) path: license/p
#: C/legal.xml:4
msgid "This work is licensed under a <_:link-1/>."
-msgstr "Cette œuvre est distribuée sous licence <_:link-1/>."
+msgstr "Cette œuvre est distribuée sous <_:link-1/>."
#~ msgid "Click on <gui styl=\"button\">Select</gui>."
#~ msgstr "Cliquez sur <gui styl=\"button\">Sélectionner</gui>."
diff --git a/help/hr/hr.po b/help/hr/hr.po
index d13e362b..4f8f7204 100644
--- a/help/hr/hr.po
+++ b/help/hr/hr.po
@@ -6,17 +6,17 @@
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
-"POT-Creation-Date: 2017-08-26 17:13+0000\n"
-"PO-Revision-Date: 2018-04-08 20:32+0200\n"
+"POT-Creation-Date: 2022-07-25 15:45+0000\n"
+"PO-Revision-Date: 2022-08-17 23:18+0200\n"
+"Last-Translator: gogo <trebelnik2@gmail.com>\n"
"Language-Team: Croatian <hr@li.org>\n"
+"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: hr\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"Last-Translator: \n"
-"X-Generator: Poedit 2.0.6\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Poedit 3.1.1\n"
#. Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2
msgctxt "_"
@@ -26,7 +26,7 @@ msgstr ""
" gogo https://launchpad.net/~trebelnik-stefina"
#. (itstool) path: credit/name
-#: C/introduction.page:11 C/index.page:11 C/play-music.page:11
+#: C/introduction.page:11 C/index.page:12 C/play-music.page:11
#: C/playlist-create-albums.page:11 C/playlist-create-songs.page:11
#: C/playlist-create-artists.page:11 C/playlist-delete.page:11
#: C/playlist-remove-songs.page:11 C/playlist-repeat.page:11
@@ -35,7 +35,7 @@ msgid "Shobha Tyagi"
msgstr "Shobha Tyagi"
#. (itstool) path: credit/years
-#: C/introduction.page:13 C/index.page:13 C/play-music.page:13
+#: C/introduction.page:13 C/index.page:14 C/play-music.page:13
#: C/playlist-create-albums.page:13 C/playlist-create-songs.page:13
#: C/playlist-create-artists.page:13 C/playlist-delete.page:13
#: C/playlist-remove-songs.page:13 C/playlist-repeat.page:13
@@ -50,8 +50,8 @@ msgid ""
"A simple and elegant replacement for using <app>Files</app> to show the "
"music directory."
msgstr ""
-"Jednostavna i elegantna zamjena za korištenje <app>Datoteka</app> za "
-"prikaz glazbene mape."
+"Jednostavna i elegantna zamjena za korištenje <app>Datoteka</app> za prikaz "
+"glazbene mape."
#. (itstool) path: page/title
#: C/introduction.page:22
@@ -60,18 +60,24 @@ msgstr "Uvod u Glazbu"
#. (itstool) path: info/title
#: C/index.page:6
-msgctxt "link"
+msgctxt "link:trail"
msgid "Music"
msgstr "Glazba"
#. (itstool) path: info/title
#: C/index.page:7
+msgctxt "link"
+msgid "Music"
+msgstr "Glazba"
+
+#. (itstool) path: info/title
+#: C/index.page:8
msgctxt "text"
msgid "Music"
msgstr "Glazba"
#. (itstool) path: page/title
-#: C/index.page:18
+#: C/index.page:19
msgid "<_:media-1/> Music"
msgstr "<_:media-1/> Glazba"
@@ -143,11 +149,11 @@ msgstr "Stvaranje popisa izvođenja pomoću albuma"
#. (itstool) path: page/p
#: C/playlist-create-albums.page:23
msgid ""
-"You can view all your albums by clicking on the <gui style=\"button"
-"\">Albums</gui> button."
+"You can view all your albums by clicking on the <gui "
+"style=\"button\">Albums</gui> button."
msgstr ""
-"Možete vidjeti sve svoje albume klikom na <gui style=\"button\">Albumi</"
-"gui> tipku."
+"Možete vidjeti sve svoje albume klikom na <gui style=\"button\">Albumi</gui> "
+"tipku."
#. (itstool) path: steps/title
#: C/playlist-create-albums.page:27
@@ -169,8 +175,7 @@ msgstr "Odaberite albume."
#: C/playlist-create-albums.page:35 C/playlist-create-albums.page:60
#: C/playlist-create-songs.page:35 C/playlist-create-artists.page:37
msgid "Click on the <gui style=\"button\">Add to Playlist</gui> button."
-msgstr ""
-"Kliknite na <gui style=\"button\">Dodaj u popis izvođenja</gui> tipku."
+msgstr "Kliknite na <gui style=\"button\">Dodaj u popis izvođenja</gui> tipku."
#. (itstool) path: item/p
#: C/playlist-create-albums.page:38 C/playlist-create-albums.page:63
@@ -230,8 +235,8 @@ msgid ""
"To clear the selection click <guiseq><gui>Click on items to select them</"
"gui><gui>Select None</gui></guiseq> in the toolbar."
msgstr ""
-"Kako bi uklonili odabir kliknite na <guiseq><gui>Klikni na stavku za "
-"odabir</gui><gui>Ukloni odabir</gui></guiseq> u alatnoj traci."
+"Kako bi uklonili odabir kliknite na <guiseq><gui>Klikni na stavku za odabir</"
+"gui><gui>Ukloni odabir</gui></guiseq> u alatnoj traci."
#. (itstool) path: info/desc
#: C/playlist-create-songs.page:18
@@ -249,8 +254,7 @@ msgid ""
"You can view all the songs by clicking on the <gui style=\"button\">Songs</"
"gui> button."
msgstr ""
-"Možete vidjeti sve pjesme klikom na <gui style=\"button\">Pjesme</gui> "
-"tipku."
+"Možete vidjeti sve pjesme klikom na <gui style=\"button\">Pjesme</gui> tipku."
#. (itstool) path: steps/title
#: C/playlist-create-songs.page:27
@@ -269,8 +273,8 @@ msgid ""
"Click on <gui style=\"button\">New Playlist</gui> and type a name for your "
"playlist."
msgstr ""
-"Kliknite na <gui style=\"button\">Novi popis izvođenja</gui> i upišite "
-"naziv vašeg popisa izvođenja."
+"Kliknite na <gui style=\"button\">Novi popis izvođenja</gui> i upišite naziv "
+"vašeg popisa izvođenja."
#. (itstool) path: info/desc
#: C/playlist-create-artists.page:18
@@ -285,11 +289,11 @@ msgstr "Stvaranje popisa izvoÄ‘enja pomoću izvoÄ‘aÄa"
#. (itstool) path: page/p
#: C/playlist-create-artists.page:24
msgid ""
-"You can view all the artists and their songs by clicking on the <gui style="
-"\"button\">Artists</gui> button."
+"You can view all the artists and their songs by clicking on the <gui "
+"style=\"button\">Artists</gui> button."
msgstr ""
-"Možete vidjeti sve izvoÄ‘aÄe i njihove pjesme klikom na <gui style=\"button"
-"\">IzvoÄ‘aÄi</gui> tipku."
+"Možete vidjeti sve izvoÄ‘aÄe i njihove pjesme klikom na <gui "
+"style=\"button\">IzvoÄ‘aÄi</gui> tipku."
#. (itstool) path: steps/title
#: C/playlist-create-artists.page:28
@@ -397,12 +401,12 @@ msgstr ""
#. (itstool) path: info/desc
#: C/playlist-shuffle.page:18
msgid "Shuffle songs in the playlist."
-msgstr "Izmješajte pjesme na popisu izvođenja."
+msgstr "Pokrenite naizmjeniÄnu reprodukciju pjesama na popisu izvoÄ‘enja."
#. (itstool) path: page/title
#: C/playlist-shuffle.page:22
msgid "How do I shuffle my songs?"
-msgstr "Kako da izmješate svoje pjesme?"
+msgstr "Kako pokrenuti naizmjeniÄnu reprodukciju pjesama?"
#. (itstool) path: page/p
#: C/playlist-shuffle.page:24
diff --git a/help/nl/nl.po b/help/nl/nl.po
index 09d27558..50ac2669 100644
--- a/help/nl/nl.po
+++ b/help/nl/nl.po
@@ -1,29 +1,32 @@
# Dutch translation for gnome-music.
# Copyright (C) 2016 gnome-music's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-music package.
-# Justin van Steijn <justin50@live.nl>, 2016.
+# Justin van Steijn <jvs@fsfe.org>, 2016.
+# Nathan Follens <nfollens@gnome.org>, 2022.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
-"POT-Creation-Date: 2016-10-05 12:45+0000\n"
-"PO-Revision-Date: 2016-11-20 12:22+0100\n"
-"Last-Translator: Justin van Steijn <justin50@live.nl>\n"
+"POT-Creation-Date: 2022-05-10 09:09+0000\n"
+"PO-Revision-Date: 2022-06-30 21:18+0200\n"
+"Last-Translator: Nathan Follens <nfollens@gnome.org>\n"
"Language-Team: Dutch <gnome-nl-list@gnome.org>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 1.6.10\n"
+"X-Generator: Poedit 3.1\n"
#. Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2
msgctxt "_"
msgid "translator-credits"
-msgstr "Justin van Steijn <justin50@live.nl>, 2016."
+msgstr ""
+"Justin van Steijn <jvs@fsfe.org>, 2016.\n"
+"Nathan Follens <nfollens@gnome.org>, 2022."
#. (itstool) path: credit/name
-#: C/introduction.page:11 C/index.page:11 C/play-music.page:11
+#: C/introduction.page:11 C/index.page:12 C/play-music.page:11
#: C/playlist-create-albums.page:11 C/playlist-create-songs.page:11
#: C/playlist-create-artists.page:11 C/playlist-delete.page:11
#: C/playlist-remove-songs.page:11 C/playlist-repeat.page:11
@@ -32,7 +35,7 @@ msgid "Shobha Tyagi"
msgstr "Shobha Tyagi"
#. (itstool) path: credit/years
-#: C/introduction.page:13 C/index.page:13 C/play-music.page:13
+#: C/introduction.page:13 C/index.page:14 C/play-music.page:13
#: C/playlist-create-albums.page:13 C/playlist-create-songs.page:13
#: C/playlist-create-artists.page:13 C/playlist-delete.page:13
#: C/playlist-remove-songs.page:13 C/playlist-repeat.page:13
@@ -47,8 +50,8 @@ msgid ""
"A simple and elegant replacement for using <app>Files</app> to show the "
"music directory."
msgstr ""
-"Een eenvoudige en elegante vervanging voor het gebruiken van <app>Bestanden</"
-"app> om door de muziekmap te bladeren."
+"Een eenvoudige en elegante vervanging voor <app>Bestanden</app> om door de "
+"muziekmap te bladeren."
#. (itstool) path: page/title
#: C/introduction.page:22
@@ -57,18 +60,24 @@ msgstr "Inleiding tot Muziek"
#. (itstool) path: info/title
#: C/index.page:6
-msgctxt "link"
+msgctxt "link:trail"
msgid "Music"
msgstr "Muziek"
#. (itstool) path: info/title
#: C/index.page:7
+msgctxt "link"
+msgid "Music"
+msgstr "Muziek"
+
+#. (itstool) path: info/title
+#: C/index.page:8
msgctxt "text"
msgid "Music"
msgstr "Muziek"
#. (itstool) path: page/title
-#: C/index.page:18
+#: C/index.page:19
msgid "<_:media-1/> Music"
msgstr "<_:media-1/> Muziek"
@@ -131,7 +140,7 @@ msgstr "Klik op <gui>Afspelen</gui>."
#. (itstool) path: info/desc
#: C/playlist-create-albums.page:18
msgid "Add songs to playlists using albums."
-msgstr "Nummers aan afspeellijsten toevoegen door gebruik te maken van albums."
+msgstr "Voeg nummers aan afspeellijsten toe door gebruik te maken van albums."
#. (itstool) path: page/title
#: C/playlist-create-albums.page:21
@@ -144,20 +153,19 @@ msgid ""
"You can view all your albums by clicking on the <gui style=\"button"
"\">Albums</gui> button."
msgstr ""
-"U kunt al uw albums bekijken door op de <gui style=\"button\">Albums</gui>-"
-"knop te klikken."
+"U kunt al uw albums bekijken door op de knop <gui style=\"button\">Albums</"
+"gui> te klikken."
#. (itstool) path: steps/title
#: C/playlist-create-albums.page:27
msgid "To add all the songs in an album:"
-msgstr "Om alle nummers in een album toe toe te voegen:"
+msgstr "Om alle nummers in een album toe te voegen:"
#. (itstool) path: item/p
#: C/playlist-create-albums.page:29 C/playlist-create-songs.page:29
#: C/playlist-create-artists.page:30
msgid "Click on the check button in the top-right of the window."
-msgstr ""
-"Druk op de knop met het vinkje in de rechter-bovenhoek van het venster."
+msgstr "Klik op de knop met het vinkje in de rechterbovenhoek van het venster."
#. (itstool) path: item/p
#: C/playlist-create-albums.page:32
@@ -168,8 +176,7 @@ msgstr "Selecteer albums."
#: C/playlist-create-albums.page:35 C/playlist-create-albums.page:60
#: C/playlist-create-songs.page:35 C/playlist-create-artists.page:37
msgid "Click on the <gui style=\"button\">Add to Playlist</gui> button."
-msgstr ""
-"Klik op de <gui style=\"button\">Aan afspeellijst toevoegen</gui>-knop."
+msgstr "Klik op <gui style=\"button\">Toevoegen aan afspeellijst</gui>."
#. (itstool) path: item/p
#: C/playlist-create-albums.page:38 C/playlist-create-albums.page:63
@@ -234,12 +241,12 @@ msgstr ""
#. (itstool) path: info/desc
#: C/playlist-create-songs.page:18
msgid "Create playlist by selecting your favorite songs."
-msgstr "Een afspeellijst maken door uw favoriete nummers te selecteren."
+msgstr "Maak een afspeellijst aan door uw favoriete nummers te selecteren."
#. (itstool) path: page/title
#: C/playlist-create-songs.page:21
msgid "Create playlists using songs"
-msgstr "Afspeellijsten maken met nummers"
+msgstr "Afspeellijsten aanmaken met nummers"
#. (itstool) path: page/p
#: C/playlist-create-songs.page:23
@@ -247,14 +254,14 @@ msgid ""
"You can view all the songs by clicking on the <gui style=\"button\">Songs</"
"gui> button."
msgstr ""
-"U kunt alle nummers bekijken door te klikken op de <gui style=\"button"
-"\">Nummers</gui>-knop."
+"U kunt alle nummers bekijken door te klikken op <gui style=\"button"
+"\">Nummers</gui>."
#. (itstool) path: steps/title
#: C/playlist-create-songs.page:27
msgid "To create a new playlist while in <em>Songs</em> view:"
msgstr ""
-"Om een nieuwe afspeellijst te maken terwijl u in de <em>Nummers</em>-"
+"Om een nieuwe afspeellijst aan te maken terwijl u in de <em>Nummers</em>-"
"weergave bent:"
#. (itstool) path: item/p
@@ -274,12 +281,12 @@ msgstr ""
#. (itstool) path: info/desc
#: C/playlist-create-artists.page:18
msgid "Create playlist by selecting your favorite artists."
-msgstr "Een afspeellijst maken door uw favoriete artiesten te selecteren."
+msgstr "Maak een afspeellijst aan door uw favoriete artiesten te selecteren."
#. (itstool) path: page/title
#: C/playlist-create-artists.page:22
msgid "Create playlists using artists"
-msgstr "Afspeellijsten maken met artiesten"
+msgstr "Afspeellijsten aanmaken met artiesten"
#. (itstool) path: page/p
#: C/playlist-create-artists.page:24
@@ -287,21 +294,21 @@ msgid ""
"You can view all the artists and their songs by clicking on the <gui style="
"\"button\">Artists</gui> button."
msgstr ""
-"U kunt alle artiesten en hun nummers weergeven door te klikken op de <gui "
-"style=\"button\">Artiesten</gui>-knop."
+"U kunt alle artiesten en hun nummers weergeven door te klikken op <gui style="
+"\"button\">Artiesten</gui>."
#. (itstool) path: steps/title
#: C/playlist-create-artists.page:28
msgid "To create a new playlist while in <em>Artists</em> view:"
msgstr ""
-"Om een nieuwe afspeellijst te maken terwijl u in de <em>Artiesten</em>-"
+"Om een nieuwe afspeellijst aan te maken terwijl u in de <em>Artiesten</em>-"
"weergave bent:"
#. (itstool) path: item/p
#: C/playlist-create-artists.page:33
msgid "Select all the artists whose songs you want to add to the playlist."
msgstr ""
-"Selecteer alle artiesten wiens nummers u aan de afspeellijst wilt toevoegen."
+"Selecteer alle artiesten wier nummers u aan de afspeellijst wilt toevoegen."
#. (itstool) path: item/p
#: C/playlist-create-artists.page:44
@@ -311,7 +318,7 @@ msgstr "Klik op <gui>Selecteren</gui>."
#. (itstool) path: info/desc
#: C/playlist-delete.page:18
msgid "Remove an unwanted playlist."
-msgstr "Een overbodige afspeellijst verwijderen."
+msgstr "Verwijder een ongewenste afspeellijst."
#. (itstool) path: page/title
#: C/playlist-delete.page:22
@@ -321,7 +328,7 @@ msgstr "Een afspeellijst verwijderen"
#. (itstool) path: page/p
#: C/playlist-delete.page:24
msgid "You can remove an old and unwanted playlist."
-msgstr "U kunt een oude en overbodige afspeellijst verwijderen."
+msgstr "U kunt een oude en ongewenste afspeellijst verwijderen."
#. (itstool) path: item/p
#: C/playlist-delete.page:29
@@ -336,7 +343,7 @@ msgstr "Klik op <gui>Verwijderen</gui>."
#. (itstool) path: info/desc
#: C/playlist-remove-songs.page:18
msgid "Delete songs from the playlist."
-msgstr "Nummers uit een afspeellijst verwijderen."
+msgstr "Verwijder nummers uit een afspeellijst."
#. (itstool) path: page/title
#: C/playlist-remove-songs.page:22
@@ -346,7 +353,7 @@ msgstr "Nummers verwijderen"
#. (itstool) path: page/p
#: C/playlist-remove-songs.page:24
msgid "You can remove any unwanted songs from a playlist."
-msgstr "U kunt overbodige nummers uit een afspeellijst verwijderen."
+msgstr "U kunt ongewenste nummers uit een afspeellijst verwijderen."
#. (itstool) path: item/p
#: C/playlist-remove-songs.page:29
@@ -366,12 +373,12 @@ msgstr "Selecteer alle nummers die u wilt verwijderen."
#. (itstool) path: item/p
#: C/playlist-remove-songs.page:38
msgid "Click on <gui style=\"button\">Remove from Playlist</gui>."
-msgstr "Klik op <gui style=\"button\">Uit afspeellijst verwijderen</gui>."
+msgstr "Klik op <gui style=\"button\">Verwijderen uit afspeellijst</gui>."
#. (itstool) path: info/desc
#: C/playlist-repeat.page:18
msgid "Repeat all songs in the playlist or only the current song."
-msgstr "Alle nummers in de afspeellijst herhalen of alleen het huidige nummer."
+msgstr "Herhaal alle nummers in de afspeellijst of alleen het huidige nummer."
#. (itstool) path: page/title
#: C/playlist-repeat.page:22
@@ -398,12 +405,12 @@ msgstr ""
#. (itstool) path: info/desc
#: C/playlist-shuffle.page:18
msgid "Shuffle songs in the playlist."
-msgstr "Nummers in de afspeellijst willekeurig afspelen."
+msgstr "Speel nummers in de afspeellijst in willekeurige volgorde af."
#. (itstool) path: page/title
#: C/playlist-shuffle.page:22
msgid "How do I shuffle my songs?"
-msgstr "Hoe hussel ik mijn nummers?"
+msgstr "Hoe speel ik mijn nummers af in willekeurige volgorde?"
#. (itstool) path: page/p
#: C/playlist-shuffle.page:24
@@ -417,7 +424,7 @@ msgstr ""
#. (itstool) path: info/desc
#: C/search.page:18
msgid "Search through your music collection."
-msgstr "Door uw muziekverzameling zoeken."
+msgstr "Zoek in uw muziekverzameling."
#. (itstool) path: page/title
#: C/search.page:22
@@ -432,13 +439,13 @@ msgid ""
"searching."
msgstr ""
"U kunt door uw albums, artiesten, nummers en afspeellijsten zoeken. "
-"Selecteer waarin u wilt zoeken, selecteer dan de <gui>Zoeken</gui>-knop en "
-"begin met zoeken."
+"Selecteer waarin u wilt zoeken, klik op <gui>Zoeken</gui> en begin met "
+"zoeken."
#. (itstool) path: p/link
#: C/legal.xml:5
msgid "Creative Commons Attribution-ShareAlike 3.0 Unported License"
-msgstr "Creative Commons Naamsvermelding-GelijkDelen 3.0 Unported Licentie"
+msgstr "Creative Commons Naamsvermelding-GelijkDelen 3.0 Unported-licentie"
#. (itstool) path: license/p
#: C/legal.xml:4
diff --git a/help/ru/ru.po b/help/ru/ru.po
new file mode 100644
index 00000000..53ba09db
--- /dev/null
+++ b/help/ru/ru.po
@@ -0,0 +1,459 @@
+# Russian translation for gnome-music.
+# Copyright (C) 2022 gnome-music's COPYRIGHT HOLDER
+# This file is distributed under the same license as the gnome-music package.
+# Ser82-png <sw@atrus.ru>, 2022.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnome-music master\n"
+"POT-Creation-Date: 2022-01-08 22:22+0000\n"
+"PO-Revision-Date: 2022-01-21 01:03+1000\n"
+"Language-Team: Russian <gnome-cyr@gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ru\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Last-Translator: Ser82-png\n"
+"X-Generator: Poedit 2.3\n"
+
+#. Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2
+msgctxt "_"
+msgid "translator-credits"
+msgstr "Ser82-png <sw@atrus.ru>, 2022"
+
+#. (itstool) path: credit/name
+#: C/introduction.page:11 C/index.page:12 C/play-music.page:11
+#: C/playlist-create-albums.page:11 C/playlist-create-songs.page:11
+#: C/playlist-create-artists.page:11 C/playlist-delete.page:11
+#: C/playlist-remove-songs.page:11 C/playlist-repeat.page:11
+#: C/playlist-shuffle.page:11 C/search.page:11
+msgid "Shobha Tyagi"
+msgstr "Shobha Tyagi"
+
+#. (itstool) path: credit/years
+#: C/introduction.page:13 C/index.page:14 C/play-music.page:13
+#: C/playlist-create-albums.page:13 C/playlist-create-songs.page:13
+#: C/playlist-create-artists.page:13 C/playlist-delete.page:13
+#: C/playlist-remove-songs.page:13 C/playlist-repeat.page:13
+#: C/playlist-shuffle.page:13 C/search.page:13
+msgid "2014"
+msgstr "2014"
+
+#. (itstool) path: info/desc
+#. (itstool) path: page/p
+#: C/introduction.page:18 C/introduction.page:23
+msgid ""
+"A simple and elegant replacement for using <app>Files</app> to show the "
+"music directory."
+msgstr ""
+"ПроÑÑ‚Ð°Ñ Ð¸ ÑÐ»ÐµÐ³Ð°Ð½Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¼ÐµÐ½Ð° файлового менеджера <app>Файлы</app> Ð´Ð»Ñ "
+"Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¼ÑƒÐ·Ñ‹ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ каталога."
+
+#. (itstool) path: page/title
+#: C/introduction.page:22
+msgid "Introduction to Music"
+msgstr "Введение в \"Музыку\""
+
+#. (itstool) path: info/title
+#: C/index.page:6
+msgctxt "link:trail"
+msgid "Music"
+msgstr "Музыка"
+
+#. (itstool) path: info/title
+#: C/index.page:7
+msgctxt "link"
+msgid "Music"
+msgstr "Музыка"
+
+#. (itstool) path: info/title
+#: C/index.page:8
+msgctxt "text"
+msgid "Music"
+msgstr "Музыка"
+
+#. (itstool) path: page/title
+#: C/index.page:19
+msgid "<_:media-1/> Music"
+msgstr "<_:media-1/> Музыка"
+
+#. (itstool) path: section/title
+#: C/index.page:25
+msgid "Create playlist"
+msgstr "Создать ÑпиÑок воÑпроизведениÑ"
+
+#. (itstool) path: section/title
+#: C/index.page:28
+msgid "Play a song"
+msgstr "ВоÑпроизвеÑти композицию"
+
+#. (itstool) path: section/title
+#: C/index.page:31
+msgid "Remove songs and playlist"
+msgstr "Удалить композиции из ÑпиÑка воÑпроизведениÑ"
+
+#. (itstool) path: info/desc
+#: C/play-music.page:18
+msgid "Play your favorite songs."
+msgstr "ВоÑпроизвеÑти ваши любимые композиции."
+
+#. (itstool) path: page/title
+#: C/play-music.page:22
+msgid "Play music"
+msgstr "ВоÑпроизвеÑти музыкальную композицию"
+
+#. (itstool) path: page/p
+#: C/play-music.page:24
+msgid ""
+"You can play your favorite music by creating a playlist or by simply "
+"clicking on the song of your choice from any view."
+msgstr ""
+"Ð’Ñ‹ можете воÑпроизводить Ñвои любимые музыкальные композиции, Ñоздав "
+"ÑпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ проÑто щёлкнув нужную композицию в любой панели "
+"проÑмотра."
+
+#. (itstool) path: steps/title
+#: C/play-music.page:28 C/playlist-delete.page:27
+#: C/playlist-remove-songs.page:27
+msgid "While in <em>Playlists</em>:"
+msgstr "Ð’ <em>СпиÑках воÑпроизведениÑ</em>:"
+
+#. (itstool) path: item/p
+#: C/play-music.page:30
+msgid "Select a playlist."
+msgstr "Выберите ÑпиÑок воÑпроизведениÑ."
+
+#. (itstool) path: item/p
+#: C/play-music.page:33 C/playlist-delete.page:32
+msgid "Click on the gear button on the right hand side."
+msgstr "Щёлкните на кнопку шеÑтеренки Ñ Ð¿Ñ€Ð°Ð²Ð¾Ð¹ Ñтороны."
+
+#. (itstool) path: item/p
+#: C/play-music.page:36
+msgid "Click on <gui>Play</gui>."
+msgstr "Щёлкните <gui>ВоÑпроизвеÑти</gui>."
+
+#. (itstool) path: info/desc
+#: C/playlist-create-albums.page:18
+msgid "Add songs to playlists using albums."
+msgstr "Добавить композиции в ÑпиÑки воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ альбомов."
+
+#. (itstool) path: page/title
+#: C/playlist-create-albums.page:21
+msgid "Create a playlist using albums"
+msgstr "Создать ÑпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ альбомов"
+
+#. (itstool) path: page/p
+#: C/playlist-create-albums.page:23
+msgid ""
+"You can view all your albums by clicking on the <gui style=\"button"
+"\">Albums</gui> button."
+msgstr ""
+"Ð’Ñ‹ можете проÑмотреть вÑе Ñвои альбомы, нажав кнопку <gui style=\"button"
+"\">Ðльбомы</gui>."
+
+#. (itstool) path: steps/title
+#: C/playlist-create-albums.page:27
+msgid "To add all the songs in an album:"
+msgstr "Чтобы добавить вÑе композиции в альбоме:"
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:29 C/playlist-create-songs.page:29
+#: C/playlist-create-artists.page:30
+msgid "Click on the check button in the top-right of the window."
+msgstr "Ðажмите кнопку Ñ Ð³Ð°Ð»Ð¾Ñ‡ÐºÐ¾Ð¹ в правом верхнем углу окна."
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:32
+msgid "Select albums."
+msgstr "Выберите альбомы."
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:35 C/playlist-create-albums.page:60
+#: C/playlist-create-songs.page:35 C/playlist-create-artists.page:37
+msgid "Click on the <gui style=\"button\">Add to Playlist</gui> button."
+msgstr ""
+"Щёлкните по кнопке<gui style=\"button\">Добавить в ÑпиÑок воÑпроизведениÑ</"
+"gui>."
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:38 C/playlist-create-albums.page:63
+#: C/playlist-create-artists.page:40
+msgid "Click on <gui>New Playlist</gui> and type a name for your playlist."
+msgstr ""
+"Щёлкните <gui>Ðовый ÑпиÑок воÑпроизведениÑ</gui> и введите название Ñвоего "
+"ÑпиÑка."
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:42 C/playlist-create-albums.page:67
+#: C/playlist-create-songs.page:42
+msgid "Click on <gui style=\"button\">Select</gui>."
+msgstr "Щёлкните <gui style=\"button\">Выбрать</gui>."
+
+#. (itstool) path: page/p
+#: C/playlist-create-albums.page:46
+msgid "You can also create a playlist from specific songs."
+msgstr ""
+"Ð’Ñ‹ также можете Ñоздать ÑпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸Ð· конкретных композиций."
+
+#. (itstool) path: steps/title
+#: C/playlist-create-albums.page:49
+msgid "To add selected songs from an album:"
+msgstr "Чтобы добавить выбранные в альбоме композиции:"
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:51
+msgid "Click on an album."
+msgstr "Щёлкните на альбом."
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:54
+msgid "Click on the check button."
+msgstr "Щёлкните по кнопке Ñ Ð³Ð°Ð»Ð¾Ñ‡ÐºÐ¾Ð¹."
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:57
+msgid "Select songs."
+msgstr "Выберите композиции."
+
+#. (itstool) path: note/p
+#: C/playlist-create-albums.page:72 C/playlist-create-songs.page:47
+#: C/playlist-create-artists.page:49
+msgid ""
+"To select all the songs click <guiseq><gui>Click on items to select them</"
+"gui><gui>Select All</gui></guiseq> in the toolbar or press "
+"<keyseq><key>Ctrl</key><key>A</key></keyseq>."
+msgstr ""
+"Чтобы выбрать вÑе пеÑни, щёлкните <guiseq><gui>Ðажмите, чтобы выбрать</"
+"gui><gui>Выбрать вÑе</gui></guiseq> на панели инÑтрументов или нажмите "
+"<keyseq><key>Ctrl</key ><key>A</key></keyseq>."
+
+#. (itstool) path: note/p
+#: C/playlist-create-albums.page:76 C/playlist-create-songs.page:51
+#: C/playlist-create-artists.page:53
+msgid ""
+"To clear the selection click <guiseq><gui>Click on items to select them</"
+"gui><gui>Select None</gui></guiseq> in the toolbar."
+msgstr ""
+"Чтобы отменить выделение, нажмите <guiseq><gui>Ðажмите, чтобы выбрать</"
+"gui><gui>СнÑÑ‚ÑŒ выделение</gui></guiseq> на панели инÑтрументов."
+
+#. (itstool) path: info/desc
+#: C/playlist-create-songs.page:18
+msgid "Create playlist by selecting your favorite songs."
+msgstr "Создать ÑпиÑок воÑпроизведениÑ, выбрав Ñвои любимые композиции."
+
+#. (itstool) path: page/title
+#: C/playlist-create-songs.page:21
+msgid "Create playlists using songs"
+msgstr "Создать ÑпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ð° оÑнове отдельных композиции"
+
+#. (itstool) path: page/p
+#: C/playlist-create-songs.page:23
+msgid ""
+"You can view all the songs by clicking on the <gui style=\"button\">Songs</"
+"gui> button."
+msgstr ""
+"Ð’Ñ‹ можете проÑмотреть вÑе композиции, нажав кнопку <gui style=\"button"
+"\">Композиции</gui>."
+
+#. (itstool) path: steps/title
+#: C/playlist-create-songs.page:27
+msgid "To create a new playlist while in <em>Songs</em> view:"
+msgstr ""
+"Чтобы Ñоздать ÑпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð²ÐºÐ»Ð°Ð´ÐºÑƒ <em>Композиции</em>:"
+
+#. (itstool) path: item/p
+#: C/playlist-create-songs.page:32
+msgid "Select all the songs you want to add to the playlist."
+msgstr ""
+"Выберите вÑе композиции, которые хотите добавить в ÑпиÑок воÑпроизведениÑ."
+
+#. (itstool) path: item/p
+#: C/playlist-create-songs.page:38
+msgid ""
+"Click on <gui style=\"button\">New Playlist</gui> and type a name for your "
+"playlist."
+msgstr ""
+"Щёлкните <gui>Ðовый ÑпиÑок воÑпроизведениÑ</gui> и введите название Ñвоего "
+"ÑпиÑка."
+
+#. (itstool) path: info/desc
+#: C/playlist-create-artists.page:18
+msgid "Create playlist by selecting your favorite artists."
+msgstr "Создать ÑпиÑок воÑпроизведениÑ, выбрав Ñвоих любимых иÑполнителей."
+
+#. (itstool) path: page/title
+#: C/playlist-create-artists.page:22
+msgid "Create playlists using artists"
+msgstr "Создать ÑпиÑок воÑпроизведениÑ, Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ выбора иÑполнителей"
+
+#. (itstool) path: page/p
+#: C/playlist-create-artists.page:24
+msgid ""
+"You can view all the artists and their songs by clicking on the <gui style="
+"\"button\">Artists</gui> button."
+msgstr ""
+"Ð’Ñ‹ можете проÑмотреть вÑех иÑполнителей и их пеÑни, нажав кнопку <gui "
+"style=\"button\">ИÑполнители</gui>."
+
+#. (itstool) path: steps/title
+#: C/playlist-create-artists.page:28
+msgid "To create a new playlist while in <em>Artists</em> view:"
+msgstr ""
+"Чтобы Ñоздать новый ÑпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð²Ð¾ вкладке <em>ИÑполнители</em>:"
+
+#. (itstool) path: item/p
+#: C/playlist-create-artists.page:33
+msgid "Select all the artists whose songs you want to add to the playlist."
+msgstr ""
+"Выберите вÑех иÑполнителей, чьи пеÑни вы хотите добавить в ÑпиÑок "
+"воÑпроизведениÑ."
+
+#. (itstool) path: item/p
+#: C/playlist-create-artists.page:44
+msgid "Click on <gui>Select</gui>."
+msgstr "Щёлкните <gui>Выбрать</gui>."
+
+#. (itstool) path: info/desc
+#: C/playlist-delete.page:18
+msgid "Remove an unwanted playlist."
+msgstr "Удалить ненужный ÑпиÑок воÑпроизведениÑ."
+
+#. (itstool) path: page/title
+#: C/playlist-delete.page:22
+msgid "Delete a playlist"
+msgstr "Удалить ÑпиÑок воÑпроизведениÑ"
+
+#. (itstool) path: page/p
+#: C/playlist-delete.page:24
+msgid "You can remove an old and unwanted playlist."
+msgstr "Ð’Ñ‹ можете удалить Ñтарый и ненужный ÑпиÑок воÑпроизведениÑ."
+
+#. (itstool) path: item/p
+#: C/playlist-delete.page:29
+msgid "Select the playlist which you want to delete."
+msgstr "Выберите ÑпиÑок воÑпроизведениÑ, который хотите удалить."
+
+#. (itstool) path: item/p
+#: C/playlist-delete.page:35
+msgid "Click on <gui>Delete</gui>."
+msgstr "Щёлкните <gui>Удалить</gui>."
+
+#. (itstool) path: info/desc
+#: C/playlist-remove-songs.page:18
+msgid "Delete songs from the playlist."
+msgstr "Удаление композиции из ÑпиÑка воÑпроизведениÑ."
+
+#. (itstool) path: page/title
+#: C/playlist-remove-songs.page:22
+msgid "Remove songs"
+msgstr "Удаление композиций"
+
+#. (itstool) path: page/p
+#: C/playlist-remove-songs.page:24
+msgid "You can remove any unwanted songs from a playlist."
+msgstr ""
+"Ð’Ñ‹ можете удалить любые ненужные композиции из ÑпиÑка воÑпроизведениÑ."
+
+#. (itstool) path: item/p
+#: C/playlist-remove-songs.page:29
+msgid "Select the playlist from which you want to remove songs."
+msgstr ""
+"Выберите ÑпиÑок воÑпроизведениÑ, из которого хотите удалить композиции."
+
+#. (itstool) path: item/p
+#: C/playlist-remove-songs.page:32
+msgid "Click on the check button on the toolbar."
+msgstr "Щёлкните на кнопку Ñ Ð³Ð°Ð»Ð¾Ñ‡ÐºÐ¾Ð¹ на панели инÑтрументов."
+
+#. (itstool) path: item/p
+#: C/playlist-remove-songs.page:35
+msgid "Select all the songs which you want to remove."
+msgstr "Выберите вÑе композиции, которые хотите удалить."
+
+#. (itstool) path: item/p
+#: C/playlist-remove-songs.page:38
+msgid "Click on <gui style=\"button\">Remove from Playlist</gui>."
+msgstr ""
+"Щёлкните <gui style=\"button\">Удалить из ÑпиÑка воÑпроизведениÑ</gui>."
+
+#. (itstool) path: info/desc
+#: C/playlist-repeat.page:18
+msgid "Repeat all songs in the playlist or only the current song."
+msgstr "Повтор вÑех композиций в ÑпиÑке воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ только текущей."
+
+#. (itstool) path: page/title
+#: C/playlist-repeat.page:22
+msgid "How do I play songs on repeat?"
+msgstr "Как воÑпроизводить композицию на повторе?"
+
+#. (itstool) path: list/title
+#: C/playlist-repeat.page:25
+msgid "In the taskbar, click on the button on the right side:"
+msgstr "Ð’ панели задач щёлкните кнопку Ñ Ð¿Ñ€Ð°Ð²Ð¾Ð¹ Ñтороны:"
+
+#. (itstool) path: item/p
+#: C/playlist-repeat.page:27
+msgid "Select <gui>Repeat Song</gui> to repeat a single song."
+msgstr ""
+"Выберите <gui>ПовторÑÑ‚ÑŒ композицию</gui>, чтобы поÑтавить её на повтор."
+
+#. (itstool) path: item/p
+#: C/playlist-repeat.page:30
+msgid "Select <gui>Repeat All</gui> to repeat all the song in the playlist."
+msgstr ""
+"Выберите <gui>ПовторÑÑ‚ÑŒ вÑе</gui>, чтобы повторÑÑ‚ÑŒ вÑе композиции в ÑпиÑке "
+"воÑпроизведениÑ."
+
+#. (itstool) path: info/desc
+#: C/playlist-shuffle.page:18
+msgid "Shuffle songs in the playlist."
+msgstr "Перемешать пеÑни в ÑпиÑке воÑпроизведениÑ."
+
+#. (itstool) path: page/title
+#: C/playlist-shuffle.page:22
+msgid "How do I shuffle my songs?"
+msgstr "Как перемешать композиции?"
+
+#. (itstool) path: page/p
+#: C/playlist-shuffle.page:24
+msgid ""
+"In the taskbar, click on the button on right hand side and select "
+"<gui>Shuffle</gui>."
+msgstr ""
+"Ðа панели задач Ñправа нажмите кнопку и выберите <gui>Ð’ Ñлучайном порÑдке</"
+"gui>."
+
+#. (itstool) path: info/desc
+#: C/search.page:18
+msgid "Search through your music collection."
+msgstr "ПоиÑк по вашей музыкальной коллекции."
+
+#. (itstool) path: page/title
+#: C/search.page:22
+msgid "Find music"
+msgstr "ПоиÑк музыки"
+
+#. (itstool) path: page/p
+#: C/search.page:24
+msgid ""
+"You can search your albums, artists, songs and playlists. Select what you "
+"want to search through then click the <gui>Search</gui> button and start "
+"searching."
+msgstr ""
+"Ð’Ñ‹ можете иÑкать Ñвои альбомы, иÑполнителей, пеÑни и ÑпиÑки "
+"воÑпроизведениÑ. Выберите, что вы хотите найти, затем нажмите кнопку "
+"<gui>ПоиÑк</gui> и начните поиÑк."
+
+#. (itstool) path: p/link
+#: C/legal.xml:5
+msgid "Creative Commons Attribution-ShareAlike 3.0 Unported License"
+msgstr "Creative Commons Attribution-ShareAlike 3.0 Unported License"
+
+#. (itstool) path: license/p
+#: C/legal.xml:4
+msgid "This work is licensed under a <_:link-1/>."
+msgstr "Ð”Ð°Ð½Ð½Ð°Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð° находитÑÑ Ð¿Ð¾Ð´ лицензией <_:link-1/>."
diff --git a/help/sv/sv.po b/help/sv/sv.po
index 40f960dc..d379de79 100644
--- a/help/sv/sv.po
+++ b/help/sv/sv.po
@@ -1,16 +1,16 @@
# Swedish translation for gnome-music.
-# Copyright © 2016, 2021 gnome-music's COPYRIGHT HOLDER
+# Copyright © 2016-2022 gnome-music's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-music package.
# Sebastian Rasmussen <sebras@gmail.com>, 2016.
-# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2021.
+# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2021, 2022.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"music&keywords=I18N+L10N&component=user%20docs\n"
-"POT-Creation-Date: 2021-04-10 19:23+0000\n"
-"PO-Revision-Date: 2021-06-03 13:25+0200\n"
+"POT-Creation-Date: 2021-08-13 21:49+0000\n"
+"PO-Revision-Date: 2022-01-29 22:58+0100\n"
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.4.2\n"
+"X-Generator: Poedit 3.0.1\n"
#. Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2
msgctxt "_"
@@ -382,7 +382,7 @@ msgstr "Hur spelar jag låtar upprepade gånger?"
#. (itstool) path: list/title
#: C/playlist-repeat.page:25
msgid "In the taskbar, click on the button on the right side:"
-msgstr "I verktygsraden, klicka på knappen på höger sida:"
+msgstr "Klicka i verktygsfältet på knappen på höger sida:"
#. (itstool) path: item/p
#: C/playlist-repeat.page:27
diff --git a/help/tr/tr.po b/help/tr/tr.po
new file mode 100644
index 00000000..cbae97f4
--- /dev/null
+++ b/help/tr/tr.po
@@ -0,0 +1,456 @@
+# Turkish translation for gnome-music.
+# Copyright (C) 2021 gnome-music's COPYRIGHT HOLDER
+# This file is distributed under the same license as the gnome-music package.
+#
+# Sabri Ãœnal <libreajans@gmail.com>, 2021.
+# Emin Tufan Çetin <etcetin@gmail.com>, 2021, 2022.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnome-music master\n"
+"POT-Creation-Date: 2021-04-10 19:23+0000\n"
+"PO-Revision-Date: 2022-03-10 21:59+0300\n"
+"Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
+"Language-Team: Turkish <tr@li.org>\n"
+"Language: tr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 2.4.3\n"
+
+#. Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2
+msgctxt "_"
+msgid "translator-credits"
+msgstr ""
+"Sabri Ãœnal <libreajans@gmail.com>, 2021.\n"
+"Emin Tufan Çetin <etcetin@gmail.com>, 2021, 2022."
+
+#. (itstool) path: credit/name
+#: C/introduction.page:11 C/index.page:12 C/play-music.page:11
+#: C/playlist-create-albums.page:11 C/playlist-create-songs.page:11
+#: C/playlist-create-artists.page:11 C/playlist-delete.page:11
+#: C/playlist-remove-songs.page:11 C/playlist-repeat.page:11
+#: C/playlist-shuffle.page:11 C/search.page:11
+msgid "Shobha Tyagi"
+msgstr "Shobha Tyagi"
+
+#. (itstool) path: credit/years
+#: C/introduction.page:13 C/index.page:14 C/play-music.page:13
+#: C/playlist-create-albums.page:13 C/playlist-create-songs.page:13
+#: C/playlist-create-artists.page:13 C/playlist-delete.page:13
+#: C/playlist-remove-songs.page:13 C/playlist-repeat.page:13
+#: C/playlist-shuffle.page:13 C/search.page:13
+msgid "2014"
+msgstr "2014"
+
+#. (itstool) path: info/desc
+#. (itstool) path: page/p
+#: C/introduction.page:18 C/introduction.page:23
+msgid ""
+"A simple and elegant replacement for using <app>Files</app> to show the "
+"music directory."
+msgstr ""
+"Müzik dizinini göstermek için <app>Dosyalar</app>’ı kullanmanın basit ve "
+"zarif alternatifi."
+
+#. (itstool) path: page/title
+#: C/introduction.page:22
+msgid "Introduction to Music"
+msgstr "Müzik’e Giriş"
+
+#. (itstool) path: info/title
+#: C/index.page:6
+msgctxt "link:trail"
+msgid "Music"
+msgstr "Müzik"
+
+#. (itstool) path: info/title
+#: C/index.page:7
+msgctxt "link"
+msgid "Music"
+msgstr "Müzik"
+
+#. (itstool) path: info/title
+#: C/index.page:8
+msgctxt "text"
+msgid "Music"
+msgstr "Müzik"
+
+#. (itstool) path: page/title
+#: C/index.page:19
+msgid "<_:media-1/> Music"
+msgstr "<_:media-1/> Müzik"
+
+#. (itstool) path: section/title
+#: C/index.page:25
+msgid "Create playlist"
+msgstr "Çalma listesi oluştur"
+
+#. (itstool) path: section/title
+#: C/index.page:28
+msgid "Play a song"
+msgstr "Şarkıyı çal"
+
+#. (itstool) path: section/title
+#: C/index.page:31
+msgid "Remove songs and playlist"
+msgstr "Şarkıları ve çalma listesini kaldır"
+
+#. (itstool) path: info/desc
+#: C/play-music.page:18
+msgid "Play your favorite songs."
+msgstr "Gözde şarkılarını çal."
+
+#. (itstool) path: page/title
+#: C/play-music.page:22
+msgid "Play music"
+msgstr "Müzik çal"
+
+#. (itstool) path: page/p
+#: C/play-music.page:24
+msgid ""
+"You can play your favorite music by creating a playlist or by simply "
+"clicking on the song of your choice from any view."
+msgstr ""
+"Gözde şarkılarınızı çalma listesi oluşturarak ya da herhangi bir görünümden "
+"seçtiğiniz şarkıya tıklayarak çalabilirsiniz."
+
+#. (itstool) path: steps/title
+#: C/play-music.page:28 C/playlist-delete.page:27
+#: C/playlist-remove-songs.page:27
+msgid "While in <em>Playlists</em>:"
+msgstr "<em>Çalma Listesi</em>’ndeyken:"
+
+#. (itstool) path: item/p
+#: C/play-music.page:30
+msgid "Select a playlist."
+msgstr "Çalma listesi seçin."
+
+# Hata: Gear buton kalktı yerine üst üste üç nokta geldi.
+#. (itstool) path: item/p
+#: C/play-music.page:33 C/playlist-delete.page:32
+msgid "Click on the gear button on the right hand side."
+msgstr "Sağ taraftaki dik üç nokta düğmesine tıklayın."
+
+#. (itstool) path: item/p
+#: C/play-music.page:36
+msgid "Click on <gui>Play</gui>."
+msgstr "<gui>Çal</gui>’ı seçin."
+
+#. (itstool) path: info/desc
+#: C/playlist-create-albums.page:18
+msgid "Add songs to playlists using albums."
+msgstr "Albümleri kullanarak çalma listelerine şarkılar ekle."
+
+#. (itstool) path: page/title
+#: C/playlist-create-albums.page:21
+msgid "Create a playlist using albums"
+msgstr "Albümleri kullanarak çalma listesi oluştur"
+
+#. (itstool) path: page/p
+#: C/playlist-create-albums.page:23
+msgid ""
+"You can view all your albums by clicking on the <gui style=\"button"
+"\">Albums</gui> button."
+msgstr ""
+"<gui style=\"button\">Albümler</gui> düğmesine tıklayarak tüm albümlerinizi "
+"görüntüleyebilirsiniz."
+
+#. (itstool) path: steps/title
+#: C/playlist-create-albums.page:27
+msgid "To add all the songs in an album:"
+msgstr "Tüm şarkıları bir albüme eklemek için:"
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:29 C/playlist-create-songs.page:29
+#: C/playlist-create-artists.page:30
+msgid "Click on the check button in the top-right of the window."
+msgstr "Pencerenin sağ üst köşesindeki onay düğmesine tıklayın."
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:32
+msgid "Select albums."
+msgstr "Albümleri seçin."
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:35 C/playlist-create-albums.page:60
+#: C/playlist-create-songs.page:35 C/playlist-create-artists.page:37
+msgid "Click on the <gui style=\"button\">Add to Playlist</gui> button."
+msgstr "<gui style=\"button\">Çalma Listesine Ekle</gui> düğmesine tıklayın."
+
+# Hata: New playlist diye tıklanabilir bir alan yok
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:38 C/playlist-create-albums.page:63
+#: C/playlist-create-artists.page:40
+msgid "Click on <gui>New Playlist</gui> and type a name for your playlist."
+msgstr ""
+"<gui>Yeni Çalma Listesi</gui> alanına tıklayıp çalma listeniz için ad girin."
+
+# Hata: Buton adı ekle olmuş.
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:42 C/playlist-create-albums.page:67
+#: C/playlist-create-songs.page:42
+msgid "Click on <gui style=\"button\">Select</gui>."
+msgstr "<gui style=\"button\">Ekle</gui>’ye tıklayın."
+
+#. (itstool) path: page/p
+#: C/playlist-create-albums.page:46
+msgid "You can also create a playlist from specific songs."
+msgstr "Belirli şarkılardan çalma listesi de oluşturabilirsiniz."
+
+#. (itstool) path: steps/title
+#: C/playlist-create-albums.page:49
+msgid "To add selected songs from an album:"
+msgstr "Albümden seçilen şarkıları eklemek için:"
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:51
+msgid "Click on an album."
+msgstr "Albüme tıklayın."
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:54
+msgid "Click on the check button."
+msgstr "Onay düğmesine tıklayın."
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:57
+msgid "Select songs."
+msgstr "Şarkıları seçin."
+
+#. (itstool) path: note/p
+#: C/playlist-create-albums.page:72 C/playlist-create-songs.page:47
+#: C/playlist-create-artists.page:49
+msgid ""
+"To select all the songs click <guiseq><gui>Click on items to select them</"
+"gui><gui>Select All</gui></guiseq> in the toolbar or press "
+"<keyseq><key>Ctrl</key><key>A</key></keyseq>."
+msgstr ""
+"Tüm şarkıları seçmek için araç çubuğundan <guiseq><gui>Seçmek için ögelere "
+"tıklayın</gui><gui>Tümünü Seç</gui></guiseq> yolunu izleyin ya da "
+"<keyseq><key>Ctrl</key><key>A</key></keyseq> kısayolunu kullanın."
+
+#. (itstool) path: note/p
+#: C/playlist-create-albums.page:76 C/playlist-create-songs.page:51
+#: C/playlist-create-artists.page:53
+msgid ""
+"To clear the selection click <guiseq><gui>Click on items to select them</"
+"gui><gui>Select None</gui></guiseq> in the toolbar."
+msgstr ""
+"Seçimi temizlemek için araç çubuğundan <guiseq><gui>Seçmek için ögelere "
+"tıklayın</gui><gui>Hiçbirini Seçme</gui></guiseq> yolunu izleyin."
+
+#. (itstool) path: info/desc
+#: C/playlist-create-songs.page:18
+msgid "Create playlist by selecting your favorite songs."
+msgstr "Gözde şarkılarını seçenek çalma listesi oluştur."
+
+#. (itstool) path: page/title
+#: C/playlist-create-songs.page:21
+msgid "Create playlists using songs"
+msgstr "Şarkıları kullanarak çalma listeleri oluştur"
+
+#. (itstool) path: page/p
+#: C/playlist-create-songs.page:23
+msgid ""
+"You can view all the songs by clicking on the <gui style=\"button\">Songs</"
+"gui> button."
+msgstr ""
+"<gui style=\"button\">Şarkılar</gui> düğmesine tıklayarak tüm şarkılarınızı "
+"görüntüleyebilirsiniz."
+
+#. (itstool) path: steps/title
+#: C/playlist-create-songs.page:27
+msgid "To create a new playlist while in <em>Songs</em> view:"
+msgstr "<em>Şarkılar</em> görünümündeyken yeni çalma listesi oluşturmak için:"
+
+#. (itstool) path: item/p
+#: C/playlist-create-songs.page:32
+msgid "Select all the songs you want to add to the playlist."
+msgstr "Çalma listesine eklemek istediğiniz tüm şarkıları seçin."
+
+#. (itstool) path: item/p
+#: C/playlist-create-songs.page:38
+msgid ""
+"Click on <gui style=\"button\">New Playlist</gui> and type a name for your "
+"playlist."
+msgstr ""
+"<gui>Yeni Çalma Listesi</gui> alanına tıklayıp çalma listeniz için ad girin."
+
+#. (itstool) path: info/desc
+#: C/playlist-create-artists.page:18
+msgid "Create playlist by selecting your favorite artists."
+msgstr "Gözde sanatçılarını seçenek çalma listesi oluştur."
+
+#. (itstool) path: page/title
+#: C/playlist-create-artists.page:22
+msgid "Create playlists using artists"
+msgstr "Sanatçıları kullanarak çalma listeleri oluştur"
+
+#. (itstool) path: page/p
+#: C/playlist-create-artists.page:24
+msgid ""
+"You can view all the artists and their songs by clicking on the <gui style="
+"\"button\">Artists</gui> button."
+msgstr ""
+"<gui style=\"button\">Sanatçılar</gui> düğmesine tıklayarak tüm sanatçıları "
+"ve şarkılarını görüntüleyebilirsiniz."
+
+#. (itstool) path: steps/title
+#: C/playlist-create-artists.page:28
+msgid "To create a new playlist while in <em>Artists</em> view:"
+msgstr ""
+"<em>Sanatçılar</em> görünümündeyken yeni çalma listesi oluşturmak için:"
+
+#. (itstool) path: item/p
+#: C/playlist-create-artists.page:33
+msgid "Select all the artists whose songs you want to add to the playlist."
+msgstr "Şarkılarını çalma listesine eklemek istediğiniz tüm sanatçıları seçin."
+
+# Hata: Düğme adı değişmiş.
+#. (itstool) path: item/p
+#: C/playlist-create-artists.page:44
+msgid "Click on <gui>Select</gui>."
+msgstr "<gui>Ekle</gui>’ye tıklayın."
+
+#. (itstool) path: info/desc
+#: C/playlist-delete.page:18
+msgid "Remove an unwanted playlist."
+msgstr "İstenmeyen çalma listesini kaldır."
+
+#. (itstool) path: page/title
+#: C/playlist-delete.page:22
+msgid "Delete a playlist"
+msgstr "Çalma listesini sil"
+
+#. (itstool) path: page/p
+#: C/playlist-delete.page:24
+msgid "You can remove an old and unwanted playlist."
+msgstr "Eski ve istenmeyen çalma listelerini silebilirsiniz."
+
+#. (itstool) path: item/p
+#: C/playlist-delete.page:29
+msgid "Select the playlist which you want to delete."
+msgstr "Silmek istediğiniz çalma listesini seçin."
+
+#. (itstool) path: item/p
+#: C/playlist-delete.page:35
+msgid "Click on <gui>Delete</gui>."
+msgstr "<gui>Sil</gui>’i seçin."
+
+#. (itstool) path: info/desc
+#: C/playlist-remove-songs.page:18
+msgid "Delete songs from the playlist."
+msgstr "Şarkıları çalma listesinden sil."
+
+#. (itstool) path: page/title
+#: C/playlist-remove-songs.page:22
+msgid "Remove songs"
+msgstr "Şarkıları kaldır"
+
+#. (itstool) path: page/p
+#: C/playlist-remove-songs.page:24
+msgid "You can remove any unwanted songs from a playlist."
+msgstr "İstemediğiniz şarkıları çalma listesinden kaldırabilirsiniz."
+
+#. (itstool) path: item/p
+#: C/playlist-remove-songs.page:29
+msgid "Select the playlist from which you want to remove songs."
+msgstr "Şarkıları kaldırmak istediğiniz çalma listesini seçin."
+
+# Hata: Sayfa tamamen güncellenmeye muhtaç
+#. (itstool) path: item/p
+#: C/playlist-remove-songs.page:32
+msgid "Click on the check button on the toolbar."
+msgstr "Araç çubuğundaki kutucuğa tıklayın."
+
+# Hata: Sayfa tamamen güncellenmeye muhtaç
+#. (itstool) path: item/p
+#: C/playlist-remove-songs.page:35
+msgid "Select all the songs which you want to remove."
+msgstr "Kaldırmak istediğiniz tüm şarkıları seçin."
+
+# Hata: Sayfa tamamen güncellenmeye muhtaç
+#. (itstool) path: item/p
+#: C/playlist-remove-songs.page:38
+msgid "Click on <gui style=\"button\">Remove from Playlist</gui>."
+msgstr "<gui style=\"button\">Çalma Listesinden Kaldır</gui>a tıklayın."
+
+#. (itstool) path: info/desc
+#: C/playlist-repeat.page:18
+msgid "Repeat all songs in the playlist or only the current song."
+msgstr ""
+"Çalma listesindeki tüm şarkıları ya da yalnızca geçerli şarkıyı yinele."
+
+#. (itstool) path: page/title
+#: C/playlist-repeat.page:22
+msgid "How do I play songs on repeat?"
+msgstr "Şarkıları yeniden yeniden nasıl çalarım?"
+
+#. (itstool) path: list/title
+#: C/playlist-repeat.page:25
+msgid "In the taskbar, click on the button on the right side:"
+msgstr "Görev çubuğunda, sağdaki düğmeye tıklayın:"
+
+#. (itstool) path: item/p
+#: C/playlist-repeat.page:27
+msgid "Select <gui>Repeat Song</gui> to repeat a single song."
+msgstr "Tek şarkıyı yinelemek için <gui>Şarkıyı Yinele</gui>’yi seçin."
+
+#. (itstool) path: item/p
+#: C/playlist-repeat.page:30
+msgid "Select <gui>Repeat All</gui> to repeat all the song in the playlist."
+msgstr ""
+"Çalma listesindeki tüm şarkıları yinelemek için <gui>Tümünü Yinele</gui>’yi "
+"seçin."
+
+#. (itstool) path: info/desc
+#: C/playlist-shuffle.page:18
+msgid "Shuffle songs in the playlist."
+msgstr "Çalma listesindeki şarkıları karıştır."
+
+#. (itstool) path: page/title
+#: C/playlist-shuffle.page:22
+msgid "How do I shuffle my songs?"
+msgstr "Şarkıları nasıl karıştırabilirim?"
+
+#. (itstool) path: page/p
+#: C/playlist-shuffle.page:24
+msgid ""
+"In the taskbar, click on the button on right hand side and select "
+"<gui>Shuffle</gui>."
+msgstr ""
+"Görev çubuğunda, sağ taraftaki düğmeye tıklayın ve <gui>Karıştır</gui>’ı "
+"seçin."
+
+#. (itstool) path: info/desc
+#: C/search.page:18
+msgid "Search through your music collection."
+msgstr "Müzik derleminde ara."
+
+#. (itstool) path: page/title
+#: C/search.page:22
+msgid "Find music"
+msgstr "Müzik ara"
+
+#. (itstool) path: page/p
+#: C/search.page:24
+msgid ""
+"You can search your albums, artists, songs and playlists. Select what you "
+"want to search through then click the <gui>Search</gui> button and start "
+"searching."
+msgstr ""
+"Albümlerinizi, sanatçılarınızı, şarkılarınızı ve çalma listelerinizi "
+"arayabilirsiniz. Aramak istediğinizi seçin ve ardından <gui>Ara</gui> "
+"düğmesine tıklayın ve aramaya başlayın."
+
+#. (itstool) path: p/link
+#: C/legal.xml:5
+msgid "Creative Commons Attribution-ShareAlike 3.0 Unported License"
+msgstr "Creative Commons Attribution-ShareAlike 3.0 Unported License"
+
+#. (itstool) path: license/p
+#: C/legal.xml:4
+msgid "This work is licensed under a <_:link-1/>."
+msgstr "Bu çalışma <_:link-1/> ile lisanslanmıştır."
diff --git a/help/zh_CN/zh_CN.po b/help/zh_CN/zh_CN.po
new file mode 100644
index 00000000..2d222c48
--- /dev/null
+++ b/help/zh_CN/zh_CN.po
@@ -0,0 +1,418 @@
+# Chinese (China) translation for gnome-music.
+# Copyright (C) 2022 gnome-music's COPYRIGHT HOLDER
+# This file is distributed under the same license as the gnome-music package.
+# Boyuan Yang <073plan@gmail.com>, 2022.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnome-music master\n"
+"POT-Creation-Date: 2022-04-12 09:44+0000\n"
+"PO-Revision-Date: 2022-04-20 09:56-0400\n"
+"Language-Team: Chinese (China) <i18n-zh@googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: zh_CN\n"
+"Last-Translator: \n"
+"X-Generator: Poedit 2.4.3\n"
+
+#. Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2
+msgctxt "_"
+msgid "translator-credits"
+msgstr ""
+
+#. (itstool) path: credit/name
+#: C/introduction.page:11 C/index.page:12 C/play-music.page:11
+#: C/playlist-create-albums.page:11 C/playlist-create-songs.page:11
+#: C/playlist-create-artists.page:11 C/playlist-delete.page:11
+#: C/playlist-remove-songs.page:11 C/playlist-repeat.page:11
+#: C/playlist-shuffle.page:11 C/search.page:11
+msgid "Shobha Tyagi"
+msgstr "Shobha Tyagi"
+
+#. (itstool) path: credit/years
+#: C/introduction.page:13 C/index.page:14 C/play-music.page:13
+#: C/playlist-create-albums.page:13 C/playlist-create-songs.page:13
+#: C/playlist-create-artists.page:13 C/playlist-delete.page:13
+#: C/playlist-remove-songs.page:13 C/playlist-repeat.page:13
+#: C/playlist-shuffle.page:13 C/search.page:13
+msgid "2014"
+msgstr "2014"
+
+#. (itstool) path: info/desc
+#. (itstool) path: page/p
+#: C/introduction.page:18 C/introduction.page:23
+msgid ""
+"A simple and elegant replacement for using <app>Files</app> to show the "
+"music directory."
+msgstr "简å•è€Œä¼˜é›…的应用程åºï¼Œä½¿ç”¨<app>文件</app>æ¥æ˜¾ç¤ºéŸ³ä¹ç›®å½•ã€‚"
+
+#. (itstool) path: page/title
+#: C/introduction.page:22
+msgid "Introduction to Music"
+msgstr "音ä¹åº”用程åºä»‹ç»"
+
+#. (itstool) path: info/title
+#: C/index.page:6
+msgctxt "link:trail"
+msgid "Music"
+msgstr "音ä¹"
+
+#. (itstool) path: info/title
+#: C/index.page:7
+msgctxt "link"
+msgid "Music"
+msgstr "音ä¹"
+
+#. (itstool) path: info/title
+#: C/index.page:8
+msgctxt "text"
+msgid "Music"
+msgstr "音ä¹"
+
+#. (itstool) path: page/title
+#: C/index.page:19
+msgid "<_:media-1/> Music"
+msgstr "<_:media-1/> 音ä¹"
+
+#. (itstool) path: section/title
+#: C/index.page:25
+msgid "Create playlist"
+msgstr "创建播放列表"
+
+#. (itstool) path: section/title
+#: C/index.page:28
+msgid "Play a song"
+msgstr "播放歌曲"
+
+#. (itstool) path: section/title
+#: C/index.page:31
+msgid "Remove songs and playlist"
+msgstr "移除歌曲和播放列表"
+
+#. (itstool) path: info/desc
+#: C/play-music.page:18
+msgid "Play your favorite songs."
+msgstr "播放您最爱的歌曲。"
+
+#. (itstool) path: page/title
+#: C/play-music.page:22
+msgid "Play music"
+msgstr "播放音ä¹"
+
+#. (itstool) path: page/p
+#: C/play-music.page:24
+msgid ""
+"You can play your favorite music by creating a playlist or by simply "
+"clicking on the song of your choice from any view."
+msgstr ""
+
+#. (itstool) path: steps/title
+#: C/play-music.page:28 C/playlist-delete.page:27
+#: C/playlist-remove-songs.page:27
+msgid "While in <em>Playlists</em>:"
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/play-music.page:30
+msgid "Select a playlist."
+msgstr "选中一个播放列表。"
+
+#. (itstool) path: item/p
+#: C/play-music.page:33 C/playlist-delete.page:32
+msgid "Click on the gear button on the right hand side."
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/play-music.page:36
+msgid "Click on <gui>Play</gui>."
+msgstr ""
+
+#. (itstool) path: info/desc
+#: C/playlist-create-albums.page:18
+msgid "Add songs to playlists using albums."
+msgstr ""
+
+#. (itstool) path: page/title
+#: C/playlist-create-albums.page:21
+msgid "Create a playlist using albums"
+msgstr ""
+
+#. (itstool) path: page/p
+#: C/playlist-create-albums.page:23
+msgid ""
+"You can view all your albums by clicking on the <gui style=\"button"
+"\">Albums</gui> button."
+msgstr ""
+
+#. (itstool) path: steps/title
+#: C/playlist-create-albums.page:27
+msgid "To add all the songs in an album:"
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:29 C/playlist-create-songs.page:29
+#: C/playlist-create-artists.page:30
+msgid "Click on the check button in the top-right of the window."
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:32
+msgid "Select albums."
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:35 C/playlist-create-albums.page:60
+#: C/playlist-create-songs.page:35 C/playlist-create-artists.page:37
+msgid "Click on the <gui style=\"button\">Add to Playlist</gui> button."
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:38 C/playlist-create-albums.page:63
+#: C/playlist-create-artists.page:40
+msgid "Click on <gui>New Playlist</gui> and type a name for your playlist."
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:42 C/playlist-create-albums.page:67
+#: C/playlist-create-songs.page:42
+msgid "Click on <gui style=\"button\">Select</gui>."
+msgstr ""
+
+#. (itstool) path: page/p
+#: C/playlist-create-albums.page:46
+msgid "You can also create a playlist from specific songs."
+msgstr ""
+
+#. (itstool) path: steps/title
+#: C/playlist-create-albums.page:49
+msgid "To add selected songs from an album:"
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:51
+msgid "Click on an album."
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:54
+msgid "Click on the check button."
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-create-albums.page:57
+msgid "Select songs."
+msgstr ""
+
+#. (itstool) path: note/p
+#: C/playlist-create-albums.page:72 C/playlist-create-songs.page:47
+#: C/playlist-create-artists.page:49
+msgid ""
+"To select all the songs click <guiseq><gui>Click on items to select them</"
+"gui><gui>Select All</gui></guiseq> in the toolbar or press "
+"<keyseq><key>Ctrl</key><key>A</key></keyseq>."
+msgstr ""
+
+#. (itstool) path: note/p
+#: C/playlist-create-albums.page:76 C/playlist-create-songs.page:51
+#: C/playlist-create-artists.page:53
+msgid ""
+"To clear the selection click <guiseq><gui>Click on items to select them</"
+"gui><gui>Select None</gui></guiseq> in the toolbar."
+msgstr ""
+
+#. (itstool) path: info/desc
+#: C/playlist-create-songs.page:18
+msgid "Create playlist by selecting your favorite songs."
+msgstr ""
+
+#. (itstool) path: page/title
+#: C/playlist-create-songs.page:21
+msgid "Create playlists using songs"
+msgstr ""
+
+#. (itstool) path: page/p
+#: C/playlist-create-songs.page:23
+msgid ""
+"You can view all the songs by clicking on the <gui style=\"button\">Songs</"
+"gui> button."
+msgstr ""
+
+#. (itstool) path: steps/title
+#: C/playlist-create-songs.page:27
+msgid "To create a new playlist while in <em>Songs</em> view:"
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-create-songs.page:32
+msgid "Select all the songs you want to add to the playlist."
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-create-songs.page:38
+msgid ""
+"Click on <gui style=\"button\">New Playlist</gui> and type a name for your "
+"playlist."
+msgstr ""
+
+#. (itstool) path: info/desc
+#: C/playlist-create-artists.page:18
+msgid "Create playlist by selecting your favorite artists."
+msgstr ""
+
+#. (itstool) path: page/title
+#: C/playlist-create-artists.page:22
+msgid "Create playlists using artists"
+msgstr ""
+
+#. (itstool) path: page/p
+#: C/playlist-create-artists.page:24
+msgid ""
+"You can view all the artists and their songs by clicking on the <gui style="
+"\"button\">Artists</gui> button."
+msgstr ""
+
+#. (itstool) path: steps/title
+#: C/playlist-create-artists.page:28
+msgid "To create a new playlist while in <em>Artists</em> view:"
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-create-artists.page:33
+msgid "Select all the artists whose songs you want to add to the playlist."
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-create-artists.page:44
+msgid "Click on <gui>Select</gui>."
+msgstr ""
+
+#. (itstool) path: info/desc
+#: C/playlist-delete.page:18
+msgid "Remove an unwanted playlist."
+msgstr ""
+
+#. (itstool) path: page/title
+#: C/playlist-delete.page:22
+msgid "Delete a playlist"
+msgstr ""
+
+#. (itstool) path: page/p
+#: C/playlist-delete.page:24
+msgid "You can remove an old and unwanted playlist."
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-delete.page:29
+msgid "Select the playlist which you want to delete."
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-delete.page:35
+msgid "Click on <gui>Delete</gui>."
+msgstr "点击<gui>删除</gui>。"
+
+#. (itstool) path: info/desc
+#: C/playlist-remove-songs.page:18
+msgid "Delete songs from the playlist."
+msgstr ""
+
+#. (itstool) path: page/title
+#: C/playlist-remove-songs.page:22
+msgid "Remove songs"
+msgstr ""
+
+#. (itstool) path: page/p
+#: C/playlist-remove-songs.page:24
+msgid "You can remove any unwanted songs from a playlist."
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-remove-songs.page:29
+msgid "Select the playlist from which you want to remove songs."
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-remove-songs.page:32
+msgid "Click on the check button on the toolbar."
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-remove-songs.page:35
+msgid "Select all the songs which you want to remove."
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-remove-songs.page:38
+msgid "Click on <gui style=\"button\">Remove from Playlist</gui>."
+msgstr ""
+
+#. (itstool) path: info/desc
+#: C/playlist-repeat.page:18
+msgid "Repeat all songs in the playlist or only the current song."
+msgstr ""
+
+#. (itstool) path: page/title
+#: C/playlist-repeat.page:22
+msgid "How do I play songs on repeat?"
+msgstr ""
+
+#. (itstool) path: list/title
+#: C/playlist-repeat.page:25
+msgid "In the taskbar, click on the button on the right side:"
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-repeat.page:27
+msgid "Select <gui>Repeat Song</gui> to repeat a single song."
+msgstr ""
+
+#. (itstool) path: item/p
+#: C/playlist-repeat.page:30
+msgid "Select <gui>Repeat All</gui> to repeat all the song in the playlist."
+msgstr ""
+
+#. (itstool) path: info/desc
+#: C/playlist-shuffle.page:18
+msgid "Shuffle songs in the playlist."
+msgstr ""
+
+#. (itstool) path: page/title
+#: C/playlist-shuffle.page:22
+msgid "How do I shuffle my songs?"
+msgstr ""
+
+#. (itstool) path: page/p
+#: C/playlist-shuffle.page:24
+msgid ""
+"In the taskbar, click on the button on right hand side and select "
+"<gui>Shuffle</gui>."
+msgstr ""
+
+#. (itstool) path: info/desc
+#: C/search.page:18
+msgid "Search through your music collection."
+msgstr "在您的音ä¹æ”¶è—中æœç´¢ã€‚"
+
+#. (itstool) path: page/title
+#: C/search.page:22
+msgid "Find music"
+msgstr "查找音ä¹"
+
+#. (itstool) path: page/p
+#: C/search.page:24
+msgid ""
+"You can search your albums, artists, songs and playlists. Select what you "
+"want to search through then click the <gui>Search</gui> button and start "
+"searching."
+msgstr ""
+
+#. (itstool) path: p/link
+#: C/legal.xml:5
+msgid "Creative Commons Attribution-ShareAlike 3.0 Unported License"
+msgstr "知识共享 ç½²å-相åŒæ–¹å¼å…±äº« 3.0 未本地化版本"
+
+#. (itstool) path: license/p
+#: C/legal.xml:4
+msgid "This work is licensed under a <_:link-1/>."
+msgstr "本作å“使用<_:link-1/>许å¯ã€‚"
diff --git a/meson.build b/meson.build
index 1c283dfd..fd3e3b59 100644
--- a/meson.build
+++ b/meson.build
@@ -1,6 +1,6 @@
project('gnome-music',
- version: '41.0',
- meson_version: '>= 0.49.0'
+ version: '45.0',
+ meson_version: '>= 0.59.0'
)
# Importing modules
@@ -39,16 +39,28 @@ APPLICATION_ID = 'org.gnome.Music@0@'.format(PROFILE)
PYTHON_DIR = py_installation.get_path('purelib')
PKGDATA_DIR = join_paths(get_option('prefix'), get_option('datadir'), APPLICATION_ID)
PKGLIB_DIR = join_paths(get_option('prefix'), get_option('libdir'), APPLICATION_ID)
+VCS_TAG = ''
+if get_option('profile') != 'default'
+ git = find_program('git', required : false)
+ if git.found()
+ VCS_TAG = run_command('git', 'rev-parse', '--short', 'HEAD').stdout().strip()
+ endif
+ if VCS_TAG == ''
+ VCS_TAG = '-devel'
+ else
+ VCS_TAG = '-@0@'.format(VCS_TAG)
+ endif
+endif
+
# Dependencies
dependency('glib-2.0', version: '>= 2.67.1')
dependency('goa-1.0', version: '>= 3.35.90')
dependency('gobject-introspection-1.0', version: '>= 1.35.0')
-dependency('gtk+-3.0', version: '>= 3.24.14')
-dependency('libhandy-1', version: '>= 1.2.0')
-dependency('libdazzle-1.0', version: '>= 3.28.0')
+dependency('gtk4', version: '>= 4.5.0')
+dependency('libadwaita-1', version: '>= 1.2.alpha')
dependency('libmediaart-2.0', version: '>= 1.9.1')
-dependency('libsoup-2.4')
+dependency('libsoup-3.0')
dependency('tracker-sparql-3.0', version: '>= 2.99.3')
dependency('pango', version: '>= 1.44.0')
dependency('pygobject-3.0', version: '>= 3.36.1')
@@ -56,13 +68,6 @@ dependency('py3cairo', version: '>= 1.14.0')
dependency('grilo-0.3', version: '>= 0.3.13', fallback: ['grilo', 'libgrl_dep'])
dependency('grilo-plugins-0.3', version: '>= 0.3.12', fallback: ['grilo-plugins', 'grilo_plugins_dep'])
-subproject('gfm',
- default_options: [
- 'pkgdatadir=' + PKGDATA_DIR,
- 'pkglibdir=' + PKGLIB_DIR
- ])
-
-subdir('data/ui')
subdir('data')
subdir('help')
subdir('po')
@@ -80,8 +85,7 @@ bin_config.set('pkgdatadir', PKGDATA_DIR)
bin_config.set('localedir', join_paths(get_option('prefix'), get_option('datadir'), 'locale'))
bin_config.set('pythondir', PYTHON_DIR)
bin_config.set('schemasdir', PKGDATA_DIR)
-# Used for gfm
-bin_config.set('gfmlibdir', PKGLIB_DIR)
+bin_config.set('version', meson.project_version() + VCS_TAG)
bin_config.set('local_build', 'False')
@@ -96,12 +100,10 @@ configure_file(
local_config = configuration_data()
local_config.set('application_id', APPLICATION_ID)
local_config.set('rdnn_name', PROJECT_RDNN_NAME)
-local_config.set('pkgdatadir', join_paths(meson.build_root(), 'data'))
+local_config.set('pkgdatadir', join_paths(meson.current_build_dir(), 'data'))
local_config.set('localedir', join_paths(get_option('prefix'), get_option('datadir'), 'locale'))
-local_config.set('pythondir', meson.source_root())
-local_config.set('schemasdir', join_paths(meson.build_root(), 'data'))
-# Used for gfm
-local_config.set('gfmlibdir', join_paths(meson.build_root(), 'subprojects', 'gfm'))
+local_config.set('pythondir', meson.current_source_dir())
+local_config.set('schemasdir', join_paths(meson.current_build_dir(), 'data'))
local_config.set('local_build', 'True')
@@ -111,5 +113,8 @@ configure_file(
configuration: local_config
)
-meson.add_postconf_script('meson_post_conf.py')
-meson.add_install_script('meson_post_install.py')
+gnome.post_install(
+ glib_compile_schemas: true,
+ gtk_update_icon_cache: true,
+ update_desktop_database: true
+)
diff --git a/meson_post_conf.py b/meson_post_conf.py
deleted file mode 100755
index a5c21059..00000000
--- a/meson_post_conf.py
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env python3
-
-import os
-import subprocess
-
-build_root = os.environ.get('MESON_BUILD_ROOT')
-source_root = os.environ.get('MESON_SOURCE_ROOT')
-
-print('Install schemas in build dir...')
-subprocess.call(['glib-compile-schemas', source_root + '/data/'])
-subprocess.call(['mkdir', '-p', build_root + '/data/glib-2.0/schemas'])
-subprocess.call(['mv', source_root + '/data/gschemas.compiled', build_root + '/data/glib-2.0/schemas'])
diff --git a/meson_post_install.py b/meson_post_install.py
deleted file mode 100755
index 4c3a2b72..00000000
--- a/meson_post_install.py
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/bin/env python3
-
-import os
-import subprocess
-
-prefix = os.environ.get('MESON_INSTALL_PREFIX', '/usr/local')
-datadir = os.path.join(prefix, 'share')
-
-# Packaging tools define DESTDIR and this isn't needed for them
-if 'DESTDIR' not in os.environ:
- print('Updating icon cache...')
- icon_cache_dir = os.path.join(datadir, 'icons', 'hicolor')
- subprocess.call(['gtk-update-icon-cache', '-qtf', icon_cache_dir])
-
- print("Compiling the schema...")
- schemas_dir = os.path.join(datadir, 'glib-2.0/schemas')
- subprocess.call(['glib-compile-schemas', schemas_dir])
-
- print('Updating desktop database...')
- desktop_database_dir = os.path.join(datadir, 'applications')
- subprocess.call(['update-desktop-database', '-q', desktop_database_dir])
diff --git a/org.gnome.Music.json b/org.gnome.Music.json
index b4981c30..ca04def5 100644
--- a/org.gnome.Music.json
+++ b/org.gnome.Music.json
@@ -5,8 +5,8 @@
"sdk": "org.gnome.Sdk",
"command": "gnome-music",
"tags": ["devel", "development", "nightly"],
- "desktop-file-name-suffix": " ☢ï¸",
"finish-args": [
+ "--device=dri",
"--share=ipc",
"--share=network",
"--socket=wayland",
@@ -16,7 +16,7 @@
"--talk-name=org.freedesktop.Tracker3.Writeback",
"--talk-name=org.gnome.OnlineAccounts",
"--talk-name=org.gnome.ControlCenter",
- "--talk-name=org.gnome.SettingsDaemon.MediaKeys",
+ "--talk-name=org.gnome.Settings",
"--system-talk-name=org.freedesktop.login1",
"--add-policy=Tracker3.dbus:org.freedesktop.Tracker3.Miner.Files=tracker:Audio"
],
@@ -33,7 +33,7 @@
"*.a"
],
"modules": [
- "subprojects/shared-modules/lua5.3/lua-5.3.5.json",
+ "subprojects/shared-modules/lua5.4/lua-5.4.json",
{
"name": "libmediaart",
"buildsystem": "meson",
@@ -45,19 +45,10 @@
]
},
{
- "name": "libdazzle",
- "buildsystem": "meson",
- "sources": [
- {
- "type": "git",
- "url": "https://gitlab.gnome.org/GNOME/libdazzle.git"
- }
- ]
- },
- {
"name": "tracker-miners",
"buildsystem": "meson",
- "config-opts": [ "-Ddefault_index_single_dirs=",
+ "config-opts": [ "-Dbattery_detection=none",
+ "-Ddefault_index_single_dirs=",
"-Ddefault_index_recursive_dirs=&MUSIC",
"-Ddomain_prefix=org.gnome.Music.Devel",
"-Dman=false",
@@ -74,10 +65,15 @@
},
{
"name": "gnome-online-accounts",
- "config-opts": [ "--enable-introspection",
- "--disable-documentation",
- "--disable-backend",
- "--disable-Werror" ],
+ "buildsystem": "meson",
+ "config-opts": [ "-Dgoabackend=false",
+ "-Dvapi=false",
+ "-Dexchange=false",
+ "-Dgoogle=false",
+ "-Dimap_smtp=false",
+ "-Dkerberos=false",
+ "-Downcloud=false",
+ "-Dwindows_live=false" ],
"sources": [
{
"type": "git",
diff --git a/po/LINGUAS b/po/LINGUAS
index 6108a956..003d7e8f 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -1,3 +1,4 @@
+ab
af
an
ar
@@ -31,6 +32,7 @@ id
is
it
ja
+ka
kk
kn
ko
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 6cd6fab5..2b076bf9 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -3,30 +3,30 @@
data/org.gnome.Music.appdata.xml.in.in
data/org.gnome.Music.desktop.in.in
data/org.gnome.Music.gschema.xml
-data/ui/AboutDialog.ui.in
data/ui/AlbumWidget.ui
data/ui/AppMenu.ui
data/ui/EmptyView.ui
data/ui/HeaderBar.ui
data/ui/help-overlay.ui
data/ui/LastfmDialog.ui
-data/ui/LoadingNotification.ui
data/ui/PlayerToolbar.ui
data/ui/PlaylistControls.ui
data/ui/PlaylistDialog.ui
-data/ui/PlaylistNotification.ui
data/ui/SearchHeaderBar.ui
data/ui/SearchView.ui
data/ui/SelectionBarMenuButton.ui
data/ui/SelectionToolbar.ui
data/ui/SongWidgetMenu.ui
gnomemusic/__init__.py
+gnomemusic/about.py
gnomemusic/application.py
gnomemusic/grilowrappers/grltrackerplaylists.py
gnomemusic/gstplayer.py
gnomemusic/inhibitsuspend.py
gnomemusic/mpris.py
gnomemusic/player.py
+gnomemusic/playlisttoast.py
+gnomemusic/songtoast.py
gnomemusic/utils.py
gnomemusic/views/albumsview.py
gnomemusic/views/artistsview.py
@@ -35,12 +35,11 @@ gnomemusic/views/playlistsview.py
gnomemusic/views/searchview.py
gnomemusic/views/songsview.py
gnomemusic/widgets/albumwidget.py
-gnomemusic/widgets/disclistboxwidget.py
+gnomemusic/widgets/discbox.py
gnomemusic/widgets/headerbar.py
gnomemusic/widgets/lastfmdialog.py
-gnomemusic/widgets/notificationspopup.py
gnomemusic/widgets/playertoolbar.py
gnomemusic/widgets/playlistcontrols.py
gnomemusic/widgets/playlistdialog.py
-gnomemusic/widgets/starhandlerwidget.py
+gnomemusic/widgets/searchheaderbar.py
gnomemusic/window.py
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index 006a563b..72df75eb 100644
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -2,4 +2,3 @@
# Please keep this file sorted alphabetically.
data/ui/AboutDialog.ui
data/org.gnome.Music.appdata.xml
-subprojects/gfm
diff --git a/po/ab.po b/po/ab.po
new file mode 100644
index 00000000..ec14068d
--- /dev/null
+++ b/po/ab.po
@@ -0,0 +1,4683 @@
+msgid ""
+msgstr ""
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
+"POT-Creation-Date: 2023-01-25 19:11+0000\n"
+"Last-Translator: Ðанба Ðаала <naala-nanba@rambler.ru>\n"
+"Language-Team: Abkhazian <daniel.abzakh@gmail.com>\n"
+"Language: ab\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: data/org.gnome.Music.appdata.xml.in.in:6
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:236
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Ðмузыка"
+
+#: data/org.gnome.Music.appdata.xml.in.in:7
+#: data/org.gnome.Music.desktop.in.in:5
+msgid "Play and organize your music collection"
+msgstr "Ðмузыкатә коллекциа арҳәареи, ахархәареи"
+
+#: data/org.gnome.Music.appdata.xml.in.in:9
+msgid "An easy and pleasant way to play your music."
+msgstr "Ðгәахәара узаазго амузыка азыӡырҩшьа ."
+
+#: data/org.gnome.Music.appdata.xml.in.in:12
+msgid ""
+"Find tracks in your local collection, use automatically generated playlists "
+"or curate a fresh one."
+msgstr ""
+"Ишәыҧшаала атрекқәа шәколлекциаҟны, арҳәара автоматикатә хьӡынҵақәа шәхы "
+"иашәырхәа, мамзар еизыжәга шәхатәы ҿыц ."
+
+#: data/org.gnome.Music.appdata.xml.in.in:167
+msgid "The GNOME Music developers"
+msgstr "Ðԥҵаҩы изин © 2018 Ðԥшьы Ðмузыка GNOME аԥҵаҩцәа"
+
+#: data/org.gnome.Music.desktop.in.in:4
+msgid "Music Player"
+msgstr "Ðмузыкатә рҳәага"
+
+#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
+#: data/org.gnome.Music.desktop.in.in:13
+msgid "Music;Player;"
+msgstr "Ðмузыкатә;Ðрҳәага;"
+
+#: data/org.gnome.Music.gschema.xml:12
+msgid "Window size"
+msgstr "Ðԥенџьыр ашәагаа"
+
+#: data/org.gnome.Music.gschema.xml:13
+msgid "Window size (width and height)."
+msgstr "Ðԥенџьыр ашәагаа (аҭбаареи аҳаракыреи)"
+
+#: data/org.gnome.Music.gschema.xml:17
+msgid "Window maximized"
+msgstr "Ðԥенџьыр иамоуп иреиҳау ашәагаа"
+
+#: data/org.gnome.Music.gschema.xml:18
+msgid "Window maximized state."
+msgstr "Иеиҵыху аҧенџьыр арежим."
+
+#: data/org.gnome.Music.gschema.xml:22
+msgid "Playback repeat mode"
+msgstr ""
+
+#. Translators: Don't translate allowed values, just the description in the brackets
+#: data/org.gnome.Music.gschema.xml:24
+msgid ""
+"Value identifies whether to repeat or randomize playback through the "
+"collection. Allowed values are: “none†(repeat and shuffle are off), "
+"“song†(repeat current song), “all†(repeat playlist, no shuffle), "
+"“shuffle†(shuffle playlist, presumes repeat all)."
+msgstr ""
+
+#: data/org.gnome.Music.gschema.xml:28
+msgid "Enable ReplayGain"
+msgstr "ReplayGain аҿакра"
+
+#: data/org.gnome.Music.gschema.xml:29
+msgid "Enables or disables ReplayGain for albums"
+msgstr "Иаҿанакуеит мамзар иаҿнахуеит афункциа ReplayGain альбомқәа рзы"
+
+#: data/org.gnome.Music.gschema.xml:33
+msgid "Inhibit system suspend"
+msgstr ""
+
+#: data/org.gnome.Music.gschema.xml:34
+msgid "Enables or disables inhibiting system suspend while playing music"
+msgstr ""
+"Иаҿанакуеит мамзар иаҿнахуеит амузыка аҿакраан аÑиÑтема азԥшра арежим ахь "
+"аиаÑразы иҟанаҵо аԥкра"
+
+#: data/org.gnome.Music.gschema.xml:38
+msgid "Report music history to Last.fm"
+msgstr ""
+
+#: data/org.gnome.Music.gschema.xml:39
+msgid ""
+"Enables or disables sending scrobbles and the “currently playing†info to "
+"Last.fm."
+msgstr ""
+"Иаҿанакуеит мамзар иаҿнахуеит аÑкробблқәеи аинформациақәеи \"уажәтәи "
+"аиҭарҿиара\" иазкны Last.fm. аҟны."
+
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
+msgid "Play"
+msgstr "Ðҿакра"
+
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
+msgid "_Play"
+msgstr ""
+
+#: data/ui/AlbumWidget.ui:134
+msgid "Add to _Favorite Songs"
+msgstr ""
+
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
+msgid "_Add to Playlist…"
+msgstr ""
+
+#: data/ui/AppMenu.ui:23 data/ui/LastfmDialog.ui:8
+msgid "Last.fm Account"
+msgstr "Ðккаунт Last.fm"
+
+#: data/ui/AppMenu.ui:36
+msgid "Report Music Listening"
+msgstr ""
+
+#: data/ui/AppMenu.ui:58
+msgid "_Keyboard Shortcuts"
+msgstr "_Ицоу арыдқәа"
+
+#: data/ui/AppMenu.ui:68
+msgid "_Help"
+msgstr "_Ðилыркаа"
+
+#: data/ui/AppMenu.ui:78
+msgid "_About Music"
+msgstr "_Ðԥшьы иазкны"
+
+#: data/ui/EmptyView.ui:30
+msgid "Welcome to Music"
+msgstr ""
+
+#: data/ui/HeaderBar.ui:16
+msgid "Menu"
+msgstr "Ðмениу"
+
+#: data/ui/HeaderBar.ui:24 data/ui/SearchHeaderBar.ui:15
+msgid "Select"
+msgstr "Ðлхра"
+
+#: data/ui/HeaderBar.ui:30 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
+msgid "_Cancel"
+msgstr "_Ðԥыхра"
+
+#: data/ui/HeaderBar.ui:42 data/ui/SearchHeaderBar.ui:32
+msgid "Search"
+msgstr "Ðҧшаара"
+
+#: data/ui/HeaderBar.ui:50
+msgid "Back"
+msgstr "Шьҭахьҟа"
+
+#: data/ui/help-overlay.ui:11
+msgctxt "shortcut window"
+msgid "General"
+msgstr ""
+
+#: data/ui/help-overlay.ui:14
+msgctxt "shortcut window"
+msgid "Close window"
+msgstr ""
+
+#: data/ui/help-overlay.ui:20
+msgctxt "shortcut window"
+msgid "Search"
+msgstr ""
+
+#: data/ui/help-overlay.ui:26
+msgctxt "shortcut window"
+msgid "Help"
+msgstr ""
+
+#: data/ui/help-overlay.ui:32
+msgctxt "shortcut window"
+msgid "Shortcuts"
+msgstr ""
+
+#: data/ui/help-overlay.ui:40
+msgctxt "shortcut window"
+msgid "Playback"
+msgstr ""
+
+#: data/ui/help-overlay.ui:43
+msgctxt "shortcut window"
+msgid "Play/Pause"
+msgstr ""
+
+#: data/ui/help-overlay.ui:49
+msgctxt "shortcut window"
+msgid "Next song"
+msgstr ""
+
+#: data/ui/help-overlay.ui:55
+msgctxt "shortcut window"
+msgid "Previous song"
+msgstr ""
+
+#: data/ui/help-overlay.ui:61
+msgctxt "shortcut window"
+msgid "Toggle repeat"
+msgstr ""
+
+#: data/ui/help-overlay.ui:67
+msgctxt "shortcut window"
+msgid "Toggle shuffle"
+msgstr ""
+
+#: data/ui/help-overlay.ui:75
+msgctxt "shortcut window"
+msgid "Navigation"
+msgstr ""
+
+#: data/ui/help-overlay.ui:78
+msgctxt "shortcut window"
+msgid "Go to Albums"
+msgstr ""
+
+#: data/ui/help-overlay.ui:84
+msgctxt "shortcut window"
+msgid "Go to Artists"
+msgstr ""
+
+#: data/ui/help-overlay.ui:90
+msgctxt "shortcut window"
+msgid "Go to Songs"
+msgstr ""
+
+#: data/ui/help-overlay.ui:96
+msgctxt "shortcut window"
+msgid "Go to Playlists"
+msgstr ""
+
+#: data/ui/help-overlay.ui:102
+msgctxt "shortcut window"
+msgid "Go back"
+msgstr ""
+
+#: data/ui/LastfmDialog.ui:21
+msgid ""
+"Last.fm is a music discovery service that gives you personalised "
+"recommendations based on the music you listen to."
+msgstr ""
+
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
+msgid "Music Reporting Not Setup"
+msgstr ""
+
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
+msgid "Login to your Last.fm account to report your music listening."
+msgstr ""
+
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
+msgid "Login"
+msgstr "Ðҭаҩра"
+
+#: data/ui/PlayerToolbar.ui:74
+msgid "Previous"
+msgstr "Ðԥхьатәи"
+
+#: data/ui/PlayerToolbar.ui:106
+msgid "Next"
+msgstr "Ԥхьаҟа"
+
+#: data/ui/PlaylistControls.ui:9
+msgid "_Delete"
+msgstr "_Ðныхра"
+
+#: data/ui/PlaylistControls.ui:13
+msgid "_Rename…"
+msgstr ""
+
+#: data/ui/PlaylistControls.ui:28
+msgid "Playlist Name"
+msgstr ""
+
+#: data/ui/PlaylistControls.ui:62
+msgid "_Done"
+msgstr "_Ихиоуп"
+
+#: data/ui/PlaylistDialog.ui:52
+msgid "Enter a name for your first playlist"
+msgstr ""
+
+#: data/ui/PlaylistDialog.ui:77
+msgid "C_reate"
+msgstr ""
+
+#: data/ui/PlaylistDialog.ui:146
+msgid "New Playlist…"
+msgstr ""
+
+#: data/ui/PlaylistDialog.ui:161
+msgid "Add"
+msgstr ""
+
+#: data/ui/PlaylistDialog.ui:202
+msgid "Add to Playlist"
+msgstr ""
+
+#: data/ui/PlaylistDialog.ui:222
+msgid "_Add"
+msgstr "_Ðцҵара"
+
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
+msgid "Artists"
+msgstr "Ðнагӡаҩцәа"
+
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
+msgid "View All"
+msgstr ""
+
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
+msgid "Albums"
+msgstr "Ðльбомқәа"
+
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
+msgid "Songs"
+msgstr ""
+
+#: data/ui/SelectionBarMenuButton.ui:7
+msgid "Select All"
+msgstr "Зегьы алхра"
+
+#: data/ui/SelectionBarMenuButton.ui:11
+msgid "Select None"
+msgstr ""
+
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
+msgid "Click on items to select them"
+msgstr ""
+
+#: data/ui/SelectionToolbar.ui:8
+msgid "_Add to Playlist"
+msgstr ""
+
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Ðҿакрақәа рыхьӡынҵа аҟнытә аныхра"
+
+#: gnomemusic/about.py:238
+msgid "The GNOME Project"
+msgstr "The GNOME Project"
+
+#: gnomemusic/about.py:242
+msgid "translator-credits"
+msgstr "Ðанба Ðаала <naala-nanba@rambler.ru>, 2022"
+
+#: gnomemusic/about.py:246
+msgid "Copyright The GNOME Music Developers"
+msgstr "Ðԥҵаҩы изин © 2018 Ðԥшьы Ðмузыка GNOME аԥҵаҩцәа"
+
+#: gnomemusic/about.py:249
+msgid "Translated by"
+msgstr ""
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
+msgid "Most Played"
+msgstr ""
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
+msgid "Never Played"
+msgstr ""
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
+msgid "Recently Played"
+msgstr ""
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
+msgid "Recently Added"
+msgstr ""
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
+msgid "Favorite Songs"
+msgstr ""
+
+#: gnomemusic/gstplayer.py:408
+msgid "Unable to play the file"
+msgstr ""
+
+#: gnomemusic/gstplayer.py:414
+msgid "_Find in {}"
+msgstr "_Ðҧшаара {} аҟны"
+
+#. TRANSLATORS: separator for two codecs
+#: gnomemusic/gstplayer.py:424
+msgid " and "
+msgstr " наÑгьы "
+
+#. TRANSLATORS: separator for a list of codecs
+#: gnomemusic/gstplayer.py:427
+msgid ", "
+msgstr ", "
+
+#: gnomemusic/gstplayer.py:429
+msgid "{} is required to play the file, but is not installed."
+msgid_plural "{} are required to play the file, but are not installed."
+msgstr[0] ""
+msgstr[1] ""
+
+#: gnomemusic/inhibitsuspend.py:63
+msgid "Playing music"
+msgstr ""
+
+#. Translators: "shuffle" causes tracks to play in random order.
+#: gnomemusic/player.py:44
+msgid "Shuffle"
+msgstr "Имашәыру аишьҭагылашьа"
+
+#: gnomemusic/player.py:45
+msgid "Repeat Song"
+msgstr ""
+
+#: gnomemusic/player.py:46
+msgid "Repeat All"
+msgstr ""
+
+#: gnomemusic/player.py:47
+msgid "Shuffle/Repeat Off"
+msgstr ""
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr ""
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Ðрхынҳәра"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr ""
+
+#: gnomemusic/utils.py:92
+msgid "Unknown album"
+msgstr ""
+
+#: gnomemusic/utils.py:113
+msgid "Unknown Artist"
+msgstr ""
+
+#: gnomemusic/views/emptyview.py:65
+msgid "Your XDG Music directory is not set."
+msgstr ""
+
+#: gnomemusic/views/emptyview.py:72
+msgid "Music Folder"
+msgstr ""
+
+#. TRANSLATORS: This is a label to display a link to open user's music
+#. folder. {} will be replaced with the translated text 'Music folder'
+#: gnomemusic/views/emptyview.py:76
+msgid "The contents of your {} will appear here."
+msgstr ""
+
+#: gnomemusic/views/emptyview.py:124
+msgid "No Music Found"
+msgstr ""
+
+#: gnomemusic/views/emptyview.py:125
+msgid "Try a Different Search"
+msgstr ""
+
+#: gnomemusic/views/emptyview.py:129
+msgid "GNOME Music could not connect to Tracker."
+msgstr ""
+
+#: gnomemusic/views/emptyview.py:131
+msgid "Your music files cannot be indexed without Tracker running."
+msgstr ""
+
+#: gnomemusic/views/emptyview.py:137
+msgid "Your system Tracker version seems outdated."
+msgstr ""
+
+#: gnomemusic/views/emptyview.py:139
+msgid "Music needs Tracker version 3.0.0 or higher."
+msgstr ""
+
+#: gnomemusic/views/playlistsview.py:45
+msgid "Playlists"
+msgstr "Ðҿакрақәа рыхьӡынҵа"
+
+#: gnomemusic/views/searchview.py:304
+msgid "Artists Results"
+msgstr ""
+
+#: gnomemusic/views/searchview.py:318
+msgid "Albums Results"
+msgstr ""
+
+#: gnomemusic/widgets/albumwidget.py:245
+msgid "{} minute"
+msgid_plural "{} minutes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: gnomemusic/widgets/discbox.py:75
+msgid "Disc {}"
+msgstr ""
+
+#: gnomemusic/widgets/headerbar.py:66
+msgid "Selected {} song"
+msgid_plural "Selected {} songs"
+msgstr[0] ""
+msgstr[1] ""
+
+#: gnomemusic/widgets/lastfmdialog.py:64
+msgid "Your music listening is reported to Last.fm."
+msgstr ""
+
+#: gnomemusic/widgets/lastfmdialog.py:66
+msgid "Your music listening is not reported to Last.fm."
+msgstr ""
+
+#. TRANSLATORS: displays the username of the Last.fm account
+#: gnomemusic/widgets/lastfmdialog.py:70
+msgid "Logged in as {}"
+msgstr ""
+
+#: gnomemusic/widgets/lastfmdialog.py:71
+msgid "Configure"
+msgstr ""
+
+#: gnomemusic/widgets/playertoolbar.py:167
+msgid "Pause"
+msgstr "Pause"
+
+#: gnomemusic/widgets/playlistcontrols.py:130
+msgid "{} Song"
+msgid_plural "{} Songs"
+msgstr[0] ""
+msgstr[1] ""
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#, fuzzy
diff --git a/po/be.po b/po/be.po
index 60eb2807..ef8eafe9 100644
--- a/po/be.po
+++ b/po/be.po
@@ -8,21 +8,23 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-08-28 21:37+0300\n"
-"Last-Translator: Launchpad translators\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-07-29 23:48+0300\n"
+"Last-Translator: Yuras Shumovich <shumovichy@gmail.com>\n"
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
"Language: be\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Poedit 3.0\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Poedit 3.3.2\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "Музыка GNOME"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Музыка"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -41,15 +43,10 @@ msgstr ""
"Шукайце Ñ‚Ñ€Ñкі Ñž Ñваёй лакальнай калекцыі, карыÑтайцеÑÑ Ð°ÑžÑ‚Ð°Ð¼Ð°Ñ‚Ñ‹Ñ‡Ð½Ð° "
"згенерыраванымі ÑпіÑамі Ð¿Ñ€Ð°Ð¹Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ дадайце ўлаÑны."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "РаÑпрацоўшчыкі «Музыка GNOME»"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Музыка"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Музычны прайгравальнік"
@@ -68,27 +65,19 @@ msgid "Window size (width and height)."
msgstr "Памер акна (ÑˆÑ‹Ñ€Ñ‹Ð½Ñ Ñ– вышынÑ)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Становішча акна"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Становішча акна (x, y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
-msgstr "Ðкно разгорнута"
+msgstr "Разгортванне акна"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
-msgstr "Стан разгорнутага акна."
+msgstr "Стан акна – разгорнута."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "РÑжым паўтору прайграваннÑ"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -101,29 +90,29 @@ msgstr ""
"ÑпіÑа Ð¿Ñ€Ð°Ð¹Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð±ÐµÐ· выпадковаÑці) Ñ– \"shuffle\" (выпадковае прайграванне "
"ÑпіÑа, магчыма з паўторам)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Уключыць ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Уключыць або адключыць ReplayGain Ð´Ð»Ñ Ð°Ð»ÑŒÐ±Ð¾Ð¼Ð°Ñž"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Блакіраваць прыпыненне працы камп'ютара"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Уключыць або адключыць блакіраванне Ð¿Ñ€Ñ‹Ð¿Ñ‹Ð½ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ñ†Ñ‹ Ð¿Ð°Ð´Ñ‡Ð°Ñ Ð¿Ñ€Ð°Ð¹Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ "
"музыкі"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "ÐдпраўлÑць гіÑторыю праÑлуханай музыкі на Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -131,79 +120,21 @@ msgstr ""
"Уключыць або адключыць адпраўку музыкальнага профілю Ñ– звеÑтак, ÑÐºÐ°Ñ Ð¿ÐµÑÐ½Ñ "
"\"прайграецца зараз\" на Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "ÐўтарÑкае права © 2018 РаÑпрацоўшчыкі «Музыка GNOME»"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Музычны прайгравальнік Ñ– праграма ÐºÑ–Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð¼ÑƒÐ·Ñ‹ÐºÐ°Ð¹ Ð´Ð»Ñ GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Ðаведаць Ñайт праграмы Музыка GNOME"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"Музыка GNOME з'ÑўлÑецца Ñвабодным праграмным забеÑпÑчÑннем. Ð’Ñ‹ можаце "
-"раÑпаўÑюджваць гÑту праграму згодна з умовамі Ðгульнай ГрамадÑкай ЛіцÑнзіі "
-"GNU (GPL), апублікаванай Фондам Ñвабоднага праграмнага забеÑпÑчÑннÑ, верÑÑ–Ñ– 2 ці любой "
-"пазнейшай.\n"
-"\n"
-"Музыка GNOME раÑпаўÑюджваецца з надзеÑй, што Ñна будзе карыÑнай, але без "
-"ніÑкіх гарантый, у тым ліку камерцыйнай вартаÑці праграмы Ñ– наогул Ñе "
-"карыÑці. Каб атрымаць больш інфармацыі глÑдзіце Ñ‚ÑкÑÑ‚ Ðгульнай ГрамадÑкай "
-"ЛіцÑнзіі GNU (GPL).\n"
-"\n"
-"Ð’Ñ‹ павінны былі атрымаць копію Ðгульнай ГрамадÑкай ЛіцÑнзіі GNU (GPL) разам "
-"з гÑтай праграмай. Калі вы не атрымалі Ñе, паведаміце пра гÑта Фонду "
-"Ñвабоднага праграмнага забеÑпÑчÑÐ½Ð½Ñ Ð½Ð° адраÑ: the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"Ðўтары Музыкі GNOME даюць дазвол на раÑпаўÑюджванне ўбудоў GStreamer, не "
-"ÑумÑшчальных з GPL, разам з GStreamer Ñ– Музыкай GNOME. ГÑÑ‚Ñ‹ дазвол ноÑіць "
-"дадатковы характар Ñ– дапаўнÑе правы, Ð³Ð°Ñ€Ð°Ð½Ñ‚Ð°Ð²Ð°Ð½Ñ‹Ñ Ð»Ñ–Ñ†ÑнзіÑй GPL, ÑÐºÐ°Ñ "
-"ахоўвае Музыку GNOME. Калі вы змÑнÑеце гÑÑ‚Ñ‹ код, вы можаце раÑпаўÑюдзіць "
-"гÑÑ‚Ñ‹ дазвол на вашу верÑÑ–ÑŽ коду, Ñ…Ð°Ñ†Ñ Ð²Ñ‹ Ñ– не абавÑзаны гÑта рабіць. Калі "
-"вы не хочаце рабіць гÑта, проÑта выдаліце Ñ‚ÑкÑÑ‚ гÑтага дадатковага дазволу."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Прайграваць"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Прайграваць"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Дадаць у _ÐÐ±Ñ€Ð°Ð½Ñ‹Ñ Ð¿ÐµÑні"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_Дадаць у ÑÐ¿Ñ–Ñ Ð¿Ñ€Ð°Ð¹Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ…"
@@ -211,133 +142,133 @@ msgstr "_Дадаць у ÑÐ¿Ñ–Ñ Ð¿Ñ€Ð°Ð¹Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ…"
msgid "Last.fm Account"
msgstr "Уліковы Ð·Ð°Ð¿Ñ–Ñ Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "ÐдпраўлÑць гіÑторыю праÑлуханай музыкі"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_СпалучÑнні клавіш"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Даведка"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_Ðб праграме"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Вітаем у праграме Музыка"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Меню"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Выбраць"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_СкаÑаваць"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Пошук"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Ðазад"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Ðгульнае"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Закрыць акно"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Пошук"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Даведка"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "СпалучÑнні клавіш"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Прайграванне"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Прайграванне/паўза"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "ÐаÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ð¿ÐµÑнÑ"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "ПапÑÑ€ÑднÑÑ Ð¿ÐµÑнÑ"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Укл/выкл паўтор"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Укл/выкл таÑаванне"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "ÐавігацыÑ"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "ПерайÑці да альбомаў"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "ПерайÑці да выканаўцаў"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "ПерайÑці да пеÑень"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "ПерайÑці да ÑпіÑаў прайграваннÑ"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Ðазад"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -345,89 +276,81 @@ msgstr ""
"Last.fm — гÑта ÑÑÑ€Ð²Ñ–Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ музыкі, Ñкі дае аÑабіÑÑ‚Ñ‹Ñ Ñ€Ñкамендацыі, "
"заÑÐ½Ð°Ð²Ð°Ð½Ñ‹Ñ Ð½Ð° праÑлуханай вамі музыцы."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Ðдпраўка звеÑтак пра музыку не наладжана"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"Увайдзіце Ñž Ñвой уліковы Ð·Ð°Ð¿Ñ–Ñ Last.fm, каб адпраўлÑць гіÑторыю праÑлуханай "
"музыкі."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "УвайÑці"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Загрузка"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "ПапÑÑ€Ñдні"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "ÐаÑтупны"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Выдаліць"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Перайменаваць…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Ðазва ÑпіÑа прайграваннÑ"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Гатова"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "УвÑдзіце назву вашага першага ÑпіÑа прайграваннÑ"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "С_тварыць"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Ðовы ÑÐ¿Ñ–Ñ Ð¿Ñ€Ð°Ð¹Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Дадаць"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Дадаць у ÑÐ¿Ñ–Ñ Ð¿Ñ€Ð°Ð¹Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Дадаць"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Ðдрабіць"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Выканаўцы"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "УÑе"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Ðльбомы"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "ПеÑні"
@@ -439,44 +362,56 @@ msgstr "Вылучыць уÑÑ‘"
msgid "Select None"
msgstr "СкаÑаваць вылучÑнне"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Каб вылучыць аб'екты, пÑтрыкайце Ñž Ñ–Ñ…"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Дадаць у ÑÐ¿Ñ–Ñ Ð¿Ñ€Ð°Ð¹Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Дадаць у ÑÐ¿Ñ–Ñ Ð¿Ñ€Ð°Ð¹Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Выдаліць Ñа ÑпіÑа прайграваннÑ"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "Праект GNOME"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr "Launchpad translators"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "ÐўтарÑкае права РаÑпрацоўшчыкі «Музыка GNOME»"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Выдаліць Ñа ÑпіÑа прайграваннÑ"
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Пераклад"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "ÐайчаÑцей прайгранае"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Ðіколі не прайгранае"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "ÐÑдаўна прайгранае"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "ÐÑдаўна дададзенае"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "ÐÐ±Ñ€Ð°Ð½Ñ‹Ñ Ð¿ÐµÑні"
@@ -510,27 +445,39 @@ msgid "Playing music"
msgstr "Прайграванне музыкі"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Выпадковы парадак"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Выпадковы парадак і паўтор выключаны"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Паўтараць пеÑню"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Паўтараць уÑÑ‘"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Выпадковы парадак і паўтор выключаны"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Выпадковы парадак"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Ð¡Ð¿Ñ–Ñ Ð¿Ñ€Ð°Ð¹Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ {} выдалены"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Ðдрабіць"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} выдалена з {}"
-#: gnomemusic/utils.py:80
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "ÐевÑдомы альбом"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "ÐевÑдомы выканаўца"
@@ -576,64 +523,137 @@ msgstr "Патрабуецца Tracker верÑÑ–Ñ– 3.0.0 або навейшаÐ
msgid "Playlists"
msgstr "СпіÑÑ‹ прайграваннÑ"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Ð—Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ‹Ñ Ð²Ñ‹ÐºÐ°Ð½Ð°ÑžÑ†Ñ‹"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Ð—Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ‹Ñ Ð°Ð»ÑŒÐ±Ð¾Ð¼Ñ‹"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} хвіліна"
msgstr[1] "{} хвіліны"
msgstr[2] "{} хвілін"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "ДыÑк {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "Выбрана {} пеÑнÑ"
msgstr[1] "Выбрана {} пеÑні"
msgstr[2] "Выбрана {} пеÑень"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Ваша гіÑÑ‚Ð¾Ñ€Ñ‹Ñ Ð¿Ñ€Ð°ÑÐ»ÑƒÑ…Ð²Ð°Ð½Ð½Ñ Ð°Ð´Ð¿Ñ€Ð°ÑžÐ»ÐµÐ½Ð° на Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Ваша гіÑÑ‚Ð¾Ñ€Ñ‹Ñ Ð¿Ñ€Ð°ÑÐ»ÑƒÑ…Ð²Ð°Ð½Ð½Ñ Ð½Ðµ адпраўлена на Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Ð’Ñ‹ ўвайшлі Ñк {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Ðаладзіць"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Ð¡Ð¿Ñ–Ñ Ð¿Ñ€Ð°Ð¹Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ {} выдалены"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} выдалена з {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Прыпыніць"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} пеÑнÑ"
msgstr[1] "{} пеÑні"
msgstr[2] "{} пеÑень"
+
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Пошук пеÑень, выканаўцаў Ñ– ÑпіÑаў прайграваннÑ"
+
+#~ msgid "GNOME Music"
+#~ msgstr "Музыка GNOME"
+
+#~ msgid "Window position"
+#~ msgstr "Становішча акна"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Становішча акна (x, y)."
+
+#~ msgid "Copyright © 2018 GNOME Music Developers"
+#~ msgstr "ÐўтарÑкае права © 2018 РаÑпрацоўшчыкі «Музыка GNOME»"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "Музычны прайгравальнік Ñ– праграма ÐºÑ–Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð¼ÑƒÐ·Ñ‹ÐºÐ°Ð¹ Ð´Ð»Ñ GNOME."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Ðаведаць Ñайт праграмы Музыка GNOME"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "Музыка GNOME з'ÑўлÑецца Ñвабодным праграмным забеÑпÑчÑннем. Ð’Ñ‹ можаце "
+#~ "раÑпаўÑюджваць гÑту праграму згодна з умовамі Ðгульнай ГрамадÑкай "
+#~ "ЛіцÑнзіі GNU (GPL), апублікаванай Фондам Ñвабоднага праграмнага "
+#~ "забеÑпÑчÑннÑ, верÑÑ–Ñ– 2 ці любой пазнейшай.\n"
+#~ "\n"
+#~ "Музыка GNOME раÑпаўÑюджваецца з надзеÑй, што Ñна будзе карыÑнай, але без "
+#~ "ніÑкіх гарантый, у тым ліку камерцыйнай вартаÑці праграмы Ñ– наогул Ñе "
+#~ "карыÑці. Каб атрымаць больш інфармацыі глÑдзіце Ñ‚ÑкÑÑ‚ Ðгульнай "
+#~ "ГрамадÑкай ЛіцÑнзіі GNU (GPL).\n"
+#~ "\n"
+#~ "Ð’Ñ‹ павінны былі атрымаць копію Ðгульнай ГрамадÑкай ЛіцÑнзіі GNU (GPL) "
+#~ "разам з гÑтай праграмай. Калі вы не атрымалі Ñе, паведаміце пра гÑта "
+#~ "Фонду Ñвабоднага праграмнага забеÑпÑчÑÐ½Ð½Ñ Ð½Ð° адраÑ: the Free Software "
+#~ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 "
+#~ "USA.\n"
+#~ "\n"
+#~ "Ðўтары Музыкі GNOME даюць дазвол на раÑпаўÑюджванне ўбудоў GStreamer, не "
+#~ "ÑумÑшчальных з GPL, разам з GStreamer Ñ– Музыкай GNOME. ГÑÑ‚Ñ‹ дазвол "
+#~ "ноÑіць дадатковы характар Ñ– дапаўнÑе правы, Ð³Ð°Ñ€Ð°Ð½Ñ‚Ð°Ð²Ð°Ð½Ñ‹Ñ Ð»Ñ–Ñ†ÑнзіÑй GPL, "
+#~ "ÑÐºÐ°Ñ Ð°Ñ…Ð¾ÑžÐ²Ð°Ðµ Музыку GNOME. Калі вы змÑнÑеце гÑÑ‚Ñ‹ код, вы можаце "
+#~ "раÑпаўÑюдзіць гÑÑ‚Ñ‹ дазвол на вашу верÑÑ–ÑŽ коду, Ñ…Ð°Ñ†Ñ Ð²Ñ‹ Ñ– не абавÑзаны "
+#~ "гÑта рабіць. Калі вы не хочаце рабіць гÑта, проÑта выдаліце Ñ‚ÑкÑÑ‚ гÑтага "
+#~ "дадатковага дазволу."
+
+#~ msgid "Loading"
+#~ msgstr "Загрузка"
+
+#~ msgid "_Undo"
+#~ msgstr "_Ðдрабіць"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Дадаць у ÑÐ¿Ñ–Ñ Ð¿Ñ€Ð°Ð¹Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ…"
+
+#~ msgid "Remove From Playlist"
+#~ msgstr "Выдаліць Ñа ÑпіÑа прайграваннÑ"
diff --git a/po/bg.po b/po/bg.po
index dc01d8f7..846799f4 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -1,15 +1,17 @@
# Bulgarian translation for gnome-music po-file.
# Copyright (C) 2016 Free Software Foundation, Inc.
+# Copyright (C) 2021, 2022 Alexander Shopov.
# This file is distributed under the same license as the gnome-music package.
# Hristo Kozhuharov "XTard" <ickomcdevill@gmail.com>, 2016.
+# Alexander Shopov <ash@kambanaria.org>, 2021, 2022.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-15 19:43+0200\n"
-"PO-Revision-Date: 2016-02-15 19:42+0200\n"
-"Last-Translator: Hristo Kozhuharov <ickomcdevill@gmail.com>\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
+"POT-Creation-Date: 2022-09-11 18:29+0000\n"
+"PO-Revision-Date: 2022-09-12 22:56+0200\n"
+"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict-notifications@fsa-bg.org>\n"
"Language: bg\n"
"MIME-Version: 1.0\n"
@@ -17,41 +19,69 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../data/org.gnome.Music.gschema.xml.h:1
+#: data/org.gnome.Music.appdata.xml.in.in:6
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:236
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Музика"
+
+#: data/org.gnome.Music.appdata.xml.in.in:7
+#: data/org.gnome.Music.desktop.in.in:5
+msgid "Play and organize your music collection"
+msgstr "Слушайте и организирайте колекциÑта Ñи от музика"
+
+#: data/org.gnome.Music.appdata.xml.in.in:9
+msgid "An easy and pleasant way to play your music."
+msgstr "ЛеÑен и удобен начин да Ñлушате музика."
+
+#: data/org.gnome.Music.appdata.xml.in.in:12
+msgid ""
+"Find tracks in your local collection, use automatically generated playlists "
+"or curate a fresh one."
+msgstr ""
+"Откриване на пеÑни в локалната ви колекциÑ, ползване на автоматично или "
+"ръчно Ñъздадени ÑпиÑъци за изпълнение."
+
+#: data/org.gnome.Music.appdata.xml.in.in:167
+msgid "The GNOME Music developers"
+msgstr "Разработчиците на „Музика на GNOME“"
+
+#: data/org.gnome.Music.desktop.in.in:4
+msgid "Music Player"
+msgstr "Изпълнение на музика"
+
+#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
+#: data/org.gnome.Music.desktop.in.in:13
+msgid "Music;Player;"
+msgstr "music;player;музика;плеър;пеÑни;Ñлуша;"
+
+#: data/org.gnome.Music.gschema.xml:12
msgid "Window size"
msgstr "Размер на прозореца"
-#: ../data/org.gnome.Music.gschema.xml.h:2
+#: data/org.gnome.Music.gschema.xml:13
msgid "Window size (width and height)."
msgstr "Размер на прозореца (широчина и виÑочина)."
-#: ../data/org.gnome.Music.gschema.xml.h:3
-msgid "Window position"
-msgstr "Разположение на прозореца"
-
-#: ../data/org.gnome.Music.gschema.xml.h:4
-msgid "Window position (x and y)."
-msgstr "Разположение на прозореца (x и y)."
-
-#: ../data/org.gnome.Music.gschema.xml.h:5
+#: data/org.gnome.Music.gschema.xml:17
msgid "Window maximized"
msgstr "Прозорецът е макÑимизиран"
-#: ../data/org.gnome.Music.gschema.xml.h:6
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Прозорецът е в макÑимизирано ÑÑŠÑтоÑние."
-#: ../data/org.gnome.Music.gschema.xml.h:7
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Режим на повторение"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: ../data/org.gnome.Music.gschema.xml.h:9
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
-"collection. Allowed values are: \"none\" (repeat and shuffle are off), \"song"
-"\" (repeat current song), \"all\" (repeat playlist, no shuffle), \"shuffle"
-"\" (shuffle playlist, presumes repeat all)."
+"collection. Allowed values are: “none†(repeat and shuffle are off), "
+"“song†(repeat current song), “all†(repeat playlist, no shuffle), "
+"“shuffle†(shuffle playlist, presumes repeat all)."
msgstr ""
"СтойноÑÑ‚Ñ‚a Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð´Ð°Ð»Ð¸ да Ñе повтарÑÑ‚ или да Ñе възпроизвеждат разбъркано "
"нещата от колекциÑта. Позволени ÑтойноÑти Ñа: „none“ (без повтарÑне или "
@@ -59,446 +89,496 @@ msgstr ""
"разбъркване на ÑпиÑък за изпълнение) и „shuffle“ (повтарÑне на ÑпиÑък за "
"изпълнение Ñ Ñ€Ð°Ð·Ð±ÑŠÑ€ÐºÐ²Ð°Ð½Ðµ)."
-#: ../data/org.gnome.Music.gschema.xml.h:10
-msgid "Search mode"
-msgstr "Режим на Ñ‚ÑŠÑ€Ñене"
+#: data/org.gnome.Music.gschema.xml:28
+msgid "Enable ReplayGain"
+msgstr "Включване на автоматичното регулиране на звука"
-#: ../data/org.gnome.Music.gschema.xml.h:11
-msgid "If true, the search bar is shown."
-msgstr "Ðко е включено, прозорецът за Ñ‚ÑŠÑ€Ñене е показан."
+#: data/org.gnome.Music.gschema.xml:29
+msgid "Enables or disables ReplayGain for albums"
+msgstr "ПозволÑване или не на автоматичното регулиране на звука за албуми"
-#: ../data/org.gnome.Music.gschema.xml.h:12
-msgid "Notifications mode"
-msgstr "Режим за извеÑтиÑ"
+#: data/org.gnome.Music.gschema.xml:33
+msgid "Inhibit system suspend"
+msgstr "ПредотвратÑване на заÑпиване на ÑиÑтемата"
-#: ../data/org.gnome.Music.gschema.xml.h:13
-msgid "Enables or disables playback notifications"
-msgstr "Включва или изключва извеÑтиÑта при изпълнение"
+#: data/org.gnome.Music.gschema.xml:34
+msgid "Enables or disables inhibiting system suspend while playing music"
+msgstr ""
+"ПозволÑване или не на заÑпиване на ÑиÑтемата докато Ñе изпълнÑва музика"
-#: ../data/org.gnome.Music.gschema.xml.h:14
-msgid "Max chars to display in track name on Artist view"
-msgstr "МакÑимален брой знаци за името на пеÑните в прегледа по автори"
+#: data/org.gnome.Music.gschema.xml:38
+msgid "Report music history to Last.fm"
+msgstr "Докладване на изпълнÑваната музика към Last.fm"
-#: ../data/org.gnome.Music.gschema.xml.h:15
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
-"This setting modifies the amount of chars for track title on Artist view "
-"before its been ellipsized. Set this to -1 to disable"
+"Enables or disables sending scrobbles and the “currently playing†info to "
+"Last.fm."
msgstr ""
-"Тази наÑтройка Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð¿Ñ€Ð¸ колко знака да Ñе Ñъкращава заглавието на пеÑен "
-"в прегледа по автори. Променете това на -1, за да го изключите"
+"ПозволÑване или не на пращане на информациÑта за Ñлушаната музика към Last."
+"fm."
-#: ../data/org.gnome.Music.gschema.xml.h:16
-msgid "Enable ReplayGain"
-msgstr "Включване на автоматичното регулиране на звука"
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
+msgid "Play"
+msgstr "Изпълнение"
-#: ../data/org.gnome.Music.gschema.xml.h:17
-msgid "Enables or disables ReplayGain for albums"
-msgstr "Превключва автоматичното регулиране на звука за албуми"
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
+msgid "_Play"
+msgstr "_Изпълнение"
-#: ../data/org.gnome.Music.gschema.xml.h:18
-msgid "Inital state has been displayed"
-msgstr "Показано е начално ÑÑŠÑтоÑние"
+#: data/ui/AlbumWidget.ui:134
+msgid "Add to _Favorite Songs"
+msgstr "ДобавÑне в любими пеÑни…"
-#: ../data/org.gnome.Music.gschema.xml.h:19
-msgid "Set to true when initial state has been displayed"
-msgstr "ИÑтина, когато е показано началното е било показано"
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
+msgid "_Add to Playlist…"
+msgstr "_ДобавÑне в ÑпиÑък…"
-#: ../data/gnome-music.desktop.in.h:1 ../gnomemusic/application.py:55
-#: ../gnomemusic/application.py:107 ../gnomemusic/toolbar.py:90
-#: ../gnomemusic/window.py:62 ../data/AboutDialog.ui.in.h:1
-msgid "Music"
-msgstr "Музика"
+#: data/ui/AppMenu.ui:23 data/ui/LastfmDialog.ui:8
+msgid "Last.fm Account"
+msgstr "РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð·Ð° Last.fm"
-#: ../data/gnome-music.desktop.in.h:2
-msgid "Music Player"
-msgstr "Изпълнение на музика"
+#: data/ui/AppMenu.ui:36
+msgid "Report Music Listening"
+msgstr "Публикуване на Ñлушаната музика"
-#: ../data/gnome-music.desktop.in.h:3 ../data/gnome-music.appdata.xml.in.h:2
-msgid "Play and organize your music collection"
-msgstr "Слушайте и организирайте колекциÑта Ñи от музика"
+#: data/ui/AppMenu.ui:58
+msgid "_Keyboard Shortcuts"
+msgstr "_Клавишни комбинации"
-#: ../data/gnome-music.desktop.in.h:4
-msgid "Music;Player;"
-msgstr "музика;плеър;пеÑни;Ñлуша;music;player;"
+#: data/ui/AppMenu.ui:68
+msgid "_Help"
+msgstr "Помо_щ"
-#: ../data/gnome-music.appdata.xml.in.h:1
-msgid "GNOME Music"
-msgstr "Музика"
+#: data/ui/AppMenu.ui:78
+msgid "_About Music"
+msgstr "_ОтноÑно „Музика“"
-#: ../data/gnome-music.appdata.xml.in.h:3
-msgid "Music is the new GNOME music playing application."
-msgstr "„Музика“ е новото приложение на GNOME за музика."
+#: data/ui/EmptyView.ui:30
+msgid "Welcome to Music"
+msgstr "Добре дошли в „Музика“"
-#: ../gnomemusic/albumArtCache.py:106 ../gnomemusic/albumArtCache.py:114
-msgid "Untitled"
-msgstr "Без заглавие"
+#: data/ui/HeaderBar.ui:16
+msgid "Menu"
+msgstr "Меню"
-#: ../gnomemusic/mpris.py:151 ../gnomemusic/notification.py:95
-#: ../gnomemusic/player.py:607 ../gnomemusic/view.py:577
-#: ../gnomemusic/view.py:990 ../gnomemusic/view.py:1458
-msgid "Unknown Album"
-msgstr "ÐеизвеÑтен албум"
+#: data/ui/HeaderBar.ui:24 data/ui/SearchHeaderBar.ui:15
+msgid "Select"
+msgstr "Избор"
-#: ../gnomemusic/mpris.py:167 ../gnomemusic/notification.py:93
-#: ../gnomemusic/player.py:597 ../gnomemusic/view.py:219
-#: ../gnomemusic/view.py:479 ../gnomemusic/view.py:733
-#: ../gnomemusic/view.py:1165 ../gnomemusic/view.py:1456
-#: ../gnomemusic/view.py:1508 ../gnomemusic/widgets.py:249
-#: ../gnomemusic/widgets.py:661
-msgid "Unknown Artist"
-msgstr "ÐеизвеÑтен автор"
+#: data/ui/HeaderBar.ui:30 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
+msgid "_Cancel"
+msgstr "_Отказ"
-#: ../gnomemusic/notification.py:84
-msgid "Not playing"
-msgstr "Пауза"
+#: data/ui/HeaderBar.ui:42 data/ui/SearchHeaderBar.ui:32
+msgid "Search"
+msgstr "ТърÑене"
+
+#: data/ui/HeaderBar.ui:50
+msgid "Back"
+msgstr "Ðазад"
-#. TRANSLATORS: by refers to the artist, from to the album
-#: ../gnomemusic/notification.py:99
-#, python-format
-msgid "by %s, from %s"
-msgstr "на %s, от албума „%s“"
+#: data/ui/help-overlay.ui:11
+msgctxt "shortcut window"
+msgid "General"
+msgstr "Общи"
-#: ../gnomemusic/notification.py:131 ../data/PlayerToolbar.ui.h:6
-msgid "Previous"
-msgstr "Предишна"
+#: data/ui/help-overlay.ui:14
+msgctxt "shortcut window"
+msgid "Close window"
+msgstr "ЗатварÑне на прозорец"
-#: ../gnomemusic/notification.py:134 ../gnomemusic/player.py:554
-msgid "Pause"
-msgstr "Пауза"
+#: data/ui/help-overlay.ui:20
+msgctxt "shortcut window"
+msgid "Search"
+msgstr "ТърÑене"
-#: ../gnomemusic/notification.py:137 ../gnomemusic/player.py:557
-#: ../data/PlayerToolbar.ui.h:7
-msgid "Play"
+#: data/ui/help-overlay.ui:26
+msgctxt "shortcut window"
+msgid "Help"
+msgstr "Помощ"
+
+#: data/ui/help-overlay.ui:32
+msgctxt "shortcut window"
+msgid "Shortcuts"
+msgstr "Клавишни комбинации"
+
+#: data/ui/help-overlay.ui:40
+msgctxt "shortcut window"
+msgid "Playback"
msgstr "Изпълнение"
-#: ../gnomemusic/notification.py:139 ../data/PlayerToolbar.ui.h:8
+#: data/ui/help-overlay.ui:43
+msgctxt "shortcut window"
+msgid "Play/Pause"
+msgstr "Изпълнение/пауза"
+
+#: data/ui/help-overlay.ui:49
+msgctxt "shortcut window"
+msgid "Next song"
+msgstr "Следваща пеÑен"
+
+#: data/ui/help-overlay.ui:55
+msgctxt "shortcut window"
+msgid "Previous song"
+msgstr "Предишна пеÑен"
+
+#: data/ui/help-overlay.ui:61
+msgctxt "shortcut window"
+msgid "Toggle repeat"
+msgstr "ПовтарÑне"
+
+#: data/ui/help-overlay.ui:67
+msgctxt "shortcut window"
+msgid "Toggle shuffle"
+msgstr "Разбъркване"
+
+#: data/ui/help-overlay.ui:75
+msgctxt "shortcut window"
+msgid "Navigation"
+msgstr "ÐавигациÑ"
+
+#: data/ui/help-overlay.ui:78
+msgctxt "shortcut window"
+msgid "Go to Albums"
+msgstr "Към албумите"
+
+#: data/ui/help-overlay.ui:84
+msgctxt "shortcut window"
+msgid "Go to Artists"
+msgstr "Към изпълнителите"
+
+#: data/ui/help-overlay.ui:90
+msgctxt "shortcut window"
+msgid "Go to Songs"
+msgstr "Към пеÑните"
+
+#: data/ui/help-overlay.ui:96
+msgctxt "shortcut window"
+msgid "Go to Playlists"
+msgstr "Към ÑпиÑъците"
+
+#: data/ui/help-overlay.ui:102
+msgctxt "shortcut window"
+msgid "Go back"
+msgstr "Ðазад"
+
+#: data/ui/LastfmDialog.ui:21
+msgid ""
+"Last.fm is a music discovery service that gives you personalised "
+"recommendations based on the music you listen to."
+msgstr ""
+"Last.fm е уÑлуга, за откриване на музика. Ð¢Ñ Ð´Ð°Ð²Ð° препоръки на базата на "
+"това, което Ñлушате."
+
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
+msgid "Music Reporting Not Setup"
+msgstr "Публикуването на музика не е наÑтроено"
+
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
+msgid "Login to your Last.fm account to report your music listening."
+msgstr ""
+"Впишете Ñе в региÑтрациÑта Ñи в Last.fm, за да публикувате каква музика "
+"Ñлушате."
+
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
+msgid "Login"
+msgstr "ВпиÑване"
+
+#: data/ui/PlayerToolbar.ui:74
+msgid "Previous"
+msgstr "Предишна"
+
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Следваща"
-#: ../gnomemusic/player.py:1090
-msgid "Unable to play the file"
-msgstr "Файлът не може да Ñе възпроизведе"
+#: data/ui/PlaylistControls.ui:9
+msgid "_Delete"
+msgstr "_Изтриване"
-#. TRANSLATORS: this is a button to launch a codec installer.
-#. %s will be replaced with the software installer's name, e.g.
-#. 'Software' in case of gnome-software.
-#: ../gnomemusic/player.py:1095
-#, python-format
-msgid "_Find in %s"
-msgstr "_ТърÑене в „%s“"
+#: data/ui/PlaylistControls.ui:13
+msgid "_Rename…"
+msgstr "Пре_именуване…"
-#. TRANSLATORS: separator for a list of codecs
-#: ../gnomemusic/player.py:1105
-msgid " and "
-msgstr "и"
+#: data/ui/PlaylistControls.ui:28
+msgid "Playlist Name"
+msgstr "Име на ÑпиÑъка за изпълнение"
-#. TRANSLATORS: separator for a list of codecs
-#: ../gnomemusic/player.py:1108
-msgid ", "
-msgstr ","
+#: data/ui/PlaylistControls.ui:62
+msgid "_Done"
+msgstr "_Готово"
+
+#: data/ui/PlaylistDialog.ui:52
+msgid "Enter a name for your first playlist"
+msgstr "Въведете име за ÑпиÑъка за изпълнение"
+
+#: data/ui/PlaylistDialog.ui:77
+msgid "C_reate"
+msgstr "_Създаване"
+
+#: data/ui/PlaylistDialog.ui:146
+msgid "New Playlist…"
+msgstr "Ðов ÑпиÑък…"
+
+#: data/ui/PlaylistDialog.ui:161
+msgid "Add"
+msgstr "ДобавÑне"
+
+#: data/ui/PlaylistDialog.ui:202
+msgid "Add to Playlist"
+msgstr "ДобавÑне в ÑпиÑък"
+
+#: data/ui/PlaylistDialog.ui:222
+msgid "_Add"
+msgstr "_ДобавÑне"
+
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
+msgid "Artists"
+msgstr "Ðвтори"
+
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
+msgid "View All"
+msgstr "Преглед на вÑички"
+
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
+msgid "Albums"
+msgstr "Ðлбуми"
-#: ../gnomemusic/player.py:1109
-#, python-format
-msgid "%s is required to play the file, but is not installed."
-msgid_plural "%s are required to play the file, but are not installed."
-msgstr[0] "%s е нужен, за да Ñе пуÑне файла, но не е инÑталиран."
-msgstr[1] "%s Ñа нужни, за да Ñе пуÑне файла, но не Ñа инÑталирани."
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
+msgid "Songs"
+msgstr "ПеÑни"
+
+#: data/ui/SelectionBarMenuButton.ui:7
+msgid "Select All"
+msgstr "Избор на вÑички"
+
+#: data/ui/SelectionBarMenuButton.ui:11
+msgid "Select None"
+msgstr "Избор на нÑкои"
+
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
+msgid "Click on items to select them"
+msgstr "Изберете елементи чрез натиÑкане"
+
+#: data/ui/SelectionToolbar.ui:8
+msgid "_Add to Playlist"
+msgstr "_ДобавÑне в ÑпиÑък"
+
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Изваждане от ÑпиÑък"
+
+#: gnomemusic/about.py:238
+msgid "The GNOME Project"
+msgstr "Проектът GNOME"
+
+#: gnomemusic/about.py:242
+msgid "translator-credits"
+msgstr ""
+"ÐлекÑандър Шопов &lt;<a href='mailto:ash@kambanaria.org'>ash@kambanaria.org</"
+"a>&gt;\n"
+"ХриÑто Кожухаров &lt;<a href='mailto:ickomcdevill@gmail."
+"com'>ickomcdevill@gmail.com</a>&gt;\n"
+"\n"
+"Проектът за превод на GNOME има нужда от подкрепа.\n"
+"Ðаучете повече за Ð½Ð°Ñ Ð½Ð° <a href='https://fsa-bg.org/project/gtp'>уеб Ñайта</"
+"a> ни.\n"
+"Докладвайте за грешки в превода в <a href='https://fsa-bg.org/project/gtp/"
+"newticket'>ÑÑŠÐ¾Ñ‚Ð²ÐµÑ‚Ð½Ð¸Ñ Ñ€Ð°Ð·Ð´ÐµÐ»</a>."
+
+#: gnomemusic/about.py:246
+msgid "Copyright The GNOME Music Developers"
+msgstr "ÐвторÑки права: Разработчиците на „Музика на GNOME“"
+
+#: gnomemusic/about.py:249
+msgid "Translated by"
+msgstr "Преведено от"
#. TRANSLATORS: this is a playlist name
-#: ../gnomemusic/playlists.py:52
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Ðай-Ñлушани"
#. TRANSLATORS: this is a playlist name
-#: ../gnomemusic/playlists.py:58
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Ðикога Ñлушани"
#. TRANSLATORS: this is a playlist name
-#: ../gnomemusic/playlists.py:64
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Скоро Ñлушани"
#. TRANSLATORS: this is a playlist name
-#: ../gnomemusic/playlists.py:70
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Скоро добавени"
#. TRANSLATORS: this is a playlist name
-#: ../gnomemusic/playlists.py:76
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Любими пеÑни"
-#. TRANSLATORS: _("the") should be a space-separated list of all-lowercase articles
-#. (such as 'the') that should be ignored when alphabetizing artists/albums. This
-#. list should include 'the' regardless of language. If some articles occur more
-#. frequently than others, most common should appear first, least common last.
-#: ../gnomemusic/query.py:76
-msgid "the a an"
-msgstr "the a an"
-
-#: ../gnomemusic/searchbar.py:62 ../gnomemusic/searchbar.py:109
-msgid "All"
-msgstr "Ð’Ñички"
-
-#: ../gnomemusic/searchbar.py:63
-msgid "Artist"
-msgstr "Ðвтор"
-
-#: ../gnomemusic/searchbar.py:64
-msgid "Album"
-msgstr "Ðлбум"
-
-#: ../gnomemusic/searchbar.py:65
-msgid "Track Title"
-msgstr "Име на пеÑента"
-
-#: ../gnomemusic/searchbar.py:110
-msgid "Local"
-msgstr "Локално"
-
-#: ../gnomemusic/searchbar.py:222
-msgid "Sources"
-msgstr "Източници"
-
-#: ../gnomemusic/searchbar.py:229
-msgid "Match"
-msgstr "Съвпадение"
-
-#: ../gnomemusic/view.py:189 ../gnomemusic/widgets.py:281
-#: ../gnomemusic/widgets.py:532 ../gnomemusic/window.py:304
-#, python-format
-msgid "Selected %d item"
-msgid_plural "Selected %d items"
-msgstr[0] "Избран е %d елемент"
-msgstr[1] "Избрани Ñа %d елемента"
-
-#: ../gnomemusic/view.py:191 ../gnomemusic/widgets.py:283
-#: ../gnomemusic/widgets.py:534 ../gnomemusic/window.py:308
-#: ../gnomemusic/window.py:320 ../data/headerbar.ui.h:3
-msgid "Click on items to select them"
-msgstr "Изберете елементи чрез натиÑкане"
+#: gnomemusic/gstplayer.py:408
+msgid "Unable to play the file"
+msgstr "Файлът не може да Ñе възпроизведе"
-#: ../gnomemusic/view.py:276
-msgid "Music folder"
-msgstr "Папка Ñ Ð¼ÑƒÐ·Ð¸ÐºÐ°"
+#: gnomemusic/gstplayer.py:414
+msgid "_Find in {}"
+msgstr "_ТърÑене в {}"
-#: ../gnomemusic/view.py:299
-msgid "Hey DJ"
-msgstr "Диджей"
+#. TRANSLATORS: separator for two codecs
+#: gnomemusic/gstplayer.py:424
+msgid " and "
+msgstr " и "
-#: ../gnomemusic/view.py:311 ../gnomemusic/view.py:1735
-msgid "Albums"
-msgstr "Ðлбуми"
+#. TRANSLATORS: separator for a list of codecs
+#: gnomemusic/gstplayer.py:427
+msgid ", "
+msgstr ", "
-#: ../gnomemusic/view.py:412 ../gnomemusic/view.py:1737
-msgid "Songs"
-msgstr "ПеÑни"
+#: gnomemusic/gstplayer.py:429
+msgid "{} is required to play the file, but is not installed."
+msgid_plural "{} are required to play the file, but are not installed."
+msgstr[0] "За да Ñе пуÑне файлът е нужен {}, който не е инÑталиран."
+msgstr[1] "За да Ñе пуÑне файлът Ñа нужни {}, които не Ñа инÑталирани."
-#: ../gnomemusic/view.py:613 ../gnomemusic/view.py:1736
-msgid "Artists"
-msgstr "Ðвтори"
+#: gnomemusic/inhibitsuspend.py:63
+msgid "Playing music"
+msgstr "Изпълнение на музика"
-#: ../gnomemusic/view.py:817 ../gnomemusic/view.py:1738
-msgid "Playlists"
-msgstr "СпиÑъци за изпълнение"
+#. Translators: "shuffle" causes tracks to play in random order.
+#: gnomemusic/player.py:44
+msgid "Shuffle"
+msgstr "Разбъркване"
-# im not sure what stays on the place of %d, so there might be a mistake
-#: ../gnomemusic/view.py:1175
-#, python-format
-msgid "%d Song"
-msgid_plural "%d Songs"
-msgstr[0] "%d пеÑен"
-msgstr[1] "%d пеÑни"
-
-#: ../gnomemusic/view.py:1317
-msgid "Try a different search"
-msgstr "ПотърÑете по друг начин"
-
-#: ../gnomemusic/widgets.py:322 ../gnomemusic/widgets.py:356
-#, python-format
-msgid "%d min"
-msgstr "%d мин."
-
-#: ../gnomemusic/widgets.py:544
-msgid "All Artists"
-msgstr "Ð’Ñички автори"
-
-#: ../gnomemusic/widgets.py:789
-msgid "New Playlist"
-msgstr "Ðов ÑпиÑък"
-
-#: ../gnomemusic/window.py:250
-msgid "Empty"
-msgstr "Празен"
-
-#: ../gnomemusic/window.py:337
-msgid "Loading"
-msgstr "Зареждане"
-
-#: ../gnomemusic/window.py:355
-msgid "_Undo"
-msgstr "_ОтмÑна"
-
-#: ../gnomemusic/window.py:356
-#, python-format
-msgid "Playlist %s removed"
-msgstr "СпиÑъкът „%s“ е премахнат"
-
-#: ../data/AboutDialog.ui.in.h:2
-msgid "Copyright © 2013 GNOME Music Developers"
-msgstr "ÐвторÑки права: © 2013 Разработчиците на GNOME Music"
-
-#: ../data/AboutDialog.ui.in.h:3
-msgid "A music player and management application for GNOME."
-msgstr "Изпълнение и организиране на пеÑни и музика за GNOME."
-
-#: ../data/AboutDialog.ui.in.h:4
-msgid "Visit GNOME Music website"
-msgstr "ПоÑетете Ñайта на GNOME Music"
-
-#: ../data/AboutDialog.ui.in.h:5
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version.\n"
-"\n"
-"\"Magic of the vinyl\" by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
-"https://www.flickr.com/photos/_spy_/12270839403\n"
-msgstr ""
-"Тази програма (GNOME Music) е Ñвободен Ñофтуер. Можете да Ñ Ñ€Ð°Ð·Ð¿Ñ€Ð¾ÑтранÑвате "
-"и/или променÑте под уÑловиÑта на ÐžÐ±Ñ‰Ð¸Ñ Ð¿ÑƒÐ±Ð»Ð¸Ñ‡ÐµÐ½ лиценз на GNU (GNU GPL), "
-"както е публикуван от ФондациÑта за Ñвободен Ñофтуер — верÑÐ¸Ñ 2 на лиценза "
-"или (по ваше решение) по-къÑна верÑиÑ.\n"
-"\n"
-"Тази програма Ñе разпроÑтранÑва Ñ Ð½Ð°Ð´ÐµÐ¶Ð´Ð°Ñ‚Ð°, че ще бъде полезна, но БЕЗ "
-"ÐИКÐКВИ ГÐРÐÐЦИИ, дори и коÑвените за ПРОДÐЖБРили СЪОТВЕТСТВИЕ С КÐКВÐТО И "
-"ДРЕ УПОТРЕБÐ. За подробноÑти погледнете ÐžÐ±Ñ‰Ð¸Ñ Ð¿ÑƒÐ±Ð»Ð¸Ñ‡ÐµÐ½ лиценз на GNU.\n"
-"\n"
-"ТрÑбва да Ñте получили копие от ÐžÐ±Ñ‰Ð¸Ñ Ð¿ÑƒÐ±Ð»Ð¸Ñ‡ÐµÐ½ лиценз на GNU (GNU GPL) "
-"заедно Ñ Ñ‚Ð°Ð·Ð¸ програма. Ðко не Ñте, пишете на Free Software Foundation, "
-"Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"Ðвторите на GNOME Music дават изрично разрешение за ÑъвмеÑтно използване и "
-"разпроÑтранение на GNOME Music Ñ Ð¿Ñ€Ð¸Ñтавките на GStreamer, които не Ñа "
-"ÑъвмеÑтими Ñ GNU GPL. Това право е над и извън правата предоÑтавени от GNU "
-"GPL — лицензът, по който GNOME Music Ñе разпроÑтранÑва. Ðко промените този "
-"код, може да разрешите това изключение за вашата верÑÐ¸Ñ Ð½Ð° кода, но това не "
-"е задължително. Ðко не желаете да позволите това изключение, изтрийте тази "
-"клауза от от вашата верÑиÑ.\n"
-"\n"
-"„МагиÑта на винила“ от Сами Пилампи, изображението е лицензирано по "
-"уÑловиÑта на CC-BY-SA 2.0 https://www.flickr.com/photos/_spy_/12270839403\n"
+#: gnomemusic/player.py:45
+msgid "Repeat Song"
+msgstr "ПовтарÑне на пеÑента"
-#: ../data/AlbumWidget.ui.h:1
-msgid "Released"
-msgstr "Издаден"
+#: gnomemusic/player.py:46
+msgid "Repeat All"
+msgstr "ПовтарÑне на вÑички"
-#: ../data/AlbumWidget.ui.h:2
-msgid "Running Length"
-msgstr "ПродължителноÑÑ‚"
+#: gnomemusic/player.py:47
+msgid "Shuffle/Repeat Off"
+msgstr "Разбъркване/повтарÑне изключено"
-#: ../data/app-menu.ui.h:1
-msgid "_Help"
-msgstr "Помо_щ"
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "СпиÑъкът „{}“ е премахнат"
-#: ../data/app-menu.ui.h:2
-msgid "_About"
-msgstr "_ОтноÑно"
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "ОтмÑна"
-#: ../data/app-menu.ui.h:3
-msgid "_Quit"
-msgstr "_Спиране на програмата"
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "„{}“ е извадена от „{}“"
-#: ../data/PlayerToolbar.ui.h:1
-msgid "Shuffle"
-msgstr "Разбъркване"
+#: gnomemusic/utils.py:92
+msgid "Unknown album"
+msgstr "ÐеизвеÑтен албум"
-#: ../data/PlayerToolbar.ui.h:2
-msgid "Repeat All"
-msgstr "ПовтарÑне на вÑички"
+#: gnomemusic/utils.py:113
+msgid "Unknown Artist"
+msgstr "ÐеизвеÑтен автор"
-#: ../data/PlayerToolbar.ui.h:3
-msgid "Repeat Song"
-msgstr "ПовтарÑне на пеÑента"
+#: gnomemusic/views/emptyview.py:65
+msgid "Your XDG Music directory is not set."
+msgstr "Папката ви Ñ Ð¼ÑƒÐ·Ð¸ÐºÐ° (по XDG) не е наÑтроена."
-#. Causes tracks to play in random order
-#: ../data/PlayerToolbar.ui.h:5
-msgid "Shuffle/Repeat Off"
-msgstr "Разбъркване/повтарÑне изключено"
+#: gnomemusic/views/emptyview.py:72
+msgid "Music Folder"
+msgstr "Папка Ñ Ð¼ÑƒÐ·Ð¸ÐºÐ°"
-#: ../data/NoMusic.ui.h:1
-msgid "No music found"
-msgstr "ÐÑма никаква музика"
+#. TRANSLATORS: This is a label to display a link to open user's music
+#. folder. {} will be replaced with the translated text 'Music folder'
+#: gnomemusic/views/emptyview.py:76
+msgid "The contents of your {} will appear here."
+msgstr "Съдържанието на „{}“ ще Ñе поÑви тук."
-#. Translators: %s will be replaced with a link with text
-#: ../data/NoMusic.ui.h:4
-#, no-c-format
-msgid "The contents of your %s will appear here."
-msgstr "Съдържанието на „%s“ ще Ñе поÑви тук."
+#: gnomemusic/views/emptyview.py:124
+msgid "No Music Found"
+msgstr "ÐÑма музика"
-#: ../data/headerbar.ui.h:1
-msgid "Select All"
-msgstr "Избор на вÑички"
+#: gnomemusic/views/emptyview.py:125
+msgid "Try a Different Search"
+msgstr "Друго Ñ‚ÑŠÑ€Ñене"
-#: ../data/headerbar.ui.h:2
-msgid "Select None"
-msgstr "Избор на нÑкои"
+#: gnomemusic/views/emptyview.py:129
+msgid "GNOME Music could not connect to Tracker."
+msgstr "Музиката на GNOME не може да уÑтанови връзка Ñ Tracker."
-#: ../data/headerbar.ui.h:4
-msgid "Search"
-msgstr "ТърÑене"
+#: gnomemusic/views/emptyview.py:131
+msgid "Your music files cannot be indexed without Tracker running."
+msgstr "Файловете Ñ Ð¼ÑƒÐ·Ð¸ÐºÐ° не може да Ñе индекÑират без Tracker."
-#: ../data/headerbar.ui.h:5 ../data/PlaylistDialog.ui.h:3
-msgid "Select"
-msgstr "Избор"
+#: gnomemusic/views/emptyview.py:137
+msgid "Your system Tracker version seems outdated."
+msgstr "ВерÑиÑта на Tracker в ÑиÑтемата ви е Ñтара."
-#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:2
-msgid "Cancel"
-msgstr "Отказ"
+#: gnomemusic/views/emptyview.py:139
+msgid "Music needs Tracker version 3.0.0 or higher."
+msgstr "Музиката на GNOME изиÑква верÑÐ¸Ñ Ð¿Ð¾Ð½Ðµ 3.0.0."
-#: ../data/headerbar.ui.h:7
-msgid "Back"
-msgstr "Ðазад"
+#: gnomemusic/views/playlistsview.py:45
+msgid "Playlists"
+msgstr "СпиÑъци за изпълнение"
-#: ../data/SelectionToolbar.ui.h:1
-msgid "Add to Playlist"
-msgstr "ДобавÑне в ÑпиÑък"
+#: gnomemusic/views/searchview.py:304
+msgid "Artists Results"
+msgstr "Резултати — изпълнителни"
-#: ../data/SelectionToolbar.ui.h:2
-msgid "Remove from Playlist"
-msgstr "Изваждане от ÑпиÑък"
+#: gnomemusic/views/searchview.py:318
+msgid "Albums Results"
+msgstr "Резултати — албуми"
-#: ../data/PlaylistControls.ui.h:1
-msgid "_Play"
-msgstr "_Изпълнение"
+#: gnomemusic/widgets/albumwidget.py:245
+msgid "{} minute"
+msgid_plural "{} minutes"
+msgstr[0] "{} минута"
+msgstr[1] "{} минути"
-#: ../data/PlaylistControls.ui.h:2
-msgid "_Delete"
-msgstr "_Изтриване"
+#: gnomemusic/widgets/discbox.py:75
+msgid "Disc {}"
+msgstr "ДиÑк {}"
-#: ../data/PlaylistControls.ui.h:3
-msgid "Playlist Name"
-msgstr "Име на ÑпиÑъка за изпълнение"
+#: gnomemusic/widgets/headerbar.py:66
+msgid "Selected {} song"
+msgid_plural "Selected {} songs"
+msgstr[0] "Избрана е {} пеÑен"
+msgstr[1] "Избрани Ñа {} пеÑни"
+
+#: gnomemusic/widgets/lastfmdialog.py:64
+msgid "Your music listening is reported to Last.fm."
+msgstr "ИнформациÑта за изпълнениÑта, които Ñлушате, Ñе публикува към Last.fm."
+
+#: gnomemusic/widgets/lastfmdialog.py:66
+msgid "Your music listening is not reported to Last.fm."
+msgstr ""
+"ИнформациÑта за изпълнениÑта, които Ñлушате, не Ñе публикува към Last.fm."
-#: ../data/PlaylistDialog.ui.h:1
-msgid "Select Playlist"
-msgstr "Избор на ÑпиÑък за изпълнение"
+#. TRANSLATORS: displays the username of the Last.fm account
+#: gnomemusic/widgets/lastfmdialog.py:70
+msgid "Logged in as {}"
+msgstr "ВпиÑани Ñте като „{}“"
+
+#: gnomemusic/widgets/lastfmdialog.py:71
+msgid "Configure"
+msgstr "ÐаÑтройки"
+
+#: gnomemusic/widgets/playertoolbar.py:167
+msgid "Pause"
+msgstr "Пауза"
+
+# im not sure what stays on the place of %d, so there might be a mistake
+#: gnomemusic/widgets/playlistcontrols.py:130
+msgid "{} Song"
+msgid_plural "{} Songs"
+msgstr[0] "{} пеÑен"
+msgstr[1] "{} пеÑни"
diff --git a/po/ca.po b/po/ca.po
index 7d850f4c..c9df3f8a 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -2,7 +2,7 @@
# Copyright (C) 2012 gnome-music's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-calendar package.
#
-# Jordi Mas i Hernandez <jmas@softcatala.org>, 2013, 2015, 2016
+# Jordi Mas i Hernandez <jmas@softcatala.org>, 2013, 2015, 2016, 2022
# Pau Iranzo <paugnu@gmail.com>, 2013.
# Gil Forcada <gilforcada@guifi.net>, 2014, 2018.
# Jordi Serratosa <jordis@softcatala.cat>, 2017.
@@ -11,9 +11,9 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2020-02-19 06:43+0100\n"
-"Last-Translator: Adolfo Jayme Barrientos <fitojb@ubuntu.com>\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2022-09-11 06:43+0100\n"
+"Last-Translator: Jordi Mas i Hernandez <jmas@softcatala.org>\n"
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
@@ -23,13 +23,15 @@ msgstr ""
"X-Generator: Poedit 2.2.4\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "Música del GNOME"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Música"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
msgid "Play and organize your music collection"
-msgstr "Reproduïu i organitzeu la col·lecció de música"
+msgstr "Reproduïu i organitzeu la vostra col·lecció de música"
#: data/org.gnome.Music.appdata.xml.in.in:9
msgid "An easy and pleasant way to play your music."
@@ -40,23 +42,19 @@ msgid ""
"Find tracks in your local collection, use automatically generated playlists "
"or curate a fresh one."
msgstr ""
-"Trobeu pistes a la vostra col·lecció local, utilitzeu llistes de reproducció "
-"generades automàticament o creeu-ne de noves."
+"Trobeu cançons a la vostra col·lecció local, utilitzeu llistes de "
+"reproducció generades automàticament o creeu-ne de noves."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "L'equip de desenvolupament del Música del GNOME"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Música"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Reproductor de música"
-#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
+#. Translators: Search terms to find this application. Do NOT translate or
+#. localize the semicolons! The list MUST also end with a semicolon!
#: data/org.gnome.Music.desktop.in.in:13
msgid "Music;Player;"
msgstr "Música;Reproductor;"
@@ -70,32 +68,25 @@ msgid "Window size (width and height)."
msgstr "Mida de la finestra (amplada i alçada)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Posició de la finestra"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Posició de la finestra (x i y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Finestra maximitzada"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Estat de la finestra maximitzada."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Mode de repetició de la reproducció"
-#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#. Translators: Don't translate allowed values, just the description in the
+#. brackets
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
-"collection. Allowed values are: “none†(repeat and shuffle are off), "
-"“song†(repeat current song), “all†(repeat playlist, no shuffle), "
-"“shuffle†(shuffle playlist, presumes repeat all)."
+"collection. Allowed values are: “none†(repeat and shuffle are off), “song†"
+"(repeat current song), “all†(repeat playlist, no shuffle), “shuffle†"
+"(shuffle playlist, presumes repeat all)."
msgstr ""
"El valor estableix si es reprodueix la col·lecció en mode de repetició o "
"aleatori. Els valors que s'accepten són: «none» (cap, ni es repeteix ni es "
@@ -104,29 +95,29 @@ msgstr ""
"aleatòriament) i «shuffle» (reprodueix aleatòriament la llista, se suposa "
"que es repeteixen totes)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Habilita ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Habilita o inhabilita ReplayGain pels àlbums"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Inhibeix la suspensió del sistema"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Habilita o inhabilita la suspensió del sistema durant la reproducció de "
"música"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Informa de l'històric de reproduccions a Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -134,79 +125,21 @@ msgstr ""
"Activa o desactiva l'enviament de «scrobbles» i la informació de la "
"«reproducció actual» a Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 l'equip de desenvolupament del Música del GNOME"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Una aplicació de reproducció i gestió de música pel GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Visiteu el lloc web del Música del GNOME"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"El Música del GNOME és programari lliure; podeu redistribuir-lo i/o "
-"modificar-lo segons els termes de la llicència pública general GNU publicada "
-"per la Free Software Foundation; sigui la versió 2 de la llicència o (segons "
-"la vostra opció) qualsevol versió posterior.\n"
-"\n"
-"El Música del GNOME es distribueix amb l'esperança que sigui útil, però "
-"SENSE CAP GARANTIA; ni tan sols amb la garantia implícita de "
-"COMERCIALITZACIÓ o IDONEÃTAT PER A UN PROPÃ’SIT PARTICULAR. Vegeu la "
-"Llicència Pública General GNU per més detalls.\n"
-"\n"
-"Heu de rebre una còpia de la Llicència Pública General GNU amb el Música del "
-"GNOME; si no és el cas, escriviu a la Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"Els autors del Música del GNOME permeten l'ús i distribució conjunta del "
-"Música del GNOME amb connectors GStreamer no compatibles amb la GPL. Aquest "
-"permís està per sobre dels permisos garantits per la llicència GPL sota la "
-"qual es troba el Música del GNOME. Si modifiqueu aquest codi, podeu estendre "
-"aquesta excepció a la vostra versió del codi, però no esteu obligat a fer-"
-"ho. Si no voleu fer-ho, elimineu aquesta declaració d'excepció de la vostra "
-"versió."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Reprodueix"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Reprodueix"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "_Cançons preferides"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_Afegeix a la llista de reproducció…"
@@ -214,133 +147,133 @@ msgstr "_Afegeix a la llista de reproducció…"
msgid "Last.fm Account"
msgstr "Compte Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Informa de la música que escolteu"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Dreceres de teclat"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Ajuda"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_Quant al Música"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Us donem la benvinguda al Música"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Menú"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Selecciona"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Cancel·la"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Cerca"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Enrere"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "General"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Tanca la finestra"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Cerca"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Ajuda"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Dreceres"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Reprodueix"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Reprodueix/Fes una pausa"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Cançó següent"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Cançó anterior"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Commuta la repetició"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Commuta la mescla"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navegació"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Ves als àlbums"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Ves als artistes"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Ves a les cançons"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Ves a les llistes de reproducció"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Torna enrere"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -348,89 +281,81 @@ msgstr ""
"Last.fm és un servei de descobriment de música que us dona recomanacions "
"personalitzades basades en la música que escolteu."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
-msgstr "La informe de la música no configurat"
+msgstr "L'informe de la música no està configurat"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"Inicieu la sessió amb el compte de Last.fm per a informar de la música que "
"escolteu."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Inicia la sessió"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "S'està carregant"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Anterior"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Següent"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Suprimeix"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Canvia el nom…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Nom de la llista de reproducció"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Fet"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Introduïu un nom per a la vostra primera llista de reproducció"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "_Crea"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Llista de reproducció nova…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Afegeix"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Afegeix a la llista de reproducció"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Afegeix"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Desfés"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Artistes"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Mostra-ho tot"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Àlbums"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Cançons"
@@ -442,44 +367,56 @@ msgstr "Selecciona-ho tot"
msgid "Select None"
msgstr "No en seleccionis cap"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Feu clic als elements per a seleccionar-los"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Afegeix a la llista de reproducció"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Afegeix a la llista de reproducció…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Suprimeix de la llista de reproducció"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "El projecte GNOME"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr "Jordi Mas i Hernandez <jmas@softcatala.org>"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Suprimeix de la llista de reproducció"
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Copyright de l'equip de desenvolupament del Música del GNOME"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Traduït per"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Més reproduïdes"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Mai s'han reproduït"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Reproduccions recents"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Afegits recentment"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Cançons preferides"
@@ -512,27 +449,39 @@ msgid "Playing music"
msgstr "Reproducció de música"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Mescla"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Aleatori/Repetició desactivada"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Repeteix la cançó"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Repeteix-ho tot"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Aleatori/Repetició desactivada"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Mescla"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "S'ha suprimit la llista de reproducció {}"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Desfés"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} suprimit de {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Àlbum desconegut"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Artista desconegut"
@@ -579,62 +528,57 @@ msgstr "El Música necessita Tracker versió 3.0.0 o superior."
msgid "Playlists"
msgstr "Llistes de reproducció"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Resultats d'artistes"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Resultats d'àlbums"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minut"
msgstr[1] "{} minuts"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Disc {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "{} cançó seleccionada"
msgstr[1] "{} cançons seleccionades"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "S'informa de la música que escoleu a Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "No s'informa de la música que escoleu a Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Sessió iniciada com a {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Configura"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "S'ha suprimit la llista de reproducció {}"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} suprimit de {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Fes una pausa"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} cançó"
msgstr[1] "{} cançons"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Cerca cançons, artistes, àlbums i llistes de reproducció"
diff --git a/po/cs.po b/po/cs.po
index 7a6fb05b..f2ba81d1 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -4,26 +4,28 @@
#
# Adam Matoušek <adamatousek@gmail.com>, 2013.
# Vojtěch Cajtler <vcajtler@seznam.cz>, 2015
-# Marek Černocký <marek@manet.cz>, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021.
+# Marek Černocký <marek@manet.cz>, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-08-28 09:28+0200\n"
-"Last-Translator: Marek Černocký <marek@manet.cz>\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-08-31 15:24+0200\n"
+"Last-Translator: Daniel Rusek <mail@asciiwolf.com>\n"
"Language-Team: ÄeÅ¡tina <gnome-cs-list@gnome.org>\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-"X-Generator: Poedit 2.2.3\n"
+"X-Generator: Poedit 3.3.2\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "Hudba GNOME"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Hudba"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -42,15 +44,10 @@ msgstr ""
"Vyhledávejte skladby ve své místní sbírce, používejte automaticky "
"vygenerované seznamy skladeb nebo si vytvořte své vlastní."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "Vývojáři Hudby GNOME"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Hudba"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Hudební pÅ™ehrávaÄ"
@@ -69,27 +66,19 @@ msgid "Window size (width and height)."
msgstr "Velikost okna (šířka a výška)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Poloha okna"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Poloha okna (x a y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Maximalizované okno"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Stav maximalizace okna."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Režim opakovaného přehrávání"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -102,28 +91,28 @@ msgstr ""
"přehrání, ne náhodně), „shuffle“ (náhodně přehrávat ze seznamu k přehrání, "
"předpokládá se opakování všeho)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Povolit ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Povolí nebo zakáže vyrovnání hlasitosti u alb pomocí ReplayGain"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Bránit uspání systému"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Zapne nebo vypne blokování uspávání systému ve chvíli, kdy se přehrává hudba."
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Sdělovat Last.fm hudební historii"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -131,79 +120,21 @@ msgstr ""
"Povolí nebo zakáže zasílání informací o dříve a právě přehrávaných skladbách "
"do služby Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 Vývojáři Hudby GNOME"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Aplikace pro prostředí GNOME sloužící k přehrávání a správě hudby."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Navštívit webové stránky Hudby GNOME"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"Hudba GNOME (v originálním znění GNOME Music) je svobodný software: Můžete "
-"jej dále šířit a/nebo upravovat za podmínek licence GNU General Public "
-"License v podobÄ›, v jaké ji vydala Free Software Foundation, a to buÄ ve "
-"verzi 2 této licence nebo (dle vaší volby) v libovolné novější verzi.\n"
-"\n"
-"Aplikace Hudba GNOME je šířena ve víře, že bude užiteÄná, ale BEZ "
-"JAKÃCHKOLIV ZÃRUK, a to i bez pÅ™edpokládané záruky na PRODEJNOST nebo "
-"VHODNOST PRO KONKRÉTNà ÚČEL. Více podrobností najdete přímo v licenci GNU "
-"General Public License.\n"
-"\n"
-"Spolu s aplikací Hudba byste měli obdržet kopii GNU General Public License. "
-"Pokud se tak nestalo, napište na Free Software Foundation, Inc., 51 Franklin "
-"Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
-"\n"
-"Autoři Hudby GNOME tímto udělují svolení, aby zásuvné moduly GStreamer, "
-"které nejsou kompatibilní s GPL, byly používány a šířeny spolu s programy "
-"GStreamer a Hudba GNOME. Toto oprávnění je nad rámec oprávnění poskytovaných "
-"licencí GPL, která pokrývá Hudbu GNOME. Pokud provedete změny v jejím "
-"zdrojovém kódu, můžete tuto výjimku vztáhnout i na svoji verzi kódu, ale "
-"nejste povinni tak uÄinit. Pokud si tak uÄinit nepÅ™ejete, odstraňte tento "
-"odstavec s výjimkou ze svojí verze."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Přehrát"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Přehrát"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Přidat do o_blíbených skladeb"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "Přid_at do seznamu k přehrání…"
@@ -211,133 +142,133 @@ msgstr "Přid_at do seznamu k přehrání…"
msgid "Last.fm Account"
msgstr "ÚÄet Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Sdělovat poslouchané skladby"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Klávesové zkratky"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Nápověda"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "O _aplikaci Hudba"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Vítejte v Hudbě"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Nabídka"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Vybrat"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Zrušit"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Hledat"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Zpět"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Obecné"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Zavřít okno"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Hledat"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Nápověda"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Klávesové zkratky"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Přehrát"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Přehrát/pozastavit"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Následující skladba"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Předchozí skladba"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Přepnout opakování"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Přepnout náhodný výběr"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navigace"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Přejít na alba"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Přejít na umělce"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Přejít na skladby"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Přejít na seznamy k přehrání"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Přejít zpět"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -345,89 +276,81 @@ msgstr ""
"Last.fm je vyhledávací služba, která Vám doporuÄí skladby podle toho, co "
"posloucháte."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Sdělování informací není nastavené"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"Aby se mohly sdělovat informace, co posloucháte, musíte s k Last.fm "
"přihlásit."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Přihlásit"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "NaÄítá se"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Předchozí"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Následující"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Smazat"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Přejmenovat…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Název seznamu k přehrání"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Hotovo"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Zadejte název pro svůj první seznam k přehrání"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "_Vytvořit"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Nový seznam k přehrání…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Přidat"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Přidání do seznamu k přehrání"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "Přid_at"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Zpět"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Umělci"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Zobrazit vše"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Alba"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Skladby"
@@ -439,44 +362,56 @@ msgstr "Vybrat vše"
msgid "Select None"
msgstr "Zrušit výběr"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Klikáním vyberte položky"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "Přid_at do seznamu k přehrání"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Přidat do seznamu k přehrání…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "Odeb_rat ze seznamu k přehrání"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "Projekt GNOME"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr "Marek Černocký <marek@manet.cz>"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Copyright vývojáři Hudby GNOME"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Odebrat ze seznamu k přehrání"
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Přeložili"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "NejÄastÄ›ji pÅ™ehráváno"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Nikdy nepřehráno"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Nedávno přehráno"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Nedávno přidáno"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Oblíbené skladby"
@@ -512,27 +447,39 @@ msgid "Playing music"
msgstr "Přehrává se hudba"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Náhodně zamíchat"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Náhodně/opakování vypnuto"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Opakovat skladbu"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Opakovat vše"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Náhodně/opakování vypnuto"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Náhodně zamíchat"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Seznam k přehrání {} byl odstraněn"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Zpět"
-#: gnomemusic/utils.py:80
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "Skladba {} byla odebrána ze seznamu {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Neznámé album"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Neznámý umělec"
@@ -578,65 +525,60 @@ msgstr "Hudba potřebuje program Tracker ve verzi 3.0.0 nebo vyšší."
msgid "Playlists"
msgstr "Seznamy k přehrání"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Nalezení umělci"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Nalezená alba"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minuta"
msgstr[1] "{} minuty"
msgstr[2] "{} minut"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Disk {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "Vybrána {} skladba"
msgstr[1] "Vybrány {} skladby"
msgstr[2] "Vybráno {} skladeb"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Údaje o vášem poslechu hudby jsou sdělovány na Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Údaje o vášem poslechu hudby nejsou sdělovány na Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Přihlášeno pod jménem {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Nastavit"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Seznam k přehrání {} byl odstraněn"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "Skladba {} byla odebrána ze seznamu {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Pozastavit"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} skladba"
msgstr[1] "{} skladby"
msgstr[2] "{} skladeb"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Vyhledávejte skladby, umělce, alba a seznamy skladeb"
diff --git a/po/da.po b/po/da.po
index 33404671..e12086e1 100644
--- a/po/da.po
+++ b/po/da.po
@@ -5,14 +5,14 @@
# Ask Hjorth Larsen <asklarsen@gmail.com>, 2015, 2016, 2017, 2018.
# scootergrisen, 2015, 2020.
# Joe Hansen <joedalton2@yahoo.dk>, 2017.
-# Alan Mortensen <alanmortensen.am@gmail.com>, 2019-21.
+# Alan Mortensen <alanmortensen.am@gmail.com>, 2019-23.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-08-30 20:36+0200\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-09-02 11:13+0200\n"
"Last-Translator: Alan Mortensen <alanmortensen.am@gmail.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
"Language: da\n"
@@ -20,11 +20,13 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.3\n"
+"X-Generator: Poedit 3.0.1\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME Musik"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Musik"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -43,15 +45,10 @@ msgstr ""
"Find musiknumre i din lokale samling, brug automatisk genereret "
"afspilningslister eller kuratér en ny."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "GNOME Musik-udviklerne"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Musik"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Musikafspiller"
@@ -70,27 +67,19 @@ msgid "Window size (width and height)."
msgstr "Vinduesstørrelse (bredde og højde)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Vinduesplacering"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Vinduesplacering (x og y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Vindue maksimeret"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Vindue i maksimeret tilstand."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Afspil i gentagelsestilstand"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -102,30 +91,30 @@ msgstr ""
"“song†(nuværende sang gentages), “all†(gentag afspilningslisten, bland "
"ikke), “shuffle†(bland afspilningslisten, og alle gentages)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Aktivér ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Aktiverer eller deaktiverer ReplayGain for album"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Hindr systemhviletilstand"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Aktiverer eller deaktiverer forhindring af systemhviletilstand ved "
"afspilning af musik"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Rapportér musikhistorik til Last.fm"
# https://en.wikipedia.org/wiki/Last.fm
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -133,79 +122,21 @@ msgstr ""
"Aktiverer eller deaktiverer, at der sendes “scrobbler†og “afspilles nuâ€-"
"information til Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Ophavsret © 2018 GNOME Musik-udviklerne"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "En musikafspiller og håndteringsprogram til GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Besøg GNOME Musiks websted"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"GNOME Musik er fri software. Du kan redistribuere og/eller modificere det "
-"under de betingelser, som er angivet i GNU General Public License, som er "
-"udgivet af Free Software Foundation. Enten version 2 af licensen eller "
-"(efter eget valg) enhver senere version.\n"
-"\n"
-"GNOME Musik distribueres i håb om, at det vil vise sig nyttigt, men UDEN "
-"NOGEN FORM FOR GARANTI, uden selv de underforståede garantier omkring "
-"SALGBARHED eller EGNETHED TIL ET BESTEMT FORMÃ…L. Yderligere detaljer kan "
-"læses i GNU General Public License.\n"
-"\n"
-"Du bør have modtaget en kopi af GNU General Public License sammen med GNOME "
-"Musik. Hvis ikke, så skriv til Free software Foundation, Inc., 51 Franklin "
-"Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
-"\n"
-"Forfatterne af GNOME Musik giver hermed tilladelse til, at ikke-GPL-"
-"kompatible GStreamer-udvidelsesmoduler kan bruges og distribueres sammen med "
-"GStreamer og GNOME Musik. Denne tilladelse tilsidesætter tilladelserne givet "
-"af GPL-licensen, som GNOME Musik er dækket af. Hvis du ændrer denne kode, "
-"kan du udvide denne undtagelse til din version af koden, men du er ikke "
-"forpligtet til at gøre det. Hvis du ikke ønsker at gøre dette, sletter du "
-"blot denne erklæring om undtagelse fra din version."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Afspil"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Afspil"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Tilføj til _yndlingssange"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_Tilføj til afspilningsliste …"
@@ -213,133 +144,133 @@ msgstr "_Tilføj til afspilningsliste …"
msgid "Last.fm Account"
msgstr "Konto til Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Rapportér musikken, du lytter til"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Tastaturgenveje"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Hjælp"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_Om Musik"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Velkommen til Musik"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Menu"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Vælg"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Annullér"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Søg"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Tilbage"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Generelt"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Luk vindue"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Søg"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Hjælp"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Genveje"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Afspil"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Afspil/pause"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Næste sang"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Forrige sang"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Slå gentag til/fra"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Slå tilfældig rækkefølge til/fra"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navigation"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "GÃ¥ til album"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "GÃ¥ til kunstnere"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "GÃ¥ til sange"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "GÃ¥ til afspilningslister"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "GÃ¥ tilbage"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -347,88 +278,80 @@ msgstr ""
"Last.fm er en musikopdagelsestjeneste, som giver dig personliggjorte "
"anbefalinger baseret på den musik, du lytter til."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Musikrapportering ikke sat op"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"Log ind på din konto til Last.fm for at rapportere den musik, du lytter til."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Log ind"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Indlæser"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Forrige"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Næste"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Slet"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Omdøb …"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Navn på afspilningsliste"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Færdig"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Indtast et navn for din første afspilningsliste"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "_Opret"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Ny afspilningsliste …"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Tilføj"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Tilføj til afspilningsliste"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Tilføj"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Fortryd"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Kunstnere"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Vis alle"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Album"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Sange"
@@ -440,44 +363,65 @@ msgstr "Vælg alle"
msgid "Select None"
msgstr "Vælg ingen"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Klik på elementerne for at vælge dem"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Tilføj til afspilningsliste"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Tilføj til afspilningsliste …"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Fjern fra afspilningsliste"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "GNOME-projektet"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr ""
+"Ask Hjorth Larsen\n"
+"Kris Thomsen\n"
+"scootergrisen\n"
+"Joe Hansen\n"
+"Alan Mortensen\n"
+"\n"
+"Dansk-gruppen\n"
+"Websted http://dansk-gruppen.dk\n"
+"E-mail <dansk@dansk-gruppen.dk>"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Ophavsret GNOME Musik-udviklerne"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Fjern fra afspilningsliste"
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Oversat af"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Mest afspillet"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Aldrig afspillet"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Afspillet for nylig"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Tilføjet for nylig"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Yndlingssange"
@@ -510,27 +454,39 @@ msgid "Playing music"
msgstr "Afspiller musik"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Bland"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Bland/gentag fra"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Gentag sang"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Gentag alle"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Bland/gentag fra"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Bland"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Afspilningslisten {} fjernet"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Fortryd"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} fjernet fra {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Ukendt album"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Ukendt kunstner"
@@ -576,65 +532,130 @@ msgstr "Musik kræver Tracker version 3.0.0 eller nyere."
msgid "Playlists"
msgstr "Afspilningslister"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Resultater — kunstnere"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Resultater — albummer"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minut"
msgstr[1] "{} minutter"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Disk {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "{} sang valgt"
msgstr[1] "{} sange valgt"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Musikken, du lytter til, rapporteres til Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Musikken, du lytter til, rapporteres ikke til Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Logget ind som {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Konfigurér"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Afspilningslisten {} fjernet"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} fjernet fra {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Pause"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} sang"
msgstr[1] "{} sange"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Søg efter sange, kunstnere, albummer og afspilningslister"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "En musikafspiller og håndteringsprogram til GNOME."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Besøg GNOME Musiks websted"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "GNOME Musik er fri software. Du kan redistribuere og/eller modificere det "
+#~ "under de betingelser, som er angivet i GNU General Public License, som er "
+#~ "udgivet af Free Software Foundation. Enten version 2 af licensen eller "
+#~ "(efter eget valg) enhver senere version.\n"
+#~ "\n"
+#~ "GNOME Musik distribueres i håb om, at det vil vise sig nyttigt, men UDEN "
+#~ "NOGEN FORM FOR GARANTI, uden selv de underforståede garantier omkring "
+#~ "SALGBARHED eller EGNETHED TIL ET BESTEMT FORMÃ…L. Yderligere detaljer kan "
+#~ "læses i GNU General Public License.\n"
+#~ "\n"
+#~ "Du bør have modtaget en kopi af GNU General Public License sammen med "
+#~ "GNOME Musik. Hvis ikke, så skriv til Free software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
+#~ "\n"
+#~ "Forfatterne af GNOME Musik giver hermed tilladelse til, at ikke-GPL-"
+#~ "kompatible GStreamer-udvidelsesmoduler kan bruges og distribueres sammen "
+#~ "med GStreamer og GNOME Musik. Denne tilladelse tilsidesætter "
+#~ "tilladelserne givet af GPL-licensen, som GNOME Musik er dækket af. Hvis "
+#~ "du ændrer denne kode, kan du udvide denne undtagelse til din version af "
+#~ "koden, men du er ikke forpligtet til at gøre det. Hvis du ikke ønsker at "
+#~ "gøre dette, sletter du blot denne erklæring om undtagelse fra din version."
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "Indholdet af din musikmappe vil blive vist her."
+
+#~ msgid "GNOME Music"
+#~ msgstr "GNOME Musik"
+
+#~ msgid "Window position"
+#~ msgstr "Vinduesplacering"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Vinduesplacering (x og y)."
+
+#~ msgid "Loading"
+#~ msgstr "Indlæser"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Tilføj til afspilningsliste …"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
diff --git a/po/de.po b/po/de.po
index cc681caa..945f4762 100644
--- a/po/de.po
+++ b/po/de.po
@@ -12,28 +12,31 @@
# Vinzenz Vietzke <vinz@vinzv.de>, 2018.
# Mario Blättermann <mario.blaettermann@gmail.com>, 2013, 2016-2018, 2020.
# Wolfgang Stöggl <c72578@yahoo.de>, 2014-2015, 2020.
-# Tim Sabsch <tim@sabsch.com>, 2019-2020.
-# Philipp Kiemle <philipp.kiemle@gmail.com>, 2021.
+# Tim Sabsch <tim@sabsch.com>, 2019-2020, 2022.
+# Philipp Kiemle <philipp.kiemle@gmail.com>, 2021-2022.
+# Jürgen Benvenuti <gastornis@posteo.org>, 2023.
#
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-08-29 16:18+0200\n"
-"Last-Translator: Philipp Kiemle <philipp.kiemle@gmail.com>\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-07-27 18:48+0200\n"
+"Last-Translator: Jürgen Benvenuti <gastornis@posteo.org>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 3.0\n"
+"X-Generator: Poedit 3.3.1\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME Musik"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Musik"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -54,15 +57,10 @@ msgstr ""
"generierte Wiedergabelisten oder stellen Sie eine neue Wiedergabeliste "
"zusammen."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "Die GNOME-Musik-Entwickler"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Musik"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Musikwiedergabe"
@@ -81,27 +79,19 @@ msgid "Window size (width and height)."
msgstr "Fenstergröße (Breite und Höhe)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Fensterposition"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Fensterposition (x und y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Fenster maximiert"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Fenstermaximierungsstatus."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Wiederholungsmodus"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -114,30 +104,32 @@ msgstr ""
"wiederholen), »all« (alle - die gesamte Wiedergabeliste wiederholen, keine "
"Zufallswiedergabe) und »shuffle« (zufällige Wiedergabe aller Titel)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
-msgstr "ReplayGain aktivieren"
+msgstr "Lautstärken anpassen"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
-msgstr "Legt fest, ob ReplayGain für Alben aktiviert werden soll"
+msgstr ""
+"Legt fest, ob Lautstärken zwischen Titeln in Alben angepasst werden sollen "
+"(»ReplayGain«)"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Ruhezustand des Systems verhindern"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Erlaubt oder verhindert den Ruhezustand des Systems, während Musik gespielt "
"wird"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Musikverlauf an Last.fm senden"
# Scrobbeln ist ein Eigenbegriff von Last.fm
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -145,82 +137,21 @@ msgstr ""
"Aktiviert/Deaktiviert das Senden von Informationen zu Scrobbeln und »Wird "
"derzeit abgespielt« an Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 GNOME-Musik-Entwickler"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Eine Anwendung für Musikwiedergabe und -verwaltung für GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Besuchen Sie die GNOME-Musik-Webseite"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"GNOME Musik ist freie Software. Sie können es weitergeben und/oder "
-"verändern, solange Sie sich an die Regeln der »GNU General Public License« "
-"halten, so wie sie von der Free Software Foundation festgelegt wurden; "
-"entweder in Version 2 der Lizenz oder (nach Ihrem Ermessen) in jeder neueren "
-"Version.\n"
-"\n"
-"GNOME Musik wurde mit dem Ziel veröffentlicht, dass Sie es nützlich finden, "
-"jedoch OHNE JEGLICHE GARANTIE, sogar ohne eine implizite Garantie der "
-"VERKAUFBARKEIT oder der VERWENDBARKEIT FÃœR EINEN SPEZIELLEN ZWECK. Schauen "
-"Sie für weitere Informationen bitte in der »GNU General Public License« (GNU "
-"GPL) nach.\n"
-"\n"
-"Zusammen mit GNOME Musik sollten Sie außerdem eine Kopie der »GNU General "
-"Public License« erhalten haben. Wenn dem nicht so ist, so schreiben Sie "
-"bitte an die Free Software Foundation, Inc., 51 Franklin Street, Fifth "
-"Floor, Boston, MA 02110-1301, USA.\n"
-"\n"
-"Die Autoren von GNOME Musik gewähren hiermit das Recht für die Nutzung von "
-"nicht-GPL-kompatiblen GStreamer-Erweiterungen und den Vertrieb zusammen mit "
-"GStreamer und GNOME Musik. Dies geht über die Berechtigungen hinaus, die "
-"von der GPL-Lizenz gewährt werden, der GNOME Musik unterliegt. Wenn Sie "
-"diesen Code verändern, dürfen Sie diese Ausnahme auf Ihren Code erweitern, "
-"jedoch sind Sie nicht dazu verpflichtet. Wenn Sie dies nicht wünschen, "
-"entfernen Sie diese Ausnahmeerklärung aus Ihrer Version."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Wiedergeben"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Wiedergabe"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Zu _Lieblingstiteln hinzufügen"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "Zu _Wiedergabeliste hinzufügen …"
@@ -228,133 +159,133 @@ msgstr "Zu _Wiedergabeliste hinzufügen …"
msgid "Last.fm Account"
msgstr "Last.fm-Konto"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Musikverlauf senden"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "Tasten_kombinationen"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Hilfe"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_Info zu Musik"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Willkommen bei Musik"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Menü"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Auswählen"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "A_bbrechen"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Suchen"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Zurück"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Allgemein"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Fenster schließen"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Suchen"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Hilfe"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Tastenkürzel"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Abspielen"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Wiedergabe/Pause"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Nächster Titel"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Vorheriger Titel"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Wiederholung ein-/ausschalten"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Mischen ein-/ausschalten"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navigation"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Zu Alben gehen"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Zu Künstlern gehen"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Zu Titeln gehen"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Zu Wiedergabelisten gehen"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Zurück gehen"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -362,88 +293,80 @@ msgstr ""
"Last.fm ist ein Dienst zur Entdeckung neuer Musik, der Ihnen personalisierte "
"Empfehlungen anhand Ihres Musikverlaufs gibt."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Senden des Musikverlaufs ist nicht eingerichtet"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"Melden Sie sich mit Ihrem Last.fm-Konto an, um Ihren Musikverlauf zu senden."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Anmelden"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Laden"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Vorheriges"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Nächstes"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Entfernen"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Umbenennen …"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Name der Wiedergabeliste"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Fertig"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Geben Sie einen Namen für Ihre erste Wiedergabeliste ein"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "An_legen"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Neue Wiedergabeliste …"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Hinzufügen"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Zur Wiedergabeliste hinzufügen"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Hinzufügen"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Rückgängig"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Künstler"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Alle ansehen"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Alben"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Titel"
@@ -455,44 +378,66 @@ msgstr "Alle auswählen"
msgid "Select None"
msgstr "Keinen auswählen"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Klicken Sie auf ein Objekt, um es auszuwählen"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "Zur Wiedergabeliste _hinzufügen"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Zur Wiedergabeliste hinzufügen …"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "Aus der Wiedergabeliste _entfernen"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Aus der Wiedergabeliste entfernen"
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "Das GNOME-Projekt"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr ""
+"Tobias Endrigkeit <tobiasendrigkeit@outlook.com>\n"
+"Christian Kirbach <christian.kirbach@gmail.com>\n"
+"Benjamin Steinwender <b@stbe.at>\n"
+"Bernd Homuth <dev@hmt.im>\n"
+"Vinzenz Vietzke <vinz@vinzv.de>\n"
+"Mario Blättermann <mario.blaettermann@gmail.com>\n"
+"Wolfgang Stöggl <c72578@yahoo.de>\n"
+"Tim Sabsch <tim@sabsch.com>\n"
+"Philipp Kiemle <philipp.kiemle@gmail.com>\n"
+"Jürgen Benvenuti <gastornis@posteo.org>"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Copyright Die GNOME-Musik-Entwickler"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Ãœbersetzung von"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Am häufigsten wiedergegeben"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Noch nie wiedergegeben"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Zuletzt wiedergegeben"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Zuletzt hinzugefügt"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Lieblingstitel"
@@ -527,27 +472,39 @@ msgid "Playing music"
msgstr "Musik wird wiedergegeben"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Zufällig"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Zufall/Wiederholung aus"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Titel wiederholen"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Alle wiederholen"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Zufall/Wiederholung aus"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Zufällig"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Wiedergabeliste {} entfernt"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Rückgängig"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} von {} entfernt"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Unbekanntes Album"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Unbekannter Künstler"
@@ -559,7 +516,7 @@ msgstr "Ihr XDG-Musikorder wurde nicht festgelegt."
msgid "Music Folder"
msgstr "Musikordner"
-# Der Inhalt von Ihrem »Musikordner« …
+# Auch wenn hier der Genitiv ("Ihres Ordners") verwendet werden sollte, muss, aufgrund der variablen Zeichenkette, der Dativ verwendet werden - pk
#. TRANSLATORS: This is a label to display a link to open user's music
#. folder. {} will be replaced with the translated text 'Music folder'
#: gnomemusic/views/emptyview.py:76
@@ -594,65 +551,134 @@ msgstr "Musik benötigt Tracker in der Version 3.0.0 oder neuer."
msgid "Playlists"
msgstr "Wiedergabelisten"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Künstler-Ergebnisse"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Alben-Ergebnisse"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} Minute"
msgstr[1] "{} Minuten"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Disc {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "{} Titel gewählt"
msgstr[1] "{} Titel gewählt"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Ihr Musikverlauf wird an Last.fm gesendet."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Ihr Musikverlauf wird nicht an Last.fm gesendet."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Angemeldet als {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Einrichten"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Wiedergabeliste {} entfernt"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} von {} entfernt"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Pause"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} Titel"
msgstr[1] "{} Titel"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Titel, Künstler, Alben und Wiedergabelisten durchsuchen"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "Eine Anwendung für Musikwiedergabe und -verwaltung für GNOME."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Besuchen Sie die GNOME-Musik-Webseite"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "GNOME Musik ist freie Software. Sie können es weitergeben und/oder "
+#~ "verändern, solange Sie sich an die Regeln der »GNU General Public "
+#~ "License« halten, so wie sie von der Free Software Foundation festgelegt "
+#~ "wurden; entweder in Version 2 der Lizenz oder (nach Ihrem Ermessen) in "
+#~ "jeder neueren Version.\n"
+#~ "\n"
+#~ "GNOME Musik wurde mit dem Ziel veröffentlicht, dass Sie es nützlich "
+#~ "finden, jedoch OHNE JEGLICHE GARANTIE, sogar ohne eine implizite Garantie "
+#~ "der VERKAUFBARKEIT oder der VERWENDBARKEIT FÃœR EINEN SPEZIELLEN ZWECK. "
+#~ "Schauen Sie für weitere Informationen bitte in der »GNU General Public "
+#~ "License« (GNU GPL) nach.\n"
+#~ "\n"
+#~ "Zusammen mit GNOME Musik sollten Sie außerdem eine Kopie der »GNU General "
+#~ "Public License« erhalten haben. Wenn dem nicht so ist, so schreiben Sie "
+#~ "bitte an die Free Software Foundation, Inc., 51 Franklin Street, Fifth "
+#~ "Floor, Boston, MA 02110-1301, USA.\n"
+#~ "\n"
+#~ "Die Autoren von GNOME Musik gewähren hiermit das Recht für die Nutzung "
+#~ "von nicht-GPL-kompatiblen GStreamer-Erweiterungen und den Vertrieb "
+#~ "zusammen mit GStreamer und GNOME Musik. Dies geht über die "
+#~ "Berechtigungen hinaus, die von der GPL-Lizenz gewährt werden, der GNOME "
+#~ "Musik unterliegt. Wenn Sie diesen Code verändern, dürfen Sie diese "
+#~ "Ausnahme auf Ihren Code erweitern, jedoch sind Sie nicht dazu "
+#~ "verpflichtet. Wenn Sie dies nicht wünschen, entfernen Sie diese "
+#~ "Ausnahmeerklärung aus Ihrer Version."
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "Der Inhalt Ihres »Musik«-Ordners wird hier angezeigt werden."
+
+#~ msgid "GNOME Music"
+#~ msgstr "GNOME Musik"
+
+#~ msgid "Window position"
+#~ msgstr "Fensterposition"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Fensterposition (x und y)."
+
+#~ msgid "Loading"
+#~ msgstr "Laden"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Zur Wiedergabeliste hinzufügen …"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
diff --git a/po/el.po b/po/el.po
index c866114d..8a8e141c 100644
--- a/po/el.po
+++ b/po/el.po
@@ -10,21 +10,23 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-09-01 17:37+0300\n"
-"Last-Translator: Efstathios Iosifidis <eiosifidis@gnome.org>\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-07-29 11:36+0300\n"
+"Last-Translator: Efstathios Iosifidis <iosifidis@opensuse.org>\n"
"Language-Team: Greek, Modern (1453-) <gnome-el-list@gnome.org>\n"
"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.3\n"
+"X-Generator: Poedit 3.0.1\n"
"X-Project-Style: gnome\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "Μουσική GNOME"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Μουσική"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -43,15 +45,10 @@ msgstr ""
"Î’Ïείτε κομμάτια στην τοπική σας συλλογή, χÏησιμοποιήστε αυτόματα "
"δημιουÏγημένες λίστες αναπαÏαγωγής ή επιμεληθείτε μια νέα."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "Οι Ï€ÏογÏαμματιστές του GNOME Music"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Μουσική"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "ΑναπαÏαγωγή μουσικής"
@@ -70,27 +67,19 @@ msgid "Window size (width and height)."
msgstr "Μέγεθος παÏαθÏÏου (πλάτος και Ïψος)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Θέση παÏαθÏÏου"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Θέση παÏαθÏÏου (x και y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Μεγιστοποιημένο παÏάθυÏο"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Κατάσταση μεγιστοποιημένου παÏαθÏÏου."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "ΛειτουÏγία επανάληψης αναπαÏαγωγής"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -103,29 +92,29 @@ msgstr ""
"λίστας αναπαÏαγωγής, χωÏίς τυχαία σειÏά), «shuffle» (τυχαία σειÏά λίστας "
"αναπαÏαγωγής, Ï€Ïοϋποθέτει την επανάληψη όλων)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "ΕνεÏγοποίηση του ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "ΕνεÏγοποιεί ή απενεÏγοποιεί το ReplayGain για συλλογές"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Αναστολή συστήματος αναστολής"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"ΕνεÏγοποίηση ή απενεÏγοποίηση την αναστολή συστήματος αναστολής κατά την "
"αναπαÏαγωγή μουσικής"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "ΑναφοÏά ιστοÏÎ¹ÎºÎ¿Ï Î¼Î¿Ï…ÏƒÎ¹ÎºÎ®Ï‚ στην Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -133,81 +122,21 @@ msgstr ""
"ΕνεÏγοποιεί ή απενεÏγοποιεί την αποστολή πληÏοφοÏιών αÏχείων \"που "
"αναπαÏάγονται αυτήν τη στιγμή\" στο Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Πνευματικά δικαιώματα © 2018 GNOME Music Developers"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "ΕφαÏμογή αναπαÏαγωγής και διαχείÏισης μουσικής, για το GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Επισκεφθείτε τον ιστότοπο της εφαÏμογής Μουσική GNOME"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"Η Μουσική GNOME είναι ελεÏθεÏο λογισμικό. ΜποÏείτε να το αναδιανείμετε ή/και "
-"να το Ï„Ïοποποιήσετε, υπό τους ÏŒÏους της άδειας GNU General Public License, "
-"όπως αυτή εκδίδεται από το ΊδÏυμα ΕλεÏθεÏου Î›Î¿Î³Î¹ÏƒÎ¼Î¹ÎºÎ¿Ï (Free Software "
-"Foundation), είτε της έκδοσης 2 της άδειας, είτε (κατ' επιλογήν σας) "
-"οποιασδήποτε άλλης μεταγενέστεÏης έκδοσης.\n"
-"\n"
-"Το GNOME Music διανέμεται με την ελπίδα πως θα είναι χÏήσιμο, αλλά ΧΩΡΙΣ "
-"ΚΑΜΙΑ ΕΓΓΥΗΣΗ, χωÏίς καν την υπονοοÏμενη εγγÏηση της ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ ή της "
-"ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ ΓΙΑ ΣΥΓΚΕΚΡΙΜΕÎΟ ΣΚΟΠΟ. Δείτε την άδεια GNU General Public "
-"License για πεÏισσότεÏες λεπτομέÏειες.\n"
-"\n"
-"ΠÏέπει να έχετε λάβει αντίγÏαφο της άδειας GNU General Public License μαζί "
-"με το GNOME Music. Αν όχι, γÏάψτε στο: Free Software Foundation, Inc., 51 "
-"Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\n"
-"\n"
-"Οι Ï€ÏογÏαμματιστές του GNOME Music επιτÏέπουν στα μη-συμβατά με την άδεια "
-"GPL Ï€Ïόσθετα GStreamer, να χÏησιμοποιοÏνται και να διανέμονται μαζί με το "
-"GStreamer και το GNOME Music. Η άδεια είναι υπεÏάνω και πέÏαν των "
-"απαγοÏεÏσεων της άδειας χÏήσης GPL, και στις οποίες υπάγεται η εφαÏμογή "
-"GNOME Music. Εάν Ï„Ïοποποιήσετε τον κώδικα, μποÏείτε να επεκτείνετε αυτήν "
-"την εξαίÏεση στη δική σας έκδοση του κώδικα, χωÏίς όμως να είστε "
-"υποχÏεωμένοι να το κάνετε. Εάν δεν θέλετε να το κάνετε, διαγÏάψτε αυτή τη "
-"δήλωση εξαίÏεσης από τη δική σας έκδοση."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "ΑναπαÏαγωγή"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_ΑναπαÏαγωγή"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "ΠÏοσθήκη στο _Αγαπημένα Ï„ÏαγοÏδια"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_ΠÏοσθήκη στη λίστα αναπαÏαγωγής…"
@@ -215,133 +144,133 @@ msgstr "_ΠÏοσθήκη στη λίστα αναπαÏαγωγής…"
msgid "Last.fm Account"
msgstr "ΛογαÏιασμός Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "ΑναφοÏά ακÏόασης μουσικής"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "1821"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Βοήθεια"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_ΠεÏί του Μουσική"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Καλώς οÏίσατε στην Μουσική"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "ΜενοÏ"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Επιλογή"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "ΑκÏ_Ïωση"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Αναζήτηση"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Πίσω"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Γενικά"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Κλείσιμο παÏαθÏÏου"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Αναζήτηση"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Βοήθεια"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "ΣυντομεÏσεις"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "ΑναπαÏαγωγή"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "ΑναπαÏαγωγή/ΠαÏση"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Επόμενο Ï„ÏαγοÏδι"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "ΠÏοηγοÏμενο Ï„ÏαγοÏδι"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Εναλλαγή επανάληψης"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Εναλλαγή τυχαίας σειÏάς"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "ΠεÏιήγηση"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Μετάβαση στους δίσκους"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Μετάβαση στους καλλιτέχνες"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Μετάβαση στα Ï„ÏαγοÏδια"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Μετάβαση στις λίστες αναπαÏαγωγής"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Μετάβαση πίσω"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -349,88 +278,80 @@ msgstr ""
"Το Last.fm είναι μια υπηÏεσία που ανακαλÏπτετε μουσική και σας παÏέχει "
"εξατομικευμένες Ï€Ïοτάσεις βάσει της μουσικής που ακοÏτε."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Δεν είναι Ïυθμισμένη η αναφοÏά μουσικής"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"Συνδεθείτε στον λογαÏιασμό σας Last.fm για να αναφέÏετε τη μουσική σας."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "ΣÏνδεση"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Γίνεται φόÏτωση"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "ΠÏοηγοÏμενο"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Επόμενο"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_ΔιαγÏαφή"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Μετονομασία…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Όνομα λίστας αναπαÏαγωγής"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_ΟλοκληÏώθηκε"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "ΠληκτÏολογήστε ένα όνομα για την Ï€Ïώτη σας λίστα αναπαÏαγωγής"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "Δ_ημιουÏγία"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Îέα λίστα αναπαÏαγωγής…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "ΠÏοσθήκη"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "ΠÏοσθήκη στη λίστα αναπαÏαγωγής"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_ΠÏοσθήκη"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "Α_ναίÏεση"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Καλλιτέχνες"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "ΠÏοβολή όλων"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Δίσκοι"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "ΤÏαγοÏδια"
@@ -442,44 +363,61 @@ msgstr "Επιλογή όλων"
msgid "Select None"
msgstr "Καμία επιλογή"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Πατήστε σε αντικείμενα για να τα επιλέξετε"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "ΠÏο_σθήκη στη λίστα αναπαÏαγωγής"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "ΠÏοσθήκη στη λίστα αναπαÏαγωγής…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "Α_φαίÏεση από την λίστα αναπαÏαγωγής"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "Το έÏγο GNOME"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr ""
+"Ελληνική μεταφÏαστική ομάδα GNOME\n"
+" Ευστάθιος Ιωσηφίδης <iosifidis@opensuse.org>\n"
+"\n"
+"Για πεÏισσότεÏες πληÏοφοÏίες, επισκεφθείτε τη σελίδα\n"
+"http://gnome.gr/"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Πνευματικά δικαιώματα GNOME Music Developers"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "ΑφαίÏεση από την λίστα αναπαÏαγωγής"
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "ΜετάφÏαση από"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Το πεÏισσότεÏο παιγμένο"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Δεν παίχτηκε ποτέ"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Παίχτηκε Ï€Ïόσφατα"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "ΠÏοστέθηκε Ï€Ïόσφατα"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Αγαπημένα Ï„ÏαγοÏδια"
@@ -514,27 +452,39 @@ msgid "Playing music"
msgstr "ΑναπαÏαγωγή μουσικής"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Τυχαία σειÏά"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Τυχαία σειÏά/ΑνενεÏγή επανάληψη"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Επανάληψη Ï„ÏαγουδιοÏ"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Επανάληψη όλων"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Τυχαία σειÏά/ΑνενεÏγή επανάληψη"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Τυχαία σειÏά"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "ΑφαιÏέθηκε η λίστα αναπαÏαγωγής {}"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "AναίÏεση"
-#: gnomemusic/utils.py:80
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} αφαιÏέθηκε από {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Άγνωστο άλμπουμ"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Άγνωστος καλλιτέχνης"
@@ -582,65 +532,132 @@ msgstr "Η Μουσική χÏειάζεται έκδοση Tracker 3.0.0 ή μÎ
msgid "Playlists"
msgstr "Λίστες αναπαÏαγωγής"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Αποτελέσματα Καλλιτεχνών"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Αποτελέσματα Δίσκων"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} λεπτό"
msgstr[1] "{} λεπτά"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Δίσκος {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "Επιλέχθηκε {} Ï„ÏαγοÏδι"
msgstr[1] "Επιλέχθηκαν {} Ï„ÏαγοÏδια"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Η μουσική που ακοÏτε αναφέÏεται στο Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Η μουσική που ακοÏτε δεν αναφέÏεται στο Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Συνδεδεμένος ως {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "ΡÏθμιση"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "ΑφαιÏέθηκε η λίστα αναπαÏαγωγής {}"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} αφαιÏέθηκε από {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "ΠαÏση"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} Ï„ÏαγοÏδι"
msgstr[1] "{} Ï„ÏαγοÏδια"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Αναζήτηση Ï„Ïαγουδιών, καλλιτεχνών, άλμπουμ και λιστών αναπαÏαγωγής"
+
+#~ msgid "GNOME Music"
+#~ msgstr "Μουσική GNOME"
+
+#~ msgid "Window position"
+#~ msgstr "Θέση παÏαθÏÏου"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Θέση παÏαθÏÏου (x και y)."
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "ΕφαÏμογή αναπαÏαγωγής και διαχείÏισης μουσικής, για το GNOME."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Επισκεφθείτε τον ιστότοπο της εφαÏμογής Μουσική GNOME"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "Η Μουσική GNOME είναι ελεÏθεÏο λογισμικό. ΜποÏείτε να το αναδιανείμετε ή/"
+#~ "και να το Ï„Ïοποποιήσετε, υπό τους ÏŒÏους της άδειας GNU General Public "
+#~ "License, όπως αυτή εκδίδεται από το ΊδÏυμα ΕλεÏθεÏου Î›Î¿Î³Î¹ÏƒÎ¼Î¹ÎºÎ¿Ï (Free "
+#~ "Software Foundation), είτε της έκδοσης 2 της άδειας, είτε (κατ' επιλογήν "
+#~ "σας) οποιασδήποτε άλλης μεταγενέστεÏης έκδοσης.\n"
+#~ "\n"
+#~ "Το GNOME Music διανέμεται με την ελπίδα πως θα είναι χÏήσιμο, αλλά ΧΩΡΙΣ "
+#~ "ΚΑΜΙΑ ΕΓΓΥΗΣΗ, χωÏίς καν την υπονοοÏμενη εγγÏηση της ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ ή "
+#~ "της ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ ΓΙΑ ΣΥΓΚΕΚΡΙΜΕÎΟ ΣΚΟΠΟ. Δείτε την άδεια GNU General "
+#~ "Public License για πεÏισσότεÏες λεπτομέÏειες.\n"
+#~ "\n"
+#~ "ΠÏέπει να έχετε λάβει αντίγÏαφο της άδειας GNU General Public License "
+#~ "μαζί με το GNOME Music. Αν όχι, γÏάψτε στο: Free Software Foundation, "
+#~ "Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\n"
+#~ "\n"
+#~ "Οι Ï€ÏογÏαμματιστές του GNOME Music επιτÏέπουν στα μη-συμβατά με την άδεια "
+#~ "GPL Ï€Ïόσθετα GStreamer, να χÏησιμοποιοÏνται και να διανέμονται μαζί με το "
+#~ "GStreamer και το GNOME Music. Η άδεια είναι υπεÏάνω και πέÏαν των "
+#~ "απαγοÏεÏσεων της άδειας χÏήσης GPL, και στις οποίες υπάγεται η εφαÏμογή "
+#~ "GNOME Music. Εάν Ï„Ïοποποιήσετε τον κώδικα, μποÏείτε να επεκτείνετε αυτήν "
+#~ "την εξαίÏεση στη δική σας έκδοση του κώδικα, χωÏίς όμως να είστε "
+#~ "υποχÏεωμένοι να το κάνετε. Εάν δεν θέλετε να το κάνετε, διαγÏάψτε αυτή "
+#~ "τη δήλωση εξαίÏεσης από τη δική σας έκδοση."
+
+#~ msgid "Loading"
+#~ msgstr "Γίνεται φόÏτωση"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "ΠÏοσθήκη στη λίστα αναπαÏαγωγής…"
+
+#~ msgid "Remove From Playlist"
+#~ msgstr "ΑφαίÏεση από την λίστα αναπαÏαγωγής"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
@@ -741,9 +758,6 @@ msgstr[1] "{} Ï„ÏαγοÏδια"
#~ msgid "Enables or disables playback notifications"
#~ msgstr "ΕνεÏγοποιεί ή απενεÏγοποιεί τις ειδοποιήσεις αναπαÏαγωγής"
-#~ msgid "_Remove from Playlist"
-#~ msgstr "Α_φαίÏεση από την λίστα αναπαÏαγωγής"
-
#~ msgid "the|a|an"
#~ msgstr "the|a|an|ο|η|το|τα|οι"
diff --git a/po/en_GB.po b/po/en_GB.po
index 769aca7b..df033b7c 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -3,14 +3,14 @@
# This file is distributed under the same licence as the gnome-music package.
# Chris Leonard <cjlhomeaddress@gmail.com>, 2012.
# Zander Brown <zbrown@gnome.org>, 2019-2020.
-# Bruce Cowan <bruce@bcowan.me.uk>, 2013-2021.
+# Bruce Cowan <bruce@bcowan.me.uk>, 2013-2023.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-08-29 11:54+0100\n"
+"POT-Creation-Date: 2023-01-25 19:11+0000\n"
+"PO-Revision-Date: 2023-06-30 19:55+0100\n"
"Last-Translator: Bruce Cowan <bruce@bcowan.me.uk>\n"
"Language-Team: English - United Kingdom <en@li.org>\n"
"Language: en_GB\n"
@@ -18,12 +18,14 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Gtranslator 40.0\n"
+"X-Generator: Poedit 3.3.1\n"
"X-Project-Style: gnome\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME Music"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:236
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Music"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -42,15 +44,10 @@ msgstr ""
"Find tracks in your local collection, use automatically generated playlists "
"or curate a fresh one."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:167
msgid "The GNOME Music developers"
msgstr "The GNOME Music developers"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Music"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Music Player"
@@ -69,27 +66,19 @@ msgid "Window size (width and height)."
msgstr "Window size (width and height)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Window position"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Window position (x and y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Window maximised"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Window maximised state."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Playback repeat mode"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -101,27 +90,27 @@ msgstr ""
"“song†(repeat current song), “all†(repeat playlist, no shuffle), "
"“shuffle†(shuffle playlist, presumes repeat all)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Enable ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Enables or disables ReplayGain for albums"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Inhibit system suspend"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr "Enables or disables inhibiting system suspend while playing music"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Report music history to Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -129,106 +118,21 @@ msgstr ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 GNOME Music Developers"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "A music player and management application for GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Visit GNOME Music website"
-
-#: data/ui/AboutDialog.ui.in:13
-#| msgid ""
-#| "GNOME Music is free software; you can redistribute it and/or modify it "
-#| "under the terms of the GNU General Public License as published by the "
-#| "Free Software Foundation; either version 2 of the License, or (at your "
-#| "option) any later version.\n"
-#| "\n"
-#| "GNOME Music is distributed in the hope that it will be useful, but "
-#| "WITHOUT ANY WARRANTY; without even the implied warranty of "
-#| "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
-#| "Public License for more details.\n"
-#| "\n"
-#| "You should have received a copy of the GNU General Public License along "
-#| "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-#| "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-#| "\n"
-#| "The GNOME Music authors hereby grant permission for non-GPL compatible "
-#| "GStreamer plugins to be used and distributed together with GStreamer and "
-#| "GNOME Music. This permission is above and beyond the permissions granted "
-#| "by the GPL license by which GNOME Music is covered. If you modify this "
-#| "code, you may extend this exception to your version of the code, but you "
-#| "are not obligated to do so. If you do not wish to do so, delete this "
-#| "exception statement from your version.\n"
-#| "\n"
-#| "“Magic of the vinyl†by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
-#| "https://www.flickr.com/photos/_spy_/12270839403"
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public Licence as published by the Free "
-"Software Foundation; either version 2 of the Licence, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public Licence for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public Licence along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plug-ins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL licence by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Play"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Play"
-#: data/ui/AlbumWidget.ui:167
-#| msgid "Favorite Songs"
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Add to _Favourite Songs"
-#: data/ui/AlbumWidget.ui:171
-#| msgid "Add to Playlist…"
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_Add to Playlist…"
@@ -236,23 +140,23 @@ msgstr "_Add to Playlist…"
msgid "Last.fm Account"
msgstr "Last.fm Account"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Report Music Listening"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Keyboard Shortcuts"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Help"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_About Music"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Welcome to Music"
@@ -260,109 +164,109 @@ msgstr "Welcome to Music"
msgid "Menu"
msgstr "Menu"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:24 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Select"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:30 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Cancel"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:42 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Search"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:50
msgid "Back"
msgstr "Back"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "General"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Close window"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Search"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Help"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Shortcuts"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Playback"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Play/Pause"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Next song"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Previous song"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Toggle repeat"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Toggle shuffle"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navigation"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Go to Albums"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Go to Artists"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Go to Songs"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Go to Playlists"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Go back"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -370,87 +274,79 @@ msgstr ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Music Reporting Not Setup"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "Login to your Last.fm account to report your music listening."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Login"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Loading"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Previous"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Next"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Delete"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Rename…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Playlist Name"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Done"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Enter a name for your first playlist"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "C_reate"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "New Playlist…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Add"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Add to Playlist"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Add"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Undo"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Artists"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "View All"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Albums"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Songs"
@@ -462,44 +358,58 @@ msgstr "Select All"
msgid "Select None"
msgstr "Select None"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Click on items to select them"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Add to Playlist"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Add to Playlist…"
+#: data/ui/SongWidgetMenu.ui:19
+#| msgid "Remove From Playlist"
+msgid "_Remove from Playlist"
+msgstr "_Remove from Playlist"
+
+#: gnomemusic/about.py:238
+msgid "The GNOME Project"
+msgstr "The GNOME Project"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Remove From Playlist"
+#: gnomemusic/about.py:242
+msgid "translator-credits"
+msgstr "Bruce Cowan <bruce@bcowan.me.uk>"
+
+#: gnomemusic/about.py:246
+#| msgid "Copyright © 2018 GNOME Music Developers"
+msgid "Copyright The GNOME Music Developers"
+msgstr "Copyright The GNOME Music Developers"
+
+#: gnomemusic/about.py:249
+msgid "Translated by"
+msgstr "Translated by"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Most Played"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Never Played"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Recently Played"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Recently Added"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Favourite Songs"
@@ -532,27 +442,40 @@ msgid "Playing music"
msgstr "Playing music"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
+#: gnomemusic/player.py:44
msgid "Shuffle"
msgstr "Shuffle"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Repeat Song"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Repeat All"
-#: gnomemusic/player.py:48
+#: gnomemusic/player.py:47
msgid "Shuffle/Repeat Off"
msgstr "Shuffle/Repeat Off"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Playlist {} removed"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+#| msgid "_Undo"
+msgid "Undo"
+msgstr "Undo"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} removed from {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Unknown Album"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Unknown Artist"
@@ -561,7 +484,6 @@ msgid "Your XDG Music directory is not set."
msgstr "Your XDG Music directory is not set."
#: gnomemusic/views/emptyview.py:72
-#| msgid "Music folder"
msgid "Music Folder"
msgstr "Music Folder"
@@ -572,32 +494,26 @@ msgid "The contents of your {} will appear here."
msgstr "The contents of your {} will appear here."
#: gnomemusic/views/emptyview.py:124
-#| msgid "No music found"
msgid "No Music Found"
msgstr "No Music Found"
#: gnomemusic/views/emptyview.py:125
-#| msgid "Try a different search"
msgid "Try a Different Search"
msgstr "Try a Different Search"
#: gnomemusic/views/emptyview.py:129
-#| msgid "GNOME Music could not connect to Tracker"
msgid "GNOME Music could not connect to Tracker."
msgstr "GNOME Music could not connect to Tracker."
#: gnomemusic/views/emptyview.py:131
-#| msgid "Your music files cannot be indexed without Tracker running"
msgid "Your music files cannot be indexed without Tracker running."
msgstr "Your music files cannot be indexed without Tracker running."
#: gnomemusic/views/emptyview.py:137
-#| msgid "Your system Tracker version seems outdated"
msgid "Your system Tracker version seems outdated."
msgstr "Your system Tracker version seems outdated."
#: gnomemusic/views/emptyview.py:139
-#| msgid "Music needs Tracker version 3.0.0 or higher"
msgid "Music needs Tracker version 3.0.0 or higher."
msgstr "Music needs Tracker version 3.0.0 or higher."
@@ -605,65 +521,148 @@ msgstr "Music needs Tracker version 3.0.0 or higher."
msgid "Playlists"
msgstr "Playlists"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Artists"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Albums"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minute"
msgstr[1] "{} minutes"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Disc {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "Selected {} song"
msgstr[1] "Selected {} songs"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Your music listening is reported to Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Your music listening is not reported to Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Logged in as {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Configure"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Playlist {} removed"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} removed from {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Pause"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} Song"
msgstr[1] "{} Songs"
+#~ msgid "GNOME Music"
+#~ msgstr "GNOME Music"
+
+#~ msgid "Window position"
+#~ msgstr "Window position"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Window position (x and y)."
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "A music player and management application for GNOME."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Visit GNOME Music website"
+
+#~| msgid ""
+#~| "GNOME Music is free software; you can redistribute it and/or modify it "
+#~| "under the terms of the GNU General Public License as published by the "
+#~| "Free Software Foundation; either version 2 of the License, or (at your "
+#~| "option) any later version.\n"
+#~| "\n"
+#~| "GNOME Music is distributed in the hope that it will be useful, but "
+#~| "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~| "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "
+#~| "General Public License for more details.\n"
+#~| "\n"
+#~| "You should have received a copy of the GNU General Public License along "
+#~| "with GNOME Music; if not, write to the Free Software Foundation, Inc., "
+#~| "51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~| "\n"
+#~| "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~| "GStreamer plugins to be used and distributed together with GStreamer and "
+#~| "GNOME Music. This permission is above and beyond the permissions "
+#~| "granted by the GPL license by which GNOME Music is covered. If you "
+#~| "modify this code, you may extend this exception to your version of the "
+#~| "code, but you are not obligated to do so. If you do not wish to do so, "
+#~| "delete this exception statement from your version.\n"
+#~| "\n"
+#~| "“Magic of the vinyl†by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
+#~| "https://www.flickr.com/photos/_spy_/12270839403"
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public Licence as published by the "
+#~ "Free Software Foundation; either version 2 of the Licence, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public Licence for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public Licence along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plug-ins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL licence by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+
+#~ msgid "Loading"
+#~ msgstr "Loading"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Add to Playlist…"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
diff --git a/po/es.po b/po/es.po
index 36a99277..a2ed0c3f 100644
--- a/po/es.po
+++ b/po/es.po
@@ -4,14 +4,14 @@
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2012-2021.
-# Daniel Mustieles García <daniel.mustieles@gmail.com>, 2021.
+# Daniel Mustieles García <daniel.mustieles@gmail.com>, 2021-2023.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-09-06 13:15+0200\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-08-08 08:11+0200\n"
"Last-Translator: Daniel Mustieles García <daniel.mustieles@gmail.com>\n"
"Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n"
"Language: es_ES\n"
@@ -19,11 +19,13 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-"X-Generator: Gtranslator 40.0\n"
+"X-Generator: Gtranslator 42.0\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME MuÌsica"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "MuÌsica"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -42,15 +44,10 @@ msgstr ""
"Busque pistas en su colección local, use listas de reproducción generadas "
"automáticamente o cree una nueva."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "Los desarrolladores de GNOME Música"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "MuÌsica"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Reproductor de música"
@@ -69,27 +66,19 @@ msgid "Window size (width and height)."
msgstr "Tamaño de la ventana (anchura y altura)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Posición de la ventana"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Posición de la ventana (x e y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Ventana maximizada"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Estado maximizado de la ventana."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Modo de repetición de la reproducción"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -102,29 +91,29 @@ msgstr ""
"«todas» (repetir la lista de reproduccioÌn, sin mezclar), «mezclar» (mezclar "
"la lista de reproduccioÌn, se repiten todas)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Activar ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Activa o desactiva ReplayGain para los álbumes"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Suspensión de inhibición del sistema"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Activa o desactiva la suspensión de inhibición el sistema al reproducir "
"música"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Enviar histórico de música a Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -132,81 +121,21 @@ msgstr ""
"Activa o desactiva el envío de «scrobbles» e información de «reproduciendo "
"actualmente» a Last.fm"
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 Desarrolladores de GNOME Music"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Una aplicación para gestionar y reproducir música en GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Visitar la página web de GNOME Music"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"GNOME Música es software libre; puede redistribuirlo y/o modificarlo bajo "
-"los términos de la Licencia Pública General GNU tal como la publica la Free "
-"Software Foundation; ya sea en la versión 2 de la Licencia, como (a su "
-"elección) cualquier otra versión posterior.\n"
-"\n"
-"GNOME Música se distribuye con el ánimo de que le será útil, pero SIN "
-"NINGUNA GARANTÃA; sin incluso la garantía implícita de MERCANTILIDAD o "
-"IDONEIDAD PARA UN PROPÓSITO DETERMINADO. Vea la Licencia Pública General de "
-"GNU para más detalles.\n"
-"\n"
-"Debería haber recibido una copia de la Licencia Pública General GNU junto "
-"Música si no, escriba a la Free Software Foundation,Inc., 51 Franklin "
-"Street, Fifth Floor, Boston, MA 02110-1301 EE. UU.\n"
-"\n"
-"Los autores de GNOME Música conceden permiso para usar y distribuir "
-"complementos de GStreamer no compatibles con la GPL. Este permiso está por "
-"encima y más allá de los permisos concedidos por la GPL, por la que GNOME "
-"Música está cubierta. Si modifica este código, puede ampliar esta excepción "
-"a su versión del código, pero no está obligado a hacerlo. Si no quiere "
-"hacerlo, elimine esta sentencia de excepción de su versión.\n"
-"\n"
-"La imagen «Magic of the vinyl» de Sami Pyylampi está licenciada bajo la CC-"
-"BY-SA 2.0 https://www.flickr.com/photos/_spy_/12270839403"
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Reproducir"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Reproducir"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Añadir a canciones _favoritas"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_Añadir a la lista de reproducción…"
@@ -214,133 +143,133 @@ msgstr "_Añadir a la lista de reproducción…"
msgid "Last.fm Account"
msgstr "Cuenta de Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Informar de música que se está escuchando"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Atajos del teclado"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Ayuda"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_Acerca de Música"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Bienvenido a Música"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "MenuÌ"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Seleccionar"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Cancelar"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Buscar"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "AtraÌs"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "General"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Cerrar ventana"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Buscar"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Ayuda"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Atajos"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Reproducir"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Reproducir/Pausar"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Siguiente canción"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Canción anterior"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Conmutar repetición"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Conmutar mezcla"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navegación"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Ir a los álbumes"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Ir a los artistas"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Ir a las canciones"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Ir a las listas de reproducción"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Retroceder"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -348,88 +277,80 @@ msgstr ""
"Last.fm es un servicio de descubrimiento de música que le ofrece "
"recomendaciones personalizadas basadas en la música que escucha."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Informe de música no configurado"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"Inicie sesión en su cuneta de Last.fm para informar de la música que escucha."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Iniciar sesión"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Cargando"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Anterior"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Siguiente"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Eliminar"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Renombrar…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Nombre de la lista de reproducción"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Hecho"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Introduzca un nombre para su primera lista de reproducción"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "C_rear"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Lista de reproducción nueva…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Añadir"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Añadir a la lista de reproducción"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Añadir"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Deshacer"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Artistas"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Ver todo"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Ãlbumes"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Canciones"
@@ -441,44 +362,56 @@ msgstr "Seleccionar todos"
msgid "Select None"
msgstr "Seleccionar ninguno"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Pulse sobre los elementos para seleccionarlos"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "Añadir a la _lista de reproducción"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Añadir a la lista de reproducción…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Quitar de la lista de reproducción"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "El Proyecto GNOME"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr "Daniel Mustieles <daniel.mustieles@gmail.com>, 2012-2022"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Quitar de la lista de reproducción"
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Copyright Desarrolladores de GNOME Música"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Traducido por"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Más reproducidas"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "No reproducidas nunca"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Reproducidas recientemente"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Añadidas recientemente"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Canciones favoritas"
@@ -512,27 +445,39 @@ msgid "Playing music"
msgstr "Reproducir música"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Mezclar"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "No mezclar ni repetir"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Repetir canción"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Repetir todas"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "No mezclar ni repetir"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Mezclar"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Lista de reproducción {} eliminada"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Deshacer"
-#: gnomemusic/utils.py:80
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} eliminado de {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Ãlbum desconocido"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Artista desconocido"
@@ -579,67 +524,133 @@ msgstr "Música necesita Tracker 3.0.0 o superior."
msgid "Playlists"
msgstr "Listas de reproducción"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Resultados de artistas"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Resultados de álbumes"
-#: gnomemusic/widgets/albumwidget.py:237
-#| msgid "{}, {} minute"
-#| msgid_plural "{}, {} minutes"
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minuto"
msgstr[1] "{} minutos"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Disco {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "{} canción seleccionada"
msgstr[1] "{} canciones seleccionadas"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "La música que escucha se envía a Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "La música que escucha no se envía a Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Sesión iniciada como {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Configurar"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Lista de reproducción {} eliminada"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} eliminado de {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Pausar"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} canción"
msgstr[1] "{} canciones"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Buscar canciones, artistas, álbumes y listas de reproducción"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "Una aplicación para gestionar y reproducir música en GNOME."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Visitar la página web de GNOME Music"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "GNOME Música es software libre; puede redistribuirlo y/o modificarlo bajo "
+#~ "los términos de la Licencia Pública General GNU tal como la publica la "
+#~ "Free Software Foundation; ya sea en la versión 2 de la Licencia, como (a "
+#~ "su elección) cualquier otra versión posterior.\n"
+#~ "\n"
+#~ "GNOME Música se distribuye con el ánimo de que le será útil, pero SIN "
+#~ "NINGUNA GARANTÃA; sin incluso la garantía implícita de MERCANTILIDAD o "
+#~ "IDONEIDAD PARA UN PROPÓSITO DETERMINADO. Vea la Licencia Pública General "
+#~ "de GNU para más detalles.\n"
+#~ "\n"
+#~ "Debería haber recibido una copia de la Licencia Pública General GNU junto "
+#~ "Música si no, escriba a la Free Software Foundation,Inc., 51 Franklin "
+#~ "Street, Fifth Floor, Boston, MA 02110-1301 EE. UU.\n"
+#~ "\n"
+#~ "Los autores de GNOME Música conceden permiso para usar y distribuir "
+#~ "complementos de GStreamer no compatibles con la GPL. Este permiso está "
+#~ "por encima y más allá de los permisos concedidos por la GPL, por la que "
+#~ "GNOME Música está cubierta. Si modifica este código, puede ampliar esta "
+#~ "excepción a su versión del código, pero no está obligado a hacerlo. Si no "
+#~ "quiere hacerlo, elimine esta sentencia de excepción de su versión.\n"
+#~ "\n"
+#~ "La imagen «Magic of the vinyl» de Sami Pyylampi está licenciada bajo la "
+#~ "CC-BY-SA 2.0 https://www.flickr.com/photos/_spy_/12270839403"
+
+#~| msgid "The contents of your {} will appear here."
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "El contenido de su carpeta Música aparecerá aquí"
+
+#~ msgid "GNOME Music"
+#~ msgstr "GNOME MuÌsica"
+
+#~ msgid "Window position"
+#~ msgstr "Posición de la ventana"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Posición de la ventana (x e y)."
+
+#~ msgid "Loading"
+#~ msgstr "Cargando"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Añadir a la lista de reproducción…"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
@@ -832,9 +843,6 @@ msgstr[1] "{} canciones"
#~ msgid "Quit"
#~ msgstr "Salir"
-#~ msgid "translator-credits"
-#~ msgstr "Daniel Mustieles <daniel.mustieles@gmail.com>, 2012"
-
#~ msgid "A GNOME 3 application to listen and manage music playlists"
#~ msgstr ""
#~ "Una aplicación de GNOME 3 para escuchar y gestionar listas de "
diff --git a/po/eu.po b/po/eu.po
index 04856d97..008fd248 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -3,12 +3,12 @@
# This file is distributed under the same license as the gnome-music package.
#
# Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2013, 2014, 2015, 2016, 2017.
-# Asier Sarasua Garmendia <asiersarasua@ni.eus>, 2013, 2019, 2020, 2021.
+# Asier Sarasua Garmendia <asiersarasua@ni.eus>, 2013, 2019, 2020, 2021, 2022, 2023.
msgid ""
msgstr "Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 20201-09-05 10:00+0100\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-08-14 10:00+0100\n"
"Last-Translator: Asier Sarasua Garmendia <asiersarasua@ni.eus>\n"
"Language-Team: Basque <librezale@librezale.eus>\n"
"Language: eu\n"
@@ -18,8 +18,10 @@ msgstr "Project-Id-Version: gnome-music master\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME Musika"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Musika"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -36,15 +38,10 @@ msgid ""
"or curate a fresh one."
msgstr "Bilatu pistak zure bilduma lokalean, erabili automatikoki sortutako erreprodukzio-zerrendak edo sortu zerrenda berria."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "GNOME Musika aplikazioaren garatzaileak"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Musika"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Musika-erreproduzitzailea"
@@ -63,27 +60,19 @@ msgid "Window size (width and height)."
msgstr "Leihoaren tamaina (zabalera eta altuera)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Leihoaren posizioa"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Leihoaren posizioa (x eta y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Leihoa maximizatuta"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Leiho maximizatuaren egoera."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Erreprodukzioa errepikatzeko modua"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -91,90 +80,47 @@ msgid ""
"“shuffle†(shuffle playlist, presumes repeat all)."
msgstr "Balioak erreprodukzioa errepikatuko edo ausaz erreproduzituko den bilduman zehar zehazten du. Balio erabilgarriak: “none†(errepikatzea edo ausaz erreproduzitzea desgaituta), “song†(errepikatu uneko abestia), “all†(errepikatu erreprodukzio-zerrenda, ez-ausaz) eta “shuffle†(ausaz erreproduzitu zerrenda, osoa errepikatuko duela suposatzen da)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Gaitu 'ReplayGain' (erreprodukzioaren irabazia)"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Albumen erreprodukzioen irabazia (ReplayGain) gaitzen/desgaitzen du"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Galarazi sistema esekitzea"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr "Musika erreproduzitzen ari den bitartean sistema eseki dadin galarazten du"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Igorri musika-historia Last.fm guneari"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
msgstr "Abestien izenak eta \"unean erreproduzitzen\" Last-fm guneari igortzea gaitzen edo desgaitzen du."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 GNOME Music garatzaileak"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "GNOMEren aplikazio bat musika erreproduzitzeko eta kudeatzeko."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Bisitatu GNOME Music-en webgunea"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr "GNOME Musika software librea da; birbana eta/edo alda dezakezu Free Software Foundation-ek argitaratutako GNU Lizentzia Publiko Orokorraren 2. bertsioan, edo (nahiago baduzu) bertsio berriago batean, jasotako baldintzak betez gero.\n"
-"\n"
-"GNOME Musika erabilgarria izango delakoan banatzen da, baina INOLAKO BERMERIK GABE; era berean, ez da bermatzen beraren EGOKITASUNA MERKATURATZEKO edo HELBURU PARTIKULARRETARAKO ERABILTZEKO. Argibide gehiago nahi izanez gero, ikus GNU Lizentzia Publiko Orokorra.\n"
-"\n"
-"Programa honekin batera GNU Lizentzia Publiko Orokorraren kopia bat ere jaso beharko zenuke; horrela ez bada, idatzi helbide honetara: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301, USA.\n"
-"\n"
-"GNOME Musikaren egileek baimena ematen dute GPL lizentziarekin bateragarriak ez diren GStreamer pluginak erabiltzeko eta banatzeko GStreamerrekin eta GNOME Musikarekin batera. Baimen hori GNOME Musikak darabilen GPL lizentziak ematen dituen baimenen gainetik eta haratago dago. Kode hau aldatzen baduzu, salbuespen hori kodearen zure bertsiora hedatu dezakezu, baina ez zaude hori egitera behartuta. Ez baduzu egin nahi, ezabatu salbuespen-adierazpen hau zure bertsiotik."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Erreproduzitu"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Erreproduzitu"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Gehitu _gogoko abestiei"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "Gehitu e_rreprodukzio-zerrendari…"
@@ -182,219 +128,211 @@ msgstr "Gehitu e_rreprodukzio-zerrendari…"
msgid "Last.fm Account"
msgstr "Last.fm kontua"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Eman musika entzutearen berri"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "Las_ter-teklak"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Laguntza"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_Musikari buruz"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Ongi etorri Musika aplikaziora"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Menua"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Hautatu"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Utzi"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Bilatu"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Atzera"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Orokorra"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Itxi leihoa"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Bilatu"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Laguntza"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Lasterbideak"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Erreproduzitu"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Erreproduzitu/pausarazi"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Hurrengoa abestia"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Aurreko abestia"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Txandakatu errepikatzea"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Txandakatu ausazkoa"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Nabigazioa"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Joan albumetara"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Joan artistetara"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Joan abestietara"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Joan zerrendatara"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Joan atzera"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
msgstr "Last.fm musika aurkitzeko zerbitzu bat da, entzuten duzun musikaren araberako gomendio pertsonalizatuak ematen dizkizuna."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Abestien berri ematea ez dago konfiguratuta"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "Hasi saioa zure Last.fm kontuan entzuten duzun musikaren berri emateko."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Saio-hasiera"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Kargatzen"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Aurrekoa"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Hurrengoa"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "Ez_abatu"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "Be_rrizendatu…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Zerrendaren izena"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Eginda"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Sartu aurreneko zerrendaren izena"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "_Sortu"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Erreprodukzio-zerrenda berria…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Gehitu"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Gehitu erreprodukzio-zerrendari…"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Gehitu"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Desegin"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Artistak"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Ikusi dena"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Albumak"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Abestiak"
@@ -406,44 +344,56 @@ msgstr "Hautatu dena"
msgid "Select None"
msgstr "Ez hautatu ezer"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Egin klik elementuen gainean hautatzeko"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Gehitu zerrendari"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Gehitu erreprodukzio-zerrendari…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Kendu erreprodukzio-zerrendatik"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "GNOME proiektua"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Kendu erreprodukzio-zerrendatik"
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr "translator-credits"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Copyright GNOME Musika aplikazioaren garatzaileak"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Itzultzaileak"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Gehien erreproduzitua"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Inoiz erreproduzitu gabea"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Azken aldian erreproduzitua"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Azken aldian gehitua"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Gogoko abestiak"
@@ -476,27 +426,39 @@ msgid "Playing music"
msgstr "Musika erreproduzitzen"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Ausaz"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Ausaz/Ez errepikatu"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Errepikatu abestia"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Errepikatu dena"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Ausaz/Ez errepikatu"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Ausaz"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "{} zerrenda kenduta"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Desegin"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} kenduta hemendik: {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Album ezezaguna"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Artista ezezaguna"
@@ -542,65 +504,131 @@ msgstr "Musika aplikazioak Tracker 3.0.0 bertsioa edo berriagoa behar du."
msgid "Playlists"
msgstr "Erreprodukzio-zerrendak"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Artisten emaitzak"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Albumen emaitzak"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "Minutu {}"
msgstr[1] "{} minutu"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "{} diskoa"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "Abesti {} hautatuta"
msgstr[1] "{} abesti hautatuta"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Entzuten duzun musikaren berri ematen ari zaio Last-fm zerbitzuari."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Entzuten duzun musikaren berri ez zaio ematen ari Last-fm zerbitzuari."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Saioa hasita {} erabiltzailearekin"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Konfiguratu"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "{} zerrenda kenduta"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} kenduta hemendik: {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Pausatu"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "Abesti {}"
msgstr[1] "{} abesti"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Bilatu abestiak, artistak, albumak eta erreprosukzio-zerrendak"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "GNOMEren aplikazio bat musika erreproduzitzeko eta kudeatzeko."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Bisitatu GNOME Music-en webgunea"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "GNOME Musika software librea da; birbana eta/edo alda dezakezu Free "
+#~ "Software Foundation-ek argitaratutako GNU Lizentzia Publiko Orokorraren "
+#~ "2. bertsioan, edo (nahiago baduzu) bertsio berriago batean, jasotako "
+#~ "baldintzak betez gero.\n"
+#~ "\n"
+#~ "GNOME Musika erabilgarria izango delakoan banatzen da, baina INOLAKO "
+#~ "BERMERIK GABE; era berean, ez da bermatzen beraren EGOKITASUNA "
+#~ "MERKATURATZEKO edo HELBURU PARTIKULARRETARAKO ERABILTZEKO. Argibide "
+#~ "gehiago nahi izanez gero, ikus GNU Lizentzia Publiko Orokorra.\n"
+#~ "\n"
+#~ "Programa honekin batera GNU Lizentzia Publiko Orokorraren kopia bat ere "
+#~ "jaso beharko zenuke; horrela ez bada, idatzi helbide honetara: Free "
+#~ "Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA "
+#~ "02111-1301, USA.\n"
+#~ "\n"
+#~ "GNOME Musikaren egileek baimena ematen dute GPL lizentziarekin "
+#~ "bateragarriak ez diren GStreamer pluginak erabiltzeko eta banatzeko "
+#~ "GStreamerrekin eta GNOME Musikarekin batera. Baimen hori GNOME Musikak "
+#~ "darabilen GPL lizentziak ematen dituen baimenen gainetik eta haratago "
+#~ "dago. Kode hau aldatzen baduzu, salbuespen hori kodearen zure bertsiora "
+#~ "hedatu dezakezu, baina ez zaude hori egitera behartuta. Ez baduzu egin "
+#~ "nahi, ezabatu salbuespen-adierazpen hau zure bertsiotik."
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "Zure 'Musika' karpetaren edukiak hemen agertuko dira"
+
+#~ msgid "GNOME Music"
+#~ msgstr "GNOME Musika"
+
+#~ msgid "Window position"
+#~ msgstr "Leihoaren posizioa"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Leihoaren posizioa (x eta y)."
+
+#~ msgid "Loading"
+#~ msgstr "Kargatzen"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Gehitu erreprodukzio-zerrendari…"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
diff --git a/po/fa.po b/po/fa.po
index 0c32d95a..02bfbeda 100644
--- a/po/fa.po
+++ b/po/fa.po
@@ -3,26 +3,27 @@
# This file is distributed under the same license as the gnome-music package.
# royaniva <royaniva@outlook.com >, 2013.
# Arash Mousavi <mousavi.arash@gmail.com>, 2013-2017.
-# Danial Behzadi <dani.behzi@ubuntu.com>, 2014, 2018-2021.
+# Danial Behzadi <dani.behzi@ubuntu.com>, 2014, 2018-2023.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-09-01 16:18+0430\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-07-31 02:14+0330\n"
"Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>\n"
"Language-Team: Persian <>\n"
"Language: fa\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.4.2\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 3.3.2\n"
-#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "آهنگ‌های گنوم"
+#: data/org.gnome.Music.appdata.xml.in.in:6 data/org.gnome.Music.desktop.in.in:3
+#: gnomemusic/about.py:243 gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "آهنگ‌ها"
#: data/org.gnome.Music.appdata.xml.in.in:7 data/org.gnome.Music.desktop.in.in:5
msgid "Play and organize your music collection"
@@ -40,15 +41,10 @@ msgstr ""
"یاÙتن قطعه‌ها در مجموعهٔ محلّیتان با استÙاده از سیاهه‌های پخش ایجاد شده به صورت "
"خودکار یا ساختن سیاهه‌ای تازه."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "توسعه‌دهندگان آهنگ‌های گنوم"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "آهنگ‌ها"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "پخش‌کنندهٔ آهنگ"
@@ -56,7 +52,7 @@ msgstr "پخش‌کنندهٔ آهنگ"
#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
#: data/org.gnome.Music.desktop.in.in:13
msgid "Music;Player;"
-msgstr "Music;Player;پخش‌کننده‌;موزیک;آهنگ;"
+msgstr "Music;Player;پخش‌کننده‌;موزیک;آهنگ;موسیقی;"
#: data/org.gnome.Music.gschema.xml:12
msgid "Window size"
@@ -67,131 +63,71 @@ msgid "Window size (width and height)."
msgstr "اندازهٔ پنجره (پهنا و بلندا)"
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "موقعیت پنجره"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "موقعیت پنجره (x و y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "پنجره بیشینه شد"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "حالت بیشینهٔ پنجره."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "حالت تکرار پخش"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the collection. "
"Allowed values are: “none†(repeat and shuffle are off), “song†(repeat current "
-"song), “all†(repeat playlist, no shuffle), “shuffle†(shuffle playlist, presumes "
-"repeat all)."
+"song), “all†(repeat playlist, no shuffle), “shuffle†(shuffle playlist, "
+"presumes repeat all)."
msgstr ""
"مقدار مشخص می‌کند Ú©Ù‡ آیا پخش در میان مجموعه تکرار شود یا به صورت تصادÙÛŒ باشد. "
"مقادیر معتبر عبارتند از: «none» (تکرار و بر زدن خاموش)، «song» (آواز کنونی تکرار "
-"می‌شود)، «all» (سیاههٔ پخش بدون بر زدن تکرار می‌شود)، «shuffle» (بر زدن سیاههٔ پخش با "
-"Ø­Ùظ تکرار همه)."
+"می‌شود)، «all» (سیاههٔ پخش بدون بر زدن تکرار می‌شود)، «shuffle» (بر زدن سیاههٔ پخش "
+"با Ø­Ùظ تکرار همه)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Ùعال‌سازی ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "به یا از کار انداختن ReplayGain برای آلبوم‌ها"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "جلوگیری از تعلیق سامانه"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr "به یا از کار انداختن جلوگیری از تعلیق سامانه هنگام پخش آهنگ"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "گزارش تاریخچهٔ آهنگ‌ها به لست.اÙ‌ام"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
-"Enables or disables sending scrobbles and the “currently playing†info to Last.fm."
+"Enables or disables sending scrobbles and the “currently playing†info to Last."
+"fm."
msgstr "به یا از کار انداختن Ùرستادن اطلاعات پخش به لست.اÙ‌‌ام."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "حق‌رونوشت © ۲۰۱۸ توسعه‌دهندگان آهنگ‌های گنوم"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "یک برنامه مدیریت و پخش آهنگ‌ها برای گنوم."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "پایگاه وب آهنگ‌های گنوم را ببینید"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A "
-"PARTICULAR PURPOSE. See the GNU General Public License for more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 Franklin "
-"Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible GStreamer "
-"plugins to be used and distributed together with GStreamer and GNOME Music. This "
-"permission is above and beyond the permissions granted by the GPL license by "
-"which GNOME Music is covered. If you modify this code, you may extend this "
-"exception to your version of the code, but you are not obligated to do so. If "
-"you do not wish to do so, delete this exception statement from your version."
-msgstr ""
-"آهنگ‌های گنوم یک نرم‌اÙزار آزاد است؛ می‌توانید آن را با شرایط نگارش Û² یا (بنا به "
-"نظرتان) هر نگارش جدیدتری از پروانهٔ جامع همگانی گنو Ú©Ù‡ بنیاد نرم‌اÙزارهای آزاد "
-"منتشر کرده است،‌ تغییر داده یا بازتوزیع کنید.\n"
-"\n"
-"آهنگ‌های گنوم با امید کارآیی توزیع شده است، ولی بدون هر گونه ضمانتی؛ حتا ضمانت "
-"ضمنی قابل Ùروش بودن یا مناسب بودن برای یک هد٠مشخّص. برای جزییات بیش‌تر، پروانهٔ "
-"جامع همگانی گنو را ببینید.\n"
-"\n"
-"همراه آهنگ‌های گنوم باید نگارشی از پروانهٔ جامع همگانی گنو را دریاÙت کرده باشد؛ در "
-"غیر این صورت با شرکت بنیاد نرم‌اÙزارهای آزاد به نشانی زیر مکاتبه کنید: Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n"
-"\n"
-"نگارندگان آهنگ‌های گنوم در این‌جا اجازه می‌دهند پلاگین‌های GStreamer ناسازگار با "
-"جی‌پی‌ال به همراه GStreamer در آهنگ‌های گنوم استÙاده Ùˆ توزیع شوند. این اجازه Ùراتر "
-"از اجازه‌هایی است که توسّط پروانهٔ جی‌پی‌ال که آهنگ‌های گنوم را پوشش می‌دهد داده شده "
-"است. اگر این کد را دست‌کاری می‌کنید، ممکن است این استثنا را به نگارش خودتان از کد "
-"گسترش دهید، ولی تعهّدی برای این کار ندارید. اگر نمی‌خواهید چنین کنید، این عبارت "
-"استثنا را از نگارشتان حذ٠کنید."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "پخش"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_پخش"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "اÙزودن به آوازهای _محبوب"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_اÙزودن به سیاههٔ پخش…"
@@ -199,133 +135,133 @@ msgstr "_اÙزودن به سیاههٔ پخش…"
msgid "Last.fm Account"
msgstr "حساب لست.اÙ‌ام"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "گزارش گوش دادن به آهنگ"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "میان‌برهای _صÙحه‌کلید"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_راهنما"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_دربارهٔ آهنگ‌ها"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "به آهنگ‌ها خوش آمدید"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Ùهرست"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "گزینش"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_لغو"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "جست‌وجو"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "برگشت"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "عمومی"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "بستن پنجره"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "جست‌وجو"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "راهنما"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "میان‌برها"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "پخش"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "پخش/مکث"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "آهنگ بعد"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "آهنگ پیشین"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "تغییر وضعیت تکرار"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "تغییر وضعیت بر زدن"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "ناوبری"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "رÙتن به آلبوم‌ها"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "رÙتن به هنرمندان"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "رÙتن به آهنگ‌ها"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "رÙتن به سیاهه‌های پخش"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "بازگشت"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised recommendations "
"based on the music you listen to."
@@ -333,87 +269,79 @@ msgstr ""
"لست.اÙ‌ام یک خدت کش٠آهنگ است Ú©Ù‡ به شما پیشنهادهایی شخصی‌شده بر اساس آهنگ‌هایی Ú©Ù‡ "
"گوش می‌کنید می‌دهد."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "گزارش آهنگ برپا نشده"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "برای گزارش گوش کردنتان به آهنگ‌ها، وارد حساب لست.اÙ‌امتان شوید."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "ورود"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "در حال بار کردن"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "پیشین"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "بعدی"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_حذÙ"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_تغییر نام…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "نام سیاههٔ پخش"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_انجام شد"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "نامی برای نخستین سیاههٔ پخشتان وارد کنید"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "ا_یجاد"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "سیاههٔ پخش جدید…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "اÙزودن"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "اÙزودن به سیاههٔ پخش"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "ا_Ùزودن"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_برگردان"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "هنرمندان"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "نمایش همه"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "آلبوم‌ها"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "آوازها"
@@ -425,44 +353,56 @@ msgstr "گزینش همه"
msgid "Select None"
msgstr "گزینش هیچ‌کدام"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "برای گزینش موارد،‌رویشان کلیک کنید"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "ا_Ùزودن به سیاههٔ پخش"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "اÙزودن به سیاههٔ پخش…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_برداشتن از سیاههٔ پخش"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "پروژهٔ گنوم"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "برداشتن از سیاههٔ پخش"
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr "دانیال بهزادی <dani.behzi@ubuntu.com>"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "حق‌رونوشت توسعه‌دهندگان آهنگ‌های گنوم"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "بازگردانی به دست"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "بیش‌ترین پخش شده"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "هرگز پخش نشده"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "اخیراً پخش شده"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "اخیراً اضاÙÙ‡ شده"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "آوازهای محبوب"
@@ -494,27 +434,39 @@ msgid "Playing music"
msgstr "در حال پخش آهنگ"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "بر زدن"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "خاموشی بر زدن/تکرار"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "تکرار آواز"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "تکرار همه"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "خاموشی بر زدن/تکرار"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "بر زدن"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "سیاههٔ پخش {} برداشته شد"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "برگردان"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} از {} برداشته شد"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "آلبوم ناشناس"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "هنرمند ناشناس"
@@ -560,65 +512,127 @@ msgstr "آهنگ‌ها به نگارش ۳٫۰٫۰ یا بالاتر ردیاب
msgid "Playlists"
msgstr "سیاهه‌های پخش"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "نتیجه‌های هنرمندان"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "نتیجه‌های آلبوم‌ها"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} دقیقه"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "دیسک {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "{} آواز گزیده"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "گوش دادنتان به آهنگ‌ها به لست.اÙ‌ام گزارش شد."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "گوش دادنتان به آهنگ‌ها به لست.اÙ‌ام گزارش نشد."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "وارد شده به عنوان {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "پیکربندی"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "سیاههٔ پخش {} برداشته شد"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} از {} برداشته شد"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Ù…Ú©Ø«"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} آهنگ"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "جست‌وجوی آهنگ‌ها، هنرمندان و سیاهه‌های پخش"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "یک برنامه مدیریت و پخش آهنگ‌ها برای گنوم."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "پایگاه وب آهنگ‌های گنوم را ببینید"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it under "
+#~ "the terms of the GNU General Public License as published by the Free Software "
+#~ "Foundation; either version 2 of the License, or (at your option) any later "
+#~ "version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
+#~ "ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS "
+#~ "FOR A PARTICULAR PURPOSE. See the GNU General Public License for more "
+#~ "details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along with "
+#~ "GNOME Music; if not, write to the Free Software Foundation, Inc., 51 Franklin "
+#~ "Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted by "
+#~ "the GPL license by which GNOME Music is covered. If you modify this code, "
+#~ "you may extend this exception to your version of the code, but you are not "
+#~ "obligated to do so. If you do not wish to do so, delete this exception "
+#~ "statement from your version."
+#~ msgstr ""
+#~ "آهنگ‌های گنوم یک نرم‌اÙزار آزاد است؛ می‌توانید آن را با شرایط نگارش Û² یا (بنا به "
+#~ "نظرتان) هر نگارش جدیدتری از پروانهٔ جامع همگانی گنو Ú©Ù‡ بنیاد نرم‌اÙزارهای آزاد "
+#~ "منتشر کرده است،‌ تغییر داده یا بازتوزیع کنید.\n"
+#~ "\n"
+#~ "آهنگ‌های گنوم با امید کارآیی توزیع شده است، ولی بدون هر گونه ضمانتی؛ حتا ضمانت "
+#~ "ضمنی قابل Ùروش بودن یا مناسب بودن برای یک هد٠مشخّص. برای جزییات بیش‌تر، "
+#~ "پروانهٔ جامع همگانی گنو را ببینید.\n"
+#~ "\n"
+#~ "همراه آهنگ‌های گنوم باید نگارشی از پروانهٔ جامع همگانی گنو را دریاÙت کرده باشد؛ "
+#~ "در غیر این صورت با شرکت بنیاد نرم‌اÙزارهای آزاد به نشانی زیر مکاتبه کنید: "
+#~ "Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n"
+#~ "\n"
+#~ "نگارندگان آهنگ‌های گنوم در این‌جا اجازه می‌دهند پلاگین‌های GStreamer ناسازگار با "
+#~ "جی‌پی‌ال به همراه GStreamer در آهنگ‌های گنوم استÙاده Ùˆ توزیع شوند. این اجازه "
+#~ "Ùراتر از اجازه‌هایی است Ú©Ù‡ توسّط پروانهٔ جی‌پی‌ال Ú©Ù‡ آهنگ‌های گنوم را پوشش می‌دهد "
+#~ "داده شده است. اگر این کد را دست‌کاری می‌کنید، ممکن است این استثنا را به نگارش "
+#~ "خودتان از کد گسترش دهید، ولی تعهّدی برای این کار ندارید. اگر نمی‌خواهید چنین "
+#~ "کنید، این عبارت استثنا را از نگارشتان حذ٠کنید."
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "محتوای شاخهٔ آهنگ‌هایتان این‌جا ظاهر خواهد شد."
+
+#~ msgid "GNOME Music"
+#~ msgstr "آهنگ‌های گنوم"
+
+#~ msgid "Window position"
+#~ msgstr "موقعیت پنجره"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "موقعیت پنجره (x و y)."
+
+#~ msgid "Loading"
+#~ msgstr "در حال بار کردن"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "اÙزودن به سیاههٔ پخش…"
+
#~ msgid ""
-#~ "An easy way to play your music. Automatically discover music on your computer, "
-#~ "the local network and internet services."
+#~ "An easy way to play your music. Automatically discover music on your "
+#~ "computer, the local network and internet services."
#~ msgstr ""
#~ "راهی آسان برای پخش آهنگ‌هایتان. کش٠خودکار آهنگ‌های روی رایانه، شبکهٔ محلّی و "
#~ "خدمات اینترنتیتان."
@@ -627,8 +641,8 @@ msgstr[0] "{} آهنگ"
#~ "Find tracks in your local collection, get music from DLNA servers or try "
#~ "something new with the Jamendo and Magnatune services."
#~ msgstr ""
-#~ "یاÙتن قطعه‌ها روی گنجینهٔ محلّیتان، گرÙتن آهنگ‌ها از کارسازهای DLNA یا آزمودن چیزی "
-#~ "جدید با خدمت‌های جمندو و ماگناتون."
+#~ "یاÙتن قطعه‌ها روی گنجینهٔ محلّیتان، گرÙتن آهنگ‌ها از کارسازهای DLNA یا آزمودن "
+#~ "چیزی جدید با خدمت‌های جمندو و ماگناتون."
#~ msgid "Inital state has been displayed"
#~ msgstr "وضعیت نخستین نمایش داده شده"
diff --git a/po/fi.po b/po/fi.po
index a36a14ee..08ce0f1b 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-08-30 11:14+0300\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-08-07 18:10+0300\n"
"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
"Language-Team: suomi <lokalisointi-lista@googlegroups.com>\n"
"Language: fi\n"
@@ -16,11 +16,13 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 3.0\n"
+"X-Generator: Poedit 3.3.2\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "Gnomen Musiikki"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Musiikki"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -39,15 +41,10 @@ msgstr ""
"Löydä kappaleet paikallisesta kokoelmastasi, käytä automaattisesti luotuja "
"soittolistoja tai valikoi itse parhaat kappaleet soittolistalle."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "Gnomen musiikkisoittimen kehittäjät"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Musiikki"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Musiikkisoitin"
@@ -66,27 +63,19 @@ msgid "Window size (width and height)."
msgstr "Ikkunan koko (leveys ja korkeus)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Ikkunan sijainti"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Ikkunan sijainti (x ja y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Suurennettu ikkuna"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Suurennetun ikkunan tila."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Toiston kertaustila"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -94,33 +83,33 @@ msgid ""
"“shuffle†(shuffle playlist, presumes repeat all)."
msgstr ""
"Arvo esittää, kerrataanko tai sekoitetaanko toistoa kokoelmaa käyttäen. "
-"Sallitut arvot ovat: \"none\" (ei kertausta tai sekoitusta), \"song"
-"\" (kertaa nykyistä kappaletta), \"all\" (kertaa soittolistaa, ei "
+"Sallitut arvot ovat: \"none\" (ei kertausta tai sekoitusta), "
+"\"song\" (kertaa nykyistä kappaletta), \"all\" (kertaa soittolistaa, ei "
"sekoitusta) ja \"shuffle\" (sekoita soittolista, kertaus kaiken suhteen)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Käytä ReplayGainia"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Ottaa käyttöön/poistaa käytöstä ReplayGainin albumeille"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Estä järjestelmän valmiustila"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Ottaa käyttöön tai poistaa käytöstä järjestelmän valmiustilaan siirtymisen "
"estämisen kun musiikkia toistetaan"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Raportoi kuunteluhistoria Last.fm:ään"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -128,58 +117,21 @@ msgstr ""
"Ottaa käyttöön tai poistaa käytöstä kuunteluhistorian ja \"Nyt toistetaan\"-"
"tietojen lähettämisen Last.fm:ään."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Tekijänoikeus © 2018 Gnomen musiikkisoittimen kehittäjät"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Gnomen musiikkisoitin."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Käy Gnomen musiikkisoittimen verkkosivustolla"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Toista"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Toista"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Lisää _suosikkikappaleisiin"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "Lisää s_oittolistalle…"
@@ -187,133 +139,133 @@ msgstr "Lisää s_oittolistalle…"
msgid "Last.fm Account"
msgstr "Last.fm-tili"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Raportoi kuunteluhistoria"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Pikanäppäimet"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Ohje"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_Tietoja - Musiikki"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Tervetuloa, tämä on Musiikki"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Valikko"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Valitse"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Peru"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Hae"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Takaisin"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Yleiset"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Sulje ikkuna"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Haku"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Ohje"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Pikanäppäimet"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Toista"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Toista/keskeytä"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Seuraava kappale"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Edellinen kappale"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Kertaus päälle/pois"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Sekoitus päälle/pois"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Liikkuminen"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Siirry albumeihin"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Siirry esittäjiin"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Siirry kappaleisiin"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Siirry soittolistoihin"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Siirry takaisin"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -321,87 +273,79 @@ msgstr ""
"Last.fm on musiikin löytämiseen tarkoitettu palvelu, joka antaa "
"henkilökohtaisia suosituksia pohjautuen kuuntelemaasi musiikkiin."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Musiikin kuunteluhistorian lähetystä ei ole määritetty"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "Kirjaudu Last.fm-tilillesi lähettääksesi musiikin kuunteluhistoriasi."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Kirjaudu"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Ladataan"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Edellinen"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Seuraava"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Poista"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Nimeä uudelleen…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Soittolistan nimi"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Valmis"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Anna nimi ensimmäiselle soittolistallesi"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "_Luo"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Uusi soittolista…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Lisää"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Lisää soittolistaan"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Lisää"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Kumoa"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Esittäjät"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Näytä kaikki"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Albumit"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Kappaleet"
@@ -413,44 +357,56 @@ msgstr "Valitse kaikki"
msgid "Select None"
msgstr "Älä valitse mitään"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Napsauta kohteita valitaksesi ne"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "Lisää _soittolistalle"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Lisää soittolistalle…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "Poista _soittolistalta"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "Gnome-projekti"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr "Jiri Grönroos"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Tekijänoikeus Gnomen musiikkisoittimen kehittäjät"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Poista soittolistalta"
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Käännös"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Eniten toistettu"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Ei koskaan toistettu"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Äskettäin toistettu"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Äskettäin lisätty"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Suosikkikappaleet"
@@ -483,27 +439,39 @@ msgid "Playing music"
msgstr "Toistetaan musiikkia"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Sekoita"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Sekoitus/kertaus pois"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Kertaa kappale"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Kertaa kaikki"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Sekoitus/kertaus pois"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Sekoita"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Soittolista {} poistettu"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Kumoa"
-#: gnomemusic/utils.py:80
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} poistettu soittolistalta {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Tuntematon albumi"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Tuntematon esittäjä"
@@ -549,67 +517,85 @@ msgstr "Musiikki tarvitsee Trackerin version 3.0.0 tai uudemman."
msgid "Playlists"
msgstr "Soittolistat"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Esittäjätulokset"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Albumitulokset"
-#: gnomemusic/widgets/albumwidget.py:237
-#| msgid "{}, {} minute"
-#| msgid_plural "{}, {} minutes"
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minuutti"
msgstr[1] "{} minuuttia"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Levy {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "{} kappale valittu"
msgstr[1] "{} kappaletta valittu"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Musiikin kuunteluhistoriasi lähetetään Last.fm:ään."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Musiikin kuunteluhistoriaasi ei lähetetä Last.fm:ään."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Kirjautuneena tilillä {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Määritä"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Soittolista {} poistettu"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} poistettu soittolistalta {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Keskeytä"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} kappale"
msgstr[1] "{} kappaletta"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Etsi kappaleita, esittäjiä, albumeita ja soittolistoja"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "Gnomen musiikkisoitin."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Käy Gnomen musiikkisoittimen verkkosivustolla"
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "Musiikki-kansion sisältö ilmestyy tähän"
+
+#~ msgid "GNOME Music"
+#~ msgstr "Gnomen Musiikki"
+
+#~ msgid "Window position"
+#~ msgstr "Ikkunan sijainti"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Ikkunan sijainti (x ja y)."
+
+#~ msgid "Loading"
+#~ msgstr "Ladataan"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Lisää soittolistalle…"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
@@ -758,9 +744,6 @@ msgstr[1] "{} kappaletta"
#~ msgid "Quit"
#~ msgstr "Lopeta"
-#~ msgid "translator-credits"
-#~ msgstr "Jiri Grönroos"
-
#~ msgid "A GNOME 3 application to listen and manage music playlists"
#~ msgstr "Gnome 3 -sovellus musiikin kuunteluun ja soittolistojen hallintaan"
diff --git a/po/fr.po b/po/fr.po
index 72229dff..e3daee10 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,5 +1,5 @@
# French translation for gnome-music.
-# Copyright (C) 2013-2020 gnome-music's COPYRIGHT HOLDER
+# Copyright (C) 2013-2022 gnome-music's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-music package.
#
# Alain Lojewski <allomervan@gmail.com>, 2013-2015.
@@ -8,26 +8,28 @@
# William Oprandi <william.oprandi@gmail.com>, 2019.
# Julien Humbert <julroy67@gmail.com>, 2020.
# vanadiae <vanadiae35@gmail.com>, 2020.
-# Charles Monzat <charles.monzat@free.fr>, 2018-2021.
+# Charles Monzat <charles.monzat@free.fr>, 2018-2022.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-08-30 22:35+0200\n"
-"Last-Translator: Charles Monzat <charles.monzat@free.fr>\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-07-04 10:30+0200\n"
+"Last-Translator: Guillaume Bernard <associations@guillaume-bernard.fr>\n"
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Gtranslator 40.0\n"
+"X-Generator: Poedit 3.3.1\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "Musique de GNOME"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Musique"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -46,15 +48,10 @@ msgstr ""
"Trouvez les pistes dans votre collection locale, utilisez des listes de "
"lecture générées automatiquement ou organisez-en une nouvelle."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "Les développeurs de l’application Musique de GNOME"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Musique"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Lecteur de musique"
@@ -73,27 +70,19 @@ msgid "Window size (width and height)."
msgstr "La taille de la fenêtre (en largeur et hauteur)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Position de la fenêtre"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "La position de la fenêtre (en x et y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Fenêtre maximisée"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "État maximisé de la fenêtre."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Mode de lecture répétition"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -106,29 +95,29 @@ msgstr ""
"actuel), « all » (rejoue toute la liste de lecture, sans mélange), "
"« shuffle » (mélange la liste de lecture, en supposant de tout rejouer)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Activer ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Active ou désactive ReplayGain pour les albums"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Inhiber la mise en veille du système"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Active ou désactive l’inhibition de la mise en veille lors de la lecture de "
"musique"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Informer Last.fm de l’historique des musiques écoutées"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -136,108 +125,21 @@ msgstr ""
"Active ou désactive l’envoi à Last.fm des morceaux écoutés (scrobbles) et de "
"l’information « en cours de lecture »."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 Développeurs de l’application Musique de GNOME"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Un lecteur de musique et une application de gestion pour GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Visiter le site Web de l’application Musique de GNOME"
-
-#: data/ui/AboutDialog.ui.in:13
-#| msgid ""
-#| "GNOME Music is free software; you can redistribute it and/or modify it "
-#| "under the terms of the GNU General Public License as published by the "
-#| "Free Software Foundation; either version 2 of the License, or (at your "
-#| "option) any later version.\n"
-#| "\n"
-#| "GNOME Music is distributed in the hope that it will be useful, but "
-#| "WITHOUT ANY WARRANTY; without even the implied warranty of "
-#| "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
-#| "Public License for more details.\n"
-#| "\n"
-#| "You should have received a copy of the GNU General Public License along "
-#| "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-#| "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-#| "\n"
-#| "The GNOME Music authors hereby grant permission for non-GPL compatible "
-#| "GStreamer plugins to be used and distributed together with GStreamer and "
-#| "GNOME Music. This permission is above and beyond the permissions granted "
-#| "by the GPL license by which GNOME Music is covered. If you modify this "
-#| "code, you may extend this exception to your version of the code, but you "
-#| "are not obligated to do so. If you do not wish to do so, delete this "
-#| "exception statement from your version.\n"
-#| "\n"
-#| "“Magic of the vinyl†by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
-#| "https://www.flickr.com/photos/_spy_/12270839403"
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"Musique de GNOME est un logiciel libre ; vous pouvez le redistribuer et/ou "
-"le modifier au titre des clauses de la Licence Publique Générale GNU, telle "
-"que publiée par la Free Software Foundation ; soit la version 2 de la "
-"Licence, ou (à votre discrétion) une version ultérieure quelconque.\n"
-"\n"
-"Musique de GNOME est distribué dans l’espoir qu’il sera utile, mais SANS "
-"AUCUNE GARANTIE ; sans même une garantie implicite de COMMERCIABILITÉ ou DE "
-"CONFORMITÉ À UNE UTILISATION PARTICULIÈRE. Voir la Licence Publique Générale "
-"GNU pour plus de détails.\n"
-"\n"
-"Vous devriez avoir reçu un exemplaire de la Licence Publique Générale GNU "
-"avec l’application Musique de GNOME ; si ce n’est pas le cas, écrivez à la "
-"Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, MA "
-"02110-1301, USA.\n"
-"\n"
-"Les auteurs de l’application Musique de GNOME accordent par la présente "
-"l’autorisation d’utiliser des greffons GStreamer non compatibles avec la "
-"licence GPL et de les distribuer conjointement à GStreamer et à "
-"l’application Musique de GNOME. Cette permission supplante et va au-delà des "
-"autorisations accordées par la licence GPL couvrant l’application Musique de "
-"GNOME. Si vous modifiez ce code, vous pouvez étendre cette autorisation à "
-"votre version du code, mais vous n’y êtes pas obligés. Si vous ne le "
-"souhaitez pas, veuillez supprimer cette mention d’exception de votre version."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Lecture"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Lire"
-#: data/ui/AlbumWidget.ui:167
-#| msgid "Favorite Songs"
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Ajouter aux morceaux _favoris"
-#: data/ui/AlbumWidget.ui:171
-#| msgid "Add to Playlist…"
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_Ajouter à la liste de lecture…"
@@ -245,133 +147,133 @@ msgstr "_Ajouter à la liste de lecture…"
msgid "Last.fm Account"
msgstr "Compte Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Informer Last.fm des morceaux écoutés"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Raccourcis clavier"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "Aid_e"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "À _propos de Musique"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Bienvenue dans Musique"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Menu"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Sélectionner"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "A_nnuler"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Rechercher"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Retour"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Général"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Fermer la fenêtre"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Recherche"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Aide"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Raccourcis"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Lecture"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Lecture/Pause"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Morceau suivant"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Morceau précédent"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Basculer la répétition"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Basculer la lecture aléatoire"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navigation"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Aller aux albums"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Aller aux artistes"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Aller aux morceaux"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Aller aux listes de lecture"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Revenir en arrière"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -379,89 +281,81 @@ msgstr ""
"Last.fm est un service de découverte musicale qui vous donne des "
"recommandations personnalisées en fonction de la musique que vous écoutez."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Envoi de la musique non configuré"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"Connectez-vous à votre compte Last.fm pour envoyer la musique que vous "
"écoutez."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Se connecter"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Chargement en cours"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Précédent"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Suivant"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Supprimer"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Renommer…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Nom de la liste de lecture"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Terminé"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Saisissez un nom pour la première liste de lecture"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "C_réer"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Nouvelle liste de lecture…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Ajouter"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Ajouter à la liste de lecture"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Ajouter"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "Ann_uler"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Artistes"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Tout afficher"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Albums"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Morceaux"
@@ -473,44 +367,63 @@ msgstr "Tout sélectionner"
msgid "Select None"
msgstr "Ne rien sélectionner"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Cliquez sur les éléments pour les sélectionner"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Ajouter à la liste de lecture"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Ajouter à la liste de lecture…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Supprimer de la liste de lecture"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Supprimer de la liste de lecture"
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "Le projet GNOME"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr ""
+"Alain Lojewski <allomervan@gmail.com>\n"
+"Erwan Georget <dremor@dremor.info>\n"
+"Guillaume Bernard <associations@guillaume-bernard.fr>\n"
+"William Oprandi <william.oprandi@gmail.com>\n"
+"Julien Humbert <julroy67@gmail.com>\n"
+"vanadiae <vanadiae35@gmail.com>\n"
+"Charles Monzat <charles.monzat@free.fr>"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Copyright Développeurs de l’application Musique de GNOME"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Traduit par"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Les plus joués"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Jamais joués"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Joués récemment"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Ajoutés récemment"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Morceaux favoris"
@@ -544,27 +457,39 @@ msgid "Playing music"
msgstr "Lecture de musique en cours"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Mélanger"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Désactiver mélanger/répéter"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Répéter le morceau"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Tout répéter"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Désactiver mélanger/répéter"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Mélanger"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Liste de lecture {} supprimée"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Annuler"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} supprimé de {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Album inconnu"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Artiste inconnu"
@@ -573,7 +498,6 @@ msgid "Your XDG Music directory is not set."
msgstr "Votre répertoire de musique XDG n’est pas défini."
#: gnomemusic/views/emptyview.py:72
-#| msgid "Music folder"
msgid "Music Folder"
msgstr "Dossier de musique"
@@ -584,33 +508,27 @@ msgid "The contents of your {} will appear here."
msgstr "Le contenu de votre {} s’affichera ici."
#: gnomemusic/views/emptyview.py:124
-#| msgid "No music found"
msgid "No Music Found"
msgstr "Aucune musique trouvée"
#: gnomemusic/views/emptyview.py:125
-#| msgid "Try a different search"
msgid "Try a Different Search"
msgstr "Essayez une recherche différente"
#: gnomemusic/views/emptyview.py:129
-#| msgid "GNOME Music could not connect to Tracker"
msgid "GNOME Music could not connect to Tracker."
msgstr "Musique de GNOME ne peut pas se connecter à Tracker."
#: gnomemusic/views/emptyview.py:131
-#| msgid "Your music files cannot be indexed without Tracker running"
msgid "Your music files cannot be indexed without Tracker running."
msgstr ""
"Vos musiques ne peuvent pas être indexées si Tracker ne fonctionne pas."
#: gnomemusic/views/emptyview.py:137
-#| msgid "Your system Tracker version seems outdated"
msgid "Your system Tracker version seems outdated."
msgstr "Votre version de Tracker semble obsolète."
#: gnomemusic/views/emptyview.py:139
-#| msgid "Music needs Tracker version 3.0.0 or higher"
msgid "Music needs Tracker version 3.0.0 or higher."
msgstr "Musique nécessite Tracker version 3.0.0 ou ultérieure."
@@ -618,65 +536,71 @@ msgstr "Musique nécessite Tracker version 3.0.0 ou ultérieure."
msgid "Playlists"
msgstr "Listes de lecture"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Résultats pour Artistes"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Résultats pour Albums"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minute"
msgstr[1] "{} minutes"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Disque {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "{} morceau sélectionné"
msgstr[1] "{} morceaux sélectionnés"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "La musique que vous écoutez est envoyée à Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "La musique que vous écoutez n’est pas envoyée à Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Connecté en tant que {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Configurer"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Liste de lecture {} supprimée"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} supprimé de {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Pause"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} morceau"
msgstr[1] "{} morceaux"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr ""
+"Rechercher des musiques, des artistes, des albums ou des listes de lecture"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "Un lecteur de musique et une application de gestion pour GNOME."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Visiter le site web de l’application Musique de GNOME"
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "Le contenu de votre dossier Musique s’affichera ici"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
@@ -684,20 +608,9 @@ msgstr[1] "{} morceaux"
#~ "Un moyen simple d’écouter votre musique. Découvrez automatiquement la "
#~ "musique sur votre ordinateur, le réseau local et les services Internet."
-#~ msgid ""
-#~ "Find tracks in your local collection, get music from DLNA servers or try "
-#~ "something new with the Jamendo and Magnatune services."
-#~ msgstr ""
-#~ "Trouvez les pistes dans votre collection locale, obtenez de la musique de "
-#~ "serveurs DLNA ou essayez quelque chose de nouveau avec les services "
-#~ "Jamendo et Magnatune."
-
#~ msgid "Inital state has been displayed"
#~ msgstr "L’état initial a été affiché"
-#~ msgid "Set to true when initial state has been displayed"
-#~ msgstr "Vaut « true » (vrai) si l’état initial a été affiché"
-
#~ msgid "Released"
#~ msgstr "Publié"
@@ -706,10 +619,3 @@ msgstr[1] "{} morceaux"
#~ msgid "Composer"
#~ msgstr "Compositeur"
-
-#~ msgctxt "context menu item"
-#~ msgid "Play"
-#~ msgstr "Lire"
-
-#~ msgid "Hey DJ"
-#~ msgstr "Hé DJ"
diff --git a/po/fur.po b/po/fur.po
index 0958e0ce..89e24c37 100644
--- a/po/fur.po
+++ b/po/fur.po
@@ -7,20 +7,23 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-04-29 10:20+0000\n"
-"PO-Revision-Date: 2021-07-26 07:10+0200\n"
+"POT-Creation-Date: 2022-08-27 13:27+0000\n"
+"PO-Revision-Date: 2022-10-03 09:29+0200\n"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
-"Language-Team: Friulian <fur@li.org>\n"
+"Language-Team: Friulian <f.t.public@gmail.com>\n"
"Language: fur\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 3.0\n"
+"X-Editor: HaiPO 1.2 b1\n"
+"X-Generator: Poedit 3.1.1\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME Musiche"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:236
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Musiche"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -28,30 +31,21 @@ msgid "Play and organize your music collection"
msgstr "Sune e organize le tô colezion di musichis"
#: data/org.gnome.Music.appdata.xml.in.in:9
-msgid ""
-"An easy way to play your music. Automatically discover music on your "
-"computer, the local network and internet services."
-msgstr ""
-"Une maniere semplice par riprodusi la tô musiche. Cjate in automatic la "
-"musiche sul to computer, su pe rêt locâl e sui servizis internet."
+msgid "An easy and pleasant way to play your music."
+msgstr "Une semplice e plasevule maniere par scoltâ la tô musiche."
#: data/org.gnome.Music.appdata.xml.in.in:12
msgid ""
-"Find tracks in your local collection, get music from DLNA servers or try "
-"something new with the Jamendo and Magnatune services."
+"Find tracks in your local collection, use automatically generated playlists "
+"or curate a fresh one."
msgstr ""
-"Cjate i tocs te colezion locâl, oten musiche dai servidôrs DLNA o cîr alc di "
-"gnûf cui servizis Jamendo e Magnatune."
+"Cjate i tocs inte tô colezion locâl, dopre lis listis di riproduzion "
+"gjeneradis in automatic o cure une gnove."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:167
msgid "The GNOME Music developers"
msgstr "I svilupadôrs di GNOME Musiche"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Musiche"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Letôr musicâl"
@@ -70,27 +64,19 @@ msgid "Window size (width and height)."
msgstr "Dimension barcon (largjece e altece)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Posizion barcon"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Posizion barcon (x e y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Barcon slargjât"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Stât barcon slargjât."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Modalitât ripetizion"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -103,37 +89,29 @@ msgstr ""
"cjançons, cence messedâ), “shuffle†(messedâ l'ordin de liste des cjançons, "
"si intint ancje ripeti dutis)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Abilite ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Abilite o disabilite ReplayGain pai album"
-#: data/org.gnome.Music.gschema.xml:38
-msgid "Inital state has been displayed"
-msgstr "Il stât iniziâl al è stât mostrât"
-
-#: data/org.gnome.Music.gschema.xml:39
-msgid "Set to true when initial state has been displayed"
-msgstr "Imposte a vêr cuant che il stât iniziâl al è stât mostrât"
-
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Inibìs la sospension dal sisteme"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Abilite o disabilite la inibizion a sospindi il sisteme intant che si scolte "
"la musiche"
-#: data/org.gnome.Music.gschema.xml:48
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Invie la cronologjie de musiche a Last.fm"
-#: data/org.gnome.Music.gschema.xml:49
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -141,210 +119,155 @@ msgstr ""
"Al abilite o al disabilite l'inviâ i tiei gjenars di musiche preferide e lis "
"informazions ce che tu stâs scoltant a Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 Svilupadôrs di GNOME Musiche"
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
+msgid "Play"
+msgstr "Sune"
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Une aplicazion GNOME par sunâ e ministrâ le proprie musiche."
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
+msgid "_Play"
+msgstr "_Sune"
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Visite il sît di GNOME Musiche"
+#: data/ui/AlbumWidget.ui:134
+msgid "Add to _Favorite Songs"
+msgstr "Zonte ai _tocs preferîts"
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version.\n"
-"\n"
-"“Magic of the vinyl†by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
-"https://www.flickr.com/photos/_spy_/12270839403"
-msgstr ""
-"GNOME Musiche al è software libar; al è pussibil tornâ a distribuîlu o "
-"modificâlu sot i tiermins de licence GNU General Public License, come "
-"publicade de Free Software Foundation, version 2 o (a tô sielte) cualsisei "
-"sucessive.\n"
-"\n"
-"GNOME Musiche al è distribuît inte sperance che al sedi util, ma CENCE "
-"NISSUNE GARANZIE, cence nancje la implicite garanzie di CUMIERÇABILITÂT o "
-"IDONEITÂT A UNE FINALITÂT PARTICOLÂR. Consultâ la licence GNU General "
-"Public License par vê plui detais.\n"
-"\n"
-"Cun GNOME Musiche ti varessin di vê dât ancje une copie de licence GNU "
-"General Public License, in câs contrari al è pussibil domandâle scrivint a: "
-"Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA "
-"02110-1301 USA.\n"
-"\n"
-"Cun cheste letare i autôrs di GNOME Musiche a concedin il permès di doprâ e "
-"distribuî i plugin GStreamer, che no son compatibii cun la GPL, adun cun "
-"GStreamer e GNOME Musiche. Chest permès al è parsore e di là dal permès "
-"concedût de licence GPL che e cuvierç GNOME Musiche. Se tu modifichis chest "
-"codiç, tu puedis estindi cheste ecezion ae tô version dal codiç, ma no tu "
-"sês obleât a fâlu. Se no tu desideris fâlu, elimine cheste declarazion di "
-"ecezion de tô version.\n"
-"\n"
-"La imagjin “Magic of the vinyl†by Sami Pyylampi e je in licence di CC-BY-SA "
-"2.0 https://www.flickr.com/photos/_spy_/12270839403"
-
-#: data/ui/AlbumWidget.ui:94
-msgid "Released"
-msgstr "Publicât"
-
-#: data/ui/AlbumWidget.ui:110
-msgid "Running Length"
-msgstr "Durade"
-
-#: data/ui/AlbumWidget.ui:154
-msgid "Composer"
-msgstr "Compositôr"
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
+msgid "_Add to Playlist…"
+msgstr "_Zonte ae liste di riproduzion…"
#: data/ui/AppMenu.ui:23 data/ui/LastfmDialog.ui:8
msgid "Last.fm Account"
msgstr "Account Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Invie la musiche che tu scoltis"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Scurtis di tastiere"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Jutori"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_Informazions su Musiche"
+#: data/ui/EmptyView.ui:30
+msgid "Welcome to Music"
+msgstr "Benvignûts su Musiche"
+
#: data/ui/HeaderBar.ui:16
msgid "Menu"
msgstr "Menù"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:24 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Selezione"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:30 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Anule"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:42 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Cîr"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:50
msgid "Back"
msgstr "Torne indaûr"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Gjenerâl"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Siere barcon"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Cîr"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Jutori"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Scurtis"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Riprodûs"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Sune/Pause"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Prossim toc"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Toc precedent"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Comutâ il ripeti"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Comutâ il messedâ"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navigazion"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Va ai album"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Va ai artiscj"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Va ai tocs"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Va ae liste dai tocs"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Torne indaûr"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -352,125 +275,79 @@ msgstr ""
"Last.fm al è un servizi di scuvierte de musiche che ti da conseis "
"personalizâts in base ae musiche che tu scoltis."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Segnalazion de musiche, no configurade"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "Jentre tal to account Last.fm par inviâ la musiche che tu scoltis."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Jentre"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Daûr a cjariâ"
-
-#: data/ui/PlayerToolbar.ui:6
-msgid "Shuffle"
-msgstr "Messede"
-
-#: data/ui/PlayerToolbar.ui:11
-msgid "Repeat All"
-msgstr "Ripet dut"
-
-#: data/ui/PlayerToolbar.ui:16
-msgid "Repeat Song"
-msgstr "Ripet cjançon"
-
-#. Causes tracks to play in random order
-#: data/ui/PlayerToolbar.ui:21
-msgid "Shuffle/Repeat Off"
-msgstr "Messede/ripet studâts"
-
-#: data/ui/PlayerToolbar.ui:69
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Precedent"
-#: data/ui/PlayerToolbar.ui:82 gnomemusic/widgets/playertoolbar.py:146
-msgid "Play"
-msgstr "Sune"
-
-#: data/ui/PlayerToolbar.ui:95
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Prossim"
-#: data/ui/PlaylistContextMenu.ui:5
-msgctxt "context menu item"
-msgid "Play"
-msgstr "Riprodûs"
-
-#: data/ui/PlaylistContextMenu.ui:9
-msgid "Add to Playlist…"
-msgstr "Zonte te liste des musichis…"
-
-#: data/ui/PlaylistContextMenu.ui:13
-msgid "Remove From Playlist"
-msgstr "Gjave de liste des musichis"
-
-#: data/ui/PlaylistControls.ui:6
-msgid "_Play"
-msgstr "_Sune"
-
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Scancele"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Cambie non…"
-#: data/ui/PlaylistControls.ui:41
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Non de liste des musichis"
-#: data/ui/PlaylistControls.ui:73
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Fat"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Scrîf un non pe tô prime liste di riproduzion"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "C_ree"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Gnove liste di musichis…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Zonte"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Zonte ae liste des musichis"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Zonte"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "A_nule"
-
-#: data/ui/SearchView.ui:43 gnomemusic/views/artistsview.py:43
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Artiscj"
-#: data/ui/SearchView.ui:53 data/ui/SearchView.ui:106
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Visualize dut"
-#: data/ui/SearchView.ui:96 gnomemusic/views/albumsview.py:47
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Album"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:44
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Cjancçons"
@@ -482,26 +359,46 @@ msgstr "Selezione dut"
msgid "Select None"
msgstr "Selezione nuie"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Cliche sui elements par selezionaju"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Zonte ae liste des musichis"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Gjave de liste des musichis"
+
+#: gnomemusic/about.py:238
+msgid "The GNOME Project"
+msgstr "Il progjet GNOME"
+
+#: gnomemusic/about.py:242
+msgid "translator-credits"
+msgstr "Fabio Tomat <f.t.public@gmail.com>, 2022"
+
+#: gnomemusic/about.py:246
+msgid "Copyright The GNOME Music Developers"
+msgstr "Copyright i svilupadôrs di GNOME Musiche"
+
+#: gnomemusic/about.py:249
+msgid "Translated by"
+msgstr "Tradot di"
+
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:897
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Plui scoltats"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:950
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Mai scoltât"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1002
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Scoltât di recent"
@@ -511,29 +408,29 @@ msgid "Recently Added"
msgstr "Zontât di recent"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1126
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Tocs preferîts"
-#: gnomemusic/gstplayer.py:397
+#: gnomemusic/gstplayer.py:408
msgid "Unable to play the file"
msgstr "Impussibil riprodusi il file"
-#: gnomemusic/gstplayer.py:403
+#: gnomemusic/gstplayer.py:414
msgid "_Find in {}"
msgstr "_Cjate in {}"
#. TRANSLATORS: separator for two codecs
-#: gnomemusic/gstplayer.py:413
+#: gnomemusic/gstplayer.py:424
msgid " and "
msgstr " e "
#. TRANSLATORS: separator for a list of codecs
-#: gnomemusic/gstplayer.py:416
+#: gnomemusic/gstplayer.py:427
msgid ", "
msgstr ", "
-#: gnomemusic/gstplayer.py:418
+#: gnomemusic/gstplayer.py:429
msgid "{} is required to play the file, but is not installed."
msgid_plural "{} are required to play the file, but are not installed."
msgstr[0] "Al covente {} par riprodusi il file, ma nol è instalât."
@@ -543,124 +440,249 @@ msgstr[1] "A coventin {} par riprodusi il file, ma no son instalâts."
msgid "Playing music"
msgstr "Riproduzion musiche"
-#: gnomemusic/utils.py:79
+#. Translators: "shuffle" causes tracks to play in random order.
+#: gnomemusic/player.py:44
+msgid "Shuffle"
+msgstr "Messede"
+
+#: gnomemusic/player.py:45
+msgid "Repeat Song"
+msgstr "Ripet cjançon"
+
+#: gnomemusic/player.py:46
+msgid "Repeat All"
+msgstr "Ripet dut"
+
+#: gnomemusic/player.py:47
+msgid "Shuffle/Repeat Off"
+msgstr "Messede/ripet studâts"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Liste di musichis {} gjavade"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Anule"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} gjavât di {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Album no cognossût"
-#: gnomemusic/utils.py:100
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Artist no cognossût"
-#: gnomemusic/views/emptyview.py:67
+#: gnomemusic/views/emptyview.py:65
msgid "Your XDG Music directory is not set."
msgstr "La tô cartele XDG di Musiche no je stabilide."
-# minuscul parce che al ven fûr la prime volte che si invie il program e il test al è tal mieç di une frase:
+# minuscul parce che al ven fûr la prime volte che si invie il program e il
+# test al è tal mieç di une frase:
# Il contignût de tô cartele di musiche...
-#: gnomemusic/views/emptyview.py:74
+#: gnomemusic/views/emptyview.py:72
msgid "Music Folder"
msgstr "cartele de musiche"
# %s o ai viodût che al ven fûr "cartele di musiche"
#. TRANSLATORS: This is a label to display a link to open user's music
#. folder. {} will be replaced with the translated text 'Music folder'
-#: gnomemusic/views/emptyview.py:78
+#: gnomemusic/views/emptyview.py:76
msgid "The contents of your {} will appear here."
msgstr "Il contignût de tô {} al vignarà mostrât achì."
-#: gnomemusic/views/emptyview.py:112
-msgid "Hey DJ"
-msgstr "Hey DJ"
-
-#: gnomemusic/views/emptyview.py:121 gnomemusic/views/emptyview.py:126
+#: gnomemusic/views/emptyview.py:124
msgid "No Music Found"
msgstr "Nissune musiche cjatade"
-#: gnomemusic/views/emptyview.py:128
+#: gnomemusic/views/emptyview.py:125
msgid "Try a Different Search"
msgstr "Prove une ricercje diferente"
-#: gnomemusic/views/emptyview.py:133
+#: gnomemusic/views/emptyview.py:129
msgid "GNOME Music could not connect to Tracker."
msgstr "GNOME Musiche nol è rivât a conetisi al Tracker."
-#: gnomemusic/views/emptyview.py:136
+#: gnomemusic/views/emptyview.py:131
msgid "Your music files cannot be indexed without Tracker running."
msgstr ""
"I tiei files di musiche no puedin jessi metûts in tabele cence vê in "
"esecuzion Tracker."
-#: gnomemusic/views/emptyview.py:143
+#: gnomemusic/views/emptyview.py:137
msgid "Your system Tracker version seems outdated."
msgstr "La version di Tracker dal to sisteme e somee sorpassade."
-#: gnomemusic/views/emptyview.py:146
+#: gnomemusic/views/emptyview.py:139
msgid "Music needs Tracker version 3.0.0 or higher."
msgstr "Musiche al à bisugne de version 3.0.0 (o plui resinte) di Tracker."
-#: gnomemusic/views/playlistsview.py:41
+#: gnomemusic/views/playlistsview.py:45
msgid "Playlists"
msgstr "Listis di musichis"
-#: gnomemusic/views/searchview.py:386
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Risultâts artiscj"
-#: gnomemusic/views/searchview.py:401
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Risultâts album"
-#: gnomemusic/widgets/albumwidget.py:154
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minût"
msgstr[1] "{} minûts"
-#: gnomemusic/widgets/disclistboxwidget.py:60
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Disc {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "Selezionât {} cjançon"
msgstr[1] "Selezionâts {} cjançons"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "La musiche che tu scoltis e ven segnalade a Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "La musiche che tu scoltis no ven inviade a Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Jentrât come {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Configure"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Liste di musichis {} gjavade"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} gjavât di {}"
-
-#: gnomemusic/widgets/playertoolbar.py:143
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Pause"
-#: gnomemusic/widgets/playlistcontrols.py:127
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} Cjançon"
msgstr[1] "{} Cjançons"
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "Une aplicazion GNOME par sunâ e ministrâ le proprie musiche."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Visite il sît di GNOME Musiche"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "GNOME Musiche al è software libar; al è pussibil tornâ a distribuîlu o "
+#~ "modificâlu sot i tiermins de licence GNU General Public License, come "
+#~ "publicade de Free Software Foundation, version 2 o (a tô sielte) "
+#~ "cualsisei sucessive.\n"
+#~ "\n"
+#~ "GNOME Musiche al è distribuît inte sperance che al sedi util, ma CENCE "
+#~ "NISSUNE GARANZIE, cence nancje la implicite garanzie di CUMIERÇABILITÂT o "
+#~ "IDONEITÂT A UNE FINALITÂT PARTICOLÂR. Consultâ la licence GNU General "
+#~ "Public License par vê plui detais.\n"
+#~ "\n"
+#~ "Cun GNOME Musiche ti varessin di vê dât ancje une copie de licence GNU "
+#~ "General Public License, in câs contrari al è pussibil domandâle scrivint "
+#~ "a: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, "
+#~ "Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "Cun cheste letare i autôrs di GNOME Musiche a concedin il permès di doprâ "
+#~ "e distribuî i plugin GStreamer, che no son compatibii cun la GPL, adun "
+#~ "cun GStreamer e GNOME Musiche. Chest permès al è parsore e di là dal "
+#~ "permès concedût de licence GPL che e cuvierç GNOME Musiche. Se tu "
+#~ "modifichis chest codiç, tu puedis estindi cheste ecezion ae tô version "
+#~ "dal codiç, ma no tu sês obleât a fâlu. Se no tu desideris fâlu, elimine "
+#~ "cheste declarazion di ecezion de tô version."
+
+# %s o ai viodût che al ven fûr "cartele di musiche"
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "Il contignût de tô cartele Musiche al vignarà mostrât achì"
+
+#~ msgid "GNOME Music"
+#~ msgstr "GNOME Musiche"
+
+#~ msgid "Window position"
+#~ msgstr "Posizion barcon"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Posizion barcon (x e y)."
+
+#~ msgid "Loading"
+#~ msgstr "Daûr a cjariâ"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Zonte te liste des musichis…"
+
+#~ msgid ""
+#~ "An easy way to play your music. Automatically discover music on your "
+#~ "computer, the local network and internet services."
+#~ msgstr ""
+#~ "Une maniere semplice par riprodusi la tô musiche. Cjate in automatic la "
+#~ "musiche sul to computer, su pe rêt locâl e sui servizis internet."
+
+#~ msgid ""
+#~ "Find tracks in your local collection, get music from DLNA servers or try "
+#~ "something new with the Jamendo and Magnatune services."
+#~ msgstr ""
+#~ "Cjate i tocs te colezion locâl, oten musiche dai servidôrs DLNA o cîr alc "
+#~ "di gnûf cui servizis Jamendo e Magnatune."
+
+#~ msgid "Inital state has been displayed"
+#~ msgstr "Il stât iniziâl al è stât mostrât"
+
+#~ msgid "Set to true when initial state has been displayed"
+#~ msgstr "Imposte a vêr cuant che il stât iniziâl al è stât mostrât"
+
+#~ msgid "Released"
+#~ msgstr "Publicât"
+
+#~ msgid "Running Length"
+#~ msgstr "Durade"
+
+#~ msgid "Composer"
+#~ msgstr "Compositôr"
+
+#~ msgctxt "context menu item"
+#~ msgid "Play"
+#~ msgstr "Riprodûs"
+
+#~ msgid "Hey DJ"
+#~ msgstr "Hey DJ"
+
#~ msgid "All"
#~ msgstr "Dut"
diff --git a/po/fy.po b/po/fy.po
index 28a2e5fc..4a11bf60 100644
--- a/po/fy.po
+++ b/po/fy.po
@@ -1,661 +1,622 @@
-# Frisian translation for gnome-music.
-# Copyright (C) 2021 gnome-music's COPYRIGHT HOLDER
-# This file is distributed under the same license as the gnome-music package.
-# vancha <tjipke@tutanota.com>, 2021.
-# Tjipke van der Heide <tjipke@tutanota.com>, 2021.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: gnome-music master\n"
-"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-08-31 16:25+0200\n"
-"Last-Translator: Tjipke van der Heide <tjipke@tutanota.com>\n"
-"Language-Team: Western Frisian <tjipke@tutanota.com>\n"
-"Language: fy\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-"X-Generator: Gtranslator 40.0\n"
-"X-DL-Team: fy\n"
-"X-DL-Module: gnome-music\n"
-"X-DL-Branch: master\n"
-"X-DL-Domain: po\n"
-"X-DL-State: Translating\n"
-
-#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME Music"
-
-#: data/org.gnome.Music.appdata.xml.in.in:7
-#: data/org.gnome.Music.desktop.in.in:5
-msgid "Play and organize your music collection"
-msgstr "Spylje jo muzyk samling ôf en organisearje it"
-
-#: data/org.gnome.Music.appdata.xml.in.in:9
-msgid "An easy and pleasant way to play your music."
-msgstr "In maklik en noflik te brûken wize om jo muzyk ôf te spiljen."
-
-#: data/org.gnome.Music.appdata.xml.in.in:12
-msgid ""
-"Find tracks in your local collection, use automatically generated playlists "
-"or curate a fresh one."
-msgstr ""
-"Fynt ferskes yn jo lokale samling, brûk automatysk oanmakke ôfspyllistten as "
-"meitsje sels jo eigen."
-
-#: data/org.gnome.Music.appdata.xml.in.in:140
-msgid "The GNOME Music developers"
-msgstr "De GNOME Music ûntwikkelders"
-
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Music"
-
-#: data/org.gnome.Music.desktop.in.in:4
-msgid "Music Player"
-msgstr "Muzyk Spiler"
-
-#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
-#: data/org.gnome.Music.desktop.in.in:13
-msgid "Music;Player;"
-msgstr "Muzyk;Spiler;"
-
-#: data/org.gnome.Music.gschema.xml:12
-msgid "Window size"
-msgstr "Finster grutte"
-
-#: data/org.gnome.Music.gschema.xml:13
-msgid "Window size (width and height)."
-msgstr "Finster grutte (breedte en hichte)."
-
-#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Finster posysje"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Finster posysje (x en y)."
-
-#: data/org.gnome.Music.gschema.xml:22
-msgid "Window maximized"
-msgstr "Finster maksimalisearre"
-
-#: data/org.gnome.Music.gschema.xml:23
-msgid "Window maximized state."
-msgstr "Finster maksimalisearje"
-
-#: data/org.gnome.Music.gschema.xml:27
-msgid "Playback repeat mode"
-msgstr "Opnij ôfspilje modus"
-
-#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
-msgid ""
-"Value identifies whether to repeat or randomize playback through the "
-"collection. Allowed values are: “none†(repeat and shuffle are off), "
-"“song†(repeat current song), “all†(repeat playlist, no shuffle), "
-"“shuffle†(shuffle playlist, presumes repeat all)."
-msgstr ""
-"Wearde jout oan as de samling opnij ôfspile of mingt wurde moat. Jildiche "
-"weardes binne: “gjin†(opnij ôfspyljen en mingen binne útskeakele), "
-"“ferske†(aktuele ferske opnij ôfspylje),“Alles†(ôfspyllist opnij ofspylje, "
-"net minge), “minge†(ôfspyllist minge, giet der fan út dat alles opnij "
-"ôfspile wurd)"
-
-#: data/org.gnome.Music.gschema.xml:33
-msgid "Enable ReplayGain"
-msgstr "ReplayGain Ynskeakelje"
-
-#: data/org.gnome.Music.gschema.xml:34
-msgid "Enables or disables ReplayGain for albums"
-msgstr "Skeakelt ReplayGain foar albums of út"
-
-#: data/org.gnome.Music.gschema.xml:38
-msgid "Inhibit system suspend"
-msgstr "Foarkomme dat de kompûter yn skoftmodus giet"
-
-#: data/org.gnome.Music.gschema.xml:39
-msgid "Enables or disables inhibiting system suspend while playing music"
-msgstr ""
-"Skeakelt it foarkommen fan dat it systeem yn de skoft stân giet yn of út."
-
-#: data/org.gnome.Music.gschema.xml:43
-msgid "Report music history to Last.fm"
-msgstr "Muzyk skiednis nei Last.fm ferstjoere"
-
-#: data/org.gnome.Music.gschema.xml:44
-msgid ""
-"Enables or disables sending scrobbles and the “currently playing†info to "
-"Last.fm."
-msgstr ""
-"Skeakelt it ferstjoeren fan \"scrobbles\" en \"No oan it ôfspyljen\" "
-"ynformaasje nei Last.fm yn of út."
-
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 GNOME Music Ûntwikkelders"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "In muzykspiler en behear applikaasje foar GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "De GNOME Music website besykje"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"GNOME Music is frije software; jo meie it fierder stjoere en/of oanpasse "
-"ûnder de betingsten fan de GNU General Public License sa as útjûn troch de "
-"Free Software Foundation; Ferzje 2 fan de lisinsje, of as jo dat wolle, elke "
-"nijere ferzje."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
-msgid "Play"
-msgstr "Ôfspylje"
-
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
-msgid "_Play"
-msgstr "Ôfs_Pylje"
-
-#: data/ui/AlbumWidget.ui:167
-#| msgid "Favorite Songs"
-msgid "Add to _Favorite Songs"
-msgstr "Oan _Favoryte Ferskes Tafoegje"
-
-#: data/ui/AlbumWidget.ui:171
-#| msgid "Add to Playlist…"
-msgid "_Add to Playlist…"
-msgstr "o_An Ôfspyllist tafoegje…"
-
-#: data/ui/AppMenu.ui:23 data/ui/LastfmDialog.ui:8
-msgid "Last.fm Account"
-msgstr "Last.fm Account"
-
-#: data/ui/AppMenu.ui:38
-msgid "Report Music Listening"
-msgstr "Muzyk lústerjen Opstjoere"
-
-#: data/ui/AppMenu.ui:63
-msgid "_Keyboard Shortcuts"
-msgstr "Toetseboerd _Koartkaaien"
-
-#: data/ui/AppMenu.ui:74
-msgid "_Help"
-msgstr "_Help"
-
-#: data/ui/AppMenu.ui:85
-msgid "_About Music"
-msgstr "Oange_Ande Music"
-
-#: data/ui/EmptyView.ui:35
-msgid "Welcome to Music"
-msgstr "Wolkom by Music"
-
-#: data/ui/HeaderBar.ui:16
-msgid "Menu"
-msgstr "Menu"
-
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
-msgid "Select"
-msgstr "Selektearje"
-
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
-msgid "_Cancel"
-msgstr "_Ofbrekke"
-
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
-msgid "Search"
-msgstr "Sykje"
-
-#: data/ui/HeaderBar.ui:102
-msgid "Back"
-msgstr "Werom"
-
-#: data/ui/help-overlay.ui:13
-msgctxt "shortcut window"
-msgid "General"
-msgstr "Algemien"
-
-#: data/ui/help-overlay.ui:17
-msgctxt "shortcut window"
-msgid "Close window"
-msgstr "Finster slúte"
-
-#: data/ui/help-overlay.ui:24
-msgctxt "shortcut window"
-msgid "Search"
-msgstr "Sykje"
-
-#: data/ui/help-overlay.ui:31
-msgctxt "shortcut window"
-msgid "Help"
-msgstr "Help"
-
-#: data/ui/help-overlay.ui:38
-msgctxt "shortcut window"
-msgid "Shortcuts"
-msgstr "Koartkaaien"
-
-#: data/ui/help-overlay.ui:47
-msgctxt "shortcut window"
-msgid "Playback"
-msgstr "Ôfspylje"
-
-#: data/ui/help-overlay.ui:51
-msgctxt "shortcut window"
-msgid "Play/Pause"
-msgstr "Ôfspylje/Skoftsje"
-
-#: data/ui/help-overlay.ui:58
-msgctxt "shortcut window"
-msgid "Next song"
-msgstr "Folgende ferske"
-
-#: data/ui/help-overlay.ui:65
-msgctxt "shortcut window"
-msgid "Previous song"
-msgstr "Foarige ferske"
-
-#: data/ui/help-overlay.ui:72
-msgctxt "shortcut window"
-msgid "Toggle repeat"
-msgstr "Opnij ôfspylje oan as út sette"
-
-#: data/ui/help-overlay.ui:79
-msgctxt "shortcut window"
-msgid "Toggle shuffle"
-msgstr "Minge oan as út sette"
-
-#: data/ui/help-overlay.ui:88
-msgctxt "shortcut window"
-msgid "Navigation"
-msgstr "Navigaasje"
-
-#: data/ui/help-overlay.ui:92
-msgctxt "shortcut window"
-msgid "Go to Albums"
-msgstr "Gean nei Albums"
-
-#: data/ui/help-overlay.ui:99
-msgctxt "shortcut window"
-msgid "Go to Artists"
-msgstr "Gean nei Artysten"
-
-#: data/ui/help-overlay.ui:106
-msgctxt "shortcut window"
-msgid "Go to Songs"
-msgstr "Gean nei Ferskes"
-
-#: data/ui/help-overlay.ui:113
-msgctxt "shortcut window"
-msgid "Go to Playlists"
-msgstr "Gean nei Ôfspyllisten"
-
-#: data/ui/help-overlay.ui:120
-msgctxt "shortcut window"
-msgid "Go back"
-msgstr "Gean werom"
-
-#: data/ui/LastfmDialog.ui:24
-msgid ""
-"Last.fm is a music discovery service that gives you personalised "
-"recommendations based on the music you listen to."
-msgstr ""
-"Last.fm is in muzyk ûntdekkings tsjinst dy jo persoanlike rekommendaasjes "
-"jout oan de hân fan de muzyk wer jo nei lústerje."
-
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
-msgid "Music Reporting Not Setup"
-msgstr "Muzyk Opstjoere Net Ynsteld"
-
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
-msgid "Login to your Last.fm account to report your music listening."
-msgstr ""
-"Log yn op jo Last.fm account om de muzyk wêr jo nei lústerje op te stjoeren."
-
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
-msgid "Login"
-msgstr "Ynlogge"
-
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Laden"
-
-#: data/ui/PlayerToolbar.ui:105
-msgid "Previous"
-msgstr "Foarige"
-
-#: data/ui/PlayerToolbar.ui:139
-msgid "Next"
-msgstr "Folgjende"
-
-#: data/ui/PlaylistControls.ui:10
-msgid "_Delete"
-msgstr "_Fuortsmite"
-
-#: data/ui/PlaylistControls.ui:14
-msgid "_Rename…"
-msgstr "_Werneame…"
-
-#: data/ui/PlaylistControls.ui:44
-msgid "Playlist Name"
-msgstr "Namme fan de Ôfspyllist"
-
-#: data/ui/PlaylistControls.ui:77
-msgid "_Done"
-msgstr "_Dien"
-
-#: data/ui/PlaylistDialog.ui:66
-msgid "Enter a name for your first playlist"
-msgstr "In namme foar jo ôfspyllist ynfiere"
-
-#: data/ui/PlaylistDialog.ui:88
-msgid "C_reate"
-msgstr "_Oanmeitsje"
-
-#: data/ui/PlaylistDialog.ui:156
-msgid "New Playlist…"
-msgstr "Nije Ôfspyllist…"
-
-#: data/ui/PlaylistDialog.ui:167
-msgid "Add"
-msgstr "Tafoegje"
-
-#: data/ui/PlaylistDialog.ui:208
-msgid "Add to Playlist"
-msgstr "Tafoegje oan ôfspyllist"
-
-#: data/ui/PlaylistDialog.ui:224
-msgid "_Add"
-msgstr "_Tafoegje"
-
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Ungedien meitsje"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
-msgid "Artists"
-msgstr "Artysten"
-
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
-msgid "View All"
-msgstr "Alles Besjen"
-
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
-msgid "Albums"
-msgstr "Albums"
-
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
-msgid "Songs"
-msgstr "Ferskes"
-
-#: data/ui/SelectionBarMenuButton.ui:7
-msgid "Select All"
-msgstr "Alles Selektearje"
-
-#: data/ui/SelectionBarMenuButton.ui:11
-msgid "Select None"
-msgstr "Neat Selectearje"
-
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
-msgid "Click on items to select them"
-msgstr "Klik op items om se te selektearjen"
-
-#: data/ui/SelectionToolbar.ui:9
-msgid "_Add to Playlist"
-msgstr "T_Afoegje oan Ôfspyllist"
-
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Oan Ôfspyllist tafoegje…"
-
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Út Ôfspyllist wei smite"
-
-#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
-msgid "Most Played"
-msgstr "Faakst ôfspile"
-
-#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
-msgid "Never Played"
-msgstr "Nea Ôfspile"
-
-#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
-msgid "Recently Played"
-msgstr "Koartlyn Ôfspile"
-
-#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
-msgid "Recently Added"
-msgstr "Koartlyn Tafoege"
-
-#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
-msgid "Favorite Songs"
-msgstr "Favorite Ferskes"
-
-#: gnomemusic/gstplayer.py:408
-msgid "Unable to play the file"
-msgstr "Kin it bestân net ôfspylje"
-
-#: gnomemusic/gstplayer.py:414
-msgid "_Find in {}"
-msgstr "_Fine yn {}"
-
-#. TRANSLATORS: separator for two codecs
-#: gnomemusic/gstplayer.py:424
-msgid " and "
-msgstr "en"
-
-#. TRANSLATORS: separator for a list of codecs
-#: gnomemusic/gstplayer.py:427
-msgid ", "
-msgstr ","
-
-#: gnomemusic/gstplayer.py:429
-msgid "{} is required to play the file, but is not installed."
-msgid_plural "{} are required to play the file, but are not installed."
-msgstr[0] ""
-"{} is nedich om it bestân ôf te spyljen, mar it is net ynstallearre."
-msgstr[1] ""
-"{} binne nedich om it bestân ôf te spyljen, mar se binne net ynstallearre."
-
-#: gnomemusic/inhibitsuspend.py:63
-msgid "Playing music"
-msgstr "Muzyk oan it ôfspyljen"
-
-#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Minge"
-
-#: gnomemusic/player.py:46
-msgid "Repeat Song"
-msgstr "Ferske opnij ôfspylje"
-
-#: gnomemusic/player.py:47
-msgid "Repeat All"
-msgstr "Alles opnij ôfspylje"
-
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Minge/Opnij ôfspylje Út"
-
-#: gnomemusic/utils.py:80
-msgid "Unknown album"
-msgstr "Ûnbekend album"
-
-#: gnomemusic/utils.py:101
-msgid "Unknown Artist"
-msgstr "Ûnbekende Artyst"
-
-#: gnomemusic/views/emptyview.py:65
-msgid "Your XDG Music directory is not set."
-msgstr "Jo XDG Muzyk triemtafel is net ynsteld."
-
-#: gnomemusic/views/emptyview.py:72
-msgid "Music Folder"
-msgstr "Muzyk Folder"
-
-#. TRANSLATORS: This is a label to display a link to open user's music
-#. folder. {} will be replaced with the translated text 'Music folder'
-#: gnomemusic/views/emptyview.py:76
-msgid "The contents of your {} will appear here."
-msgstr "De ynhâld fan jo {} sil hjir sichtber wurde."
-
-#: gnomemusic/views/emptyview.py:124
-msgid "No Music Found"
-msgstr "Gjin Muzyk Fûn"
-
-#: gnomemusic/views/emptyview.py:125
-msgid "Try a Different Search"
-msgstr "Probearje ris om wot oars te Sykjen"
-
-#: gnomemusic/views/emptyview.py:129
-msgid "GNOME Music could not connect to Tracker."
-msgstr "GNOME Music koe net mei Tracker ferbine."
-
-#: gnomemusic/views/emptyview.py:131
-msgid "Your music files cannot be indexed without Tracker running."
-msgstr ""
-"Jo muzyk bestannen kin net yndeksearre wurde sûnder dat Tracker útfierd wurd."
-
-#: gnomemusic/views/emptyview.py:137
-msgid "Your system Tracker version seems outdated."
-msgstr "De ferzje fan Tracker op jo systeem liket ferâldere."
-
-#: gnomemusic/views/emptyview.py:139
-msgid "Music needs Tracker version 3.0.0 or higher."
-msgstr "Muzyk hat Tracker ferzje 3.0.0 of heger nedich."
-
-#: gnomemusic/views/playlistsview.py:45
-msgid "Playlists"
-msgstr "Ôfspyllisten"
-
-#: gnomemusic/views/searchview.py:420
-msgid "Artists Results"
-msgstr "Artysten Resultaten"
-
-#: gnomemusic/views/searchview.py:435
-msgid "Albums Results"
-msgstr "Albums Resultaten"
-
-#: gnomemusic/widgets/albumwidget.py:237
-msgid "{} minute"
-msgid_plural "{} minutes"
-msgstr[0] "{} minút"
-msgstr[1] "{} minuten"
-
-#: gnomemusic/widgets/disclistboxwidget.py:75
-msgid "Disc {}"
-msgstr "Skiif {}"
-
-#: gnomemusic/widgets/headerbar.py:68
-msgid "Selected {} song"
-msgid_plural "Selected {} songs"
-msgstr[0] "No {} ferske selektearre"
-msgstr[1] "No {} ferskes selektearre"
-
-#: gnomemusic/widgets/lastfmdialog.py:65
-msgid "Your music listening is reported to Last.fm."
-msgstr "De muzyk wêr jo nei lústerje wurd ferstjoerd nei Last.fm."
-
-#: gnomemusic/widgets/lastfmdialog.py:67
-msgid "Your music listening is not reported to Last.fm."
-msgstr "De muzyk wêr jo nei lústerje wurd net ferstjoerd nei Last.fm."
-
-#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
-msgid "Logged in as {}"
-msgstr "Ynlogd as {}"
-
-#: gnomemusic/widgets/lastfmdialog.py:72
-msgid "Configure"
-msgstr "Ynstelle"
-
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Ôfspyllist {} fuortsmiten"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} út {} wei smiten"
-
-#: gnomemusic/widgets/playertoolbar.py:174
-msgid "Pause"
-msgstr "Skoftsje"
-
-#: gnomemusic/widgets/playlistcontrols.py:132
-msgid "{} Song"
-msgid_plural "{} Songs"
-msgstr[0] "{} Ferske"
-msgstr[1] "{} Ferskes"
-
-#~ msgid ""
-#~ "An easy way to play your music. Automatically discover music on your "
-#~ "computer, the local network and internet services."
-#~ msgstr ""
-#~ "In maklike manier om jo muzyk ôf te spyljen. Ûntdek automatysk muzyk op "
-#~ "jo kompûter, it lokale netwurk en internet tsjinsten."
-
-#~ msgid ""
-#~ "Find tracks in your local collection, get music from DLNA servers or try "
-#~ "something new with the Jamendo and Magnatune services."
-#~ msgstr ""
-#~ "Fyn ferskes yn jo lokale samling, helje muzyk fan DLNA tsjinners of "
-#~ "probearje wot nijs mei de Jamendo en Magnatune tsjinsten."
-
-#~ msgid "Inital state has been displayed"
-#~ msgstr "Inisjele steat is sjen litten"
-
-#~ msgid "Set to true when initial state has been displayed"
-#~ msgstr "Wurd op wier set as de inisjele steat sjen litten is"
-
-#~ msgid "Released"
-#~ msgstr "Útjûn"
-
-#~ msgid "Running Length"
-#~ msgstr "Totale Lingte"
-
-#~ msgid "Composer"
-#~ msgstr "Komponist"
-
-#~ msgctxt "context menu item"
-#~ msgid "Play"
-#~ msgstr "Ôfspylje"
-
-#~ msgid "Hey DJ"
-#~ msgstr "Ah Goeie DJ"
+msgid ""
+msgstr ""
+"Project-Id-Version: gnome-music master\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
+"POT-Creation-Date: 2021-08-31 14:27+0000\n"
+"PO-Revision-Date: 2021-10-05 09:48+0000\n"
+"Last-Translator: Tjipke van der Heide <tjipke@tutanota.com>\n"
+"Language-Team: Western Frisian\n"
+"Language: fy\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Loco-Source-Locale: fy_NL\n"
+"X-Generator: Loco https://localise.biz/\n"
+"X-DL-Team: fy\n"
+"X-DL-Module: gnome-music\n"
+"X-DL-Branch: master\n"
+"X-DL-Domain: po\n"
+"X-DL-State: Translating\n"
+"\n"
+"X-Loco-Parser: loco_parse_po"
+
+#: data/org.gnome.Music.appdata.xml.in.in:6
+msgid "GNOME Music"
+msgstr "GNOME Music"
+
+#: data/org.gnome.Music.appdata.xml.in.in:7
+#: data/org.gnome.Music.desktop.in.in:5
+msgid "Play and organize your music collection"
+msgstr "Spylje jo muzyksamling ôf en organisearje it"
+
+#: data/org.gnome.Music.appdata.xml.in.in:9
+msgid "An easy and pleasant way to play your music."
+msgstr "In maklik en noflik te brûken wize om jo muzyk ôf te spyljen."
+
+#: data/org.gnome.Music.appdata.xml.in.in:12
+msgid ""
+"Find tracks in your local collection, use automatically generated playlists "
+"or curate a fresh one."
+msgstr ""
+"Fynt ferskes yn jo lokale samling, brûk automatysk oanmakke ôfspyllisten of "
+"meitsje jo eigen."
+
+#: data/org.gnome.Music.appdata.xml.in.in:140
+msgid "The GNOME Music developers"
+msgstr "De GNOME Music-ûntwikkelers"
+
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
+#: gnomemusic/window.py:71
+msgid "Music"
+msgstr "Muzyk"
+
+#: data/org.gnome.Music.desktop.in.in:4
+msgid "Music Player"
+msgstr "Muzykspiler"
+
+#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
+#: data/org.gnome.Music.desktop.in.in:13
+msgid "Music;Player;"
+msgstr "Muzyk;Spiler;"
+
+#: data/org.gnome.Music.gschema.xml:12
+msgid "Window size"
+msgstr "Finstergrutte"
+
+#: data/org.gnome.Music.gschema.xml:13
+msgid "Window size (width and height)."
+msgstr "Finstergrutte (breedte en hichte)."
+
+#: data/org.gnome.Music.gschema.xml:17
+msgid "Window position"
+msgstr "Finsterposysje"
+
+#: data/org.gnome.Music.gschema.xml:18
+msgid "Window position (x and y)."
+msgstr "Finsterposysje (x en y)."
+
+#: data/org.gnome.Music.gschema.xml:22
+msgid "Window maximized"
+msgstr "Finster maksimalisearre"
+
+#: data/org.gnome.Music.gschema.xml:23
+msgid "Window maximized state."
+msgstr "Finster maksimalisearresteat."
+
+#: data/org.gnome.Music.gschema.xml:27
+msgid "Playback repeat mode"
+msgstr "Opnij ôfspyljemodus"
+
+#. Translators: Don't translate allowed values, just the description in the brackets
+#: data/org.gnome.Music.gschema.xml:29
+msgid ""
+"Value identifies whether to repeat or randomize playback through the "
+"collection. Allowed values are: “none†(repeat and shuffle are off), “song†"
+"(repeat current song), “all†(repeat playlist, no shuffle), “shuffle†"
+"(shuffle playlist, presumes repeat all)."
+msgstr ""
+"Wearde jout oan as de samling opnij ôfspile of mingd wurde moat. Jildige "
+"wearden binne: ‘gjin’ (opnij ôfspyljen en mingen binne útskeakele), ‘ferske’ "
+"(aktuele ferske opnij ôfspylje), ‘Alles’ (ôfspyllist opnij ôfspylje, net "
+"minge), ‘minge’ (ôfspyllist minge, giet der fan út dat alles opnij ôfspile "
+"wurdt)."
+
+#: data/org.gnome.Music.gschema.xml:33
+msgid "Enable ReplayGain"
+msgstr "ReplayGain ynskeakelje"
+
+#: data/org.gnome.Music.gschema.xml:34
+msgid "Enables or disables ReplayGain for albums"
+msgstr "Skeakelet ReplayGain foar albums yn of út"
+
+#: data/org.gnome.Music.gschema.xml:38
+msgid "Inhibit system suspend"
+msgstr "Foarkomme dat de kompjûter yn skoftmodus giet"
+
+#: data/org.gnome.Music.gschema.xml:39
+msgid "Enables or disables inhibiting system suspend while playing music"
+msgstr ""
+"Skeakelet it foarkommen fan dat it systeem yn de skoftstân giet yn of út."
+
+#: data/org.gnome.Music.gschema.xml:43
+msgid "Report music history to Last.fm"
+msgstr "Muzykskiednis nei Last.fm ferstjoere"
+
+#: data/org.gnome.Music.gschema.xml:44
+msgid ""
+"Enables or disables sending scrobbles and the “currently playing†info to "
+"Last.fm."
+msgstr ""
+"Skeakelet it ferstjoeren fan \"scrobbles\" en ‘No oan it ôfspyljen’ "
+"ynformaasje nei Last.fm yn of út."
+
+#: data/ui/AboutDialog.ui.in:9
+msgid "Copyright © 2018 GNOME Music Developers"
+msgstr "Copyright © 2018 GNOME Music-ûntwikkelers"
+
+#: data/ui/AboutDialog.ui.in:10
+msgid "A music player and management application for GNOME."
+msgstr "In muzykspiler en behearapplikaasje foar GNOME."
+
+#: data/ui/AboutDialog.ui.in:12
+msgid "Visit GNOME Music website"
+msgstr "De GNOME Music-website besykje"
+
+#: data/ui/AboutDialog.ui.in:13
+msgid ""
+"GNOME Music is free software; you can redistribute it and/or modify it under "
+"the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 2 of the License, or (at your option) "
+"any later version.\n"
+"\n"
+"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details.\n"
+"\n"
+"You should have received a copy of the GNU General Public License along with "
+"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+"\n"
+"The GNOME Music authors hereby grant permission for non-GPL compatible "
+"GStreamer plugins to be used and distributed together with GStreamer and "
+"GNOME Music. This permission is above and beyond the permissions granted by "
+"the GPL license by which GNOME Music is covered. If you modify this code, "
+"you may extend this exception to your version of the code, but you are not "
+"obligated to do so. If you do not wish to do so, delete this exception "
+"statement from your version."
+msgstr ""
+"GNOME Music is frije software; jo meie it fierder distribuearje en/of "
+"oanpasse ûnder de betingsten fan de GNU General Public License sa as útjûn "
+"troch de Free Software Foundation; ferzje 2 fan de lisinsje, of as jo dat "
+"wolle, elke nijere ferzje."
+
+#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
+#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
+#: gnomemusic/widgets/playertoolbar.py:177
+msgid "Play"
+msgstr "Ofspylje"
+
+#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+msgid "_Play"
+msgstr "_Ofspylje"
+
+#: data/ui/AlbumWidget.ui:167
+msgid "Add to _Favorite Songs"
+msgstr "Oan _favorite ferskes tafoegje"
+
+#: data/ui/AlbumWidget.ui:171
+msgid "_Add to Playlist…"
+msgstr "_Oan ôfspyllist tafoegje…"
+
+#: data/ui/AppMenu.ui:23 data/ui/LastfmDialog.ui:8
+msgid "Last.fm Account"
+msgstr "Last.fm-account"
+
+#: data/ui/AppMenu.ui:38
+msgid "Report Music Listening"
+msgstr "Muzyk lústerje ferstjoere"
+
+#: data/ui/AppMenu.ui:63
+msgid "_Keyboard Shortcuts"
+msgstr "_Fluchtoetsen"
+
+#: data/ui/AppMenu.ui:74
+msgid "_Help"
+msgstr "_Help"
+
+#: data/ui/AppMenu.ui:85
+msgid "_About Music"
+msgstr "_Oer Music"
+
+#: data/ui/EmptyView.ui:35
+msgid "Welcome to Music"
+msgstr "Wolkom by Music"
+
+#: data/ui/HeaderBar.ui:16
+msgid "Menu"
+msgstr "Menu"
+
+#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+msgid "Select"
+msgstr "Selektearje"
+
+#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
+#: data/ui/SearchHeaderBar.ui:37
+msgid "_Cancel"
+msgstr "_Annulearje"
+
+#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+msgid "Search"
+msgstr "Sykje"
+
+#: data/ui/HeaderBar.ui:102
+msgid "Back"
+msgstr "Tebek"
+
+#: data/ui/help-overlay.ui:13
+msgctxt "shortcut window"
+msgid "General"
+msgstr "Algemien"
+
+#: data/ui/help-overlay.ui:17
+msgctxt "shortcut window"
+msgid "Close window"
+msgstr "Finster slute"
+
+#: data/ui/help-overlay.ui:24
+msgctxt "shortcut window"
+msgid "Search"
+msgstr "Sykje"
+
+#: data/ui/help-overlay.ui:31
+msgctxt "shortcut window"
+msgid "Help"
+msgstr "Help"
+
+#: data/ui/help-overlay.ui:38
+msgctxt "shortcut window"
+msgid "Shortcuts"
+msgstr "Fluchtoetsen"
+
+#: data/ui/help-overlay.ui:47
+msgctxt "shortcut window"
+msgid "Playback"
+msgstr "Ofspylje"
+
+#: data/ui/help-overlay.ui:51
+msgctxt "shortcut window"
+msgid "Play/Pause"
+msgstr "Ofspylje/Skoft"
+
+#: data/ui/help-overlay.ui:58
+msgctxt "shortcut window"
+msgid "Next song"
+msgstr "Folgjende ferske"
+
+#: data/ui/help-overlay.ui:65
+msgctxt "shortcut window"
+msgid "Previous song"
+msgstr "Foarige ferske"
+
+#: data/ui/help-overlay.ui:72
+msgctxt "shortcut window"
+msgid "Toggle repeat"
+msgstr "Opnij ôfspylje yn- of útskeakelje"
+
+#: data/ui/help-overlay.ui:79
+msgctxt "shortcut window"
+msgid "Toggle shuffle"
+msgstr "Minge yn- of útskeakelje"
+
+#: data/ui/help-overlay.ui:88
+msgctxt "shortcut window"
+msgid "Navigation"
+msgstr "Navigaasje"
+
+#: data/ui/help-overlay.ui:92
+msgctxt "shortcut window"
+msgid "Go to Albums"
+msgstr "Gean nei Albums"
+
+#: data/ui/help-overlay.ui:99
+msgctxt "shortcut window"
+msgid "Go to Artists"
+msgstr "Gean nei Artysten"
+
+#: data/ui/help-overlay.ui:106
+msgctxt "shortcut window"
+msgid "Go to Songs"
+msgstr "Gean nei Ferskes"
+
+#: data/ui/help-overlay.ui:113
+msgctxt "shortcut window"
+msgid "Go to Playlists"
+msgstr "Gean nei Ofspyllisten"
+
+#: data/ui/help-overlay.ui:120
+msgctxt "shortcut window"
+msgid "Go back"
+msgstr "Gean tebek"
+
+#: data/ui/LastfmDialog.ui:24
+msgid ""
+"Last.fm is a music discovery service that gives you personalised "
+"recommendations based on the music you listen to."
+msgstr ""
+"Last.fm is in muzykûntdekkingstsjinst dy't jo persoanlike oanrekommandaasjes "
+"jout oan de hân fan de muzyk dêr't jo nei lústerje."
+
+#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+msgid "Music Reporting Not Setup"
+msgstr "Muzyk opstjoere net ynsteld"
+
+#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+msgid "Login to your Last.fm account to report your music listening."
+msgstr ""
+"Meld oan op jo Last.fm-account om de muzyk dêr't jo nei lústerje op te "
+"stjoeren."
+
+#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+msgid "Login"
+msgstr "Oanmelde"
+
+#: data/ui/LoadingNotification.ui:16
+msgid "Loading"
+msgstr "Lade"
+
+#: data/ui/PlayerToolbar.ui:105
+msgid "Previous"
+msgstr "Foarige"
+
+#: data/ui/PlayerToolbar.ui:139
+msgid "Next"
+msgstr "Folgjende"
+
+#: data/ui/PlaylistControls.ui:10
+msgid "_Delete"
+msgstr "_Fuortsmite"
+
+#: data/ui/PlaylistControls.ui:14
+msgid "_Rename…"
+msgstr "_Omneame…"
+
+#: data/ui/PlaylistControls.ui:44
+msgid "Playlist Name"
+msgstr "Namme fan de ôfspyllist"
+
+#: data/ui/PlaylistControls.ui:77
+msgid "_Done"
+msgstr "_Dien"
+
+#: data/ui/PlaylistDialog.ui:66
+msgid "Enter a name for your first playlist"
+msgstr "In namme foar jo ôfspyllist ynfiere"
+
+#: data/ui/PlaylistDialog.ui:88
+msgid "C_reate"
+msgstr "_Oanmeitsje"
+
+#: data/ui/PlaylistDialog.ui:156
+msgid "New Playlist…"
+msgstr "Nije ôfspyllist…"
+
+#: data/ui/PlaylistDialog.ui:167
+msgid "Add"
+msgstr "Tafoegje"
+
+#: data/ui/PlaylistDialog.ui:208
+msgid "Add to Playlist"
+msgstr "Oan ôfspyllist tafoegje"
+
+#: data/ui/PlaylistDialog.ui:224
+msgid "_Add"
+msgstr "_Tafoegje"
+
+#: data/ui/PlaylistNotification.ui:22
+msgid "_Undo"
+msgstr "_Ungedien meitsje"
+
+#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+msgid "Artists"
+msgstr "Artysten"
+
+#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+msgid "View All"
+msgstr "Alles besjen"
+
+#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+msgid "Albums"
+msgstr "Albums"
+
+#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+msgid "Songs"
+msgstr "Ferskes"
+
+#: data/ui/SelectionBarMenuButton.ui:7
+msgid "Select All"
+msgstr "Alles selektearje"
+
+#: data/ui/SelectionBarMenuButton.ui:11
+msgid "Select None"
+msgstr "Neat Selektearje"
+
+#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+msgid "Click on items to select them"
+msgstr "Klik op items om se te selektearjen"
+
+#: data/ui/SelectionToolbar.ui:9
+msgid "_Add to Playlist"
+msgstr "_Oan ôfspyllist tafoegje"
+
+#: data/ui/SongWidgetMenu.ui:29
+msgid "Add to Playlist…"
+msgstr "Oan ôfspyllist tafoegje…"
+
+#: data/ui/SongWidgetMenu.ui:39
+msgid "Remove From Playlist"
+msgstr "Ut ôfspyllist fuortsmite"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+msgid "Most Played"
+msgstr "Meast ôfspile"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+msgid "Never Played"
+msgstr "Nea ôfspile"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+msgid "Recently Played"
+msgstr "Koartlyn ôfspile"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+msgid "Recently Added"
+msgstr "Koartlyn tafoege"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+msgid "Favorite Songs"
+msgstr "Favorite ferskes"
+
+#: gnomemusic/gstplayer.py:408
+msgid "Unable to play the file"
+msgstr "Kin it bestân net ôfspylje"
+
+#: gnomemusic/gstplayer.py:414
+msgid "_Find in {}"
+msgstr "_Sykje yn {}"
+
+#. TRANSLATORS: separator for two codecs
+#: gnomemusic/gstplayer.py:424
+msgid " and "
+msgstr "en"
+
+#. TRANSLATORS: separator for a list of codecs
+#: gnomemusic/gstplayer.py:427
+msgid ", "
+msgstr ","
+
+#: gnomemusic/gstplayer.py:429
+msgid "{} is required to play the file, but is not installed."
+msgid_plural "{} are required to play the file, but are not installed."
+msgstr[0] ""
+"{} is nedich om it bestân ôf te spyljen, mar it is net ynstallearre."
+msgstr[1] ""
+"{} binne nedich om it bestân ôf te spyljen, mar se binne net ynstallearre."
+
+#: gnomemusic/inhibitsuspend.py:63
+msgid "Playing music"
+msgstr "Muzyk oan it ôfspyljen"
+
+#. Translators: "shuffle" causes tracks to play in random order.
+#: gnomemusic/player.py:45
+msgid "Shuffle"
+msgstr "Minge"
+
+#: gnomemusic/player.py:46
+msgid "Repeat Song"
+msgstr "Ferske opnij ôfspylje"
+
+#: gnomemusic/player.py:47
+msgid "Repeat All"
+msgstr "Alles opnij ôfspylje"
+
+#: gnomemusic/player.py:48
+msgid "Shuffle/Repeat Off"
+msgstr "Minge/Opnij ôfspylje út"
+
+#: gnomemusic/utils.py:80
+msgid "Unknown album"
+msgstr "Unbekend album"
+
+#: gnomemusic/utils.py:101
+msgid "Unknown Artist"
+msgstr "Unbekende artyst"
+
+#: gnomemusic/views/emptyview.py:65
+msgid "Your XDG Music directory is not set."
+msgstr "Jo XDG Muzyk-map is net ynsteld."
+
+#: gnomemusic/views/emptyview.py:72
+msgid "Music Folder"
+msgstr "Muzykmap"
+
+#. TRANSLATORS: This is a label to display a link to open user's music
+#. folder. {} will be replaced with the translated text 'Music folder'
+#: gnomemusic/views/emptyview.py:76
+msgid "The contents of your {} will appear here."
+msgstr "De ynhâld fan jo {} sil hjir sichtber wurde."
+
+#: gnomemusic/views/emptyview.py:124
+msgid "No Music Found"
+msgstr "Gjin muzyk fûn"
+
+#: gnomemusic/views/emptyview.py:125
+msgid "Try a Different Search"
+msgstr "Probearje om wat oars te sykjen"
+
+#: gnomemusic/views/emptyview.py:129
+msgid "GNOME Music could not connect to Tracker."
+msgstr "GNOME Music koe net mei Tracker ferbine."
+
+#: gnomemusic/views/emptyview.py:131
+msgid "Your music files cannot be indexed without Tracker running."
+msgstr ""
+"Jo muzykbestannen kinne net yndeksearre wurde sûnder dat Tracker útfierd "
+"wurdt."
+
+#: gnomemusic/views/emptyview.py:137
+msgid "Your system Tracker version seems outdated."
+msgstr "De ferzje fan Tracker op jo systeem liket ferâldere."
+
+#: gnomemusic/views/emptyview.py:139
+msgid "Music needs Tracker version 3.0.0 or higher."
+msgstr "Muzyk hat Tracker ferzje 3.0.0 of heger nedich."
+
+#: gnomemusic/views/playlistsview.py:45
+msgid "Playlists"
+msgstr "Ofspyllisten"
+
+#: gnomemusic/views/searchview.py:420
+msgid "Artists Results"
+msgstr "Artystresultaten"
+
+#: gnomemusic/views/searchview.py:435
+msgid "Albums Results"
+msgstr "Albumresultaten"
+
+#: gnomemusic/widgets/albumwidget.py:237
+msgid "{} minute"
+msgid_plural "{} minutes"
+msgstr[0] "{} minút"
+msgstr[1] "{} minuten"
+
+#: gnomemusic/widgets/disclistboxwidget.py:75
+msgid "Disc {}"
+msgstr "Skiif {}"
+
+#: gnomemusic/widgets/headerbar.py:68
+msgid "Selected {} song"
+msgid_plural "Selected {} songs"
+msgstr[0] "No {} ferske selektearre"
+msgstr[1] "No {} ferskes selektearre"
+
+#: gnomemusic/widgets/lastfmdialog.py:65
+msgid "Your music listening is reported to Last.fm."
+msgstr "De muzyk dêr't jo nei lústerje wurd nei Last.fm ferstjoerd."
+
+#: gnomemusic/widgets/lastfmdialog.py:67
+msgid "Your music listening is not reported to Last.fm."
+msgstr "De muzyk dêr't jo nei lústerje, wurdt net nei Last.fm ferstjoerd."
+
+#. TRANSLATORS: displays the username of the Last.fm account
+#: gnomemusic/widgets/lastfmdialog.py:71
+msgid "Logged in as {}"
+msgstr "Oanmeld as {}"
+
+#: gnomemusic/widgets/lastfmdialog.py:72
+msgid "Configure"
+msgstr "Ynstelle"
+
+#: gnomemusic/widgets/notificationspopup.py:216
+msgid "Playlist {} removed"
+msgstr "Ofspyllist {} fuortsmiten"
+
+#: gnomemusic/widgets/notificationspopup.py:220
+msgid "{} removed from {}"
+msgstr "{} út {} fuortsmiten"
+
+#: gnomemusic/widgets/playertoolbar.py:174
+msgid "Pause"
+msgstr "Skoft"
+
+#: gnomemusic/widgets/playlistcontrols.py:132
+msgid "{} Song"
+msgid_plural "{} Songs"
+msgstr[0] "{} Ferske"
+msgstr[1] "{} Ferskes"
diff --git a/po/gl.po b/po/gl.po
index e6828176..190da26b 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -2,23 +2,23 @@
# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
-# Fran Diéguez <frandieguez@gnome.org>, 2012.
-# Fran Dieguez <frandieguez@gnome.org>, 2012-2021.
+# Fran Diéguez <frandieguez@gnome.org>, 2012-2022.
+# Fran Dieguez <frandieguez@gnome.org>, 2012-2022.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-08-30 11:38+0200\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-08-12 11:30+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
-"Language-Team: Galician <Proxecto Trasno <proxecto@trasno.gal>>\n"
+"Language-Team: Galician <proxecto@trasno.gal>\n"
"Language: gl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-"X-Generator: Gtranslator 40.0\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 3.3.2\n"
"X-Project-Style: gnome\n"
"X-DL-Team: gl\n"
"X-DL-Module: gnome-music\n"
@@ -27,8 +27,10 @@ msgstr ""
"X-DL-State: Translating\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "Música de GNOME"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Música"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -47,15 +49,10 @@ msgstr ""
"Atope pistas na súa colección local, use as listas de reprodución xeradas "
"automaticamente ou cree unha nova."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "Os desenvolvedores de GNOME Music"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Música"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Reprodutor de música"
@@ -74,27 +71,19 @@ msgid "Window size (width and height)."
msgstr "Tamaño da xanela (ancho e alto)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Posición da xanela"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Posición da xanela (x e y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Xanela maximizada"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Estado da xanela maximizada."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Modo de repetición da reprodución"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -107,29 +96,29 @@ msgstr ""
"de reprodución, non de forma aleatoria), «shuffle» (reproduce "
"aleatoriamente, presume repetir todo)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Activar ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Activa ou desactiva ReplayGain para os álbums"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Inhibit a suspensión do sistema"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Activa ou desactiva a inhibición da suspensión do sistema ao reproducir "
"música"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Informar do historial de música a Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -137,215 +126,155 @@ msgstr ""
"Activar ou desactivar o envío de «scrobbles» e o «reproducindo actualmente» "
"a Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 Os desenvolvedores de GNOME Music"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Unha aplicación de reprodución e xestión de música para GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Visite o sitio web de GNOME Music"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"Música de GNOME é software libre; pode redistribuílo e/ou modificalo baixo "
-"os termos da Licenza Pública Xeral de GNU como se foi publicada pola Free "
-"Software Foundation; tanto na versión 2 da licenza, ou (baixo a súa "
-"elección) unha versión posterior.\n"
-"\n"
-"Música de GNOME distribúese coa esperanza de que lle sexa útil, pero SEN "
-"NINGUNHA GARANTÃA; incluso a garantía implicada de MERCANTIBILIDADE ou "
-"AXEITAMENTE PARA UN PROPÓSITO PARTICULAR. Vexa a Licenza Pública Xeral para "
-"obter máis detalles.\n"
-"\n"
-"Debería ter recibido unha copia da Licenza Pública Xeral de GNU xunto a "
-"Música de GNOME; se non, escriba á Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"Os autores de Música de GNOME concédenlle permiso para que os complementos "
-"de GStreamer non compatíbeis con GPL sexan utilizados e distribuídos xunto "
-"con GStreamer e Música de GNOME. Este permiso está por enriba do permiso "
-"outorgado pola Licenza GPL pola que está cuberto Música de GNOME. Se "
-"modifica este código, pode estender esta excepción á súa versión do código, "
-"pero non está obrigado a facelo. Se non o desexa, elimine esta declaración "
-"de excepción da súa versión.\n"
-"A imaxe de “Magic of the vinyl†por Sami Pyylampi ten licenza CC-BY-SA 2.0 "
-"https://www.flickr.com/photos/_spy_/12270839403"
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Reproducir"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Reproducir"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Engadir ás cancións _favoritas"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
-msgstr "_Engadir á lista de reprodución"
+msgstr "_Engadir á lista de reprodución…"
#: data/ui/AppMenu.ui:23 data/ui/LastfmDialog.ui:8
msgid "Last.fm Account"
msgstr "Conta de Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Información da música que se escoita"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "Atallos de _teclado"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Axuda"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_Sobre Música"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Benvida a Música"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Menú"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Seleccionar"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Cancelar"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Buscar"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Atrás"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Xeral"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Pechar xanela"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Buscar"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Axuda"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Atallos"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Reproducir"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Reproducir/Pausar"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Seguinte canción"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Anterior canción"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Trocar repetición"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Trocar aleatorio"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navegación"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Ir aos álbums"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Ir aos artistas"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Ir ás cancións"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Ir ás listas de reprodución"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Ir atrás"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -353,88 +282,80 @@ msgstr ""
"Last.fm é un servizo de descubrimento de música que fornece recomendacións "
"personalizadas baseadas na música que escoita."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Informe de música non configurado"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"Iniciar sesión na súa conta de Last.fm para informar da música que escoita."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Iniciar sesión"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Cargando"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Anterior"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Seguinte"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Retirar"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Renomear…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Nome da lista de reprodución"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Feito"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Escriba o nome para a súa primeira lista de reprodución"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "Cr_ear"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Nova lista de reprodución…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Engadir"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Engadir á lista de reprodución"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Engadir"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Desfacer"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Artistas"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Ver todo"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Ãlbums"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Cancións"
@@ -446,44 +367,56 @@ msgstr "Seleccionar todo"
msgid "Select None"
msgstr "Deseleccionar todo"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Prema nos elementos para seleccionalos"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Engadir á lista de reprodución"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Engadir á lista de reprodución…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Quitar da lista de reprodución"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "O Proxecto GNOME"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Quitar da lista de reprodución"
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr "Fran Diéguez <frandieguez@gnome.org>, 2022-2023"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Copyright Os desenvolvedores de GNOME Music"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Traducido por"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Máis reproducidos"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Nunca reproducidos"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Reproducidos recentemente"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Engadidos recentemente"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Cancións favoritas"
@@ -517,27 +450,39 @@ msgid "Playing music"
msgstr "Reproducindo música"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Aleatorio"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Desactivar Aleatorio/Repetir"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Repetir canción"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Repetir todo"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Desactivar Aleatorio/Repetir"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Aleatorio"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Eliminouse a lista de reprodución {}"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Desfacer"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} eliminado de {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Ãlbum descoñecido"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Artista descoñecido"
@@ -584,67 +529,133 @@ msgstr "Música precisa Tracker versión 3.0.0 ou superior."
msgid "Playlists"
msgstr "Listas de reprodución"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Resultados de artistas"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Resultados de álbums"
-#: gnomemusic/widgets/albumwidget.py:237
-#| msgid "{}, {} minute"
-#| msgid_plural "{}, {} minutes"
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{}, {} minuto"
msgstr[1] "{} minutos"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Disco {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "Canción {} seleccionadas"
msgstr[1] "Cancións {} seleccionadas"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Estase informando a Last.fm da música que escoita."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Non se está informando a Last.fm da música que escoita."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Sesión iniciada como {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Configurar"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Eliminouse a lista de reprodución {}"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} eliminado de {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Pausar"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} canción"
msgstr[1] "{} cancións"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Buscar cancións, artistas, álbums e listas de reprodución"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "Unha aplicación de reprodución e xestión de música para GNOME."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Visite o sitio web de GNOME Music"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "Música de GNOME é software libre; pode redistribuílo e/ou modificalo "
+#~ "baixo os termos da Licenza Pública Xeral de GNU como se foi publicada "
+#~ "pola Free Software Foundation; tanto na versión 2 da licenza, ou (baixo a "
+#~ "súa elección) unha versión posterior.\n"
+#~ "\n"
+#~ "Música de GNOME distribúese coa esperanza de que lle sexa útil, pero SEN "
+#~ "NINGUNHA GARANTÃA; incluso a garantía implicada de MERCANTIBILIDADE ou "
+#~ "AXEITAMENTE PARA UN PROPÓSITO PARTICULAR. Vexa a Licenza Pública Xeral "
+#~ "para obter máis detalles.\n"
+#~ "\n"
+#~ "Debería ter recibido unha copia da Licenza Pública Xeral de GNU xunto a "
+#~ "Música de GNOME; se non, escriba á Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "Os autores de Música de GNOME concédenlle permiso para que os "
+#~ "complementos de GStreamer non compatíbeis con GPL sexan utilizados e "
+#~ "distribuídos xunto con GStreamer e Música de GNOME. Este permiso está por "
+#~ "enriba do permiso outorgado pola Licenza GPL pola que está cuberto Música "
+#~ "de GNOME. Se modifica este código, pode estender esta excepción á súa "
+#~ "versión do código, pero non está obrigado a facelo. Se non o desexa, "
+#~ "elimine esta declaración de excepción da súa versión.\n"
+#~ "A imaxe de “Magic of the vinyl†por Sami Pyylampi ten licenza CC-BY-SA "
+#~ "2.0 https://www.flickr.com/photos/_spy_/12270839403"
+
+#~| msgid "The contents of your {} will appear here."
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "Os contidos do seu cartafol de Música aparecerán aquí"
+
+#~ msgid "GNOME Music"
+#~ msgstr "Música de GNOME"
+
+#~ msgid "Window position"
+#~ msgstr "Posición da xanela"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Posición da xanela (x e y)."
+
+#~ msgid "Loading"
+#~ msgstr "Cargando"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Engadir á lista de reprodución…"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
diff --git a/po/he.po b/po/he.po
index 9b3a9fca..de58d452 100644
--- a/po/he.po
+++ b/po/he.po
@@ -2,28 +2,30 @@
# Copyright (C) 2013 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Yaron Shahrabani <sh.yaron@gmail.com>, 2013.
-# Yosef Or Boczko <yoseforb@gmail.com>, 2013-2021.
+# Yosef Or Boczko <yoseforb@gmail.com>, 2013-2023.
#
msgid ""
msgstr ""
"Project-Id-Version: GNOME Music\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-09-13 12:42+0300\n"
-"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-07-28 10:01+0300\n"
+"Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
"Language-Team: Hebrew <yoseforb@gmail.com>\n"
"Language: he\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==2 ? 1 : n>10 && n%10==0 ? "
-"2 : 3);\n"
+"2 : 3)\n"
"X-Poedit-SourceCharset: UTF-8\n"
-"X-Generator: Poedit 3.0\n"
+"X-Generator: Gtranslator 42.0\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "â€GNOME מוזיקה"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "מוזיקה"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -42,15 +44,10 @@ msgstr ""
"×יתור רצועות ב×וסף המקומי שלך, נעשה שימוש ברשימות × ×’×™× ×” שנוצרות ×וטומטית ×ו "
"ש×פשר להכין ×חת חדשה."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "מפתח GNOME Music"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "מוזיקה"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "נגן מוזיקה"
@@ -69,27 +66,19 @@ msgid "Window size (width and height)."
msgstr "גודל החלון (רוחב וגובה)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "×ž×™×§×•× ×”×—×œ×•×Ÿ"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "×ž×™×§×•× ×”×—×œ×•×Ÿ (x ו־y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "החלון מוגדל"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "החלון במצב מוגדל למילוי המסך."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "מצב חזרה על נגינה"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -101,27 +90,27 @@ msgstr ""
"“song†(repeat current song), “all†(repeat playlist, no shuffle), "
"“shuffle†(shuffle playlist, presumes repeat all)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Enable ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Enables or disables ReplayGain for albums"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Inhibit system suspend"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr "Enables or disables inhibiting system suspend while playing music"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "דיווח על היסטוריית המוזיקה ל־Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -129,82 +118,21 @@ msgstr ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "כל הזכויות שמורות © 2018 מפתחי GNOME Music"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "נגן ×•×™×™×©×•× ×œ× ×™×”×•×œ מוזיקה עבור GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "ביקור ב×תר GNOME מוזיקה"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"â€GNOME Music ×”×™× ×ª×›× ×” חופשית; ניתן להפיצה מחדש ו/×ו לשנות ×ותה לפי תנ××™ "
-"הרישיון הציבורי הכללי של GNU כפי ×©×¤×•×¨×¡× ×¢×œ ידי קרן התכנה החופשית; בין ×× "
-"גרסה 2 של הרישיון ובין ×× (לבחירתך) כל גרסה מ×וחרת יותר.\n"
-"‬\n"
-"â€â€«\n"
-"‬\n"
-"‫תכנית זו מופצת בתקווה ×©×ª×‘×™× ×ª×•×¢×œ×ª ×ך ×œ×œ× ×חריות כלשהי; ×פילו ×œ× ×”×חריות "
-"המשתמעת בדבר מסחריותה ×ו הת×מתה למטרה מסוימת. ×œ×¤×¨×˜×™× × ×•×¡×¤×™× × ×™×ª×Ÿ לעיין "
-"ברישיון הציבורי הכללי של GNU.\n"
-"‬\n"
-"â€â€«\n"
-"‬\n"
-"â€«×¢× GNOME Music ×מור ×”×™×” להיות מצורף עותק של הרישיון הציבורי הכללי של GNU; "
-"במידה של×, ניתן לכתוב ל־Free Software Foundation, Inc., 51 Franklin Street, "
-"Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"‬\n"
-"â€â€«\n"
-"‬\n"
-"â€«×”×™×•×¦×¨×™× ×©×œ GNOME Music ×ž×¦×”×™×¨×™× ×‘×–×ת ×›×™ ×”× ×ž×¢× ×™×§×™× ×”×¨×©××” להפצה של תוספי "
-"GStreamer ש××™× × ×ž×¢×•×’× ×™× ×ª×—×ª ×”Ö¾GPL יחד ×¢× GStreamer ו־GNOME Music. הרש××” זו "
-"תקפה על פני ההרש××” הניתנת על־ידי רישיון ×”Ö¾GPL תחתיו מוגנת התכנית GNOME "
-"Music. כל שינוי בקוד ×–×” עשוי ל×לץ ×ותך להרחיב ×ת החריגה לקוד בגרסה שהכנת, ×ך "
-"×ין כל התחייבות לעשות ×–×ת. ×× ×ין לך עניין לעשות דבר שכזה, יש למחוק ×ת הצהרת "
-"החריגה ×”×–×ת מהגרסה שלך."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "ניגון"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_ניגון"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "הוספה ×œ×©×™×¨×™× ×ž×•_עדפי×"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "הוספה לרשימת _נגינה…"
@@ -212,133 +140,133 @@ msgstr "הוספה לרשימת _נגינה…"
msgid "Last.fm Account"
msgstr "חשבון Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "דיווח על ×”××–× ×” למוזיקה"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_צירופי מקשי×"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "ע_זרה"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "על _×ודות מוזיקה"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "ברוך בו×ך למוזיקה"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "תפריט"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "בחירה"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_ביטול"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "חיפוש"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "חזרה"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "כללי"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "סגירת חלון"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "חיפוש"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "עזרה"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "צירופי מקשי×"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "ניגון"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "ניגון/השהיה"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "שיר הב×"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "שיר קוד×"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "חזרה על שיר"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "ערבוב שירי×"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "ניווט"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "מעבר ל×לבומי×"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "מעבר ל×מני×"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "מעבר לשירי×"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "מעבר לרשימות נגינה"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "חזרה"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -346,87 +274,79 @@ msgstr ""
"â€Last.fm ×”×•× ×©×¨×ª גילוי מוזיקה שמספק לך המלצות ×ישיות שמבוססות על המוזיקה לה "
"בחרת לה×זין."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "×œ× ×ž×•×’×“×¨ דיווח מוזיקה"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "יש להיכנס לחשבון Last.fm שלך על מנת לדווח על המוזיקה שמושמעת."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "כניסה"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "בטעינה"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "הקוד×"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "הב×"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "מ_חיקה"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_שינוי ש×…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "×©× ×¨×©×™×ž×ª × ×’×™× ×”"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_סיו×"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "× × ×œ×ª×ª ×©× ×œ×¨×©×™×ž×ª ×”× ×’×™× ×” הר×שונה שלך"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "י_צירה"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "רשימת נגינה חדשה…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "הוספה"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "הוספה לרשימת נגינה"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "הו_ספה"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_ביטול"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "×ומני×"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "להציג הכול"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "×לבומי×"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "שירי×"
@@ -438,44 +358,56 @@ msgstr "בחירת הכול"
msgid "Select None"
msgstr "ביטול הבחירה"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "יש ללחוץ על ×¤×¨×™×˜×™× ×›×“×™ לבחור ×ות×"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_הוספה לרשימת נגינה"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "הוספה לרשימת נגינה…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "ה_סרה מרשימת נגינה"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "×ž×™×–× GNOME"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "הסרה מרשימת נגינה"
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr "יוסף ×ור בוצ׳קו <yoseforb@gmail.com>"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "כל הזכויות שמורות למפתחי GNOME Music"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "×ª×•×¨×’× ×¢×œ ידי"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "הושמע ביותר"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "×œ×¢×•×œ× ×œ× ×”×•×©×ž×¢"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "הושמע ל×חרונה"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "נוסף ל×חרונה"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "×©×™×¨×™× ×ž×•×¢×“×¤×™×"
@@ -510,27 +442,39 @@ msgid "Playing music"
msgstr "מנגן מוזיקה"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "ערבוב"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "ערבוב/חזרה כבוי"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "חזרה על שיר"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "חזרה על הכול"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "ערבוב/חזרה כבוי"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "ערבוב"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "רשימת הנגינה {} הוסרה"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "ביטול"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "â€{} הוסר מתוך {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "××œ×‘×•× ×œ× ×™×“×•×¢"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "×מן ×œ× ×™×“×•×¢"
@@ -576,15 +520,15 @@ msgstr "×™×™×©×•× ×”×ž×•×–×™×§×” דורש Tracker בגרסה 3.0.0 ומעלה."
msgid "Playlists"
msgstr "רשימות נגינה"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "תוצ×ות ×ומני×"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "תוצ×ות ×לבומי×"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "דקה"
@@ -592,11 +536,11 @@ msgstr[1] "‫{} דקות"
msgstr[2] "‫{} דקות"
msgstr[3] "{} דקות"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "דיסק {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "שיר נבחר"
@@ -604,36 +548,28 @@ msgstr[1] "שני ×©×™×¨×™× × ×‘×—×¨×•"
msgstr[2] "{} ×©×™×¨×™× × ×‘×—×¨×•"
msgstr[3] "{} ×©×™×¨×™× × ×‘×—×¨×•"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "×”×”××–× ×” שלך למוזיקה מדווחת ל־Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "×”×”××–× ×” שלך למוזיקה ××™× ×” מדווחת ל־Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "נכנסת ×‘×©× {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "הגדרה"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "רשימת הנגינה {} הוסרה"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "â€{} הוסר מתוך {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "השהיה"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "שיר"
@@ -641,6 +577,83 @@ msgstr[1] "שני שירי×"
msgstr[2] "{} שירי×"
msgstr[3] "{} שירי×"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "חיפוש שירי×, ×מני×, ××œ×‘×•×ž×™× ×•×¨×©×™×ž×•×ª × ×’×™× ×”"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "נגן ×•×™×™×©×•× ×œ× ×™×”×•×œ מוזיקה עבור GNOME."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "ביקור ב×תר GNOME מוזיקה"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "â€GNOME Music ×”×™× ×ª×›× ×” חופשית; ניתן להפיצה מחדש ו/×ו לשנות ×ותה לפי תנ××™ "
+#~ "הרישיון הציבורי הכללי של GNU כפי ×©×¤×•×¨×¡× ×¢×œ ידי קרן התכנה החופשית; בין ×× "
+#~ "גרסה 2 של הרישיון ובין ×× (לבחירתך) כל גרסה מ×וחרת יותר.\n"
+#~ "‬\n"
+#~ "â€â€«\n"
+#~ "‬\n"
+#~ "‫תכנית זו מופצת בתקווה ×©×ª×‘×™× ×ª×•×¢×œ×ª ×ך ×œ×œ× ×חריות כלשהי; ×פילו ×œ× ×”×חריות "
+#~ "המשתמעת בדבר מסחריותה ×ו הת×מתה למטרה מסוימת. ×œ×¤×¨×˜×™× × ×•×¡×¤×™× × ×™×ª×Ÿ לעיין "
+#~ "ברישיון הציבורי הכללי של GNU.\n"
+#~ "‬\n"
+#~ "â€â€«\n"
+#~ "‬\n"
+#~ "â€«×¢× GNOME Music ×מור ×”×™×” להיות מצורף עותק של הרישיון הציבורי הכללי של GNU; "
+#~ "במידה של×, ניתן לכתוב ל־Free Software Foundation, Inc., 51 Franklin "
+#~ "Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "‬\n"
+#~ "â€â€«\n"
+#~ "‬\n"
+#~ "â€«×”×™×•×¦×¨×™× ×©×œ GNOME Music ×ž×¦×”×™×¨×™× ×‘×–×ת ×›×™ ×”× ×ž×¢× ×™×§×™× ×”×¨×©××” להפצה של תוספי "
+#~ "GStreamer ש××™× × ×ž×¢×•×’× ×™× ×ª×—×ª ×”Ö¾GPL יחד ×¢× GStreamer ו־GNOME Music. הרש××” "
+#~ "זו תקפה על פני ההרש××” הניתנת על־ידי רישיון ×”Ö¾GPL תחתיו מוגנת התכנית GNOME "
+#~ "Music. כל שינוי בקוד ×–×” עשוי ל×לץ ×ותך להרחיב ×ת החריגה לקוד בגרסה שהכנת, "
+#~ "×ך ×ין כל התחייבות לעשות ×–×ת. ×× ×ין לך עניין לעשות דבר שכזה, יש למחוק ×ת "
+#~ "הצהרת החריגה ×”×–×ת מהגרסה שלך."
+
+#~| msgid "The contents of your {} will appear here."
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "התוכן של תיקיית המוזיקה שלך שלך יופיע ×›×ן"
+
+#~ msgid "GNOME Music"
+#~ msgstr "â€GNOME מוזיקה"
+
+#~ msgid "Window position"
+#~ msgstr "×ž×™×§×•× ×”×—×œ×•×Ÿ"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "×ž×™×§×•× ×”×—×œ×•×Ÿ (x ו־y)."
+
+#~ msgid "Loading"
+#~ msgstr "בטעינה"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "הוספה לרשימת נגינה…"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
diff --git a/po/hr.po b/po/hr.po
index 8c254bf8..54b975b4 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -7,26 +7,28 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-09-09 11:00+0200\n"
+"POT-Creation-Date: 2022-08-27 13:27+0000\n"
+"PO-Revision-Date: 2022-08-27 22:37+0200\n"
"Last-Translator: gogo <trebelnik2@gmail.com>\n"
"Language-Team: Croatian <hr@li.org>\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Poedit 2.3\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Poedit 3.1.1\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME Glazba"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:236
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Glazba"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
msgid "Play and organize your music collection"
-msgstr "Slušajte i organizirajte vašu glazbenu kolekciju"
+msgstr "Slušajte i organizirajte svoju glazbenu kolekciju"
#: data/org.gnome.Music.appdata.xml.in.in:9
msgid "An easy and pleasant way to play your music."
@@ -40,15 +42,10 @@ msgstr ""
"Potražite pjesme u svojoj lokalnoj fonoteci, koristite automatski stvorene "
"popise izvođenja ili stvorite nove."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:167
msgid "The GNOME Music developers"
msgstr "GNOME Glazbeni razvijatelji"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Glazba"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Glazbeni sviraÄ"
@@ -67,27 +64,19 @@ msgid "Window size (width and height)."
msgstr "VeliÄina prozora (Å¡irina i visina)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Položaj prozora"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Položaj prozora (x-os i y-os)"
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Prozor uvećan"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Stanje uvećanog prozora."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "NaÄin ponavljanja reprodukcije"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -100,28 +89,28 @@ msgstr ""
"popis izvoÄ‘enja, bez naizmjeniÄne reprodukcije), “shuffle†(naizmjeniÄna "
"reprodukcija popisa izvođenja, pretpostavlja ponavljanje svega)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Omogući normalizaciju zvuka"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Omogući ili onemogući normalizaciju zvuka za albume"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Opozovi suspendiranje sustava"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Omogućuje ili onemogućuje opoziv suspendiranja sustava pri slušanju glazbe"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Prijavi povijest slušanja na Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -129,79 +118,21 @@ msgstr ""
"Omogući ili onemogući slanje skroblanja i \"trenutne reprodukcije\" na Last."
"fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Autorsko pravo © 2018 GNOME Glazbeni razvijatelji"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr ""
-"Glazbeni sviraÄ i aplikacija upravljanja glazbenom kolekcijom za GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Posjeti GNOME Glazba web stranicu"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"GNOME Glazba je slobodan softver; možete ga redistribuirati i/ili mijenjati "
-"pod uvjetima GNU Opće javne licence objavljene od Fundacije slobodnog "
-"softvera; ili inaÄice 2 Licence ili (po vaÅ¡emu miÅ¡ljenju) svake kasnije "
-"inaÄice.\n"
-"\n"
-"GNOME Glazba je distribuiran u nadi da će biti koristan ali BEZ IKAKVOG "
-"JAMSTVA; Äak i bez podrazumjevanog jamstva ili POGODNOSTI ZA ODREÄENU "
-"NAMJENU. Pogledajte GNU Opću javnu licencu za više informacija.\n"
-"\n"
-"Trebali ste dobiti primjerak GNU Opće javne licence uz ovaj program; ako "
-"niste, pišite na adresu Free Software Foundation, Inc., 51 Franklin Street, "
-"Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"Autori GNOME Glazbe ovime odobravaju dozvolu za ne-OJL kompatibilne "
-"GStreamer prikljuÄke da se mogu koristiti i distribuirati zajedno s "
-"GStreamerom i GNOME Glazbom. Ova dozvola je iznad i izvan dozvole odobrene "
-"OJL licencom kojom je GNOME Glazba pokrivena. Ako mijenjate ovaj kôd, "
-"morate istaknuti tu iznimku u vaÅ¡oj inaÄici kôda, ali Vi niste dužni to "
-"uÄiniti. Ako to ne želite uÄiniti, obriÅ¡ite ovu izjavu iznimke iz vaÅ¡e "
-"inaÄice."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Reproduciraj"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Sviraj"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Dodaj u _omiljene pjesme"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_Dodaj na popis izvođenja…"
@@ -209,23 +140,23 @@ msgstr "_Dodaj na popis izvođenja…"
msgid "Last.fm Account"
msgstr "Last.fm raÄun"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Prijavi povijest slušanja"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_PreÄaci tipkovnice"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_PriruÄnik"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_O Glazbi"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Dobrodošli u Glazbu"
@@ -233,109 +164,109 @@ msgstr "Dobrodošli u Glazbu"
msgid "Menu"
msgstr "Izbornik"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:24 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Odaberi"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:30 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Odustani"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:42 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Pretraga"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:50
msgid "Back"
msgstr "Natrag"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Općenito"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Zatvori prozor"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Pretraga"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "PriruÄnik"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "PreÄaci"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Reprodukcija"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Reproduciraj/Pauziraj"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Sljedeća pjesma"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Prijašnja pjesma"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Uklj/Isklj ponavljanje"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Uklj/Isklj ponavljanje"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navigacija"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Idi u albume"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Idi u izvoÄ‘aÄe"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Idi u pjesme"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Idi u popise izvođenja"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Idi natrag"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -343,89 +274,81 @@ msgstr ""
"Last.fm je usluga za otkrivanje glazbe koja vam daje personalizirane "
"preporuke na temelju glazbe koju slušate."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Prijava glazbe nije postavljena"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"Prijavite se u svoj Last.fm raÄun kako bi mogli prijaviti svoje sluÅ¡anje "
"glazbe."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Prijava"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "UÄitavanje"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Prijašnja"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Sljedeća"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Obriši"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Preimenuj…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Naziv popis izvođenja"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Završeno"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Upišite naziv za vaš prvi popis izvođenja"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "S_tvori"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Novi popis izvođenja…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Dodaj"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Dodaj na popis izvođenja"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Dodaj"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Vrati"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "IzvoÄ‘aÄi"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Prikaži sve"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Albumi"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Pjesme"
@@ -437,44 +360,58 @@ msgstr "Odaberi sve"
msgid "Select None"
msgstr "Bez odabira"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Kliknite na stavku za odabir"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Dodaj na popis izvođenja"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Dodaj na popis izvođenja…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Ukloni s popisa izvođenja"
+
+#: gnomemusic/about.py:238
+msgid "The GNOME Project"
+msgstr "GNOME projekt"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Ukloni s popisa izvođenja"
+#: gnomemusic/about.py:242
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" gogo https://launchpad.net/~trebelnik-stefina"
+
+#: gnomemusic/about.py:246
+msgid "Copyright The GNOME Music Developers"
+msgstr "Autorsko pravo GNOME Glazbeni razvijatelji"
+
+#: gnomemusic/about.py:249
+msgid "Translated by"
+msgstr "Preveli"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Najslušanije"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Nepreslušano"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Nedavno slušano"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Nedavno dodano"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Omiljene pjesme"
@@ -508,27 +445,39 @@ msgid "Playing music"
msgstr "Reprodukcija glazbe"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
+#: gnomemusic/player.py:44
msgid "Shuffle"
msgstr "NaizmjeniÄno"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Ponovi pjesmu"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Ponovni sve"
-#: gnomemusic/player.py:48
+#: gnomemusic/player.py:47
msgid "Shuffle/Repeat Off"
msgstr "NaizmjeniÄno/Ponovi iskljuÄi"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Popis izvođenja {} uklonjen"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Vrati"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} uklonjeno iz {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Nepoznat album"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Nepoznati izvoÄ‘aÄ"
@@ -576,68 +525,129 @@ msgstr "Glazba treba Pratitelja inaÄice 3.0.0 ili novijeg."
msgid "Playlists"
msgstr "Popis izvođenja"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Rezultati izvoÄ‘aÄa"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Rezultati albuma"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minuta"
msgstr[1] "{} minute"
msgstr[2] "{} minuta"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Disk {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "Odabrana {} pjesma"
msgstr[1] "Odabrane {} pjesme"
msgstr[2] "Odabrane {} pjesama"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Vaše slušanje glazbe je prijavljeno na Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Vaše slušanje glazbe nije prijavljeno na Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Prijavljeni kao {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Podesi"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Popis izvođenja {} uklonjen"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} uklonjeno iz {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Pauziraj"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} pjesma"
msgstr[1] "{} pjesme"
msgstr[2] "{} pjesama"
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr ""
+#~ "Glazbeni sviraÄ i aplikacija upravljanja glazbenom kolekcijom za GNOME."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Posjeti GNOME Glazba web stranicu"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "GNOME Glazba je slobodan softver; možete ga redistribuirati i/ili "
+#~ "mijenjati pod uvjetima GNU Opće javne licence objavljene od Fundacije "
+#~ "slobodnog softvera; ili inaÄice 2 Licence ili (po vaÅ¡emu miÅ¡ljenju) svake "
+#~ "kasnije inaÄice.\n"
+#~ "\n"
+#~ "GNOME Glazba je distribuiran u nadi da će biti koristan ali BEZ IKAKVOG "
+#~ "JAMSTVA; Äak i bez podrazumjevanog jamstva ili POGODNOSTI ZA ODREÄENU "
+#~ "NAMJENU. Pogledajte GNU Opću javnu licencu za više informacija.\n"
+#~ "\n"
+#~ "Trebali ste dobiti primjerak GNU Opće javne licence uz ovaj program; ako "
+#~ "niste, pišite na adresu Free Software Foundation, Inc., 51 Franklin "
+#~ "Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "Autori GNOME Glazbe ovime odobravaju dozvolu za ne-OJL kompatibilne "
+#~ "GStreamer prikljuÄke da se mogu koristiti i distribuirati zajedno s "
+#~ "GStreamerom i GNOME Glazbom. Ova dozvola je iznad i izvan dozvole "
+#~ "odobrene OJL licencom kojom je GNOME Glazba pokrivena. Ako mijenjate "
+#~ "ovaj kôd, morate istaknuti tu iznimku u vaÅ¡oj inaÄici kôda, ali Vi niste "
+#~ "dužni to uÄiniti. Ako to ne želite uÄiniti, obriÅ¡ite ovu izjavu iznimke "
+#~ "iz vaÅ¡e inaÄice."
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "Sadržaj vaše Glazbene mape će se pojaviti ovdje."
+
+#~ msgid "GNOME Music"
+#~ msgstr "GNOME Glazba"
+
+#~ msgid "Window position"
+#~ msgstr "Položaj prozora"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Položaj prozora (x-os i y-os)"
+
+#~ msgid "Loading"
+#~ msgstr "UÄitavanje"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Dodaj na popis izvođenja…"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
diff --git a/po/hu.po b/po/hu.po
index e816e75d..1f43e2b1 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -1,28 +1,30 @@
# Hungarian translation for gnome-music.
-# Copyright (C) 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2021 Free Software Foundation, Inc.
+# Copyright (C) 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2021, 2022, 2023 Free Software Foundation, Inc.
# This file is distributed under the same license as the gnome-music package.
#
# Gabor Kelemen <kelemeng at gnome dot hu>, 2013, 2016.
# Balázs Meskó <mesko.balazs at fsf dot hu>, 2014, 2015, 2020, 2021.
-# Balázs Úr <ur.balazs at fsf dot hu>, 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2021.
+# Balázs Úr <ur.balazs at fsf dot hu>, 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2021, 2022, 2023.
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-09-12 01:16+0200\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-07-26 01:47+0200\n"
"Last-Translator: Balázs Úr <ur.balazs at fsf dot hu>\n"
-"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
+"Language-Team: Hungarian <openscope at fsf dot hu>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Lokalize 19.12.3\n"
+"X-Generator: Lokalize 23.04.1\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME Zene"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Zene"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -41,15 +43,10 @@ msgstr ""
"Keressen számokat a helyi gyűjteményében, használjon automatikusan "
"előállított lejátszólistákat vagy állítson össze egyet."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "A GNOME Zene fejlesztői"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Zene"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Zenelejátszó"
@@ -68,27 +65,19 @@ msgid "Window size (width and height)."
msgstr "Ablak mérete (szélesség és magasság)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Ablakpozíció"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Ablakpozíció (x és y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Ablak teljes méretű"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Az ablak maximalizált állapota."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Lejátszás ismétlési módja"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -101,29 +90,29 @@ msgstr ""
"ismétlése, nincs keverés), „shuffle†(véletlenszerű lejátszólista, "
"feltételezi az összes ismétlését)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "ReplayGain engedélyezése"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Engedélyezi vagy letiltja a ReplayGain használatát az albumoknál"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Rendszer felfüggesztésének megakadályozása"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Engedélyezi vagy letiltja a rendszer felfüggesztésének megakadályozását "
"zenelejátszás közben"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Zenék előzményeinek jelentése a Last.fm felé"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -131,104 +120,21 @@ msgstr ""
"Engedélyezi vagy letiltja az előzmények és a „most játszott†információk "
"elküldését a Last.fm-nek."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 GNOME Zene fejlesztők"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Zenelejátszó és -kezelő alkalmazás a GNOME-hoz."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "A GNOME Zene honlapjának felkeresése"
-
-#: data/ui/AboutDialog.ui.in:13
-#| msgid ""
-#| "GNOME Music is free software; you can redistribute it and/or modify it "
-#| "under the terms of the GNU General Public License as published by the "
-#| "Free Software Foundation; either version 2 of the License, or (at your "
-#| "option) any later version.\n"
-#| "\n"
-#| "GNOME Music is distributed in the hope that it will be useful, but "
-#| "WITHOUT ANY WARRANTY; without even the implied warranty of "
-#| "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
-#| "Public License for more details.\n"
-#| "\n"
-#| "You should have received a copy of the GNU General Public License along "
-#| "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-#| "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-#| "\n"
-#| "The GNOME Music authors hereby grant permission for non-GPL compatible "
-#| "GStreamer plugins to be used and distributed together with GStreamer and "
-#| "GNOME Music. This permission is above and beyond the permissions granted "
-#| "by the GPL license by which GNOME Music is covered. If you modify this "
-#| "code, you may extend this exception to your version of the code, but you "
-#| "are not obligated to do so. If you do not wish to do so, delete this "
-#| "exception statement from your version.\n"
-#| "\n"
-#| "“Magic of the vinyl†by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
-#| "https://www.flickr.com/photos/_spy_/12270839403"
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"A GNOME Zene szabad szoftver, terjesztheti és/vagy módosíthatja a Free "
-"Software Foundation által kiadott GNU General Public License második (vagy "
-"bármely későbbi) változatában foglaltak alapján.\n"
-"\n"
-"A GNOME Zene programot abban a reményben terjesztjük, hogy hasznos lesz, de "
-"nem vállalunk SEMMIFÉLE GARANCIÃT, még olyan értelemben sem, hogy a program "
-"alkalmas-e a KÖZREADÃSRA vagy EGY BIZONYOS FELADAT ELVÉGZÉSÉRE. További "
-"részletekért tanulmányozza a GNU GPL licencet.\n"
-"\n"
-"A GNOME Zene programhoz a GNU General Public License egy példánya is jár, ha "
-"nem kapta meg, írjon a Free Software Foundation Inc.-nek. Levélcímük: 51 "
-"Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.\n"
-"\n"
-"A GNOME Zene szerzői itt engedélyt adnak a nem GPL kompatibilis GStreamer "
-"bővítmények használatára és terjesztésére a GStreamerrel és a GNOME Zenével. "
-"Ez az engedély túlmegy a GNOME Zenét lefedő GPL licenc engedélyein. Ha "
-"módosítja a kódot, kiterjesztheti ezt a kivételt a saját verziójára, de ez "
-"nem kötelező. Ha nem szeretné ezt tenni, akkor törölje ezen kivételengedély "
-"angol eredetijét a saját verziójából."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Lejátszás"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Lejátszás"
-#: data/ui/AlbumWidget.ui:167
-#| msgid "Favorite Songs"
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Hozzáadás a _kedvenc számokhoz"
-#: data/ui/AlbumWidget.ui:171
-#| msgid "Add to Playlist…"
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "Hozzá_adás a lejátszólistához…"
@@ -236,133 +142,133 @@ msgstr "Hozzá_adás a lejátszólistához…"
msgid "Last.fm Account"
msgstr "Last.fm-fiók"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Zenehallgatás jelentése"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Gyorsbillentyűk"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Súgó"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "A Zene _névjegye"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Üdvözli a Zene"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Menü"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Kiválasztás"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Mégse"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Keresés"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Vissza"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Ãltalános"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Ablak bezárása"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Keresés"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Súgó"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Gyorsbillentyűk"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Lejátszás"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Lejátszás/szünet"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Következő szám"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Előző szám"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Ismétlés ki/be"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Véletlenszerű lejátszás ki/be"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navigáció"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Ugrás az albumokhoz"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Ugrás az előadókhoz"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Ugrás a számokhoz"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Ugrás a lejátszólistákhoz"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Vissza"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -370,87 +276,79 @@ msgstr ""
"A Last.fm egy zenefelfedező szolgáltatás, amely személyre szabott "
"ajánlásokat ad az alapján, hogy milyen zenét hallgat."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "A zenejelentés nincs beállítva"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "Jelentkezzen be a Last.fm-fiókjába, hogy jelentse, mit hallgat."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Bejelentkezés"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Betöltés"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Előző"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Következő"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Törlés"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "Ãt_nevezés…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Lejátszólista neve"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Kész"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Adjon nevet az első lejátszólistájának"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "Lét_rehozás"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Új lejátszólista…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Hozzáadás"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Hozzáadás a lejátszólistához"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Hozzáadás"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Visszavonás"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Előadók"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Összes megtekintése"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Albumok"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Számok"
@@ -462,44 +360,56 @@ msgstr "Összes kijelölése"
msgid "Select None"
msgstr "Kijelölés törlése"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Kattintson az elemekre a kiválasztásukhoz"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "Hozzá_adás a lejátszólistához"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Hozzáadás a lejátszólistához…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Eltávolítás a lejátszólistáról"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "A GNOME projekt"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Eltávolítás a lejátszólistáról"
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr "Úr Balázs <ur dot balazs at fsf dot hu>, 2022."
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Copyright – A GNOME Zene fejlesztői"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Fordította"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Legtöbbet lejátszott"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Sosem lejátszott"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Legutóbb lejátszott"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Legutóbb hozzáadott"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Kedvenc számok"
@@ -532,27 +442,39 @@ msgid "Playing music"
msgstr "Zene lejátszása"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Véletlen sorrend"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Véletlen/Ismétlés kikapcsolva"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Szám ismétlése"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Összes ismétlése"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Véletlen/Ismétlés kikapcsolva"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Véletlen sorrend"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "A(z) {} lejátszólista eltávolítva"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Visszavonás"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} eltávolítva innen: {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Ismeretlen album"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Ismeretlen előadó"
@@ -562,7 +484,6 @@ msgstr "Az XDG Zenék könyvtára nincs beállítva."
# A ~/Zenék
#: gnomemusic/views/emptyview.py:72
-#| msgid "Music folder"
msgid "Music Folder"
msgstr "Zenék mappa"
@@ -574,32 +495,26 @@ msgid "The contents of your {} will appear here."
msgstr "A {} tartalma itt fog megjelenni."
#: gnomemusic/views/emptyview.py:124
-#| msgid "No music found"
msgid "No Music Found"
msgstr "Nem található zene"
#: gnomemusic/views/emptyview.py:125
-#| msgid "Try a different search"
msgid "Try a Different Search"
msgstr "Próbáljon egy másik keresést"
#: gnomemusic/views/emptyview.py:129
-#| msgid "GNOME Music could not connect to Tracker"
msgid "GNOME Music could not connect to Tracker."
msgstr "A GNOME Zene nem tudott kapcsolódni a Trackerhez."
#: gnomemusic/views/emptyview.py:131
-#| msgid "Your music files cannot be indexed without Tracker running"
msgid "Your music files cannot be indexed without Tracker running."
msgstr "A zenefájlokat nem lehet indexelni a Tracker futtatása nélkül."
#: gnomemusic/views/emptyview.py:137
-#| msgid "Your system Tracker version seems outdated"
msgid "Your system Tracker version seems outdated."
msgstr "A rendszer Tracker verziója elavultnak tűnik."
#: gnomemusic/views/emptyview.py:139
-#| msgid "Music needs Tracker version 3.0.0 or higher"
msgid "Music needs Tracker version 3.0.0 or higher."
msgstr "A Zene a Tracker 3.0.0 vagy újabb verzióját igényli."
@@ -607,62 +522,58 @@ msgstr "A Zene a Tracker 3.0.0 vagy újabb verzióját igényli."
msgid "Playlists"
msgstr "Lejátszólisták"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Előadók találatai"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Albumok találatai"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} perc"
msgstr[1] "{} perc"
# FIXME ez lehet, hogy egy lemezcím, vagy sorszám, akkor nem lesz szép.
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Lemez {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "{} szám kijelölve"
msgstr[1] "{} szám kijelölve"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "A hallgatott zenék jelentésre kerülnek a Last.fm-nek."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "A hallgatott zenék nem kerülnek jelentésre a Last.fm-nek."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Bejelentkezve mint {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Beállítás"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "A(z) {} lejátszólista eltávolítva"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} eltávolítva innen: {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Szünet"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} szám"
msgstr[1] "{} szám"
+
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Számok, előadók, albumok és lejátszólisták keresése"
diff --git a/po/id.po b/po/id.po
index ad804e0c..26509695 100644
--- a/po/id.po
+++ b/po/id.po
@@ -4,25 +4,27 @@
#
# Andika Triwidada <andika@gmail.com>, 2013, 2014, 2015.
# Dirgita <dirgitadevina@yahoo.co.id>, 2013.
-# Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2017-2021.
+# Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2017-2022.
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-08-28 18:23+0700\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-08-09 20:40+0700\n"
"Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n"
"Language-Team: Indonesian <gnome@i15n.org>\n"
"Language: id\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 3.0\n"
-"Plural-Forms: nplurals=2; plural= n!=1;\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 3.3.1\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME Musik"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Musik"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -41,15 +43,10 @@ msgstr ""
"Temukan trek di koleksi lokal Anda, gunakan daftar putar yang dibuat secara "
"otomatis atau kurasi yang baru."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "Para Pengembang GNOME Musik"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Musik"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Pemutar Musik"
@@ -68,27 +65,19 @@ msgid "Window size (width and height)."
msgstr "Ukuran jendela (lebar dan tinggi)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Posisi jendela"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Posisi jendela (x dan y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Jendela dimaksimalkan"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Keadaan dimaksimalkan jendela."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Mode ulang pemutaran"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -101,28 +90,28 @@ msgstr ""
"tanpa pengacakan), \"shuffle\" (acak daftar putar, mengasumsikan ulang "
"semua)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Fungsikan ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Mengaktifkan atau menonaktifkan pemberitahuan pemutaran"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Cegah suspensi sistem"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Mengaktifkan atau menonaktifkan pencegah suspensi sistem saat memutar musik"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Laporkan riwayat musik ke Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -130,78 +119,21 @@ msgstr ""
"Aktifkan atau nonaktifkan pengiriman scrobbles dan info \"sedang diputar\" "
"ke Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Hak Cipta © 2018 Para Pengembang Musik GNOME"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Aplikasi manajemen dan pemutar musik bagi GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Kunjungi situs web Musik GNOME"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"GNOME Musik adalah perangkat lunak bebas; Anda dapat mendistribusikannya dan/"
-"atau mengubahnya di bawah persyaratan GNU General Public License sebagaimana "
-"dipublikasikan oleh Free Software Foundation; dengan Lisensi versi 2, atau "
-"(sesuai pilihan Anda) sebarang versi lebih baru.\n"
-"\n"
-"GNOME Musik didistribusikan dengan harapan dapat berguna, tetapi TANPA "
-"ADANYA JAMINAN; termasuk tanpa jaminan DAYA JUAL atau KELAIKAN UNTUK TUJUAN "
-"TERTENTU. Lihat GNU General Public License untuk rincian lebih lanjut.\n"
-"\n"
-"Anda seharusnya menerima salinan dari GNU General Public License bersama "
-"GNOME Musik; jika tidak, kirimkan surat Anda ke Free Software Foundation, "
-"Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
-"\n"
-"Para penulis GNOME Musik dengan ini memberikan ijin untuk plugin GStreamer "
-"yang tak kompatibel dengan GPL untuk dipakai dan didistribusikan bersama "
-"dengan GStreamer dan GNOME Musik. Ijin ini di atas dan di luar hak yang "
-"diberikan oleh lisensi GPL yang mencakup GNOME Musik. Bila Anda mengubah "
-"kode ini, Anda boleh memperluas pengecualian ini ke versi kode Anda, tapi "
-"Anda tidak wajib melakukannya. Bila Anda tak ingin seperti itu, hapuslah "
-"pernyataan pengecualian ini dari versi Anda."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Putar"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Putar"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Tambah ke Lagu _Favorit"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "T_ambah ke Daftar Putar…"
@@ -209,133 +141,133 @@ msgstr "T_ambah ke Daftar Putar…"
msgid "Last.fm Account"
msgstr "Akun Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Laporkan Mendengarkan Musik"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "Pintasan Papan _Ketik"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Bantuan"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "Tent_ang Musik"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Selamat Datang di Musik"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Menu"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Pilih"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Batal"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Cari"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Mundur"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Umum"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Tutup jendela"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Cari"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Bantuan"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Pintasan"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Putar"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Putar/Tahan"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Lagu selanjutnya"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Lagu sebelumnya"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Jungkitkan pengulangan"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Jungkitkan pengacakan"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navigasi"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Ke Album"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Ke Artis"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Ke Lagu"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Ke Daftar Putar"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Mundur"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -343,87 +275,79 @@ msgstr ""
"Last.fm adalah layanan penemuan musik yang memberi Anda rekomendasi hasil "
"personalisasi berdasarkan musik yang Anda dengarkan."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Pelaporan Musik Tidak Disetel"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "Masuk ke akun Last.fm Anda untuk melaporkan musik yang Anda dengar."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Masuk"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Memuat"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Sebelumnya"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Selanjutnya"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Hapus"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Ubah Nama…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Nama Daftar Putar"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Selesai"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Masukkan nama daftar putar pertama Anda"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "B_uat"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Daftar Putar Baru…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Tambah"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Tambah ke Daftar Putar"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "T_ambah"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "Tak _Jadi"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Artis"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Tampilkan Semua"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Album"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Lagu"
@@ -435,44 +359,59 @@ msgstr "Pilih Semua"
msgid "Select None"
msgstr "Pilih Tak Satupun"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Klik pada butir untuk memilihnya"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "T_ambah ke Daftar Putar"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Tambah ke Daftar Putar…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "Hapus dari Daftar Puta_r"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "Proyek GNOME"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr ""
+"Andika Triwidada <andika@gmail.com>, 2013, 2014, 2015.\n"
+"Dirgita <dirgitadevina@yahoo.co.id>, 2013.\n"
+"Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2017-2023."
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Hak Cipta Para Pengembang GNOME Musik"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Hapus dari Daftar Putar"
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Diterjemahkan oleh"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Paling Sering Diputar"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Tak Pernah Diputar"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Baru-baru Ini Diputar"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Baru-baru Ini Ditambahkan"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Lagu Favorit"
@@ -498,34 +437,45 @@ msgstr ", "
msgid "{} is required to play the file, but is not installed."
msgid_plural "{} are required to play the file, but are not installed."
msgstr[0] "{} diperlukan untuk memutar berkas, tapi tak terpasang."
-msgstr[1] "{} diperlukan untuk memutar berkas, tapi tak terpasang."
#: gnomemusic/inhibitsuspend.py:63
msgid "Playing music"
msgstr "Memutar musik"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Acak"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Acak/Ulang Mati"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Ulangi Lagu"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Ulangi Semua"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Acak/Ulang Mati"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Acak"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Daftar putar {} dihapus"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Tak Jadi"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} dihapus dari {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Album tak dikenal"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Artis Tak Dikenal"
@@ -571,64 +521,127 @@ msgstr "Musik membutuhkan Pelacak versi 3.0.0 atau lebih tinggi."
msgid "Playlists"
msgstr "Daftar Putar"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Hasil Artis"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Hasil Album"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} menit"
-msgstr[1] "{} menit"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Cakram {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "Dipilih {} lagu"
-msgstr[1] "Dipilih {} lagu"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Musik yang Anda dengar dilaporkan ke Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Musik yang Anda dengar tidak dilaporkan ke Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Masuk sebagai {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Konfigurasikan"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Daftar putar {} dihapus"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} dihapus dari {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Tahan"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} Lagu"
-msgstr[1] "{} Lagu"
+
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Cari lagu, artis, album, dan daftar putar"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "Aplikasi manajemen dan pemutar musik bagi GNOME."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Kunjungi situs web Musik GNOME"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "GNOME Musik adalah perangkat lunak bebas; Anda dapat mendistribusikannya "
+#~ "dan/atau mengubahnya di bawah persyaratan GNU General Public License "
+#~ "sebagaimana dipublikasikan oleh Free Software Foundation; dengan Lisensi "
+#~ "versi 2, atau (sesuai pilihan Anda) sebarang versi lebih baru.\n"
+#~ "\n"
+#~ "GNOME Musik didistribusikan dengan harapan dapat berguna, tetapi TANPA "
+#~ "ADANYA JAMINAN; termasuk tanpa jaminan DAYA JUAL atau KELAIKAN UNTUK "
+#~ "TUJUAN TERTENTU. Lihat GNU General Public License untuk rincian lebih "
+#~ "lanjut.\n"
+#~ "\n"
+#~ "Anda seharusnya menerima salinan dari GNU General Public License bersama "
+#~ "GNOME Musik; jika tidak, kirimkan surat Anda ke Free Software Foundation, "
+#~ "Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
+#~ "\n"
+#~ "Para penulis GNOME Musik dengan ini memberikan ijin untuk plugin "
+#~ "GStreamer yang tak kompatibel dengan GPL untuk dipakai dan "
+#~ "didistribusikan bersama dengan GStreamer dan GNOME Musik. Ijin ini di "
+#~ "atas dan di luar hak yang diberikan oleh lisensi GPL yang mencakup GNOME "
+#~ "Musik. Bila Anda mengubah kode ini, Anda boleh memperluas pengecualian "
+#~ "ini ke versi kode Anda, tapi Anda tidak wajib melakukannya. Bila Anda "
+#~ "tak ingin seperti itu, hapuslah pernyataan pengecualian ini dari versi "
+#~ "Anda."
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "Isi Folder Musik Anda akan muncul di sini"
+
+#~ msgid "GNOME Music"
+#~ msgstr "GNOME Musik"
+
+#~ msgid "Window position"
+#~ msgstr "Posisi jendela"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Posisi jendela (x dan y)."
+
+#~ msgid "Loading"
+#~ msgstr "Memuat"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Tambah ke Daftar Putar…"
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
diff --git a/po/is.po b/po/is.po
index 0e5f5f8f..68e11bd7 100644
--- a/po/is.po
+++ b/po/is.po
@@ -1,25 +1,27 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
-# Sveinn í Felli <sv1@fellsnet.is>, 2015, 2017, 2018, 2019.
+# Sveinn í Felli <sv1@fellsnet.is>, 2015, 2017, 2018, 2019, 2021, 2022.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2019-07-02 16:43+0000\n"
-"PO-Revision-Date: 2019-07-06 07:50+0000\n"
+"POT-Creation-Date: 2022-08-27 13:27+0000\n"
+"PO-Revision-Date: 2022-10-17 14:03+0000\n"
"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
-"Language-Team: Icelandic <translation-team-is@lists.sourceforge.net>\n"
+"Language-Team: Icelandic\n"
"Language: is\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Lokalize 2.0\n"
+"X-Generator: Lokalize 21.12.3\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME tónlistarspilari"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:236
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Tónlist"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -27,25 +29,20 @@ msgid "Play and organize your music collection"
msgstr "Spila og skipuleggja tónlistarsafnið þitt"
#: data/org.gnome.Music.appdata.xml.in.in:9
-msgid ""
-"An easy way to play your music. Automatically discover music on your "
-"computer, the local network and internet services."
-msgstr ""
-"Einföld leið til að spila tónlistina þína. Finndu sjálfkrafa tónlist á "
-"tölvunni þinni, staðarnetinu og internetþjónustum."
+msgid "An easy and pleasant way to play your music."
+msgstr "Einföld og þægileg leið til að spila tónlistina þína."
#: data/org.gnome.Music.appdata.xml.in.in:12
msgid ""
-"Find tracks in your local collection, get music from DLNA servers or try "
-"something new with the Jamendo and Magnatune services."
+"Find tracks in your local collection, use automatically generated playlists "
+"or curate a fresh one."
msgstr ""
-"Finndu lög í þínu eigin safni, náðu í tónlist af DLNA-þjónum eða prófaðu "
-"eitthvað alveg nýtt frá þjónustum á borð við Jamendo og Magnatune."
+"Finnur lög í safninu þínu á tölvunni, notar sjálfvirkt útbúna spilunarlista "
+"eða útbýr nýja."
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:55
-#: gnomemusic/window.py:72
-msgid "Music"
-msgstr "Tónlist"
+#: data/org.gnome.Music.appdata.xml.in.in:167
+msgid "The GNOME Music developers"
+msgstr "GNOME Music forritararnir"
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
@@ -65,27 +62,19 @@ msgid "Window size (width and height)."
msgstr "Breidd og hæð glugga."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Staðsetning glugga"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Staðsetning glugga (x og y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Gluggi hámarkaður"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Hámörkunargildi glugga."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Endurtekningarhamur afspilunar"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -98,312 +87,269 @@ msgstr ""
"engin stokkun), “stokkun†(stokka spilunarlista, gerir ráð fyrir að "
"endurtaka allt)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Virkja ReplayGain styrkjöfnun"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
-msgstr "Virkjar eða gerir óvirka ReplayGain-styrkjöfnun fyrir albúm"
-
-#: data/org.gnome.Music.gschema.xml:38
-msgid "Inital state has been displayed"
-msgstr "Upphafsstaða var birt"
-
-#: data/org.gnome.Music.gschema.xml:39
-msgid "Set to true when initial state has been displayed"
-msgstr "Setja sem satt þegar upphafsstaða hefur verið birt"
+msgstr "Virkjar eða gerir óvirka ReplayGain-styrkjöfnun fyrir hljómplötur"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Koma í veg fyrir svæfingu kerfis"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Virkjar eða gerir óvirkt kerfi sem setur í hvíld á meðan tónlist er spiluð"
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Höfundarréttur © 2018 GNOME Music forritararnir"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Tónlistarspilari og forrit fyrir umsýslu tónlistar fyrir GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Fara á heimasíðu GNOME tónlistarspilarans"
+#: data/org.gnome.Music.gschema.xml:38
+msgid "Report music history to Last.fm"
+msgstr "Tilkynna tónlistarspilun ti Last.fm"
-#: data/ui/AboutDialog.ui.in:13
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version.\n"
-"\n"
-"“Magic of the vinyl†by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
-"https://www.flickr.com/photos/_spy_/12270839403"
+"Enables or disables sending scrobbles and the “currently playing†info to "
+"Last.fm."
msgstr ""
-"Þetta er frjáls hugbúnaður; þú mátt dreifa honum og/eða breyta samkvæmt "
-"skilmálum í almenna GNU GPL notkunarleyfinu eins og það er gefið út af "
-"Frjálsu hugbúnaðarstofnuninni; annaðhvort útgáfu 2 af GPL-leyfinu, eða (ef "
-"þér sýnist svo) einhverja nýrri útgáfu leyfisins.\n"
-"\n"
-"Hugbúnaðnum er dreift í þeirri von að hann geti verið gagnlegur, en ÃN "
-"ALLRAR ÃBYRGÃAR; einnig án þeirrar ábyrgðar sem gefin er í skyn með "
-"SELJANLEIKA eða EIGINLEIKUM TIL TILTEKINNA NOTA. Sjá almenna GNU GPL "
-"notkunarleyfið fyrir nánari upplýsingar.\n"
-"\n"
-"Það ætti að hafa fylgt afrit af almenna GNU GPL notkunarleyfinu með "
-"forritinu; ef ekki skrifið þá Fjálsu hugbúnarstofnuninni: Free Software "
-"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
-"USA.\n"
-"\n"
-"Höfundar GNOME Music gefa hér með leyfi sitt fyrir því að nota megi "
-"GStreamer viðbætur sem ekki falla undir GPL-notkunarleyfi eða sé ekki dreift "
-"með GStreamer og GNOME Music. Þessi heimild er rétthærri en kvaðir GPL-"
-"skilmálanna sem GNOME Music fellur undir. Ef þú breytir þessum kóða, "
-"geturðu víkkað þessa undanþágu til að ná yfir þína útgáfu kóðans, en slíkt "
-"er ekki skylda. Ef þú ákveður að gera það ekki, eyddu þá þessari undanþágu "
-"út úr þinni útgáfu.\n"
-"\n"
-"Myndin \"Magic of the vinyl\" eftir Sami Pyylampi er notuð skv. CC-BY-SA 2.0 "
-"https://www.flickr.com/photos/_spy_/12270839403"
-
-#: data/ui/AlbumWidget.ui:112
-msgid "Released"
-msgstr "Útgefið"
-
-#: data/ui/AlbumWidget.ui:128
-msgid "Running Length"
-msgstr "Spilunartími"
-
-#: data/ui/AlbumWidget.ui:173 gnomemusic/widgets/searchbar.py:71
-msgid "Composer"
-msgstr "Tónskáld"
-
-#: data/ui/AppMenu.ui:21
+"Virkjar eða gerir óvirkt að senda til Last.fm upplýsingar um tónlistarspilun "
+"(scrobbling) og upplýsingar um \"í spilun núna\"."
+
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
+msgid "Play"
+msgstr "Spila"
+
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
+msgid "_Play"
+msgstr "S_pila"
+
+#: data/ui/AlbumWidget.ui:134
+msgid "Add to _Favorite Songs"
+msgstr "Bæta við í U_ppáhaldslög"
+
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
+msgid "_Add to Playlist…"
+msgstr "Bæt_a við spilunarlista…"
+
+#: data/ui/AppMenu.ui:23 data/ui/LastfmDialog.ui:8
+msgid "Last.fm Account"
+msgstr "Last.fm notandaaðgangur"
+
+#: data/ui/AppMenu.ui:36
+msgid "Report Music Listening"
+msgstr "Tilkynna tónlistarspilun"
+
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Flýtivísanir á lyklaborði"
-#: data/ui/AppMenu.ui:35
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Hjálp"
-#: data/ui/AppMenu.ui:49
-#| msgid "_About"
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_Um Music tónlistarhugbúnaðinn"
-#: data/ui/HeaderBar.ui:13
+#: data/ui/EmptyView.ui:30
+msgid "Welcome to Music"
+msgstr "Velkomin í Music-tónlistarspilarann"
+
+#: data/ui/HeaderBar.ui:16
msgid "Menu"
msgstr "Valmynd"
-#: data/ui/HeaderBar.ui:36
-msgid "Search"
-msgstr "Leita"
-
-#: data/ui/HeaderBar.ui:59
+#: data/ui/HeaderBar.ui:24 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Velja"
-#: data/ui/HeaderBar.ui:81 data/ui/PlaylistDialog.ui:282
+#: data/ui/HeaderBar.ui:30 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Hætta við"
-#: data/ui/HeaderBar.ui:100
+#: data/ui/HeaderBar.ui:42 data/ui/SearchHeaderBar.ui:32
+msgid "Search"
+msgstr "Leita"
+
+#: data/ui/HeaderBar.ui:50
msgid "Back"
msgstr "Til baka"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Almennt"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Loka glugga"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Leita"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Hjálp"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Flýtilyklar"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Afspilun"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Spila / Bíða"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Næsta lag"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Fyrra lag"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Víxla endurtekningu af/á"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Víxla stokkun af/á"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Flakk"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
-msgstr "Fara í Albúm"
+msgstr "Fara í Hljómplötur"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Fara í Flytjendur"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Fara í Lög"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Fara í Spilunarlistar"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Fara til baka"
-#: data/ui/PlayerToolbar.ui:6
-msgid "Shuffle"
-msgstr "Stokka"
+#: data/ui/LastfmDialog.ui:21
+msgid ""
+"Last.fm is a music discovery service that gives you personalised "
+"recommendations based on the music you listen to."
+msgstr ""
+"Last.fm er tónlistarveita sem gefur þér perónulegar ráðleggingar byggðar á "
+"þeirri tónlist sem þú hlustar á."
-#: data/ui/PlayerToolbar.ui:11
-msgid "Repeat All"
-msgstr "Endurtaka allt"
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
+msgid "Music Reporting Not Setup"
+msgstr "Ekki búið að setja upp tilkynningar um tónlistarspilun"
-#: data/ui/PlayerToolbar.ui:16
-msgid "Repeat Song"
-msgstr "Endurtaka lag"
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
+msgid "Login to your Last.fm account to report your music listening."
+msgstr ""
+"Skráðu þig inn á Last.fm aðganginn þinn til að tilkynna tónlistarspilunina "
+"þína."
-#. Causes tracks to play in random order
-#: data/ui/PlayerToolbar.ui:21
-msgid "Shuffle/Repeat Off"
-msgstr "Stokkun/Endurtekning af"
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
+msgid "Login"
+msgstr "Innskráning"
-#: data/ui/PlayerToolbar.ui:70
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Fyrra"
-#: data/ui/PlayerToolbar.ui:88 gnomemusic/widgets/playertoolbar.py:139
-msgid "Play"
-msgstr "Spila"
-
#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Næsta"
-#: data/ui/PlaylistContextMenu.ui:5
-msgctxt "context menu item"
-msgid "Play"
-msgstr "Spila"
-
-#: data/ui/PlaylistContextMenu.ui:9
-msgid "Add to Playlist…"
-msgstr "Bæta við spilunarlista…"
-
-#: data/ui/PlaylistContextMenu.ui:13
-msgid "Remove From Playlist"
-msgstr "Fjarlægja af spilunarlista"
-
-#: data/ui/PlaylistControls.ui:6
-msgid "_Play"
-msgstr "S_pila"
-
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Eyða"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "Endu_rnefna…"
-#: data/ui/PlaylistControls.ui:33
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Heiti spilunarlista"
-#: data/ui/PlaylistControls.ui:67
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Lokið"
-#: data/ui/PlaylistDialog.ui:68
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Settu inn heiti á fyrsta spilunarlistann þinn"
-#: data/ui/PlaylistDialog.ui:97
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "_Búa til"
-#: data/ui/PlaylistDialog.ui:168
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Nýr spilunarlisti…"
-#: data/ui/PlaylistDialog.ui:184
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Bæta við"
-#: data/ui/PlaylistDialog.ui:279
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Bæta við spilunarlista"
-#: data/ui/PlaylistDialog.ui:295
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "Bæt_a við"
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
+msgid "Artists"
+msgstr "Flytjendur"
+
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
+msgid "View All"
+msgstr "Skoða allt"
+
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
+msgid "Albums"
+msgstr "Hljómplötur"
+
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
+msgid "Songs"
+msgstr "Lög"
+
#: data/ui/SelectionBarMenuButton.ui:7
msgid "Select All"
msgstr "Velja allt"
@@ -412,191 +358,350 @@ msgstr "Velja allt"
msgid "Select None"
msgstr "Velja ekkert"
-#: data/ui/SelectionBarMenuButton.ui:31 gnomemusic/widgets/headerbar.py:75
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Smelltu á atriði til að velja þau"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "Bæt_a við spilunarlista"
-#: gnomemusic/gstplayer.py:390
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "Fja_rlægja af spilunarlista"
+
+#: gnomemusic/about.py:238
+msgid "The GNOME Project"
+msgstr "GNOME-verkefnið"
+
+#: gnomemusic/about.py:242
+msgid "translator-credits"
+msgstr "Sveinn í Felli, sv1@fellsnet.is"
+
+#: gnomemusic/about.py:246
+#| msgid "Copyright © 2018 GNOME Music Developers"
+msgid "Copyright The GNOME Music Developers"
+msgstr "Höfundarréttur © GNOME Music forritararnir"
+
+#: gnomemusic/about.py:249
+msgid "Translated by"
+msgstr "Þýtt af"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
+msgid "Most Played"
+msgstr "Mest spilað"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
+msgid "Never Played"
+msgstr "Aldrei spilað"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
+msgid "Recently Played"
+msgstr "Nýlega spilað"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
+msgid "Recently Added"
+msgstr "Nýlega bætt við"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
+msgid "Favorite Songs"
+msgstr "Uppáhaldslög"
+
+#: gnomemusic/gstplayer.py:408
msgid "Unable to play the file"
msgstr "Gat ekki spilað skrána"
-#: gnomemusic/gstplayer.py:396
+#: gnomemusic/gstplayer.py:414
msgid "_Find in {}"
msgstr "_Finna í {}"
#. TRANSLATORS: separator for two codecs
-#: gnomemusic/gstplayer.py:407
+#: gnomemusic/gstplayer.py:424
msgid " and "
msgstr " og "
#. TRANSLATORS: separator for a list of codecs
-#: gnomemusic/gstplayer.py:410
+#: gnomemusic/gstplayer.py:427
msgid ", "
msgstr ", "
-#: gnomemusic/gstplayer.py:412
+#: gnomemusic/gstplayer.py:429
msgid "{} is required to play the file, but is not installed."
msgid_plural "{} are required to play the file, but are not installed."
msgstr[0] "{} er nauðsynlegt til að spila skrána, en er ekki uppsett."
msgstr[1] "{} eru nauðsynleg til að spila skrána, en eru ekki uppsett."
-#: gnomemusic/inhibitsuspend.py:67
+#: gnomemusic/inhibitsuspend.py:63
msgid "Playing music"
msgstr "Spilandi tónlist"
-#. TRANSLATORS: this is a playlist name
-#: gnomemusic/playlists.py:59
-msgid "Most Played"
-msgstr "Mest spilað"
+#. Translators: "shuffle" causes tracks to play in random order.
+#: gnomemusic/player.py:44
+msgid "Shuffle"
+msgstr "Stokka"
-#. TRANSLATORS: this is a playlist name
-#: gnomemusic/playlists.py:64
-msgid "Never Played"
-msgstr "Aldrei spilað"
+#: gnomemusic/player.py:45
+msgid "Repeat Song"
+msgstr "Endurtaka lag"
-#. TRANSLATORS: this is a playlist name
-#: gnomemusic/playlists.py:69
-msgid "Recently Played"
-msgstr "Nýlega spilað"
+#: gnomemusic/player.py:46
+msgid "Repeat All"
+msgstr "Endurtaka allt"
-#. TRANSLATORS: this is a playlist name
-#: gnomemusic/playlists.py:74
-msgid "Recently Added"
-msgstr "Nýlega bætt við"
+#: gnomemusic/player.py:47
+msgid "Shuffle/Repeat Off"
+msgstr "Stokkun/Endurtekning af"
-#. TRANSLATORS: this is a playlist name
-#: gnomemusic/playlists.py:79
-msgid "Favorite Songs"
-msgstr "Uppáhaldslög"
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Spilunarlisti {} fjarlægður"
-#: gnomemusic/utils.py:75
-msgid "Unknown Artist"
-msgstr "Óþekktur flytjandi"
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Afturkalla"
-#: gnomemusic/utils.py:87
-msgid "Untitled"
-msgstr "Ónefnt"
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} fjarlægt úr {}"
-#: gnomemusic/views/albumsview.py:44 gnomemusic/views/searchview.py:577
-msgid "Albums"
-msgstr "Albúm"
+#: gnomemusic/utils.py:92
+msgid "Unknown album"
+msgstr "Óþekkt hljómplata"
-#: gnomemusic/views/artistsview.py:61 gnomemusic/views/searchview.py:579
-msgid "Artists"
-msgstr "Flytjendur"
+#: gnomemusic/utils.py:113
+msgid "Unknown Artist"
+msgstr "Óþekktur flytjandi"
+
+#: gnomemusic/views/emptyview.py:65
+msgid "Your XDG Music directory is not set."
+msgstr "XDG-tónlistarmappa hefur ekki verið skilgreind."
-#: gnomemusic/views/emptyview.py:67
-msgid "Music folder"
+#: gnomemusic/views/emptyview.py:72
+msgid "Music Folder"
msgstr "Tónlistarmappa"
#. TRANSLATORS: This is a label to display a link to open user's music
#. folder. {} will be replaced with the translated text 'Music folder'
-#: gnomemusic/views/emptyview.py:71
+#: gnomemusic/views/emptyview.py:76
msgid "The contents of your {} will appear here."
msgstr "Innihald {} birtist hér."
-#: gnomemusic/views/emptyview.py:105
-msgid "Hey DJ"
-msgstr "Plötusnúður"
-
-#: gnomemusic/views/emptyview.py:115 gnomemusic/views/emptyview.py:121
-msgid "No music found"
+#: gnomemusic/views/emptyview.py:124
+msgid "No Music Found"
msgstr "Engin tónlist fannst"
-#: gnomemusic/views/emptyview.py:123
-msgid "Try a different search"
+#: gnomemusic/views/emptyview.py:125
+msgid "Try a Different Search"
msgstr "Reyna aðra leit"
#: gnomemusic/views/emptyview.py:129
-msgid "GNOME Music could not connect to Tracker"
-msgstr "GNOME tónlistarspilarinn gat ekki tengst Tracker-kerfinu"
+msgid "GNOME Music could not connect to Tracker."
+msgstr "GNOME tónlistarspilarinn gat ekki tengst Tracker-kerfinu."
-#: gnomemusic/views/emptyview.py:132
-msgid "Your music files cannot be indexed without Tracker running"
+#: gnomemusic/views/emptyview.py:131
+msgid "Your music files cannot be indexed without Tracker running."
msgstr ""
-"Ekki er hægt að gera yfirlitsskrá yfir tónlistarskrár nema Tracker sé í gangi"
+"Ekki er hægt að gera yfirlitsskrá yfir tónlistarskrár nema Tracker sé í "
+"gangi."
+
+#: gnomemusic/views/emptyview.py:137
+msgid "Your system Tracker version seems outdated."
+msgstr "Tracker-útgáfa kerfisins þíns lítur út fyrir að vera úrelt."
+
+#: gnomemusic/views/emptyview.py:139
+msgid "Music needs Tracker version 3.0.0 or higher."
+msgstr "Tónlistarspilarinn þarf Tracker útgáfu 3.0.0 eða hærri."
-#: gnomemusic/views/playlistview.py:67 gnomemusic/views/searchview.py:583
+#: gnomemusic/views/playlistsview.py:45
msgid "Playlists"
msgstr "Spilunarlistar"
-#: gnomemusic/views/playlistview.py:640
-msgid "Playlist {} removed"
-msgstr "Spilunarlisti {} fjarlægður"
-
-#: gnomemusic/views/playlistview.py:646
-msgid "{} removed from {}"
-msgstr "{} fjarlægt úr {}"
+#: gnomemusic/views/searchview.py:304
+msgid "Artists Results"
+msgstr "Niðurstöður um flytjendur"
-#: gnomemusic/views/searchview.py:581 gnomemusic/views/songsview.py:55
-msgid "Songs"
-msgstr "Lög"
+#: gnomemusic/views/searchview.py:318
+msgid "Albums Results"
+msgstr "Niðurstöður um hljómplötur"
-#: gnomemusic/widgets/albumwidget.py:168
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} mínúta"
msgstr[1] "{} mínútur"
-#: gnomemusic/widgets/disclistboxwidget.py:141
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Diskur {}"
-#: gnomemusic/widgets/headerbar.py:72
-msgid "Selected {} item"
-msgid_plural "Selected {} items"
-msgstr[0] "Valdi {} atriði"
-msgstr[1] "Valdi {} atriði"
+#: gnomemusic/widgets/headerbar.py:66
+msgid "Selected {} song"
+msgid_plural "Selected {} songs"
+msgstr[0] "Valdi {} lag"
+msgstr[1] "Valdi {} lög"
-#: gnomemusic/widgets/notificationspopup.py:169
-msgid "Loading"
-msgstr "Hleð inn"
+#: gnomemusic/widgets/lastfmdialog.py:64
+msgid "Your music listening is reported to Last.fm."
+msgstr "Tónlistarspilun þín er tilkynnt til Last.fm."
-#: gnomemusic/widgets/notificationspopup.py:232
-msgid "_Undo"
-msgstr "_Afturkalla"
+#: gnomemusic/widgets/lastfmdialog.py:66
+msgid "Your music listening is not reported to Last.fm."
+msgstr "Tónlistarspilun þín er ekki tilkynnt til Last.fm."
-#: gnomemusic/widgets/playertoolbar.py:136
+#. TRANSLATORS: displays the username of the Last.fm account
+#: gnomemusic/widgets/lastfmdialog.py:70
+msgid "Logged in as {}"
+msgstr "Skráð inn sem {}"
+
+#: gnomemusic/widgets/lastfmdialog.py:71
+msgid "Configure"
+msgstr "Stilla"
+
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Hlé"
-#: gnomemusic/widgets/playlistcontrols.py:96
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} lag"
msgstr[1] "{} lög"
-#: gnomemusic/widgets/searchbar.py:68 gnomemusic/widgets/searchbar.py:117
-msgid "All"
-msgstr "Allt"
-
-#: gnomemusic/widgets/searchbar.py:69
-msgid "Artist"
-msgstr "Flytjandi"
-
-#: gnomemusic/widgets/searchbar.py:70
-msgid "Album"
-msgstr "Albúm"
-
-#: gnomemusic/widgets/searchbar.py:72
-msgid "Track Title"
-msgstr "Heiti lags"
-
-#: gnomemusic/widgets/searchbar.py:118
-msgid "Local"
-msgstr "Staðvært"
-
-#: gnomemusic/widgets/searchbar.py:287
-msgid "Sources"
-msgstr "Uppruni"
-
-#: gnomemusic/widgets/searchbar.py:298
-msgid "Match"
-msgstr "Samsvörun"
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "Tónlistarspilari og forrit fyrir umsýslu tónlistar fyrir GNOME."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Fara á heimasíðu GNOME tónlistarspilarans"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "Þetta er frjáls hugbúnaður; þú mátt dreifa honum og/eða breyta samkvæmt "
+#~ "skilmálum í almenna GNU GPL notkunarleyfinu eins og það er gefið út af "
+#~ "Frjálsu hugbúnaðarstofnuninni; annaðhvort útgáfu 2 af GPL-leyfinu, eða "
+#~ "(ef þér sýnist svo) einhverja nýrri útgáfu leyfisins.\n"
+#~ "\n"
+#~ "Hugbúnaðnum er dreift í þeirri von að hann geti verið gagnlegur, en ÃN "
+#~ "ALLRAR ÃBYRGÃAR; einnig án þeirrar ábyrgðar sem gefin er í skyn með "
+#~ "SELJANLEIKA eða EIGINLEIKUM TIL TILTEKINNA NOTA. Sjá almenna GNU GPL "
+#~ "notkunarleyfið fyrir nánari upplýsingar.\n"
+#~ "\n"
+#~ "Það ætti að hafa fylgt afrit af almenna GNU GPL notkunarleyfinu með "
+#~ "forritinu; ef ekki skrifið þá Fjálsu hugbúnarstofnuninni: Free Software "
+#~ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+#~ "USA.\n"
+#~ "\n"
+#~ "Höfundar GNOME Music gefa hér með leyfi sitt fyrir því að nota megi "
+#~ "GStreamer viðbætur sem ekki falla undir GPL-notkunarleyfi eða sé ekki "
+#~ "dreift með GStreamer og GNOME Music. Þessi heimild er rétthærri en "
+#~ "kvaðir GPL-skilmálanna sem GNOME Music fellur undir. Ef þú breytir "
+#~ "þessum kóða, geturðu víkkað þessa undanþágu til að ná yfir þína útgáfu "
+#~ "kóðans, en slíkt er ekki skylda. Ef þú ákveður að gera það ekki, eyddu "
+#~ "þá þessari undanþágu út úr þinni útgáfu."
+
+#~| msgid "The contents of your {} will appear here."
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "Innihald Tónlist-möppunnar þinnar birtist hér"
+
+#~ msgid "GNOME Music"
+#~ msgstr "GNOME tónlistarspilari"
+
+#~ msgid "Window position"
+#~ msgstr "Staðsetning glugga"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Staðsetning glugga (x og y)."
+
+#~ msgid "Loading"
+#~ msgstr "Hleð inn"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Bæta við spilunarlista…"
+
+#~ msgid ""
+#~ "An easy way to play your music. Automatically discover music on your "
+#~ "computer, the local network and internet services."
+#~ msgstr ""
+#~ "Einföld leið til að spila tónlistina þína. Finndu sjálfkrafa tónlist á "
+#~ "tölvunni þinni, staðarnetinu og internetþjónustum."
+
+#~ msgid ""
+#~ "Find tracks in your local collection, get music from DLNA servers or try "
+#~ "something new with the Jamendo and Magnatune services."
+#~ msgstr ""
+#~ "Finndu lög í þínu eigin safni, náðu í tónlist af DLNA-þjónum eða prófaðu "
+#~ "eitthvað alveg nýtt frá þjónustum á borð við Jamendo og Magnatune."
+
+#~ msgid "Inital state has been displayed"
+#~ msgstr "Upphafsstaða var birt"
+
+#~ msgid "Set to true when initial state has been displayed"
+#~ msgstr "Setja sem satt þegar upphafsstaða hefur verið birt"
+
+#~ msgid "Released"
+#~ msgstr "Útgefið"
+
+#~ msgid "Running Length"
+#~ msgstr "Spilunartími"
+
+#~ msgid "Composer"
+#~ msgstr "Tónskáld"
+
+#~ msgctxt "context menu item"
+#~ msgid "Play"
+#~ msgstr "Spila"
+
+#~ msgid "Untitled"
+#~ msgstr "Ónefnt"
+
+#~ msgid "Hey DJ"
+#~ msgstr "Plötusnúður"
+
+#~ msgid "All"
+#~ msgstr "Allt"
+
+#~ msgid "Artist"
+#~ msgstr "Flytjandi"
+
+#~ msgid "Album"
+#~ msgstr "Albúm"
+
+#~ msgid "Track Title"
+#~ msgstr "Heiti lags"
+
+#~ msgid "Local"
+#~ msgstr "Staðvært"
+
+#~ msgid "Sources"
+#~ msgstr "Uppruni"
+
+#~ msgid "Match"
+#~ msgstr "Samsvörun"
#~ msgid "@icon@"
#~ msgstr "@icon@"
@@ -640,9 +745,6 @@ msgstr "Samsvörun"
#~ msgid "the|a|an"
#~ msgstr "the|a|an"
-#~ msgid "Unknown Album"
-#~ msgstr "Óþekkt albúm"
-
#~ msgid "the a an"
#~ msgstr "the a an hin"
diff --git a/po/it.po b/po/it.po
index ed492671..ac86993a 100644
--- a/po/it.po
+++ b/po/it.po
@@ -1,6 +1,6 @@
# Italian translation of Gnome Music.
# Copyright (C) 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Free Software Foundation, Inc.
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2020, 2022, 2023 Free Software Foundation, Inc.
#
# Convenzioni usate:
#
@@ -13,27 +13,30 @@
# Bonjour/Zeroconf ed il widget che permette di filtrare
# per artista/album/autore. Il primo è browser, il
# secondo catalogo (ove possibile distinguere)
-# Milo Casagrande <milo@milo.name>, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020.
+# Milo Casagrande <milo@milo.name>, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2022, 2023.
+# Gianvito Cavasoli <gianvito@gmx.it>, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2020-08-28 15:14+0000\n"
-"PO-Revision-Date: 2020-09-03 09:27+0200\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-08-30 09:47+0200\n"
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
-"Language-Team: Italian <tp@lists.linux.it>\n"
+"Language-Team: Italian <gnome-it-list@gnome.org>\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Launchpad-Export-Date: 2012-03-06 09:28+0000\n"
-"X-Generator: Poedit 2.4.1\n"
+"X-Generator: Poedit 3.1.1\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME Musica"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Musica"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -41,31 +44,21 @@ msgid "Play and organize your music collection"
msgstr "Riproduce e organizza la collezione musicale"
#: data/org.gnome.Music.appdata.xml.in.in:9
-msgid ""
-"An easy way to play your music. Automatically discover music on your "
-"computer, the local network and internet services."
-msgstr ""
-"Un modo semplice per ascoltare la propria musica. Scopre automaticamente la "
-"musica sul proprio computer, sulla rete locale e attraverso i servizi "
-"Interne."
+msgid "An easy and pleasant way to play your music."
+msgstr "Un modo semplice e piacevole per riprodurre la propria musica."
#: data/org.gnome.Music.appdata.xml.in.in:12
msgid ""
-"Find tracks in your local collection, get music from DLNA servers or try "
-"something new with the Jamendo and Magnatune services."
+"Find tracks in your local collection, use automatically generated playlists "
+"or curate a fresh one."
msgstr ""
-"Trova brani nella propria collezione musicale, attraverso servizi DLNA o per "
-"qualche cosa di nuovo è possibile usare servizi come Jamendo e Magnatune."
+"Trova i brani nella tua raccolta locale, usa le playlist generate "
+"automaticamente o curane una nuova."
-#: data/org.gnome.Music.appdata.xml.in.in:110
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "Gli sviluppatori di GNOME Musica"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:70
-msgid "Music"
-msgstr "Musica"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Riproduttore musicale"
@@ -84,27 +77,19 @@ msgid "Window size (width and height)."
msgstr "La dimensione della finestra (larghezza e altezza)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Posizione finestra"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "La posizione della finestra (x e y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Finestra massimizzata"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Lo stato di massimizzazione della finestra."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Modalità ripetizione"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -117,37 +102,29 @@ msgstr ""
"riproduzione casuale), \"shuffle\" (riproduzione casuale della playlist, "
"assume di ripetere tutto)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Abilita ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Abilita o disabilita il ReplayGain per gli album"
-#: data/org.gnome.Music.gschema.xml:38
-msgid "Inital state has been displayed"
-msgstr "Lo stato iniziale è stato visualizzato"
-
-#: data/org.gnome.Music.gschema.xml:39
-msgid "Set to true when initial state has been displayed"
-msgstr "Impostata a VERO quando lo stato iniziale è stato visualizzato"
-
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Inibisce la sospensione del sistema"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Abilita/Disabilita la sospensione del sistema quando viene riprodotta della "
"musica"
-#: data/org.gnome.Music.gschema.xml:48
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Invia la cronologia musicale a Last.fm"
-#: data/org.gnome.Music.gschema.xml:49
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -155,204 +132,150 @@ msgstr ""
"Abilita/Disabilita l'invio della musica ascoltata e della musica in "
"riproduzione a Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 Gli sviluppatori di GNOME Musica"
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
+msgid "Play"
+msgstr "Riproduci"
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Una applicazione per GNOME per riprodurre e gestire la propria musica."
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
+msgid "_Play"
+msgstr "_Riproduci"
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Visita il sito web di GNOME Musica"
+#: data/ui/AlbumWidget.ui:134
+msgid "Add to _Favorite Songs"
+msgstr "Aggiungi ai _brani preferiti"
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version.\n"
-"\n"
-"“Magic of the vinyl†by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
-"https://www.flickr.com/photos/_spy_/12270839403"
-msgstr ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version.\n"
-"\n"
-"“Magic of the vinyl†by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
-"https://www.flickr.com/photos/_spy_/12270839403"
-
-#: data/ui/AlbumWidget.ui:107
-msgid "Released"
-msgstr "Pubblicato"
-
-#: data/ui/AlbumWidget.ui:123
-msgid "Running Length"
-msgstr "Durata"
-
-#: data/ui/AlbumWidget.ui:167
-msgid "Composer"
-msgstr "Compositore"
-
-#: data/ui/AppMenu.ui:20 data/ui/LastfmDialog.ui:8
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
+msgid "_Add to Playlist…"
+msgstr "Aggiungi a _playlist…"
+
+#: data/ui/AppMenu.ui:23 data/ui/LastfmDialog.ui:8
msgid "Last.fm Account"
msgstr "Account Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Invia musica ascoltata"
-#: data/ui/AppMenu.ui:69
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Scorciatoie da tastiera"
-#: data/ui/AppMenu.ui:83
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "A_iuto"
-#: data/ui/AppMenu.ui:97
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "I_nformazioni su Musica"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/EmptyView.ui:30
+msgid "Welcome to Music"
+msgstr "Benvenuti in Musica"
+
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Menù"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Seleziona"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:244
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "A_nnulla"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Cerca"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Indietro"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Generale"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Chiude la finestra"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Cerca"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Aiuto"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Scorciatoie"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Riproduzione"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Riproduci/Pausa"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Brano successivo"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Brano precedente"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Attiva/Disattiva ripetizione"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Attiva/Disattiva riproduzione casuale"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navigazione"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Va agli album"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Va agli artisti"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Va ai brani"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Va alle playlist"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Indietro"
@@ -365,126 +288,80 @@ msgstr ""
"Last.fm è un servizio di scoperta musicale che fornisce raccomandazioni "
"personalizzate in base alla musica ascoltata."
-#: data/ui/LastfmDialog.ui:32 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Invio cronologia musicale non attivo"
-#: data/ui/LastfmDialog.ui:46 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"Accedere al proprio account Last.fm per inviare la cronologia musicale."
-#: data/ui/LastfmDialog.ui:57 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Accedi"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Caricamento"
-
-#: data/ui/PlayerToolbar.ui:6
-msgid "Shuffle"
-msgstr "Mischia"
-
-#: data/ui/PlayerToolbar.ui:11
-msgid "Repeat All"
-msgstr "Ripeti tutto"
-
-#: data/ui/PlayerToolbar.ui:16
-msgid "Repeat Song"
-msgstr "Ripeti brano"
-
-#. Causes tracks to play in random order
-#: data/ui/PlayerToolbar.ui:21
-msgid "Shuffle/Repeat Off"
-msgstr "Mischia/Ripeti disattivati"
-
-#: data/ui/PlayerToolbar.ui:69
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Precedente"
-#: data/ui/PlayerToolbar.ui:85 gnomemusic/widgets/playertoolbar.py:146
-msgid "Play"
-msgstr "Riproduci"
-
-#: data/ui/PlayerToolbar.ui:101
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Successiva"
-#: data/ui/PlaylistContextMenu.ui:5
-msgctxt "context menu item"
-msgid "Play"
-msgstr "Riproduci"
-
-#: data/ui/PlaylistContextMenu.ui:9
-msgid "Add to Playlist…"
-msgstr "Aggiungi a playlist…"
-
-#: data/ui/PlaylistContextMenu.ui:13
-msgid "Remove From Playlist"
-msgstr "Rimuovi da playlist"
-
-#: data/ui/PlaylistControls.ui:6
-msgid "_Play"
-msgstr "_Riproduci"
-
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Elimina"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Rinomina…"
-#: data/ui/PlaylistControls.ui:41
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Nome playlist"
-#: data/ui/PlaylistControls.ui:74
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Fatto"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Inserire un nome per la prima playlist"
-#: data/ui/PlaylistDialog.ui:92
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "C_rea"
-#: data/ui/PlaylistDialog.ui:155
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Nuova playlist…"
-#: data/ui/PlaylistDialog.ui:169
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Aggiungi"
-#: data/ui/PlaylistDialog.ui:241
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Aggiungi a playlist"
-#: data/ui/PlaylistDialog.ui:257
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "A_ggiungi"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "A_nnulla"
-
-#: data/ui/SearchView.ui:43 gnomemusic/views/artistsview.py:43
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Artisti"
-#: data/ui/SearchView.ui:53 data/ui/SearchView.ui:106
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Visualizza tutti"
-#: data/ui/SearchView.ui:96 gnomemusic/views/albumsview.py:47
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Album"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:44
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Brani"
@@ -496,58 +373,78 @@ msgstr "Seleziona tutto"
msgid "Select None"
msgstr "Deseleziona tutto"
-#: data/ui/SelectionBarMenuButton.ui:31 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Fare clic sugli elementi per selezionarli"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "Aggiungi a _playlist"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Rimuovi da playlist"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "Il progetto GNOME"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr "Milo Casagrande <milo@milo.name>"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Copyright de gli sviluppatori di GNOME Musica"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Milo Casagrande <milo@milo.name>"
+
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:832
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Più ascoltati"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:885
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Mai ascoltati"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:937
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Ascoltati di recente"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:999
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Aggiunti di recente"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1061
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Brani preferiti"
-#: gnomemusic/gstplayer.py:378
+#: gnomemusic/gstplayer.py:408
msgid "Unable to play the file"
msgstr "Impossibile riprodurre il file"
-#: gnomemusic/gstplayer.py:384
+#: gnomemusic/gstplayer.py:414
msgid "_Find in {}"
msgstr "_Trova in {}"
#. TRANSLATORS: separator for two codecs
-#: gnomemusic/gstplayer.py:394
+#: gnomemusic/gstplayer.py:424
msgid " and "
msgstr " e "
#. TRANSLATORS: separator for a list of codecs
-#: gnomemusic/gstplayer.py:397
+#: gnomemusic/gstplayer.py:427
msgid ", "
msgstr ", "
-#: gnomemusic/gstplayer.py:399
+#: gnomemusic/gstplayer.py:429
msgid "{} is required to play the file, but is not installed."
msgid_plural "{} are required to play the file, but are not installed."
msgstr[0] "{} è richiesto per riprodurre i file, ma non è installato."
@@ -557,117 +454,138 @@ msgstr[1] "{} sono richiesti per riprodurre il file, ma non sono installati."
msgid "Playing music"
msgstr "Musica in riproduzione"
-#: gnomemusic/utils.py:81
+#. Translators: "shuffle" causes tracks to play in random order.
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Mischia/Ripeti disattivati"
+
+#: gnomemusic/player.py:45
+msgid "Repeat Song"
+msgstr "Ripeti brano"
+
+#: gnomemusic/player.py:46
+msgid "Repeat All"
+msgstr "Ripeti tutto"
+
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Mischia"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Playlist {} rimossa"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Annulla"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} rimosso da {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Album sconosciuto"
-#: gnomemusic/utils.py:102
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Artista sconosciuto"
-#: gnomemusic/views/emptyview.py:67
+#: gnomemusic/views/emptyview.py:65
msgid "Your XDG Music directory is not set."
msgstr "La directory Musica di XDG non è impostata."
-#: gnomemusic/views/emptyview.py:74
-msgid "Music folder"
+#: gnomemusic/views/emptyview.py:72
+msgid "Music Folder"
msgstr "Cartella Musica"
#. TRANSLATORS: This is a label to display a link to open user's music
#. folder. {} will be replaced with the translated text 'Music folder'
-#: gnomemusic/views/emptyview.py:78
+#: gnomemusic/views/emptyview.py:76
msgid "The contents of your {} will appear here."
msgstr "Il contenuto della propria «{}» apparirà qui."
-#: gnomemusic/views/emptyview.py:112
-msgid "Hey DJ"
-msgstr "Hey DJ"
-
-#: gnomemusic/views/emptyview.py:121 gnomemusic/views/emptyview.py:126
-msgid "No music found"
+#: gnomemusic/views/emptyview.py:124
+msgid "No Music Found"
msgstr "Nessuna musica trovata"
-#: gnomemusic/views/emptyview.py:128
-msgid "Try a different search"
+#: gnomemusic/views/emptyview.py:125
+msgid "Try a Different Search"
msgstr "Provare con un'altra ricerca"
-#: gnomemusic/views/emptyview.py:133
-msgid "GNOME Music could not connect to Tracker"
-msgstr "Impossibile collegarsi a Tracker"
+#: gnomemusic/views/emptyview.py:129
+msgid "GNOME Music could not connect to Tracker."
+msgstr "Impossibile collegarsi a Tracker."
-#: gnomemusic/views/emptyview.py:136
-msgid "Your music files cannot be indexed without Tracker running"
+#: gnomemusic/views/emptyview.py:131
+msgid "Your music files cannot be indexed without Tracker running."
msgstr ""
"Non è possibile indicizzare i propri file musicali senza Tracker in "
-"esecuzione"
+"esecuzione."
-#: gnomemusic/views/emptyview.py:143
-msgid "Your system Tracker version seems outdated"
-msgstr "La versione di Tracker del sistema non sembra essere recente"
+#: gnomemusic/views/emptyview.py:137
+msgid "Your system Tracker version seems outdated."
+msgstr "La versione di Tracker del sistema non sembra essere recente."
-#: gnomemusic/views/emptyview.py:146
-msgid "Music needs Tracker version 3.0.0 or higher"
-msgstr "Musica necessita della versione 3.0.0, o successive, di Tracker"
+#: gnomemusic/views/emptyview.py:139
+msgid "Music needs Tracker version 3.0.0 or higher."
+msgstr "Musica necessita della versione 3.0.0, o successive, di Tracker."
-#: gnomemusic/views/playlistsview.py:41
+#: gnomemusic/views/playlistsview.py:45
msgid "Playlists"
msgstr "Playlist"
-#: gnomemusic/views/searchview.py:386
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Risultati artisti"
-#: gnomemusic/views/searchview.py:401
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Risultati album"
-#: gnomemusic/widgets/albumwidget.py:154
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minuto"
msgstr[1] "{} minuti"
-#: gnomemusic/widgets/disclistboxwidget.py:60
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Disco {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "Selezionato {} brano"
msgstr[1] "Selezionati {} brani"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "La cronologia musicale è inviata a Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "La cronologia musicale non è inviata a Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Accesso eseguito come {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Configura"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Playlist {} rimossa"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} rimosso da {}"
-
-#: gnomemusic/widgets/playertoolbar.py:143
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Pausa"
-#: gnomemusic/widgets/playlistcontrols.py:127
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} brano"
msgstr[1] "{} brani"
+
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Cerca brani, artisti album e playlist"
diff --git a/po/ja.po b/po/ja.po
index c8e6a2d3..cf2bff8d 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -1,19 +1,19 @@
# Japanese translation for gnome-music.
-# Copyright (C) 2013-2015, 2019-2020 gnome-music's COPYRIGHT HOLDER
+# Copyright (C) 2013-2015, 2019-2020, 2022 gnome-music's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-music package.
# DanielaHidemiOyafuso <danielaoyafuso@gmail.com>, 2013.
# Ikuya Awashiro <ikuya@fruitsbasket.info>, 2014.
# Kento Tsuji <tuziemon@pclives.org>, 2014.
# Hajime Taira <htaira@redhat.com>, 2015.
# Jiro Matsuzawa <jmatsuzawa@gnome.org>, 2015.
-# sicklylife <translation@sicklylife.jp>, 2019-2020.
+# sicklylife <translation@sicklylife.jp>, 2019-2020, 2022.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2020-08-28 15:14+0000\n"
-"PO-Revision-Date: 2020-08-31 22:30+0900\n"
+"POT-Creation-Date: 2022-02-19 12:39+0000\n"
+"PO-Revision-Date: 2022-03-13 20:50+0900\n"
"Last-Translator: sicklylife <translation@sicklylife.jp>\n"
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
"Language: ja\n"
@@ -23,8 +23,10 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME ミュージック"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:61
+#: gnomemusic/window.py:71
+msgid "Music"
+msgstr "ミュージック"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -32,26 +34,19 @@ msgid "Play and organize your music collection"
msgstr "音楽コレクションã®å†ç”Ÿã¨æ•´ç†"
#: data/org.gnome.Music.appdata.xml.in.in:9
-msgid ""
-"An easy way to play your music. Automatically discover music on your "
-"computer, the local network and internet services."
+msgid "An easy and pleasant way to play your music."
msgstr ""
#: data/org.gnome.Music.appdata.xml.in.in:12
msgid ""
-"Find tracks in your local collection, get music from DLNA servers or try "
-"something new with the Jamendo and Magnatune services."
+"Find tracks in your local collection, use automatically generated playlists "
+"or curate a fresh one."
msgstr ""
-#: data/org.gnome.Music.appdata.xml.in.in:110
+#: data/org.gnome.Music.appdata.xml.in.in:149
msgid "The GNOME Music developers"
msgstr "The GNOME Music developers"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:59
-#: gnomemusic/window.py:70
-msgid "Music"
-msgstr "ミュージック"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "音楽プレーヤー"
@@ -70,27 +65,19 @@ msgid "Window size (width and height)."
msgstr "ウィンドウã®ã‚µã‚¤ã‚º (å¹…ã¨é«˜ã•) ã§ã™ã€‚"
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "ウィンドウã®ä½ç½®"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "ウィンドウã®ä½ç½® (X 軸㨠Y 軸) ã§ã™ã€‚"
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "ウィンドウã®æœ€å¤§åŒ–"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "ウィンドウã®æœ€å¤§åŒ–状態ã§ã™ã€‚"
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "プレイãƒãƒƒã‚¯ãƒªãƒ”ートモード"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -102,35 +89,27 @@ msgstr ""
"ã‚‹), “all†(プレイリストをリピートã€ã‚·ãƒ£ãƒƒãƒ•ãƒ«ã—ãªã„), “shuffle†(プレイリス"
"トをシャッフル〠プレイリストã®å…¨æ›²ã‚’リピートã™ã‚‹)"
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "ReplayGain を有効ã«ã™ã‚‹"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "アルãƒãƒ ã® ReplayGain を有効ã«ã™ã‚‹ã‹ã©ã†ã‹"
-#: data/org.gnome.Music.gschema.xml:38
-msgid "Inital state has been displayed"
-msgstr ""
-
-#: data/org.gnome.Music.gschema.xml:39
-msgid "Set to true when initial state has been displayed"
-msgstr ""
-
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr ""
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
-#: data/org.gnome.Music.gschema.xml:48
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr ""
-#: data/org.gnome.Music.gschema.xml:49
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -170,278 +149,243 @@ msgid ""
"the GPL license by which GNOME Music is covered. If you modify this code, "
"you may extend this exception to your version of the code, but you are not "
"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version.\n"
-"\n"
-"“Magic of the vinyl†by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
-"https://www.flickr.com/photos/_spy_/12270839403"
+"statement from your version."
msgstr ""
-#: data/ui/AlbumWidget.ui:107
-msgid "Released"
-msgstr "リリース日"
+#: data/ui/AlbumWidget.ui:86 data/ui/PlayerToolbar.ui:88
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:168
+msgid "Play"
+msgstr "å†ç”Ÿ"
+
+#: data/ui/AlbumWidget.ui:132 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
+msgid "_Play"
+msgstr "å†ç”Ÿ(_P)"
-#: data/ui/AlbumWidget.ui:123
-msgid "Running Length"
-msgstr "å†ç”Ÿæ™‚é–“"
+#: data/ui/AlbumWidget.ui:136
+msgid "Add to _Favorite Songs"
+msgstr "ãŠæ°—ã«å…¥ã‚Šã®æ›²ã«è¿½åŠ (_F)"
-#: data/ui/AlbumWidget.ui:167
-msgid "Composer"
-msgstr "作曲者"
+#: data/ui/AlbumWidget.ui:140 data/ui/SongWidgetMenu.ui:15
+msgid "_Add to Playlist…"
+msgstr "プレイリストã«è¿½åŠ (_A)…"
-#: data/ui/AppMenu.ui:20 data/ui/LastfmDialog.ui:8
+#: data/ui/AppMenu.ui:23 data/ui/LastfmDialog.ui:8
msgid "Last.fm Account"
msgstr "Last.fm アカウント"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "鑑賞ã—ãŸéŸ³æ¥½ã‚’報告"
-#: data/ui/AppMenu.ui:69
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "キーボードショートカット(_K)"
-#: data/ui/AppMenu.ui:83
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "ヘルプ(_H)"
-#: data/ui/AppMenu.ui:97
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "“ミュージックâ€ã«ã¤ã„ã¦(_A)"
+#: data/ui/EmptyView.ui:26 data/ui/InitialState.ui:13
+msgid "Welcome to Music"
+msgstr "“ミュージックâ€ã¸ã‚ˆã†ã“ã"
+
#: data/ui/HeaderBar.ui:16
msgid "Menu"
msgstr "メニュー"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:24 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "é¸æŠž"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:244
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:30 data/ui/PlaylistDialog.ui:211
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "キャンセル(_C)"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:42 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "検索"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:50
msgid "Back"
msgstr "戻る"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "全般"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "ウィンドウを閉ã˜ã‚‹"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "検索ã™ã‚‹"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "ヘルプを表示ã™ã‚‹"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "ショートカットを表示ã™ã‚‹"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "å†ç”Ÿ"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "å†ç”Ÿ/一時åœæ­¢"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "次ã®æ›²ã¸"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "å‰ã®æ›²ã¸"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "リピートを切り替ãˆã‚‹"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "シャッフルを切り替ãˆã‚‹"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "ナビゲーション"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "アルãƒãƒ ã«ç§»å‹•ã™ã‚‹"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "アーティストã«ç§»å‹•ã™ã‚‹"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "曲ã«ç§»å‹•ã™ã‚‹"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "プレイリストã«ç§»å‹•ã™ã‚‹"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "戻る"
+#: data/ui/InitialState.ui:25
+msgid "The contents of your Music Folder will appear here"
+msgstr "ミュージックフォルダーã®å†…容ãŒã“ã“ã«è¡¨ç¤ºã•ã‚Œã¾ã™"
+
#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
msgstr ""
-"Last.fm ã¯ã€ã‚ãªãŸã®é‘‘賞ã—ãŸéŸ³æ¥½ã®å‚¾å‘ã‹ã‚‰ãŠå‹§ã‚ã®éŸ³æ¥½ã‚’探ã—出ã—"
-"ã¦æ示ã—ã¦ãれるã€éŸ³æ¥½ãƒ‡ã‚£ã‚¹ã‚«ãƒãƒªãƒ¼ã‚µãƒ¼ãƒ“スã§ã™ã€‚"
+"Last.fm ã¯ã€ã‚ãªãŸã®é‘‘賞ã—ãŸéŸ³æ¥½ã®å‚¾å‘ã‹ã‚‰ãŠå‹§ã‚ã®éŸ³æ¥½ã‚’探ã—出ã—ã¦æ示ã—ã¦ã"
+"れるã€éŸ³æ¥½ãƒ‡ã‚£ã‚¹ã‚«ãƒãƒªãƒ¼ã‚µãƒ¼ãƒ“スã§ã™ã€‚"
-#: data/ui/LastfmDialog.ui:32 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "音楽ã®å ±å‘Šã‚’セットアップã—ã¦ã„ã¾ã›ã‚“"
-#: data/ui/LastfmDialog.ui:46 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"鑑賞ã—ãŸéŸ³æ¥½ã‚’報告ã™ã‚‹ãŸã‚ã« Last.fm ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¸ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãã ã•ã„。"
-#: data/ui/LastfmDialog.ui:57 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "ログイン"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "読ã¿è¾¼ã¿ä¸­"
-
-#: data/ui/PlayerToolbar.ui:6
-msgid "Shuffle"
-msgstr "シャッフル"
-
-#: data/ui/PlayerToolbar.ui:11
-msgid "Repeat All"
-msgstr "ã™ã¹ã¦ãƒªãƒ”ート"
-
-#: data/ui/PlayerToolbar.ui:16
-msgid "Repeat Song"
-msgstr "1曲リピート"
-
-#. Causes tracks to play in random order
-#: data/ui/PlayerToolbar.ui:21
-msgid "Shuffle/Repeat Off"
-msgstr "シャッフル/リピートオフ"
-
-#: data/ui/PlayerToolbar.ui:69
+#: data/ui/PlayerToolbar.ui:75
msgid "Previous"
msgstr "å‰"
-#: data/ui/PlayerToolbar.ui:85 gnomemusic/widgets/playertoolbar.py:146
-msgid "Play"
-msgstr "å†ç”Ÿ"
-
-#: data/ui/PlayerToolbar.ui:101
+#: data/ui/PlayerToolbar.ui:107
msgid "Next"
msgstr "次"
-#: data/ui/PlaylistContextMenu.ui:5
-msgctxt "context menu item"
-msgid "Play"
-msgstr "å†ç”Ÿ"
-
-#: data/ui/PlaylistContextMenu.ui:9
-msgid "Add to Playlist…"
-msgstr "プレイリストã«è¿½åŠ â€¦"
-
-#: data/ui/PlaylistContextMenu.ui:13
-msgid "Remove From Playlist"
-msgstr "プレイリストã‹ã‚‰å‰Šé™¤"
-
-#: data/ui/PlaylistControls.ui:6
-msgid "_Play"
-msgstr "å†ç”Ÿ(_P)"
-
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "削除(_D)"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "åå‰ã‚’変更(_R)…"
-#: data/ui/PlaylistControls.ui:41
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "プレイリストå"
-#: data/ui/PlaylistControls.ui:74
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "完了(_D)"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "プレイリストåを入力ã—ã¦ãã ã•ã„"
-#: data/ui/PlaylistDialog.ui:92
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "作æˆ(_R)"
-#: data/ui/PlaylistDialog.ui:155
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "æ–°ã—ã„プレイリスト…"
-#: data/ui/PlaylistDialog.ui:169
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "追加"
-#: data/ui/PlaylistDialog.ui:241
+#: data/ui/PlaylistDialog.ui:200
msgid "Add to Playlist"
msgstr "プレイリストã«è¿½åŠ "
-#: data/ui/PlaylistDialog.ui:257
+#: data/ui/PlaylistDialog.ui:220
msgid "_Add"
msgstr "追加(_A)"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "å…ƒã«æˆ»ã™(_U)"
-
-#: data/ui/SearchView.ui:43 gnomemusic/views/artistsview.py:43
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "アーティスト"
-#: data/ui/SearchView.ui:53 data/ui/SearchView.ui:106
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "ã™ã¹ã¦è¡¨ç¤º"
-#: data/ui/SearchView.ui:96 gnomemusic/views/albumsview.py:47
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:54
msgid "Albums"
msgstr "アルãƒãƒ "
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:44
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "曲"
@@ -453,58 +397,62 @@ msgstr "ã™ã¹ã¦é¸æŠž"
msgid "Select None"
msgstr "é¸æŠžãªã—"
-#: data/ui/SelectionBarMenuButton.ui:31 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "アイテムをクリックã—ã¦é¸æŠž"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "プレイリストã«è¿½åŠ (_A)"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "プレイリストã‹ã‚‰å‰Šé™¤(_R)"
+
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:822
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "最もå†ç”Ÿã—ãŸæ›²"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:858
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "未å†ç”Ÿã®æ›²"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:893
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "最近å†ç”Ÿã—ãŸæ›²"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:938
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "最近追加ã—ãŸæ›²"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:982
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "ãŠæ°—ã«å…¥ã‚Šã®æ›²"
-#: gnomemusic/gstplayer.py:378
+#: gnomemusic/gstplayer.py:408
msgid "Unable to play the file"
msgstr "ファイルをå†ç”Ÿã§ãã¾ã›ã‚“"
-#: gnomemusic/gstplayer.py:384
+#: gnomemusic/gstplayer.py:414
msgid "_Find in {}"
msgstr "{} ã§æ¤œç´¢(_F)"
#. TRANSLATORS: separator for two codecs
-#: gnomemusic/gstplayer.py:394
+#: gnomemusic/gstplayer.py:424
msgid " and "
msgstr " 㨠"
#. TRANSLATORS: separator for a list of codecs
-#: gnomemusic/gstplayer.py:397
+#: gnomemusic/gstplayer.py:427
msgid ", "
msgstr ", "
-#: gnomemusic/gstplayer.py:399
+#: gnomemusic/gstplayer.py:429
msgid "{} is required to play the file, but is not installed."
msgid_plural "{} are required to play the file, but are not installed."
msgstr[0] "ファイルã®å†ç”Ÿã«ã¯ {} ãŒå¿…è¦ã§ã™ãŒã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã›ã‚“。"
@@ -513,118 +461,158 @@ msgstr[0] "ファイルã®å†ç”Ÿã«ã¯ {} ãŒå¿…è¦ã§ã™ãŒã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ
msgid "Playing music"
msgstr "å†ç”Ÿä¸­"
-#: gnomemusic/utils.py:81
+#. Translators: "shuffle" causes tracks to play in random order.
+#: gnomemusic/player.py:44
+msgid "Shuffle"
+msgstr "シャッフル"
+
+#: gnomemusic/player.py:45
+msgid "Repeat Song"
+msgstr "1曲リピート"
+
+#: gnomemusic/player.py:46
+msgid "Repeat All"
+msgstr "ã™ã¹ã¦ãƒªãƒ”ート"
+
+#: gnomemusic/player.py:47
+msgid "Shuffle/Repeat Off"
+msgstr "シャッフル/リピートオフ"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "プレイリスト {} を削除ã—ã¾ã—ãŸ"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "å…ƒã«æˆ»ã™"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} ã‚’ {} ã‹ã‚‰å‰Šé™¤ã—ã¾ã—ãŸ"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "ä¸æ˜Žãªã‚¢ãƒ«ãƒãƒ "
-#: gnomemusic/utils.py:102
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "ä¸æ˜Žãªã‚¢ãƒ¼ãƒ†ã‚£ã‚¹ãƒˆ"
-#: gnomemusic/views/emptyview.py:67
+#: gnomemusic/views/emptyview.py:65
msgid "Your XDG Music directory is not set."
msgstr "XDG ã® Music ディレクトリを設定ã—ã¦ã„ã¾ã›ã‚“。"
-#: gnomemusic/views/emptyview.py:74
-msgid "Music folder"
+#: gnomemusic/views/emptyview.py:72
+msgid "Music Folder"
msgstr "ミュージックフォルダー"
#. TRANSLATORS: This is a label to display a link to open user's music
#. folder. {} will be replaced with the translated text 'Music folder'
-#: gnomemusic/views/emptyview.py:78
+#: gnomemusic/views/emptyview.py:76
msgid "The contents of your {} will appear here."
-msgstr "ã‚ãªãŸã®{}ã®å†…容ãŒã“ã“ã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚"
-
-#: gnomemusic/views/emptyview.py:112
-msgid "Hey DJ"
-msgstr ""
+msgstr "{}ã®å†…容ãŒã“ã“ã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚"
-#: gnomemusic/views/emptyview.py:121 gnomemusic/views/emptyview.py:126
-msgid "No music found"
+#: gnomemusic/views/emptyview.py:124
+msgid "No Music Found"
msgstr "曲ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"
-#: gnomemusic/views/emptyview.py:128
-msgid "Try a different search"
+#: gnomemusic/views/emptyview.py:125
+msgid "Try a Different Search"
msgstr "ä»–ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ã‚’試ã—ã¦ãã ã•ã„"
-#: gnomemusic/views/emptyview.py:133
-msgid "GNOME Music could not connect to Tracker"
-msgstr "GNOME ミュージック㌠Tracker ã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸ"
+#: gnomemusic/views/emptyview.py:129
+msgid "GNOME Music could not connect to Tracker."
+msgstr "GNOME ミュージック㌠Tracker ã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
-#: gnomemusic/views/emptyview.py:136
-msgid "Your music files cannot be indexed without Tracker running"
-msgstr "Tracker を実行ã—ã¦ã„ãªã„ã¨éŸ³æ¥½ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã•ã‚Œã¾ã›ã‚“"
+#: gnomemusic/views/emptyview.py:131
+msgid "Your music files cannot be indexed without Tracker running."
+msgstr "Tracker を実行ã—ã¦ã„ãªã„ã¨éŸ³æ¥½ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹ã•ã‚Œã¾ã›ã‚“。"
-#: gnomemusic/views/emptyview.py:143
-msgid "Your system Tracker version seems outdated"
-msgstr "Tracker ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒå¤ã™ãŽã¾ã™"
+#: gnomemusic/views/emptyview.py:137
+msgid "Your system Tracker version seems outdated."
+msgstr "Tracker ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒå¤ã™ãŽã¾ã™ã€‚"
-#: gnomemusic/views/emptyview.py:146
-msgid "Music needs Tracker version 3.0.0 or higher"
-msgstr "Tracker ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.0.0 以é™ãŒå¿…è¦ã§ã™"
+#: gnomemusic/views/emptyview.py:139
+msgid "Music needs Tracker version 3.0.0 or higher."
+msgstr "Tracker ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 3.0.0 以é™ãŒå¿…è¦ã§ã™ã€‚"
-#: gnomemusic/views/playlistsview.py:41
+#: gnomemusic/views/playlistsview.py:45
msgid "Playlists"
msgstr "プレイリスト"
-#: gnomemusic/views/searchview.py:381
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "アーティストã®æ¤œç´¢çµæžœ"
-#: gnomemusic/views/searchview.py:396
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "アルãƒãƒ ã®æ¤œç´¢çµæžœ"
-#: gnomemusic/widgets/albumwidget.py:154
+#: gnomemusic/widgets/albumwidget.py:240
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} 分"
-#: gnomemusic/widgets/disclistboxwidget.py:60
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "ディスク {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "{} 曲é¸æŠž"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
-msgstr ""
-"鑑賞ã—ãŸéŸ³æ¥½ãŒ Last.fm ã«å ±å‘Šã•ã‚Œã¾ã™ã€‚"
+msgstr "鑑賞ã—ãŸéŸ³æ¥½ãŒ Last.fm ã«å ±å‘Šã•ã‚Œã¾ã™ã€‚"
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
-msgstr ""
-"鑑賞ã—ãŸéŸ³æ¥½ãŒ Last.fm ã«å ±å‘Šã•ã‚Œã¾ã›ã‚“。"
+msgstr "鑑賞ã—ãŸéŸ³æ¥½ãŒ Last.fm ã«å ±å‘Šã•ã‚Œã¾ã›ã‚“。"
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "{} ã§ãƒ­ã‚°ã‚¤ãƒ³"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "設定"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "プレイリスト {} を削除ã—ã¾ã—ãŸ"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} ã‚’ {} ã‹ã‚‰å‰Šé™¤ã—ã¾ã—ãŸ"
-
-#: gnomemusic/widgets/playertoolbar.py:143
+#: gnomemusic/widgets/playertoolbar.py:165
msgid "Pause"
msgstr "一時åœæ­¢"
-#: gnomemusic/widgets/playlistcontrols.py:127
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} 曲"
+#~ msgid "GNOME Music"
+#~ msgstr "GNOME ミュージック"
+
+#~ msgid "Window position"
+#~ msgstr "ウィンドウã®ä½ç½®"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "ウィンドウã®ä½ç½® (X 軸㨠Y 軸) ã§ã™ã€‚"
+
+#~ msgid "Released"
+#~ msgstr "リリース日"
+
+#~ msgid "Running Length"
+#~ msgstr "å†ç”Ÿæ™‚é–“"
+
+#~ msgid "Composer"
+#~ msgstr "作曲者"
+
+#~ msgid "Loading"
+#~ msgstr "読ã¿è¾¼ã¿ä¸­"
+
+#~ msgctxt "context menu item"
+#~ msgid "Play"
+#~ msgstr "å†ç”Ÿ"
+
#~ msgid "Enables or disables playback notifications"
#~ msgstr "å†ç”Ÿä¸­ã®æ›²ã®é€šçŸ¥ã‚’有効ã«ã™ã‚‹ã‹ã©ã†ã‹ã®è¨­å®šã§ã™ã€‚"
diff --git a/po/ka.po b/po/ka.po
new file mode 100644
index 00000000..f2a78c82
--- /dev/null
+++ b/po/ka.po
@@ -0,0 +1,576 @@
+# Georgian translation for gnome-music.
+# Copyright (C) 2023 gnome-music's authors
+# This file is distributed under the same license as the gnome-music package.
+# Ekaterine Papava <papava.e@gtu.ge>, 2023.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnome-music\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-08-17 21:26+0200\n"
+"Last-Translator: Ekaterine Papava <papava.e@gtu.ge>\n"
+"Language-Team: Georgian <(nothing)>\n"
+"Language: ka\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 3.3.2\n"
+
+#: data/org.gnome.Music.appdata.xml.in.in:6
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "მუსიკáƒ"
+
+#: data/org.gnome.Music.appdata.xml.in.in:7
+#: data/org.gnome.Music.desktop.in.in:5
+msgid "Play and organize your music collection"
+msgstr "მუსიკის თქვენი კáƒáƒšáƒ”ქციის დáƒáƒ™áƒ•áƒ áƒ დრდáƒáƒšáƒáƒ’ებáƒ"
+
+#: data/org.gnome.Music.appdata.xml.in.in:9
+msgid "An easy and pleasant way to play your music."
+msgstr "áƒáƒ“ვილი დრსáƒáƒ¡áƒ˜áƒáƒ›áƒáƒ•áƒœáƒ გზრმუსიკის დáƒáƒ¡áƒáƒ™áƒ áƒáƒ•áƒáƒ“."
+
+#: data/org.gnome.Music.appdata.xml.in.in:12
+msgid ""
+"Find tracks in your local collection, use automatically generated playlists "
+"or curate a fresh one."
+msgstr ""
+"იპáƒáƒ•áƒ”თ მუსიკრთქვენს ლáƒáƒ™áƒáƒšáƒ£áƒ  კáƒáƒšáƒ”ქციáƒáƒ¨áƒ˜ დრგáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒáƒ“ შექმნილი "
+"დáƒáƒ¡áƒáƒ™áƒ áƒáƒ•áƒ˜ სიები. áƒáƒœ შექმენით სáƒáƒ™áƒ£áƒ—áƒáƒ áƒ˜."
+
+#: data/org.gnome.Music.appdata.xml.in.in:182
+msgid "The GNOME Music developers"
+msgstr "GNOME Music-ის პრáƒáƒ’რáƒáƒ›áƒ˜áƒ¡áƒ¢áƒ”ბი"
+
+#: data/org.gnome.Music.desktop.in.in:4
+msgid "Music Player"
+msgstr "მედირდáƒáƒ›áƒ™áƒ•áƒ áƒ”ლი"
+
+#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
+#: data/org.gnome.Music.desktop.in.in:13
+msgid "Music;Player;"
+msgstr "Music;Player;"
+
+#: data/org.gnome.Music.gschema.xml:12
+msgid "Window size"
+msgstr "ფáƒáƒœáƒ¯áƒ áƒ˜áƒ¡ ზáƒáƒ›áƒ"
+
+#: data/org.gnome.Music.gschema.xml:13
+msgid "Window size (width and height)."
+msgstr "ფáƒáƒœáƒ¯áƒ áƒ˜áƒ¡ ზáƒáƒ›áƒ (სიგáƒáƒœáƒ”, სიმáƒáƒ¦áƒšáƒ”)"
+
+#: data/org.gnome.Music.gschema.xml:17
+msgid "Window maximized"
+msgstr "გáƒáƒ“იდებული ფáƒáƒœáƒ¯áƒáƒ áƒ"
+
+#: data/org.gnome.Music.gschema.xml:18
+msgid "Window maximized state."
+msgstr "ფáƒáƒœáƒ¯áƒ áƒ˜áƒ¡ სრულáƒáƒ“ გáƒáƒ¨áƒšáƒ˜áƒšáƒ˜ მდგáƒáƒ›áƒáƒ áƒ”áƒáƒ‘áƒ."
+
+#: data/org.gnome.Music.gschema.xml:22
+msgid "Playback repeat mode"
+msgstr "დáƒáƒ™áƒ•áƒ áƒ˜áƒ¡ გáƒáƒ›áƒ”áƒáƒ áƒ”ბის რეჟიმი"
+
+#. Translators: Don't translate allowed values, just the description in the brackets
+#: data/org.gnome.Music.gschema.xml:24
+msgid ""
+"Value identifies whether to repeat or randomize playback through the "
+"collection. Allowed values are: “none†(repeat and shuffle are off), "
+"“song†(repeat current song), “all†(repeat playlist, no shuffle), "
+"“shuffle†(shuffle playlist, presumes repeat all)."
+msgstr ""
+"მნიშვნელáƒáƒ‘რგáƒáƒœáƒ¡áƒáƒ–ღვრáƒáƒ•áƒ¡, კáƒáƒšáƒ”ქციáƒáƒ¨áƒ˜ დáƒáƒ™áƒ•áƒ áƒ შემთხვევითი წესით მáƒáƒ®áƒ“ებáƒ, თუ "
+"გáƒáƒœáƒ›áƒ”áƒáƒ áƒ”ბითი. დáƒáƒ¡áƒáƒ¨áƒ•áƒ”ბი მნიშვნელáƒáƒ‘ებიáƒ: \"none\" (შემთხვევითáƒáƒ‘რდრ"
+"გáƒáƒœáƒ›áƒ”áƒáƒ áƒ”ბáƒáƒ“áƒáƒ‘რგáƒáƒ›áƒáƒ áƒ—ულიáƒ), \"song\" (მიმდინáƒáƒ áƒ” სიმღერის გáƒáƒ›áƒ”áƒáƒ áƒ”ბáƒ), "
+"\"all\" (კáƒáƒšáƒ”ქციის გáƒáƒ›áƒ”áƒáƒ áƒ”ბáƒ, შემთხვევითáƒáƒ‘ის გáƒáƒ áƒ”შე), \"shuffle\" (სიმღერის "
+"შემთხვევით áƒáƒ áƒ©áƒ”ვáƒ. ყველáƒáƒ¡ დáƒáƒ™áƒ•áƒ áƒ ისედáƒáƒª იგულისხმებáƒ)."
+
+#: data/org.gnome.Music.gschema.xml:28
+msgid "Enable ReplayGain"
+msgstr "ReplayGain-ის ჩáƒáƒ áƒ—ვáƒ"
+
+#: data/org.gnome.Music.gschema.xml:29
+msgid "Enables or disables ReplayGain for albums"
+msgstr "áƒáƒšáƒ‘áƒáƒ›áƒ”ბისთვის ReplayGain-ის ჩáƒáƒ áƒ—ვáƒ/გáƒáƒ›áƒáƒ áƒ—ვáƒ"
+
+#: data/org.gnome.Music.gschema.xml:33
+msgid "Inhibit system suspend"
+msgstr "სისტემის დáƒáƒ«áƒ˜áƒœáƒ”ბის გáƒáƒ—იშვáƒ"
+
+#: data/org.gnome.Music.gschema.xml:34
+msgid "Enables or disables inhibiting system suspend while playing music"
+msgstr "მუსიკის დáƒáƒ™áƒ•áƒ áƒ˜áƒ¡ მიმდინáƒáƒ áƒ”áƒáƒ‘ისáƒáƒ¡ სისტემის დáƒáƒ«áƒ˜áƒœáƒ”ბის áƒáƒ™áƒ áƒ«áƒáƒšáƒ•áƒ"
+
+#: data/org.gnome.Music.gschema.xml:38
+msgid "Report music history to Last.fm"
+msgstr "გáƒáƒ“áƒáƒ”ცით მáƒáƒ¡áƒ›áƒ”ნილი მუსიკრLast.fm-ზე"
+
+#: data/org.gnome.Music.gschema.xml:39
+msgid ""
+"Enables or disables sending scrobbles and the “currently playing†info to "
+"Last.fm."
+msgstr ""
+"მიმდინáƒáƒ áƒ” სიმღერის შესáƒáƒ®áƒ”ბ ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ Last.fm-ზე გáƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒ¡ ჩáƒáƒ áƒ—ვáƒ/გáƒáƒ›áƒáƒ áƒ—ვáƒ."
+
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
+msgid "Play"
+msgstr "დáƒáƒ™áƒ•áƒ áƒ"
+
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
+msgid "_Play"
+msgstr "_დáƒáƒ™áƒ•áƒ áƒ"
+
+#: data/ui/AlbumWidget.ui:134
+msgid "Add to _Favorite Songs"
+msgstr "სáƒáƒ§áƒ•áƒáƒ áƒ”ლი _სიმღერებში ჩáƒáƒ›áƒáƒ¢áƒ”ბáƒ"
+
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
+msgid "_Add to Playlist…"
+msgstr "_დáƒáƒ¡áƒáƒ™áƒ áƒáƒ•áƒ˜ სიáƒáƒ¨áƒ˜ დáƒáƒ›áƒáƒ¢áƒ”ბáƒâ€¦"
+
+#: data/ui/AppMenu.ui:23 data/ui/LastfmDialog.ui:8
+msgid "Last.fm Account"
+msgstr "Last.fm-ის áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜"
+
+#: data/ui/AppMenu.ui:36
+msgid "Report Music Listening"
+msgstr "გáƒáƒ“áƒáƒ”ცით მáƒáƒ¡áƒ›áƒ”ნილი მუსიკáƒ"
+
+#: data/ui/AppMenu.ui:58
+msgid "_Keyboard Shortcuts"
+msgstr "კლáƒáƒ•áƒ˜áƒáƒ¢áƒ£áƒ áƒ˜áƒ¡ მáƒáƒšáƒ¡áƒáƒ®áƒ›áƒáƒ‘ები"
+
+#: data/ui/AppMenu.ui:68
+msgid "_Help"
+msgstr "_დáƒáƒ®áƒ›áƒáƒ áƒ”ბáƒ"
+
+#: data/ui/AppMenu.ui:78
+msgid "_About Music"
+msgstr "Music-ის შესáƒáƒ®áƒ”ბ"
+
+#: data/ui/EmptyView.ui:30
+msgid "Welcome to Music"
+msgstr "მáƒáƒ’ესáƒáƒšáƒ›áƒ”ბით Music-ში"
+
+#: data/ui/HeaderBar.ui:17
+msgid "Menu"
+msgstr "მენიუ"
+
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
+msgid "Select"
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒœáƒ”თ"
+
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
+msgid "_Cancel"
+msgstr "_გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ"
+
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
+msgid "Search"
+msgstr "ძებნáƒ"
+
+#: data/ui/HeaderBar.ui:51
+msgid "Back"
+msgstr "უკáƒáƒœ"
+
+#: data/ui/help-overlay.ui:11
+msgctxt "shortcut window"
+msgid "General"
+msgstr "მთáƒáƒ•áƒáƒ áƒ˜"
+
+#: data/ui/help-overlay.ui:14
+msgctxt "shortcut window"
+msgid "Close window"
+msgstr "ფáƒáƒœáƒ¯áƒ áƒ˜áƒ¡ დáƒáƒ®áƒ£áƒ áƒ•áƒ"
+
+#: data/ui/help-overlay.ui:20
+msgctxt "shortcut window"
+msgid "Search"
+msgstr "ძებნáƒ"
+
+#: data/ui/help-overlay.ui:26
+msgctxt "shortcut window"
+msgid "Help"
+msgstr "დáƒáƒ®áƒ›áƒáƒ áƒ”ბáƒ"
+
+#: data/ui/help-overlay.ui:32
+msgctxt "shortcut window"
+msgid "Shortcuts"
+msgstr "მáƒáƒšáƒ¡áƒáƒ®áƒ›áƒáƒ‘ები"
+
+#: data/ui/help-overlay.ui:40
+msgctxt "shortcut window"
+msgid "Playback"
+msgstr "დáƒáƒ™áƒ•áƒ áƒ"
+
+#: data/ui/help-overlay.ui:43
+msgctxt "shortcut window"
+msgid "Play/Pause"
+msgstr "დáƒáƒ™áƒ•áƒ áƒ/პáƒáƒ£áƒ–áƒ"
+
+#: data/ui/help-overlay.ui:49
+msgctxt "shortcut window"
+msgid "Next song"
+msgstr "შემდეგი სიმღერáƒ"
+
+#: data/ui/help-overlay.ui:55
+msgctxt "shortcut window"
+msgid "Previous song"
+msgstr "წინრსიმღერáƒ"
+
+#: data/ui/help-overlay.ui:61
+msgctxt "shortcut window"
+msgid "Toggle repeat"
+msgstr "გáƒáƒ›áƒ”áƒáƒ áƒ”ბის გáƒáƒ“áƒáƒ áƒ—ვáƒ"
+
+#: data/ui/help-overlay.ui:67
+msgctxt "shortcut window"
+msgid "Toggle shuffle"
+msgstr "შემთხვევითáƒáƒ‘ის გáƒáƒ“áƒáƒ áƒ—ვáƒ"
+
+#: data/ui/help-overlay.ui:75
+msgctxt "shortcut window"
+msgid "Navigation"
+msgstr "ნáƒáƒ•áƒ˜áƒ’áƒáƒªáƒ˜áƒ"
+
+#: data/ui/help-overlay.ui:78
+msgctxt "shortcut window"
+msgid "Go to Albums"
+msgstr "áƒáƒšáƒ‘áƒáƒ›áƒ”ბზე გáƒáƒ“áƒáƒ¡áƒ•áƒšáƒ"
+
+#: data/ui/help-overlay.ui:84
+msgctxt "shortcut window"
+msgid "Go to Artists"
+msgstr "შემსრულებლებზე გáƒáƒ“áƒáƒ¡áƒ•áƒšáƒ"
+
+#: data/ui/help-overlay.ui:90
+msgctxt "shortcut window"
+msgid "Go to Songs"
+msgstr "სიმღერებზე გáƒáƒ“áƒáƒ áƒ—ვáƒ"
+
+#: data/ui/help-overlay.ui:96
+msgctxt "shortcut window"
+msgid "Go to Playlists"
+msgstr "დáƒáƒ¡áƒáƒ™áƒ áƒáƒ• სიებზე გáƒáƒ“áƒáƒ áƒ—ვáƒ"
+
+#: data/ui/help-overlay.ui:102
+msgctxt "shortcut window"
+msgid "Go back"
+msgstr "უკáƒáƒœ გáƒáƒ“áƒáƒ¡áƒ•áƒšáƒ"
+
+#: data/ui/LastfmDialog.ui:21
+msgid ""
+"Last.fm is a music discovery service that gives you personalised "
+"recommendations based on the music you listen to."
+msgstr ""
+"Last.fm áƒáƒ áƒ˜áƒ¡ მუსიკáƒáƒšáƒ£áƒ áƒ˜ სერვისი, რáƒáƒ›áƒ”ლიც გáƒáƒ«áƒšáƒ”ვთ პერსáƒáƒœáƒáƒšáƒ£áƒ  რეკáƒáƒ›áƒ”ნდáƒáƒªáƒ˜áƒ”ბს "
+"თქვენს მიერ მáƒáƒ¡áƒ›áƒ”ნილი მუსიკის სáƒáƒ¤áƒ£áƒ«áƒ•áƒ”ლზე."
+
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
+msgid "Music Reporting Not Setup"
+msgstr "დáƒáƒ™áƒ áƒ£áƒšáƒ˜ მუსიკის გáƒáƒ“áƒáƒªáƒ”მრმáƒáƒ áƒ’ებული áƒáƒ áƒáƒ"
+
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
+msgid "Login to your Last.fm account to report your music listening."
+msgstr "შედით Last.fm-ის თქვენს áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ¨áƒ˜ დáƒáƒ™áƒ áƒ£áƒšáƒ˜ სიმღერების სიის გáƒáƒ“áƒáƒ¡áƒáƒªáƒ”მáƒáƒ“."
+
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
+msgid "Login"
+msgstr "შესვლáƒ"
+
+#: data/ui/PlayerToolbar.ui:74
+msgid "Previous"
+msgstr "წინáƒ"
+
+#: data/ui/PlayerToolbar.ui:106
+msgid "Next"
+msgstr "შემდეგი"
+
+#: data/ui/PlaylistControls.ui:9
+msgid "_Delete"
+msgstr "_წáƒáƒ¨áƒšáƒ"
+
+#: data/ui/PlaylistControls.ui:13
+msgid "_Rename…"
+msgstr "_გáƒáƒ“áƒáƒ áƒ¥áƒ›áƒ”ვáƒâ€¦"
+
+#: data/ui/PlaylistControls.ui:28
+msgid "Playlist Name"
+msgstr "დáƒáƒ¡áƒáƒ™áƒ áƒáƒ•áƒ˜ სიის სáƒáƒ®áƒ”ლი"
+
+#: data/ui/PlaylistControls.ui:62
+msgid "_Done"
+msgstr "_დáƒáƒ¡áƒ áƒ£áƒšáƒ”ბულიáƒ"
+
+#: data/ui/PlaylistDialog.ui:52
+msgid "Enter a name for your first playlist"
+msgstr "შეიყვáƒáƒœáƒ”თ თქვენი პირველი დáƒáƒ¡áƒáƒ™áƒ áƒáƒ•áƒ˜ სიის სáƒáƒ®áƒ”ლი"
+
+#: data/ui/PlaylistDialog.ui:77
+msgid "C_reate"
+msgstr "_შექმნáƒ"
+
+#: data/ui/PlaylistDialog.ui:146
+msgid "New Playlist…"
+msgstr "áƒáƒ®áƒáƒšáƒ˜ დáƒáƒ¡áƒáƒ™áƒ áƒáƒ•áƒ˜ სიáƒâ€¦"
+
+#: data/ui/PlaylistDialog.ui:161
+msgid "Add"
+msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბáƒ"
+
+#: data/ui/PlaylistDialog.ui:202
+msgid "Add to Playlist"
+msgstr "დáƒáƒ¡áƒáƒ™áƒ áƒáƒ•áƒ˜ სიáƒáƒ¨áƒ˜ დáƒáƒ›áƒáƒ¢áƒ”ბáƒ"
+
+#: data/ui/PlaylistDialog.ui:222
+msgid "_Add"
+msgstr "_დáƒáƒ›áƒáƒ¢áƒ”ბáƒ"
+
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
+msgid "Artists"
+msgstr "შემსრულებლები"
+
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
+msgid "View All"
+msgstr "ყველáƒáƒ¡ ნáƒáƒ®áƒ•áƒ"
+
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
+msgid "Albums"
+msgstr "áƒáƒšáƒ‘áƒáƒ›áƒ”ბი"
+
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
+msgid "Songs"
+msgstr "სიმღერები"
+
+#: data/ui/SelectionBarMenuButton.ui:7
+msgid "Select All"
+msgstr "ყველáƒáƒ¡ მáƒáƒœáƒ˜áƒ¨áƒ•áƒœáƒ"
+
+#: data/ui/SelectionBarMenuButton.ui:11
+msgid "Select None"
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•áƒœáƒ˜áƒ¡ მáƒáƒ®áƒ¡áƒœáƒ"
+
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
+msgid "Click on items to select them"
+msgstr "მáƒáƒ¡áƒáƒœáƒ˜áƒ¨áƒœáƒáƒ“ დáƒáƒáƒ¬áƒ™áƒáƒžáƒ£áƒœáƒ”თ ელემენტებზე"
+
+#: data/ui/SelectionToolbar.ui:8
+msgid "_Add to Playlist"
+msgstr "_დáƒáƒ¡áƒáƒ™áƒ áƒáƒ•áƒ˜ სიáƒáƒ¨áƒ˜ დáƒáƒ›áƒáƒ¢áƒ”ბáƒ"
+
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_დáƒáƒ¡áƒáƒ™áƒ áƒáƒ•áƒ˜ სიიდáƒáƒœ წáƒáƒ¨áƒšáƒ"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "პრáƒáƒ”ქტი \"GNOME\""
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr "თემური დáƒáƒ¦áƒáƒœáƒáƒ«áƒ”"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "GNOME Music-ის პრáƒáƒ’რáƒáƒ›áƒ˜áƒ¡áƒ¢áƒ”ბი, ყველრუფლებრდáƒáƒªáƒ£áƒšáƒ˜áƒ"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "თáƒáƒ áƒ’მნáƒ"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
+msgid "Most Played"
+msgstr "ხშირáƒáƒ“ დáƒáƒ™áƒ áƒ£áƒšáƒ˜"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
+msgid "Never Played"
+msgstr "áƒáƒ áƒáƒ¡áƒ“რáƒáƒ¡-დáƒáƒ™áƒ áƒ£áƒšáƒ˜"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
+msgid "Recently Played"
+msgstr "áƒáƒ®áƒšáƒáƒ®áƒáƒœáƒ¡ დáƒáƒ™áƒ áƒ£áƒšáƒ˜"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
+msgid "Recently Added"
+msgstr "áƒáƒ®áƒšáƒáƒ®áƒáƒœáƒ¡ დáƒáƒ›áƒáƒ¢áƒ”ბული"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
+msgid "Favorite Songs"
+msgstr "სáƒáƒ§áƒ•áƒáƒ áƒ”ლი სიმღერები"
+
+#: gnomemusic/gstplayer.py:408
+msgid "Unable to play the file"
+msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ დáƒáƒ™áƒ•áƒ áƒ˜áƒ¡ შეცდáƒáƒ›áƒ"
+
+#: gnomemusic/gstplayer.py:414
+msgid "_Find in {}"
+msgstr "{}-ში _მáƒáƒ«áƒ”ბნáƒ"
+
+#. TRANSLATORS: separator for two codecs
+#: gnomemusic/gstplayer.py:424
+msgid " and "
+msgstr " დრ"
+
+#. TRANSLATORS: separator for a list of codecs
+#: gnomemusic/gstplayer.py:427
+msgid ", "
+msgstr ", "
+
+#: gnomemusic/gstplayer.py:429
+msgid "{} is required to play the file, but is not installed."
+msgid_plural "{} are required to play the file, but are not installed."
+msgstr[0] "ფáƒáƒ˜áƒšáƒ˜áƒ¡ დáƒáƒ¡áƒáƒ™áƒ áƒáƒ•áƒáƒ“ სáƒáƒ­áƒ˜áƒ áƒáƒ {}, მáƒáƒ’რáƒáƒ› დáƒáƒ§áƒ”ნებული áƒáƒ áƒáƒ."
+
+#: gnomemusic/inhibitsuspend.py:63
+msgid "Playing music"
+msgstr "მიმდინáƒáƒ áƒ”áƒáƒ‘ს დáƒáƒ™áƒ•áƒ áƒ"
+
+#. Translators: "shuffle" causes tracks to play in random order.
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "შემთხვევითი/გáƒáƒ›áƒ”áƒáƒ áƒ”ბრგáƒáƒ›áƒáƒ áƒ—ულიáƒ"
+
+#: gnomemusic/player.py:45
+msgid "Repeat Song"
+msgstr "სიმღერის გáƒáƒ›áƒ”áƒáƒ áƒ”ბáƒ"
+
+#: gnomemusic/player.py:46
+msgid "Repeat All"
+msgstr "ყველáƒáƒ¡ გáƒáƒ›áƒ”áƒáƒ áƒ”ბáƒ"
+
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "შემთხვევით"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "დáƒáƒ¡áƒáƒ™áƒ áƒáƒ•áƒ˜ სირწáƒáƒ˜áƒ¨áƒáƒšáƒ: {}"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "დáƒáƒ‘რუნებáƒ"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} წáƒáƒ˜áƒ¨áƒáƒšáƒ {}-დáƒáƒœ"
+
+#: gnomemusic/utils.py:92
+msgid "Unknown album"
+msgstr "უცნáƒáƒ‘ი áƒáƒšáƒ‘áƒáƒ›áƒ˜"
+
+#: gnomemusic/utils.py:113
+msgid "Unknown Artist"
+msgstr "უცნáƒáƒ‘ი შემსრულებელი"
+
+#: gnomemusic/views/emptyview.py:65
+msgid "Your XDG Music directory is not set."
+msgstr "XDG Music-ის სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე მითითებული áƒáƒ áƒáƒ."
+
+#: gnomemusic/views/emptyview.py:72
+msgid "Music Folder"
+msgstr "მუსიკის სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე"
+
+#. TRANSLATORS: This is a label to display a link to open user's music
+#. folder. {} will be replaced with the translated text 'Music folder'
+#: gnomemusic/views/emptyview.py:76
+msgid "The contents of your {} will appear here."
+msgstr "თქვენი {}-ის შემცველáƒáƒ‘რáƒáƒ¥ გáƒáƒ›áƒáƒ©áƒœáƒ“ებáƒ."
+
+#: gnomemusic/views/emptyview.py:124
+msgid "No Music Found"
+msgstr "მუსიკრნáƒáƒžáƒáƒ•áƒœáƒ˜ áƒáƒ áƒáƒ"
+
+#: gnomemusic/views/emptyview.py:125
+msgid "Try a Different Search"
+msgstr "სცáƒáƒ“ეთ სხვრძებნáƒ"
+
+#: gnomemusic/views/emptyview.py:129
+msgid "GNOME Music could not connect to Tracker."
+msgstr "GNOME Music-ი ტრეკერს ვერ მიუერთდáƒ."
+
+#: gnomemusic/views/emptyview.py:131
+msgid "Your music files cannot be indexed without Tracker running."
+msgstr "მუსიკის ფáƒáƒ˜áƒšáƒ”ბის ინდექსáƒáƒªáƒ˜áƒ გáƒáƒ¨áƒ•áƒ”ბული ტრეკერის გáƒáƒ áƒ”შე შეუძლებელიáƒ."
+
+#: gnomemusic/views/emptyview.py:137
+msgid "Your system Tracker version seems outdated."
+msgstr "რáƒáƒ’áƒáƒ áƒª ჩáƒáƒœáƒ¡ თქვენი სისტემური ტრეკერი მáƒáƒ«áƒ•áƒ”ლებულიáƒ."
+
+#: gnomemusic/views/emptyview.py:139
+msgid "Music needs Tracker version 3.0.0 or higher."
+msgstr "Music-ს ტრეკერის 3.0.0 áƒáƒœ უფრრáƒáƒ®áƒáƒšáƒ˜ ვერსირსჭირდებáƒ."
+
+#: gnomemusic/views/playlistsview.py:45
+msgid "Playlists"
+msgstr "დáƒáƒ¡áƒáƒ™áƒ áƒáƒ•áƒ˜ სიები"
+
+#: gnomemusic/views/searchview.py:304
+msgid "Artists Results"
+msgstr "ნáƒáƒžáƒáƒ•áƒœáƒ˜ შემსრულებლები"
+
+#: gnomemusic/views/searchview.py:318
+msgid "Albums Results"
+msgstr "ნáƒáƒžáƒáƒ•áƒœáƒ˜ áƒáƒšáƒ‘áƒáƒ›áƒ”ბი"
+
+#: gnomemusic/widgets/albumwidget.py:245
+msgid "{} minute"
+msgid_plural "{} minutes"
+msgstr[0] "{} წუთი"
+
+#: gnomemusic/widgets/discbox.py:75
+msgid "Disc {}"
+msgstr "დისკი {}"
+
+#: gnomemusic/widgets/headerbar.py:66
+msgid "Selected {} song"
+msgid_plural "Selected {} songs"
+msgstr[0] "áƒáƒ áƒ©áƒ”ულირ{} სიმღერáƒ"
+
+#: gnomemusic/widgets/lastfmdialog.py:64
+msgid "Your music listening is reported to Last.fm."
+msgstr "თქვენი მáƒáƒ¡áƒ›áƒ”ნილი სიმღერების სáƒáƒ®áƒ”ლები იგზáƒáƒ•áƒœáƒ”ბრLast.fm-ზე."
+
+#: gnomemusic/widgets/lastfmdialog.py:66
+msgid "Your music listening is not reported to Last.fm."
+msgstr "თქვენი მáƒáƒ¡áƒ›áƒ”ნილი სიმღერების სáƒáƒ®áƒ”ლები áƒáƒ  იგზáƒáƒ•áƒœáƒ”ბრLast.fm-ზე."
+
+#. TRANSLATORS: displays the username of the Last.fm account
+#: gnomemusic/widgets/lastfmdialog.py:70
+msgid "Logged in as {}"
+msgstr "შესული ბრძáƒáƒœáƒ“ებით, რáƒáƒ’áƒáƒ áƒª {}"
+
+#: gnomemusic/widgets/lastfmdialog.py:71
+msgid "Configure"
+msgstr "მáƒáƒ áƒ’ებáƒ"
+
+#: gnomemusic/widgets/playertoolbar.py:167
+msgid "Pause"
+msgstr "შეჩერებáƒ"
+
+#: gnomemusic/widgets/playlistcontrols.py:130
+msgid "{} Song"
+msgid_plural "{} Songs"
+msgstr[0] "{} სიმღერáƒ"
+
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "მáƒáƒ«áƒ”ბნეთ სიმღერები, შემსრულებლები, áƒáƒšáƒ‘áƒáƒ›áƒ”ბი დრდáƒáƒ¡áƒáƒ™áƒ áƒáƒ•áƒ˜ სიები"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "მუსიკის დáƒáƒ™áƒ•áƒ áƒ˜áƒ¡áƒ დრმáƒáƒ áƒ—ვის áƒáƒžáƒšáƒ˜áƒ™áƒáƒªáƒ˜áƒ GNOME-სთვის."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "GNOME Music-ის ვებ-გვერდზე გáƒáƒ“áƒáƒ¡áƒ•áƒšáƒ"
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "მუსიკის თქვენი სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის შემცველáƒáƒ‘რáƒáƒ¥ გáƒáƒ›áƒáƒ©áƒœáƒ“ებáƒ"
diff --git a/po/kk.po b/po/kk.po
index abcc7e56..15dd75aa 100644
--- a/po/kk.po
+++ b/po/kk.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-08-29 19:26+0500\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-08-19 12:51+0600\n"
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
"Language-Team: Kazakh <kk_KZ@googlegroups.com>\n"
"Language: kk\n"
@@ -16,11 +16,13 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 3.0\n"
+"X-Generator: Poedit 3.3.2\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME музыкаÑÑ‹"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Музыка"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -39,15 +41,10 @@ msgstr ""
"Жергілікті жинақтағы тректерді тауып, автоматты түрде жаÑалған ойнату "
"тізімдерін пайдаланыңыз немеÑе жаңаÑын жаÑаңыз."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "GNOME музыкаÑÑ‹ әзірлеушілері"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Музыка"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Музыка ойнатқышы"
@@ -66,27 +63,19 @@ msgid "Window size (width and height)."
msgstr "Терезе өлшемі (ені мен биіктігі)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Терезе орны"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Терезе орны (x және y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Терезе макÑималды етілген"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Терезенің макÑималды күйі."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Ойнату қайталау режимі"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -99,29 +88,29 @@ msgstr ""
"аралаÑтыру жоқ), \"shuffle\" (ойнату тізімін аралаÑтырып қолдану, барлығын "
"қайталауды білдіреді)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "ReplayGain Ñ–Ñке қоÑу"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Ðльбомдар үшін ReplayGain Ñ–Ñке қоÑу не Ñөндіру"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Жүйелік ұйықтатуды болдырмау"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Музыканы ойнату кезінде жүйелік ұйықтату режиміне өтуді Ñ–Ñке қоÑады немеÑе "
"Ñөндіреді"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Музыка тарихын Last.fm қызметіне хабарлау"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -129,79 +118,21 @@ msgstr ""
"Тыңдау тарихын және \"ағымдағы ойналуда\" ақпаратын Last.fm қызметіне "
"жіберуді Ñ–Ñке қоÑады немеÑе Ñөндіреді."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 GNOME музыкаÑÑ‹ әзірлеушілері"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Музыканы ойнау және баÑқаруға арналған GNOME қолданбаÑÑ‹."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "GNOME музыкаÑÑ‹ веб Ñайтын шолу"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"GNOME музыкаÑÑ‹ еркін бағдарлама; Ñіз оны Free Software Foundation шығарған "
-"GNU General Public License аÑÑында еркін тарата не/және өзгерте алаÑыз; "
-"Ð»Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ Ð½Ò±ÑқаÑÑ‹ 2 не (тандауыңызша) кез-келген кейін шыққан.\n"
-"\n"
-"GNOME музыкаÑÑ‹ пайдалы болады деген Ñеніммен таратылады, бірақ ЕШҚÐÐДÐЙ "
-"КЕПІЛДЕМЕ берілмейді; КОММЕРЦИЯЛЫҚ ÒšÒ°ÐДЫЛЫҚ немеÑе белгілі бір ÐœÐҚСÐТТÐРҒР"
-"СӘЙКЕС КЕЛЕТІÐІ үшін де. Көбірек білу үшін GNU General Public License "
-"қараңыз.\n"
-"\n"
-"Сіз оÑÑ‹ GNOME музыкаÑÑ‹ бағдарламаÑымен бірге GNU General Public License "
-"көшірмеÑін алуыңыз керек еді; олай болмаÑа, Free Software Foundation, Inc. "
-"ұйымына, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA адреÑÑ– "
-"бойынша хабарлаÑыңыз.\n"
-"\n"
-"GNOME музыкаÑÑ‹ авторлары GPL үйлеÑімÑіз GStreamer плагиндерін GStreamer және "
-"GNOME музыкаÑÑ‹ қолданбаÑымен бірге қолданылып, таратылу құқығын Ñ€Ò±Ò›Ñат "
-"етеді. Бұл Ñ€Ò±Ò›Ñат GNOME музыкаÑÑ‹ өзінің GPL лицензиÑÑынан баÑымды болады. "
-"Егер Ñіз бұл кодты түрлендіретін болÑаңыз, оÑÑ‹ Ñ€Ò±Ò›Ñатты кодтың өз "
-"бөлігіңізге де Ñ–Ñке аÑыра алаÑыз, бірақ бұл міндетті емеÑ. Егер Ñіз оны "
-"жаÑамауды таңдаÑаңыз, лицензиÑның бұл ерекше бөлігін өз нұÑқаңыздан алып "
-"таÑтаңыз."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Ойнату"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "Ой_нату"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "_Таңдамалы өлеңдерге қоÑу"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "Ойнату тізіміне Ò›_оÑу…"
@@ -209,133 +140,133 @@ msgstr "Ойнату тізіміне Ò›_оÑу…"
msgid "Last.fm Account"
msgstr "Last.fm тіркелгіÑÑ–"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Музыканы тыңдауды хабарлау"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "П_ернетақта жарлықтары"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Көмек"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "Музыка қолданбаÑÑ‹ тур_алы"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Музыкаға қош келдіңіз"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Мәзір"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Таңдау"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "Ба_Ñ Ñ‚Ð°Ñ€Ñ‚Ñƒ"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Іздеу"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Кері"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Жалпы"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Терезені жабу"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Іздеу"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Көмек"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Жарлықтар"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Ойнату"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "ÐÑлдату"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "КелеÑÑ– өлең"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Ðлдыңғы өлең"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Қайталауды Ñ–Ñке қоÑу/Ñөндіру"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "ÐралаÑтыруды Ñ–Ñке қоÑу/Ñөндіру"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "ÐавигациÑ"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Ðльбомдарға өту"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "ӘртіÑтерге өту"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Өлеңдерге өту"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Ойнату тізімдеріне өту"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Ðртқа өту"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -343,87 +274,79 @@ msgstr ""
"Last.fm – Ñіз тыңдаған музыкаға негізделген жеке Ò±ÑыныÑтар беретін музыканы "
"табу қызметі."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Музыканы тыңдауды хабарлау бапталмаған"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "Музыка тыңдау туралы хабарлау үшін Last.fm тіркелгіÑіне кіріңіз."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Кіру"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Жүктелуде"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Ðлдыңғы"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "КелеÑÑ–"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "Ө_шіру"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "Ðтын Ó©_згерту…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Ойнату тізімінің аты"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Дайын"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Бірінші ойнату тізіміңіздің атын енгізіңіз"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "_ЖаÑау"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Жаңа ойнату тізімі…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "ҚоÑу"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Ойнату тізіміне қоÑу"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "Қо_Ñу"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "Бол_дырмау"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "ӘртіÑтер"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Барлығын қарау"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Ðльбомдар"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Өлеңдер"
@@ -435,44 +358,56 @@ msgstr "Барлығын таңдау"
msgid "Select None"
msgstr "Ештеңе таңдамау"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "БірнәрÑені таңдау үшін оның Ò¯Ñтіне шертіңіз"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "Ойнату тізіміне Ò›_оÑу"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Ойнату тізіміне қоÑу…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "Ойнату тізімінен өші_ру"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "GNOME жобаÑÑ‹"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Ойнату тізімінен өшіру"
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr "Baurzhan Muftakhidinov <baurthefirst@gmail.com>"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Copyright © GNOME музыкаÑÑ‹ әзірлеушілері"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Ðударған"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Ең жиі ойнатылған"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Ешқашан ойналмаған"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Жақында ойналған"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Жақында қоÑылған"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Таңдамалы өлеңдер"
@@ -504,27 +439,39 @@ msgid "Playing music"
msgstr "Музыканы ойнату"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "ÐралаÑтыру"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "ÐралаÑтыру/қайталау Ñөндірілген"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Тректі қайталау"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Барлығын қайталау"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "ÐралаÑтыру/қайталау Ñөндірілген"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "ÐралаÑтыру"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "{} ойнату тізімі өшірілген"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Болдырмау"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} {} ішінен өшірілді"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "БелгіÑіз альбом"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "БелгіÑіз әртіÑ"
@@ -571,62 +518,127 @@ msgstr "Музыка қолданбаÑÑ‹ Tracker 3.0.0 немеÑе жоғарÑ
msgid "Playlists"
msgstr "Ойнату тізімдері"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "ӘртіÑтер нәтижелері"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Ðльбомдар нәтижелері"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} минут"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "ДиÑк {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "{} өлең таңдалды"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Сіздің музыканы тыңдау тарихыңыз Last.fm қызметіне хабарланады."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Сіздің музыканы тыңдау тарихыңыз Last.fm қызметіне хабарланбайды."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "{} ретінде кірген"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Баптау"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "{} ойнату тізімі өшірілген"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} {} ішінен өшірілді"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "ÐÑлдату"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} өлең"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Өлеңдер, әртіÑтер, альбомдар және ойнату тізімдерден іздеу"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "Музыканы ойнау және баÑқаруға арналған GNOME қолданбаÑÑ‹."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "GNOME музыкаÑÑ‹ веб Ñайтын шолу"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "GNOME музыкаÑÑ‹ еркін бағдарлама; Ñіз оны Free Software Foundation "
+#~ "шығарған GNU General Public License аÑÑында еркін тарата не/және өзгерте "
+#~ "алаÑыз; Ð»Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ Ð½Ò±ÑқаÑÑ‹ 2 не (тандауыңызша) кез-келген кейін шыққан.\n"
+#~ "\n"
+#~ "GNOME музыкаÑÑ‹ пайдалы болады деген Ñеніммен таратылады, бірақ ЕШҚÐÐДÐЙ "
+#~ "КЕПІЛДЕМЕ берілмейді; КОММЕРЦИЯЛЫҚ ÒšÒ°ÐДЫЛЫҚ немеÑе белгілі бір "
+#~ "ÐœÐҚСÐТТÐРҒРСӘЙКЕС КЕЛЕТІÐІ үшін де. Көбірек білу үшін GNU General "
+#~ "Public License қараңыз.\n"
+#~ "\n"
+#~ "Сіз оÑÑ‹ GNOME музыкаÑÑ‹ бағдарламаÑымен бірге GNU General Public License "
+#~ "көшірмеÑін алуыңыз керек еді; олай болмаÑа, Free Software Foundation, "
+#~ "Inc. ұйымына, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA "
+#~ "адреÑÑ– бойынша хабарлаÑыңыз.\n"
+#~ "\n"
+#~ "GNOME музыкаÑÑ‹ авторлары GPL үйлеÑімÑіз GStreamer плагиндерін GStreamer "
+#~ "және GNOME музыкаÑÑ‹ қолданбаÑымен бірге қолданылып, таратылу құқығын "
+#~ "Ñ€Ò±Ò›Ñат етеді. Бұл Ñ€Ò±Ò›Ñат GNOME музыкаÑÑ‹ өзінің GPL лицензиÑÑынан баÑымды "
+#~ "болады. Егер Ñіз бұл кодты түрлендіретін болÑаңыз, оÑÑ‹ Ñ€Ò±Ò›Ñатты кодтың өз "
+#~ "бөлігіңізге де Ñ–Ñке аÑыра алаÑыз, бірақ бұл міндетті емеÑ. Егер Ñіз оны "
+#~ "жаÑамауды таңдаÑаңыз, лицензиÑның бұл ерекше бөлігін өз нұÑқаңыздан алып "
+#~ "таÑтаңыз."
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "Музыка бумаңыздың құрамаÑÑ‹ оÑында көрÑетіледі"
+
+#~ msgid "GNOME Music"
+#~ msgstr "GNOME музыкаÑÑ‹"
+
+#~ msgid "Window position"
+#~ msgstr "Терезе орны"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Терезе орны (x және y)."
+
+#~ msgid "Loading"
+#~ msgstr "Жүктелуде"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Ойнату тізіміне қоÑу…"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
diff --git a/po/ko.po b/po/ko.po
index 711c095c..63fcc355 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -1,15 +1,15 @@
# Korean translation for gnome-music.
# Copyright (C) 2013 gnome-music's authors and many contributors.
# This file is distributed under the same license as the gnome-music package.
-# Seong-ho Cho <shcho@gnome.org>, 2013-2021.
+# Seong-ho Cho <shcho@gnome.org>, 2013-2023.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-08-30 18:13+0900\n"
-"Last-Translator: Seong-ho Cho <shcho@gnome.org>\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-08-27 02:04+0900\n"
+"Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>\n"
"Language-Team: Korean <gnome-kr@googlegroups.com>\n"
"Language: ko\n"
"MIME-Version: 1.0\n"
@@ -19,8 +19,10 @@ msgstr ""
"X-Generator: Poedit 2.3.1\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "그놈 ìŒì•…"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "ìŒì•…"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -39,15 +41,10 @@ msgstr ""
"로컬 모ìŒì§‘ì—ì„œ íŠ¸ëž™ì„ ì°¾ê±°ë‚˜ ìžë™ìœ¼ë¡œ 미리 만든 ìž¬ìƒ ëª©ë¡ì„ 활용하거나 새 목"
"ë¡ì„ 구성합니다."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "The GNOME Music developers"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "ìŒì•…"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "ìŒì•… 재ìƒê¸°"
@@ -66,27 +63,19 @@ msgid "Window size (width and height)."
msgstr "ì°½ í¬ê¸°(너비 ë° ë†’ì´)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "창 위치"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "ì°½ 위치(가로 ë° ì„¸ë¡œ)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "창 최대화"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "ì°½ 최대화 ìƒíƒœ."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "ìž¬ìƒ ë°˜ë³µ 모드"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -98,103 +87,49 @@ msgstr ""
"ë¡ ë°˜ë³µ, ìž„ì˜ ìž¬ìƒ ì•ˆí•¨), “shuffleâ€(ìž¬ìƒ ëª©ë¡ ìž„ì˜ ìž¬ìƒ, 모든 곡 반복으로 ê°„"
"주)입니다."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "ë¦¬í”Œë ˆì´ ê²Œì¸ í™œì„±í™”"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "ì•¨ë²”ì˜ ë¦¬í”Œë ˆì´ ê²Œì¸ì„ 켜거나 ë•ë‹ˆë‹¤"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "시스템 대기 모드 진입 중단"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"ìŒì•…ì„ ìž¬ìƒí•˜ëŠ” ë™ì•ˆ 시스템 대기모드 진입 중단 여부를 활성화하거나 비활성화합"
"니다"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "last.fmì— ìŒì•… ìž¬ìƒ ê¸°ë¡ ë³´ê³ "
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
msgstr "last.fmì— ìŒì•… 취향과 “현재 ìž¬ìƒ ì¤‘â€ ì •ë³´ 보내기를 켜거나 ë•ë‹ˆë‹¤."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 GNOME Music Developers"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "그놈용 ìŒì•… 재ìƒê¸° ë° ê´€ë¦¬ 프로그램."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "그놈 ìŒì•… 웹사ì´íŠ¸ë¥¼ 방문하세요"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"그놈 ìŒì•…ì€ ìžìœ  소프트웨어 입니다. ìžìœ  소프트웨어 ìž¬ë‹¨ì´ ë°œí‘œí•œ GNU ì¼ë°˜ ê³µ"
-"중 사용허가서 ë¼ì´ì„ ìŠ¤ 버전 2 ë˜ëŠ”(ì—¬ëŸ¬ë¶„ì˜ ì·¨í–¥ì— ë”°ë¼) ê·¸ ì´ìƒì˜ ì¡°í•­ì— ë”°"
-"ë¼ ìž¬ë°°í¬ ë˜ëŠ” 수정할 수 있습니다.\n"
-"\n"
-"그놈 ìŒì•…ì„ ì—¬ëŸ¬ë¶„ê»˜ì„œ 쓸모 있게 사용하길 ë°”ë¼ë©° ë°°í¬í•˜ì§€ë§Œ, ê·¸ ì–´ë–¤ ë³´ì¦ì„ "
-"하지 않으며 심지어 ìƒì—…성 ë˜ëŠ” ì¼ë¶€ 목ì ì˜ ì í•©ì„±ì— 대한 ì•”ì‹œì  ë³´ì¦ë„ 하지 "
-"않습니다. ìžì„¸í•œ ë‚´ìš©ì€ GNU ì¼ë°˜ 공중 사용허가서를 참조하십시오.\n"
-"\n"
-"그놈 ìŒì•…ê³¼ 함께 GNU ì¼ë°˜ 공중 ì‚¬ìš©í—ˆê°€ì„œì˜ ì‚¬ë³¸ì„ ë°›ì•„ì•¼ 합니다. 만약 받지 "
-"못했다면 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, "
-"Boston, MA 02110-1301 USA로 요청하십시오.\n"
-"\n"
-"그놈 ìŒì•… 제작ìžëŠ” 비 GPL 호환 지스트리머 플러그ì¸ì— 대한 ì‚¬ìš©ì„ í—ˆê°€ 받았으"
-"ë©°, 지스트리머와 그놈 ìŒì•…ì„ í•¨ê»˜ ë°°í¬í•©ë‹ˆë‹¤. ì´ ê¶Œí•œì€ ê·¸ë†ˆ ìŒì•…ì— ëŒ€í•´ 효력"
-"ì„ ë¯¸ì¹˜ëŠ” GNU ì¼ë°˜ 공중 ì‚¬ìš©í—ˆê°€ì„œì— ë”°ë¼ í—ˆê°€ë°›ìŠµë‹ˆë‹¤. ì´ ì½”ë“œë¥¼ 수정하면, "
-"여러분 ë²„ì „ì˜ ì½”ë“œì— ì´ ì˜ˆì™¸ë¥¼ 확장할 수 있겠지만, ì˜ë¬´ì ì¸ ê²ƒì€ ì•„ë‹™ë‹ˆë‹¤. ì›"
-"치 않는다면 ì—¬ëŸ¬ë¶„ì˜ ì½”ë“œ 버전ì—ì„œ 예외 ì¡°í•­ì„ ì‚­ì œí•˜ì‹­ì‹œì˜¤."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "재ìƒ"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "재ìƒ(_P)"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "ì¦ê²¨ì°¾ëŠ” 곡 추가(_F)"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "ìž¬ìƒ ëª©ë¡ì— 추가(_A)…"
@@ -202,220 +137,212 @@ msgstr "ìž¬ìƒ ëª©ë¡ì— 추가(_A)…"
msgid "Last.fm Account"
msgstr "last.fm 계정"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "ê°ìƒ ìŒì•… ë³´ê³ "
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "키보드 바로 가기 키(_K)"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "ë„움ë§(_H)"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "ìŒì•… ì •ë³´(_A)"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "그놈 ìŒì•… ì‚¬ìš©ì„ í™˜ì˜í•©ë‹ˆë‹¤"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "메뉴"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "ì„ íƒ"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "취소(_C)"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "검색"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "뒤로"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "ì¼ë°˜"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "창 닫기"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "검색"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "ë„움ë§"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "바로 가기 키"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "재ìƒ"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "재ìƒ/ì¼ì‹œ 정지"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "ë‹¤ìŒ ê³¡"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "ì´ì „ 곡"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "반복 ìž¬ìƒ ì „í™˜"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "ìž„ì˜ ìž¬ìƒ ëª¨ë“œ 전환"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "íƒìƒ‰"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "앨범으로 ì´ë™"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "ìŒì•…가로 ì´ë™"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "ì¦ê²¨ì°¾ëŠ” 곡으로 ì´ë™"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "ìž¬ìƒ ëª©ë¡ìœ¼ë¡œ ì´ë™"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "뒤로"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
msgstr ""
"last.fmì€ ê°ìƒê³¡ì— ë”°ë¼ ê°œì¸í™” 추천 서비스를 제공하는 ìŒì•… 검색 서비스입니다."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "ìŒì•… 보고를 설정하지 ì•ŠìŒ"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "ê°ìƒ ìŒì•…ì„ ë³´ê³ í•˜ë ¤ë©´ last.fm 계정으로 로그ì¸í•˜ì‹­ì‹œì˜¤."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "로그ì¸"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "불러오는 중"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "ì´ì „"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "다ìŒ"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "삭제(_D)"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "ì´ë¦„ 바꾸기(_R)…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "ìž¬ìƒ ëª©ë¡ ì´ë¦„"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "완료(_D)"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "첫 ìž¬ìƒ ëª©ë¡ ì´ë¦„ì„ ìž…ë ¥í•˜ì‹­ì‹œì˜¤"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "만들기(_R)"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "새 ìž¬ìƒ ëª©ë¡â€¦"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "추가"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "ìž¬ìƒ ëª©ë¡ì— 추가"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "추가(_A)"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "ë˜ëŒë¦¬ê¸°(_U)"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "ìŒì•…ê°€"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "ëª¨ë‘ ë³´ê¸°"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "앨범"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "노래"
@@ -427,44 +354,56 @@ msgstr "ëª¨ë‘ ì„ íƒ"
msgid "Select None"
msgstr "ì„ íƒ ì•ˆí•¨"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "ì„ íƒí•  í•­ëª©ì„ ëˆ„ë¥´ì‹­ì‹œì˜¤"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "ìž¬ìƒ ëª©ë¡ì— 추가(_A)"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "ìž¬ìƒ ëª©ë¡ì— 추가…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "ìž¬ìƒ ëª©ë¡ì—ì„œ 제거(_R)"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "그놈 프로ì íŠ¸"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "ìž¬ìƒ ëª©ë¡ì—ì„œ 제거"
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr "조성호 <shcho@gnome.org>"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Copyright The GNOME Music Developers"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "번역ìž"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "가장 ë§Žì´ ìž¬ìƒí•¨"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "ìž¬ìƒ ì•ˆí•¨"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "최근 재ìƒí•¨"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "최근 추가함"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "ì¦ê²¨ì°¾ëŠ” 곡"
@@ -496,27 +435,39 @@ msgid "Playing music"
msgstr "ìŒì•… ìž¬ìƒ ì¤‘"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "뒤섞기"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "뒤섞기/반복 ë”"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "한 곡만 반복"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "ëª¨ë‘ ë°˜ë³µ"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "뒤섞기/반복 ë”"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "뒤섞기"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "{} ìž¬ìƒ ëª©ë¡ì„ 제거했습니다"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "실행 취소"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} í•­ëª©ì„ {}ì—ì„œ 제거했습니다"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "알 수 없는 앨범"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "ì•Œ 수 없는 ìŒì•…ê°€"
@@ -562,62 +513,124 @@ msgstr "그놈 ìŒì•…ì—서는 버전 3.0.0 ì´ìƒì˜ 트래커가 필요합니ë
msgid "Playlists"
msgstr "ìž¬ìƒ ëª©ë¡"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "ìŒì•…ê°€ ê²°ê³¼"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "앨범 결과"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{}분"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "ë””ìŠ¤í¬ {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "ìŒì•… {}곡 ì„ íƒí•¨"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "ê°ìƒ ìŒì•…ì„ last.fm으로 보고합니다."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "ê°ìƒ ìŒì•…ì„ last.fm으로 보고하지 않습니다."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "{} 사용ìžë¡œ 로그ì¸í–ˆìŠµë‹ˆë‹¤"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "설정"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "{} ìž¬ìƒ ëª©ë¡ì„ 제거했습니다"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} í•­ëª©ì„ {}ì—ì„œ 제거했습니다"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "ì¼ì‹œ 정지"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "노래 {}곡"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "곡, ìŒì•…ê°€, 앨범, ìž¬ìƒ ëª©ë¡ì„ 검색합니다"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "그놈용 ìŒì•… 재ìƒê¸° ë° ê´€ë¦¬ 프로그램."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "그놈 ìŒì•… 웹사ì´íŠ¸ë¥¼ 방문하세요"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "그놈 ìŒì•…ì€ ìžìœ  소프트웨어 입니다. ìžìœ  소프트웨어 ìž¬ë‹¨ì´ ë°œí‘œí•œ GNU ì¼"
+#~ "ë°˜ 공중 사용허가서 ë¼ì´ì„ ìŠ¤ 버전 2 ë˜ëŠ”(ì—¬ëŸ¬ë¶„ì˜ ì·¨í–¥ì— ë”°ë¼) ê·¸ ì´ìƒì˜ ì¡°"
+#~ "í•­ì— ë”°ë¼ ìž¬ë°°í¬ ë˜ëŠ” 수정할 수 있습니다.\n"
+#~ "\n"
+#~ "그놈 ìŒì•…ì„ ì—¬ëŸ¬ë¶„ê»˜ì„œ 쓸모 있게 사용하길 ë°”ë¼ë©° ë°°í¬í•˜ì§€ë§Œ, ê·¸ ì–´ë–¤ ë³´ì¦"
+#~ "ì„ í•˜ì§€ 않으며 심지어 ìƒì—…성 ë˜ëŠ” ì¼ë¶€ 목ì ì˜ ì í•©ì„±ì— 대한 ì•”ì‹œì  ë³´ì¦ë„ "
+#~ "하지 않습니다. ìžì„¸í•œ ë‚´ìš©ì€ GNU ì¼ë°˜ 공중 사용허가서를 참조하십시오.\n"
+#~ "\n"
+#~ "그놈 ìŒì•…ê³¼ 함께 GNU ì¼ë°˜ 공중 ì‚¬ìš©í—ˆê°€ì„œì˜ ì‚¬ë³¸ì„ ë°›ì•„ì•¼ 합니다. 만약 ë°›"
+#~ "지 못했다면 Free Software Foundation, Inc., 51 Franklin Street, Fifth "
+#~ "Floor, Boston, MA 02110-1301 USA로 요청하십시오.\n"
+#~ "\n"
+#~ "그놈 ìŒì•… 제작ìžëŠ” 비 GPL 호환 지스트리머 플러그ì¸ì— 대한 ì‚¬ìš©ì„ í—ˆê°€ 받았"
+#~ "으며, 지스트리머와 그놈 ìŒì•…ì„ í•¨ê»˜ ë°°í¬í•©ë‹ˆë‹¤. ì´ ê¶Œí•œì€ ê·¸ë†ˆ ìŒì•…ì— ëŒ€"
+#~ "í•´ íš¨ë ¥ì„ ë¯¸ì¹˜ëŠ” GNU ì¼ë°˜ 공중 ì‚¬ìš©í—ˆê°€ì„œì— ë”°ë¼ í—ˆê°€ë°›ìŠµë‹ˆë‹¤. ì´ ì½”ë“œë¥¼ "
+#~ "수정하면, 여러분 ë²„ì „ì˜ ì½”ë“œì— ì´ ì˜ˆì™¸ë¥¼ 확장할 수 있겠지만, ì˜ë¬´ì ì¸ 것"
+#~ "ì€ ì•„ë‹™ë‹ˆë‹¤. ì›ì¹˜ 않는다면 ì—¬ëŸ¬ë¶„ì˜ ì½”ë“œ 버전ì—ì„œ 예외 ì¡°í•­ì„ ì‚­ì œí•˜ì‹­ì‹œ"
+#~ "오."
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "ìŒì•… í´ë”ì˜ ë‚´ìš©ì€ ì—¬ê¸°ì— ë‚˜íƒ€ë‚©ë‹ˆë‹¤"
+
+#~ msgid "GNOME Music"
+#~ msgstr "그놈 ìŒì•…"
+
+#~ msgid "Window position"
+#~ msgstr "창 위치"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "ì°½ 위치(가로 ë° ì„¸ë¡œ)."
+
+#~ msgid "Loading"
+#~ msgstr "불러오는 중"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "ìž¬ìƒ ëª©ë¡ì— 추가…"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
diff --git a/po/lt.po b/po/lt.po
index b040d8de..33ec9cc9 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -1,27 +1,29 @@
# Lithuanian translation for gnome-music.
# Copyright (C) 2013 gnome-music's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-music package.
-# Aurimas ÄŒernius <aurisc4@gmail.com>, 2013-2021.
+# Aurimas ÄŒernius <aurisc4@gmail.com>, 2013-2022.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-09-02 18:01+0300\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-09-03 22:20+0300\n"
"Last-Translator: Aurimas ÄŒernius <aurisc4@gmail.com>\n"
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
"Language: lt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
-"%100<10 || n%100>=20) ? 1 : 2)\n"
-"X-Generator: Gtranslator 40.0\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"(n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Poedit 3.3.2\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME muzika"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Muzika"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -40,15 +42,10 @@ msgstr ""
"Raskite takelius savo vietinėje kolekcijoje, naudokite automatiškai sukurtus "
"grojaraÅ¡Äius arba kurkite naujus."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "GNOME Muzikos kūrėjai"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Muzika"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Muzikos grotuvas"
@@ -67,27 +64,19 @@ msgid "Window size (width and height)."
msgstr "Lango dydis (plotis ir aukštis)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Lango padÄ—tis"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Lango padÄ—tis (x ir y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Langas išdidintas"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Lango išdidinimo būsena."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Grojimo kartojimo veiksena"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -99,132 +88,48 @@ msgstr ""
"„song“ (kartoti dabartinę dainą), „all“ (kartoti grojaraštį, nemaišyti), "
"„shuffle“ (maišyti grojaraštį, kartoja viską)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Įjungti ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Įjungia arba išjungia ReplayGain albumams"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Neleisti užmigdyti sistemos"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr "Įjungia arba išjungia sistemos užmigdymo draudimą, kol grojama muzika"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Pranešti muzikos istoriją Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
msgstr ""
"Įjungia arba išjungia santraukų „šiuo metu grojama“ siuntimą į Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Autorių teisės © 2018 GNOME Muzikos kūrėjai"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Muzikos grotuvas ir tvarkymo programa GNOME aplinkai."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Apsilankykite GNOME Muzikos tinklalapyje"
-
-#: data/ui/AboutDialog.ui.in:13
-#| msgid ""
-#| "GNOME Music is free software; you can redistribute it and/or modify it "
-#| "under the terms of the GNU General Public License as published by the "
-#| "Free Software Foundation; either version 2 of the License, or (at your "
-#| "option) any later version.\n"
-#| "\n"
-#| "GNOME Music is distributed in the hope that it will be useful, but "
-#| "WITHOUT ANY WARRANTY; without even the implied warranty of "
-#| "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
-#| "Public License for more details.\n"
-#| "\n"
-#| "You should have received a copy of the GNU General Public License along "
-#| "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-#| "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-#| "\n"
-#| "The GNOME Music authors hereby grant permission for non-GPL compatible "
-#| "GStreamer plugins to be used and distributed together with GStreamer and "
-#| "GNOME Music. This permission is above and beyond the permissions granted "
-#| "by the GPL license by which GNOME Music is covered. If you modify this "
-#| "code, you may extend this exception to your version of the code, but you "
-#| "are not obligated to do so. If you do not wish to do so, delete this "
-#| "exception statement from your version.\n"
-#| "\n"
-#| "“Magic of the vinyl†by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
-#| "https://www.flickr.com/photos/_spy_/12270839403"
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"GNOME Muzika yra laisva programinė įranga; galite ją platinti ir(arba) "
-"keisti pagal GNU bendrosios viešosios licencijos (GPL) sąlygas, kaip jas "
-"pateikia Free Software Foundation; licencijos versija 2 arba (jūsų "
-"pasirinkta) bet kuri vÄ—lesnÄ— versija.\n"
-"\n"
-"GNOME Muzika yra platinama tikintis kad ji bus naudinga, bet BE JOKIŲ "
-"GARANTIJŲ; netgi be numanomų PREKYBINIŲ ar TINKAMUMO KONKREČIAM TIKSLUI "
-"garantijų. Daugiau informacijos rasite GNU bendrojoje viešojoje "
-"licencijoje.\n"
-"\n"
-"Jūs turėjote gauti GNU bendrosios viešosios licencijos kopiją kartu su GNOME "
-"Muzika; jei negavote, parašykite Free Software Foundation, Inc., 51 Franklin "
-"Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"GNOME Muzikos autoriai taip pat leidžia kartu su GNOME Muzika ir GStreamer "
-"platinti ir naudoti su GStreamer suderinamus ne-GPL įskiepius. Šis leidimas "
-"yra aukÅ¡Äiau ir plaÄiau GPL licencijos teikiamų leidimų, kurie galioja GNOME "
-"Muzikai. Jei pakeisite šį kodą, galite šią išimtį pritaikyti savo kodo "
-"versijai, bet neprivalote to daryti. Jei nepageidaujate, ištrinkite šį "
-"punktą iš savo versijos."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Groti"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Groti"
-#: data/ui/AlbumWidget.ui:167
-#| msgid "Favorite Songs"
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Pridėti prie _mėgiamų dainų"
-#: data/ui/AlbumWidget.ui:171
-#| msgid "Add to Playlist…"
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_Pridėti į grojaraštį…"
@@ -232,133 +137,133 @@ msgstr "_Pridėti į grojaraštį…"
msgid "Last.fm Account"
msgstr "Last.fm paskyra"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Pranešti klausomą muziką"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Klaviatūros trumpiniai"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Žinynas"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_Apie muzikÄ…"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Sveiki pradÄ—jÄ™ naudoti MuzikÄ…"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Meniu"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Žymėti"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Atsisakyti"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Paieška"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Grįžti"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Bendra"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Užverti langą"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Paieška"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Žinynas"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Trumpiniai"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Grojimas"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Groti/Pristabdyti"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Kita daina"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "AnkstesnÄ— daina"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Perjungti kartojimÄ…"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Perjungti maišymą"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Naršymas"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Pereiti į albumus"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Pereiti į atlikėjus"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Pereiti į dainas"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Pereiti į grojaraÅ¡Äius"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Grįžti"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -366,89 +271,81 @@ msgstr ""
"Last.fm yra muzikos aptikimo tarnyba, kuri jums suteikia asmenines "
"rekomendacijas pagal jūsų klausomą muziką."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Pranešimas apie muziką nenustatytas"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"Prisijunkite prie savo Last.fm paskyros ir praneškite apie savo klausomą "
"muzikÄ…."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Prisijungti"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Įkeliama"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "AnkstesnÄ—"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Kita"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Trinti"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "Pe_rvadinti…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "GrojaraÅ¡Äio pavadinimas"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "A_tlikta"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Ä®veskite savo pirmojo grojaraÅ¡Äio pavadinimÄ…"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "Suku_rti"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Naujas grojaraštis…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "PridÄ—ti"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Pridėti į grojaraštį"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_PridÄ—ti"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Atšaukti"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "AtlikÄ—jai"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Rodyti viskÄ…"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Albumai"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Dainos"
@@ -460,44 +357,60 @@ msgstr "Žymėti viską"
msgid "Select None"
msgstr "Nieko nežymėti"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Spauskite ant elementų jiems pažymėti"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Pridėti į grojaraštį"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Pridėti į grojaraštį…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_PaÅ¡alinti iÅ¡ grojaraÅ¡Äio"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Å alinti iÅ¡ grojaraÅ¡Äio"
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "GNOME projektas"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr ""
+"IÅ¡vertÄ—:\n"
+"Aurimas ÄŒernius <aurisc4@gmail.com>"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Autorių teisės priklauso GNOME Muzikos kūrėjams"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr ""
+"IÅ¡vertÄ—:\n"
+"Aurimas ÄŒernius"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Dažniausiai grojama"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Niekada negrota"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Neseniai grota"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Neseniai pridÄ—ta"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "MÄ—giama daina"
@@ -531,27 +444,39 @@ msgid "Playing music"
msgstr "Grojama muzika"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Maišyti"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Maišyti/nekartoti"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Kartoti dainÄ…"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Kartoti visus"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Maišyti/nekartoti"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Maišyti"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Grojaraštis {} pašalintas"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Atšaukti"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} pašalinta iš {}"
-#: gnomemusic/utils.py:80
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Nežinomas albumas"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Nežinomas atlikėjas"
@@ -560,7 +485,6 @@ msgid "Your XDG Music directory is not set."
msgstr "Jūsų XDG muzikos katalogas nenustatytas."
#: gnomemusic/views/emptyview.py:72
-#| msgid "Music folder"
msgid "Music Folder"
msgstr "Muzikos aplankas"
@@ -568,36 +492,30 @@ msgstr "Muzikos aplankas"
#. folder. {} will be replaced with the translated text 'Music folder'
#: gnomemusic/views/emptyview.py:76
msgid "The contents of your {} will appear here."
-msgstr "Čia matysite savo {} aplanko turinį"
+msgstr "Čia matysite savo {} aplanko turinį."
#: gnomemusic/views/emptyview.py:124
-#| msgid "No music found"
msgid "No Music Found"
msgstr "Nerasta muzikos"
#: gnomemusic/views/emptyview.py:125
-#| msgid "Try a different search"
msgid "Try a Different Search"
msgstr "Bandykite kitą paiešką"
#: gnomemusic/views/emptyview.py:129
-#| msgid "GNOME Music could not connect to Tracker"
msgid "GNOME Music could not connect to Tracker."
msgstr "GNOME Muzikai nepavyko prisijungti prie Tracker sistemos."
#: gnomemusic/views/emptyview.py:131
-#| msgid "Your music files cannot be indexed without Tracker running"
msgid "Your music files cannot be indexed without Tracker running."
msgstr ""
"JÅ«sų muzikos failų negalima indeksuoti be veikianÄios Tracker sistemos."
#: gnomemusic/views/emptyview.py:137
-#| msgid "Your system Tracker version seems outdated"
msgid "Your system Tracker version seems outdated."
msgstr "Jūsų sistemos Tracker versija atrodo pasenusi."
#: gnomemusic/views/emptyview.py:139
-#| msgid "Music needs Tracker version 3.0.0 or higher"
msgid "Music needs Tracker version 3.0.0 or higher."
msgstr "Muzikai reikia Tracker versijos 3.0.0 arba naujesnÄ—s."
@@ -605,68 +523,133 @@ msgstr "Muzikai reikia Tracker versijos 3.0.0 arba naujesnÄ—s."
msgid "Playlists"
msgstr "GrojaraÅ¡Äiai"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Atlikėjų rezultatai"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Albumų rezultatai"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minutÄ—"
msgstr[1] "{} minutÄ—s"
msgstr[2] "{} minuÄių"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Diskas {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "Pažymėta {} daina"
msgstr[1] "Pažymėtos {} dainos"
msgstr[2] "Pažymėta {} dainų"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
-msgstr "Apie jūsų klausomą muziką bus pranešama Last.fm"
+msgstr "Apie jūsų klausomą muziką bus pranešama Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
-msgstr "Apie jūsų klausomą muziką nėra pranešama Last.fm"
+msgstr "Apie jūsų klausomą muziką nėra pranešama Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Prisijungta kaip {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Nustatyti"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Grojaraštis {} pašalintas"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} pašalinta iš {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Pristabdyti"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} daina"
msgstr[1] "{} dainos"
msgstr[2] "{} dainų"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "IeÅ¡koti dainų, atlikÄ—jų, albumų bei grojaraÅ¡Äių"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "Muzikos grotuvas ir tvarkymo programa GNOME aplinkai."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Apsilankykite GNOME Muzikos tinklalapyje"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "GNOME Muzika yra laisva programinė įranga; galite ją platinti ir(arba) "
+#~ "keisti pagal GNU bendrosios viešosios licencijos (GPL) sąlygas, kaip jas "
+#~ "pateikia Free Software Foundation; licencijos versija 2 arba (jūsų "
+#~ "pasirinkta) bet kuri vÄ—lesnÄ— versija.\n"
+#~ "\n"
+#~ "GNOME Muzika yra platinama tikintis kad ji bus naudinga, bet BE JOKIŲ "
+#~ "GARANTIJŲ; netgi be numanomų PREKYBINIŲ ar TINKAMUMO KONKREČIAM TIKSLUI "
+#~ "garantijų. Daugiau informacijos rasite GNU bendrojoje viešojoje "
+#~ "licencijoje.\n"
+#~ "\n"
+#~ "Jūs turėjote gauti GNU bendrosios viešosios licencijos kopiją kartu su "
+#~ "GNOME Muzika; jei negavote, parašykite Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "GNOME Muzikos autoriai taip pat leidžia kartu su GNOME Muzika ir "
+#~ "GStreamer platinti ir naudoti su GStreamer suderinamus ne-GPL įskiepius. "
+#~ "Å is leidimas yra aukÅ¡Äiau ir plaÄiau GPL licencijos teikiamų leidimų, "
+#~ "kurie galioja GNOME Muzikai. Jei pakeisite šį kodą, galite šią išimtį "
+#~ "pritaikyti savo kodo versijai, bet neprivalote to daryti. Jei "
+#~ "nepageidaujate, ištrinkite šį punktą iš savo versijos."
+
+#~| msgid "The contents of your {} will appear here."
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "Čia matysite savo muzikos aplanko turinį"
+
+#~ msgid "GNOME Music"
+#~ msgstr "GNOME muzika"
+
+#~ msgid "Window position"
+#~ msgstr "Lango padÄ—tis"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Lango padÄ—tis (x ir y)."
+
+#~ msgid "Loading"
+#~ msgstr "Įkeliama"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Pridėti į grojaraštį…"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
diff --git a/po/lv.po b/po/lv.po
index 6870e47e..acbbcdbe 100644
--- a/po/lv.po
+++ b/po/lv.po
@@ -1,13 +1,13 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
-# RÅ«dolfs Mazurs <rudolfs.mazurs@gmail.com>, 2013, 2014, 2016, 2017, 2018, 2019, 2020.
+# RÅ«dolfs Mazurs <rudolfs.mazurs@gmail.com>, 2013, 2014, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2020-08-28 15:14+0000\n"
-"PO-Revision-Date: 2020-09-12 21:23+0300\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-09-14 20:28+0300\n"
"Last-Translator: RÅ«dolfs Mazurs <rudolfs.mazurs@gmail.com>\n"
"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
"Language: lv\n"
@@ -16,11 +16,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 :"
" 2);\n"
-"X-Generator: Lokalize 19.12.3\n"
+"X-Generator: Lokalize 22.12.3\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME MÅ«zika"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "MÅ«zika"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -28,30 +30,21 @@ msgid "Play and organize your music collection"
msgstr "Atskaņo un organizē savu mūzikas kolekciju"
#: data/org.gnome.Music.appdata.xml.in.in:9
-msgid ""
-"An easy way to play your music. Automatically discover music on your "
-"computer, the local network and internet services."
-msgstr ""
-"VienkÄrÅ¡s veids, kÄ atskaņot jÅ«su mÅ«ziku. AutomÄtiski atklÄjiet mÅ«ziku uz "
-"sava datora, lokÄlajÄ tÄ«klÄ vai interneta pakalpojumos."
+msgid "An easy and pleasant way to play your music."
+msgstr "VienkÄrÅ¡s un patÄ«kams veids, kÄ atskaņot savu mÅ«ziku."
#: data/org.gnome.Music.appdata.xml.in.in:12
msgid ""
-"Find tracks in your local collection, get music from DLNA servers or try "
-"something new with the Jamendo and Magnatune services."
+"Find tracks in your local collection, use automatically generated playlists "
+"or curate a fresh one."
msgstr ""
-"Atrodiet celiņus jÅ«su lokÄlajÄ kolekcijÄ, saņemiet mÅ«ziku no DLNA serveriem "
-"vai no Jamendo un Magnatune pakalpojumiem."
+"Atrodi celiņus savÄ lokÄlajÄ kolekcijÄ, automÄtiski veido repertuÄrus vai "
+"izveido jaunus."
-#: data/org.gnome.Music.appdata.xml.in.in:110
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "GNOME MÅ«zikas izstrÄdÄtÄji"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:70
-msgid "Music"
-msgstr "MÅ«zika"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "MÅ«zikas atskaņotÄjs"
@@ -70,27 +63,19 @@ msgid "Window size (width and height)."
msgstr "Loga izmērs (platums un augstums)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Loga novietojums"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Loga novietojums (x un y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Logs maksimizēts"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Loga stÄvoklis — maksimizÄ“ts."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Atskaņot atkÄrtoÅ¡anÄs režīmÄ"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -102,238 +87,178 @@ msgstr ""
"“song†(atkÄrtot atskaņoto dziesmu), “all†(atkÄrtot visu repertuÄru, "
"nemaisÄ«t), “shuffle†(samaisÄ«t repertuÄru, arÄ« atkÄrtot)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Ieslēgt ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Ieslēdz vai izslēdz ReplayGain albumiem"
-#: data/org.gnome.Music.gschema.xml:38
-msgid "Inital state has been displayed"
-msgstr "SÄkotnÄ“jais stÄvoklis tika parÄdÄ«ts"
-
-#: data/org.gnome.Music.gschema.xml:39
-msgid "Set to true when initial state has been displayed"
-msgstr "Iestatiet uz “patiessâ€, kad sÄkotnÄ“jais stÄvoklis ir parÄdÄ«ts"
-
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "NomÄkt sistÄ“mas iesnauÅ¡anu"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr "IeslÄ“dz vai izslÄ“dz sistÄ“mas iesnauÅ¡anas nomÄkÅ¡anu, kad atskaņo mÅ«ziku"
-#: data/org.gnome.Music.gschema.xml:48
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Ziņot Last.fm par mūzikas vēsturi"
-#: data/org.gnome.Music.gschema.xml:49
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
msgstr ""
-"IeslÄ“dz vai izslÄ“dz scrobbles un “palÅ¡aik atskaņo†informÄcijas sÅ«tÄ«Å¡anu uz"
-" Last.fm."
+"IeslÄ“dz vai izslÄ“dz scrobbles un “palÅ¡aik atskaņo†informÄcijas sÅ«tÄ«Å¡anu uz "
+"Last.fm."
+
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
+msgid "Play"
+msgstr "Atskaņot"
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "AutortiesÄ«bas © 2018 GNOME MÅ«zikas izstrÄdÄtÄji"
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
+msgid "_Play"
+msgstr "_Atskaņot"
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "MÅ«zikas atskaņoÅ¡anas un pÄrvaldÄ«bas lietotne GNOME vidÄ“."
+#: data/ui/AlbumWidget.ui:134
+msgid "Add to _Favorite Songs"
+msgstr "Pievienot _iecienÄ«tajÄm dziesmÄm"
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Apmeklēt GNOME Mūzikas tīmekļa vietni"
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
+msgid "_Add to Playlist…"
+msgstr "_Pievienot repertuÄram…"
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version.\n"
-"\n"
-"“Magic of the vinyl†by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
-"https://www.flickr.com/photos/_spy_/12270839403"
-msgstr ""
-"GNOME MÅ«zika ir brÄ«vÄ programmatÅ«ra; jÅ«s varat izplatÄ«t un/vai modificÄ“t to "
-"saskaÅ†Ä ar GNU VispÄrÄ“jÄs PubliskÄs Licences 2. vai kÄdas vÄ“lÄkas versijas "
-"noteikumiem.\n"
-"\n"
-"GNOME Mūzika tiek izplatīts ar cerību, ka tas būs noderīgs. Tas tiek "
-"izplatÄ«ts BEZ jebkÄdas garantijas vai iekļautas ražotÄja atbildÄ«bas par Å¡o "
-"produktu. SÄ«kÄku informÄciju meklÄ“jiet GNU VispÄrÄ“jÄs PubliskÄs Licences "
-"tekstÄ.\n"
-"GNU VispÄrÄ“jÄs PubliskÄs Licence ir pieejama kopÄ ar GNOME MÅ«zika "
-"instalÄciju. Ja tÄ jums nav pieejama, jÅ«s to varat iegÅ«t no Free Software "
-"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 "
-"USA.\n"
-"\n"
-"GNOME Mūzika autori dod tiesības ar GPL nesavietojamiem GStreamer spraudņiem "
-"tik izplatÄ«tiem kopÄ ar GStreamer un GNOME MÅ«ziku. Å Ä«s tiesÄ«bas ir plaÅ¡Äkas "
-"kÄ tÄs, ko sniedz GPL licence, ko izmanto GNOME MÅ«zika. Ja vÄ“laties mainÄ«t "
-"Å¡o kodu, jÅ«s varat Å¡o izņēmumu attiecinÄt arÄ« uz savas programmas pirmkodu, "
-"bet jums nav pienÄkuma to darÄ«t. Ja nevÄ“laties iekļaut izņēmumu, izdzÄ“siet "
-"šo izņēmuma teikumu no savas versijas.\n"
-"\n"
-"Sami Pyylampi attēls “Magic of the vinyl†ir zem licences CC-BY-SA 2.0 "
-"https://www.flickr.com/photos/_spy_/12270839403"
-
-#: data/ui/AlbumWidget.ui:107
-msgid "Released"
-msgstr "Izlaists"
-
-#: data/ui/AlbumWidget.ui:123
-msgid "Running Length"
-msgstr "Atskaņošanas ilgums"
-
-#: data/ui/AlbumWidget.ui:167
-msgid "Composer"
-msgstr "Komponists"
-
-#: data/ui/AppMenu.ui:20 data/ui/LastfmDialog.ui:8
+#: data/ui/AppMenu.ui:23 data/ui/LastfmDialog.ui:8
msgid "Last.fm Account"
msgstr "Last.fm konts"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Ziņot par mūzikas klausīšanos"
-#: data/ui/AppMenu.ui:69
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_TastatÅ«ras Ä«sinÄjumtaustiņi"
-#: data/ui/AppMenu.ui:83
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Palīdzība"
-#: data/ui/AppMenu.ui:97
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "P_ar mūziku"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/EmptyView.ui:30
+msgid "Welcome to Music"
+msgstr "Laipni lÅ«dzam MÅ«zikÄ"
+
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Izvēlne"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Izvēlēties"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:244
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "At_celt"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Meklēt"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Atpakaļ"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "VispÄrÄ«gi"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Aizvērt logu"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Meklēt"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Palīdzība"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Saīsnes"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Atskaņošana"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Atskaņot / pauzēt"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "NÄkamÄ dziesma"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "IepriekÅ¡Ä“jÄ dziesma"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "PÄrslÄ“gt atkÄrtoÅ¡anu"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "PÄrslÄ“gt sajaukÅ¡anu"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "NavigÄcija"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Iet uz albumiem"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Iet uz izpildÄ«tÄjiem"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Iet uz dziesmÄm"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Iet uz repertuÄriem"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Iet atpakaļ"
@@ -343,129 +268,83 @@ msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
msgstr ""
-"Last.fm ir mÅ«zikas atklÄÅ¡anas pakalpojums, kas jums dod personalizÄ“tus"
-" ieteikumus balstoties uz tÄ, kÄdu mÅ«ziku jÅ«s klausÄties."
+"Last.fm ir mÅ«zikas atklÄÅ¡anas pakalpojums, kas jums dod personalizÄ“tus "
+"ieteikumus balstoties uz tÄ, kÄdu mÅ«ziku jÅ«s klausÄties."
-#: data/ui/LastfmDialog.ui:32 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Mūzikas ziņošana nav iestatīta"
-#: data/ui/LastfmDialog.ui:46 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"Ierakstieties savÄ Last.fm kontÄ, lai ziņotu par savu mÅ«zikas klausÄ«Å¡anos."
-#: data/ui/LastfmDialog.ui:57 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Ierakstīties"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "IelÄdÄ“"
-
-#: data/ui/PlayerToolbar.ui:6
-msgid "Shuffle"
-msgstr "Sajaukt"
-
-#: data/ui/PlayerToolbar.ui:11
-msgid "Repeat All"
-msgstr "AtkÄrtot visas"
-
-#: data/ui/PlayerToolbar.ui:16
-msgid "Repeat Song"
-msgstr "AtkÄrtot dziesmu"
-
-#. Causes tracks to play in random order
-#: data/ui/PlayerToolbar.ui:21
-msgid "Shuffle/Repeat Off"
-msgstr "IzslÄ“gt jaukÅ¡anu/atkÄrtoÅ¡anu"
-
-#: data/ui/PlayerToolbar.ui:69
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Iepriekšējais"
-#: data/ui/PlayerToolbar.ui:85 gnomemusic/widgets/playertoolbar.py:146
-msgid "Play"
-msgstr "Atskaņot"
-
-#: data/ui/PlayerToolbar.ui:101
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "NÄkamais"
-#: data/ui/PlaylistContextMenu.ui:5
-msgctxt "context menu item"
-msgid "Play"
-msgstr "Atskaņot"
-
-#: data/ui/PlaylistContextMenu.ui:9
-msgid "Add to Playlist…"
-msgstr "Pievienot repertuÄram…"
-
-#: data/ui/PlaylistContextMenu.ui:13
-msgid "Remove From Playlist"
-msgstr "Izņemt no repertuÄra"
-
-#: data/ui/PlaylistControls.ui:6
-msgid "_Play"
-msgstr "_Atskaņot"
-
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Dzēst"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "PÄ_rdÄ“vÄ“t…"
-#: data/ui/PlaylistControls.ui:41
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "RepertuÄra nosaukums"
-#: data/ui/PlaylistControls.ui:74
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Gatavs"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Ievadiet sava pirmÄ repertuÄra nosaukumu"
-#: data/ui/PlaylistDialog.ui:92
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "Iz_veidot"
-#: data/ui/PlaylistDialog.ui:155
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Jauns repertuÄrs…"
-#: data/ui/PlaylistDialog.ui:169
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Pievienot"
-#: data/ui/PlaylistDialog.ui:241
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Pievienot repertuÄram"
-#: data/ui/PlaylistDialog.ui:257
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Pievienot"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Atsaukt"
-
-#: data/ui/SearchView.ui:43 gnomemusic/views/artistsview.py:43
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "IzpildÄ«tÄji"
-#: data/ui/SearchView.ui:53 data/ui/SearchView.ui:106
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "RÄdÄ«t visu"
-#: data/ui/SearchView.ui:96 gnomemusic/views/albumsview.py:47
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Albumi"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:44
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Dziesmas"
@@ -477,58 +356,78 @@ msgstr "Izvēlēties visu"
msgid "Select None"
msgstr "Iezīmēt neko"
-#: data/ui/SelectionBarMenuButton.ui:31 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Spiediet uz vienumiem, lai tos izvēlētos"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Pievienot repertuÄram"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "Izņemt no _repertuÄra"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "GNOME projekts"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr "RÅ«dolfs Mazurs <rudolfs.mazurs@gmail.com>"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "AutortiesÄ«bas pieder GNOME MÅ«zikas izstrÄdÄtÄjiem"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Tulkojuši"
+
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:832
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "VisbiežÄk atskaņotÄs"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:885
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Nekad neatskaņotÄs"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:937
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Nesen atskaņotÄs"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:999
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Nesen pievienotÄs"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1061
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "IecienÄ«tÄs dziesmas"
-#: gnomemusic/gstplayer.py:378
+#: gnomemusic/gstplayer.py:408
msgid "Unable to play the file"
msgstr "NeizdevÄs atskaņot datni"
-#: gnomemusic/gstplayer.py:384
+#: gnomemusic/gstplayer.py:414
msgid "_Find in {}"
msgstr "_Meklēt mapē {}"
#. TRANSLATORS: separator for two codecs
-#: gnomemusic/gstplayer.py:394
+#: gnomemusic/gstplayer.py:424
msgid " and "
msgstr " un "
#. TRANSLATORS: separator for a list of codecs
-#: gnomemusic/gstplayer.py:397
+#: gnomemusic/gstplayer.py:427
msgid ", "
msgstr ", "
-#: gnomemusic/gstplayer.py:399
+#: gnomemusic/gstplayer.py:429
msgid "{} is required to play the file, but is not installed."
msgid_plural "{} are required to play the file, but are not installed."
msgstr[0] "Lai atskaņotu datni, nepieciešams {}, bet tas nav uzinstalēts."
@@ -539,125 +438,248 @@ msgstr[2] "Lai atskaņotu datni, nepieciešami {}, bet tie nav uzinstalēti."
msgid "Playing music"
msgstr "Atskaņo mūziku"
-#: gnomemusic/utils.py:81
+#. Translators: "shuffle" causes tracks to play in random order.
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "IzslÄ“gt jaukÅ¡anu/atkÄrtoÅ¡anu"
+
+#: gnomemusic/player.py:45
+msgid "Repeat Song"
+msgstr "AtkÄrtot dziesmu"
+
+#: gnomemusic/player.py:46
+msgid "Repeat All"
+msgstr "AtkÄrtot visas"
+
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Sajaukt"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "RepertuÄra {} ir izņemts"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Atsaukt"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} izņemts no {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "NezinÄms albums"
-#: gnomemusic/utils.py:102
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "NezinÄms izpildÄ«tÄjs"
-#: gnomemusic/views/emptyview.py:67
+#: gnomemusic/views/emptyview.py:65
msgid "Your XDG Music directory is not set."
msgstr "Jūsu XDG mūzikas direktorija nav iestatīta."
-#: gnomemusic/views/emptyview.py:74
-msgid "Music folder"
+#: gnomemusic/views/emptyview.py:72
+msgid "Music Folder"
msgstr "MÅ«zikas mape"
#. TRANSLATORS: This is a label to display a link to open user's music
#. folder. {} will be replaced with the translated text 'Music folder'
-#: gnomemusic/views/emptyview.py:78
+#: gnomemusic/views/emptyview.py:76
msgid "The contents of your {} will appear here."
msgstr "JÅ«su {} saturs parÄdÄ«sies Å¡eit"
-#: gnomemusic/views/emptyview.py:112
-msgid "Hey DJ"
-msgstr "Eu DJ"
-
-#: gnomemusic/views/emptyview.py:121 gnomemusic/views/emptyview.py:126
-msgid "No music found"
+#: gnomemusic/views/emptyview.py:124
+msgid "No Music Found"
msgstr "Nav atrasta mūzika"
-#: gnomemusic/views/emptyview.py:128
-msgid "Try a different search"
+#: gnomemusic/views/emptyview.py:125
+msgid "Try a Different Search"
msgstr "MÄ“Ä£iniet ar citu meklÄ“jamo vÄrdu"
-#: gnomemusic/views/emptyview.py:133
-msgid "GNOME Music could not connect to Tracker"
-msgstr "GNOME Mūzika nevarēja savienoties ar Tracker"
+#: gnomemusic/views/emptyview.py:129
+msgid "GNOME Music could not connect to Tracker."
+msgstr "GNOME Mūzika nevarēja savienoties ar Tracker."
-#: gnomemusic/views/emptyview.py:136
-msgid "Your music files cannot be indexed without Tracker running"
-msgstr "Nevar indeksēt jūsu mūzikas datnes, ja nedarbojas Tracker"
+#: gnomemusic/views/emptyview.py:131
+msgid "Your music files cannot be indexed without Tracker running."
+msgstr "Nevar indeksēt jūsu mūzikas datnes, ja nedarbojas Tracker."
-#: gnomemusic/views/emptyview.py:143
-msgid "Your system Tracker version seems outdated"
-msgstr "Jūsu sistēmas Tracker versija ir novecojusi"
+#: gnomemusic/views/emptyview.py:137
+msgid "Your system Tracker version seems outdated."
+msgstr "Jūsu sistēmas Tracker versija ir novecojusi."
-#: gnomemusic/views/emptyview.py:146
-#| msgid "Music needs Tracker version 2.2.0 or higher"
-msgid "Music needs Tracker version 3.0.0 or higher"
-msgstr "MÅ«zikai vajag Tracker vismaz versiju 3.0.0"
+#: gnomemusic/views/emptyview.py:139
+msgid "Music needs Tracker version 3.0.0 or higher."
+msgstr "MÅ«zikai vajag Tracker vismaz versiju 3.0.0."
-#: gnomemusic/views/playlistsview.py:41
+#: gnomemusic/views/playlistsview.py:45
msgid "Playlists"
msgstr "RepertuÄri"
-#: gnomemusic/views/searchview.py:386
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "IzpildÄ«tÄju rezultÄti"
-#: gnomemusic/views/searchview.py:401
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Albumu rezultÄti"
-#: gnomemusic/widgets/albumwidget.py:154
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minūte"
msgstr[1] "{} minūtes"
msgstr[2] "{} minūšu"
-#: gnomemusic/widgets/disclistboxwidget.py:60
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Disks (}"
-#: gnomemusic/widgets/headerbar.py:68
-#| msgid "Selected {} item"
-#| msgid_plural "Selected {} items"
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "Izvēlēta {} dziesma"
msgstr[1] "Izvēlētas {} dziesmas"
msgstr[2] "Izvēlētas {} dziesmas"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "JÅ«su mÅ«zikas klausÄ«Å¡anÄs tiek ziņota uz Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "JÅ«su mÅ«zikas klausÄ«Å¡anÄs netiek tiek ziņota uz Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "IerakstÄ«jies kÄ {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Konfigurēt"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "RepertuÄra {} ir izņemts"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} izņemts no {}"
-
-#: gnomemusic/widgets/playertoolbar.py:143
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Pauzēt"
-#: gnomemusic/widgets/playlistcontrols.py:127
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} dziesma"
msgstr[1] "{} dziesmas"
msgstr[2] "{} dziesmu"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "MeklÄ“t dziesmas, izpildÄ«tÄjus, albumus un repertuÄrus"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "MÅ«zikas atskaņoÅ¡anas un pÄrvaldÄ«bas lietotne GNOME vidÄ“."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Apmeklēt GNOME Mūzikas tīmekļa vietni"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "GNOME MÅ«zika ir brÄ«vÄ programmatÅ«ra; jÅ«s varat izplatÄ«t un/vai modificÄ“t "
+#~ "to saskaÅ†Ä ar GNU VispÄrÄ“jÄs PubliskÄs Licences 2. vai kÄdas vÄ“lÄkas "
+#~ "versijas noteikumiem.\n"
+#~ "\n"
+#~ "GNOME Mūzika tiek izplatīts ar cerību, ka tas būs noderīgs. Tas tiek "
+#~ "izplatÄ«ts BEZ jebkÄdas garantijas vai iekļautas ražotÄja atbildÄ«bas par "
+#~ "Å¡o produktu. SÄ«kÄku informÄciju meklÄ“jiet GNU VispÄrÄ“jÄs PubliskÄs "
+#~ "Licences tekstÄ.\n"
+#~ "GNU VispÄrÄ“jÄs PubliskÄs Licence ir pieejama kopÄ ar GNOME MÅ«zika "
+#~ "instalÄciju. Ja tÄ jums nav pieejama, jÅ«s to varat iegÅ«t no Free Software "
+#~ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 "
+#~ "USA.\n"
+#~ "\n"
+#~ "GNOME Mūzika autori dod tiesības ar GPL nesavietojamiem GStreamer "
+#~ "spraudņiem tik izplatÄ«tiem kopÄ ar GStreamer un GNOME MÅ«ziku. Å Ä«s "
+#~ "tiesÄ«bas ir plaÅ¡Äkas kÄ tÄs, ko sniedz GPL licence, ko izmanto GNOME "
+#~ "MÅ«zika. Ja vÄ“laties mainÄ«t Å¡o kodu, jÅ«s varat Å¡o izņēmumu attiecinÄt arÄ« "
+#~ "uz savas programmas pirmkodu, bet jums nav pienÄkuma to darÄ«t. Ja "
+#~ "nevēlaties iekļaut izņēmumu, izdzēsiet šo izņēmuma teikumu no savas "
+#~ "versijas."
+
+#~| msgid "The contents of your {} will appear here."
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "JÅ«su mÅ«zikas mapes saturs parÄdÄ«sies Å¡eit"
+
+#~ msgid "GNOME Music"
+#~ msgstr "GNOME MÅ«zika"
+
+#~ msgid "Window position"
+#~ msgstr "Loga novietojums"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Loga novietojums (x un y)."
+
+#~ msgid "Loading"
+#~ msgstr "IelÄdÄ“"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Pievienot repertuÄram…"
+
+#~ msgid ""
+#~ "An easy way to play your music. Automatically discover music on your "
+#~ "computer, the local network and internet services."
+#~ msgstr ""
+#~ "VienkÄrÅ¡s veids, kÄ atskaņot jÅ«su mÅ«ziku. AutomÄtiski atklÄjiet mÅ«ziku uz "
+#~ "sava datora, lokÄlajÄ tÄ«klÄ vai interneta pakalpojumos."
+
+#~ msgid ""
+#~ "Find tracks in your local collection, get music from DLNA servers or try "
+#~ "something new with the Jamendo and Magnatune services."
+#~ msgstr ""
+#~ "Atrodiet celiņus jÅ«su lokÄlajÄ kolekcijÄ, saņemiet mÅ«ziku no DLNA "
+#~ "serveriem vai no Jamendo un Magnatune pakalpojumiem."
+
+#~ msgid "Inital state has been displayed"
+#~ msgstr "SÄkotnÄ“jais stÄvoklis tika parÄdÄ«ts"
+
+#~ msgid "Set to true when initial state has been displayed"
+#~ msgstr "Iestatiet uz “patiessâ€, kad sÄkotnÄ“jais stÄvoklis ir parÄdÄ«ts"
+
+#~ msgid "Released"
+#~ msgstr "Izlaists"
+
+#~ msgid "Running Length"
+#~ msgstr "Atskaņošanas ilgums"
+
+#~ msgid "Composer"
+#~ msgstr "Komponists"
+
+#~ msgctxt "context menu item"
+#~ msgid "Play"
+#~ msgstr "Atskaņot"
+
+#~ msgid "Hey DJ"
+#~ msgstr "Eu DJ"
+
#~ msgid "All"
#~ msgstr "Visi"
diff --git a/po/nb.po b/po/nb.po
index eccad2ca..0f0afac8 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -1,15 +1,15 @@
# Norwegian bokmål translation of gnome-music.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
-# Kjartan Maraas <kmaraas@gnome.org>, 2012-2021.
+# Kjartan Maraas <kmaraas@gnome.org>, 2012-2022.
# Ã…ka Sikrom <a4NOSPAMPLEASETHANKYOU@hush.com>, 2014.
#
msgid ""
msgstr ""
-"Project-Id-Version: gnome-music 3.40.x\n"
+"Project-Id-Version: gnome-music 4.2\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2020-12-04 14:27+0000\n"
-"PO-Revision-Date: 2021-03-13 18:41+0100\n"
+"POT-Creation-Date: 2022-02-19 12:39+0000\n"
+"PO-Revision-Date: 2022-03-17 14:12+0100\n"
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
"Language: no\n"
@@ -19,8 +19,10 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME Musikk"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:61
+#: gnomemusic/window.py:71
+msgid "Music"
+msgstr "Musikk"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -28,30 +30,19 @@ msgid "Play and organize your music collection"
msgstr "Spill av og organiser musikksamlingen din"
#: data/org.gnome.Music.appdata.xml.in.in:9
-msgid ""
-"An easy way to play your music. Automatically discover music on your "
-"computer, the local network and internet services."
-msgstr ""
-"En enkel måte å spille av din musikk. Finner musikk automatisk på din "
-"datamaskin, det lokale nettverket og tjenester på internett."
+msgid "An easy and pleasant way to play your music."
+msgstr "En enkel og fornøyelig måte å spille din musikk."
#: data/org.gnome.Music.appdata.xml.in.in:12
msgid ""
-"Find tracks in your local collection, get music from DLNA servers or try "
-"something new with the Jamendo and Magnatune services."
-msgstr ""
-"Finn sanger i din lokale samling, hent musikk fra DNLA-tjenere eller prøv "
-"noe nytt med Jamendo- og Magnatune-tjenestene."
+"Find tracks in your local collection, use automatically generated playlists "
+"or curate a fresh one."
+msgstr "Finn spor i din lokale samling, bruk automatisk genererte spillelister eller lage en ny."
-#: data/org.gnome.Music.appdata.xml.in.in:126
+#: data/org.gnome.Music.appdata.xml.in.in:149
msgid "The GNOME Music developers"
msgstr "GNOME Music-utviklerene"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:70
-msgid "Music"
-msgstr "Musikk"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Musikkavspiller"
@@ -70,27 +61,19 @@ msgid "Window size (width and height)."
msgstr "Vindustørrelse (bredde og høyde)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Vinduposisjon"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Vindusposisjon (x og y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Vindu maksimert"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Vindu maksimert."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Repeteringsmodus for avspilling"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -103,39 +86,31 @@ msgstr ""
"«all» (gjenta spillelista, uten å blande den) og «shuffle» (bland "
"spillelista, og - implisitt - gjenta den)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Slå på ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Slår på eller av ReplayGain for album"
-#: data/org.gnome.Music.gschema.xml:38
-msgid "Inital state has been displayed"
-msgstr "Første tilstand er vist"
-
-#: data/org.gnome.Music.gschema.xml:39
-msgid "Set to true when initial state has been displayed"
-msgstr "Sett til «true» når første tilstand har blitt vist"
-
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Hindre hvilemodus"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
-msgstr ""
+msgstr "Slår av eller på hindring av hvilemodus når musikk blir spilt av"
-#: data/org.gnome.Music.gschema.xml:48
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Rapporter musikkhistorikk til Last.fm"
-#: data/org.gnome.Music.gschema.xml:49
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
-msgstr ""
+msgstr "Slår av eller på sending av musikkinfo og låt som spilles til Last.fm."
#: data/ui/AboutDialog.ui.in:9
msgid "Copyright © 2018 GNOME Music Developers"
@@ -171,174 +146,168 @@ msgid ""
"the GPL license by which GNOME Music is covered. If you modify this code, "
"you may extend this exception to your version of the code, but you are not "
"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version.\n"
-"\n"
-"“Magic of the vinyl†by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
-"https://www.flickr.com/photos/_spy_/12270839403"
+"statement from your version."
msgstr ""
-"GNOME musikk er fri programvare. Du kan redistribuere og/eller endre "
-"programmet under betingelsene gitt i GNU General Public License som utgitt "
-"av Free Software Foundation; enten versjon 2 av lisensen, eller (hvis du "
-"ønsker det) enhver senere versjon.\n"
+"GNOME musikk er fri programvare. Du kan redistribuere og/eller endre programmet under betingelsene gitt i GNU General Public License som utgitt av Free Software Foundation; enten versjon 2 av lisensen, eller (hvis du ønsker det) enhver senere versjon.\n"
"\n"
-"GNOME musikk distribueres i håp om at programmet er nyttig, men uten NOEN "
-"GARANTI, ikke engang implisitt garanti om at det er SALGBART eller PASSER ET "
-"BESTEMT FORMÃ…L. Se GNU General Public License for detaljer.\n"
+"GNOME musikk distribueres i håp om at programmet er nyttig, men uten NOEN GARANTI, ikke engang implisitt garanti om at det er SALGBART eller PASSER ET BESTEMT FORMÅL. Se GNU General Public License for detaljer.\n"
"\n"
-"Du skal ha mottatt en kopi av GNU General Public License sammen med dette "
-"programmet. Hvis dette ikke er tilfelle, kan du skrive til Free Software "
-"Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
-"USA.\n"
+"Du skal ha mottatt en kopi av GNU General Public License sammen med dette programmet. Hvis dette ikke er tilfelle, kan du skrive til Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
"\n"
-"GNOME musikk utviklerene gir herved rettigheter for bruk og distribusjon av "
-"GStreamer-tillegg som ikke er kompatible med GPL sammen med GStreamer og "
-"GNOME musikk. Denne rettigheten går foran rettighetene som gis av GPL-"
-"lisensen som gjelder for GNOME musikk. Hvis du endrer denne koden kan du "
-"bruke dette unntaket for din versjon av koden, men du er ikke pliktig til "
-"gjøre dette. Hvis du ikke ønsker å gjøre dette kan du slette denne teksten "
-"fra din versjon.\n"
-"\n"
-"Bildet «Magic of the vinyl» av Sami Pyylampi er lisensiert med CC-BY-SA 2.0. "
-"https://www.flickr.com/photos/_spy_/12270839403"
+"GNOME musikk utviklerene gir herved rettigheter for bruk og distribusjon av GStreamer-tillegg som ikke er kompatible med GPL sammen med GStreamer og GNOME musikk. Denne rettigheten går foran rettighetene som gis av GPL-lisensen som gjelder for GNOME musikk. Hvis du endrer denne koden kan du bruke dette unntaket for din versjon av koden, men du er ikke pliktig til gjøre dette. Hvis du ikke ønsker å gjøre dette kan du slette denne teksten fra din versjon."
+
+#: data/ui/AlbumWidget.ui:86 data/ui/PlayerToolbar.ui:88
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:168
+msgid "Play"
+msgstr "Spill av"
-#: data/ui/AlbumWidget.ui:106
-msgid "Released"
-msgstr "Utgitt"
+#: data/ui/AlbumWidget.ui:132 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
+msgid "_Play"
+msgstr "S_pill av"
-#: data/ui/AlbumWidget.ui:122
-msgid "Running Length"
-msgstr "Spillelengde"
+#: data/ui/AlbumWidget.ui:136
+msgid "Add to _Favorite Songs"
+msgstr "Legg til i _favorittlåter"
-#: data/ui/AlbumWidget.ui:166
-msgid "Composer"
-msgstr "Komponist"
+#: data/ui/AlbumWidget.ui:140 data/ui/SongWidgetMenu.ui:15
+msgid "_Add to Playlist…"
+msgstr "_Legg til i spilleliste …"
-#: data/ui/AppMenu.ui:20 data/ui/LastfmDialog.ui:8
+#: data/ui/AppMenu.ui:23 data/ui/LastfmDialog.ui:8
msgid "Last.fm Account"
msgstr "Last.fm konto"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Rapporter det du lytter til"
-#: data/ui/AppMenu.ui:69
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Tastatursnarveier"
-#: data/ui/AppMenu.ui:83
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Hjelp"
-#: data/ui/AppMenu.ui:97
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_Om Musikk"
+#: data/ui/EmptyView.ui:26 data/ui/InitialState.ui:13
+msgid "Welcome to Music"
+msgstr "Velkommen til Musikk"
+
#: data/ui/HeaderBar.ui:16
msgid "Menu"
msgstr "Meny"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:24 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Velg"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:244
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:30 data/ui/PlaylistDialog.ui:211
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "A_vbryt"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:42 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Søk"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:50
msgid "Back"
msgstr "Tilbake"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Generelt"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Lukk vindu"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Søk"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Hjelp"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Snarveier"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Avspilling"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Spill av/pause"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Neste sang"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Forrige sang"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Slå av/på gjenta"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Slå av/på tilfeldig rekkefølge"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navigasjon"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "GÃ¥ til album"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "GÃ¥ til artister"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "GÃ¥ til sanger"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "GÃ¥ til spillelister"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "GÃ¥ tilbake"
+#: data/ui/InitialState.ui:25
+msgid "The contents of your Music Folder will appear here"
+msgstr "Innholdet i din musikkmappe vises her."
+
#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
@@ -347,125 +316,79 @@ msgstr ""
"Last.fm er en tjeneste for utforsking av musikk som gir deg personlige "
"anbefalinger basert på det du lytter til."
-#: data/ui/LastfmDialog.ui:32 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Musikkrapportering er ikke satt opp"
-#: data/ui/LastfmDialog.ui:46 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "Logg in på din Last.fm konto for å rapportere det du lytter til."
-#: data/ui/LastfmDialog.ui:57 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Logg inn"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Laster"
-
-#: data/ui/PlayerToolbar.ui:6
-msgid "Shuffle"
-msgstr "Bland"
-
-#: data/ui/PlayerToolbar.ui:11
-msgid "Repeat All"
-msgstr "Gjenta alle"
-
-#: data/ui/PlayerToolbar.ui:16
-msgid "Repeat Song"
-msgstr "Gjenta sang"
-
-#. Causes tracks to play in random order
-#: data/ui/PlayerToolbar.ui:21
-msgid "Shuffle/Repeat Off"
-msgstr "Bland/Gjenta av"
-
-#: data/ui/PlayerToolbar.ui:69
+#: data/ui/PlayerToolbar.ui:75
msgid "Previous"
msgstr "Forrige"
-#: data/ui/PlayerToolbar.ui:85 gnomemusic/widgets/playertoolbar.py:146
-msgid "Play"
-msgstr "Spill av"
-
-#: data/ui/PlayerToolbar.ui:101
+#: data/ui/PlayerToolbar.ui:107
msgid "Next"
msgstr "Neste"
-#: data/ui/PlaylistContextMenu.ui:5
-msgctxt "context menu item"
-msgid "Play"
-msgstr "Spill av"
-
-#: data/ui/PlaylistContextMenu.ui:9
-msgid "Add to Playlist…"
-msgstr "Legg til i spilleliste …"
-
-#: data/ui/PlaylistContextMenu.ui:13
-msgid "Remove From Playlist"
-msgstr "Fjern fra spilleliste"
-
-#: data/ui/PlaylistControls.ui:6
-msgid "_Play"
-msgstr "S_pill av"
-
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Slett"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "End_re navn …"
-#: data/ui/PlaylistControls.ui:41
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Navn på spilleliste"
-#: data/ui/PlaylistControls.ui:74
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "Fer_dig"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Oppgi et navn for din første spilleliste"
-#: data/ui/PlaylistDialog.ui:92
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "_Lag"
-#: data/ui/PlaylistDialog.ui:155
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Ny spilleliste …"
-#: data/ui/PlaylistDialog.ui:169
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Legg til"
-#: data/ui/PlaylistDialog.ui:241
+#: data/ui/PlaylistDialog.ui:200
msgid "Add to Playlist"
msgstr "Legg til i spilleliste"
-#: data/ui/PlaylistDialog.ui:257
+#: data/ui/PlaylistDialog.ui:220
msgid "_Add"
msgstr "_Legg til"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Angre"
-
-#: data/ui/SearchView.ui:43 gnomemusic/views/artistsview.py:43
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Artister"
-#: data/ui/SearchView.ui:53 data/ui/SearchView.ui:106
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Vis alle"
-#: data/ui/SearchView.ui:96 gnomemusic/views/albumsview.py:47
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:54
msgid "Albums"
msgstr "Album"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:44
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Sanger"
@@ -477,58 +400,62 @@ msgstr "Velg alle"
msgid "Select None"
msgstr "Velg ingen"
-#: data/ui/SelectionBarMenuButton.ui:31 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Klikk på oppføringer for å velge dem"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Legg til i spilleliste"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "Fje_rn fra spilleliste"
+
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:827
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Mest spilt"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:880
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Aldri spilt"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:932
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Nylig spilt"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:994
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Nylig lagt til"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1056
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Favorittlåter"
-#: gnomemusic/gstplayer.py:378
+#: gnomemusic/gstplayer.py:408
msgid "Unable to play the file"
msgstr "Kan ikke spille av filen"
-#: gnomemusic/gstplayer.py:384
+#: gnomemusic/gstplayer.py:414
msgid "_Find in {}"
msgstr "_Finn i {}"
#. TRANSLATORS: separator for two codecs
-#: gnomemusic/gstplayer.py:394
+#: gnomemusic/gstplayer.py:424
msgid " and "
msgstr " og "
#. TRANSLATORS: separator for a list of codecs
-#: gnomemusic/gstplayer.py:397
+#: gnomemusic/gstplayer.py:427
msgid ", "
msgstr ", "
-#: gnomemusic/gstplayer.py:399
+#: gnomemusic/gstplayer.py:429
msgid "{} is required to play the file, but is not installed."
msgid_plural "{} are required to play the file, but are not installed."
msgstr[0] "{} kreves for å spille av filen, men er ikke installert."
@@ -538,114 +465,131 @@ msgstr[1] "{} kreves for å spille av filen, men er ikke installert."
msgid "Playing music"
msgstr "Spiller musikk"
-#: gnomemusic/utils.py:79
+#. Translators: "shuffle" causes tracks to play in random order.
+#: gnomemusic/player.py:44
+msgid "Shuffle"
+msgstr "Bland"
+
+#: gnomemusic/player.py:45
+msgid "Repeat Song"
+msgstr "Gjenta sang"
+
+#: gnomemusic/player.py:46
+msgid "Repeat All"
+msgstr "Gjenta alle"
+
+#: gnomemusic/player.py:47
+msgid "Shuffle/Repeat Off"
+msgstr "Bland/Gjenta av"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Spilleliste {} fjernet"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Angre"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} fjernet fra {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Ukjent album"
-#: gnomemusic/utils.py:100
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Ukjent artist"
-#: gnomemusic/views/emptyview.py:67
+#: gnomemusic/views/emptyview.py:65
msgid "Your XDG Music directory is not set."
msgstr "Din XDG-mappe er ikke satt."
-#: gnomemusic/views/emptyview.py:74
-msgid "Music folder"
+#: gnomemusic/views/emptyview.py:72
+msgid "Music Folder"
msgstr "Musikkmappe"
#. TRANSLATORS: This is a label to display a link to open user's music
#. folder. {} will be replaced with the translated text 'Music folder'
-#: gnomemusic/views/emptyview.py:78
+#: gnomemusic/views/emptyview.py:76
msgid "The contents of your {} will appear here."
msgstr "Innholdet i din {} vises her."
-#: gnomemusic/views/emptyview.py:112
-msgid "Hey DJ"
-msgstr "Hey DJ"
-
-#: gnomemusic/views/emptyview.py:121 gnomemusic/views/emptyview.py:126
-msgid "No music found"
+#: gnomemusic/views/emptyview.py:124
+msgid "No Music Found"
msgstr "Fant ingen musikk"
-#: gnomemusic/views/emptyview.py:128
-msgid "Try a different search"
+#: gnomemusic/views/emptyview.py:125
+msgid "Try a Different Search"
msgstr "Prøv et annet søk"
-#: gnomemusic/views/emptyview.py:133
-msgid "GNOME Music could not connect to Tracker"
-msgstr "GNOME musikk kunne ikke koble til Tracker"
+#: gnomemusic/views/emptyview.py:129
+msgid "GNOME Music could not connect to Tracker."
+msgstr "GNOME musikk kunne ikke koble til Tracker."
-#: gnomemusic/views/emptyview.py:136
-msgid "Your music files cannot be indexed without Tracker running"
-msgstr "Musikkfilene dine kan ikke indekseres hvis ikke Tracker kjører"
+#: gnomemusic/views/emptyview.py:131
+msgid "Your music files cannot be indexed without Tracker running."
+msgstr "Musikkfilene dine kan ikke indekseres hvis ikke Tracker kjører."
-#: gnomemusic/views/emptyview.py:143
-msgid "Your system Tracker version seems outdated"
-msgstr "Systemets versjon av Tracker ser ut til å være utdatert"
+#: gnomemusic/views/emptyview.py:137
+msgid "Your system Tracker version seems outdated."
+msgstr "Systemets versjon av Tracker ser ut til å være utdatert."
-#: gnomemusic/views/emptyview.py:146
-msgid "Music needs Tracker version 3.0.0 or higher"
-msgstr "Musikk trenger Tracker versjon 3.0.0 eller høyere"
+#: gnomemusic/views/emptyview.py:139
+msgid "Music needs Tracker version 3.0.0 or higher."
+msgstr "Musikk trenger Tracker versjon 3.0.0 eller høyere."
-#: gnomemusic/views/playlistsview.py:41
+#: gnomemusic/views/playlistsview.py:45
msgid "Playlists"
msgstr "Spillelister"
-#: gnomemusic/views/searchview.py:386
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Artistresultater"
-#: gnomemusic/views/searchview.py:401
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Albumresultater"
-#: gnomemusic/widgets/albumwidget.py:154
+#: gnomemusic/widgets/albumwidget.py:240
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minutt"
msgstr[1] "{} minutter"
-#: gnomemusic/widgets/disclistboxwidget.py:60
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Plate {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "{} sang valgt"
msgstr[1] "{} sanger valgt"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Det du lytter til rapporteres til Last.fm"
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Det du lytter til rapporteres ikke til Last.fm"
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Logget in som {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Konfigurer"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Spilleliste {} fjernet"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} fjernet fra {}"
-
-#: gnomemusic/widgets/playertoolbar.py:143
+#: gnomemusic/widgets/playertoolbar.py:165
msgid "Pause"
msgstr "Pause"
-#: gnomemusic/widgets/playlistcontrols.py:127
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} sang"
diff --git a/po/ne.po b/po/ne.po
index 4c40aefd..8230c8b4 100644
--- a/po/ne.po
+++ b/po/ne.po
@@ -6,346 +6,638 @@
msgid ""
msgstr ""
"Project-Id-Version: gnome-music gnome 3.14\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
-"music&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2014-09-18 07:05+0000\n"
-"PO-Revision-Date: 2014-09-18 13:32+0400\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
+"POT-Creation-Date: 2022-08-27 13:27+0000\n"
+"PO-Revision-Date: 2022-09-08 02:34+0545\n"
"Last-Translator: Pawan Chitrakar <chautari@gmail.com>\n"
"Language-Team: Nepali Translation Team <chautari@gmail.com>\n"
+"Language: ne\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 1.6.9\n"
-"Language: ne\n"
+"X-Generator: Poedit 3.0.1\n"
+
+#: data/org.gnome.Music.appdata.xml.in.in:6 data/org.gnome.Music.desktop.in.in:3
+#: gnomemusic/about.py:236 gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "सङà¥à¤—ीत"
+
+#: data/org.gnome.Music.appdata.xml.in.in:7 data/org.gnome.Music.desktop.in.in:5
+msgid "Play and organize your music collection"
+msgstr "तपाईà¤à¤•à¥‹ सङà¥à¤—ीत सङà¥à¤—à¥à¤°à¤¹ बजाउनà¥à¤¹à¥‹à¤¸à¥ र सङà¥à¤—ठित गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/org.gnome.Music.appdata.xml.in.in:9
+msgid "An easy and pleasant way to play your music."
+msgstr "तपाईंको संगीत बजाउने सजिलो र रमाइलो तरिका।"
+
+#: data/org.gnome.Music.appdata.xml.in.in:12
+msgid ""
+"Find tracks in your local collection, use automatically generated playlists or curate a "
+"fresh one."
+msgstr ""
+"तपाईà¤à¤•à¥‹ सà¥à¤¥à¤¾à¤¨à¥€à¤¯ सङà¥à¤•à¤²à¤¨à¤®à¤¾ टà¥à¤°à¤¯à¤¾à¤•à¤¹à¤°à¥‚ फेला पारà¥à¤¨à¥à¤¹à¥‹à¤¸à¥, सà¥à¤µà¤šà¤¾à¤²à¤¿à¤¤ रूपमा सिरà¥à¤œà¤¨à¤¾ गरिà¤à¤•à¥‹ बजाउने सूची पà¥à¤°à¤¯à¥‹à¤— "
+"गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ वा नया सिरà¥à¤œà¤¨à¤¾ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।"
-#: ../data/org.gnome.Music.gschema.xml.h:1
+#: data/org.gnome.Music.appdata.xml.in.in:167
+msgid "The GNOME Music developers"
+msgstr "जिनोम सङà¥à¤—ीत विकासकरà¥à¤¤à¤¾"
+
+#: data/org.gnome.Music.desktop.in.in:4
+msgid "Music Player"
+msgstr "सङà¥à¤—ीत बजाउने"
+
+#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
+#: data/org.gnome.Music.desktop.in.in:13
+msgid "Music;Player;"
+msgstr "सङà¥à¤—ीत पà¥à¤²à¥‡à¤¯à¤°."
+
+#: data/org.gnome.Music.gschema.xml:12
msgid "Window size"
msgstr "सञà¥à¤à¥à¤¯à¤¾à¤² साइज"
-#: ../data/org.gnome.Music.gschema.xml.h:2
+#: data/org.gnome.Music.gschema.xml:13
msgid "Window size (width and height)."
-msgstr "सञà¥à¤à¥à¤¯à¤¾à¤²à¤•à¥‹ उचाइ र चौडाई"
-
-#: ../data/org.gnome.Music.gschema.xml.h:3
-msgid "Window position"
-msgstr "सञà¥à¤à¥à¤¯à¤¾à¤²à¤•à¥‹ सà¥à¤¥à¤¿à¤¤à¤¿"
+msgstr "सञà¥à¤à¥à¤¯à¤¾à¤²à¤•à¥‹ उचाइ र चौडाई."
-#: ../data/org.gnome.Music.gschema.xml.h:4
-msgid "Window position (x and y)."
-msgstr "सञà¥à¤à¥à¤¯à¤¾à¤²à¤•à¥‹ सà¥à¤¥à¤¾à¤¨(X र Y)."
-
-#: ../data/org.gnome.Music.gschema.xml.h:5
+#: data/org.gnome.Music.gschema.xml:17
msgid "Window maximized"
msgstr "सञà¥à¤à¥à¤¯à¤¾à¤²à¤•à¥‹ अधिकतम सà¥à¤¥à¤¿à¤¤à¤¿"
-#: ../data/org.gnome.Music.gschema.xml.h:6
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
-msgstr "सञà¥à¤à¥à¤¯à¤¾à¤²à¤•à¥‹ अधिकतम सà¥à¤¥à¤¿à¤¤à¤¿"
+msgstr "सञà¥à¤à¥à¤¯à¤¾à¤²à¤•à¥‹ अधिकतम सà¥à¤¥à¤¿à¤¤à¤¿."
-#: ../data/org.gnome.Music.gschema.xml.h:7
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "मोड दोहोरà¥à¤¯à¤¾à¤‰à¤¨à¥à¤¹à¥‹à¤¸à¥"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: ../data/org.gnome.Music.gschema.xml.h:9
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
-"Value identifies whether to repeat or randomize playback through the "
-"collection. Allowed values are: \"none\" (repeat and shuffle are off), \"song"
-"\" (repeat current song), \"all\" (repeat playlist, no shuffle), \"shuffle"
-"\" (shuffle playlist, presumes repeat all)."
+"Value identifies whether to repeat or randomize playback through the collection. Allowed "
+"values are: “none†(repeat and shuffle are off), “song†(repeat current song), "
+"“all†(repeat playlist, no shuffle), “shuffle†(shuffle playlist, presumes repeat all)."
msgstr ""
+"मानले संगà¥à¤°à¤¹à¤•à¥‹ माधà¥à¤¯à¤®à¤¬à¤¾à¤Ÿ पà¥à¤²à¥‡à¤¬à¥à¤¯à¤¾à¤• दोहोरà¥à¤¯à¤¾à¤‰à¤¨à¥‡ वा अनियमित गरà¥à¤¨à¥‡ कि नगरà¥à¤¨à¥‡ पहिचान गरà¥à¤¦à¤›à¥¤ अनà¥à¤®à¤¤à¤¿ पà¥à¤°à¤¾à¤ªà¥à¤¤ "
+"मानहरू हà¥à¤¨à¥: \"कà¥à¤¨à¥ˆ पनि छैन\" (पà¥à¤¨à¤°à¤¾à¤µà¥ƒà¤¤à¥à¤¤à¤¿ र शफल बनà¥à¤¦ छनà¥), \"गीत\" (पà¥à¤¨à¤°à¤¾à¤µà¥ƒà¤¤à¥à¤¤à¤¿ हालको गीत), \"सबै"
+"\" (पà¥à¤²à¥‡à¤²à¤¿à¤¸à¥à¤Ÿ दोहोरà¥à¤¯à¤¾à¤‰à¤¨à¥à¤¹à¥‹à¤¸à¥, कà¥à¤¨à¥ˆ शफल छैन), \"शफल\" (शफल पà¥à¤²à¥‡à¤²à¤¿à¤¸à¥à¤Ÿ, सबै दोहोरà¥à¤¯à¤¾à¤‰à¤¨à¥à¤¹à¥‹à¤¸à¥ अनà¥à¤®à¤¾à¤¨ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥)।"
-#: ../data/org.gnome.Music.gschema.xml.h:10
-#, fuzzy
-msgid "Search mode"
-msgstr "मोड:"
+#: data/org.gnome.Music.gschema.xml:28
+msgid "Enable ReplayGain"
+msgstr "पà¥à¤¨: पà¥à¤²à¥‡à¤—ेन सकà¥à¤·à¤® पारà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
-#: ../data/org.gnome.Music.gschema.xml.h:11
-#, fuzzy
-msgid "If true, the search bar is shown."
-msgstr "विणà¥à¤¡à¥‹ टासà¥à¤•à¤¬à¤¾à¤°à¤®à¤¾ छैनभने ठीक "
+#: data/org.gnome.Music.gschema.xml:29
+msgid "Enables or disables ReplayGain for albums"
+msgstr "à¤à¤²à¥à¤¬à¤®à¤•à¤¾ लागि पà¥à¤¨: पà¥à¤²à¥‡à¤—ेन सकà¥à¤·à¤® वा अकà¥à¤·à¤® पारà¥à¤¦à¤›"
-#: ../data/gnome-music.desktop.in.h:1 ../gnomemusic/application.py:50
-#: ../gnomemusic/application.py:112 ../gnomemusic/window.py:62
-#: ../data/AboutDialog.ui.in.h:1
-msgid "Music"
-msgstr "सङà¥à¤—ित"
+#: data/org.gnome.Music.gschema.xml:33
+msgid "Inhibit system suspend"
+msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ निलमà¥à¤¬à¤¨ रोकà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
-#: ../data/gnome-music.desktop.in.h:2
-msgid "Music Player"
-msgstr "सङà¥à¤—ित बजाउने"
+#: data/org.gnome.Music.gschema.xml:34
+msgid "Enables or disables inhibiting system suspend while playing music"
+msgstr "सङà¥à¤—ीत बजाउà¤à¤¦à¤¾ अवरोध पà¥à¤°à¤£à¤¾à¤²à¥€ निलमà¥à¤¬à¤¨ सकà¥à¤·à¤® वा अकà¥à¤·à¤® पारà¥à¤¦à¤›"
-#: ../data/gnome-music.desktop.in.h:3 ../data/gnome-music.appdata.xml.in.h:2
-msgid "Play and organize your music collection"
-msgstr ""
+#: data/org.gnome.Music.gschema.xml:38
+msgid "Report music history to Last.fm"
+msgstr "Last.fm सङà¥à¤—ीत इतिहास पà¥à¤°à¤¤à¤¿à¤µà¥‡à¤¦à¤¨ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/org.gnome.Music.gschema.xml:39
+msgid "Enables or disables sending scrobbles and the “currently playing†info to Last.fm."
+msgstr "Last.fm पठाउन सà¥à¤•à¥à¤°à¥‹à¤¬à¥à¤²à¥à¤¸ र \"हालै बजिरहेको\" सूचना सकà¥à¤·à¤® वा असकà¥à¤·à¤® पारà¥à¤¦à¤› ।"
+
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87 data/ui/PlaylistControls.ui:101
+#: gnomemusic/widgets/playertoolbar.py:170
+msgid "Play"
+msgstr "पà¥à¤²à¥‡ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5 data/ui/SongWidgetMenu.ui:11
+msgid "_Play"
+msgstr "पà¥à¤²à¥‡ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/AlbumWidget.ui:134
+msgid "Add to _Favorite Songs"
+msgstr "मनपरà¥à¤¨à¥‡ गीतहरू थपà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
+msgid "_Add to Playlist…"
+msgstr "बजाइने सà¥à¤šà¤¿à¤®à¤¾ थपà¥à¤¨à¥à¤¹à¥‹à¤¸à¥â€¦"
+
+#: data/ui/AppMenu.ui:23 data/ui/LastfmDialog.ui:8
+msgid "Last.fm Account"
+msgstr "Last.fm खाता"
+
+#: data/ui/AppMenu.ui:36
+msgid "Report Music Listening"
+msgstr "सङà¥à¤—ीत सà¥à¤¨à¥à¤¨à¥‡ पà¥à¤°à¤¤à¤¿à¤µà¥‡à¤¦à¤¨ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/AppMenu.ui:58
+msgid "_Keyboard Shortcuts"
+msgstr "कà¥à¤žà¥à¤œà¥€à¤ªà¤¾à¤Ÿà¥€ सरà¥à¤Ÿà¤•à¤Ÿ"
+
+#: data/ui/AppMenu.ui:68
+msgid "_Help"
+msgstr "सहयोग"
+
+#: data/ui/AppMenu.ui:78
+msgid "_About Music"
+msgstr "सङà¥à¤—ीत बारेमा"
+
+#: data/ui/EmptyView.ui:30
+msgid "Welcome to Music"
+msgstr "सङà¥à¤—ीतमा सà¥à¤µà¤¾à¤—त छ"
-#: ../data/gnome-music.appdata.xml.in.h:1
-msgid "GNOME Music"
-msgstr "जिनोम सङà¥à¤—ित"
+#: data/ui/HeaderBar.ui:16
+msgid "Menu"
+msgstr "सूची"
-#: ../data/gnome-music.appdata.xml.in.h:3
-msgid "Music is the new GNOME music playing application."
+#: data/ui/HeaderBar.ui:24 data/ui/SearchHeaderBar.ui:15
+msgid "Select"
+msgstr "चयन गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/HeaderBar.ui:30 data/ui/PlaylistDialog.ui:213 data/ui/SearchHeaderBar.ui:20
+msgid "_Cancel"
+msgstr "_रदà¥à¤¦"
+
+#: data/ui/HeaderBar.ui:42 data/ui/SearchHeaderBar.ui:32
+msgid "Search"
+msgstr "खोजी"
+
+#: data/ui/HeaderBar.ui:50
+msgid "Back"
+msgstr "पछाडि"
+
+#: data/ui/help-overlay.ui:11
+msgctxt "shortcut window"
+msgid "General"
+msgstr "सामानà¥à¤¯"
+
+#: data/ui/help-overlay.ui:14
+msgctxt "shortcut window"
+msgid "Close window"
+msgstr "सञà¥à¤à¥à¤¯à¤¾à¤² बनà¥à¤¦ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/help-overlay.ui:20
+msgctxt "shortcut window"
+msgid "Search"
+msgstr "खोज"
+
+#: data/ui/help-overlay.ui:26
+msgctxt "shortcut window"
+msgid "Help"
+msgstr "मदà¥à¤¦à¤¤"
+
+#: data/ui/help-overlay.ui:32
+msgctxt "shortcut window"
+msgid "Shortcuts"
+msgstr "सरà¥à¤Ÿà¤•à¤Ÿà¤¹à¤°à¥‚"
+
+#: data/ui/help-overlay.ui:40
+msgctxt "shortcut window"
+msgid "Playback"
+msgstr "पà¥à¤²à¥‡à¤¬à¥à¤¯à¤¾à¤•"
+
+#: data/ui/help-overlay.ui:43
+msgctxt "shortcut window"
+msgid "Play/Pause"
+msgstr "पà¥à¤²à¥‡/पज गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/help-overlay.ui:49
+msgctxt "shortcut window"
+msgid "Next song"
+msgstr "अरà¥à¤•à¥‹ गीत"
+
+#: data/ui/help-overlay.ui:55
+msgctxt "shortcut window"
+msgid "Previous song"
+msgstr "_अघिलà¥à¤²à¥‹ गीत"
+
+#: data/ui/help-overlay.ui:61
+msgctxt "shortcut window"
+msgid "Toggle repeat"
+msgstr "दोहोरà¥à¤¯à¤¾à¤‰à¤¨à¥‡ टगल गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/help-overlay.ui:67
+msgctxt "shortcut window"
+msgid "Toggle shuffle"
+msgstr "फेरबदल टगल गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/help-overlay.ui:75
+msgctxt "shortcut window"
+msgid "Navigation"
+msgstr "नेभिगेशन"
+
+#: data/ui/help-overlay.ui:78
+msgctxt "shortcut window"
+msgid "Go to Albums"
+msgstr "à¤à¤²à¥à¤¬à¤®à¤®à¤¾ जानà¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/help-overlay.ui:84
+msgctxt "shortcut window"
+msgid "Go to Artists"
+msgstr "कलाकारहरू मा जानà¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/help-overlay.ui:90
+msgctxt "shortcut window"
+msgid "Go to Songs"
+msgstr "गीतहरूमा जानà¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/help-overlay.ui:96
+msgctxt "shortcut window"
+msgid "Go to Playlists"
+msgstr "बजाइने सà¥à¤šà¤¿à¤®à¤¾ जानà¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/help-overlay.ui:102
+msgctxt "shortcut window"
+msgid "Go back"
+msgstr "पछाडी जानà¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/LastfmDialog.ui:21
+msgid ""
+"Last.fm is a music discovery service that gives you personalised recommendations based "
+"on the music you listen to."
msgstr ""
+"Last.fm à¤à¤‰à¤Ÿà¤¾ सङà¥à¤—ीत आविषà¥à¤•à¤¾à¤° सेवा हो जसले तपाईà¤à¤²à¥‡ सà¥à¤¨à¥à¤¨à¥à¤­à¤à¤•à¥‹ सङà¥à¤—ीतको आधारमा वà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त सिफारिस दिनà¥à¤›à¥¤"
-#: ../gnomemusic/albumArtCache.py:100 ../gnomemusic/albumArtCache.py:108
-msgid "Untitled"
-msgstr "शीरà¥à¤·à¤• नदिà¤à¤•à¥‹"
-
-#: ../gnomemusic/mpris.py:133 ../gnomemusic/notification.py:100
-#: ../gnomemusic/player.py:400 ../gnomemusic/view.py:574
-#: ../gnomemusic/view.py:961 ../gnomemusic/view.py:1290
-msgid "Unknown Album"
-msgstr "अजà¥à¤žà¤¾à¤¤ à¤à¤²à¥à¤¬à¤®:"
-
-#: ../gnomemusic/mpris.py:149 ../gnomemusic/notification.py:98
-#: ../gnomemusic/player.py:391 ../gnomemusic/view.py:283
-#: ../gnomemusic/view.py:483 ../gnomemusic/view.py:717
-#: ../gnomemusic/view.py:1065 ../gnomemusic/view.py:1288
-#: ../gnomemusic/view.py:1319 ../gnomemusic/widgets.py:181
-#: ../gnomemusic/widgets.py:560
-msgid "Unknown Artist"
-msgstr "अजà¥à¤žà¤¾à¤¤ कलाकार:"
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
+msgid "Music Reporting Not Setup"
+msgstr "सङà¥à¤—ीत रिपोरà¥à¤Ÿà¤¿à¤™ सेटअप छैन"
-#: ../gnomemusic/notification.py:89
-msgid "Not playing"
-msgstr "बजेन"
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
+msgid "Login to your Last.fm account to report your music listening."
+msgstr "तपाईà¤à¤•à¥‹ सङà¥à¤—ीत सà¥à¤¨à¥à¤¨ पà¥à¤°à¤¤à¤¿à¤µà¥‡à¤¦à¤¨ गरà¥à¤¨ तपाईà¤à¤•à¥‹ Last.fm खातामा लगइन गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।"
-#. TRANSLATORS: by refers to the artist, from to the album
-#: ../gnomemusic/notification.py:104
-#, python-format
-msgid "by %s, from %s"
-msgstr "%s बाट %s देखि"
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
+msgid "Login"
+msgstr "लगइन"
-#: ../gnomemusic/notification.py:125 ../data/PlayerToolbar.ui.h:5
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "अघिलà¥à¤²à¥‹"
-#: ../gnomemusic/notification.py:128 ../gnomemusic/player.py:348
-msgid "Pause"
-msgstr "पज गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+#: data/ui/PlayerToolbar.ui:106
+msgid "Next"
+msgstr "पछिलà¥à¤²à¥‹"
-#: ../gnomemusic/notification.py:131 ../gnomemusic/player.py:351
-#: ../data/PlayerToolbar.ui.h:6
-msgid "Play"
-msgstr "पà¥à¤²à¥‡ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+#: data/ui/PlaylistControls.ui:9
+msgid "_Delete"
+msgstr "मेटà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
-#: ../gnomemusic/notification.py:133 ../data/PlayerToolbar.ui.h:7
-msgid "Next"
-msgstr "पछिलà¥à¤²à¥‹:"
-
-#: ../gnomemusic/searchbar.py:30 ../gnomemusic/searchbar.py:73
-msgid "All"
-msgstr "सबै"
-
-#: ../gnomemusic/searchbar.py:31
-msgid "Artist"
-msgstr "कलाकार:"
-
-#: ../gnomemusic/searchbar.py:32
-msgid "Album"
-msgstr "à¤à¤²à¥à¤¬à¤®:"
-
-#: ../gnomemusic/searchbar.py:33
-msgid "Track Title"
-msgstr "गाना शीरà¥à¤·à¤•"
-
-#: ../gnomemusic/searchbar.py:74
-msgid "Local"
-msgstr "सà¥à¤¥à¤¾à¤¨à¥€à¤¯"
-
-#: ../gnomemusic/searchbar.py:176
-msgid "Sources"
-msgstr "सà¥à¤°à¥‹à¤¤"
-
-#: ../gnomemusic/searchbar.py:183
-msgid "Match"
-msgstr "सबै मिलाउनà¥à¤¹à¥‹à¤¸à¥"
-
-#: ../gnomemusic/view.py:198 ../gnomemusic/widgets.py:222
-#: ../gnomemusic/widgets.py:439 ../gnomemusic/window.py:278
-#, python-format
-msgid "Selected %d item"
-msgid_plural "Selected %d items"
-msgstr[0] "%d बसà¥à¤¤à¥ चयन भयो"
-msgstr[1] "%d बसà¥à¤¤à¥ चयन भयो"
-
-#: ../gnomemusic/view.py:200 ../gnomemusic/widgets.py:224
-#: ../gnomemusic/widgets.py:441 ../gnomemusic/window.py:282
-#: ../gnomemusic/window.py:294 ../data/headerbar.ui.h:3
-msgid "Click on items to select them"
-msgstr "वसà¥à¤¤à¥à¤¹à¤°à¥‚ चयनका लागि कà¥à¤²à¤¿à¤• गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+#: data/ui/PlaylistControls.ui:13
+msgid "_Rename…"
+msgstr "पà¥à¤¨: नामाकरण गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥â€¦"
-#: ../gnomemusic/view.py:337
-#, python-format
-msgid ""
-"No Music found!\n"
-" Put some files into the folder %s"
-msgstr ""
+#: data/ui/PlaylistControls.ui:28
+msgid "Playlist Name"
+msgstr "बजाउने सूची नाम"
+
+#: data/ui/PlaylistControls.ui:62
+msgid "_Done"
+msgstr "गरियो"
+
+#: data/ui/PlaylistDialog.ui:52
+msgid "Enter a name for your first playlist"
+msgstr "तपाईà¤à¤•à¥‹ पहिलो बजाउने सूचीका लागि नाम पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/PlaylistDialog.ui:77
+msgid "C_reate"
+msgstr "सिरà¥à¤œà¤¨à¤¾ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/PlaylistDialog.ui:146
+msgid "New Playlist…"
+msgstr "नया बजाउने सूची…"
-#: ../gnomemusic/view.py:345 ../gnomemusic/view.py:1534
+#: data/ui/PlaylistDialog.ui:161
+msgid "Add"
+msgstr "थपà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/PlaylistDialog.ui:202
+msgid "Add to Playlist"
+msgstr "बजाइने सà¥à¤šà¤¿à¤®à¤¾ थपà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/PlaylistDialog.ui:222
+msgid "_Add"
+msgstr "थपà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
+msgid "Artists"
+msgstr "कलाकारहरू"
+
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
+msgid "View All"
+msgstr "सबै हेरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "à¤à¤²à¥à¤¬à¤®à¤¹à¤°à¥‚"
-#: ../gnomemusic/view.py:427 ../gnomemusic/view.py:1536
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
-msgstr "गीतहरू "
+msgstr "गीतहरू"
-#: ../gnomemusic/view.py:591 ../gnomemusic/view.py:1535
-msgid "Artists"
-msgstr "कलाकारहरू"
+#: data/ui/SelectionBarMenuButton.ui:7
+msgid "Select All"
+msgstr "सबै छानà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
-#: ../gnomemusic/view.py:636 ../gnomemusic/view.py:638
-#: ../gnomemusic/widgets.py:448
-msgid "All Artists"
-msgstr "कलाकारहरू"
+#: data/ui/SelectionBarMenuButton.ui:11
+msgid "Select None"
+msgstr "कà¥à¤¨à¥ˆ पनि चयन नगरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
+msgid "Click on items to select them"
+msgstr "वसà¥à¤¤à¥à¤¹à¤°à¥‚ चयनका लागि कà¥à¤²à¤¿à¤• गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/SelectionToolbar.ui:8
+msgid "_Add to Playlist"
+msgstr "बजाइने सà¥à¤šà¤¿à¤®à¤¾ थपà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "बजाउने सूची हटाउनà¥à¤¹à¥‹à¤¸à¥"
+
+#: gnomemusic/about.py:238
+msgid "The GNOME Project"
+msgstr "जिनोम परियोजना"
+
+#: gnomemusic/about.py:242
+msgid "translator-credits"
+msgstr ""
+"Launchpad Contributions:\n"
+" Michael Terry https://launchpad.net/~mterry\n"
+" Yogesh Ojha https://launchpad.net/~yogeshojha\n"
+" sarojdhakal https://launchpad.net/~lotusnagarkot"
+
+#: gnomemusic/about.py:246
+msgid "Copyright The GNOME Music Developers"
+msgstr "पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿ अधिकार जिनोम सङà¥à¤—ीत विकासकरà¥à¤¤à¤¾à¤¹à¤°à¥‚"
+
+#: gnomemusic/about.py:249
+msgid "Translated by"
+msgstr "अनà¥à¤µà¤¾à¤¦"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
+msgid "Most Played"
+msgstr "धेरै जसो बजाईने"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
+msgid "Never Played"
+msgstr "कहिलà¥à¤¯à¥ˆ नबजेको"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
+msgid "Recently Played"
+msgstr "हालै बजेको"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
+msgid "Recently Added"
+msgstr "हालै थपेको"
+
+#. TRANSLATORS: this is a playlist name
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
+msgid "Favorite Songs"
+msgstr "मनपरà¥à¤¨à¥‡ गीतहरू"
+
+#: gnomemusic/gstplayer.py:408
+msgid "Unable to play the file"
+msgstr "फाइल बजाउन असकà¥à¤·à¤®"
+
+#: gnomemusic/gstplayer.py:414
+msgid "_Find in {}"
+msgstr "{} फेला पारà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#. TRANSLATORS: separator for two codecs
+#: gnomemusic/gstplayer.py:424
+msgid " and "
+msgstr " र "
+
+#. TRANSLATORS: separator for a list of codecs
+#: gnomemusic/gstplayer.py:427
+msgid ", "
+msgstr ", "
+
+#: gnomemusic/gstplayer.py:429
+msgid "{} is required to play the file, but is not installed."
+msgid_plural "{} are required to play the file, but are not installed."
+msgstr[0] "फाइल बजाउम {} आवशà¥à¤¯à¤• छ, तर सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ गरिà¤à¤•à¥‹ छैन ।"
+msgstr[1] "फाइल बजाउम {} आवशà¥à¤¯à¤• छ, तर सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ गरिà¤à¤•à¥‹ छैन ।"
+
+#: gnomemusic/inhibitsuspend.py:63
+msgid "Playing music"
+msgstr "सङà¥à¤—ीत बजाइने"
+
+#. Translators: "shuffle" causes tracks to play in random order.
+#: gnomemusic/player.py:44
+msgid "Shuffle"
+msgstr "फिटà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: gnomemusic/player.py:45
+msgid "Repeat Song"
+msgstr "गाना दोहोरà¥à¤¯à¤¾à¤‰à¤¨à¥à¤¸à¥"
+
+#: gnomemusic/player.py:46
+msgid "Repeat All"
+msgstr "सबै दोहोरà¥à¤¯à¤¾à¤‰à¤¨à¥à¤¸à¥"
+
+#: gnomemusic/player.py:47
+msgid "Shuffle/Repeat Off"
+msgstr "फिटà¥à¤¨à¥à¤¹à¥‹à¤¸à¥/दोहोरà¥à¤¯à¤¾à¤‰à¤¨à¥à¤¸à¥ बनà¥à¤¦"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "बजाउने सूची {} हटाइयो"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "पà¥à¤°à¥à¤µà¤¸à¥à¤¥à¤¿à¤¤à¤¿à¤®à¤¾ फरà¥à¤•à¤¾à¤‰à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} बाट {} हटाइयो"
+
+#: gnomemusic/utils.py:92
+msgid "Unknown album"
+msgstr "अजà¥à¤žà¤¾à¤¤ à¤à¤²à¥à¤¬à¤®"
+
+#: gnomemusic/utils.py:113
+msgid "Unknown Artist"
+msgstr "अजà¥à¤žà¤¾à¤¤ कलाकार"
+
+#: gnomemusic/views/emptyview.py:65
+msgid "Your XDG Music directory is not set."
+msgstr "तपाईà¤à¤•à¥‹ XDG सङà¥à¤—ीत डाइरेकà¥à¤Ÿà¤°à¥€ सेट गरिà¤à¤•à¥‹ छैन ।"
+
+#: gnomemusic/views/emptyview.py:72
+msgid "Music Folder"
+msgstr "सङà¥à¤—ीत फोलà¥à¤¡à¤°"
+
+#. TRANSLATORS: This is a label to display a link to open user's music
+#. folder. {} will be replaced with the translated text 'Music folder'
+#: gnomemusic/views/emptyview.py:76
+msgid "The contents of your {} will appear here."
+msgstr "तपाईà¤à¤•à¥‹ {} का सामगà¥à¤°à¥€à¤¹à¤°à¥‚ यहाठदेखा परà¥à¤¨à¥‡à¤›à¤¨à¥ ।"
+
+#: gnomemusic/views/emptyview.py:124
+msgid "No Music Found"
+msgstr "सङà¥à¤—ीत भेटिà¤à¤¨"
+
+#: gnomemusic/views/emptyview.py:125
+msgid "Try a Different Search"
+msgstr "फरक खोज कोशिश गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: gnomemusic/views/emptyview.py:129
+msgid "GNOME Music could not connect to Tracker."
+msgstr "जिनोम सङà¥à¤—ीत टà¥à¤°à¥à¤¯à¤¾à¤•à¤°à¤®à¤¾ जडान गरà¥à¤¨ सकेन ।"
+
+#: gnomemusic/views/emptyview.py:131
+msgid "Your music files cannot be indexed without Tracker running."
+msgstr "टà¥à¤°à¥à¤¯à¤¾à¤•à¤° नचलाईकन तपाईà¤à¤•à¥‹ सङà¥à¤—ीत फाइलहरू अनà¥à¤•à¥à¤°à¤®à¤£ गरà¥à¤¨ सकिà¤à¤¦à¥ˆà¤¨ ।"
+
+#: gnomemusic/views/emptyview.py:137
+msgid "Your system Tracker version seems outdated."
+msgstr "तपाईà¤à¤•à¥‹ पà¥à¤°à¤£à¤¾à¤²à¥€ टà¥à¤°à¥à¤¯à¤¾à¤•à¤° संसà¥à¤•à¤°à¤£ पà¥à¤°à¤¾à¤¨à¥‹ जसà¥à¤¤à¥‹ देखिनà¥à¤› ।"
+
+#: gnomemusic/views/emptyview.py:139
+msgid "Music needs Tracker version 3.0.0 or higher."
+msgstr "सङà¥à¤—ीतलाई टà¥à¤°à¤¯à¤¾à¤•à¤° संसà¥à¤•à¤°à¤£ 3.0.0 वा उचà¥à¤šà¤•à¥‹ आवशà¥à¤¯à¤•à¤¤à¤¾ परà¥à¤¦à¤›à¥¤"
-#: ../gnomemusic/view.py:797 ../gnomemusic/view.py:1537
+#: gnomemusic/views/playlistsview.py:45
msgid "Playlists"
msgstr "सà¥à¤šà¤¿à¤¹à¤°à¥‚"
-#: ../gnomemusic/view.py:1077
-#, python-format
-msgid "%d Song"
-msgid_plural "%d Songs"
-msgstr[0] "%d गाना"
-msgstr[1] "%d गानाहरू"
+#: gnomemusic/views/searchview.py:304
+msgid "Artists Results"
+msgstr "कलाकारहरू नतिजा"
-#: ../gnomemusic/widgets.py:270 ../gnomemusic/widgets.py:308
-#, python-format
-msgid "%d min"
-msgstr "%d min"
+#: gnomemusic/views/searchview.py:318
+msgid "Albums Results"
+msgstr "à¤à¤²à¥à¤¬à¤®à¤¹à¤°à¥‚को नतिजा"
-#: ../gnomemusic/widgets.py:674
-msgid "New Playlist"
-msgstr "नयाठसूची"
+#: gnomemusic/widgets/albumwidget.py:245
+msgid "{} minute"
+msgid_plural "{} minutes"
+msgstr[0] "{} मिनेट"
+msgstr[1] "{} मिनेट"
-#: ../gnomemusic/window.py:226
-msgid "Empty"
-msgstr "खाली"
+#: gnomemusic/widgets/discbox.py:75
+msgid "Disc {}"
+msgstr "डिसà¥à¤• {}"
-#: ../data/AboutDialog.ui.in.h:2
-msgid "Copyright © 2013 GNOME Music Developers"
-msgstr "पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¥€à¤…धिकार © २०१३ जिनोम सङà¥à¤—ीत शीरà¥à¤·à¤•à¤°à¥à¤¤à¤¾"
+#: gnomemusic/widgets/headerbar.py:66
+msgid "Selected {} song"
+msgid_plural "Selected {} songs"
+msgstr[0] "{} गीत छानियो"
+msgstr[1] "{} गीतहरू छानियो"
-#: ../data/AboutDialog.ui.in.h:3
-msgid "A music player and management application for GNOME."
-msgstr "जिनोम सङà¥à¤—ित बजाउने र वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾à¤ªà¤¨ अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤—"
+#: gnomemusic/widgets/lastfmdialog.py:64
+msgid "Your music listening is reported to Last.fm."
+msgstr "तपाईंको संगीत सà¥à¤¨à¥à¤¨à¥‡ Last.fm मा रिपोरà¥à¤Ÿ गरिà¤à¤•à¥‹ छ।"
-#: ../data/AboutDialog.ui.in.h:4
-msgid "Visit GNOME Music website"
-msgstr ""
+#: gnomemusic/widgets/lastfmdialog.py:66
+msgid "Your music listening is not reported to Last.fm."
+msgstr "तपाईà¤à¤•à¥‹ सङà¥à¤—ीत सà¥à¤¨à¥à¤¨à¥‡ Last.fm मा रिपोरà¥à¤Ÿ गरिà¤à¤•à¥‹ छैन ।"
-#: ../data/AboutDialog.ui.in.h:5
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
+#. TRANSLATORS: displays the username of the Last.fm account
+#: gnomemusic/widgets/lastfmdialog.py:70
+msgid "Logged in as {}"
+msgstr "{} लगईन गरियो"
-#: ../data/AlbumWidget.ui.h:1
-msgid "Released"
-msgstr ""
+#: gnomemusic/widgets/lastfmdialog.py:71
+msgid "Configure"
+msgstr "कनà¥à¤«à¤¿à¤—र"
+
+#: gnomemusic/widgets/playertoolbar.py:167
+msgid "Pause"
+msgstr "पज गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#: gnomemusic/widgets/playlistcontrols.py:130
+msgid "{} Song"
+msgid_plural "{} Songs"
+msgstr[0] "{} गीत"
+msgstr[1] "{} गीतहरू"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "जिनोम सङà¥à¤—ीत बजाउने र वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾à¤ªà¤¨ अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤—."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "जिनोम सङà¥à¤—ीत वेबसाइट हेरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "तपाईà¤à¤•à¥‹ सङà¥à¤—ीत फोलà¥à¤¡à¤°à¤•à¥‹ सामागà¥à¤°à¥€ यहाठदेखा परà¥à¤¨à¥‡à¤› ।"
+
+#~ msgid "Window position"
+#~ msgstr "सञà¥à¤à¥à¤¯à¤¾à¤²à¤•à¥‹ सà¥à¤¥à¤¿à¤¤à¤¿"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "सञà¥à¤à¥à¤¯à¤¾à¤²à¤•à¥‹ सà¥à¤¥à¤¾à¤¨(X र Y)."
-#: ../data/AlbumWidget.ui.h:2
#, fuzzy
-msgid "Running Length"
-msgstr "चलिरहेको"
+#~ msgid "Search mode"
+#~ msgstr "मोड:"
-#: ../data/app-menu.ui.h:1
-msgid "_New Playlist"
-msgstr "नयाठसूची"
+#, fuzzy
+#~ msgid "If true, the search bar is shown."
+#~ msgstr "विणà¥à¤¡à¥‹ टासà¥à¤•à¤¬à¤¾à¤°à¤®à¤¾ छैनभने ठीक "
-#: ../data/app-menu.ui.h:2
-msgid "_Help"
-msgstr "सहयोग"
+#~ msgid "GNOME Music"
+#~ msgstr "जिनोम सङà¥à¤—ित"
-#: ../data/app-menu.ui.h:3
-msgid "_About"
-msgstr "बारेमा"
+#~ msgid "Untitled"
+#~ msgstr "शीरà¥à¤·à¤• नदिà¤à¤•à¥‹"
-#: ../data/app-menu.ui.h:4
-msgid "_Quit"
-msgstr "अनà¥à¤¤à¥à¤¯ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+#~ msgid "Not playing"
+#~ msgstr "बजेन"
-#: ../data/PlayerToolbar.ui.h:1
-msgid "Shuffle"
-msgstr "फिटà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+#~ msgid "by %s, from %s"
+#~ msgstr "%s बाट %s देखि"
-#: ../data/PlayerToolbar.ui.h:2
-msgid "Repeat All"
-msgstr "सबै दोहोरà¥à¤¯à¤¾à¤‰à¤¨à¥à¤¸à¥"
+#~ msgid "All"
+#~ msgstr "सबै"
-#: ../data/PlayerToolbar.ui.h:3
-msgid "Repeat Song"
-msgstr "गाना दोहोरà¥à¤¯à¤¾à¤‰à¤¨à¥à¤¸à¥"
+#~ msgid "Artist"
+#~ msgstr "कलाकार:"
-#: ../data/PlayerToolbar.ui.h:4
-msgid "Shuffle/Repeat Off"
-msgstr "फिटà¥à¤¨à¥à¤¹à¥‹à¤¸à¥/दोहोरà¥à¤¯à¤¾à¤‰à¤¨à¥à¤¸à¥ बनà¥à¤¦"
+#~ msgid "Album"
+#~ msgstr "à¤à¤²à¥à¤¬à¤®:"
-#: ../data/NoMusic.ui.h:1
-msgid "No Music Found"
-msgstr "सङà¥à¤—ित भेटिà¤à¤¨"
+#~ msgid "Track Title"
+#~ msgstr "गाना शीरà¥à¤·à¤•"
-#: ../data/headerbar.ui.h:1
-msgid "Select All"
-msgstr "सबै छानà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+#~ msgid "Local"
+#~ msgstr "सà¥à¤¥à¤¾à¤¨à¥€à¤¯"
-#: ../data/headerbar.ui.h:2
-msgid "Select None"
-msgstr "कà¥à¤¨à¥ˆ पनि चयन नगरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+#~ msgid "Sources"
+#~ msgstr "सà¥à¤°à¥‹à¤¤"
-#: ../data/headerbar.ui.h:4
-msgid "Search"
-msgstr "खोजी"
+#~ msgid "Match"
+#~ msgstr "सबै मिलाउनà¥à¤¹à¥‹à¤¸à¥"
-#: ../data/headerbar.ui.h:5 ../data/PlaylistDialog.ui.h:3
-msgid "Select"
-msgstr "चयन गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥..."
+#~ msgid "Selected %d item"
+#~ msgid_plural "Selected %d items"
+#~ msgstr[0] "%d बसà¥à¤¤à¥ चयन भयो"
+#~ msgstr[1] "%d बसà¥à¤¤à¥ चयन भयो"
-#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:2
-msgid "Cancel"
-msgstr "रदà¥à¤¦ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+#~ msgid "All Artists"
+#~ msgstr "कलाकारहरू"
-#: ../data/headerbar.ui.h:7
-msgid "Back"
-msgstr "पछाडि"
+#~ msgid "%d min"
+#~ msgstr "%d min"
-#: ../data/SelectionToolbar.ui.h:1
-msgid "Add to Playlist"
-msgstr "सà¥à¤šà¤¿à¤®à¤¾ थपà¥à¤¨à¥à¤¹à¥‹à¤¸à¥..."
+#~ msgid "Empty"
+#~ msgstr "खाली"
-#: ../data/SelectionToolbar.ui.h:2
-msgid "Remove from Playlist"
-msgstr "सूचीबाट हटाउनà¥à¤¹à¥‹à¤¸à¥"
+#, fuzzy
+#~ msgid "Running Length"
+#~ msgstr "चलिरहेको"
-#: ../data/PlaylistControls.ui.h:1
-msgid "_Play"
-msgstr "पà¥à¤²à¥‡ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+#~ msgid "_New Playlist"
+#~ msgstr "नयाठसूची"
-#: ../data/PlaylistControls.ui.h:2
-msgid "_Delete"
-msgstr "मेटà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
+#~ msgid "_Quit"
+#~ msgstr "अनà¥à¤¤à¥à¤¯ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥"
-#: ../data/PlaylistDialog.ui.h:1
-msgid "Select Playlist"
-msgstr "सूचिचयन गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥..."
+#~ msgid "Select Playlist"
+#~ msgstr "सूचिचयन गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥..."
diff --git a/po/nl.po b/po/nl.po
index 0e96b562..4a365805 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -7,26 +7,29 @@
# Wouter Bolsterlee <wbolster@gnome.org>, 2013.
# Hannie Dumoleyn <hannie@ubuntu-nl.org>, 2015.
# Justin van Steijn <jvs@fsfe.org>, 2016.
-# Nathan Follens <nfollens@gnome.org>, 2018-2021.
+# Nathan Follens <nfollens@gnome.org>, 2018-2023.
+#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-09-02 15:59+0200\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-09-03 16:14+0200\n"
"Last-Translator: Nathan Follens <nfollens@gnome.org>\n"
-"Language-Team: Dutch <gnome-nl-list@gnome.org>\n"
+"Language-Team: GNOME-NL https://matrix.to/#/#nl:gnome.org\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 3.0\n"
+"X-Generator: Poedit 3.3.2\n"
"X-Project-Style: gnome\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "Gnome Muziek"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Muziek"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -45,14 +48,9 @@ msgstr ""
"Vind nummers in uw lokale bibliotheek, maak gebruik van automatisch "
"gegenereerde afspeellijsten of stel er zelf eentje samen."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
-msgstr "De Gnome Muziek-ontwikkelaars"
-
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Muziek"
+msgstr "De GNOME Muziek-ontwikkelaars"
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
@@ -72,27 +70,19 @@ msgid "Window size (width and height)."
msgstr "Venstergrootte (breedte en hoogte)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Vensterpositie"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Vensterpositie (x en y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Venster gemaximaliseerd"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Venster is gemaximaliseerd."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Modus herhaald afspelen"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -101,31 +91,31 @@ msgid ""
msgstr ""
"Waarde bepaalt of de verzameling herhaald of gehusseld afgespeeld moet "
"worden. Toegestaan zijn: ‘none’ (uit), ‘song’ (huidige nummer herhalen), "
-"’all’ (speellijst herhalen), ‘shuffle’ (speellijst husselen en herhalen)."
+"’all’ (afspeellijst herhalen), ‘shuffle’ (speellijst husselen en herhalen)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "ReplayGain inschakelen"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Schakelt ReplayGain in of uit voor albums"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Pauzestand verhinderen"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Schakelt het verhinderen van de pauzestand van het systeem in of uit tijdens "
"het afspelen van muziek"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Luistergeschiedenis doorgeven aan Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -133,81 +123,21 @@ msgstr ""
"Schakelt het verzenden van scrobbles en de ‘Luistert nu naar’-informatie "
"naar Last.fm in of uit."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 Gnome Muziek-ontwikkelaars"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Een muziekspeler en beheertoepassing voor Gnome."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Bezoek de Gnome Muziek-website"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"Gnome Muziek is vrije software; u mag het verder verspreiden en/of wijzigen "
-"onder de voorwaarden van de GNU General Public License zoals gepubliceerd "
-"door de Free Software Foundation, naar keuze ofwel onder versie 2 ofwel "
-"onder een nieuwere versie van die licentie.\n"
-"\n"
-"Gnome Muziek wordt uitgegeven in de hoop dat het nuttig is, maar ZONDER "
-"ENIGE GARANTIE; zelfs zonder de impliciete garantie van VERKOOPBAARHEID of "
-"GESCHIKTHEID VOOR EEN BEPAALD DOEL. Zie de GNU General Public License voor "
-"meer details.\n"
-"\n"
-"U zou een kopie van de GNU General Public Licence ontvangen moeten hebben "
-"samen met Gnome Muziek; indien dit niet zo is, schrijf dan naar de Free "
-"Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA "
-"02110-1301 USA.\n"
-"\n"
-"De makers van Gnome Muziek verlenen hierbij toestemming om niet-GPL-"
-"verenigbare GStreamer-plugins te gebruiken en te distribueren samen met "
-"GStreamer en Gnome Muziek. Deze toestemming overstijgt en gaat verder dan de "
-"toestemming verleend door de GPL-licentie waaronder Gnome Muziek "
-"ressorteert. Als u deze code bewerkt kunt u deze uitzondering van toepassing "
-"verklaren op uw versie van de code, maar u bent hiertoe niet verplicht. Als "
-"u besluit de uitzondering niet van toepassing te verklaring, verwijder dan "
-"deze verklaring uit uw versie."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Afspelen"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "Afs_pelen"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Toevoegen aan _favoriete nummers"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "Toevoegen aan _afspeellijst…"
@@ -215,133 +145,133 @@ msgstr "Toevoegen aan _afspeellijst…"
msgid "Last.fm Account"
msgstr "Last.fm-account"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Luistergeschiedenis doorgeven"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Sneltoetsen"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Hulp"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_Over Muziek"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Welkom bij Muziek"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Menu"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Selecteren"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Annuleren"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Zoeken"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Terug"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Algemeen"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Venster sluiten"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Zoeken"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Hulp"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Sneltoetsen"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Afspelen"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Afspelen/pauzeren"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Volgend nummer"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Vorig nummer"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Herhalen in-/uitschakelen"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Willekeurig in-/uitschakelen"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navigatie"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Naar Albums gaan"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Naar Artiesten gaan"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Naar Nummers gaan"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Naar Afspeellijsten gaan"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Teruggaan"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -349,88 +279,80 @@ msgstr ""
"Last.fm is een muziekontdekkingsdienst die u gepersonaliseerde aanbevelingen "
"geeft op basis van de muziek die u beluistert."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Luistergeschiedenis doorgeven is niet ingesteld"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"Meld u aan bij uw Last.fm-account om uw luistergeschiedenis door te geven."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Aanmelden"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Laden"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Vorige"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Volgende"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "Verwij_deren"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "He_rnoemen…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Afspeellijstnaam"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Klaar"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Voer een naam in voor uw eerste afspeellijst"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "_Maken"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Nieuwe afspeellijst…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Toevoegen"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Toevoegen aan afspeellijst"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Toevoegen"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Ongedaan maken"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Artiesten"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Alles tonen"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Muziekalbum"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Nummers"
@@ -442,44 +364,63 @@ msgstr "Alles selecteren"
msgid "Select None"
msgstr "Niets selecteren"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Klik op items om deze te selecteren"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "Toevoegen aan _afspeellijst"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Toevoegen aan afspeellijst…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "Ve_rwijderen uit afspeellijst"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "Het GNOME-project"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Verwijderen uit afspeellijst"
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr ""
+"Erwin Poeze <donnut@outlook.com>\n"
+"Reinout van Schouwen <reinouts@gnome.org>\n"
+"Wouter Bolsterlee <wbolster@gnome.org>\n"
+"Hannie Dumoleyn <hannie@ubuntu-nl.org>\n"
+"Justin van Steijn <jvs@fsfe.org>\n"
+"Nathan Follens <nfollens@gnome.org>\n"
+"Meer info over GNOME-NL https://nl.gnome.org"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Copyright de GNOME Muziek-ontwikkelaars"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Vertaald door"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Meest afgespeeld"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Nooit afgespeeld"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Onlangs afgespeeld"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Onlangs toegevoegd"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Favoriete nummers"
@@ -514,27 +455,39 @@ msgid "Playing music"
msgstr "Muziek wordt afgespeeld"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Willekeurig"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Willekeurig/herhalen uit"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Nummer herhalen"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Alles herhalen"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Willekeurig/Herhalen uit"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Willekeurig"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Afspeellijst {} verwijderd"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Ongedaan maken"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} verwijderd uit {}"
-#: gnomemusic/utils.py:80
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Onbekend album"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Onbekende artiest"
@@ -562,7 +515,7 @@ msgstr "Probeer een andere zoekopdracht"
#: gnomemusic/views/emptyview.py:129
msgid "GNOME Music could not connect to Tracker."
-msgstr "Gnome Muziek kon geen verbinding maken met Tracker."
+msgstr "GNOME Muziek kon geen verbinding maken met Tracker."
#: gnomemusic/views/emptyview.py:131
msgid "Your music files cannot be indexed without Tracker running."
@@ -582,65 +535,132 @@ msgstr "Muziek vereist versie 3.0.0 of hoger van Tracker."
msgid "Playlists"
msgstr "Afspeellijsten"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Artiestresultaten"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Albumresultaten"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minuut"
msgstr[1] "{} minuten"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Schijf {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "{} nummer geselecteerd"
msgstr[1] "{} nummers geselecteerd"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Uw luistergeschiedenis wordt doorgegeven aan Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Uw luistergeschiedenis wordt niet doorgegeven aan Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Aangemeld als {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Configureren"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Afspeellijst {} verwijderd"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} verwijderd uit {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Pauzeren"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} nummer"
msgstr[1] "{} nummers"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Zoek naar nummers, artiesten, albums en afspeellijsten"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "Een muziekspeler en beheertoepassing voor Gnome."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Bezoek de Gnome Muziek-website"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "Gnome Muziek is vrije software; u mag het verder verspreiden en/of "
+#~ "wijzigen onder de voorwaarden van de GNU General Public License zoals "
+#~ "gepubliceerd door de Free Software Foundation, naar keuze ofwel onder "
+#~ "versie 2 ofwel onder een nieuwere versie van die licentie.\n"
+#~ "\n"
+#~ "Gnome Muziek wordt uitgegeven in de hoop dat het nuttig is, maar ZONDER "
+#~ "ENIGE GARANTIE; zelfs zonder de impliciete garantie van VERKOOPBAARHEID "
+#~ "of GESCHIKTHEID VOOR EEN BEPAALD DOEL. Zie de GNU General Public License "
+#~ "voor meer details.\n"
+#~ "\n"
+#~ "U zou een kopie van de GNU General Public Licence ontvangen moeten hebben "
+#~ "samen met Gnome Muziek; indien dit niet zo is, schrijf dan naar de Free "
+#~ "Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA "
+#~ "02110-1301 USA.\n"
+#~ "\n"
+#~ "De makers van Gnome Muziek verlenen hierbij toestemming om niet-GPL-"
+#~ "verenigbare GStreamer-plugins te gebruiken en te distribueren samen met "
+#~ "GStreamer en Gnome Muziek. Deze toestemming overstijgt en gaat verder dan "
+#~ "de toestemming verleend door de GPL-licentie waaronder Gnome Muziek "
+#~ "ressorteert. Als u deze code bewerkt kunt u deze uitzondering van "
+#~ "toepassing verklaren op uw versie van de code, maar u bent hiertoe niet "
+#~ "verplicht. Als u besluit de uitzondering niet van toepassing te "
+#~ "verklaring, verwijder dan deze verklaring uit uw versie."
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "De inhoud van uw muziekmap zal hier verschijnen"
+
+#~ msgid "GNOME Music"
+#~ msgstr "Gnome Muziek"
+
+#~ msgid "Window position"
+#~ msgstr "Vensterpositie"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Vensterpositie (x en y)."
+
+#~ msgid "Loading"
+#~ msgstr "Laden"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Toevoegen aan afspeellijst…"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
diff --git a/po/oc.po b/po/oc.po
index 25d6bb0c..bdaa8499 100644
--- a/po/oc.po
+++ b/po/oc.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-09-10 22:56+0200\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-08-15 11:15+0200\n"
"Last-Translator: Quentin PAGÈS\n"
"Language-Team: Tot En Ã’c\n"
"Language: oc\n"
@@ -15,12 +15,14 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Poedit 3.0\n"
+"X-Generator: Poedit 3.3.2\n"
"X-Project-Style: gnome\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME Musica"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Musica"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -39,15 +41,10 @@ msgstr ""
"Trobatz las pistas de vòstra colleccion locala, utilizatz las listas "
"d’escota generadas automaticament o creatz-ne una novèla."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "Los desvolopaires de l'aplicacion Musica de GNOME"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Musica"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Lector de musica"
@@ -55,7 +52,7 @@ msgstr "Lector de musica"
#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
#: data/org.gnome.Music.desktop.in.in:13
msgid "Music;Player;"
-msgstr "musica;lector de musica;"
+msgstr "musica;lector de musica;player;music;legidor;"
#: data/org.gnome.Music.gschema.xml:12
msgid "Window size"
@@ -66,27 +63,19 @@ msgid "Window size (width and height)."
msgstr "La talha de la fenèstra (en largor e nautor)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Posicion de la fenèstra"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "La posicion de la fenèstra (en x e y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Fenèstra maximizada"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Estat maximizat de la fenèstra."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Mòde de lectura repeticion"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -99,29 +88,29 @@ msgstr ""
"» (rejòga tota la lista de lectura, sens mescla), « shuffle » (mescla la "
"lista de lectura, en supausant de tot rejogar)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Activar ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Activa o desactiva ReplayGain pels albums"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr ""
"Permet a las aplicacions d'empachar l'ivernacion automatica del sistèma"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Activa o desactiva l’inibicion de la velha del sistèma quand la musica jòga"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Enviar l'istoric musical a Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -129,80 +118,21 @@ msgstr ""
"Activa o desactiva lo mandadís de scrobbles e d’informacion « en lectura » a "
"Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 Desvolopaires de l'aplicacion Musica de GNOME"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Un lector de musica e una aplicacion de gestion per GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Visitar lo site Web de GNOME Musica"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"GNOME Musica es un logicial liure ; podètz lo redistribuir e/o lo modificar "
-"al títol de las clausas de la Licéncia Publica Generala GNU, tala coma "
-"publicada per la Free Software Foundation ; siá la version 2 de la Licéncia, "
-"o (coma voldretz) una version ulteriora quina que foguèsse.\n"
-"\n"
-"Aqueste programa es distribuit dins l'esper que serà utile, mas SENS CAP DE "
-"GARANTIDA ; sens la quita garantida implicita de COMERCIABILITAT o DE "
-"CONFORMITAT A UNA UTILIZACION PARTICULARA. Vejatz la Licéncia Publica "
-"Generala GNU per mai de detalhs.\n"
-"\n"
-"Deuriatz aver recebut un exemplar de la Licéncia Publica Generala GNU amb "
-"aqueste programa ; se es pas lo cas, escrivètz a la Free Software Foundation "
-"Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
-"\n"
-"Los autors de l'aplicacion Musica de GNOME acòrdan per la presenta "
-"l'autorizacion d'utilizar d'empeutons GStreamer non compatibles amb la "
-"licéncia GPL e de los distribuir conjuntament a GStreamer e a l'aplicacion "
-"Musica de GNOME. Aquesta permission suplanta e va de delà de las "
-"autorizacions acordadas per la licéncia GPL que cobrís l'aplicacion Musica "
-"de GNOME. Se modificatz aqueste còdi, podètz espandir aquesta autorizacion a "
-"vòstra version del còdi, mas i sètz pas obligats. Se o desiratz pas, "
-"suprimissètz aquesta mencion d'excepcion de vòstra version."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Lectura"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Legir"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Apondre als _favorits"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_Apondre a la lista de lectura…"
@@ -210,133 +140,133 @@ msgstr "_Apondre a la lista de lectura…"
msgid "Last.fm Account"
msgstr "Compte Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Senhalar las escotas musicalas"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Acorchis de clavièr"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "A_juda"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_A prepaus de Musica"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "La benvenguda a Musica"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Menú"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Seleccionar"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "A_nullar"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Recercar"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Retorn"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "General"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Tampar la fenèstra"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Recèrca"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Ajuda"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Acorchis"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Lectura"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Lectura/Pausa"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Tròç seguent"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Tròç precedent"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Bascular la repeticion"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Bascular la lectura aleatòri"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navigacion"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Anar als albums"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Anar als artistas"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Anar a las cançons"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Anar a las listas de lectura"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Tornar en arrièr"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -344,88 +274,80 @@ msgstr ""
"Last.fm es un servici de descobèrta de musica que vos dòna de recomandacions "
"personalizadas segon la musica qu’escotatz."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Lo senhalament musical es pas configurat"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"Connectatz-vos a vòstre compte Last.fm per enviar vòstras escotas musicalas."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Identificant"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Cargament en cors"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Precedent"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Seguent"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Suprimir"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Renomenar…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Nom de la lista de lectura"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Acabat"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Sasissètz un nom per la primièra lista de lectura"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "C_rear"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Lista de lectura novèla…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Apondre"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Apondre a la lista de lectura"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Apondre"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Anullar"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Artistas"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Afichar tot"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Albums"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Tròces"
@@ -437,44 +359,56 @@ msgstr "Seleccionar tot"
msgid "Select None"
msgstr "Seleccionar pas res"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Clicatz suls elements per los seleccionar"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Apondre a la lista de lectura"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Apondre a la lista de lectura…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Suprimir de la lista de lectura"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "Lo projècte GNOME"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Suprimir de la lista de lectura"
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr "Quentin PAGÈS"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Copyright Los desvolopaires de l'aplicacion Musica de GNOME"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Traduch per"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Los mai jogats"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Pas jamai jogats"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Jogats recentament"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Aponduts recentament"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Tròces favorits"
@@ -507,27 +441,39 @@ msgid "Playing music"
msgstr "Lectura"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Mesclar"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Desactivar mesclar/repetir"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Repetir lo tròç"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Repetir tot"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Desactivar mesclar/repetir"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Mesclar"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Lista de lectura {} suprimida"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Anullar"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} tirat de {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Album desconegut"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Artista desconegut"
@@ -574,65 +520,132 @@ msgstr "Musica requerís Tracker version 3.0.0 o superiora."
msgid "Playlists"
msgstr "Listas de lectura"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Resultats artistas"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Resultats albums"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minuta"
msgstr[1] "{} minutas"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Disc {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "{} cançon seleccionada"
msgstr[1] "{} cançons seleccionadas"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Vòstra escotas musicalas son senhaladas a Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Vòstra escotas musicalas son senhaladas a Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Connectat coma {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Configurar"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Lista de lectura {} suprimida"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} tirat de {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Pausa"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} cançon"
msgstr[1] "{} cançons"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Recercar de cançons, artistas, albums e listas de lectura"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "Un lector de musica e una aplicacion de gestion per GNOME."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Visitar lo site Web de GNOME Musica"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "GNOME Musica es un logicial liure ; podètz lo redistribuir e/o lo "
+#~ "modificar al títol de las clausas de la Licéncia Publica Generala GNU, "
+#~ "tala coma publicada per la Free Software Foundation ; siá la version 2 de "
+#~ "la Licéncia, o (coma voldretz) una version ulteriora quina que foguèsse.\n"
+#~ "\n"
+#~ "Aqueste programa es distribuit dins l'esper que serà utile, mas SENS CAP "
+#~ "DE GARANTIDA ; sens la quita garantida implicita de COMERCIABILITAT o DE "
+#~ "CONFORMITAT A UNA UTILIZACION PARTICULARA. Vejatz la Licéncia Publica "
+#~ "Generala GNU per mai de detalhs.\n"
+#~ "\n"
+#~ "Deuriatz aver recebut un exemplar de la Licéncia Publica Generala GNU amb "
+#~ "aqueste programa ; se es pas lo cas, escrivètz a la Free Software "
+#~ "Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+#~ "USA.\n"
+#~ "\n"
+#~ "Los autors de l'aplicacion Musica de GNOME acòrdan per la presenta "
+#~ "l'autorizacion d'utilizar d'empeutons GStreamer non compatibles amb la "
+#~ "licéncia GPL e de los distribuir conjuntament a GStreamer e a "
+#~ "l'aplicacion Musica de GNOME. Aquesta permission suplanta e va de delà de "
+#~ "las autorizacions acordadas per la licéncia GPL que cobrís l'aplicacion "
+#~ "Musica de GNOME. Se modificatz aqueste còdi, podètz espandir aquesta "
+#~ "autorizacion a vòstra version del còdi, mas i sètz pas obligats. Se o "
+#~ "desiratz pas, suprimissètz aquesta mencion d'excepcion de vòstra version."
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "Lo contengut de vòstre dossièr Musica s'aficharà aicí"
+
+#~ msgid "GNOME Music"
+#~ msgstr "GNOME Musica"
+
+#~ msgid "Window position"
+#~ msgstr "Posicion de la fenèstra"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "La posicion de la fenèstra (en x e y)."
+
+#~ msgid "Loading"
+#~ msgstr "Cargament en cors"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Apondre a la lista de lectura…"
+
#~ msgid "Inital state has been displayed"
#~ msgstr "L'estat initial es estat afichat"
diff --git a/po/pa.po b/po/pa.po
index 643fb171..d7730d0a 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -2,13 +2,13 @@
# Copyright (C) 2013 gnome-music's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-music package.
#
-# A S Alam <aalam@users.sf.net>, 2013, 2014, 2021.
+# A S Alam <aalam@users.sf.net>, 2013, 2014, 2021, 2023.
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2020-08-28 15:14+0000\n"
-"PO-Revision-Date: 2021-03-14 11:48-0700\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-09-01 19:48-0700\n"
"Last-Translator: A S Alam <aalam@satluj.org>\n"
"Language-Team: Punjabi <punjabi-users@lists.sf.net>\n"
"Language: pa\n"
@@ -17,11 +17,13 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-DamnedLies-Scope: partial\n"
-"X-Generator: Lokalize 20.08.1\n"
+"X-Generator: Lokalize 23.04.3\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "ਗਨੋਮ ਸੰਗੀਤ"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "ਸੰਗੀਤ"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -29,38 +31,25 @@ msgid "Play and organize your music collection"
msgstr "ਆਪਣੇ ਸੰਗੀਤ ਭੰਡਾਰ ਨੂੰ ਚਲਾਉ ਅਤੇ ਪਰਬੰਧ ਕਰੋ"
#: data/org.gnome.Music.appdata.xml.in.in:9
-msgid ""
-"An easy way to play your music. Automatically discover music on your "
-"computer, the local network and internet services."
-msgstr ""
-"ਤà©à¨¹à¨¾à¨¡à©‡ ਸੰਗੀਤ ਨੂੰ ਚਲਾਉਣ ਦਾ ਸੌਖਾ ਢੰਗ ਹੈ। ਤà©à¨¹à¨¾à¨¡à©‡ ਕੰਪਿਊਟਰ, ਲੋਕਲ ਨੈੱਟਵਰਕ ਅਤੇ"
-" ਇੰਟਰਨੈੱਟ ਸੇਵਾਵਾਂ ਉੱਤੇ ਆਪਣੇ-ਆਪ ਸੰਗੀਤ ਲੱਭੋ।"
+msgid "An easy and pleasant way to play your music."
+msgstr "ਤà©à¨¹à¨¾à¨¡à©‡ ਸੰਗੀਤ ਨੂੰ ਚਲਾਉਣ ਲਈ ਸਰਲ ਅਤੇ ਸੌਖਾ ਢੰਗ ਹੈ।"
#: data/org.gnome.Music.appdata.xml.in.in:12
msgid ""
-"Find tracks in your local collection, get music from DLNA servers or try "
-"something new with the Jamendo and Magnatune services."
+"Find tracks in your local collection, use automatically generated playlists "
+"or curate a fresh one."
msgstr ""
-"ਆਪਣੇ ਲੋਕਲ ਭੰਡਾਰ ਵਿੱਚ ਟਰੈਕ ਲੱਭੋ, DLNA ਸਰਵਰਾਂ ਤੋਂ ਲਵੋ ਜਾਂ Jamendo ਅਤੇ Magnatune"
-" ਸੇਵਾਵਾਂ ਨਾਲ ਕà©à¨ ਨਵਾਂ ਵਰਤ ਕੇ ਵੇਖੋ।"
-#: data/org.gnome.Music.appdata.xml.in.in:110
-#| msgid "Copyright © 2013 GNOME Music Developers"
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "ਗਨੋਮ ਸੰਗੀਤ ਡਿਵੈਲਪਰ"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:70
-msgid "Music"
-msgstr "ਸੰਗੀਤ"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "ਸੰਗੀਤ ਪਲੇਅਰ"
#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
#: data/org.gnome.Music.desktop.in.in:13
-#| msgid "Music Player"
msgid "Music;Player;"
msgstr "ਸੰਗੀਤ;ਪਲੇਅਰ;"
@@ -73,32 +62,19 @@ msgid "Window size (width and height)."
msgstr "ਵਿੰਡੋ ਆਕਾਰ (ਚੌੜਾਈ ਅਤੇ ਉਚਾਈ)"
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "ਵਿੰਡੋ ਸਥਿਤੀ"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "ਵਿੰਡੋ ਸਥਿਤੀ (x ਅਤੇ y)"
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "ਵਿੰਡੋ ਵੱਧੋ-ਵੱਧ ਕੀਤੀ"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "ਵਿੰਡੋ ਵੱਧੋ-ਵੱਧ ਆਕਾਰ ਸਥਿਤੀ।"
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "ਪਲੇਅਬੈਕ ਦà©à¨¹à¨°à¨¾à¨“ ਢੰਗ"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
-#| msgid ""
-#| "Value identifies whether to repeat or randomize playback through the "
-#| "collection. Allowed values are: \"none\" (repeat and shuffle are off), "
-#| "\"song\" (repeat current song), \"all\" (repeat playlist, no shuffle), "
-#| "\"shuffle\" (shuffle playlist, presumes repeat all)."
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -108,248 +84,182 @@ msgstr ""
"ਭੰਡਾਰ ਰਾਹੀਂ ਦà©à¨¹à¨°à¨¾à¨‰à¨£ ਜਾਂ ਰਲਵੇਂ ਰੂਪ ਵਿੱਚ ਚਲਾਉਣ ਦੀ ਚੋਣ ਵਾਸਤੇ ਮà©à©±à¨² ਪਛਾਣਕਰਤਾ।"
" ਮਨਜ਼ੂਰ ਮà©à©±à¨² ਹਨ: "
"â€none†(ਦà©à¨¹à¨°à¨¾à¨‰à¨£à¨¾ ਤੇ ਰਲਾਉਣਾ ਬੰਦ ਹੈ), â€song†(ਮੌਜੂਦਾ ਗੀਤ ਦà©à¨¹à¨°à¨¾à¨‰), â€allâ€"
-" (ਪਲੇਅਲਿਸਟ ਦà©à¨¹à¨°à¨¾à¨‰, ਰਲਵੇਂ ਨਹੀਂ), “shuffle†(ਪਲੇਅਲਿਸਟ ਰਲਵਾ ਕੇ ਚਲਾਉ ਅਤੇ ਸਭ"
-" ਦà©à¨¹à¨°à¨¾à¨‰)।"
-
-#: data/ui/AboutDialog.ui.in:9
-#| msgid "Copyright © 2013 GNOME Music Developers"
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "ਕਾਪੀਰਾਈਟ © 2018 ਗਨੋਮ ਸੰਗੀਤ ਡਿਵੈਲਪਰ"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "ਗਨੋਮ ਲਈ ਸੰਗੀਤ ਪਲੇਅਰ ਅਤੇ ਪà©à¨°à¨¬à©°à¨§à¨• à¨à¨ªà¨²à©€à¨•à©‡à¨¶à¨¨ ਹੈ।"
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "ਗਨੋਮ ਸੰਗੀਤ ਵੈੱਬਸਾਈਟ ਵੇਖੋ"
-
-#: data/ui/AboutDialog.ui.in:13
-#| msgid ""
-#| "GNOME Music is free software; you can redistribute it and/or modify it "
-#| "under the terms of the GNU General Public License as published by the "
-#| "Free Software Foundation; either version 2 of the License, or (at your "
-#| "option) any later version.\n"
-#| "\n"
-#| "GNOME Music is distributed in the hope that it will be useful, but "
-#| "WITHOUT ANY WARRANTY; without even the implied warranty of "
-#| "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
-#| "Public License for more details.\n"
-#| "\n"
-#| "You should have received a copy of the GNU General Public License along "
-#| "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-#| "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-#| "\n"
-#| "The GNOME Music authors hereby grant permission for non-GPL compatible "
-#| "GStreamer plugins to be used and distributed together with GStreamer and "
-#| "GNOME Music. This permission is above and beyond the permissions granted "
-#| "by the GPL license by which GNOME Music is covered. If you modify this "
-#| "code, you may extend this exception to your version of the code, but you "
-#| "are not obligated to do so. If you do not wish to do so, delete this "
-#| "exception statement from your version."
+" (ਪਲੇਅਲਿਸਟ "
+"ਦà©à¨¹à¨°à¨¾à¨‰, ਰਲਵੇਂ ਨਹੀਂ), “shuffle†(ਪਲੇਅਲਿਸਟ ਰਲਵਾ ਕੇ ਚਲਾਉ ਅਤੇ ਸਭ ਦà©à¨¹à¨°à¨¾à¨‰)।"
+
+#: data/org.gnome.Music.gschema.xml:28
+msgid "Enable ReplayGain"
+msgstr ""
+
+#: data/org.gnome.Music.gschema.xml:29
+msgid "Enables or disables ReplayGain for albums"
+msgstr ""
+
+#: data/org.gnome.Music.gschema.xml:33
+msgid "Inhibit system suspend"
+msgstr "ਸਿਸਟਮ ਸਸਪੈਂਡ ਤੋਂ ਰੋਕੋ"
+
+#: data/org.gnome.Music.gschema.xml:34
+msgid "Enables or disables inhibiting system suspend while playing music"
+msgstr ""
+
+#: data/org.gnome.Music.gschema.xml:38
+#| msgid "Your music listening is reported to Last.fm."
+msgid "Report music history to Last.fm"
+msgstr "ਸੰਗੀਤ ਅਤੀਤ Last.fm ਨੂੰ ਰਿਪੋਰਟ ਕਰੋ"
+
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version.\n"
-"\n"
-"“Magic of the vinyl†by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
-"https://www.flickr.com/photos/_spy_/12270839403"
+"Enables or disables sending scrobbles and the “currently playing†info to "
+"Last.fm."
msgstr ""
-"ਗਨੋਮ ਸੰਗੀਤ ਇੱਕ ਮà©à¨•à¨¤ ਸਾਫਟਵੇਅਰ ਹੈ, ਜਿਸ ਨੂੰ ਤà©à¨¸à©€à¨‚ ਫਰੀ ਸਾਫਟਵੇਅਰ ਫਾਊਂਨਡੇਸ਼ਨ ਵਲੋਂ"
-" ਜਾਰੀ ਗਨੂ ਜਰਨਲ "
-"ਪਬਲਿਕ ਲਾਇਸੈਂਸ ਦੇ ਵਰਜਨ ੨ ਜਾਂ (ਤà©à¨¹à¨¾à¨¡à©€ ਚੋਣ ਮà©à¨¤à¨¾à¨¬à¨•) ਨਵੇਂ ਵਰਜਨ ਅਧੀਨ ਵੰਡ ਅਤੇ/ਜਾਂ"
-" ਸੋਧ ਜਾ ਸਕਦੇ ਹੋ।\n"
-"\n"
-"ਗਨੋਮ ਸੰਗੀਤ ਨੂੰ ਇਸ ਭਰੋਸੇ ਨਾਲ ਵੰਡਿਆ ਜਾ ਰਿਹਾ ਹੈ ਕਿ ਉਹ ਲਾਭਦਾਇਕ ਹੋਵੇਗਾ, ਪਰ ਬਿਨਾਂ"
-" ਕਿਸੇ ਵਾਰੰਟੀ "
-"ਦੇ, ਬਿਨਾਂ ਕਿਸੇ ਖਾਸ ਮਕਸਦ ਲਈ ਠੀਕ ਜਾਂ ਲਾਭਦਾਇਕ ਰਹਿਣ ਦੇ। ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ ਗਨੂ ਜਰਨਲ"
-" ਪਬਲਿਕ "
-"ਲਾਇਸੈਂਸ ਨੂੰ ਵੇਖੋ।\n"
-"\n"
-"ਤà©à¨¸à©€à¨‚ ਗਨੂ ਜਰਨਲ ਪਬਲਿਕ ਲਾਇਸੈਂਸ ਦੀ ਨਕਲ ਗਨੋਮ ਸੰਗੀਤ ਨਾਲ ਪਰਾਪਤ ਕੀਤੀ ਹੋਵੇਗੀ, ਜੇਕਰ"
-" ਨਹੀਂ ਤਾਂ ਫਰੀ "
-"ਸਾਫਟਵੇਅਰ ਫਾਊਂਨਡੇਸ਼ਨ ੫੧ ਫਰੈਕਲਿਨ ਸਟਰੀਟ, ਪੰਜਵੀਂ ਮੰਜ਼ਲ, ਬੋਸਟਨ, à¨à¨® ਠ੦੨੧੧੦-੧੩੦੧ "
-" ਅਮਰੀਕਾ ਤੋਂ "
-"ਪਰਾਪਤ ਕਰਨ ਲਈ ਲਿਖੋ।\n"
-"\n"
-"ਗਨੋਮ ਸੰਗੀਤ ਲੇਖਕਾਂ ਨੇ ਗ਼ੈਰ-GPL ਅਨà©à¨•à©‚ਲ ਜੀਸਟਰੀਮਰ ਪਲੱਗਇਨ ਨੂੰ ਜੀਸਟਰੀਮਰ ਅਤੇ ਗਨੋਮ"
-" ਸੰਗੀਤ ਨਾਲ ਵਰਤਣ "
-"ਅਤੇ ਵੰਡਣ ਲਈ ਮਨਜ਼ੂਰੀ ਦਿੱਤੀ ਹੈ। ਇਹ ਮਨਜ਼ੂਰੀ ਜੀਪੀà¨à¨² ਲਾਈਸੈਂਸ ਰਾਹੀਂ ਦਿੱਤੀ ਗਈ ਮਨਜੂਰੀ"
-" ਤੋਂ ਉੱਤੇ ਅਤੇ ਵੱਧ "
-"ਹੈ, ਜਿਸ ਅਧੀਨ ਗਨੋਮ ਸੰਗੀਤ ਆਉਂਦਾ ਹੈ। ਜੇ ਤà©à¨¸à©€à¨‚ ਇਹ ਕੋਡ ਵਿੱਚ ਸੋਧ ਕਰਦੇ ਹੋ, ਤਾਂ ਤà©à¨¸à©€à¨‚"
-" ਕੋਡ ਦੇ ਆਪਣੇ ਵਰਜਨ "
-"ਲਈ ਇਹ ਛੋਟ ਨੂੰ ਵਧਾ ਸਕਦੇ ਹੋ, ਪਰ ਇਹ ਕਰਨ ਲਈ ਤà©à¨¹à¨¾à¨¡à©‡ ਉੱਤੇ ਕੋਈ ਪਾਬੰਦੀ ਨਹੀਂ ਹੈ। ਜੇ"
-" ਤà©à¨¸à©€à¨‚ ਇੰਠਨਹੀਂ ਚਾਹà©à©°à¨¦à©‡ "
-"ਹੋ ਤਾਂ ਤà©à¨¸à©€à¨‚ ਆਪਣੇ ਵਰਜਨ ਤੋਂ ਇਹ ਛੋਟ ਬਿਆਨ ਨੂੰ ਹਟਾ ਸਕਦੇ ਹੋ।\n"
-"\n"
-"ਸਾਮੀ ਪਿਆਲੰਪੀ ਵਲੋਂ “Magic of the vinyl†ਚਿੱਤਰ ਦਾ ਲਸੰਸ CC-BY-SA 2.0 ਦੇ ਅਧੀਨ"
-" ਦਿੱਤਾ ਹੈ"
-"https://www.flickr.com/photos/_spy_/12270839403"
-
-#: data/ui/AlbumWidget.ui:107
-msgid "Released"
-msgstr "ਰੀਲਿਜ਼"
-
-#: data/ui/AlbumWidget.ui:123
-msgid "Running Length"
-msgstr "ਚੱਲਣ ਲੰਬਾਈ"
-
-#: data/ui/AlbumWidget.ui:167
-msgid "Composer"
-msgstr "ਕੰਪੋਜ਼ਰ"
-
-#: data/ui/AppMenu.ui:20 data/ui/LastfmDialog.ui:8
+
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
+msgid "Play"
+msgstr "ਚਲਾਓ"
+
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
+msgid "_Play"
+msgstr "ਚਲਾਓ(_P)"
+
+#: data/ui/AlbumWidget.ui:134
+#| msgid "Favorite Songs"
+msgid "Add to _Favorite Songs"
+msgstr "ਮਨਪਸੰਦ ਗੀਤ ਵਿੱਚ ਜੋੜੋ(_F)"
+
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
+#| msgid "Add to Playlist…"
+msgid "_Add to Playlist…"
+msgstr "ਪਲੇਅਲਿਸਟ ਵਿੱਚ ਜੋੜੋ(_A)…"
+
+#: data/ui/AppMenu.ui:23 data/ui/LastfmDialog.ui:8
msgid "Last.fm Account"
msgstr "Last.fm ਖਾਤਾ"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "ਸੰਗੀਤ ਸà©à¨£à¨¨ ਬਾਰੇ ਰਿਪੋਰਟ"
-#: data/ui/AppMenu.ui:69
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ(_K)"
-#: data/ui/AppMenu.ui:83
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "ਮਦਦ(_H)"
-#: data/ui/AppMenu.ui:97
-#| msgid "_About"
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "ਸੰਗੀਤ ਬਾਰੇ(_A)"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/EmptyView.ui:30
+msgid "Welcome to Music"
+msgstr "ਸੰਗੀਤ ਲਈ ਜੀ ਆਇਆਂ ਨੂੰ"
+
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "ਮੇਨੂ"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "ਚà©à¨£à©‹"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:244
-#: data/ui/SearchHeaderBar.ui:37
-#| msgid "Cancel"
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "ਰੱਦ ਕਰੋ(_C)"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "ਖੋਜ"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "ਪਿੱਛੇ"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "ਆਮ"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "ਵਿੰਡੋ ਬੰਦ ਕਰੋ"
-#: data/ui/help-overlay.ui:24
-#| msgid "Search"
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "ਖੋਜੋ"
-#: data/ui/help-overlay.ui:31
-#| msgid "_Help"
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "ਮਦਦ"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "ਸ਼ਾਰਟਕੱਟ"
-#: data/ui/help-overlay.ui:47
-#| msgid "Play"
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "ਚਲਾਓ"
-#: data/ui/help-overlay.ui:51
-#| msgid "Pause"
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "ਚਲਾਓ/ਵਿਰਾਮ"
-#: data/ui/help-overlay.ui:58
-#| msgid "Next"
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "ਅਗਲਾ ਗੀਤ"
-#: data/ui/help-overlay.ui:65
-#| msgid "Previous"
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "ਪਿਛਲਾ ਗੀਤ"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "ਦà©à¨¹à¨°à¨¾à¨‰à¨£à¨¾ ਬਦਲੋ"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "ਰਲਾਉਣ ਨੂੰ ਬਦਲੋ"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "ਨੇਵੀਗੇਸ਼ਨ"
-#: data/ui/help-overlay.ui:92
-#| msgid "Albums"
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "à¨à¨²à¨¬à¨® ਉੱਤੇ ਜਾਓ"
-#: data/ui/help-overlay.ui:99
-#| msgid "Artists"
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "ਕਲਾਕਾਰ ਉੱਤੇ ਜਾਓ"
-#: data/ui/help-overlay.ui:106
-#| msgid "Songs"
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "ਗੀਤ ਉੱਤੇ ਜਾਓ"
-#: data/ui/help-overlay.ui:113
-#| msgid "Add to Playlist"
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "ਪਲੇਅਲਿਸਟ ਉੱਤੇ ਜਾਓ"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "ਪਿੱਛੇ ਜਾਓ"
@@ -360,132 +270,82 @@ msgid ""
"recommendations based on the music you listen to."
msgstr ""
"Last.fm ਸੰਗੀ ਖੋਜ ਸੇਵਾ ਹੈ, ਜੋ ਕਿ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਤà©à¨¹à¨¾à¨¡à©‡ ਵਲੋਂ ਸà©à¨£à©‡ ਗਠਸੰਗੀਤ ਦੇ ਮà©à¨¤à¨¾à¨¬à¨•"
-" ਤà©à¨¹à¨¾à¨¡à©€à¨†à¨‚ ਨਿੱਜੀ ਸਿਫਾਰਸ਼ਾਂ ਪੇਸ਼ ਕਰਦੀ ਹੈ।"
+" ਤà©à¨¹à¨¾à¨¡à©€à¨†à¨‚ ਨਿੱਜੀ "
+"ਸਿਫਾਰਸ਼ਾਂ ਪੇਸ਼ ਕਰਦੀ ਹੈ।"
-#: data/ui/LastfmDialog.ui:32 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "ਸੰਗੀਤ ਰਿਪੋਰਟ ਕਰਨਾ ਸੈਟਅੱਪ ਨਹੀਂ ਹੈ"
-#: data/ui/LastfmDialog.ui:46 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "ਆਪਣੇ ਸੰਗੀਤ ਸà©à¨£à¨¨ ਬਾਰੇ ਰਿਪੋਰਟ ਦੇਣ ਲਈ ਆਪਣੇ Last.fm ਖਾਤੇ ਵਿੱਚ ਲਾਗਇਨ ਕਰੋ।"
-#: data/ui/LastfmDialog.ui:57 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "ਲਾਗਇਨ"
-#: data/ui/LoadingNotification.ui:16
-#| msgid "Loading..."
-msgid "Loading"
-msgstr "ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"
-
-#: data/ui/PlayerToolbar.ui:6
-msgid "Shuffle"
-msgstr "ਰਲਵੇਂ"
-
-#: data/ui/PlayerToolbar.ui:11
-msgid "Repeat All"
-msgstr "ਸਭ ਦà©à¨¹à¨°à¨¾à¨“"
-
-#: data/ui/PlayerToolbar.ui:16
-msgid "Repeat Song"
-msgstr "ਗਾਣਾ ਦà©à¨¹à¨°à¨¾à¨“"
-
-#. Causes tracks to play in random order
-#: data/ui/PlayerToolbar.ui:21
-msgid "Shuffle/Repeat Off"
-msgstr "ਰਲਵਾਂ/ਦà©à¨¹à¨°à¨¾à¨‰à¨£à¨¾ ਬੰਦ"
-
-#: data/ui/PlayerToolbar.ui:69
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "ਪਿੱਛੇ"
-#: data/ui/PlayerToolbar.ui:85 gnomemusic/widgets/playertoolbar.py:146
-msgid "Play"
-msgstr "ਚਲਾਓ"
-
-#: data/ui/PlayerToolbar.ui:101
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "ਅੱਗੇ"
-#: data/ui/PlaylistContextMenu.ui:5
-#| msgid "Play"
-msgctxt "context menu item"
-msgid "Play"
-msgstr "ਚਲਾਓ"
-
-#: data/ui/PlaylistContextMenu.ui:9
-#| msgid "Add to Playlist"
-msgid "Add to Playlist…"
-msgstr "...ਪਲੇਅਲਿਸਟ ਵਿੱਚ ਜੋੜੋ"
-
-#: data/ui/PlaylistContextMenu.ui:13
-#| msgid "Remove from Playlist"
-msgid "Remove From Playlist"
-msgstr "ਪਲੇਅਲਿਸਟ ਵਿੱਚੋਂ ਹਟਾਓ"
-
-#: data/ui/PlaylistControls.ui:6
-msgid "_Play"
-msgstr "ਚਲਾਓ(_P)"
-
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "ਹਟਾਓ(_D)"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "ਨਾਂ ਬਦਲੋ(_R)…"
-#: data/ui/PlaylistControls.ui:41
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "ਪਲੇਅਲਿਸਟ ਨਾਂ"
-#: data/ui/PlaylistControls.ui:74
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "ਮà©à¨•à©°à¨®à¨²(_D)"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "ਆਪਣੀ ਪਹਿਲੀ ਪਲੇਅਲਿਸਟ ਲਈ ਨਾਂ ਦਿਓ"
-#: data/ui/PlaylistDialog.ui:92
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "ਬਣਾਓ(_r)"
-#: data/ui/PlaylistDialog.ui:155
-#| msgid "New Playlist"
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "...ਨਵੀਂ ਪਲੇਅਲਿਸਟ"
-#: data/ui/PlaylistDialog.ui:169
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "ਜੋੜੋ"
-#: data/ui/PlaylistDialog.ui:241
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "ਪਲੇਅਲਿਸਟ ਵਿੱਚ ਜੋੜੋ"
-#: data/ui/PlaylistDialog.ui:257
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "ਜੋੜੋ(_A)"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "ਵਾਪਸ(_U)"
-
-#: data/ui/SearchView.ui:43 gnomemusic/views/artistsview.py:43
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "ਕਲਾਕਾਰ"
-#: data/ui/SearchView.ui:53 data/ui/SearchView.ui:106
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "ਸਭ ਵੇਖੋ"
-#: data/ui/SearchView.ui:96 gnomemusic/views/albumsview.py:47
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "à¨à¨²à¨¬à¨®"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:44
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "ਗੀਤ"
@@ -497,60 +357,82 @@ msgstr "ਸਭ ਚà©à¨£à©‹"
msgid "Select None"
msgstr "ਕੋਈ ਨਾ ਚà©à¨£à©‹"
-#: data/ui/SelectionBarMenuButton.ui:31 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "ਆਈਟਮਾਂ ਨੂੰ ਚà©à¨£à¨¨ ਲਈ ਉਹਨਾਂ ਉੱਤੇ ਕਲਿੱਕ ਕਰੋ"
-#: data/ui/SelectionToolbar.ui:9
-#| msgid "Add to Playlist"
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "ਪਲੇਅਲਿਸਟ ਵਿੱਚ ਜੋੜੋ(_A)"
+#: data/ui/SongWidgetMenu.ui:19
+#| msgid "Remove From Playlist"
+msgid "_Remove from Playlist"
+msgstr "ਪਲੇਅਲਿਸਟ ਵਿੱਚੋਂ ਹਟਾਓ(_R)"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "ਗਨੋਮ ਪਰੋਜੈਕਟ"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr ""
+"ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ (Amanpreet Singh)\n"
+"ਪੰਜਾਬੀ ਓਪਨਸੋਰਸ ਟੀਮ (POST)"
+
+#: gnomemusic/about.py:253
+#| msgid "Copyright © 2018 GNOME Music Developers"
+msgid "Copyright The GNOME Music Developers"
+msgstr "ਕਾਪੀਰਾਈਟ ਗਨੋਮ ਸੰਗੀਤ ਡਿਵੈਲਪਰ"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "ਉਲੱਥਾ ਕੀਤਾ"
+
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:832
-#| msgid "Music Player"
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "ਸਭ ਤੋਂ ਵੱਧ ਚਲਾà¨"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:885
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "ਕਦੇ ਨਹੀਂ ਚਲਾà¨"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:937
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "ਹà©à¨£à©‡ ਹà©à¨£à©‡ ਚਲਾà¨"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:999
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "ਹà©à¨£à©‡ ਹà©à¨£à©‡ ਜੋੜੇ"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1061
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "ਮਨਪਸੰਦ ਗੀਤ"
-#: gnomemusic/gstplayer.py:378
+#: gnomemusic/gstplayer.py:408
msgid "Unable to play the file"
msgstr "ਫਾਇਲ ਚਲਾਉਣ ਲਈ ਅਸਮਰੱਥ ਹੈ"
-#: gnomemusic/gstplayer.py:384
+#: gnomemusic/gstplayer.py:414
msgid "_Find in {}"
msgstr "{} ਵਿੱਚ ਲੱਭੋ(_F)"
#. TRANSLATORS: separator for two codecs
-#: gnomemusic/gstplayer.py:394
+#: gnomemusic/gstplayer.py:424
msgid " and "
msgstr " ਅਤੇ "
#. TRANSLATORS: separator for a list of codecs
-#: gnomemusic/gstplayer.py:397
+#: gnomemusic/gstplayer.py:427
msgid ", "
msgstr ", "
-#: gnomemusic/gstplayer.py:399
+#: gnomemusic/gstplayer.py:429
msgid "{} is required to play the file, but is not installed."
msgid_plural "{} are required to play the file, but are not installed."
msgstr[0] "ਫਾਇਲ ਚਲਾਉਣ ਲਈ {} ਚਾਹੀਦਾ ਹੈ, ਪਰ ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ।"
@@ -560,128 +442,268 @@ msgstr[1] "ਫਾਇਲ ਚਲਾਉਣ ਲਈ {} ਚਾਹੀਦੇ ਹਨ, ਪ
msgid "Playing music"
msgstr "ਸੰਗੀਤ ਚੱਲ ਰਿਹਾ ਹੈ"
-#: gnomemusic/utils.py:81
-#| msgid "Unknown Album"
+#. Translators: "shuffle" causes tracks to play in random order.
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "ਰਲਵਾਂ/ਦà©à¨¹à¨°à¨¾à¨‰à¨£à¨¾ ਬੰਦ"
+
+#: gnomemusic/player.py:45
+msgid "Repeat Song"
+msgstr "ਗਾਣਾ ਦà©à¨¹à¨°à¨¾à¨“"
+
+#: gnomemusic/player.py:46
+msgid "Repeat All"
+msgstr "ਸਭ ਦà©à¨¹à¨°à¨¾à¨“"
+
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "ਰਲਵੇਂ"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "ਪਲੇਅਲਿਸਟ {} ਹਟਾਈ"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+#| msgid "_Undo"
+msgid "Undo"
+msgstr "ਵਾਪਸ"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} ਨੂੰ {} ਤੋਂ ਹਟਾਇਆ"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "ਅਣਪਛਾਤੀ à¨à¨²à¨¬à¨®"
-#: gnomemusic/utils.py:102
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "ਅਣਪਛਾਤਾ ਕਲਾਕਾਰ"
-#: gnomemusic/views/emptyview.py:67
+#: gnomemusic/views/emptyview.py:65
msgid "Your XDG Music directory is not set."
msgstr "ਤà©à¨¹à¨¾à¨¡à¨¾ XDG ਸੰਗੀਤ ਡਾਇਰੈਕਟਰੀ ਸੈੱਟ ਨਹੀਂ ਹੈ।"
-#: gnomemusic/views/emptyview.py:74
-#| msgid "Music Player"
-msgid "Music folder"
+#: gnomemusic/views/emptyview.py:72
+#| msgid "Music folder"
+msgid "Music Folder"
msgstr "ਸੰਗੀਤ ਫੋਲਡਰ"
#. TRANSLATORS: This is a label to display a link to open user's music
#. folder. {} will be replaced with the translated text 'Music folder'
-#: gnomemusic/views/emptyview.py:78
+#: gnomemusic/views/emptyview.py:76
msgid "The contents of your {} will appear here."
msgstr "ਤà©à¨¹à¨¾à¨¡à©€ {} ਦੀ ਸਮੱਗਰੀ ਇੱਥੇ ਦਿਖਾਈ ਦੇਵੇਗੀ।"
-#: gnomemusic/views/emptyview.py:112
-msgid "Hey DJ"
-msgstr "ਹੈਲੋ ਡੀਜੇ"
-
-#: gnomemusic/views/emptyview.py:121 gnomemusic/views/emptyview.py:126
-#| msgid "No Music Found"
-msgid "No music found"
+#: gnomemusic/views/emptyview.py:124
+#| msgid "No music found"
+msgid "No Music Found"
msgstr "ਕੋਈ ਸੰਗੀਤ ਨਹੀਂ ਲੱਭਿਆ"
-#: gnomemusic/views/emptyview.py:128
-msgid "Try a different search"
-msgstr "ਹੋਰ ਕੋਈ ਖੋਜ ਕਰਕੇ ਵੇਖੋ"
+#: gnomemusic/views/emptyview.py:125
+#| msgid "Try a different search"
+msgid "Try a Different Search"
+msgstr "ਵੱਖਰੀ ਖੋਜ ਕਰਕੇ ਵੇਖੋ"
-#: gnomemusic/views/emptyview.py:133
-msgid "GNOME Music could not connect to Tracker"
-msgstr "ਗਨੋਮ ਸੰਗੀਤ ਟਰੈਕਰ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ"
+#: gnomemusic/views/emptyview.py:129
+#| msgid "GNOME Music could not connect to Tracker"
+msgid "GNOME Music could not connect to Tracker."
+msgstr "ਗਨੋਮ ਸੰਗੀਤ ਟਰੈਕਰ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।"
-#: gnomemusic/views/emptyview.py:136
-msgid "Your music files cannot be indexed without Tracker running"
-msgstr "ਤà©à¨¹à¨¾à¨¡à©€à¨†à¨‚ ਸੰਗੀਤ ਫਾਇਲਾਂ ਨੂੰ ਟਰੈਕਰ ਚਲਾਠਬਿਨਾਂ ਇੰਡੈਕਸ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ"
+#: gnomemusic/views/emptyview.py:131
+#| msgid "Your music files cannot be indexed without Tracker running"
+msgid "Your music files cannot be indexed without Tracker running."
+msgstr ""
+"ਤà©à¨¹à¨¾à¨¡à©€à¨†à¨‚ ਸੰਗੀਤ ਫਾਇਲਾਂ ਨੂੰ ਟਰੈਕਰ ਚਲਾਠਬਿਨਾਂ ਇੰਡੈਕਸ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।"
-#: gnomemusic/views/emptyview.py:143
-msgid "Your system Tracker version seems outdated"
-msgstr "ਤà©à¨¹à¨¾à¨¡à©‡ ਸਿਸਟਮ ਦਾ ਟਰੈਕਰ ਵਰਜ਼ਨ ਪà©à¨°à¨¾à¨£à¨¾ ਜਾਪਦਾ ਹੈ"
+#: gnomemusic/views/emptyview.py:137
+#| msgid "Your system Tracker version seems outdated"
+msgid "Your system Tracker version seems outdated."
+msgstr "ਤà©à¨¹à¨¾à¨¡à©‡ ਸਿਸਟਮ ਦਾ ਟਰੈਕਰ ਵਰਜ਼ਨ ਪà©à¨°à¨¾à¨£à¨¾ ਜਾਪਦਾ ਹੈ।"
-#: gnomemusic/views/emptyview.py:146
-msgid "Music needs Tracker version 3.0.0 or higher"
-msgstr "ਸੰਗੀਤ ਨੂੰ ਟਰੈਕਰ ਵਰਜ਼ਨ 3.0.0 ਜਾਂ ਨਵਾਂ ਚਾਹੀਦਾ ਹੈ"
+#: gnomemusic/views/emptyview.py:139
+#| msgid "Music needs Tracker version 3.0.0 or higher"
+msgid "Music needs Tracker version 3.0.0 or higher."
+msgstr "ਸੰਗੀਤ ਨੂੰ ਟਰੈਕਰ ਵਰਜ਼ਨ 3.0.0 ਜਾਂ ਨਵਾਂ ਚਾਹੀਦਾ ਹੈ।"
-#: gnomemusic/views/playlistsview.py:41
+#: gnomemusic/views/playlistsview.py:45
msgid "Playlists"
msgstr "ਪਲੇਅਲਿਸਟਾਂ"
-#: gnomemusic/views/searchview.py:386
-#| msgid "Artists"
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "ਕਲਾਕਾਰ ਨਤੀਜੇ"
-#: gnomemusic/views/searchview.py:401
-#| msgid "Albums"
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "à¨à¨²à¨¬à¨® ਨਤੀਜੇ"
-#: gnomemusic/widgets/albumwidget.py:154
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} ਮਿੰਟ"
msgstr[1] "{} ਮਿੰਟ"
-#: gnomemusic/widgets/disclistboxwidget.py:60
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "ਡਿਸਕ {}"
-#: gnomemusic/widgets/headerbar.py:68
-#| msgid "Select None"
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "ਚà©à¨£à¨¿à¨† {} ਗੀਤ"
msgstr[1] "ਚà©à¨£à©‡ {} ਗੀਤ"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "ਤà©à¨¹à¨¾à¨¡à¨¾ ਸੰਗੀਤ ਸà©à¨£à¨¨à¨¾ Last.fm ਨੂੰ ਰਿਪੋਰਟ ਕੀਤਾ ਹੈ"
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "ਤà©à¨¹à¨¾à¨¡à¨¾ ਸੰਗੀਤ ਸà©à¨£à¨¨à¨¾ Last.fm ਨੂੰ ਰਿਪੋਰਟ ਨਹੀਂ ਕੀਤਾ"
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "{} ਵਜੋਂ ਲਾਗਇਨ ਕੀਤਾ"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "ਸੰਰਚਨਾ"
-#: gnomemusic/widgets/notificationspopup.py:216
-#| msgid "Playlist Name"
-msgid "Playlist {} removed"
-msgstr "ਪਲੇਅਲਿਸਟ {} ਹਟਾਈ"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} ਨੂੰ {} ਤੋਂ ਹਟਾਇਆ"
-
-#: gnomemusic/widgets/playertoolbar.py:143
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "ਵਿਰਾਮ"
-#: gnomemusic/widgets/playlistcontrols.py:127
-#| msgid "%d Song"
-#| msgid_plural "%d Songs"
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} ਗੀਤ"
msgstr[1] "{} ਗੀਤ"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "ਗੀਤ, ਕਲਾਕਾਰ, à¨à¨²à¨¬à¨® ਅਤੇ ਪਲੇਅਲਿਸਟ ਖੋਜੋ"
+
+#~ msgid "GNOME Music"
+#~ msgstr "ਗਨੋਮ ਸੰਗੀਤ"
+
+#~ msgid ""
+#~ "An easy way to play your music. Automatically discover music on your "
+#~ "computer, the local network and internet services."
+#~ msgstr ""
+#~ "ਤà©à¨¹à¨¾à¨¡à©‡ ਸੰਗੀਤ ਨੂੰ ਚਲਾਉਣ ਦਾ ਸੌਖਾ ਢੰਗ ਹੈ। ਤà©à¨¹à¨¾à¨¡à©‡ ਕੰਪਿਊਟਰ, ਲੋਕਲ ਨੈੱਟਵਰਕ ਅਤੇ ਇੰਟਰਨੈੱਟ ਸੇਵਾਵਾਂ ਉੱਤੇ "
+#~ "ਆਪਣੇ-ਆਪ ਸੰਗੀਤ ਲੱਭੋ।"
+
+#~ msgid ""
+#~ "Find tracks in your local collection, get music from DLNA servers or try "
+#~ "something new with the Jamendo and Magnatune services."
+#~ msgstr ""
+#~ "ਆਪਣੇ ਲੋਕਲ ਭੰਡਾਰ ਵਿੱਚ ਟਰੈਕ ਲੱਭੋ, DLNA ਸਰਵਰਾਂ ਤੋਂ ਲਵੋ ਜਾਂ Jamendo ਅਤੇ Magnatune ਸੇਵਾਵਾਂ "
+#~ "ਨਾਲ ਕà©à¨ ਨਵਾਂ ਵਰਤ ਕੇ ਵੇਖੋ।"
+
+#~ msgid "Window position"
+#~ msgstr "ਵਿੰਡੋ ਸਥਿਤੀ"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "ਵਿੰਡੋ ਸਥਿਤੀ (x ਅਤੇ y)"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "ਗਨੋਮ ਲਈ ਸੰਗੀਤ ਪਲੇਅਰ ਅਤੇ ਪà©à¨°à¨¬à©°à¨§à¨• à¨à¨ªà¨²à©€à¨•à©‡à¨¶à¨¨ ਹੈ।"
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "ਗਨੋਮ ਸੰਗੀਤ ਵੈੱਬਸਾਈਟ ਵੇਖੋ"
+
+#~| msgid ""
+#~| "GNOME Music is free software; you can redistribute it and/or modify it "
+#~| "under the terms of the GNU General Public License as published by the "
+#~| "Free Software Foundation; either version 2 of the License, or (at your "
+#~| "option) any later version.\n"
+#~| "\n"
+#~| "GNOME Music is distributed in the hope that it will be useful, but "
+#~| "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~| "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "
+#~| "General Public License for more details.\n"
+#~| "\n"
+#~| "You should have received a copy of the GNU General Public License along "
+#~| "with GNOME Music; if not, write to the Free Software Foundation, Inc., "
+#~| "51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~| "\n"
+#~| "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~| "GStreamer plugins to be used and distributed together with GStreamer and "
+#~| "GNOME Music. This permission is above and beyond the permissions "
+#~| "granted by the GPL license by which GNOME Music is covered. If you "
+#~| "modify this code, you may extend this exception to your version of the "
+#~| "code, but you are not obligated to do so. If you do not wish to do so, "
+#~| "delete this exception statement from your version."
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version.\n"
+#~ "\n"
+#~ "“Magic of the vinyl†by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
+#~ "https://www.flickr.com/photos/_spy_/12270839403"
+#~ msgstr ""
+#~ "ਗਨੋਮ ਸੰਗੀਤ ਇੱਕ ਮà©à¨•à¨¤ ਸਾਫਟਵੇਅਰ ਹੈ, ਜਿਸ ਨੂੰ ਤà©à¨¸à©€à¨‚ ਫਰੀ ਸਾਫਟਵੇਅਰ ਫਾਊਂਨਡੇਸ਼ਨ ਵਲੋਂ ਜਾਰੀ ਗਨੂ ਜਰਨਲ "
+#~ "ਪਬਲਿਕ ਲਾਇਸੈਂਸ ਦੇ ਵਰਜਨ ੨ ਜਾਂ (ਤà©à¨¹à¨¾à¨¡à©€ ਚੋਣ ਮà©à¨¤à¨¾à¨¬à¨•) ਨਵੇਂ ਵਰਜਨ ਅਧੀਨ ਵੰਡ ਅਤੇ/ਜਾਂ ਸੋਧ ਜਾ ਸਕਦੇ "
+#~ "ਹੋ।\n"
+#~ "\n"
+#~ "ਗਨੋਮ ਸੰਗੀਤ ਨੂੰ ਇਸ ਭਰੋਸੇ ਨਾਲ ਵੰਡਿਆ ਜਾ ਰਿਹਾ ਹੈ ਕਿ ਉਹ ਲਾਭਦਾਇਕ ਹੋਵੇਗਾ, ਪਰ ਬਿਨਾਂ ਕਿਸੇ "
+#~ "ਵਾਰੰਟੀ ਦੇ, ਬਿਨਾਂ ਕਿਸੇ ਖਾਸ ਮਕਸਦ ਲਈ ਠੀਕ ਜਾਂ ਲਾਭਦਾਇਕ ਰਹਿਣ ਦੇ। ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ ਗਨੂ "
+#~ "ਜਰਨਲ ਪਬਲਿਕ ਲਾਇਸੈਂਸ ਨੂੰ ਵੇਖੋ।\n"
+#~ "\n"
+#~ "ਤà©à¨¸à©€à¨‚ ਗਨੂ ਜਰਨਲ ਪਬਲਿਕ ਲਾਇਸੈਂਸ ਦੀ ਨਕਲ ਗਨੋਮ ਸੰਗੀਤ ਨਾਲ ਪਰਾਪਤ ਕੀਤੀ ਹੋਵੇਗੀ, ਜੇਕਰ ਨਹੀਂ ਤਾਂ "
+#~ "ਫਰੀ ਸਾਫਟਵੇਅਰ ਫਾਊਂਨਡੇਸ਼ਨ ੫੧ ਫਰੈਕਲਿਨ ਸਟਰੀਟ, ਪੰਜਵੀਂ ਮੰਜ਼ਲ, ਬੋਸਟਨ, à¨à¨® ਠ੦੨੧੧੦-੧੩੦੧ "
+#~ "ਅਮਰੀਕਾ ਤੋਂ ਪਰਾਪਤ ਕਰਨ ਲਈ ਲਿਖੋ।\n"
+#~ "\n"
+#~ "ਗਨੋਮ ਸੰਗੀਤ ਲੇਖਕਾਂ ਨੇ ਗ਼ੈਰ-GPL ਅਨà©à¨•à©‚ਲ ਜੀਸਟਰੀਮਰ ਪਲੱਗਇਨ ਨੂੰ ਜੀਸਟਰੀਮਰ ਅਤੇ ਗਨੋਮ ਸੰਗੀਤ ਨਾਲ "
+#~ "ਵਰਤਣ ਅਤੇ ਵੰਡਣ ਲਈ ਮਨਜ਼ੂਰੀ ਦਿੱਤੀ ਹੈ। ਇਹ ਮਨਜ਼ੂਰੀ ਜੀਪੀà¨à¨² ਲਾਈਸੈਂਸ ਰਾਹੀਂ ਦਿੱਤੀ ਗਈ ਮਨਜੂਰੀ ਤੋਂ "
+#~ "ਉੱਤੇ ਅਤੇ ਵੱਧ ਹੈ, ਜਿਸ ਅਧੀਨ ਗਨੋਮ ਸੰਗੀਤ ਆਉਂਦਾ ਹੈ। ਜੇ ਤà©à¨¸à©€à¨‚ ਇਹ ਕੋਡ ਵਿੱਚ ਸੋਧ ਕਰਦੇ ਹੋ, ਤਾਂ ਤà©à¨¸à©€à¨‚ ਕੋਡ "
+#~ "ਦੇ ਆਪਣੇ ਵਰਜਨ ਲਈ ਇਹ ਛੋਟ ਨੂੰ ਵਧਾ ਸਕਦੇ ਹੋ, ਪਰ ਇਹ ਕਰਨ ਲਈ ਤà©à¨¹à¨¾à¨¡à©‡ ਉੱਤੇ ਕੋਈ ਪਾਬੰਦੀ ਨਹੀਂ ਹੈ। ਜੇ "
+#~ "ਤà©à¨¸à©€à¨‚ ਇੰਠਨਹੀਂ ਚਾਹà©à©°à¨¦à©‡ ਹੋ ਤਾਂ ਤà©à¨¸à©€à¨‚ ਆਪਣੇ ਵਰਜਨ ਤੋਂ ਇਹ ਛੋਟ ਬਿਆਨ ਨੂੰ ਹਟਾ ਸਕਦੇ ਹੋ।\n"
+#~ "\n"
+#~ "ਸਾਮੀ ਪਿਆਲੰਪੀ ਵਲੋਂ “Magic of the vinyl†ਚਿੱਤਰ ਦਾ ਲਸੰਸ CC-BY-SA 2.0 ਦੇ ਅਧੀਨ ਦਿੱਤਾ "
+#~ "ਹੈhttps://www.flickr.com/photos/_spy_/12270839403"
+
+#~ msgid "Released"
+#~ msgstr "ਰੀਲਿਜ਼"
+
+#~ msgid "Running Length"
+#~ msgstr "ਚੱਲਣ ਲੰਬਾਈ"
+
+#~ msgid "Composer"
+#~ msgstr "ਕੰਪੋਜ਼ਰ"
+
+#~| msgid "Loading..."
+#~ msgid "Loading"
+#~ msgstr "ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"
+
+#~| msgid "Play"
+#~ msgctxt "context menu item"
+#~ msgid "Play"
+#~ msgstr "ਚਲਾਓ"
+
+#~ msgid "Hey DJ"
+#~ msgstr "ਹੈਲੋ ਡੀਜੇ"
+
#~ msgid "Search mode"
#~ msgstr "ਖੋਜ ਢੰਗ"
@@ -760,11 +782,6 @@ msgstr[1] "{} ਗੀਤ"
#~ msgid "Quit"
#~ msgstr "ਬਾਹਰ"
-#~ msgid "translator-credits"
-#~ msgstr ""
-#~ "ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ (Amanpreet Singh)\n"
-#~ "ਪੰਜਾਬੀ ਓਪਨਸੋਰਸ ਟੀਮ (POST)"
-
#~ msgid "A GNOME 3 application to listen and manage music playlists"
#~ msgstr "ਸੰਗੀਤ ਪਲੇਅਲਿਸਟ ਸà©à¨£à¨¨ ਅਤੇ ਉਹਨਾਂ ਦੇ ਪਰਬੰਧ ਲਈ ਗਨੋਮ 3 à¨à¨ªà¨²à©€à¨•à©‡à¨¶à¨¨"
diff --git a/po/pl.po b/po/pl.po
index 7be962d6..5f37f9a4 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,16 +1,16 @@
# Polish translation for gnome-music.
-# Copyright © 2012-2021 the gnome-music authors.
+# Copyright © 2012-2023 the gnome-music authors.
# This file is distributed under the same license as the gnome-music package.
-# Piotr DrÄ…g <piotrdrag@gmail.com>, 2012-2021.
+# Piotr DrÄ…g <piotrdrag@gmail.com>, 2012-2023.
# Paweł Żołnowski <pawel@zolnowski.name>, 2014-2015.
-# Aviary.pl <community-poland@mozilla.org>, 2012-2021.
+# Aviary.pl <community-poland@mozilla.org>, 2012-2023.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-09-11 16:55+0200\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-08-06 17:33+0200\n"
"Last-Translator: Piotr DrÄ…g <piotrdrag@gmail.com>\n"
"Language-Team: Polish <community-poland@mozilla.org>\n"
"Language: pl\n"
@@ -21,8 +21,10 @@ msgstr ""
"|| n%100>=20) ? 1 : 2);\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "Odtwarzacz muzyki GNOME"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Muzyka"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -41,15 +43,10 @@ msgstr ""
"Znajduj utwory w swojej lokalnej kolekcji, korzystaj z automatycznie "
"tworzonych list odtwarzania lub utwórz własne."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "Programiści odtwarzacza muzyki GNOME"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Muzyka"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Odtwarzacz muzyki"
@@ -71,27 +68,19 @@ msgid "Window size (width and height)."
msgstr "Rozmiar okna (szerokość i wysokość)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Położenie okna"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Położenie okna (na osi X i Y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Maksymalizacja okna"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Stan maksymalizacji okna."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Tryb powtarzania odtwarzania"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -104,27 +93,27 @@ msgstr ""
"bez odtwarzania losowego), „shuffle†(odtwarzanie losowe i powtarzanie listy "
"odtwarzania)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "WÅ‚Ä…czenie ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Normalizacja poziomu głośności ReplayGain dla albumów"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Wstrzymanie uśpienia komputera"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr "Wstrzymuje uśpienie komputera podczas odtwarzania muzyki"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Zgłaszanie historii odtwarzanej muzyki w serwisie Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -132,81 +121,21 @@ msgstr ""
"Wysyła odsłuchane utwory i informacje o obecnie odtwarzanym do serwisu Last."
"fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 programiści odtwarzacza muzyki GNOME"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Odtwarzanie i zarządzanie muzyką dla środowiska GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Witryna odtwarzacza muzyki GNOME"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"Odtwarzacz muzyki GNOME jest wolnym oprogramowaniem; można go rozprowadzać "
-"dalej i/lub modyfikować na warunkach Powszechnej Licencji Publicznej GNU, "
-"wydanej przez Fundację Wolnego Oprogramowania (Free Software Foundation) — "
-"według wersji drugiej tej Licencji lub którejś z późniejszych wersji.\n"
-"\n"
-"Odtwarzacz muzyki GNOME rozpowszechniany jest z nadzieją, iż będzie on "
-"użyteczny — jednak BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyślnej gwarancji "
-"PRZYDATNOŚCI HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ. W celu "
-"uzyskania bliższych informacji należy zapoznać się z Powszechną Licencją "
-"PublicznÄ… GNU.\n"
-"\n"
-"Z pewnością wraz z odtwarzaczem muzyki GNOME dostarczono także egzemplarz "
-"Powszechnej Licencji Publicznej GNU (GNU General Public License); jeśli nie "
-"— proszę napisać do Free Software Foundation, Inc., 51 Franklin Street, "
-"Fifth Floor, Boston, MA 02110-1301, USA.\n"
-"\n"
-"Autorzy odtwarzacza muzyki GNOME udzielają pozwolenia na używanie "
-"i rozprowadzanie wtyczek biblioteki GStreamer niezgodnych z licencją GPL "
-"razem z biblioteką GStreamer i odtwarzaczem muzyki GNOME. To pozwolenie "
-"wychodzi poza uprawnienia udzielane przez licencję GPL, która obejmuje "
-"odtwarzacz muzyki GNOME. Jeśli ten kod jest modyfikowany, to można objąć go "
-"tym wyjątkiem, ale nie jest to wymagane. Jeśli nie ma zostać nim objęty, to "
-"należy usunąć ten fragment z tej wersji."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Odtwarza"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "O_dtwórz"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Dodaj do _ulubionych utworów"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_Dodaj do listy odtwarzania…"
@@ -214,133 +143,133 @@ msgstr "_Dodaj do listy odtwarzania…"
msgid "Last.fm Account"
msgstr "Konto Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Zgłaszanie odsłuchanych utworów"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Skróty klawiszowe"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "Pomo_c"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_O programie"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Witamy w odtwarzaczu muzyki"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Menu"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Zaznacza"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Anuluj"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Wyszukuje"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Wstecz"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Ogólne"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Zamknięcie okna"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Wyszukiwanie"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Pomoc"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Skróty"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Odtwarzanie"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Odtwarzanie/wstrzymanie"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Następny utwór"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Poprzedni utwór"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Przełączenie powtarzania"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Przełączenie losowania"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Nawigacja"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Przejście do albumów"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Przejście do wykonawców"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Przejście do utworów"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Przejście do list odtwarzania"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Wstecz"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -348,87 +277,79 @@ msgstr ""
"Last.fm to serwis do odkrywania muzyki zapewniajÄ…cy spersonalizowane "
"polecenia na podstawie odsłuchanych utworów."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Nie skonfigurowano zgłaszania muzyki"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "Zgłaszanie odsłuchanych utworów wymaga zalogowania na konto Last.fm."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Zaloguj siÄ™"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Wczytywanie"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Poprzedni"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Następny"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Usuń"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Zmień nazwę…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Nazwa listy odtwarzania"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Gotowe"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Nazwa pierwszej listy odtwarzania"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "_Utwórz"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Nowa lista odtwarzania…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Dodaj"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Dodanie do listy odtwarzania"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Dodaj"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "Cof_nij"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Wykonawcy"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Wyświetl wszystko"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Albumy"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Utwory"
@@ -440,44 +361,59 @@ msgstr "Zaznacz wszystko"
msgid "Select None"
msgstr "Odznacz wszystko"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Kliknięcie elementu zaznacza go"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Dodaj do listy odtwarzania"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Dodaj do listy odtwarzania…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Usuń z listy odtwarzania"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "Projekt GNOME"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr ""
+"Piotr DrÄ…g <piotrdrag@gmail.com>, 2012-2023\n"
+"Paweł Żołnowski <pawel@zolnowski.name>, 2014-2015\n"
+"Aviary.pl <community-poland@mozilla.org>, 2012-2023"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Copyright © programiści odtwarzacza muzyki GNOME"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Usuń z listy odtwarzania"
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "TÅ‚umaczenie"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Najczęściej odtwarzane"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Nigdy nieodtworzone"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Ostatnio odtwarzane"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Ostatnio dodane"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Ulubione utwory"
@@ -511,27 +447,39 @@ msgid "Playing music"
msgstr "Odtwarzanie muzyki"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Odtwarzanie losowe"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Wyłączenie losowania/powtarzania"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Powtarzanie utworu"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Powtarzanie wszystkich"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Wyłączenie losowania/powtarzania"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Odtwarzanie losowe"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "UsuniÄ™to listÄ™ odtwarzania „{}â€"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Cofnij"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "UsuniÄ™to utwór „{}†z listy „{}â€"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Nieznany album"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Nieznany wykonawca"
@@ -577,64 +525,60 @@ msgstr "Odtwarzacz muzyki wymaga wersji 3.0.0 lub wyższej."
msgid "Playlists"
msgstr "Listy odtwarzania"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Wyniki wyszukiwania wśród wykonawców"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Wyniki wyszukiwania wśród albumów"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minuta"
msgstr[1] "{} minuty"
msgstr[2] "{} minut"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "{}. płyta"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "Zaznaczono {} utwór"
msgstr[1] "Zaznaczono {} utwory"
msgstr[2] "Zaznaczono {} utworów"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Odsłuchane utwory są zgłaszane w serwisie Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Odsłuchane utwory nie są zgłaszane w serwisie Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Zalogowano jako {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Skonfiguruj"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "UsuniÄ™to listÄ™ odtwarzania „{}â€"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "UsuniÄ™to utwór „{}†z listy „{}â€"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Wstrzymuje"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} utwór"
msgstr[1] "{} utwory"
msgstr[2] "{} utworów"
+
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Wyszukiwanie utworów, wykonawców, albumów i list odtwarzania"
diff --git a/po/pt.po b/po/pt.po
index 6a48a7cd..b134cd1e 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -5,14 +5,14 @@
# Tiago Santos <tiagofsantos81@sapo.pt>, 2014 - 2017.
# Pedro Albuquerque <palbuquerque73@openmailbox.com>, 2015.
# Juliano de Souza Camargo <julianosc@protonmail.com>, 2020.
-# Hugo Carvalho <hugokarvalho@hotmail.com>, 2021.
+# Hugo Carvalho <hugokarvalho@hotmail.com>, 2021, 2022, 2023.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-08-28 12:55+0100\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-08-03 12:11+0100\n"
"Last-Translator: Hugo Carvalho <hugokarvalho@hotmail.com>\n"
"Language-Team: Portuguese <>\n"
"Language: pt\n"
@@ -20,10 +20,12 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 3.0\n"
+"X-Generator: Poedit 3.3.2\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
msgstr "Música"
#: data/org.gnome.Music.appdata.xml.in.in:7
@@ -43,14 +45,9 @@ msgstr ""
"Encontre faixas na sua coleção local, use listas de reprodução geradas "
"automaticamente ou categorize uma nova."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
-msgstr "Programadores do Música"
-
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Música"
+msgstr "Os Programadores do Música GNOME"
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
@@ -70,27 +67,19 @@ msgid "Window size (width and height)."
msgstr "Tamanho da janela (largura e altura)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Posição da janela"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Posição da janela (x e y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Janela maximizada"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Estado maximizado da janela."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Modo de repetição de reprodução"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -102,27 +91,27 @@ msgstr ""
"desligados), “song†(repete a música atual), “all†(repete a lista sem "
"misturar), “shuffle†(misturar a lista e assumir repetir todas)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Ativar ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Ativa ou desativa ReplyGain para álbuns"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Inibir suspensão do sistema"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr "Ativa ou desativa a suspensão do sistema quando a tocar música"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Relatar histórico de músicas ao Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -130,78 +119,21 @@ msgstr ""
"Ativa ou desativa envio de \"scrobbles\" e informações de “a tocar†ao Last."
"fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 Programadores do Música"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Uma aplicação para reprodução e gestão de música para o GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Visite a página web do Música"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"O GNOME Música é uma aplicação livre; pode redistribuí-la e/ou alterá-la sob "
-"os termos da Licença Pública Genérica GNU tal como publicada pela Free "
-"Software Foundation; ou a versão 2 da Licença, ou (à sua discrição) qualquer "
-"versão posterior.\n"
-"\n"
-"O GNOME Música é distribuído na esperança de ser útil, mas SEM QUALQUER "
-"GARANTIA; nem mesmo a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A "
-"QUALQUER PROPÓSITO. Veja a Licença Pública Genérica GNU para mais detalhes.\n"
-"\n"
-"Deverá ter recebido uma cópia da Licença Pública Genérica GNU juntamente com "
-"o GNOME Música; se não, escreva (em Inglês) para a Free Software Foundation, "
-"Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"Os autores do GNOME Música concedem aqui permissão para que extensões "
-"compatíveis com o GStreamer não GPL sejam usadas e distribuídas com o "
-"GStreamer e o GNOME Música. Esta permissão está acima das permissões "
-"concedidas pela licença GPL pela qual o GNOME Música é coberto. Se modificar "
-"este código, pode estender a exceção à sua versão do código, mas não é "
-"obrigado a fazê-lo. Se não o quiser fazer, apague esta declaração de exceção "
-"da sua versão."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Reproduzir"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "Re_Produzir"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Adicionar às músicas _favoritas"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_Adicionar à lista de reprodução…"
@@ -209,133 +141,133 @@ msgstr "_Adicionar à lista de reprodução…"
msgid "Last.fm Account"
msgstr "Conta Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Relatar músicas tocadas"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Atalhos de teclado"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "A_Juda"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_Sobre Música"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Bem-vindo ao Música"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Menu"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Selecionar"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Cancelar"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Procurar"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Recuar"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Geral"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Fechar janela"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Procurar"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Ajuda"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Atalhos"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Reproduzir"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Reproduzir/Pausa"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Música seguinte"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Música anterior"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Alternar repetir"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
-msgstr "Alternar misturar"
+msgstr "Alternar baralhar"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navegação"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Ir para Ãlbuns"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Ir para Artistas"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Ir para Canções"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Adicionar à lista de reprodução"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Voltar atrás"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -343,87 +275,79 @@ msgstr ""
"O Last.fm é um serviço de localização de músicas que dá-lhe recomendações "
"personalizadas baseadas nas músicas que ouve."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Relatar músicas não configurado"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "Inicie sessão na sua conta Last.fm para relatar as músicas que ouve."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Início de sessão"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "A carregar"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Anterior"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Seguinte"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Eliminar"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Renomear…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Nome da lista de reprodução"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Terminado"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Introduza um nome para a sua primeira playlist"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "C_riar"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Nova lista de reprodução…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Adicionar"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Adicionar à lista de reprodução"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Adicionar"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Desfazer"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Artistas"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Ver tudo"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Ãlbuns"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Músicas"
@@ -435,44 +359,56 @@ msgstr "Selecionar todas"
msgid "Select None"
msgstr "Não selecionar nenhuma"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Clique nos itens para os selecionar"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Adicionar à lista de reprodução"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Adicionar à lista de reprodução…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Remover da lista de reprodução"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "O Projeto GNOME"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr "Hugo Carvalho <hugokarvalho@hotmail.com>"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Remover da lista de reprodução"
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Direitos de autor Os Programadores do Música GNOME"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Traduzido por"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Mais ouvidos"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Nunca ouvidos"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Ouvidos recentemente"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Adicionados recentemente"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Músicas favoritas"
@@ -506,27 +442,39 @@ msgid "Playing music"
msgstr "A tocar música"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Misturar"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Desligar Misturar/Repetir"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Repetir música"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Repetir todas"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Desligar Misturar/Repetir"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Misturar"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Lista {} removida"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Anular"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} removida de {}"
-#: gnomemusic/utils.py:80
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Ãlbum desconhecido"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Artista desconhecido"
@@ -554,7 +502,7 @@ msgstr "Tente uma pesquisa diferente"
#: gnomemusic/views/emptyview.py:129
msgid "GNOME Music could not connect to Tracker."
-msgstr "O Música não pôde ligar ao rastreador."
+msgstr "Não foi possível ao Música GNOME estabelecer ligação com o rastreador."
#: gnomemusic/views/emptyview.py:131
msgid "Your music files cannot be indexed without Tracker running."
@@ -574,65 +522,131 @@ msgstr "O Música precisa de um rastreador com a versão 3.0.0 ou superior."
msgid "Playlists"
msgstr "Listas de reprodução"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Artistas encontrados"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Ãlbuns encontrados"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minuto"
msgstr[1] "{} minutos"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Disco {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "Música {} selecionada"
msgstr[1] "Musicas {} selecionadas"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "As músicas que ouve são relatadas ao Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "As músicas que ouve não são relatadas ao Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Sessão iniciada como {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Configurar"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Lista {} removida"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} removida de {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Pausa"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} música"
msgstr[1] "{} músicas"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Pesquisar músicas, artistas, álbuns e listas de reprodução"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "Uma aplicação para reprodução e gestão de música para o GNOME."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Visite a página web do Música"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "O GNOME Música é uma aplicação livre; pode redistribuí-la e/ou alterá-la "
+#~ "sob os termos da Licença Pública Genérica GNU tal como publicada pela "
+#~ "Free Software Foundation; ou a versão 2 da Licença, ou (à sua discrição) "
+#~ "qualquer versão posterior.\n"
+#~ "\n"
+#~ "O GNOME Música é distribuído na esperança de ser útil, mas SEM QUALQUER "
+#~ "GARANTIA; nem mesmo a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO "
+#~ "A QUALQUER PROPÓSITO. Veja a Licença Pública Genérica GNU para mais "
+#~ "detalhes.\n"
+#~ "\n"
+#~ "Deverá ter recebido uma cópia da Licença Pública Genérica GNU juntamente "
+#~ "com o GNOME Música; se não, escreva (em Inglês) para a Free Software "
+#~ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 "
+#~ "USA.\n"
+#~ "\n"
+#~ "Os autores do GNOME Música concedem aqui permissão para que extensões "
+#~ "compatíveis com o GStreamer não GPL sejam usadas e distribuídas com o "
+#~ "GStreamer e o GNOME Música. Esta permissão está acima das permissões "
+#~ "concedidas pela licença GPL pela qual o GNOME Música é coberto. Se "
+#~ "modificar este código, pode estender a exceção à sua versão do código, "
+#~ "mas não é obrigado a fazê-lo. Se não o quiser fazer, apague esta "
+#~ "declaração de exceção da sua versão."
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "O conteúdo da pasta Música aparecerá aqui"
+
+#~ msgid "GNOME Music"
+#~ msgstr "Música"
+
+#~ msgid "Window position"
+#~ msgstr "Posição da janela"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Posição da janela (x e y)."
+
+#~ msgid "Loading"
+#~ msgstr "A carregar"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Adicionar à lista de reprodução…"
+
#~ msgid "Inital state has been displayed"
#~ msgstr "O estado inicial foi mostrado"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index ac40f55b..754d4c30 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -1,5 +1,5 @@
# Brazilian Portuguese translation for gnome-music.
-# Copyright (C) 2021 gnome-music's COPYRIGHT HOLDER
+# Copyright (C) 2022 gnome-music's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-music package.
# Georges Basile Stavracas Neto <georges.stavracas@gmail.com>, 2013.
# Antonio Fernandes C. Neto <fernandesn@gnome.org>, 2013.
@@ -9,27 +9,36 @@
# Fábio Nogueira <fnogueira@gnome.org> 2018.
# Henrique Machado Campos <henriquecamposrj@gmail.com>, 2020.
# Rafael Fontenelle <rafaelff@gnome.org>, 2012-2021.
-# Enrico Nicoletto <liverig@gmail.com>, 2013-2016, 2021.
+# Enrico Nicoletto <hiko@duck.com>, 2013-2016, 2021-2022.
+# Matheus Barbosa <mdpb.matheus@gmail.com>, 2022.
+# Leônidas Araújo <leorusvellt@hotmail.com>, 2022.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-08-27 21:20-0300\n"
-"Last-Translator: Enrico Nicoletto <liverig@gmail.com>\n"
+"POT-Creation-Date: 2022-08-31 10:45+0000\n"
+"PO-Revision-Date: 2022-08-31 08:46-0300\n"
+"Last-Translator: Leônidas Araújo <leorusvellt@hotmail.com>\n"
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Poedit 3.0\n"
+"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+"X-Generator: Gtranslator 40.0\n"
"X-Project-Style: gnome\n"
+"X-DL-Team: pt_BR\n"
+"X-DL-Module: gnome-music\n"
+"X-DL-Branch: master\n"
+"X-DL-Domain: po\n"
+"X-DL-State: Translating\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME Música"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:236
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Música"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -48,15 +57,10 @@ msgstr ""
"Localize faixas na sua coleção local, use listas de reprodução geradas "
"automaticamente ou faça a curadoria de uma nova."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:167
msgid "The GNOME Music developers"
msgstr "Os Desenvolvedores do GNOME Música"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Música"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Reprodutor de músicas"
@@ -75,27 +79,19 @@ msgid "Window size (width and height)."
msgstr "Tamanho da janela (largura e altura)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Posição da janela"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Posição da janela (x e y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Janela maximizada"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Estado de janela maximizada."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Modo de repetição de reprodução"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -107,29 +103,29 @@ msgstr ""
"música atual), “all†(repete a lista de reprodução, sem embaralhar), "
"“shuffle†(embaralha lista de reprodução, supõe repetição de tudo)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Habilitar ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Habilita ou desabilita ReplayGain por álbuns"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Inibir suspensão do sistema"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Habilita ou desabilita inibição de suspensão do sistema enquanto reproduz "
"música"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Relatar histórico de músicas para o Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -137,80 +133,21 @@ msgstr ""
"Habilita ou desabilita enviar scrobbles e a informação “currently playing†"
"para o Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 Desenvolvedores do GNOME Música"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Um reprodutor de músicas e aplicativo de gerenciamento para o GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Visite o web site do aplicativo GNOME Música"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"O GNOME Música é um software livre; você pode redistribuí-lo e/ou modificá-"
-"lo sob os termos da Licença Pública Geral GNU publicada pela Free Software "
-"Foundation; qualquer versão 2 da Licença, ou (a seu critério) outra versão "
-"posterior.\n"
-"\n"
-"O GNOME Música é distribuído na expectativa de que seja útil, mas SEM "
-"NENHUMA GARANTIA; sem mesmo implicar garantias de COMERCIALIZAÇÃO ou "
-"ADEQUAÇÃO A UM FIM ESPECÃFICO. Veja a Licença Pública Geral GNU (GPL) para "
-"mais detalhes.\n"
-"\n"
-"Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com o "
-"aplicativo GNOME Música; caso contrário, escreva para a Free Software "
-"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
-"EUA.\n"
-"\n"
-"Os autores do GNOME Música concedem por este meio permissão para uso de plug-"
-"ins compatíveis com GStreamer não consoantes com a GPL e distribuição junto "
-"com o GStreamer e aplicativo GNOME Música. Esta permissão está acima e além "
-"das permissões concedidas pela licença GPL a qual cobre o aplicativo GNOME "
-"Música. Se você modificar esse código, você pode estender essa exceção para "
-"a sua versão do código, mas você não é obrigado a fazê-lo. Se você não "
-"desejar fazer isto, exclua esta declaração de exceção da sua versão."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Reproduzir"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Reproduzir"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Adicionar para músicas _favoritas"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_Adicionar para lista de reprodução…"
@@ -218,23 +155,23 @@ msgstr "_Adicionar para lista de reprodução…"
msgid "Last.fm Account"
msgstr "Conta do Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Relatar música sendo ouvida"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "A_talhos de teclado"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "A_juda"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_Sobre o Música"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Boas vindas ao Música"
@@ -242,109 +179,109 @@ msgstr "Boas vindas ao Música"
msgid "Menu"
msgstr "Menu"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:24 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Selecionar"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:30 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Cancelar"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:42 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Pesquisar"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:50
msgid "Back"
msgstr "Voltar"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Geral"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Fecha a janela"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Pesquisa"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Ajuda"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Atalhos"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Reprodução"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Reproduz/pausa"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Próxima música"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Música anterior"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Alterna a repetição"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Alterna o embaralhamento"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navegação"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Vai para álbuns"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Vai para artistas"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Vai para músicas"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Vai para listas de reprodução"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Volta"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -352,87 +289,79 @@ msgstr ""
"Last.fm é um serviço de descoberta de músicas que fornece recomendações "
"personalizadas com base nas músicas que você ouve."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Relatório de música não configurado"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "Faça login sua conta do Last.fm para relatar suas músicas."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Entrar"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Carregando"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Anterior"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Próxima"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "E_xcluir"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Renomear…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Nome da lista de reprodução"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Finalizado"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Digite um nome para sua primeira lista de reprodução"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "C_riar"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Nova lista de reprodução…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Adicionar"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Adicionar para lista de reprodução"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Adicionar"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Desfazer"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Artistas"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Ver tudo"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Ãlbuns"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Músicas"
@@ -444,44 +373,56 @@ msgstr "Selecionar todos"
msgid "Select None"
msgstr "Selecionar nenhum"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Clique nos itens para selecioná-los"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Adicionar para lista de reprodução"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Adicionar para lista de reprodução…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Remover da lista de reprodução"
+
+#: gnomemusic/about.py:238
+msgid "The GNOME Project"
+msgstr "O Projeto GNOME"
+
+#: gnomemusic/about.py:242
+msgid "translator-credits"
+msgstr "créditos-do-tradutor"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Remover da lista de reprodução"
+#: gnomemusic/about.py:246
+msgid "Copyright The GNOME Music Developers"
+msgstr "Direitos autorais dos desenvolvedores do GNOME Música"
+
+#: gnomemusic/about.py:249
+msgid "Translated by"
+msgstr "Traduzido por"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Mais tocadas"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Nunca tocadas"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Recentemente tocadas"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Recentemente adicionadas"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Músicas favoritas"
@@ -515,27 +456,39 @@ msgid "Playing music"
msgstr "Reproduzindo música"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
+#: gnomemusic/player.py:44
msgid "Shuffle"
msgstr "Embaralhar"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Repetir música"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Repetir tudo"
-#: gnomemusic/player.py:48
+#: gnomemusic/player.py:47
msgid "Shuffle/Repeat Off"
msgstr "Desligar embaralhar/repetir"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Lista de reprodução {} removida"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Desfazer"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} removida de {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Ãlbum desconhecido"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Artista desconhecido"
@@ -582,62 +535,52 @@ msgstr "O Música precisa do Tracker na versão 3.0.0 ou mais novo."
msgid "Playlists"
msgstr "Listas de reprodução"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Resultados de artistas"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Resultados de álbuns"
-#: gnomemusic/widgets/albumwidget.py:237
-#| msgid "{}, {} minute"
-#| msgid_plural "{}, {} minutes"
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minuto"
msgstr[1] "{} minutos"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Disco {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "{} música selecionada"
msgstr[1] "{} músicas selecionadas"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "A música sendo ouvida é relatada à Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "A música sendo ouvida não é relatada à Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Autenticado como {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Configurar"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Lista de reprodução {} removida"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} removida de {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Pausar"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} música"
diff --git a/po/ro.po b/po/ro.po
index d182d665..fc225b1d 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -7,9 +7,10 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-09-02 18:46+0200\n"
-"Last-Translator: Florentina Mușat <florentina.musat.28@gmail.com>\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-07-29 14:15+0300\n"
+"Last-Translator: Florentina Mușat <florentina [dot] musat [dot] 28 [at] "
+"gmail [dot] com>\n"
"Language-Team: Gnome Romanian Translation Team <gnomero-list@lists."
"sourceforge.net>\n"
"Language: ro\n"
@@ -18,13 +19,15 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
"20)) ? 1 : 2);\n"
-"X-Generator: Poedit 3.0\n"
+"X-Generator: Poedit 3.3.2\n"
"X-Project-Style: gnome\n"
"X-Poedit-SourceCharset: UTF-8\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "Muzică GNOME"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Muzică"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -43,15 +46,10 @@ msgstr ""
"Găsiți piese în colecția locală, utilizați liste de redare generate automat "
"sau creeați una manual."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "Dezvoltatorii Muzică GNOME"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Muzică"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Player pentru muzică"
@@ -70,27 +68,19 @@ msgid "Window size (width and height)."
msgstr "Dimensiune fereastră (lățime și înălțime)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Poziție fereastră"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Poziție fereastră (x și y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Fereastră maximizată"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Starea ferestrei maximizată."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Mod de repetare a redării"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -103,29 +93,29 @@ msgstr ""
"repetă toată lista de redare, fără amestecare), „amestecare†(amestecă lista "
"de redare, implică repetarea întregii liste)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Activează ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Activează sau dezactivează ReplayGain pentru albume"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Inhibă suspendarea sistemului"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Activează sau dezactivează inhibarea suspendării sistemului în timpul "
"redării de muzică"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Raportează istoricul muzicii la Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -133,79 +123,21 @@ msgstr ""
"Activează sau dezactivează trimiterea de scrobbles și de informații de la "
"„se redă acum†către Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Drepturi de autor © 2018 dezvoltatorii Music GNOME"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "O aplicație de administrare și redare de muzică pentru GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Vizitați situl web al GNOME Music"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"Muzică GNOME este un software liber; îl puteți redistribui și/sau modifica "
-"în conformitate cu termenii Licenței Publice Generale GNU așa cum este "
-"publicată de Free Software Foundation; fie versiunea 2 a Licenței, fie (la "
-"latitudinea dumneavoastră) orice versiune ulterioară.\n"
-"\n"
-"Muzică GNOME este distribuit cu speranța că va fi util, dar FĂRĂ NICIO "
-"GARANȚIE, fără nici măcar a garanției implicite de VANDABILITATE sau "
-"CONFORMITATE UNUI ANUMIT SCOP. Citiți Licența Publică Generală GNU pentru "
-"mai multe detalii.\n"
-"\n"
-"Ar trebui să fi primit o copie a Licenței Publice Generale GNU împreună cu "
-"Muzică GNOME; dacă nu, scrieți la Free Software Foundation, Inc., 51 "
-"Franklin St., Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"Autorii Muzică GNOME vă oferă permisiunea de a folosi module non-GPL "
-"compatibile cu GStreamer și de a le distribui împreună cu GStreamer și "
-"Muzică GNOME. Această permisiune depășește termenii licenței GPL sub care "
-"Muzică GNOME este pus la dispoziția publicului. Dacă modificați acest cod, "
-"aveți posibilitatea să adăugați această excepție la versiunea dumneavoastră "
-"de cod, dar nu sunteți obligat să o faceți. Dacă nu doriți acest lucru, "
-"ștergeți această declarație din versiunea dumneavoastră."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Redă"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Redare"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Adaugă la Melodii _favorite"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_Adaugă în lista de redare…"
@@ -213,133 +145,133 @@ msgstr "_Adaugă în lista de redare…"
msgid "Last.fm Account"
msgstr "Cont Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Raportează ascultarea de muzică"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "S_curtături de tastatură"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Ajutor"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_Despre Muzică"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Bine ați venit la Muzică"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Meniu"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Selectează"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Anulează"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Caută"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "ÃŽnapoi"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Generale"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "ÃŽnchide fereastra"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Caută"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Ajutor"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Scurtături"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Redare"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Redare/Pauză"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Melodia următoare"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Melodia precedentă"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Comută repetarea"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Comută amestecarea"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navigare"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Navighează la albume"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Navighează la artiști"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Navighează la melodii"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Navighează la listele de redare"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "ÃŽnapoi"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -347,88 +279,80 @@ msgstr ""
"Last.fm este un serviciu de descoperire de muzică ce vă oferă recomandări "
"personalizate pe baza muzicii pe care o ascultați."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Raportarea de muzică nu este stabilită"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"Autentificați-vă la contul Last.fm pentru a raporta ascultarea de muzică."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Autentificare"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Se încarcă"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Precedenta"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Următoarea"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "Ș_terge"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Redenumește…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Numele listei de redare"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Gata"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Introduceți un nume pentru prima listă de redare"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "C_reează"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Listă de redare nouă…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Adaugă"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Adaugă în lista de redare"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Adaugă"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "An_ulează"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Artiști"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Vizualizează toate"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Albume"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Melodii"
@@ -440,44 +364,58 @@ msgstr "Selectează toate"
msgid "Select None"
msgstr "Deselectează toate"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Clic pe obiecte pentru a le selecta"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Adaugă în lista de redare"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "_Adaugă în lista de redare…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Elimină din lista de redare"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "Proiectul GNOME"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr ""
+"Florentina Mușat <florentina [dot] musat [dot] 28 [at] gmail [dot] com>, "
+"2020-2023"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Elimină din lista de redare"
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Drepturi de autor dezvoltatorii Music GNOME"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Tradus de"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Cele mai redate"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Niciodată redate"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Redate recent"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Adăugate recent"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Melodii favorite"
@@ -511,27 +449,39 @@ msgid "Playing music"
msgstr "Se redă muzica"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Amestecă"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Amestecare/Repetare oprită"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Repetă piesa"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Repetă toate"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Amestecare/Repetare oprită"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Amestecă"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Listă de redare {} eliminată"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Anulează"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} eliminat de la {}"
-#: gnomemusic/utils.py:80
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Album necunoscut"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Artist necunoscut"
@@ -577,68 +527,130 @@ msgstr "Muzică are nevoie de Tracker versiunea 3.0.0 sau mai nouă."
msgid "Playlists"
msgstr "Liste de redare"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Rezultate artiști"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Rezultate albume"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minut"
msgstr[1] "{} minute"
msgstr[2] "{} de minute"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Disc {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "A fost selectat {} cântec"
msgstr[1] "A fost selectat {} cântece"
msgstr[2] "A fost selectat {} de cântece"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Ascultarea de muzică este raportată la Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Ascultarea de muzică nu este raportată la Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Autentificat ca {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Configurează"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Listă de redare {} eliminată"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} eliminat de la {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Pauză"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} melodie"
msgstr[1] "{} melodii"
msgstr[2] "{} de melodii"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Caută melodii, artiști, albume și liste de redare"
+
+#~ msgid "GNOME Music"
+#~ msgstr "Muzică GNOME"
+
+#~ msgid "Window position"
+#~ msgstr "Poziție fereastră"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Poziție fereastră (x și y)."
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "O aplicație de administrare și redare de muzică pentru GNOME."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Vizitați situl web al GNOME Music"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "Muzică GNOME este un software liber; îl puteți redistribui și/sau "
+#~ "modifica în conformitate cu termenii Licenței Publice Generale GNU așa "
+#~ "cum este publicată de Free Software Foundation; fie versiunea 2 a "
+#~ "Licenței, fie (la latitudinea dumneavoastră) orice versiune ulterioară.\n"
+#~ "\n"
+#~ "Muzică GNOME este distribuit cu speranța că va fi util, dar FĂRĂ NICIO "
+#~ "GARANȚIE, fără nici măcar a garanției implicite de VANDABILITATE sau "
+#~ "CONFORMITATE UNUI ANUMIT SCOP. Citiți Licența Publică Generală GNU "
+#~ "pentru mai multe detalii.\n"
+#~ "\n"
+#~ "Ar trebui să fi primit o copie a Licenței Publice Generale GNU împreună "
+#~ "cu Muzică GNOME; dacă nu, scrieți la Free Software Foundation, Inc., 51 "
+#~ "Franklin St., Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "Autorii Muzică GNOME vă oferă permisiunea de a folosi module non-GPL "
+#~ "compatibile cu GStreamer și de a le distribui împreună cu GStreamer și "
+#~ "Muzică GNOME. Această permisiune depășește termenii licenței GPL sub "
+#~ "care Muzică GNOME este pus la dispoziția publicului. Dacă modificați "
+#~ "acest cod, aveți posibilitatea să adăugați această excepție la versiunea "
+#~ "dumneavoastră de cod, dar nu sunteți obligat să o faceți. Dacă nu doriți "
+#~ "acest lucru, ștergeți această declarație din versiunea dumneavoastră."
+
+#~ msgid "Loading"
+#~ msgstr "Se încarcă"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "_Adaugă în lista de redare…"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
diff --git a/po/ru.po b/po/ru.po
index d283c70b..b876dd1a 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -12,21 +12,23 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-06 09:35+0000\n"
-"PO-Revision-Date: 2021-08-06 13:37+0300\n"
-"Last-Translator: Alexey Rubtsov <rushills@gmail.com>\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-07-28 12:00+0300\n"
+"Last-Translator: Aleksandr Melman <Alexmelman88@gmail.com>\n"
"Language-Team: РуÑÑкий <gnome-cyr@gnome.org>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Poedit 2.4.3\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Poedit 3.1\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "Музыка GNOME"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Музыка"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -34,29 +36,20 @@ msgid "Play and organize your music collection"
msgstr "ВоÑпроизведение и управление музыкальной коллекцией"
#: data/org.gnome.Music.appdata.xml.in.in:9
-msgid ""
-"An easy way to play your music. Automatically discover music on your "
-"computer, the local network and internet services."
-msgstr ""
-"Удобный ÑпоÑоб воÑпроизводить Ñвою музыку. ÐвтоматичеÑкое обнаружение музыки "
-"на вашем компьютере, в локальной Ñети и интернет-ÑервиÑах."
+msgid "An easy and pleasant way to play your music."
+msgstr "Лёгкий и приÑтный ÑпоÑоб поÑлушать вашу музыку."
#: data/org.gnome.Music.appdata.xml.in.in:12
msgid ""
-"Find tracks in your local collection, get music from DLNA servers or try "
-"something new with the Jamendo and Magnatune services."
+"Find tracks in your local collection, use automatically generated playlists "
+"or curate a fresh one."
msgstr ""
-"Ðаходите треки в Ñвоей локальной коллекции, получайте музыку Ñ Ñерверов DLNA "
-"или попробуйте что-то новое Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÑервиÑов Jamendo и Magnatune."
+"Ищите треки в вашей коллекции, пользуйтеÑÑŒ автоматичеÑкими ÑпиÑками "
+"воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ Ñоберите Ñвой Ñвежий."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
-msgstr "ÐвторÑкое право © 2018 Разработчики Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÐœÑƒÐ·Ñ‹ÐºÐ° GNOME"
-
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Музыка"
+msgstr "Разработчики Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÐœÑƒÐ·Ñ‹ÐºÐ° GNOME"
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
@@ -76,28 +69,19 @@ msgid "Window size (width and height)."
msgstr "Размер окна (ширина и выÑота)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Положение окна"
-
-# точка Ñ Ð·Ð°Ð¿Ñтой вмеÑто "и" Ñпециально, Ñ‚.к. получаетÑÑ Ñ‡Ñ‚Ð¾ ли "Ñлово из трех букв" - (x и y)
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Положение окна (x, y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Развёрнутое окно"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Режим развёрнутого окна."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Режим повторного воÑпроизведениÑ"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -110,37 +94,29 @@ msgstr ""
"воÑпроизведениÑ, Ñлучайный порÑдок отключён), «shuffle» (Ñлучайный порÑдок "
"включён)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Включить ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Включает или выключает функцию ReplayGain Ð´Ð»Ñ Ð°Ð»ÑŒÐ±Ð¾Ð¼Ð¾Ð²"
-#: data/org.gnome.Music.gschema.xml:38
-msgid "Inital state has been displayed"
-msgstr "Было отображено иÑходное ÑоÑтоÑние"
-
-#: data/org.gnome.Music.gschema.xml:39
-msgid "Set to true when initial state has been displayed"
-msgstr "УÑтановлено значение «true», когда было отображено иÑходное ÑоÑтоÑние"
-
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Запретить переход ÑиÑтемы в режим ожиданиÑ"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Включает или выключает запрет перехода ÑиÑтемы в режим Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸ "
"воÑпроизведении музыки"
-#: data/org.gnome.Music.gschema.xml:48
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "ОтправлÑÑ‚ÑŒ иÑторию проÑÐ»ÑƒÑˆÐ¸Ð²Ð°Ð½Ð¸Ñ Ð½Ð° Last.fm"
-#: data/org.gnome.Music.gschema.xml:49
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -148,86 +124,21 @@ msgstr ""
"Включает или отключает отправку Ñкробблов и информации о «текущем "
"воÑпроизведении» на Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "ÐвторÑкое право © 2018 Разработчики Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÐœÑƒÐ·Ñ‹ÐºÐ° GNOME"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "ВоÑпроизведение и управление музыкальной коллекцией в GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "ПоÑетить веб-Ñайт приложениÑ"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version.\n"
-"\n"
-"“Magic of the vinyl†by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
-"https://www.flickr.com/photos/_spy_/12270839403"
-msgstr ""
-"Приложение «Музыка GNOME» ÑвлÑетÑÑ Ñвободным программным обеÑпечением, вы "
-"можете раÑпроÑтранÑÑ‚ÑŒ и/или изменÑÑ‚ÑŒ его в ÑоответÑтвии Ñ ÑƒÑловиÑми GNU "
-"General Public License, опубликованной Free Software Foundation, либо GNU "
-"General Public License v2, либо (на ваш выбор) любой более поздней верÑии.\n"
-"\n"
-"Приложение «Музыка GNOME» раÑпроÑтранÑетÑÑ Ð² надежде, что оно будет "
-"полезным, но БЕЗ КÐКИХ-ЛИБО ГÐРÐÐТИЙ, даже без подразумеваемых гарантий "
-"КОММЕРЧЕСКОЙ ЦЕÐÐОСТИ или ПРИГОДÐОСТИ ДЛЯ КОÐКРЕТÐЫХ ЦЕЛЕЙ. См. GNU General "
-"Public License Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ подробной информации.\n"
-"\n"
-"Ð’Ñ‹ должны были получить копию GNU General Public License вмеÑте Ñ "
-"приложением «Музыка GNOME»; а еÑли нет, напишите в Free Software Foundation, "
-"Inc, 51 Franklin Street, пÑтый Ñтаж, Boston, MA 02110-1301 СШÐ.\n"
-"\n"
-"Ðвторы Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Â«ÐœÑƒÐ·Ñ‹ÐºÐ° GNOME» предоÑтавлÑÑŽÑ‚ разрешение на иÑпользование "
-"не-GPL ÑовмеÑтимых модулей GStreamer, которые будут поÑтавлены Ñ GStreamer и "
-"«Музыка GNOME». Это разрешение выше и вне разрешений, предоÑтавленных "
-"лицензией GPL, которой защищено приложение «Музыка GNOME». При изменении "
-"Ñтого кода, вы можете раÑпроÑтранить данное иÑключение на вашу верÑию кода, "
-"но вы не обÑзаны Ñто делать. ЕÑли вы не хотите раÑпроÑтранить данное "
-"иÑключение на вашу верÑию кода, проÑто удалите данное заÑвление об "
-"иÑключении из вашей верÑии кода.\n"
-"\n"
-"Изображение «Magic of the vinyl» Sami Pyylampi лицензировано под CC-BY-SA "
-"2.0 https://www.flickr.com/photos/_spy_/12270839403"
-
-#: data/ui/AlbumWidget.ui:114 data/ui/PlayerToolbar.ui:128
-#: data/ui/PlaylistControls.ui:123 data/ui/SongWidgetMenu.ui:18
-#: gnomemusic/widgets/playertoolbar.py:175
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "ВоÑпроизвеÑти"
-#: data/ui/AlbumWidget.ui:175 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_ВоÑпроизвеÑти"
-#: data/ui/AlbumWidget.ui:179
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Добавить в _избранные пеÑни"
-#: data/ui/AlbumWidget.ui:183
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_Добавить в ÑпиÑок воÑпроизведениÑ…"
@@ -235,129 +146,133 @@ msgstr "_Добавить в ÑпиÑок воÑпроизведениÑ…"
msgid "Last.fm Account"
msgstr "Ðккаунт Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "ОтправлÑÑ‚ÑŒ иÑторию проÑлушиваниÑ"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Комбинации клавиш"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Справка"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_О приложении"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/EmptyView.ui:30
+msgid "Welcome to Music"
+msgstr "Добро пожаловать в Музыку"
+
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Меню"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Выбрать"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Отмена"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "ПоиÑк"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Ðазад"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "ОÑновное"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Закрыть окно"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "ПоиÑк"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Справка"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Комбинации"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "ВоÑпроизведение"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "ПриоÑтановить/Продолжить"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
-msgstr "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ"
+msgstr "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð¿ÐµÑнÑ"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
-msgstr "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ"
+msgstr "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð¿ÐµÑнÑ"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Переключение режима повтора"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Переключение режима Ñлучайного порÑдка"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "ÐавигациÑ"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Перейти к разделу Ðльбомы"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Перейти к разделу ИÑполнители"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
-msgstr "Перейти к разделу Композиции"
+msgstr "Перейти к разделу ПеÑни"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Перейти к разделу СпиÑки воÑпроизведениÑ"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Перейти назад"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -365,93 +280,85 @@ msgstr ""
"Last.fm — Ñто ÑÐµÑ€Ð²Ð¸Ñ Ð¿Ð¾Ð¸Ñка музыки, который дает вам перÑональные "
"рекомендации на оÑнове музыки, которую вы Ñлушаете."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Отправка музыки не наÑтроена"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"Войдите в Ñвою учетную запиÑÑŒ Last.fm, чтобы отправлÑÑ‚ÑŒ иÑторию "
"проÑÐ»ÑƒÑˆÐ¸Ð²Ð°Ð½Ð¸Ñ Ð¼ÑƒÐ·Ñ‹ÐºÐ¸."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Войти"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Загрузка"
-
# ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ
-#: data/ui/PlayerToolbar.ui:111
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "ПредыдущаÑ"
# Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ
-#: data/ui/PlayerToolbar.ui:145
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "СледующаÑ"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Удалить"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Переименовать…"
-#: data/ui/PlaylistControls.ui:49
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Ð˜Ð¼Ñ ÑпиÑка воÑпроизведениÑ"
-#: data/ui/PlaylistControls.ui:81
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Готово"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Введите Ð¸Ð¼Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ первого ÑпиÑка воÑпроизведениÑ"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "_Создать"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Создать ÑпиÑок воÑпроизведениÑ…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Добавить"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Добавить в ÑпиÑок воÑпроизведениÑ"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Добавить"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Отменить"
-
-#: data/ui/SearchView.ui:43 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "ИÑполнители"
-#: data/ui/SearchView.ui:53 data/ui/SearchView.ui:106
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "ПоÑмотреть вÑе"
-#: data/ui/SearchView.ui:96 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Ðльбомы"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
-msgstr "Композиции"
+msgstr "ПеÑни"
#: data/ui/SelectionBarMenuButton.ui:7
msgid "Select All"
@@ -461,34 +368,53 @@ msgstr "Выбрать вÑе"
msgid "Select None"
msgstr "СнÑÑ‚ÑŒ выделение"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Ðажмите, чтобы выбрать"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Добавить в ÑпиÑок воÑпроизведениÑ"
-#: data/ui/SongWidgetMenu.ui:28
-msgid "Add to Playlist…"
-msgstr "Добавить в ÑпиÑок воÑпроизведениÑ…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Удалить из ÑпиÑка воÑпроизведениÑ"
-#: data/ui/SongWidgetMenu.ui:38
-msgid "Remove From Playlist"
-msgstr "Удалить из ÑпиÑка воÑпроизведениÑ"
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "The GNOME Project"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr ""
+"Andrew Archer <razandale@gmail.com>, 2014\n"
+"Mihail Gurin <mikegurin@yandex.ru>, 2014\n"
+"Ivan Komaritsyn <vantu5z@mail.ru>, 2015\n"
+"Yuri Myasoedov <ymyasoedov@yandex.ru>, 2012, 2014, 2015\n"
+"Stas Solovey <whats_up@tut.by>, 2012-2018, 2019\n"
+"Ðртемий Судаков <finziyr@yandex.ru>, 2020\n"
+"Aleksandr Melman <alexmelman88@gmail.com>, 2022"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "ÐвторÑкое право © Разработчики Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÐœÑƒÐ·Ñ‹ÐºÐ° GNOME"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Перевод"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:897
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
-msgstr "Самый популÑрный"
+msgstr "ЧаÑто воÑпроизводимое"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:950
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Ðикогда не воÑпроизводилоÑÑŒ"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1002
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Ðедавно воÑпроизводилоÑÑŒ"
@@ -498,7 +424,7 @@ msgid "Recently Added"
msgstr "Ðедавно добавлено"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1126
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Избранные пеÑни"
@@ -532,71 +458,79 @@ msgid "Playing music"
msgstr "ВоÑпроизведение музыки"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Ð’ Ñлучайном порÑдке"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Случайный порÑдок/Повтор выключены"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
-msgstr "ПовторÑÑ‚ÑŒ композицию"
+msgstr "ПовторÑÑ‚ÑŒ пеÑню"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "ПовторÑÑ‚ÑŒ вÑе"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Случайный порÑдок/Повтор выключены"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Ð’ Ñлучайном порÑдке"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "СпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ {} удалён"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Отменить"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} удалено из {}"
-#: gnomemusic/utils.py:79
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "ÐеизвеÑтный альбом"
-#: gnomemusic/utils.py:100
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "ÐеизвеÑтный иÑполнитель"
-#: gnomemusic/views/emptyview.py:63
+#: gnomemusic/views/emptyview.py:65
msgid "Your XDG Music directory is not set."
msgstr "ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸ XDG Музыки не уÑтановлена."
-#: gnomemusic/views/emptyview.py:70
+#: gnomemusic/views/emptyview.py:72
msgid "Music Folder"
-msgstr "Папка Ñ Ð¼ÑƒÐ·Ñ‹ÐºÐ¾Ð¹"
+msgstr "Папка Музыка"
#. TRANSLATORS: This is a label to display a link to open user's music
#. folder. {} will be replaced with the translated text 'Music folder'
-#: gnomemusic/views/emptyview.py:74
+#: gnomemusic/views/emptyview.py:76
msgid "The contents of your {} will appear here."
msgstr "Содержимое {} поÑвитÑÑ Ð·Ð´ÐµÑÑŒ."
-#: gnomemusic/views/emptyview.py:107
-msgid "Hey DJ"
-msgstr "Эй DJ"
-
-#: gnomemusic/views/emptyview.py:113 gnomemusic/views/emptyview.py:117
+#: gnomemusic/views/emptyview.py:124
msgid "No Music Found"
msgstr "Музыка не найдена"
-#: gnomemusic/views/emptyview.py:118
+#: gnomemusic/views/emptyview.py:125
msgid "Try a Different Search"
msgstr "Попробуйте изменить параметры поиÑка"
-#: gnomemusic/views/emptyview.py:122
+#: gnomemusic/views/emptyview.py:129
msgid "GNOME Music could not connect to Tracker."
msgstr "Музыке GNOME не удалоÑÑŒ подключитьÑÑ Ðº Tracker."
-#: gnomemusic/views/emptyview.py:124
+#: gnomemusic/views/emptyview.py:131
msgid "Your music files cannot be indexed without Tracker running."
msgstr ""
"Ваши музыкальные файлы не могут быть проиндекÑированы без запущенного "
"Tracker."
-#: gnomemusic/views/emptyview.py:130
+#: gnomemusic/views/emptyview.py:137
msgid "Your system Tracker version seems outdated."
msgstr "ВерÑÐ¸Ñ Ð²Ð°ÑˆÐµÐ¹ ÑиÑтемы Tracker кажетÑÑ ÑƒÑтаревшей."
-#: gnomemusic/views/emptyview.py:132
+#: gnomemusic/views/emptyview.py:139
msgid "Music needs Tracker version 3.0.0 or higher."
msgstr "Ð”Ð»Ñ ÐœÑƒÐ·Ñ‹ÐºÐ¸ необходим Tracker верÑии 3.0.0 или выше."
@@ -604,169 +538,117 @@ msgstr "Ð”Ð»Ñ ÐœÑƒÐ·Ñ‹ÐºÐ¸ необходим Tracker верÑии 3.0.0 или
msgid "Playlists"
msgstr "СпиÑки воÑпроизведениÑ"
-#: gnomemusic/views/searchview.py:401
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Результаты по иÑполнителÑм"
-#: gnomemusic/views/searchview.py:416
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Результаты по альбомам"
-#: gnomemusic/widgets/albumwidget.py:202
-msgid "{}, {} minute"
-msgid_plural "{}, {} minutes"
-msgstr[0] "{}, {} минута"
-msgstr[1] "{}, {} минуты"
-msgstr[2] "{}, {} минут"
+#: gnomemusic/widgets/albumwidget.py:245
+msgid "{} minute"
+msgid_plural "{} minutes"
+msgstr[0] "{} минута"
+msgstr[1] "{} минуты"
+msgstr[2] "{} минут"
-#: gnomemusic/widgets/disclistboxwidget.py:74
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "ДиÑк {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
-msgstr[0] "Ð’Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð°Ñ Ð¿ÐµÑÐ½Ñ {}"
-msgstr[1] "Выбранные пеÑни {}"
-msgstr[2] "Выбранные пеÑни {}"
+msgstr[0] "Выбрана {} пеÑнÑ"
+msgstr[1] "Выбрано {} пеÑни"
+msgstr[2] "Выбрано {} пеÑен"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð²Ð¾ÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð° на Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð²Ð¾ÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ðµ отправлена на Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Вы вошли как {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "ÐаÑтроить"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "СпиÑок воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ {} удалён"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} удалено из {}"
-
-#: gnomemusic/widgets/playertoolbar.py:172
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "ПриоÑтановить"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
-msgstr[0] "{} композициÑ"
-msgstr[1] "{} композиции"
-msgstr[2] "{} композиций"
-
-#~ msgid "Released"
-#~ msgstr "Дата выпуÑка"
-
-#~ msgid "Running Length"
-#~ msgstr "Длина"
-
-#~ msgid "Composer"
-#~ msgstr "Композитор"
-
-#~ msgctxt "context menu item"
-#~ msgid "Play"
-#~ msgstr "ВоÑпроизвеÑти"
-
-#~ msgid "@icon@"
-#~ msgstr "@icon@"
+msgstr[0] "{} пеÑнÑ"
+msgstr[1] "{} пеÑни"
+msgstr[2] "{} пеÑен"
-#~ msgid "Untitled"
-#~ msgstr "Без названиÑ"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "ПоиÑк пеÑен, иÑполнителей, альбомов и ÑпиÑков воÑпроизведениÑ"
-#~ msgid "All"
-#~ msgstr "Ð’Ñе"
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "ВоÑпроизведение и управление музыкальной коллекцией в GNOME."
-#~ msgid "Artist"
-#~ msgstr "ИÑполнитель"
-
-#~ msgid "Album"
-#~ msgstr "Ðльбом"
-
-#~ msgid "Track Title"
-#~ msgstr "Ðазвание дорожки"
-
-#~ msgid "Local"
-#~ msgstr "Локальный"
-
-#~ msgid "Sources"
-#~ msgstr "ИÑточники"
-
-#~ msgid "Match"
-#~ msgstr "Совпадает"
-
-#~ msgid "Music is the new GNOME music playing application."
-#~ msgstr ""
-#~ "Музыка GNOME — новое приложение Ð´Ð»Ñ Ð²Ð¾ÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¼ÑƒÐ·Ñ‹ÐºÐ¸ в Ñреде GNOME."
-
-#~ msgid "org.gnome.Music"
-#~ msgstr "org.gnome.Music"
-
-#~ msgid "Search mode"
-#~ msgstr "Режим поиÑка"
-
-#~ msgid "If true, the search bar is shown."
-#~ msgstr "ЕÑли уÑтановлено, будет показана панель поиÑка."
-
-#~ msgid "Notifications mode"
-#~ msgstr "Режим Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñми"
-
-#~ msgid "Enables or disables playback notifications"
-#~ msgstr "Включает или выключает ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ воÑпроизведении"
-
-#~ msgid "Selected %d item"
-#~ msgid_plural "Selected %d items"
-#~ msgstr[0] "Выделен %d Ñлемент"
-#~ msgstr[1] "Выделено %d Ñлемента"
-#~ msgstr[2] "Выделено %d Ñлементов"
-
-#~ msgid "%d min"
-#~ msgstr "%d мин"
-
-#~ msgid "Empty"
-#~ msgstr "ПуÑто"
-
-#~ msgid "_Quit"
-#~ msgstr "_Завершить"
-
-#~ msgid "Select Playlist"
-#~ msgstr "Выбрать ÑпиÑок воÑпроизведениÑ"
-
-#~ msgid "the|a|an"
-#~ msgstr "the|a|an"
-
-#~ msgid "Max chars to display in track name on Artist view"
-#~ msgstr ""
-#~ "МакÑимальное количеÑтво Ñимволов отображаемых в названии аудио дорожки в "
-#~ "режиме проÑмотра композиций"
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "ПоÑетить веб-Ñайт приложениÑ"
#~ msgid ""
-#~ "This setting modifies the amount of chars for track title on Artist view "
-#~ "before its been ellipsized. Set this to -1 to disable"
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
#~ msgstr ""
-#~ "Этот параметр изменÑет количеÑтво Ñимволов отображаемых в названии аудио "
-#~ "дорожки в режиме проÑмотра композиций, прежде чем название будет "
-#~ "Ñокращено. УÑтановите в значение -1, чтобы отключить"
-
-#~ msgid "the a an"
-#~ msgstr "the a an"
-
-#~ msgid "All Artists"
-#~ msgstr "Ð’Ñе иÑполнители"
-
-#~ msgid "Not playing"
-#~ msgstr "Ðе воÑпроизводитÑÑ"
-
-#~ msgid "by %s, from %s"
-#~ msgstr "иÑполнитель %s, из альбома %s"
+#~ "Приложение «Музыка GNOME» ÑвлÑетÑÑ Ñвободным программным обеÑпечением, вы "
+#~ "можете раÑпроÑтранÑÑ‚ÑŒ и/или изменÑÑ‚ÑŒ его в ÑоответÑтвии Ñ ÑƒÑловиÑми GNU "
+#~ "General Public License, опубликованной Free Software Foundation, либо GNU "
+#~ "General Public License v2, либо (на ваш выбор) любой более поздней "
+#~ "верÑии.\n"
+#~ "\n"
+#~ "Приложение «Музыка GNOME» раÑпроÑтранÑетÑÑ Ð² надежде, что оно будет "
+#~ "полезным, но БЕЗ КÐКИХ-ЛИБО ГÐРÐÐТИЙ, даже без подразумеваемых гарантий "
+#~ "КОММЕРЧЕСКОЙ ЦЕÐÐОСТИ или ПРИГОДÐОСТИ ДЛЯ КОÐКРЕТÐЫХ ЦЕЛЕЙ. См. GNU "
+#~ "General Public License Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ подробной информации.\n"
+#~ "\n"
+#~ "Ð’Ñ‹ должны были получить копию GNU General Public License вмеÑте Ñ "
+#~ "приложением «Музыка GNOME»; а еÑли нет, напишите в Free Software "
+#~ "Foundation, Inc, 51 Franklin Street, пÑтый Ñтаж, Boston, MA 02110-1301 "
+#~ "СШÐ.\n"
+#~ "\n"
+#~ "Ðвторы Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Â«ÐœÑƒÐ·Ñ‹ÐºÐ° GNOME» предоÑтавлÑÑŽÑ‚ разрешение на "
+#~ "иÑпользование не-GPL ÑовмеÑтимых модулей GStreamer, которые будут "
+#~ "поÑтавлены Ñ GStreamer и «Музыка GNOME». Это разрешение выше и вне "
+#~ "разрешений, предоÑтавленных лицензией GPL, которой защищено приложение "
+#~ "«Музыка GNOME». При изменении Ñтого кода, вы можете раÑпроÑтранить данное "
+#~ "иÑключение на вашу верÑию кода, но вы не обÑзаны Ñто делать. ЕÑли вы не "
+#~ "хотите раÑпроÑтранить данное иÑключение на вашу верÑию кода, проÑто "
+#~ "удалите данное заÑвление об иÑключении из вашей верÑии кода."
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "Содержимое папки Музыка поÑвитÑÑ Ð·Ð´ÐµÑÑŒ"
diff --git a/po/sk.po b/po/sk.po
index 883ae9da..ebd3b984 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-08-31 15:59+0200\n"
+"POT-Creation-Date: 2022-08-27 13:27+0000\n"
+"PO-Revision-Date: 2022-10-07 14:36+0200\n"
"Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
"Language-Team: Slovak <gnome-sk-list@gnome.org>\n"
"Language: sk\n"
@@ -16,11 +16,13 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
-"X-Generator: Poedit 3.0\n"
+"X-Generator: Poedit 3.1.1\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "Hudba prostredia GNOME"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:236
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Hudba"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -39,15 +41,10 @@ msgstr ""
"Nájdite stopy vo vašej miestnej zbierke, použite automaticky vygenerované "
"zoznamy skladieb alebo vytvorte svoj vlastný."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:167
msgid "The GNOME Music developers"
msgstr "Vývojári aplikácie Hudba prostredia GNOME"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Hudba"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "PrehrávaÄ hudby"
@@ -66,27 +63,19 @@ msgid "Window size (width and height)."
msgstr "Veľkosť okna (šírka a výška)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Pozícia okna"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Pozícia okna (x a y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Maximalizované okno"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Maximalizovaný stav okna."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Režim opakovaného prehrávania"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -99,27 +88,27 @@ msgstr ""
"zamiešania), „shuffle“(zamiešanie zoznamu skladieb, použije sa opakovanie "
"všetkých skladieb)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Povoliť ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Povolí alebo zakáže ReplayGain pre albumy"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "PotlaÄiÅ¥ uspatie systému"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr "Povolí alebo zakáže potlaÄenie uspatia systému poÄas prehrávania hudby"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Nahlásiť históriu hudby službe Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -127,82 +116,23 @@ msgstr ""
"Povolí alebo zakáže odosielanie názvov skladieb (scrobbling) a informáciu "
"„aktuálne prehrávané“ službe Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Autorské práva © 2018 Vývojári aplikácie Hudba prostredia GNOME"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Aplikácia na prehrávanie a správu hudby prostredia GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Navštíviť domovskú stránku aplikácie Hudba prostredia GNOME"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"Aplikácia Hudba prostredia GNOME je slobodný softvér; môžete ho Äalej šíriÅ¥ "
-"a upravovať podľa ustanovení licencie GNU General Public Licence (Všeobecná "
-"zverejňovacia licencia GNU), vydávanej nadáciou Free Software Foundation a "
-"to buÄ podľa 2. verzie tejto licencie, alebo (podľa vášho uváženia) "
-"ktorejkoľvek neskoršej verzie.\n"
-"\n"
-"Tento program je rozÅ¡irovaný v nádeji, že bude užitoÄný, avÅ¡ak BEZ "
-"AKEJKOĽVEK ZÃRUKY. Neposkytujú sa ani odvodené záruky PREDAJNOSTI alebo "
-"VHODNOSTI NA URČITà ÚČEL. Ďalšie podrobnosti hľadajte v licencii GNU General "
-"Public License.\n"
-"\n"
-"Kópiu licencie GNU General Public License by ste mali dostať spolu s týmto "
-"programom. Ak sa tak nestalo, napíšte na adresu Free Software Foundation, "
-"Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n"
-"\n"
-"Autori programu Hudba prostredia GNOME týmto vyhlasujú, že udeľujú právo "
-"použiť a distribuovať zásuvné moduly knižnice GStreamer, ktoré nie sú "
-"kompatibilné s GPL, spolu s týmto programom. Toto právo je nadrámec práv "
-"zaruÄených licenciou GPL, pod ktorú tento program spadá. Ak upravíte "
-"zdrojový kód tohto programu, môžete túto výnimku použiť aj na vašu verziu "
-"kódu, no nie ste povinný tak urobiť. Ak to nechcete urobiť, vymažte z túto "
-"výnimku z vyhlásenia vo vašej verzii kódu."
-
# tooltip
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Prehrá"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Prehrať"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Pridať _medzi obľúbené skladby"
# gtk button
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_Pridať do zoznamu skladieb…"
@@ -210,23 +140,23 @@ msgstr "_Pridať do zoznamu skladieb…"
msgid "Last.fm Account"
msgstr "ÚÄet služby Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "NahlásiÅ¥ poÄúvanie hudby"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Klávesové skratky"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Pomocník"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_O aplikácii Hudba"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Vitajte v aplikácii Hudba"
@@ -235,112 +165,112 @@ msgid "Menu"
msgstr "Ponuka"
# tooltip
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:24 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Vyberie"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:30 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Zrušiť"
# DK:tooltip
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:42 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Vyhľadá"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:50
msgid "Back"
msgstr "Späť"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Všeobecné"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Zavretie okna"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Vyhľadanie"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Pomocník"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Skratky"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Prehrávanie"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Prehranie/Pozastavenie"
# DK: skladba
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Nasledujúca skladba"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Predchádzajúca skladba"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Prepnutie opakovania"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Prepnutie zamiešania"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navigácia"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Prejdenie na albumy"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Prejdenie na interpretov"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Prejdenie na skladby"
# gtk button
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Prejdenie na zoznamy skladieb"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Prejdenie späť"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -348,89 +278,81 @@ msgstr ""
"Last.fm je služba na objavovanie hudby, ktorá vám poskytuje personalizované "
"odporúÄania založené na hudbe, ktorú poÄúvate."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Nahlásenie hudby nie je nastavené"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "Pre nahlásenie vami poÄúvanej hudby, sa prihláste do služby Last.fm."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Prihlásiť"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "NaÄítava sa"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Predchádzajúca"
# DK: skladba
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Nasledujúca"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "O_dstrániť"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Premenovať…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Názov zoznamu skladieb"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_DokonÄiÅ¥"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Zadajte názov vášho prvého zoznamu skladieb"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "Vytvo_riť"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Nový zoznam skladieb…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Pridať"
# gtk button
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Pridanie do zoznamu skladieb"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Pridať"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "Vrátiť _späť"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Interpreti"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Zobraziť všetko"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Albumy"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Skladby"
@@ -442,47 +364,58 @@ msgstr "Vybrať všetko"
msgid "Select None"
msgstr "Zrušiť výber"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Kliknutím na položku ju vyberiete"
# gtk button
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Pridať do zoznamu skladieb"
# gtk button
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Pridať do zoznamu skladieb…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "O_dstrániť zo zoznamu skladieb"
-# gtk button
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Odstrániť zo zoznamu skladieb"
+#: gnomemusic/about.py:238
+msgid "The GNOME Project"
+msgstr "Projekt GNOME"
+
+#: gnomemusic/about.py:242
+msgid "translator-credits"
+msgstr "Dušan Kazik <prescott66@gmail.com>"
+
+#: gnomemusic/about.py:246
+msgid "Copyright The GNOME Music Developers"
+msgstr "Autorské práva: vývojári aplikácie Hudba prostredia GNOME"
+
+#: gnomemusic/about.py:249
+msgid "Translated by"
+msgstr "Preložili"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Najviac prehrávané"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Nikdy neprehraté"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Nedávno prehrávané"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Nedávno pridané"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Obľúbené skladby"
@@ -520,28 +453,40 @@ msgstr "Prehráva sa hudba"
# GtkRadioMenuItem
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
+#: gnomemusic/player.py:44
msgid "Shuffle"
msgstr "Zamiešať"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Opakovať skladbu"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Opakovať všetko"
# GtkRadioMenuItem
-#: gnomemusic/player.py:48
+#: gnomemusic/player.py:47
msgid "Shuffle/Repeat Off"
msgstr "Vypnúť zamiešanie/opakovanie"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Zoznam skladieb {} bol odstránený"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Vrátiť späť"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "Skladba {} odstránená zo zoznamu skladieb {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Neznámy album"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Neznámy interpret"
@@ -587,69 +532,133 @@ msgstr "Aplikácia Hudba vyžaduje verziu sledovaÄa 3.0.0 alebo vyÅ¡Å¡iu."
msgid "Playlists"
msgstr "Zoznamy skladieb"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Výsledky s interpretami"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Výsledky s albumami"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minút"
msgstr[1] "{} minúta"
msgstr[2] "{} minúty"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Disk Ä. {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "Vybraných {} skladieb"
msgstr[1] "Vybraná {} skladba"
msgstr[2] "Vybrané {} skladby"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Vami poÄúvaná hudba je nahlásená službe Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Vami poÄúvaná hudba nie je nahlásená službe Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Prihlásený ako {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Nastaviť"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Zoznam skladieb {} bol odstránený"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "Skladba {} odstránená zo zoznamu skladieb {}"
-
# tooltip
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Pozastaví"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} skladieb"
msgstr[1] "{} skladba"
msgstr[2] "{} skladby"
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "Aplikácia na prehrávanie a správu hudby prostredia GNOME."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Navštíviť domovskú stránku aplikácie Hudba prostredia GNOME"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "Aplikácia Hudba prostredia GNOME je slobodný softvér; môžete ho Äalej "
+#~ "šíriť a upravovať podľa ustanovení licencie GNU General Public Licence "
+#~ "(Všeobecná zverejňovacia licencia GNU), vydávanej nadáciou Free Software "
+#~ "Foundation a to buÄ podľa 2. verzie tejto licencie, alebo (podľa vášho "
+#~ "uváženia) ktorejkoľvek neskoršej verzie.\n"
+#~ "\n"
+#~ "Tento program je rozÅ¡irovaný v nádeji, že bude užitoÄný, avÅ¡ak BEZ "
+#~ "AKEJKOĽVEK ZÃRUKY. Neposkytujú sa ani odvodené záruky PREDAJNOSTI alebo "
+#~ "VHODNOSTI NA URČITà ÚČEL. Ďalšie podrobnosti hľadajte v licencii GNU "
+#~ "General Public License.\n"
+#~ "\n"
+#~ "Kópiu licencie GNU General Public License by ste mali dostať spolu s "
+#~ "týmto programom. Ak sa tak nestalo, napíšte na adresu Free Software "
+#~ "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, "
+#~ "USA.\n"
+#~ "\n"
+#~ "Autori programu Hudba prostredia GNOME týmto vyhlasujú, že udeľujú právo "
+#~ "použiť a distribuovať zásuvné moduly knižnice GStreamer, ktoré nie sú "
+#~ "kompatibilné s GPL, spolu s týmto programom. Toto právo je nadrámec práv "
+#~ "zaruÄených licenciou GPL, pod ktorú tento program spadá. Ak upravíte "
+#~ "zdrojový kód tohto programu, môžete túto výnimku použiť aj na vašu verziu "
+#~ "kódu, no nie ste povinný tak urobiť. Ak to nechcete urobiť, vymažte z "
+#~ "túto výnimku z vyhlásenia vo vašej verzii kódu."
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "Tu sa zobrazí obsah vášho prieÄinku s hudbou"
+
+#~ msgid "GNOME Music"
+#~ msgstr "Hudba prostredia GNOME"
+
+#~ msgid "Window position"
+#~ msgstr "Pozícia okna"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Pozícia okna (x a y)."
+
+#~ msgid "Loading"
+#~ msgstr "NaÄítava sa"
+
+# gtk button
+#~ msgid "Add to Playlist…"
+#~ msgstr "Pridať do zoznamu skladieb…"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
diff --git a/po/sl.po b/po/sl.po
index b7c5618a..e46d2f7f 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -2,28 +2,30 @@
# Copyright (C) 2013 gnome-music's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-music package.
#
-# Matej UrbanÄiÄ <mateju@src.gnome.org>, 2009–2020.
+# Matej UrbanÄiÄ <mateju@src.gnome.org>, 2009–2023.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-30 09:38+0000\n"
-"PO-Revision-Date: 2021-08-30 21:23+0200\n"
+"POT-Creation-Date: 2023-07-29 08:38+0000\n"
+"PO-Revision-Date: 2023-07-29 15:46+0200\n"
"Last-Translator: Matej UrbanÄiÄ <mateju@src.gnome.org>\n"
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
"Language: sl_SI\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
-"%100==4 ? 3 : 0);\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
+"n%100==4 ? 3 : 0);\n"
"X-Poedit-SourceCharset: utf-8\n"
-"X-Generator: Poedit 2.4.2\n"
+"X-Generator: Poedit 3.0.1\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME Glasba"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Glasba"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -42,15 +44,10 @@ msgstr ""
"Iskanje posnetkov v krajevnih zbirkah in uporaba samodejnega ali "
"naÄrtovanega pripravljanja seznamov predvajanja."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "Razvijalci programa GNOME Glasba"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Glasba"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Predvajalnik glasbe"
@@ -69,27 +66,19 @@ msgid "Window size (width and height)."
msgstr "Velikost okna (širina in višina)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Položaj okna"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Položaj okna (osi x in y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Razpeto okno"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Razpeto stanje okna."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "NaÄin ponavljanja predvajanja"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -102,29 +91,29 @@ msgstr ""
"seznam predvajanja brez mešanja) in »premešano« (vrstni red je premešan, "
"ponovljene pa bodo vse skladbe)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "_OmogoÄi ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "OmogoÄi ali onemogoÄi podporo ReplayGain za albume"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "PrepreÄi sistemski prehod v pripravljenost"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Preklopi možnost prepreÄevanja prehoda v stanje pripravljenosti med "
"predvajanjem glasbe."
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Pošiljaj zgodovino poslušane glasbe na Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -132,78 +121,21 @@ msgstr ""
"OmogoÄi oziroma onemogoÄi poÅ¡iljanje podatkov »trenutno predvajanih skladb« "
"na Last.fm"
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Avtorske pravice © 2018 Razvijalci programa GNOME Glasba"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Program GNOME za upravljanje in predvajanje glasbe."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Spletna stran programa GNOME Glasba"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"Program GNOME Music je prosta programska oprema; dovoljeno je razširjanje in "
-"spreminjanje pod pogoji Splošnega Javnega Dovoljenja (GNU), kot je "
-"objavljena pri Free Software Foundation; razliÄice 2 ali katerekoli "
-"kasnejše.\n"
-"\n"
-"Program se razširja v upanju, da bo koristen, vendar pa brez VSAKRŠNEGA "
-"JAMSTVA; tudi brez posredne zagotovitve CENOVNE VREDNOSTI ali PRIMERNOSTI ZA "
-"DOLOÄŒEN NAMEN. Za veÄ podrobnosti si oglejte dovoljenje.\n"
-"\n"
-"\n"
-"Skupaj s programom bi morali prejeti tudi kopijo Splošnega Javnega "
-"dovoljenja GNU /GNU GPL). V primeru, da je niste, si oglejte <http://www.gnu."
-"org/licenses/>.\n"
-"\n"
-"Avtorji programa GNOME Music dovolijo uporabo in razširjanje z dovoljenjem "
-"neskladnih vstavkov programa GStreamer. Dovoljenje presega Splošno Javno "
-"dovoljenje, s katerim je avtorsko zaÅ¡Äiten program GNOME Music. V kolikor "
-"boste spreminjali to kodo, lahko razÅ¡irite izjemo na razliÄico kode, vendar "
-"tega niste dolžni narediti. Če tega ne želite, izbrišite izjavo izjeme iz "
-"vaÅ¡e razliÄice."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Predvajaj"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Predvajaj"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "_Dodaj med priljubljene"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_Dodaj na seznam predvajanja …"
@@ -211,133 +143,133 @@ msgstr "_Dodaj na seznam predvajanja …"
msgid "Last.fm Account"
msgstr "RaÄun Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "PoroÄaj o posluÅ¡anju glasbe"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Tipkovne bližnjice"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "Pomo_Ä"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_O programu"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Dobrodošli"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Meni"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Izberi"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_PrekliÄi"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Iskanje"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Nazaj"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Splošno"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Zapre okno"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "ZaÄne iskanje"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Pokaže pomoÄ"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Tipkovne bližnjice"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Predvajanje"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Preklopi Predvajanje/Premor"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "SkoÄi na naslednjo skladbo"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "SkoÄi na predhodno skladbo"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Preklopi ponavljanje"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Preklopi premešanje"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Upravljanje"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "SkoÄi na pogled albumov"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "SkoÄi na pogled izvajalcev"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "SkoÄi na pogled skladb"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "SkoÄi na sezname predvajanja"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "SkoÄi na predhodni pogled"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -345,87 +277,79 @@ msgstr ""
"SpletiÅ¡Äe Last.fm je storitev odkrivanja glasbe, ki omogoÄa priporoÄila, "
"oblikovana po glasbi, ki jo najpogosteje poslušate."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Omejitev poroÄanja o posluÅ¡anju glasbe"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "Prijavite se v raÄun Last.fm za poroÄanje o posluÅ¡anju glasbe"
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Prijava"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Nalaganje"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Predhodna"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Naslednja"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Izbriši"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "P_reimenuj …"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Ime seznama predvajanja"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_KonÄano"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Ime prvega seznama predvajanja"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "_Ustvari"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Nov seznam predvajanja …"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Dodaj"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Dodaj na seznam predvajanja"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Dodaj"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Razveljavi"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Izvajalci"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Pokaži vse"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Albumi"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Skladbe"
@@ -437,44 +361,56 @@ msgstr "Izberi vse"
msgid "Select None"
msgstr "Odstrani izbor"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "S klikom se predmeti izberejo."
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "Dodaj na _seznam predvajanja"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Dodaj na seznam predvajanja …"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Odstrani s seznama predvajanja"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "Projekt GNOME"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Odstrani s seznama predvajanja"
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr "Matej UrbanÄiÄ <mateju@src.gnome.org>"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Avtorske pravice razvijalcev programa GNOME Glasba"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Prevod:"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Najpogosteje predvajano"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Nikoli predvajano"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Nedavno predvajano"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Nedavno dodano"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Priljubljeni posnetki"
@@ -509,27 +445,39 @@ msgid "Playing music"
msgstr "Predvajanje glasbe"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Premešaj"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "OnemogoÄi premeÅ¡anje/ponavljanje"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Ponovi skladbo"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Ponovi vse"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "OnemogoÄi premeÅ¡anje/ponavljanje"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Premešaj"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Seznam predvajanja {} je odstranjen"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Razveljavi"
-#: gnomemusic/utils.py:80
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} odstranjen iz {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Neznan album"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Neznan izvajalec"
@@ -577,15 +525,15 @@ msgstr ""
msgid "Playlists"
msgstr "Seznami predvajanja"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Izvajalci"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Albumi"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minut"
@@ -593,11 +541,11 @@ msgstr[1] "{} minuta"
msgstr[2] "{} minuti"
msgstr[3] "{} minute"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Disk {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "Izbranih je {} skladb"
@@ -605,36 +553,28 @@ msgstr[1] "Izbrana je {} skladba"
msgstr[2] "Izbrani sta {} skladbi"
msgstr[3] "Izbrane so {} skladbe"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "PoroÄilo o posluÅ¡anju glasbe je poslano na Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Podatki poslušanja glasbe niso posredovani na Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Trenutno je dejavna prijava {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Nastavi"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Seznam predvajanja {} je odstranjen"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} odstranjen iz {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Premor"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} skladb"
@@ -642,6 +582,81 @@ msgstr[1] "{} skladba"
msgstr[2] "{} skladbi"
msgstr[3] "{} skladbe"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "PoiÅ¡Äi skladbe, izvajalce, albume in sezname predvajanj"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "Program GNOME za upravljanje in predvajanje glasbe."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Spletna stran programa GNOME Glasba"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "Program GNOME Music je prosta programska oprema; dovoljeno je razširjanje "
+#~ "in spreminjanje pod pogoji Splošnega Javnega Dovoljenja (GNU), kot je "
+#~ "objavljena pri Free Software Foundation; razliÄice 2 ali katerekoli "
+#~ "kasnejše.\n"
+#~ "\n"
+#~ "Program se razširja v upanju, da bo koristen, vendar pa brez VSAKRŠNEGA "
+#~ "JAMSTVA; tudi brez posredne zagotovitve CENOVNE VREDNOSTI ali PRIMERNOSTI "
+#~ "ZA DOLOÄŒEN NAMEN. Za veÄ podrobnosti si oglejte dovoljenje.\n"
+#~ "\n"
+#~ "\n"
+#~ "Skupaj s programom bi morali prejeti tudi kopijo Splošnega Javnega "
+#~ "dovoljenja GNU /GNU GPL). V primeru, da je niste, si oglejte <http://www."
+#~ "gnu.org/licenses/>.\n"
+#~ "\n"
+#~ "Avtorji programa GNOME Music dovolijo uporabo in razširjanje z "
+#~ "dovoljenjem neskladnih vstavkov programa GStreamer. Dovoljenje presega "
+#~ "SploÅ¡no Javno dovoljenje, s katerim je avtorsko zaÅ¡Äiten program GNOME "
+#~ "Music. V kolikor boste spreminjali to kodo, lahko razširite izjemo na "
+#~ "razliÄico kode, vendar tega niste dolžni narediti. ÄŒe tega ne želite, "
+#~ "izbriÅ¡ite izjavo izjeme iz vaÅ¡e razliÄice."
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "Vsebina glasbene mape bo prikazana na tem mestu."
+
+#~ msgid "GNOME Music"
+#~ msgstr "GNOME Glasba"
+
+#~ msgid "Window position"
+#~ msgstr "Položaj okna"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Položaj okna (osi x in y)."
+
+#~ msgid "Loading"
+#~ msgstr "Nalaganje"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Dodaj na seznam predvajanja …"
+
+#~ msgid "Remove From Playlist"
+#~ msgstr "Odstrani s seznama predvajanja"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
@@ -793,9 +808,6 @@ msgstr[3] "{} skladbe"
#~ msgid "Select Playlist"
#~ msgstr "Izbor seznama predvajanja"
-#~ msgid "_Remove from Playlist"
-#~ msgstr "_Odstrani s seznama predvajanja"
-
#~ msgid "the|a|an"
#~ msgstr "the|a|an"
@@ -807,9 +819,9 @@ msgstr[3] "{} skladbe"
#~ msgstr ""
#~ "Vrednost doloÄa, ali naj se predvajanje posnetkov izvaja nakljuÄno ali "
#~ "ponavljajoÄe. Dovoljene možnosti so: \"brez\" (ponavljanje in meÅ¡anje "
-#~ "skladb je onemogoÄeno, \"posnetek\" (ponavljaj trenutni posnetek) , \"vse"
-#~ "\" (ponavljaj seznam predvajanja brez mešanja) in \"premešano\" (vrstni "
-#~ "red je premešan, ponovljene pa bodo vse skladbe)."
+#~ "skladb je onemogoÄeno, \"posnetek\" (ponavljaj trenutni posnetek) , "
+#~ "\"vse\" (ponavljaj seznam predvajanja brez mešanja) in "
+#~ "\"premešano\" (vrstni red je premešan, ponovljene pa bodo vse skladbe)."
#~ msgid "Max chars to display in track name on Artist view"
#~ msgstr "NajveÄje Å¡tevilo znakov naslova sledi v pogledu izvajalca"
@@ -889,9 +901,6 @@ msgstr[3] "{} skladbe"
#~ msgid "by %s, from %s"
#~ msgstr "%s (album %s)"
-#~ msgid "The contents of your music folder will appear here."
-#~ msgstr "Vsebina mape z glasbo bo prikazana tu."
-
#~ msgid ""
#~ "No Music found!\n"
#~ " Put some files into the folder %s"
diff --git a/po/sr.po b/po/sr.po
index 30f6bc4f..e2c289d4 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -1,13 +1,13 @@
# Serbian translation for gnome-music.
-# Courtesy of Prevod.org team (http://prevod.org/) -- 2013—2017.
+# Courtesy of Prevod.org team (http://prevod.org/) -- 2013–2017.
# This file is distributed under the same license as the gnome-music package.
-# МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>, 2013—2017.
+# МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>, 2013–2021.
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2020-08-28 15:14+0000\n"
-"PO-Revision-Date: 2020-09-03 09:59+0200\n"
+"POT-Creation-Date: 2022-09-06 03:05+0000\n"
+"PO-Revision-Date: 2022-09-06 10:03+0200\n"
"Last-Translator: Марко Ðœ. КоÑтић <marko.m.kostic@gmail.com>\n"
"Language-Team: ÑрпÑки <gnome-sr@googlegroups.org>\n"
"Language: sr\n"
@@ -17,11 +17,13 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Project-Style: gnome\n"
-"X-Generator: Poedit 2.4.1\n"
+"X-Generator: Poedit 3.1.1\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "Гномова музика"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:236
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Музика"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -29,30 +31,21 @@ msgid "Play and organize your music collection"
msgstr "Слушајте и уређујте музичку збирку"
#: data/org.gnome.Music.appdata.xml.in.in:9
-msgid ""
-"An easy way to play your music. Automatically discover music on your "
-"computer, the local network and internet services."
-msgstr ""
-"ЈедноÑтаван начин за Ñлушање ваше музике. ÐутоматÑки откријте музику на "
-"вашем рачунару, локалној мрежи и на интернет уÑлугама."
+msgid "An easy and pleasant way to play your music."
+msgstr "Лаган и угодан начин за пуштање музике."
#: data/org.gnome.Music.appdata.xml.in.in:12
msgid ""
-"Find tracks in your local collection, get music from DLNA servers or try "
-"something new with the Jamendo and Magnatune services."
+"Find tracks in your local collection, use automatically generated playlists "
+"or curate a fresh one."
msgstr ""
-"Ðађите нумере у вашој локалној збирци, добавите музику Ñа ДЛÐÐ Ñервера или "
-"пробајте нешто ново Ñа Ðамендо и Магнатјун уÑлугама."
+"Ðађите нумере у вашој локалној збирци, кориÑтите ÑамоÑтворене ÑпиÑкове "
+"нумера или направите нови."
-#: data/org.gnome.Music.appdata.xml.in.in:110
+#: data/org.gnome.Music.appdata.xml.in.in:167
msgid "The GNOME Music developers"
msgstr "Програмери Гномове музике"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:70
-msgid "Music"
-msgstr "Музика"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Програм за музику"
@@ -71,27 +64,19 @@ msgid "Window size (width and height)."
msgstr "Величина прозора (ширина и виÑина)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Положај прозора"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Положај прозора (положено и уÑправно)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Увећан прозор"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Стање увећаног прозора."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Режим понављања пуштања"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -103,36 +88,28 @@ msgstr ""
"„song“ (понавља текућу пеÑму), „all“ (понавља ÑпиÑак нумера, не меша), "
"„shuffle“ (меша ÑпиÑак нумера, подразумева понављање Ñвега)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Укључује појачање понављања"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Укључује или иÑкључује појачање понављања за албуме"
-#: data/org.gnome.Music.gschema.xml:38
-msgid "Inital state has been displayed"
-msgstr "Почетно Ñтање је приказано"
-
-#: data/org.gnome.Music.gschema.xml:39
-msgid "Set to true when initial state has been displayed"
-msgstr "ПоÑтави на тачно када Ñе почетно Ñтање прикаже"
-
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Спречи обуÑтаву ÑиÑтема"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Омогућава или онемогућава Ñпречавање обуÑтаве ÑиÑтема док Ñе пушта музика"
-#: data/org.gnome.Music.gschema.xml:48
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Пошаљи музички иÑторијат на Last.fm"
-#: data/org.gnome.Music.gschema.xml:49
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -140,205 +117,150 @@ msgstr ""
"Омогућава или онемогућава Ñлање Ñкроблова и податке о тренутном Ñлушању на "
"Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "ÐуторÑка права © 2018 Програмери Гномове музике"
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
+msgid "Play"
+msgstr "ПуÑти"
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Гномов програм за пуштање и управљање музиком."
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
+msgid "_Play"
+msgstr "_ПуÑти"
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "ПоÑетите веб Ñтраницу Гномове музике"
+#: data/ui/AlbumWidget.ui:134
+msgid "Add to _Favorite Songs"
+msgstr "Додај у _омиљене пеÑме"
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version.\n"
-"\n"
-"“Magic of the vinyl†by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
-"https://www.flickr.com/photos/_spy_/12270839403"
-msgstr ""
-"Овај програм је Ñлободан Ñофтвер; можете га проÑлеђивати\n"
-"и/или мењати под уÑловима Гнуове опште јавне лиценце коју је\n"
-"објавила Задужбина Ñлободног Ñофтвера; верзије 2 лиценце,\n"
-"или (по вашем избору) било које новије верзије.\n"
-"\n"
-"Овај програм Ñе раÑподељује у нади да ће бити кориÑтан,\n"
-"али БЕЗ ИКÐКВЕ ГÐРÐÐЦИЈЕ; чак и без примењене гаранције\n"
-"ТРЖИШÐЕ ВРЕДÐОСТИ или ПРИЛÐГОЂЕÐОСТИ ОДРЕЂЕÐОЈ ÐÐМЕÐИ.\n"
-"Погледајте Гнуову општу јавну лиценцу за више детаља.\n"
-"\n"
-"Требали Ñте да примите примерак ГÐУ Опште јавне лиценце\n"
-"уз овај програм; ако ниÑте, пишите Задужбини Ñлободног\n"
-"Ñофтвера на адреÑу: „Free Software Foundation, Inc., 51 Franklin Street, "
-"Fifth Floor, Boston, MA 02110-1301 USA.“\n"
-"\n"
-"Ðутори Гномове музике безуÑловно гарантују овлашћења за коришћење и "
-"раÑподелу прикључака ГÑтримера који ниÑу ÑаглаÑни Ñа ОЈЛ-ом уз ГÑтример и "
-"Гномову музику. Ово овлашћење је изнад и иÑпод овлашћења које обезбеђује "
-"ОЈЛ дозвола којом је покривена Гномова музика. Ðко измените овај код, "
-"можете да проширите овај изузетак на ваше издање кода, али ниÑте обавезни да "
-"то и урадите. Ðко не желите да урадите ово, обришите Ñтање овог изузетка из "
-"вашег издања.\n"
-"\n"
-"Слика \"Magic of the vinyl\" од Самија Пилампија је лиценцирана под CC-BY-SA "
-"2.0 https://www.flickr.com/photos/_spy_/12270839403"
-
-#: data/ui/AlbumWidget.ui:107
-msgid "Released"
-msgstr "Издат"
-
-#: data/ui/AlbumWidget.ui:123
-msgid "Running Length"
-msgstr "Дужина трајања"
-
-#: data/ui/AlbumWidget.ui:167
-msgid "Composer"
-msgstr "Композитор"
-
-#: data/ui/AppMenu.ui:20 data/ui/LastfmDialog.ui:8
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
+msgid "_Add to Playlist…"
+msgstr "_Додај на ÑпиÑак нумера…"
+
+#: data/ui/AppMenu.ui:23 data/ui/LastfmDialog.ui:8
msgid "Last.fm Account"
msgstr "Last.fm налог"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Пошаљи податке о Ñлушању"
-#: data/ui/AppMenu.ui:69
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Пречице таÑтатуре"
-#: data/ui/AppMenu.ui:83
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "По_моћ"
-#: data/ui/AppMenu.ui:97
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_О Музици"
+#: data/ui/EmptyView.ui:30
+msgid "Welcome to Music"
+msgstr "Добро дошли у Музику"
+
#: data/ui/HeaderBar.ui:16
msgid "Menu"
msgstr "Изборник"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:24 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Изабери"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:244
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:30 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Откажи"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:42 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Потражи"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:50
msgid "Back"
msgstr "Ðазад"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Опште"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Затвара прозор"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Претрага"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Помоћ"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Пречице"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Пуштање"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Пушта/паузира"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Следећа пеÑма"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Претходна пеÑма"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Прекидач за понављање"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Прекидач за мешање"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Ðавигација"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Иде на албуме"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Иде на извођаче"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Иде на пеÑме"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Иде на ÑпиÑак нумера"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Иде назад"
@@ -351,127 +273,81 @@ msgstr ""
"Last.fm је уÑлуга за откривање музике која вам даје перÑонализоване "
"препоруке на оÑнову музике коју Ñлушате."
-#: data/ui/LastfmDialog.ui:32 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Пријављивање музике није подешено"
-#: data/ui/LastfmDialog.ui:46 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"Пријавите Ñе уз помоћ вашег Last.fm налога да бите пријавили ваше Ñлушалачке "
"навике."
-#: data/ui/LastfmDialog.ui:57 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Пријава"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Учитавам"
-
-#: data/ui/PlayerToolbar.ui:6
-msgid "Shuffle"
-msgstr "ÐаÑумично"
-
-#: data/ui/PlayerToolbar.ui:11
-msgid "Repeat All"
-msgstr "Понови Ñве"
-
-#: data/ui/PlayerToolbar.ui:16
-msgid "Repeat Song"
-msgstr "Понови пеÑму"
-
-#. Causes tracks to play in random order
-#: data/ui/PlayerToolbar.ui:21
-msgid "Shuffle/Repeat Off"
-msgstr "ИÑкључи мешање/понављање"
-
-#: data/ui/PlayerToolbar.ui:69
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Претходно"
-#: data/ui/PlayerToolbar.ui:85 gnomemusic/widgets/playertoolbar.py:146
-msgid "Play"
-msgstr "ПуÑти"
-
-#: data/ui/PlayerToolbar.ui:101
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Ðаредно"
-#: data/ui/PlaylistContextMenu.ui:5
-msgctxt "context menu item"
-msgid "Play"
-msgstr "ПуÑти"
-
-#: data/ui/PlaylistContextMenu.ui:9
-msgid "Add to Playlist…"
-msgstr "Додај на ÑпиÑак нумера…"
-
-#: data/ui/PlaylistContextMenu.ui:13
-msgid "Remove From Playlist"
-msgstr "Уклони Ñа ÑпиÑка нумера…"
-
-#: data/ui/PlaylistControls.ui:6
-msgid "_Play"
-msgstr "_ПуÑти"
-
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Обриши"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Преименуј…"
-#: data/ui/PlaylistControls.ui:41
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Ðазив ÑпиÑка нумера"
-#: data/ui/PlaylistControls.ui:74
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Готово"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "УнеÑите назив за ваш први ÑпиÑак нумера"
-#: data/ui/PlaylistDialog.ui:92
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "_Ðаправи"
-#: data/ui/PlaylistDialog.ui:155
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Ðови ÑпиÑак нумера…"
-#: data/ui/PlaylistDialog.ui:169
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Додај"
-#: data/ui/PlaylistDialog.ui:241
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Додај на ÑпиÑак нумера"
-#: data/ui/PlaylistDialog.ui:257
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Додај"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Опозови"
-
-#: data/ui/SearchView.ui:43 gnomemusic/views/artistsview.py:43
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Извођачи"
-#: data/ui/SearchView.ui:53 data/ui/SearchView.ui:106
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Прикажи Ñве"
-#: data/ui/SearchView.ui:96 gnomemusic/views/albumsview.py:47
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Ðлбуми"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:44
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "ПеÑме"
@@ -483,58 +359,81 @@ msgstr "Изабери Ñве"
msgid "Select None"
msgstr "Поништи избор"
-#: data/ui/SelectionBarMenuButton.ui:31 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Кликните на Ñтавке да их изаберете"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Додај на ÑпиÑак нумера"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "Уклони Ñа ÑпиÑка нуме_ра"
+
+#: gnomemusic/about.py:238
+msgid "The GNOME Project"
+msgstr "Гномов пројекат"
+
+#: gnomemusic/about.py:242
+msgid "translator-credits"
+msgstr ""
+"МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>\n"
+"Марко Ðœ. КоÑтић <marko.m.kostic@gmail.com>\n"
+"https://гном.Ñрб — превод Гнома на ÑрпÑки језик."
+
+#: gnomemusic/about.py:246
+msgid "Copyright The GNOME Music Developers"
+msgstr "ÐуторÑка права програмери Гномове музике"
+
+#: gnomemusic/about.py:249
+msgid "Translated by"
+msgstr "Превод"
+
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:832
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Ðајвише пуштане"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:885
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Ðикад пуштане"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:937
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Ðедавно пуштане"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:999
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Ðедавно додате"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1061
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Омиљене пеÑме"
-#: gnomemusic/gstplayer.py:378
+#: gnomemusic/gstplayer.py:408
msgid "Unable to play the file"
msgstr "Ðе могу да пуÑтим датотеку"
-#: gnomemusic/gstplayer.py:384
+#: gnomemusic/gstplayer.py:414
msgid "_Find in {}"
msgstr "_Пронађи у {}"
#. TRANSLATORS: separator for two codecs
-#: gnomemusic/gstplayer.py:394
+#: gnomemusic/gstplayer.py:424
msgid " and "
msgstr " и "
#. TRANSLATORS: separator for a list of codecs
-#: gnomemusic/gstplayer.py:397
+#: gnomemusic/gstplayer.py:427
msgid ", "
msgstr ", "
-#: gnomemusic/gstplayer.py:399
+#: gnomemusic/gstplayer.py:429
msgid "{} is required to play the file, but is not installed."
msgid_plural "{} are required to play the file, but are not installed."
msgstr[0] "{} је потребан за пуштање датотеке али није инÑталиран."
@@ -546,70 +445,95 @@ msgstr[3] "{} је потребан за пуштање датотеке али
msgid "Playing music"
msgstr "Пуштам музику"
-#: gnomemusic/utils.py:81
+#. Translators: "shuffle" causes tracks to play in random order.
+#: gnomemusic/player.py:44
+msgid "Shuffle"
+msgstr "ÐаÑумично"
+
+#: gnomemusic/player.py:45
+msgid "Repeat Song"
+msgstr "Понови пеÑму"
+
+#: gnomemusic/player.py:46
+msgid "Repeat All"
+msgstr "Понови Ñве"
+
+#: gnomemusic/player.py:47
+msgid "Shuffle/Repeat Off"
+msgstr "ИÑкључи мешање/понављање"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "СпиÑак нумера {} је уклоњен"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Опозови"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "Ставка {} уклоњена из {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Ðепознат албум"
-#: gnomemusic/utils.py:102
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Ðепознат извођач"
-#: gnomemusic/views/emptyview.py:67
+#: gnomemusic/views/emptyview.py:65
msgid "Your XDG Music directory is not set."
msgstr "XDG музичка фаÑцикла није поÑтављена."
-#: gnomemusic/views/emptyview.py:74
-msgid "Music folder"
+#: gnomemusic/views/emptyview.py:72
+msgid "Music Folder"
msgstr "ФаÑцикла Ñа музиком"
#. TRANSLATORS: This is a label to display a link to open user's music
#. folder. {} will be replaced with the translated text 'Music folder'
-#: gnomemusic/views/emptyview.py:78
+#: gnomemusic/views/emptyview.py:76
msgid "The contents of your {} will appear here."
msgstr "Садржај фаÑцикле „{}“ ће Ñе појавити овде."
-#: gnomemusic/views/emptyview.py:112
-msgid "Hey DJ"
-msgstr "Хеј! Ди-џеј!"
-
-#: gnomemusic/views/emptyview.py:121 gnomemusic/views/emptyview.py:126
-msgid "No music found"
+#: gnomemusic/views/emptyview.py:124
+msgid "No Music Found"
msgstr "ÐиÑам пронашао музику"
-#: gnomemusic/views/emptyview.py:128
-msgid "Try a different search"
+#: gnomemusic/views/emptyview.py:125
+msgid "Try a Different Search"
msgstr "Пробајте Ñа другачијом претрагом"
-#: gnomemusic/views/emptyview.py:133
-msgid "GNOME Music could not connect to Tracker"
-msgstr "Гномова Музика није могла да Ñе повеже на Трагача"
+#: gnomemusic/views/emptyview.py:129
+msgid "GNOME Music could not connect to Tracker."
+msgstr "Гномова Музика није могла да Ñе повеже на Трагача."
-#: gnomemusic/views/emptyview.py:136
-msgid "Your music files cannot be indexed without Tracker running"
+#: gnomemusic/views/emptyview.py:131
+msgid "Your music files cannot be indexed without Tracker running."
msgstr ""
-"Ваше музичке датотеке не могу бити попиÑане уколико Трагач није покренут"
+"Ваше музичке датотеке не могу бити попиÑане уколико Трагач није покренут."
-#: gnomemusic/views/emptyview.py:143
-msgid "Your system Tracker version seems outdated"
-msgstr "Издање вашег ÑиÑтемÑког трагача делује заÑтарело"
+#: gnomemusic/views/emptyview.py:137
+msgid "Your system Tracker version seems outdated."
+msgstr "Издање вашег ÑиÑтемÑког трагача делује заÑтарело."
-#: gnomemusic/views/emptyview.py:146
-msgid "Music needs Tracker version 3.0.0 or higher"
-msgstr "Музици је потребан трагач (Tracker) издања 3.0.0 или новије"
+#: gnomemusic/views/emptyview.py:139
+msgid "Music needs Tracker version 3.0.0 or higher."
+msgstr "Музици је потребан трагач (Tracker) издања 3.0.0 или новијег."
-#: gnomemusic/views/playlistsview.py:41
+#: gnomemusic/views/playlistsview.py:45
msgid "Playlists"
msgstr "СпиÑак нумера"
-#: gnomemusic/views/searchview.py:386
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Резултати извођача"
-#: gnomemusic/views/searchview.py:401
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Резултати албума"
-#: gnomemusic/widgets/albumwidget.py:154
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} минут"
@@ -617,11 +541,11 @@ msgstr[1] "{} минута"
msgstr[2] "{} минута"
msgstr[3] "{} минут"
-#: gnomemusic/widgets/disclistboxwidget.py:60
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "ДиÑк {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "Изабрана је {} пеÑма"
@@ -629,36 +553,28 @@ msgstr[1] "Изабране Ñу {} пеÑме"
msgstr[2] "Изабрано је {} пеÑми"
msgstr[3] "Изабрана је једна пеÑма"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
-msgstr "Ваше Ñлушалачке навике Ñе шаљу на Last.fm"
+msgstr "Ваше Ñлушалачке навике Ñе шаљу на Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
-msgstr "Ваше Ñлушалачке навике Ñе не шаљу на Last.fm"
+msgstr "Ваше Ñлушалачке навике Ñе не шаљу на Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Пријављен као {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "ПодеÑи"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "СпиÑак нумера {} је уклоњен"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "Ставка {} уклоњена из {}"
-
-#: gnomemusic/widgets/playertoolbar.py:143
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "ЗаÑтани"
-#: gnomemusic/widgets/playlistcontrols.py:127
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} пеÑма"
@@ -666,6 +582,112 @@ msgstr[1] "{} пеÑме"
msgstr[2] "{} пеÑама"
msgstr[3] "{} пеÑма"
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "Гномов програм за пуштање и управљање музиком."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "ПоÑетите веб Ñтраницу Гномове музике"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "Овај програм је Ñлободан Ñофтвер; можете га проÑлеђивати\n"
+#~ "и/или мењати под уÑловима Гнуове опште јавне лиценце коју је\n"
+#~ "објавила Задужбина Ñлободног Ñофтвера; верзије 2 лиценце,\n"
+#~ "или (по вашем избору) било које новије верзије.\n"
+#~ "\n"
+#~ "Овај програм Ñе раÑподељује у нади да ће бити кориÑтан,\n"
+#~ "али БЕЗ ИКÐКВЕ ГÐРÐÐЦИЈЕ; чак и без примењене гаранције\n"
+#~ "ТРЖИШÐЕ ВРЕДÐОСТИ или ПРИЛÐГОЂЕÐОСТИ ОДРЕЂЕÐОЈ ÐÐМЕÐИ.\n"
+#~ "Погледајте Гнуову општу јавну лиценцу за више детаља.\n"
+#~ "\n"
+#~ "Требали Ñте да примите примерак ГÐУ Опште јавне лиценце\n"
+#~ "уз овај програм; ако ниÑте, пишите Задужбини Ñлободног\n"
+#~ "Ñофтвера на адреÑу: „Free Software Foundation, Inc.,\n"
+#~ "51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.“\n"
+#~ "\n"
+#~ "Ðутори Гномове музике безуÑловно гарантују овлашћења за коришћење и "
+#~ "раÑподелу прикључака ГÑтримера који ниÑу ÑаглаÑни Ñа ОЈЛ-ом уз ГÑтример и "
+#~ "Гномову музику. Ово овлашћење је изнад и иÑпод овлашћења које обезбеђује "
+#~ "ОЈЛ дозвола којом је покривена Гномова музика. Ðко измените овај код, "
+#~ "можете да проширите овај изузетак на ваше издање кода, али ниÑте обавезни "
+#~ "да то и урадите. Ðко не желите да урадите ово, обришите Ñтање овог "
+#~ "изузетка из вашег издања."
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "Садржај фаÑцикле „Музика“ појавиће Ñе овде"
+
+#~ msgid "GNOME Music"
+#~ msgstr "Гномова музика"
+
+#~ msgid "Window position"
+#~ msgstr "Положај прозора"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Положај прозора (положено и уÑправно)."
+
+#~ msgid "Loading"
+#~ msgstr "Учитавам"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Додај на ÑпиÑак нумера…"
+
+#~ msgid ""
+#~ "An easy way to play your music. Automatically discover music on your "
+#~ "computer, the local network and internet services."
+#~ msgstr ""
+#~ "ЈедноÑтаван начин за Ñлушање ваше музике. ÐутоматÑки откријте музику на "
+#~ "вашем рачунару, локалној мрежи и на интернет уÑлугама."
+
+#~ msgid ""
+#~ "Find tracks in your local collection, get music from DLNA servers or try "
+#~ "something new with the Jamendo and Magnatune services."
+#~ msgstr ""
+#~ "Ðађите нумере у вашој локалној збирци, добавите музику Ñа ДЛÐÐ Ñервера "
+#~ "или пробајте нешто ново Ñа Ðамендо и Магнатјун уÑлугама."
+
+#~ msgid "Inital state has been displayed"
+#~ msgstr "Почетно Ñтање је приказано"
+
+#~ msgid "Set to true when initial state has been displayed"
+#~ msgstr "ПоÑтави на тачно када Ñе почетно Ñтање прикаже"
+
+#~ msgid "Released"
+#~ msgstr "Издат"
+
+#~ msgid "Running Length"
+#~ msgstr "Дужина трајања"
+
+#~ msgid "Composer"
+#~ msgstr "Композитор"
+
+#~ msgctxt "context menu item"
+#~ msgid "Play"
+#~ msgstr "ПуÑти"
+
+#~ msgid "Hey DJ"
+#~ msgstr "Хеј! Ди-џеј!"
+
#~ msgid "All"
#~ msgstr "Све"
diff --git a/po/sv.po b/po/sv.po
index 991110ca..26872376 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,17 +1,17 @@
# Swedish translation for gnome-music.
-# Copyright © 2014-2021 gnome-music's COPYRIGHT HOLDER
+# Copyright © 2014-2023 gnome-music's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-music package.
-# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2014, 2016, 2017, 2018, 2019, 2020, 2021.
+# Anders Jonsson <anders.jonsson@norsjovallen.se>, 2014, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023.
# Sebastian Rasmussen <sebras@gmail.com>, 2015.
# Marcus Gisslén <marcus.gisslen@gmail.com>, 2015.
-# Luna Jernberg <droidbittin@gmail.com>, 2021.
+# Luna Jernberg <droidbittin@gmail.com>, 2021, 2022.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-08-27 23:46+0200\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-07-04 10:02+0200\n"
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
@@ -19,11 +19,13 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 3.0\n"
+"X-Generator: Poedit 3.3.2\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME Musik"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Musik"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -42,15 +44,10 @@ msgstr ""
"Hitta spår i din lokala samling, använd automatiskt genererade spellistor "
"eller sammanställ en ny."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "GNOME Musik-utvecklarna"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Musik"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Musikspelare"
@@ -69,27 +66,19 @@ msgid "Window size (width and height)."
msgstr "Fönsterstorlek (bredd och höjd)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Fönsterposition"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Fönsterposition (x och y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Fönster maximerat"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Tillstånd för maximerat fönster."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Upprepningsläge för uppspelning"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -102,29 +91,29 @@ msgstr ""
"ordning och börjar sedan om), â€shuffle†(lÃ¥tar spelas i slumpmässig ordning, "
"detta medför upprepning av alla)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Aktivera uppspelningsförstärkning"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Aktiverar eller inaktiverar uppspelningsförstärkning för album"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Hindra vänteläge för systemet"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Aktiverar eller inaktiverar hindrande av vänteläge för systemet då musik "
"spelas upp"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Rapportera musikhistorik till Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -132,79 +121,21 @@ msgstr ""
"Aktiverar eller inaktiverar sändning av skrobblingar och â€spelar nuâ€-info "
"till Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 GNOME Musik-utvecklarna"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Ett program för uppspelning och hantering av musik för GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Besök webbplatsen för GNOME Musik"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"GNOME Musik är fri programvara. Du kan distribuera det och/eller modifiera "
-"det under villkoren i GNU General Public License, publicerad av Free "
-"Software Foundation, antingen version 2 eller (om du så vill) någon senare "
-"version.\n"
-"\n"
-"GNOME Musik distribueras i hopp om att det ska vara användbart, men UTAN "
-"NÅGON SOM HELST GARANTI, även utan underförstådd garanti om SÄLJBARHET eller "
-"LÄMPLIGHET FÖR NÅGOT SPECIELLT ÄNDAMÅL. Se GNU General Public License för "
-"ytterligare information.\n"
-"\n"
-"Du bör ha fått en kopia av GNU General Public License tillsammans med GNOME "
-"Musik. Om inte, skriv till Free Software Foundation, Inc., 51 Franklin "
-"Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"Upphovsmännen för GNOME Musik ger härmed tillåtelse för användning och "
-"distribution av ej GPL-kompatibla GStreamer-insticksmoduler tillsammans med "
-"GStreamer och GNOME Musik. Denna tillåtelse är bortom tillåtelserna som ges "
-"av GPL-licensen, vilken täcker GNOME Musik. Om du ändrar denna kod kan du om "
-"du vill överföra detta undantag till din version av koden, men du är inte "
-"tvungen att göra det. Ta bort detta undantag från din version om du inte "
-"vill använda det."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Spela"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Spela"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Lägg till i _favoritlåtar"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_Lägg till i spellista…"
@@ -212,133 +143,133 @@ msgstr "_Lägg till i spellista…"
msgid "Last.fm Account"
msgstr "Last.fm-konto"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Rapportera musiklyssnande"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Tangentbordsgenvägar"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Hjälp"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_Om Musik"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Välkommen till Musik"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Meny"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Välj"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Avbryt"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Sök"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Bakåt"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Allmänt"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Stäng fönster"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Sök"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Hjälp"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Genvägar"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Uppspelning"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Spela upp/Gör paus"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Nästa låt"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Föregående låt"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Växla repetera"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Växla blandad uppspelning"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Navigering"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "GÃ¥ till Album"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "GÃ¥ till Artister"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "GÃ¥ till LÃ¥tar"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "GÃ¥ till Spellistor"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Gå bakåt"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -346,87 +277,79 @@ msgstr ""
"Last.fm är en musikupptäcktstjänst som ger dig personliga rekommendationer "
"beroende på musiken du lyssnar på."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Musikrapportering ej konfigurerad"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "Logga in på ditt Last.fm-konto för att rapportera ditt musiklyssnande."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Logga in"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Läser in"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Föregående"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Nästa"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Ta bort"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Byt namn…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Namn på spellista"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Färdig"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Ange ett namn för din första spellista"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "S_kapa"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Ny spellista…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Lägg till"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Lägg till i spellista"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Lägg till"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Ã…ngra"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Artister"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Visa alla"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Album"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "LÃ¥tar"
@@ -438,44 +361,63 @@ msgstr "Markera alla"
msgid "Select None"
msgstr "Avmarkera alla"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Klicka på objekt för att välja dem"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Lägg till i spellista"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Lägg till i spellista…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "_Ta bort från spellista"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "GNOME-projektet"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr ""
+"Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
+"Sebastian Rasmussen <sebras@gmail.com>\n"
+"Marcus Gisslén <marcus.gisslen@gmail.com>\n"
+"Luna Jernberg <droidbittin@gmail.com>\n"
+"\n"
+"Skicka synpunkter på översättningen till\n"
+"<tp-sv@listor.tp-sv.se>."
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Copyright GNOME Musik-utvecklarna"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Ta bort från spellista"
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Översatt av"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "Mest spelade"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Aldrig spelade"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Nyligen spelade"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Nyligen tillagda"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Favoritlåtar"
@@ -508,27 +450,39 @@ msgid "Playing music"
msgstr "Spelar upp musik"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Spela i slumpmässig ordning"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Spela i ordning utan upprepning"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Upprepa låt"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Upprepa alla"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Spela i ordning utan upprepning"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Spela i slumpmässig ordning"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "Spellista {} borttagen"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Ã…ngra"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} borttagen från {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Okänt album"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Okänd artist"
@@ -574,65 +528,130 @@ msgstr "Musik kräver version 3.0.0 eller högre av Tracker."
msgid "Playlists"
msgstr "Spellistor"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Artistresultat"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Albumresultat"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} minut"
msgstr[1] "{} minuter"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Skiva {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "Markerade {} låt"
msgstr[1] "Markerade {} låtar"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Ditt musiklyssnande rapporteras till Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Ditt musiklyssnande rapporteras inte till Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Inloggad som {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Konfigurera"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "Spellista {} borttagen"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} borttagen från {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Gör paus"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} låt"
msgstr[1] "{} låtar"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Sök låtar, artister, album och spellistor"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "Ett program för uppspelning och hantering av musik för GNOME."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Besök webbplatsen för GNOME Musik"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "GNOME Musik är fri programvara. Du kan distribuera det och/eller "
+#~ "modifiera det under villkoren i GNU General Public License, publicerad av "
+#~ "Free Software Foundation, antingen version 2 eller (om du så vill) någon "
+#~ "senare version.\n"
+#~ "\n"
+#~ "GNOME Musik distribueras i hopp om att det ska vara användbart, men UTAN "
+#~ "NÅGON SOM HELST GARANTI, även utan underförstådd garanti om SÄLJBARHET "
+#~ "eller LÄMPLIGHET FÖR NÅGOT SPECIELLT ÄNDAMÅL. Se GNU General Public "
+#~ "License för ytterligare information.\n"
+#~ "\n"
+#~ "Du bör ha fått en kopia av GNU General Public License tillsammans med "
+#~ "GNOME Musik. Om inte, skriv till Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "Upphovsmännen för GNOME Musik ger härmed tillåtelse för användning och "
+#~ "distribution av ej GPL-kompatibla GStreamer-insticksmoduler tillsammans "
+#~ "med GStreamer och GNOME Musik. Denna tillåtelse är bortom tillåtelserna "
+#~ "som ges av GPL-licensen, vilken täcker GNOME Musik. Om du ändrar denna "
+#~ "kod kan du om du vill överföra detta undantag till din version av koden, "
+#~ "men du är inte tvungen att göra det. Ta bort detta undantag från din "
+#~ "version om du inte vill använda det."
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "Innehållet i din Musikmapp kommer att visas här"
+
+#~ msgid "GNOME Music"
+#~ msgstr "GNOME Musik"
+
+#~ msgid "Window position"
+#~ msgstr "Fönsterposition"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Fönsterposition (x och y)."
+
+#~ msgid "Loading"
+#~ msgstr "Läser in"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Lägg till i spellista…"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
diff --git a/po/tr.po b/po/tr.po
index 74eb785e..071ad19e 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -1,5 +1,5 @@
# Turkish translation for gnome-music.
-# Copyright (C) 2013-2019 gnome-music's COPYRIGHT HOLDER
+# Copyright (C) 2013-2023 gnome-music's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-music package.
#
# Gökhan Gurbetoğlu <ggurbet@gmail.com>, 2014, 2015.
@@ -8,30 +8,33 @@
# Osman Karagöz <osmank3@gmail.com>, 2017.
# Furkan Tokaç <developmentft@gmail.com>, 2017.
# Doğa Deniz Arıcı <bluegreenbrain@gmail.com>, 2018.
-# Sabri Ãœnal <libreajans@gmail.com>, 2019-2020.
-# Emin Tufan Çetin <etcetin@gmail.com>, 2013-2021.
+# Sabri Ãœnal <libreajans@gmail.com>, 2019-2020, 2023.
+# Emin Tufan Çetin <etcetin@gmail.com>, 2013-2022.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-09-19 09:02+0300\n"
-"Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
-"Language-Team: Turkish <gnome-turk@gnome.org>\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-07-29 23:17+0300\n"
+"Last-Translator: Sabri Ãœnal <libreajans@gmail.com>\n"
+"Language-Team: Turkish <takim@gnome.org.tr>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 3.0\n"
+"X-Generator: Poedit 3.2.2\n"
"X-POOTLE-MTIME: 1433363480.000000\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME Müzik"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Müzik"
-#: data/org.gnome.Music.appdata.xml.in.in:7 data/org.gnome.Music.desktop.in.in:5
+#: data/org.gnome.Music.appdata.xml.in.in:7
+#: data/org.gnome.Music.desktop.in.in:5
msgid "Play and organize your music collection"
msgstr "Müzik derleminizi çalın ve yönetin"
@@ -41,21 +44,16 @@ msgstr "Müziğinizi dinlemenin kolay ve hoş yolu."
#: data/org.gnome.Music.appdata.xml.in.in:12
msgid ""
-"Find tracks in your local collection, use automatically generated playlists or "
-"curate a fresh one."
+"Find tracks in your local collection, use automatically generated playlists "
+"or curate a fresh one."
msgstr ""
-"Yerel derleminizdeki parçaları bulun, kendiliğinden oluşturulan çalma listelerini "
-"kullanın veya yenisini yaratın."
+"Yerel derleminizdeki parçaları bulun, kendiliğinden oluşturulan çalma "
+"listelerini kullanın veya yenisini oluşturun."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "GNOME Müzik Geliştiricileri"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Müzik"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Müzik Çalar"
@@ -74,134 +72,75 @@ msgid "Window size (width and height)."
msgstr "Pencere boyutu (genişlik ve yükseklik)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "Pencere konumu"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Pencere konumu (x ve y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Pencere büyültüldüğünde"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Pencerenin büyütülmüş durumu."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Çalma yineleme kipi"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
-"Value identifies whether to repeat or randomize playback through the collection. "
-"Allowed values are: “none†(repeat and shuffle are off), “song†(repeat current "
-"song), “all†(repeat playlist, no shuffle), “shuffle†(shuffle playlist, presumes "
-"repeat all)."
+"Value identifies whether to repeat or randomize playback through the "
+"collection. Allowed values are: “none†(repeat and shuffle are off), "
+"“song†(repeat current song), “all†(repeat playlist, no shuffle), "
+"“shuffle†(shuffle playlist, presumes repeat all)."
msgstr ""
"Bu değer, derlemdeki parçaların yinelemeli mi yoksa karışık mı çalınacağını "
-"belirtir. İzin verilen değerler şunlardır: “none†(yineleme ve karıştırma kapalı), "
-"“song†(geçerli şarkıyı yinele), “all†(çalma listesini yinele, karıştırma), "
-"“shuffle†(çalma listesini karıştır, tümü yinelenebilir)."
+"belirtir. İzin verilen değerler şunlardır: “none†(yineleme ve karıştırma "
+"kapalı), “song†(geçerli şarkıyı yinele), “all†(çalma listesini yinele, "
+"karıştırma), “shuffle†(çalma listesini karıştır, tümü yinelenebilir)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "ReplayGain’i etkinleştir"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Albümler için ReplayGain’i etkinleştirir ya da devre dışı bırakır"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "Sistemin askıya alınmasını önle"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
-"Müzik çalarken sistemin askıya alınmasını önlemeyi etkinleştir veya devre dışı bırak"
+"Müzik çalarken sistemin askıya alınmasını önlemeyi etkinleştir veya devre "
+"dışı bırak"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "Müzik geçmişini Last.fm’e bildir"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
-"Enables or disables sending scrobbles and the “currently playing†info to Last.fm."
+"Enables or disables sending scrobbles and the “currently playing†info to "
+"Last.fm."
msgstr ""
-"Last.fm’e skroplamaları ve “şu anda çalan†bilgilerini göndermeyi etkinleştirir "
-"veya devre dışı bırakır."
-
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "Copyright © 2018 GNOME Müzik Geliştiricileri"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "GNOME için müzik çalar ve yönetim uygulaması."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "GNOME Müzik web sitesini ziyaret et"
+"Last.fm’e skroplamaları ve “şu anda çalan†bilgilerini göndermeyi "
+"etkinleştirir veya devre dışı bırakır."
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under the "
-"terms of the GNU General Public License as published by the Free Software "
-"Foundation; either version 2 of the License, or (at your option) any later "
-"version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT ANY "
-"WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A "
-"PARTICULAR PURPOSE. See the GNU General Public License for more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with GNOME "
-"Music; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, "
-"Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible GStreamer "
-"plugins to be used and distributed together with GStreamer and GNOME Music. This "
-"permission is above and beyond the permissions granted by the GPL license by which "
-"GNOME Music is covered. If you modify this code, you may extend this exception to "
-"your version of the code, but you are not obligated to do so. If you do not wish "
-"to do so, delete this exception statement from your version."
-msgstr ""
-"GNOME Müzik, özgür yazılımdır; Özgür Yazılım Vakfı tarafından yayımlanan GNU Genel "
-"Kamu Lisansının 2. sürümü ya da (isteğe bağlı olarak) sonraki sürümleri koşulları "
-"altında yeniden dağıtabilir ve/veya değiştirebilirsiniz.\n"
-"\n"
-"GNOME Müzik kullanışlı olması maksadıyla dağıtılmaktadır, ancak HİÇBİR GARANTİSİ "
-"YOKTUR; aynı zamanda BİR AMACA UYGUNLUĞU ya da SATILABİLİRLİĞİ garanti etmez. Daha "
-"çok ayrıntı için GNU Genel Kamu Lisansına bakınız.\n"
-"\n"
-"GNU Genel Kamu Lisansı’nın bir kopyasını GNOME Müzik ile almış olmalısınız; eğer "
-"almadıysanız Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, "
-"Boston, MA 02110-1301 USA adresine yazın.\n"
-"\n"
-"GNOME Müzik yazarları GPL uyumlu olmayan GStreamer eklentilerinin GStreamer ve "
-"GNOME Müzik ile birlikte kullanılmasına ve dağıtılmasına izin vermektedirler. Bu "
-"izin GNOME Müzik’in lisansı olan GPL lisansının üzerinde ve onu kapsayıcı olarak "
-"verilmektedir. EÄŸer bu kodu deÄŸiÅŸtirirseniz zorunlu olmamakla birlikte bu "
-"geniÅŸletmeyi kendi kodunuza uygulayabilirsiniz. Bunu yapmak istemezseniz kendi "
-"sürümünüzden bu istisna ifadesini kaldırabilirsiniz."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Çal"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "_Çal"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "_Gözde Şarkılara Ekle"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "Çalma Listesine _Ekle…"
@@ -209,220 +148,213 @@ msgstr "Çalma Listesine _Ekle…"
msgid "Last.fm Account"
msgstr "Last.fm Hesabı"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Müzik Dinlemeyi Bildir"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Klavye Kısayolları"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Yardım"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "Müzik _Hakkında"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Müzikʼe Hoş Geldiniz"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Menü"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Seç"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211 data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_Vazgeç"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Ara"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Geri"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Genel"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Pencereyi kapat"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Ara"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Yardım"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "Kısayollar"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "Kayıttan yürüt"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Çal/Duraklat"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "Sonraki şarkı"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "Önceki şarkı"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Yinelemeyi aç/kapa"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Karıştırmayı aç/kapa"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "Gezinme"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Albümlere git"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Sanatçılara git"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Şarkılara git"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
-msgstr "Çalma Listelerine git"
+msgstr "Çalma Listelerine git"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "Geri git"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
-"Last.fm is a music discovery service that gives you personalised recommendations "
-"based on the music you listen to."
+"Last.fm is a music discovery service that gives you personalised "
+"recommendations based on the music you listen to."
msgstr ""
-"Last.fm, dinlediğiniz müziğe göre kişiselleştirilmiş öneriler sunan müzik keşif "
-"hizmetidir."
+"Last.fm, dinlediğiniz müziğe göre kişiselleştirilmiş öneriler sunan müzik "
+"keÅŸif hizmetidir."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "Müzik Bildirimi Kurulmadı"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "Müzik dinlemenizi bildirmek için Last.fm hesabınıza giriş yapın."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "GiriÅŸ"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "Yükleniyor"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "Önceki"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "Sonraki"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "_Sil"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Yeniden Adlandır…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Çalma Listesi Adı"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Bitti"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "İlk çalma listeniz için ad girin"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "OluÅŸtu_r"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Yeni Çalma Listesi…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Ekle"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Çalma Listesine Ekle"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Ekle"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Geri Al"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Sanatçılar"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "Tümünü Görüntüle"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Albümler"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "Şarkılar"
@@ -434,44 +366,56 @@ msgstr "Tümünü Seç"
msgid "Select None"
msgstr "Hiçbirini Seçme"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "Seçmek için ögelere tıklayın"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "Çalma Listesine _Ekle"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Çalma Listesine Ekle…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "Çalma Listesinden _Kaldır"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "GNOME Projesi"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr "Emin Tufan Çetin <etcetin@gmail.com>"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Çalma Listesinden Kaldır"
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "Telif Hakkı GNOME Müzik Geliştiricileri"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Çeviren"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "En Çok Çalınanlar"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Hiç Çalınmayanlar"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Son Çalınanlar"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Yeni Eklenenler"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Gözde Şarkılar"
@@ -503,27 +447,39 @@ msgid "Playing music"
msgstr "Çalan müzik"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "Karıştır"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Karıştırma/Yineleme Kapalı"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Şarkıyı Yinele"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Tümünü Yinele"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Karıştırma/Yineleme Kapalı"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "Karıştır"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "{} çalma listesi kaldırıldı"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "Geri Al"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{}, {}ʼden silindi"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Bilinmeyen albüm"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Bilinmeyen Sanatçı"
@@ -569,182 +525,54 @@ msgstr "Müzik, Trackerʼın 3.0.0 sürümünü veya üstünü gerektirmektedir.
msgid "Playlists"
msgstr "Çalma Listeleri"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Sanatçı Sonuçları"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Albüm Sonuçları"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} dakika"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "Disk {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "{} şarkı seçildi"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Müzik dinlemeniz Last.fm’e bildirildi."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Müzik dinlemeniz Last.fm’e bildirilmedi."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "{} olarak giriş yapıldı"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Yapılandır"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "{} çalma listesi kaldırıldı"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{}, {}ʼden silindi"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Duraklat"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} Şarkı"
-#~ msgid ""
-#~ "An easy way to play your music. Automatically discover music on your computer, "
-#~ "the local network and internet services."
-#~ msgstr ""
-#~ "Müziğinizi çalmanın kolay yolu. Bilgisayarınızdaki, yerel ağınızdaki ve internet "
-#~ "hizmetlerinizdeki müziği kendiliğinden keşfeder."
-
-#~ msgid ""
-#~ "Find tracks in your local collection, get music from DLNA servers or try "
-#~ "something new with the Jamendo and Magnatune services."
-#~ msgstr ""
-#~ "Yerel derleminizdeki parçaları bulun, DLNA sunucularından müzik alın veya "
-#~ "Jamendo ve Magnatune hizmetleriyle yeni ÅŸeyler deneyin."
-
-#~ msgid "Inital state has been displayed"
-#~ msgstr "İlk durum görüntülendi"
-
-#~ msgid "Set to true when initial state has been displayed"
-#~ msgstr "İlk durum görüntülendiğinde doğru olarak ayarla"
-
-#~ msgid "Released"
-#~ msgstr "Yayım"
-
-#~ msgid "Running Length"
-#~ msgstr "Uzunluk"
-
-#~ msgid "Composer"
-#~ msgstr "Besteci"
-
-#~ msgctxt "context menu item"
-#~ msgid "Play"
-#~ msgstr "Çal"
-
-#~ msgid "Hey DJ"
-#~ msgstr "Hey DJ"
-
-#~ msgid "All"
-#~ msgstr "Tümü"
-
-#~ msgid "Artist"
-#~ msgstr "Sanatçı"
-
-#~ msgid "Album"
-#~ msgstr "Albüm"
-
-#~ msgid "Track Title"
-#~ msgstr "Parça Adı"
-
-#~ msgid "Local"
-#~ msgstr "Yerel"
-
-#~ msgid "Sources"
-#~ msgstr "Kaynaklar"
-
-#~ msgid "Match"
-#~ msgstr "EÅŸleÅŸtir"
-
-#~ msgid "@icon@"
-#~ msgstr "@icon@"
-
-#~ msgid "Untitled"
-#~ msgstr "Başlıksız"
-
-#~ msgid "_Quit"
-#~ msgstr "_Çıkış"
-
-#~ msgid "Music is the new GNOME music playing application."
-#~ msgstr "Müzik, GNOME’un yeni müzik çalma uygulamasıdır."
-
-#~| msgid "gnome-music"
-#~ msgid "org.gnome.Music"
-#~ msgstr "org.gnome.Music"
-
-#~ msgid "Selected %d item"
-#~ msgid_plural "Selected %d items"
-#~ msgstr[0] "%d öge seçildi"
-
-#~ msgid "%d min"
-#~ msgstr "%d dk"
-
-#~ msgid "Empty"
-#~ msgstr "BoÅŸ"
-
-#~ msgid "Select Playlist"
-#~ msgstr "Çalma Listesi Seç"
-
-#~ msgid "Search mode"
-#~ msgstr "Arama kipi"
-
-#~ msgid "If true, the search bar is shown."
-#~ msgstr "Etkinse, arama çubuğu gösterilir."
-
-#~ msgid "Notifications mode"
-#~ msgstr "Bildirim kipi"
-
-#~ msgid "Enables or disables playback notifications"
-#~ msgstr "Çalma bildirimlerini etkinleştirir veya devre dışı bırakır"
-
-#~ msgid "the|a|an"
-#~ msgstr "the|a|an"
-
-#~ msgid "Max chars to display in track name on Artist view"
-#~ msgstr "Sanatçı görünümünde gösterilen parça adı için en fazla karakter sayısı"
-
-#~ msgid ""
-#~ "This setting modifies the amount of chars for track title on Artist view before "
-#~ "its been ellipsized. Set this to -1 to disable"
-#~ msgstr ""
-#~ "Bu ayar sanatçı görünümünde gösterilen parça adının üç nokta koyulmadan önce "
-#~ "görünecek karakter sayısını değiştirir. Devre dışı bırakmak için -1 olarak "
-#~ "ayarlayın."
-
-#~ msgid "Not playing"
-#~ msgstr "Yürütülmüyor"
-
-#~ msgid "by %s, from %s"
-#~ msgstr "%s tarafından, %s albümünde"
-
-#~ msgid "the a an"
-#~ msgstr "the"
-
-#~ msgid "All Artists"
-#~ msgstr "Tüm Sanatçılar"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Şarkıları, sanatçıları, albümleri ve çalma listelerini ara"
diff --git a/po/uk.po b/po/uk.po
index ee37f54f..e980d647 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -4,26 +4,29 @@
# Daniel Korostil <ted.korostiled@gmail.com>, 2013, 2014, 2015, 2016, 2017.
# Eugene Strezhnev <strezhnev.ua@gmail.com>, 2019.
# Danylo Korostil <ted.korostiled@gmail.com>, 2019.
-# Yuri Chornoivan <yurchor@ukr.net>, 2020, 2021.
+# Yuri Chornoivan <yurchor@ukr.net>, 2020, 2021, 2022, 2023.
msgid ""
msgstr ""
"Project-Id-Version: 1.0\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-08-28 10:23+0300\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-07-28 21:23+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n"
+"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
+"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n"
"X-Generator: Lokalize 20.12.0\n"
"X-Project-Style: gnome\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "Музика GNOME"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "Музика"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -42,15 +45,10 @@ msgstr ""
"Шукайте композиції у вашій локальній збірці, кориÑтуйтеÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾ "
"Ñтвореними ÑпиÑками Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ Ñтворюйте вручну нові ÑпиÑки відтвореннÑ."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "Розробники Музики GNOME"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "Музика"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "Програвач музики"
@@ -69,27 +67,19 @@ msgid "Window size (width and height)."
msgstr "Розмір вікна (ширина Ñ– виÑота)."
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð²Ñ–ÐºÐ½Ð°"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "Ð Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–ÐºÐ½Ð° (x та y)."
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "Вікно розгорнуто"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "Стан розгорнутого вікна."
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "Режим повторного програваннÑ"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -102,28 +92,28 @@ msgstr ""
"змішуваннÑ), «shuffle» (перемішати композиції у ÑпиÑку, допуÑкаютьÑÑ "
"повторюваннÑ)."
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "Увімкнути ReplayGain"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "Вмикає або вимикає ReplayGain Ð´Ð»Ñ Ð°Ð»ÑŒÐ±Ð¾Ð¼Ñ–Ð²"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "ÐŸÑ€Ð¸Ð³Ð½Ñ–Ñ‡ÐµÐ½Ð½Ñ Ð·ÑƒÐ¿Ð¸Ð½ÐºÐ¸ ÑиÑтеми"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr ""
"Вмикає або вимикає Ð¿Ñ€Ð¸Ð³Ð½Ñ–Ñ‡ÐµÐ½Ð½Ñ Ð·ÑƒÐ¿Ð¸Ð½ÐºÐ¸ ÑиÑтеми під Ñ‡Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð¼ÑƒÐ·Ð¸ÐºÐ¸"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "ÐадÑилати журнал Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð° Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -131,78 +121,21 @@ msgstr ""
"Вмикає або вимикає надÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ñƒ Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð° даних щодо поточного "
"Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¼ÑƒÐ·Ð¸ÐºÐ¸ на Last.fm."
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "© 2018 Розробники Музики GNOME"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "Програма Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ñ– впорÑÐ´ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð¼ÑƒÐ·Ð¸ÐºÐ¸ в GNOME."
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "Відвідати Ñайт Музики GNOME"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"«Музика GNOME» Ñ” вільним програмним забезпеченнÑм (ПЗ); ви можете "
-"розповÑюджувати Ñ—Ñ— та/чи модифікувати Ñ—Ñ— згідно з умовами ЗÐГÐЛЬÐОЇ "
-"ГРОМÐДСЬКОЇ ЛІЦЕÐЗІЇ (GPL) GNU Ñк опубліковано Free Software Foundation; "
-"верÑÑ–Ñ— 2 цієї Ліцензії, або (на ваш розÑуд) будь Ñкої наÑтупної верÑÑ–Ñ—.\n"
-"\n"
-"Музика GNOME розповÑюджуєтьÑÑ Ð· надією, що вона Ñтане у пригоді, але БЕЗ "
-"ЖОДÐИХ ГÐРÐÐТІЙ; навіть не маючи на увазі гарантії ПРИДÐТÐОСТІ ДЛЯ ПРОДÐЖУ "
-"або ПРИДÐТÐОСТІ ДО КОÐКРЕТÐОЇ МЕТИ. Див. ЗÐГÐЛЬÐУ ГРОМÐДСЬКУ ЛІЦЕÐЗІЮ (GPL) "
-"GNU Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´ÐµÑ‚Ð°Ð»ÑŒÐ½Ð¾Ñ— інформації.\n"
-"\n"
-"Ви маєте отримати копію ЗÐГÐЛЬÐОЇ ГРОМÐДСЬКОЇ ЛІЦЕÐЗІЇ (GPL) GNU з цим "
-"примірником Музика GNOME; Ñкщо ні, напишіть в Free Software Foundation, "
-"Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"Розробники Музики GNOME дають дозвіл на викориÑÑ‚Ð°Ð½Ð½Ñ Ñ‚Ð° розповÑÑŽÐ´Ð¶ÐµÐ½Ð½Ñ "
-"додатків GStreamer не ÑуміÑних з GPL, разом із GStreamer та Музикою GNOME. "
-"Цей дозвіл вище Ñ– за межами дозволів, наданих ліцензією GPL, Ñкою "
-"охоплюєтьÑÑ ÐœÑƒÐ·Ð¸ÐºÐ° GNOME.Якщо ви змінюєте цей код, ви можете розширити цей "
-"винÑток на Ñвою верÑÑ–ÑŽ коду, але не зобов'Ñзані цього робити. У цьому разі, "
-"вилучіть заÑву про цей винÑток зі Ñвоєї верÑÑ–Ñ—."
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "Програти"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "Про_грати"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "Додати до _улюблених піÑень"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "_Додати до ÑпиÑку композицій…"
@@ -210,133 +143,133 @@ msgstr "_Додати до ÑпиÑку композицій…"
msgid "Last.fm Account"
msgstr "Обліковий Ð·Ð°Ð¿Ð¸Ñ Last.fm"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "Сповіщати щодо Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¼ÑƒÐ·Ð¸ÐºÐ¸"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "_Клавіатурні ÑкороченнÑ"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "_Довідка"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "_Про «Музику»"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "Вітаємо у «Музиці»"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "Меню"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "Вибрати"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "_СкаÑувати"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "Пошук"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "Ðазад"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "Загальне"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "Закрити вікно"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "Пошук"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "Довідка"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "СкороченнÑ"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "ВідтвореннÑ"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "Програти/призупинити"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "ÐаÑтупна піÑнÑ"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ð¿Ñ–ÑнÑ"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "Перемкнути повтореннÑ"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "Перемкнути довільний порÑдок"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "ПереÑуваннÑ"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "Перейти до альбомів"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "Перейти до виконавців"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "Перейти до піÑень"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "Перейти до ÑпиÑків композицій"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "ПовернутиÑÑ"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
@@ -344,89 +277,81 @@ msgstr ""
"Last.fm — Ñлужба Ð¾Ð·Ð½Ð°Ð¹Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð· музикою, Ñка надає вам перÑоналізовані "
"рекомендації на оÑнові даних щодо музики, Ñку ви Ñлухаєте."
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "ÐадÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ñ–Ð² Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ðµ налаштовано"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr ""
"Увійдіть до вашого облікового запиÑу на Last.fm, щоб надіÑлати дані журналу "
"відтвореннÑ."
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "Увійти"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "ЗавантаженнÑ"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "ПопереднÑ"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "ÐаÑтупна"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "В_илучити"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "_Перейменувати…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "Ðазва ÑпиÑку композицій"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "_Зроблено"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "Введіть назву вашого першого ÑпиÑку композицій"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "С_творити"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "Створити ÑпиÑок композицій…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "Додати"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "Додати до ÑпиÑку композицій"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "_Додати"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "_Повернути"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "Виконавці"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "ПереглÑнути вÑе"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "Ðльбоми"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "ПіÑні"
@@ -438,44 +363,59 @@ msgstr "Вибрати вÑе"
msgid "Select None"
msgstr "Ðе вибирати"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "ÐатиÑніть на об'єкти, щоб вибрати Ñ—Ñ…"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "_Додати до ÑпиÑку композицій"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "Додати до ÑпиÑку композицій…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "Ви_лучити зі ÑпиÑку"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "Проєкт GNOME"
+
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr ""
+"Данило КороÑтіль <ted.korostiled@gmail.com>, 2013–2019\n"
+"Євген Стрежньов <strezhnev.ua@gmail.com>, 2019\n"
+"Юрій Чорноіван <yurchor@ukr.net>, 2020–2022"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "© Розробники Музики GNOME"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "Вилучити зі ÑпиÑку"
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "Переклад"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "ЧаÑто Ñлухали"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "Ðіколи не Ñлухали"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "Ðедавно Ñлухали"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "Ðедавно додано"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "Улюблені піÑні"
@@ -510,27 +450,39 @@ msgid "Playing music"
msgstr "ПрограєтьÑÑ Ð¼ÑƒÐ·Ð¸ÐºÐ°"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "У довільному порÑдку"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "Довільний порÑдок/ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "Повторювати піÑню"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "Повторювати вÑе"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "Довільний порÑдок/ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "У довільному порÑдку"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "СпиÑок композицій {} вилучено"
-#: gnomemusic/utils.py:80
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "СкаÑувати"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} вилучено з {}"
+
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "Ðевідомий альбом"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "Ðевідомий виконавець"
@@ -576,17 +528,15 @@ msgstr "Ð”Ð»Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ «Музики» потрібна програма T
msgid "Playlists"
msgstr "СпиÑки композицій"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "Виконавці"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "Ðльбоми"
-#: gnomemusic/widgets/albumwidget.py:237
-#| msgid "{}, {} minute"
-#| msgid_plural "{}, {} minutes"
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} хвилина"
@@ -594,11 +544,11 @@ msgstr[1] "{} хвилини"
msgstr[2] "{} хвилин"
msgstr[3] "{} хвилина"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "ДиÑк {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "Вибрано {} композицію"
@@ -606,36 +556,28 @@ msgstr[1] "Вибрано {} композиції"
msgstr[2] "Вибрано {} композицій"
msgstr[3] "Вибрано {} композицію"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "Ваш журнал Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð°Ð´Ñ–Ñлано на Last.fm."
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "Ваш журнал Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ðµ надіÑлано на Last.fm."
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "Вхід до ÑиÑтеми від імені {}"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "Ðалаштувати"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "СпиÑок композицій {} вилучено"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} вилучено з {}"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "Призупинити"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} піÑнÑ"
@@ -643,6 +585,79 @@ msgstr[1] "{} піÑні"
msgstr[2] "{} піÑень"
msgstr[3] "{} піÑнÑ"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "Пошук композицій, виконавців, альбомів та ÑпиÑків відтвореннÑ"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "Програма Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ñ– впорÑÐ´ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð¼ÑƒÐ·Ð¸ÐºÐ¸ в GNOME."
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "Відвідати Ñайт Музики GNOME"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "«Музика GNOME» Ñ” вільним програмним забезпеченнÑм (ПЗ); ви можете "
+#~ "розповÑюджувати Ñ—Ñ— та/чи модифікувати Ñ—Ñ— згідно з умовами ЗÐГÐЛЬÐОЇ "
+#~ "ГРОМÐДСЬКОЇ ЛІЦЕÐЗІЇ (GPL) GNU Ñк опубліковано Free Software Foundation; "
+#~ "верÑÑ–Ñ— 2 цієї Ліцензії, або (на ваш розÑуд) будь Ñкої наÑтупної верÑÑ–Ñ—.\n"
+#~ "\n"
+#~ "Музика GNOME розповÑюджуєтьÑÑ Ð· надією, що вона Ñтане у пригоді, але БЕЗ "
+#~ "ЖОДÐИХ ГÐРÐÐТІЙ; навіть не маючи на увазі гарантії ПРИДÐТÐОСТІ ДЛЯ "
+#~ "ПРОДÐЖУ або ПРИДÐТÐОСТІ ДО КОÐКРЕТÐОЇ МЕТИ. Див. ЗÐГÐЛЬÐУ ГРОМÐДСЬКУ "
+#~ "ЛІЦЕÐЗІЮ (GPL) GNU Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´ÐµÑ‚Ð°Ð»ÑŒÐ½Ð¾Ñ— інформації.\n"
+#~ "\n"
+#~ "Ви маєте отримати копію ЗÐГÐЛЬÐОЇ ГРОМÐДСЬКОЇ ЛІЦЕÐЗІЇ (GPL) GNU з цим "
+#~ "примірником Музика GNOME; Ñкщо ні, напишіть в Free Software Foundation, "
+#~ "Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "Розробники Музики GNOME дають дозвіл на викориÑÑ‚Ð°Ð½Ð½Ñ Ñ‚Ð° розповÑÑŽÐ´Ð¶ÐµÐ½Ð½Ñ "
+#~ "додатків GStreamer не ÑуміÑних з GPL, разом із GStreamer та Музикою "
+#~ "GNOME. Цей дозвіл вище Ñ– за межами дозволів, наданих ліцензією GPL, Ñкою "
+#~ "охоплюєтьÑÑ ÐœÑƒÐ·Ð¸ÐºÐ° GNOME.Якщо ви змінюєте цей код, ви можете розширити "
+#~ "цей винÑток на Ñвою верÑÑ–ÑŽ коду, але не зобов'Ñзані цього робити. У цьому "
+#~ "разі, вилучіть заÑву про цей винÑток зі Ñвоєї верÑÑ–Ñ—."
+
+#~| msgid "The contents of your {} will appear here."
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "Тут з'ÑвитьÑÑ Ð²Ð¼Ñ–ÑÑ‚ вашої теки «Музика»."
+
+#~ msgid "GNOME Music"
+#~ msgstr "Музика GNOME"
+
+#~ msgid "Window position"
+#~ msgstr "ÐŸÐ¾Ð·Ð¸Ñ†Ñ–Ñ Ð²Ñ–ÐºÐ½Ð°"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "Ð Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–ÐºÐ½Ð° (x та y)."
+
+#~ msgid "Loading"
+#~ msgstr "ЗавантаженнÑ"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "Додати до ÑпиÑку композицій…"
+
#~ msgid "Inital state has been displayed"
#~ msgstr "Початковий Ñтан вже було показано"
diff --git a/po/vi.po b/po/vi.po
index 0eaec2dc..71342898 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-06-08 08:51+0000\n"
-"PO-Revision-Date: 2021-06-10 13:41+0700\n"
+"POT-Creation-Date: 2021-09-19 11:12+0000\n"
+"PO-Revision-Date: 2021-09-24 09:09+0700\n"
"Last-Translator: Trần Ngá»c Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <gnome-vi-list@gnome.org>\n"
"Language: vi\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Gtranslator 2.91.7\n"
+"X-Generator: Gtranslator 3.38.0\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
msgid "GNOME Music"
@@ -28,22 +28,18 @@ msgid "Play and organize your music collection"
msgstr "Phát nhạc và tổ chức các tập nhạc"
#: data/org.gnome.Music.appdata.xml.in.in:9
-msgid ""
-"An easy way to play your music. Automatically discover music on your "
-"computer, the local network and internet services."
-msgstr ""
-"Một cách đơn giản để phát nhạc. Tự động dò tìm nhạc trên máy tính của bạn, "
-"mạng nội bộ hoặc các dịch vụ internet."
+msgid "An easy and pleasant way to play your music."
+msgstr "Một cách dễ dàng và thú vị để bạn phát nhạc của mình."
#: data/org.gnome.Music.appdata.xml.in.in:12
msgid ""
-"Find tracks in your local collection, get music from DLNA servers or try "
-"something new with the Jamendo and Magnatune services."
+"Find tracks in your local collection, use automatically generated playlists "
+"or curate a fresh one."
msgstr ""
-"Tìm các rãnh trong bộ sưu tập nội bộ của bạn, lấy nhạc từ máy phục vụ DLNA "
-"hoặc thử một số cái mới với các dịch vụ Jamendo và Magnatune."
+"Tìm các rãnh nhạc trong bộ sưu tập nội bộ của bạn, dùng các danh sách phát "
+"ddwwocj tạo tự động hay sắp xếp một danh sách mới."
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:149
msgid "The GNOME Music developers"
msgstr "Nhóm phát triển Nhạc GNOME"
@@ -111,26 +107,18 @@ msgid "Enables or disables ReplayGain for albums"
msgstr "Bật hay tắt ReplayGain với các tuyển tập"
#: data/org.gnome.Music.gschema.xml:38
-msgid "Inital state has been displayed"
-msgstr "Tình trạng khởi tạo đã được hiển thị"
-
-#: data/org.gnome.Music.gschema.xml:39
-msgid "Set to true when initial state has been displayed"
-msgstr "Chá»n nó khi muốn hiển thị tình trạng ban đầu"
-
-#: data/org.gnome.Music.gschema.xml:43
msgid "Inhibit system suspend"
msgstr "Ngăn cản hệ thống tạm ngưng"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr "Bật hay tắt việc ngăn cản hệ thống tạm ngưng khi đang phát nhạc"
-#: data/org.gnome.Music.gschema.xml:48
+#: data/org.gnome.Music.gschema.xml:43
msgid "Report music history to Last.fm"
-msgstr "Báo cáo lịch sử âm nhạc cho Last.fm"
+msgstr "Báo cáo lịch sử sử dụng âm nhạc cho Last.fm"
-#: data/org.gnome.Music.gschema.xml:49
+#: data/org.gnome.Music.gschema.xml:44
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
@@ -172,10 +160,7 @@ msgid ""
"the GPL license by which GNOME Music is covered. If you modify this code, "
"you may extend this exception to your version of the code, but you are not "
"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version.\n"
-"\n"
-"“Magic of the vinyl†by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
-"https://www.flickr.com/photos/_spy_/12270839403"
+"statement from your version."
msgstr ""
"Nhạc GNOME là phần má»m miá»…n phí; bạn có thể phân phối lại nó và/hoặc sá»­a đổi "
"nó theo các Ä‘iá»u khoản của Giấy phép Công cá»™ng GNU nhÆ° được xuất bản bởi Tổ "
@@ -196,22 +181,25 @@ msgstr ""
"Quyá»n này ở trên và ngoài các quyá»n được cấp bởi giấy phép GPL mà Nhạc GNOME "
"bao trùm. Nếu bạn sửa đổi mã này, bạn có thể mở rộng ngoại lệ này cho phiên "
"bản mã của mình, nhưng bạn không bắt buộc phải làm như vậy. Nếu bạn không "
-"muốn làm nhÆ° vậy, hãy xóa Ä‘iá»u khoản ngoại lệ này khá»i phiên bản của bạn.\n"
-"\n"
-"\"Magic of the vinyl\" của hình ảnh Sami Pyylampi được cấp phép bởi CC-BY-SA "
-"2.0 https://www.flickr.com/photos/_spy_/12270839403"
+"muốn làm nhÆ° vậy, hãy xóa Ä‘iá»u khoản ngoại lệ này khá»i phiên bản của bạn."
+
+#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
+#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
+#: gnomemusic/widgets/playertoolbar.py:177
+msgid "Play"
+msgstr "Phát"
-#: data/ui/AlbumWidget.ui:91
-msgid "Released"
-msgstr "Äược phát hành"
+#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+msgid "_Play"
+msgstr "_Phát"
-#: data/ui/AlbumWidget.ui:107
-msgid "Running Length"
-msgstr "Tổng thá»i lượng"
+#: data/ui/AlbumWidget.ui:167
+msgid "Add to _Favorite Songs"
+msgstr "Thêm vào _Bài hát ưa thích"
-#: data/ui/AlbumWidget.ui:151
-msgid "Composer"
-msgstr "Nhà soạn nhạc"
+#: data/ui/AlbumWidget.ui:171
+msgid "_Add to Playlist…"
+msgstr "Thêm vào d_anh sách phát…"
#: data/ui/AppMenu.ui:23 data/ui/LastfmDialog.ui:8
msgid "Last.fm Account"
@@ -219,7 +207,7 @@ msgstr "Tài khoản Last.fm"
#: data/ui/AppMenu.ui:38
msgid "Report Music Listening"
-msgstr "Báo cáo việc nghe Nhạc"
+msgstr "Báo cáo đang nghe Nhạc gì"
#: data/ui/AppMenu.ui:63
msgid "_Keyboard Shortcuts"
@@ -233,6 +221,10 @@ msgstr "T_rợ giúp"
msgid "_About Music"
msgstr "G_iới thiệu Nhạc"
+#: data/ui/EmptyView.ui:35
+msgid "Welcome to Music"
+msgstr "Chào mừng bạn dùng \"Nhạc\""
+
#: data/ui/HeaderBar.ui:16
msgid "Menu"
msgstr "Trình đơn"
@@ -364,52 +356,14 @@ msgstr "Äăng nhập"
msgid "Loading"
msgstr "Äang tải"
-#: data/ui/PlayerToolbar.ui:6
-msgid "Shuffle"
-msgstr "Xáo trộn"
-
-#: data/ui/PlayerToolbar.ui:11
-msgid "Repeat All"
-msgstr "Lặp tất cả"
-
-#: data/ui/PlayerToolbar.ui:16
-msgid "Repeat Song"
-msgstr "Lặp bài hát"
-
-#. Causes tracks to play in random order
-#: data/ui/PlayerToolbar.ui:21
-msgid "Shuffle/Repeat Off"
-msgstr "Tắt xáo trộn/lặp"
-
-#: data/ui/PlayerToolbar.ui:133
+#: data/ui/PlayerToolbar.ui:105
msgid "Previous"
msgstr "Kế trước"
-#: data/ui/PlayerToolbar.ui:150 gnomemusic/widgets/playertoolbar.py:154
-msgid "Play"
-msgstr "Phát"
-
-#: data/ui/PlayerToolbar.ui:167
+#: data/ui/PlayerToolbar.ui:139
msgid "Next"
msgstr "Kế tiếp"
-#: data/ui/PlaylistContextMenu.ui:5
-msgctxt "context menu item"
-msgid "Play"
-msgstr "Phát"
-
-#: data/ui/PlaylistContextMenu.ui:9
-msgid "Add to Playlist…"
-msgstr "Thêm vào danh sách phát…"
-
-#: data/ui/PlaylistContextMenu.ui:13
-msgid "Remove From Playlist"
-msgstr "Loại khá»i danh sách phát"
-
-#: data/ui/PlaylistControls.ui:6
-msgid "_Play"
-msgstr "_Phát"
-
#: data/ui/PlaylistControls.ui:10
msgid "_Delete"
msgstr "_Xóa"
@@ -418,11 +372,11 @@ msgstr "_Xóa"
msgid "_Rename…"
msgstr "Äổ_i tên…"
-#: data/ui/PlaylistControls.ui:41
+#: data/ui/PlaylistControls.ui:44
msgid "Playlist Name"
msgstr "Tên Danh sách phát"
-#: data/ui/PlaylistControls.ui:73
+#: data/ui/PlaylistControls.ui:77
msgid "_Done"
msgstr "_Xong"
@@ -454,15 +408,15 @@ msgstr "T_hêm"
msgid "_Undo"
msgstr "_Hủy bước"
-#: data/ui/SearchView.ui:43 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
msgid "Artists"
msgstr "Nghệ sĩ"
-#: data/ui/SearchView.ui:53 data/ui/SearchView.ui:106
+#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
msgid "View All"
msgstr "Hiện tất cả"
-#: data/ui/SearchView.ui:96 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
msgid "Albums"
msgstr "Tuyển tập"
@@ -486,28 +440,36 @@ msgstr "Bấm vào từng mục để chá»n chúng"
msgid "_Add to Playlist"
msgstr "T_hêm vào danh sách phát"
+#: data/ui/SongWidgetMenu.ui:29
+msgid "Add to Playlist…"
+msgstr "Thêm vào danh sách phát…"
+
+#: data/ui/SongWidgetMenu.ui:39
+msgid "Remove From Playlist"
+msgstr "Loại khá»i danh sách phát"
+
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:897
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:884
msgid "Most Played"
msgstr "Phát nhiá»u nhất"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:950
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:938
msgid "Never Played"
msgstr "Chưa phát lần nào"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1002
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:991
msgid "Recently Played"
msgstr "Mới phát"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1054
msgid "Recently Added"
msgstr "Mới thêm"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1126
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1117
msgid "Favorite Songs"
msgstr "Bài hát ưa thích"
@@ -539,76 +501,89 @@ msgstr[0] ""
msgid "Playing music"
msgstr "Äang phát nhạc"
-#: gnomemusic/utils.py:79
+#. Translators: "shuffle" causes tracks to play in random order.
+#: gnomemusic/player.py:45
+msgid "Shuffle"
+msgstr "Xáo trộn"
+
+#: gnomemusic/player.py:46
+msgid "Repeat Song"
+msgstr "Lặp bài hát"
+
+#: gnomemusic/player.py:47
+msgid "Repeat All"
+msgstr "Lặp tất cả"
+
+#: gnomemusic/player.py:48
+msgid "Shuffle/Repeat Off"
+msgstr "Tắt xáo trộn/lặp"
+
+#: gnomemusic/utils.py:80
msgid "Unknown album"
msgstr "Tập nhạc chưa biết"
-#: gnomemusic/utils.py:100
+#: gnomemusic/utils.py:101
msgid "Unknown Artist"
msgstr "Nghệ sĩ chưa biết"
-#: gnomemusic/views/emptyview.py:63
+#: gnomemusic/views/emptyview.py:65
msgid "Your XDG Music directory is not set."
msgstr "Thư mục Nhạc XDG của bạn chưa được đặt."
-#: gnomemusic/views/emptyview.py:70
+#: gnomemusic/views/emptyview.py:72
msgid "Music Folder"
msgstr "Thư mục nhạc"
#. TRANSLATORS: This is a label to display a link to open user's music
#. folder. {} will be replaced with the translated text 'Music folder'
-#: gnomemusic/views/emptyview.py:74
+#: gnomemusic/views/emptyview.py:76
msgid "The contents of your {} will appear here."
msgstr "Nội dung của {} của bạn sẽ xuất hiện ở đây."
-#: gnomemusic/views/emptyview.py:107
-msgid "Hey DJ"
-msgstr "Hey DJ"
-
-#: gnomemusic/views/emptyview.py:113 gnomemusic/views/emptyview.py:117
+#: gnomemusic/views/emptyview.py:124
msgid "No Music Found"
msgstr "Không tìm thấy bài hát nào"
-#: gnomemusic/views/emptyview.py:118
+#: gnomemusic/views/emptyview.py:125
msgid "Try a Different Search"
msgstr "Thử tìm kiếm khác"
-#: gnomemusic/views/emptyview.py:122
+#: gnomemusic/views/emptyview.py:129
msgid "GNOME Music could not connect to Tracker."
msgstr "Nhạc GNOME không thể kết nối đến Tracker."
-#: gnomemusic/views/emptyview.py:124
+#: gnomemusic/views/emptyview.py:131
msgid "Your music files cannot be indexed without Tracker running."
msgstr ""
"Các tập tin nhạc của bạn không thể được đánh mục lục mà không có Tracker "
"đang chạy."
-#: gnomemusic/views/emptyview.py:130
+#: gnomemusic/views/emptyview.py:137
msgid "Your system Tracker version seems outdated."
msgstr "Phiên bản Tracker của bạn có vẻ lá»—i thá»i."
-#: gnomemusic/views/emptyview.py:132
+#: gnomemusic/views/emptyview.py:139
msgid "Music needs Tracker version 3.0.0 or higher."
msgstr "Nhạc cần Tracker phiên bản 3.0.0 trở lên."
-#: gnomemusic/views/playlistsview.py:44
+#: gnomemusic/views/playlistsview.py:45
msgid "Playlists"
msgstr "Danh sách phát"
-#: gnomemusic/views/searchview.py:398
+#: gnomemusic/views/searchview.py:420
msgid "Artists Results"
msgstr "Kết quả Nghệ sĩ"
-#: gnomemusic/views/searchview.py:413
+#: gnomemusic/views/searchview.py:435
msgid "Albums Results"
msgstr "Kết quả Tuyển tập"
-#: gnomemusic/widgets/albumwidget.py:154
+#: gnomemusic/widgets/albumwidget.py:237
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} phút"
-#: gnomemusic/widgets/disclistboxwidget.py:65
+#: gnomemusic/widgets/disclistboxwidget.py:75
msgid "Disc {}"
msgstr "ÄÄ©a {}"
@@ -642,15 +617,51 @@ msgstr "Danh sách phát {} đã bị xóa bá»"
msgid "{} removed from {}"
msgstr "{} bị xóa khá»i {}"
-#: gnomemusic/widgets/playertoolbar.py:151
+#: gnomemusic/widgets/playertoolbar.py:174
msgid "Pause"
msgstr "Tạm dừng"
-#: gnomemusic/widgets/playlistcontrols.py:127
+#: gnomemusic/widgets/playlistcontrols.py:132
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} bài hát"
+#~ msgid ""
+#~ "An easy way to play your music. Automatically discover music on your "
+#~ "computer, the local network and internet services."
+#~ msgstr ""
+#~ "Một cách đơn giản để phát nhạc. Tự động dò tìm nhạc trên máy tính của "
+#~ "bạn, mạng nội bộ hoặc các dịch vụ internet."
+
+#~ msgid ""
+#~ "Find tracks in your local collection, get music from DLNA servers or try "
+#~ "something new with the Jamendo and Magnatune services."
+#~ msgstr ""
+#~ "Tìm các rãnh trong bộ sưu tập nội bộ của bạn, lấy nhạc từ máy phục vụ "
+#~ "DLNA hoặc thử một số cái mới với các dịch vụ Jamendo và Magnatune."
+
+#~ msgid "Inital state has been displayed"
+#~ msgstr "Tình trạng khởi tạo đã được hiển thị"
+
+#~ msgid "Set to true when initial state has been displayed"
+#~ msgstr "Chá»n nó khi muốn hiển thị tình trạng ban đầu"
+
+#~ msgid "Released"
+#~ msgstr "Äược phát hành"
+
+#~ msgid "Running Length"
+#~ msgstr "Tổng thá»i lượng"
+
+#~ msgid "Composer"
+#~ msgstr "Nhà soạn nhạc"
+
+#~ msgctxt "context menu item"
+#~ msgid "Play"
+#~ msgstr "Phát"
+
+#~ msgid "Hey DJ"
+#~ msgstr "Hey DJ"
+
#~ msgid "@icon@"
#~ msgstr "@icon@"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index c4e94d7b..bd2fa43c 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -7,26 +7,29 @@
# Mingcong Bai <jeffbai@aosc.xyz>, 2018.
# Dingzhong Chen <wsxy162@gmail.com>, 2018, 2019.
# Cheng Lu <chenglu1990@gmail.com>, 2016, 2020.
+# lumingzh <lumingzh@qq.com>, 2022-2023.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2021-08-27 21:42+0000\n"
-"PO-Revision-Date: 2021-09-03 15:01-0400\n"
-"Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
-"Language-Team: Chinese (China) <i18n-zh@googlegroups.com>\n"
+"POT-Creation-Date: 2023-07-04 07:49+0000\n"
+"PO-Revision-Date: 2023-08-05 15:22+0800\n"
+"Last-Translator: lumingzh <lumingzh@qq.com>\n"
+"Language-Team: Chinese - China <i18n-zh@googlegroups.com>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 3.0\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"X-Generator: Gtranslator 42.0\n"
"X-DamnedLies-Scope: partial\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME 音ä¹"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:243
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "音ä¹"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
@@ -44,15 +47,10 @@ msgid ""
msgstr ""
"在您的本地收è—中寻找音轨,使用自动生æˆçš„播放列表或者自行编辑生æˆæ’­æ”¾åˆ—表。"
-#: data/org.gnome.Music.appdata.xml.in.in:140
+#: data/org.gnome.Music.appdata.xml.in.in:182
msgid "The GNOME Music developers"
msgstr "GNOME“音ä¹â€å¼€å‘者"
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:71
-msgid "Music"
-msgstr "音ä¹"
-
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
msgstr "音ä¹æ’­æ”¾å™¨"
@@ -71,27 +69,19 @@ msgid "Window size (width and height)."
msgstr "窗å£å¤§å°ï¼ˆå®½åº¦ä¸Žé«˜åº¦ï¼‰ã€‚"
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "窗å£ä½ç½®"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "窗å£ä½ç½®ï¼ˆæ°´å¹³å’Œç«–直)。"
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
msgstr "窗å£æœ€å¤§åŒ–"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
msgstr "窗å£æœ€å¤§åŒ–状æ€ã€‚"
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "é‡å¤æ’­æ”¾æ¨¡å¼"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
@@ -102,100 +92,47 @@ msgstr ""
"机)ã€â€œsongâ€ï¼ˆé‡å¤å½“å‰æ­Œæ›²ï¼‰ã€â€œallâ€ï¼ˆé‡å¤æ’­æ”¾åˆ—表,éžéšæœºï¼‰ã€â€œshuffleâ€ï¼ˆéšæœº"
"播放列表,å‡å®šé‡å¤å…¨éƒ¨ï¼‰ã€‚"
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "å¯ç”¨å›žæ”¾å¢žç›Š"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "å¯ç”¨æˆ–ç¦ç”¨ä¸“辑的回放增益"
-#: data/org.gnome.Music.gschema.xml:38
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "阻止系统挂起"
-#: data/org.gnome.Music.gschema.xml:39
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
msgstr "播放音ä¹æ—¶æ˜¯å¦é˜»æ­¢ç³»ç»Ÿä¼‘眠"
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
msgstr "将您的音ä¹åŽ†å²è®°å½•æŠ¥å‘Šç»™ Last.fm"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
msgstr "å¯ç”¨æˆ–ç¦ç”¨å‘ Last.fm å‘é€å½“å‰æ’­æ”¾çš„曲目以åŠâ€œæ­£åœ¨æ’­æ”¾â€ä¿¡æ¯çš„功能。"
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "版æƒæ‰€æœ‰ © 2018 GNOME“音ä¹â€å¼€å‘者"
-
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "GNOME 音ä¹æ’­æ”¾åŠç®¡ç†ç¨‹åºã€‚"
-
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "访问“GNOME 音ä¹â€ç½‘ç«™"
-
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version."
-msgstr ""
-"GNOME 音ä¹æ˜¯è‡ªç”±è½¯ä»¶ï¼›æ‚¨å¯ä»¥åœ¨è‡ªç”±è½¯ä»¶åŸºé‡‘会å‘布的 GNU 通用公共许å¯è¯çš„æ¡æ¬¾ä¸‹"
-"é‡æ–°åˆ†å‘和(或)修改它;您å¯ä»¥é€‰æ‹©ä½¿ç”¨ GPL 第二版,或(按照您的æ„愿)任何更新"
-"的版本。\n"
-"\n"
-"GNOME 音ä¹åˆ†å‘的目的是希望它物有所用,但是没有任何担ä¿ï¼›æ²¡æœ‰å¯¹å…¶é€‚销性和æŸä¸€"
-"特定目的下的适用性的任何å³ä¾¿æ˜¯æš—示的担ä¿ã€‚请查阅 GNU 通用公共许å¯è¯ä»¥èŽ·å¾—更多"
-"ä¿¡æ¯ã€‚\n"
-"\n"
-"您应当已ç»è·Ÿ GNOME 音ä¹ä¸€èµ·æ”¶åˆ°ä¸€ä»½ GNU 通用公众许å¯è¯çš„副本;如果没有,请写"
-"信至:Free Software Foundation, Inc.,\n"
-"51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\n"
-"\n"
-"GNOME 音ä¹çš„ä½œè€…åœ¨æ­¤å¯¹éž GPL 兼容的 GStreamer æ’ä»¶åŒ GNOME 音ä¹åŠ GStreamer "
-"一é“使用åŠåˆ†å‘给予许å¯ã€‚该许å¯ä¼˜äºŽå¹¶è¦†ç›–在 GNOME 音ä¹çš„ GPL 授æƒè®¸å¯ä¹‹ä¸Šã€‚如"
-"果您修改该代ç ï¼Œæ‚¨å¯ä»¥å°†è¯¥ä¾‹å¤–扩展到您的代ç ï¼Œä½†éžå¼ºåˆ¶ã€‚如果您ä¸æ„¿æ„如此,从"
-"您的版本中删除该例外声明。"
-
-#: data/ui/AlbumWidget.ui:104 data/ui/PlayerToolbar.ui:122
-#: data/ui/PlaylistControls.ui:121 data/ui/SongWidgetMenu.ui:19
-#: gnomemusic/widgets/playertoolbar.py:177
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
msgid "Play"
msgstr "播放"
-#: data/ui/AlbumWidget.ui:163 data/ui/PlaylistControls.ui:6
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
msgid "_Play"
msgstr "播放(_P)"
-#: data/ui/AlbumWidget.ui:167
+#: data/ui/AlbumWidget.ui:134
msgid "Add to _Favorite Songs"
msgstr "添加至收è—歌曲(_F)"
-#: data/ui/AlbumWidget.ui:171
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
msgid "_Add to Playlist…"
msgstr "添加到播放列表(_A)…"
@@ -203,219 +140,211 @@ msgstr "添加到播放列表(_A)…"
msgid "Last.fm Account"
msgstr "Last.fm å¸å·"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
msgstr "报告音ä¹æ”¶å¬æƒ…况"
-#: data/ui/AppMenu.ui:63
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "键盘快æ·é”®(_K)"
-#: data/ui/AppMenu.ui:74
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "帮助(_H)"
-#: data/ui/AppMenu.ui:85
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
msgstr "关于“音ä¹â€(_A)"
-#: data/ui/EmptyView.ui:35
+#: data/ui/EmptyView.ui:30
msgid "Welcome to Music"
msgstr "欢迎使用音ä¹åº”用"
-#: data/ui/HeaderBar.ui:16
+#: data/ui/HeaderBar.ui:17
msgid "Menu"
msgstr "èœå•"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:25 data/ui/SearchHeaderBar.ui:15
msgid "Select"
msgstr "选择"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:211
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:31 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "å–消(_C)"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:43 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "æœç´¢"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:51
msgid "Back"
msgstr "åŽé€€"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "常规"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "关闭窗å£"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "æœç´¢"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "帮助"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "å¿«æ·é”®"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "播放"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "播放/æš‚åœ"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "下一首歌曲"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "上一首歌曲"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
msgstr "é‡å¤æ’­æ”¾"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
msgstr "éšæœºæ’­æ”¾"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "导航"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
msgstr "转到专辑"
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
msgstr "转到艺术家"
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
msgstr "转到歌曲"
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
msgstr "转到播放列表"
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "返回"
-#: data/ui/LastfmDialog.ui:24
+#: data/ui/LastfmDialog.ui:21
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
msgstr "Last.fm 是一项音ä¹å‘现æœåŠ¡ï¼Œå¯æ ¹æ®æ‚¨çš„所收å¬çš„音ä¹ä¸ºæ‚¨æ供个性化推è。"
-#: data/ui/LastfmDialog.ui:35 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
msgstr "音ä¹æŠ¥å‘Šæ²¡æœ‰è®¾ç½®"
-#: data/ui/LastfmDialog.ui:49 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
msgstr "登录您的 Last.fm å¸å·ä»¥ä¾¿æŠ¥å‘Šæ‚¨çš„音ä¹æ”¶å¬æƒ…况。"
-#: data/ui/LastfmDialog.ui:60 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "登录"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "正在加载"
-
-#: data/ui/PlayerToolbar.ui:105
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
msgstr "上一首"
-#: data/ui/PlayerToolbar.ui:139
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
msgstr "下一首"
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "移除(_D)"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "é‡å‘½å(_R)…"
-#: data/ui/PlaylistControls.ui:44
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "播放列表å"
-#: data/ui/PlaylistControls.ui:77
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "完æˆ(_D)"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
msgstr "输入您首个播放列表的å称"
-#: data/ui/PlaylistDialog.ui:88
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "创建(_R)"
-#: data/ui/PlaylistDialog.ui:156
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
msgstr "新建播放列表…"
-#: data/ui/PlaylistDialog.ui:167
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "添加"
-#: data/ui/PlaylistDialog.ui:208
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
msgstr "添加到播放列表"
-#: data/ui/PlaylistDialog.ui:224
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "添加(_A)"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "撤销(_U)"
-
-#: data/ui/SearchView.ui:47 gnomemusic/views/artistsview.py:46
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "艺术家"
-#: data/ui/SearchView.ui:57 data/ui/SearchView.ui:108
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "查看所有"
-#: data/ui/SearchView.ui:98 gnomemusic/views/albumsview.py:50
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "专辑"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:47
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "歌曲"
@@ -427,44 +356,64 @@ msgstr "全选"
msgid "Select None"
msgstr "å…¨ä¸é€‰"
-#: data/ui/SelectionBarMenuButton.ui:30 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
msgstr "点击æ¡ç›®ä»¥é€‰ä¸­å®ƒä»¬"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
msgstr "添加到播放列表(_A)"
-#: data/ui/SongWidgetMenu.ui:29
-msgid "Add to Playlist…"
-msgstr "添加到播放列表…"
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "从播放列表移除(_R)"
+
+#: gnomemusic/about.py:245
+msgid "The GNOME Project"
+msgstr "GNOME 项目"
-#: data/ui/SongWidgetMenu.ui:39
-msgid "Remove From Playlist"
-msgstr "从播放列表移除"
+#: gnomemusic/about.py:249
+msgid "translator-credits"
+msgstr ""
+"tuhaihe <1132321739qq@gmail.com>, 2013\n"
+"Tong Hui <tonghuix@gmail.com>, 2013\n"
+"sphinx <yishanj@gmail.com>, 2014\n"
+"Mingcong Bai <jeffbai@aosc.xyz>, 2018\n"
+"Dingzhong Chen <wsxy162@gmail.com>, 2018, 2019\n"
+"Cheng Lu <chenglu1990@gmail.com>, 2016, 2020\n"
+"lumingzh <lumingzh@qq.com>, 2022\n"
+"Boyuan Yang <byang@debian.org>, 2022"
+
+#: gnomemusic/about.py:253
+msgid "Copyright The GNOME Music Developers"
+msgstr "版æƒæ‰€æœ‰ GNOME“音ä¹â€å¼€å‘者"
+
+#: gnomemusic/about.py:256
+msgid "Translated by"
+msgstr "翻译贡献者"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:898
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "最多播放"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:952
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "从未播放"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1005
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
msgstr "最近播放"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1068
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
msgstr "最近添加"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1131
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "收è—歌曲"
@@ -496,27 +445,39 @@ msgid "Playing music"
msgstr "正在播放音ä¹"
#. Translators: "shuffle" causes tracks to play in random order.
-#: gnomemusic/player.py:45
-msgid "Shuffle"
-msgstr "éšæœºæ’­æ”¾"
+#: gnomemusic/player.py:44
+msgid "Shuffle/Repeat Off"
+msgstr "关闭“éšæœº/é‡å¤æ’­æ”¾â€"
-#: gnomemusic/player.py:46
+#: gnomemusic/player.py:45
msgid "Repeat Song"
msgstr "é‡å¤æ’­æ”¾"
-#: gnomemusic/player.py:47
+#: gnomemusic/player.py:46
msgid "Repeat All"
msgstr "全部é‡æ’­"
-#: gnomemusic/player.py:48
-msgid "Shuffle/Repeat Off"
-msgstr "关闭“éšæœº/é‡å¤æ’­æ”¾â€"
+#: gnomemusic/player.py:47
+msgid "Shuffle"
+msgstr "éšæœºæ’­æ”¾"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "播放列表 {} 已移除"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "撤消"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "{} 已从 {} 移除"
-#: gnomemusic/utils.py:80
+#: gnomemusic/utils.py:92
msgid "Unknown album"
msgstr "未知专辑"
-#: gnomemusic/utils.py:101
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
msgstr "未知艺术家"
@@ -562,62 +523,122 @@ msgstr "音ä¹éœ€è¦ Tracker 版本 3.0.0 或更高。"
msgid "Playlists"
msgstr "播放列表"
-#: gnomemusic/views/searchview.py:420
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
msgstr "艺术家结果"
-#: gnomemusic/views/searchview.py:435
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
msgstr "专辑结果"
-#: gnomemusic/widgets/albumwidget.py:237
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} 分钟"
-#: gnomemusic/widgets/disclistboxwidget.py:75
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
msgstr "唱片 {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "已选中 {} 首歌曲"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
msgstr "您的音ä¹æ”¶å¬æƒ…况将报告给 Last.fm。"
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
msgstr "您的音ä¹æ”¶å¬æƒ…况ä¸ä¼šæŠ¥å‘Šç»™ Last.fm。"
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
msgstr "以 {} 登录"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "设置"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "播放列表 {} 已移除"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} 已从 {} 移除"
-
-#: gnomemusic/widgets/playertoolbar.py:174
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "æš‚åœ"
-#: gnomemusic/widgets/playlistcontrols.py:132
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} 首歌曲"
+#: gnomemusic/widgets/searchheaderbar.py:66
+msgid "Search songs, artists, albums and playlists"
+msgstr "æœç´¢æ­Œæ›²ã€è‰ºæœ¯å®¶ã€ä¸“辑和播放列表"
+
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "GNOME 音ä¹æ’­æ”¾åŠç®¡ç†ç¨‹åºã€‚"
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "访问“GNOME 音ä¹â€ç½‘ç«™"
+
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "GNOME 音ä¹æ˜¯è‡ªç”±è½¯ä»¶ï¼›æ‚¨å¯ä»¥åœ¨è‡ªç”±è½¯ä»¶åŸºé‡‘会å‘布的 GNU 通用公共许å¯è¯çš„æ¡"
+#~ "款下é‡æ–°åˆ†å‘和(或)修改它;您å¯ä»¥é€‰æ‹©ä½¿ç”¨ GPL 第二版,或(按照您的æ„愿)"
+#~ "任何更新的版本。\n"
+#~ "\n"
+#~ "GNOME 音ä¹åˆ†å‘的目的是希望它物有所用,但是没有任何担ä¿ï¼›æ²¡æœ‰å¯¹å…¶é€‚销性和æŸ"
+#~ "一特定目的下的适用性的任何å³ä¾¿æ˜¯æš—示的担ä¿ã€‚请查阅 GNU 通用公共许å¯è¯ä»¥èŽ·"
+#~ "得更多信æ¯ã€‚\n"
+#~ "\n"
+#~ "您应当已ç»è·Ÿ GNOME 音ä¹ä¸€èµ·æ”¶åˆ°ä¸€ä»½ GNU 通用公众许å¯è¯çš„副本;如果没有,请"
+#~ "写信至:Free Software Foundation, Inc.,\n"
+#~ "51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\n"
+#~ "\n"
+#~ "GNOME 音ä¹çš„ä½œè€…åœ¨æ­¤å¯¹éž GPL 兼容的 GStreamer æ’ä»¶åŒ GNOME 音ä¹åŠ "
+#~ "GStreamer 一é“使用åŠåˆ†å‘给予许å¯ã€‚该许å¯ä¼˜äºŽå¹¶è¦†ç›–在 GNOME 音ä¹çš„ GPL 授æƒ"
+#~ "许å¯ä¹‹ä¸Šã€‚如果您修改该代ç ï¼Œæ‚¨å¯ä»¥å°†è¯¥ä¾‹å¤–扩展到您的代ç ï¼Œä½†éžå¼ºåˆ¶ã€‚如果您"
+#~ "ä¸æ„¿æ„如此,从您的版本中删除该例外声明。"
+
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "您的音ä¹æ–‡ä»¶å¤¹çš„内容将会显示在此处"
+
+#~ msgid "GNOME Music"
+#~ msgstr "GNOME 音ä¹"
+
+#~ msgid "Window position"
+#~ msgstr "窗å£ä½ç½®"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "窗å£ä½ç½®ï¼ˆæ°´å¹³å’Œç«–直)。"
+
+#~ msgid "Loading"
+#~ msgstr "正在加载"
+
+#~ msgid "Add to Playlist…"
+#~ msgstr "添加到播放列表…"
+
#~ msgid ""
#~ "An easy way to play your music. Automatically discover music on your "
#~ "computer, the local network and internet services."
diff --git a/po/zh_TW.po b/po/zh_TW.po
index a2b26425..aad1e8cc 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -3,52 +3,47 @@
# This file is distributed under the same license as the gnome-music package.
#
# pan93412 <pan93412@gmail.com>, 2019.
+# Freddy Cheng <freddy4212@gmail.com>, 2022.
+#
msgid ""
msgstr ""
"Project-Id-Version: gnome-music master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n"
-"POT-Creation-Date: 2020-10-05 15:17+0000\n"
-"PO-Revision-Date: 2020-10-12 22:06+0800\n"
+"POT-Creation-Date: 2022-08-31 19:15+0000\n"
+"PO-Revision-Date: 2022-10-18 21:08+0800\n"
"Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
-"Language-Team: Chinese <zh-l10n@linux.org.tw>\n"
+"Language-Team: Chinese - Taiwan <chinese-l10n@googlegroups.com>\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.4.1\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Poedit 3.1.1\n"
#: data/org.gnome.Music.appdata.xml.in.in:6
-msgid "GNOME Music"
-msgstr "GNOME 音樂"
+#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/about.py:236
+#: gnomemusic/application.py:61 gnomemusic/window.py:71
+msgid "Music"
+msgstr "音樂"
#: data/org.gnome.Music.appdata.xml.in.in:7
#: data/org.gnome.Music.desktop.in.in:5
msgid "Play and organize your music collection"
-msgstr "播放與組織您的音樂收è—集"
+msgstr "播放與管ç†æ‚¨æ‰€æ”¶è—的音樂"
#: data/org.gnome.Music.appdata.xml.in.in:9
-msgid ""
-"An easy way to play your music. Automatically discover music on your "
-"computer, the local network and internet services."
-msgstr "用簡單的方å¼æ’­æ”¾éŸ³æ¨‚,自動探索您電腦ã€å€åŸŸç¶²è·¯å’Œç¶²éš›ç¶²è·¯æœå‹™ä¸­çš„音樂。"
+msgid "An easy and pleasant way to play your music."
+msgstr "一種輕鬆且愉悅的音樂播放方å¼ã€‚"
#: data/org.gnome.Music.appdata.xml.in.in:12
msgid ""
-"Find tracks in your local collection, get music from DLNA servers or try "
-"something new with the Jamendo and Magnatune services."
-msgstr ""
-"在您的本地集åˆä¸­æ‰¾å°‹æ›²ç›®ï¼Œå¾ž DLNA 伺æœå™¨å–得音樂或é€éŽ Jamendo å’Œ Magnatune "
-"æœå‹™æ‰¾å°‹äº›æ–°éŸ³æ¨‚。"
+"Find tracks in your local collection, use automatically generated playlists "
+"or curate a fresh one."
+msgstr "尋找您電腦中的音樂,並能自動產生或是自行編排播放列表。"
-#: data/org.gnome.Music.appdata.xml.in.in:133
+#: data/org.gnome.Music.appdata.xml.in.in:167
msgid "The GNOME Music developers"
-msgstr "GNOME 音樂開發團隊"
-
-#: data/org.gnome.Music.desktop.in.in:3 gnomemusic/application.py:60
-#: gnomemusic/window.py:70
-msgid "Music"
-msgstr "音樂"
+msgstr "GNOME 音樂開發群"
#: data/org.gnome.Music.desktop.in.in:4
msgid "Music Player"
@@ -57,7 +52,7 @@ msgstr "音樂播放器"
#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
#: data/org.gnome.Music.desktop.in.in:13
msgid "Music;Player;"
-msgstr "Music;Player;音樂;播放器;"
+msgstr "Music;Player;音樂;播放器;mp3;è½éŸ³æ¨‚;æ­Œ;lastfm;"
#: data/org.gnome.Music.gschema.xml:12
msgid "Window size"
@@ -65,267 +60,204 @@ msgstr "視窗尺寸"
#: data/org.gnome.Music.gschema.xml:13
msgid "Window size (width and height)."
-msgstr "è¦–çª—å¤§å° (寬度與高度)。"
+msgstr "è¦–çª—å¤§å° (寬度,高度)。"
#: data/org.gnome.Music.gschema.xml:17
-msgid "Window position"
-msgstr "視窗ä½ç½®"
-
-#: data/org.gnome.Music.gschema.xml:18
-msgid "Window position (x and y)."
-msgstr "視窗ä½ç½® (x 與 y)。"
-
-#: data/org.gnome.Music.gschema.xml:22
msgid "Window maximized"
-msgstr "視窗已最大化"
+msgstr "視窗最大化"
-#: data/org.gnome.Music.gschema.xml:23
+#: data/org.gnome.Music.gschema.xml:18
msgid "Window maximized state."
-msgstr "視窗為最大化狀態。"
+msgstr "是å¦è¦æœ€å¤§åŒ–視窗。"
-#: data/org.gnome.Music.gschema.xml:27
+#: data/org.gnome.Music.gschema.xml:22
msgid "Playback repeat mode"
msgstr "é‡è¤‡æ’­æ”¾æ¨¡å¼"
#. Translators: Don't translate allowed values, just the description in the brackets
-#: data/org.gnome.Music.gschema.xml:29
+#: data/org.gnome.Music.gschema.xml:24
msgid ""
"Value identifies whether to repeat or randomize playback through the "
"collection. Allowed values are: “none†(repeat and shuffle are off), "
"“song†(repeat current song), “all†(repeat playlist, no shuffle), "
"“shuffle†(shuffle playlist, presumes repeat all)."
msgstr ""
-"用來辨別是è¦é‡è¤‡æ’­æ”¾æ”¶è—集或是亂數播放的值。å…許的值有:「noneã€(ä¸é‡è¤‡ä¹Ÿä¸éš¨"
-"æ©Ÿ)ã€ã€Œsongã€(é‡è¤‡ç›®å‰æ›²ç›®)ã€ã€Œallã€(é‡è¤‡æ’­æ”¾æ¸…單曲目,ä¸éš¨æ©Ÿ) 和「shuffleã€"
-"(隨機播放清單曲目,å‡å®šå…¨éƒ¨é‡è¤‡)。"
+"用來辨別是è¦é‡è¤‡æ’­æ”¾è’è—或隨機播放的值。å…許的值有:\n"
+"「noneã€ï¼ˆä¸é‡è¤‡ä¹Ÿä¸éš¨æ©Ÿï¼‰\n"
+"「songã€ï¼ˆé‡è¤‡ç›®å‰æ›²ç›®ï¼‰\n"
+"「allã€ï¼ˆé‡è¤‡æ’­æ”¾æ¸…單曲目,ä¸éš¨æ©Ÿï¼‰\n"
+"「shuffleã€ï¼ˆéš¨æ©Ÿæ’­æ”¾æ¸…單曲目,å‡å®šå…¨éƒ¨é‡è¤‡ï¼‰"
-#: data/org.gnome.Music.gschema.xml:33
+#: data/org.gnome.Music.gschema.xml:28
msgid "Enable ReplayGain"
msgstr "啟用播放增益"
-#: data/org.gnome.Music.gschema.xml:34
+#: data/org.gnome.Music.gschema.xml:29
msgid "Enables or disables ReplayGain for albums"
msgstr "啟用或åœç”¨å°ˆè¼¯çš„播放增益"
-#: data/org.gnome.Music.gschema.xml:38
-msgid "Inital state has been displayed"
-msgstr "已顯示åˆå§‹ç‹€æ…‹"
-
-#: data/org.gnome.Music.gschema.xml:39
-msgid "Set to true when initial state has been displayed"
-msgstr "當顯示åˆå§‹ç‹€æ…‹è¨­å®šç‚º true"
-
-#: data/org.gnome.Music.gschema.xml:43
+#: data/org.gnome.Music.gschema.xml:33
msgid "Inhibit system suspend"
msgstr "防止系統暫åœ"
-#: data/org.gnome.Music.gschema.xml:44
+#: data/org.gnome.Music.gschema.xml:34
msgid "Enables or disables inhibiting system suspend while playing music"
-msgstr "啟用或åœç”¨éŸ³æ¨‚播放時的防止系統暫åœåŠŸèƒ½"
+msgstr "啟用或åœç”¨éŸ³æ¨‚播放時的防止系統進入暫åœ"
-#: data/org.gnome.Music.gschema.xml:48
+#: data/org.gnome.Music.gschema.xml:38
msgid "Report music history to Last.fm"
-msgstr "回報音樂歷å²è¨˜éŒ„至 Last.fm"
+msgstr "將音樂記錄上傳至《Last.fm》"
-#: data/org.gnome.Music.gschema.xml:49
+#: data/org.gnome.Music.gschema.xml:39
msgid ""
"Enables or disables sending scrobbles and the “currently playing†info to "
"Last.fm."
-msgstr "啟用ï¼åœç”¨å‚³é€éŸ³æ¨‚記錄åŠã€Œç›®å‰æ’­æ”¾ã€è³‡è¨Šçµ¦ Last.fm。"
+msgstr "啟用/åœç”¨ä¸Šå‚³éŸ³æ¨‚記錄åŠã€Œç›®å‰æ’­æ”¾ã€è³‡è¨Šè‡³ã€ŠLast.fm》。"
-#: data/ui/AboutDialog.ui.in:9
-msgid "Copyright © 2018 GNOME Music Developers"
-msgstr "著作權所有 © 2018 GNOME Music 開發團隊"
+#: data/ui/AlbumWidget.ui:84 data/ui/PlayerToolbar.ui:87
+#: data/ui/PlaylistControls.ui:101 gnomemusic/widgets/playertoolbar.py:170
+msgid "Play"
+msgstr "播放"
-#: data/ui/AboutDialog.ui.in:10
-msgid "A music player and management application for GNOME."
-msgstr "GNOME 的音樂播放器與管ç†å“¡ã€‚"
+#: data/ui/AlbumWidget.ui:130 data/ui/PlaylistControls.ui:5
+#: data/ui/SongWidgetMenu.ui:11
+msgid "_Play"
+msgstr "播放(_P)"
-#: data/ui/AboutDialog.ui.in:12
-msgid "Visit GNOME Music website"
-msgstr "åƒè¨ª GNOME Music 網站"
+#: data/ui/AlbumWidget.ui:134
+msgid "Add to _Favorite Songs"
+msgstr "加入喜愛的歌曲(_F)"
-#: data/ui/AboutDialog.ui.in:13
-msgid ""
-"GNOME Music is free software; you can redistribute it and/or modify it under "
-"the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version.\n"
-"\n"
-"GNOME Music is distributed in the hope that it will be useful, but WITHOUT "
-"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
-"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
-"more details.\n"
-"\n"
-"You should have received a copy of the GNU General Public License along with "
-"GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
-"Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
-"\n"
-"The GNOME Music authors hereby grant permission for non-GPL compatible "
-"GStreamer plugins to be used and distributed together with GStreamer and "
-"GNOME Music. This permission is above and beyond the permissions granted by "
-"the GPL license by which GNOME Music is covered. If you modify this code, "
-"you may extend this exception to your version of the code, but you are not "
-"obligated to do so. If you do not wish to do so, delete this exception "
-"statement from your version.\n"
-"\n"
-"“Magic of the vinyl†by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
-"https://www.flickr.com/photos/_spy_/12270839403"
-msgstr ""
-"GNOME Music 是自由軟體,您å¯ä»¥éµç…§è‡ªç”±è»Ÿé«”基金會 (Free Software Foundation) "
-"出版的 GNU 通用公共授權æ¢æ¬¾ (GNU General Public License) 第二版來修改和é‡æ–°ç™¼"
-"佈這一程å¼ï¼Œæˆ–者自由é¸æ“‡ä½¿ç”¨ä¹‹å¾Œçš„任何版本。\n"
-"\n"
-"發佈 GNOME Music 程å¼çš„目的是希望它有用,但「沒有任何擔ä¿ã€ï¼›ç”šè‡³ä¹Ÿæ²’有「å¯ä»¥"
-"銷售ã€æˆ–「é©åˆç‰¹å®šç›®çš„ã€ç­‰éš±ç¤ºæ€§æ“”ä¿ã€‚詳細內容請åƒé–± GNU 通用公共授權。\n"
-"\n"
-"您應該已經隨程å¼ä¸€èµ·æ”¶åˆ°ä¸€ä»½ GNU 通用公共授權的副本。如果還沒有,請寫信給:"
-"Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA "
-"02110-1301 USA.\n"
-"\n"
-"GNOME Music 作者群特此授予ä¸ç›¸å®¹æ–¼ GPL 授權的 GStreamer 外掛程å¼èƒ½éš¨ "
-"GStreamer åŠ GNOME Music 一åŒä½¿ç”¨ã€æ•£ä½ˆä¹‹è¨±å¯ã€‚這項許å¯é«˜æ–¼ä¸”超出 GNOME "
-"Music éµç…§ä¹‹ GPL 授權所授予之許å¯ç¯„åœã€‚如果您修改此份程å¼ç¢¼ï¼Œæ‚¨å¯ä»¥å°‡æ­¤ä¾‹å¤–æ¢"
-"款擴åŠè‡³æ‚¨è‡ªèº«çš„版本上,但您沒有義務必須也這麼作。如果您ä¸å¸Œæœ›æœ‰æ­¤ä¾‹å¤–æ¢æ¬¾ï¼Œ"
-"請將例外è²æ˜Žå¾žæ‚¨çš„版本中移除。\n"
-"\n"
-"\"Magic of the vinyl\" 作者 Sami Pyylampi å½±åƒæ˜¯ä»¥ CC-BY-SA 2.0 授權 https://"
-"www.flickr.com/photos/_spy_/12270839403"
-
-#: data/ui/AlbumWidget.ui:107
-msgid "Released"
-msgstr "發行"
-
-#: data/ui/AlbumWidget.ui:123
-msgid "Running Length"
-msgstr "播放長度"
-
-#: data/ui/AlbumWidget.ui:167
-msgid "Composer"
-msgstr "作曲家"
-
-#: data/ui/AppMenu.ui:20 data/ui/LastfmDialog.ui:8
+#: data/ui/AlbumWidget.ui:138 data/ui/SongWidgetMenu.ui:15
+msgid "_Add to Playlist…"
+msgstr "加入播放清單(_A)…"
+
+#: data/ui/AppMenu.ui:23 data/ui/LastfmDialog.ui:8
msgid "Last.fm Account"
-msgstr "Last.fm 帳戶"
+msgstr "Last.fm 帳號"
-#: data/ui/AppMenu.ui:38
+#: data/ui/AppMenu.ui:36
msgid "Report Music Listening"
-msgstr "回報è†è½ä¸­çš„音樂"
+msgstr "上傳音樂è†è½ç´€éŒ„"
-#: data/ui/AppMenu.ui:69
+#: data/ui/AppMenu.ui:58
msgid "_Keyboard Shortcuts"
msgstr "éµç›¤æ·å¾‘éµ(_K)"
-#: data/ui/AppMenu.ui:83
+#: data/ui/AppMenu.ui:68
msgid "_Help"
msgstr "求助(_H)"
-#: data/ui/AppMenu.ui:97
+#: data/ui/AppMenu.ui:78
msgid "_About Music"
-msgstr "關於《音樂》(_A)"
+msgstr "關於音樂(_A)"
+
+#: data/ui/EmptyView.ui:30
+msgid "Welcome to Music"
+msgstr "歡迎使用《音樂》"
#: data/ui/HeaderBar.ui:16
msgid "Menu"
msgstr "é¸å–®"
-#: data/ui/HeaderBar.ui:39 data/ui/SearchHeaderBar.ui:16
+#: data/ui/HeaderBar.ui:24 data/ui/SearchHeaderBar.ui:15
msgid "Select"
-msgstr "é¸æ“‡"
+msgstr "é¸å–音樂"
-#: data/ui/HeaderBar.ui:60 data/ui/PlaylistDialog.ui:244
-#: data/ui/SearchHeaderBar.ui:37
+#: data/ui/HeaderBar.ui:30 data/ui/PlaylistDialog.ui:213
+#: data/ui/SearchHeaderBar.ui:20
msgid "_Cancel"
msgstr "å–消(_C)"
-#: data/ui/HeaderBar.ui:79 data/ui/SearchHeaderBar.ui:56
+#: data/ui/HeaderBar.ui:42 data/ui/SearchHeaderBar.ui:32
msgid "Search"
msgstr "æœå°‹"
-#: data/ui/HeaderBar.ui:102
+#: data/ui/HeaderBar.ui:50
msgid "Back"
msgstr "返回"
-#: data/ui/help-overlay.ui:13
+#: data/ui/help-overlay.ui:11
msgctxt "shortcut window"
msgid "General"
msgstr "一般"
-#: data/ui/help-overlay.ui:17
+#: data/ui/help-overlay.ui:14
msgctxt "shortcut window"
msgid "Close window"
msgstr "關閉視窗"
-#: data/ui/help-overlay.ui:24
+#: data/ui/help-overlay.ui:20
msgctxt "shortcut window"
msgid "Search"
msgstr "æœå°‹"
-#: data/ui/help-overlay.ui:31
+#: data/ui/help-overlay.ui:26
msgctxt "shortcut window"
msgid "Help"
msgstr "求助"
-#: data/ui/help-overlay.ui:38
+#: data/ui/help-overlay.ui:32
msgctxt "shortcut window"
msgid "Shortcuts"
msgstr "æ·å¾‘éµ"
-#: data/ui/help-overlay.ui:47
+#: data/ui/help-overlay.ui:40
msgctxt "shortcut window"
msgid "Playback"
msgstr "播放控制"
-#: data/ui/help-overlay.ui:51
+#: data/ui/help-overlay.ui:43
msgctxt "shortcut window"
msgid "Play/Pause"
msgstr "播放/æš«åœ"
-#: data/ui/help-overlay.ui:58
+#: data/ui/help-overlay.ui:49
msgctxt "shortcut window"
msgid "Next song"
msgstr "下一首"
-#: data/ui/help-overlay.ui:65
+#: data/ui/help-overlay.ui:55
msgctxt "shortcut window"
msgid "Previous song"
msgstr "上一首"
-#: data/ui/help-overlay.ui:72
+#: data/ui/help-overlay.ui:61
msgctxt "shortcut window"
msgid "Toggle repeat"
-msgstr "切æ›é‡è¤‡èˆ‡å¦"
+msgstr "切æ›é‡è¤‡æ’­æ”¾æ¨¡å¼"
-#: data/ui/help-overlay.ui:79
+#: data/ui/help-overlay.ui:67
msgctxt "shortcut window"
msgid "Toggle shuffle"
-msgstr "切æ›éš¨æ©Ÿèˆ‡å¦"
+msgstr "切æ›éš¨æ©Ÿæ’­æ”¾æ¨¡å¼"
-#: data/ui/help-overlay.ui:88
+#: data/ui/help-overlay.ui:75
msgctxt "shortcut window"
msgid "Navigation"
msgstr "導覽"
-#: data/ui/help-overlay.ui:92
+#: data/ui/help-overlay.ui:78
msgctxt "shortcut window"
msgid "Go to Albums"
-msgstr "å‰å¾€ã€Œå°ˆè¼¯ã€"
+msgstr "å‰å¾€å°ˆè¼¯åˆ†é "
-#: data/ui/help-overlay.ui:99
+#: data/ui/help-overlay.ui:84
msgctxt "shortcut window"
msgid "Go to Artists"
-msgstr "å‰å¾€ã€Œæ¼”出者ã€"
+msgstr "å‰å¾€æ¼”出者分é "
-#: data/ui/help-overlay.ui:106
+#: data/ui/help-overlay.ui:90
msgctxt "shortcut window"
msgid "Go to Songs"
-msgstr "å‰å¾€ã€Œæ­Œæ›²ã€"
+msgstr "å‰å¾€æ­Œæ›²åˆ†é "
-#: data/ui/help-overlay.ui:113
+#: data/ui/help-overlay.ui:96
msgctxt "shortcut window"
msgid "Go to Playlists"
-msgstr "å‰å¾€ã€Œæ’­æ”¾æ¸…å–®ã€"
+msgstr "å‰å¾€æ’­æ”¾æ¸…單分é "
-#: data/ui/help-overlay.ui:120
+#: data/ui/help-overlay.ui:102
msgctxt "shortcut window"
msgid "Go back"
msgstr "返回"
@@ -334,127 +266,82 @@ msgstr "返回"
msgid ""
"Last.fm is a music discovery service that gives you personalised "
"recommendations based on the music you listen to."
-msgstr "Last.fm是一種音樂發ç¾æœå‹™ï¼Œå¯ä»¥æ ¹æ“šæ‚¨æ”¶è½çš„音樂為您æ供個人化建議。"
+msgstr ""
+"《Last.fm》是一種音樂探索æœå‹™ï¼Œèƒ½æ ¹æ“šæ‚¨çš„è†è½ç¿’æ…£æ供個人化的音樂建議。"
-#: data/ui/LastfmDialog.ui:32 gnomemusic/widgets/lastfmdialog.py:58
+#: data/ui/LastfmDialog.ui:31 gnomemusic/widgets/lastfmdialog.py:57
msgid "Music Reporting Not Setup"
-msgstr "音樂報告未設定"
+msgstr "音樂è†è½ç´€éŒ„上傳功能尚未åˆå§‹åŒ–"
-#: data/ui/LastfmDialog.ui:46 gnomemusic/widgets/lastfmdialog.py:61
+#: data/ui/LastfmDialog.ui:44 gnomemusic/widgets/lastfmdialog.py:60
msgid "Login to your Last.fm account to report your music listening."
-msgstr "登入您的 Last.fm 帳號以報告您的音樂收è½ã€‚"
+msgstr "登入您的《Last.fm》帳號後便能上傳音樂è†è½ç´€éŒ„。"
-#: data/ui/LastfmDialog.ui:57 gnomemusic/widgets/lastfmdialog.py:59
+#: data/ui/LastfmDialog.ui:55 gnomemusic/widgets/lastfmdialog.py:58
msgid "Login"
msgstr "登入"
-#: data/ui/LoadingNotification.ui:16
-msgid "Loading"
-msgstr "正在載入"
-
-#: data/ui/PlayerToolbar.ui:6
-msgid "Shuffle"
-msgstr "亂數"
-
-#: data/ui/PlayerToolbar.ui:11
-msgid "Repeat All"
-msgstr "全部é‡è¤‡æ’­æ”¾"
-
-#: data/ui/PlayerToolbar.ui:16
-msgid "Repeat Song"
-msgstr "é‡è¤‡æ’­æ”¾æ­Œæ›²"
-
-#. Causes tracks to play in random order
-#: data/ui/PlayerToolbar.ui:21
-msgid "Shuffle/Repeat Off"
-msgstr "亂數/é‡è¤‡æ’­æ”¾é—œé–‰"
-
-#: data/ui/PlayerToolbar.ui:69
+#: data/ui/PlayerToolbar.ui:74
msgid "Previous"
-msgstr "å‰ä¸€é¦–"
+msgstr "上一曲"
-#: data/ui/PlayerToolbar.ui:85 gnomemusic/widgets/playertoolbar.py:146
-msgid "Play"
-msgstr "播放"
-
-#: data/ui/PlayerToolbar.ui:101
+#: data/ui/PlayerToolbar.ui:106
msgid "Next"
-msgstr "下一首"
-
-#: data/ui/PlaylistContextMenu.ui:5
-msgctxt "context menu item"
-msgid "Play"
-msgstr "播放"
+msgstr "下一曲"
-#: data/ui/PlaylistContextMenu.ui:9
-msgid "Add to Playlist…"
-msgstr "加入至播放清單…"
-
-#: data/ui/PlaylistContextMenu.ui:13
-msgid "Remove From Playlist"
-msgstr "從播放清單移除"
-
-#: data/ui/PlaylistControls.ui:6
-msgid "_Play"
-msgstr "播放(_P)"
-
-#: data/ui/PlaylistControls.ui:10
+#: data/ui/PlaylistControls.ui:9
msgid "_Delete"
msgstr "刪除(_D)"
-#: data/ui/PlaylistControls.ui:14
+#: data/ui/PlaylistControls.ui:13
msgid "_Rename…"
msgstr "é‡æ–°å‘½å(_R)…"
-#: data/ui/PlaylistControls.ui:41
+#: data/ui/PlaylistControls.ui:28
msgid "Playlist Name"
msgstr "播放清單å稱"
-#: data/ui/PlaylistControls.ui:74
+#: data/ui/PlaylistControls.ui:62
msgid "_Done"
msgstr "完æˆ(_D)"
-#: data/ui/PlaylistDialog.ui:66
+#: data/ui/PlaylistDialog.ui:52
msgid "Enter a name for your first playlist"
-msgstr "輸入您第一個播放清單的å稱"
+msgstr "為您的第一個播放清單命å"
-#: data/ui/PlaylistDialog.ui:92
+#: data/ui/PlaylistDialog.ui:77
msgid "C_reate"
msgstr "建立(_R)"
-#: data/ui/PlaylistDialog.ui:155
+#: data/ui/PlaylistDialog.ui:146
msgid "New Playlist…"
-msgstr "新增播放清單…"
+msgstr "新播放清單…"
-#: data/ui/PlaylistDialog.ui:169
+#: data/ui/PlaylistDialog.ui:161
msgid "Add"
msgstr "加入"
-#: data/ui/PlaylistDialog.ui:241
+#: data/ui/PlaylistDialog.ui:202
msgid "Add to Playlist"
-msgstr "加入至播放清單"
+msgstr "加入播放清單"
-#: data/ui/PlaylistDialog.ui:257
+#: data/ui/PlaylistDialog.ui:222
msgid "_Add"
msgstr "加入(_A)"
-#: data/ui/PlaylistNotification.ui:22
-msgid "_Undo"
-msgstr "復原(_U)"
-
-#: data/ui/SearchView.ui:43 gnomemusic/views/artistsview.py:43
+#: data/ui/SearchView.ui:33 gnomemusic/views/artistsview.py:51
msgid "Artists"
msgstr "演出者"
-#: data/ui/SearchView.ui:53 data/ui/SearchView.ui:106
+#: data/ui/SearchView.ui:42 data/ui/SearchView.ui:84
msgid "View All"
msgstr "檢視全部"
-#: data/ui/SearchView.ui:96 gnomemusic/views/albumsview.py:47
+#: data/ui/SearchView.ui:75 gnomemusic/views/albumsview.py:56
msgid "Albums"
msgstr "專輯"
-#: data/ui/SearchView.ui:149 gnomemusic/views/songsview.py:44
+#: data/ui/SearchView.ui:117 gnomemusic/views/songsview.py:52
msgid "Songs"
msgstr "歌曲"
@@ -466,176 +353,338 @@ msgstr "å…¨é¸"
msgid "Select None"
msgstr "å–消全é¸"
-#: data/ui/SelectionBarMenuButton.ui:31 gnomemusic/widgets/headerbar.py:71
+#: data/ui/SelectionBarMenuButton.ui:19 gnomemusic/widgets/headerbar.py:69
msgid "Click on items to select them"
-msgstr "點按項目來é¸å–它們"
+msgstr "點一下å³å¯é¸å–é …ç›®"
-#: data/ui/SelectionToolbar.ui:9
+#: data/ui/SelectionToolbar.ui:8
msgid "_Add to Playlist"
-msgstr "加入至播放清單(_A)"
+msgstr "加入播放清單(_A)"
+
+#: data/ui/SongWidgetMenu.ui:19
+msgid "_Remove from Playlist"
+msgstr "自播放清單中移除(_R)"
+
+#: gnomemusic/about.py:238
+msgid "The GNOME Project"
+msgstr "GNOME 專案"
+
+#: gnomemusic/about.py:242
+msgid "translator-credits"
+msgstr ""
+"Yi-Jyun Pan <pan93412@gmail.com>, 2019.\n"
+"Freddy Cheng <freddy4212@gmail.com>, 2922."
+
+#: gnomemusic/about.py:246
+msgid "Copyright The GNOME Music Developers"
+msgstr "著作權所有 ©《音樂》開發者群"
+
+#: gnomemusic/about.py:249
+msgid "Translated by"
+msgstr "翻譯者"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:827
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:894
msgid "Most Played"
msgstr "最常播放"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:880
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:948
msgid "Never Played"
msgstr "從未播放"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:932
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1001
msgid "Recently Played"
-msgstr "最近播放"
+msgstr "近期播放"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:994
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1064
msgid "Recently Added"
-msgstr "最近加入"
+msgstr "近期加入"
#. TRANSLATORS: this is a playlist name
-#: gnomemusic/grilowrappers/grltrackerplaylists.py:1056
+#: gnomemusic/grilowrappers/grltrackerplaylists.py:1127
msgid "Favorite Songs"
msgstr "喜愛的歌曲"
-#: gnomemusic/gstplayer.py:378
+#: gnomemusic/gstplayer.py:408
msgid "Unable to play the file"
-msgstr "無法播放這個檔案"
+msgstr "無法播放該檔案"
-#: gnomemusic/gstplayer.py:384
+#: gnomemusic/gstplayer.py:414
msgid "_Find in {}"
-msgstr "於 {} 尋找(_F)"
+msgstr "於「{}ã€ä¸­å°‹æ‰¾(_F)"
#. TRANSLATORS: separator for two codecs
-#: gnomemusic/gstplayer.py:394
+#: gnomemusic/gstplayer.py:424
msgid " and "
-msgstr " 和 "
+msgstr " 與 "
#. TRANSLATORS: separator for a list of codecs
-#: gnomemusic/gstplayer.py:397
+#: gnomemusic/gstplayer.py:427
msgid ", "
msgstr "ã€"
-#: gnomemusic/gstplayer.py:399
+#: gnomemusic/gstplayer.py:429
msgid "{} is required to play the file, but is not installed."
msgid_plural "{} are required to play the file, but are not installed."
-msgstr[0] "éœ€è¦ {} æ‰èƒ½æ’­æ”¾é€™å€‹æª”案,但尚未安è£ã€‚"
+msgstr[0] "需安è£ã€Œ{}ã€å¾Œæ‰èƒ½æ’­æ”¾è©²æª”案。"
#: gnomemusic/inhibitsuspend.py:63
msgid "Playing music"
-msgstr "正在播放音樂"
+msgstr "播放中的音樂"
+
+#. Translators: "shuffle" causes tracks to play in random order.
+#: gnomemusic/player.py:44
+msgid "Shuffle"
+msgstr "隨機播放"
+
+#: gnomemusic/player.py:45
+msgid "Repeat Song"
+msgstr "單曲é‡è¤‡æ’­æ”¾"
+
+#: gnomemusic/player.py:46
+msgid "Repeat All"
+msgstr "全部é‡è¤‡æ’­æ”¾"
+
+#: gnomemusic/player.py:47
+msgid "Shuffle/Repeat Off"
+msgstr "隨機/é‡è¤‡æ’­æ”¾é—œé–‰"
+
+#: gnomemusic/playlisttoast.py:55
+msgid "Playlist {} removed"
+msgstr "已移除「{}ã€"
+
+#: gnomemusic/playlisttoast.py:56 gnomemusic/songtoast.py:65
+msgid "Undo"
+msgstr "還原"
+
+#: gnomemusic/songtoast.py:64
+msgid "{} removed from {}"
+msgstr "「{}ã€å·²å¾žã€Œ{}ã€ä¸­ç§»é™¤"
-#: gnomemusic/utils.py:81
+#: gnomemusic/utils.py:92
msgid "Unknown album"
-msgstr "未知專輯"
+msgstr "ä¸æ˜Žå°ˆè¼¯"
-#: gnomemusic/utils.py:102
+#: gnomemusic/utils.py:113
msgid "Unknown Artist"
-msgstr "ä¸æ˜Žçš„演出者"
+msgstr "ä¸æ˜Žæ¼”出者"
-#: gnomemusic/views/emptyview.py:67
+#: gnomemusic/views/emptyview.py:65
msgid "Your XDG Music directory is not set."
-msgstr "您未設定 XDG 音樂目錄。"
+msgstr "尚未設定 XDG 音樂目錄。"
-#: gnomemusic/views/emptyview.py:74
-msgid "Music folder"
+#: gnomemusic/views/emptyview.py:72
+msgid "Music Folder"
msgstr "音樂資料夾"
#. TRANSLATORS: This is a label to display a link to open user's music
#. folder. {} will be replaced with the translated text 'Music folder'
-#: gnomemusic/views/emptyview.py:78
+#: gnomemusic/views/emptyview.py:76
msgid "The contents of your {} will appear here."
-msgstr "您的 {} 的內容會出ç¾åœ¨é€™è£¡ã€‚"
+msgstr "您ä½æ–¼{}中的內容會顯示於此。"
-#: gnomemusic/views/emptyview.py:112
-msgid "Hey DJ"
-msgstr "嘿 DJ"
-
-#: gnomemusic/views/emptyview.py:121 gnomemusic/views/emptyview.py:126
-msgid "No music found"
+#: gnomemusic/views/emptyview.py:124
+msgid "No Music Found"
msgstr "找ä¸åˆ°éŸ³æ¨‚"
-#: gnomemusic/views/emptyview.py:128
-msgid "Try a different search"
-msgstr "請嘗試ä¸åŒçš„æœå°‹"
+#: gnomemusic/views/emptyview.py:125
+msgid "Try a Different Search"
+msgstr "請嘗試ä¸åŒçš„æœå°‹å…§å®¹"
-#: gnomemusic/views/emptyview.py:133
-msgid "GNOME Music could not connect to Tracker"
-msgstr "GNOME 音樂無法連線到 Tracker"
+#: gnomemusic/views/emptyview.py:129
+msgid "GNOME Music could not connect to Tracker."
+msgstr "《音樂》無法連接《Tracker》。"
-#: gnomemusic/views/emptyview.py:136
-msgid "Your music files cannot be indexed without Tracker running"
-msgstr "若 Tracker 未執行,將無法索引您的音樂檔案"
+#: gnomemusic/views/emptyview.py:131
+msgid "Your music files cannot be indexed without Tracker running."
+msgstr "倘若《Tracker》未執行便無法檢索音樂檔案。"
-#: gnomemusic/views/emptyview.py:143
-msgid "Your system Tracker version seems outdated"
-msgstr "系統 Tracker 版本似乎éŽèˆŠ"
+#: gnomemusic/views/emptyview.py:137
+msgid "Your system Tracker version seems outdated."
+msgstr "系統所安è£çš„《Tracker》版本似乎éŽèˆŠã€‚"
-#: gnomemusic/views/emptyview.py:146
-msgid "Music needs Tracker version 3.0.0 or higher"
-msgstr "ã€ŠéŸ³æ¨‚ã€‹éœ€è¦ Tracker 3.0.0 版或更高版本"
+#: gnomemusic/views/emptyview.py:139
+msgid "Music needs Tracker version 3.0.0 or higher."
+msgstr "《音樂》需è¦ã€ŠTracker》3.0.0 以上的版本。"
-#: gnomemusic/views/playlistsview.py:41
+#: gnomemusic/views/playlistsview.py:45
msgid "Playlists"
msgstr "播放清單"
-#: gnomemusic/views/searchview.py:386
+#: gnomemusic/views/searchview.py:304
msgid "Artists Results"
-msgstr "演出者çµæžœ"
+msgstr "演出者æœå°‹çµæžœ"
-#: gnomemusic/views/searchview.py:401
+#: gnomemusic/views/searchview.py:318
msgid "Albums Results"
-msgstr "專輯çµæžœ"
+msgstr "專輯æœå°‹çµæžœ"
-#: gnomemusic/widgets/albumwidget.py:154
+#: gnomemusic/widgets/albumwidget.py:245
msgid "{} minute"
msgid_plural "{} minutes"
msgstr[0] "{} 分é˜"
-#: gnomemusic/widgets/disclistboxwidget.py:60
+#: gnomemusic/widgets/discbox.py:75
msgid "Disc {}"
-msgstr "碟片 {}"
+msgstr "光碟 {}"
-#: gnomemusic/widgets/headerbar.py:68
+#: gnomemusic/widgets/headerbar.py:66
msgid "Selected {} song"
msgid_plural "Selected {} songs"
msgstr[0] "å·±é¸å– {} 首歌"
-#: gnomemusic/widgets/lastfmdialog.py:65
+#: gnomemusic/widgets/lastfmdialog.py:64
msgid "Your music listening is reported to Last.fm."
-msgstr "您的音樂收è½å·²å›žå ±è‡³ Last.fm。"
+msgstr "您的音樂è†è½ç´€éŒ„將會上傳至《Last.fm》。"
-#: gnomemusic/widgets/lastfmdialog.py:67
+#: gnomemusic/widgets/lastfmdialog.py:66
msgid "Your music listening is not reported to Last.fm."
-msgstr "您的音樂收è½ä¸æœƒå›žå ±è‡³ Last.fm。"
+msgstr "您的音樂è†è½ç´€éŒ„ä¸æœƒä¸Šå‚³è‡³ã€ŠLast.fm》。"
#. TRANSLATORS: displays the username of the Last.fm account
-#: gnomemusic/widgets/lastfmdialog.py:71
+#: gnomemusic/widgets/lastfmdialog.py:70
msgid "Logged in as {}"
-msgstr "登入為 {}"
+msgstr "以「{}ã€ç™»å…¥"
-#: gnomemusic/widgets/lastfmdialog.py:72
+#: gnomemusic/widgets/lastfmdialog.py:71
msgid "Configure"
msgstr "設定"
-#: gnomemusic/widgets/notificationspopup.py:216
-msgid "Playlist {} removed"
-msgstr "播放清單 {} 已移除"
-
-#: gnomemusic/widgets/notificationspopup.py:220
-msgid "{} removed from {}"
-msgstr "{} 已從 {} 移除"
-
-#: gnomemusic/widgets/playertoolbar.py:143
+#: gnomemusic/widgets/playertoolbar.py:167
msgid "Pause"
msgstr "æš«åœ"
-#: gnomemusic/widgets/playlistcontrols.py:127
+#: gnomemusic/widgets/playlistcontrols.py:130
msgid "{} Song"
msgid_plural "{} Songs"
msgstr[0] "{} 首歌曲"
+#~ msgid "A music player and management application for GNOME."
+#~ msgstr "GNOME 的音樂播放與管ç†æ‡‰ç”¨ç¨‹å¼ã€‚"
+
+#~ msgid "Visit GNOME Music website"
+#~ msgstr "造訪《音樂》網站"
+
+#~| msgid ""
+#~| "GNOME Music is free software; you can redistribute it and/or modify it "
+#~| "under the terms of the GNU General Public License as published by the "
+#~| "Free Software Foundation; either version 2 of the License, or (at your "
+#~| "option) any later version.\n"
+#~| "\n"
+#~| "GNOME Music is distributed in the hope that it will be useful, but "
+#~| "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~| "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "
+#~| "General Public License for more details.\n"
+#~| "\n"
+#~| "You should have received a copy of the GNU General Public License along "
+#~| "with GNOME Music; if not, write to the Free Software Foundation, Inc., "
+#~| "51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~| "\n"
+#~| "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~| "GStreamer plugins to be used and distributed together with GStreamer and "
+#~| "GNOME Music. This permission is above and beyond the permissions "
+#~| "granted by the GPL license by which GNOME Music is covered. If you "
+#~| "modify this code, you may extend this exception to your version of the "
+#~| "code, but you are not obligated to do so. If you do not wish to do so, "
+#~| "delete this exception statement from your version.\n"
+#~| "\n"
+#~| "“Magic of the vinyl†by Sami Pyylampi image is licensed by CC-BY-SA 2.0 "
+#~| "https://www.flickr.com/photos/_spy_/12270839403"
+#~ msgid ""
+#~ "GNOME Music is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version.\n"
+#~ "\n"
+#~ "GNOME Music is distributed in the hope that it will be useful, but "
+#~ "WITHOUT ANY WARRANTY; without even the implied warranty of "
+#~ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General "
+#~ "Public License for more details.\n"
+#~ "\n"
+#~ "You should have received a copy of the GNU General Public License along "
+#~ "with GNOME Music; if not, write to the Free Software Foundation, Inc., 51 "
+#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "The GNOME Music authors hereby grant permission for non-GPL compatible "
+#~ "GStreamer plugins to be used and distributed together with GStreamer and "
+#~ "GNOME Music. This permission is above and beyond the permissions granted "
+#~ "by the GPL license by which GNOME Music is covered. If you modify this "
+#~ "code, you may extend this exception to your version of the code, but you "
+#~ "are not obligated to do so. If you do not wish to do so, delete this "
+#~ "exception statement from your version."
+#~ msgstr ""
+#~ "《音樂》為自由軟體,您å¯ä»¥éµç…§è‡ªç”±è»Ÿé«”基金會 (Free Software Foundation) 所"
+#~ "出版的 《GNU 通用公共授權æ¢æ¬¾ã€‹ (GNU General Public License) 第二版來修改"
+#~ "å’Œé‡æ–°ç™¼å¸ƒé€™ä¸€ç¨‹å¼ï¼›æ‚¨ä¹Ÿèƒ½è‡ªç”±é¸æ“‡ä¹‹å¾Œçš„任何版本åšä½¿ç”¨ã€‚\n"
+#~ "\n"
+#~ "我們將《音樂》無償æ供給所有人使用,但「沒有任何擔ä¿è²¬ä»»ã€ï¼›ç”šè‡³ä¹Ÿæ²’有「å¯"
+#~ "以銷售ã€æˆ–「é©åˆç‰¹å®šç›®çš„ã€ç­‰éš±ç¤ºæ€§æ“”ä¿ã€‚詳情請åƒé–±ã€ŠGNU 通用公共授權æ¢"
+#~ "款》。\n"
+#~ "\n"
+#~ "您應該已隨本程å¼ä¸€èµ·æ”¶åˆ°ä¸€ä»½ã€ŠGNU 通用公共授權æ¢æ¬¾ã€‹çš„副本。倘若您尚未收"
+#~ "到,請寫å°ä¿¡è‡³ï¼šFree Software Foundation, Inc., 51 Franklin Street, Fifth "
+#~ "Floor, Boston, MA 02110-1301 USA.\n"
+#~ "\n"
+#~ "《GNOME 音樂》作者群特此授予ä¸ç›¸å®¹æ–¼ GPL 授權的 GStreamer 外掛程å¼èƒ½éš¨ "
+#~ "GStreamer åŠã€ŠGNOME 音樂》一åŒä½¿ç”¨ã€æ•£ä½ˆä¹‹è¨±å¯ã€‚這項許å¯é«˜æ–¼ä¸”超出《GNOME "
+#~ "音樂》éµç…§ä¹‹ GPL 授權所授予之許å¯ç¯„åœã€‚如果您修改此份程å¼ç¢¼ï¼Œæ‚¨å¯ä»¥å°‡æ­¤ä¾‹"
+#~ "外æ¢æ¬¾æ“´åŠè‡³æ‚¨è‡ªèº«çš„版本上,但您沒有義務必須跟著這麼作。如果您ä¸å¸Œæœ›æœ‰æ­¤ä¾‹"
+#~ "外æ¢æ¬¾ï¼Œè«‹å°‡ä¾‹å¤–è²æ˜Žå¾žæ‚¨çš„版本中移除。"
+
+#~| msgid "The contents of your {} will appear here."
+#~ msgid "The contents of your Music Folder will appear here"
+#~ msgstr "您ä½æ–¼éŸ³æ¨‚資料夾中的內容會顯示於此"
+
+#~ msgid "GNOME Music"
+#~ msgstr "GNOME 音樂"
+
+#~ msgid ""
+#~ "An easy way to play your music. Automatically discover music on your "
+#~ "computer, the local network and internet services."
+#~ msgstr ""
+#~ "用簡單的方å¼æ’­æ”¾éŸ³æ¨‚,自動探索您電腦ã€å€åŸŸç¶²è·¯å’Œç¶²éš›ç¶²è·¯æœå‹™ä¸­çš„音樂。"
+
+#~ msgid ""
+#~ "Find tracks in your local collection, get music from DLNA servers or try "
+#~ "something new with the Jamendo and Magnatune services."
+#~ msgstr ""
+#~ "在您的本地集åˆä¸­æ‰¾å°‹æ›²ç›®ï¼Œå¾ž DLNA 伺æœå™¨å–得音樂或é€éŽ Jamendo å’Œ "
+#~ "Magnatune æœå‹™æ‰¾å°‹äº›æ–°éŸ³æ¨‚。"
+
+#~ msgid "Window position"
+#~ msgstr "視窗ä½ç½®"
+
+#~ msgid "Window position (x and y)."
+#~ msgstr "視窗ä½ç½® (x 與 y)。"
+
+#~ msgid "Inital state has been displayed"
+#~ msgstr "已顯示åˆå§‹ç‹€æ…‹"
+
+#~ msgid "Set to true when initial state has been displayed"
+#~ msgstr "當顯示åˆå§‹ç‹€æ…‹è¨­å®šç‚º true"
+
+#~ msgid "Released"
+#~ msgstr "發行"
+
+#~ msgid "Running Length"
+#~ msgstr "播放長度"
+
+#~ msgid "Composer"
+#~ msgstr "作曲家"
+
+#~ msgid "Loading"
+#~ msgstr "正在載入"
+
+#~ msgctxt "context menu item"
+#~ msgid "Play"
+#~ msgstr "播放"
+
+#~ msgid "Hey DJ"
+#~ msgstr "嘿 DJ"
+
#~ msgid "Untitled"
#~ msgstr "無標題"
diff --git a/subprojects/gfm/gtkfilterlistmodel.c b/subprojects/gfm/gtkfilterlistmodel.c
deleted file mode 100644
index 5cfd4542..00000000
--- a/subprojects/gfm/gtkfilterlistmodel.c
+++ /dev/null
@@ -1,711 +0,0 @@
-/*
- * Copyright © 2018 Benjamin Otte
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: Benjamin Otte <otte@gnome.org>
- */
-
-// #include "config.h"
-
-#include "gtkfilterlistmodel.h"
-
-#include "gtkrbtreeprivate.h"
-#include "gtkintl.h"
-// #include "gtkprivate.h"
-
-/**
- * SECTION:gtkfilterlistmodel
- * @title: GtkFilterListModel
- * @short_description: A list model that filters its items
- * @see_also: #GListModel
- *
- * #GtkFilterListModel is a list model that filters a given other
- * listmodel.
- * It hides some elements from the other model according to
- * criteria given by a #GtkFilterListModelFilterFunc.
- */
-
-enum {
- PROP_0,
- PROP_HAS_FILTER,
- PROP_ITEM_TYPE,
- PROP_MODEL,
- NUM_PROPERTIES
-};
-
-typedef struct _FilterNode FilterNode;
-typedef struct _FilterAugment FilterAugment;
-
-struct _FilterNode
-{
- guint visible : 1;
-};
-
-struct _FilterAugment
-{
- guint n_items;
- guint n_visible;
-};
-
-struct _GtkFilterListModel
-{
- GObject parent_instance;
-
- GType item_type;
- GListModel *model;
- GtkFilterListModelFilterFunc filter_func;
- gpointer user_data;
- GDestroyNotify user_destroy;
-
- GtkRbTree *items; /* NULL if filter_func == NULL */
-};
-
-struct _GtkFilterListModelClass
-{
- GObjectClass parent_class;
-};
-
-static GParamSpec *properties[NUM_PROPERTIES] = { NULL, };
-
-static FilterNode *
-gtk_filter_list_model_get_nth_filtered (GtkRbTree *tree,
- guint position,
- guint *out_unfiltered)
-{
- FilterNode *node, *tmp;
- guint unfiltered;
-
- node = gtk_rb_tree_get_root (tree);
- unfiltered = 0;
-
- while (node)
- {
- tmp = gtk_rb_tree_node_get_left (node);
- if (tmp)
- {
- FilterAugment *aug = gtk_rb_tree_get_augment (tree, tmp);
- if (position < aug->n_visible)
- {
- node = tmp;
- continue;
- }
- position -= aug->n_visible;
- unfiltered += aug->n_items;
- }
-
- if (node->visible)
- {
- if (position == 0)
- break;
- position--;
- }
-
- unfiltered++;
-
- node = gtk_rb_tree_node_get_right (node);
- }
-
- if (out_unfiltered)
- *out_unfiltered = unfiltered;
-
- return node;
-}
-
-static FilterNode *
-gtk_filter_list_model_get_nth (GtkRbTree *tree,
- guint position,
- guint *out_filtered)
-{
- FilterNode *node, *tmp;
- guint filtered;
-
- node = gtk_rb_tree_get_root (tree);
- filtered = 0;
-
- while (node)
- {
- tmp = gtk_rb_tree_node_get_left (node);
- if (tmp)
- {
- FilterAugment *aug = gtk_rb_tree_get_augment (tree, tmp);
- if (position < aug->n_items)
- {
- node = tmp;
- continue;
- }
- position -= aug->n_items;
- filtered += aug->n_visible;
- }
-
- if (position == 0)
- break;
-
- position--;
- if (node->visible)
- filtered++;
-
- node = gtk_rb_tree_node_get_right (node);
- }
-
- if (out_filtered)
- *out_filtered = filtered;
-
- return node;
-}
-
-static GType
-gtk_filter_list_model_get_item_type (GListModel *list)
-{
- GtkFilterListModel *self = GTK_FILTER_LIST_MODEL (list);
-
- return self->item_type;
-}
-
-static guint
-gtk_filter_list_model_get_n_items (GListModel *list)
-{
- GtkFilterListModel *self = GTK_FILTER_LIST_MODEL (list);
- FilterAugment *aug;
- FilterNode *node;
-
- if (self->model == NULL)
- return 0;
-
- if (!self->items)
- return g_list_model_get_n_items (self->model);
-
- node = gtk_rb_tree_get_root (self->items);
- if (node == NULL)
- return 0;
-
- aug = gtk_rb_tree_get_augment (self->items, node);
- return aug->n_visible;
-}
-
-static gpointer
-gtk_filter_list_model_get_item (GListModel *list,
- guint position)
-{
- GtkFilterListModel *self = GTK_FILTER_LIST_MODEL (list);
- guint unfiltered;
-
- if (self->model == NULL)
- return NULL;
-
- if (self->items)
- gtk_filter_list_model_get_nth_filtered (self->items, position, &unfiltered);
- else
- unfiltered = position;
-
- return g_list_model_get_item (self->model, unfiltered);
-}
-
-static void
-gtk_filter_list_model_model_init (GListModelInterface *iface)
-{
- iface->get_item_type = gtk_filter_list_model_get_item_type;
- iface->get_n_items = gtk_filter_list_model_get_n_items;
- iface->get_item = gtk_filter_list_model_get_item;
-}
-
-G_DEFINE_TYPE_WITH_CODE (GtkFilterListModel, gtk_filter_list_model, G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, gtk_filter_list_model_model_init))
-
-static gboolean
-gtk_filter_list_model_run_filter (GtkFilterListModel *self,
- guint position)
-{
- gpointer item;
- gboolean visible;
-
- item = g_list_model_get_item (self->model, position);
- visible = self->filter_func (item, self->user_data);
- g_object_unref (item);
-
- return visible;
-}
-
-static guint
-gtk_filter_list_model_add_items (GtkFilterListModel *self,
- FilterNode *after,
- guint position,
- guint n_items)
-{
- FilterNode *node;
- guint i, n_visible;
-
- n_visible = 0;
-
- for (i = 0; i < n_items; i++)
- {
- node = gtk_rb_tree_insert_before (self->items, after);
- node->visible = gtk_filter_list_model_run_filter (self, position + i);
- if (node->visible)
- n_visible++;
- }
-
- return n_visible;
-}
-
-static void
-gtk_filter_list_model_items_changed_cb (GListModel *model,
- guint position,
- guint removed,
- guint added,
- GtkFilterListModel *self)
-{
- FilterNode *node;
- guint i, filter_position, filter_removed, filter_added;
-
- if (self->items == NULL)
- {
- g_list_model_items_changed (G_LIST_MODEL (self), position, removed, added);
- return;
- }
-
- node = gtk_filter_list_model_get_nth (self->items, position, &filter_position);
-
- filter_removed = 0;
- for (i = 0; i < removed; i++)
- {
- FilterNode *next = gtk_rb_tree_node_get_next (node);
- if (node->visible)
- filter_removed++;
- gtk_rb_tree_remove (self->items, node);
- node = next;
- }
-
- filter_added = gtk_filter_list_model_add_items (self, node, position, added);
-
- if (filter_removed > 0 || filter_added > 0)
- g_list_model_items_changed (G_LIST_MODEL (self), filter_position, filter_removed, filter_added);
-}
-
-static void
-gtk_filter_list_model_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GtkFilterListModel *self = GTK_FILTER_LIST_MODEL (object);
-
- switch (prop_id)
- {
- case PROP_ITEM_TYPE:
- self->item_type = g_value_get_gtype (value);
- break;
-
- case PROP_MODEL:
- gtk_filter_list_model_set_model (self, g_value_get_object (value));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gtk_filter_list_model_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GtkFilterListModel *self = GTK_FILTER_LIST_MODEL (object);
-
- switch (prop_id)
- {
- case PROP_HAS_FILTER:
- g_value_set_boolean (value, self->items != NULL);
- break;
-
- case PROP_ITEM_TYPE:
- g_value_set_gtype (value, self->item_type);
- break;
-
- case PROP_MODEL:
- g_value_set_object (value, self->model);
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gtk_filter_list_model_clear_model (GtkFilterListModel *self)
-{
- if (self->model == NULL)
- return;
-
- g_signal_handlers_disconnect_by_func (self->model, gtk_filter_list_model_items_changed_cb, self);
- g_clear_object (&self->model);
- if (self->items)
- gtk_rb_tree_remove_all (self->items);
-}
-
-static void
-gtk_filter_list_model_dispose (GObject *object)
-{
- GtkFilterListModel *self = GTK_FILTER_LIST_MODEL (object);
-
- gtk_filter_list_model_clear_model (self);
- if (self->user_destroy)
- self->user_destroy (self->user_data);
- self->filter_func = NULL;
- self->user_data = NULL;
- self->user_destroy = NULL;
- g_clear_pointer (&self->items, gtk_rb_tree_unref);
-
- G_OBJECT_CLASS (gtk_filter_list_model_parent_class)->dispose (object);
-}
-
-static void
-gtk_filter_list_model_class_init (GtkFilterListModelClass *class)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (class);
-
- gobject_class->set_property = gtk_filter_list_model_set_property;
- gobject_class->get_property = gtk_filter_list_model_get_property;
- gobject_class->dispose = gtk_filter_list_model_dispose;
-
- /**
- * GtkFilterListModel:has-filter:
- *
- * If a filter is set for this model
- */
- properties[PROP_HAS_FILTER] =
- g_param_spec_boolean ("has-filter",
- P_("has filter"),
- P_("If a filter is set for this model"),
- FALSE,
- GTK_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY);
-
- /**
- * GtkFilterListModel:item-type:
- *
- * The #GType for elements of this object
- */
- properties[PROP_ITEM_TYPE] =
- g_param_spec_gtype ("item-type",
- P_("Item type"),
- P_("The type of elements of this object"),
- G_TYPE_OBJECT,
- GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_EXPLICIT_NOTIFY);
-
- /**
- * GtkFilterListModel:model:
- *
- * The model being filtered
- */
- properties[PROP_MODEL] =
- g_param_spec_object ("model",
- P_("Model"),
- P_("The model being filtered"),
- G_TYPE_LIST_MODEL,
- GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_EXPLICIT_NOTIFY);
-
- g_object_class_install_properties (gobject_class, NUM_PROPERTIES, properties);
-}
-
-static void
-gtk_filter_list_model_init (GtkFilterListModel *self)
-{
-}
-
-
-static void
-gtk_filter_list_model_augment (GtkRbTree *filter,
- gpointer _aug,
- gpointer _node,
- gpointer left,
- gpointer right)
-{
- FilterNode *node = _node;
- FilterAugment *aug = _aug;
-
- aug->n_items = 1;
- aug->n_visible = node->visible ? 1 : 0;
-
- if (left)
- {
- FilterAugment *left_aug = gtk_rb_tree_get_augment (filter, left);
- aug->n_items += left_aug->n_items;
- aug->n_visible += left_aug->n_visible;
- }
- if (right)
- {
- FilterAugment *right_aug = gtk_rb_tree_get_augment (filter, right);
- aug->n_items += right_aug->n_items;
- aug->n_visible += right_aug->n_visible;
- }
-}
-
-/**
- * gtk_filter_list_model_new:
- * @model: the model to sort
- * @filter_func: (allow-none): filter function or %NULL to not filter items
- * @user_data: (closure): user data passed to @filter_func
- * @user_destroy: destroy notifier for @user_data
- *
- * Creates a new #GtkFilterListModel that will filter @model using the given
- * @filter_func.
- *
- * Returns: a new #GtkFilterListModel
- **/
-GtkFilterListModel *
-gtk_filter_list_model_new (GListModel *model,
- GtkFilterListModelFilterFunc filter_func,
- gpointer user_data,
- GDestroyNotify user_destroy)
-{
- GtkFilterListModel *result;
-
- g_return_val_if_fail (G_IS_LIST_MODEL (model), NULL);
-
- result = g_object_new (GTK_TYPE_FILTER_LIST_MODEL,
- "item-type", g_list_model_get_item_type (model),
- "model", model,
- NULL);
-
- if (filter_func)
- gtk_filter_list_model_set_filter_func (result, filter_func, user_data, user_destroy);
-
- return result;
-}
-
-/**
- * gtk_filter_list_model_new_for_type:
- * @item_type: the type of the items that will be returned
- *
- * Creates a new empty filter list model set up to return items of type @item_type.
- * It is up to the application to set a proper filter function and model to ensure
- * the item type is matched.
- *
- * Returns: a new #GtkFilterListModel
- **/
-GtkFilterListModel *
-gtk_filter_list_model_new_for_type (GType item_type)
-{
- g_return_val_if_fail (g_type_is_a (item_type, G_TYPE_OBJECT), NULL);
-
- return g_object_new (GTK_TYPE_FILTER_LIST_MODEL,
- "item-type", item_type,
- NULL);
-}
-
-/**
- * gtk_filter_list_model_set_filter_func:
- * @self: a #GtkFilterListModel
- * @filter_func: (allow-none): filter function or %NULL to not filter items
- * @user_data: (closure): user data passed to @filter_func
- * @user_destroy: destroy notifier for @user_data
- *
- * Sets the function used to filter items. The function will be called for every
- * item and if it returns %TRUE the item is considered visible.
- **/
-void
-gtk_filter_list_model_set_filter_func (GtkFilterListModel *self,
- GtkFilterListModelFilterFunc filter_func,
- gpointer user_data,
- GDestroyNotify user_destroy)
-{
- gboolean was_filtered, will_be_filtered;
-
- g_return_if_fail (GTK_IS_FILTER_LIST_MODEL (self));
- g_return_if_fail (filter_func != NULL || (user_data == NULL && !user_destroy));
-
- was_filtered = self->filter_func != NULL;
- will_be_filtered = filter_func != NULL;
-
- if (!was_filtered && !will_be_filtered)
- return;
-
- if (self->user_destroy)
- self->user_destroy (self->user_data);
-
- self->filter_func = filter_func;
- self->user_data = user_data;
- self->user_destroy = user_destroy;
-
- if (!will_be_filtered)
- {
- g_clear_pointer (&self->items, gtk_rb_tree_unref);
- }
- else if (!was_filtered)
- {
- guint i, n_items;
-
- self->items = gtk_rb_tree_new (FilterNode,
- FilterAugment,
- gtk_filter_list_model_augment,
- NULL, NULL);
- if (self->model)
- {
- n_items = g_list_model_get_n_items (self->model);
- for (i = 0; i < n_items; i++)
- {
- FilterNode *node = gtk_rb_tree_insert_before (self->items, NULL);
- node->visible = TRUE;
- }
- }
- }
-
- gtk_filter_list_model_refilter (self);
-
- if (was_filtered != will_be_filtered)
- g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_HAS_FILTER]);
-}
-
-/**
- * gtk_filter_list_model_set_model:
- * @self: a #GtkFilterListModel
- * @model: (allow-none): The model to be filtered
- *
- * Sets the model to be filtered.
- *
- * Note that GTK makes no effort to ensure that @model conforms to
- * the item type of @self. It assumes that the caller knows what they
- * are doing and have set up an appropriate filter function to ensure
- * that item types match.
- **/
-void
-gtk_filter_list_model_set_model (GtkFilterListModel *self,
- GListModel *model)
-{
- guint removed, added;
-
- g_return_if_fail (GTK_IS_FILTER_LIST_MODEL (self));
- g_return_if_fail (model == NULL || G_IS_LIST_MODEL (model));
- /* Note: We don't check for matching item type here, we just assume the
- * filter func takes care of filtering wrong items. */
-
- if (self->model == model)
- return;
-
- removed = g_list_model_get_n_items (G_LIST_MODEL (self));
- gtk_filter_list_model_clear_model (self);
-
- if (model)
- {
- self->model = g_object_ref (model);
- g_signal_connect (model, "items-changed", G_CALLBACK (gtk_filter_list_model_items_changed_cb), self);
- if (self->items)
- added = gtk_filter_list_model_add_items (self, NULL, 0, g_list_model_get_n_items (model));
- else
- added = g_list_model_get_n_items (model);
- }
- else
- added = 0;
-
- if (removed > 0 || added > 0)
- g_list_model_items_changed (G_LIST_MODEL (self), 0, removed, added);
-
- g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_MODEL]);
-}
-
-/**
- * gtk_filter_list_model_get_model:
- * @self: a #GtkFilterListModel
- *
- * Gets the model currently filtered or %NULL if none.
- *
- * Returns: (nullable) (transfer none): The model that gets filtered
- **/
-GListModel *
-gtk_filter_list_model_get_model (GtkFilterListModel *self)
-{
- g_return_val_if_fail (GTK_IS_FILTER_LIST_MODEL (self), NULL);
-
- return self->model;
-}
-
-/**
- * gtk_filter_list_model_has_filter:
- * @self: a #GtkFilterListModel
- *
- * Checks if a filter function is currently set on @self
- *
- * Returns: %TRUE if a filter function is set
- **/
-gboolean
-gtk_filter_list_model_has_filter (GtkFilterListModel *self)
-{
- g_return_val_if_fail (GTK_IS_FILTER_LIST_MODEL (self), FALSE);
-
- return self->filter_func != NULL;
-}
-
-/**
- * gtk_filter_list_model_refilter:
- * @self: a #GtkFilterListModel
- *
- * Causes @self to refilter all items in the model.
- *
- * Calling this function is necessary when data used by the filter
- * function has changed.
- **/
-void
-gtk_filter_list_model_refilter (GtkFilterListModel *self)
-{
- FilterNode *node;
- guint i, first_change, last_change;
- guint n_is_visible, n_was_visible;
- gboolean visible;
-
- g_return_if_fail (GTK_IS_FILTER_LIST_MODEL (self));
-
- if (self->items == NULL || self->model == NULL)
- return;
-
- first_change = G_MAXUINT;
- last_change = 0;
- n_is_visible = 0;
- n_was_visible = 0;
- for (i = 0, node = gtk_rb_tree_get_first (self->items);
- node != NULL;
- i++, node = gtk_rb_tree_node_get_next (node))
- {
- visible = gtk_filter_list_model_run_filter (self, i);
- if (visible == node->visible)
- {
- if (visible)
- {
- n_is_visible++;
- n_was_visible++;
- }
- continue;
- }
-
- node->visible = visible;
- gtk_rb_tree_node_mark_dirty (node);
- first_change = MIN (n_is_visible, first_change);
- if (visible)
- n_is_visible++;
- else
- n_was_visible++;
- last_change = MAX (n_is_visible, last_change);
- }
-
- if (first_change <= last_change)
- {
- g_list_model_items_changed (G_LIST_MODEL (self),
- first_change,
- last_change - first_change + n_was_visible - n_is_visible,
- last_change - first_change);
- }
-}
-
diff --git a/subprojects/gfm/gtkfilterlistmodel.h b/subprojects/gfm/gtkfilterlistmodel.h
deleted file mode 100644
index d16bd2fc..00000000
--- a/subprojects/gfm/gtkfilterlistmodel.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright © 2018 Benjamin Otte
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: Benjamin Otte <otte@gnome.org>
- */
-
-#ifndef __GTK_FILTER_LIST_MODEL_H__
-#define __GTK_FILTER_LIST_MODEL_H__
-
-
-/* #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
- * #error "Only <gtk/gtk.h> can be included directly."
- * #endif
- */
-
-#include <gio/gio.h>
-#include <gtk/gtkwidget.h>
-
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_FILTER_LIST_MODEL (gtk_filter_list_model_get_type ())
-#define GTK_PARAM_READABLE G_PARAM_READABLE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB
-#define GTK_PARAM_READWRITE G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB
-
-GDK_AVAILABLE_IN_ALL
-G_DECLARE_FINAL_TYPE (GtkFilterListModel, gtk_filter_list_model, GTK, FILTER_LIST_MODEL, GObject)
-
-/**
- * GtkFilterListModelFilterFunc:
- * @item: (type GObject): The item that may be filtered
- * @user_data: user data
- *
- * User function that is called to determine if the @item of the original model should be visible.
- * If it should be visible, this function must return %TRUE. If the model should filter out the
- * @item, %FALSE must be returned.
- *
- * Returns: %TRUE to keep the item around
- */
-typedef gboolean (* GtkFilterListModelFilterFunc) (gpointer item, gpointer user_data);
-
-GDK_AVAILABLE_IN_ALL
-GtkFilterListModel * gtk_filter_list_model_new (GListModel *model,
- GtkFilterListModelFilterFunc filter_func,
- gpointer user_data,
- GDestroyNotify user_destroy);
-GDK_AVAILABLE_IN_ALL
-GtkFilterListModel * gtk_filter_list_model_new_for_type (GType item_type);
-
-GDK_AVAILABLE_IN_ALL
-void gtk_filter_list_model_set_filter_func (GtkFilterListModel *self,
- GtkFilterListModelFilterFunc filter_func,
- gpointer user_data,
- GDestroyNotify user_destroy);
-GDK_AVAILABLE_IN_ALL
-void gtk_filter_list_model_set_model (GtkFilterListModel *self,
- GListModel *model);
-GDK_AVAILABLE_IN_ALL
-GListModel * gtk_filter_list_model_get_model (GtkFilterListModel *self);
-GDK_AVAILABLE_IN_ALL
-gboolean gtk_filter_list_model_has_filter (GtkFilterListModel *self);
-
-GDK_AVAILABLE_IN_ALL
-void gtk_filter_list_model_refilter (GtkFilterListModel *self);
-
-G_END_DECLS
-
-#endif /* __GTK_FILTER_LIST_MODEL_H__ */
diff --git a/subprojects/gfm/gtkflattenlistmodel.c b/subprojects/gfm/gtkflattenlistmodel.c
deleted file mode 100644
index 0027f023..00000000
--- a/subprojects/gfm/gtkflattenlistmodel.c
+++ /dev/null
@@ -1,541 +0,0 @@
-/*
- * Copyright © 2018 Benjamin Otte
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: Benjamin Otte <otte@gnome.org>
- */
-
-// #include "config.h"
-
-#include "gtkflattenlistmodel.h"
-
-#include "gtkrbtreeprivate.h"
-#include "gtkintl.h"
-// #include "gtkprivate.h"
-
-/**
- * SECTION:gtkflattenlistmodel
- * @title: GtkFlattenListModel
- * @short_description: A list model that flattens a list of lists
- * @see_also: #GListModel
- *
- * #GtkFlattenListModel is a list model that takes a list model containing
- * list models and flattens it into a single model.
- *
- * Another term for this is concatenation: #GtkFlattenListModel takes a
- * list of lists and concatenates them into a single list.
- */
-
-enum {
- PROP_0,
- PROP_ITEM_TYPE,
- PROP_MODEL,
- NUM_PROPERTIES
-};
-
-typedef struct _FlattenNode FlattenNode;
-typedef struct _FlattenAugment FlattenAugment;
-
-struct _FlattenNode
-{
- GListModel *model;
- GtkFlattenListModel *list;
-};
-
-struct _FlattenAugment
-{
- guint n_items;
- guint n_models;
-};
-
-struct _GtkFlattenListModel
-{
- GObject parent_instance;
-
- GType item_type;
- GListModel *model;
- GtkRbTree *items; /* NULL if model == NULL */
-};
-
-struct _GtkFlattenListModelClass
-{
- GObjectClass parent_class;
-};
-
-static GParamSpec *properties[NUM_PROPERTIES] = { NULL, };
-
-static FlattenNode *
-gtk_flatten_list_model_get_nth (GtkRbTree *tree,
- guint position,
- guint *model_position)
-{
- FlattenNode *node, *tmp;
- guint model_n_items;
-
- node = gtk_rb_tree_get_root (tree);
-
- while (node)
- {
- tmp = gtk_rb_tree_node_get_left (node);
- if (tmp)
- {
- FlattenAugment *aug = gtk_rb_tree_get_augment (tree, tmp);
- if (position < aug->n_items)
- {
- node = tmp;
- continue;
- }
- position -= aug->n_items;
- }
-
- model_n_items = g_list_model_get_n_items (node->model);
- if (position < model_n_items)
- break;
- position -= model_n_items;
-
- node = gtk_rb_tree_node_get_right (node);
- }
-
- if (model_position)
- *model_position = node ? position : 0;
-
- return node;
-}
-
-static FlattenNode *
-gtk_flatten_list_model_get_nth_model (GtkRbTree *tree,
- guint position,
- guint *items_before)
-{
- FlattenNode *node, *tmp;
- guint before;
-
- node = gtk_rb_tree_get_root (tree);
- before = 0;
-
- while (node)
- {
- tmp = gtk_rb_tree_node_get_left (node);
- if (tmp)
- {
- FlattenAugment *aug = gtk_rb_tree_get_augment (tree, tmp);
- if (position < aug->n_models)
- {
- node = tmp;
- continue;
- }
- position -= aug->n_models;
- before += aug->n_items;
- }
-
- if (position == 0)
- break;
- position--;
- before += g_list_model_get_n_items (node->model);
-
- node = gtk_rb_tree_node_get_right (node);
- }
-
- if (items_before)
- *items_before = before;
-
- return node;
-}
-
-static GType
-gtk_flatten_list_model_get_item_type (GListModel *list)
-{
- GtkFlattenListModel *self = GTK_FLATTEN_LIST_MODEL (list);
-
- return self->item_type;
-}
-
-static guint
-gtk_flatten_list_model_get_n_items (GListModel *list)
-{
- GtkFlattenListModel *self = GTK_FLATTEN_LIST_MODEL (list);
- FlattenAugment *aug;
- FlattenNode *node;
-
- if (!self->items)
- return 0;
-
- node = gtk_rb_tree_get_root (self->items);
- if (node == NULL)
- return 0;
-
- aug = gtk_rb_tree_get_augment (self->items, node);
- return aug->n_items;
-}
-
-static gpointer
-gtk_flatten_list_model_get_item (GListModel *list,
- guint position)
-{
- GtkFlattenListModel *self = GTK_FLATTEN_LIST_MODEL (list);
- FlattenNode *node;
- guint model_pos;
-
- if (!self->items)
- return NULL;
-
- node = gtk_flatten_list_model_get_nth (self->items, position, &model_pos);
- if (node == NULL)
- return NULL;
-
- return g_list_model_get_item (node->model, model_pos);
-}
-
-static void
-gtk_flatten_list_model_model_init (GListModelInterface *iface)
-{
- iface->get_item_type = gtk_flatten_list_model_get_item_type;
- iface->get_n_items = gtk_flatten_list_model_get_n_items;
- iface->get_item = gtk_flatten_list_model_get_item;
-}
-
-G_DEFINE_TYPE_WITH_CODE (GtkFlattenListModel, gtk_flatten_list_model, G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, gtk_flatten_list_model_model_init))
-
-static void
-gtk_flatten_list_model_items_changed_cb (GListModel *model,
- guint position,
- guint removed,
- guint added,
- gpointer _node)
-{
- FlattenNode *node = _node, *parent, *left;
- GtkFlattenListModel *self = node->list;
- guint real_position;
-
- gtk_rb_tree_node_mark_dirty (node);
- real_position = position;
-
- left = gtk_rb_tree_node_get_left (node);
- if (left)
- {
- FlattenAugment *aug = gtk_rb_tree_get_augment (self->items, left);
- real_position += aug->n_items;
- }
-
- for (;
- (parent = gtk_rb_tree_node_get_parent (node)) != NULL;
- node = parent)
- {
- left = gtk_rb_tree_node_get_left (parent);
- if (left != node)
- {
- if (left)
- {
- FlattenAugment *aug = gtk_rb_tree_get_augment (self->items, left);
- real_position += aug->n_items;
- }
- real_position += g_list_model_get_n_items (parent->model);
- }
- }
-
- g_list_model_items_changed (G_LIST_MODEL (self), real_position, removed, added);
-}
-
-static void
-gtk_flatten_list_model_clear_node (gpointer _node)
-{
- FlattenNode *node= _node;
-
- g_signal_handlers_disconnect_by_func (node->model, gtk_flatten_list_model_items_changed_cb, node);
- g_object_unref (node->model);
-}
-
-static void
-gtk_flatten_list_model_augment (GtkRbTree *flatten,
- gpointer _aug,
- gpointer _node,
- gpointer left,
- gpointer right)
-{
- FlattenNode *node = _node;
- FlattenAugment *aug = _aug;
-
- aug->n_items = g_list_model_get_n_items (node->model);
- aug->n_models = 1;
-
- if (left)
- {
- FlattenAugment *left_aug = gtk_rb_tree_get_augment (flatten, left);
- aug->n_items += left_aug->n_items;
- aug->n_models += left_aug->n_models;
- }
- if (right)
- {
- FlattenAugment *right_aug = gtk_rb_tree_get_augment (flatten, right);
- aug->n_items += right_aug->n_items;
- aug->n_models += right_aug->n_models;
- }
-}
-
-static guint
-gtk_flatten_list_model_add_items (GtkFlattenListModel *self,
- FlattenNode *after,
- guint position,
- guint n)
-{
- FlattenNode *node;
- guint added, i;
-
- added = 0;
- for (i = 0; i < n; i++)
- {
- node = gtk_rb_tree_insert_before (self->items, after);
- node->model = g_list_model_get_item (self->model, position + i);
- g_warn_if_fail (g_type_is_a (g_list_model_get_item_type (node->model), self->item_type));
- g_signal_connect (node->model,
- "items-changed",
- G_CALLBACK (gtk_flatten_list_model_items_changed_cb),
- node);
- node->list = self;
- added +=g_list_model_get_n_items (node->model);
- }
-
- return added;
-}
-
-static void
-gtk_flatten_list_model_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GtkFlattenListModel *self = GTK_FLATTEN_LIST_MODEL (object);
-
- switch (prop_id)
- {
- case PROP_ITEM_TYPE:
- self->item_type = g_value_get_gtype (value);
- break;
-
- case PROP_MODEL:
- gtk_flatten_list_model_set_model (self, g_value_get_object (value));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gtk_flatten_list_model_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GtkFlattenListModel *self = GTK_FLATTEN_LIST_MODEL (object);
-
- switch (prop_id)
- {
- case PROP_ITEM_TYPE:
- g_value_set_gtype (value, self->item_type);
- break;
-
- case PROP_MODEL:
- g_value_set_object (value, self->model);
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gtk_flatten_list_model_model_items_changed_cb (GListModel *model,
- guint position,
- guint removed,
- guint added,
- GtkFlattenListModel *self)
-{
- FlattenNode *node;
- guint i, real_position, real_removed, real_added;
-
- node = gtk_flatten_list_model_get_nth_model (self->items, position, &real_position);
-
- real_removed = 0;
- for (i = 0; i < removed; i++)
- {
- FlattenNode *next = gtk_rb_tree_node_get_next (node);
- real_removed += g_list_model_get_n_items (node->model);
- gtk_rb_tree_remove (self->items, node);
- node = next;
- }
-
- real_added = gtk_flatten_list_model_add_items (self, node, position, added);
-
- if (real_removed > 0 || real_added > 0)
- g_list_model_items_changed (G_LIST_MODEL (self), real_position, real_removed, real_added);
-}
-
-static void
-gtk_flatten_list_clear_model (GtkFlattenListModel *self)
-{
- if (self->model)
- {
- g_signal_handlers_disconnect_by_func (self->model, gtk_flatten_list_model_model_items_changed_cb, self);
- g_clear_object (&self->model);
- g_clear_pointer (&self->items, gtk_rb_tree_unref);
- }
-}
-
-static void
-gtk_flatten_list_model_dispose (GObject *object)
-{
- GtkFlattenListModel *self = GTK_FLATTEN_LIST_MODEL (object);
-
- gtk_flatten_list_clear_model (self);
-
- G_OBJECT_CLASS (gtk_flatten_list_model_parent_class)->dispose (object);
-}
-
-static void
-gtk_flatten_list_model_class_init (GtkFlattenListModelClass *class)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (class);
-
- gobject_class->set_property = gtk_flatten_list_model_set_property;
- gobject_class->get_property = gtk_flatten_list_model_get_property;
- gobject_class->dispose = gtk_flatten_list_model_dispose;
-
- /**
- * GtkFlattenListModel:item-type:
- *
- * The #GTpe for elements of this object
- */
- properties[PROP_ITEM_TYPE] =
- g_param_spec_gtype ("item-type",
- P_("Item type"),
- P_("The type of elements of this object"),
- G_TYPE_OBJECT,
- GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_EXPLICIT_NOTIFY);
-
- /**
- * GtkFlattenListModel:model:
- *
- * The model being flattened
- */
- properties[PROP_MODEL] =
- g_param_spec_object ("model",
- P_("Model"),
- P_("The model being flattened"),
- G_TYPE_LIST_MODEL,
- GTK_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
-
- g_object_class_install_properties (gobject_class, NUM_PROPERTIES, properties);
-}
-
-static void
-gtk_flatten_list_model_init (GtkFlattenListModel *self)
-{
-}
-
-/**
- * gtk_flatten_list_model_new:
- * @item_type: The type of items in the to-be-flattened models
- * @model: (nullable) (transfer none): the item to be flattened
- *
- * Creates a new #GtkFlattenListModel that flattens @list. The
- * models returned by @model must conform to the given @item_type,
- * either by having an identical type or a subtype.
- *
- * Returns: a new #GtkFlattenListModel
- **/
-GtkFlattenListModel *
-gtk_flatten_list_model_new (GType item_type,
- GListModel *model)
-{
- GtkFlattenListModel *result;
-
- g_return_val_if_fail (g_type_is_a (item_type, G_TYPE_OBJECT), NULL);
- g_return_val_if_fail (model == NULL || G_IS_LIST_MODEL (model), NULL);
-
- result = g_object_new (GTK_TYPE_FLATTEN_LIST_MODEL,
- "item-type", item_type,
- "model", model,
- NULL);
-
- return result;
-}
-
-/**
- * gtk_flatten_list_model_set_model:
- * @self: a #GtkFlattenListModel
- * @model: (nullable) (transfer none): the new model or %NULL
- *
- * Sets a new model to be flattened. The model must contain items of
- * #GtkListModel that conform to the item type of @self.
- **/
-void
-gtk_flatten_list_model_set_model (GtkFlattenListModel *self,
- GListModel *model)
-{
- guint removed, added = 0;
-
- g_return_if_fail (GTK_IS_FLATTEN_LIST_MODEL (self));
- g_return_if_fail (model == NULL || G_IS_LIST_MODEL (model));
- if (model)
- {
- g_return_if_fail (g_type_is_a (g_list_model_get_item_type (model), G_TYPE_LIST_MODEL));
- }
-
- if (self->model == model)
- return;
-
- removed = g_list_model_get_n_items (G_LIST_MODEL (self));
- gtk_flatten_list_clear_model (self);
-
- self->model = model;
-
- if (model)
- {
- g_object_ref (model);
- g_signal_connect (model, "items-changed", G_CALLBACK (gtk_flatten_list_model_model_items_changed_cb), self);
- self->items = gtk_rb_tree_new (FlattenNode,
- FlattenAugment,
- gtk_flatten_list_model_augment,
- gtk_flatten_list_model_clear_node,
- NULL);
-
- added = gtk_flatten_list_model_add_items (self, NULL, 0, g_list_model_get_n_items (model));
- }
-
- if (removed > 0 || added > 0)
- g_list_model_items_changed (G_LIST_MODEL (self), 0, removed, added);
-
- g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_MODEL]);
-}
-
-/**
- * gtk_flatten_list_model_get_model:
- * @self: a #GtkFlattenListModel
- *
- * Gets the model set via gtk_flatten_list_model_set_model().
- *
- * Returns: (nullable) (transfer none): The model flattened by @self
- **/
-GListModel *
-gtk_flatten_list_model_get_model (GtkFlattenListModel *self)
-{
- g_return_val_if_fail (GTK_IS_FLATTEN_LIST_MODEL (self), NULL);
-
- return self->model;
-}
diff --git a/subprojects/gfm/gtkflattenlistmodel.h b/subprojects/gfm/gtkflattenlistmodel.h
deleted file mode 100644
index dec783f4..00000000
--- a/subprojects/gfm/gtkflattenlistmodel.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright © 2018 Benjamin Otte
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: Benjamin Otte <otte@gnome.org>
- */
-
-#ifndef __GTK_FLATTEN_LIST_MODEL_H__
-#define __GTK_FLATTEN_LIST_MODEL_H__
-
-
-/* #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
- * #error "Only <gtk/gtk.h> can be included directly."
- * #endif
- */
-
-#include <gdk/gdk.h>
-
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_FLATTEN_LIST_MODEL (gtk_flatten_list_model_get_type ())
-#define GTK_PARAM_READWRITE G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB
-
-GDK_AVAILABLE_IN_ALL
-G_DECLARE_FINAL_TYPE (GtkFlattenListModel, gtk_flatten_list_model, GTK, FLATTEN_LIST_MODEL, GObject)
-
-GDK_AVAILABLE_IN_ALL
-GtkFlattenListModel * gtk_flatten_list_model_new (GType item_type,
- GListModel *model);
-
-GDK_AVAILABLE_IN_ALL
-void gtk_flatten_list_model_set_model (GtkFlattenListModel *self,
- GListModel *model);
-GDK_AVAILABLE_IN_ALL
-GListModel * gtk_flatten_list_model_get_model (GtkFlattenListModel *self);
-
-G_END_DECLS
-
-#endif /* __GTK_FLATTEN_LIST_MODEL_H__ */
diff --git a/subprojects/gfm/gtkintl.h b/subprojects/gfm/gtkintl.h
deleted file mode 100644
index caeb68eb..00000000
--- a/subprojects/gfm/gtkintl.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef __GTKINTL_H__
-#define __GTKINTL_H__
-
-#include <glib/gi18n-lib.h>
-
-#ifdef ENABLE_NLS
-#define P_(String) g_dgettext(GETTEXT_PACKAGE "-properties",String)
-#else
-#define P_(String) (String)
-#endif
-
-/* not really I18N-related, but also a string marker macro */
-#define I_(string) g_intern_static_string (string)
-
-#endif
diff --git a/subprojects/gfm/gtkrbtree.c b/subprojects/gfm/gtkrbtree.c
deleted file mode 100644
index 8d706467..00000000
--- a/subprojects/gfm/gtkrbtree.c
+++ /dev/null
@@ -1,800 +0,0 @@
-/* gtkrbtree.c
- * Copyright (C) 2000 Red Hat, Inc., Jonathan Blandford <jrb@redhat.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- */
-
-// #include "config.h"
-
-#include "gtkrbtreeprivate.h"
-
-// #include "gtkdebug.h"
-
-/* Define the following to print adds and removals to stdout.
- * The format of the printout will be suitable for addition as a new test to
- * testsuite/gtk/rbtree-crash.c
- * by just grepping the printouts from the relevant rbtree.
- *
- * This is meant to be a trivial way to add rbtree tests to the testsuite.
- */
-#undef DUMP_MODIFICATION
-
-typedef struct _GtkRbNode GtkRbNode;
-
-struct _GtkRbTree
-{
- guint ref_count;
-
- gsize element_size;
- gsize augment_size;
- GtkRbTreeAugmentFunc augment_func;
- GDestroyNotify clear_func;
- GDestroyNotify clear_augment_func;
-
- GtkRbNode *root;
-};
-
-struct _GtkRbNode
-{
- guint red :1;
- guint dirty :1;
-
- GtkRbNode *left;
- GtkRbNode *right;
- /* The difference between tree and parent here is that we OR the tree with 1 and because
- * pointers are always multiples of 4, we can know if we've stored a parent or the tree here */
- union {
- gpointer parent_or_tree;
- GtkRbNode *parent;
- GtkRbTree *tree;
- };
-};
-
-#define NODE_FROM_POINTER(ptr) ((GtkRbNode *) ((ptr) ? (((guchar *) (ptr)) - sizeof (GtkRbNode)) : NULL))
-#define NODE_TO_POINTER(node) ((gpointer) ((node) ? (((guchar *) (node)) + sizeof (GtkRbNode)) : NULL))
-#define NODE_TO_AUG_POINTER(tree, node) ((gpointer) ((node) ? (((guchar *) (node)) + sizeof (GtkRbNode) + (tree)->element_size) : NULL))
-
-static inline gboolean
-is_root (GtkRbNode *node)
-{
- return GPOINTER_TO_SIZE (node->parent_or_tree) & 1 ? TRUE : FALSE;
-}
-
-static inline GtkRbNode *
-parent (GtkRbNode *node)
-{
- if (is_root (node))
- return NULL;
- else
- return node->parent;
-}
-
-static GtkRbTree *
-tree (GtkRbNode *node)
-{
- while (!is_root (node))
- node = parent (node);
-
- return GSIZE_TO_POINTER (GPOINTER_TO_SIZE (node->tree) & ~1);
-}
-
-static void
-set_parent (GtkRbTree *tree,
- GtkRbNode *node,
- GtkRbNode *new_parent)
-{
-
- if (new_parent != NULL)
- {
- node->parent = new_parent;
- }
- else
- {
- node->tree = GSIZE_TO_POINTER (GPOINTER_TO_SIZE (tree) | 1);
- tree->root = node;
- }
-}
-
-static inline gsize
-gtk_rb_node_get_size (GtkRbTree *tree)
-{
- return sizeof (GtkRbNode) + tree->element_size + tree->augment_size;
-}
-
-static GtkRbNode *
-gtk_rb_node_new (GtkRbTree *tree)
-{
- GtkRbNode *result;
-
- result = g_slice_alloc0 (gtk_rb_node_get_size (tree));
-
- result->red = TRUE;
- result->dirty = TRUE;
-
- return result;
-}
-
-static void
-gtk_rb_node_free (GtkRbTree *tree,
- GtkRbNode *node)
-{
- if (tree->clear_func)
- tree->clear_func (NODE_TO_POINTER (node));
- if (tree->clear_augment_func)
- tree->clear_augment_func (NODE_TO_AUG_POINTER (tree, node));
-
- g_slice_free1 (gtk_rb_node_get_size (tree), node);
-}
-
-static void
-gtk_rb_node_free_deep (GtkRbTree *tree,
- GtkRbNode *node)
-{
- GtkRbNode *right = node->right;
-
- if (node->left)
- gtk_rb_node_free_deep (tree, node->left);
-
- gtk_rb_node_free (tree, node);
-
- if (right)
- gtk_rb_node_free_deep (tree, right);
-}
-
-static void
-gtk_rb_node_mark_dirty (GtkRbNode *node,
- gboolean mark_parent)
-{
- if (node->dirty)
- return;
-
- node->dirty = TRUE;
-
- if (mark_parent && parent (node))
- gtk_rb_node_mark_dirty (parent (node), TRUE);
-}
-
-static void
-gtk_rb_node_clean (GtkRbTree *tree,
- GtkRbNode *node)
-{
- if (!node->dirty)
- return;
-
- node->dirty = FALSE;
- if (tree->augment_func)
- tree->augment_func (tree,
- NODE_TO_AUG_POINTER (tree, node),
- NODE_TO_POINTER (node),
- NODE_TO_POINTER (node->left),
- NODE_TO_POINTER (node->right));
-}
-
-static GtkRbNode *
-gtk_rb_node_get_first (GtkRbNode *node)
-{
- while (node->left)
- node = node->left;
-
- return node;
-}
-
-static GtkRbNode *
-gtk_rb_node_get_last (GtkRbNode *node)
-{
- while (node->right)
- node = node->right;
-
- return node;
-}
-
-static GtkRbNode *
-gtk_rb_node_get_previous (GtkRbNode *node)
-{
- GtkRbNode *p;
-
- if (node->left)
- return gtk_rb_node_get_last (node->left);
-
- for (p = parent (node); p != NULL; p = parent (node))
- {
- if (p->right == node)
- return p;
-
- node = p;
- }
-
- return NULL;
-}
-
-static GtkRbNode *
-gtk_rb_node_get_next (GtkRbNode *node)
-{
- GtkRbNode *p;
-
- if (node->right)
- return gtk_rb_node_get_first (node->right);
-
- for (p = parent (node); p != NULL; p = parent (node))
- {
- if (p->left == node)
- return p;
-
- node = p;
- }
-
- return NULL;
-}
-
-#ifdef DUMP_MODIFICATION
-static guint
-position (GtkRbTree *tree,
- GtkRbNode *node)
-{
- GtkRbNode *n;
- guint i;
-
- i = 0;
- for (n = gtk_rb_node_get_first (tree->root);
- n != node;
- n = gtk_rb_node_get_next (n))
- i++;
-
- return i;
-}
-#endif
-
-static void
-gtk_rb_node_rotate_left (GtkRbTree *tree,
- GtkRbNode *node)
-{
- GtkRbNode *right, *p;
-
- right = node->right;
- p = parent (node);
-
- node->right = right->left;
- if (right->left)
- set_parent (tree, right->left, node);
-
- set_parent (tree, right, p);
- if (p)
- {
- if (node == p->left)
- p->left = right;
- else
- p->right = right;
- }
-
- right->left = node;
- set_parent (tree, node, right);
-
- gtk_rb_node_mark_dirty (node, FALSE);
- gtk_rb_node_mark_dirty (right, FALSE);
-}
-
-static void
-gtk_rb_node_rotate_right (GtkRbTree *tree,
- GtkRbNode *node)
-{
- GtkRbNode *left, *p;
-
- left = node->left;
- p = parent (node);
-
- node->left = left->right;
- if (left->right)
- set_parent (tree, left->right, node);
-
- set_parent (tree, left, p);
- if (p)
- {
- if (node == p->right)
- p->right = left;
- else
- p->left = left;
- }
-
- /* link node and left */
- left->right = node;
- set_parent (tree, node, left);
-
- gtk_rb_node_mark_dirty (node, FALSE);
- gtk_rb_node_mark_dirty (left, FALSE);
-}
-
-static gboolean
-is_red (GtkRbNode *node_or_null)
-{
- if (node_or_null == NULL)
- return FALSE;
- else
- return node_or_null->red;
-}
-
-static inline gboolean
-is_black (GtkRbNode *node_or_null)
-{
- return !is_red (node_or_null);
-}
-
-static void
-set_black (GtkRbNode *node_or_null)
-{
- if (node_or_null == NULL)
- return;
-
- node_or_null->red = FALSE;
-}
-
-static void
-set_red (GtkRbNode *node_or_null)
-{
- if (node_or_null == NULL)
- return;
-
- node_or_null->red = TRUE;
-}
-
-static void
-gtk_rb_tree_insert_fixup (GtkRbTree *tree,
- GtkRbNode *node)
-{
- GtkRbNode *p;
-
- /* check Red-Black properties */
- for (p = parent (node);
- p && is_red (p);
- p = parent (node))
- {
- GtkRbNode *pp = parent (p);
-
- /* we have a violation */
- g_assert (pp);
-
- if (p == pp->left)
- {
- GtkRbNode *uncle = pp->right;
-
- if (is_red (uncle))
- {
- /* uncle is red */
- set_black (p);
- set_black (uncle);
- set_red (pp);
- node = pp;
- }
- else
- {
- /* uncle is black */
- if (node == p->right)
- {
- /* make node a left child */
- node = p;
- gtk_rb_node_rotate_left (tree, node);
- p = parent (node);
- pp = parent (p);
- }
- /* recolor and rotate */
- set_black (p);
- set_red (pp);
- gtk_rb_node_rotate_right (tree, pp);
- }
- }
- else
- {
- /* mirror image of above code */
- GtkRbNode *uncle = pp->left;
-
- if (is_red (uncle))
- {
- /* uncle is red */
- set_black (p);
- set_black (uncle);
- set_red (pp);
- node = pp;
- }
- else
- {
- /* uncle is black */
- if (node == p->left)
- {
- node = p;
- gtk_rb_node_rotate_right (tree, node);
- p = parent (node);
- pp = parent (p);
- }
- set_black (p);
- set_red (pp);
- gtk_rb_node_rotate_left (tree, pp);
- }
- }
- }
-
- set_black (tree->root);
-}
-
-static void
-gtk_rb_tree_remove_node_fixup (GtkRbTree *tree,
- GtkRbNode *node,
- GtkRbNode *p)
-{
- while (node != tree->root && is_black (node))
- {
- if (node == p->left)
- {
- GtkRbNode *w = p->right;
-
- if (is_red (w))
- {
- set_black (w);
- set_red (p);
- gtk_rb_node_rotate_left (tree, p);
- w = p->right;
- }
- if (is_black (w->left) && is_black (w->right))
- {
- set_red (w);
- node = p;
- }
- else
- {
- if (is_black (w->right))
- {
- set_black (w->left);
- set_red (w);
- gtk_rb_node_rotate_right (tree, w);
- w = p->right;
- }
- w->red = p->red;
- set_black (p);
- set_black (w->right);
- gtk_rb_node_rotate_left (tree, p);
- node = tree->root;
- }
- }
- else
- {
- GtkRbNode *w = p->left;
- if (is_red (w))
- {
- set_black (w);
- set_red (p);
- gtk_rb_node_rotate_right (tree, p);
- w = p->left;
- }
- if (is_black (w->right) && is_black (w->left))
- {
- set_red (w);
- node = p;
- }
- else
- {
- if (is_black (w->left))
- {
- set_black (w->right);
- set_red (w);
- gtk_rb_node_rotate_left (tree, w);
- w = p->left;
- }
- w->red = p->red;
- set_black (p);
- set_black (w->left);
- gtk_rb_node_rotate_right (tree, p);
- node = tree->root;
- }
- }
-
- p = parent (node);
- }
-
- set_black (node);
-}
-
-GtkRbTree *
-gtk_rb_tree_new_for_size (gsize element_size,
- gsize augment_size,
- GtkRbTreeAugmentFunc augment_func,
- GDestroyNotify clear_func,
- GDestroyNotify clear_augment_func)
-{
- GtkRbTree *tree;
-
- tree = g_slice_new0 (GtkRbTree);
- tree->ref_count = 1;
-
- tree->element_size = element_size;
- tree->augment_size = augment_size;
- tree->augment_func = augment_func;
- tree->clear_func = clear_func;
- tree->clear_augment_func = clear_augment_func;
-
- return tree;
-}
-
-GtkRbTree *
-gtk_rb_tree_ref (GtkRbTree *tree)
-{
- tree->ref_count++;
-
- return tree;
-}
-
-void
-gtk_rb_tree_unref (GtkRbTree *tree)
-{
- tree->ref_count--;
- if (tree->ref_count > 0)
- return;
-
- if (tree->root)
- gtk_rb_node_free_deep (tree, tree->root);
-
- g_slice_free (GtkRbTree, tree);
-}
-
-gpointer
-gtk_rb_tree_get_first (GtkRbTree *tree)
-{
- if (tree->root == NULL)
- return NULL;
-
- return NODE_TO_POINTER (gtk_rb_node_get_first (tree->root));
-}
-
-gpointer
-gtk_rb_tree_get_last (GtkRbTree *tree)
-{
- if (tree->root == NULL)
- return NULL;
-
- return NODE_TO_POINTER (gtk_rb_node_get_last (tree->root));
-}
-
-gpointer
-gtk_rb_tree_node_get_previous (gpointer node)
-{
- return NODE_TO_POINTER (gtk_rb_node_get_previous (NODE_FROM_POINTER (node)));
-}
-
-gpointer
-gtk_rb_tree_node_get_next (gpointer node)
-{
- return NODE_TO_POINTER (gtk_rb_node_get_next (NODE_FROM_POINTER (node)));
-}
-
-gpointer
-gtk_rb_tree_get_root (GtkRbTree *tree)
-{
- return NODE_TO_POINTER (tree->root);
-}
-
-gpointer
-gtk_rb_tree_node_get_parent (gpointer node)
-{
- return NODE_TO_POINTER (parent (NODE_FROM_POINTER (node)));
-}
-
-gpointer
-gtk_rb_tree_node_get_left (gpointer node)
-{
- return NODE_TO_POINTER (NODE_FROM_POINTER (node)->left);
-}
-
-gpointer
-gtk_rb_tree_node_get_right (gpointer node)
-{
- return NODE_TO_POINTER (NODE_FROM_POINTER (node)->right);
-}
-
-gpointer
-gtk_rb_tree_get_augment (GtkRbTree *tree,
- gpointer node)
-{
- GtkRbNode *rbnode = NODE_FROM_POINTER (node);
-
- gtk_rb_node_clean (tree, rbnode);
-
- return NODE_TO_AUG_POINTER (tree, rbnode);
-}
-
-GtkRbTree *
-gtk_rb_tree_node_get_tree (gpointer node)
-{
- return tree (NODE_FROM_POINTER (node));
-}
-
-void
-gtk_rb_tree_node_mark_dirty (gpointer node)
-{
- gtk_rb_node_mark_dirty (NODE_FROM_POINTER (node), TRUE);
-}
-
-gpointer
-gtk_rb_tree_insert_before (GtkRbTree *tree,
- gpointer node)
-{
- GtkRbNode *result;
-
-
- if (tree->root == NULL)
- {
-#ifdef DUMP_MODIFICATION
- g_print ("add (tree, 0); /* 0x%p */\n", tree);
-#endif /* DUMP_MODIFICATION */
-
- g_assert (node == NULL);
-
- result = gtk_rb_node_new (tree);
- tree->root = result;
- }
- else if (node == NULL)
- {
- return gtk_rb_tree_insert_after (tree, gtk_rb_tree_get_last (tree));
- }
- else
- {
- GtkRbNode *current = NODE_FROM_POINTER (node);
-
-#ifdef DUMP_MODIFICATION
- g_print ("add (tree, %u); /* 0x%p */\n", position (tree, current), tree);
-#endif /* DUMP_MODIFICATION */
-
- /* setup new node */
- result = gtk_rb_node_new (tree);
-
- if (current->left)
- {
- current = gtk_rb_node_get_last (current->left);
- current->right = result;
- }
- else
- {
- current->left = result;
- }
- set_parent (tree, result, current);
- gtk_rb_node_mark_dirty (current, TRUE);
- }
-
- gtk_rb_tree_insert_fixup (tree, result);
-
- return NODE_TO_POINTER (result);
-}
-
-gpointer
-gtk_rb_tree_insert_after (GtkRbTree *tree,
- gpointer node)
-{
- GtkRbNode *current, *result;
-
- if (node == NULL)
- return gtk_rb_tree_insert_before (tree, gtk_rb_tree_get_first (tree));
-
- current = NODE_FROM_POINTER (node);
-
-#ifdef DUMP_MODIFICATION
- g_print ("add (tree, %u); /* 0x%p */\n", position (tree, current) + 1, tree);
-#endif /* DUMP_MODIFICATION */
-
- /* setup new node */
- result = gtk_rb_node_new (tree);
-
- if (current->right)
- {
- current = gtk_rb_node_get_first (current->right);
- current->left = result;
- }
- else
- {
- current->right = result;
- }
- set_parent (tree, result, current);
- gtk_rb_node_mark_dirty (current, TRUE);
-
- gtk_rb_tree_insert_fixup (tree, result);
-
- return NODE_TO_POINTER (result);
-}
-
-void
-gtk_rb_tree_remove (GtkRbTree *tree,
- gpointer node)
-{
- GtkRbNode *x, *y, *p, *real_node;
-
- real_node = NODE_FROM_POINTER (node);
-
-#ifdef DUMP_MODIFICATION
- g_print ("delete (tree, %u); /* 0x%p */\n", position (tree, real_node), tree);
-#endif /* DUMP_MODIFICATION */
-
- y = real_node;
- if (y->left && y->right)
- {
- y = y->right;
-
- while (y->left)
- y = y->left;
- }
-
- /* x is y's only child, or nil */
- if (y->left)
- x = y->left;
- else
- x = y->right;
-
- /* remove y from the parent chain */
- p = parent (y);
- if (x != NULL)
- set_parent (tree, x, p);
- if (p)
- {
- if (y == p->left)
- p->left = x;
- else
- p->right = x;
- gtk_rb_node_mark_dirty (p, TRUE);
- }
- else
- {
- if (x == NULL)
- tree->root = NULL;
- }
-
- /* We need to clean up the validity of the tree.
- */
- if (is_black (y))
- gtk_rb_tree_remove_node_fixup (tree, x, p);
-
- if (y != real_node)
- {
- /* Move the node over */
- if (is_red (real_node) != is_red (y))
- y->red = !y->red;
-
- y->left = real_node->left;
- if (y->left)
- set_parent (tree, y->left, y);
- y->right = real_node->right;
- if (y->right)
- set_parent (tree, y->right, y);
- p = parent (real_node);
- set_parent (tree, y, p);
- if (p)
- {
- if (p->left == real_node)
- p->left = y;
- else
- p->right = y;
- gtk_rb_node_mark_dirty (p, TRUE);
- }
- gtk_rb_node_mark_dirty (y, TRUE);
- }
-
- gtk_rb_node_free (tree, real_node);
-}
-
-void
-gtk_rb_tree_remove_all (GtkRbTree *tree)
-{
-#ifdef DUMP_MODIFICATION
- g_print ("delete_all (tree); /* 0x%p */\n", tree);
-#endif /* DUMP_MODIFICATION */
-
- if (tree->root)
- gtk_rb_node_free_deep (tree, tree->root);
-
- tree->root = NULL;
-}
-
diff --git a/subprojects/gfm/gtkrbtreeprivate.h b/subprojects/gfm/gtkrbtreeprivate.h
deleted file mode 100644
index 45aba5cc..00000000
--- a/subprojects/gfm/gtkrbtreeprivate.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* gtkrbtree.h
- * Copyright (C) 2000 Red Hat, Inc., Jonathan Blandford <jrb@redhat.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- */
-
-/* A Red-Black Tree implementation used specifically by GtkTreeView.
- */
-#ifndef __GTK_RB_TREE_H__
-#define __GTK_RB_TREE_H__
-
-#include <glib.h>
-
-
-G_BEGIN_DECLS
-
-
-typedef struct _GtkRbTree GtkRbTree;
-
-typedef void (* GtkRbTreeAugmentFunc) (GtkRbTree *tree,
- gpointer node_augment,
- gpointer node,
- gpointer left,
- gpointer right);
-
-GtkRbTree * gtk_rb_tree_new_for_size (gsize element_size,
- gsize augment_size,
- GtkRbTreeAugmentFunc augment_func,
- GDestroyNotify clear_func,
- GDestroyNotify clear_augment_func);
-#define gtk_rb_tree_new(type, augment_type, augment_func, clear_func, clear_augment_func) \
- gtk_rb_tree_new_for_size (sizeof (type), sizeof (augment_type), (augment_func), (clear_func), (clear_augment_func))
-
-GtkRbTree * gtk_rb_tree_ref (GtkRbTree *tree);
-void gtk_rb_tree_unref (GtkRbTree *tree);
-
-gpointer gtk_rb_tree_get_root (GtkRbTree *tree);
-gpointer gtk_rb_tree_get_first (GtkRbTree *tree);
-gpointer gtk_rb_tree_get_last (GtkRbTree *tree);
-
-gpointer gtk_rb_tree_node_get_previous (gpointer node);
-gpointer gtk_rb_tree_node_get_next (gpointer node);
-gpointer gtk_rb_tree_node_get_parent (gpointer node);
-gpointer gtk_rb_tree_node_get_left (gpointer node);
-gpointer gtk_rb_tree_node_get_right (gpointer node);
-GtkRbTree * gtk_rb_tree_node_get_tree (gpointer node);
-void gtk_rb_tree_node_mark_dirty (gpointer node);
-
-gpointer gtk_rb_tree_get_augment (GtkRbTree *tree,
- gpointer node);
-
-gpointer gtk_rb_tree_insert_before (GtkRbTree *tree,
- gpointer node);
-gpointer gtk_rb_tree_insert_after (GtkRbTree *tree,
- gpointer node);
-void gtk_rb_tree_remove (GtkRbTree *tree,
- gpointer node);
-void gtk_rb_tree_remove_all (GtkRbTree *tree);
-
-
-G_END_DECLS
-
-
-#endif /* __GTK_RB_TREE_H__ */
diff --git a/subprojects/gfm/gtkslicelistmodel.c b/subprojects/gfm/gtkslicelistmodel.c
deleted file mode 100644
index 55ea970b..00000000
--- a/subprojects/gfm/gtkslicelistmodel.c
+++ /dev/null
@@ -1,527 +0,0 @@
-/*
- * Copyright © 2018 Benjamin Otte
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: Benjamin Otte <otte@gnome.org>
- */
-
-// #include "config.h"
-
-#include "gtkslicelistmodel.h"
-
-#include "gtkintl.h"
-// #include "gtkprivate.h"
-
-/**
- * SECTION:gtkslicelistmodel
- * @title: GtkSliceListModel
- * @short_description: A list model that presents a slice out of a larger list
- * @see_also: #GListModel
- *
- * #GtkSliceListModel is a list model that takes a list model and presents a slice of
- * that model.
- *
- * This is useful when implementing paging by setting the size to the number of elements
- * per page and updating the offset whenever a different page is opened.
- */
-
-#define DEFAULT_SIZE 10
-
-enum {
- PROP_0,
- PROP_ITEM_TYPE,
- PROP_MODEL,
- PROP_OFFSET,
- PROP_SIZE,
- NUM_PROPERTIES
-};
-
-struct _GtkSliceListModel
-{
- GObject parent_instance;
-
- GType item_type;
- GListModel *model;
- guint offset;
- guint size;
-
- guint n_items;
-};
-
-struct _GtkSliceListModelClass
-{
- GObjectClass parent_class;
-};
-
-static GParamSpec *properties[NUM_PROPERTIES] = { NULL, };
-
-static GType
-gtk_slice_list_model_get_item_type (GListModel *list)
-{
- GtkSliceListModel *self = GTK_SLICE_LIST_MODEL (list);
-
- return self->item_type;
-}
-
-static guint
-gtk_slice_list_model_get_n_items (GListModel *list)
-{
- GtkSliceListModel *self = GTK_SLICE_LIST_MODEL (list);
- guint n_items;
-
- if (self->model == NULL)
- return 0;
-
- /* XXX: This can be done without calling g_list_model_get_n_items() on the parent model
- * by checking if model.get_item(offset + size) != NULL */
- n_items = g_list_model_get_n_items (self->model);
- if (n_items <= self->offset)
- return 0;
-
- n_items -= self->offset;
- return MIN (n_items, self->size);
-}
-
-static gpointer
-gtk_slice_list_model_get_item (GListModel *list,
- guint position)
-{
- GtkSliceListModel *self = GTK_SLICE_LIST_MODEL (list);
-
- if (self->model == NULL)
- return NULL;
-
- if (position >= self->size)
- return NULL;
-
- return g_list_model_get_item (self->model, position + self->offset);
-}
-
-static void
-gtk_slice_list_model_model_init (GListModelInterface *iface)
-{
- iface->get_item_type = gtk_slice_list_model_get_item_type;
- iface->get_n_items = gtk_slice_list_model_get_n_items;
- iface->get_item = gtk_slice_list_model_get_item;
-}
-
-G_DEFINE_TYPE_WITH_CODE (GtkSliceListModel, gtk_slice_list_model, G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, gtk_slice_list_model_model_init))
-
-static void
-gtk_slice_list_model_items_changed_cb (GListModel *model,
- guint position,
- guint removed,
- guint added,
- GtkSliceListModel *self)
-{
- if (position >= self->offset + self->size)
- return;
-
- if (position < self->offset)
- {
- guint skip = MIN (removed, added);
- skip = MIN (skip, position - self->offset);
-
- position += skip;
- removed -= skip;
- added -= skip;
- }
-
- if (removed == added)
- {
- guint changed = removed;
-
- if (changed == 0)
- return;
-
- g_assert (position >= self->offset);
- position -= self->offset;
- changed = MIN (changed, self->size) - position;
-
- g_list_model_items_changed (G_LIST_MODEL (self), position, changed, changed);
- }
- else
- {
- guint n_after, n_before;
- guint skip;
-
- if (position > self->offset)
- skip = position - self->offset;
- else
- skip = 0;
-
- n_after = g_list_model_get_n_items (self->model);
- n_before = n_after - added + removed;
- n_after = CLAMP (n_after, self->offset, self->offset + self->size) - self->offset;
- n_before = CLAMP (n_before, self->offset, self->offset + self->size) - self->offset;
-
- g_list_model_items_changed (G_LIST_MODEL (self), skip, n_before - skip, n_after - skip);
- }
-}
-
-static void
-gtk_slice_list_model_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GtkSliceListModel *self = GTK_SLICE_LIST_MODEL (object);
-
- switch (prop_id)
- {
- case PROP_ITEM_TYPE:
- self->item_type = g_value_get_gtype (value);
- break;
-
- case PROP_MODEL:
- gtk_slice_list_model_set_model (self, g_value_get_object (value));
- break;
-
- case PROP_OFFSET:
- gtk_slice_list_model_set_offset (self, g_value_get_uint (value));
- break;
-
- case PROP_SIZE:
- gtk_slice_list_model_set_size (self, g_value_get_uint (value));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gtk_slice_list_model_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GtkSliceListModel *self = GTK_SLICE_LIST_MODEL (object);
-
- switch (prop_id)
- {
- case PROP_ITEM_TYPE:
- g_value_set_gtype (value, self->item_type);
- break;
-
- case PROP_MODEL:
- g_value_set_object (value, self->model);
- break;
-
- case PROP_OFFSET:
- g_value_set_uint (value, self->offset);
- break;
-
- case PROP_SIZE:
- g_value_set_uint (value, self->size);
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gtk_slice_list_model_clear_model (GtkSliceListModel *self)
-{
- if (self->model == NULL)
- return;
-
- g_signal_handlers_disconnect_by_func (self->model, gtk_slice_list_model_items_changed_cb, self);
- g_clear_object (&self->model);
-}
-
-static void
-gtk_slice_list_model_dispose (GObject *object)
-{
- GtkSliceListModel *self = GTK_SLICE_LIST_MODEL (object);
-
- gtk_slice_list_model_clear_model (self);
-
- G_OBJECT_CLASS (gtk_slice_list_model_parent_class)->dispose (object);
-};
-
-static void
-gtk_slice_list_model_class_init (GtkSliceListModelClass *class)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (class);
-
- gobject_class->set_property = gtk_slice_list_model_set_property;
- gobject_class->get_property = gtk_slice_list_model_get_property;
- gobject_class->dispose = gtk_slice_list_model_dispose;
-
- /**
- * GtkSliceListModel:item-type:
- *
- * The #GType for elements of this object
- */
- properties[PROP_ITEM_TYPE] =
- g_param_spec_gtype ("item-type",
- P_("Item type"),
- P_("The type of elements of this object"),
- G_TYPE_OBJECT,
- GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_EXPLICIT_NOTIFY);
-
- /**
- * GtkSliceListModel:model:
- *
- * Child model to take slice from
- */
- properties[PROP_MODEL] =
- g_param_spec_object ("model",
- P_("Model"),
- P_("Child model to take slice from"),
- G_TYPE_LIST_MODEL,
- GTK_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
-
- /**
- * GtkSliceListModel:offset:
- *
- * Offset of slice
- */
- properties[PROP_OFFSET] =
- g_param_spec_uint ("offset",
- P_("Offset"),
- P_("Offset of slice"),
- 0, G_MAXUINT, 0,
- GTK_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
-
- /**
- * GtkSliceListModel:size:
- *
- * Maximum size of slice
- */
- properties[PROP_SIZE] =
- g_param_spec_uint ("size",
- P_("Size"),
- P_("Maximum size of slice"),
- 0, G_MAXUINT, DEFAULT_SIZE,
- GTK_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
-
- g_object_class_install_properties (gobject_class, NUM_PROPERTIES, properties);
-}
-
-static void
-gtk_slice_list_model_init (GtkSliceListModel *self)
-{
- self->size = DEFAULT_SIZE;
-}
-
-/**
- * gtk_slice_list_model_new:
- * @model: (transfer none): The model to use
- * @offset: the offset of the slice
- * @size: maximum size of the slice
- *
- * Creates a new slice model that presents the slice from @offset to
- * @offset + @size our of the given @model.
- *
- * Returns: A new #GtkSliceListModel
- **/
-GtkSliceListModel *
-gtk_slice_list_model_new (GListModel *model,
- guint offset,
- guint size)
-{
- g_return_val_if_fail (G_IS_LIST_MODEL (model), NULL);
-
- return g_object_new (GTK_TYPE_SLICE_LIST_MODEL,
- "item-type", g_list_model_get_item_type (model),
- "model", model,
- "offset", offset,
- "size", size,
- NULL);
-}
-
-/**
- * gtk_slice_list_model_new_for_type:
- * @item_type: the type of items
- *
- * Creates a new empty #GtkSliceListModel for the given @item_type that
- * can be set up later.
- *
- * Returns: a new empty #GtkSliceListModel
- **/
-GtkSliceListModel *
-gtk_slice_list_model_new_for_type (GType item_type)
-{
- g_return_val_if_fail (g_type_is_a (item_type, G_TYPE_OBJECT), NULL);
-
- return g_object_new (GTK_TYPE_SLICE_LIST_MODEL,
- "item-type", item_type,
- NULL);
-}
-
-/**
- * gtk_slice_list_model_set_model:
- * @self: a #GtkSliceListModel
- * @model: (allow-none): The model to be sliced
- *
- * Sets the model to show a slice of. The model's item type must conform
- * to @self's item type.
- *
- **/
-void
-gtk_slice_list_model_set_model (GtkSliceListModel *self,
- GListModel *model)
-{
- guint removed, added;
-
- g_return_if_fail (GTK_IS_SLICE_LIST_MODEL (self));
- g_return_if_fail (model == NULL || G_IS_LIST_MODEL (model));
-
- if (self->model == model)
- return;
-
- removed = g_list_model_get_n_items (G_LIST_MODEL (self));
- gtk_slice_list_model_clear_model (self);
-
- if (model)
- {
- self->model = g_object_ref (model);
- g_signal_connect (model, "items-changed", G_CALLBACK (gtk_slice_list_model_items_changed_cb), self);
- added = g_list_model_get_n_items (G_LIST_MODEL (self));
- }
- else
- {
- added = 0;
- }
-
- if (removed > 0 || added > 0)
- g_list_model_items_changed (G_LIST_MODEL (self), 0, removed, added);
-
- g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_MODEL]);
-}
-
-/**
- * gtk_slice_list_model_get_model:
- * @self: a #GtkSliceListModel
- *
- * Gets the model that is curently being used or %NULL if none.
- *
- * Returns: (nullable) (transfer none): The model in use
- **/
-GListModel *
-gtk_slice_list_model_get_model (GtkSliceListModel *self)
-{
- g_return_val_if_fail (GTK_IS_SLICE_LIST_MODEL (self), NULL);
-
- return self->model;
-}
-
-/**
- * gtk_slice_list_model_set_offset:
- * @self: a #GtkSliceListModel
- * @offset: the new offset to use
- *
- * Sets the offset into the original model for this slice.
- *
- * If the offset is too large for the sliced model,
- * @self will end up empty.
- **/
-void
-gtk_slice_list_model_set_offset (GtkSliceListModel *self,
- guint offset)
-{
- guint before, after;
-
- g_return_if_fail (GTK_IS_SLICE_LIST_MODEL (self));
-
- if (self->offset == offset)
- return;
-
- before = g_list_model_get_n_items (G_LIST_MODEL (self));
-
- self->offset = offset;
-
- after = g_list_model_get_n_items (G_LIST_MODEL (self));
-
- if (before > 0 || after > 0)
- g_list_model_items_changed (G_LIST_MODEL (self), 0, before, after);
-
- g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_OFFSET]);
-}
-
-/**
- * gtk_slice_list_model_get_offset:
- * @self: a #GtkSliceListModel
- *
- * Gets the offset set via gtk_slice_list_model_set_offset()
- *
- * Returns: The offset
- **/
-guint
-gtk_slice_list_model_get_offset (GtkSliceListModel *self)
-{
- g_return_val_if_fail (GTK_IS_SLICE_LIST_MODEL (self), 0);
-
- return self->offset;
-}
-
-/**
- * gtk_slice_list_model_set_size:
- * @self: a #GtkSliceListModel
- * @size: the maximum size
- *
- * Sets the maximum size. @self will never have more items
- * than @size.
- *
- * It can however have fewer items if the offset is too large or
- * the model sliced from doesn't have enough items.
- */
-void
-gtk_slice_list_model_set_size (GtkSliceListModel *self,
- guint size)
-{
- guint before, after;
-
- g_return_if_fail (GTK_IS_SLICE_LIST_MODEL (self));
-
- if (self->size == size)
- return;
-
- before = g_list_model_get_n_items (G_LIST_MODEL (self));
-
- self->size = size;
-
- after = g_list_model_get_n_items (G_LIST_MODEL (self));
-
- if (before > after)
- g_list_model_items_changed (G_LIST_MODEL (self), after, before - after, 0);
- else if (before < after)
- g_list_model_items_changed (G_LIST_MODEL (self), before, 0, after - before);
- /* else nothing */
-
- g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SIZE]);
-}
-
-/**
- * gtk_slice_list_model_get_size:
- * @self: a #GtkSliceListModel
- *
- * Gets the size set via gtk_slice_list_model_set_size().
- *
- * Returns: The size
- **/
-guint
-gtk_slice_list_model_get_size (GtkSliceListModel *self)
-{
- g_return_val_if_fail (GTK_IS_SLICE_LIST_MODEL (self), DEFAULT_SIZE);
-
- return self->size;
-}
diff --git a/subprojects/gfm/gtkslicelistmodel.h b/subprojects/gfm/gtkslicelistmodel.h
deleted file mode 100644
index 25543f18..00000000
--- a/subprojects/gfm/gtkslicelistmodel.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright © 2018 Benjamin Otte
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: Benjamin Otte <otte@gnome.org>
- */
-
-#ifndef __GTK_SLICE_LIST_MODEL_H__
-#define __GTK_SLICE_LIST_MODEL_H__
-
-
-/* #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
- * #error "Only <gtk/gtk.h> can be included directly."
- * #endif
- */
-
-#include <gio/gio.h>
-#include <gtk/gtkwidget.h>
-
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_SLICE_LIST_MODEL (gtk_slice_list_model_get_type ())
-#define GTK_PARAM_READWRITE G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB
-
-GDK_AVAILABLE_IN_ALL
-G_DECLARE_FINAL_TYPE (GtkSliceListModel, gtk_slice_list_model, GTK, SLICE_LIST_MODEL, GObject)
-
-GDK_AVAILABLE_IN_ALL
-GtkSliceListModel * gtk_slice_list_model_new (GListModel *model,
- guint offset,
- guint size);
-GDK_AVAILABLE_IN_ALL
-GtkSliceListModel * gtk_slice_list_model_new_for_type (GType item_type);
-
-GDK_AVAILABLE_IN_ALL
-void gtk_slice_list_model_set_model (GtkSliceListModel *self,
- GListModel *model);
-GDK_AVAILABLE_IN_ALL
-GListModel * gtk_slice_list_model_get_model (GtkSliceListModel *self);
-GDK_AVAILABLE_IN_ALL
-void gtk_slice_list_model_set_offset (GtkSliceListModel *self,
- guint offset);
-GDK_AVAILABLE_IN_ALL
-guint gtk_slice_list_model_get_offset (GtkSliceListModel *self);
-GDK_AVAILABLE_IN_ALL
-void gtk_slice_list_model_set_size (GtkSliceListModel *self,
- guint size);
-GDK_AVAILABLE_IN_ALL
-guint gtk_slice_list_model_get_size (GtkSliceListModel *self);
-
-G_END_DECLS
-
-#endif /* __GTK_SLICE_LIST_MODEL_H__ */
diff --git a/subprojects/gfm/gtksortlistmodel.c b/subprojects/gfm/gtksortlistmodel.c
deleted file mode 100644
index a702feb6..00000000
--- a/subprojects/gfm/gtksortlistmodel.c
+++ /dev/null
@@ -1,563 +0,0 @@
-/*
- * Copyright © 2018 Benjamin Otte
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: Benjamin Otte <otte@gnome.org>
- */
-
-// #include "config.h"
-
-#include "gtksortlistmodel.h"
-
-#include "gtkintl.h"
-// #include "gtkprivate.h"
-
-/**
- * SECTION:gtksortlistmodel
- * @title: GtkSortListModel
- * @short_description: A list model that sorts its items
- * @see_also: #GListModel
- *
- * #GtkSortListModel is a list model that takes a list model and
- * sorts its elements according to a compare function.
- *
- * #GtkSortListModel is a generic model and because of that it
- * cannot take advantage of any external knowledge when sorting.
- * If you run into performance issues with #GtkSortListModel, it
- * is strongly recommended that you write your own sorting list
- * model.
- */
-
-enum {
- PROP_0,
- PROP_HAS_SORT,
- PROP_ITEM_TYPE,
- PROP_MODEL,
- NUM_PROPERTIES
-};
-
-struct _GtkSortListModel
-{
- GObject parent_instance;
-
- GType item_type;
- GListModel *model;
- GCompareDataFunc sort_func;
- gpointer user_data;
- GDestroyNotify user_destroy;
-
- GSequence *sorted; /* NULL if sort_func == NULL */
- GSequence *unsorted; /* NULL if sort_func == NULL */
-};
-
-struct _GtkSortListModelClass
-{
- GObjectClass parent_class;
-};
-
-static GParamSpec *properties[NUM_PROPERTIES] = { NULL, };
-
-static GType
-gtk_sort_list_model_get_item_type (GListModel *list)
-{
- GtkSortListModel *self = GTK_SORT_LIST_MODEL (list);
-
- return self->item_type;
-}
-
-static guint
-gtk_sort_list_model_get_n_items (GListModel *list)
-{
- GtkSortListModel *self = GTK_SORT_LIST_MODEL (list);
-
- if (self->model == NULL)
- return 0;
-
- if (self->sorted)
- return g_sequence_get_length (self->sorted);
-
- return g_list_model_get_n_items (self->model);
-}
-
-static gpointer
-gtk_sort_list_model_get_item (GListModel *list,
- guint position)
-{
- GtkSortListModel *self = GTK_SORT_LIST_MODEL (list);
- GSequenceIter *iter;
-
- if (self->model == NULL)
- return NULL;
-
- if (self->unsorted == NULL)
- return g_list_model_get_item (self->model, position);
-
- iter = g_sequence_get_iter_at_pos (self->sorted, position);
- if (g_sequence_iter_is_end (iter))
- return NULL;
-
- return g_object_ref (g_sequence_get (iter));
-}
-
-static void
-gtk_sort_list_model_model_init (GListModelInterface *iface)
-{
- iface->get_item_type = gtk_sort_list_model_get_item_type;
- iface->get_n_items = gtk_sort_list_model_get_n_items;
- iface->get_item = gtk_sort_list_model_get_item;
-}
-
-G_DEFINE_TYPE_WITH_CODE (GtkSortListModel, gtk_sort_list_model, G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, gtk_sort_list_model_model_init))
-
-static void
-gtk_sort_list_model_remove_items (GtkSortListModel *self,
- guint position,
- guint n_items,
- guint *unmodified_start,
- guint *unmodified_end)
-{
- GSequenceIter *unsorted_iter;
- guint i, pos, start, end, length_before;
-
- start = end = length_before = g_sequence_get_length (self->sorted);
- unsorted_iter = g_sequence_get_iter_at_pos (self->unsorted, position);
-
- for (i = 0; i < n_items ; i++)
- {
- GSequenceIter *sorted_iter;
- GSequenceIter *next;
-
- next = g_sequence_iter_next (unsorted_iter);
-
- sorted_iter = g_sequence_get (unsorted_iter);
- pos = g_sequence_iter_get_position (sorted_iter);
- start = MIN (start, pos);
- end = MIN (end, length_before - i - 1 - pos);
-
- g_sequence_remove (sorted_iter);
- g_sequence_remove (unsorted_iter);
-
- unsorted_iter = next;
- }
-
- *unmodified_start = start;
- *unmodified_end = end;
-}
-
-static void
-gtk_sort_list_model_add_items (GtkSortListModel *self,
- guint position,
- guint n_items,
- guint *unmodified_start,
- guint *unmodified_end)
-{
- GSequenceIter *unsorted_iter, *sorted_iter;
- guint i, pos, start, end, length_before;
-
- unsorted_iter = g_sequence_get_iter_at_pos (self->unsorted, position);
- start = end = length_before = g_sequence_get_length (self->sorted);
-
- for (i = 0; i < n_items; i++)
- {
- gpointer item = g_list_model_get_item (self->model, position + i);
- sorted_iter = g_sequence_insert_sorted (self->sorted, item, self->sort_func, self->user_data);
- g_sequence_insert_before (unsorted_iter, sorted_iter);
- if (unmodified_start != NULL || unmodified_end != NULL)
- {
- pos = g_sequence_iter_get_position (sorted_iter);
- start = MIN (start, pos);
- end = MIN (end, length_before + i - pos);
- }
- }
-
- if (unmodified_start)
- *unmodified_start = start;
- if (unmodified_end)
- *unmodified_end = end;
-}
-
-static void
-gtk_sort_list_model_items_changed_cb (GListModel *model,
- guint position,
- guint removed,
- guint added,
- GtkSortListModel *self)
-{
- guint n_items, start, end, start2, end2;
-
- if (removed == 0 && added == 0)
- return;
-
- if (self->sorted == NULL)
- {
- g_list_model_items_changed (G_LIST_MODEL (self), position, removed, added);
- return;
- }
-
- gtk_sort_list_model_remove_items (self, position, removed, &start, &end);
- gtk_sort_list_model_add_items (self, position, added, &start2, &end2);
- start = MIN (start, start2);
- end = MIN (end, end2);
-
- n_items = g_sequence_get_length (self->sorted) - start - end;
- g_list_model_items_changed (G_LIST_MODEL (self), start, n_items - added + removed, n_items);
-}
-
-static void
-gtk_sort_list_model_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GtkSortListModel *self = GTK_SORT_LIST_MODEL (object);
-
- switch (prop_id)
- {
- case PROP_ITEM_TYPE:
- self->item_type = g_value_get_gtype (value);
- break;
-
- case PROP_MODEL:
- gtk_sort_list_model_set_model (self, g_value_get_object (value));
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gtk_sort_list_model_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GtkSortListModel *self = GTK_SORT_LIST_MODEL (object);
-
- switch (prop_id)
- {
- case PROP_HAS_SORT:
- g_value_set_boolean (value, self->sort_func != NULL);
- break;
-
- case PROP_ITEM_TYPE:
- g_value_set_gtype (value, self->item_type);
- break;
-
- case PROP_MODEL:
- g_value_set_object (value, self->model);
- break;
-
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gtk_sort_list_model_clear_model (GtkSortListModel *self)
-{
- if (self->model == NULL)
- return;
-
- g_signal_handlers_disconnect_by_func (self->model, gtk_sort_list_model_items_changed_cb, self);
- g_clear_object (&self->model);
- g_clear_pointer (&self->sorted, g_sequence_free);
- g_clear_pointer (&self->unsorted, g_sequence_free);
-}
-
-static void
-gtk_sort_list_model_dispose (GObject *object)
-{
- GtkSortListModel *self = GTK_SORT_LIST_MODEL (object);
-
- gtk_sort_list_model_clear_model (self);
- if (self->user_destroy)
- self->user_destroy (self->user_data);
- self->sort_func = NULL;
- self->user_data = NULL;
- self->user_destroy = NULL;
-
- G_OBJECT_CLASS (gtk_sort_list_model_parent_class)->dispose (object);
-};
-
-static void
-gtk_sort_list_model_class_init (GtkSortListModelClass *class)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (class);
-
- gobject_class->set_property = gtk_sort_list_model_set_property;
- gobject_class->get_property = gtk_sort_list_model_get_property;
- gobject_class->dispose = gtk_sort_list_model_dispose;
-
- /**
- * GtkSortListModel:has-sort:
- *
- * If a sort function is set for this model
- */
- properties[PROP_HAS_SORT] =
- g_param_spec_boolean ("has-sort",
- P_("has sort"),
- P_("If a sort function is set for this model"),
- FALSE,
- GTK_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY);
-
- /**
- * GtkSortListModel:item-type:
- *
- * The #GType for items of this model
- */
- properties[PROP_ITEM_TYPE] =
- g_param_spec_gtype ("item-type",
- P_("Item type"),
- P_("The type of items of this list"),
- G_TYPE_OBJECT,
- GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_EXPLICIT_NOTIFY);
-
- /**
- * GtkSortListModel:model:
- *
- * The model being sorted
- */
- properties[PROP_MODEL] =
- g_param_spec_object ("model",
- P_("Model"),
- P_("The model being sorted"),
- G_TYPE_LIST_MODEL,
- GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_EXPLICIT_NOTIFY);
-
- g_object_class_install_properties (gobject_class, NUM_PROPERTIES, properties);
-}
-
-static void
-gtk_sort_list_model_init (GtkSortListModel *self)
-{
-}
-
-
-/**
- * gtk_sort_list_model_new:
- * @model: the model to sort
- * @sort_func: (allow-none): sort function or %NULL to not sort items
- * @user_data: user data passed to @sort_func
- * @user_destroy: destroy notifier for @user_data
- *
- * Creates a new sort list model that uses the @sort_func to sort @model.
- *
- * Returns: a new #GtkSortListModel
- **/
-GtkSortListModel *
-gtk_sort_list_model_new (GListModel *model,
- GCompareDataFunc sort_func,
- gpointer user_data,
- GDestroyNotify user_destroy)
-{
- GtkSortListModel *result;
-
- g_return_val_if_fail (G_IS_LIST_MODEL (model), NULL);
-
- result = g_object_new (GTK_TYPE_SORT_LIST_MODEL,
- "item-type", g_list_model_get_item_type (model),
- "model", model,
- NULL);
-
- if (sort_func)
- gtk_sort_list_model_set_sort_func (result, sort_func, user_data, user_destroy);
-
- return result;
-}
-
-/**
- * gtk_sort_list_model_new_for_type:
- * @item_type: the type of the items that will be returned
- *
- * Creates a new empty sort list model set up to return items of type @item_type.
- * It is up to the application to set a proper sort function and model to ensure
- * the item type is matched.
- *
- * Returns: a new #GtkSortListModel
- **/
-GtkSortListModel *
-gtk_sort_list_model_new_for_type (GType item_type)
-{
- g_return_val_if_fail (g_type_is_a (item_type, G_TYPE_OBJECT), NULL);
-
- return g_object_new (GTK_TYPE_SORT_LIST_MODEL,
- "item-type", item_type,
- NULL);
-}
-
-static void
-gtk_sort_list_model_create_sequences (GtkSortListModel *self)
-{
- if (!self->sort_func || self->model == NULL)
- return;
-
- self->sorted = g_sequence_new (g_object_unref);
- self->unsorted = g_sequence_new (NULL);
-
- gtk_sort_list_model_add_items (self, 0, g_list_model_get_n_items (self->model), NULL, NULL);
-}
-
-/**
- * gtk_sort_list_model_set_sort_func:
- * @self: a #GtkSortListModel
- * @sort_func: (allow-none): sort function or %NULL to not sort items
- * @user_data: user data passed to @sort_func
- * @user_destroy: destroy notifier for @user_data
- *
- * Sets the function used to sort items. The function will be called for every
- * item and must return an integer less than, equal to, or greater than zero if
- * for two items from the model if the first item is considered to be respectively
- * less than, equal to, or greater than the second.
- **/
-void
-gtk_sort_list_model_set_sort_func (GtkSortListModel *self,
- GCompareDataFunc sort_func,
- gpointer user_data,
- GDestroyNotify user_destroy)
-{
- guint n_items;
-
- g_return_if_fail (GTK_IS_SORT_LIST_MODEL (self));
- g_return_if_fail (sort_func != NULL || (user_data == NULL && !user_destroy));
-
- if (!sort_func && !self->sort_func)
- return;
-
- if (self->user_destroy)
- self->user_destroy (self->user_data);
-
- g_clear_pointer (&self->unsorted, g_sequence_free);
- g_clear_pointer (&self->sorted, g_sequence_free);
- self->sort_func = sort_func;
- self->user_data = user_data;
- self->user_destroy = user_destroy;
-
- gtk_sort_list_model_create_sequences (self);
-
- n_items = g_list_model_get_n_items (G_LIST_MODEL (self));
- if (n_items > 1)
- g_list_model_items_changed (G_LIST_MODEL (self), 0, n_items, n_items);
-
- g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_HAS_SORT]);
-}
-
-/**
- * gtk_sort_list_model_set_model:
- * @self: a #GtkSortListModel
- * @model: (allow-none): The model to be sorted
- *
- * Sets the model to be sorted. The @model's item type must conform to
- * the item type of @self.
- **/
-void
-gtk_sort_list_model_set_model (GtkSortListModel *self,
- GListModel *model)
-{
- guint removed, added;
-
- g_return_if_fail (GTK_IS_SORT_LIST_MODEL (self));
- g_return_if_fail (model == NULL || G_IS_LIST_MODEL (model));
- if (model)
- {
- g_return_if_fail (g_type_is_a (self->item_type, g_list_model_get_item_type (model)));
- }
-
- if (self->model == model)
- return;
-
- removed = g_list_model_get_n_items (G_LIST_MODEL (self));
- gtk_sort_list_model_clear_model (self);
-
- if (model)
- {
- self->model = g_object_ref (model);
- g_signal_connect (model, "items-changed", G_CALLBACK (gtk_sort_list_model_items_changed_cb), self);
- added = g_list_model_get_n_items (model);
-
- gtk_sort_list_model_create_sequences (self);
- }
- else
- added = 0;
-
- if (removed > 0 || added > 0)
- g_list_model_items_changed (G_LIST_MODEL (self), 0, removed, added);
-
- g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_MODEL]);
-}
-
-/**
- * gtk_sort_list_model_get_model:
- * @self: a #GtkSortListModel
- *
- * Gets the model currently sorted or %NULL if none.
- *
- * Returns: (nullable) (transfer none): The model that gets sorted
- **/
-GListModel *
-gtk_sort_list_model_get_model (GtkSortListModel *self)
-{
- g_return_val_if_fail (GTK_IS_SORT_LIST_MODEL (self), NULL);
-
- return self->model;
-}
-
-/**
- * gtk_sort_list_model_has_sort:
- * @self: a #GtkSortListModel
- *
- * Checks if a sort function is currently set on @self
- *
- * Returns: %TRUE if a sort function is set
- **/
-gboolean
-gtk_sort_list_model_has_sort (GtkSortListModel *self)
-{
- g_return_val_if_fail (GTK_IS_SORT_LIST_MODEL (self), FALSE);
-
- return self->sort_func != NULL;
-}
-
-/**
- * gtk_sort_list_model_resort:
- * @self: a #GtkSortListModel
- *
- * Causes @self to resort all items in the model.
- *
- * Calling this function is necessary when data used by the sort
- * function has changed.
- **/
-void
-gtk_sort_list_model_resort (GtkSortListModel *self)
-{
- guint n_items;
-
- g_return_if_fail (GTK_IS_SORT_LIST_MODEL (self));
-
- if (self->sorted == NULL)
- return;
-
- n_items = g_list_model_get_n_items (self->model);
- if (n_items <= 1)
- return;
-
- g_sequence_sort (self->sorted, self->sort_func, self->user_data);
-
- g_list_model_items_changed (G_LIST_MODEL (self), 0, n_items, n_items);
-}
-
diff --git a/subprojects/gfm/gtksortlistmodel.h b/subprojects/gfm/gtksortlistmodel.h
deleted file mode 100644
index 460491b2..00000000
--- a/subprojects/gfm/gtksortlistmodel.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright © 2018 Benjamin Otte
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * Authors: Benjamin Otte <otte@gnome.org>
- */
-
-#ifndef __GTK_SORT_LIST_MODEL_H__
-#define __GTK_SORT_LIST_MODEL_H__
-
-
-/*#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)*/
-/*#error "Only <gtk/gtk.h> can be included directly."*/
-/*#endif*/
-
-#include <gio/gio.h>
-#include <gtk/gtkwidget.h>
-
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_SORT_LIST_MODEL (gtk_sort_list_model_get_type ())
-#define GTK_PARAM_READABLE G_PARAM_READABLE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB
-#define GTK_PARAM_WRITABLE G_PARAM_WRITABLE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB
-#define GTK_PARAM_READWRITE G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB
-
-GDK_AVAILABLE_IN_ALL
-G_DECLARE_FINAL_TYPE (GtkSortListModel, gtk_sort_list_model, GTK, SORT_LIST_MODEL, GObject)
-
-GDK_AVAILABLE_IN_ALL
-GtkSortListModel * gtk_sort_list_model_new (GListModel *model,
- GCompareDataFunc sort_func,
- gpointer user_data,
- GDestroyNotify user_destroy);
-GDK_AVAILABLE_IN_ALL
-GtkSortListModel * gtk_sort_list_model_new_for_type (GType item_type);
-
-GDK_AVAILABLE_IN_ALL
-void gtk_sort_list_model_set_sort_func (GtkSortListModel *self,
- GCompareDataFunc sort_func,
- gpointer user_data,
- GDestroyNotify user_destroy);
-GDK_AVAILABLE_IN_ALL
-gboolean gtk_sort_list_model_has_sort (GtkSortListModel *self);
-GDK_AVAILABLE_IN_ALL
-void gtk_sort_list_model_set_model (GtkSortListModel *self,
- GListModel *model);
-GDK_AVAILABLE_IN_ALL
-GListModel * gtk_sort_list_model_get_model (GtkSortListModel *self);
-
-GDK_AVAILABLE_IN_ALL
-void gtk_sort_list_model_resort (GtkSortListModel *self);
-
-G_END_DECLS
-
-#endif /* __GTK_SORT_LIST_MODEL_H__ */
diff --git a/subprojects/gfm/meson.build b/subprojects/gfm/meson.build
deleted file mode 100644
index ab93f9cf..00000000
--- a/subprojects/gfm/meson.build
+++ /dev/null
@@ -1,85 +0,0 @@
-project('gfm', 'c',
- meson_version: '>= 0.38.0',
-)
-
-c_args = []
-gnome = import('gnome')
-
-if not meson.is_subproject()
- message('WARNING: This project is only intended to be used as a subproject!')
-endif
-
-api_version = '0.1'
-
-gfm_sources = [
- 'gtkfilterlistmodel.c',
- 'gtkflattenlistmodel.c',
- 'gtkslicelistmodel.c',
- 'gtksortlistmodel.c',
- 'gtkrbtree.c',
-]
-
-gfm_headers = [
- 'gtkfilterlistmodel.h',
- 'gtkflattenlistmodel.h',
- 'gtkslicelistmodel.h',
- 'gtksortlistmodel.h',
- 'gtkrbtreeprivate.h',
- 'gtkintl.h',
-]
-
-gfm_introspection_headers = [
- 'gtkfilterlistmodel.h',
- 'gtkflattenlistmodel.h',
- 'gtkslicelistmodel.h',
- 'gtksortlistmodel.h',
-]
-
-pkglibdir = get_option('pkglibdir')
-pkgdatadir = get_option('pkgdatadir')
-pkggirdir = join_paths(pkgdatadir, 'gir-1.0')
-pkgtypelibdir = join_paths(pkglibdir, 'girepository-1.0')
-
-gfm_header_subdir = '.'
-gfm_header_dir = join_paths(get_option('includedir'), gfm_header_subdir)
-
-cc = meson.get_compiler('c')
-
-gfm_deps = [
- dependency('gio-2.0', version: '>= 2.50'),
- dependency('gtk+-3.0'),
-]
-
-gfm_lib = shared_library('gfm-' + api_version,
- gfm_sources,
- dependencies: gfm_deps,
- c_args: ['-DGETTEXT_PACKAGE', '-DGTK_COMPILATION '],
- install: true,
- install_dir: pkglibdir
-)
-
-gfm_gir = gnome.generate_gir(gfm_lib,
- sources: gfm_sources + gfm_introspection_headers,
- nsversion: api_version,
- namespace: 'Gfm',
- symbol_prefix: 'gtk',
- extra_args: ['-DGETTEXT_PACKAGE', '-DGTK_COMPILATION '],
- identifier_prefix: 'Gtk',
- link_with: gfm_lib,
- includes: ['Gio-2.0', 'Gtk-3.0'],
- install: true,
- install_dir_gir: pkggirdir,
- install_dir_typelib: pkgtypelibdir,
-)
-
-pkg = import('pkgconfig')
-
-pkg.generate(
- description: 'A shared library backporting a few GTK4 listmodels to GTK3',
- libraries: gfm_lib,
- name: 'gfm',
- filebase: 'gfm-' + api_version,
- version: meson.project_version(),
- requires: 'glib-2.0',
- install_dir: join_paths(pkglibdir, 'pkgconfig')
-)
diff --git a/subprojects/gfm/meson_options.txt b/subprojects/gfm/meson_options.txt
deleted file mode 100644
index 7abaf8b9..00000000
--- a/subprojects/gfm/meson_options.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-option('pkglibdir', type: 'string', value: '',
- description: 'The private directory the shared library/typelib will be installed into.'
-)
-option('pkgdatadir', type: 'string', value: '',
- description: 'The private directory the gir file will be installed into.'
-)
diff --git a/subprojects/shared-modules/CODEOWNERS b/subprojects/shared-modules/CODEOWNERS
index d8841d17..864e266c 100644
--- a/subprojects/shared-modules/CODEOWNERS
+++ b/subprojects/shared-modules/CODEOWNERS
@@ -2,10 +2,20 @@
* @flathub/reviewers
/dbus-glib/ @TingPing
+/clutter/ @A6GibKm
/gtk2/ @TingPing
/gudev/ @Erick555
/intltool/ @TingPing
/libappindicator/ @TingPing
+/libcanberra/ @hadess
/libsecret/ @Lctrs
-/openjpeg/ @bochecha
+/libusb/ @A6GibKm
+/openjpeg/ @mbridon
+/physfs/ @Mailaender
/python2.7/ @bilelmoussaoui
+/linux-audio/ @hfiguiere
+/lua5.1/ @Unrud
+/mac/ @enzo1982 @Eonfge
+/pygtk/ @Eonfge
+/gzdoom/ @Eonfge
+/vorbisgain/ @Eonfge
diff --git a/subprojects/shared-modules/README.md b/subprojects/shared-modules/README.md
index 5a0ec035..cde47075 100644
--- a/subprojects/shared-modules/README.md
+++ b/subprojects/shared-modules/README.md
@@ -23,6 +23,15 @@ To update the submodule:
git submodule update --remote --merge
```
+To remove the submodule:
+
+```
+git submodule deinit -f -- shared-modules
+rm -rf .git/modules/shared-modules
+git rm -f shared-modules
+rm .gitmodules
+```
+
[See the description in the Flathub wiki](https://github.com/flathub/flathub/wiki/App-Requirements#shared-modules) for more information.
diff --git a/subprojects/shared-modules/SDL/SDL_ttf-2.0.11.json b/subprojects/shared-modules/SDL/SDL_ttf-2.0.11.json
index 5e928e46..c5a04d51 100644
--- a/subprojects/shared-modules/SDL/SDL_ttf-2.0.11.json
+++ b/subprojects/shared-modules/SDL/SDL_ttf-2.0.11.json
@@ -2,6 +2,9 @@
"name": "SDL_ttf",
"config-opts": ["--disable-static"],
"rm-configure": true,
+ "config-opts": [
+ "ac_cv_path_FREETYPE_CONFIG=pkg-config freetype2"
+ ],
"sources": [
{
"type": "archive",
diff --git a/subprojects/shared-modules/SDL/sdl12-compat.json b/subprojects/shared-modules/SDL/sdl12-compat.json
new file mode 100644
index 00000000..c0227763
--- /dev/null
+++ b/subprojects/shared-modules/SDL/sdl12-compat.json
@@ -0,0 +1,14 @@
+{
+ "name": "sdl12-compat",
+ "buildsystem": "cmake-ninja",
+ "cleanup": [
+ "bin/sdl-config"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://github.com/libsdl-org/sdl12-compat/archive/refs/tags/release-1.2.52.tar.gz",
+ "sha256": "5bd7942703575554670a8767ae030f7921a0ac3c5e2fd173a537b7c7a8599014"
+ }
+ ]
+}
diff --git a/subprojects/shared-modules/clutter/clutter.json b/subprojects/shared-modules/clutter/clutter.json
new file mode 100644
index 00000000..a47b207d
--- /dev/null
+++ b/subprojects/shared-modules/clutter/clutter.json
@@ -0,0 +1,69 @@
+{
+ "name": "clutter-gtk",
+ "cleanup": [
+ "/share/gtk-doc"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://download.gnome.org/sources/clutter-gtk/1.8/clutter-gtk-1.8.4.tar.xz",
+ "sha256": "521493ec038973c77edcb8bc5eac23eed41645117894aaee7300b2487cb42b06"
+ }
+ ],
+ "modules": [
+ {
+ "name": "cogl",
+ "config-opts": [
+ "--disable-cogl-gst",
+ "--disable-gtk-doc",
+ "--enable-xlib-egl-platform",
+ "--enable-wayland-egl-platform"
+ ],
+ "cleanup": [
+ "/share/gtk-doc",
+ "/share/cogl/examples-data"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://download.gnome.org/sources/cogl/1.22/cogl-1.22.8.tar.xz",
+ "sha256": "a805b2b019184710ff53d0496f9f0ce6dcca420c141a0f4f6fcc02131581d759"
+ }
+ ]
+ },
+ {
+ "name": "clutter",
+ "config-opts": [
+ "--disable-gtk-doc",
+ "--enable-egl-backend",
+ "--enable-wayland-backend"
+ ],
+ "cleanup": [
+ "/share/gtk-doc"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://download.gnome.org/sources/clutter/1.26/clutter-1.26.4.tar.xz",
+ "sha256": "8b48fac159843f556d0a6be3dbfc6b083fc6d9c58a20a49a6b4919ab4263c4e6"
+ }
+ ]
+ },
+ {
+ "name": "clutter-gst",
+ "config-opts": [
+ "--disable-gtk-doc"
+ ],
+ "cleanup": [
+ "/share/gtk-doc"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://download.gnome.org/sources/clutter-gst/3.0/clutter-gst-3.0.27.tar.xz",
+ "sha256": "fe69bd6c659d24ab30da3f091eb91cd1970026d431179b0724f13791e8ad9f9d"
+ }
+ ]
+ }
+ ]
+}
diff --git a/subprojects/shared-modules/dbus-glib/dbus-glib-0.110.json b/subprojects/shared-modules/dbus-glib/dbus-glib.json
index 73ffd084..f8b90905 100644
--- a/subprojects/shared-modules/dbus-glib/dbus-glib-0.110.json
+++ b/subprojects/shared-modules/dbus-glib/dbus-glib.json
@@ -16,8 +16,8 @@
"sources": [
{
"type": "archive",
- "url": "https://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.110.tar.gz",
- "sha256": "7ce4760cf66c69148f6bd6c92feaabb8812dee30846b24cd0f7395c436d7e825"
+ "url": "https://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-0.112.tar.gz",
+ "sha256": "7d550dccdfcd286e33895501829ed971eeb65c614e73aadb4a08aeef719b143a"
}
]
}
diff --git a/subprojects/shared-modules/glew/glew.json b/subprojects/shared-modules/glew/glew.json
index 6ec15bf7..ae326a23 100644
--- a/subprojects/shared-modules/glew/glew.json
+++ b/subprojects/shared-modules/glew/glew.json
@@ -2,20 +2,24 @@
"name": "glew",
"no-autogen": true,
"make-args": [
- "GLEW_PREFIX=/app",
- "GLEW_DEST=/app",
- "LIBDIR=/app/lib"
+ "GLEW_PREFIX=${FLATPAK_DEST}",
+ "GLEW_DEST=${FLATPAK_DEST}",
+ "LIBDIR=${FLATPAK_DEST}/lib",
+ "CFLAGS.EXTRA:=${CFLAGS} -fPIC",
+ "LDFLAGS.EXTRA=${LDFLAGS}"
],
"make-install-args": [
- "GLEW_PREFIX=/app",
- "GLEW_DEST=/app",
- "LIBDIR=/app/lib"
+ "GLEW_PREFIX=${FLATPAK_DEST}",
+ "GLEW_DEST=${FLATPAK_DEST}",
+ "LIBDIR=${FLATPAK_DEST}/lib",
+ "CFLAGS.EXTRA:=${CFLAGS} -fPIC",
+ "LDFLAGS.EXTRA=${LDFLAGS}"
],
"sources": [
{
"type": "archive",
- "url": "https://downloads.sourceforge.net/project/glew/glew/2.1.0/glew-2.1.0.tgz",
- "sha256": "04de91e7e6763039bc11940095cd9c7f880baba82196a7765f727ac05a993c95"
+ "url": "https://downloads.sourceforge.net/project/glew/glew/2.2.0/glew-2.2.0.tgz",
+ "sha256": "d4fc82893cfb00109578d0a1a2337fb8ca335b3ceccf97b97e5cc7f08e4353e1"
}
],
"cleanup": [
diff --git a/subprojects/shared-modules/glu/glu-9.json b/subprojects/shared-modules/glu/glu-9.json
index d14e2219..2dfb70b4 100644
--- a/subprojects/shared-modules/glu/glu-9.json
+++ b/subprojects/shared-modules/glu/glu-9.json
@@ -4,8 +4,8 @@
"sources": [
{
"type": "archive",
- "url": "https://mesa.freedesktop.org/archive/glu/glu-9.0.1.tar.xz",
- "sha256": "fb5a4c2dd6ba6d1c21ab7c05129b0769544e1d68e1e3b0ffecb18e73c93055bc"
+ "url": "https://mesa.freedesktop.org/archive/glu/glu-9.0.2.tar.xz",
+ "sha256": "6e7280ff585c6a1d9dfcdf2fca489251634b3377bfc33c29e4002466a38d02d4"
}
],
"cleanup": [ "/include", "/lib/*.a", "/lib/*.la", "/lib/pkgconfig" ]
diff --git a/subprojects/shared-modules/gtk2/arc-gtk2-theme-Replace-Inkscape-dependency-with-rsvg-convert.patch b/subprojects/shared-modules/gtk2/arc-gtk2-theme-Replace-Inkscape-dependency-with-rsvg-convert.patch
new file mode 100644
index 00000000..90e09509
--- /dev/null
+++ b/subprojects/shared-modules/gtk2/arc-gtk2-theme-Replace-Inkscape-dependency-with-rsvg-convert.patch
@@ -0,0 +1,180 @@
+From d5e0034183564df5fec8e4dde1705116c7b38021 Mon Sep 17 00:00:00 2001
+From: Patrick Griffis <tingping@tingping.se>
+Date: Sat, 16 May 2020 18:00:36 -0700
+Subject: [PATCH] Replace Inkscape dependency with rsvg-convert
+
+rsvg-convert is a *much* smaller dependency that all systems with
+a functioning GTK installation should have easy access to.
+---
+ common/gtk-2.0/Makefile.am | 6 +-----
+ common/gtk-2.0/render-asset.sh | 16 ++++++++--------
+ common/gtk-3.0/common.am | 12 ++----------
+ common/xfwm4/Makefile.am | 6 +-----
+ common/xfwm4/render-asset.sh | 16 ++++++++--------
+ configure.ac | 8 ++------
+ 6 files changed, 22 insertions(+), 42 deletions(-)
+
+diff --git a/common/gtk-2.0/Makefile.am b/common/gtk-2.0/Makefile.am
+index 010823a..873013a 100644
+--- a/common/gtk-2.0/Makefile.am
++++ b/common/gtk-2.0/Makefile.am
+@@ -35,11 +35,7 @@ $(light): $(srcdir)/light/assets.svg | light/assets
+ $(dark): $(srcdir)/dark/assets.svg | dark/assets
+
+ $(light) $(dark):
+-if INKSCAPE_1_0_OR_NEWER
+- $(INKSCAPE) --export-id-only --export-filename="$@" --export-id="$(basename $(notdir $@))" --export-dpi=$(if $(filter $(OPTION_GTK2_HIDPI),true),192,96) "$<" >/dev/null
+-else !INKSCAPE_1_0_OR_NEWER
+- $(INKSCAPE) --export-id-only --export-png="$@" --export-id="$(basename $(notdir $@))" --export-dpi=$(if $(filter $(OPTION_GTK2_HIDPI),true),192,96) "$<" >/dev/null
+-endif
++ $(RSVG_CONVERT) --format=png --output="$@" --export-id="$(basename $(notdir $@))" --dpi-x=$(if $(filter $(OPTION_GTK2_HIDPI),true),192,96) --dpi-y=$(if $(filter $(OPTION_GTK2_HIDPI),true),192,96) "$<" >/dev/null
+ $(OPTIPNG) -o7 --quiet "$@"
+
+ menubar-toolbar/%-dark.png: dark/assets/%.png | menubar-toolbar
+diff --git a/common/gtk-2.0/render-asset.sh b/common/gtk-2.0/render-asset.sh
+index 6685414..f6198af 100755
+--- a/common/gtk-2.0/render-asset.sh
++++ b/common/gtk-2.0/render-asset.sh
+@@ -1,7 +1,7 @@
+ #!/bin/bash
+ set -ueo pipefail
+
+-INKSCAPE="$(which inkscape)"
++RSVG_CONVERT="$(which rsvg-convert)"
+ OPTIPNG="$(which optipng)"
+
+ ASSETS_DIR="$1"
+@@ -14,9 +14,9 @@ if [[ -f "${result_file}" ]] ; then
+ echo "${result_file} already exists."
+ else
+ echo "Rendering '${result_file}'"
+- "$INKSCAPE" --export-id="$i" \
+- --export-id-only \
+- --export-png="${result_file}" "$SRC_FILE" >/dev/null \
++ "$RSVG_CONVERT" --export-id="$i" \
++ --format=png
++ --output="${result_file}" "$SRC_FILE" >/dev/null \
+ && "$OPTIPNG" -o7 --quiet "${result_file}"
+ fi
+
+@@ -26,10 +26,10 @@ if [[ "$OPTION_GTK2_HIDPI" == "true" ]]; then
+ echo "${result_file_hidpi} already exists."
+ else
+ echo "Rendering '${result_file_hidpi}'"
+- "$INKSCAPE" --export-id="$i" \
+- --export-id-only \
+- --export-dpi=192 \
+- --export-png="${result_file_hidpi}" "$SRC_FILE" >/dev/null \
++ "$RSVG_CONVERT" --export-id="$i" \
++ --dpi-x=192 --dpi-y=192 \
++ --format=png
++ --output="${result_file_hidpi}" "$SRC_FILE" >/dev/null \
+ && "$OPTIPNG" -o7 --quiet "${result_file_hidpi}"
+ fi
+ fi
+diff --git a/common/gtk-3.0/common.am b/common/gtk-3.0/common.am
+index a93d01d..9e4b102 100644
+--- a/common/gtk-3.0/common.am
++++ b/common/gtk-3.0/common.am
+@@ -14,19 +14,11 @@ clean:
+ rm -rf assets/ light/ dark/ darker/ lighter/
+
+ $(normal): $(srcdir)/assets.svg | assets
+-if INKSCAPE_1_0_OR_NEWER
+- $(INKSCAPE) --export-id-only --export-filename="$@" --export-id="$(basename $(notdir $@))" --export-dpi=96 "$<" >/dev/null
+-else !INKSCAPE_1_0_OR_NEWER
+- $(INKSCAPE) --export-id-only --export-png="$@" --export-id="$(basename $(notdir $@))" --export-dpi=96 "$<" >/dev/null
+-endif
++ $(RSVG_CONVERT) --format=png --output="$@" --export-id="$(basename $(notdir $@))" --dpi-y=96 --dpi-x=96 "$<" >/dev/null
+ $(OPTIPNG) -o7 --quiet "$@"
+
+ $(hidpi): $(srcdir)/assets.svg | assets
+-if INKSCAPE_1_0_OR_NEWER
+- $(INKSCAPE) --export-id-only --export-filename="$@" --export-id="$(patsubst %@2,%,$(basename $(notdir $@)))" --export-dpi=192 "$<" >/dev/null
+-else !INKSCAPE_1_0_OR_NEWER
+- $(INKSCAPE) --export-id-only --export-png="$@" --export-id="$(patsubst %@2,%,$(basename $(notdir $@)))" --export-dpi=192 "$<" >/dev/null
+-endif
++ $(RSVG_CONVERT) --format=png --output="$@" --export-id="$(patsubst %@2,%,$(basename $(notdir $@)))" --dpi-y=192 --dpi-x=192 "$<" >/dev/null
+ $(OPTIPNG) -o7 --quiet "$@"
+
+ .PHONY: normal hidpi clean
+diff --git a/common/xfwm4/Makefile.am b/common/xfwm4/Makefile.am
+index e5fbdc5..1f21183 100644
+--- a/common/xfwm4/Makefile.am
++++ b/common/xfwm4/Makefile.am
+@@ -17,11 +17,7 @@ $(light): $(srcdir)/light/assets.svg | light/assets
+ $(dark): $(srcdir)/dark/assets.svg | dark/assets
+
+ $(light) $(dark):
+-if INKSCAPE_1_0_OR_NEWER
+- $(INKSCAPE) --export-id-only --export-filename="$@" --export-id="$(basename $(notdir $@))" --export-dpi=$(if $(filter $(OPTION_GTK2_HIDPI),true),192,96) "$<" >/dev/null
+-else !INKSCAPE_1_0_OR_NEWER
+- $(INKSCAPE) --export-id-only --export-png="$@" --export-id="$(basename $(notdir $@))" --export-dpi=$(if $(filter $(OPTION_GTK2_HIDPI),true),192,96) "$<" >/dev/null
+-endif
++ $(RSVG_CONVERT) --format=png --output="$@" --export-id="$(basename $(notdir $@))" --dpi-y=$(if $(filter $(OPTION_GTK2_HIDPI),true),192,96) --dpi-x=$(if $(filter $(OPTION_GTK2_HIDPI),true),192,96) "$<" >/dev/null
+ $(OPTIPNG) -o7 --quiet "$@"
+
+ .PHONY: light dark clean
+diff --git a/common/xfwm4/render-asset.sh b/common/xfwm4/render-asset.sh
+index 6685414..f6198af 100755
+--- a/common/xfwm4/render-asset.sh
++++ b/common/xfwm4/render-asset.sh
+@@ -1,7 +1,7 @@
+ #!/bin/bash
+ set -ueo pipefail
+
+-INKSCAPE="$(which inkscape)"
++RSVG_CONVERT="$(which rsvg-convert)"
+ OPTIPNG="$(which optipng)"
+
+ ASSETS_DIR="$1"
+@@ -14,9 +14,9 @@ if [[ -f "${result_file}" ]] ; then
+ echo "${result_file} already exists."
+ else
+ echo "Rendering '${result_file}'"
+- "$INKSCAPE" --export-id="$i" \
+- --export-id-only \
+- --export-png="${result_file}" "$SRC_FILE" >/dev/null \
++ "$RSVG_CONVERT" --export-id="$i" \
++ --format=png
++ --output="${result_file}" "$SRC_FILE" >/dev/null \
+ && "$OPTIPNG" -o7 --quiet "${result_file}"
+ fi
+
+@@ -26,10 +26,10 @@ if [[ "$OPTION_GTK2_HIDPI" == "true" ]]; then
+ echo "${result_file_hidpi} already exists."
+ else
+ echo "Rendering '${result_file_hidpi}'"
+- "$INKSCAPE" --export-id="$i" \
+- --export-id-only \
+- --export-dpi=192 \
+- --export-png="${result_file_hidpi}" "$SRC_FILE" >/dev/null \
++ "$RSVG_CONVERT" --export-id="$i" \
++ --dpi-x=192 --dpi-y=192 \
++ --format=png
++ --output="${result_file_hidpi}" "$SRC_FILE" >/dev/null \
+ && "$OPTIPNG" -o7 --quiet "${result_file_hidpi}"
+ fi
+ fi
+diff --git a/configure.ac b/configure.ac
+index f0725f1..1a52cc7 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -48,12 +48,8 @@ AM_CONDITIONAL([GNOME_SHELL_3_32_OR_NEWER], [test "0$GNOME_SHELL_VERSMNR" -ge 31
+ AS_IF([test "x$ENABLE_CINNAMON" != xno], [ARC_CINNAMON])
+
+ AS_IF([test "x$ENABLE_GTK2" != xno -o "x$ENABLE_GTK3" != xno -o "x$ENABLE_XFWM" != xno], [
+- AC_PATH_PROG([INKSCAPE], [inkscape])
+- AS_IF([test "x$ac_cv_path_INKSCAPE" = x], [AC_MSG_ERROR([inkscape not found])])
+- AS_IF([test "x$ac_cv_path_INKSCAPE" != x],
+- [INKSCAPE_VERSMJR=`inkscape --version 2> /dev/null | cut -d' ' -f2 | cut -d'.' -f1`]
+- AM_CONDITIONAL([INKSCAPE_1_0_OR_NEWER], [test "x$INKSCAPE_VERSMJR" = x1])
+- )
++ AC_PATH_PROG([RSVG_CONVERT], [rsvg-convert])
++ AS_IF([test "x$ac_cv_path_RSVG_CONVERT" = x], [AC_MSG_ERROR([rsvg-convert not found])])
+ AC_PATH_PROG([OPTIPNG], [optipng])
+ AS_IF([test "x$ac_cv_path_OPTIPNG" = x], [AC_MSG_ERROR([optipng not found])])
+ ])
+--
+2.26.0
+
diff --git a/subprojects/shared-modules/gtk2/gtk2-common-themes.json b/subprojects/shared-modules/gtk2/gtk2-common-themes.json
new file mode 100644
index 00000000..5f4f791d
--- /dev/null
+++ b/subprojects/shared-modules/gtk2/gtk2-common-themes.json
@@ -0,0 +1,250 @@
+{
+ "name": "gtk2-common-themes",
+ "buildsystem": "simple",
+ "build-commands": [],
+ "modules": [
+ {
+ "name": "sassc",
+ "// NOTE": "This is used by Yaru, Greybird, and Materia",
+ "cleanup": ["*"],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://github.com/sass/sassc/archive/3.5.0.tar.gz",
+ "sha256": "26f54e31924b83dd706bc77df5f8f5553a84d51365f0e3c566df8de027918042"
+ },
+ {
+ "type": "script",
+ "commands": ["autoreconf -si"]
+ }
+ ],
+ "modules": [
+ {
+ "name": "libsass",
+ "cleanup": ["*"],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://github.com/sass/libsass/archive/3.5.4.tar.gz",
+ "sha256": "5f61cbcddaf8e6ef7a725fcfa5d05297becd7843960f245197ebb655ff868770"
+ },
+ {
+ "type": "script",
+ "commands": ["autoreconf -si"]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "gtk2-murrine-engine",
+ "rm-configure": true,
+ "// NOTE": "Used by Arc and CrosAdapta",
+ "cleanup": [
+ "*.la"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://download.gnome.org/sources/murrine/0.98/murrine-0.98.2.tar.xz",
+ "sha256": "e9c68ae001b9130d0f9d1b311e8121a94e5c134b82553ba03971088e57d12c89"
+ },
+ {
+ "type": "patch",
+ "path": "murrine-engine-fix-crash.patch"
+ },
+ {
+ "type": "script",
+ "commands": [
+ "rm config.guess",
+ "autoreconf -si"
+ ]
+ }
+ ]
+ },
+ {
+ "name": "cros-adapta-gtk2-theme",
+ "// NOTE": "This is used by Chrome OS",
+ "buildsystem": "simple",
+ "build-commands": [
+ "install -Dm644 index.theme ${FLATPAK_DEST}/share/themes/CrosAdapta/index.theme",
+ "cp -r gtk-2.0 ${FLATPAK_DEST}/share/themes/CrosAdapta"
+ ],
+ "sources": [
+ {
+ "type": "git",
+ "url": "https://chromium.googlesource.com/chromiumos/third_party/cros-adapta",
+ "commit": "eb6d8c1832b9181926df107faf41a80887fd982c"
+ }
+ ]
+ },
+ {
+ "name": "arc-gtk2-theme",
+ "// NOTE": "This is used by Solus and is popular",
+ "// FIXME": "This has a dependency on inkscape and my patch isn't quite good enough sadly",
+ "disabled": true,
+ "config-opts": [
+ "--disable-gnome-shell",
+ "--disable-cinnamon",
+ "--disable-gtk3",
+ "--disable-metacity",
+ "--disable-xfwm",
+ "--disable-plank",
+ "--disable-openbox",
+ "--disable-unity"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://github.com/jnsh/arc-theme/releases/download/20200513/arc-theme-20200513.tar.xz",
+ "sha256": "cd268b878d6ad7c81b7acc0f89b66e26ee9a9a92eafb03b792318d51707f1962"
+ },
+ {
+ "type": "patch",
+ "path": "arc-gtk2-theme-Replace-Inkscape-dependency-with-rsvg-convert.patch"
+ },
+ {
+ "type": "shell",
+ "commands": ["sed -i 's|\"$srcdir/configure\" $@||' autogen.sh"]
+ }
+ ],
+ "modules": [
+ {
+ "name": "optipng",
+ "cleanup": ["*"],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://prdownloads.sourceforge.net/optipng/optipng-0.7.7.tar.gz",
+ "sha256": "4f32f233cef870b3f95d3ad6428bfe4224ef34908f1b42b0badf858216654452"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "breeze-gtk2-theme",
+ "// NOTE": "This is used by some KDE distros",
+ "// FIXME": "This is disabled because breeze depends on KDecoration/Qt5...",
+ "disabled": true,
+ "buildsystem": "cmake-ninja",
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://github.com/KDE/breeze-gtk/archive/v5.18.90.tar.gz",
+ "sha256": "73ff1fee8afb2fc498075d1693a664f6a749b763606d4548f74e225983107730"
+ }
+ ],
+ "modules": [
+ {
+ "name": "extra-cmake-modules",
+ "buildsystem": "cmake-ninja",
+ "cleanup": ["*"],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://github.com/KDE/extra-cmake-modules/archive/v5.70.0.tar.gz",
+ "sha256": "0e6d0694b2372cbdbc9e64abcaaac21196a15355b360e02e2e833885ae0c62f2"
+ }
+ ]
+ },
+ {
+ "name": "breeze",
+ "buildsystem": "cmake-ninja",
+ "cleanup": ["*"],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://github.com/KDE/breeze/archive/v5.18.90.tar.gz",
+ "sha256": "55e42656601dd79db1bc40589764606ec203c7f99c84340deed6e3847a4fdaf6"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "elementary-gtk2-theme",
+ "// NOTE": "This is used by Elementary OS",
+ "buildsystem": "meson",
+ "cleanup": [
+ "/share/themes/elementary/gtk-3.0",
+ "/share/themes/elementary/plank",
+ "/share/plank"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://github.com/elementary/stylesheet/archive/5.4.2.tar.gz",
+ "sha256": "3bc37723daf4ce0b7c9ce4c125ef0055affe8d6654981388ec87d4a23a1ae0ec"
+ }
+ ]
+ },
+ {
+ "name": "yaru-gtk2-theme",
+ "// NOTE": "This is used by Ubuntu",
+ "buildsystem": "meson",
+ "config-opts": [
+ "-Dicons=false",
+ "-Dsounds=false",
+ "-Dgnome-shell=false",
+ "-Dsessions=false"
+ ],
+ "cleanup": [
+ "/share/themes/Yaru*/gtk-3.0",
+ "/share/themes/Yaru*/gtk-3.20",
+ "/share/themes/Yaru*/unity"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://github.com/ubuntu/yaru/archive/20.10.1.tar.gz",
+ "sha256": "9da2605088674edf2694a8215b7344fb5209b308dd8220ea21667a914dc8c55d"
+ }
+ ]
+ },
+ {
+ "name": "greybird-gtk2-theme",
+ "// NOTE": "This is used by many XFCE distros",
+ "buildsystem": "meson",
+ "cleanup": [
+ "/share/themes/Greybird*/xfwm4",
+ "/share/themes/Greybird*/gnome-shell",
+ "/share/themes/Greybird*/gtk-3.0",
+ "/share/themes/Greybird*/metacity-1",
+ "/share/themes/Greybird*/xfce-notify-4.0",
+ "/share/themes/Greybird*/plank",
+ "/share/themes/Greybird*/unity",
+ "/share/themes/Greybird*/*.emerald"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://github.com/shimmerproject/Greybird/archive/v3.22.12.tar.gz",
+ "sha256": "410804cd5daca33cbc5c7c4a179f3a334ced87f408e515fc5d9c083a04bec4bc"
+ }
+ ]
+ },
+ {
+ "name": "materia-gtk2-theme",
+ "// NOTE": "This is used by Ubuntu Studio",
+ "buildsystem": "meson",
+ "cleanup": [
+ "/share/themes/Materia*/xfwm4",
+ "/share/themes/Materia*/gnome-shell",
+ "/share/themes/Materia*/gtk-3.0",
+ "/share/themes/Materia*/metacity-1",
+ "/share/themes/Materia*/cinnamon",
+ "/share/themes/Materia*/chrome",
+ "/share/themes/Materia*/plank",
+ "/share/themes/Materia*/unity"
+ ],
+ "sources": [
+ {
+ "type": "git",
+ "url": "https://github.com/nana-4/materia-theme.git",
+ "commit": "b36b379c9256b67e5f63a60c6faf6912f1845b66"
+ }
+ ]
+ }
+ ]
+}
diff --git a/subprojects/shared-modules/gtk2/gtk2-fix-crash-in-show-uri.patch b/subprojects/shared-modules/gtk2/gtk2-fix-crash-in-show-uri.patch
new file mode 100644
index 00000000..27b27300
--- /dev/null
+++ b/subprojects/shared-modules/gtk2/gtk2-fix-crash-in-show-uri.patch
@@ -0,0 +1,30 @@
+From 536da7a15c1737bc63c8ecba5ccac40cc2170860 Mon Sep 17 00:00:00 2001
+From: Matthias Clasen <mclasen@redhat.com>
+Date: Mon, 19 Apr 2021 16:39:53 -0400
+Subject: [PATCH] Fix a possible crash in gtk_show_uri
+
+g_file_get_basename can return NULL.
+Deal with it somehow.
+
+Fixes: #3883
+---
+ gdk/x11/gdkapplaunchcontext-x11.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/gdk/x11/gdkapplaunchcontext-x11.c b/gdk/x11/gdkapplaunchcontext-x11.c
+index 8051229ba5..2341bb2e1f 100644
+--- a/gdk/x11/gdkapplaunchcontext-x11.c
++++ b/gdk/x11/gdkapplaunchcontext-x11.c
+@@ -45,6 +45,9 @@ get_display_name (GFile *file,
+ if (name == NULL)
+ {
+ name = g_file_get_basename (file);
++ if (name == NULL)
++ name = g_file_get_uri (file);
++
+ if (!g_utf8_validate (name, -1, NULL))
+ {
+ tmp = name;
+--
+GitLab
+
diff --git a/subprojects/shared-modules/gtk2/gtk2-use-adwaita-theme.patch b/subprojects/shared-modules/gtk2/gtk2-use-adwaita-theme.patch
index 916b3491..e0350545 100644
--- a/subprojects/shared-modules/gtk2/gtk2-use-adwaita-theme.patch
+++ b/subprojects/shared-modules/gtk2/gtk2-use-adwaita-theme.patch
@@ -17,7 +17,7 @@ index 186a8f5cb2..f5c39b5afe 100644
+ if (var)
+ path = g_build_filename (var, "share", "themes", NULL);
+ else
-+ path = g_build_filename ("/usr", "share", "themes", NULL);
++ path = g_build_filename ("/app", "share", "themes", NULL);
+
+ return path;
+}
diff --git a/subprojects/shared-modules/gtk2/gtk2.json b/subprojects/shared-modules/gtk2/gtk2.json
index cb39de7d..bfca223a 100644
--- a/subprojects/shared-modules/gtk2/gtk2.json
+++ b/subprojects/shared-modules/gtk2/gtk2.json
@@ -57,18 +57,21 @@
"sources": [
{
"type": "archive",
- "url": "https://download.gnome.org/sources/gtk+/2.24/gtk+-2.24.32.tar.xz",
- "sha256": "b6c8a93ddda5eabe3bfee1eb39636c9a03d2a56c7b62828b359bf197943c582e"
+ "url": "https://download.gnome.org/sources/gtk+/2.24/gtk+-2.24.33.tar.xz",
+ "sha256": "ac2ac757f5942d318a311a54b0c80b5ef295f299c2a73c632f6bfb1ff49cc6da"
},
{
"type": "patch",
"path": "gtk2-use-adwaita-theme.patch"
+ },
+ {
+ "type": "patch",
+ "path": "gtk2-fix-crash-in-show-uri.patch"
}
]
},
{
"name": "ibus-gtk2",
- "no-make-install": true,
"config-opts": [
"--disable-xim",
"--disable-dconf",
@@ -90,18 +93,18 @@
"--disable-introspection",
"--disable-python2"
],
- "ensure-writable": [
- "/lib/gtk-2.0/2.10.0/immodules.cache"
+ "make-install-args": [
+ "-C", "client/gtk2"
],
"post-install": [
- "install -m644 --target-directory=${FLATPAK_DEST}/lib/gtk-2.0/2.10.0/immodules client/gtk2/.libs/im-ibus.so",
- "gtk-query-immodules-2.0 > ${FLATPAK_DEST}/lib/gtk-2.0/2.10.0/immodules.cache"
+ "gtk-query-immodules-2.0 > immodules.cache",
+ "install immodules.cache -t $(pkg-config --variable=libdir gtk+-2.0)/gtk-2.0/2.10.0/"
],
"sources": [
{
"type": "archive",
- "url": "https://github.com/ibus/ibus/releases/download/1.5.21/ibus-1.5.21.tar.gz",
- "sha256": "adc1e5e620d6a89a49306f022b50561f2c05218dec13d0c9b136dc8b6568a2b9"
+ "url": "https://github.com/ibus/ibus/releases/download/1.5.23/ibus-1.5.23.tar.gz",
+ "sha256": "b7e8d5bdb7d71a5ba4ee43cdf374675f77121a71c1679c9b9e7e02875bd0e150"
}
]
}
diff --git a/subprojects/shared-modules/gtk2/murrine-engine-fix-crash.patch b/subprojects/shared-modules/gtk2/murrine-engine-fix-crash.patch
new file mode 100644
index 00000000..6200e771
--- /dev/null
+++ b/subprojects/shared-modules/gtk2/murrine-engine-fix-crash.patch
@@ -0,0 +1,12 @@
+Index: gtk2-engines-murrine-0.98.2/src/murrine_style.c
+===================================================================
+--- gtk2-engines-murrine-0.98.2.orig/src/murrine_style.c
++++ gtk2-engines-murrine-0.98.2/src/murrine_style.c
+@@ -2171,6 +2171,7 @@ murrine_style_draw_layout (GtkStyle
+ cairo_t *cr;
+ cr = murrine_begin_paint (window, area);
+ cairo_translate (cr, x+xos, y+yos);
++ pango_cairo_update_layout (cr, layout);
+ pango_cairo_layout_path (cr, layout);
+ murrine_set_color_rgba (cr, &temp, 0.5);
+ cairo_stroke (cr);
diff --git a/subprojects/shared-modules/gudev/gudev.json b/subprojects/shared-modules/gudev/gudev.json
index c86a3f91..50d9c6b9 100644
--- a/subprojects/shared-modules/gudev/gudev.json
+++ b/subprojects/shared-modules/gudev/gudev.json
@@ -1,6 +1,12 @@
{
"name": "gudev",
- "config-opts": [ "--disable-umockdev"],
+ "buildsystem": "meson",
+ "config-opts": [
+ "-Dtests=disabled",
+ "-Dvapi=disabled",
+ "-Dintrospection=disabled",
+ "-Dgtk_doc=false"
+ ],
"cleanup": [
"/include",
"/etc",
@@ -20,8 +26,8 @@
"sources": [
{
"type": "archive",
- "url": "https://download.gnome.org/sources/libgudev/233/libgudev-233.tar.xz",
- "sha256": "587c4970eb23f4e2deee2cb1fb7838c94a78c578f41ce12cac0a3f4a80dabb03"
+ "url": "https://download.gnome.org/sources/libgudev/237/libgudev-237.tar.xz",
+ "sha256": "0d06b21170d20c93e4f0534dbb9b0a8b4f1119ffb00b4031aaeb5b9148b686aa"
}
]
}
diff --git a/subprojects/shared-modules/gzdoom/description.patch b/subprojects/shared-modules/gzdoom/description.patch
new file mode 100644
index 00000000..5f760cca
--- /dev/null
+++ b/subprojects/shared-modules/gzdoom/description.patch
@@ -0,0 +1,18 @@
+diff --git a/src/d_iwad.cpp b/src/d_iwad.cpp
+index b421b1b35..9f0b16948 100644
+--- a/src/d_iwad.cpp
++++ b/src/d_iwad.cpp
+@@ -683,9 +683,10 @@ int FIWadManager::IdentifyVersion (TArray<FString> &wadfiles, const char *iwad,
+ "2. Edit your ~/Library/Preferences/" GAMENAMELOWERCASE ".ini and add the directories\n"
+ "of your iwads to the list beneath [IWADSearch.Directories]");
+ #else
+- "1. Place one or more of these wads in ~/.config/" GAMENAMELOWERCASE "/.\n"
+- "2. Edit your ~/.config/" GAMENAMELOWERCASE "/" GAMENAMELOWERCASE ".ini and add the directories of your\n"
+- "iwads to the list beneath [IWADSearch.Directories]");
++ "1. Place one or more of these wads in ~/.var/app/org.zdoom.GZDoom/.config/" GAMENAMELOWERCASE "/\n"
++ "2. Edit your ~/.var/app/org.zdoom.GZDoom/.config/" GAMENAMELOWERCASE "/" GAMENAMELOWERCASE ".ini and\n"
++ " add the directories of your iwads to the list beneath [IWADSearch.Directories]\n"
++ "3. Validate your Flatpak permissions, so that Flatpak has access to your directories with wads");
+ #endif
+ }
+ int pick = 0;
diff --git a/subprojects/shared-modules/gzdoom/gzdoom.json b/subprojects/shared-modules/gzdoom/gzdoom.json
new file mode 100644
index 00000000..1ab16bdc
--- /dev/null
+++ b/subprojects/shared-modules/gzdoom/gzdoom.json
@@ -0,0 +1,50 @@
+{
+ "name": "gzdoom",
+ "buildsystem": "cmake-ninja",
+ "config-opts": [
+ "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
+ ],
+ "cleanup": [
+ "/lib/*.a",
+ "/lib/*.la",
+ "/lib/pkgconfig",
+ "/include"
+ ],
+ "sources": [
+ {
+ "type": "git",
+ "url": "https://github.com/coelckers/gzdoom.git",
+ "tag": "g4.7.1",
+ "commit": "107ff702423686414680d6458fea63a2647692c4"
+ },
+ {
+ "type": "file",
+ "url": "https://github.com/coelckers/gzdoom/raw/g4.7.1/soundfont/gzdoom.sf2",
+ "sha256": "fca3e514b635a21789d4224e84865d2954a2a914d46b64aa8219ddb565c44869"
+ },
+ /* I've discussed these patches upstream and a special -DFLATPAK_BUNDLE has been approved */
+ {
+ "type": "patch",
+ "path": "description.patch"
+ }
+ ],
+ "post-install": [
+ "install -Dm 644 gzdoom.sf2 /app/share/sounds/sf2/gzdoom.sf2"
+ ],
+ "modules": [
+ {
+ "name": "zmusic",
+ "buildsystem": "cmake-ninja",
+ "config-opts": [
+ "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://github.com/coelckers/ZMusic/archive/1.1.8.tar.gz",
+ "sha256": "73082f661b7b0bb33348d1d186c132deec9132a1613480348a00172b49c9fd68"
+ }
+ ]
+ }
+ ]
+}
diff --git a/subprojects/shared-modules/intltool/intltool-0.51.json b/subprojects/shared-modules/intltool/intltool-0.51.json
index 3a092241..c1f7d269 100644
--- a/subprojects/shared-modules/intltool/intltool-0.51.json
+++ b/subprojects/shared-modules/intltool/intltool-0.51.json
@@ -6,6 +6,10 @@
"type": "archive",
"url": "https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz",
"sha256": "67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd"
+ },
+ {
+ "type": "patch",
+ "path": "intltool-perl5.26-regex-fixes.patch"
}
]
}
diff --git a/subprojects/shared-modules/intltool/intltool-perl5.26-regex-fixes.patch b/subprojects/shared-modules/intltool/intltool-perl5.26-regex-fixes.patch
new file mode 100644
index 00000000..234b82bd
--- /dev/null
+++ b/subprojects/shared-modules/intltool/intltool-perl5.26-regex-fixes.patch
@@ -0,0 +1,59 @@
+Description: Escape "{", to prevent complaints from perl 5.22 and 5.26
+Author: Roderich Schupp <roderich.schupp@gmail.com>
+Author: gregor herrmann <gregoa@debian.org>
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=788705
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=826471
+Bug-Upstream: https://bugs.launchpad.net/intltool/+bug/1490906
+
+Index: intltool-0.51.0/intltool-update.in
+===================================================================
+--- intltool-0.51.0.orig/intltool-update.in 2017-07-23 17:24:35.113169465 +0200
++++ intltool-0.51.0/intltool-update.in 2017-07-23 17:24:35.109169052 +0200
+@@ -1062,13 +1062,13 @@
+ }
+ }
+
+- if ($str =~ /^(.*)\${?([A-Z_]+)}?(.*)$/)
++ if ($str =~ /^(.*)\$\{?([A-Z_]+)}?(.*)$/)
+ {
+ my $rest = $3;
+ my $untouched = $1;
+ my $sub = "";
+ # Ignore recursive definitions of variables
+- $sub = $varhash{$2} if defined $varhash{$2} and $varhash{$2} !~ /\${?$2}?/;
++ $sub = $varhash{$2} if defined $varhash{$2} and $varhash{$2} !~ /\$\{?$2}?/;
+
+ return SubstituteVariable ("$untouched$sub$rest");
+ }
+@@ -1190,10 +1190,10 @@
+ $name =~ s/\(+$//g;
+ $version =~ s/\(+$//g;
+
+- $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/);
+- $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/);
+- $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/);
+- $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/);
++ $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\$\{?AC_PACKAGE_NAME}?/);
++ $varhash{"PACKAGE"} = $name if (not $name =~ /\$\{?PACKAGE}?/);
++ $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\$\{?AC_PACKAGE_VERSION}?/);
++ $varhash{"VERSION"} = $version if (not $name =~ /\$\{?VERSION}?/);
+ }
+
+ if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)[,]?([^,\)]+)?/m)
+@@ -1219,11 +1219,11 @@
+ $version =~ s/\(+$//g;
+ $bugurl =~ s/\(+$//g if (defined $bugurl);
+
+- $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/);
+- $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/);
+- $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/);
+- $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/);
+- $varhash{"PACKAGE_BUGREPORT"} = $bugurl if (defined $bugurl and not $bugurl =~ /\${?\w+}?/);
++ $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\$\{?AC_PACKAGE_NAME}?/);
++ $varhash{"PACKAGE"} = $name if (not $name =~ /\$\{?PACKAGE}?/);
++ $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\$\{?AC_PACKAGE_VERSION}?/);
++ $varhash{"VERSION"} = $version if (not $name =~ /\$\{?VERSION}?/);
++ $varhash{"PACKAGE_BUGREPORT"} = $bugurl if (defined $bugurl and not $bugurl =~ /\$\{?\w+}?/);
+ }
+
+ # \s makes this not work, why?
diff --git a/subprojects/shared-modules/libappindicator/libappindicator-fix-crash-from-incorrect-signal-emission.patch b/subprojects/shared-modules/libappindicator/libappindicator-fix-crash-from-incorrect-signal-emission.patch
new file mode 100644
index 00000000..28927a37
--- /dev/null
+++ b/subprojects/shared-modules/libappindicator/libappindicator-fix-crash-from-incorrect-signal-emission.patch
@@ -0,0 +1,74 @@
+--- libappindicator-12.10.0/src/app-indicator.c 2012-07-11 13:28:34.415113869 -0400
++++ wrk/src/app-indicator.c 2020-03-19 12:14:47.813191652 -0400
+@@ -443,7 +443,7 @@
+ G_STRUCT_OFFSET (AppIndicatorClass, new_icon),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+- G_TYPE_NONE, 0, G_TYPE_NONE);
++ G_TYPE_NONE, 0);
+
+ /**
+ * AppIndicator::new-attention-icon:
+@@ -457,7 +457,7 @@
+ G_STRUCT_OFFSET (AppIndicatorClass, new_attention_icon),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+- G_TYPE_NONE, 0, G_TYPE_NONE);
++ G_TYPE_NONE, 0);
+
+ /**
+ * AppIndicator::new-status:
+@@ -505,7 +505,7 @@
+ G_STRUCT_OFFSET (AppIndicatorClass, connection_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__BOOLEAN,
+- G_TYPE_NONE, 1, G_TYPE_BOOLEAN, G_TYPE_NONE);
++ G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
+
+ /**
+ * AppIndicator::new-icon-theme-path:
+@@ -1175,7 +1175,7 @@
+ gchar * guide = priv->label_guide != NULL ? priv->label_guide : "";
+
+ g_signal_emit(G_OBJECT(self), signals[NEW_LABEL], 0,
+- label, guide, TRUE);
++ label, guide);
+ if (priv->dbus_registration != 0 && priv->connection != NULL) {
+ GError * error = NULL;
+
+@@ -1490,7 +1490,7 @@
+ static void
+ theme_changed_cb (GtkIconTheme * theme, gpointer user_data)
+ {
+- g_signal_emit (user_data, signals[NEW_ICON], 0, TRUE);
++ g_signal_emit (user_data, signals[NEW_ICON], 0);
+
+ AppIndicator * self = (AppIndicator *)user_data;
+ AppIndicatorPrivate *priv = self->priv;
+@@ -1904,7 +1904,7 @@
+ }
+
+ if (changed) {
+- g_signal_emit (self, signals[NEW_ATTENTION_ICON], 0, TRUE);
++ g_signal_emit (self, signals[NEW_ATTENTION_ICON], 0);
+
+ if (self->priv->dbus_registration != 0 && self->priv->connection != NULL) {
+ GError * error = NULL;
+@@ -1982,7 +1982,7 @@
+ }
+
+ if (changed) {
+- g_signal_emit (self, signals[NEW_ICON], 0, TRUE);
++ g_signal_emit (self, signals[NEW_ICON], 0);
+
+ if (self->priv->dbus_registration != 0 && self->priv->connection != NULL) {
+ GError * error = NULL;
+@@ -2048,7 +2048,7 @@
+
+ self->priv->icon_theme_path = g_strdup(icon_theme_path);
+
+- g_signal_emit (self, signals[NEW_ICON_THEME_PATH], 0, self->priv->icon_theme_path, TRUE);
++ g_signal_emit (self, signals[NEW_ICON_THEME_PATH], 0, self->priv->icon_theme_path);
+
+ if (self->priv->dbus_registration != 0 && self->priv->connection != NULL) {
+ GError * error = NULL;
diff --git a/subprojects/shared-modules/libappindicator/libappindicator-fix-crash-iterating-icon-themes.patch b/subprojects/shared-modules/libappindicator/libappindicator-fix-crash-iterating-icon-themes.patch
new file mode 100644
index 00000000..44f6fe48
--- /dev/null
+++ b/subprojects/shared-modules/libappindicator/libappindicator-fix-crash-iterating-icon-themes.patch
@@ -0,0 +1,11 @@
+--- libappindicator-12.10.0/src/app-indicator.c
++++ libappindicator-12.10.0/src/app-indicator.c
+@@ -1606,7 +1606,7 @@ status_icon_changes (AppIndicator * self, gpointer data)
+ gint n_elements, i;
+ gboolean found=FALSE;
+ gtk_icon_theme_get_search_path(icon_theme, &path, &n_elements);
+- for (i=0; i< n_elements || path[i] == NULL; i++) {
++ for (i=0; i< n_elements; i++) {
+ if(g_strcmp0(path[i], self->priv->icon_theme_path) == 0) {
+ found=TRUE;
+ break;
diff --git a/subprojects/shared-modules/libappindicator/libappindicator-gtk2-12.10.json b/subprojects/shared-modules/libappindicator/libappindicator-gtk2-12.10.json
index b65cfa3f..4e1d38fa 100644
--- a/subprojects/shared-modules/libappindicator/libappindicator-gtk2-12.10.json
+++ b/subprojects/shared-modules/libappindicator/libappindicator-gtk2-12.10.json
@@ -1,7 +1,8 @@
{
"name": "libappindicator",
"build-options": {
- "cflags": "-Wno-error"
+ "cflags": "-Wno-error",
+ "make-args": [ "-j1" ]
},
"rm-configure": true,
"config-opts": [
@@ -34,6 +35,14 @@
"path": "libappindicator-no-python.patch"
},
{
+ "type": "patch",
+ "path": "libappindicator-fix-crash-from-incorrect-signal-emission.patch"
+ },
+ {
+ "type": "patch",
+ "path": "libappindicator-fix-crash-iterating-icon-themes.patch"
+ },
+ {
"type": "script",
"commands": ["autoreconf -sfi"],
"dest-filename": "autogen.sh"
@@ -41,7 +50,7 @@
],
"modules": [
"../intltool/intltool-0.51.json",
- "../dbus-glib/dbus-glib-0.110.json",
+ "../dbus-glib/dbus-glib.json",
{
"name": "libdbusmenu",
"build-options": {
diff --git a/subprojects/shared-modules/libappindicator/libappindicator-gtk3-12.10.json b/subprojects/shared-modules/libappindicator/libappindicator-gtk3-12.10.json
index 46e6f438..c613f8fb 100644
--- a/subprojects/shared-modules/libappindicator/libappindicator-gtk3-12.10.json
+++ b/subprojects/shared-modules/libappindicator/libappindicator-gtk3-12.10.json
@@ -1,7 +1,8 @@
{
"name": "libappindicator",
"build-options": {
- "cflags": "-Wno-error"
+ "cflags": "-Wno-error",
+ "make-args": [ "-j1" ]
},
"rm-configure": true,
"config-opts": [
@@ -34,6 +35,14 @@
"path": "libappindicator-no-python.patch"
},
{
+ "type": "patch",
+ "path": "libappindicator-fix-crash-from-incorrect-signal-emission.patch"
+ },
+ {
+ "type": "patch",
+ "path": "libappindicator-fix-crash-iterating-icon-themes.patch"
+ },
+ {
"type": "script",
"commands": ["autoreconf -sfi"],
"dest-filename": "autogen.sh"
@@ -41,7 +50,7 @@
],
"modules": [
"../intltool/intltool-0.51.json",
- "../dbus-glib/dbus-glib-0.110.json",
+ "../dbus-glib/dbus-glib.json",
{
"name": "libdbusmenu",
"build-options": {
diff --git a/subprojects/shared-modules/libappindicator/libappindicator-gtk3-introspection-12.10.json b/subprojects/shared-modules/libappindicator/libappindicator-gtk3-introspection-12.10.json
index 5df82527..c49742ed 100644
--- a/subprojects/shared-modules/libappindicator/libappindicator-gtk3-introspection-12.10.json
+++ b/subprojects/shared-modules/libappindicator/libappindicator-gtk3-introspection-12.10.json
@@ -1,7 +1,8 @@
{
"name": "libappindicator",
"build-options": {
- "cflags": "-Wno-error"
+ "cflags": "-Wno-error",
+ "make-args": [ "-j1" ]
},
"rm-configure": true,
"config-opts": [
@@ -34,6 +35,14 @@
"path": "libappindicator-no-python.patch"
},
{
+ "type": "patch",
+ "path": "libappindicator-fix-crash-from-incorrect-signal-emission.patch"
+ },
+ {
+ "type": "patch",
+ "path": "libappindicator-fix-crash-iterating-icon-themes.patch"
+ },
+ {
"type": "script",
"commands": ["autoreconf -sfi"],
"dest-filename": "autogen.sh"
@@ -41,7 +50,7 @@
],
"modules": [
"../intltool/intltool-0.51.json",
- "../dbus-glib/dbus-glib-0.110.json",
+ "../dbus-glib/dbus-glib.json",
{
"name": "libdbusmenu",
"build-options": {
diff --git a/subprojects/shared-modules/libappindicator/libappindicator.json.in b/subprojects/shared-modules/libappindicator/libappindicator.json.in
index 2b383af7..3e53a81a 100644
--- a/subprojects/shared-modules/libappindicator/libappindicator.json.in
+++ b/subprojects/shared-modules/libappindicator/libappindicator.json.in
@@ -1,7 +1,8 @@
{
"name": "libappindicator",
"build-options": {
- "cflags": "-Wno-error"
+ "cflags": "-Wno-error",
+ "make-args": [ "-j1" ]
},
"rm-configure": true,
"config-opts": [
@@ -34,6 +35,14 @@
"path": "libappindicator-no-python.patch"
},
{
+ "type": "patch",
+ "path": "libappindicator-fix-crash-from-incorrect-signal-emission.patch"
+ },
+ {
+ "type": "patch",
+ "path": "libappindicator-fix-crash-iterating-icon-themes.patch"
+ },
+ {
"type": "script",
"commands": ["autoreconf -sfi"],
"dest-filename": "autogen.sh"
@@ -41,7 +50,7 @@
],
"modules": [
"../intltool/intltool-0.51.json",
- "../dbus-glib/dbus-glib-0.110.json",
+ "../dbus-glib/dbus-glib.json",
{
"name": "libdbusmenu",
"build-options": {
diff --git a/subprojects/shared-modules/libcanberra/0001-gtk-Don-t-assume-all-GdkDisplays-are-GdkX11Displays-.patch b/subprojects/shared-modules/libcanberra/0001-gtk-Don-t-assume-all-GdkDisplays-are-GdkX11Displays-.patch
new file mode 100644
index 00000000..763c3a99
--- /dev/null
+++ b/subprojects/shared-modules/libcanberra/0001-gtk-Don-t-assume-all-GdkDisplays-are-GdkX11Displays-.patch
@@ -0,0 +1,123 @@
+From d6dd5cdf45c1aac6c0519c8a4f5f89321770fb53 Mon Sep 17 00:00:00 2001
+From: Michael Meeks <michael.meeks@suse.com>
+Date: Fri, 9 Nov 2012 16:16:40 +0000
+Subject: [PATCH] gtk: Don't assume all GdkDisplays are GdkX11Displays:
+ broadway/wayland
+
+Co-Authored-By: Bastien Nocera <hadess@hadess.net>
+---
+ src/canberra-gtk-module.c | 15 +++++++++++++++
+ src/canberra-gtk.c | 28 ++++++++++++++++++++++------
+ 2 files changed, 37 insertions(+), 6 deletions(-)
+
+diff --git a/src/canberra-gtk-module.c b/src/canberra-gtk-module.c
+index 67791f0..c1532ab 100644
+--- a/src/canberra-gtk-module.c
++++ b/src/canberra-gtk-module.c
+@@ -307,6 +307,11 @@ static gint window_get_desktop(GdkDisplay *d, GdkWindow *w) {
+ guchar *data = NULL;
+ gint ret = -1;
+
++#ifdef GDK_IS_X11_DISPLAY
++ if (!GDK_IS_X11_DISPLAY(d))
++ return 0;
++#endif
++
+ if (XGetWindowProperty(GDK_DISPLAY_XDISPLAY(d), GDK_WINDOW_XID(w),
+ gdk_x11_get_xatom_by_name_for_display(d, "_NET_WM_DESKTOP"),
+ 0, G_MAXLONG, False, XA_CARDINAL, &type_return,
+@@ -335,6 +340,11 @@ static gint display_get_desktop(GdkDisplay *d) {
+ guchar *data = NULL;
+ gint ret = -1;
+
++#ifdef GDK_IS_X11_DISPLAY
++ if (!GDK_IS_X11_DISPLAY(d))
++ return 0;
++#endif
++
+ if (XGetWindowProperty(GDK_DISPLAY_XDISPLAY(d), DefaultRootWindow(GDK_DISPLAY_XDISPLAY(d)),
+ gdk_x11_get_xatom_by_name_for_display(d, "_NET_CURRENT_DESKTOP"),
+ 0, G_MAXLONG, False, XA_CARDINAL, &type_return,
+@@ -365,6 +375,11 @@ static gboolean window_is_xembed(GdkDisplay *d, GdkWindow *w) {
+ gboolean ret = FALSE;
+ Atom xembed;
+
++#ifdef GDK_IS_X11_DISPLAY
++ if (!GDK_IS_X11_DISPLAY(d))
++ return FALSE;
++#endif
++
+ /* Gnome Panel applets are XEMBED windows. We need to make sure we
+ * ignore them */
+
+diff --git a/src/canberra-gtk.c b/src/canberra-gtk.c
+index 34446f5..47285f8 100644
+--- a/src/canberra-gtk.c
++++ b/src/canberra-gtk.c
+@@ -185,6 +185,11 @@ static gint window_get_desktop(GdkDisplay *d, GdkWindow *w) {
+ guchar *data = NULL;
+ gint ret = -1;
+
++#ifdef GDK_IS_X11_DISPLAY
++ if (!GDK_IS_X11_DISPLAY(d))
++ return 0;
++#endif
++
+ if (XGetWindowProperty(GDK_DISPLAY_XDISPLAY(d), GDK_WINDOW_XID(w),
+ gdk_x11_get_xatom_by_name_for_display(d, "_NET_WM_DESKTOP"),
+ 0, G_MAXLONG, False, XA_CARDINAL, &type_return,
+@@ -254,18 +259,28 @@ int ca_gtk_proplist_set_for_widget(ca_proplist *p, GtkWidget *widget) {
+
+ if (gtk_widget_get_realized(GTK_WIDGET(w))) {
+ GdkWindow *dw = NULL;
++#ifdef GDK_IS_X11_DISPLAY
+ GdkScreen *screen = NULL;
++#endif
+ GdkDisplay *display = NULL;
+ gint x = -1, y = -1, width = -1, height = -1, screen_width = -1, screen_height = -1;
+
+- if ((dw = gtk_widget_get_window(GTK_WIDGET(w))))
+- if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X11_XID, "%lu", (unsigned long) GDK_WINDOW_XID(dw))) < 0)
+- return ret;
++ if ((dw = gtk_widget_get_window(GTK_WIDGET(w)))) {
++#ifdef GDK_IS_X11_DISPLAY
++ if (GDK_IS_X11_DISPLAY(display)) {
++ if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X11_XID, "%lu", (unsigned long) GDK_WINDOW_XID(dw))) < 0)
++ return ret;
++ }
++#endif
++ }
+
+ if ((display = gtk_widget_get_display(GTK_WIDGET(w)))) {
+- if ((t = gdk_display_get_name(display)))
++#ifdef GDK_IS_X11_DISPLAY
++ if (GDK_IS_X11_DISPLAY(display) && (t = gdk_display_get_name(display))) {
+ if ((ret = ca_proplist_sets(p, CA_PROP_WINDOW_X11_DISPLAY, t)) < 0)
+ return ret;
++ }
++#endif
+
+ if (dw) {
+ gint desktop = window_get_desktop(display, dw);
+@@ -276,7 +291,8 @@ int ca_gtk_proplist_set_for_widget(ca_proplist *p, GtkWidget *widget) {
+ }
+ }
+
+- if ((screen = gtk_widget_get_screen(GTK_WIDGET(w)))) {
++#ifdef GDK_IS_X11_DISPLAY
++ if (GDK_IS_X11_DISPLAY(display) && (screen = gtk_widget_get_screen(GTK_WIDGET(w)))) {
+
+ if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X11_SCREEN, "%i", gdk_screen_get_number(screen))) < 0)
+ return ret;
+@@ -285,7 +301,7 @@ int ca_gtk_proplist_set_for_widget(ca_proplist *p, GtkWidget *widget) {
+ if ((ret = ca_proplist_setf(p, CA_PROP_WINDOW_X11_MONITOR, "%i", gdk_screen_get_monitor_at_window(screen, dw))) < 0)
+ return ret;
+ }
+-
++#endif
+ /* FIXME, this might cause a round trip */
+
+ if (dw) {
+--
+2.34.1
+
diff --git a/subprojects/shared-modules/libcanberra/libcanberra.json b/subprojects/shared-modules/libcanberra/libcanberra.json
new file mode 100644
index 00000000..ac441941
--- /dev/null
+++ b/subprojects/shared-modules/libcanberra/libcanberra.json
@@ -0,0 +1,35 @@
+{
+ "name": "libcanberra",
+ "cleanup": [
+ "*.la",
+ "/bin",
+ "/etc",
+ "/include",
+ "/libexec",
+ "/share/gtk-doc",
+ "/share/man"
+ ],
+ "config-opts": [
+ "--disable-static",
+ "--disable-gtk-doc",
+ "--disable-oss",
+ "--enable-pulse",
+ "--disable-udev",
+ "--disable-gtk",
+ "--enable-gtk3",
+ "--disable-lynx"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "http://0pointer.de/lennart/projects/libcanberra/libcanberra-0.30.tar.xz",
+ "sha256": "c2b671e67e0c288a69fc33dc1b6f1b534d07882c2aceed37004bf48c601afa72",
+ "git-init" : true
+ },
+ {
+ "type": "patch",
+ "path": "0001-gtk-Don-t-assume-all-GdkDisplays-are-GdkX11Displays-.patch",
+ "use-git-am": true
+ }
+ ]
+}
diff --git a/subprojects/shared-modules/libmad/libmad.json b/subprojects/shared-modules/libmad/libmad.json
index 7ee6cc78..cfebd20e 100644
--- a/subprojects/shared-modules/libmad/libmad.json
+++ b/subprojects/shared-modules/libmad/libmad.json
@@ -1,5 +1,9 @@
{
"name" : "libmad",
+ "post-install": [
+ "install -d $FLATPAK_DEST/lib/pkgconfig",
+ "install -Dm644 -t $FLATPAK_DEST/lib/pkgconfig mad.pc"
+ ],
"sources" : [
{
"type" : "archive",
@@ -31,6 +35,10 @@
"path": "libmad-0.15.1b-cflags-O2.patch"
},
{
+ "type": "file",
+ "path": "mad.pc"
+ },
+ {
"type": "shell",
"commands": [
"cp /usr/share/gnu-config/config.sub .",
diff --git a/subprojects/shared-modules/libmad/mad.pc b/subprojects/shared-modules/libmad/mad.pc
new file mode 100644
index 00000000..15d85311
--- /dev/null
+++ b/subprojects/shared-modules/libmad/mad.pc
@@ -0,0 +1,11 @@
+prefix=/app
+exec_prefix=/app
+libdir=/app/lib
+includedir=/app/include
+
+Name: mad
+Description: MPEG Audio Decoder
+Requires:
+Version: 0.15.1b
+Libs: -L/app/lib} -lmad -lm
+Cflags: -I/app/include \ No newline at end of file
diff --git a/subprojects/shared-modules/libsecret/libsecret.json b/subprojects/shared-modules/libsecret/libsecret.json
index a2d34f58..ae347bba 100644
--- a/subprojects/shared-modules/libsecret/libsecret.json
+++ b/subprojects/shared-modules/libsecret/libsecret.json
@@ -4,20 +4,20 @@
"config-opts": [
"-Dmanpage=false",
"-Dvapi=false",
- "-Dgtk_doc=false"
+ "-Dgtk_doc=false",
+ "-Dintrospection=false"
],
"cleanup": [
"/bin",
"/include",
"/lib/pkgconfig",
- "/share/gir-1.0",
"/share/man"
],
"sources": [
{
"type": "archive",
- "url": "https://ftp.gnome.org/pub/GNOME/sources/libsecret/0.20/libsecret-0.20.1.tar.xz",
- "sha256": "57f73e94ec6263a17a077fb809cf8cf424637a897a7f15b4eec42ce4aef52447"
+ "url": "https://download.gnome.org/sources/libsecret/0.20/libsecret-0.20.5.tar.xz",
+ "sha256": "3fb3ce340fcd7db54d87c893e69bfc2b1f6e4d4b279065ffe66dac9f0fd12b4d"
}
]
}
diff --git a/subprojects/shared-modules/libusb/libusb.json b/subprojects/shared-modules/libusb/libusb.json
new file mode 100644
index 00000000..21dddf80
--- /dev/null
+++ b/subprojects/shared-modules/libusb/libusb.json
@@ -0,0 +1,19 @@
+{
+ "name": "libusb",
+ "config-opts": [ "--disable-static" ],
+ "cleanup": [
+ "/lib/*.la",
+ "/lib/pkgconfig",
+ "/include"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://github.com/libusb/libusb/releases/download/v1.0.26/libusb-1.0.26.tar.bz2",
+ "sha256": "12ce7a61fc9854d1d2a1ffe095f7b5fac19ddba095c259e6067a46500381b5a5"
+ }
+ ],
+ "post-install": [
+ "install -Dm644 COPYING /app/share/licenses/libusb/COPYING"
+ ]
+}
diff --git a/subprojects/shared-modules/linux-audio/dssi.json b/subprojects/shared-modules/linux-audio/dssi.json
new file mode 100644
index 00000000..ec33fd37
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/dssi.json
@@ -0,0 +1,29 @@
+{
+ "name": "dssi",
+ "rm-configure": true,
+ "config-opts": [
+ "--disable-static"
+ ],
+ "cleanup": [
+ "/bin",
+ "/include",
+ "/lib/dssi",
+ "/lib/pkgconfig",
+ "/share/man",
+ "*.la"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "http://download.sf.net/sourceforge/dssi/dssi-1.1.1.tar.gz",
+ "sha256": "f2c82b073a947c8255284249097667f9b14e660bf86186f3fcd3b3b3e087814e"
+ },
+ {
+ "type": "script",
+ "commands": [
+ "autoreconf -fiv"
+ ],
+ "dest-filename": "autogen.sh"
+ }
+ ]
+}
diff --git a/subprojects/shared-modules/linux-audio/fftw3f-static.json b/subprojects/shared-modules/linux-audio/fftw3f-static.json
new file mode 100644
index 00000000..66757499
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/fftw3f-static.json
@@ -0,0 +1,44 @@
+{
+ "name": "fftw3f",
+ "config-opts": [
+ "--enable-threads",
+ "--enable-static",
+ "--disable-shared",
+ "--enable-float"
+ ],
+ "build-options": {
+ "cflags": "-fPIC",
+ "arch": {
+ "x86_64": {
+ "config-opts": [
+ "--enable-sse2",
+ "--enable-avx",
+ "--enable-avx-128-fma"
+ ]
+ },
+ "aarch64": {
+ "config-opts": [
+ "--enable-neon"
+ ]
+ }
+ }
+ },
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://www.fftw.org/fftw-3.3.10.tar.gz",
+ "sha256": "56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467"
+ }
+ ],
+ "cleanup": [
+ "/bin",
+ "/include",
+ "/lib/cmake",
+ "/lib/pkgconfig",
+ "/share/info",
+ "/share/man",
+ "*.a",
+ "*.la",
+ "*.so"
+ ]
+}
diff --git a/subprojects/shared-modules/linux-audio/fftw3f.json b/subprojects/shared-modules/linux-audio/fftw3f.json
new file mode 100644
index 00000000..ee10c757
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/fftw3f.json
@@ -0,0 +1,41 @@
+{
+ "name": "fftw3f",
+ "config-opts": [
+ "--enable-threads",
+ "--enable-shared",
+ "--disable-static",
+ "--enable-float"
+ ],
+ "build-options": {
+ "arch": {
+ "x86_64": {
+ "config-opts": [
+ "--enable-sse2",
+ "--enable-avx",
+ "--enable-avx-128-fma"
+ ]
+ },
+ "aarch64": {
+ "config-opts": [
+ "--enable-neon"
+ ]
+ }
+ }
+ },
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://www.fftw.org/fftw-3.3.10.tar.gz",
+ "sha256": "56c932549852cddcfafdab3820b0200c7742675be92179e59e6215b340e26467"
+ }
+ ],
+ "cleanup": [
+ "/bin",
+ "/include",
+ "/lib/cmake",
+ "/lib/pkgconfig",
+ "/share/man",
+ "*.la",
+ "*.so"
+ ]
+}
diff --git a/subprojects/shared-modules/linux-audio/fluidsynth2-static.json b/subprojects/shared-modules/linux-audio/fluidsynth2-static.json
new file mode 100644
index 00000000..67cea185
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/fluidsynth2-static.json
@@ -0,0 +1,27 @@
+{
+ "name": "fluidsynth",
+ "buildsystem": "cmake-ninja",
+ "build-options": {
+ "cflags": "-fPIC",
+ "cxxflags": "-fPIC"
+ },
+ "config-opts": [
+ "-DLIB_SUFFIX=",
+ "-DBUILD_SHARED_LIBS=OFF"
+ ],
+ "cleanup": [
+ "/bin",
+ "/include",
+ "/lib/pkgconfig",
+ "/share/man",
+ "*.so",
+ "*.a"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://github.com/FluidSynth/fluidsynth/archive/v2.2.8.tar.gz",
+ "sha256": "7c29a5cb7a2755c8012d941d1335da7bda957bbb0a86b7c59215d26773bb51fe"
+ }
+ ]
+}
diff --git a/subprojects/shared-modules/linux-audio/fluidsynth2.json b/subprojects/shared-modules/linux-audio/fluidsynth2.json
new file mode 100644
index 00000000..a22a060b
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/fluidsynth2.json
@@ -0,0 +1,21 @@
+{
+ "name": "fluidsynth",
+ "buildsystem": "cmake-ninja",
+ "config-opts": [
+ "-DLIB_SUFFIX="
+ ],
+ "cleanup": [
+ "/bin",
+ "/include",
+ "/lib/pkgconfig",
+ "/share/man",
+ "*.so"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://github.com/FluidSynth/fluidsynth/archive/v2.2.8.tar.gz",
+ "sha256": "7c29a5cb7a2755c8012d941d1335da7bda957bbb0a86b7c59215d26773bb51fe"
+ }
+ ]
+}
diff --git a/subprojects/shared-modules/linux-audio/jack2.json b/subprojects/shared-modules/linux-audio/jack2.json
new file mode 100644
index 00000000..9077fea3
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/jack2.json
@@ -0,0 +1,23 @@
+{
+ "name": "jack2",
+ "buildsystem": "simple",
+ "build-commands": [
+ "./waf configure --prefix=$FLATPAK_DEST --htmldir=$FLATPAK_DEST/share/doc/jack/ --classic",
+ "./waf build -j $FLATPAK_BUILDER_N_JOBS",
+ "./waf install"
+ ],
+ "cleanup": [
+ "/include",
+ "/lib/jack",
+ "/lib/libjack*",
+ "/lib/pkgconfig",
+ "/share/man"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://github.com/jackaudio/jack2/archive/v1.9.17.tar.gz",
+ "sha256": "38f674bbc57852a8eb3d9faa1f96a0912d26f7d5df14c11005ad499c8ae352f2"
+ }
+ ]
+}
diff --git a/subprojects/shared-modules/linux-audio/ladspa.json b/subprojects/shared-modules/linux-audio/ladspa.json
new file mode 100644
index 00000000..d3637fff
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/ladspa.json
@@ -0,0 +1,17 @@
+{
+ "name": "ladspa",
+ "no-autogen": true,
+ "subdir": "src",
+ "make-install-args": [
+ "INSTALL_PLUGINS_DIR=/app/lib/ladspa",
+ "INSTALL_INCLUDE_DIR=/app/include",
+ "INSTALL_BINARY_DIR=/app/bin"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "http://www.ladspa.org/download/ladspa_sdk_1.17.tgz",
+ "sha256": "27d24f279e4b81bd17ecbdcc38e4c42991bb388826c0b200067ce0eb59d3da5b"
+ }
+ ]
+}
diff --git a/subprojects/shared-modules/linux-audio/lash.json b/subprojects/shared-modules/linux-audio/lash.json
new file mode 100644
index 00000000..4d0ccb28
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/lash.json
@@ -0,0 +1,41 @@
+{
+ "name": "lash",
+ "rm-configure": true,
+ "config-opts": [
+ "--disable-static",
+ "--disable-serv-inst",
+ "CFLAGS=-D_GNU_SOURCE"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://download.savannah.gnu.org/releases/lash/lash-0.5.4.tar.gz",
+ "sha256": "105a7da84415c4725c6bcad28e70f23aeb4534f94fc80ca262b6a2cef2226c16"
+ },
+ {
+ "type": "patch",
+ "strip-components": 0,
+ "path": "patches/lash-0.5.3-no-static-lib.patch"
+ },
+ {
+ "type": "patch",
+ "path": "patches/lash-gcc47.patch"
+ },
+ {
+ "type": "patch",
+ "path": "patches/lash-linking.patch"
+ },
+ {
+ "type": "patch",
+ "strip-components": 0,
+ "path": "patches/lash-configure.patch"
+ },
+ {
+ "type": "script",
+ "commands": [
+ "autoreconf -fiv"
+ ],
+ "dest-filename": "autogen.sh"
+ }
+ ]
+}
diff --git a/subprojects/shared-modules/linux-audio/libinstpatch.json b/subprojects/shared-modules/linux-audio/libinstpatch.json
new file mode 100644
index 00000000..fb00c206
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/libinstpatch.json
@@ -0,0 +1,17 @@
+{
+ "name": "libinstpatch",
+ "buildsystem": "cmake-ninja",
+ "config-opts": [
+ "-DLIB_SUFFIX="
+ ],
+ "cleanup": [
+ "/share/doc"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://github.com/swami/libinstpatch/archive/v1.1.6.tar.gz",
+ "sha256": "8e9861b04ede275d712242664dab6ffa9166c7940fea3b017638681d25e10299"
+ }
+ ]
+}
diff --git a/subprojects/shared-modules/linux-audio/liblo-static.json b/subprojects/shared-modules/linux-audio/liblo-static.json
new file mode 100644
index 00000000..4ca2eb77
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/liblo-static.json
@@ -0,0 +1,25 @@
+{
+ "name": "liblo",
+ "cleanup": [
+ "/bin",
+ "/include",
+ "/lib/pkgconfig",
+ "*.la",
+ "*.a",
+ "*.so"
+ ],
+ "build-options": {
+ "cflags": "-fPIC"
+ },
+ "config-opts": [
+ "--enable-static",
+ "--disable-shared"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "http://download.sf.net/sourceforge/liblo/liblo-0.31.tar.gz",
+ "sha256": "2b4f446e1220dcd624ecd8405248b08b7601e9a0d87a0b94730c2907dbccc750"
+ }
+ ]
+}
diff --git a/subprojects/shared-modules/linux-audio/liblo.json b/subprojects/shared-modules/linux-audio/liblo.json
new file mode 100644
index 00000000..17de750e
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/liblo.json
@@ -0,0 +1,17 @@
+{
+ "name": "liblo",
+ "cleanup": [
+ "/bin",
+ "/include",
+ "/lib/pkgconfig",
+ "*.la",
+ "*.so"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "http://download.sf.net/sourceforge/liblo/liblo-0.31.tar.gz",
+ "sha256": "2b4f446e1220dcd624ecd8405248b08b7601e9a0d87a0b94730c2907dbccc750"
+ }
+ ]
+}
diff --git a/subprojects/shared-modules/linux-audio/lilv.json b/subprojects/shared-modules/linux-audio/lilv.json
new file mode 100644
index 00000000..2c080535
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/lilv.json
@@ -0,0 +1,100 @@
+{
+ "name": "lilv",
+ "buildsystem": "simple",
+ "build-commands": [
+ "python3 ./waf configure --prefix=$FLATPAK_DEST",
+ "python3 ./waf build -j $FLATPAK_BUILDER_N_JOBS",
+ "python3 ./waf install"
+ ],
+ "modules": [
+ {
+ "name": "serd",
+ "buildsystem": "simple",
+ "build-commands": [
+ "python3 ./waf configure --prefix=$FLATPAK_DEST",
+ "python3 ./waf build -j $FLATPAK_BUILDER_N_JOBS",
+ "python3 ./waf install"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://download.drobilla.net/serd-0.30.10.tar.bz2",
+ "sha256": "affa80deec78921f86335e6fc3f18b80aefecf424f6a5755e9f2fa0eb0710edf"
+ }
+ ],
+ "post-install": [
+ "install -Dm644 -t /app/share/licenses/serd COPYING"
+ ],
+ "cleanup": [
+ "/bin",
+ "/include",
+ "/lib/pkgconfig",
+ "/share/man"
+ ]
+ },
+ {
+ "name": "sord",
+ "buildsystem": "simple",
+ "build-commands": [
+ "python3 ./waf configure --prefix=$FLATPAK_DEST",
+ "python3 ./waf build -j $FLATPAK_BUILDER_N_JOBS",
+ "python3 ./waf install"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://download.drobilla.net/sord-0.16.8.tar.bz2",
+ "sha256": "7c289d2eaabf82fa6ac219107ce632d704672dcfb966e1a7ff0bbc4ce93f5e14"
+ }
+ ],
+ "post-install": [
+ "install -Dm644 -t /app/share/licenses/sord COPYING"
+ ],
+ "cleanup": [
+ "/bin",
+ "/include",
+ "/lib/pkgconfig",
+ "/share/man"
+ ]
+ },
+ {
+ "name": "sratom",
+ "buildsystem": "simple",
+ "build-commands": [
+ "python3 ./waf configure --prefix=$FLATPAK_DEST",
+ "python3 ./waf build -j $FLATPAK_BUILDER_N_JOBS",
+ "python3 ./waf install"
+ ],
+ "cleanup": [
+ "/include",
+ "/lib/pkgconfig"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://download.drobilla.net/sratom-0.6.8.tar.bz2",
+ "sha256": "3acb32b1adc5a2b7facdade2e0818bcd6c71f23f84a1ebc17815bb7a0d2d02df"
+ }
+ ],
+ "post-install": [
+ "install -Dm644 -t /app/share/licenses/sratom COPYING"
+ ]
+ }
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://download.drobilla.net/lilv-0.24.12.tar.bz2",
+ "sha256": "26a37790890c9c1f838203b47f5b2320334fe92c02a4d26ebbe2669dbd769061"
+ }
+ ],
+ "post-install": [
+ "install -Dm644 -t /app/share/licenses/lilv COPYING"
+ ],
+ "cleanup": [
+ "/bin",
+ "/etc",
+ "/lib/pkgconfig",
+ "/share/man"
+ ]
+}
diff --git a/subprojects/shared-modules/linux-audio/lrdf.json b/subprojects/shared-modules/linux-audio/lrdf.json
new file mode 100644
index 00000000..29d19dd5
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/lrdf.json
@@ -0,0 +1,50 @@
+{
+ "name": "lrdf",
+ "rm-configure": true,
+ "cleanup": [
+ "/include",
+ "/lib/pkgconfig",
+ "*.so"
+ ],
+ "config-opts": [
+ "--disable-static"
+ ],
+ "modules": [
+ "ladspa.json",
+ {
+ "name": "raptor2",
+ "cleanup": [
+ "/include",
+ "/lib/pkgconfig",
+ "/share/gtk-doc",
+ "*.so"
+ ],
+ "config-opts": [
+ "--disable-documentation",
+ "--disable-static"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "http://download.librdf.org/source/raptor2-2.0.15.tar.gz",
+ "sha256": "ada7f0ba54787b33485d090d3d2680533520cd4426d2f7fb4782dd4a6a1480ed"
+ }
+ ]
+ }
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://github.com/swh/LRDF/tarball/0.5.0",
+ "dest-filename": "swh-LRDF-0.5.0-0-g7ebc032.tar.gz",
+ "sha256": "013002b91ef209827fe99552b8c7f0b569cddb3d6f1439bedbd8bafe1956a93c"
+ },
+ {
+ "type": "script",
+ "commands": [
+ "autoreconf -fiv"
+ ],
+ "dest-filename": "autogen.sh"
+ }
+ ]
+}
diff --git a/subprojects/shared-modules/linux-audio/lv2.json b/subprojects/shared-modules/linux-audio/lv2.json
new file mode 100644
index 00000000..5cf5a67c
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/lv2.json
@@ -0,0 +1,26 @@
+{
+ "name": "lv2",
+ "buildsystem": "simple",
+ "build-commands": [
+ "python3 ./waf configure --prefix=$FLATPAK_DEST --lv2dir=$FLATPAK_DEST/lib/lv2 --copy-headers",
+ "python3 ./waf build -j $FLATPAK_BUILDER_N_JOBS",
+ "python3 ./waf install"
+ ],
+ "cleanup": [
+ "/bin",
+ "/include",
+ "/lib/pkgconfig",
+ "/share"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://lv2plug.in/spec/lv2-1.18.2.tar.bz2",
+ "sha256": "4e891fbc744c05855beb5dfa82e822b14917dd66e98f82b8230dbd1c7ab2e05e"
+ }
+ ],
+ "post-install": [
+ "install -Dm644 -t $FLATPAK_DEST/share/licenses/lv2 COPYING",
+ "ln -sf lv2.pc $FLATPAK_DEST/lib/pkgconfig/lv2core.pc"
+ ]
+}
diff --git a/subprojects/shared-modules/linux-audio/patches/lash-0.5.3-no-static-lib.patch b/subprojects/shared-modules/linux-audio/patches/lash-0.5.3-no-static-lib.patch
new file mode 100644
index 00000000..54d1cd7b
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/patches/lash-0.5.3-no-static-lib.patch
@@ -0,0 +1,10 @@
+--- lash-1.0.pc.in~ 2007-10-07 06:33:27.000000000 -0700
++++ lash-1.0.pc.in 2007-10-07 06:35:00.000000000 -0700
+@@ -7,6 +7,5 @@
+ Description: Audio session management
+ Requires: @PC_REQUIRES@
+ Version: @PACKAGE_VERSION@
+-Libs: -llash
+-Libs.static: -lpthread -luuid
++Libs: -llash -lpthread -luuid
+ Cflags: -I${includedir}/lash-1.0
diff --git a/subprojects/shared-modules/linux-audio/patches/lash-configure.patch b/subprojects/shared-modules/linux-audio/patches/lash-configure.patch
new file mode 100644
index 00000000..ba9bb8ba
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/patches/lash-configure.patch
@@ -0,0 +1,11 @@
+--- configure.ac 2007-11-14 16:58:51.000000000 -0500
++++ configure.ac.new 2019-01-24 13:48:46.284377086 -0500
+@@ -2,7 +2,7 @@
+ AC_CONFIG_SRCDIR([lash/types.h])
+ AC_CONFIG_HEADER([config.h])
+ AM_INIT_AUTOMAKE
+-AM_ACLOCAL_INCLUDE([m4])
++dnl AM_ACLOCAL_INCLUDE([m4])
+
+ ### Check for programs ###
+ AC_LANG([C])
diff --git a/subprojects/shared-modules/linux-audio/patches/lash-gcc47.patch b/subprojects/shared-modules/linux-audio/patches/lash-gcc47.patch
new file mode 100644
index 00000000..41710ca5
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/patches/lash-gcc47.patch
@@ -0,0 +1,11 @@
+diff -rupN lash-0.5.4.old/liblash/lash.c lash-0.5.4/liblash/lash.c
+--- lash-0.5.4.old/liblash/lash.c 2007-03-09 10:34:40.000000000 -0500
++++ lash-0.5.4/liblash/lash.c 2012-07-22 18:17:46.003963521 -0400
+@@ -22,6 +22,7 @@
+ #include <string.h>
+ #include <strings.h>
+ #include <pthread.h>
++#include <sys/resource.h>
+ #include <sys/types.h>
+ #include <sys/wait.h>
+ #include <sys/socket.h>
diff --git a/subprojects/shared-modules/linux-audio/patches/lash-linking.patch b/subprojects/shared-modules/linux-audio/patches/lash-linking.patch
new file mode 100644
index 00000000..e46d1647
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/patches/lash-linking.patch
@@ -0,0 +1,90 @@
+diff -rupN lash-0.5.4.old/clients/control/Makefile.am lash-0.5.4/clients/control/Makefile.am
+--- lash-0.5.4.old/clients/control/Makefile.am 2007-01-13 13:20:03.000000000 -0500
++++ lash-0.5.4/clients/control/Makefile.am 2010-02-10 03:08:04.000000000 -0500
+@@ -18,6 +18,6 @@ lash_control_CFLAGS = $(LASH_CFLAGS)
+
+ lash_control_LDADD = \
+ $(top_builddir)/liblash/liblash.la \
+- $(LASH_LIBS) @READLINE_LIBS@
++ $(LASH_LIBS) @READLINE_LIBS@ -luuid
+
+ endif
+diff -rupN lash-0.5.4.old/clients/control/Makefile.in lash-0.5.4/clients/control/Makefile.in
+--- lash-0.5.4.old/clients/control/Makefile.in 2007-11-14 17:00:09.000000000 -0500
++++ lash-0.5.4/clients/control/Makefile.in 2010-02-10 03:09:26.000000000 -0500
+@@ -236,7 +236,7 @@ AM_CPPFLAGS = -I$(top_srcdir)
+ @HAVE_READLINE_TRUE@lash_control_CFLAGS = $(LASH_CFLAGS)
+ @HAVE_READLINE_TRUE@lash_control_LDADD = \
+ @HAVE_READLINE_TRUE@ $(top_builddir)/liblash/liblash.la \
+-@HAVE_READLINE_TRUE@ $(LASH_LIBS) @READLINE_LIBS@
++@HAVE_READLINE_TRUE@ $(LASH_LIBS) @READLINE_LIBS@ -luuid
+
+ all: all-am
+
+diff -rupN lash-0.5.4.old/clients/panel/Makefile.am lash-0.5.4/clients/panel/Makefile.am
+--- lash-0.5.4.old/clients/panel/Makefile.am 2005-09-13 01:22:59.000000000 -0400
++++ lash-0.5.4/clients/panel/Makefile.am 2010-02-10 03:17:10.000000000 -0500
+@@ -13,7 +13,7 @@ lash_panel_CFLAGS = \
+
+ lash_panel_LDADD = \
+ $(top_builddir)/liblash/liblash.la \
+- $(GTK2_LIBS)
++ $(GTK2_LIBS) -luuid
+
+ if HAVE_GTK2
+ bin_PROGRAMS = lash_panel
+diff -rupN lash-0.5.4.old/clients/panel/Makefile.in lash-0.5.4/clients/panel/Makefile.in
+--- lash-0.5.4.old/clients/panel/Makefile.in 2007-11-14 17:00:09.000000000 -0500
++++ lash-0.5.4/clients/panel/Makefile.in 2010-02-10 03:17:23.000000000 -0500
+@@ -230,7 +230,7 @@ lash_panel_CFLAGS = \
+
+ lash_panel_LDADD = \
+ $(top_builddir)/liblash/liblash.la \
+- $(GTK2_LIBS)
++ $(GTK2_LIBS) -luuid
+
+ all: all-am
+
+diff -rupN lash-0.5.4.old/clients/synth/Makefile.am lash-0.5.4/clients/synth/Makefile.am
+--- lash-0.5.4.old/clients/synth/Makefile.am 2005-09-13 01:22:59.000000000 -0400
++++ lash-0.5.4/clients/synth/Makefile.am 2010-02-10 03:22:39.000000000 -0500
+@@ -20,4 +20,4 @@ lash_synth_LDADD = \
+ $(JACK_LIBS) \
+ $(ALSA_LIBS) \
+ $(GTK2_LIBS) \
+- -lpthread
++ -lpthread -lm
+diff -rupN lash-0.5.4.old/clients/synth/Makefile.in lash-0.5.4/clients/synth/Makefile.in
+--- lash-0.5.4.old/clients/synth/Makefile.in 2007-11-14 17:00:10.000000000 -0500
++++ lash-0.5.4/clients/synth/Makefile.in 2010-02-10 03:22:51.000000000 -0500
+@@ -238,7 +238,7 @@ lash_synth_LDADD = \
+ $(JACK_LIBS) \
+ $(ALSA_LIBS) \
+ $(GTK2_LIBS) \
+- -lpthread
++ -lpthread -lm
+
+ all: all-am
+
+diff -rupN lash-0.5.4.old/lashd/Makefile.am lash-0.5.4/lashd/Makefile.am
+--- lash-0.5.4.old/lashd/Makefile.am 2006-09-16 16:27:46.000000000 -0400
++++ lash-0.5.4/lashd/Makefile.am 2010-07-23 15:13:59.000000000 -0400
+@@ -32,6 +32,7 @@ lashd_LDADD = \
+ $(ALSA_LIBS) \
+ $(XML2_LIBS) \
+ $(UUID_LIBS) \
++ -lpthread \
+ $(top_builddir)/liblash/liblash.la
+
+ lashd_CFLAGS = \
+diff -rupN lash-0.5.4.old/lashd/Makefile.in lash-0.5.4/lashd/Makefile.in
+--- lash-0.5.4.old/lashd/Makefile.in 2007-11-14 17:00:10.000000000 -0500
++++ lash-0.5.4/lashd/Makefile.in 2010-07-23 15:14:29.000000000 -0400
+@@ -262,6 +262,7 @@ lashd_LDADD = \
+ $(ALSA_LIBS) \
+ $(XML2_LIBS) \
+ $(UUID_LIBS) \
++ -lpthread \
+ $(top_builddir)/liblash/liblash.la
+
+ lashd_CFLAGS = \
diff --git a/subprojects/shared-modules/linux-audio/patches/stk-install.sh b/subprojects/shared-modules/linux-audio/patches/stk-install.sh
new file mode 100644
index 00000000..e2d9c9b7
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/patches/stk-install.sh
@@ -0,0 +1,54 @@
+
+INCLUDE_DIR=/app/include
+DATA_DIR=/app/share
+LIB_DIR=/app/lib
+BIN_DIR=/app/bin
+
+
+
+
+install -Dm644 -t $INCLUDE_DIR/stk include/*
+install -Dm644 -t $LIB_DIR src/libstk.*
+install -Dm644 -t $DATA_DIR/stk/rawwaves rawwaves/*.raw
+
+#cp -pr projects/demo/tcl $DATA_DIR/stk/demo
+#cp -pr projects/demo/scores $DATA_DIR/stk/demo
+#cp -p projects/demo/demo $BIN_DIR/stk-demo
+#cp -p projects/demo/Md2Skini $BIN_DIR/Md2Skini
+#for f in Banded Drums Modal Physical Shakers StkDemo Voice ; do
+# chmod +x projects/demo/$f
+# sed -e 's,\./demo,$BIN_DIR/stk-demo,' -e '1i#! /bin/sh' \
+# -i projects/demo/$f
+# cp -p projects/demo/$f $DATA_DIR/stk/demo
+#done
+
+#cp -pr projects/examples/midifiles $DATA_DIR/stk/examples
+#cp -pr projects/examples/rawwaves $DATA_DIR/stk/examples
+#cp -pr projects/examples/scores $DATA_DIR/stk/examples
+#for f in sine sineosc foursine audioprobe midiprobe duplex play \
+# record inetIn inetOut rtsine crtsine bethree controlbee \
+# threebees playsmf grains ; do
+# cp -p projects/examples/$f $BIN_DIR/stk-$f
+# # absolute links, will be shortened later
+# ln -s $BIN_DIR/stk-$f $DATA_DIR/stk/examples/$f
+#done
+
+install -Dm644 -t $DATA_DIR/stk/effects projects/effects/tcl
+install -Dm644 -t $BIN_DIR/stk-effects projects/effects/effects
+sed -e 's,\./effects,$BIN_DIR/stk-effects,' -e '1i#! /bin/sh' \
+ -i projects/effects/StkEffects
+install -Dm644 -t $DATA_DIR/stk/effects projects/effects/StkEffects
+
+install -Dm644 -t $DATA_DIR/stk/ragamatic projects/ragamatic/tcl
+install -Dm644 -t $DATA_DIR/stk/ragamatic projects/ragamatic/rawwaves
+install -Dm644 -t $BIN_DIR/stk-ragamat projects/ragamatic/ragamat
+sed -e 's,\./ragamat,$BIN_DIR/stk-ragamat,' -e '1i#! /bin/sh' \
+ -i projects/ragamatic/Raga
+install -Dm644 -t $DATA_DIR/stk/ragamatic projects/ragamatic/Raga
+
+install -Dm644 -t $DATA_DIR/stk/eguitar projects/eguitar/tcl
+install -Dm644 -t $DATA_DIR/stk/eguitar projects/eguitar/scores
+install -Dm644 -t $BIN_DIR/stk-eguitar projects/eguitar/eguitar
+sed -e 's,\./eguitar,$BIN_DIR/stk-eguitar,' -e '1i#! /bin/sh' \
+ -i projects/eguitar/ElectricGuitar
+install -Dm644 -t $DATA_DIR/stk/eguitar projects/eguitar/ElectricGuitar
diff --git a/subprojects/shared-modules/linux-audio/stk.json b/subprojects/shared-modules/linux-audio/stk.json
new file mode 100644
index 00000000..cf4d8f93
--- /dev/null
+++ b/subprojects/shared-modules/linux-audio/stk.json
@@ -0,0 +1,28 @@
+{
+ "name": "stk",
+ "build-commands": [
+ "make -j $FLATPAK_BUILDER_N_JOBS -C src",
+ "make -j $FLATPAK_BUILDER_N_JOBS -C projects/effects libeffects",
+ "make -j $FLATPAK_BUILDER_N_JOBS -C projects/ragamatic libragamat",
+ "make -j $FLATPAK_BUILDER_N_JOBS -C projects/eguitar libeguitar"
+ ],
+ "post-install": [
+ "sh ./stk-install.sh"
+ ],
+ "cleanup": [
+ "/bin/*",
+ "/include",
+ "*.a"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "http://ccrma.stanford.edu/software/stk/release/stk-4.6.1.tar.gz",
+ "sha256": "e77ba3c80cdd93ca02c34098b9b7f918df3d648c87f1ed5d94fe854debd6d101"
+ },
+ {
+ "type": "file",
+ "path": "patches/stk-install.sh"
+ }
+ ]
+}
diff --git a/subprojects/shared-modules/lua5.1/lua-5.1.5-so.patch b/subprojects/shared-modules/lua5.1/lua-5.1.5-so.patch
new file mode 100644
index 00000000..5fc61a08
--- /dev/null
+++ b/subprojects/shared-modules/lua5.1/lua-5.1.5-so.patch
@@ -0,0 +1,43 @@
+diff -ur lua-5.1.4/src/Makefile lua-5.1.4-new/src/Makefile
+--- lua-5.1.4/src/Makefile 2008-01-19 20:37:58.000000000 +0100
++++ lua-5.1.4-new/src/Makefile 2012-02-23 18:26:43.000000000 +0100
+@@ -23,6 +23,7 @@
+ PLATS= aix ansi bsd freebsd generic linux macosx mingw posix solaris
+
+ LUA_A= liblua.a
++LUA_SO= liblua.so
+ CORE_O= lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \
+ lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o \
+ lundump.o lvm.o lzio.o
+@@ -36,7 +37,7 @@
+ LUAC_O= luac.o print.o
+
+ ALL_O= $(CORE_O) $(LIB_O) $(LUA_O) $(LUAC_O)
+-ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)
++ALL_T= $(LUA_A) $(LUA_SO) $(LUA_T) $(LUAC_T)
+ ALL_A= $(LUA_A)
+
+ default: $(PLAT)
+@@ -51,6 +52,11 @@
+ $(AR) $@ $?
+ $(RANLIB) $@
+
++$(LUA_SO): $(CORE_O) $(LIB_O)
++ $(CC) -shared -ldl -Wl,-soname,$(LUA_SO).$(V) -o $@.$(R) $? -lm $(MYLDFLAGS)
++ ln -sf $(LUA_SO).$(R) $(LUA_SO).$(V)
++ ln -sf $(LUA_SO).$(R) $(LUA_SO)
++
+ $(LUA_T): $(LUA_O) $(LUA_A)
+ $(CC) -o $@ $(MYLDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
+
+--- lua-5.1.4/Makefile 2008-08-12 02:40:48.000000000 +0200
++++ lua-5.1.4-new/Makefile 2012-02-23 19:06:32.000000000 +0100
+@@ -53,7 +53,7 @@
+ all: $(PLAT)
+
+ $(PLATS) clean:
+- cd src && $(MAKE) $@
++ cd src && $(MAKE) $@ V=$(V) R=$(R)
+
+ test: dummy
+ src/lua test/hello.lua
diff --git a/subprojects/shared-modules/lua5.1/lua-5.1.5.json b/subprojects/shared-modules/lua5.1/lua-5.1.5.json
new file mode 100644
index 00000000..896cadb9
--- /dev/null
+++ b/subprojects/shared-modules/lua5.1/lua-5.1.5.json
@@ -0,0 +1,38 @@
+{
+ "name": "lua-5.1",
+ "buildsystem": "simple",
+ "build-commands": [
+ "make -j $FLATPAK_BUILDER_N_JOBS CFLAGS=\"$CFLAGS -fPIC -DLUA_USE_LINUX\" linux",
+ "make INSTALL_TOP=$FLATPAK_DEST TO_LIB='liblua.a liblua.so.5.1.5' install",
+ "ln -sf liblua.so.5.1.5 $FLATPAK_DEST/lib/liblua.so",
+ "ln -sf liblua.so.5.1.5 $FLATPAK_DEST/lib/liblua.so.5.1",
+ "install -Dm0644 etc/lua.pc $FLATPAK_DEST/lib/pkgconfig/lua.pc",
+ "ln -sf lua.pc $FLATPAK_DEST/lib/pkgconfig/lua51.pc",
+ "ln -sf lua.pc $FLATPAK_DEST/lib/pkgconfig/lua5.1.pc",
+ "ln -sf lua.pc $FLATPAK_DEST/lib/pkgconfig/lua-5.1.pc"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://www.lua.org/ftp/lua-5.1.5.tar.gz",
+ "sha256": "2640fc56a795f29d28ef15e13c34a47e223960b0240e8cb0a82d9b0738695333"
+ },
+ {
+ "type": "patch",
+ "path": "lua-5.1.5-so.patch"
+ },
+ {
+ "type": "shell",
+ "commands": [
+ "sed -i \"s|/usr/local|$FLATPAK_DEST|\" etc/lua.pc src/luaconf.h"
+ ]
+ }
+ ],
+ "cleanup": [
+ "*.a",
+ "/bin",
+ "/include",
+ "/lib/pkgconfig",
+ "/man"
+ ]
+}
diff --git a/subprojects/shared-modules/lua5.3/lua-5.3.0-autotoolize.patch b/subprojects/shared-modules/lua5.3/lua-5.3.0-autotoolize.patch
deleted file mode 100644
index 3e4723a5..00000000
--- a/subprojects/shared-modules/lua5.3/lua-5.3.0-autotoolize.patch
+++ /dev/null
@@ -1,192 +0,0 @@
-diff -up lua-5.3.0/configure.ac.autoxxx lua-5.3.0/configure.ac
---- lua-5.3.0/configure.ac.autoxxx 2015-01-15 10:20:03.826889574 -0500
-+++ lua-5.3.0/configure.ac 2015-01-15 10:20:03.826889574 -0500
-@@ -0,0 +1,69 @@
-+AC_PREREQ(2.59)
-+AC_INIT([lua], [5.3.0], [https://bugzilla.redhat.com/], [lua-at], [http://www.lua.org])
-+AC_SUBST([MAJOR_VERSION], [5.3])
-+
-+AC_CONFIG_HEADERS([config.h])
-+AC_CONFIG_SRCDIR([src/lapi.c])
-+
-+AM_INIT_AUTOMAKE([1.9 foreign])
-+
-+AC_PROG_CC
-+AC_PROG_LIBTOOL
-+
-+AC_ARG_WITH(
-+ [readline],
-+ [AC_HELP_STRING([--with-readline], [Use readline for interpreter input [default=yes]])],
-+ [use_readline=$withval],
-+ [use_readline=yes]
-+)
-+
-+LUA_LIBS="-lm"
-+
-+# Check for readline
-+READLINE_DEFS="#undef LUA_USE_READLINE"
-+if test "x$use_readline" == "xyes"; then
-+ AC_CHECK_LIB([readline], [readline], [:], [use_readline=no], [-lncurses])
-+ AC_CHECK_HEADERS([readline/readline.h readline/history.h], [], [use_readline=no])
-+ if test "x$use_readline" == "xno"; then
-+ AC_MSG_WARN([readline headers could not be found, disabling readline support])
-+ else
-+ READLINE_DEFS="#define LUA_USE_READLINE"
-+ READLINE_LIBS="-lreadline -lncurses"
-+ fi
-+fi
-+AC_SUBST(READLINE_DEFS)
-+AC_SUBST(READLINE_LIBS)
-+
-+case "$host" in
-+ *-mingw*) use_os=win32 ;;
-+ *-darwin*) use_os=macosx ;;
-+ *) use_os=posix ;;
-+esac
-+
-+POSIX_DEFS="#undef LUA_USE_POSIX"
-+LUA_DL_DEFS="#undef LUA_USE_DLOPEN"
-+LUA_BUILD_AS_DLL_DEFS="#undef LUA_BUILD_AS_DLL"
-+
-+if test "x$use_os" == "xwin32"; then
-+ LUA_BUILD_AS_DLL_DEFS="#define LUA_BUILD_AS_DLL"
-+elif test "x$use_os" == "xmacosx"; then
-+ POSIX_DEFS="#define LUA_USE_POSIX"
-+ LUA_DL_DEFS="#define LUA_DL_DYLD"
-+elif test "x$use_os" == "xposix"; then
-+ POSIX_DEFS="#define LUA_USE_POSIX"
-+ LUA_DL_DEFS="#define LUA_DL_DLOPEN"
-+ LUA_LIBS="$LUA_LIBS -ldl"
-+fi
-+AC_SUBST(POSIX_DEFS)
-+AC_SUBST(LUA_DL_DEFS)
-+AC_SUBST(LUA_BUILD_AS_DLL_DEFS)
-+
-+AC_SUBST(LUA_LIBS)
-+
-+AC_CONFIG_FILES([Makefile
-+ src/Makefile
-+ src/lua.pc
-+ src/luaconf.h.template
-+ doc/Makefile
-+])
-+AC_OUTPUT
-diff -up lua-5.3.0/doc/Makefile.am.autoxxx lua-5.3.0/doc/Makefile.am
---- lua-5.3.0/doc/Makefile.am.autoxxx 2015-01-15 10:20:03.826889574 -0500
-+++ lua-5.3.0/doc/Makefile.am 2015-01-15 10:20:03.826889574 -0500
-@@ -0,0 +1,4 @@
-+man1_MANS = lua.1 luac.1
-+
-+EXTRA_DIST = \
-+ contents.html logo.gif lua.1 luac.1 lua.css manual.css manual.html osi-certified-72x60.png readme.html
-diff -up lua-5.3.0/Makefile.am.autoxxx lua-5.3.0/Makefile.am
---- lua-5.3.0/Makefile.am.autoxxx 2015-01-15 10:20:03.826889574 -0500
-+++ lua-5.3.0/Makefile.am 2015-01-15 10:20:03.826889574 -0500
-@@ -0,0 +1,3 @@
-+SUBDIRS = src doc
-+
-+EXTRA_DIST = README
-diff -up lua-5.3.0/src/.gitignore.autoxxx lua-5.3.0/src/.gitignore
---- lua-5.3.0/src/.gitignore.autoxxx 2015-01-15 10:20:03.826889574 -0500
-+++ lua-5.3.0/src/.gitignore 2015-01-15 10:20:03.826889574 -0500
-@@ -0,0 +1,5 @@
-+lua
-+lua.pc
-+luac
-+luaconf.h
-+luaconf.h.template
-diff -up lua-5.3.0/src/luaconf.h.template.in.autoxxx lua-5.3.0/src/luaconf.h.template.in
---- lua-5.3.0/src/luaconf.h.template.in.autoxxx 2015-01-15 10:20:03.828889562 -0500
-+++ lua-5.3.0/src/luaconf.h.template.in 2015-01-15 10:22:37.420027778 -0500
-@@ -11,6 +11,11 @@
- #include <limits.h>
- #include <stddef.h>
-
-+@POSIX_DEFS@
-+@LUA_DL_DEFS@
-+@LUA_BUILD_AS_DLL_DEFS@
-+@READLINE_DEFS@
-+
-
- /*
- ** ===================================================================
-@@ -175,9 +180,9 @@
-
- #else /* }{ */
-
--#define LUA_ROOT "/usr/local/"
--#define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/"
--#define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/"
-+#define LUA_ROOT "@prefix@/"
-+#define LUA_LDIR "@pkgdatadir@/lua/" LUA_VDIR "/"
-+#define LUA_CDIR "@libdir@/lua/" LUA_VDIR "/"
- #define LUA_PATH_DEFAULT \
- LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \
- LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua;" \
-diff -up lua-5.3.0/src/lua.pc.in.autoxxx lua-5.3.0/src/lua.pc.in
---- lua-5.3.0/src/lua.pc.in.autoxxx 2015-01-15 10:20:03.827889568 -0500
-+++ lua-5.3.0/src/lua.pc.in 2015-01-15 10:20:03.827889568 -0500
-@@ -0,0 +1,13 @@
-+V= @MAJOR_VERSION@
-+R= @VERSION@
-+prefix= @prefix@
-+exec_prefix=${prefix}
-+libdir= @libdir@
-+includedir=${prefix}/include
-+
-+Name: Lua
-+Description: An Extensible Extension Language
-+Version: ${R}
-+Requires:
-+Libs: -llua @LUA_LIBS@
-+Cflags: -I${includedir}
-diff -up lua-5.3.0/src/Makefile.am.autoxxx lua-5.3.0/src/Makefile.am
---- lua-5.3.0/src/Makefile.am.autoxxx 2015-01-15 10:20:03.826889574 -0500
-+++ lua-5.3.0/src/Makefile.am 2015-01-15 10:20:03.826889574 -0500
-@@ -0,0 +1,46 @@
-+AM_CFLAGS = -Wall
-+
-+include_HEADERS = lua.h lualib.h lauxlib.h lua.hpp
-+
-+nodist_include_HEADERS = luaconf.h
-+
-+lib_LTLIBRARIES = liblua.la
-+liblua_la_LDFLAGS = -release @MAJOR_VERSION@
-+liblua_la_SOURCES = \
-+ lapi.c lauxlib.c lbaselib.c lbitlib.c lcode.c lcorolib.c lctype.c ldblib.c \
-+ ldebug.c ldo.c ldump.c lfunc.c lgc.c linit.c liolib.c llex.c lmathlib.c lmem.c \
-+ loadlib.c lobject.c lopcodes.c loslib.c lparser.c lstate.c lstring.c lstrlib.c \
-+ ltable.c ltablib.c ltm.c lundump.c lutf8lib.c lvm.c lzio.c \
-+ lapi.h lcode.h lctype.h ldebug.h ldo.h lfunc.h lgc.h llex.h llimits.h \
-+ lmem.h lobject.h lopcodes.h lparser.h lstate.h lstring.h ltable.h ltm.h \
-+ lundump.h lvm.h lzio.h
-+
-+pkgconfigdir = $(libdir)/pkgconfig
-+pkgconfig_DATA = lua.pc
-+
-+bin_PROGRAMS = lua luac
-+
-+lua_SOURCES = lua.c
-+lua_LDADD = liblua.la @LUA_LIBS@ @READLINE_LIBS@
-+lua_DEPENDENCIES = liblua.la
-+
-+luac_SOURCES = luac.c
-+# Statically link liblua against luac since luac uses symbols not exported in liblua
-+luac_LDADD = .libs/liblua.a @LUA_LIBS@
-+luac_DEPENDENCIES = liblua.la
-+
-+EXTRA_DIST = luaconf.h.template
-+BUILT_SOURCES = luaconf.h
-+CLEANFILES = luaconf.h luaconf.h.template
-+
-+readline_defs = @READLINE_DEFS@
-+
-+edit = sed \
-+ -e 's,%prefix%,$(prefix),g' \
-+ -e 's,%lua_datadir%,$(datadir),g' \
-+ -e 's,%lua_libdir%,$(libdir),g'
-+
-+luaconf.h : luaconf.h.template
-+ rm -f $@ $@.tmp
-+ $(edit) $< >$@.tmp
-+ mv $@.tmp $@
diff --git a/subprojects/shared-modules/lua5.3/lua-5.3.0-configure-compat-module.patch b/subprojects/shared-modules/lua5.3/lua-5.3.0-configure-compat-module.patch
deleted file mode 100644
index bd5d41d4..00000000
--- a/subprojects/shared-modules/lua5.3/lua-5.3.0-configure-compat-module.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-diff -up lua-5.2.2/configure.ac.compat-module lua-5.2.2/configure.ac
---- lua-5.2.2/configure.ac.compat-module 2013-05-10 10:16:05.344137597 -0400
-+++ lua-5.2.2/configure.ac 2013-05-10 10:16:05.357137596 -0400
-@@ -11,6 +11,20 @@ AC_PROG_CC
- AC_PROG_LIBTOOL
-
- AC_ARG_WITH(
-+ [compat-module],
-+ [AC_HELP_STRING([--with-compat-module], [Enable LUA_COMPAT_MODULE functions [default=no]])],
-+ [use_compat_module=$withval],
-+ [use_compat_module=no]
-+)
-+
-+COMPAT_DEFS="#undef LUA_COMPAT_ALL"
-+if test "x$use_compat_module" == "xyes"; then
-+ COMPAT_DEFS="#define LUA_COMPAT_5_1
-+#define LUA_COMPAT_5_2"
-+fi
-+AC_SUBST(COMPAT_DEFS)
-+
-+AC_ARG_WITH(
- [readline],
- [AC_HELP_STRING([--with-readline], [Use readline for interpreter input [default=yes]])],
- [use_readline=$withval],
-diff -up lua-5.2.2/src/luaconf.h.template.in.compat-module lua-5.2.2/src/luaconf.h.template.in
---- lua-5.2.2/src/luaconf.h.template.in.compat-module 2013-05-10 10:25:42.586116963 -0400
-+++ lua-5.2.2/src/luaconf.h.template.in 2013-05-10 10:26:29.957115269 -0400
-@@ -15,6 +15,7 @@
- @LUA_DL_DEFS@
- @LUA_BUILD_AS_DLL_DEFS@
- @READLINE_DEFS@
-+@COMPAT_DEFS@
-
-
- /*
diff --git a/subprojects/shared-modules/lua5.3/lua-5.3.0-idsize.patch b/subprojects/shared-modules/lua5.3/lua-5.3.0-idsize.patch
deleted file mode 100644
index 16107fe2..00000000
--- a/subprojects/shared-modules/lua5.3/lua-5.3.0-idsize.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up lua-5.3.0/src/luaconf.h.template.in.idsize lua-5.3.0/src/luaconf.h.template.in
---- lua-5.3.0/src/luaconf.h.template.in.idsize 2015-01-15 10:23:20.515801344 -0500
-+++ lua-5.3.0/src/luaconf.h.template.in 2015-01-15 10:23:48.955651916 -0500
-@@ -693,7 +693,7 @@
- @@ of a function in debug information.
- ** CHANGE it if you want a different size.
- */
--#define LUA_IDSIZE 60
-+#define LUA_IDSIZE 512
-
-
- /*
diff --git a/subprojects/shared-modules/lua5.3/lua-5.3.5.json b/subprojects/shared-modules/lua5.3/lua-5.3.5.json
index fd5f2682..c789fd65 100644
--- a/subprojects/shared-modules/lua5.3/lua-5.3.5.json
+++ b/subprojects/shared-modules/lua5.3/lua-5.3.5.json
@@ -1,7 +1,17 @@
{
"name": "lua-5.3",
- "config-opts": [
- "--with-compat-module"
+ "buildsystem": "simple",
+ "build-commands": [
+ "make -j $FLATPAK_BUILDER_N_JOBS CFLAGS=\"$CFLAGS -fPIC -DLUA_USE_LINUX\" linux",
+ "make TO_LIB=liblua.so.5.3.5 INSTALL_TOP=$FLATPAK_DEST install",
+ "ln -sf liblua.so.5.3.5 $FLATPAK_DEST/lib/liblua.so",
+ "ln -sf liblua.so.5.3.5 $FLATPAK_DEST/lib/liblua.so.5.3",
+ "make INSTALL_TOP=${FLATPAK_DEST} pc > lua.pc",
+ "cat lua.pc.in >> lua.pc",
+ "install -Dm644 lua.pc $FLATPAK_DEST/lib/pkgconfig/lua.pc",
+ "ln -sf lua.pc $FLATPAK_DEST/lib/pkgconfig/lua53.pc",
+ "ln -sf lua.pc $FLATPAK_DEST/lib/pkgconfig/lua5.3.pc",
+ "ln -sf lua.pc $FLATPAK_DEST/lib/pkgconfig/lua-5.3.pc"
],
"sources": [
{
@@ -10,25 +20,27 @@
"sha256": "0c2eed3f960446e1a3e4b9a1ca2f3ff893b6ce41942cf54d5dd59ab4b3b058ac"
},
{
- "type": "shell",
- "commands": [ "mv src/luaconf.h src/luaconf.h.template.in" ]
- },
- {
"type": "patch",
- "path": "lua-5.3.0-autotoolize.patch"
+ "path": "makefile-add-liblua.so-rule.patch"
},
{
- "type": "patch",
- "path": "lua-5.3.0-idsize.patch"
- },
- {
- "type": "patch",
- "path": "lua-5.3.0-configure-compat-module.patch"
+ "type": "file",
+ "path": "lua.pc.in"
},
{
"type": "shell",
- "commands": [ "autoreconf -i" ]
+ "commands": [
+ "sed -i \"s|/usr/local/|$FLATPAK_DEST/|;s|LUA_IDSIZE 60|LUA_IDSIZE 512|\" src/luaconf.h",
+ "# Lua 5.3.5 has wrong release version in its Makefile. Fix it.",
+ "sed 's/^R= \$V.4/R= \$V.5/' -i Makefile",
+ "sed -i '12 a\\\\n#define LUA_COMPAT_5_1\\n#define LUA_COMPAT_5_2' src/luaconf.h"
+ ]
}
],
- "cleanup": [ "/bin", "/include", "/lib/pkgconfig", "/lib/*.a", "/lib/*.la", "/share/man" ]
+ "cleanup": [
+ "/bin",
+ "/include",
+ "/lib/pkgconfig",
+ "/share/man"
+ ]
}
diff --git a/subprojects/shared-modules/lua5.3/lua.pc.in b/subprojects/shared-modules/lua5.3/lua.pc.in
new file mode 100644
index 00000000..6698f8bc
--- /dev/null
+++ b/subprojects/shared-modules/lua5.3/lua.pc.in
@@ -0,0 +1,8 @@
+exec_prefix=${prefix}
+
+Name: Lua
+Description: An Extensible Extension Language
+Version: ${version}
+Requires:
+Libs: -L${libdir} -llua -lm
+Cflags: -I${includedir} \ No newline at end of file
diff --git a/subprojects/shared-modules/lua5.3/makefile-add-liblua.so-rule.patch b/subprojects/shared-modules/lua5.3/makefile-add-liblua.so-rule.patch
new file mode 100644
index 00000000..f675d4d4
--- /dev/null
+++ b/subprojects/shared-modules/lua5.3/makefile-add-liblua.so-rule.patch
@@ -0,0 +1,47 @@
+diff --git a/Makefile b/Makefile
+index 7fa91c8..dccf485 100644
+--- a/Makefile
++++ b/Makefile
+@@ -52,7 +52,7 @@ R= $V.0
+ all: $(PLAT)
+
+ $(PLATS) clean:
+- cd src && $(MAKE) $@
++ cd src && $(MAKE) $@ V=$(V) R=$(R)
+
+ test: dummy
+ src/lua -v
+diff --git a/src/Makefile b/src/Makefile
+index 2e7a412..fa5769f 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -29,6 +29,7 @@ MYOBJS=
+ PLATS= aix bsd c89 freebsd generic linux macosx mingw posix solaris
+
+ LUA_A= liblua.a
++LUA_SO= liblua.so
+ CORE_O= lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o \
+ lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o \
+ ltm.o lundump.o lvm.o lzio.o
+@@ -43,7 +44,7 @@ LUAC_T= luac
+ LUAC_O= luac.o
+
+ ALL_O= $(BASE_O) $(LUA_O) $(LUAC_O)
+-ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)
++ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) $(LUA_SO)
+ ALL_A= $(LUA_A)
+
+ # Targets start here.
+@@ -59,6 +60,12 @@ $(LUA_A): $(BASE_O)
+ $(AR) $@ $(BASE_O)
+ $(RANLIB) $@
+
++$(LUA_SO): $(CORE_O) $(LIB_O)
++ $(CC) -shared -ldl -Wl,-soname,$(LUA_SO).$(V) -o $@.$(R) $? -lm $(MYLDFLAGS)
++ ln -sf $(LUA_SO).$(R) $(LUA_SO).$(V)
++ ln -sf $(LUA_SO).$(R) $(LUA_SO)
++
++
+ $(LUA_T): $(LUA_O) $(LUA_A)
+ $(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
+ \ No newline at end of file
diff --git a/subprojects/shared-modules/lua5.4/lua-5.4.json b/subprojects/shared-modules/lua5.4/lua-5.4.json
new file mode 100644
index 00000000..a164fb83
--- /dev/null
+++ b/subprojects/shared-modules/lua5.4/lua-5.4.json
@@ -0,0 +1,44 @@
+{
+ "name": "lua-5.4",
+ "buildsystem": "simple",
+ "build-commands": [
+ "make -j $FLATPAK_BUILDER_N_JOBS CFLAGS=\"$CFLAGS -fPIC -DLUA_USE_LINUX\" linux",
+ "make TO_LIB=liblua.so.5.4.4 INSTALL_TOP=$FLATPAK_DEST install",
+ "ln -sf liblua.so.5.4.4 $FLATPAK_DEST/lib/liblua.so",
+ "ln -sf liblua.so.5.4.4 $FLATPAK_DEST/lib/liblua.so.5.4",
+ "make INSTALL_TOP=${FLATPAK_DEST} pc > lua.pc",
+ "cat lua.pc.in >> lua.pc",
+ "install -Dm644 lua.pc $FLATPAK_DEST/lib/pkgconfig/lua.pc",
+ "ln -sf lua.pc $FLATPAK_DEST/lib/pkgconfig/lua54.pc",
+ "ln -sf lua.pc $FLATPAK_DEST/lib/pkgconfig/lua5.4.pc",
+ "ln -sf lua.pc $FLATPAK_DEST/lib/pkgconfig/lua-5.4.pc"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://www.lua.org/ftp/lua-5.4.4.tar.gz",
+ "sha256": "164c7849653b80ae67bec4b7473b884bf5cc8d2dca05653475ec2ed27b9ebf61"
+ },
+ {
+ "type": "patch",
+ "path": "makefile-add-liblua.so-rule.patch"
+ },
+ {
+ "type": "file",
+ "path": "lua.pc.in"
+ },
+ {
+ "type": "shell",
+ "commands": [
+ "sed -i \"s|/usr/local/|$FLATPAK_DEST/|;s|LUA_IDSIZE 60|LUA_IDSIZE 512|\" src/luaconf.h",
+ "sed -i '12 a\\\\n#define LUA_COMPAT_5_1\\n#define LUA_COMPAT_5_2' src/luaconf.h"
+ ]
+ }
+ ],
+ "cleanup": [
+ "/bin",
+ "/include",
+ "/lib/pkgconfig",
+ "/share/man"
+ ]
+}
diff --git a/subprojects/shared-modules/lua5.4/lua.pc.in b/subprojects/shared-modules/lua5.4/lua.pc.in
new file mode 100644
index 00000000..6698f8bc
--- /dev/null
+++ b/subprojects/shared-modules/lua5.4/lua.pc.in
@@ -0,0 +1,8 @@
+exec_prefix=${prefix}
+
+Name: Lua
+Description: An Extensible Extension Language
+Version: ${version}
+Requires:
+Libs: -L${libdir} -llua -lm
+Cflags: -I${includedir} \ No newline at end of file
diff --git a/subprojects/shared-modules/lua5.4/makefile-add-liblua.so-rule.patch b/subprojects/shared-modules/lua5.4/makefile-add-liblua.so-rule.patch
new file mode 100644
index 00000000..7452f106
--- /dev/null
+++ b/subprojects/shared-modules/lua5.4/makefile-add-liblua.so-rule.patch
@@ -0,0 +1,42 @@
+--- a/Makefile 2021-12-24 10:55:05.836294155 -0500
++++ b/Makefile 2021-03-02 15:04:35.000000000 -0500
+@@ -52,7 +52,7 @@
+ all: $(PLAT)
+
+ $(PLATS) help test clean:
+- @cd src && $(MAKE) $@
++ @cd src && $(MAKE) $@ V=$(V) R=$(R)
+
+ install: dummy
+ cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD)
+--- a/src/Makefile 2021-12-24 10:56:23.279935521 -0500
++++ b/src/Makefile 2021-02-09 13:47:17.000000000 -0500
+@@ -32,6 +32,7 @@
+ PLATS= guess aix bsd c89 freebsd generic linux linux-readline macosx mingw posix solaris
+
+ LUA_A= liblua.a
++LUA_SO= liblua.so
+ CORE_O= lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o
+ LIB_O= lauxlib.o lbaselib.o lcorolib.o ldblib.o liolib.o lmathlib.o loadlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o linit.o
+ BASE_O= $(CORE_O) $(LIB_O) $(MYOBJS)
+@@ -44,7 +44,7 @@
+ LUAC_O= luac.o
+
+ ALL_O= $(BASE_O) $(LUA_O) $(LUAC_O)
+-ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)
++ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) $(LUA_SO)
+ ALL_A= $(LUA_A)
+
+ # Targets start here.
+@@ -60,6 +60,11 @@
+ $(AR) $@ $(BASE_O)
+ $(RANLIB) $@
+
++$(LUA_SO): $(CORE_O) $(LIB_O)
++ $(CC) -shared -ldl -Wl,-soname,$(LUA_SO).$(V) -o $@.$(R) $? -lm $(MYLDFLAGS)
++ ln -sf $(LUA_SO).$(R) $(LUA_SO).$(V)
++ ln -sf $(LUA_SO).$(R) $(LUA_SO)
++
+ $(LUA_T): $(LUA_O) $(LUA_A)
+ $(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
+
diff --git a/subprojects/shared-modules/mac/mac.json b/subprojects/shared-modules/mac/mac.json
new file mode 100644
index 00000000..101b3dc2
--- /dev/null
+++ b/subprojects/shared-modules/mac/mac.json
@@ -0,0 +1,19 @@
+{
+ "name": "libmac",
+ "subdir": "Source/Projects/NonWindows",
+ "no-autogen": true,
+ "make-install-args": [
+ "prefix=/app"
+ ],
+ "cleanup": [
+ "/include/MAC"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://freac.org/patches/MAC_SDK_723.zip",
+ "sha256": "1d17d469dd2b4652e19cb91aa7cf76786fec999871a8f5729cd24064f989e9ae",
+ "strip-components": 0
+ }
+ ]
+}
diff --git a/subprojects/shared-modules/openjpeg/openjpeg.json b/subprojects/shared-modules/openjpeg/openjpeg.json
deleted file mode 100644
index 5eefa4c8..00000000
--- a/subprojects/shared-modules/openjpeg/openjpeg.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "name": "openjpeg",
- "buildsystem": "cmake-ninja",
- "builddir": true,
- "config-opts": [
- "-DCMAKE_BUILD_TYPE=RelWithDebInfo",
- "-DBUILD_CODEC:BOOL=OFF",
- "-DBUILD_DOC:BOOL=OFF",
- "-DBUILD_STATIC_LIBS:BOOL=OFF",
- "-DBUILD_TESTING:BOOL=OFF"
- ],
- "sources": [
- {
- "type": "archive",
- "url": "https://github.com/uclouvain/openjpeg/archive/v2.3.1.tar.gz",
- "sha256": "63f5a4713ecafc86de51bfad89cc07bb788e9bba24ebbf0c4ca637621aadb6a9"
- }
- ],
- "cleanup": [
- "/include",
- "/lib/openjpeg-*",
- "/lib/pkgconfig",
- "/share"
- ]
-}
diff --git a/subprojects/shared-modules/physfs/physfs.json b/subprojects/shared-modules/physfs/physfs.json
new file mode 100644
index 00000000..5cc06271
--- /dev/null
+++ b/subprojects/shared-modules/physfs/physfs.json
@@ -0,0 +1,18 @@
+{
+ "name": "PhysicsFS",
+ "buildsystem": "cmake-ninja",
+ "config-opts": [ "-DPHYSFS_BUILD_TEST=OFF", "-DPHYSFS_BUILD_STATIC=OFF" ],
+ "cleanup": [
+ "/include",
+ "/lib/pkgconfig",
+ "/bin"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://icculus.org/physfs/downloads/physfs-3.0.2.tar.bz2",
+ "sha256": "304df76206d633df5360e738b138c94e82ccf086e50ba84f456d3f8432f9f863",
+ "size": 194888
+ }
+ ]
+}
diff --git a/subprojects/shared-modules/pygame/pygame-1.9.4.json b/subprojects/shared-modules/pygame/pygame-1.9.6.json
index b80e892d..d3c84c77 100644
--- a/subprojects/shared-modules/pygame/pygame-1.9.4.json
+++ b/subprojects/shared-modules/pygame/pygame-1.9.6.json
@@ -3,8 +3,8 @@
"sources": [
{
"type": "archive",
- "url": "https://files.pythonhosted.org/packages/b2/6b/c510f0853765eb2219ca5aa3d416d65bb0dea7cd9bb2984aea0a0e04c24d/pygame-1.9.4.tar.gz",
- "sha256": "700d1781c999af25d11bfd1f3e158ebb660f72ebccb2040ecafe5069d0b2c0b6"
+ "url": "https://files.pythonhosted.org/packages/0f/9c/78626be04e193c0624842090fe5555b3805c050dfaa81c8094d6441db2be/pygame-1.9.6.tar.gz",
+ "sha256": "301c6428c0880ecd4a9e3951b80e539c33863b6ff356a443db1758de4f297957"
}
],
"buildsystem": "simple",
@@ -78,8 +78,8 @@
"sources": [
{
"type": "archive",
- "url": "https://downloads.sourceforge.net/project/fluidsynth/fluidsynth-1.1.6/fluidsynth-1.1.6.tar.bz2",
- "sha256": "d28b47dfbf7f8e426902ae7fa2981d821fbf84f41da9e1b85be933d2d748f601"
+ "url": "https://github.com/FluidSynth/fluidsynth/archive/refs/tags/v1.1.11.tar.gz",
+ "sha256": "da8878ff374d12392eecf87e96bad8711b8e76a154c25a571dd8614d1af80de8"
},
{
"type": "patch",
diff --git a/subprojects/shared-modules/pygtk/pygtk.json b/subprojects/shared-modules/pygtk/pygtk.json
new file mode 100644
index 00000000..5319e4b3
--- /dev/null
+++ b/subprojects/shared-modules/pygtk/pygtk.json
@@ -0,0 +1,107 @@
+{
+ "name": "pygtk",
+ "config-opts": [
+ "--disable-docs"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://download.gnome.org/sources/pygtk/2.24/pygtk-2.24.0.tar.gz",
+ "sha256": "6e3e54fa6e65a69ac60bd58cb2e60a57f3346ac52efe995f3d10b6c38c972fd8"
+ },
+ {
+ "type": "patch",
+ "path": "pygtk.patch"
+ },
+ {
+ "type": "shell",
+ "commands": [
+ "cp -p /usr/share/automake-*/config.{sub,guess} ."
+ ]
+ }
+ ],
+ "cleanup": [
+ "/bin",
+ "/include/pygtk-2.0",
+ "*.la",
+ "/lib/pkgconfig",
+ "/lib/pygtk",
+ "/share/gtk-doc",
+ "/share/pygtk"
+ ],
+ "modules": [
+ {
+ "name": "python2-pycairo",
+ "buildsystem": "meson",
+ "config-opts": [
+ "-Dpython=python2"
+ ],
+ "cleanup": [
+ "/include/pycairo",
+ "/lib/pkgconfig",
+ "/lib/python2.7/site-packages/cairo/include"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://github.com/pygobject/pycairo/releases/download/v1.18.2/pycairo-1.18.2.tar.gz",
+ "sha256": "dcb853fd020729516e8828ad364084e752327d4cff8505d20b13504b32b16531"
+ }
+ ]
+ },
+ {
+ "name": "pygobject",
+ "config-opts": [
+ "--disable-glibtest"
+ ],
+ "cleanup": [
+ "/bin",
+ "/include/pygtk-2.0",
+ "*.la",
+ "/lib/pkgconfig",
+ "/share/gtk-doc",
+ "/share/pygobject"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://download.gnome.org/sources/pygobject/2.28/pygobject-2.28.7.tar.xz",
+ "sha256": "bb9d25a3442ca7511385a7c01b057492095c263784ef31231ffe589d83a96a5a"
+ }
+ ]
+ },
+ {
+ "name": "libglade",
+ "rm-configure": true,
+ "cleanup": [
+ "/bin",
+ "/include/libglade-2.0",
+ "*.a",
+ "*.la",
+ "/lib/pkgconfig",
+ "/share/gtk-doc",
+ "/share/xml/libglade"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "https://download.gnome.org/sources/libglade/2.6/libglade-2.6.4.tar.gz",
+ "sha256": "c41d189b68457976069073e48d6c14c183075d8b1d8077cb6dfb8b7c5097add3"
+ },
+ {
+ "type": "shell",
+ "commands": [
+ "rm -f config.guess"
+ ]
+ },
+ {
+ "type": "script",
+ "commands": [
+ "autoreconf -fiv"
+ ],
+ "dest-filename": "autogen.sh"
+ }
+ ]
+ }
+ ]
+}
diff --git a/subprojects/shared-modules/pygtk/pygtk.patch b/subprojects/shared-modules/pygtk/pygtk.patch
new file mode 100644
index 00000000..ba4141e3
--- /dev/null
+++ b/subprojects/shared-modules/pygtk/pygtk.patch
@@ -0,0 +1,39 @@
+From 877164b6b70780468a31d8211f29421b6f34b0c8 Mon Sep 17 00:00:00 2001
+From: Mathieu Bridon <bochecha@daitauha.fr>
+Date: Thu, 24 Oct 2019 22:58:36 +0200
+Subject: [PATCH] Drop the PangoFont find_shaper virtual method
+
+This API has been removed from Pango 1.44.6, because it was completely
+unused by anything.
+
+However, PyGTK tries to bind everything, even unused API.
+
+Removing this from PyGTK means we can build it against the latest Pango
+again.
+---
+ pango.defs | 9 ---------
+ 1 file changed, 9 deletions(-)
+
+diff --git a/pango.defs b/pango.defs
+index 2a79ecc..862667a 100644
+--- a/pango.defs
++++ b/pango.defs
+@@ -1391,15 +1391,6 @@
+ )
+ )
+
+-(define-virtual find_shaper
+- (of-object "PangoFont")
+- (return-type "PangoEngineShape*")
+- (parameters
+- '("PangoLanguage*" "lang")
+- '("guint32" "ch")
+- )
+-)
+-
+ (define-virtual get_glyph_extents
+ (of-object "PangoFont")
+ (return-type "none")
+--
+2.21.0
+
diff --git a/subprojects/shared-modules/python2.7/python-2.7.json b/subprojects/shared-modules/python2.7/python-2.7.json
index 14253764..afdef902 100644
--- a/subprojects/shared-modules/python2.7/python-2.7.json
+++ b/subprojects/shared-modules/python2.7/python-2.7.json
@@ -3,8 +3,8 @@
"sources": [
{
"type": "archive",
- "url": "https://www.python.org/ftp/python/2.7.17/Python-2.7.17.tar.xz",
- "sha256": "4d43f033cdbd0aa7b7023c81b0e986fd11e653b5248dac9144d508f11812ba41"
+ "url": "https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tar.xz",
+ "sha256": "b62c0e7937551d0cc02b8fd5cb0f544f9405bafc9a54d3808ed4594812edef43"
}
],
"config-opts": [
diff --git a/subprojects/shared-modules/qt4/fixgcc11.patch b/subprojects/shared-modules/qt4/fixgcc11.patch
new file mode 100644
index 00000000..b0fd3d1b
--- /dev/null
+++ b/subprojects/shared-modules/qt4/fixgcc11.patch
@@ -0,0 +1,11 @@
+--- a/tools/linguist/linguist/messagemodel.cpp 2021-06-07 12:18:43.713434493 +0200
++++ b/tools/linguist/linguist/messagemodel.cpp 2021-06-07 12:24:24.828016548 +0200
+@@ -183,7 +183,7 @@
+ if (ContextItem *c = one->findContext(oc->context())) {
+ for (int j = 0; j < oc->messageCount(); ++j) {
+ MessageItem *m = oc->messageItem(j);
+- if (c->findMessage(m->text(), m->comment()) >= 0)
++ if (c->findMessage(m->text(), m->comment()))
+ ++inBoth;
+ }
+ }
diff --git a/subprojects/shared-modules/qt4/fixgcc9.patch b/subprojects/shared-modules/qt4/fixgcc9.patch
new file mode 100644
index 00000000..6501a83c
--- /dev/null
+++ b/subprojects/shared-modules/qt4/fixgcc9.patch
@@ -0,0 +1,31 @@
+--- qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h 2015-05-07 16:14:48.000000000 +0200
++++ qt-everywhere-opensource-src-4.8.7-gcc9/src/corelib/global/qglobal.h 2020-05-28 16:24:45.160340385 +0200
+@@ -2482,22 +2482,22 @@
+
+ #endif /* Q_NO_TYPESAFE_FLAGS */
+
+-#if defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && !defined(Q_CC_RVCT)
++#if (defined(Q_CC_GNU) && !defined(Q_CC_RVCT))
+ /* make use of typeof-extension */
+ template <typename T>
+ class QForeachContainer {
+ public:
+- inline QForeachContainer(const T& t) : c(t), brk(0), i(c.begin()), e(c.end()) { }
++ inline QForeachContainer(const T& t) : c(t), i(c.begin()), e(c.end()), control(1) { }
+ const T c;
+- int brk;
+ typename T::const_iterator i, e;
++ int control;
+ };
+
+ #define Q_FOREACH(variable, container) \
+ for (QForeachContainer<__typeof__(container)> _container_(container); \
+- !_container_.brk && _container_.i != _container_.e; \
+- __extension__ ({ ++_container_.brk; ++_container_.i; })) \
+- for (variable = *_container_.i;; __extension__ ({--_container_.brk; break;}))
++ _container_.control && _container_.i != _container_.e; \
++ ++_container_.i, _container_.control ^= 1) \
++ for (variable = *_container_.i; _container_.control; _container_.control = 0)
+
+ #else
+
diff --git a/subprojects/shared-modules/qt4/qt4-4.8.7-minimal.json b/subprojects/shared-modules/qt4/qt4-4.8.7-minimal.json
index fe7b74a4..00cc5706 100644
--- a/subprojects/shared-modules/qt4/qt4-4.8.7-minimal.json
+++ b/subprojects/shared-modules/qt4/qt4-4.8.7-minimal.json
@@ -77,6 +77,14 @@
"path": "disable-sslv3.patch"
},
{
+ "type": "patch",
+ "path": "fixgcc9.patch"
+ },
+ {
+ "type": "patch",
+ "path": "fixgcc11.patch"
+ },
+ {
"type": "shell",
"commands": [
"sed -i \"s|-O2|${CXXFLAGS}|\" mkspecs/common/{g++,gcc}-base.conf",
diff --git a/subprojects/shared-modules/smpeg/smpeg-0.4.5.json b/subprojects/shared-modules/smpeg/smpeg-0.4.5.json
index a4d82aab..a931bac9 100644
--- a/subprojects/shared-modules/smpeg/smpeg-0.4.5.json
+++ b/subprojects/shared-modules/smpeg/smpeg-0.4.5.json
@@ -13,6 +13,12 @@
"sha256": "1276ea797dd9fde8a12dd3f33f180153922544c28ca9fc7b477c018876be1916"
},
{
+ "type": "shell",
+ "commands": [
+ "sed -i '/^## libtool.m4/,/^#####/d' acinclude.m4"
+ ]
+ },
+ {
"type": "script",
"dest-filename": "autogen.sh",
"commands": [
diff --git a/subprojects/shared-modules/vorbisgain/0001-temp_files.patch b/subprojects/shared-modules/vorbisgain/0001-temp_files.patch
new file mode 100644
index 00000000..4e6d6706
--- /dev/null
+++ b/subprojects/shared-modules/vorbisgain/0001-temp_files.patch
@@ -0,0 +1,75 @@
+Description: Apply patch to use temp files, which are dependent
+ on the file which is beeing processed, instead always using the same
+ filename, which can result to data loss in scenarios where two or more
+ vorbis processes are running parallel.
+Author: Pavel N. Krivitsky <pavel@krivitsky.name>
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=505164
+Forwarded: no
+---
+ vorbis.c | 17 +++++++++--------
+ 1 file changed, 9 insertions(+), 8 deletions(-)
+
+--- a/vorbis.c
++++ b/vorbis.c
+@@ -56,7 +56,7 @@
+ #define PROGRESS_FORMAT_SIZE 8
+ #define MIN_FILENAME_SIZE 5
+ #define MIN_MIDDLE_TRUNCATE_SIZE 20
+-#define TEMP_NAME "vorbisgain.tmpXXXXXX"
++#define TEMP_EXT ".vgain.tmpXXXXXX"
+
+
+ /**
+@@ -684,11 +684,10 @@
+ }
+ }
+
+- /* Make sure temp is in same folder as file. And yes, the malloc is larger
+- * than necessary (and not always needed). Lets keep it simple though (at
+- * the expense of a few bytes)...
++ /* Construct a temporary file name by appending TEMP_EXT to
++ * the name of the file being modified.
+ */
+- temp_name = malloc(strlen(filename) + sizeof(TEMP_NAME));
++ temp_name = malloc(strlen(filename)*sizeof(char) + sizeof(TEMP_EXT));
+
+ if (temp_name == NULL)
+ {
+@@ -697,7 +696,7 @@
+ }
+
+ strcpy(temp_name, filename);
+- strcpy((char *) last_path(temp_name), TEMP_NAME);
++ strcat(temp_name, TEMP_EXT);
+
+ #ifdef WIN32
+ temp_name = _mktemp(temp_name);
+@@ -779,6 +778,7 @@
+ file_error(_("Note: Couldn't set mode for file '%s': "), filename);
+ }
+
++#if 0 /* Disable for Debian, this surprises people and is not useful --liw */
+ utime_buf.actime = stat_buf.st_atime;
+ utime_buf.modtime = stat_buf.st_mtime;
+
+@@ -786,6 +786,7 @@
+ {
+ file_error(_("Note: Couldn't set time for file '%s': "), filename);
+ }
++#endif
+
+ result = 0;
+
+@@ -817,10 +818,10 @@
+
+ if (delete_temp)
+ {
+- if (remove(TEMP_NAME) != 0)
++ if (remove(temp_name) != 0)
+ {
+ file_error(_("Note: Couldn't remove temporary file '%s': "),
+- TEMP_NAME);
++ temp_name);
+ }
+ }
+
diff --git a/subprojects/shared-modules/vorbisgain/0002-errno.patch b/subprojects/shared-modules/vorbisgain/0002-errno.patch
new file mode 100644
index 00000000..b01f2ad8
--- /dev/null
+++ b/subprojects/shared-modules/vorbisgain/0002-errno.patch
@@ -0,0 +1,33 @@
+Description: Zero errno before readdir call.
+From: http://bugs.debian.org/375110
+Forwarded: no
+---
+ recurse.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/recurse.c
++++ b/recurse.c
+@@ -408,6 +408,7 @@
+ */
+ static int read_dir(DIRECTORY *directory)
+ {
++ errno = 0;
+ directory->entry = readdir(directory->dir);
+
+ if (directory->entry != NULL)
+@@ -622,6 +623,7 @@
+ /* Check for wildcards */
+ settings->pattern = last_path(my_path);
+
++#if 0 /* Disable for Debian, as it suprises people. --liw */
+ if (contains_pattern(settings->pattern))
+ {
+ /* Strip last part of path */
+@@ -637,6 +639,7 @@
+ }
+ }
+ else
++#endif
+ {
+ settings->pattern = NULL;
+ }
diff --git a/subprojects/shared-modules/vorbisgain/0003-manpage.patch b/subprojects/shared-modules/vorbisgain/0003-manpage.patch
new file mode 100644
index 00000000..8aaeaf1c
--- /dev/null
+++ b/subprojects/shared-modules/vorbisgain/0003-manpage.patch
@@ -0,0 +1,248 @@
+Description: Man page says --silent, should be --skip
+From: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=355783
+Forwarded: no
+---
+ vorbisgain.1 | 60 ++++++++++++-----------------------------------------------
+ 1 file changed, 13 insertions(+), 47 deletions(-)
+
+--- a/vorbisgain.1
++++ b/vorbisgain.1
+@@ -2,10 +2,8 @@
+ .\" groff -man -Tascii vorbisgain.1
+ .\"
+ .TH vorbisgain 1 "2004 Jan 3" "" "VorbisGain"
+-
+ .SH NAME
+ vorbisgain \- calculate the replay gain for Ogg Vorbis files
+-
+ .SH SYNOPSIS
+ .B vorbisgain
+ [
+@@ -16,7 +14,6 @@
+ .I album gain
+ ]
+ .I input_files \fR...
+-
+ .SH DESCRIPTION
+ .B vorbisgain
+ calculates the ReplayGain values for the named Ogg Vorbis input files and
+@@ -27,7 +24,6 @@
+ uses a default target level of 89 dB, rather than the 83 dB recommended by the
+ ReplayGain standard, when calculating the gain to apply. (Some players include
+ a pre-amplification setting with which the target level can be changed.)
+-
+ .PP
+ .B vorbisgain
+ input files must be Ogg Vorbis I files with 1 or 2 channels and a sample rate
+@@ -35,21 +31,16 @@
+ kHz. If an input file contains multiple streams (i.e., it is chained), the
+ streams must all have the same format, in terms of sampling frequency and
+ number of channels.
+-
+ .PP
+ All streams in a chained file are processed, but the ReplayGain tags are
+ only written to (or removed from) the first stream.
+-
+ .SH OPTIONS
+-
+ .IP "-h, --help"
+ Show command help.
+-
+ .IP "-a, --album"
+ Activates album mode, in which the album gain (sometimes called the audiophile
+ gain) is calculated in addition to the track gain (sometimes called the radio
+ gain).
+-
+ .IP "-g n, --album-gain=n"
+ Sets the album gain value to use. Default is to calculate it, if
+ .I -a
+@@ -59,38 +50,31 @@
+ dB, specifying the
+ .B change
+ in volume that should be applied.
+-
+ .IP "-c, --clean"
+ Remove any ReplayGain tags from the specified files. If a file does not
+ contain any ReplayGain tags, the file is not modified.
+-
+ .IP "-C, --convert"
+ Convert old format ReplayGain tags to a new format (see section TAG FORMAT
+ below for details). If a file does not contain all ReplayGain tags that are
+ needed for a conversion, the file is not modified. The album peak tag is
+ only created if
+ .I -a
+-is specified, and the album gain value is then checked for concistency.
++is specified, and the album gain value is then checked for consistency.
+ Otherwise any album gain is converted without any checks.
+-
+ .IP "-d, --display-only"
+ Display the result only; do not write anything to disk. This applies to all
+ options.
+-
+ .IP "-f, --fast"
+ Only calculate the gain for files that do not contain all replay gain tags
+ needed (the album gain and peak tags are only considered if
+ .I -a
+ has been specified).
+-
+ .IP "-n, --no-progress"
+ Only display results, but don't show progress in percentages and times. This
+ can be useful if the output is piped into other programs.
+-
+ .IP "-q, --quiet"
+ Do not display any output while processing. Only error and warning messages will
+ be printed.
+-
+ .IP "-r, --recursive"
+ Enter directories (recursively) and search for files, if directories or file
+ patterns are specified.
+@@ -98,65 +82,51 @@
+ Only available if
+ .B vorbisgain
+ was configured with --enable-recursive.
+-
+-.IP "-s, --silent"
+-Sliently skip any non-Vorbis files found. Vorbis files that can't be processed
++.IP "-s, --skip"
++Silently skip any non-Vorbis files found. Vorbis files that can't be processed
+ for some reason are skipped as well, though not silently. Default is to stop
+ when such files are encountered.
+-
+ .IP "-v, --version"
+ Display the version of the program.
+-
+ .SH EXAMPLES
+-
+ Simplest version. Calculate the track gain and peak only.
+ .PP
+ .RS
+ vorbisgain somefile.ogg
+ .RE
+-
+ .PP
+ Note that the following examples are only possible if
+ .B vorbisgain
+ was configured with --enable-recursive.
+-
+ .PP
+ Calculate the album gain and peak, in addition to the track gain and peak, for
+ all .ogg files in the directory "music" (and all subdirectories). All files in
+ one directory are treated as belonging to the same album. Files that already
+ have ReplayGain tags are not re-calculated. Note the quotes, as they cause the
+ shell to not do any filename globbing:
+-
+ .PP
+ .RS
+ vorbisgain -a -f -r "music/*.ogg"
+ .RE
+-
+ .PP
+ Calculate the album gain. The files specified before the directory "album"
+ are treated as one album, the files in the directory "album" as another
+ album and the remaining files as a third album:
+-
+ .PP
+ .RS
+ vorbisgain -a -r a.ogg b.ogg c.ogg album d.ogg e.ogg f.ogg
+ .RE
+-
+ .PP
+ Remove all replaygain tags from a collection of oggs:
+-
+ .PP
+ .RS
+ vorbisgain -c -r "music/*.ogg"
+ .RE
+-
+ .SH TAG FORMAT
+-
+ .B vorbisgain
+ creates tags like these (when in
+ .I -a
+ mode):
+-
+ .PP
+ .RS
+ REPLAYGAIN_TRACK_GAIN=-7.03 dB
+@@ -170,18 +140,15 @@
+ .RS
+ REPLAYGAIN_ALBUM_PEAK=1.21822226
+ .RE
+-
+ .PP
+ Gain specifies how much the volume should be changed before playback, in dB.
+ Peak is the maximum sample value of the file before any gain has been
+ applied, where 1.0 means "full sample value" (32,767 when decoding to signed
+ 16 bit samples).
+-
+ .PP
+ Earlier versions of
+ .B vorbisgain
+ (before 0.30) created the following tags:
+-
+ .PP
+ .RS
+ RG_RADIO
+@@ -192,7 +159,6 @@
+ .RS
+ RG_AUDIOPHILE
+ .RE
+-
+ .PP
+ When
+ .I -c
+@@ -200,44 +166,44 @@
+ REPLAYGAIN_TRACK_PEAK, RG_AUDIOPHILE to REPLAYGAIN_ALBUM_GAIN and
+ REPLAYGAIN_ALBUM_PEAK is calculated as the maximum of all RG_PEAK tags in
+ the album.
+-
+ .SH AUTHORS
+-
+ .TP
+ Program Code:
+ .br
+ Gian-Carlo Pascutto <gcp@sjeng.org>
+ .br
+ Magnus Holmgren <lear@algonet.se>
+-
+ .TP
+ ReplayGain Analysis Code:
+ .br
+ Glen Sawyer <glensawyer@hotmail.com>
+ .br
+ Frank Klemm (http://www.uni-jena.de/~pfk/)
+-
+ .TP
+ Man Page:
+ .br
+ Magnus Holmgren <lear@algonet.se>
+-
+ .SH BUGS
+-
+ None known.
+-
+ .SH SEE ALSO
+-
+ .TP
+ http://sjeng.org/vorbisgain.html
+ Home page for VorbisGain. The latest version, and a Windows executable,
+ can be found here.
+-
+ .TP
+ http://www.replaygain.org/
+ Contains detailed information about ReplayGain and how it is calculated.
+-
+ .TP
+ http://www.hydrogenaudio.org/
+ Discussion forum for audio compression and related issues, including Ogg
+ Vorbis and VorbisGain.
++.SH NOTE
++The version of vorbisgain packaged for Debian differs in two ways from
++the upstream version. First, it does not retain the modification time
++of the input file: if tags are changed in a file, the mtime will change.
++Second, it does not try to process wildcards in filenames. This makes
++it impossible to say "process all foo*.ogg in all subdirectories", but
++also avoids problems with filenames that actually contain wildcards.
++Without this change, "vorbisgain *.ogg" in a directory with a file that
++contains a question mark would result in that file being treated as
++being in a different album.
diff --git a/subprojects/shared-modules/vorbisgain/0004-vorbisgain_mtime.patch b/subprojects/shared-modules/vorbisgain/0004-vorbisgain_mtime.patch
new file mode 100644
index 00000000..0abd7ce1
--- /dev/null
+++ b/subprojects/shared-modules/vorbisgain/0004-vorbisgain_mtime.patch
@@ -0,0 +1,183 @@
+Description: When a file's metadata is updated, the mtime is changed
+ to the current time. Whether this is correct or not is often a
+ religious issue (metadata-vs-data), but, generally, all other
+ tag-editing software choose to keep the timestamp.
+ .
+ Since the upstream fixed the issue, it is bad to ignore the fix
+ altogether. At the very least, there should be a command-line
+ option to follow the upstream and The Only Right(tm) behaviour.
+Author: Adam Borowski <kilobyte@angband.pl>
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=445958
+---
+ vorbis.c | 18 ++++++++++--------
+ vorbis.h | 2 +-
+ vorbisgain.1 | 7 ++++++-
+ vorbisgain.c | 20 ++++++++++++++------
+ vorbisgain.h | 1 +
+ 5 files changed, 32 insertions(+), 16 deletions(-)
+
+--- a/vorbis.c
++++ b/vorbis.c
+@@ -557,7 +557,8 @@
+ * message has been printed).
+ */
+ int write_gains(const char *filename, float track_peak, float track_gain,
+- float album_peak, float album_gain, int verbose, int remove_tags)
++ float album_peak, float album_gain, int verbose, int remove_tags,
++ SETTINGS* settings)
+ {
+ struct stat stat_buf;
+ struct utimbuf utime_buf;
+@@ -778,15 +779,16 @@
+ file_error(_("Note: Couldn't set mode for file '%s': "), filename);
+ }
+
+-#if 0 /* Disable for Debian, this surprises people and is not useful --liw */
+- utime_buf.actime = stat_buf.st_atime;
+- utime_buf.modtime = stat_buf.st_mtime;
+-
+- if (utime(filename, &utime_buf) != 0)
++ if (!settings->trample_mtime)
+ {
+- file_error(_("Note: Couldn't set time for file '%s': "), filename);
++ utime_buf.actime = stat_buf.st_atime;
++ utime_buf.modtime = stat_buf.st_mtime;
++
++ if (utime(filename, &utime_buf) != 0)
++ {
++ file_error(_("Note: Couldn't set time for file '%s': "), filename);
++ }
+ }
+-#endif
+
+ result = 0;
+
+--- a/vorbisgain.1
++++ b/vorbisgain.1
+@@ -72,6 +72,10 @@
+ .IP "-n, --no-progress"
+ Only display results, but don't show progress in percentages and times. This
+ can be useful if the output is piped into other programs.
++.IP "-p, --preserve-mtime"
++Do not trample upon the timestamps of any files being worked on. This obeys
++the expected data-vs-metadata behaviour, but can confuse some naive
++archivers.
+ .IP "-q, --quiet"
+ Do not display any output while processing. Only error and warning messages will
+ be printed.
+@@ -200,7 +204,8 @@
+ .SH NOTE
+ The version of vorbisgain packaged for Debian differs in two ways from
+ the upstream version. First, it does not retain the modification time
+-of the input file: if tags are changed in a file, the mtime will change.
++of the input file by default: if tags are changed in a file, the mtime will
++change; you can specify "-p" to get the normal behaviour.
+ Second, it does not try to process wildcards in filenames. This makes
+ it impossible to say "process all foo*.ogg in all subdirectories", but
+ also avoids problems with filenames that actually contain wildcards.
+--- a/vorbisgain.c
++++ b/vorbisgain.c
+@@ -235,7 +235,7 @@
+ {
+ if (write_gains(file->filename, file->track_peak,
+ file->track_gain, album_peak, file->album_gain,
+- !settings->quiet, 0) < 0)
++ !settings->quiet, 0, settings) < 0)
+ {
+ return -1;
+ }
+@@ -288,7 +288,7 @@
+ else
+ {
+ if (write_gains(file->filename, NO_PEAK, NO_GAIN,
+- NO_PEAK, NO_GAIN, !settings->quiet, 1) < 0)
++ NO_PEAK, NO_GAIN, !settings->quiet, 1, settings) < 0)
+ {
+ return -1;
+ }
+@@ -425,7 +425,8 @@
+ if (!settings->album)
+ {
+ if (!settings->display_only && write_gains(file->filename,
+- file->track_peak, file->track_gain, NO_PEAK, NO_GAIN, 0, 0) < 0)
++ file->track_peak, file->track_gain, NO_PEAK, NO_GAIN, 0, 0,
++ settings) < 0)
+ {
+ return -1;
+ }
+@@ -466,7 +467,7 @@
+
+ if (write_gains(file->filename, file->track_peak,
+ file->track_gain, album_peak, album_gain,
+- !settings->quiet, 0) < 0)
++ !settings->quiet, 0, settings) < 0)
+ {
+ return -1;
+ }
+@@ -497,6 +498,7 @@
+ fprintf(stderr, _(" -h, --help Print this help text\n"));
+ fprintf(stderr, _(" -n, --no-progress Don't show progress, just print results\n"));
+ fprintf(stderr, _(" -q, --quiet Don't print any output (except errors)\n"));
++ fprintf(stderr, _(" -p, --preserve-mtime Don't change the timestamps\n"));
+ #ifdef ENABLE_RECURSIVE
+ fprintf(stderr, _(" -r, --recursive Search for files recursivly, each folder as an album\n"));
+ #endif
+@@ -522,6 +524,7 @@
+ {"fast", 0, NULL, 'f'},
+ {"help", 0, NULL, 'h'},
+ {"no-progress", 0, NULL, 'n'},
++ {"preserve-mtime",0,NULL, 'p'},
+ {"quiet", 0, NULL, 'q'},
+ #ifdef ENABLE_RECURSIVE
+ {"recursive", 0, NULL, 'r'},
+@@ -533,9 +536,9 @@
+
+
+ #ifdef ENABLE_RECURSIVE
+-#define ARG_STRING "acCdfg:hnqrst:v"
++#define ARG_STRING "acCdfg:hnpqrst:v"
+ #else
+-#define ARG_STRING "acCdfg:hnqst:v"
++#define ARG_STRING "acCdfg:hnpqst:v"
+ #endif
+
+
+@@ -549,6 +552,7 @@
+ memset(&settings, 0, sizeof(settings));
+ settings.first_file = 1;
+ settings.album_gain = NO_GAIN;
++ settings.trample_mtime = 1;
+ settings.show_progress = 1;
+
+ #ifdef WIN32
+@@ -623,6 +627,10 @@
+ settings.show_progress = 0;
+ break;
+
++ case 'p':
++ settings.trample_mtime = 0;
++ break;
++
+ case 'q':
+ settings.quiet = 1;
+ break;
+--- a/vorbisgain.h
++++ b/vorbisgain.h
+@@ -31,6 +31,7 @@
+ int convert; /**< Convert old format tags to new format */
+ int display_only;
+ int fast; /**< Skip files that already have all needed tags */
++ int trample_mtime;
+ int quiet;
+ #ifdef ENABLE_RECURSIVE
+ int recursive;
+--- a/vorbis.h
++++ b/vorbis.h
+@@ -15,6 +15,6 @@
+ SETTINGS *settings);
+ extern int write_gains(const char *filename, float track_peak,
+ float track_gain, float album_gain, float album_peak, int verbose,
+- int remove_tags);
++ int remove_tags, SETTINGS *settings);
+
+ #endif /* VG_VORBIS_H */
diff --git a/subprojects/shared-modules/vorbisgain/0005-double_fclose.patch b/subprojects/shared-modules/vorbisgain/0005-double_fclose.patch
new file mode 100644
index 00000000..2a183292
--- /dev/null
+++ b/subprojects/shared-modules/vorbisgain/0005-double_fclose.patch
@@ -0,0 +1,21 @@
+Description: Don't call fclose() twice.
+Author: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=632947
+---
+ vorbis.c | 5 -----
+ 1 file changed, 5 deletions(-)
+
+--- a/vorbis.c
++++ b/vorbis.c
+@@ -813,11 +813,6 @@
+ fclose(infile);
+ }
+
+- if (infile != NULL)
+- {
+- fclose(infile);
+- }
+-
+ if (delete_temp)
+ {
+ if (remove(temp_name) != 0)
diff --git a/subprojects/shared-modules/vorbisgain/0006-manpage_hyphens.patch b/subprojects/shared-modules/vorbisgain/0006-manpage_hyphens.patch
new file mode 100644
index 00000000..cb518e69
--- /dev/null
+++ b/subprojects/shared-modules/vorbisgain/0006-manpage_hyphens.patch
@@ -0,0 +1,56 @@
+Description: Resolved hyphen-used-as-minus-sign lintian complaints.
+Forwarded: no
+--- a/vorbisgain.1
++++ b/vorbisgain.1
+@@ -85,7 +85,7 @@
+ .I Note:
+ Only available if
+ .B vorbisgain
+-was configured with --enable-recursive.
++was configured with \-\-enable\-recursive.
+ .IP "-s, --skip"
+ Silently skip any non-Vorbis files found. Vorbis files that can't be processed
+ for some reason are skipped as well, though not silently. Default is to stop
+@@ -101,7 +101,7 @@
+ .PP
+ Note that the following examples are only possible if
+ .B vorbisgain
+-was configured with --enable-recursive.
++was configured with \-\-enable\-recursive.
+ .PP
+ Calculate the album gain and peak, in addition to the track gain and peak, for
+ all .ogg files in the directory "music" (and all subdirectories). All files in
+@@ -110,7 +110,7 @@
+ shell to not do any filename globbing:
+ .PP
+ .RS
+-vorbisgain -a -f -r "music/*.ogg"
++vorbisgain \-a \-f \-r "music/*.ogg"
+ .RE
+ .PP
+ Calculate the album gain. The files specified before the directory "album"
+@@ -118,13 +118,13 @@
+ album and the remaining files as a third album:
+ .PP
+ .RS
+-vorbisgain -a -r a.ogg b.ogg c.ogg album d.ogg e.ogg f.ogg
++vorbisgain \-a \-r a.ogg b.ogg c.ogg album d.ogg e.ogg f.ogg
+ .RE
+ .PP
+ Remove all replaygain tags from a collection of oggs:
+ .PP
+ .RS
+-vorbisgain -c -r "music/*.ogg"
++vorbisgain \-c \-r "music/*.ogg"
+ .RE
+ .SH TAG FORMAT
+ .B vorbisgain
+@@ -205,7 +205,7 @@
+ The version of vorbisgain packaged for Debian differs in two ways from
+ the upstream version. First, it does not retain the modification time
+ of the input file by default: if tags are changed in a file, the mtime will
+-change; you can specify "-p" to get the normal behaviour.
++change; you can specify "\-p" to get the normal behaviour.
+ Second, it does not try to process wildcards in filenames. This makes
+ it impossible to say "process all foo*.ogg in all subdirectories", but
+ also avoids problems with filenames that actually contain wildcards.
diff --git a/subprojects/shared-modules/vorbisgain/0007-recursively_spelling.patch b/subprojects/shared-modules/vorbisgain/0007-recursively_spelling.patch
new file mode 100644
index 00000000..4a6fbf9c
--- /dev/null
+++ b/subprojects/shared-modules/vorbisgain/0007-recursively_spelling.patch
@@ -0,0 +1,14 @@
+Description: "recursivly" should be spelled "recursively". Thanks Adam.
+From: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=661999
+Forwarded: no
+--- a/vorbisgain.c
++++ b/vorbisgain.c
+@@ -500,7 +500,7 @@
+ fprintf(stderr, _(" -q, --quiet Don't print any output (except errors)\n"));
+ fprintf(stderr, _(" -p, --preserve-mtime Don't change the timestamps\n"));
+ #ifdef ENABLE_RECURSIVE
+- fprintf(stderr, _(" -r, --recursive Search for files recursivly, each folder as an album\n"));
++ fprintf(stderr, _(" -r, --recursive Search for files recursively, each folder as an album\n"));
+ #endif
+ fprintf(stderr, _(" -s, --skip Skip non-Vorbis or faulty files\n"));
+ fprintf(stderr, _(" -v, --version Display version number and exit\n\n"));
diff --git a/subprojects/shared-modules/vorbisgain/0008-manpage_recursion_mistake.patch b/subprojects/shared-modules/vorbisgain/0008-manpage_recursion_mistake.patch
new file mode 100644
index 00000000..81792532
--- /dev/null
+++ b/subprojects/shared-modules/vorbisgain/0008-manpage_recursion_mistake.patch
@@ -0,0 +1,23 @@
+Description: The manpage shows methods that don't work. They have been replaced.
+From: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=447402
+Forwarded: no
+--- a/vorbisgain.1
++++ b/vorbisgain.1
+@@ -110,7 +110,7 @@
+ shell to not do any filename globbing:
+ .PP
+ .RS
+-vorbisgain \-a \-f \-r "music/*.ogg"
++vorbisgain \-a \-f \-r music/
+ .RE
+ .PP
+ Calculate the album gain. The files specified before the directory "album"
+@@ -124,7 +124,7 @@
+ Remove all replaygain tags from a collection of oggs:
+ .PP
+ .RS
+-vorbisgain \-c \-r "music/*.ogg"
++vorbisgain \-c \-r music/
+ .RE
+ .SH TAG FORMAT
+ .B vorbisgain
diff --git a/subprojects/shared-modules/vorbisgain/0009-hardening.patch b/subprojects/shared-modules/vorbisgain/0009-hardening.patch
new file mode 100644
index 00000000..67f50a03
--- /dev/null
+++ b/subprojects/shared-modules/vorbisgain/0009-hardening.patch
@@ -0,0 +1,13 @@
+Description: Allow build with dh compat level 9 (debian build flags)
+Forwarded: no
+--- a/misc.c
++++ b/misc.c
+@@ -56,7 +56,7 @@
+ vfprintf(stderr, message, args);
+ va_end(args);
+
+- fprintf(stderr, strerror(err_num));
++ fputs(strerror(err_num), stderr);
+ fprintf(stderr, "\n");
+ }
+
diff --git a/subprojects/shared-modules/vorbisgain/0010-fclose.patch b/subprojects/shared-modules/vorbisgain/0010-fclose.patch
new file mode 100644
index 00000000..12378987
--- /dev/null
+++ b/subprojects/shared-modules/vorbisgain/0010-fclose.patch
@@ -0,0 +1,13 @@
+Solve "too many open files" by closing those which are not compatible with vorbisgain. Thanks to Marcel Rehberg for the patch.
+--- a/vorbis.c
++++ b/vorbis.c
+@@ -357,7 +357,8 @@
+ {
+ vorbis_error(result, _("Couldn't process '%s': "), filename);
+ }
+-
++ // make sure file is closed, since ov_open failed we are still responsible
++ fclose(file);
+ return -1;
+ }
+
diff --git a/subprojects/shared-modules/vorbisgain/README.md b/subprojects/shared-modules/vorbisgain/README.md
new file mode 100644
index 00000000..42d83947
--- /dev/null
+++ b/subprojects/shared-modules/vorbisgain/README.md
@@ -0,0 +1,23 @@
+Vorbisgain comes in two version;
+- The main source: https://sjeng.org/ftp/vorbis/
+- The Debian version: http://deb.debian.org/debian/pool/main/v/vorbisgain/
+
+The catch is... Debian has 10 patches:
+- 0001-temp_files.patch
+- 0002-errno.patch
+- 0003-manpage.patch
+- 0004-vorbisgain_mtime.patch
+- 0005-double_fclose.patch
+- 0006-manpage_hyphens.patch
+- 0007-recursively_spelling.patch
+- 0008-manpage_recursion_mistake.patch
+- 0009-hardening.patch
+- 0010-fclose.patch
+
+Of particular concern are 0005, 0009 and 0010 which might have implications for memory-leaks and string inputs.
+
+## Other points of concern
+
+https://pkgs.org/download/vorbisgain
+
+Lots of distributions don't include these patches as well, but I prefer to stick with the tried and tested package from Debian.
diff --git a/subprojects/shared-modules/vorbisgain/vorbisgain_0.37-2.json b/subprojects/shared-modules/vorbisgain/vorbisgain_0.37-2.json
new file mode 100644
index 00000000..0a9a40da
--- /dev/null
+++ b/subprojects/shared-modules/vorbisgain/vorbisgain_0.37-2.json
@@ -0,0 +1,29 @@
+{
+ "name": "vorbisgain",
+ "buildsystem": "autotools",
+ "cleanup": [
+ "/man"
+ ],
+ "sources": [
+ {
+ "type": "archive",
+ "url": "http://deb.debian.org/debian/pool/main/v/vorbisgain/vorbisgain_0.37.orig.tar.gz",
+ "sha256": "dd6db051cad972bcac25d47b4a9e40e217bb548a1f16328eddbb4e66613530ec"
+ },
+ {
+ "type": "patch",
+ "paths": [
+ "0001-temp_files.patch",
+ "0002-errno.patch",
+ "0003-manpage.patch",
+ "0004-vorbisgain_mtime.patch",
+ "0005-double_fclose.patch",
+ "0006-manpage_hyphens.patch",
+ "0007-recursively_spelling.patch",
+ "0008-manpage_recursion_mistake.patch",
+ "0009-hardening.patch",
+ "0010-fclose.patch"
+ ]
+ }
+ ]
+}