diff --git a/.gitignore b/.gitignore index 6dd0d180c32af5db8e7b78cb8076e7b4ee598d17..2c302203163e1ca75ae7d3f40565aa58efd416ef 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ libgd/ /.gitignore /.libs /AUTHORS +/ABOUT-NLS /GPATH /GRTAGS /GSYMS @@ -33,6 +34,7 @@ libgd/ /config.h.in /config.log /config.lt +/config.rpath /config.status /config.status.lineno /config.sub @@ -41,9 +43,6 @@ libgd/ /configure.scan /depcomp /install-sh -/intltool-extract.in -/intltool-merge.in -/intltool-update.in /libtool /ltmain.sh /m4 @@ -51,7 +50,6 @@ libgd/ /mkinstalldirs /po/*.gmo /po/*.mo -/po/.intltool-merge-cache /po/Makefile /po/Makefile.in /po/Makefile.in.in diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ce1668a042164a7c3bda7df9a94b2a86e1753b32..c74c6355b802aca188b72e5517427f5bd6266cd2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,10 @@ stages: - deploy variables: - DEPENDENCIES: python3 gobject-introspection-devel gtk3-devel libmediaart-devel grilo-devel + DEPENDENCIES: python3 autoconf-archive gettext-devel git pygobject3 + pygobject3-devel python3-gobject redhat-rpm-config gtk3-devel + gobject-introspection-devel tracker-devel gnome-common which + libmediaart-devel grilo-devel build: stage: build @@ -35,5 +38,5 @@ pep8: stage: check script: - dnf update -y --nogpgcheck && dnf install -y --nogpgcheck python3-pep8 - - python3-pep8 --ignore=E501,E225,E265,E402 --show-source --show-pep8 . - allow_failure: true \ No newline at end of file + - python3-pep8 --ignore=W503,E402 --show-source --show-pep8 --exclude=mpris.py,grilo.py,query.py,player.py,window.py . + allow_failure: true diff --git a/NEWS b/NEWS index 2eec1ca3774783c613f64b2be040f474aa3a42f8..092c386c291bb70800b5eaf25f728c86185a58aa 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,51 @@ +Overview of changes in 3.27.4 +============================= + +Bugs fixed: + Migrate from intltool to gettext (#787272) + Add appstream metadata to non-deprecated location (#790869) + Playlist ordering in views (#772090) + Fix style of GdTaggedEntry (#791077) + PEP-8 fixes & cleanups (#791481,!7,!9,!10,!17,!18) + Update libgd (!8) + Fixes to navigating back (#777238) + Enable mouse button for navigating back (#771934) + Fix constructor deprecation warning (#790127) + Fix PyGObject deprecation warning (#788701) + Fix order in method call (!21) + Fix log decorator order (!22) + Use python3 style super() calls (!16) + DiscListBoxWidget update favourites (!23) + Add the ability to rename playlists (!11) + Update README.md (!12) + +Thanks to our contributors this release: + Abhinav Singh + Florian Darfeuille + Jean Felder + Jeremy Bicha + Kainaat Singh + Marinus Schraal + Niels De Graef + Phil Dawson + Piotr Drąg + Sambhav Kothari + +Translations updated: + Dutch + Romanian + Icelandic + Persian + Catalan (Valencian) + German + Czech + Friulian + Norwegian bokmål + Croatian + Indonesian + Serbian + Swedish + Overview of changes in 3.26.0 ============================= diff --git a/README b/README index a87c6321cf863814a603ddecac72eb968f94cc4e..96dc92fbd0389e403e1bbd6d3288fba6ac3bcdc2 100644 --- a/README +++ b/README @@ -1,51 +1 @@ -GNOME Music -=========== - -Music is the new GNOME music playing application. - - -=== Where can I find more? === - -We have a wiki page at -https://wiki.gnome.org/Apps/Music - -You can join us on the IRC: -#gnome-music on GIMPNet - - -=== Building from jhbuild === - -Follow the BuildGnome tutorial for newcomers at https://wiki.gnome.org/Newcomers/BuildGnome - -After installing jhbuild, you have to build gnome-music and all its dependencies. The task can be done by simply running: -$ jhbuild sysdeps --install gnome-music -$ jhbuild build gnome-music - -Finally, start gnome music with: -$ jhbuild run gnome-music - - -=== Troubleshooting === - -Jhbuild fires import errors for python packages like: -"ImportError: /opt/gnome/lib64/python2.7/site-packages/" -Do: - $ jhbuild shell - $ export PYTHONPATH=/opt/gnome/lib/python3.3/site-packages:/opt/gnome/lib64/python3.3/site-packages - $ gnome-music - - -=== Coding style === - -GNOME Music is written in Python and aspires to adhere to the coding style described in PEP-8: -https://www.python.org/dev/peps/pep-0008/ - -Use of docstrings is recommended following PEP-257: -https://www.python.org/dev/peps/pep-0257/ - -The content of docstrings uses the Sphinx markup style: -http://www.sphinx-doc.org/ - -Use PyGI shorthands for manipulating GtkTreeModel: - model[iter][0] = "artist" - artist, title = model[iter][1, 4] +See README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..5fea6d2294208d866851b166a567c9185beb562e --- /dev/null +++ b/README.md @@ -0,0 +1,80 @@ +Music is the new GNOME music playing application. + +# Where can I find more? + +Music has a wiki page at +https://wiki.gnome.org/Apps/Music (outdated). + +You can join the developers on IRC: [#gnome-music](irc://irc.gnome.org/gnome-music) on [GIMPNet](https://wiki.gnome.org/Community/GettingInTouch/IRC). + +# Join the development + +Follow the guide at https://wiki.gnome.org/Newcomers/ and choose Music as your project. There are bugs labeled for newcomers, which should provide an easy entry point. Of course, feel free to pick something more challenging. Pick bugs if you can, the goal is to make the current Music experience sound & stable and only then extend it's functionality. + +# Coding style + +GNOME Music is written in Python and aspires to adhere to the coding style described in the python style guide [PEP-8](https://www.python.org/dev/peps/pep-0008/). + +Since Music was written over many years and by many different contributors without a single style being enforced, it currently is in a mixed style state. The goal is to eventually consistently follow [PEP-8](https://www.python.org/dev/peps/pep-0008/) for style and [PEP-257](https://www.python.org/dev/peps/pep-0257/) for docstrings. The content of docstrings uses the [Sphinx markup style](http://www.sphinx-doc.org/). + +Docstrings should be added to all (new) public functions. + +Since looking at the surrounding code might give mixed results, take note of the following rules as a basic style guide. + +### Line length +>>> +Limit all lines to a maximum of 79 characters. + +For flowing long blocks of text with fewer structural restrictions (docstrings or comments), the line length should be limited to 72 characters. +>>> + +### Indentation + +Music uses hanging indents when the lines get too long. +>>> +When using a hanging indent the following should be considered; there should be no arguments on the first line and further indentation should be used to clearly distinguish itself as a continuation line. +>>> + +```python +# More indentation included to distinguish this from the rest. +def long_function_name( + var_one, var_two, var_three, + var_four): + print(var_one) + +# Hanging indents should add a level. +foo = long_function_name( + var_one, var_two, + var_three, var_four) +``` + +### Line break before a binary operator + +```python +# Yes: easy to match operators with operands +income = (gross_wages + + taxable_interest + + (dividends - qualified_dividends) + - ira_deduction + - student_loan_interest) + +# Add some extra indentation on the conditional continuation line. +if (this_is_one_thing + and that_is_another_thing): + do_something() +``` + +### Class internals + +All non-public classwide variables or methods should be prepended with an underscore. +>>> +_single_leading_underscore: weak "internal use" indicator. E.g. from M import * does not import objects whose name starts with an underscore. +>>> + +### PyGI specific + +Use PyGI shorthands for manipulating `GtkTreeModel` & `GtkListStore`: +```python +model[iter][0] = "artist" +artist, title = model[iter][1, 4] +``` diff --git a/configure.ac b/configure.ac index ac91582cf79b957781de6deabbaa855c2584eaa8..3a690509366969781e1aa8166526c2be7f7c9578 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ AC_PREREQ(2.63) AC_INIT([gnome-music], - [3.26.0], + [3.27.4], [https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-music], [gnome-music], [https://wiki.gnome.org/Apps/Music]) @@ -13,11 +13,12 @@ m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) AM_PATH_PYTHON([3.3]) +AM_GNU_GETTEXT([external]) +AM_GNU_GETTEXT_VERSION([0.19.8]) GETTEXT_PACKAGE=gnome-music AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [The prefix for our gettext translation domains.]) -IT_PROG_INTLTOOL(0.26) YELP_HELP_INIT diff --git a/data/AboutDialog.ui.in b/data/AboutDialog.ui.in index 7ee1a2a7a487074a22bdbb9a48217f78fbf18258..7a70395621a173e0eb8fb267973f6c9310f52899 100644 --- a/data/AboutDialog.ui.in +++ b/data/AboutDialog.ui.in @@ -6,7 +6,7 @@ True Music @PACKAGE_VERSION@ - Copyright © 2016 GNOME Music Developers + Copyright © 2018 GNOME Music Developers A music player and management application for GNOME. @PACKAGE_URL@ Visit GNOME Music website @@ -34,18 +34,23 @@ Elias Entrup Evandro Giovanini Fabiano Fidêncio Felipe Borges +Florian Darfeuille Gaurav Narula Georges Basile Stavracas Neto Guillaume Quintard Jan-Michael Brummer Jean Felder +Jeremy Bicha Jordan Petridis Juan Suarez +Kainaat Singh Kalev Lember Kevin Haller Konstantin Pospelov Marinus Schraal +Niels De Graef Pablo Palácios +Phil Dawson Piotr Drąg Prashant Tyagi Rashi Sah @@ -88,6 +93,7 @@ Inaki Larranaga Murgoitio Jiri Grönroos Joe Hansen Jordi Mas +Justin van Steijn Fabio Tomat Fran Dieguez Furkan Tokaç @@ -99,6 +105,7 @@ Marek Černocký Mario Blättermann Matej Urbančič Milo Casagrande +Марко Костић Мирослав Николић Osman Karagöz Piotr Drąg @@ -111,6 +118,7 @@ Sveinn í Felli Tiago Santos Tom Tryfonidis Trần Ngọc Quân +Xavi Ivars Yosef Or Boczko Yuras Shumovich Yuri Myasoedov diff --git a/data/Makefile.am b/data/Makefile.am index 99c7bfd7d4fb030d1412533c5a118f78ded9a8b5..264e33e9309509f88dc6bfc80aab8fdf86ad2513 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -6,15 +6,16 @@ resourcedir = $(pkgdatadir) resource_DATA = gnome-music.gresource appsdir = $(datadir)/applications -apps_DATA = org.gnome.Music.desktop +apps_in_files = org.gnome.Music.desktop.in +apps_DATA = $(apps_in_files:.desktop.in=.desktop) +$(apps_DATA): $(apps_in_files) + $(AM_V_GEN) $(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@ -@INTLTOOL_DESKTOP_RULE@ - -appdatadir = $(datadir)/appdata -appdata_DATA = $(appdata_in_files:.xml.in=.xml) +appdatadir = $(datadir)/metainfo appdata_in_files = org.gnome.Music.appdata.xml.in - -@INTLTOOL_XML_RULE@ +appdata_DATA = $(appdata_in_files:.xml.in=.xml) +$(appdata_DATA): $(appdata_in_files) + $(AM_V_GEN) $(MSGFMT) --xml --template $< -d $(top_srcdir)/po -o $@ man1_MANS = gnome-music.1 diff --git a/data/PlaylistControls.ui b/data/PlaylistControls.ui index 8f064fcd5a4233807f82f9d495ac0d8bf3d229be..06c1c8b5cfffff10a815343e282d9886fa780129 100644 --- a/data/PlaylistControls.ui +++ b/data/PlaylistControls.ui @@ -10,6 +10,10 @@ _Delete win.playlist_delete + + _Rename… + win.playlist_rename + True @@ -19,17 +23,59 @@ 18 18 - - True - False - True - 0 - Playlist Name - middle - - - - + + + + True + False + True + 0 + Playlist Name + middle + + + + + + + + + True + False + horizontal + + + + True + True + True + True + True + + + + + True + True + True + True + True + _Done + True + center + True + + + + + + renaming_dialog + + 0 diff --git a/data/application.css b/data/application.css index f4bbdc294b9bf115710e3e034aa37401a66c989e..9d5e869833bc0ec657458cdad16607e518b741c6 100644 --- a/data/application.css +++ b/data/application.css @@ -1,6 +1,3 @@ -@define-color music_entry_tag_bg #3465a4; -@define-color music_entry_tag_fg @theme_base_color; - @binding-set unbind-ctrl-space { unbind "space"; } @@ -70,31 +67,3 @@ flowbox, treeview, widget { } .content-view { background-color: @theme_bg; } - -.music-entry-tag { - background-image: none; - background-color: @music_entry_tag_bg; - color: @music_entry_tag_fg; - - border-radius: 4px; - border-width: 0; - - margin: 2px; - padding: 4px; -} - -.music-entry-tag:hover { - background-color: shade(@music_entry_tag_bg, 1.10); - color: @music_entry_tag_fg; -} - -.music-entry-tag.button, -.music-entry-tag.button:hover, -.music-entry-tag.button:active, -.music-entry-tag.button:active:hover { - background-color: transparent; - background-image: none; - box-shadow: none; - border-image: none; - border-width: 0; -} diff --git a/data/org.gnome.Music.appdata.xml.in b/data/org.gnome.Music.appdata.xml.in index 07cac4e883e1caa564dbb83e71c83a0ac7c28152..031c4361f25128e7142d50f124837674c6bb0cf7 100644 --- a/data/org.gnome.Music.appdata.xml.in +++ b/data/org.gnome.Music.appdata.xml.in @@ -3,12 +3,12 @@ org.gnome.Music.desktop CC0-1.0 GPL-2.0+ and LGPL-2.0+ and CC-BY-SA-4.0 - <_name>GNOME Music - <_summary>Play and organize your music collection + GNOME Music + Play and organize your music collection - <_p> + Music is the new GNOME music playing application. - + diff --git a/data/org.gnome.Music.desktop.in b/data/org.gnome.Music.desktop.in index 076afb50676fc396bc9884cabe102d0247b56a99..013cba6737aaa65a8733ff13aaf50b58a49bcf63 100644 --- a/data/org.gnome.Music.desktop.in +++ b/data/org.gnome.Music.desktop.in @@ -1,11 +1,13 @@ [Desktop Entry] -_Name=Music -_GenericName=Music Player -_Comment=Play and organize your music collection +Name=Music +GenericName=Music Player +Comment=Play and organize your music collection +# Translators: Do NOT translate or transliterate this text (this is an icon file name)! Icon=gnome-music Exec=gnome-music Terminal=false Type=Application Categories=GNOME;GTK;AudioVideo;Player;Audio; -_Keywords=Music;Player; +# Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! +Keywords=Music;Player; StartupNotify=true diff --git a/gnomemusic/Makefile.am b/gnomemusic/Makefile.am index 408cfde68e92bdfa67391915ac4d2453b3e27f40..dff6325b8912af0467b6a7f0cec943a1a5999d1b 100644 --- a/gnomemusic/Makefile.am +++ b/gnomemusic/Makefile.am @@ -14,6 +14,6 @@ app_PYTHON = \ playlists.py\ utils.py \ query.py \ + scrobbler.py \ searchbar.py \ window.py - diff --git a/gnomemusic/albumartcache.py b/gnomemusic/albumartcache.py index d9a1abc4a9c383bc61f7812c90d9bc8c40bf5fab..f9954cae2f19a2b8b8b48f5559b0e67bef19e268 100644 --- a/gnomemusic/albumartcache.py +++ b/gnomemusic/albumartcache.py @@ -33,7 +33,6 @@ from math import pi import os import cairo -from gettext import gettext as _ import gi gi.require_version('MediaArt', '2.0') from gi.repository import (Gdk, GdkPixbuf, Gio, GLib, GObject, Gtk, MediaArt, @@ -139,11 +138,11 @@ def _make_icon_frame(pixbuf, art_size=None, scale=1): class ArtSize(Enum): """Enum for icon sizes""" - xsmall = (34, 34) - small = (48, 48) - medium = (128, 128) - large = (256, 256) - xlarge = (512, 512) + XSMALL = (34, 34) + SMALL = (48, 48) + MEDIUM = (128, 128) + LARGE = (256, 256) + XLARGE = (512, 512) def __init__(self, width, height): """Intialize width and height""" @@ -166,7 +165,8 @@ class DefaultIcon(GObject.GObject): @log def __init__(self, scale=1): - GObject.GObject.__init__(self) + super().__init__() + self._scale = scale @log @@ -237,7 +237,8 @@ class AlbumArtCache(GObject.GObject): @log def __init__(self, scale=1): - GObject.GObject.__init__(self) + super().__init__() + self._scale = scale self.cache_dir = os.path.join(GLib.get_user_cache_dir(), 'media-art') @@ -427,7 +428,7 @@ class AlbumArtCache(GObject.GObject): success, cache_path = MediaArt.get_path(artist, album, "album") if not success: - self._lookup_remote(item, callback, itr, art_size) + self._lookup_remote(item, art_size, callback, itr) self._discoverer_items[item.get_url()] = [item, art_size, callback, itr, cache_path] diff --git a/gnomemusic/application.py b/gnomemusic/application.py index 2fa8a1dabebbe6e5e974db4517ca998dc905e90a..00ec4296d30571631a77d66098510e97855ab180 100644 --- a/gnomemusic/application.py +++ b/gnomemusic/application.py @@ -48,8 +48,10 @@ class Application(Gtk.Application): @log def __init__(self): - Gtk.Application.__init__(self, application_id='org.gnome.Music', - flags=Gio.ApplicationFlags.FLAGS_NONE) + super().__init__( + application_id='org.gnome.Music', + flags=Gio.ApplicationFlags.FLAGS_NONE) + GLib.set_application_name(_("Music")) GLib.set_prgname('gnome-music') GLib.setenv("PULSE_PROP_media.role", "music", True) diff --git a/gnomemusic/grilo.py b/gnomemusic/grilo.py index 21d6f022a082329096ee6ed8ac0733ffee30807d..46dcad457b63820ddf2e0172b06d910bd487bcb3 100644 --- a/gnomemusic/grilo.py +++ b/gnomemusic/grilo.py @@ -35,8 +35,7 @@ import os os.environ['GRL_PLUGIN_RANKS'] = ("grl-local-metadata:5," "grl-filesystem:4," "grl-tracker-source:3," - "grl-lastfm-cover:2," - "grl-spotify-cover:1") + "grl-lastfm-cover:2") from gi.repository import Grl logger = logging.getLogger(__name__) @@ -80,7 +79,8 @@ class Grilo(GObject.GObject): @log def __init__(self): - GObject.GObject.__init__(self) + super().__init__() + self.playlist_path = GLib.build_filenamev([GLib.get_user_data_dir(), "gnome-music", "playlists"]) if not (GLib.file_test(self.playlist_path, GLib.FileTest.IS_DIR)): @@ -96,7 +96,13 @@ class Grilo(GObject.GObject): Grl.ResolutionFlags.IDLE_RELAY) self.sources = {} - self.blacklist = ['grl-filesystem', 'grl-bookmarks', 'grl-metadata-store', 'grl-podcasts'] + self.blacklist = [ + 'grl-filesystem', + 'grl-bookmarks', + 'grl-metadata-store', + 'grl-podcasts', + 'grl-spotify-cover' + ] self.tracker = None self.changed_media_ids = [] self.pending_event_id = 0 diff --git a/gnomemusic/mpris.py b/gnomemusic/mpris.py index 40146fa7222ed584edcee14b3244f3991aa4e6db..87317cee32108352ee82f997a6738b41f8cdb27e 100644 --- a/gnomemusic/mpris.py +++ b/gnomemusic/mpris.py @@ -26,9 +26,9 @@ from gnomemusic.player import PlaybackStatus, RepeatType from gnomemusic.grilo import grilo from gnomemusic.playlists import Playlists +from gnomemusic.utils import View import gnomemusic.utils as utils -from gettext import gettext as _ from gi.repository import GLib from gi.repository import Gio from gnomemusic import log @@ -543,8 +543,8 @@ class MediaPlayer2Service(Server): self.player.set_playing(True) elif self.first_song_handler == 0: window = self.app.get_active_window() - window._stack.set_visible_child(window.views[2]) - model = window.views[2].model + window._stack.set_visible_child(window.views[View.SONG]) + model = window.views[View.SONG].model if model.iter_n_children(None): _iter = model.get_iter_first() self._play_first_song(model, model.get_path(_iter), _iter) @@ -626,7 +626,7 @@ class MediaPlayer2Service(Server): def ActivatePlaylist(self, playlist_path): playlist_id = self._get_playlist_from_path(playlist_path).get_id() - self.app._window.views[3].activate_playlist(playlist_id) + self.app._window.views[View.PLAYLIST].activate_playlist(playlist_id) def GetPlaylists(self, index, max_count, order, reverse): if order != 'Alphabetical': diff --git a/gnomemusic/notification.py b/gnomemusic/notification.py index 2f6f7d3887378f429a0fc8751b3c30a08b7564ce..be329ba570545c9946ca7387ab355925b178daa2 100644 --- a/gnomemusic/notification.py +++ b/gnomemusic/notification.py @@ -22,13 +22,10 @@ # 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 GLib, Grl, Notify - from gettext import gettext as _ +from gi.repository import GLib, Notify from gnomemusic import log -import logging -logger = logging.getLogger(__name__) class NotificationManager: @@ -45,23 +42,25 @@ class NotificationManager: self._notification.set_category('x-gnome.music') self._notification.set_hint('action-icons', GLib.Variant('b', True)) self._notification.set_hint('resident', GLib.Variant('b', True)) - self._notification.set_hint('desktop-entry', GLib.Variant('s', 'gnome-music')) + self._notification.set_hint( + 'desktop-entry', GLib.Variant('s', 'gnome-music')) @log def _set_actions(self, playing): self._notification.clear_actions() - if (Notify.VERSION_MINOR > 7) or (Notify.VERSION_MINOR == 7 and Notify.VERSION_MICRO > 5): - self._notification.add_action('media-skip-backward', _("Previous"), - self._go_previous, None) + if (Notify.VERSION_MINOR > 7 + or (Notify.VERSION_MINOR == 7 and Notify.VERSION_MICRO > 5)): + self._notification.add_action( + 'media-skip-backward', _("Previous"), self._go_previous, None) if playing: - self._notification.add_action('media-playback-pause', _("Pause"), - self._pause, None) + self._notification.add_action( + 'media-playback-pause', _("Pause"), self._pause, None) else: - self._notification.add_action('media-playback-start', _("Play"), - self._play, None) - self._notification.add_action('media-skip-forward', _("Next"), - self._go_next, None) + self._notification.add_action( + 'media-playback-start', _("Play"), self._play, None) + self._notification.add_action( + 'media-skip-forward', _("Next"), self._go_next, None) @log def _go_previous(self, notification, action, data): diff --git a/gnomemusic/player.py b/gnomemusic/player.py index eabb283651aa4f36997f06e3c4bc6cca25340e0b..d8798d229a96fb92c4e1225fba10b51a5c98c181 100644 --- a/gnomemusic/player.py +++ b/gnomemusic/player.py @@ -30,6 +30,10 @@ # 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 collections import deque +import logging +from random import randint +import time from gi.repository import GIRepository GIRepository.Repository.prepend_search_path('libgd') @@ -40,22 +44,17 @@ gi.require_version('GstAudio', '1.0') gi.require_version('GstPbutils', '1.0') from gi.repository import Gtk, Gdk, GLib, Gio, GObject, Gst, GstAudio, GstPbutils from gettext import gettext as _, ngettext -from random import randint -from collections import deque + +from gnomemusic import log from gnomemusic.albumartcache import AlbumArtCache, DefaultIcon, ArtSize from gnomemusic.grilo import grilo from gnomemusic.playlists import Playlists +from gnomemusic.scrobbler import LastFmScrobbler import gnomemusic.utils as utils -playlists = Playlists.get_default() -from hashlib import md5 -import requests -import time -from threading import Thread -from gnomemusic import log -import logging logger = logging.getLogger(__name__) +playlists = Playlists.get_default() class RepeatType: @@ -101,7 +100,8 @@ class Player(GObject.GObject): @log def __init__(self, parent_window): - GObject.GObject.__init__(self) + super().__init__() + self._parent_window = parent_window self.playlist = None self.playlistType = None @@ -113,7 +113,7 @@ class Player(GObject.GObject): self.cache = AlbumArtCache(scale) self._loading_icon_surface = DefaultIcon(scale).get( DefaultIcon.Type.loading, - ArtSize.xsmall) + ArtSize.XSMALL) self._missingPluginMessages = [] Gst.init(None) @@ -145,25 +145,7 @@ class Player(GObject.GObject): self.playlist_insert_handler = 0 self.playlist_delete_handler = 0 - self._check_last_fm() - - @log - def _check_last_fm(self): - try: - self.last_fm = None - gi.require_version('Goa', '1.0') - from gi.repository import Goa - client = Goa.Client.new_sync(None) - accounts = client.get_accounts() - - for obj in accounts: - account = obj.get_account() - if account.props.provider_name == "Last.fm": - self.last_fm = obj.get_oauth2_based() - return - except Exception as e: - logger.info("Error reading Last.fm credentials: %s" % str(e)) - self.last_fm = None + self._lastfm = LastFmScrobbler() @log def _on_replaygain_setting_changed(self, settings, value): @@ -601,15 +583,14 @@ class Player(GObject.GObject): artist = utils.get_artist_name(media) self.artistLabel.set_label(artist) - self._currentArtist = artist self.coverImg.set_from_surface(self._loading_icon_surface) - self.cache.lookup(media, ArtSize.xsmall, self._on_cache_lookup, None) + self.cache.lookup(media, ArtSize.XSMALL, self._on_cache_lookup, None) - self._currentTitle = utils.get_media_title(media) - self.titleLabel.set_label(self._currentTitle) + title = utils.get_media_title(media) + self.titleLabel.set_label(title) - self._currentTimestamp = int(time.time()) + self._time_stamp = int(time.time()) url = media.get_url() if url != self.player.get_value('current-uri', 0): @@ -680,9 +661,7 @@ class Player(GObject.GObject): self.player.set_state(Gst.State.PLAYING) self._update_position_callback() if media: - t = Thread(target=self.update_now_playing_in_lastfm, args=(media.get_url(),)) - t.setDaemon(True) - t.start() + self._lastfm.now_playing(media) if not self.timeout and self.progressScale.get_realized(): self._update_timeout() @@ -802,8 +781,8 @@ class Player(GObject.GObject): self.titleLabel = self._ui.get_object('title') self.artistLabel = self._ui.get_object('artist') self.coverImg = self._ui.get_object('cover') - self.coverImg.set_property("width-request", ArtSize.xsmall.width) - self.coverImg.set_property("height-request", ArtSize.xsmall.height) + self.coverImg.set_property("width-request", ArtSize.XSMALL.width) + self.coverImg.set_property("height-request", ArtSize.XSMALL.height) self.duration = self._ui.get_object('duration') self.repeatBtnImage = self._ui.get_object('playlistRepeat') @@ -894,7 +873,7 @@ class Player(GObject.GObject): timing from the user, for updating the songPlaybackTimeLabel. """ # Don't run until progressScale has been realized - if self.progressScale.get_realized() == False: + if self.progressScale.get_realized() is False: return # Update self.timeout @@ -949,67 +928,9 @@ class Player(GObject.GObject): def _set_duration(self, duration): self.duration = duration self.played_seconds = 0 - self.scrobbled = False self.progressScale.set_range(0.0, duration * 60) @log - def scrobble_song(self, url): - # Update playlists - playlists.update_all_static_playlists() - - if self.last_fm: - api_key = self.last_fm.props.client_id - sk = self.last_fm.call_get_access_token_sync(None)[0] - secret = self.last_fm.props.client_secret - - sig = "api_key%sartist[0]%smethodtrack.scrobblesk%stimestamp[0]%strack[0]%s%s" %\ - (api_key, self._currentArtist, sk, self._currentTimestamp, self._currentTitle, secret) - - api_sig = md5(sig.encode()).hexdigest() - requests_dict = { - "api_key": api_key, - "method": "track.scrobble", - "artist[0]": self._currentArtist, - "track[0]": self._currentTitle, - "timestamp[0]": self._currentTimestamp, - "sk": sk, - "api_sig": api_sig - } - try: - r = requests.post("https://ws.audioscrobbler.com/2.0/", requests_dict) - if r.status_code != 200: - logger.warn("Failed to scrobble track: %s %s" % (r.status_code, r.reason)) - logger.warn(r.text) - except Exception as e: - logger.warn(e) - - @log - def update_now_playing_in_lastfm(self, url): - if self.last_fm: - api_key = self.last_fm.props.client_id - sk = self.last_fm.call_get_access_token_sync(None)[0] - secret = self.last_fm.props.client_secret - - sig = "api_key%sartist%smethodtrack.updateNowPlayingsk%strack%s%s" % \ - (api_key, self._currentArtist, sk, self._currentTitle, secret) - - api_sig = md5(sig.encode()).hexdigest() - request_dict = { - "api_key": api_key, - "method": "track.updateNowPlaying", - "artist": self._currentArtist, - "track": self._currentTitle, - "sk": sk, - "api_sig": api_sig - } - try: - r = requests.post("https://ws.audioscrobbler.com/2.0/", request_dict) - if r.status_code != 200: - logger.warn("Failed to update currently played track: %s %s" % (r.status_code, r.reason)) - logger.warn(r.text) - except Exception as e: - logger.warn(e) - def _update_position_callback(self): position = self.player.query_position(Gst.Format.TIME)[1] / 1000000000 if position > 0: @@ -1017,6 +938,7 @@ class Player(GObject.GObject): self._update_timeout() return False + @log def _update_seconds_callback(self): self._on_progress_value_changed(None) @@ -1025,16 +947,18 @@ class Player(GObject.GObject): self.played_seconds += self.seconds_period / 1000 try: percentage = self.played_seconds / self.duration - if not self.scrobbled and percentage > 0.4: + if (not self._lastfm.scrobbled + and percentage > 0.4): current_media = self.get_current_media() - self.scrobbled = True if current_media: - grilo.bump_play_count(self.get_current_media()) + # FIXME: we should not need to update static + # playlists here but removing it may introduce + # a bug. So, we keep it for the time being. + playlists.update_all_static_playlists() + grilo.bump_play_count(current_media) grilo.set_last_played(current_media) - just_played_url = self.get_current_media().get_url() - t = Thread(target=self.scrobble_song, args=(just_played_url,)) - t.setDaemon(True) - t.start() + self._lastfm.scrobble(current_media, self._time_stamp) + except Exception as e: logger.warn("Error: %s, %s", e.__class__, e) return True @@ -1158,13 +1082,10 @@ class MissingCodecsDialog(Gtk.MessageDialog): @log def __init__(self, parent_window, install_helper_name): - Gtk.MessageDialog.__init__(self, - transient_for=parent_window, - modal=True, - destroy_with_parent=True, - message_type=Gtk.MessageType.ERROR, - buttons=Gtk.ButtonsType.CANCEL, - text=_("Unable to play the file")) + super().__init__( + transient_for=parent_window, modal=True, destroy_with_parent=True, + message_type=Gtk.MessageType.ERROR, buttons=Gtk.ButtonsType.CANCEL, + text=_("Unable to play the file")) # TRANSLATORS: this is a button to launch a codec installer. # %s will be replaced with the software installer's name, e.g. diff --git a/gnomemusic/playlists.py b/gnomemusic/playlists.py index 7d2ed699106b510405171ece5ced74e7b394a710..ed327177beb912de2f8468c52dcc6d50f9a96048 100644 --- a/gnomemusic/playlists.py +++ b/gnomemusic/playlists.py @@ -32,7 +32,6 @@ from gnomemusic.grilo import grilo from gnomemusic.query import Query from gettext import gettext as _ import inspect -import time sparql_dateTime_format = "%Y-%m-%dT%H:%M:%SZ" from gnomemusic import log @@ -107,10 +106,20 @@ class StaticPlaylists: class Playlists(GObject.GObject): + __gsignals__ = { - 'playlist-created': (GObject.SignalFlags.RUN_FIRST, None, (Grl.Media,)), - 'playlist-deleted': (GObject.SignalFlags.RUN_FIRST, None, (Grl.Media,)), - 'playlist-updated': (GObject.SignalFlags.RUN_FIRST, None, (int,)), + 'playlist-created': ( + GObject.SignalFlags.RUN_FIRST, None, (Grl.Media,) + ), + 'playlist-deleted': ( + GObject.SignalFlags.RUN_FIRST, None, (Grl.Media,) + ), + 'playlist-updated': ( + GObject.SignalFlags.RUN_FIRST, None, (int,) + ), + 'playlist-renamed': ( + GObject.SignalFlags.RUN_FIRST, None, (Grl.Media,) + ), 'song-added-to-playlist': ( GObject.SignalFlags.RUN_FIRST, None, (Grl.Media, Grl.Media) ), @@ -118,6 +127,7 @@ class Playlists(GObject.GObject): GObject.SignalFlags.RUN_FIRST, None, (Grl.Media, Grl.Media) ), } + instance = None tracker = None @@ -134,7 +144,8 @@ class Playlists(GObject.GObject): @log def __init__(self): - GObject.GObject.__init__(self) + super().__init__() + self.tracker = TrackerWrapper().tracker self._static_playlists = StaticPlaylists() @@ -142,7 +153,8 @@ class Playlists(GObject.GObject): @log def _on_grilo_ready(self, data=None): - """For all static playlists: get ID, if exists; if not, create the playlist and get ID.""" + """For all static playlists: get ID, if exists; if not, create + the playlist and get ID.""" def playlist_id_fetched_cb(cursor, res, playlist): """ Called after the playlist id is fetched """ @@ -215,20 +227,22 @@ class Playlists(GObject.GObject): """ Called when the static playlist is created """ data = obj.update_blank_finish(res) playlist_urn = data.get_child_value(0).get_child_value(0).\ - get_child_value(0).get_child_value(1).get_string() + get_child_value(0).get_child_value(1).get_string() query = Query.get_playlist_with_urn(playlist_urn) # Start fetching the playlist - self.tracker.query_async(query, None, playlist_queried_cb, playlist) + self.tracker.query_async( + query, None, playlist_queried_cb, playlist) def tag_created_cb(obj, res, playlist): """ Called when the tag is created """ creation_query = Query.create_playlist_with_tag(title, tag_text) # Start creating the playlist itself - self.tracker.update_blank_async(creation_query, GLib.PRIORITY_LOW, - None, playlist_created_cb, playlist) + self.tracker.update_blank_async( + creation_query, GLib.PRIORITY_LOW, None, playlist_created_cb, + playlist) # Start the playlist creation by creating the tag self.tracker.update_blank_async(Query.create_tag(tag_text), @@ -237,7 +251,8 @@ class Playlists(GObject.GObject): @log def update_static_playlist(self, playlist): - """Given a static playlist (subclass of StaticPlaylists), updates according to its query.""" + """Given a static playlist (subclass of StaticPlaylists), + updates according to its query.""" # Clear the playlist self.clear_playlist(playlist) @@ -304,7 +319,7 @@ class Playlists(GObject.GObject): def cursor_callback(cursor, res, data): try: - has_next = cursor.next_finish(res) + cursor.next_finish(res) except GLib.Error as err: logger.warn("Error: %s, %s", err.__class__, err) return @@ -336,6 +351,25 @@ class Playlists(GObject.GObject): None, update_callback, None ) + @log + def rename(self, item, new_name): + """Rename a playlist + + :param item: playlist to rename + :param new_name: new playlist name + :type item: Grl.Media + :type new_name: str + :return: None + :rtype: None + """ + def update_callback(conn, res, data): + conn.update_finish(res) + self.emit('playlist-renamed', item) + + self.tracker.update_async( + Query.rename_playlist(item.get_id(), new_name), GLib.PRIORITY_LOW, + None, update_callback, None) + @log def delete_playlist(self, item): def update_callback(conn, res, data): diff --git a/gnomemusic/query.py b/gnomemusic/query.py index 2c9272169714f959f6c0c20dcf8a35d2e48034c0..c4ff40c09c7aa3f26911e5467f4255c9c6eb4ab0 100644 --- a/gnomemusic/query.py +++ b/gnomemusic/query.py @@ -25,7 +25,6 @@ # 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 gettext import gettext as _ from gi.repository import GLib, Tracker from gnomemusic import log import os @@ -38,6 +37,7 @@ sparql_midnight_dateTime_format = "%Y-%m-%dT00:00:00Z" SECONDS_PER_DAY = 86400 PUNCTUATION_FILTER = " !\\\"#$%&'()*+,-./:;<=>?@[\\\\]^_`{|}~" + class Query(): music_folder = None @@ -73,7 +73,7 @@ class Query(): :return: The sparql order by statement :rtype: str """ - return """tracker:title-order(%(attr)s)""" % { 'attr': attr }; + return """tracker:title-order(%(attr)s)""" % {'attr': attr}; @staticmethod def all_albums(): @@ -237,7 +237,7 @@ class Query(): || !BOUND(nfo:belongsToContainer(?playlist)) ) OPTIONAL { ?playlist nao:hasTag ?tag } } - ORDER BY !BOUND(?tag) LCASE(?title) + ORDER BY DESC(tracker:added(?playlist)) !BOUND(?tag) LCASE(?title) """.replace('\n', ' ').strip() % { 'where_clause': where_clause.replace('\n', ' ').strip(), 'music_dir': Query.MUSIC_URI @@ -472,6 +472,31 @@ class Query(): } return query + @staticmethod + def rename_playlist(playlist_id, new_name): + query = """ + INSERT OR REPLACE { + ?playlist + nie:title "%(title)s" + } + WHERE { + ?playlist + a nmm:Playlist ; + a nfo:MediaList . + OPTIONAL { + ?playlist + nfo:hasMediaFileListEntry ?entry . + } + FILTER ( + tracker:id(?playlist) = %(playlist_id)s + ) + } + """.replace("\n", " ").strip() % { + 'title': new_name, + 'playlist_id': playlist_id + } + return query + @staticmethod def add_song_to_playlist(playlist_id, song_uri): query = """ @@ -989,7 +1014,7 @@ class Query(): FILTER ( tracker:id(?urn) = "%(media_id)s" ) } """.replace('\n', '').strip() % { - 'media_id' : media_id + 'media_id': media_id } return query diff --git a/gnomemusic/scrobbler.py b/gnomemusic/scrobbler.py new file mode 100644 index 0000000000000000000000000000000000000000..ce11f25012a85bab15c549f3f68de2555b74e450 --- /dev/null +++ b/gnomemusic/scrobbler.py @@ -0,0 +1,198 @@ +# 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 hashlib import md5 +from threading import Thread +import logging +import requests + +import gi +from gi.repository import GObject + +from gnomemusic import log +import gnomemusic.utils as utils + + +logger = logging.getLogger(__name__) + + +class LastFmScrobbler(GObject.GObject): + """Scrobble songs to Last.fm""" + + def __repr__(self): + return '' + + @log + def __init__(self): + super().__init__() + + self._scrobbled = False + self._authentication = None + self._connect() + + @GObject.Property(type=bool, default=False) + def scrobbled(self): + """Bool indicating current scrobble status""" + return self._scrobbled + + @scrobbled.setter + def scrobbled(self, scrobbled): + self._scrobbled = scrobbled + + def _connect(self): + """Connect to Last.fm using gnome-online-accounts""" + try: + gi.require_version('Goa', '1.0') + from gi.repository import Goa + client = Goa.Client.new_sync(None) + accounts = client.get_accounts() + + for obj in accounts: + account = obj.get_account() + if account.props.provider_name == "Last.fm": + self._authentication = obj.get_oauth2_based() + return + except Exception as e: + logger.info("Error reading Last.fm credentials: %s" % str(e)) + + @log + def _scrobble(self, media, time_stamp): + """Internal method called by self.scrobble""" + if self._authentication is None: + return + + api_key = self._authentication.props.client_id + sk = self._authentication.call_get_access_token_sync(None)[0] + secret = self._authentication.props.client_secret + + artist = utils.get_artist_name(media) + title = utils.get_media_title(media) + + # The album is optional. So only provide it when it is + # available. + album = media.get_title() + + request_dict = {} + if album: + sig = "album[0]{}".format(album) + request_dict.update({ + "album[0]": album + }) + + sig += ("api_key{}artist[0]{}methodtrack.scrobblesk{}" + "timestamp[0]{}track[0]{}{}").format( + api_key, artist, sk, time_stamp, title, secret) + + api_sig = md5(sig.encode()).hexdigest() + request_dict.update({ + "api_key": api_key, + "method": "track.scrobble", + "artist[0]": artist, + "track[0]": title, + "timestamp[0]": time_stamp, + "sk": sk, + "api_sig": api_sig + }) + + try: + r = requests.post( + "https://ws.audioscrobbler.com/2.0/", request_dict) + if r.status_code != 200: + logger.warn( + "Failed to scrobble track: %s %s" % + (r.status_code, r.reason)) + logger.warn(r.text) + except Exception as e: + logger.warn(e) + + @log + def scrobble(self, media, time_stamp): + """Scrobble a song to Last.fm. + + If not connected to Last.fm nothing happens + Creates a new thread to make the request + + :param media: Grilo media item + :param time_stamp: song loaded time (epoch time) + """ + self.scrobbled = True + + if self._authentication is None: + return + + t = Thread(target=self._scrobble, args=(media, time_stamp)) + t.setDaemon(True) + t.start() + + @log + def _now_playing(self, media): + """Internal method called by self.now_playing""" + api_key = self._authentication.props.client_id + sk = self._authentication.call_get_access_token_sync(None)[0] + secret = self._authentication.props.client_secret + + artist = utils.get_artist_name(media) + title = utils.get_media_title(media) + + sig = ("api_key{}artist{}methodtrack.updateNowPlayingsk{}track" + "{}{}").format(api_key, artist, sk, title, secret) + + api_sig = md5(sig.encode()).hexdigest() + request_dict = { + "api_key": api_key, + "method": "track.updateNowPlaying", + "artist": artist, + "track": title, + "sk": sk, + "api_sig": api_sig + } + + try: + r = requests.post( + "https://ws.audioscrobbler.com/2.0/", request_dict) + if r.status_code != 200: + logger.warn( + "Failed to update currently played track: %s %s" % + (r.status_code, r.reason)) + logger.warn(r.text) + except Exception as e: + logger.warn(e) + + @log + def now_playing(self, media): + """Set now playing song to Last.fm + + If not connected to Last.fm nothing happens + Creates a new thread to make the request + + :param media: Grilo media item + """ + self.scrobbled = False + + if self._authentication is None: + return + + t = Thread(target=self._now_playing, args=(media,)) + t.setDaemon(True) + t.start() diff --git a/gnomemusic/searchbar.py b/gnomemusic/searchbar.py index efe68549e92791a076affc2460bbe51f194c4145..566c18fcac94cdc79f807c6d527bb9faebf5d2b0 100644 --- a/gnomemusic/searchbar.py +++ b/gnomemusic/searchbar.py @@ -24,42 +24,43 @@ # 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 _ + import gi gi.require_version('Gd', '1.0') -from gi.repository import Gtk, Gd, GObject, Pango, GLib -from gettext import gettext as _ -from gnomemusic.grilo import grilo +from gi.repository import Gd, GLib, GObject, Gtk, Pango + from gnomemusic import log -import logging -logger = logging.getLogger(__name__) +from gnomemusic.grilo import grilo -class BaseModelColumns(): +class BaseModelColumns(IntEnum): ID = 0 NAME = 1 HEADING_TEXT = 2 -class BaseManager: +class BaseManager(object): def __repr__(self): return '' @log - def __init__(self, id, label, entry): - self.id = id - self.label = label + def __init__(self, id_, label, entry): + self._id = id_ + self._label = label self.entry = entry - self.tag = Gd.TaggedEntryTag() - self.tag.set_style('music-entry-tag') - self.tag.manager = self + self._tag = Gd.TaggedEntryTag() + self._tag.manager = self self.values = [] @log def fill_in_values(self, model): - if self.id == "search": + if self._id == "search": self.values = [ - ['', '', self.label], + ['', '', self._label], ['search_all', _("All"), ''], ['search_artist', _("Artist"), ''], ['search_album', _("Album"), ''], @@ -67,36 +68,37 @@ class BaseManager: ['search_track', _("Track Title"), ''], ] for value in self.values: - _iter = model.append() - model.set(_iter, [0, 1, 2], value) + iter_ = model.append() + model[iter_][0, 1, 2] = value self.selected_id = self.values[1][BaseModelColumns.ID] + @property @log - def get_active(self): + def active(self): return self.selected_id + @active.setter @log - def set_active(self, selected_id): + def active(self, selected_id): if selected_id == "": return - selected_value = [x for x in self.values if x[BaseModelColumns.ID] == selected_id] + selected_value = [ + x for x in self.values if x[BaseModelColumns.ID] == selected_id] + if selected_value != []: selected_value = selected_value[0] self.selected_id = selected_value[BaseModelColumns.ID] - # If selected values has first entry then it is a default value - # No need to set the tag there - if (selected_value[BaseModelColumns.ID] != 'search_all' and - selected_value[BaseModelColumns.ID] != 'grl-tracker-source'): - self.tag.set_label(selected_value[BaseModelColumns.NAME]) - self.entry.add_tag(self.tag) + # If selected values has first entry then it is a default + # value. No need to set the tag there. + value_id = selected_value[BaseModelColumns.ID] + if (value_id != 'search_all' + and value_id != 'grl-tracker-source'): + self._tag.set_label(selected_value[BaseModelColumns.NAME]) + self.entry.add_tag(self._tag) else: - self.entry.remove_tag(self.tag) - - @log - def reset_to_default(self): - self.set_active(self.values[0][BaseModelColumns.ID]) + self.entry.remove_tag(self._tag) class SourceManager(BaseManager): @@ -105,100 +107,127 @@ class SourceManager(BaseManager): return '' @log - def __init__(self, id, label, entry): - super(SourceManager, self).__init__(id, label, entry) - self.values.append(['', '', self.label]) + def __init__(self, id_, label, entry): + super().__init__(id_, label, entry) + + self.values.append(['', '', self._label]) self.values.append(['all', _("All"), ""]) self.values.append(['grl-tracker-source', _("Local"), '']) @log def fill_in_values(self, model): - self.model = model - super(SourceManager, self).fill_in_values(model) + self._model = model + + super().fill_in_values(model) - super(SourceManager, self).set_active('grl-tracker-source') + # FIXME: This call should be to this class and not the super + # class. + super(SourceManager, self.__class__).active.fset( + self, 'grl-tracker-source') @log def add_new_source(self, klass, source): value = [source.get_id(), source.get_name(), ''] - _iter = self.model.append() - self.model.set(_iter, [0, 1, 2], value) + iter_ = self._model.append() + self._model[iter_][0, 1, 2] = value self.values.append(value) + @property @log - def set_active(self, selected_id): + def active(self): + return super().active + + @active.setter + @log + def active(self, selected_id): if selected_id == "": return - super(SourceManager, self).set_active(selected_id) + # https://gitlab.gnome.org/GNOME/gnome-music/snippets/31 + super(SourceManager, self.__class__).active.fset(self, selected_id) + src = grilo.sources[selected_id] if selected_id != 'all' else None grilo.search_source = src -class FilterView(): +class FilterView(object): def __repr__(self): return '' @log def __init__(self, manager, dropdown): - self.manager = manager - self.dropdown = dropdown - self.model = Gtk.ListStore.new([ + self._manager = manager + self._dropdown = dropdown + + self._model = Gtk.ListStore.new([ GObject.TYPE_STRING, # ID GObject.TYPE_STRING, # NAME GObject.TYPE_STRING, # TEXT ]) - self.manager.fill_in_values(self.model) + + self._manager.fill_in_values(self._model) self.view = Gtk.TreeView() self.view.set_activate_on_single_click(True) self.view.set_headers_visible(False) self.view.set_enable_search(False) - self.view.set_model(self.model) + self.view.set_model(self._model) self.view.get_selection().set_mode(Gtk.SelectionMode.NONE) self.view.connect("row-activated", self._row_activated) col = Gtk.TreeViewColumn() self.view.append_column(col) - self._rendererHeading = Gtk.CellRendererText(weight=Pango.Weight.BOLD, weight_set=True) - col.pack_start(self._rendererHeading, False) - col.add_attribute(self._rendererHeading, 'text', BaseModelColumns.HEADING_TEXT) - col.set_cell_data_func(self._rendererHeading, self._visibilityForHeading, True) - - self._rendererRadio = Gtk.CellRendererToggle(radio=True, mode=Gtk.CellRendererMode.INERT) - col.pack_start(self._rendererRadio, False) - col.set_cell_data_func(self._rendererRadio, self._visibilityForHeading, [False, self._render_radio]) - - self._rendererText = Gtk.CellRendererText() - col.pack_start(self._rendererText, True) - col.add_attribute(self._rendererText, 'text', BaseModelColumns.NAME) - col.set_cell_data_func(self._rendererText, self._visibilityForHeading, False) + self._head_renderer = Gtk.CellRendererText( + weight=Pango.Weight.BOLD, weight_set=True) + col.pack_start(self._head_renderer, False) + col.add_attribute( + self._head_renderer, 'text', BaseModelColumns.HEADING_TEXT) + col.set_cell_data_func( + self._head_renderer, self._head_visible, True) + + self._radio_renderer = Gtk.CellRendererToggle( + radio=True, mode=Gtk.CellRendererMode.INERT) + col.pack_start(self._radio_renderer, False) + col.set_cell_data_func( + self._radio_renderer, self._head_visible, + [False, self._render_radio]) + + self._text_renderer = Gtk.CellRendererText() + col.pack_start(self._text_renderer, True) + col.add_attribute(self._text_renderer, 'text', BaseModelColumns.NAME) + col.set_cell_data_func( + self._text_renderer, self._head_visible, False) self.view.show() @log def _row_activated(self, view, path, col): - id = self.model.get_value(self.model.get_iter(path), BaseModelColumns.ID) - self.dropdown.do_select(self.manager, id) - self.manager.entry.emit('changed') + id_ = self._model[self._model.get_iter(path)][BaseModelColumns.ID] + self._dropdown.do_select(self._manager, id_) + self._manager.entry.emit('changed') @log - def _render_radio(self, col, cell, model, _iter): - id = model.get_value(_iter, BaseModelColumns.ID) - cell.set_active(self.manager.get_active() == id) + def _render_radio(self, col, cell, model, iter_): + id_ = model[iter_][BaseModelColumns.ID] + cell.set_active(self._manager.active == id_) + @classmethod @log - def _visibilityForHeading(self, col, cell, model, _iter, additional_arguments): - additionalFunc = None + def _head_visible(cls, col, cell, model, _iter, additional_arguments): + additional_func = None visible = additional_arguments + if isinstance(additional_arguments, list): visible = additional_arguments[0] - additionalFunc = additional_arguments[1] - cell.set_visible(visible == (model[_iter][BaseModelColumns.HEADING_TEXT] != "")) - if additionalFunc: - additionalFunc(col, cell, model, _iter) + additional_func = additional_arguments[1] + + cell.set_visible( + visible == (model[_iter][BaseModelColumns.HEADING_TEXT] != "")) + + if additional_func: + additional_func(col, cell, model, _iter) class DropDown(Gtk.Revealer): @@ -208,7 +237,11 @@ class DropDown(Gtk.Revealer): @log def __init__(self): - Gtk.Revealer.__init__(self, halign=Gtk.Align.CENTER, valign=Gtk.Align.START) + super().__init__(halign=Gtk.Align.CENTER, valign=Gtk.Align.START) + + self._source_manager = None + self.search_manager = None + self._search_filter = None self._grid = Gtk.Grid(orientation=Gtk.Orientation.HORIZONTAL) @@ -221,28 +254,30 @@ class DropDown(Gtk.Revealer): @log def initialize_filters(self, searchbar): - self.sourcesManager = SourceManager('source', _("Sources"), searchbar._search_entry) - self.sourcesFilter = FilterView(self.sourcesManager, self) - self._grid.add(self.sourcesFilter.view) + self._source_manager = SourceManager( + 'source', _("Sources"), searchbar._search_entry) + _source_filter = FilterView(self._source_manager, self) + self._grid.add(_source_filter.view) - grilo.connect('new-source-added', self.sourcesManager.add_new_source) + grilo.connect('new-source-added', self._source_manager.add_new_source) grilo._find_sources() - self.searchFieldsManager = BaseManager('search', _("Match"), searchbar._search_entry) - self.searchFieldsFilter = FilterView(self.searchFieldsManager, self) - self._grid.add(self.searchFieldsFilter.view) + self.search_manager = BaseManager( + 'search', _("Match"), searchbar._search_entry) + self._search_filter = FilterView(self.search_manager, self) + self._grid.add(self._search_filter.view) self._grid.show_all() - self.searchFieldsFilter.view.set_sensitive( - self.sourcesManager.get_active() == 'grl-tracker-source' + self._search_filter.view.set_sensitive( + self._source_manager.active == 'grl-tracker-source' ) @log - def do_select(self, manager, id): - manager.set_active(id) - if manager == self.sourcesManager: - self.searchFieldsFilter.view.set_sensitive(id == 'grl-tracker-source') + def do_select(self, manager, id_): + manager.active = id_ + if manager == self._source_manager: + self._search_filter.view.set_sensitive(id == 'grl-tracker-source') class Searchbar(Gtk.SearchBar): @@ -252,71 +287,77 @@ class Searchbar(Gtk.SearchBar): @log def __init__(self, stack_switcher, search_button, dropdown): - Gtk.Revealer.__init__(self) - self.timeout = None - self.stack_switcher = stack_switcher - self._search_button = search_button - self.dropdown = dropdown - self._searchContainer = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, halign=Gtk.Align.CENTER) - self._searchContainer.get_style_context().add_class('linked') + super().__init__() - self._search_entry = Gd.TaggedEntry(width_request=500, halign=Gtk.Align.CENTER) - self._search_entry.connect("changed", self.search_entry_timeout) + self._timeout = None + self._stack_switcher = stack_switcher + self._search_button = search_button + self._dropdown = dropdown + self._search_box = Gtk.Box( + orientation=Gtk.Orientation.HORIZONTAL, halign=Gtk.Align.CENTER) + self._search_box.get_style_context().add_class('linked') + + self._search_entry = Gd.TaggedEntry( + width_request=500, halign=Gtk.Align.CENTER) + self._search_entry.connect("changed", self._search_entry_timeout) self._search_entry.show() - self._searchContainer.add(self._search_entry) + self._search_box.add(self._search_entry) - arrow = Gtk.Image.new_from_icon_name('pan-down-symbolic', - Gtk.IconSize.BUTTON) - self._dropDownButton = Gtk.ToggleButton() - self._dropDownButton.add(arrow) - self._dropDownButton.get_style_context().add_class('image-button') - self._dropDownButton.connect("toggled", self._drop_down_button_toggled) - self._dropDownButton.show_all() - self._searchContainer.add(self._dropDownButton) + arrow = Gtk.Image.new_from_icon_name( + 'pan-down-symbolic', Gtk.IconSize.BUTTON) + self._drop_down_button = Gtk.ToggleButton() + self._drop_down_button.add(arrow) + self._drop_down_button.get_style_context().add_class('image-button') + self._drop_down_button.connect( + "toggled", self._drop_down_button_toggled) + self._drop_down_button.show_all() + self._search_box.add(self._drop_down_button) - self._search_entry.connect("tag-button-clicked", self._search_entry_tag_button_clicked) + self._search_entry.connect( + "tag-button-clicked", self._tag_button_clicked) - self._searchContainer.show_all() - self.add(self._searchContainer) + self._search_box.show_all() + self.add(self._search_box) @log def _drop_down_button_toggled(self, *args): - self.dropdown.set_reveal_child(self._dropDownButton.get_active()) + self._dropdown.set_reveal_child(self._drop_down_button.get_active()) @log - def _search_entry_tag_button_clicked(self, entry, tag): - tag.manager.set_active(tag.manager.values[1][BaseModelColumns.ID]) - self.search_entry_changed(None) + def _tag_button_clicked(self, entry, tag_): + tag_.manager.active = tag_.manager.values[1][BaseModelColumns.ID] + self._search_entry_changed(None) @log - 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_timeout(self, widget): + if self._timeout: + GLib.source_remove(self._timeout) + self._timeout = GLib.timeout_add( + 500, self._search_entry_changed, widget) @log - def search_entry_changed(self, widget): - self.timeout = None + def _search_entry_changed(self, widget): + self._timeout = None search_term = self._search_entry.get_text() if grilo.search_source: - fields_filter = self.dropdown.searchFieldsManager.get_active() + fields_filter = self._dropdown.search_manager.active else: fields_filter = 'search_all' - stack = self.stack_switcher.get_stack() + stack = self._stack_switcher.get_stack() if search_term != "": stack.set_visible_child_name('search') view = stack.get_visible_child() view.set_search_text(search_term, fields_filter) - self._dropDownButton.set_active(False) - self.dropdown.set_reveal_child(False) + self._drop_down_button.set_active(False) + self._dropdown.set_reveal_child(False) return False @log - def show_bar(self, show, clear=True): + def reveal(self, show, clear=True): self.set_search_mode(show) self._search_button.set_active(show) @@ -326,8 +367,8 @@ class Searchbar(Gtk.SearchBar): self._search_entry.set_text('') self._search_entry.grab_focus() else: - self._dropDownButton.set_active(False) + self._drop_down_button.set_active(False) @log - def toggle_bar(self): - self.show_bar(not self.get_search_mode()) + def toggle(self): + self.reveal(not self.get_search_mode()) diff --git a/gnomemusic/toolbar.py b/gnomemusic/toolbar.py index 35a44322892eb93418139785ed820462684a53b0..3861f36a723a1aedc5e741cd210093fe69cc5940 100644 --- a/gnomemusic/toolbar.py +++ b/gnomemusic/toolbar.py @@ -27,15 +27,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, GObject - from gettext import gettext as _ -from gnomemusic.searchbar import Searchbar, DropDown +from gi.repository import GObject, Gtk from gnomemusic import log -import logging -logger = logging.getLogger(__name__) +from gnomemusic.searchbar import Searchbar, DropDown +from gnomemusic.utils import View class ToolbarState: @@ -56,7 +53,8 @@ class Toolbar(GObject.GObject): @log def __init__(self): - GObject.GObject.__init__(self) + super().__init__() + self._stack_switcher = Gtk.StackSwitcher(can_focus=False, halign="center") self._stack_switcher.show() @@ -65,14 +63,17 @@ class Toolbar(GObject.GObject): self.header_bar = self._ui.get_object('header-bar') self._search_button = self._ui.get_object('search-button') self.dropdown = DropDown() - self.searchbar = Searchbar(self._stack_switcher, self._search_button, self.dropdown) + self.searchbar = Searchbar( + self._stack_switcher, self._search_button, self.dropdown) self.dropdown.initialize_filters(self.searchbar) self._select_button = self._ui.get_object('select-button') self._cancel_button = self._ui.get_object('done-button') self._back_button = self._ui.get_object('back-button') self._selection_menu = self._ui.get_object('selection-menu') - self._selection_menu_button = self._ui.get_object('selection-menu-button') - self._selection_menu_label = self._ui.get_object('selection-menu-button-label') + self._selection_menu_button = self._ui.get_object( + 'selection-menu-button') + self._selection_menu_label = self._ui.get_object( + 'selection-menu-button-label') self._selection_menu_button.set_relief(Gtk.ReliefStyle.NONE) if Gtk.get_minor_version() >= 11: self.header_bar.remove(self._select_button) @@ -113,7 +114,8 @@ class Toolbar(GObject.GObject): self._select_button.hide() self._cancel_button.show() self.header_bar.get_style_context().add_class('selection-mode') - self._cancel_button.get_style_context().remove_class('selection-mode') + self._cancel_button.get_style_context().remove_class( + 'selection-mode') else: self.header_bar.get_style_context().remove_class('selection-mode') self._select_button.set_active(False) @@ -123,21 +125,22 @@ class Toolbar(GObject.GObject): self._update() @log - def on_back_button_clicked(self, widget): + def on_back_button_clicked(self, widget=None): self._window = self.header_bar.get_parent() visible_child = self._window.curr_view.get_visible_child() view = self._stack_switcher.get_stack().get_visible_child() view._back_button_clicked(view) - if not ((self._window.curr_view == self._window.views[4] or - self._window.curr_view == self._window.views[5]) and - visible_child != self._window.curr_view._grid): + current_view = self._window.curr_view + if not ((current_view == self._window.views[View.SEARCH] + or current_view == self._window.views[View.EMPTY_SEARCH]) + and visible_child != current_view._grid): self.set_state(ToolbarState.MAIN) else: self._search_button.set_visible(True) - self.searchbar.show_bar(False) + self.searchbar.reveal(False) @log def set_state(self, state, btn=None): @@ -153,6 +156,8 @@ class Toolbar(GObject.GObject): else: self.reset_header_title() - self._search_button.set_visible(self._state != ToolbarState.SEARCH_VIEW) - self._back_button.set_visible(not self._selectionMode and self._state != ToolbarState.MAIN) + self._search_button.set_visible( + self._state != ToolbarState.SEARCH_VIEW) + self._back_button.set_visible( + not self._selectionMode and self._state != ToolbarState.MAIN) self.header_bar.set_show_close_button(not self._selectionMode) diff --git a/gnomemusic/utils.py b/gnomemusic/utils.py index 5e0152af511c36abff5db953fa4e4c6234c66ee9..603685e97dfb6bba4751b95ae0aa4e87baf172c3 100644 --- a/gnomemusic/utils.py +++ b/gnomemusic/utils.py @@ -22,9 +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 enum import IntEnum + from gettext import gettext as _ +class View(IntEnum): + """Enum for views""" + ALBUM = 0 + ARTIST = 1 + SONG = 2 + PLAYLIST = 3 + SEARCH = 4 + EMPTY_SEARCH = 5 + + def get_album_title(item): """Returns the album title associated with the media item diff --git a/gnomemusic/views/albumsview.py b/gnomemusic/views/albumsview.py index 96e71564fe04bb1e9b3c39a0ba43ffe65d061f4c..bdd83a711a4ee9a8f8056b3d37a927af945719c5 100644 --- a/gnomemusic/views/albumsview.py +++ b/gnomemusic/views/albumsview.py @@ -41,10 +41,10 @@ class AlbumsView(BaseView): @log def __init__(self, window, player): - BaseView.__init__(self, 'albums', _("Albums"), window, None) - self._albumWidget = AlbumWidget(player, self) + super().__init__('albums', _("Albums"), window, None) + self._album_widget = AlbumWidget(player, self) self.player = player - self.add(self._albumWidget) + self.add(self._album_widget) self.albums_selected = [] self.all_items = [] self.items_selected = [] @@ -67,16 +67,11 @@ class AlbumsView(BaseView): @log def _setup_view(self, view_type): - self._view = Gtk.FlowBox(homogeneous=True, - hexpand=True, - halign=Gtk.Align.FILL, - valign=Gtk.Align.START, - selection_mode=Gtk.SelectionMode.NONE, - margin=18, - row_spacing=12, - column_spacing=6, - min_children_per_line=1, - max_children_per_line=25) + self._view = Gtk.FlowBox( + homogeneous=True, hexpand=True, halign=Gtk.Align.FILL, + valign=Gtk.Align.START, selection_mode=Gtk.SelectionMode.NONE, + margin=18, row_spacing=12, column_spacing=6, + min_children_per_line=1, max_children_per_line=25) self._view.connect('child-activated', self._on_child_activated) @@ -108,13 +103,14 @@ class AlbumsView(BaseView): self._escaped_title = title self._artist = utils.get_artist_name(item) - self._albumWidget.update(self._artist, title, item, - self._header_bar, self._selection_toolbar) + self._album_widget.update( + self._artist, title, item, self._header_bar, + self._selection_toolbar) self._header_bar.set_state(ToolbarState.CHILD_VIEW) self._header_bar.header_bar.set_title(self._escaped_title) self._header_bar.header_bar.sub_title = self._artist - self.set_visible_child(self._albumWidget) + self.set_visible_child(self._album_widget) @log def update_title(self): @@ -131,7 +127,7 @@ class AlbumsView(BaseView): # FIXME: we call into private objects with full knowledge of # what is there if self._header_bar._state == ToolbarState.CHILD_VIEW: - callback(self._albumWidget._disc_listbox.get_selected_items()) + callback(self._album_widget._disc_listbox.get_selected_items()) else: self.items_selected = [] self.items_selected_callback = callback @@ -156,7 +152,8 @@ class AlbumsView(BaseView): artist = utils.get_artist_name(item) title = utils.get_media_title(item) - builder = Gtk.Builder.new_from_resource('/org/gnome/Music/AlbumCover.ui') + builder = Gtk.Builder.new_from_resource( + '/org/gnome/Music/AlbumCover.ui') child = Gtk.FlowBoxChild() child.image = builder.get_object('image') @@ -173,8 +170,8 @@ class AlbumsView(BaseView): # In the case of off-sized icons (eg. provided in the soundfile) # keep the size request equal to all other icons to get proper # alignment with GtkFlowBox. - child.image.set_property("width-request", ArtSize.medium.width) - child.image.set_property("height-request", ArtSize.medium.height) + child.image.set_property("width-request", ArtSize.MEDIUM.width) + child.image.set_property("height-request", ArtSize.MEDIUM.height) child.events.add_events(Gdk.EventMask.TOUCH_MASK) @@ -192,7 +189,7 @@ class AlbumsView(BaseView): child.add(builder.get_object('main_box')) child.show() - self._cache.lookup(item, ArtSize.medium, self._on_lookup_ready, child) + self._cache.lookup(item, ArtSize.MEDIUM, self._on_lookup_ready, child) return child @@ -208,9 +205,11 @@ class AlbumsView(BaseView): @log def _on_child_toggled(self, check, pspec, child): - if check.get_active() and not child.media_item in self.albums_selected: + if (check.get_active() + and child.media_item not in self.albums_selected): self.albums_selected.append(child.media_item) - elif not check.get_active() and child.media_item in self.albums_selected: + elif (not check.get_active() + and child.media_item in self.albums_selected): self.albums_selected.remove(child.media_item) self.update_header_from_selection(len(self.albums_selected)) diff --git a/gnomemusic/views/artistsview.py b/gnomemusic/views/artistsview.py index a9781a29524e53b12e9cb61ef26bb4297a97d6c2..2154fd8421eef56d345fc5146f91759b5d936a00 100644 --- a/gnomemusic/views/artistsview.py +++ b/gnomemusic/views/artistsview.py @@ -52,8 +52,8 @@ class ArtistsView(BaseView): :param GtkWidget window: The main window :param player: The main player object """ - BaseView.__init__(self, 'artists', _("Artists"), window, - Gd.MainViewType.LIST, True) + super().__init__( + 'artists', _("Artists"), window, Gd.MainViewType.LIST, True) self.player = player self._artists = {} @@ -130,8 +130,8 @@ class ArtistsView(BaseView): widget = self._artists[artist.casefold()]['widget'] if widget: - artist_widget_model = self.player.running_playlist('Artist', - widget.artist) + artist_widget_model = self.player.running_playlist( + 'Artist', widget.artist) artist_stack = self._artist_albums_stack # FIXME: calling to private model if widget._model == artist_widget_model: @@ -149,9 +149,9 @@ class ArtistsView(BaseView): hexpand=True) self._artist_albums_stack.add(new_artist_albums_widget) - artist_albums = ArtistAlbumsWidget(artist, albums, self.player, - self._header_bar, - self._selection_toolbar, self._window) + artist_albums = ArtistAlbumsWidget( + artist, albums, self.player, self._header_bar, + self._selection_toolbar, self._window) self._artists[artist.casefold()]['widget'] = artist_albums new_artist_albums_widget.add(artist_albums) new_artist_albums_widget.show() diff --git a/gnomemusic/views/baseview.py b/gnomemusic/views/baseview.py index 3dd344e3f10a89b41298444dc07abf552a790fe1..7f5489cf933e0c2af3f8c45977e6395b452fa400 100644 --- a/gnomemusic/views/baseview.py +++ b/gnomemusic/views/baseview.py @@ -54,8 +54,8 @@ class BaseView(Gtk.Stack): :param sidebar: The sidebar object (Default: Gtk.Box) """ - Gtk.Stack.__init__(self, - transition_type=Gtk.StackTransitionType.CROSSFADE) + super().__init__(transition_type=Gtk.StackTransitionType.CROSSFADE) + self._grid = Gtk.Grid(orientation=Gtk.Orientation.HORIZONTAL) self._offset = 0 self.model = Gtk.ListStore( @@ -96,7 +96,7 @@ class BaseView(Gtk.Stack): self._header_bar = window.toolbar self._selection_toolbar = window.selection_toolbar self._header_bar._select_button.connect( - 'toggled', self._on_header_bar_toggled) + 'toggled', self._on_header_bar_toggled) self._header_bar._cancel_button.connect( 'clicked', self._on_cancel_button_clicked) @@ -110,7 +110,7 @@ class BaseView(Gtk.Stack): scale = self.get_scale_factor() self._cache = AlbumArtCache(scale) self._loading_icon_surface = DefaultIcon(scale).get( - DefaultIcon.Type.loading, ArtSize.medium) + DefaultIcon.Type.loading, ArtSize.MEDIUM) self._init = False grilo.connect('ready', self._on_grilo_ready) @@ -270,10 +270,10 @@ class BaseView(Gtk.Stack): def _set_selection(self, value, parent=None): count = 0 itr = self.model.iter_children(parent) - while itr != None: + while itr is not None: if self.model.iter_has_child(itr): count += self._set_selection(value, itr) - if self.model[itr][5] != None: + if self.model[itr][5] is not None: self.model[itr][6] = value count += 1 itr = self.model.iter_next(itr) @@ -300,5 +300,5 @@ class BaseView(Gtk.Stack): select_toolbar._add_to_playlist_button.set_sensitive(False) select_toolbar._remove_from_playlist_button.set_sensitive(False) self._header_bar._selection_menu_label.set_text( - _("Click on items to select them")) + _("Click on items to select them")) self.queue_draw() diff --git a/gnomemusic/views/emptysearchview.py b/gnomemusic/views/emptysearchview.py index 78d7bb79fef6c0733bd77f211105c570d6369aaf..3a82fd7f3900f477c33fe2b8e0ad4d43b1e681a3 100644 --- a/gnomemusic/views/emptysearchview.py +++ b/gnomemusic/views/emptysearchview.py @@ -27,6 +27,7 @@ from gi.repository import Gd, Gtk from gnomemusic import log from gnomemusic.toolbar import ToolbarState +from gnomemusic.utils import View from gnomemusic.views.baseview import BaseView @@ -37,9 +38,10 @@ class EmptySearchView(BaseView): @log def __init__(self, window, player): - BaseView.__init__(self, 'emptysearch', None, window, Gd.MainViewType.LIST) - self._artistAlbumsWidget = None - self._albumWidget = None + super().__init__('emptysearch', None, window, Gd.MainViewType.LIST) + + self._artist_albums_widget = None + self.player = player builder = Gtk.Builder() @@ -47,17 +49,19 @@ class EmptySearchView(BaseView): widget = builder.get_object('container') widget.set_vexpand(True) widget.set_hexpand(True) - widget.get_children()[1].get_children()[1].set_text(_("Try a different search")) + widget.get_children()[1].get_children()[1].set_text( + _("Try a different search")) widget.show_all() self._box.add(widget) @log def _back_button_clicked(self, widget, data=None): - self._header_bar.searchbar.show_bar(True, False) - if self.get_visible_child() == self._artistAlbumsWidget: - self._artistAlbumsWidget.destroy() - self._artistAlbumsWidget = None + self._header_bar.searchbar.reveal(True, False) + if self.get_visible_child() == self._artist_albums_widget: + self._artist_albums_widget.destroy() + self._artist_albums_widget = None elif self.get_visible_child() == self._grid: - self._window.views[0].set_visible_child(self._window.views[0]._grid) + self._window.views[View.ALBUM].set_visible_child( + self._window.views[View.ALBUM]._grid) self._window.toolbar.set_state(ToolbarState.CHILD_VIEW) self.set_visible_child(self._grid) diff --git a/gnomemusic/views/emptyview.py b/gnomemusic/views/emptyview.py index 641c4e0307a0fdf3e5330b5a8d16f1c2aee40e97..85d48c9a301e3553e4e6acf8692e8cb8a50b04ec 100644 --- a/gnomemusic/views/emptyview.py +++ b/gnomemusic/views/emptyview.py @@ -36,8 +36,8 @@ class EmptyView(Gtk.Stack): @log def __init__(self, window, player): - Gtk.Stack.__init__(self, - transition_type=Gtk.StackTransitionType.CROSSFADE) + super().__init__(transition_type=Gtk.StackTransitionType.CROSSFADE) + self.builder = Gtk.Builder() self.builder.add_from_resource('/org/gnome/Music/NoMusic.ui') widget = self.builder.get_object('container') diff --git a/gnomemusic/views/initialstateview.py b/gnomemusic/views/initialstateview.py index 6e2f9ab52a216ca09b413487d48906c2799a3eaa..d00553713cbce9f571f92d63d4c1e6a26838bbb3 100644 --- a/gnomemusic/views/initialstateview.py +++ b/gnomemusic/views/initialstateview.py @@ -36,14 +36,14 @@ class InitialStateView(EmptyView): @log def __init__(self, window, player): - EmptyView.__init__(self, window, player) + super().__init__(window, player) # Update image icon = self.builder.get_object('icon') icon.set_margin_bottom(32) icon.set_opacity(1) icon.set_from_resource('/org/gnome/Music/initial-state.png') - icon.set_size_request(ArtSize.large.width, ArtSize.large.height) + icon.set_size_request(ArtSize.LARGE.width, ArtSize.LARGE.height) # Update label label = self.builder.get_object('label') diff --git a/gnomemusic/views/playlistview.py b/gnomemusic/views/playlistview.py index 9e270d1c7dfb3bd856be0287d2c47e04feb7985b..37c140d4c4dd24dd9fcbaec1a8ef53a10cb8ccda 100644 --- a/gnomemusic/views/playlistview.py +++ b/gnomemusic/views/playlistview.py @@ -70,7 +70,12 @@ class PlaylistView(BaseView): builder = Gtk.Builder() builder.add_from_resource('/org/gnome/Music/PlaylistControls.ui') headerbar = builder.get_object('grid') + self._name_stack = builder.get_object('stack') self._name_label = builder.get_object('playlist_name') + self._rename_entry = builder.get_object('playlist_rename_entry') + self._rename_entry.connect('changed', self._on_rename_entry_changed) + self._rename_done_button = builder.get_object( + 'playlist_rename_done_button') self._songs_count_label = builder.get_object('songs_count') self._menubutton = builder.get_object('playlist_menubutton') @@ -83,6 +88,11 @@ class PlaylistView(BaseView): self._playlist_delete_action.connect('activate', self._on_delete_activate) self._window.add_action(self._playlist_delete_action) + self._playlist_rename_action = Gio.SimpleAction.new( + 'playlist_rename', None) + self._playlist_rename_action.connect( + 'activate', self._on_rename_activate) + self._window.add_action(self._playlist_rename_action) self._grid.insert_row(0) self._grid.attach(headerbar, 1, 0, 1, 1) @@ -125,6 +135,8 @@ class PlaylistView(BaseView): self.pl_todelete = None self._pl_todelete_index = None self._songs_count = 0 + self._handler_rename_done_button = 0 + self._handler_rename_entry = 0 self._update_songs_count() @@ -268,12 +280,14 @@ class PlaylistView(BaseView): @log def _add_playlist_item_to_model(self, item, index=None): - if index is None: - index = -1 if not item: self._window.pop_loading_notification() self.emit('playlists-loaded') return + if index is None: + index = -1 + if playlists.is_static_playlist(item): + index = 0 _iter = self._playlists_model.insert_with_valuesv( index, [2, 5], [utils.get_media_title(item), item]) if self._playlists_model.iter_n_children(None) == 1: @@ -373,6 +387,9 @@ class PlaylistView(BaseView): playlist_name = self._playlists_model[_iter][2] playlist = self._playlists_model[_iter][5] + if self.rename_active: + self.disable_rename_playlist() + self.current_playlist = playlist self._name_label.set_text(playlist_name) self._current_playlist_index = int(path.to_string()) @@ -384,11 +401,12 @@ class PlaylistView(BaseView): self._songs_count = 0 grilo.populate_playlist_songs(playlist, self._add_item) - # disable delete button if current playlist is a smart playlist if self._current_playlist_is_protected(): self._playlist_delete_action.set_enabled(False) + self._playlist_rename_action.set_enabled(False) else: self._playlist_delete_action.set_enabled(True) + self._playlist_rename_action.set_enabled(True) @log def _add_item(self, source, param, item, remaining=0, data=None): @@ -476,6 +494,54 @@ class PlaylistView(BaseView): self._window.show_playlist_notification() self._stage_playlist_for_deletion() + @log + @property + def rename_active(self): + """Indicate if renaming dialog is active""" + return self._name_stack.get_visible_child_name() == 'renaming_dialog' + + @log + def _on_rename_entry_changed(self, selection): + if selection.get_text_length() > 0: + self._rename_done_button.set_sensitive(True) + else: + self._rename_done_button.set_sensitive(False) + + @log + def disable_rename_playlist(self): + """disables rename button and entry""" + self._name_stack.set_visible_child(self._name_label) + self._rename_done_button.disconnect(self._handler_rename_done_button) + self._rename_entry.disconnect(self._handler_rename_entry) + + @log + def _stage_playlist_for_renaming(self): + _iter = self._pl_generic_view.get_selection().get_selected()[1] + pl_torename = self._playlists_model[_iter][5] + + def playlist_renamed_callback(widget): + new_name = self._rename_entry.get_text() + if not new_name: + return + + self._playlists_model[_iter][2] = new_name + pl_torename.set_title(new_name) + playlists.rename(pl_torename, new_name) + self._name_label.set_text(new_name) + self.disable_rename_playlist() + + self._name_stack.set_visible_child_name('renaming_dialog') + self._rename_entry.set_text(utils.get_media_title(pl_torename)) + self._rename_entry.grab_focus() + self._handler_rename_entry = self._rename_entry.connect( + 'activate', playlist_renamed_callback) + self._handler_rename_done_button = self._rename_done_button.connect( + 'clicked', playlist_renamed_callback) + + @log + def _on_rename_activate(self, menuitem, data=None): + self._stage_playlist_for_renaming() + @log def _on_playlist_created(self, playlists, item): self._add_playlist_item_to_model(item) diff --git a/gnomemusic/views/searchview.py b/gnomemusic/views/searchview.py index 38856465cf68be89de5ad5b00ea62562dbee11a7..3d53baf42d7d8d00273d013ba3537863bb8face7 100644 --- a/gnomemusic/views/searchview.py +++ b/gnomemusic/views/searchview.py @@ -32,6 +32,7 @@ from gnomemusic.player import DiscoveryStatus from gnomemusic.playlists import Playlists from gnomemusic.query import Query from gnomemusic.toolbar import ToolbarState +from gnomemusic.utils import View from gnomemusic.views.baseview import BaseView from gnomemusic.widgets.albumwidget import AlbumWidget from gnomemusic.widgets.artistalbumswidget import ArtistAlbumsWidget @@ -41,6 +42,7 @@ playlists = Playlists.get_default() class SearchView(BaseView): + __gsignals__ = { 'no-music-found': (GObject.SignalFlags.RUN_FIRST, None, ()) } @@ -50,57 +52,58 @@ class SearchView(BaseView): @log def __init__(self, window, player): - BaseView.__init__(self, 'search', None, window, Gd.MainViewType.LIST) - self._items = {} - self.isStarred = None - self.iter_to_clean = None + super().__init__('search', None, window, Gd.MainViewType.LIST) scale = self.get_scale_factor() - loading_icon_surface = DefaultIcon(scale).get(DefaultIcon.Type.loading, - ArtSize.small) + loading_icon_surface = DefaultIcon(scale).get( + DefaultIcon.Type.loading, ArtSize.SMALL) self._loading_icon = Gdk.pixbuf_get_from_surface( - loading_icon_surface, - 0, - 0, - loading_icon_surface.get_width(), + loading_icon_surface, 0, 0, loading_icon_surface.get_width(), loading_icon_surface.get_height()) self._add_list_renderers() self.player = player - self.head_iters = [None, None, None, None] - self.songs_model = self.model + self._head_iters = [None, None, None, None] + self._filter_model = None + self.previous_view = None self.connect('no-music-found', self._no_music_found_callback) - self.albums_selected = [] + self._albums_selected = [] self._albums = {} - self._albumWidget = AlbumWidget(player, self) - self.add(self._albumWidget) + self._albums_index = 0 + self._album_widget = AlbumWidget(player, self) + self.add(self._album_widget) - self.artists_albums_selected = [] + self._artists_albums_selected = [] + self._artists_albums_index = 0 self._artists = {} - self._artistAlbumsWidget = None + self._artist_albums_widget = None self._view.get_generic_view().set_show_expanders(False) - self.items_selected = [] - self.items_selected_callback = None + self._items_selected = [] + self._items_selected_callback = None - self.found_items_number = None + self._items_found = None @log def _no_music_found_callback(self, view): + # FIXME: call into private members self._window._stack.set_visible_child_name('emptysearch') emptysearch = self._window._stack.get_child_by_name('emptysearch') - emptysearch._artistAlbumsWidget = self._artistAlbumsWidget + emptysearch._artist_albums_widget = self._artist_albums_widget @log def _back_button_clicked(self, widget, data=None): - self._header_bar.searchbar.show_bar(True, False) - if self.get_visible_child() == self._artistAlbumsWidget: - self._artistAlbumsWidget.destroy() - self._artistAlbumsWidget = None + self._header_bar.searchbar.reveal(True, False) + + if self.get_visible_child() == self._artist_albums_widget: + self._artist_albums_widget.destroy() + self._artist_albums_widget = None elif self.get_visible_child() == self._grid: - self._window.views[0].set_visible_child(self._window.views[0]._grid) + self._window.views[View.ALBUM].set_visible_child( + self._window.views[View.ALBUM]._grid) + self.set_visible_child(self._grid) self._window.toolbar.set_state(ToolbarState.MAIN) @@ -111,41 +114,43 @@ class SearchView(BaseView): return try: - child_path = self.filter_model.convert_path_to_child_path(path) + child_path = self._filter_model.convert_path_to_child_path(path) except TypeError: return + _iter = self.model.get_iter(child_path) if self.model[_iter][11] == 'album': - title = self.model.get_value(_iter, 2) - artist = self.model.get_value(_iter, 3) - item = self.model.get_value(_iter, 5) - self._albumWidget.update(artist, title, item, - self._header_bar, self._selection_toolbar) + title = self.model[_iter][2] + artist = self.model[_iter][3] + item = self.model[_iter][5] + + self._album_widget.update( + artist, title, item, self._header_bar, self._selection_toolbar) self._header_bar.set_state(ToolbarState.SEARCH_VIEW) - title = utils.get_media_title(item) + self._header_bar.header_bar.set_title(title) self._header_bar.header_bar.sub_title = artist - self.set_visible_child(self._albumWidget) - self._header_bar.searchbar.show_bar(False) + self.set_visible_child(self._album_widget) + self._header_bar.searchbar.reveal(False) elif self.model[_iter][11] == 'artist': - artist = self.model.get_value(_iter, 2) + artist = self.model[_iter][2] albums = self._artists[artist.casefold()]['albums'] - self._artistAlbumsWidget = ArtistAlbumsWidget( - artist, albums, self.player, - self._header_bar, self._selection_toolbar, self._window, True - ) - self.add(self._artistAlbumsWidget) - self._artistAlbumsWidget.show() + self._artist_albums_widget = ArtistAlbumsWidget( + artist, albums, self.player, self._header_bar, + self._selection_toolbar, self._window, True) + self.add(self._artist_albums_widget) + self._artist_albums_widget.show() self._header_bar.set_state(ToolbarState.SEARCH_VIEW) self._header_bar.header_bar.set_title(artist) - self.set_visible_child(self._artistAlbumsWidget) - self._header_bar.searchbar.show_bar(False) + self.set_visible_child(self._artist_albums_widget) + self._header_bar.searchbar.reveal(False) elif self.model[_iter][11] == 'song': - if self.model.get_value(_iter, 12) != DiscoveryStatus.FAILED: - child_iter = self.songs_model.convert_child_iter_to_iter(_iter)[1] - self.player.set_playlist('Search Results', None, self.songs_model, child_iter, 5, 12) + if self.model[_iter][12] != DiscoveryStatus.FAILED: + c_iter = self._songs_model.convert_child_iter_to_iter(_iter)[1] + self.player.set_playlist( + 'Search Results', None, self._songs_model, c_iter, 5, 12) self.player.set_playing(True) else: # Headers if self._view.get_generic_view().row_expanded(path): @@ -155,13 +160,16 @@ class SearchView(BaseView): @log def _on_selection_mode_changed(self, widget, data=None): - if self._artistAlbumsWidget is not None and self.get_visible_child() == self._artistAlbumsWidget: - self._artistAlbumsWidget.set_selection_mode(self._header_bar._selectionMode) + if (self._artist_albums_widget is not None + and self.get_visible_child() == self._artist_albums_widget): + self._artist_albums_widget.set_selection_mode( + self._header_bar._selectionMode) @log def _add_search_item(self, source, param, item, remaining=0, data=None): if not item: - if grilo._search_callback_counter == 0 and grilo.search_source: + if (grilo._search_callback_counter == 0 + and grilo.search_source): self.emit('no-music-found') return @@ -180,8 +188,10 @@ class SearchView(BaseView): self._albums[key].set_composer(composer) self._albums[key].set_source(source.get_id()) self._albums[key].songs = [] - self._add_item(source, None, self._albums[key], 0, [self.model, 'album']) - self._add_item(source, None, self._albums[key], 0, [self.model, 'artist']) + self._add_item( + source, None, self._albums[key], 0, [self.model, 'album']) + self._add_item( + source, None, self._albums[key], 0, [self.model, 'artist']) self._albums[key].songs.append(item) self._add_item(source, None, item, 0, [self.model, 'song']) @@ -193,19 +203,23 @@ class SearchView(BaseView): model, category = data - self.found_items_number = ( - self.model.iter_n_children(self.head_iters[0]) + - self.model.iter_n_children(self.head_iters[1]) + - self.model.iter_n_children(self.head_iters[2]) + - self.model.iter_n_children(self.head_iters[3])) + self._items_found = ( + self.model.iter_n_children(self._head_iters[0]) + + self.model.iter_n_children(self._head_iters[1]) + + self.model.iter_n_children(self._head_iters[2]) + + self.model.iter_n_children(self._head_iters[3]) + ) - if category == 'song' and self.found_items_number == 0 and remaining == 0: + if (category == 'song' + and self._items_found == 0 + and remaining == 0): if grilo.search_source: self.emit('no-music-found') # We need to remember the view before the search view - if self._window.curr_view != self._window.views[5] and \ - self._window.prev_view != self._window.views[5]: + emptysearchview = self._window.views[View.EMPTY_SEARCH] + if (self._window.curr_view != emptysearchview + and self._window.prev_view != emptysearchview): self.previous_view = self._window.prev_view if remaining == 0: @@ -234,38 +248,41 @@ class SearchView(BaseView): _iter = None if category == 'album': _iter = self.model.insert_with_values( - self.head_iters[group], -1, - [0, 2, 3, 4, 5, 9, 11, 13], - [str(item.get_id()), title, artist, - self._loading_icon, item, 2, category, composer]) - self._cache.lookup(item, ArtSize.small, self._on_lookup_ready, - _iter) + self._head_iters[group], -1, [0, 2, 3, 4, 5, 9, 11, 13], + [str(item.get_id()), title, artist, self._loading_icon, item, + 2, category, composer]) + self._cache.lookup( + item, ArtSize.SMALL, self._on_lookup_ready, _iter) elif category == 'song': + # FIXME: source specific hack + if source.get_id() != 'grl-tracker-source': + fav = 2 + else: + fav = item.get_favourite() _iter = self.model.insert_with_values( - self.head_iters[group], -1, - [0, 2, 3, 4, 5, 9, 11, 13], - [str(item.get_id()), title, artist, - self._loading_icon, item, - 2 if source.get_id() != 'grl-tracker-source' \ - else item.get_favourite(), category, composer]) - self._cache.lookup(item, ArtSize.small, self._on_lookup_ready, - _iter) + self._head_iters[group], -1, [0, 2, 3, 4, 5, 9, 11, 13], + [str(item.get_id()), title, artist, self._loading_icon, item, + fav, category, composer]) + self._cache.lookup( + item, ArtSize.SMALL, self._on_lookup_ready, _iter) else: if not artist.casefold() in self._artists: _iter = self.model.insert_with_values( - self.head_iters[group], -1, - [0, 2, 4, 5, 9, 11, 13], - [str(item.get_id()), artist, - self._loading_icon, item, 2, category, composer]) - self._cache.lookup(item, ArtSize.small, self._on_lookup_ready, - _iter) - self._artists[artist.casefold()] = {'iter': _iter, 'albums': []} + self._head_iters[group], -1, [0, 2, 4, 5, 9, 11, 13], + [str(item.get_id()), artist, self._loading_icon, item, 2, + category, composer]) + self._cache.lookup( + item, ArtSize.SMALL, self._on_lookup_ready, _iter) + self._artists[artist.casefold()] = { + 'iter': _iter, + 'albums': [] + } self._artists[artist.casefold()]['albums'].append(item) - if self.model.iter_n_children(self.head_iters[group]) == 1: - path = self.model.get_path(self.head_iters[group]) - path = self.filter_model.convert_child_path_to_path(path) + if self.model.iter_n_children(self._head_iters[group]) == 1: + path = self.model.get_path(self._head_iters[group]) + path = self._filter_model.convert_child_path_to_path(path) self._view.get_generic_view().expand_row(path, False) @log @@ -276,25 +293,25 @@ class SearchView(BaseView): cols = list_widget.get_columns() title_renderer = Gtk.CellRendererText( - xpad=12, - xalign=0.0, - yalign=0.5, - height=32, - ellipsize=Pango.EllipsizeMode.END, - weight=Pango.Weight.BOLD - ) - list_widget.add_renderer(title_renderer, - self._on_list_widget_title_render, None) + xpad=12, xalign=0.0, yalign=0.5, height=32, + ellipsize=Pango.EllipsizeMode.END, weight=Pango.Weight.BOLD) + list_widget.add_renderer( + title_renderer, self._on_list_widget_title_render, None) cols[0].add_attribute(title_renderer, 'text', 2) self._star_handler.add_star_renderers(list_widget, cols[0]) cells = cols[0].get_cells() cols[0].reorder(cells[0], -1) - cols[0].set_cell_data_func(cells[0], self._on_list_widget_selection_render, None) + cols[0].set_cell_data_func( + cells[0], self._on_list_widget_selection_render, None) def _on_list_widget_selection_render(self, col, cell, model, _iter, data): - cell.set_visible(self._view.get_selection_mode() and model.iter_parent(_iter) is not None) + if (self._view.get_selection_mode() + and model.iter_parent(_iter) is not None): + cell.set_visible(True) + else: + cell.set_visible(False) def _on_list_widget_title_render(self, col, cell, model, _iter, data): cells = col.get_cells() @@ -310,28 +327,32 @@ class SearchView(BaseView): @log def get_selected_songs(self, callback): - if self.get_visible_child() == self._albumWidget: - callback(self._albumWidget.view.get_selected_items()) - elif self.get_visible_child() == self._artistAlbumsWidget: + if self.get_visible_child() == self._album_widget: + callback(self._album_widget.view.get_selected_items()) + elif self.get_visible_child() == self._artist_albums_widget: items = [] # FIXME: calling into private model - for row in self._artistAlbumsWidget._model: + for row in self._artist_albums_widget._model: if row[6]: items.append(row[5]) callback(items) else: - self.items_selected = [] - self.items_selected_callback = callback + self._items_selected = [] + self._items_selected_callback = callback self._get_selected_albums() @log def _get_selected_albums(self): - self.albums_index = 0 - self.albums_selected = [self.model[child_path][5] - for child_path in [self.filter_model.convert_path_to_child_path(path) - for path in self._view.get_selection()] - if self.model[child_path][11] == 'album'] - if len(self.albums_selected): + paths = [ + self._filter_model.convert_path_to_child_path(path) + for path in self._view.get_selection()] + + self._albums_selected = [ + self.model[child_path][5] + for child_path in paths + if self.model[child_path][11] == 'album'] + + if len(self._albums_selected): self._get_selected_albums_songs() else: self._get_selected_artists() @@ -339,33 +360,35 @@ class SearchView(BaseView): @log def _get_selected_albums_songs(self): grilo.populate_album_songs( - self.albums_selected[self.albums_index], + self._albums_selected[self._albums_index], self._add_selected_albums_songs) - self.albums_index += 1 + self._albums_index += 1 @log - def _add_selected_albums_songs(self, source, param, item, remaining=0, data=None): + def _add_selected_albums_songs( + self, source, param, item, remaining=0, data=None): if item: - self.items_selected.append(item) + self._items_selected.append(item) if remaining == 0: - if self.albums_index < len(self.albums_selected): + if self._albums_index < len(self._albums_selected): self._get_selected_albums_songs() else: self._get_selected_artists() @log def _get_selected_artists(self): - self.artists_albums_index = 0 - self.artists_selected = [self._artists[self.model[child_path][2].casefold()] - for child_path in [self.filter_model.convert_path_to_child_path(path) - for path in self._view.get_selection()] - if self.model[child_path][11] == 'artist'] - - self.artists_albums_selected = [] - for artist in self.artists_selected: - self.artists_albums_selected.extend(artist['albums']) - - if len(self.artists_albums_selected): + artists_selected = [ + self._artists[self.model[child_path][2].casefold()] + for child_path in [ + self._filter_model.convert_path_to_child_path(path) + for path in self._view.get_selection()] + if self.model[child_path][11] == 'artist'] + + self._artists_albums_selected = [] + for artist in artists_selected: + self._artists_albums_selected.extend(artist['albums']) + + if len(self._artists_albums_selected): self._get_selected_artists_albums_songs() else: self._get_selected_songs() @@ -373,31 +396,38 @@ class SearchView(BaseView): @log def _get_selected_artists_albums_songs(self): grilo.populate_album_songs( - self.artists_albums_selected[self.artists_albums_index], + self._artists_albums_selected[self._artists_albums_index], self._add_selected_artists_albums_songs) - self.artists_albums_index += 1 + self._artists_albums_index += 1 @log - def _add_selected_artists_albums_songs(self, source, param, item, remaining=0, data=None): + def _add_selected_artists_albums_songs( + self, source, param, item, remaining=0, data=None): if item: - self.items_selected.append(item) + self._items_selected.append(item) if remaining == 0: - if self.artists_albums_index < len(self.artists_albums_selected): + artist_albums = len(self._artists_albums_selected) + if self._artists_albums_index < artist_albums: self._get_selected_artists_albums_songs() else: self._get_selected_songs() @log def _get_selected_songs(self): - self.items_selected.extend([self.model[child_path][5] - for child_path in [self.filter_model.convert_path_to_child_path(path) - for path in self._view.get_selection()] - if self.model[child_path][11] == 'song']) - self.items_selected_callback(self.items_selected) + self._items_selected.extend([ + self.model[child_path][5] + for child_path in [ + self._filter_model.convert_path_to_child_path(path) + for path in self._view.get_selection()] + if self.model[child_path][11] == 'song']) + self._items_selected_callback(self._items_selected) @log def _filter_visible_func(self, model, _iter, data=None): - return model.iter_parent(_iter) is not None or model.iter_has_child(_iter) + top_level = model.iter_parent(_iter) is None + visible = (not top_level or model.iter_has_child(_iter)) + + return visible @log def set_search_text(self, search_term, fields_filter): @@ -441,9 +471,10 @@ class SearchView(BaseView): GObject.TYPE_INT, GObject.TYPE_STRING, # composer ) - self.filter_model = self.model.filter_new(None) - self.filter_model.set_visible_func(self._filter_visible_func) - self._view.set_model(self.filter_model) + + self._filter_model = self.model.filter_new(None) + self._filter_model.set_visible_func(self._filter_visible_func) + self._view.set_model(self._filter_model) self._albums = {} self._artists = {} @@ -451,21 +482,33 @@ class SearchView(BaseView): if search_term == "": return - albums_iter = self.model.insert_with_values(None, -1, [2, 9], [_("Albums"), 2]) - artists_iter = self.model.insert_with_values(None, -1, [2, 9], [_("Artists"), 2]) - songs_iter = self.model.insert_with_values(None, -1, [2, 9], [_("Songs"), 2]) - playlists_iter = self.model.insert_with_values(None, -1, [2, 9], [_("Playlists"), 2]) - - self.head_iters = [albums_iter, artists_iter, songs_iter, playlists_iter] - self.songs_model = self.model.filter_new(self.model.get_path(songs_iter)) + albums_iter = self.model.insert_with_values( + None, -1, [2, 9], [_("Albums"), 2]) + artists_iter = self.model.insert_with_values( + None, -1, [2, 9], [_("Artists"), 2]) + songs_iter = self.model.insert_with_values( + None, -1, [2, 9], [_("Songs"), 2]) + playlists_iter = self.model.insert_with_values( + None, -1, [2, 9], [_("Playlists"), 2]) + + self._head_iters = [ + albums_iter, + artists_iter, + songs_iter, + playlists_iter + ] + + self._songs_model = self.model.filter_new( + self.model.get_path(songs_iter)) # Use queries for Tracker - if not grilo.search_source or \ - grilo.search_source.get_id() == 'grl-tracker-source': + if (not grilo.search_source + or grilo.search_source.get_id() == 'grl-tracker-source'): for category in ('album', 'artist', 'song'): query = query_matcher[category][fields_filter](search_term) - grilo.populate_custom_query(query, self._add_item, -1, [self.model, category]) - if not grilo.search_source or \ - grilo.search_source.get_id() != 'grl-tracker-source': + grilo.populate_custom_query( + query, self._add_item, -1, [self.model, category]) + if (not grilo.search_source + or grilo.search_source.get_id() != 'grl-tracker-source'): # nope, can't do - reverting to Search grilo.search(search_term, self._add_search_item, self.model) diff --git a/gnomemusic/views/songsview.py b/gnomemusic/views/songsview.py index c1b8c3c6c3f7bc154341e542443831a54623b1f6..623c753d4b8f6a78fba387290c8fdbb96fb8cacb 100644 --- a/gnomemusic/views/songsview.py +++ b/gnomemusic/views/songsview.py @@ -52,8 +52,7 @@ class SongsView(BaseView): :param GtkWidget window: The main window :param player: The main player object """ - BaseView.__init__(self, 'songs', _("Songs"), - window, Gd.MainViewType.LIST) + super().__init__('songs', _("Songs"), window, Gd.MainViewType.LIST) self._offset = 0 self._iter_to_clean = None @@ -90,7 +89,7 @@ class SongsView(BaseView): try: itr = self.model.get_iter(path) - except ValueError as err : + except ValueError as err: logger.warn("Error: {}, {}".format(err.__class__, err)) return diff --git a/gnomemusic/widgets/albumwidget.py b/gnomemusic/widgets/albumwidget.py index 8d12fb9b6b590dbdd13608479bbdda3a85f83a9e..5f6841c8f3f8efb599b5664a9418762ad4834775 100644 --- a/gnomemusic/widgets/albumwidget.py +++ b/gnomemusic/widgets/albumwidget.py @@ -23,13 +23,11 @@ # delete this exception statement from your version. from gettext import gettext as _, ngettext -from gi.repository import Gd, Gdk, GdkPixbuf, GLib, GObject, Gtk, Pango +from gi.repository import GdkPixbuf, GLib, GObject, Gtk from gnomemusic import log from gnomemusic.albumartcache import AlbumArtCache, DefaultIcon, ArtSize from gnomemusic.grilo import grilo -from gnomemusic.player import DiscoveryStatus -from gnomemusic.playlists import Playlists from gnomemusic.widgets.disclistboxwidget import DiscBox, DiscListBox import gnomemusic.utils as utils @@ -53,7 +51,7 @@ class AlbumWidget(Gtk.EventBox): :param player: The player object :param parent_view: The view this widget is part of """ - Gtk.EventBox.__init__(self) + super().__init__() self._songs = [] @@ -61,7 +59,7 @@ class AlbumWidget(Gtk.EventBox): self._cache = AlbumArtCache(scale) self._loading_icon_surface = DefaultIcon(scale).get( DefaultIcon.Type.loading, - ArtSize.large) + ArtSize.LARGE) self._player = player self._iter_to_clean = None @@ -147,7 +145,7 @@ class AlbumWidget(Gtk.EventBox): self._album = album self._builder.get_object('cover').set_from_surface( self._loading_icon_surface) - self._cache.lookup(item, ArtSize.large, self._on_lookup, None) + self._cache.lookup(item, ArtSize.LARGE, self._on_lookup, None) self._duration = 0 GLib.idle_add(grilo.populate_album_songs, item, self.add_item) @@ -241,7 +239,6 @@ class AlbumWidget(Gtk.EventBox): self._selection_mode = not self._selection_mode self._on_selection_mode_request() - @log def _song_activated(self, widget, song_widget): if not song_widget.can_be_played: @@ -324,7 +321,8 @@ class AlbumWidget(Gtk.EventBox): song = playlist[_iter][5] song_widget = song.song_widget self._duration += song.get_duration() - escaped_title = GLib.markup_escape_text(utils.get_media_title(song)) + escaped_title = GLib.markup_escape_text( + utils.get_media_title(song)) if (song == current_song): song_widget.now_playing_sign.show() diff --git a/gnomemusic/widgets/artistalbumswidget.py b/gnomemusic/widgets/artistalbumswidget.py index ea0beeb75ee2f4e26f352bcb6a3f431748fbcbc1..c870b2ba4532862de093a69162c9d37747e9608d 100644 --- a/gnomemusic/widgets/artistalbumswidget.py +++ b/gnomemusic/widgets/artistalbumswidget.py @@ -48,7 +48,7 @@ class ArtistAlbumsWidget(Gtk.Box): @log def __init__(self, artist, albums, player, header_bar, selection_toolbar, window, selection_mode_allowed=False): - Gtk.Box.__init__(self, orientation=Gtk.Orientation.VERTICAL) + super().__init__(orientation=Gtk.Orientation.VERTICAL) self._player = player self.artist = artist self._window = window diff --git a/gnomemusic/widgets/artistalbumwidget.py b/gnomemusic/widgets/artistalbumwidget.py index 43dd6c60dc9484c1640b41c240c89ed2ce79f4d6..71bc01b87b5f17a987a92245a4cf3721cfab1d99 100644 --- a/gnomemusic/widgets/artistalbumwidget.py +++ b/gnomemusic/widgets/artistalbumwidget.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 gettext import gettext as _ -from gi.repository import Gdk, Gio, GLib, GObject, Gtk +from gi.repository import GLib, GObject, Gtk from gnomemusic import log from gnomemusic.albumartcache import AlbumArtCache, DefaultIcon, ArtSize from gnomemusic.grilo import grilo -from gnomemusic.widgets.disclistboxwidget import DiscBox, DiscListBox +from gnomemusic.widgets.disclistboxwidget import DiscBox import gnomemusic.utils as utils @@ -45,7 +44,7 @@ class ArtistAlbumWidget(Gtk.Box): def __init__(self, media, player, model, header_bar, selection_mode_allowed, size_group=None, cover_size_group=None): - super().__init__(self, orientation=Gtk.Orientation.HORIZONTAL) + super().__init__(orientation=Gtk.Orientation.HORIZONTAL) self._size_group = size_group self._cover_size_group = cover_size_group @@ -53,7 +52,7 @@ class ArtistAlbumWidget(Gtk.Box): self._cache = AlbumArtCache(scale) self._loading_icon_surface = DefaultIcon(scale).get( DefaultIcon.Type.loading, - ArtSize.medium) + ArtSize.MEDIUM) self._media = media self._player = player @@ -97,7 +96,6 @@ class ArtistAlbumWidget(Gtk.Box): GLib.idle_add(self._update_album_art) grilo.populate_album_songs(self._media, self._add_item) - def create_disc_box(self, disc_nr, disc_songs): disc_box = DiscBox(self._model) disc_box.set_songs(disc_songs) @@ -163,7 +161,7 @@ class ArtistAlbumWidget(Gtk.Box): @log def _update_album_art(self): - self._cache.lookup(self._media, ArtSize.medium, self._get_album_cover, + self._cache.lookup(self._media, ArtSize.MEDIUM, self._get_album_cover, None) @log diff --git a/gnomemusic/widgets/disclistboxwidget.py b/gnomemusic/widgets/disclistboxwidget.py index 328d206e573e4e7fac0fae97d31f4ac688836170..5121cac9a919cc23804b16959a759cbdf61cb3dd 100644 --- a/gnomemusic/widgets/disclistboxwidget.py +++ b/gnomemusic/widgets/disclistboxwidget.py @@ -28,6 +28,7 @@ from gi.repository import Gdk, GObject, Gtk from gnomemusic import log from gnomemusic.grilo import grilo +from gnomemusic.playlists import Playlists, StaticPlaylists import gnomemusic.utils as utils @@ -40,7 +41,7 @@ class StarImage(Gtk.Image): @log def __init__(self): - super().__init__(self) + super().__init__() self._favorite = False @@ -104,7 +105,7 @@ class DiscSongsFlowBox(Gtk.FlowBox): :param int columns: The number of columns the widget uses """ - super().__init__(self) + super().__init__() super().set_selection_mode(Gtk.SelectionMode.NONE) self._columns = columns @@ -144,6 +145,8 @@ class DiscBox(Gtk.Box): } + _playlists = Playlists.get_default() + def __repr__(self): return '' @@ -153,7 +156,7 @@ class DiscBox(Gtk.Box): :param model: The TreeStore to use """ - super().__init__(self) + super().__init__() self._model = model self._model.connect('row-changed', self._model_row_changed) @@ -369,6 +372,8 @@ class DiscBox(Gtk.Box): # signal. favorite = song_widget.star_image.get_favorite() grilo.set_favorite(self._model[song_widget.itr][5], favorite) + self._playlists.update_static_playlist(StaticPlaylists.Favorites) + return True @log @@ -381,7 +386,7 @@ class DiscBox(Gtk.Box): def _toggle_widget_selection(self, child): song_widget = child.get_child() song_widget.check_button.set_visible(self._selection_mode) - if self._selection_mode == False: + if self._selection_mode is False: if song_widget.check_button.get_active(): song_widget.check_button.set_active(False) diff --git a/gnomemusic/widgets/starhandlerwidget.py b/gnomemusic/widgets/starhandlerwidget.py index 1651b2ac98508da9757d7d91fd06c82b5357a079..d8ba9713aca11fa752d20bd3b3d86ef61315097b 100644 --- a/gnomemusic/widgets/starhandlerwidget.py +++ b/gnomemusic/widgets/starhandlerwidget.py @@ -22,7 +22,7 @@ # 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, GObject, Gtk +from gi.repository import GObject, Gtk from gnomemusic import log from gnomemusic.grilo import grilo diff --git a/gnomemusic/window.py b/gnomemusic/window.py index 60372d76fb8edc7fdd934df2a7d00fc88179f17d..16e72061bdcf55e182bdd7eabf3c57db04eef1db 100644 --- a/gnomemusic/window.py +++ b/gnomemusic/window.py @@ -30,13 +30,14 @@ # delete this exception statement from your version. from gi.repository import Gtk, Gdk, Gio, GLib -from gettext import gettext as _, ngettext +from gettext import gettext as _ from gnomemusic import log from gnomemusic import TrackerWrapper from gnomemusic.toolbar import Toolbar, ToolbarState from gnomemusic.player import Player, SelectionToolbar, RepeatType from gnomemusic.query import Query +from gnomemusic.utils import View from gnomemusic.views.albumsview import AlbumsView from gnomemusic.views.artistsview import ArtistsView from gnomemusic.views.emptyview import EmptyView @@ -63,9 +64,8 @@ class Window(Gtk.ApplicationWindow): @log def __init__(self, app): - Gtk.ApplicationWindow.__init__(self, - application=app, - title=_("Music")) + super().__init__(application=app, title=_("Music")) + self.connect('focus-in-event', self._windows_focus_cb) self.settings = Gio.Settings.new('org.gnome.Music') self.add_action(self.settings.create_action('repeat')) @@ -150,12 +150,12 @@ class Window(Gtk.ApplicationWindow): # Undo playlist removal def undo_remove_cb(button, self): self._playlist_notification.set_reveal_child(False) - self.views[3].undo_playlist_deletion() + self.views[View.PLAYLIST].undo_playlist_deletion() remove_notification_timeout(self) # Playlist name label - self._playlist_notification.label = Gtk.Label('') + self._playlist_notification.label = Gtk.Label() grid.add(self._playlist_notification.label) # Undo button @@ -168,9 +168,10 @@ class Window(Gtk.ApplicationWindow): @log def _on_changes_pending(self, data=None): + # FIXME: This is not working right. def songs_available_cb(available): if available: - if self.views[0] == self.views[-1]: + if self.views[View.ALBUM] == self.views[-1]: view = self.views.pop() view.destroy() self._switch_to_player_view() @@ -255,7 +256,7 @@ class Window(Gtk.ApplicationWindow): self.player = Player(self) self.selection_toolbar = SelectionToolbar() self.toolbar = Toolbar() - self.views = [] + self.views = [None] * len(View) self._stack = Gtk.Stack( transition_type=Gtk.StackTransitionType.CROSSFADE, transition_duration=100, @@ -309,9 +310,9 @@ class Window(Gtk.ApplicationWindow): view_class = EmptyView else: view_class = InitialStateView - self.views.append(view_class(self, self.player)) + self.views[View.ALBUM] = view_class(self, self.player) - self._stack.add_titled(self.views[0], _("Empty"), _("Empty")) + self._stack.add_titled(self.views[View.ALBUM], _("Empty"), _("Empty")) self.toolbar._search_button.set_sensitive(False) self.toolbar._select_button.set_sensitive(False) @@ -322,12 +323,12 @@ class Window(Gtk.ApplicationWindow): self.connect('destroy', self._notify_mode_disconnect) self._key_press_event_id = self.connect('key_press_event', self._on_key_press) - self.views.append(AlbumsView(self, self.player)) - self.views.append(ArtistsView(self, self.player)) - self.views.append(SongsView(self, self.player)) - self.views.append(PlaylistView(self, self.player)) - self.views.append(SearchView(self, self.player)) - self.views.append(EmptySearchView(self, self.player)) + self.views[View.ALBUM] = AlbumsView(self, self.player) + self.views[View.ARTIST] = ArtistsView(self, self.player) + self.views[View.SONG] = SongsView(self, self.player) + self.views[View.PLAYLIST] = PlaylistView(self, self.player) + self.views[View.SEARCH] = SearchView(self, self.player) + self.views[View.EMPTY_SEARCH] = EmptySearchView(self, self.player) for i in self.views: if i.title: @@ -371,7 +372,7 @@ class Window(Gtk.ApplicationWindow): # Callback to remove playlists def remove_playlist_timeout_cb(self): # Remove the playlist - playlist.delete_playlist(self.views[3].pl_todelete) + playlist.delete_playlist(self.views[View.PLAYLIST].pl_todelete) # Hide the notification self._playlist_notification.set_reveal_child(False) @@ -386,7 +387,7 @@ class Window(Gtk.ApplicationWindow): GLib.source_remove(self._playlist_notification_timeout_id) remove_playlist_timeout_cb(self) - playlist_title = self.views[3].current_playlist.get_title() + playlist_title = self.views[View.PLAYLIST].current_playlist.get_title() label = _("Playlist {} removed".format(playlist_title)) self._playlist_notification.label.set_label(label) @@ -405,11 +406,11 @@ class Window(Gtk.ApplicationWindow): # Open search bar on Ctrl + F if (event.keyval == Gdk.KEY_f and event_and_modifiers == Gdk.ModifierType.CONTROL_MASK): - self.toolbar.searchbar.toggle_bar() + self.toolbar.searchbar.toggle() # Play / Pause on Ctrl + SPACE if (event.keyval == Gdk.KEY_space and event_and_modifiers == Gdk.ModifierType.CONTROL_MASK): - self.player.play_pause() + self.player.play_pause() # Play previous on Ctrl + B if (event.keyval == Gdk.KEY_b and event_and_modifiers == Gdk.ModifierType.CONTROL_MASK): @@ -435,9 +436,7 @@ class Window(Gtk.ApplicationWindow): # Go back from Album view on Alt + Left if (event.keyval == Gdk.KEY_Left and event_and_modifiers == Gdk.ModifierType.MOD1_MASK): - if (self.toolbar._state != ToolbarState.MAIN): - self.curr_view.set_visible_child(self.curr_view._grid) - self.toolbar.set_state(ToolbarState.MAIN) + self.toolbar.on_back_button_clicked() # Go to Albums view on Ctrl + 1 if (event.keyval == Gdk.KEY_1 and event_and_modifiers == Gdk.ModifierType.CONTROL_MASK): @@ -455,12 +454,13 @@ class Window(Gtk.ApplicationWindow): and event_and_modifiers == Gdk.ModifierType.CONTROL_MASK): self._toggle_view(0, 3) else: - if (event.keyval == Gdk.KEY_Delete): - if self._stack.get_visible_child() == self.views[3]: - self.views[3].remove_playlist() + child = self._stack.get_visible_child() + if (event.keyval == Gdk.KEY_Delete + and child == self.views[View.PLAYLIST]): + self.views[View.PLAYLIST].remove_playlist() # Close search bar after Esc is pressed if event.keyval == Gdk.KEY_Escape: - self.toolbar.searchbar.show_bar(False) + self.toolbar.searchbar.reveal(False) # Also disable selection if self.toolbar._selectionMode: self.toolbar.set_selection_mode(False) @@ -471,8 +471,20 @@ class Window(Gtk.ApplicationWindow): and not event.keyval == Gdk.KEY_space) and GLib.unichar_isprint(chr(key_unic)) and (event_and_modifiers == Gdk.ModifierType.SHIFT_MASK - or event_and_modifiers == 0)): - self.toolbar.searchbar.show_bar(True) + or event_and_modifiers == 0) + and not self.views[View.PLAYLIST].rename_active): + self.toolbar.searchbar.reveal(True) + + @log + def do_button_release_event(self, event): + """Override default button release event + + :param Gdk.EventButton event: Button event + """ + __, code = event.get_button() + # Mouse button 8 is the navigation button + if code == 8: + self.toolbar.on_back_button_clicked() @log def _notify_mode_disconnect(self, data=None): @@ -485,40 +497,51 @@ class Window(Gtk.ApplicationWindow): self.curr_view = stack.get_visible_child() # Switch to all albums view when we're clicking Albums - if self.curr_view == self.views[0] and not (self.prev_view == self.views[4] or self.prev_view == self.views[5]): + if (self.curr_view == self.views[View.ALBUM] + and not (self.prev_view == self.views[View.SEARCH] + or self.prev_view == self.views[View.EMPTY_SEARCH])): self.curr_view.set_visible_child(self.curr_view._grid) # Slide out sidebar on switching to Artists or Playlists view - if self.curr_view == self.views[1] or \ - self.curr_view == self.views[3]: + if self.curr_view == self.views[View.ARTIST] or \ + self.curr_view == self.views[View.PLAYLIST]: self.curr_view.stack.set_visible_child_name('dummy') self.curr_view.stack.set_visible_child_name('sidebar') - if self.curr_view != self.views[4] and self.curr_view != self.views[5]: - self.toolbar.searchbar.show_bar(False) + if self.curr_view != self.views[View.SEARCH] and self.curr_view != self.views[View.EMPTY_SEARCH]: + self.toolbar.searchbar.reveal(False) # Toggle the selection button for the EmptySearch view - if self.curr_view == self.views[5] or \ - self.prev_view == self.views[5]: + if self.curr_view == self.views[View.EMPTY_SEARCH] or \ + self.prev_view == self.views[View.EMPTY_SEARCH]: self.toolbar._select_button.set_sensitive( not self.toolbar._select_button.get_sensitive()) + # Disable renaming playlist if it was active when leaving + # Playlist view + if (self.prev_view == self.views[View.PLAYLIST] + and self.views[View.PLAYLIST].rename_active): + self.views[View.PLAYLIST].disable_rename_playlist() + @log def _toggle_view(self, btn, i): self._stack.set_visible_child(self.views[i]) @log def _on_search_toggled(self, button, data=None): - self.toolbar.searchbar.show_bar(button.get_active(), - self.curr_view != self.views[4]) - if (not button.get_active() and - (self.curr_view == self.views[4] or self.curr_view == self.views[5])): + self.toolbar.searchbar.reveal( + button.get_active(), self.curr_view != self.views[View.SEARCH]) + if (not button.get_active() + and (self.curr_view == self.views[View.SEARCH] + or self.curr_view == self.views[View.EMPTY_SEARCH])): + child = self.curr_view.get_visible_child() if self.toolbar._state == ToolbarState.MAIN: # We should get back to the view before the search - self._stack.set_visible_child(self.views[4].previous_view) - elif (self.views[4].previous_view == self.views[0] and - self.curr_view.get_visible_child() != self.curr_view._albumWidget and - self.curr_view.get_visible_child() != self.curr_view._artistAlbumsWidget): - self._stack.set_visible_child(self.views[0]) + self._stack.set_visible_child( + self.views[View.SEARCH].previous_view) + elif (self.views[View.SEARCH].previous_view == self.views[View.ALBUM] + and child != self.curr_view._album_widget + and child != self.curr_view._artist_albums_widget): + self._stack.set_visible_child(self.views[View.ALBUM]) if self.toolbar._selectionMode: self.toolbar.set_selection_mode(False) @@ -528,20 +551,22 @@ class Window(Gtk.ApplicationWindow): if self.toolbar._selectionMode is False: self._on_changes_pending() else: - in_playlist = self._stack.get_visible_child() == self.views[3] + child = self._stack.get_visible_child() + in_playlist = (child == self.views[View.PLAYLIST]) self.selection_toolbar._add_to_playlist_button.set_visible(not in_playlist) self.selection_toolbar._remove_from_playlist_button.set_visible(in_playlist) @log def _on_add_to_playlist_button_clicked(self, widget): - if self._stack.get_visible_child() == self.views[3]: + if self._stack.get_visible_child() == self.views[View.PLAYLIST]: return def callback(selected_songs): if len(selected_songs) < 1: return - playlist_dialog = PlaylistDialog(self, self.views[3].pl_todelete) + playlist_dialog = PlaylistDialog( + self, self.views[View.PLAYLIST].pl_todelete) if playlist_dialog.run() == Gtk.ResponseType.ACCEPT: playlist.add_to_playlist(playlist_dialog.get_selected(), selected_songs) @@ -552,7 +577,7 @@ class Window(Gtk.ApplicationWindow): @log def _on_remove_from_playlist_button_clicked(self, widget): - if self._stack.get_visible_child() != self.views[3]: + if self._stack.get_visible_child() != self.views[View.PLAYLIST]: return def callback(selected_songs): @@ -560,8 +585,7 @@ class Window(Gtk.ApplicationWindow): return playlist.remove_from_playlist( - self.views[3].current_playlist, - selected_songs) + self.views[View.PLAYLIST].current_playlist, selected_songs) self.toolbar.set_selection_mode(False) self._stack.get_visible_child().get_selected_songs(callback) diff --git a/libgd b/libgd index 56a19ad9b056332ef07e508f1bdb6f03c6cb2590..4e0f712f570716886ebb6983e6fae5411d82d30c 160000 --- a/libgd +++ b/libgd @@ -1 +1 @@ -Subproject commit 56a19ad9b056332ef07e508f1bdb6f03c6cb2590 +Subproject commit 4e0f712f570716886ebb6983e6fae5411d82d30c diff --git a/po/Makevars b/po/Makevars new file mode 100644 index 0000000000000000000000000000000000000000..b1c1c5169c36a2beed7be0e86d590a3e05ad7b81 --- /dev/null +++ b/po/Makevars @@ -0,0 +1,78 @@ +# Makefile variables for PO directory in any package using GNU gettext. + +# Usually the message domain is the same as the package name. +DOMAIN = $(PACKAGE) + +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + +# These options get passed to xgettext. +XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2 --keyword=g_dngettext:2,3 --add-comments + +# This is the copyright holder that gets inserted into the header of the +# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding +# package. (Note that the msgstr strings, extracted from the package's +# sources, belong to the copyright holder of the package.) Translators are +# expected to transfer the copyright for their translations to this person +# or entity, or to disclaim their copyright. The empty string stands for +# the public domain; in this case the translators are expected to disclaim +# their copyright. +COPYRIGHT_HOLDER = GNOME Music contributors + +# This tells whether or not to prepend "GNU " prefix to the package +# name that gets inserted into the header of the $(DOMAIN).pot file. +# Possible values are "yes", "no", or empty. If it is empty, try to +# detect it automatically by scanning the files in $(top_srcdir) for +# "GNU packagename" string. +PACKAGE_GNU = no + +# This is the email address or URL to which the translators shall report +# bugs in the untranslated strings: +# - Strings which are not entire sentences, see the maintainer guidelines +# in the GNU gettext documentation, section 'Preparing Strings'. +# - Strings which use unclear terms or require additional context to be +# understood. +# - Strings which make invalid assumptions about notation of date, time or +# money. +# - Pluralisation problems. +# - Incorrect English spelling. +# - Incorrect formatting. +# It can be your email address, or a mailing list address where translators +# can write to without being subscribed, or the URL of a web page through +# which the translators can contact you. +MSGID_BUGS_ADDRESS = https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-music&keywords=I18N+L10N&component=general + +# This is the list of locale categories, beyond LC_MESSAGES, for which the +# message catalogs shall be used. It is usually empty. +EXTRA_LOCALE_CATEGORIES = + +# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt' +# context. Possible values are "yes" and "no". Set this to yes if the +# package uses functions taking also a message context, like pgettext(), or +# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument. +USE_MSGCTXT = yes + +# These options get passed to msgmerge. +# Useful options are in particular: +# --previous to keep previous msgids of translated messages, +# --quiet to reduce the verbosity. +MSGMERGE_OPTIONS = + +# These options get passed to msginit. +# If you want to disable line wrapping when writing PO files, add +# --no-wrap to MSGMERGE_OPTIONS, XGETTEXT_OPTIONS, and +# MSGINIT_OPTIONS. +MSGINIT_OPTIONS = + +# This tells whether or not to regenerate a PO file when $(DOMAIN).pot +# has changed. Possible values are "yes" and "no". Set this to no if +# the POT file is checked in the repository and the version control +# program ignores timestamps. +PO_DEPENDS_ON_POT = no + +# This tells whether or not to forcibly update $(DOMAIN).pot and +# regenerate PO files on "make dist". Possible values are "yes" and +# "no". Set this to no if the POT file and PO files are maintained +# externally. +DIST_DEPENDS_ON_UPDATE_PO = no diff --git a/po/POTFILES.in b/po/POTFILES.in index 515063d73c5e1a83de65ab8955dbd546edf5076c..d26778824c1a553a8ab7cd0815ddabe3d950def9 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,6 +1,5 @@ # List of source files containing translatable strings. # Please keep this file sorted alphabetically. -[encoding: UTF-8] data/org.gnome.Music.appdata.xml.in data/org.gnome.Music.desktop.in data/org.gnome.Music.gschema.xml @@ -32,15 +31,15 @@ gnomemusic/widgets/disclistboxwidget.py gnomemusic/widgets/playlistdialog.py gnomemusic/widgets/starhandlerwidget.py gnomemusic/window.py -[type: gettext/glade]data/AboutDialog.ui.in -[type: gettext/glade]data/AlbumWidget.ui -[type: gettext/glade]data/app-menu.ui -[type: gettext/glade]data/ArtistAlbumsWidget.ui -[type: gettext/glade]data/headerbar.ui -[type: gettext/glade]data/help-overlay.ui -[type: gettext/glade]data/NoMusic.ui -[type: gettext/glade]data/PlayerToolbar.ui -[type: gettext/glade]data/PlaylistControls.ui -[type: gettext/glade]data/PlaylistDialog.ui -[type: gettext/glade]data/SelectionToolbar.ui -[type: gettext/glade]data/TrackWidget.ui +data/AboutDialog.ui.in +data/AlbumWidget.ui +data/app-menu.ui +data/ArtistAlbumsWidget.ui +data/headerbar.ui +data/help-overlay.ui +data/NoMusic.ui +data/PlayerToolbar.ui +data/PlaylistControls.ui +data/PlaylistDialog.ui +data/SelectionToolbar.ui +data/TrackWidget.ui diff --git a/po/ca@valencia.po b/po/ca@valencia.po index 3dcf430daa508e0653855462c56a834afdfad7a0..2fa9160e27e226344ca7fa0fa043ca3f6e22a8c9 100644 --- a/po/ca@valencia.po +++ b/po/ca@valencia.po @@ -2,23 +2,53 @@ # 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 , 2013. +# Jordi Mas i Hernandez , 2013, 2015, 2016 # Pau Iranzo , 2013. # Gil Forcada , 2014. +# Jordi Serratosa , 2017. # msgid "" msgstr "" "Project-Id-Version: gnome-music master\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-09-20 22:18+0200\n" -"PO-Revision-Date: 2014-09-20 22:16+0200\n" -"Last-Translator: Gil Forcada \n" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"music&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2017-09-25 14:21+0000\n" +"PO-Revision-Date: 2017-09-01 12:28+0200\n" +"Last-Translator: Xavi Ivars \n" "Language-Team: Catalan \n" -"Language: ca-XV\n" +"Language: ca-valencia\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bits\n" +"Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Poedit 1.8.11\n" + +#: ../data/org.gnome.Music.appdata.xml.in.h:1 +msgid "GNOME Music" +msgstr "Música del GNOME" + +#: ../data/org.gnome.Music.appdata.xml.in.h:2 +#: ../data/org.gnome.Music.desktop.in.h:3 +msgid "Play and organize your music collection" +msgstr "Reproduïu i organitzeu la col·lecció de música" + +#: ../data/org.gnome.Music.appdata.xml.in.h:3 +msgid "Music is the new GNOME music playing application." +msgstr "El Música és la nova aplicació de reproducció de música del GNOME." + +#: ../data/org.gnome.Music.desktop.in.h:1 ../gnomemusic/application.py:53 +#: ../gnomemusic/application.py:102 ../gnomemusic/toolbar.py:90 +#: ../gnomemusic/window.py:68 ../data/AboutDialog.ui.in.h:1 +msgid "Music" +msgstr "Música" + +#: ../data/org.gnome.Music.desktop.in.h:2 +msgid "Music Player" +msgstr "Reproductor de música" + +#: ../data/org.gnome.Music.desktop.in.h:4 +msgid "Music;Player;" +msgstr "Música;Reproductor;" #: ../data/org.gnome.Music.gschema.xml.h:1 msgid "Window size" @@ -26,7 +56,7 @@ msgstr "Mida de la finestra" #: ../data/org.gnome.Music.gschema.xml.h:2 msgid "Window size (width and height)." -msgstr "Mida de la finestra (amplada i alçada)" +msgstr "Mida de la finestra (amplària i alçària)." #: ../data/org.gnome.Music.gschema.xml.h:3 msgid "Window position" @@ -34,7 +64,7 @@ msgstr "Posició de la finestra" #: ../data/org.gnome.Music.gschema.xml.h:4 msgid "Window position (x and y)." -msgstr "Posició de la finestra (x i y)" +msgstr "Posició de la finestra (x i y)." #: ../data/org.gnome.Music.gschema.xml.h:5 msgid "Window maximized" @@ -52,9 +82,9 @@ msgstr "Mode de repetició de la reproducció" #: ../data/org.gnome.Music.gschema.xml.h:9 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 " @@ -65,175 +95,232 @@ msgstr "" #: ../data/org.gnome.Music.gschema.xml.h:10 msgid "Search mode" -msgstr "Mode de cerca" +msgstr "Mode de busca" #: ../data/org.gnome.Music.gschema.xml.h:11 msgid "If true, the search bar is shown." -msgstr "Si és cert, es mostra la barra de cerca." - -#: ../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 "Música" - -#: ../data/gnome-music.desktop.in.h:2 -msgid "Music Player" -msgstr "Reproductor de música" +msgstr "Si és cert, es mostra la barra de busca." -#: ../data/gnome-music.desktop.in.h:3 ../data/gnome-music.appdata.xml.in.h:2 -msgid "Play and organize your music collection" -msgstr "Reproduïu i organitzeu la col·lecció de música" +#: ../data/org.gnome.Music.gschema.xml.h:12 +msgid "Notifications mode" +msgstr "Mode de notificacions" -#: ../data/gnome-music.appdata.xml.in.h:1 -msgid "GNOME Music" -msgstr "GNOME Music" +#: ../data/org.gnome.Music.gschema.xml.h:13 +msgid "Enables or disables playback notifications" +msgstr "Habilita o inhabilita les notificacions de reproducció" -#: ../data/gnome-music.appdata.xml.in.h:3 -msgid "Music is the new GNOME music playing application." -msgstr "El Music és la nova aplicació de reproducció de música del GNOME." - -#: ../gnomemusic/albumArtCache.py:100 ../gnomemusic/albumArtCache.py:108 -msgid "Untitled" -msgstr "Sense títol" +#: ../data/org.gnome.Music.gschema.xml.h:14 +msgid "Enable ReplayGain" +msgstr "Habilita ReplayGain" -#: ../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 "Àlbum desconegut" - -#: ../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 "Artista desconegut" +#: ../data/org.gnome.Music.gschema.xml.h:15 +msgid "Enables or disables ReplayGain for albums" +msgstr "Habilita o inhabilita ReplayGain pels àlbums" -#: ../gnomemusic/notification.py:89 -msgid "Not playing" -msgstr "No s'està reproduint" +#: ../data/org.gnome.Music.gschema.xml.h:16 +msgid "Inital state has been displayed" +msgstr "S'ha mostrat l'estat inicial" -#. TRANSLATORS: by refers to the artist, from to the album -#: ../gnomemusic/notification.py:104 -#, python-format -msgid "by %s, from %s" -msgstr "per %s, a %s" +#: ../data/org.gnome.Music.gschema.xml.h:17 +msgid "Set to true when initial state has been displayed" +msgstr "Estableix a cert quan s'ha mostrat l'estat inicial" -#: ../gnomemusic/notification.py:125 ../data/PlayerToolbar.ui.h:5 +#: ../gnomemusic/notification.py:55 ../data/PlayerToolbar.ui.h:6 msgid "Previous" msgstr "Anterior" -#: ../gnomemusic/notification.py:128 ../gnomemusic/player.py:348 +#: ../gnomemusic/notification.py:58 ../gnomemusic/player.py:558 msgid "Pause" msgstr "Fes una pausa" -#: ../gnomemusic/notification.py:131 ../gnomemusic/player.py:351 -#: ../data/PlayerToolbar.ui.h:6 +#: ../gnomemusic/notification.py:61 ../gnomemusic/player.py:561 +#: ../data/PlayerToolbar.ui.h:7 msgid "Play" msgstr "Reprodueix" -#: ../gnomemusic/notification.py:133 ../data/PlayerToolbar.ui.h:7 +#: ../gnomemusic/notification.py:63 ../data/PlayerToolbar.ui.h:8 msgid "Next" msgstr "Següent" -#: ../gnomemusic/searchbar.py:30 ../gnomemusic/searchbar.py:73 +#: ../gnomemusic/player.py:1167 +msgid "Unable to play the file" +msgstr "No s'ha pogut reproduir el fitxer" + +#. 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:1172 +#, python-format +msgid "_Find in %s" +msgstr "_Cerca a %s" + +#. TRANSLATORS: separator for a list of codecs +#: ../gnomemusic/player.py:1182 +msgid " and " +msgstr " i " + +#. TRANSLATORS: separator for a list of codecs +#: ../gnomemusic/player.py:1185 +msgid ", " +msgstr ", " + +#: ../gnomemusic/player.py:1186 +#, 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] "Cal %s per reproduir el fitxer però no està instal·lat." +msgstr[1] "Calen %s per reproduir el fitxer però no estan instal·lats." + +#. TRANSLATORS: this is a playlist name +#: ../gnomemusic/playlists.py:59 +msgid "Most Played" +msgstr "Més reproduïdes" + +#. TRANSLATORS: this is a playlist name +#: ../gnomemusic/playlists.py:64 +msgid "Never Played" +msgstr "Mai s'han reproduït" + +#. TRANSLATORS: this is a playlist name +#: ../gnomemusic/playlists.py:69 +msgid "Recently Played" +msgstr "Reproduccions recents" + +#. TRANSLATORS: this is a playlist name +#: ../gnomemusic/playlists.py:74 +msgid "Recently Added" +msgstr "Afegits recentment" + +#. TRANSLATORS: this is a playlist name +#: ../gnomemusic/playlists.py:79 +msgid "Favorite Songs" +msgstr "Cançons preferides" + +#: ../gnomemusic/searchbar.py:63 ../gnomemusic/searchbar.py:111 msgid "All" msgstr "Totes" -#: ../gnomemusic/searchbar.py:31 +#: ../gnomemusic/searchbar.py:64 msgid "Artist" msgstr "Artista" -#: ../gnomemusic/searchbar.py:32 +#: ../gnomemusic/searchbar.py:65 msgid "Album" msgstr "Àlbum" -#: ../gnomemusic/searchbar.py:33 +#: ../gnomemusic/searchbar.py:66 ../data/AlbumWidget.ui.h:3 +msgid "Composer" +msgstr "Compositor" + +#: ../gnomemusic/searchbar.py:67 msgid "Track Title" msgstr "Títol de la peça" -#: ../gnomemusic/searchbar.py:74 +#: ../gnomemusic/searchbar.py:112 msgid "Local" msgstr "Local" -#: ../gnomemusic/searchbar.py:176 +#: ../gnomemusic/searchbar.py:224 msgid "Sources" msgstr "Fonts" -#: ../gnomemusic/searchbar.py:183 +#: ../gnomemusic/searchbar.py:231 msgid "Match" msgstr "Coincidència" -#: ../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 element seleccionat" -msgstr[1] "%d elements seleccionats" - -#: ../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 "Feu clic als elements per seleccionar-los" +#: ../gnomemusic/utils.py:63 +msgid "Unknown Artist" +msgstr "Artista desconegut" -#: ../gnomemusic/view.py:337 -#, python-format -msgid "" -"No Music found!\n" -" Put some files into the folder %s" -msgstr "" -"No s'ha trobat música\n" -" Copieu alguns fitxers a la carpeta: %s" +#: ../gnomemusic/utils.py:75 +msgid "Untitled" +msgstr "Sense títol" -#: ../gnomemusic/view.py:345 ../gnomemusic/view.py:1534 +#: ../gnomemusic/views/albumsview.py:44 ../gnomemusic/views/searchview.py:454 msgid "Albums" msgstr "Àlbums" -#: ../gnomemusic/view.py:427 ../gnomemusic/view.py:1536 -msgid "Songs" -msgstr "Cançons" - -#: ../gnomemusic/view.py:591 ../gnomemusic/view.py:1535 +#: ../gnomemusic/views/artistsview.py:55 ../gnomemusic/views/searchview.py:455 msgid "Artists" msgstr "Artistes" -#: ../gnomemusic/view.py:636 ../gnomemusic/view.py:638 -#: ../gnomemusic/widgets.py:448 -msgid "All Artists" -msgstr "Tots els artistes" +#: ../gnomemusic/views/baseview.py:196 +msgid "Selected {} item" +msgid_plural "Selected {} items" +msgstr[0] "{} element seleccionat" +msgstr[1] "{} elements seleccionats" + +#: ../gnomemusic/views/baseview.py:201 ../gnomemusic/views/baseview.py:303 +#: ../gnomemusic/widgets/albumwidget.py:198 +#: ../gnomemusic/widgets/artistalbumswidget.py:232 ../data/headerbar.ui.h:3 +msgid "Click on items to select them" +msgstr "Feu clic als elements per seleccionar-los" + +#: ../gnomemusic/views/emptyview.py:51 +msgid "Music folder" +msgstr "Carpeta de la música" -#: ../gnomemusic/view.py:797 ../gnomemusic/view.py:1537 +#: ../gnomemusic/views/emptysearchview.py:50 +msgid "Try a different search" +msgstr "Proveu una busca diferent" + +#: ../gnomemusic/views/initialstateview.py:50 +msgid "Hey DJ" +msgstr "Hola DJ" + +#: ../gnomemusic/views/playlistview.py:58 ../gnomemusic/views/searchview.py:457 msgid "Playlists" msgstr "Llistes de reproducció" -#: ../gnomemusic/view.py:1077 +#: ../gnomemusic/views/playlistview.py:420 #, python-format msgid "%d Song" msgid_plural "%d Songs" msgstr[0] "%d cançó" msgstr[1] "%d cançons" -#: ../gnomemusic/widgets.py:270 ../gnomemusic/widgets.py:308 +#: ../gnomemusic/views/searchview.py:456 ../gnomemusic/views/songsview.py:55 +msgid "Songs" +msgstr "Cançons" + +#: ../gnomemusic/widgets/albumwidget.py:194 +#: ../gnomemusic/widgets/artistalbumswidget.py:228 +#, python-format +msgid "Selected %d item" +msgid_plural "Selected %d items" +msgstr[0] "%d element seleccionat" +msgstr[1] "%d elements seleccionats" + +#: ../gnomemusic/widgets/albumwidget.py:291 +#: ../gnomemusic/widgets/albumwidget.py:345 #, python-format msgid "%d min" msgstr "%d min" -#: ../gnomemusic/widgets.py:674 -msgid "New Playlist" -msgstr "Llista de reproducció nova" +#: ../gnomemusic/widgets/disclistboxwidget.py:189 +msgid "Disc {}" +msgstr "Disc {}" -#: ../gnomemusic/window.py:226 +#: ../gnomemusic/window.py:125 +msgid "Loading" +msgstr "S'està carregant" + +#. Undo button +#: ../gnomemusic/window.py:162 +msgid "_Undo" +msgstr "_Desfés" + +#: ../gnomemusic/window.py:314 msgid "Empty" msgstr "Buit" +#: ../gnomemusic/window.py:390 +msgid "Playlist {} removed" +msgstr "S'ha suprimit la llista de reproducció {}" + #: ../data/AboutDialog.ui.in.h:2 -msgid "Copyright © 2013 GNOME Music Developers" -msgstr "Copyright © 2013 Desenvolupadors del GNOME Music" +msgid "Copyright © 2016 GNOME Music Developers" +msgstr "Copyright © 2016 desenvolupadors del Música del GNOME" #: ../data/AboutDialog.ui.in.h:3 msgid "A music player and management application for GNOME." @@ -241,7 +328,7 @@ msgstr "Una aplicació de reproducció i gestió de música pel GNOME." #: ../data/AboutDialog.ui.in.h:4 msgid "Visit GNOME Music website" -msgstr "Visiteu el lloc web del GNOME Music" +msgstr "Visiteu el lloc web del Música del GNOME" #: ../data/AboutDialog.ui.in.h:5 msgid "" @@ -265,28 +352,35 @@ 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." +"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 "" -"El GNOME Music é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; siga la versió 2 de la llicència o (segons la vostra " -"opció) qualsevol versió posterior.\n" +"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; siga la versió 2 de la llicència o (segons " +"la vostra opció) qualsevol versió posterior.\n" "\n" -"El GNOME Music es distribueix amb l'esperança que siga ú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" +"El Música del GNOME es distribueix amb l'esperança que siga ú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 GNOME " "Music; 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 GNOME Music presents permeten l'ús i distribució conjunta del " -"GNOME Music amb connectors GStreamer no compatibles amb la GPL. Este permís " -"està per sobre dels permisos garantits per la llicència GPL sota la qual es " -"troba el GNOME Music. Si modifiqueu este codi, podeu estendre esta excepció " -"a la vostra versió del codi, però no esteu obligats a fer-ho. Si no voleu " -"fer-ho, elimineu esta declaració d'excepció de la vostra versió." +"Els autors del Música del GNOME presents permeten l'ús i distribució " +"conjunta del Música del GNOME amb connectors GStreamer no compatibles amb la " +"GPL. Este 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 este codi, " +"podeu estendre esta excepció a la vostra versió del codi, però no esteu " +"obligat a fer-ho. Si no voleu fer-ho, elimineu esta declaració d'excepció " +"de la vostra versió.\n" +"\n" +"La imatge «Magic of the vinyl» d'en Sami Pyylampi està llicenciada sota CC-" +"BY-SA 2.0 https://www.flickr.com/photos/_spy_/12270839403\n" #: ../data/AlbumWidget.ui.h:1 msgid "Released" @@ -294,11 +388,11 @@ msgstr "Publicat" #: ../data/AlbumWidget.ui.h:2 msgid "Running Length" -msgstr "Durada" +msgstr "Duració" #: ../data/app-menu.ui.h:1 -msgid "_New Playlist" -msgstr "_Llista de reproducció nova" +msgid "_Keyboard Shortcuts" +msgstr "_Tecles de drecera" #: ../data/app-menu.ui.h:2 msgid "_Help" @@ -312,26 +406,6 @@ msgstr "_Quant a" msgid "_Quit" msgstr "I_x" -#: ../data/PlayerToolbar.ui.h:1 -msgid "Shuffle" -msgstr "Mescla" - -#: ../data/PlayerToolbar.ui.h:2 -msgid "Repeat All" -msgstr "Repeteix-ho tot" - -#: ../data/PlayerToolbar.ui.h:3 -msgid "Repeat Song" -msgstr "Repeteix la cançó" - -#: ../data/PlayerToolbar.ui.h:4 -msgid "Shuffle/Repeat Off" -msgstr "Aleatori/Repetició desactivada" - -#: ../data/NoMusic.ui.h:1 -msgid "No Music Found" -msgstr "No s'ha trobat música" - #: ../data/headerbar.ui.h:1 msgid "Select All" msgstr "Selecciona-ho tot" @@ -342,27 +416,131 @@ msgstr "No en seleccionis cap" #: ../data/headerbar.ui.h:4 msgid "Search" -msgstr "Cerca" +msgstr "Busca" -#: ../data/headerbar.ui.h:5 ../data/PlaylistDialog.ui.h:3 +#: ../data/headerbar.ui.h:5 msgid "Select" msgstr "Selecciona" -#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:2 -msgid "Cancel" -msgstr "Cancel·la" +#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:6 +msgid "_Cancel" +msgstr "_Cancel·la" #: ../data/headerbar.ui.h:7 msgid "Back" msgstr "Arrere" -#: ../data/SelectionToolbar.ui.h:1 -msgid "Add to Playlist" -msgstr "Afig a la llista de reproducció" +#: ../data/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "General" -#: ../data/SelectionToolbar.ui.h:2 -msgid "Remove from Playlist" -msgstr "Elimina de la llista de reproducció" +#: ../data/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Close window" +msgstr "Tanca la finestra" + +#: ../data/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Busca" + +#: ../data/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Help" +msgstr "Ajuda" + +#: ../data/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Shortcuts" +msgstr "Dreceres" + +#: ../data/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Playback" +msgstr "Reprodueix" + +#: ../data/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Play/Pause" +msgstr "Reprodueix/Fes una pausa" + +#: ../data/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Next song" +msgstr "Cançó següent" + +#: ../data/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Previous song" +msgstr "Cançó anterior" + +#: ../data/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle repeat" +msgstr "Commuta la repetició" + +#: ../data/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Toggle shuffle" +msgstr "Commuta la mescla" + +#: ../data/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Navigation" +msgstr "Navegació" + +#: ../data/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Go to Albums" +msgstr "Vés als àlbums" + +#: ../data/help-overlay.ui.h:14 +msgctxt "shortcut window" +msgid "Go to Artists" +msgstr "Vés als artistes" + +#: ../data/help-overlay.ui.h:15 +msgctxt "shortcut window" +msgid "Go to Songs" +msgstr "Vés a les cançons" + +#: ../data/help-overlay.ui.h:16 +msgctxt "shortcut window" +msgid "Go to Playlists" +msgstr "Vés a les llistes de reproducció" + +#: ../data/help-overlay.ui.h:17 +msgctxt "shortcut window" +msgid "Go back" +msgstr "Torna arrere" + +#: ../data/NoMusic.ui.h:1 +msgid "No music found" +msgstr "No s'ha trobat música" + +#. 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 "Els continguts de %s apareixeran ací." + +#: ../data/PlayerToolbar.ui.h:1 +msgid "Shuffle" +msgstr "Mescla" + +#: ../data/PlayerToolbar.ui.h:2 +msgid "Repeat All" +msgstr "Repeteix-ho tot" + +#: ../data/PlayerToolbar.ui.h:3 +msgid "Repeat Song" +msgstr "Repeteix la cançó" + +#. Causes tracks to play in random order +#: ../data/PlayerToolbar.ui.h:5 +msgid "Shuffle/Repeat Off" +msgstr "Aleatori/Repetició desactivada" #: ../data/PlaylistControls.ui.h:1 msgid "_Play" @@ -377,5 +555,74 @@ msgid "Playlist Name" msgstr "Nom de la llista de reproducció" #: ../data/PlaylistDialog.ui.h:1 +msgid "Enter a name for your first playlist" +msgstr "Introduïu un nom per la vostra primera llista de reproducció " + +#: ../data/PlaylistDialog.ui.h:2 +msgid "C_reate" +msgstr "_Crea" + +#: ../data/PlaylistDialog.ui.h:3 +msgid "New Playlist" +msgstr "Llista de reproducció nova" + +#: ../data/PlaylistDialog.ui.h:4 +msgid "Add" +msgstr "Afig" + +#: ../data/PlaylistDialog.ui.h:5 msgid "Select Playlist" msgstr "Seleccioneu una llista de reproducció" + +#: ../data/PlaylistDialog.ui.h:7 +msgid "_Add" +msgstr "_Afig" + +#: ../data/SelectionToolbar.ui.h:1 +msgid "_Add to Playlist" +msgstr "_Afig a la llista de reproducció" + +#: ../data/SelectionToolbar.ui.h:2 +msgid "_Remove from Playlist" +msgstr "_Suprimeix de la llista de reproducció" + +#~ msgid "the|a|an" +#~ msgstr "la|l'|el||les|els|un|una|uns|unes" + +#~ msgid "Max chars to display in track name on Artist view" +#~ msgstr "" +#~ "Nombre de caràcters màxims a mostrar en el nom de la pista a la vista " +#~ "artista" + +#~ 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 "" +#~ "Aquest paràmetre modifica el nombre de caràcters que es mostren al títol " +#~ "de la pista a la vista artista abans d'escurçar-lo. Establiu-lo -1 per " +#~ "inhabilitar-ho." + +#~ msgid "Unknown Album" +#~ msgstr "Àlbum desconegut" + +#~ msgid "the a an" +#~ msgstr "el la els l' les un una uns unes" + +#~ msgid "All Artists" +#~ msgstr "Tots els artistes" + +#~ msgid "Not playing" +#~ msgstr "No s'està reproduint" + +#~ msgid "by %s, from %s" +#~ msgstr "per %s, a %s" + +#~ msgid "" +#~ "No Music found!\n" +#~ " Put some files into the folder %s" +#~ msgstr "" +#~ "No s'ha trobat música\n" +#~ " Copieu alguns fitxers a la carpeta: %s" + +#~ msgid "_New Playlist" +#~ msgstr "_Llista de reproducció nova" diff --git a/po/cs.po b/po/cs.po index 01fa378fd00c2b69e48f750093188e4419dcb3f8..7517f516bdfb221f7a9008945c9f434ef26f5412 100644 --- a/po/cs.po +++ b/po/cs.po @@ -11,10 +11,10 @@ msgstr "" "Project-Id-Version: gnome-music master\n" "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "music&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2017-07-29 17:20+0000\n" -"PO-Revision-Date: 2017-07-30 15:26+0200\n" +"POT-Creation-Date: 2017-09-25 14:17+0000\n" +"PO-Revision-Date: 2017-10-29 15:37+0100\n" "Last-Translator: Marek Černocký \n" -"Language-Team: čeština >\n" +"Language-Team: čeština \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -22,55 +22,68 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Gtranslator 2.91.7\n" -#: ../data/org.gnome.Music.desktop.in.h:1 ../gnomemusic/application.py:53 -#: ../gnomemusic/application.py:101 ../gnomemusic/toolbar.py:90 -#: ../gnomemusic/window.py:68 ../data/AboutDialog.ui.in.h:1 +#: data/org.gnome.Music.appdata.xml.in:6 +msgid "GNOME Music" +msgstr "Hudba GNOME" + +#: data/org.gnome.Music.appdata.xml.in:7 data/org.gnome.Music.desktop.in:5 +msgid "Play and organize your music collection" +msgstr "Přehrávat a organizovat svou hudební sbírku" + +#: data/org.gnome.Music.appdata.xml.in:9 +msgid "Music is the new GNOME music playing application." +msgstr "Hudba je nová aplikace GNOME sloužící k přehrávání hudby." + +#: data/org.gnome.Music.desktop.in:3 gnomemusic/application.py:53 +#: gnomemusic/application.py:102 gnomemusic/toolbar.py:90 +#: gnomemusic/window.py:68 data/AboutDialog.ui.in:7 msgid "Music" msgstr "Hudba" -#: ../data/org.gnome.Music.desktop.in.h:2 +#: data/org.gnome.Music.desktop.in:4 msgid "Music Player" msgstr "Hudební přehrávač" -#: ../data/org.gnome.Music.desktop.in.h:3 -#: ../data/gnome-music.appdata.xml.in.h:2 -msgid "Play and organize your music collection" -msgstr "Přehrávat a organizovat svou hudební sbírku" +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Music.desktop.in:7 +msgid "gnome-music" +msgstr "gnome-music" -#: ../data/org.gnome.Music.desktop.in.h:4 +#. 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:13 msgid "Music;Player;" msgstr "hudba;muzika;přehrávač;" -#: ../data/org.gnome.Music.gschema.xml.h:1 +#: data/org.gnome.Music.gschema.xml:12 msgid "Window size" msgstr "Velikost okna" -#: ../data/org.gnome.Music.gschema.xml.h:2 +#: data/org.gnome.Music.gschema.xml:13 msgid "Window size (width and height)." msgstr "Velikost okna (šířka a výška)." -#: ../data/org.gnome.Music.gschema.xml.h:3 +#: data/org.gnome.Music.gschema.xml:17 msgid "Window position" msgstr "Poloha okna" -#: ../data/org.gnome.Music.gschema.xml.h:4 +#: 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.h:5 +#: data/org.gnome.Music.gschema.xml:22 msgid "Window maximized" msgstr "Maximalizované okno" -#: ../data/org.gnome.Music.gschema.xml.h:6 +#: data/org.gnome.Music.gschema.xml:23 msgid "Window maximized state." msgstr "Stav maximalizace okna." -#: ../data/org.gnome.Music.gschema.xml.h:7 +#: data/org.gnome.Music.gschema.xml:27 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.h:9 +#: 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), " @@ -83,86 +96,78 @@ 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.h:10 +#: data/org.gnome.Music.gschema.xml:33 msgid "Search mode" msgstr "Vyhledávací režim" -#: ../data/org.gnome.Music.gschema.xml.h:11 +#: data/org.gnome.Music.gschema.xml:34 msgid "If true, the search bar is shown." msgstr "Je-li zapnuto, je zobrazena vyhledávací lišta." -#: ../data/org.gnome.Music.gschema.xml.h:12 +#: data/org.gnome.Music.gschema.xml:38 msgid "Notifications mode" msgstr "Režim oznamování" -#: ../data/org.gnome.Music.gschema.xml.h:13 +#: data/org.gnome.Music.gschema.xml:39 msgid "Enables or disables playback notifications" msgstr "Povolí nebo zakáže oznámení o přehrávání" -#: ../data/org.gnome.Music.gschema.xml.h:14 +#: data/org.gnome.Music.gschema.xml:43 msgid "Enable ReplayGain" msgstr "Povolit ReplayGain" -#: ../data/org.gnome.Music.gschema.xml.h:15 +#: data/org.gnome.Music.gschema.xml:44 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.h:16 +#: data/org.gnome.Music.gschema.xml:48 msgid "Inital state has been displayed" msgstr "Počáteční stav byl zobrazen" -#: ../data/org.gnome.Music.gschema.xml.h:17 +#: data/org.gnome.Music.gschema.xml:49 msgid "Set to true when initial state has been displayed" msgstr "Nastavit na zapnuto, když byl již zobrazen počáteční stav" -#: ../data/gnome-music.appdata.xml.in.h:1 -msgid "GNOME Music" -msgstr "Hudba GNOME" - -#: ../data/gnome-music.appdata.xml.in.h:3 -msgid "Music is the new GNOME music playing application." -msgstr "Hudba je nová aplikace GNOME sloužící k přehrávání hudby." - -#: ../gnomemusic/notification.py:55 ../data/PlayerToolbar.ui.h:6 +#: gnomemusic/notification.py:55 data/PlayerToolbar.ui:70 msgid "Previous" msgstr "Předchozí" -#: ../gnomemusic/notification.py:58 ../gnomemusic/player.py:558 +#: gnomemusic/notification.py:58 gnomemusic/player.py:558 msgid "Pause" msgstr "Pozastavit" -#: ../gnomemusic/notification.py:61 ../gnomemusic/player.py:561 -#: ../data/PlayerToolbar.ui.h:7 +#: gnomemusic/notification.py:61 gnomemusic/player.py:561 +#: data/PlayerToolbar.ui:87 msgid "Play" msgstr "Přehrát" -#: ../gnomemusic/notification.py:63 ../data/PlayerToolbar.ui.h:8 +#: gnomemusic/notification.py:63 data/PlayerToolbar.ui:104 msgid "Next" msgstr "Následující" -#: ../gnomemusic/player.py:1167 +#: gnomemusic/player.py:1167 msgid "Unable to play the file" msgstr "Soubor nelze přehrát" #. 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:1172 +#: gnomemusic/player.py:1172 #, python-format msgid "_Find in %s" msgstr "_Hledat v %s" #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1182 +#: gnomemusic/player.py:1182 msgid " and " msgstr " a " #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1185 +#: gnomemusic/player.py:1185 msgid ", " msgstr ", " -#: ../gnomemusic/player.py:1186 +#: gnomemusic/player.py:1186 #, 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." @@ -171,119 +176,108 @@ msgstr[1] "%s jsou potřebné k přehrání souboru, ale nejsou nainstalovány." msgstr[2] "%s jsou potřebné k přehrání souboru, ale nejsou nainstalovány." #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:59 +#: gnomemusic/playlists.py:59 msgid "Most Played" msgstr "Nejčastěji přehráváno" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:64 +#: gnomemusic/playlists.py:64 msgid "Never Played" msgstr "Nikdy nepřehráno" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:69 +#: gnomemusic/playlists.py:69 msgid "Recently Played" msgstr "Nedávno přehráno" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:74 +#: gnomemusic/playlists.py:74 msgid "Recently Added" msgstr "Nedávno přidáno" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:79 +#: gnomemusic/playlists.py:79 msgid "Favorite Songs" msgstr "Oblíbené skladby" -#. TRANSLATORS: The following translatable string should be a -#. vertical bar-separated list of all-lowercase articles that -#. should be ignored when alphabetizing artists/albums. This -#. list should include the basic english translatable strings -#. regardless of language because they are so universal. -#. If some articles occur more frequently than others, the most -#. common one should appear first, the least common one last. -#: ../gnomemusic/query.py:90 -msgid "the|a|an" -msgstr "-" - -#: ../gnomemusic/searchbar.py:63 ../gnomemusic/searchbar.py:111 +#: gnomemusic/searchbar.py:63 gnomemusic/searchbar.py:111 msgid "All" msgstr "Vše" -#: ../gnomemusic/searchbar.py:64 +#: gnomemusic/searchbar.py:64 msgid "Artist" msgstr "Umělce" -#: ../gnomemusic/searchbar.py:65 +#: gnomemusic/searchbar.py:65 msgid "Album" msgstr "Album" -#: ../gnomemusic/searchbar.py:66 ../data/AlbumWidget.ui.h:3 +#: gnomemusic/searchbar.py:66 data/AlbumWidget.ui:171 msgid "Composer" msgstr "Skladatel" -#: ../gnomemusic/searchbar.py:67 +#: gnomemusic/searchbar.py:67 msgid "Track Title" msgstr "Název stopy" -#: ../gnomemusic/searchbar.py:112 +#: gnomemusic/searchbar.py:112 msgid "Local" msgstr "Místní" -#: ../gnomemusic/searchbar.py:224 +#: gnomemusic/searchbar.py:224 msgid "Sources" msgstr "Zdroje" -#: ../gnomemusic/searchbar.py:231 +#: gnomemusic/searchbar.py:231 msgid "Match" msgstr "Porovnávat" -#: ../gnomemusic/utils.py:63 +#: gnomemusic/utils.py:63 msgid "Unknown Artist" msgstr "Neznámý umělec" -#: ../gnomemusic/utils.py:75 +#: gnomemusic/utils.py:75 msgid "Untitled" msgstr "Bez názvu" -#: ../gnomemusic/views/albumsview.py:44 ../gnomemusic/views/searchview.py:454 +#: gnomemusic/views/albumsview.py:44 gnomemusic/views/searchview.py:454 msgid "Albums" msgstr "Alba" -#: ../gnomemusic/views/artistsview.py:52 ../gnomemusic/views/searchview.py:455 +#: gnomemusic/views/artistsview.py:55 gnomemusic/views/searchview.py:455 msgid "Artists" msgstr "Umělci" -#: ../gnomemusic/views/baseview.py:196 +#: gnomemusic/views/baseview.py:196 msgid "Selected {} item" msgid_plural "Selected {} items" msgstr[0] "Vybrána {} položka" msgstr[1] "Vybrány {} položky" msgstr[2] "Vybráno {} položek" -#: ../gnomemusic/views/baseview.py:201 ../gnomemusic/views/baseview.py:303 -#: ../gnomemusic/widgets/albumwidget.py:198 -#: ../gnomemusic/widgets/artistalbumswidget.py:232 ../data/headerbar.ui.h:3 +#: gnomemusic/views/baseview.py:201 gnomemusic/views/baseview.py:303 +#: gnomemusic/widgets/albumwidget.py:198 +#: gnomemusic/widgets/artistalbumswidget.py:232 data/headerbar.ui:33 msgid "Click on items to select them" msgstr "Klikáním vyberte položky" -#: ../gnomemusic/views/emptyview.py:51 +#: gnomemusic/views/emptyview.py:51 msgid "Music folder" msgstr "Složka s hudbou" -#: ../gnomemusic/views/emptysearchview.py:50 +#: gnomemusic/views/emptysearchview.py:50 msgid "Try a different search" msgstr "Zkuste hledat nějak jinak" -#: ../gnomemusic/views/initialstateview.py:50 +#: gnomemusic/views/initialstateview.py:50 msgid "Hey DJ" msgstr "Hej, DJ" -#: ../gnomemusic/views/playlistview.py:58 ../gnomemusic/views/searchview.py:457 +#: gnomemusic/views/playlistview.py:58 gnomemusic/views/searchview.py:457 msgid "Playlists" msgstr "Seznamy k přehrání" -#: ../gnomemusic/views/playlistview.py:420 +#: gnomemusic/views/playlistview.py:420 #, python-format msgid "%d Song" msgid_plural "%d Songs" @@ -291,12 +285,12 @@ msgstr[0] "%d skladba" msgstr[1] "%d skladby" msgstr[2] "%d skladeb" -#: ../gnomemusic/views/searchview.py:456 ../gnomemusic/views/songsview.py:52 +#: gnomemusic/views/searchview.py:456 gnomemusic/views/songsview.py:55 msgid "Songs" msgstr "Skladby" -#: ../gnomemusic/widgets/albumwidget.py:194 -#: ../gnomemusic/widgets/artistalbumswidget.py:228 +#: gnomemusic/widgets/albumwidget.py:194 +#: gnomemusic/widgets/artistalbumswidget.py:228 #, python-format msgid "Selected %d item" msgid_plural "Selected %d items" @@ -304,46 +298,45 @@ msgstr[0] "Vybrána %d položka" msgstr[1] "Vybrány %d položky" msgstr[2] "Vybráno %d položek" -#: ../gnomemusic/widgets/albumwidget.py:291 -#: ../gnomemusic/widgets/albumwidget.py:345 +#: gnomemusic/widgets/albumwidget.py:291 gnomemusic/widgets/albumwidget.py:345 #, python-format msgid "%d min" msgstr "%d min" -#: ../gnomemusic/widgets/disclistboxwidget.py:189 +#: gnomemusic/widgets/disclistboxwidget.py:189 msgid "Disc {}" msgstr "Disk {}" -#: ../gnomemusic/window.py:125 +#: gnomemusic/window.py:125 msgid "Loading" msgstr "Načítá se" #. Undo button -#: ../gnomemusic/window.py:162 +#: gnomemusic/window.py:162 msgid "_Undo" msgstr "_Zpět" -#: ../gnomemusic/window.py:314 +#: gnomemusic/window.py:314 msgid "Empty" msgstr "Prázdné" -#: ../gnomemusic/window.py:390 +#: gnomemusic/window.py:390 msgid "Playlist {} removed" msgstr "Seznam k přehrání {} byl odstraněn" -#: ../data/AboutDialog.ui.in.h:2 +#: data/AboutDialog.ui.in:9 msgid "Copyright © 2016 GNOME Music Developers" msgstr "Copyright © 2016 Vývojáři Hudby GNOME" -#: ../data/AboutDialog.ui.in.h:3 +#: data/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/AboutDialog.ui.in.h:4 +#: data/AboutDialog.ui.in:12 msgid "Visit GNOME Music website" msgstr "Navštívit webové stránky Hudby GNOME" -#: ../data/AboutDialog.ui.in.h:5 +#: data/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 " @@ -395,206 +388,209 @@ msgstr "" "Obrázek „Magic of the vinyl“ od autora Sami Pyylampi je licencován pod CC-BY-" "SA 2.0 https://www.flickr.com/photos/_spy_/12270839403\n" -#: ../data/AlbumWidget.ui.h:1 +#: data/AlbumWidget.ui:110 msgid "Released" msgstr "Vydáno" -#: ../data/AlbumWidget.ui.h:2 +#: data/AlbumWidget.ui:126 msgid "Running Length" msgstr "Délka" -#: ../data/app-menu.ui.h:1 +#: data/app-menu.ui:5 msgid "_Keyboard Shortcuts" msgstr "_Klávesové zkratky" -#: ../data/app-menu.ui.h:2 +#: data/app-menu.ui:9 msgid "_Help" msgstr "_Nápověda" -#: ../data/app-menu.ui.h:3 +#: data/app-menu.ui:15 msgid "_About" msgstr "O _aplikaci" -#: ../data/app-menu.ui.h:4 +#: data/app-menu.ui:19 msgid "_Quit" msgstr "U_končit" -#: ../data/headerbar.ui.h:1 +#: data/headerbar.ui:7 msgid "Select All" msgstr "Vybrat vše" -#: ../data/headerbar.ui.h:2 +#: data/headerbar.ui:12 msgid "Select None" msgstr "Zrušit výběr" -#: ../data/headerbar.ui.h:4 +#: data/headerbar.ui:67 msgid "Search" msgstr "Hledat" -#: ../data/headerbar.ui.h:5 +#: data/headerbar.ui:90 msgid "Select" msgstr "Vybrat" -#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:6 +#: data/headerbar.ui:112 data/PlaylistDialog.ui:264 msgid "_Cancel" msgstr "_Zrušit" -#: ../data/headerbar.ui.h:7 +#: data/headerbar.ui:130 msgid "Back" msgstr "Zpět" -#: ../data/help-overlay.ui.h:1 +#: data/help-overlay.ui:13 msgctxt "shortcut window" msgid "General" msgstr "Obecné" -#: ../data/help-overlay.ui.h:2 +#: data/help-overlay.ui:17 msgctxt "shortcut window" msgid "Close window" msgstr "Zavřít okno" -#: ../data/help-overlay.ui.h:3 +#: data/help-overlay.ui:24 msgctxt "shortcut window" msgid "Search" msgstr "Hledat" -#: ../data/help-overlay.ui.h:4 +#: data/help-overlay.ui:31 msgctxt "shortcut window" msgid "Help" msgstr "Nápověda" -#: ../data/help-overlay.ui.h:5 +#: data/help-overlay.ui:38 msgctxt "shortcut window" msgid "Shortcuts" msgstr "Klávesové zkratky" -#: ../data/help-overlay.ui.h:6 +#: data/help-overlay.ui:47 msgctxt "shortcut window" msgid "Playback" msgstr "Přehrát" -#: ../data/help-overlay.ui.h:7 +#: data/help-overlay.ui:51 msgctxt "shortcut window" msgid "Play/Pause" msgstr "Přehrát/pozastavit" -#: ../data/help-overlay.ui.h:8 +#: data/help-overlay.ui:58 msgctxt "shortcut window" msgid "Next song" msgstr "Následující skladba" -#: ../data/help-overlay.ui.h:9 +#: data/help-overlay.ui:65 msgctxt "shortcut window" msgid "Previous song" msgstr "Předchozí skladba" -#: ../data/help-overlay.ui.h:10 +#: data/help-overlay.ui:72 msgctxt "shortcut window" msgid "Toggle repeat" msgstr "Přepnout opakování" -#: ../data/help-overlay.ui.h:11 +#: data/help-overlay.ui:79 msgctxt "shortcut window" msgid "Toggle shuffle" msgstr "Přepnout náhodný výběr" -#: ../data/help-overlay.ui.h:12 +#: data/help-overlay.ui:88 msgctxt "shortcut window" msgid "Navigation" msgstr "Navigace" -#: ../data/help-overlay.ui.h:13 +#: data/help-overlay.ui:92 msgctxt "shortcut window" msgid "Go to Albums" msgstr "Přejít na alba" -#: ../data/help-overlay.ui.h:14 +#: data/help-overlay.ui:99 msgctxt "shortcut window" msgid "Go to Artists" msgstr "Přejít na umělce" -#: ../data/help-overlay.ui.h:15 +#: data/help-overlay.ui:106 msgctxt "shortcut window" msgid "Go to Songs" msgstr "Přejít na skladby" -#: ../data/help-overlay.ui.h:16 +#: data/help-overlay.ui:113 msgctxt "shortcut window" msgid "Go to Playlists" msgstr "Přejít na seznamy k přehrání" -#: ../data/help-overlay.ui.h:17 +#: data/help-overlay.ui:120 msgctxt "shortcut window" msgid "Go back" msgstr "Přejít zpět" -#: ../data/NoMusic.ui.h:1 +#: data/NoMusic.ui:35 msgid "No music found" msgstr "Nenalezena žádná hudba" -#. Translators: %s will be replaced with a link with text -#: ../data/NoMusic.ui.h:4 -#, no-c-format +#. Translators: %s will be replaced with a link with text 'Music folder' +#: data/NoMusic.ui:55 +#, python-format msgid "The contents of your %s will appear here." msgstr "Zde se objeví, co obsahuje vaše %s." -#: ../data/PlayerToolbar.ui.h:1 +#: data/PlayerToolbar.ui:6 msgid "Shuffle" msgstr "Náhodně zamíchat" -#: ../data/PlayerToolbar.ui.h:2 +#: data/PlayerToolbar.ui:11 msgid "Repeat All" msgstr "Opakovat vše" -#: ../data/PlayerToolbar.ui.h:3 +#: data/PlayerToolbar.ui:16 msgid "Repeat Song" msgstr "Opakovat skladbu" #. Causes tracks to play in random order -#: ../data/PlayerToolbar.ui.h:5 +#: data/PlayerToolbar.ui:21 msgid "Shuffle/Repeat Off" msgstr "Náhodně/opakování vypnuto" -#: ../data/PlaylistControls.ui.h:1 +#: data/PlaylistControls.ui:6 msgid "_Play" msgstr "_Přehrát" -#: ../data/PlaylistControls.ui.h:2 +#: data/PlaylistControls.ui:10 msgid "_Delete" msgstr "_Smazat" -#: ../data/PlaylistControls.ui.h:3 +#: data/PlaylistControls.ui:27 msgid "Playlist Name" msgstr "Název seznamu k přehrání" -#: ../data/PlaylistDialog.ui.h:1 +#: data/PlaylistDialog.ui:63 msgid "Enter a name for your first playlist" msgstr "Zadejte název pro svůj první seznam k přehrání" -#: ../data/PlaylistDialog.ui.h:2 +#: data/PlaylistDialog.ui:88 msgid "C_reate" msgstr "_Vytvořit" -#: ../data/PlaylistDialog.ui.h:3 +#: data/PlaylistDialog.ui:157 msgid "New Playlist" msgstr "Nový seznam k přehrání" -#: ../data/PlaylistDialog.ui.h:4 +#: data/PlaylistDialog.ui:170 msgid "Add" msgstr "Přidat" -#: ../data/PlaylistDialog.ui.h:5 +#: data/PlaylistDialog.ui:261 msgid "Select Playlist" msgstr "Výběr seznamu k přehrání" -#: ../data/PlaylistDialog.ui.h:7 +#: data/PlaylistDialog.ui:276 msgid "_Add" msgstr "Přid_at" -#: ../data/SelectionToolbar.ui.h:1 +#: data/SelectionToolbar.ui:9 msgid "_Add to Playlist" msgstr "Přid_at do seznamu k přehrání" -#: ../data/SelectionToolbar.ui.h:2 +#: data/SelectionToolbar.ui:21 msgid "_Remove from Playlist" msgstr "Odeb_rat ze seznamu k přehrání" + +#~ msgid "the|a|an" +#~ msgstr "-" diff --git a/po/de.po b/po/de.po index b288c781e46f99b1a93fbc7d167c21392c5480b3..55b072f22561934a729614f6b53a15d1ce24db1a 100644 --- a/po/de.po +++ b/po/de.po @@ -11,10 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: gnome-music master\n" -"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" -"music&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2017-02-23 14:56+0000\n" -"PO-Revision-Date: 2017-02-25 20:18+0100\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n" +"POT-Creation-Date: 2017-12-19 16:16+0000\n" +"PO-Revision-Date: 2017-12-28 12:08+0100\n" "Last-Translator: Mario Blättermann \n" "Language-Team: Deutsch \n" "Language: de\n" @@ -22,38 +21,70 @@ 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 1.8.12\n" +"X-Generator: Poedit 2.0.5\n" -#: ../data/org.gnome.Music.gschema.xml.h:1 +#: data/org.gnome.Music.appdata.xml.in:6 +msgid "GNOME Music" +msgstr "GNOME Musik" + +#: data/org.gnome.Music.appdata.xml.in:7 data/org.gnome.Music.desktop.in:5 +msgid "Play and organize your music collection" +msgstr "Geben Sie Ihre Musik wieder und verwalten Sie Ihre Sammlung" + +#: data/org.gnome.Music.appdata.xml.in:9 +msgid "Music is the new GNOME music playing application." +msgstr "Musik ist die neue GNOME-Anwendung zum Abspielen von Musik." + +#: data/org.gnome.Music.desktop.in:3 gnomemusic/application.py:53 +#: gnomemusic/application.py:102 gnomemusic/toolbar.py:89 +#: gnomemusic/window.py:68 data/AboutDialog.ui.in:7 +msgid "Music" +msgstr "Musik" + +#: data/org.gnome.Music.desktop.in:4 +msgid "Music Player" +msgstr "Musikwiedergabe" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Music.desktop.in:7 +msgid "gnome-music" +msgstr "gnome-music" + +#. 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:13 +msgid "Music;Player;" +msgstr "Musik;Wiedergabe;" + +#: data/org.gnome.Music.gschema.xml:12 msgid "Window size" msgstr "Fenstergröße" -#: ../data/org.gnome.Music.gschema.xml.h:2 +#: data/org.gnome.Music.gschema.xml:13 msgid "Window size (width and height)." msgstr "Fenstergröße (Breite und Höhe)." -#: ../data/org.gnome.Music.gschema.xml.h:3 +#: data/org.gnome.Music.gschema.xml:17 msgid "Window position" msgstr "Fensterposition" -#: ../data/org.gnome.Music.gschema.xml.h:4 +#: data/org.gnome.Music.gschema.xml:18 msgid "Window position (x and y)." msgstr "Fensterposition (x und y)." -#: ../data/org.gnome.Music.gschema.xml.h:5 +#: data/org.gnome.Music.gschema.xml:22 msgid "Window maximized" msgstr "Fenster maximiert" -#: ../data/org.gnome.Music.gschema.xml.h:6 +#: data/org.gnome.Music.gschema.xml:23 msgid "Window maximized state." -msgstr "Fenstermaximierungsstatus" +msgstr "Fenstermaximierungsstatus." -#: ../data/org.gnome.Music.gschema.xml.h:7 +#: data/org.gnome.Music.gschema.xml:27 msgid "Playback repeat mode" msgstr "Wiederholungsmodus" #. 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:29 msgid "" "Value identifies whether to repeat or randomize playback through the " "collection. Allowed values are: “none” (repeat and shuffle are off), " @@ -66,106 +97,80 @@ msgstr "" "wiederholen), »all« (alle - die gesamte Wiedergabeliste wiederholen, keine " "Zufallswiedergabe) und »shuffle« (zufällige Wiedergabe aller Titel)." -#: ../data/org.gnome.Music.gschema.xml.h:10 +#: data/org.gnome.Music.gschema.xml:33 msgid "Search mode" msgstr "Suchmodus" -#: ../data/org.gnome.Music.gschema.xml.h:11 +#: data/org.gnome.Music.gschema.xml:34 msgid "If true, the search bar is shown." msgstr "Falls wahr, wird ein Suchfeld angezeigt." -#: ../data/org.gnome.Music.gschema.xml.h:12 +#: data/org.gnome.Music.gschema.xml:38 msgid "Notifications mode" msgstr "Benachrichtigungsmodus" -#: ../data/org.gnome.Music.gschema.xml.h:13 +#: data/org.gnome.Music.gschema.xml:39 msgid "Enables or disables playback notifications" msgstr "" "Legt fest, ob Benachrichtigungen für die Wiedergabe aktiviert werden oder " "nicht" -#: ../data/org.gnome.Music.gschema.xml.h:14 +#: data/org.gnome.Music.gschema.xml:43 msgid "Enable ReplayGain" msgstr "ReplayGain aktivieren" -#: ../data/org.gnome.Music.gschema.xml.h:15 +#: data/org.gnome.Music.gschema.xml:44 msgid "Enables or disables ReplayGain for albums" msgstr "Legt fest, ob ReplayGain für Alben aktiviert werden soll" -#: ../data/org.gnome.Music.gschema.xml.h:16 +#: data/org.gnome.Music.gschema.xml:48 msgid "Inital state has been displayed" msgstr "Originalzustand wurde angezeigt" -#: ../data/org.gnome.Music.gschema.xml.h:17 +#: data/org.gnome.Music.gschema.xml:49 msgid "Set to true when initial state has been displayed" msgstr "Auf wahr setzen, wenn der Originalzustand bereits angezeigt wurde" -#: ../data/gnome-music.desktop.in.h:1 ../gnomemusic/application.py:53 -#: ../gnomemusic/application.py:101 ../gnomemusic/toolbar.py:90 -#: ../gnomemusic/window.py:68 ../data/AboutDialog.ui.in.h:1 -msgid "Music" -msgstr "Musik" - -#: ../data/gnome-music.desktop.in.h:2 -msgid "Music Player" -msgstr "Musikwiedergabe" - -#: ../data/gnome-music.desktop.in.h:3 ../data/gnome-music.appdata.xml.in.h:2 -msgid "Play and organize your music collection" -msgstr "Geben Sie Ihre Musik wieder und verwalten Sie Ihre Sammlung" - -#: ../data/gnome-music.desktop.in.h:4 -msgid "Music;Player;" -msgstr "Musik;Wiedergabe;" - -#: ../data/gnome-music.appdata.xml.in.h:1 -msgid "GNOME Music" -msgstr "GNOME Musik" - -#: ../data/gnome-music.appdata.xml.in.h:3 -msgid "Music is the new GNOME music playing application." -msgstr "Musik ist die neue GNOME-Anwendung zum Abspielen von Musik." - -#: ../gnomemusic/notification.py:55 ../data/PlayerToolbar.ui.h:6 +#: gnomemusic/notification.py:55 data/PlayerToolbar.ui:70 msgid "Previous" msgstr "Vorheriges" -#: ../gnomemusic/notification.py:58 ../gnomemusic/player.py:559 +#: gnomemusic/notification.py:58 gnomemusic/player.py:558 msgid "Pause" msgstr "Pause" -#: ../gnomemusic/notification.py:61 ../gnomemusic/player.py:562 -#: ../data/PlayerToolbar.ui.h:7 +#: gnomemusic/notification.py:61 gnomemusic/player.py:561 +#: data/PlayerToolbar.ui:87 msgid "Play" msgstr "Abspielen" -#: ../gnomemusic/notification.py:63 ../data/PlayerToolbar.ui.h:8 +#: gnomemusic/notification.py:63 data/PlayerToolbar.ui:104 msgid "Next" msgstr "Nächstes" -#: ../gnomemusic/player.py:1132 +#: gnomemusic/player.py:1167 msgid "Unable to play the file" msgstr "Datei kann nicht abgespielt werden" #. 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:1137 +#: gnomemusic/player.py:1172 #, python-format msgid "_Find in %s" msgstr "In %s _suchen" #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1147 +#: gnomemusic/player.py:1182 msgid " and " msgstr " und " #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1150 +#: gnomemusic/player.py:1185 msgid ", " msgstr ", " -#: ../gnomemusic/player.py:1151 +#: gnomemusic/player.py:1186 #, 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." @@ -175,176 +180,164 @@ msgstr[1] "" "%s werden zum Abspielen der Datei benötigt, sind aber nicht installiert." #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:59 +#: gnomemusic/playlists.py:58 msgid "Most Played" msgstr "Am häufigsten wiedergegeben" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:64 +#: gnomemusic/playlists.py:63 msgid "Never Played" msgstr "Noch nie wiedergegeben" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:69 +#: gnomemusic/playlists.py:68 msgid "Recently Played" msgstr "Zuletzt wiedergegeben" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:74 +#: gnomemusic/playlists.py:73 msgid "Recently Added" msgstr "Zuletzt hinzugefügt" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:79 +#: gnomemusic/playlists.py:78 msgid "Favorite Songs" msgstr "Lieblingstitel" -#. TRANSLATORS: The following translatable string should be a -#. vertical bar-separated list of all-lowercase articles that -#. should be ignored when alphabetizing artists/albums. This -#. list should include the basic english translatable strings -#. regardless of language because they are so universal. -#. If some articles occur more frequently than others, the most -#. common one should appear first, the least common one last. -#: ../gnomemusic/query.py:90 -msgid "the|a|an" -msgstr "the|a|an|der|die|ein|eine" - -#: ../gnomemusic/searchbar.py:63 ../gnomemusic/searchbar.py:111 +#: gnomemusic/searchbar.py:62 gnomemusic/searchbar.py:110 msgid "All" msgstr "Alle" -#: ../gnomemusic/searchbar.py:64 +#: gnomemusic/searchbar.py:63 msgid "Artist" msgstr "Künstler" -#: ../gnomemusic/searchbar.py:65 +#: gnomemusic/searchbar.py:64 msgid "Album" msgstr "Album" -#: ../gnomemusic/searchbar.py:66 ../data/AlbumWidget.ui.h:3 +#: gnomemusic/searchbar.py:65 data/AlbumWidget.ui:171 msgid "Composer" msgstr "Komponist" -#: ../gnomemusic/searchbar.py:67 +#: gnomemusic/searchbar.py:66 msgid "Track Title" msgstr "Stücktitel" -#: ../gnomemusic/searchbar.py:112 +#: gnomemusic/searchbar.py:111 msgid "Local" msgstr "Lokal" -#: ../gnomemusic/searchbar.py:224 +#: gnomemusic/searchbar.py:223 msgid "Sources" msgstr "Quellen" -#: ../gnomemusic/searchbar.py:231 +#: gnomemusic/searchbar.py:230 msgid "Match" msgstr "Übereinstimmung" -#: ../gnomemusic/utils.py:63 +#: gnomemusic/utils.py:63 msgid "Unknown Artist" msgstr "Unbekannter Künstler" -#: ../gnomemusic/utils.py:75 +#: gnomemusic/utils.py:75 msgid "Untitled" msgstr "Unbenannt" -#: ../gnomemusic/views/albumsview.py:44 ../gnomemusic/views/searchview.py:454 +#: gnomemusic/views/albumsview.py:44 gnomemusic/views/searchview.py:484 msgid "Albums" msgstr "Alben" -#: ../gnomemusic/views/artistsview.py:52 ../gnomemusic/views/searchview.py:455 +#: gnomemusic/views/artistsview.py:55 gnomemusic/views/searchview.py:486 msgid "Artists" msgstr "Künstler" -#: ../gnomemusic/views/baseview.py:196 +#: gnomemusic/views/baseview.py:196 msgid "Selected {} item" msgid_plural "Selected {} items" msgstr[0] "{} Objekt gewählt" msgstr[1] "{} Objekte gewählt" -#: ../gnomemusic/views/baseview.py:201 ../gnomemusic/views/baseview.py:303 -#: ../gnomemusic/widgets/albumwidget.py:201 -#: ../gnomemusic/widgets/artistalbumswidget.py:209 ../data/headerbar.ui.h:3 +#: gnomemusic/views/baseview.py:201 gnomemusic/views/baseview.py:303 +#: gnomemusic/widgets/albumwidget.py:196 +#: gnomemusic/widgets/artistalbumswidget.py:232 data/headerbar.ui:33 msgid "Click on items to select them" msgstr "Klicken Sie auf ein Objekt, um es auszuwählen" -#: ../gnomemusic/views/emptyview.py:51 +#: gnomemusic/views/emptyview.py:51 msgid "Music folder" msgstr "Musikordner" -#: ../gnomemusic/views/emptysearchview.py:50 +#: gnomemusic/views/emptysearchview.py:52 msgid "Try a different search" msgstr "Andere Suche ausprobieren" -#: ../gnomemusic/views/initialstateview.py:50 +#: gnomemusic/views/initialstateview.py:50 msgid "Hey DJ" msgstr "Hey DJ" -#: ../gnomemusic/views/playlistview.py:51 ../gnomemusic/views/searchview.py:457 +#: gnomemusic/views/playlistview.py:58 gnomemusic/views/searchview.py:490 msgid "Playlists" msgstr "Wiedergabelisten" -#: ../gnomemusic/views/playlistview.py:408 +#: gnomemusic/views/playlistview.py:438 #, python-format msgid "%d Song" msgid_plural "%d Songs" msgstr[0] "%d Titel" msgstr[1] "%d Titel" -#: ../gnomemusic/views/searchview.py:456 ../gnomemusic/views/songsview.py:52 +#: gnomemusic/views/searchview.py:488 gnomemusic/views/songsview.py:55 msgid "Songs" msgstr "Titel" -#: ../gnomemusic/widgets/albumwidget.py:197 -#: ../gnomemusic/widgets/artistalbumswidget.py:207 +#: gnomemusic/widgets/albumwidget.py:192 +#: gnomemusic/widgets/artistalbumswidget.py:228 #, python-format msgid "Selected %d item" msgid_plural "Selected %d items" msgstr[0] "%d Objekt gewählt" msgstr[1] "%d Objekte gewählt" -#: ../gnomemusic/widgets/albumwidget.py:294 -#: ../gnomemusic/widgets/albumwidget.py:348 +#: gnomemusic/widgets/albumwidget.py:288 gnomemusic/widgets/albumwidget.py:343 #, python-format msgid "%d min" msgstr "%d min" -#: ../gnomemusic/widgets/disclistboxwidget.py:192 +#: gnomemusic/widgets/disclistboxwidget.py:189 msgid "Disc {}" msgstr "Disc {}" -#: ../gnomemusic/window.py:128 +#: gnomemusic/window.py:125 msgid "Loading" msgstr "Laden" #. Undo button -#: ../gnomemusic/window.py:183 +#: gnomemusic/window.py:162 msgid "_Undo" msgstr "_Rückgängig" -#: ../gnomemusic/window.py:342 +#: gnomemusic/window.py:314 msgid "Empty" msgstr "Leer" -#: ../gnomemusic/window.py:419 +#: gnomemusic/window.py:390 msgid "Playlist {} removed" msgstr "Wiedergabeliste {} entfernt" -#: ../data/AboutDialog.ui.in.h:2 +#: data/AboutDialog.ui.in:9 msgid "Copyright © 2016 GNOME Music Developers" msgstr "Copyright © 2016 GNOME-Musik-Entwickler" -#: ../data/AboutDialog.ui.in.h:3 +#: data/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/AboutDialog.ui.in.h:4 +#: data/AboutDialog.ui.in:12 msgid "Visit GNOME Music website" msgstr "Besuchen Sie die GNOME-Musik-Webseite" -#: ../data/AboutDialog.ui.in.h:5 +#: data/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 " @@ -401,298 +394,215 @@ msgstr "" "lizenziert, https://www.flickr.com/photos/_spy_/12270839403\n" "\n" -#: ../data/AlbumWidget.ui.h:1 +#: data/AlbumWidget.ui:110 msgid "Released" msgstr "Erschienen" -#: ../data/AlbumWidget.ui.h:2 +#: data/AlbumWidget.ui:126 msgid "Running Length" msgstr "Spielzeit" -#: ../data/app-menu.ui.h:1 +#: data/app-menu.ui:5 msgid "_Keyboard Shortcuts" msgstr "Tasten_kombinationen" -#: ../data/app-menu.ui.h:2 +#: data/app-menu.ui:9 msgid "_Help" msgstr "_Hilfe" -#: ../data/app-menu.ui.h:3 +#: data/app-menu.ui:15 msgid "_About" msgstr "_Info" -#: ../data/app-menu.ui.h:4 +#: data/app-menu.ui:19 msgid "_Quit" msgstr "_Beenden" -#: ../data/headerbar.ui.h:1 +#: data/headerbar.ui:7 msgid "Select All" msgstr "Alle auswählen" -#: ../data/headerbar.ui.h:2 +#: data/headerbar.ui:12 msgid "Select None" msgstr "Keinen auswählen" -#: ../data/headerbar.ui.h:4 +#: data/headerbar.ui:67 msgid "Search" msgstr "Suchen" -#: ../data/headerbar.ui.h:5 +#: data/headerbar.ui:90 msgid "Select" msgstr "Auswählen" -#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:5 +#: data/headerbar.ui:112 data/PlaylistDialog.ui:264 msgid "_Cancel" msgstr "A_bbrechen" -#: ../data/headerbar.ui.h:7 +#: data/headerbar.ui:130 msgid "Back" msgstr "Zurück" -#: ../data/help-overlay.ui.h:1 +#: data/help-overlay.ui:13 msgctxt "shortcut window" msgid "General" msgstr "Allgemein" -#: ../data/help-overlay.ui.h:2 +#: data/help-overlay.ui:17 msgctxt "shortcut window" msgid "Close window" msgstr "Fenster schließen" -#: ../data/help-overlay.ui.h:3 +#: data/help-overlay.ui:24 msgctxt "shortcut window" msgid "Search" msgstr "Suchen" -#: ../data/help-overlay.ui.h:4 +#: data/help-overlay.ui:31 msgctxt "shortcut window" msgid "Help" msgstr "Hilfe" -#: ../data/help-overlay.ui.h:5 +#: data/help-overlay.ui:38 msgctxt "shortcut window" msgid "Shortcuts" msgstr "Tastenkürzel" -#: ../data/help-overlay.ui.h:6 +#: data/help-overlay.ui:47 msgctxt "shortcut window" msgid "Playback" msgstr "Abspielen" -#: ../data/help-overlay.ui.h:7 +#: data/help-overlay.ui:51 msgctxt "shortcut window" msgid "Play/Pause" msgstr "Wiedergabe/Pause" -#: ../data/help-overlay.ui.h:8 +#: data/help-overlay.ui:58 msgctxt "shortcut window" msgid "Next song" msgstr "Nächster Titel" -#: ../data/help-overlay.ui.h:9 +#: data/help-overlay.ui:65 msgctxt "shortcut window" msgid "Previous song" msgstr "Vorheriger Titel" -#: ../data/help-overlay.ui.h:10 +#: data/help-overlay.ui:72 msgctxt "shortcut window" msgid "Toggle repeat" msgstr "Wiederholung ein-/ausschalten" -#: ../data/help-overlay.ui.h:11 +#: data/help-overlay.ui:79 msgctxt "shortcut window" msgid "Toggle shuffle" msgstr "Mischen ein-/ausschalten" -#: ../data/help-overlay.ui.h:12 +#: data/help-overlay.ui:88 msgctxt "shortcut window" msgid "Navigation" msgstr "Navigation" -#: ../data/help-overlay.ui.h:13 +#: data/help-overlay.ui:92 msgctxt "shortcut window" msgid "Go to Albums" msgstr "Zu Alben gehen" -#: ../data/help-overlay.ui.h:14 +#: data/help-overlay.ui:99 msgctxt "shortcut window" msgid "Go to Artists" msgstr "Zu Künstlern gehen" -#: ../data/help-overlay.ui.h:15 +#: data/help-overlay.ui:106 msgctxt "shortcut window" msgid "Go to Songs" msgstr "Zu Titeln gehen" -#: ../data/help-overlay.ui.h:16 +#: data/help-overlay.ui:113 msgctxt "shortcut window" msgid "Go to Playlists" msgstr "Zu Wiedergabelisten gehen" -#: ../data/help-overlay.ui.h:17 +#: data/help-overlay.ui:120 msgctxt "shortcut window" msgid "Go back" msgstr "Zurück gehen" -#: ../data/NoMusic.ui.h:1 +#: data/NoMusic.ui:35 msgid "No music found" msgstr "Keine Musik gefunden" # Der Inhalt von Ihrem »Musikordner« … -#. Translators: %s will be replaced with a link with text -#: ../data/NoMusic.ui.h:4 -#, no-c-format +#. Translators: %s will be replaced with a link with text 'Music folder' +#: data/NoMusic.ui:55 +#, python-format msgid "The contents of your %s will appear here." msgstr "Der Inhalt von Ihrem %s wird hier angezeigt werden." -#: ../data/PlayerToolbar.ui.h:1 +#: data/PlayerToolbar.ui:6 msgid "Shuffle" msgstr "Zufällig" -#: ../data/PlayerToolbar.ui.h:2 +#: data/PlayerToolbar.ui:11 msgid "Repeat All" msgstr "Alle wiederholen" -#: ../data/PlayerToolbar.ui.h:3 +#: data/PlayerToolbar.ui:16 msgid "Repeat Song" msgstr "Titel wiederholen" #. Causes tracks to play in random order -#: ../data/PlayerToolbar.ui.h:5 +#: data/PlayerToolbar.ui:21 msgid "Shuffle/Repeat Off" msgstr "Zufall/Wiederholung aus" -#: ../data/PlaylistControls.ui.h:1 +#: data/PlaylistControls.ui:6 msgid "_Play" msgstr "_Wiedergabe" -#: ../data/PlaylistControls.ui.h:2 +#: data/PlaylistControls.ui:10 msgid "_Delete" msgstr "_Entfernen" -#: ../data/PlaylistControls.ui.h:3 +#: data/PlaylistControls.ui:14 +msgid "_Rename…" +msgstr "_Umbenennen …" + +#: data/PlaylistControls.ui:33 msgid "Playlist Name" msgstr "Name der Wiedergabeliste" -#: ../data/PlaylistDialog.ui.h:1 +#: data/PlaylistControls.ui:65 +msgid "_Done" +msgstr "_Fertig" + +#: data/PlaylistDialog.ui:63 msgid "Enter a name for your first playlist" msgstr "Geben Sie einen Namen für Ihre erste Wiedergabeliste ein" -#: ../data/PlaylistDialog.ui.h:2 +#: data/PlaylistDialog.ui:88 msgid "C_reate" msgstr "An_legen" -#: ../data/PlaylistDialog.ui.h:3 +#: data/PlaylistDialog.ui:157 msgid "New Playlist" msgstr "Neue Wiedergabeliste" -#: ../data/PlaylistDialog.ui.h:4 +#: data/PlaylistDialog.ui:170 msgid "Add" msgstr "Hinzufügen" -#: ../data/PlaylistDialog.ui.h:6 +#: data/PlaylistDialog.ui:261 +msgid "Select Playlist" +msgstr "Wiedergabeliste auswählen" + +#: data/PlaylistDialog.ui:276 msgid "_Add" msgstr "_Hinzufügen" -#: ../data/SelectionToolbar.ui.h:1 +#: data/SelectionToolbar.ui:9 msgid "_Add to Playlist" msgstr "Zur Wiedergabeliste _hinzufügen" -#: ../data/SelectionToolbar.ui.h:2 +#: data/SelectionToolbar.ui:21 msgid "_Remove from Playlist" msgstr "Aus der Wiedergabeliste entfe_rnen" - -#~ msgid "Max chars to display in track name on Artist view" -#~ msgstr "" -#~ "Maximale Anzahl von Zeichen, die für den Titelnamen in der " -#~ "Künstleransicht verwendet werden" - -#~ 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 "" -#~ "Diese Einstellung verändert die Anzahl von Zeichen für Titelnamen, die in " -#~ "der Künstleransicht angezeigt werden, bevor sie abgeschnitten werden. Zum " -#~ "Abschalten auf -1 einstellen" - -#~ msgid "Unknown Album" -#~ msgstr "Unbekanntes Album" - -#~ msgid "the a an" -#~ msgstr "the der die das ein eine" - -#~ msgid "All Artists" -#~ msgstr "Alle Künstler" - -#~ msgid "Not playing" -#~ msgstr "Keine Wiedergabe" - -#~ msgid "by %s, from %s" -#~ msgstr "von %s, aus %s" - -#~ msgid "Select Playlist" -#~ msgstr "Wiedergabeliste auswählen" - -# Da müssten theoretisch auch die unbestimmten Artikel mit rein, aber dann womöglich auch im Original. Lasse es deswegen erstmal raus: https://bugzilla.gnome.org/attachment.cgi?id=293368&action=diff -#~ msgid "the" -#~ msgstr "the der die das" - -#~ msgid "_New Playlist" -#~ msgstr "_Neue Wiedergabeliste" - -#~ msgid "" -#~ "No Music found!\n" -#~ " Put some files into the folder %s" -#~ msgstr "" -#~ "Keine Musik gefunden!\n" -#~ "Verschieben Sie einige Dateien in den Ordner %s" - -#~ msgid "Load More" -#~ msgstr "Mehr Laden" - -#~ msgid "Now _Playing" -#~ msgstr "_Momentan wiedergegeben" - -#~ msgid "----" -#~ msgstr "----" - -#~ msgid "--:--" -#~ msgstr "--:--" - -#, fuzzy -#~ msgid "0:00" -#~ msgstr "00:00" - -#~ msgid "/" -#~ msgstr "/" - -#~ msgid "Released" -#~ msgstr "Erschienen" - -#~ msgid "Running Length" -#~ msgstr "Laufzeit" - -#~ msgid "New" -#~ msgstr "Neu" - -#~ msgid "Quit" -#~ msgstr "Beenden" - -#~ msgid "translator-credits" -#~ msgstr "Mario Blättermann " - -#~ msgid "A GNOME 3 application to listen and manage music playlists" -#~ msgstr "" -#~ "Eine Anwendung für GNOME 3 zum Musik hören und Verwalten von " -#~ "Wiedergabelisten" - -#~ msgid "%02u:%02u:%02u" -#~ msgstr "%02u:%02u:%02u" - -#~ msgid "%02u:%02u" -#~ msgstr "%02u:%02u" - -#~ msgid "If true, do randomized playback through the collection" -#~ msgstr "" -#~ "Falls wahr, wird die Wiedergabe per Zufallsauswahl aus der Sammlung " -#~ "ausgeführt" diff --git a/po/fa.po b/po/fa.po index 69994f2105c78fa07be07ff07b1a9653a2dc46c5..00de4153d1861e516e47afae439f0ea09de557a2 100644 --- a/po/fa.po +++ b/po/fa.po @@ -2,25 +2,51 @@ # Copyright (C) 2013 gnome-music's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-music package. # royaniva , 2013. -# Arash Mousavi , 2013, 2014, 2015. +# Arash Mousavi , 2013, 2014, 2015, 2017. # Danial Behzadi , 2014. # msgid "" msgstr "" "Project-Id-Version: gnome-music master\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "music&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2016-08-17 06:08+0000\n" -"PO-Revision-Date: 2016-09-13 13:06+0430\n" +"POT-Creation-Date: 2017-07-31 18:57+0000\n" +"PO-Revision-Date: 2017-09-29 18:57+0330\n" "Last-Translator: Arash Mousavi \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 1.8.9\n" +"X-Generator: Poedit 2.0.4\n" "Plural-Forms: nplurals=1; plural=0;\n" +#: ../data/org.gnome.Music.appdata.xml.in.h:1 +msgid "GNOME Music" +msgstr "آهنگهای گنوم" + +#: ../data/org.gnome.Music.appdata.xml.in.h:2 ../data/org.gnome.Music.desktop.in.h:3 +msgid "Play and organize your music collection" +msgstr "پخش و سازماندهی مجموعه آهنگهای شما" + +#: ../data/org.gnome.Music.appdata.xml.in.h:3 +msgid "Music is the new GNOME music playing application." +msgstr "آهنگها برنامه پخش آهنگ جدید گنوم است." + +#: ../data/org.gnome.Music.desktop.in.h:1 ../gnomemusic/application.py:53 +#: ../gnomemusic/application.py:101 ../gnomemusic/toolbar.py:90 +#: ../gnomemusic/window.py:68 ../data/AboutDialog.ui.in.h:1 +msgid "Music" +msgstr "آهنگها" + +#: ../data/org.gnome.Music.desktop.in.h:2 +msgid "Music Player" +msgstr "پخشکنندهی آهنگ" + +#: ../data/org.gnome.Music.desktop.in.h:4 +msgid "Music;Player;" +msgstr "Music;Player;پخشکننده;موزیک;" + #: ../data/org.gnome.Music.gschema.xml.h:1 msgid "Window size" msgstr "اندازه پنجره" @@ -53,9 +79,9 @@ msgstr "حالت تکرار پخش" #: ../data/org.gnome.Music.gschema.xml.h:9 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)." +"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» (آواز کنونی تکرار " @@ -79,77 +105,30 @@ msgid "Enables or disables playback notifications" 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.h:15 -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 "" -"این تنظیم تعداد نویسههای عنوان قطعه را در نمای هنرمند قبل از خلاصه شدن تعیین " -"میکند. برو روی -1 تنظیم کنید تا غیرفعال شود" - -#: ../data/org.gnome.Music.gschema.xml.h:16 msgid "Enable ReplayGain" msgstr "فعالسازی ReplayGain" -#: ../data/org.gnome.Music.gschema.xml.h:17 +#: ../data/org.gnome.Music.gschema.xml.h:15 msgid "Enables or disables ReplayGain for albums" msgstr "فعال یا غیرفعالسازی ReplayGain برای آلبومها" -#: ../data/org.gnome.Music.gschema.xml.h:18 +#: ../data/org.gnome.Music.gschema.xml.h:16 msgid "Inital state has been displayed" msgstr "وضعیت ابتدایی نمایش داده شده" -#: ../data/org.gnome.Music.gschema.xml.h:19 +#: ../data/org.gnome.Music.gschema.xml.h:17 msgid "Set to true when initial state has been displayed" 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/gnome-music.desktop.in.h:2 -msgid "Music Player" -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/gnome-music.desktop.in.h:4 -msgid "Music;Player;" -msgstr "Music;Player;پخشکننده;موزیک;" - -#: ../data/gnome-music.appdata.xml.in.h:1 -msgid "GNOME Music" -msgstr "آهنگهای گنوم" - -#: ../data/gnome-music.appdata.xml.in.h:3 -msgid "Music is the new GNOME music playing application." -msgstr "آهنگها برنامه پخش آهنگ جدید گنوم است." - -#: ../gnomemusic/albumartcache.py:171 ../gnomemusic/albumartcache.py:179 -msgid "Untitled" -msgstr "بدون عنوان" - -#: ../gnomemusic/mpris.py:315 ../gnomemusic/player.py:604 ../gnomemusic/view.py:576 -#: ../gnomemusic/view.py:988 ../gnomemusic/view.py:1456 -msgid "Unknown Album" -msgstr "آلبوم ناشناس" - #: ../gnomemusic/notification.py:55 ../data/PlayerToolbar.ui.h:6 msgid "Previous" msgstr "قبلی" -#: ../gnomemusic/notification.py:58 ../gnomemusic/player.py:557 +#: ../gnomemusic/notification.py:58 ../gnomemusic/player.py:558 msgid "Pause" msgstr "مکث" -#: ../gnomemusic/notification.py:61 ../gnomemusic/player.py:560 +#: ../gnomemusic/notification.py:61 ../gnomemusic/player.py:561 #: ../data/PlayerToolbar.ui.h:7 msgid "Play" msgstr "پخش" @@ -158,178 +137,191 @@ msgstr "پخش" msgid "Next" msgstr "بعدی" -#: ../gnomemusic/player.py:1087 +#: ../gnomemusic/player.py:1167 msgid "Unable to play the file" 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:1092 +#: ../gnomemusic/player.py:1172 #, python-format msgid "_Find in %s" msgstr "_جستوجو در %s" #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1102 +#: ../gnomemusic/player.py:1182 msgid " and " msgstr "و" #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1105 +#: ../gnomemusic/player.py:1185 msgid ", " msgstr "،" -#: ../gnomemusic/player.py:1106 +#: ../gnomemusic/player.py:1186 #, 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 لازم است، اما نصب نشده است." #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:52 +#: ../gnomemusic/playlists.py:59 msgid "Most Played" msgstr "بیشترین پخش شده" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:58 +#: ../gnomemusic/playlists.py:64 msgid "Never Played" msgstr "هیچ وقت پخش نشده" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:64 +#: ../gnomemusic/playlists.py:69 msgid "Recently Played" msgstr "اخیرا پخش شده" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:70 +#: ../gnomemusic/playlists.py:74 msgid "Recently Added" msgstr "اخیرا اضافه شده" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:76 +#: ../gnomemusic/playlists.py:79 msgid "Favorite Songs" msgstr "آهنگهای مورد علاقه" #. TRANSLATORS: The following translatable string should be a -#. space-separated list of all-lowercase articles that should be -#. ignored when alphabetizing artists/albums. This list should -#. include the basic english translatable strings regardless of -#. language because it is so universal. +#. vertical bar-separated list of all-lowercase articles that +#. should be ignored when alphabetizing artists/albums. This +#. list should include the basic english translatable strings +#. regardless of language because they are so universal. #. If some articles occur more frequently than others, the most #. common one should appear first, the least common one last. -#: ../gnomemusic/query.py:93 -msgid "the a an" -msgstr "the a an" +#: ../gnomemusic/query.py:90 +msgid "the|a|an" +msgstr "the|a|an" -#: ../gnomemusic/searchbar.py:62 ../gnomemusic/searchbar.py:109 +#: ../gnomemusic/searchbar.py:63 ../gnomemusic/searchbar.py:111 msgid "All" msgstr "همه" -#: ../gnomemusic/searchbar.py:63 +#: ../gnomemusic/searchbar.py:64 msgid "Artist" msgstr "هنرمند" -#: ../gnomemusic/searchbar.py:64 +#: ../gnomemusic/searchbar.py:65 msgid "Album" msgstr "آلبوم" -#: ../gnomemusic/searchbar.py:65 +#: ../gnomemusic/searchbar.py:66 ../data/AlbumWidget.ui.h:3 +msgid "Composer" +msgstr "آهنگساز" + +#: ../gnomemusic/searchbar.py:67 msgid "Track Title" msgstr "نام آهنگ" -#: ../gnomemusic/searchbar.py:110 +#: ../gnomemusic/searchbar.py:112 msgid "Local" msgstr "محلی" -#: ../gnomemusic/searchbar.py:222 +#: ../gnomemusic/searchbar.py:224 msgid "Sources" msgstr "منابع" -#: ../gnomemusic/searchbar.py:229 +#: ../gnomemusic/searchbar.py:231 msgid "Match" msgstr "هماهنگ" -#: ../gnomemusic/utils.py:44 ../gnomemusic/view.py:1161 +#: ../gnomemusic/utils.py:63 msgid "Unknown Artist" msgstr "هنرمند ناشناس" -#: ../gnomemusic/view.py:192 ../gnomemusic/widgets.py:325 -#: ../gnomemusic/widgets.py:590 ../gnomemusic/window.py:310 -#, python-format -msgid "Selected %d item" -msgid_plural "Selected %d items" -msgstr[0] "تعداد %d مورد انتخاب شد" +#: ../gnomemusic/utils.py:75 +msgid "Untitled" +msgstr "بدون عنوان" -#: ../gnomemusic/view.py:194 ../gnomemusic/widgets.py:329 -#: ../gnomemusic/widgets.py:592 ../gnomemusic/window.py:314 -#: ../gnomemusic/window.py:326 ../data/headerbar.ui.h:3 +#: ../gnomemusic/views/albumsview.py:44 ../gnomemusic/views/searchview.py:454 +msgid "Albums" +msgstr "آلبومها" + +#: ../gnomemusic/views/artistsview.py:52 ../gnomemusic/views/searchview.py:455 +msgid "Artists" +msgstr "هنرمندان" + +#: ../gnomemusic/views/baseview.py:196 +msgid "Selected {} item" +msgid_plural "Selected {} items" +msgstr[0] "تعداد {} مورد انتخاب شد" + +#: ../gnomemusic/views/baseview.py:201 ../gnomemusic/views/baseview.py:303 +#: ../gnomemusic/widgets/albumwidget.py:198 +#: ../gnomemusic/widgets/artistalbumswidget.py:232 ../data/headerbar.ui.h:3 msgid "Click on items to select them" msgstr "برای انتخاب موارد رویشان کلیک کنید" -#: ../gnomemusic/view.py:277 +#: ../gnomemusic/views/emptyview.py:51 msgid "Music folder" msgstr "پوشه موسیقی" -#: ../gnomemusic/view.py:300 +#: ../gnomemusic/views/emptysearchview.py:50 +msgid "Try a different search" +msgstr "جستوجو دیگری را امتحان کنید" + +#: ../gnomemusic/views/initialstateview.py:50 msgid "Hey DJ" msgstr "هی دیجی" -#: ../gnomemusic/view.py:312 ../gnomemusic/view.py:1731 -msgid "Albums" -msgstr "آلبومها" - -#: ../gnomemusic/view.py:413 ../gnomemusic/view.py:1733 -msgid "Songs" -msgstr "آهنگها" - -#: ../gnomemusic/view.py:612 ../gnomemusic/view.py:1732 -msgid "Artists" -msgstr "هنرمندان" - -#: ../gnomemusic/view.py:814 ../gnomemusic/view.py:1734 +#: ../gnomemusic/views/playlistview.py:58 ../gnomemusic/views/searchview.py:457 msgid "Playlists" msgstr "فهرستهای پخش" -#: ../gnomemusic/view.py:1171 +#: ../gnomemusic/views/playlistview.py:420 #, python-format msgid "%d Song" msgid_plural "%d Songs" msgstr[0] "%d آهنگ" -#: ../gnomemusic/view.py:1314 -msgid "Try a different search" -msgstr "جستوجو دیگری را امتحان کنید" +#: ../gnomemusic/views/searchview.py:456 ../gnomemusic/views/songsview.py:52 +msgid "Songs" +msgstr "آهنگها" -#: ../gnomemusic/widgets.py:381 ../gnomemusic/widgets.py:429 +#: ../gnomemusic/widgets/albumwidget.py:194 +#: ../gnomemusic/widgets/artistalbumswidget.py:228 +#, python-format +msgid "Selected %d item" +msgid_plural "Selected %d items" +msgstr[0] "تعداد %d مورد انتخاب شد" + +#: ../gnomemusic/widgets/albumwidget.py:291 ../gnomemusic/widgets/albumwidget.py:345 #, python-format msgid "%d min" msgstr "%d دقیقه" -#: ../gnomemusic/widgets.py:602 -msgid "All Artists" -msgstr "تمام هنرمندان" - -#: ../gnomemusic/window.py:256 -msgid "Empty" -msgstr "خالی" +#: ../gnomemusic/widgets/disclistboxwidget.py:189 +msgid "Disc {}" +msgstr "دیسک {}" -#: ../gnomemusic/window.py:343 +#: ../gnomemusic/window.py:125 msgid "Loading" msgstr "درحال بار کردن" -#: ../gnomemusic/window.py:366 +#. Undo button +#: ../gnomemusic/window.py:162 msgid "_Undo" msgstr "_برگردان" -#: ../gnomemusic/window.py:367 -#, python-format -msgid "Playlist %s removed" -msgstr "فهرستپخش %s حذف شد" +#: ../gnomemusic/window.py:314 +msgid "Empty" +msgstr "خالی" + +#: ../gnomemusic/window.py:390 +msgid "Playlist {} removed" +msgstr "فهرستپخش {} حذف شد" #: ../data/AboutDialog.ui.in.h:2 -msgid "Copyright © 2013 GNOME Music Developers" -msgstr "حقرونوشت © توسعهدهندگان آهنگهای گنوم" +msgid "Copyright © 2016 GNOME Music Developers" +msgstr "حقرونوشت © ۲۰۱۶ توسعهدهندگان آهنگهای گنوم" #: ../data/AboutDialog.ui.in.h:3 msgid "A music player and management application for GNOME." @@ -361,7 +353,7 @@ msgid "" "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://" +"“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 "" "برنامهی آهنگهای گنوم یک نرمافزار آزاد است؛ شما میتوانید آن را تحت شرایط پروانهی " @@ -426,9 +418,9 @@ msgstr "جستوجو" msgid "Select" msgstr "انتخاب" -#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:1 -msgid "Cancel" -msgstr "لغو" +#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:6 +msgid "_Cancel" +msgstr "_لغو" #: ../data/headerbar.ui.h:7 msgid "Back" @@ -558,21 +550,56 @@ msgstr "_حذف" msgid "Playlist Name" msgstr "نام فهرستپخش" +#: ../data/PlaylistDialog.ui.h:1 +msgid "Enter a name for your first playlist" +msgstr "یک نام برای اولین فهرستپخش خود وارد کنید" + #: ../data/PlaylistDialog.ui.h:2 -msgid "Add" -msgstr "اضافه کردن" +msgid "C_reate" +msgstr "ا_یجاد" #: ../data/PlaylistDialog.ui.h:3 msgid "New Playlist" msgstr "فهرستپخش جدید" +#: ../data/PlaylistDialog.ui.h:4 +msgid "Add" +msgstr "اضافه کردن" + +#: ../data/PlaylistDialog.ui.h:5 +msgid "Select Playlist" +msgstr "انتخاب فهرستپخش" + +#: ../data/PlaylistDialog.ui.h:7 +msgid "_Add" +msgstr "ا_فزودن" + #: ../data/SelectionToolbar.ui.h:1 -msgid "Add to Playlist" -msgstr "افزودن به فهرست پخش" +msgid "_Add to Playlist" +msgstr "ا_فزودن به فهرست پخش" #: ../data/SelectionToolbar.ui.h:2 -msgid "Remove from Playlist" -msgstr "حذف از فهرست پخش" +msgid "_Remove from Playlist" +msgstr "_حذف از فهرست پخش" + +#~ msgid "Max chars to display in track name on Artist view" +#~ 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" +#~ msgstr "" +#~ "این تنظیم تعداد نویسههای عنوان قطعه را در نمای هنرمند قبل از خلاصه شدن تعیین " +#~ "میکند. برو روی -1 تنظیم کنید تا غیرفعال شود" + +#~ msgid "Unknown Album" +#~ msgstr "آلبوم ناشناس" + +#~ msgid "the a an" +#~ msgstr "the a an" + +#~ msgid "All Artists" +#~ msgstr "تمام هنرمندان" #~ msgid "Not playing" #~ msgstr "چیزی پخش نمیشود" @@ -580,9 +607,6 @@ msgstr "حذف از فهرست پخش" #~ msgid "by %s, from %s" #~ msgstr "توسّط %s، از آلبوم %s" -#~ msgid "Select Playlist" -#~ msgstr "انتخاب فهرستپخش" - #~ msgid "" #~ "No Music found!\n" #~ " Put some files into the folder %s" diff --git a/po/fi.po b/po/fi.po index 827a8a30838f9fe9552c69402f01ed143f6a27f6..32b24f84498b9d263cfde48e48a7268c820e997e 100644 --- a/po/fi.po +++ b/po/fi.po @@ -6,10 +6,9 @@ msgid "" msgstr "" "Project-Id-Version: gnome-music master\n" -"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" -"music&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2017-02-23 14:56+0000\n" -"PO-Revision-Date: 2017-02-28 21:06+0200\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n" +"POT-Creation-Date: 2018-01-08 23:12+0000\n" +"PO-Revision-Date: 2018-01-09 20:02+0200\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: suomi \n" "Language: fi\n" @@ -17,38 +16,70 @@ 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 2.91.7\n" +"X-Generator: Poedit 1.8.7.1\n" -#: ../data/org.gnome.Music.gschema.xml.h:1 +#: data/org.gnome.Music.appdata.xml.in:6 +msgid "GNOME Music" +msgstr "Gnomen musiikki" + +#: data/org.gnome.Music.appdata.xml.in:7 data/org.gnome.Music.desktop.in:5 +msgid "Play and organize your music collection" +msgstr "Toista ja hallitse musiikkikokoelmaasi" + +#: data/org.gnome.Music.appdata.xml.in:9 +msgid "Music is the new GNOME music playing application." +msgstr "Musiikki on Gnomen uusi musiikintoistosovellus." + +#: data/org.gnome.Music.desktop.in:3 gnomemusic/application.py:55 +#: gnomemusic/application.py:104 gnomemusic/toolbar.py:91 +#: gnomemusic/window.py:67 data/AboutDialog.ui.in:7 +msgid "Music" +msgstr "Musiikki" + +#: data/org.gnome.Music.desktop.in:4 +msgid "Music Player" +msgstr "Musiikkisoitin" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Music.desktop.in:7 +msgid "gnome-music" +msgstr "gnome-music" + +#. 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:13 +msgid "Music;Player;" +msgstr "Music;Player;Musiikkisoitin;Musiikki;" + +#: data/org.gnome.Music.gschema.xml:12 msgid "Window size" msgstr "Ikkunan koko" -#: ../data/org.gnome.Music.gschema.xml.h:2 +#: data/org.gnome.Music.gschema.xml:13 msgid "Window size (width and height)." msgstr "Ikkunan koko (leveys ja korkeus)." -#: ../data/org.gnome.Music.gschema.xml.h:3 +#: data/org.gnome.Music.gschema.xml:17 msgid "Window position" msgstr "Ikkunan sijainti" -#: ../data/org.gnome.Music.gschema.xml.h:4 +#: 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.h:5 +#: data/org.gnome.Music.gschema.xml:22 msgid "Window maximized" msgstr "Suurennettu ikkuna" -#: ../data/org.gnome.Music.gschema.xml.h:6 +#: data/org.gnome.Music.gschema.xml:23 msgid "Window maximized state." msgstr "Suurennetun ikkunan tila." -#: ../data/org.gnome.Music.gschema.xml.h:7 +#: data/org.gnome.Music.gschema.xml:27 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.h:9 +#: 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), " @@ -60,104 +91,78 @@ msgstr "" "\" (kertaa nykyistä kappaletta), \"all\" (kertaa soittolistaa, ei " "sekoitusta) ja \"shuffle\" (sekoita soittolista, kertaus kaiken suhteen)." -#: ../data/org.gnome.Music.gschema.xml.h:10 +#: data/org.gnome.Music.gschema.xml:33 msgid "Search mode" msgstr "Hakutila" -#: ../data/org.gnome.Music.gschema.xml.h:11 +#: data/org.gnome.Music.gschema.xml:34 msgid "If true, the search bar is shown." msgstr "Jos tosi, hakupalkki näytetään." -#: ../data/org.gnome.Music.gschema.xml.h:12 +#: data/org.gnome.Music.gschema.xml:38 msgid "Notifications mode" msgstr "Ilmoitustila" -#: ../data/org.gnome.Music.gschema.xml.h:13 +#: data/org.gnome.Music.gschema.xml:39 msgid "Enables or disables playback notifications" msgstr "Ota käyttöön/poista käytöstä ilmoitus toistettavista kappaleista" -#: ../data/org.gnome.Music.gschema.xml.h:14 +#: data/org.gnome.Music.gschema.xml:43 msgid "Enable ReplayGain" msgstr "Käytä ReplayGainia" -#: ../data/org.gnome.Music.gschema.xml.h:15 +#: data/org.gnome.Music.gschema.xml:44 msgid "Enables or disables ReplayGain for albums" msgstr "Ottaa käyttöön/poistaa käytöstä ReplayGainin albumeille" -#: ../data/org.gnome.Music.gschema.xml.h:16 +#: data/org.gnome.Music.gschema.xml:48 msgid "Inital state has been displayed" msgstr "" -#: ../data/org.gnome.Music.gschema.xml.h:17 +#: data/org.gnome.Music.gschema.xml:49 msgid "Set to true when initial state has been displayed" msgstr "" -#: ../data/gnome-music.desktop.in.h:1 ../gnomemusic/application.py:53 -#: ../gnomemusic/application.py:101 ../gnomemusic/toolbar.py:90 -#: ../gnomemusic/window.py:68 ../data/AboutDialog.ui.in.h:1 -msgid "Music" -msgstr "Musiikki" - -#: ../data/gnome-music.desktop.in.h:2 -msgid "Music Player" -msgstr "Musiikkisoitin" - -#: ../data/gnome-music.desktop.in.h:3 ../data/gnome-music.appdata.xml.in.h:2 -msgid "Play and organize your music collection" -msgstr "Toista ja hallitse musiikkikokoelmaasi" - -#: ../data/gnome-music.desktop.in.h:4 -msgid "Music;Player;" -msgstr "Music;Player;Musiikkisoitin;Musiikki;" - -#: ../data/gnome-music.appdata.xml.in.h:1 -msgid "GNOME Music" -msgstr "Gnomen musiikki" - -#: ../data/gnome-music.appdata.xml.in.h:3 -msgid "Music is the new GNOME music playing application." -msgstr "Musiikki on Gnomen uusi musiikintoistosovellus." - -#: ../gnomemusic/notification.py:55 ../data/PlayerToolbar.ui.h:6 +#: gnomemusic/notification.py:55 data/PlayerToolbar.ui:70 msgid "Previous" msgstr "Edellinen" -#: ../gnomemusic/notification.py:58 ../gnomemusic/player.py:559 +#: gnomemusic/notification.py:58 gnomemusic/player.py:559 msgid "Pause" msgstr "Keskeytä" -#: ../gnomemusic/notification.py:61 ../gnomemusic/player.py:562 -#: ../data/PlayerToolbar.ui.h:7 +#: gnomemusic/notification.py:61 gnomemusic/player.py:562 +#: data/PlayerToolbar.ui:87 msgid "Play" msgstr "Toista" -#: ../gnomemusic/notification.py:63 ../data/PlayerToolbar.ui.h:8 +#: gnomemusic/notification.py:63 data/PlayerToolbar.ui:104 msgid "Next" msgstr "Seuraava" -#: ../gnomemusic/player.py:1132 +#: gnomemusic/player.py:1165 msgid "Unable to play the file" msgstr "Tiedoston toistaminen epäonnistui" #. 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:1137 +#: gnomemusic/player.py:1170 #, python-format msgid "_Find in %s" msgstr "_Etsi sovelluksella %s" #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1147 +#: gnomemusic/player.py:1180 msgid " and " msgstr " ja " #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1150 +#: gnomemusic/player.py:1183 msgid ", " msgstr ", " -#: ../gnomemusic/player.py:1151 +#: gnomemusic/player.py:1184 #, 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." @@ -165,178 +170,164 @@ msgstr[0] "%s vaaditaan tiedoston toistamiseksi, mutta sitä ei ole asennettu." msgstr[1] "%s vaaditaan tiedoston toistamiseksi, mutta niitä ei ole asennettu." #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:59 +#: gnomemusic/playlists.py:58 msgid "Most Played" msgstr "Eniten toistettu" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:64 +#: gnomemusic/playlists.py:63 msgid "Never Played" msgstr "Ei koskaan toistettu" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:69 +#: gnomemusic/playlists.py:68 msgid "Recently Played" msgstr "Äskettäin toistettu" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:74 +#: gnomemusic/playlists.py:73 msgid "Recently Added" msgstr "Äskettäin lisätty" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:79 +#: gnomemusic/playlists.py:78 msgid "Favorite Songs" msgstr "Suosikkikappaleet" -#. TRANSLATORS: The following translatable string should be a -#. vertical bar-separated list of all-lowercase articles that -#. should be ignored when alphabetizing artists/albums. This -#. list should include the basic english translatable strings -#. regardless of language because they are so universal. -#. If some articles occur more frequently than others, the most -#. common one should appear first, the least common one last. -#: ../gnomemusic/query.py:90 -msgid "the|a|an" -msgstr "the|a|an" - -#: ../gnomemusic/searchbar.py:63 ../gnomemusic/searchbar.py:111 +#: gnomemusic/searchbar.py:64 gnomemusic/searchbar.py:118 msgid "All" msgstr "Kaikki" -#: ../gnomemusic/searchbar.py:64 +#: gnomemusic/searchbar.py:65 msgid "Artist" msgstr "Esittäjä" -#: ../gnomemusic/searchbar.py:65 +#: gnomemusic/searchbar.py:66 msgid "Album" msgstr "Levy" -#: ../gnomemusic/searchbar.py:66 ../data/AlbumWidget.ui.h:3 +#: gnomemusic/searchbar.py:67 data/AlbumWidget.ui:171 msgid "Composer" msgstr "Säveltäjä" -#: ../gnomemusic/searchbar.py:67 +#: gnomemusic/searchbar.py:68 msgid "Track Title" msgstr "Kappaleen nimi" -#: ../gnomemusic/searchbar.py:112 +#: gnomemusic/searchbar.py:119 msgid "Local" msgstr "Paikalliset" -#: ../gnomemusic/searchbar.py:224 +#: gnomemusic/searchbar.py:262 msgid "Sources" msgstr "Lähteet" -#: ../gnomemusic/searchbar.py:231 +#: gnomemusic/searchbar.py:270 msgid "Match" msgstr "Vastaavuus" -#: ../gnomemusic/utils.py:63 +#: gnomemusic/utils.py:75 msgid "Unknown Artist" msgstr "Tuntematon esittäjä" -#: ../gnomemusic/utils.py:75 +#: gnomemusic/utils.py:87 msgid "Untitled" msgstr "Nimetön" -#: ../gnomemusic/views/albumsview.py:44 ../gnomemusic/views/searchview.py:454 +#: gnomemusic/views/albumsview.py:44 gnomemusic/views/searchview.py:486 msgid "Albums" msgstr "Levyt" -#: ../gnomemusic/views/artistsview.py:52 ../gnomemusic/views/searchview.py:455 +#: gnomemusic/views/artistsview.py:56 gnomemusic/views/searchview.py:488 msgid "Artists" msgstr "Esittäjät" -#: ../gnomemusic/views/baseview.py:196 -#| msgid "Selected %d item" -#| msgid_plural "Selected %d items" +#: gnomemusic/views/baseview.py:196 msgid "Selected {} item" msgid_plural "Selected {} items" msgstr[0] "Valittu {} kohde" msgstr[1] "Valittu {} kohdetta" -#: ../gnomemusic/views/baseview.py:201 ../gnomemusic/views/baseview.py:303 -#: ../gnomemusic/widgets/albumwidget.py:201 -#: ../gnomemusic/widgets/artistalbumswidget.py:209 ../data/headerbar.ui.h:3 +#: gnomemusic/views/baseview.py:201 gnomemusic/views/baseview.py:303 +#: gnomemusic/widgets/albumwidget.py:196 +#: gnomemusic/widgets/artistalbumswidget.py:232 data/headerbar.ui:33 msgid "Click on items to select them" msgstr "Napsauta kohteita valitaksesi ne" -#: ../gnomemusic/views/emptyview.py:51 +#: gnomemusic/views/emptyview.py:51 msgid "Music folder" msgstr "Musiikkikansio" -#: ../gnomemusic/views/emptysearchview.py:50 +#: gnomemusic/views/emptysearchview.py:53 msgid "Try a different search" msgstr "Kokeile haku eri ehdoilla" -#: ../gnomemusic/views/initialstateview.py:50 +#: gnomemusic/views/initialstateview.py:50 msgid "Hey DJ" msgstr "Hei DJ" -#: ../gnomemusic/views/playlistview.py:51 ../gnomemusic/views/searchview.py:457 +#: gnomemusic/views/playlistview.py:58 gnomemusic/views/searchview.py:492 msgid "Playlists" msgstr "Soittolistat" -#: ../gnomemusic/views/playlistview.py:408 +#: gnomemusic/views/playlistview.py:438 #, python-format msgid "%d Song" msgid_plural "%d Songs" msgstr[0] "%d kappale" msgstr[1] "%d kappaletta" -#: ../gnomemusic/views/searchview.py:456 ../gnomemusic/views/songsview.py:52 +#: gnomemusic/views/searchview.py:490 gnomemusic/views/songsview.py:55 msgid "Songs" msgstr "Kappaleet" -#: ../gnomemusic/widgets/albumwidget.py:197 -#: ../gnomemusic/widgets/artistalbumswidget.py:207 +#: gnomemusic/widgets/albumwidget.py:192 +#: gnomemusic/widgets/artistalbumswidget.py:228 #, python-format msgid "Selected %d item" msgid_plural "Selected %d items" msgstr[0] "Valittu %d kohde" msgstr[1] "Valittu %d kohdetta" -#: ../gnomemusic/widgets/albumwidget.py:294 -#: ../gnomemusic/widgets/albumwidget.py:348 +#: gnomemusic/widgets/albumwidget.py:288 gnomemusic/widgets/albumwidget.py:343 #, python-format msgid "%d min" msgstr "%d min" -#: ../gnomemusic/widgets/disclistboxwidget.py:192 +#: gnomemusic/widgets/disclistboxwidget.py:192 msgid "Disc {}" msgstr "Levy {}" -#: ../gnomemusic/window.py:128 +#: gnomemusic/window.py:125 msgid "Loading" msgstr "Ladataan" #. Undo button -#: ../gnomemusic/window.py:183 +#: gnomemusic/window.py:162 msgid "_Undo" msgstr "_Kumoa" -#: ../gnomemusic/window.py:342 +#: gnomemusic/window.py:315 msgid "Empty" msgstr "Tyhjä" -#: ../gnomemusic/window.py:419 +#: gnomemusic/window.py:391 msgid "Playlist {} removed" msgstr "Soittolista {} poistettu" -#: ../data/AboutDialog.ui.in.h:2 -msgid "Copyright © 2016 GNOME Music Developers" -msgstr "Tekijänoikeus © 2016 Gnomen musiikkisoittimen kehittäjät" +#: data/AboutDialog.ui.in:9 +msgid "Copyright © 2018 GNOME Music Developers" +msgstr "Tekijänoikeus © 2018 Gnomen musiikkisoittimen kehittäjät" -#: ../data/AboutDialog.ui.in.h:3 +#: data/AboutDialog.ui.in:10 msgid "A music player and management application for GNOME." msgstr "Gnomen musiikkisoitin." -#: ../data/AboutDialog.ui.in.h:4 +#: data/AboutDialog.ui.in:12 msgid "Visit GNOME Music website" msgstr "Käy Gnomen musiikkisoittimen verkkosivustolla" -#: ../data/AboutDialog.ui.in.h:5 +#: data/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 " @@ -364,206 +355,221 @@ msgid "" "https://www.flickr.com/photos/_spy_/12270839403\n" msgstr "" -#: ../data/AlbumWidget.ui.h:1 +#: data/AlbumWidget.ui:110 msgid "Released" msgstr "Julkaistu" -#: ../data/AlbumWidget.ui.h:2 +#: data/AlbumWidget.ui:126 msgid "Running Length" msgstr "Kesto" -#: ../data/app-menu.ui.h:1 +#: data/app-menu.ui:5 msgid "_Keyboard Shortcuts" msgstr "_Pikanäppäimet" -#: ../data/app-menu.ui.h:2 +#: data/app-menu.ui:9 msgid "_Help" msgstr "_Ohje" -#: ../data/app-menu.ui.h:3 +#: data/app-menu.ui:15 msgid "_About" msgstr "_Tietoja" -#: ../data/app-menu.ui.h:4 +#: data/app-menu.ui:19 msgid "_Quit" msgstr "_Lopeta" -#: ../data/headerbar.ui.h:1 +#: data/headerbar.ui:7 msgid "Select All" msgstr "Valitse kaikki" -#: ../data/headerbar.ui.h:2 +#: data/headerbar.ui:12 msgid "Select None" msgstr "Älä valitse mitään" -#: ../data/headerbar.ui.h:4 +#: data/headerbar.ui:67 msgid "Search" msgstr "Hae" -#: ../data/headerbar.ui.h:5 +#: data/headerbar.ui:90 msgid "Select" msgstr "Valitse" -#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:5 +#: data/headerbar.ui:112 data/PlaylistDialog.ui:264 msgid "_Cancel" msgstr "_Peru" -#: ../data/headerbar.ui.h:7 +#: data/headerbar.ui:130 msgid "Back" msgstr "Takaisin" -#: ../data/help-overlay.ui.h:1 +#: data/help-overlay.ui:13 msgctxt "shortcut window" msgid "General" msgstr "Yleiset" -#: ../data/help-overlay.ui.h:2 +#: data/help-overlay.ui:17 msgctxt "shortcut window" msgid "Close window" msgstr "Sulje ikkuna" -#: ../data/help-overlay.ui.h:3 +#: data/help-overlay.ui:24 msgctxt "shortcut window" msgid "Search" msgstr "Haku" -#: ../data/help-overlay.ui.h:4 +#: data/help-overlay.ui:31 msgctxt "shortcut window" msgid "Help" msgstr "Ohje" -#: ../data/help-overlay.ui.h:5 +#: data/help-overlay.ui:38 msgctxt "shortcut window" msgid "Shortcuts" msgstr "Pikanäppäimet" -#: ../data/help-overlay.ui.h:6 +#: data/help-overlay.ui:47 msgctxt "shortcut window" msgid "Playback" msgstr "Toista" -#: ../data/help-overlay.ui.h:7 +#: data/help-overlay.ui:51 msgctxt "shortcut window" msgid "Play/Pause" msgstr "Toista/keskeytä" -#: ../data/help-overlay.ui.h:8 +#: data/help-overlay.ui:58 msgctxt "shortcut window" msgid "Next song" msgstr "Seuraava kappale" -#: ../data/help-overlay.ui.h:9 +#: data/help-overlay.ui:65 msgctxt "shortcut window" msgid "Previous song" msgstr "Edellinen kappale" -#: ../data/help-overlay.ui.h:10 +#: data/help-overlay.ui:72 msgctxt "shortcut window" msgid "Toggle repeat" msgstr "Kertaus päälle/pois" -#: ../data/help-overlay.ui.h:11 +#: data/help-overlay.ui:79 msgctxt "shortcut window" msgid "Toggle shuffle" msgstr "Sekoitus päälle/pois" -#: ../data/help-overlay.ui.h:12 +#: data/help-overlay.ui:88 msgctxt "shortcut window" msgid "Navigation" msgstr "Liikkuminen" -#: ../data/help-overlay.ui.h:13 +#: data/help-overlay.ui:92 msgctxt "shortcut window" msgid "Go to Albums" msgstr "Siirry albumeihin" -#: ../data/help-overlay.ui.h:14 +#: data/help-overlay.ui:99 msgctxt "shortcut window" msgid "Go to Artists" msgstr "Siirry esittäjiin" -#: ../data/help-overlay.ui.h:15 +#: data/help-overlay.ui:106 msgctxt "shortcut window" msgid "Go to Songs" msgstr "Siirry kappaleisiin" -#: ../data/help-overlay.ui.h:16 +#: data/help-overlay.ui:113 msgctxt "shortcut window" msgid "Go to Playlists" msgstr "Siirry soittolistoihin" -#: ../data/help-overlay.ui.h:17 +#: data/help-overlay.ui:120 msgctxt "shortcut window" msgid "Go back" msgstr "Siirry takaisin" -#: ../data/NoMusic.ui.h:1 +#: data/NoMusic.ui:35 msgid "No music found" msgstr "Musiikkia ei löytynyt" -#. Translators: %s will be replaced with a link with text -#: ../data/NoMusic.ui.h:4 -#, no-c-format +#. Translators: %s will be replaced with a link with text 'Music folder' +#: data/NoMusic.ui:55 +#, python-format msgid "The contents of your %s will appear here." msgstr "%sn sisältö ilmestyy tähän." -#: ../data/PlayerToolbar.ui.h:1 +#: data/PlayerToolbar.ui:6 msgid "Shuffle" msgstr "Sekoita" -#: ../data/PlayerToolbar.ui.h:2 +#: data/PlayerToolbar.ui:11 msgid "Repeat All" msgstr "Kertaa kaikki" -#: ../data/PlayerToolbar.ui.h:3 +#: data/PlayerToolbar.ui:16 msgid "Repeat Song" msgstr "Kertaa kappale" #. Causes tracks to play in random order -#: ../data/PlayerToolbar.ui.h:5 +#: data/PlayerToolbar.ui:21 msgid "Shuffle/Repeat Off" msgstr "Sekoitus/kertaus pois" -#: ../data/PlaylistControls.ui.h:1 +#: data/PlaylistControls.ui:6 msgid "_Play" msgstr "_Toista" -#: ../data/PlaylistControls.ui.h:2 +#: data/PlaylistControls.ui:10 msgid "_Delete" msgstr "_Poista" -#: ../data/PlaylistControls.ui.h:3 +#: data/PlaylistControls.ui:14 +msgid "_Rename…" +msgstr "_Nimeä uudelleen…" + +#: data/PlaylistControls.ui:33 msgid "Playlist Name" msgstr "Soittolistan nimi" -#: ../data/PlaylistDialog.ui.h:1 +#: data/PlaylistControls.ui:65 +msgid "_Done" +msgstr "_Valmis" + +#: data/PlaylistDialog.ui:63 msgid "Enter a name for your first playlist" msgstr "Anna nimi ensimmäiselle soittolistallesi" -#: ../data/PlaylistDialog.ui.h:2 +#: data/PlaylistDialog.ui:88 msgid "C_reate" msgstr "_Luo" -#: ../data/PlaylistDialog.ui.h:3 +#: data/PlaylistDialog.ui:157 msgid "New Playlist" msgstr "Uusi soittolista" -#: ../data/PlaylistDialog.ui.h:4 +#: data/PlaylistDialog.ui:170 msgid "Add" msgstr "Lisää" -#: ../data/PlaylistDialog.ui.h:6 +#: data/PlaylistDialog.ui:261 +msgid "Select Playlist" +msgstr "Valitse soittolista" + +#: data/PlaylistDialog.ui:276 msgid "_Add" msgstr "_Lisää" -#: ../data/SelectionToolbar.ui.h:1 +#: data/SelectionToolbar.ui:9 msgid "_Add to Playlist" msgstr "Lisää _soittolistalle" -#: ../data/SelectionToolbar.ui.h:2 +#: data/SelectionToolbar.ui:21 msgid "_Remove from Playlist" msgstr "Po_ista soittolistalta" +#~ msgid "the|a|an" +#~ msgstr "the|a|an" + #~ msgid "Max chars to display in track name on Artist view" #~ msgstr "" #~ "Kappaleen nimessä näytettävien merkkien enimmäismäärä esittäjänäkymässä" @@ -591,9 +597,6 @@ msgstr "Po_ista soittolistalta" #~ msgid "by %s, from %s" #~ msgstr "esittäjä %s, levy %s" -#~ msgid "Select Playlist" -#~ msgstr "Valitse soittolista" - #~ msgid "" #~ "No Music found!\n" #~ " Put some files into the folder %s" diff --git a/po/fur.po b/po/fur.po index 40177193b8745738538b1548b00a88f7bbcca781..97085b48862cbbb2ce4d316265033ef263f81c8a 100644 --- a/po/fur.po +++ b/po/fur.po @@ -6,10 +6,9 @@ msgid "" msgstr "" "Project-Id-Version: gnome-music master\n" -"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" -"music&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2017-02-23 14:56+0000\n" -"PO-Revision-Date: 2017-02-24 19:25+0100\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n" +"POT-Creation-Date: 2018-01-08 23:12+0000\n" +"PO-Revision-Date: 2018-01-10 13:37+0100\n" "Last-Translator: Fabio Tomat \n" "Language-Team: Friulian \n" "Language: fur\n" @@ -17,38 +16,70 @@ 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 1.8.11\n" +"X-Generator: Poedit 2.0.3\n" -#: ../data/org.gnome.Music.gschema.xml.h:1 +#: data/org.gnome.Music.appdata.xml.in:6 +msgid "GNOME Music" +msgstr "GNOME Musiche" + +#: data/org.gnome.Music.appdata.xml.in:7 data/org.gnome.Music.desktop.in:5 +msgid "Play and organize your music collection" +msgstr "Sune e organize le tô colezion di musichis" + +#: data/org.gnome.Music.appdata.xml.in:9 +msgid "Music is the new GNOME music playing application." +msgstr "Musiche e je le gnove aplicazion GNOME par riprodusi musiche." + +#: data/org.gnome.Music.desktop.in:3 gnomemusic/application.py:55 +#: gnomemusic/application.py:104 gnomemusic/toolbar.py:91 +#: gnomemusic/window.py:67 data/AboutDialog.ui.in:7 +msgid "Music" +msgstr "Musiche" + +#: data/org.gnome.Music.desktop.in:4 +msgid "Music Player" +msgstr "Letôr musicâl" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Music.desktop.in:7 +msgid "gnome-music" +msgstr "gnome-music" + +#. 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:13 +msgid "Music;Player;" +msgstr "Musiche;Riprodutôr;" + +#: data/org.gnome.Music.gschema.xml:12 msgid "Window size" msgstr "Dimension barcon" -#: ../data/org.gnome.Music.gschema.xml.h:2 +#: data/org.gnome.Music.gschema.xml:13 msgid "Window size (width and height)." msgstr "Dimension barcon (largjece e altece)." -#: ../data/org.gnome.Music.gschema.xml.h:3 +#: data/org.gnome.Music.gschema.xml:17 msgid "Window position" msgstr "Posizion barcon" -#: ../data/org.gnome.Music.gschema.xml.h:4 +#: 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.h:5 +#: data/org.gnome.Music.gschema.xml:22 msgid "Window maximized" msgstr "Barcon slargjât" -#: ../data/org.gnome.Music.gschema.xml.h:6 +#: data/org.gnome.Music.gschema.xml:23 msgid "Window maximized state." msgstr "Stât barcon slargjât." -#: ../data/org.gnome.Music.gschema.xml.h:7 +#: data/org.gnome.Music.gschema.xml:27 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.h:9 +#: 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), " @@ -61,104 +92,78 @@ 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.h:10 +#: data/org.gnome.Music.gschema.xml:33 msgid "Search mode" msgstr "Modalitât di ricercje" -#: ../data/org.gnome.Music.gschema.xml.h:11 +#: data/org.gnome.Music.gschema.xml:34 msgid "If true, the search bar is shown." msgstr "Se vêr, la sbare di ricercje a ven mostrade." -#: ../data/org.gnome.Music.gschema.xml.h:12 +#: data/org.gnome.Music.gschema.xml:38 msgid "Notifications mode" msgstr "Modalitât di notificazion" -#: ../data/org.gnome.Music.gschema.xml.h:13 +#: data/org.gnome.Music.gschema.xml:39 msgid "Enables or disables playback notifications" msgstr "Abilite o no lis notificazions di riproduzion" -#: ../data/org.gnome.Music.gschema.xml.h:14 +#: data/org.gnome.Music.gschema.xml:43 msgid "Enable ReplayGain" msgstr "Abilite ReplayGain" -#: ../data/org.gnome.Music.gschema.xml.h:15 +#: data/org.gnome.Music.gschema.xml:44 msgid "Enables or disables ReplayGain for albums" msgstr "Abilite o disabilite ReplayGain pai album" -#: ../data/org.gnome.Music.gschema.xml.h:16 +#: data/org.gnome.Music.gschema.xml:48 msgid "Inital state has been displayed" msgstr "Il stât iniziâl al è stât mostrât" -#: ../data/org.gnome.Music.gschema.xml.h:17 +#: data/org.gnome.Music.gschema.xml:49 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/gnome-music.desktop.in.h:1 ../gnomemusic/application.py:53 -#: ../gnomemusic/application.py:101 ../gnomemusic/toolbar.py:90 -#: ../gnomemusic/window.py:68 ../data/AboutDialog.ui.in.h:1 -msgid "Music" -msgstr "Musiche" - -#: ../data/gnome-music.desktop.in.h:2 -msgid "Music Player" -msgstr "Letôr musicâl" - -#: ../data/gnome-music.desktop.in.h:3 ../data/gnome-music.appdata.xml.in.h:2 -msgid "Play and organize your music collection" -msgstr "Sune e organize le tô colezion di musichis" - -#: ../data/gnome-music.desktop.in.h:4 -msgid "Music;Player;" -msgstr "Musiche;Riprodutôr;" - -#: ../data/gnome-music.appdata.xml.in.h:1 -msgid "GNOME Music" -msgstr "GNOME Musiche" - -#: ../data/gnome-music.appdata.xml.in.h:3 -msgid "Music is the new GNOME music playing application." -msgstr "Musiche e je le gnove aplicazion GNOME par riprodusi musiche." - -#: ../gnomemusic/notification.py:55 ../data/PlayerToolbar.ui.h:6 +#: gnomemusic/notification.py:55 data/PlayerToolbar.ui:70 msgid "Previous" msgstr "Precedent" -#: ../gnomemusic/notification.py:58 ../gnomemusic/player.py:559 +#: gnomemusic/notification.py:58 gnomemusic/player.py:559 msgid "Pause" msgstr "Pause" -#: ../gnomemusic/notification.py:61 ../gnomemusic/player.py:562 -#: ../data/PlayerToolbar.ui.h:7 +#: gnomemusic/notification.py:61 gnomemusic/player.py:562 +#: data/PlayerToolbar.ui:87 msgid "Play" msgstr "Sune" -#: ../gnomemusic/notification.py:63 ../data/PlayerToolbar.ui.h:8 +#: gnomemusic/notification.py:63 data/PlayerToolbar.ui:104 msgid "Next" msgstr "Prossim" -#: ../gnomemusic/player.py:1132 +#: gnomemusic/player.py:1165 msgid "Unable to play the file" msgstr "Impussibil riprodusi il file" #. 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:1137 +#: gnomemusic/player.py:1170 #, python-format msgid "_Find in %s" msgstr "_Cjate in %s" #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1147 +#: gnomemusic/player.py:1180 msgid " and " msgstr " e " #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1150 +#: gnomemusic/player.py:1183 msgid ", " msgstr ", " -#: ../gnomemusic/player.py:1151 +#: gnomemusic/player.py:1184 #, 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." @@ -166,178 +171,167 @@ msgstr[0] "Al covente %s par riprodusi il file, ma nol è instalât." msgstr[1] "A coventin %s par riprodusi il file, ma no son instalâts." #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:59 +#: gnomemusic/playlists.py:58 msgid "Most Played" msgstr "Plui scoltats" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:64 +#: gnomemusic/playlists.py:63 msgid "Never Played" msgstr "Mai scoltât" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:69 +#: gnomemusic/playlists.py:68 msgid "Recently Played" msgstr "Scoltât di recent" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:74 +#: gnomemusic/playlists.py:73 msgid "Recently Added" msgstr "Zontât di recent" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:79 +#: gnomemusic/playlists.py:78 msgid "Favorite Songs" msgstr "Tocs preferîts" -#. TRANSLATORS: The following translatable string should be a -#. vertical bar-separated list of all-lowercase articles that -#. should be ignored when alphabetizing artists/albums. This -#. list should include the basic english translatable strings -#. regardless of language because they are so universal. -#. If some articles occur more frequently than others, the most -#. common one should appear first, the least common one last. -#: ../gnomemusic/query.py:90 -msgid "the|a|an" -msgstr "the|a|an|il|i|la|lis|un|une|l'" - -#: ../gnomemusic/searchbar.py:63 ../gnomemusic/searchbar.py:111 +#: gnomemusic/searchbar.py:64 gnomemusic/searchbar.py:118 msgid "All" msgstr "Dut" -#: ../gnomemusic/searchbar.py:64 +#: gnomemusic/searchbar.py:65 msgid "Artist" msgstr "Artist" -#: ../gnomemusic/searchbar.py:65 +#: gnomemusic/searchbar.py:66 msgid "Album" msgstr "Album" -#: ../gnomemusic/searchbar.py:66 ../data/AlbumWidget.ui.h:3 +#: gnomemusic/searchbar.py:67 data/AlbumWidget.ui:171 msgid "Composer" msgstr "Compositôr" -#: ../gnomemusic/searchbar.py:67 +#: gnomemusic/searchbar.py:68 msgid "Track Title" msgstr "Titul" -#: ../gnomemusic/searchbar.py:112 +#: gnomemusic/searchbar.py:119 msgid "Local" msgstr "Locâl" -#: ../gnomemusic/searchbar.py:224 +#: gnomemusic/searchbar.py:262 msgid "Sources" msgstr "Sorzints" -#: ../gnomemusic/searchbar.py:231 +#: gnomemusic/searchbar.py:270 msgid "Match" msgstr "Corispuindince" -#: ../gnomemusic/utils.py:63 +#: gnomemusic/utils.py:75 msgid "Unknown Artist" msgstr "Artist no cognossût" -#: ../gnomemusic/utils.py:75 +#: gnomemusic/utils.py:87 msgid "Untitled" msgstr "Cence Titul" -#: ../gnomemusic/views/albumsview.py:44 ../gnomemusic/views/searchview.py:454 +#: gnomemusic/views/albumsview.py:44 gnomemusic/views/searchview.py:486 msgid "Albums" msgstr "Album" -#: ../gnomemusic/views/artistsview.py:52 ../gnomemusic/views/searchview.py:455 +#: gnomemusic/views/artistsview.py:56 gnomemusic/views/searchview.py:488 msgid "Artists" msgstr "Artiscj" -#: ../gnomemusic/views/baseview.py:196 +#: gnomemusic/views/baseview.py:196 msgid "Selected {} item" msgid_plural "Selected {} items" msgstr[0] "Selezionât {} element" msgstr[1] "Selezionâts {} elements" -#: ../gnomemusic/views/baseview.py:201 ../gnomemusic/views/baseview.py:303 -#: ../gnomemusic/widgets/albumwidget.py:201 -#: ../gnomemusic/widgets/artistalbumswidget.py:209 ../data/headerbar.ui.h:3 +#: gnomemusic/views/baseview.py:201 gnomemusic/views/baseview.py:303 +#: gnomemusic/widgets/albumwidget.py:196 +#: gnomemusic/widgets/artistalbumswidget.py:232 data/headerbar.ui:33 msgid "Click on items to select them" msgstr "Cliche sui elements par selezionaju" # 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:51 +#: gnomemusic/views/emptyview.py:51 msgid "Music folder" msgstr "cartele di musiche" -#: ../gnomemusic/views/emptysearchview.py:50 +#: gnomemusic/views/emptysearchview.py:53 msgid "Try a different search" msgstr "Prove une ricercje diferente" -#: ../gnomemusic/views/initialstateview.py:50 +#: gnomemusic/views/initialstateview.py:50 msgid "Hey DJ" msgstr "Hey DJ" -#: ../gnomemusic/views/playlistview.py:51 ../gnomemusic/views/searchview.py:457 +#: gnomemusic/views/playlistview.py:58 gnomemusic/views/searchview.py:492 msgid "Playlists" msgstr "Listis di musichis" -#: ../gnomemusic/views/playlistview.py:408 +#: gnomemusic/views/playlistview.py:438 #, python-format msgid "%d Song" msgid_plural "%d Songs" msgstr[0] "%d cjançon" msgstr[1] "%d Cjançons" -#: ../gnomemusic/views/searchview.py:456 ../gnomemusic/views/songsview.py:52 +#: gnomemusic/views/searchview.py:490 gnomemusic/views/songsview.py:55 msgid "Songs" msgstr "Cjancçons" -#: ../gnomemusic/widgets/albumwidget.py:197 -#: ../gnomemusic/widgets/artistalbumswidget.py:207 +#: gnomemusic/widgets/albumwidget.py:192 +#: gnomemusic/widgets/artistalbumswidget.py:228 #, python-format msgid "Selected %d item" msgid_plural "Selected %d items" msgstr[0] "Selezionât %d element" msgstr[1] "Selezionâts %d elements" -#: ../gnomemusic/widgets/albumwidget.py:294 -#: ../gnomemusic/widgets/albumwidget.py:348 +#: gnomemusic/widgets/albumwidget.py:288 gnomemusic/widgets/albumwidget.py:343 #, python-format msgid "%d min" msgstr "%d min" -#: ../gnomemusic/widgets/disclistboxwidget.py:192 +#: gnomemusic/widgets/disclistboxwidget.py:192 msgid "Disc {}" msgstr "Disc {}" -#: ../gnomemusic/window.py:128 +#: gnomemusic/window.py:125 msgid "Loading" msgstr "Daûr a cjariâ" #. Undo button -#: ../gnomemusic/window.py:183 +#: gnomemusic/window.py:162 msgid "_Undo" msgstr "A_nule" -#: ../gnomemusic/window.py:342 +#: gnomemusic/window.py:315 msgid "Empty" msgstr "Vueit" -#: ../gnomemusic/window.py:419 +#: gnomemusic/window.py:391 msgid "Playlist {} removed" msgstr "Liste di musichis {} gjavade" -#: ../data/AboutDialog.ui.in.h:2 -msgid "Copyright © 2016 GNOME Music Developers" -msgstr "Copyright © 2016 Svilupadôrs di GNOME Musiche" +#: data/AboutDialog.ui.in:9 +#| msgid "Copyright © 2016 GNOME Music Developers" +msgid "Copyright © 2018 GNOME Music Developers" +msgstr "Copyright © 2018 Svilupadôrs di GNOME Musiche" -#: ../data/AboutDialog.ui.in.h:3 +#: data/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/AboutDialog.ui.in.h:4 +#: data/AboutDialog.ui.in:12 msgid "Visit GNOME Music website" msgstr "Visite il sît di GNOME Musiche" -#: ../data/AboutDialog.ui.in.h:5 +#: data/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 " @@ -388,207 +382,222 @@ msgstr "" "“Magic of the vinyl” by Sami Pyylampi inmagjin a je in licence di CC-BY-SA " "2.0 https://www.flickr.com/photos/_spy_/12270839403\n" -#: ../data/AlbumWidget.ui.h:1 +#: data/AlbumWidget.ui:110 msgid "Released" msgstr "Publicât" -#: ../data/AlbumWidget.ui.h:2 +#: data/AlbumWidget.ui:126 msgid "Running Length" msgstr "Durade" -#: ../data/app-menu.ui.h:1 +#: data/app-menu.ui:5 msgid "_Keyboard Shortcuts" msgstr "_Scurtis di tastiere" -#: ../data/app-menu.ui.h:2 +#: data/app-menu.ui:9 msgid "_Help" msgstr "_Jutori" -#: ../data/app-menu.ui.h:3 +#: data/app-menu.ui:15 msgid "_About" msgstr "_Informazions" -#: ../data/app-menu.ui.h:4 +#: data/app-menu.ui:19 msgid "_Quit" msgstr "_Jes" -#: ../data/headerbar.ui.h:1 +#: data/headerbar.ui:7 msgid "Select All" msgstr "Selezione dut" -#: ../data/headerbar.ui.h:2 +#: data/headerbar.ui:12 msgid "Select None" msgstr "Selezione nuie" -#: ../data/headerbar.ui.h:4 +#: data/headerbar.ui:67 msgid "Search" msgstr "Cîr" -#: ../data/headerbar.ui.h:5 +#: data/headerbar.ui:90 msgid "Select" msgstr "Selezione" -#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:5 +#: data/headerbar.ui:112 data/PlaylistDialog.ui:264 msgid "_Cancel" msgstr "_Anule" -#: ../data/headerbar.ui.h:7 +#: data/headerbar.ui:130 msgid "Back" msgstr "Torne indaûr" -#: ../data/help-overlay.ui.h:1 +#: data/help-overlay.ui:13 msgctxt "shortcut window" msgid "General" msgstr "Gjenerâl" -#: ../data/help-overlay.ui.h:2 +#: data/help-overlay.ui:17 msgctxt "shortcut window" msgid "Close window" msgstr "Siere barcon" -#: ../data/help-overlay.ui.h:3 +#: data/help-overlay.ui:24 msgctxt "shortcut window" msgid "Search" msgstr "Cîr" -#: ../data/help-overlay.ui.h:4 +#: data/help-overlay.ui:31 msgctxt "shortcut window" msgid "Help" msgstr "Jutori" -#: ../data/help-overlay.ui.h:5 +#: data/help-overlay.ui:38 msgctxt "shortcut window" msgid "Shortcuts" msgstr "Scurtis" -#: ../data/help-overlay.ui.h:6 +#: data/help-overlay.ui:47 msgctxt "shortcut window" msgid "Playback" msgstr "Riprodûs" -#: ../data/help-overlay.ui.h:7 +#: data/help-overlay.ui:51 msgctxt "shortcut window" msgid "Play/Pause" msgstr "Sune/Pause" -#: ../data/help-overlay.ui.h:8 +#: data/help-overlay.ui:58 msgctxt "shortcut window" msgid "Next song" msgstr "Prossim toc" -#: ../data/help-overlay.ui.h:9 +#: data/help-overlay.ui:65 msgctxt "shortcut window" msgid "Previous song" msgstr "Toc precedent" -#: ../data/help-overlay.ui.h:10 +#: data/help-overlay.ui:72 msgctxt "shortcut window" msgid "Toggle repeat" msgstr "Comutâ il ripeti" -#: ../data/help-overlay.ui.h:11 +#: data/help-overlay.ui:79 msgctxt "shortcut window" msgid "Toggle shuffle" msgstr "Comutâ il messedâ" -#: ../data/help-overlay.ui.h:12 +#: data/help-overlay.ui:88 msgctxt "shortcut window" msgid "Navigation" msgstr "Navigazion" -#: ../data/help-overlay.ui.h:13 +#: data/help-overlay.ui:92 msgctxt "shortcut window" msgid "Go to Albums" msgstr "Va ai album" -#: ../data/help-overlay.ui.h:14 +#: data/help-overlay.ui:99 msgctxt "shortcut window" msgid "Go to Artists" msgstr "Va ai artiscj" -#: ../data/help-overlay.ui.h:15 +#: data/help-overlay.ui:106 msgctxt "shortcut window" msgid "Go to Songs" msgstr "Va ai tocs" -#: ../data/help-overlay.ui.h:16 +#: data/help-overlay.ui:113 msgctxt "shortcut window" msgid "Go to Playlists" msgstr "Va ae liste dai tocs" -#: ../data/help-overlay.ui.h:17 +#: data/help-overlay.ui:120 msgctxt "shortcut window" msgid "Go back" msgstr "Torne indaûr" -#: ../data/NoMusic.ui.h:1 +#: data/NoMusic.ui:35 msgid "No music found" msgstr "Nissune musiche cjatade" # %s o ai viodût che al ven fûr "cartele di musiche" -#. Translators: %s will be replaced with a link with text -#: ../data/NoMusic.ui.h:4 -#, no-c-format +#. Translators: %s will be replaced with a link with text 'Music folder' +#: data/NoMusic.ui:55 +#, python-format msgid "The contents of your %s will appear here." msgstr "Il contignût de tô %s al vegnarà mostrât chi." -#: ../data/PlayerToolbar.ui.h:1 +#: data/PlayerToolbar.ui:6 msgid "Shuffle" msgstr "Messede" -#: ../data/PlayerToolbar.ui.h:2 +#: data/PlayerToolbar.ui:11 msgid "Repeat All" msgstr "Ripet dut" -#: ../data/PlayerToolbar.ui.h:3 +#: data/PlayerToolbar.ui:16 msgid "Repeat Song" msgstr "Ripet cjançon" #. Causes tracks to play in random order -#: ../data/PlayerToolbar.ui.h:5 +#: data/PlayerToolbar.ui:21 msgid "Shuffle/Repeat Off" msgstr "Messede/ripet studâts" -#: ../data/PlaylistControls.ui.h:1 +#: data/PlaylistControls.ui:6 msgid "_Play" msgstr "_Sune" -#: ../data/PlaylistControls.ui.h:2 +#: data/PlaylistControls.ui:10 msgid "_Delete" msgstr "_Scancele" -#: ../data/PlaylistControls.ui.h:3 +#: data/PlaylistControls.ui:14 +msgid "_Rename…" +msgstr "_Cambie non…" + +#: data/PlaylistControls.ui:33 msgid "Playlist Name" msgstr "Non de liste des musichis" -#: ../data/PlaylistDialog.ui.h:1 +#: data/PlaylistControls.ui:65 +msgid "_Done" +msgstr "_Fat" + +#: data/PlaylistDialog.ui:63 msgid "Enter a name for your first playlist" msgstr "Scrîf un non pe tô prime liste di riproduzion" -#: ../data/PlaylistDialog.ui.h:2 +#: data/PlaylistDialog.ui:88 msgid "C_reate" msgstr "C_ree" -#: ../data/PlaylistDialog.ui.h:3 +#: data/PlaylistDialog.ui:157 msgid "New Playlist" msgstr "Gnove liste di musichis" -#: ../data/PlaylistDialog.ui.h:4 +#: data/PlaylistDialog.ui:170 msgid "Add" msgstr "Zonte" -#: ../data/PlaylistDialog.ui.h:6 +#: data/PlaylistDialog.ui:261 +msgid "Select Playlist" +msgstr "Selezione liste des musichis" + +#: data/PlaylistDialog.ui:276 msgid "_Add" msgstr "_Zonte" -#: ../data/SelectionToolbar.ui.h:1 +#: data/SelectionToolbar.ui:9 msgid "_Add to Playlist" msgstr "_Zonte ae liste des musichis" -#: ../data/SelectionToolbar.ui.h:2 +#: data/SelectionToolbar.ui:21 msgid "_Remove from Playlist" msgstr "_Gjave de liste des musichis" +#~ msgid "the|a|an" +#~ msgstr "the|a|an|il|i|la|lis|un|une|l'" + #~ msgid "Unknown Album" #~ msgstr "Album no cognossût" @@ -611,9 +620,6 @@ msgstr "_Gjave de liste des musichis" #~ msgid "All Artists" #~ msgstr "Ducj i artiscj" -#~ msgid "Select Playlist" -#~ msgstr "Selezione liste des musichis" - #~ msgid "Not playing" #~ msgstr "Cuiet" diff --git a/po/hr.po b/po/hr.po index 06096daf7807c1a3c25a09f6b31446b955e1a7f2..d89037b167d7a37b6fd9a3a6a3fc1872698d408f 100644 --- a/po/hr.po +++ b/po/hr.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: gnome-music master\n" "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "music&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2017-07-31 18:57+0000\n" -"PO-Revision-Date: 2017-08-22 22:40+0200\n" +"POT-Creation-Date: 2017-09-25 14:17+0000\n" +"PO-Revision-Date: 2017-11-09 17:49+0100\n" "Last-Translator: gogo \n" "Language-Team: Croatian \n" "Language: hr\n" @@ -18,65 +18,70 @@ msgstr "" "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.0.3\n" +"X-Generator: Poedit 2.0.4\n" -#: ../data/org.gnome.Music.appdata.xml.in.h:1 +#: data/org.gnome.Music.appdata.xml.in:6 msgid "GNOME Music" msgstr "GNOME Glazba" -#: ../data/org.gnome.Music.appdata.xml.in.h:2 -#: ../data/org.gnome.Music.desktop.in.h:3 +#: data/org.gnome.Music.appdata.xml.in:7 data/org.gnome.Music.desktop.in:5 msgid "Play and organize your music collection" msgstr "Slušajte i organizirajte vašu glazbenu kolekciju" -#: ../data/org.gnome.Music.appdata.xml.in.h:3 +#: data/org.gnome.Music.appdata.xml.in:9 msgid "Music is the new GNOME music playing application." msgstr "Glazba je nova GNOME aplikacija za slušanje glazbe." -#: ../data/org.gnome.Music.desktop.in.h:1 ../gnomemusic/application.py:53 -#: ../gnomemusic/application.py:101 ../gnomemusic/toolbar.py:90 -#: ../gnomemusic/window.py:68 ../data/AboutDialog.ui.in.h:1 +#: data/org.gnome.Music.desktop.in:3 gnomemusic/application.py:53 +#: gnomemusic/application.py:102 gnomemusic/toolbar.py:90 +#: gnomemusic/window.py:68 data/AboutDialog.ui.in:7 msgid "Music" msgstr "Glazba" -#: ../data/org.gnome.Music.desktop.in.h:2 +#: data/org.gnome.Music.desktop.in:4 msgid "Music Player" msgstr "Glazbeni svirač" -#: ../data/org.gnome.Music.desktop.in.h:4 +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Music.desktop.in:7 +msgid "gnome-music" +msgstr "gnome-music" + +#. 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:13 msgid "Music;Player;" msgstr "Glazba;Svirač;" -#: ../data/org.gnome.Music.gschema.xml.h:1 +#: data/org.gnome.Music.gschema.xml:12 msgid "Window size" msgstr "Veličina prozora" -#: ../data/org.gnome.Music.gschema.xml.h:2 +#: data/org.gnome.Music.gschema.xml:13 msgid "Window size (width and height)." msgstr "Veličina prozora (širina i visina)." -#: ../data/org.gnome.Music.gschema.xml.h:3 +#: data/org.gnome.Music.gschema.xml:17 msgid "Window position" msgstr "Položaj prozora" -#: ../data/org.gnome.Music.gschema.xml.h:4 +#: 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.h:5 +#: data/org.gnome.Music.gschema.xml:22 msgid "Window maximized" msgstr "Prozor uvećan" -#: ../data/org.gnome.Music.gschema.xml.h:6 +#: data/org.gnome.Music.gschema.xml:23 msgid "Window maximized state." msgstr "Stanje uvećanog prozora." -#: ../data/org.gnome.Music.gschema.xml.h:7 +#: data/org.gnome.Music.gschema.xml:27 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.h:9 +#: 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), " @@ -89,78 +94,78 @@ msgstr "" "popis izvođenja, bez naizmjenične reprodukcije), “shuffle” (naizmjenična " "reprodukcija popisa izvođenja, pretpostavlja ponavljanje svega)." -#: ../data/org.gnome.Music.gschema.xml.h:10 +#: data/org.gnome.Music.gschema.xml:33 msgid "Search mode" msgstr "Način pretraživanja" -#: ../data/org.gnome.Music.gschema.xml.h:11 +#: data/org.gnome.Music.gschema.xml:34 msgid "If true, the search bar is shown." msgstr "Ako je odabrano, traka pretrage je prikazana." -#: ../data/org.gnome.Music.gschema.xml.h:12 +#: data/org.gnome.Music.gschema.xml:38 msgid "Notifications mode" msgstr "Način obavijesti" -#: ../data/org.gnome.Music.gschema.xml.h:13 +#: data/org.gnome.Music.gschema.xml:39 msgid "Enables or disables playback notifications" msgstr "Omogući ili onemogući obavijesti reprodukcije" -#: ../data/org.gnome.Music.gschema.xml.h:14 +#: data/org.gnome.Music.gschema.xml:43 msgid "Enable ReplayGain" msgstr "Omogući normalizaciju zvuka" -#: ../data/org.gnome.Music.gschema.xml.h:15 +#: data/org.gnome.Music.gschema.xml:44 msgid "Enables or disables ReplayGain for albums" msgstr "Omogući ili onemogući normalizaciju zvuka za albume" -#: ../data/org.gnome.Music.gschema.xml.h:16 +#: data/org.gnome.Music.gschema.xml:48 msgid "Inital state has been displayed" msgstr "Početno stanje je prikazano" -#: ../data/org.gnome.Music.gschema.xml.h:17 +#: data/org.gnome.Music.gschema.xml:49 msgid "Set to true when initial state has been displayed" msgstr "Postavite na 'true' kada je početno stanje prikazano" -#: ../gnomemusic/notification.py:55 ../data/PlayerToolbar.ui.h:6 +#: gnomemusic/notification.py:55 data/PlayerToolbar.ui:70 msgid "Previous" msgstr "Prijašnja" -#: ../gnomemusic/notification.py:58 ../gnomemusic/player.py:558 +#: gnomemusic/notification.py:58 gnomemusic/player.py:558 msgid "Pause" msgstr "Pauziraj" -#: ../gnomemusic/notification.py:61 ../gnomemusic/player.py:561 -#: ../data/PlayerToolbar.ui.h:7 +#: gnomemusic/notification.py:61 gnomemusic/player.py:561 +#: data/PlayerToolbar.ui:87 msgid "Play" msgstr "Reproduciraj" -#: ../gnomemusic/notification.py:63 ../data/PlayerToolbar.ui.h:8 +#: gnomemusic/notification.py:63 data/PlayerToolbar.ui:104 msgid "Next" msgstr "Sljedeća" -#: ../gnomemusic/player.py:1167 +#: gnomemusic/player.py:1167 msgid "Unable to play the file" msgstr "Nemoguća reprodukcija datoteke" #. 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:1172 +#: gnomemusic/player.py:1172 #, python-format msgid "_Find in %s" msgstr "_Pretraži u %s" #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1182 +#: gnomemusic/player.py:1182 msgid " and " msgstr " i " #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1185 +#: gnomemusic/player.py:1185 msgid ", " msgstr ", " -#: ../gnomemusic/player.py:1186 +#: gnomemusic/player.py:1186 #, 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." @@ -169,119 +174,108 @@ msgstr[1] "%s su potrebni za reprodukciju datoteke, ali nisu instalirani." msgstr[2] "%s su potrebni za reprodukciju datoteke, ali nisu instalirani." #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:59 +#: gnomemusic/playlists.py:59 msgid "Most Played" msgstr "Najslušanije" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:64 +#: gnomemusic/playlists.py:64 msgid "Never Played" msgstr "Nepreslušano" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:69 +#: gnomemusic/playlists.py:69 msgid "Recently Played" msgstr "Nedavno slušano" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:74 +#: gnomemusic/playlists.py:74 msgid "Recently Added" msgstr "Nedavno dodano" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:79 +#: gnomemusic/playlists.py:79 msgid "Favorite Songs" msgstr "Omiljene pjesme" -#. TRANSLATORS: The following translatable string should be a -#. vertical bar-separated list of all-lowercase articles that -#. should be ignored when alphabetizing artists/albums. This -#. list should include the basic english translatable strings -#. regardless of language because they are so universal. -#. If some articles occur more frequently than others, the most -#. common one should appear first, the least common one last. -#: ../gnomemusic/query.py:90 -msgid "the|a|an" -msgstr "" - -#: ../gnomemusic/searchbar.py:63 ../gnomemusic/searchbar.py:111 +#: gnomemusic/searchbar.py:63 gnomemusic/searchbar.py:111 msgid "All" msgstr "Svi" -#: ../gnomemusic/searchbar.py:64 +#: gnomemusic/searchbar.py:64 msgid "Artist" msgstr "Izvođač" -#: ../gnomemusic/searchbar.py:65 +#: gnomemusic/searchbar.py:65 msgid "Album" msgstr "Album" -#: ../gnomemusic/searchbar.py:66 ../data/AlbumWidget.ui.h:3 +#: gnomemusic/searchbar.py:66 data/AlbumWidget.ui:171 msgid "Composer" msgstr "Skladatelj" -#: ../gnomemusic/searchbar.py:67 +#: gnomemusic/searchbar.py:67 msgid "Track Title" msgstr "Naslov pjesme" -#: ../gnomemusic/searchbar.py:112 +#: gnomemusic/searchbar.py:112 msgid "Local" msgstr "Lokalno" -#: ../gnomemusic/searchbar.py:224 +#: gnomemusic/searchbar.py:224 msgid "Sources" msgstr "Izvori" -#: ../gnomemusic/searchbar.py:231 +#: gnomemusic/searchbar.py:231 msgid "Match" msgstr "Podudara se" -#: ../gnomemusic/utils.py:63 +#: gnomemusic/utils.py:63 msgid "Unknown Artist" msgstr "Nepoznati izvođač" -#: ../gnomemusic/utils.py:75 +#: gnomemusic/utils.py:75 msgid "Untitled" msgstr "Neimenovano" -#: ../gnomemusic/views/albumsview.py:44 ../gnomemusic/views/searchview.py:454 +#: gnomemusic/views/albumsview.py:44 gnomemusic/views/searchview.py:454 msgid "Albums" msgstr "Albumi" -#: ../gnomemusic/views/artistsview.py:52 ../gnomemusic/views/searchview.py:455 +#: gnomemusic/views/artistsview.py:55 gnomemusic/views/searchview.py:455 msgid "Artists" msgstr "Izvođači" -#: ../gnomemusic/views/baseview.py:196 +#: gnomemusic/views/baseview.py:196 msgid "Selected {} item" msgid_plural "Selected {} items" msgstr[0] "Odabrana {} stavka" msgstr[1] "Odabrane {} stavke" msgstr[2] "Odabrane {} stavke" -#: ../gnomemusic/views/baseview.py:201 ../gnomemusic/views/baseview.py:303 -#: ../gnomemusic/widgets/albumwidget.py:198 -#: ../gnomemusic/widgets/artistalbumswidget.py:232 ../data/headerbar.ui.h:3 +#: gnomemusic/views/baseview.py:201 gnomemusic/views/baseview.py:303 +#: gnomemusic/widgets/albumwidget.py:198 +#: gnomemusic/widgets/artistalbumswidget.py:232 data/headerbar.ui:33 msgid "Click on items to select them" msgstr "Kliknite na stavku za odabir" -#: ../gnomemusic/views/emptyview.py:51 +#: gnomemusic/views/emptyview.py:51 msgid "Music folder" msgstr "Glazbene mape" -#: ../gnomemusic/views/emptysearchview.py:50 +#: gnomemusic/views/emptysearchview.py:50 msgid "Try a different search" msgstr "Pokušaj drugačiju pretragu" -#: ../gnomemusic/views/initialstateview.py:50 +#: gnomemusic/views/initialstateview.py:50 msgid "Hey DJ" msgstr "Hej DJ" -#: ../gnomemusic/views/playlistview.py:58 ../gnomemusic/views/searchview.py:457 +#: gnomemusic/views/playlistview.py:58 gnomemusic/views/searchview.py:457 msgid "Playlists" msgstr "Popis izvođenja" -#: ../gnomemusic/views/playlistview.py:420 +#: gnomemusic/views/playlistview.py:420 #, python-format msgid "%d Song" msgid_plural "%d Songs" @@ -289,12 +283,12 @@ msgstr[0] "%d pjesma" msgstr[1] "%d pjesme" msgstr[2] "%d pjesama" -#: ../gnomemusic/views/searchview.py:456 ../gnomemusic/views/songsview.py:52 +#: gnomemusic/views/searchview.py:456 gnomemusic/views/songsview.py:55 msgid "Songs" msgstr "Pjesme" -#: ../gnomemusic/widgets/albumwidget.py:194 -#: ../gnomemusic/widgets/artistalbumswidget.py:228 +#: gnomemusic/widgets/albumwidget.py:194 +#: gnomemusic/widgets/artistalbumswidget.py:228 #, python-format msgid "Selected %d item" msgid_plural "Selected %d items" @@ -302,47 +296,46 @@ msgstr[0] "Odabrana je %d stavka" msgstr[1] "Odabrane su %d stavke" msgstr[2] "Odabrano je %d stavki" -#: ../gnomemusic/widgets/albumwidget.py:291 -#: ../gnomemusic/widgets/albumwidget.py:345 +#: gnomemusic/widgets/albumwidget.py:291 gnomemusic/widgets/albumwidget.py:345 #, python-format msgid "%d min" msgstr "%d min" -#: ../gnomemusic/widgets/disclistboxwidget.py:189 +#: gnomemusic/widgets/disclistboxwidget.py:189 msgid "Disc {}" msgstr "Disk {}" -#: ../gnomemusic/window.py:125 +#: gnomemusic/window.py:125 msgid "Loading" msgstr "Učitavanje" #. Undo button -#: ../gnomemusic/window.py:162 +#: gnomemusic/window.py:162 msgid "_Undo" msgstr "_Vrati" -#: ../gnomemusic/window.py:314 +#: gnomemusic/window.py:314 msgid "Empty" msgstr "Prazna" -#: ../gnomemusic/window.py:390 +#: gnomemusic/window.py:390 msgid "Playlist {} removed" msgstr "Popis izvođenja {} uklonjen" -#: ../data/AboutDialog.ui.in.h:2 +#: data/AboutDialog.ui.in:9 msgid "Copyright © 2016 GNOME Music Developers" msgstr "Autorsko pravo © 2016 GNOME Glazbeni razvijatelji" -#: ../data/AboutDialog.ui.in.h:3 +#: data/AboutDialog.ui.in:10 msgid "A music player and management application for GNOME." msgstr "" "Glazbeni svirač i aplikacija upravljanja glazbenom kolekcijom za GNOME." -#: ../data/AboutDialog.ui.in.h:4 +#: data/AboutDialog.ui.in:12 msgid "Visit GNOME Music website" msgstr "Posjeti GNOME Glazba web stranicu" -#: ../data/AboutDialog.ui.in.h:5 +#: data/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 " @@ -393,206 +386,206 @@ msgstr "" "“Magic of the vinyl” by Sami Pyylampi image je licenciran na CC-BY-SA 2.0 " "https://www.flickr.com/photos/_spy_/12270839403\n" -#: ../data/AlbumWidget.ui.h:1 +#: data/AlbumWidget.ui:110 msgid "Released" msgstr "Objavljeno" -#: ../data/AlbumWidget.ui.h:2 +#: data/AlbumWidget.ui:126 msgid "Running Length" msgstr "Trajanje" -#: ../data/app-menu.ui.h:1 +#: data/app-menu.ui:5 msgid "_Keyboard Shortcuts" msgstr "_Prečaci tipkovnice" -#: ../data/app-menu.ui.h:2 +#: data/app-menu.ui:9 msgid "_Help" msgstr "_Pomoć" -#: ../data/app-menu.ui.h:3 +#: data/app-menu.ui:15 msgid "_About" msgstr "_O programu" -#: ../data/app-menu.ui.h:4 +#: data/app-menu.ui:19 msgid "_Quit" msgstr "_Zatvori" -#: ../data/headerbar.ui.h:1 +#: data/headerbar.ui:7 msgid "Select All" msgstr "Odaberi sve" -#: ../data/headerbar.ui.h:2 +#: data/headerbar.ui:12 msgid "Select None" msgstr "Bez odabira" -#: ../data/headerbar.ui.h:4 +#: data/headerbar.ui:67 msgid "Search" msgstr "Pretraga" -#: ../data/headerbar.ui.h:5 +#: data/headerbar.ui:90 msgid "Select" msgstr "Odaberi" -#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:6 +#: data/headerbar.ui:112 data/PlaylistDialog.ui:264 msgid "_Cancel" msgstr "_Odustani" -#: ../data/headerbar.ui.h:7 +#: data/headerbar.ui:130 msgid "Back" msgstr "Natrag" -#: ../data/help-overlay.ui.h:1 +#: data/help-overlay.ui:13 msgctxt "shortcut window" msgid "General" msgstr "Općenito" -#: ../data/help-overlay.ui.h:2 +#: data/help-overlay.ui:17 msgctxt "shortcut window" msgid "Close window" msgstr "Zatvori prozor" -#: ../data/help-overlay.ui.h:3 +#: data/help-overlay.ui:24 msgctxt "shortcut window" msgid "Search" msgstr "Pretraga" -#: ../data/help-overlay.ui.h:4 +#: data/help-overlay.ui:31 msgctxt "shortcut window" msgid "Help" msgstr "Pomoć" -#: ../data/help-overlay.ui.h:5 +#: data/help-overlay.ui:38 msgctxt "shortcut window" msgid "Shortcuts" msgstr "Prečaci" -#: ../data/help-overlay.ui.h:6 +#: data/help-overlay.ui:47 msgctxt "shortcut window" msgid "Playback" msgstr "Reprodukcija" -#: ../data/help-overlay.ui.h:7 +#: data/help-overlay.ui:51 msgctxt "shortcut window" msgid "Play/Pause" msgstr "Reproduciraj/Pauziraj" -#: ../data/help-overlay.ui.h:8 +#: data/help-overlay.ui:58 msgctxt "shortcut window" msgid "Next song" msgstr "Sljedeća pjesma" -#: ../data/help-overlay.ui.h:9 +#: data/help-overlay.ui:65 msgctxt "shortcut window" msgid "Previous song" msgstr "Prijašnja pjesma" -#: ../data/help-overlay.ui.h:10 +#: data/help-overlay.ui:72 msgctxt "shortcut window" msgid "Toggle repeat" msgstr "Uklj/Isklj ponavljanje" -#: ../data/help-overlay.ui.h:11 +#: data/help-overlay.ui:79 msgctxt "shortcut window" msgid "Toggle shuffle" msgstr "Uklj/Isklj ponavljanje" -#: ../data/help-overlay.ui.h:12 +#: data/help-overlay.ui:88 msgctxt "shortcut window" msgid "Navigation" msgstr "Navigacija" -#: ../data/help-overlay.ui.h:13 +#: data/help-overlay.ui:92 msgctxt "shortcut window" msgid "Go to Albums" msgstr "Idi u albume" -#: ../data/help-overlay.ui.h:14 +#: data/help-overlay.ui:99 msgctxt "shortcut window" msgid "Go to Artists" msgstr "Idi u izvođače" -#: ../data/help-overlay.ui.h:15 +#: data/help-overlay.ui:106 msgctxt "shortcut window" msgid "Go to Songs" msgstr "Idi u pjesme" -#: ../data/help-overlay.ui.h:16 +#: data/help-overlay.ui:113 msgctxt "shortcut window" msgid "Go to Playlists" msgstr "Idi u popise izvođenja" -#: ../data/help-overlay.ui.h:17 +#: data/help-overlay.ui:120 msgctxt "shortcut window" msgid "Go back" msgstr "Idi natrag" -#: ../data/NoMusic.ui.h:1 +#: data/NoMusic.ui:35 msgid "No music found" msgstr "Glazba nije pronađena" -#. Translators: %s will be replaced with a link with text -#: ../data/NoMusic.ui.h:4 -#, no-c-format +#. Translators: %s will be replaced with a link with text 'Music folder' +#: data/NoMusic.ui:55 +#, python-format msgid "The contents of your %s will appear here." msgstr "Sadržaj vaše %s će se pojaviti ovdje." -#: ../data/PlayerToolbar.ui.h:1 +#: data/PlayerToolbar.ui:6 msgid "Shuffle" msgstr "Naizmjenično" -#: ../data/PlayerToolbar.ui.h:2 +#: data/PlayerToolbar.ui:11 msgid "Repeat All" msgstr "Ponovni sve" -#: ../data/PlayerToolbar.ui.h:3 +#: data/PlayerToolbar.ui:16 msgid "Repeat Song" msgstr "Ponovi pjesmu" #. Causes tracks to play in random order -#: ../data/PlayerToolbar.ui.h:5 +#: data/PlayerToolbar.ui:21 msgid "Shuffle/Repeat Off" msgstr "Naizmjenično/Ponovi isključi" -#: ../data/PlaylistControls.ui.h:1 +#: data/PlaylistControls.ui:6 msgid "_Play" msgstr "_Sviraj" -#: ../data/PlaylistControls.ui.h:2 +#: data/PlaylistControls.ui:10 msgid "_Delete" msgstr "_Obriši" -#: ../data/PlaylistControls.ui.h:3 +#: data/PlaylistControls.ui:27 msgid "Playlist Name" msgstr "Naziv popis izvođenja" -#: ../data/PlaylistDialog.ui.h:1 +#: data/PlaylistDialog.ui:63 msgid "Enter a name for your first playlist" msgstr "Upišite naziv za vaš prvi popis izvođenja" -#: ../data/PlaylistDialog.ui.h:2 +#: data/PlaylistDialog.ui:88 msgid "C_reate" msgstr "S_tvori" -#: ../data/PlaylistDialog.ui.h:3 +#: data/PlaylistDialog.ui:157 msgid "New Playlist" msgstr "Novi popis izvođenja" -#: ../data/PlaylistDialog.ui.h:4 +#: data/PlaylistDialog.ui:170 msgid "Add" msgstr "Dodaj" -#: ../data/PlaylistDialog.ui.h:5 +#: data/PlaylistDialog.ui:261 msgid "Select Playlist" msgstr "Odaberi popis izvođenja" -#: ../data/PlaylistDialog.ui.h:7 +#: data/PlaylistDialog.ui:276 msgid "_Add" msgstr "_Dodaj" -#: ../data/SelectionToolbar.ui.h:1 +#: data/SelectionToolbar.ui:9 msgid "_Add to Playlist" msgstr "_Dodaj na popis izvođenja" -#: ../data/SelectionToolbar.ui.h:2 +#: data/SelectionToolbar.ui:21 msgid "_Remove from Playlist" msgstr "_Ukloni s popisa izvođenja" diff --git a/po/id.po b/po/id.po index 3aec8e5cc36beabc62ef9dce5ad7f86792ff057b..f4b8ba8e45e48716c4279fea853e856bc8ea5f3a 100644 --- a/po/id.po +++ b/po/id.po @@ -9,66 +9,79 @@ msgstr "" "Project-Id-Version: gnome-music master\n" "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "music&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2017-05-26 22:26+0000\n" -"PO-Revision-Date: 2017-05-29 15:44+0700\n" +"POT-Creation-Date: 2017-09-25 14:17+0000\n" +"PO-Revision-Date: 2017-11-03 13:01+0700\n" "Last-Translator: Kukuh Syafaat \n" "Language-Team: Indonesian \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 1.8.11\n" +"X-Generator: Poedit 2.0.3\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: ../data/org.gnome.Music.desktop.in.h:1 ../gnomemusic/application.py:53 -#: ../gnomemusic/application.py:101 ../gnomemusic/toolbar.py:90 -#: ../gnomemusic/window.py:68 ../data/AboutDialog.ui.in.h:1 +#: data/org.gnome.Music.appdata.xml.in:6 +msgid "GNOME Music" +msgstr "GNOME Musik" + +#: data/org.gnome.Music.appdata.xml.in:7 data/org.gnome.Music.desktop.in:5 +msgid "Play and organize your music collection" +msgstr "Putar dan tata koleksi musik Anda" + +#: data/org.gnome.Music.appdata.xml.in:9 +msgid "Music is the new GNOME music playing application." +msgstr "Musik adalah aplikasi pemutar musik GNOME yang baru." + +#: data/org.gnome.Music.desktop.in:3 gnomemusic/application.py:53 +#: gnomemusic/application.py:102 gnomemusic/toolbar.py:90 +#: gnomemusic/window.py:68 data/AboutDialog.ui.in:7 msgid "Music" msgstr "Musik" -#: ../data/org.gnome.Music.desktop.in.h:2 +#: data/org.gnome.Music.desktop.in:4 msgid "Music Player" msgstr "Pemutar Musik" -#: ../data/org.gnome.Music.desktop.in.h:3 -#: ../data/gnome-music.appdata.xml.in.h:2 -msgid "Play and organize your music collection" -msgstr "Putar dan tata koleksi musik Anda" +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Music.desktop.in:7 +msgid "gnome-music" +msgstr "gnome-music" -#: ../data/org.gnome.Music.desktop.in.h:4 +#. 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:13 msgid "Music;Player;" msgstr "Pemutar;Musik;" -#: ../data/org.gnome.Music.gschema.xml.h:1 +#: data/org.gnome.Music.gschema.xml:12 msgid "Window size" msgstr "Ukuran jendela" -#: ../data/org.gnome.Music.gschema.xml.h:2 +#: data/org.gnome.Music.gschema.xml:13 msgid "Window size (width and height)." msgstr "Ukuran jendela (lebar dan tinggi)." -#: ../data/org.gnome.Music.gschema.xml.h:3 +#: data/org.gnome.Music.gschema.xml:17 msgid "Window position" msgstr "Posisi jendela" -#: ../data/org.gnome.Music.gschema.xml.h:4 +#: 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.h:5 +#: data/org.gnome.Music.gschema.xml:22 msgid "Window maximized" msgstr "Jendela dimaksimalkan" -#: ../data/org.gnome.Music.gschema.xml.h:6 +#: data/org.gnome.Music.gschema.xml:23 msgid "Window maximized state." msgstr "Keadaan dimaksimalkan jendela." -#: ../data/org.gnome.Music.gschema.xml.h:7 +#: data/org.gnome.Music.gschema.xml:27 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.h:9 +#: 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), " @@ -81,259 +94,239 @@ msgstr "" "tanpa pengacakan), \"shuffle\" (acak daftar putar, mengasumsikan ulang " "semua)." -#: ../data/org.gnome.Music.gschema.xml.h:10 +#: data/org.gnome.Music.gschema.xml:33 msgid "Search mode" msgstr "Mode cari" -#: ../data/org.gnome.Music.gschema.xml.h:11 +#: data/org.gnome.Music.gschema.xml:34 msgid "If true, the search bar is shown." msgstr "Bila berisi true, bilah pencarian ditampilkan." -#: ../data/org.gnome.Music.gschema.xml.h:12 +#: data/org.gnome.Music.gschema.xml:38 msgid "Notifications mode" msgstr "Mode pemberitahuan" -#: ../data/org.gnome.Music.gschema.xml.h:13 +#: data/org.gnome.Music.gschema.xml:39 msgid "Enables or disables playback notifications" msgstr "Mengaktifkan atau menonaktifkan pemberitahuan pemutaran" -#: ../data/org.gnome.Music.gschema.xml.h:14 +#: data/org.gnome.Music.gschema.xml:43 msgid "Enable ReplayGain" msgstr "Fungsikan ReplayGain" -#: ../data/org.gnome.Music.gschema.xml.h:15 +#: data/org.gnome.Music.gschema.xml:44 msgid "Enables or disables ReplayGain for albums" msgstr "Mengaktifkan atau menonaktifkan pemberitahuan pemutaran" -#: ../data/org.gnome.Music.gschema.xml.h:16 +#: data/org.gnome.Music.gschema.xml:48 msgid "Inital state has been displayed" msgstr "Keadaan awal telah ditampilkan" -#: ../data/org.gnome.Music.gschema.xml.h:17 +#: data/org.gnome.Music.gschema.xml:49 msgid "Set to true when initial state has been displayed" msgstr "Diisi dengan true ketika keadaan awal telah ditampilkan" -#: ../data/gnome-music.appdata.xml.in.h:1 -msgid "GNOME Music" -msgstr "GNOME Musik" - -#: ../data/gnome-music.appdata.xml.in.h:3 -msgid "Music is the new GNOME music playing application." -msgstr "Musik adalah aplikasi pemutar musik GNOME yang baru." - -#: ../gnomemusic/notification.py:55 ../data/PlayerToolbar.ui.h:6 +#: gnomemusic/notification.py:55 data/PlayerToolbar.ui:70 msgid "Previous" msgstr "Sebelumnya" -#: ../gnomemusic/notification.py:58 ../gnomemusic/player.py:558 +#: gnomemusic/notification.py:58 gnomemusic/player.py:558 msgid "Pause" msgstr "Tahan" -#: ../gnomemusic/notification.py:61 ../gnomemusic/player.py:561 -#: ../data/PlayerToolbar.ui.h:7 +#: gnomemusic/notification.py:61 gnomemusic/player.py:561 +#: data/PlayerToolbar.ui:87 msgid "Play" msgstr "Putar" -#: ../gnomemusic/notification.py:63 ../data/PlayerToolbar.ui.h:8 +#: gnomemusic/notification.py:63 data/PlayerToolbar.ui:104 msgid "Next" msgstr "Selanjutnya" -#: ../gnomemusic/player.py:1167 +#: gnomemusic/player.py:1167 msgid "Unable to play the file" msgstr "Tak dapat memutar berkas" #. 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:1172 +#: gnomemusic/player.py:1172 #, python-format msgid "_Find in %s" msgstr "_Cari di %s" #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1182 +#: gnomemusic/player.py:1182 msgid " and " msgstr " dan " #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1185 +#: gnomemusic/player.py:1185 msgid ", " msgstr ", " -#: ../gnomemusic/player.py:1186 +#: gnomemusic/player.py:1186 #, 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 diperlukan untuk memutar berkas, tapi tak terpasang." #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:59 +#: gnomemusic/playlists.py:59 msgid "Most Played" msgstr "Paling Sering Diputar" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:64 +#: gnomemusic/playlists.py:64 msgid "Never Played" msgstr "Tak Pernah Diputar" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:69 +#: gnomemusic/playlists.py:69 msgid "Recently Played" msgstr "Baru-baru Ini Diputar" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:74 +#: gnomemusic/playlists.py:74 msgid "Recently Added" msgstr "Baru-baru Ini Ditambahkan" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:79 +#: gnomemusic/playlists.py:79 msgid "Favorite Songs" msgstr "Lagu Favorit" -#. TRANSLATORS: The following translatable string should be a -#. vertical bar-separated list of all-lowercase articles that -#. should be ignored when alphabetizing artists/albums. This -#. list should include the basic english translatable strings -#. regardless of language because they are so universal. -#. If some articles occur more frequently than others, the most -#. common one should appear first, the least common one last. -#: ../gnomemusic/query.py:90 -msgid "the|a|an" -msgstr "a|an" - -#: ../gnomemusic/searchbar.py:63 ../gnomemusic/searchbar.py:111 +#: gnomemusic/searchbar.py:63 gnomemusic/searchbar.py:111 msgid "All" msgstr "Semua" -#: ../gnomemusic/searchbar.py:64 +#: gnomemusic/searchbar.py:64 msgid "Artist" msgstr "Artis" -#: ../gnomemusic/searchbar.py:65 +#: gnomemusic/searchbar.py:65 msgid "Album" msgstr "Album" -#: ../gnomemusic/searchbar.py:66 ../data/AlbumWidget.ui.h:3 +#: gnomemusic/searchbar.py:66 data/AlbumWidget.ui:171 msgid "Composer" msgstr "Pencipta" -#: ../gnomemusic/searchbar.py:67 +#: gnomemusic/searchbar.py:67 msgid "Track Title" msgstr "Judul Trek" -#: ../gnomemusic/searchbar.py:112 +#: gnomemusic/searchbar.py:112 msgid "Local" msgstr "Lokal" -#: ../gnomemusic/searchbar.py:224 +#: gnomemusic/searchbar.py:224 msgid "Sources" msgstr "Sumber" -#: ../gnomemusic/searchbar.py:231 +#: gnomemusic/searchbar.py:231 msgid "Match" msgstr "Cocok" -#: ../gnomemusic/utils.py:63 +#: gnomemusic/utils.py:63 msgid "Unknown Artist" msgstr "Artis Tak Dikenal" -#: ../gnomemusic/utils.py:75 +#: gnomemusic/utils.py:75 msgid "Untitled" msgstr "Tanpa judul" -#: ../gnomemusic/views/albumsview.py:44 ../gnomemusic/views/searchview.py:454 +#: gnomemusic/views/albumsview.py:44 gnomemusic/views/searchview.py:454 msgid "Albums" msgstr "Album" -#: ../gnomemusic/views/artistsview.py:52 ../gnomemusic/views/searchview.py:455 +#: gnomemusic/views/artistsview.py:55 gnomemusic/views/searchview.py:455 msgid "Artists" msgstr "Artis" -#: ../gnomemusic/views/baseview.py:196 +#: gnomemusic/views/baseview.py:196 msgid "Selected {} item" msgid_plural "Selected {} items" msgstr[0] "Dipilih {} butir" -#: ../gnomemusic/views/baseview.py:201 ../gnomemusic/views/baseview.py:303 -#: ../gnomemusic/widgets/albumwidget.py:198 -#: ../gnomemusic/widgets/artistalbumswidget.py:232 ../data/headerbar.ui.h:3 +#: gnomemusic/views/baseview.py:201 gnomemusic/views/baseview.py:303 +#: gnomemusic/widgets/albumwidget.py:198 +#: gnomemusic/widgets/artistalbumswidget.py:232 data/headerbar.ui:33 msgid "Click on items to select them" msgstr "Klik pada butir untuk memilihnya" -#: ../gnomemusic/views/emptyview.py:51 +#: gnomemusic/views/emptyview.py:51 msgid "Music folder" msgstr "Folder musik" -#: ../gnomemusic/views/emptysearchview.py:50 +#: gnomemusic/views/emptysearchview.py:50 msgid "Try a different search" msgstr "Cobalah pencarian lain" -#: ../gnomemusic/views/initialstateview.py:50 +#: gnomemusic/views/initialstateview.py:50 msgid "Hey DJ" msgstr "Hey DJ" -#: ../gnomemusic/views/playlistview.py:58 ../gnomemusic/views/searchview.py:457 +#: gnomemusic/views/playlistview.py:58 gnomemusic/views/searchview.py:457 msgid "Playlists" msgstr "Daftar Putar" -#: ../gnomemusic/views/playlistview.py:420 +#: gnomemusic/views/playlistview.py:420 #, python-format msgid "%d Song" msgid_plural "%d Songs" msgstr[0] "%d Lagu" -#: ../gnomemusic/views/searchview.py:456 ../gnomemusic/views/songsview.py:52 +#: gnomemusic/views/searchview.py:456 gnomemusic/views/songsview.py:55 msgid "Songs" msgstr "Lagu" -#: ../gnomemusic/widgets/albumwidget.py:194 -#: ../gnomemusic/widgets/artistalbumswidget.py:228 +#: gnomemusic/widgets/albumwidget.py:194 +#: gnomemusic/widgets/artistalbumswidget.py:228 #, python-format msgid "Selected %d item" msgid_plural "Selected %d items" msgstr[0] "Dipilih %d butir" -#: ../gnomemusic/widgets/albumwidget.py:291 -#: ../gnomemusic/widgets/albumwidget.py:345 +#: gnomemusic/widgets/albumwidget.py:291 gnomemusic/widgets/albumwidget.py:345 #, python-format msgid "%d min" msgstr "%d mnt" -#: ../gnomemusic/widgets/disclistboxwidget.py:189 +#: gnomemusic/widgets/disclistboxwidget.py:189 msgid "Disc {}" msgstr "Cakram {}" -#: ../gnomemusic/window.py:125 +#: gnomemusic/window.py:125 msgid "Loading" msgstr "Memuat" #. Undo button -#: ../gnomemusic/window.py:162 +#: gnomemusic/window.py:162 msgid "_Undo" msgstr "Tak _Jadi" -#: ../gnomemusic/window.py:314 +#: gnomemusic/window.py:314 msgid "Empty" msgstr "Kosong" -#: ../gnomemusic/window.py:390 +#: gnomemusic/window.py:390 msgid "Playlist {} removed" msgstr "Daftar putar {} dihapus" -#: ../data/AboutDialog.ui.in.h:2 +#: data/AboutDialog.ui.in:9 msgid "Copyright © 2016 GNOME Music Developers" msgstr "Hak Cipta © 2016 Para Pengembang Musik GNOME" -#: ../data/AboutDialog.ui.in.h:3 +#: data/AboutDialog.ui.in:10 msgid "A music player and management application for GNOME." msgstr "Aplikasi manajemen dan pemutar musik bagi GNOME." -#: ../data/AboutDialog.ui.in.h:4 +#: data/AboutDialog.ui.in:12 msgid "Visit GNOME Music website" msgstr "Kunjungi situs web Musik GNOME" -#: ../data/AboutDialog.ui.in.h:5 +#: data/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 " @@ -384,210 +377,213 @@ msgstr "" "Citra \"Magic of the vinyl\" oleh Sami Pyylampi dilisensikan memakai CC-BY-" "SA 2.0 https://www.flickr.com/photos/_spy_/12270839403\n" -#: ../data/AlbumWidget.ui.h:1 +#: data/AlbumWidget.ui:110 msgid "Released" msgstr "Dirilis" -#: ../data/AlbumWidget.ui.h:2 +#: data/AlbumWidget.ui:126 msgid "Running Length" msgstr "Lama Putar" -#: ../data/app-menu.ui.h:1 +#: data/app-menu.ui:5 msgid "_Keyboard Shortcuts" msgstr "Pintasan Papan _Ketik" -#: ../data/app-menu.ui.h:2 +#: data/app-menu.ui:9 msgid "_Help" msgstr "_Bantuan" -#: ../data/app-menu.ui.h:3 +#: data/app-menu.ui:15 msgid "_About" msgstr "Tent_ang" -#: ../data/app-menu.ui.h:4 +#: data/app-menu.ui:19 msgid "_Quit" msgstr "_Keluar" -#: ../data/headerbar.ui.h:1 +#: data/headerbar.ui:7 msgid "Select All" msgstr "Pilih Semua" -#: ../data/headerbar.ui.h:2 +#: data/headerbar.ui:12 msgid "Select None" msgstr "Pilih Tak Satupun" -#: ../data/headerbar.ui.h:4 +#: data/headerbar.ui:67 msgid "Search" msgstr "Cari" -#: ../data/headerbar.ui.h:5 +#: data/headerbar.ui:90 msgid "Select" msgstr "Pilih" -#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:6 +#: data/headerbar.ui:112 data/PlaylistDialog.ui:264 msgid "_Cancel" msgstr "_Batal" -#: ../data/headerbar.ui.h:7 +#: data/headerbar.ui:130 msgid "Back" msgstr "Mundur" -#: ../data/help-overlay.ui.h:1 +#: data/help-overlay.ui:13 msgctxt "shortcut window" msgid "General" msgstr "Umum" -#: ../data/help-overlay.ui.h:2 +#: data/help-overlay.ui:17 msgctxt "shortcut window" msgid "Close window" msgstr "Tutup jendela" -#: ../data/help-overlay.ui.h:3 +#: data/help-overlay.ui:24 msgctxt "shortcut window" msgid "Search" msgstr "Cari" -#: ../data/help-overlay.ui.h:4 +#: data/help-overlay.ui:31 msgctxt "shortcut window" msgid "Help" msgstr "Bantuan" -#: ../data/help-overlay.ui.h:5 +#: data/help-overlay.ui:38 msgctxt "shortcut window" msgid "Shortcuts" msgstr "Pintasan" -#: ../data/help-overlay.ui.h:6 +#: data/help-overlay.ui:47 msgctxt "shortcut window" msgid "Playback" msgstr "Putar" -#: ../data/help-overlay.ui.h:7 +#: data/help-overlay.ui:51 msgctxt "shortcut window" msgid "Play/Pause" msgstr "Putar/Tahan" -#: ../data/help-overlay.ui.h:8 +#: data/help-overlay.ui:58 msgctxt "shortcut window" msgid "Next song" msgstr "Lagu selanjutnya" -#: ../data/help-overlay.ui.h:9 +#: data/help-overlay.ui:65 msgctxt "shortcut window" msgid "Previous song" msgstr "Lagu sebelumnya" -#: ../data/help-overlay.ui.h:10 +#: data/help-overlay.ui:72 msgctxt "shortcut window" msgid "Toggle repeat" msgstr "Jungkitkan pengulangan" -#: ../data/help-overlay.ui.h:11 +#: data/help-overlay.ui:79 msgctxt "shortcut window" msgid "Toggle shuffle" msgstr "Jungkitkan pengacakan" -#: ../data/help-overlay.ui.h:12 +#: data/help-overlay.ui:88 msgctxt "shortcut window" msgid "Navigation" msgstr "Navigasi" -#: ../data/help-overlay.ui.h:13 +#: data/help-overlay.ui:92 msgctxt "shortcut window" msgid "Go to Albums" msgstr "Ke Album" -#: ../data/help-overlay.ui.h:14 +#: data/help-overlay.ui:99 msgctxt "shortcut window" msgid "Go to Artists" msgstr "Ke Artis" -#: ../data/help-overlay.ui.h:15 +#: data/help-overlay.ui:106 msgctxt "shortcut window" msgid "Go to Songs" msgstr "Ke Lagu" -#: ../data/help-overlay.ui.h:16 +#: data/help-overlay.ui:113 msgctxt "shortcut window" msgid "Go to Playlists" msgstr "Ke Daftar Putar" -#: ../data/help-overlay.ui.h:17 +#: data/help-overlay.ui:120 msgctxt "shortcut window" msgid "Go back" msgstr "Mundur" -#: ../data/NoMusic.ui.h:1 +#: data/NoMusic.ui:35 msgid "No music found" msgstr "Tak ada musik" -#. Translators: %s will be replaced with a link with text -#: ../data/NoMusic.ui.h:4 -#, no-c-format +#. Translators: %s will be replaced with a link with text 'Music folder' +#: data/NoMusic.ui:55 +#, python-format msgid "The contents of your %s will appear here." msgstr "Isi %s Anda akan muncul di sini." -#: ../data/PlayerToolbar.ui.h:1 +#: data/PlayerToolbar.ui:6 msgid "Shuffle" msgstr "Acak" -#: ../data/PlayerToolbar.ui.h:2 +#: data/PlayerToolbar.ui:11 msgid "Repeat All" msgstr "Ulangi Semua" -#: ../data/PlayerToolbar.ui.h:3 +#: data/PlayerToolbar.ui:16 msgid "Repeat Song" msgstr "Ulangi Lagu" #. Causes tracks to play in random order -#: ../data/PlayerToolbar.ui.h:5 +#: data/PlayerToolbar.ui:21 msgid "Shuffle/Repeat Off" msgstr "Acak/Ulang Mati" -#: ../data/PlaylistControls.ui.h:1 +#: data/PlaylistControls.ui:6 msgid "_Play" msgstr "_Putar" -#: ../data/PlaylistControls.ui.h:2 +#: data/PlaylistControls.ui:10 msgid "_Delete" msgstr "_Hapus" -#: ../data/PlaylistControls.ui.h:3 +#: data/PlaylistControls.ui:27 msgid "Playlist Name" msgstr "Nama Daftar Putar" -#: ../data/PlaylistDialog.ui.h:1 +#: data/PlaylistDialog.ui:63 msgid "Enter a name for your first playlist" msgstr "Masukkan nama daftar putar pertama Anda" -#: ../data/PlaylistDialog.ui.h:2 +#: data/PlaylistDialog.ui:88 msgid "C_reate" msgstr "B_uat" -#: ../data/PlaylistDialog.ui.h:3 +#: data/PlaylistDialog.ui:157 msgid "New Playlist" msgstr "Daftar Putar Baru" -#: ../data/PlaylistDialog.ui.h:4 +#: data/PlaylistDialog.ui:170 msgid "Add" msgstr "Tambah" -#: ../data/PlaylistDialog.ui.h:5 +#: data/PlaylistDialog.ui:261 msgid "Select Playlist" msgstr "Pilih Daftar Putar" -#: ../data/PlaylistDialog.ui.h:7 +#: data/PlaylistDialog.ui:276 msgid "_Add" msgstr "T_ambah" -#: ../data/SelectionToolbar.ui.h:1 +#: data/SelectionToolbar.ui:9 msgid "_Add to Playlist" msgstr "_Tambah ke Daftar Putar" -#: ../data/SelectionToolbar.ui.h:2 +#: data/SelectionToolbar.ui:21 msgid "_Remove from Playlist" msgstr "_Hapus dari Daftar Putar" +#~ msgid "the|a|an" +#~ msgstr "a|an" + #~ msgid "Max chars to display in track name on Artist view" #~ msgstr "Maks karakter yang ditampilkan dalam nama trek pada tampilan Artis" diff --git a/po/is.po b/po/is.po index 6fbb9f2ad6f37d6ac1c34c753584da644f443540..f37c4accdbc467b5809ac42d94f5cc02337129ee 100644 --- a/po/is.po +++ b/po/is.po @@ -5,10 +5,10 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "music&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2016-10-29 18:10+0000\n" -"PO-Revision-Date: 2017-03-01 12:21+0000\n" +"POT-Creation-Date: 2017-10-27 12:20+0000\n" +"PO-Revision-Date: 2017-12-06 15:03+0000\n" "Last-Translator: Sveinn í Felli \n" "Language-Team: Icelandic \n" "Language: is\n" @@ -18,161 +18,152 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 1.5\n" -#: ../data/org.gnome.Music.gschema.xml.h:1 +#: data/org.gnome.Music.appdata.xml.in:6 +msgid "GNOME Music" +msgstr "GNOME tónlistarspilari" + +#: data/org.gnome.Music.appdata.xml.in:7 data/org.gnome.Music.desktop.in:5 +msgid "Play and organize your music collection" +msgstr "Spila og skipuleggja tónlistarsafnið þitt" + +#: data/org.gnome.Music.appdata.xml.in:9 +msgid "Music is the new GNOME music playing application." +msgstr "Tónlist/Music er nýi GNOME tónlistarspilarinn." + +#: data/org.gnome.Music.desktop.in:3 gnomemusic/application.py:53 +#: gnomemusic/application.py:102 gnomemusic/toolbar.py:90 +#: gnomemusic/window.py:68 data/AboutDialog.ui.in:7 +msgid "Music" +msgstr "Tónlist" + +#: data/org.gnome.Music.desktop.in:4 +msgid "Music Player" +msgstr "Tónlistarspilari" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Music.desktop.in:7 +msgid "gnome-music" +msgstr "gnome-music" + +#. 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:13 +msgid "Music;Player;" +msgstr "Tónlist;spilari;" + +#: data/org.gnome.Music.gschema.xml:12 msgid "Window size" msgstr "Gluggastærð" -#: ../data/org.gnome.Music.gschema.xml.h:2 +#: data/org.gnome.Music.gschema.xml:13 msgid "Window size (width and height)." msgstr "Breidd og hæð glugga." -#: ../data/org.gnome.Music.gschema.xml.h:3 +#: data/org.gnome.Music.gschema.xml:17 msgid "Window position" msgstr "Staðsetning glugga" -#: ../data/org.gnome.Music.gschema.xml.h:4 +#: 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.h:5 +#: data/org.gnome.Music.gschema.xml:22 msgid "Window maximized" msgstr "Gluggi hámarkaður" -#: ../data/org.gnome.Music.gschema.xml.h:6 +#: data/org.gnome.Music.gschema.xml:23 msgid "Window maximized state." msgstr "Hámörkunargildi glugga." -#: ../data/org.gnome.Music.gschema.xml.h:7 +#: data/org.gnome.Music.gschema.xml:27 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.h:9 +#: 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)." +"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 "" +"Gildið gefur til kynna hvort afspilun safnsins sé endurtekin eða gerð " +"handahófskennd. Leyfð gildi eru: “ekkert” (slökkt er á endurtekningu og " +"stokkun), “lag” (endurtaka núverandi lag), “allt” (endurtaka spilunarlista, " +"engin stokkun), “stokkun” (stokka spilunarlista, gerir ráð fyrir að " +"endurtaka allt)." -#: ../data/org.gnome.Music.gschema.xml.h:10 +#: data/org.gnome.Music.gschema.xml:33 msgid "Search mode" msgstr "Leitarhamur" -#: ../data/org.gnome.Music.gschema.xml.h:11 +#: data/org.gnome.Music.gschema.xml:34 msgid "If true, the search bar is shown." msgstr "Ef hakað er við þetta, birtist leitarstikan." -#: ../data/org.gnome.Music.gschema.xml.h:12 +#: data/org.gnome.Music.gschema.xml:38 msgid "Notifications mode" msgstr "Tilkynningahamur" -#: ../data/org.gnome.Music.gschema.xml.h:13 +#: data/org.gnome.Music.gschema.xml:39 msgid "Enables or disables playback notifications" -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.h:15 -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 "" +msgstr "Virkjar eða gerir óvirkar tilkynningar um afspilun" -#: ../data/org.gnome.Music.gschema.xml.h:16 +#: data/org.gnome.Music.gschema.xml:43 msgid "Enable ReplayGain" -msgstr "" +msgstr "Virkja ReplayGain styrkjöfnun" -#: ../data/org.gnome.Music.gschema.xml.h:17 +#: data/org.gnome.Music.gschema.xml:44 msgid "Enables or disables ReplayGain for albums" -msgstr "" +msgstr "Virkjar eða gerir óvirka ReplayGain-styrkjöfnun fyrir albúm" -#: ../data/org.gnome.Music.gschema.xml.h:18 +#: data/org.gnome.Music.gschema.xml:48 msgid "Inital state has been displayed" -msgstr "" +msgstr "Upphafsstaða var birt" -#: ../data/org.gnome.Music.gschema.xml.h:19 +#: data/org.gnome.Music.gschema.xml:49 msgid "Set to true when initial state has been displayed" -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 "Tónlist" - -#: ../data/gnome-music.desktop.in.h:2 -msgid "Music Player" -msgstr "Tónlistarspilari" +msgstr "Setja sem satt þegar upphafsstaða hefur verið birt" -#: ../data/gnome-music.desktop.in.h:3 ../data/gnome-music.appdata.xml.in.h:2 -msgid "Play and organize your music collection" -msgstr "Spila og skipuleggja tónlistarsafnið þitt" - -#: ../data/gnome-music.desktop.in.h:4 -msgid "Music;Player;" -msgstr "Tónlist;spilari;" - -#: ../data/gnome-music.appdata.xml.in.h:1 -msgid "GNOME Music" -msgstr "GNOME tónlistarspilari" - -#: ../data/gnome-music.appdata.xml.in.h:3 -msgid "Music is the new GNOME music playing application." -msgstr "Tónlist/Music er nýi GNOME tónlistarspilarinn." - -#: ../gnomemusic/albumartcache.py:171 ../gnomemusic/albumartcache.py:179 -msgid "Untitled" -msgstr "Ónefnt" - -#: ../gnomemusic/mpris.py:315 ../gnomemusic/player.py:604 -#: ../gnomemusic/view.py:758 ../gnomemusic/view.py:1170 -#: ../gnomemusic/view.py:1643 -msgid "Unknown Album" -msgstr "Óþekkt albúm" - -#: ../gnomemusic/notification.py:55 ../data/PlayerToolbar.ui.h:6 +#: gnomemusic/notification.py:55 data/PlayerToolbar.ui:70 msgid "Previous" msgstr "Fyrra" -#: ../gnomemusic/notification.py:58 ../gnomemusic/player.py:557 +#: gnomemusic/notification.py:58 gnomemusic/player.py:558 msgid "Pause" msgstr "Hlé" -#: ../gnomemusic/notification.py:61 ../gnomemusic/player.py:560 -#: ../data/PlayerToolbar.ui.h:7 +#: gnomemusic/notification.py:61 gnomemusic/player.py:561 +#: data/PlayerToolbar.ui:87 msgid "Play" msgstr "Spila" -#: ../gnomemusic/notification.py:63 ../data/PlayerToolbar.ui.h:8 +#: gnomemusic/notification.py:63 data/PlayerToolbar.ui:104 msgid "Next" msgstr "Næsta" -#: ../gnomemusic/player.py:1087 +#: gnomemusic/player.py:1167 msgid "Unable to play the file" msgstr "Gat ekki spilað skrána" #. 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:1092 +#: gnomemusic/player.py:1172 #, python-format msgid "_Find in %s" msgstr "_Finna í %s" #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1102 +#: gnomemusic/player.py:1182 msgid " and " msgstr " og " #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1105 +#: gnomemusic/player.py:1185 msgid ", " msgstr ", " -#: ../gnomemusic/player.py:1106 +#: gnomemusic/player.py:1186 #, 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." @@ -180,161 +171,164 @@ msgstr[0] "%s er nauðsynlegt til að spila skrána, en er ekki uppsett." msgstr[1] "%s eru nauðsynleg til að spila skrána, en eru ekki uppsett." #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:52 +#: gnomemusic/playlists.py:59 msgid "Most Played" msgstr "Mest spilað" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:58 +#: gnomemusic/playlists.py:64 msgid "Never Played" msgstr "Aldrei spilað" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:64 +#: gnomemusic/playlists.py:69 msgid "Recently Played" msgstr "Nýlega spilað" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:70 +#: gnomemusic/playlists.py:74 msgid "Recently Added" msgstr "Nýlega bætt við" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:76 +#: gnomemusic/playlists.py:79 msgid "Favorite Songs" msgstr "Uppáhaldslög" -#. TRANSLATORS: The following translatable string should be a -#. space-separated list of all-lowercase articles that should be -#. ignored when alphabetizing artists/albums. This list should -#. include the basic english translatable strings regardless of -#. language because it is so universal. -#. If some articles occur more frequently than others, the most -#. common one should appear first, the least common one last. -#: ../gnomemusic/query.py:93 -msgid "the a an" -msgstr "the a an hin" - -#: ../gnomemusic/searchbar.py:62 ../gnomemusic/searchbar.py:109 +#: gnomemusic/searchbar.py:63 gnomemusic/searchbar.py:111 msgid "All" msgstr "Allt" -#: ../gnomemusic/searchbar.py:63 +#: gnomemusic/searchbar.py:64 msgid "Artist" msgstr "Flytjandi" -#: ../gnomemusic/searchbar.py:64 +#: gnomemusic/searchbar.py:65 msgid "Album" msgstr "Albúm" -#: ../gnomemusic/searchbar.py:65 +#: gnomemusic/searchbar.py:66 data/AlbumWidget.ui:171 +msgid "Composer" +msgstr "Tónskáld" + +#: gnomemusic/searchbar.py:67 msgid "Track Title" msgstr "Heiti lags" -#: ../gnomemusic/searchbar.py:110 +#: gnomemusic/searchbar.py:112 msgid "Local" msgstr "Staðvært" -#: ../gnomemusic/searchbar.py:222 +#: gnomemusic/searchbar.py:224 msgid "Sources" msgstr "Uppruni" -#: ../gnomemusic/searchbar.py:229 +#: gnomemusic/searchbar.py:231 msgid "Match" msgstr "Samsvörun" -#: ../gnomemusic/utils.py:44 ../gnomemusic/view.py:1348 +#: gnomemusic/utils.py:63 msgid "Unknown Artist" msgstr "Óþekktur flytjandi" -#: ../gnomemusic/view.py:215 ../gnomemusic/widgets.py:325 -#: ../gnomemusic/widgets.py:590 -#, python-format -msgid "Selected %d item" -msgid_plural "Selected %d items" -msgstr[0] "Valdi %d atriði" -msgstr[1] "Valdi %d atriði" +#: gnomemusic/utils.py:75 +msgid "Untitled" +msgstr "Ónefnt" + +#: gnomemusic/views/albumsview.py:44 gnomemusic/views/searchview.py:454 +msgid "Albums" +msgstr "Albúm" -#: ../gnomemusic/view.py:217 ../gnomemusic/view.py:311 -#: ../gnomemusic/widgets.py:329 ../gnomemusic/widgets.py:592 -#: ../data/headerbar.ui.h:3 +#: gnomemusic/views/artistsview.py:55 gnomemusic/views/searchview.py:455 +msgid "Artists" +msgstr "Flytjendur" + +#: gnomemusic/views/baseview.py:196 +msgid "Selected {} item" +msgid_plural "Selected {} items" +msgstr[0] "Valdi {} atriði" +msgstr[1] "Valdi {} atriði" + +#: gnomemusic/views/baseview.py:201 gnomemusic/views/baseview.py:303 +#: gnomemusic/widgets/albumwidget.py:198 +#: gnomemusic/widgets/artistalbumswidget.py:232 data/headerbar.ui:33 msgid "Click on items to select them" msgstr "Smelltu á atriði til að velja þau" -#: ../gnomemusic/view.py:333 +#: gnomemusic/views/emptyview.py:51 msgid "Music folder" msgstr "Tónlistarmappa" -#: ../gnomemusic/view.py:356 +#: gnomemusic/views/emptysearchview.py:50 +msgid "Try a different search" +msgstr "Reyna aðra leit" + +#: gnomemusic/views/initialstateview.py:50 msgid "Hey DJ" msgstr "Plötusnúður" -#: ../gnomemusic/view.py:368 ../gnomemusic/view.py:1918 -msgid "Albums" -msgstr "Albúm" - -#: ../gnomemusic/view.py:595 ../gnomemusic/view.py:1920 -msgid "Songs" -msgstr "Lög" - -#: ../gnomemusic/view.py:794 ../gnomemusic/view.py:1919 -msgid "Artists" -msgstr "Flytjendur" - -#: ../gnomemusic/view.py:996 ../gnomemusic/view.py:1921 +#: gnomemusic/views/playlistview.py:58 gnomemusic/views/searchview.py:457 msgid "Playlists" msgstr "Spilunarlistar" -#: ../gnomemusic/view.py:1358 +#: gnomemusic/views/playlistview.py:420 #, python-format msgid "%d Song" msgid_plural "%d Songs" msgstr[0] "%d lag" msgstr[1] "%d lög" -#: ../gnomemusic/view.py:1501 -msgid "Try a different search" -msgstr "Reyna aðra leit" +#: gnomemusic/views/searchview.py:456 gnomemusic/views/songsview.py:55 +msgid "Songs" +msgstr "Lög" -#: ../gnomemusic/widgets.py:381 ../gnomemusic/widgets.py:429 +#: gnomemusic/widgets/albumwidget.py:194 +#: gnomemusic/widgets/artistalbumswidget.py:228 +#, python-format +msgid "Selected %d item" +msgid_plural "Selected %d items" +msgstr[0] "Valdi %d atriði" +msgstr[1] "Valdi %d atriði" + +#: gnomemusic/widgets/albumwidget.py:291 gnomemusic/widgets/albumwidget.py:345 #, python-format msgid "%d min" msgstr "%d mín" -#: ../gnomemusic/widgets.py:602 -msgid "All Artists" -msgstr "Allir flytjendur" - -#: ../gnomemusic/window.py:256 -msgid "Empty" -msgstr "Tómt" +#: gnomemusic/widgets/disclistboxwidget.py:189 +msgid "Disc {}" +msgstr "Diskur {}" -#: ../gnomemusic/window.py:320 +#: gnomemusic/window.py:125 msgid "Loading" msgstr "Hleð inn" -#: ../gnomemusic/window.py:343 +#. Undo button +#: gnomemusic/window.py:162 msgid "_Undo" msgstr "_Afturkalla" -#: ../gnomemusic/window.py:344 -#, python-format -msgid "Playlist %s removed" -msgstr "Spilunarlisti %s fjarlægður" +#: gnomemusic/window.py:314 +msgid "Empty" +msgstr "Tómt" + +#: gnomemusic/window.py:390 +msgid "Playlist {} removed" +msgstr "Spilunarlisti {} fjarlægður" -#: ../data/AboutDialog.ui.in.h:2 -msgid "Copyright © 2013 GNOME Music Developers" -msgstr "Höfundarréttur © 2013 GNOME Music forritararnir" +#: data/AboutDialog.ui.in:9 +msgid "Copyright © 2016 GNOME Music Developers" +msgstr "Höfundarréttur © 2016 GNOME Music forritararnir" -#: ../data/AboutDialog.ui.in.h:3 +#: data/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/AboutDialog.ui.in.h:4 +#: data/AboutDialog.ui.in:12 msgid "Visit GNOME Music website" msgstr "Fara á heimasíðu GNOME tónlistarspilarans" -#: ../data/AboutDialog.ui.in.h:5 +#: data/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 " @@ -358,7 +352,7 @@ msgid "" "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 " +"“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 "" "Þetta er frjáls hugbúnaður; þú mátt dreifa honum og/eða breyta samkvæmt " @@ -366,230 +360,245 @@ msgstr "" "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" +"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" +"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\n" -#: ../data/AlbumWidget.ui.h:1 +#: data/AlbumWidget.ui:110 msgid "Released" msgstr "Útgefið" -#: ../data/AlbumWidget.ui.h:2 +#: data/AlbumWidget.ui:126 msgid "Running Length" msgstr "Spilunartími" -#: ../data/app-menu.ui.h:1 +#: data/app-menu.ui:5 msgid "_Keyboard Shortcuts" msgstr "_Flýtivísanir á lyklaborði" -#: ../data/app-menu.ui.h:2 +#: data/app-menu.ui:9 msgid "_Help" msgstr "_Hjálp" -#: ../data/app-menu.ui.h:3 +#: data/app-menu.ui:15 msgid "_About" msgstr "_Um" -#: ../data/app-menu.ui.h:4 +#: data/app-menu.ui:19 msgid "_Quit" msgstr "_Hætta" -#: ../data/headerbar.ui.h:1 +#: data/headerbar.ui:7 msgid "Select All" msgstr "Velja allt" -#: ../data/headerbar.ui.h:2 +#: data/headerbar.ui:12 msgid "Select None" msgstr "Velja ekkert" -#: ../data/headerbar.ui.h:4 +#: data/headerbar.ui:67 msgid "Search" msgstr "Leita" -#: ../data/headerbar.ui.h:5 +#: data/headerbar.ui:90 msgid "Select" msgstr "Velja" -#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:1 -msgid "Cancel" -msgstr "Hætta við" +#: data/headerbar.ui:112 data/PlaylistDialog.ui:264 +msgid "_Cancel" +msgstr "_Hætta við" -#: ../data/headerbar.ui.h:7 +#: data/headerbar.ui:130 msgid "Back" msgstr "Til baka" -#: ../data/help-overlay.ui.h:1 +#: data/help-overlay.ui:13 msgctxt "shortcut window" msgid "General" msgstr "Almennt" -#: ../data/help-overlay.ui.h:2 +#: data/help-overlay.ui:17 msgctxt "shortcut window" msgid "Close window" msgstr "Loka glugga" -#: ../data/help-overlay.ui.h:3 -#| msgid "Search" +#: data/help-overlay.ui:24 msgctxt "shortcut window" msgid "Search" msgstr "Leita" -#: ../data/help-overlay.ui.h:4 -#| msgid "_Help" +#: data/help-overlay.ui:31 msgctxt "shortcut window" msgid "Help" msgstr "Hjálp" -#: ../data/help-overlay.ui.h:5 +#: data/help-overlay.ui:38 msgctxt "shortcut window" msgid "Shortcuts" msgstr "Flýtilyklar" -#: ../data/help-overlay.ui.h:6 -#| msgid "Play" +#: data/help-overlay.ui:47 msgctxt "shortcut window" msgid "Playback" msgstr "Afspilun" -#: ../data/help-overlay.ui.h:7 -#| msgid "Pause" +#: data/help-overlay.ui:51 msgctxt "shortcut window" msgid "Play/Pause" msgstr "Spila / Bíða" -#: ../data/help-overlay.ui.h:8 -#| msgid "Next" +#: data/help-overlay.ui:58 msgctxt "shortcut window" msgid "Next song" msgstr "Næsta lag" -#: ../data/help-overlay.ui.h:9 -#| msgid "Previous" +#: data/help-overlay.ui:65 msgctxt "shortcut window" msgid "Previous song" msgstr "Fyrra lag" -#: ../data/help-overlay.ui.h:10 +#: data/help-overlay.ui:72 msgctxt "shortcut window" msgid "Toggle repeat" msgstr "Víxla endurtekningu af/á" -#: ../data/help-overlay.ui.h:11 +#: data/help-overlay.ui:79 msgctxt "shortcut window" msgid "Toggle shuffle" msgstr "Víxla stokkun af/á" -#: ../data/help-overlay.ui.h:12 +#: data/help-overlay.ui:88 msgctxt "shortcut window" msgid "Navigation" msgstr "Flakk" -#: ../data/help-overlay.ui.h:13 -#| msgid "Albums" +#: data/help-overlay.ui:92 msgctxt "shortcut window" msgid "Go to Albums" msgstr "Fara í Albúm" -#: ../data/help-overlay.ui.h:14 -#| msgid "Artists" +#: data/help-overlay.ui:99 msgctxt "shortcut window" msgid "Go to Artists" msgstr "Fara í Flytjendur" -#: ../data/help-overlay.ui.h:15 -#| msgid "Favorite Songs" +#: data/help-overlay.ui:106 msgctxt "shortcut window" msgid "Go to Songs" msgstr "Fara í Lög" -#: ../data/help-overlay.ui.h:16 -#| msgid "Add to Playlist" +#: data/help-overlay.ui:113 msgctxt "shortcut window" msgid "Go to Playlists" msgstr "Fara í Spilunarlistar" -#: ../data/help-overlay.ui.h:17 +#: data/help-overlay.ui:120 msgctxt "shortcut window" msgid "Go back" msgstr "Fara til baka" -#: ../data/NoMusic.ui.h:1 +#: data/NoMusic.ui:35 msgid "No music found" msgstr "Engin tónlist fannst" -#. Translators: %s will be replaced with a link with text -#: ../data/NoMusic.ui.h:4 -#, no-c-format +#. Translators: %s will be replaced with a link with text 'Music folder' +#: data/NoMusic.ui:55 +#, python-format msgid "The contents of your %s will appear here." msgstr "Innihald %s birtist hér." -#: ../data/PlayerToolbar.ui.h:1 +#: data/PlayerToolbar.ui:6 msgid "Shuffle" msgstr "Stokka" -#: ../data/PlayerToolbar.ui.h:2 +#: data/PlayerToolbar.ui:11 msgid "Repeat All" msgstr "Endurtaka allt" -#: ../data/PlayerToolbar.ui.h:3 +#: data/PlayerToolbar.ui:16 msgid "Repeat Song" msgstr "Endurtaka lag" #. Causes tracks to play in random order -#: ../data/PlayerToolbar.ui.h:5 +#: data/PlayerToolbar.ui:21 msgid "Shuffle/Repeat Off" msgstr "Stokkun/Endurtekning af" -#: ../data/PlaylistControls.ui.h:1 +#: data/PlaylistControls.ui:6 msgid "_Play" msgstr "S_pila" -#: ../data/PlaylistControls.ui.h:2 +#: data/PlaylistControls.ui:10 msgid "_Delete" msgstr "_Eyða" -#: ../data/PlaylistControls.ui.h:3 +#: data/PlaylistControls.ui:27 msgid "Playlist Name" msgstr "Heiti spilunarlista" -#: ../data/PlaylistDialog.ui.h:2 -msgid "Add" -msgstr "Bæta við" +#: data/PlaylistDialog.ui:63 +msgid "Enter a name for your first playlist" +msgstr "Settu inn heiti á fyrsta spilunarlistann þinn" -#: ../data/PlaylistDialog.ui.h:3 +#: data/PlaylistDialog.ui:88 +msgid "C_reate" +msgstr "_Búa til" + +#: data/PlaylistDialog.ui:157 msgid "New Playlist" msgstr "Nýr spilunarlisti" -#: ../data/SelectionToolbar.ui.h:1 -msgid "Add to Playlist" -msgstr "Bæta við spilunarlista" +#: data/PlaylistDialog.ui:170 +msgid "Add" +msgstr "Bæta við" + +#: data/PlaylistDialog.ui:261 +msgid "Select Playlist" +msgstr "Veldu spilunarlista" + +#: data/PlaylistDialog.ui:276 +msgid "_Add" +msgstr "Bæt_a við" -#: ../data/SelectionToolbar.ui.h:2 -msgid "Remove from Playlist" -msgstr "Fjarlægja af spilunarlistanum" +#: data/SelectionToolbar.ui:9 +msgid "_Add to Playlist" +msgstr "Bæt_a við spilunarlista" + +#: data/SelectionToolbar.ui:21 +msgid "_Remove from Playlist" +msgstr "Fja_rlægja af spilunarlistanum" + +#~ msgid "the|a|an" +#~ msgstr "the|a|an" + +#~ msgid "Unknown Album" +#~ msgstr "Óþekkt albúm" + +#~ msgid "the a an" +#~ msgstr "the a an hin" + +#~ msgid "All Artists" +#~ msgstr "Allir flytjendur" #~ msgid "Not playing" #~ msgstr "Ekki í spilun" #~ msgid "by %s, from %s" #~ msgstr "eftir %s, af %s" - -#~ msgid "Select Playlist" -#~ msgstr "Veldu spilunarlista" diff --git a/po/nb.po b/po/nb.po index 9090afdf5a99c42e48e077ce8e70350dfbf7fc21..7e9edadbca45075c24ac7a7332be01b1fc95ae2a 100644 --- a/po/nb.po +++ b/po/nb.po @@ -6,10 +6,10 @@ # msgid "" msgstr "" -"Project-Id-Version: gnome-music 3.24.x\n" +"Project-Id-Version: gnome-music 3.26.x\n" "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-music&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2017-03-07 09:53+0000\n" -"PO-Revision-Date: 2017-03-25 18:11+0100\n" +"POT-Creation-Date: 2017-09-25 14:21+0000\n" +"PO-Revision-Date: 2017-11-08 20:00+0100\n" "Last-Translator: Kjartan Maraas \n" "Language-Team: Norwegian bokmål \n" "Language: no\n" @@ -18,6 +18,33 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#: ../data/org.gnome.Music.appdata.xml.in.h:1 +msgid "GNOME Music" +msgstr "GNOME Musikk" + +#: ../data/org.gnome.Music.appdata.xml.in.h:2 +#: ../data/org.gnome.Music.desktop.in.h:3 +msgid "Play and organize your music collection" +msgstr "Spill av og organiser musikksamlingen din" + +#: ../data/org.gnome.Music.appdata.xml.in.h:3 +msgid "Music is the new GNOME music playing application." +msgstr "Musikk er det nye GNOME-programmet for musikkavspilling." + +#: ../data/org.gnome.Music.desktop.in.h:1 ../gnomemusic/application.py:53 +#: ../gnomemusic/application.py:102 ../gnomemusic/toolbar.py:90 +#: ../gnomemusic/window.py:68 ../data/AboutDialog.ui.in.h:1 +msgid "Music" +msgstr "Musikk" + +#: ../data/org.gnome.Music.desktop.in.h:2 +msgid "Music Player" +msgstr "Musikkavspiller" + +#: ../data/org.gnome.Music.desktop.in.h:4 +msgid "Music;Player;" +msgstr "Musikk;Spiller;" + #: ../data/org.gnome.Music.gschema.xml.h:1 msgid "Window size" msgstr "Vindustørrelse" @@ -92,41 +119,15 @@ msgstr "Første tilstand er vist" msgid "Set to true when initial state has been displayed" msgstr "Sett til «true» når første tilstand har blitt vist" -#: ../data/gnome-music.desktop.in.h:1 ../gnomemusic/application.py:53 -#: ../gnomemusic/application.py:101 ../gnomemusic/toolbar.py:90 -#: ../gnomemusic/window.py:68 ../data/AboutDialog.ui.in.h:1 -msgid "Music" -msgstr "Musikk" - -#: ../data/gnome-music.desktop.in.h:2 -msgid "Music Player" -msgstr "Musikkavspiller" - -#: ../data/gnome-music.desktop.in.h:3 ../data/gnome-music.appdata.xml.in.h:2 -msgid "Play and organize your music collection" -msgstr "Spill av og organiser musikksamlingen din" - -#: ../data/gnome-music.desktop.in.h:4 -msgid "Music;Player;" -msgstr "Musikk;Spiller;" - -#: ../data/gnome-music.appdata.xml.in.h:1 -msgid "GNOME Music" -msgstr "GNOME Musikk" - -#: ../data/gnome-music.appdata.xml.in.h:3 -msgid "Music is the new GNOME music playing application." -msgstr "Musikk er det nye GNOME-programmet for musikkavspilling." - #: ../gnomemusic/notification.py:55 ../data/PlayerToolbar.ui.h:6 msgid "Previous" msgstr "Forrige" -#: ../gnomemusic/notification.py:58 ../gnomemusic/player.py:559 +#: ../gnomemusic/notification.py:58 ../gnomemusic/player.py:558 msgid "Pause" msgstr "Pause" -#: ../gnomemusic/notification.py:61 ../gnomemusic/player.py:562 +#: ../gnomemusic/notification.py:61 ../gnomemusic/player.py:561 #: ../data/PlayerToolbar.ui.h:7 msgid "Play" msgstr "Spill av" @@ -135,29 +136,29 @@ msgstr "Spill av" msgid "Next" msgstr "Neste" -#: ../gnomemusic/player.py:1132 +#: ../gnomemusic/player.py:1167 msgid "Unable to play the file" msgstr "Kan ikke spille av filen" #. 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:1137 +#: ../gnomemusic/player.py:1172 #, python-format msgid "_Find in %s" msgstr "_Finn i %s" #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1147 +#: ../gnomemusic/player.py:1182 msgid " and " msgstr " og " #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1150 +#: ../gnomemusic/player.py:1185 msgid ", " msgstr ", " -#: ../gnomemusic/player.py:1151 +#: ../gnomemusic/player.py:1186 #, 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." @@ -189,17 +190,6 @@ msgstr "Nylig lagt til" msgid "Favorite Songs" msgstr "Favorittlåter" -#. TRANSLATORS: The following translatable string should be a -#. vertical bar-separated list of all-lowercase articles that -#. should be ignored when alphabetizing artists/albums. This -#. list should include the basic english translatable strings -#. regardless of language because they are so universal. -#. If some articles occur more frequently than others, the most -#. common one should appear first, the least common one last. -#: ../gnomemusic/query.py:90 -msgid "the|a|an" -msgstr "the|a|an" - #: ../gnomemusic/searchbar.py:63 ../gnomemusic/searchbar.py:111 msgid "All" msgstr "Alle" @@ -244,7 +234,7 @@ msgstr "Uten tittel" msgid "Albums" msgstr "Album" -#: ../gnomemusic/views/artistsview.py:52 ../gnomemusic/views/searchview.py:455 +#: ../gnomemusic/views/artistsview.py:55 ../gnomemusic/views/searchview.py:455 msgid "Artists" msgstr "Artister" @@ -276,14 +266,14 @@ msgstr "Hey DJ" msgid "Playlists" msgstr "Spillelister" -#: ../gnomemusic/views/playlistview.py:421 +#: ../gnomemusic/views/playlistview.py:420 #, python-format msgid "%d Song" msgid_plural "%d Songs" msgstr[0] "%d sang" msgstr[1] "%d sanger" -#: ../gnomemusic/views/searchview.py:456 ../gnomemusic/views/songsview.py:52 +#: ../gnomemusic/views/searchview.py:456 ../gnomemusic/views/songsview.py:55 msgid "Songs" msgstr "Sanger" @@ -305,20 +295,20 @@ msgstr "%d min" msgid "Disc {}" msgstr "Plate {}" -#: ../gnomemusic/window.py:128 +#: ../gnomemusic/window.py:125 msgid "Loading" msgstr "Laster" #. Undo button -#: ../gnomemusic/window.py:183 +#: ../gnomemusic/window.py:162 msgid "_Undo" msgstr "_Angre" -#: ../gnomemusic/window.py:342 +#: ../gnomemusic/window.py:314 msgid "Empty" msgstr "Tom" -#: ../gnomemusic/window.py:419 +#: ../gnomemusic/window.py:390 msgid "Playlist {} removed" msgstr "Spilleliste {} fjernet" @@ -426,7 +416,7 @@ msgstr "Søk" msgid "Select" msgstr "Velg" -#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:5 +#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:6 msgid "_Cancel" msgstr "A_vbryt" @@ -574,7 +564,11 @@ msgstr "Ny spilleliste" msgid "Add" msgstr "Legg til" -#: ../data/PlaylistDialog.ui.h:6 +#: ../data/PlaylistDialog.ui.h:5 +msgid "Select Playlist" +msgstr "Velg spilleliste" + +#: ../data/PlaylistDialog.ui.h:7 msgid "_Add" msgstr "_Legg til" diff --git a/po/nl.po b/po/nl.po index 88ff1eb2aea2a50f3c7ffddeaff46ac0b145f815..086be5e866458bdd558b11bf9e77eefbaceb0844 100644 --- a/po/nl.po +++ b/po/nl.po @@ -2,28 +2,55 @@ # # This file is distributed under the same license as the gnome-music package. # -# # Erwin Poeze , 2013, 2014. # Reinout van Schouwen , 2013. # Wouter Bolsterlee , 2013. # Hannie Dumoleyn , 2015. +# Justin van Steijn , 2016. msgid "" msgstr "" "Project-Id-Version: gnome-music\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "music&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2015-04-02 19:17+0000\n" -"PO-Revision-Date: 2015-04-03 12:24+0200\n" -"Last-Translator: Hannie Dumoleyn \n" +"POT-Creation-Date: 2017-09-04 22:23+0000\n" +"PO-Revision-Date: 2017-09-05 22:13+0200\n" +"Last-Translator: Justin van Steijn \n" "Language-Team: Dutch \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: Lokalize 1.5\n" +"X-Generator: Poedit 1.8.11\n" "X-Project-Style: gnome\n" +#: ../data/org.gnome.Music.appdata.xml.in.h:1 +msgid "GNOME Music" +msgstr "Gnome Muziek" + +#: ../data/org.gnome.Music.appdata.xml.in.h:2 +#: ../data/org.gnome.Music.desktop.in.h:3 +msgid "Play and organize your music collection" +msgstr "Uw muziekverzameling beluisteren en beheren" + +#: ../data/org.gnome.Music.appdata.xml.in.h:3 +msgid "Music is the new GNOME music playing application." +msgstr "Muziek is de nieuwe muziekspeler van Gnome." + +#: ../data/org.gnome.Music.desktop.in.h:1 ../gnomemusic/application.py:53 +#: ../gnomemusic/application.py:102 ../gnomemusic/toolbar.py:90 +#: ../gnomemusic/window.py:68 ../data/AboutDialog.ui.in.h:1 +msgid "Music" +msgstr "Muziek" + +#: ../data/org.gnome.Music.desktop.in.h:2 +msgid "Music Player" +msgstr "Muziekspeler" + +#: ../data/org.gnome.Music.desktop.in.h:4 +msgid "Music;Player;" +msgstr "Music;Player;Muziek;Speler;" + #: ../data/org.gnome.Music.gschema.xml.h:1 msgid "Window size" msgstr "Venstergrootte" @@ -56,13 +83,13 @@ msgstr "Modus herhaald afspelen" #: ../data/org.gnome.Music.gschema.xml.h:9 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 "" "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’ (speellijst herhalen), ‘shuffle’ (speellijst husselen en herhalen)." #: ../data/org.gnome.Music.gschema.xml.h:10 msgid "Search mode" @@ -81,240 +108,227 @@ msgid "Enables or disables playback notifications" msgstr "Schakelt afspeelnotificaties in of uit" #: ../data/org.gnome.Music.gschema.xml.h:14 -msgid "Max chars to display in track name on Artist view" -msgstr "" -"Maximum aantal weer te geven tekens in de naam van het nummer in " -"artiestweergave" - -#: ../data/org.gnome.Music.gschema.xml.h:15 -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 "" -"Deze instelling wijzigt het aantal tekens dat wordt weergegeven in de titel " -"van het nummer in artiestweergave voor deze wordt afgekort. Stel in als -1 om " -"uit te schakelen" - -#: ../data/org.gnome.Music.gschema.xml.h:16 msgid "Enable ReplayGain" msgstr "ReplayGain inschakelen" -#: ../data/org.gnome.Music.gschema.xml.h:17 +#: ../data/org.gnome.Music.gschema.xml.h:15 msgid "Enables or disables ReplayGain for albums" msgstr "Schakelt ReplayGain in of uit voor albums" -#: ../data/gnome-music.desktop.in.h:1 ../gnomemusic/application.py:50 -#: ../gnomemusic/application.py:113 ../gnomemusic/toolbar.py:140 -#: ../gnomemusic/window.py:59 ../data/AboutDialog.ui.in.h:1 -msgid "Music" -msgstr "Muziek" - -#: ../data/gnome-music.desktop.in.h:2 -msgid "Music Player" -msgstr "Muziekspeler" - -#: ../data/gnome-music.desktop.in.h:3 ../data/gnome-music.appdata.xml.in.h:2 -msgid "Play and organize your music collection" -msgstr "Uw muziekverzameling beluisteren en beheren" - -#: ../data/gnome-music.desktop.in.h:4 -msgid "Music;Player;" -msgstr "Muziek;Speler;" - -#: ../data/gnome-music.appdata.xml.in.h:1 -msgid "GNOME Music" -msgstr "Gnome Muziek" - -#: ../data/gnome-music.appdata.xml.in.h:3 -msgid "Music is the new GNOME music playing application." -msgstr "Muziek is de nieuwe muziekspeler van Gnome." - -#: ../gnomemusic/albumArtCache.py:103 ../gnomemusic/albumArtCache.py:111 -msgid "Untitled" -msgstr "Naamloos" - -#: ../gnomemusic/mpris.py:148 ../gnomemusic/notification.py:100 -#: ../gnomemusic/player.py:470 ../gnomemusic/view.py:537 -#: ../gnomemusic/view.py:968 ../gnomemusic/view.py:1387 -msgid "Unknown Album" -msgstr "Onbekend album" - -#: ../gnomemusic/mpris.py:164 ../gnomemusic/notification.py:98 -#: ../gnomemusic/player.py:461 ../gnomemusic/view.py:222 -#: ../gnomemusic/view.py:437 ../gnomemusic/view.py:710 -#: ../gnomemusic/view.py:1150 ../gnomemusic/view.py:1385 -#: ../gnomemusic/view.py:1421 ../gnomemusic/widgets.py:235 -#: ../gnomemusic/widgets.py:631 -msgid "Unknown Artist" -msgstr "Onbekende artiest" - -#: ../gnomemusic/notification.py:89 -msgid "Not playing" -msgstr "Afspelen gestopt" +#: ../data/org.gnome.Music.gschema.xml.h:16 +msgid "Inital state has been displayed" +msgstr "Initiële status is al weergegeven" -#. TRANSLATORS: by refers to the artist, from to the album -#: ../gnomemusic/notification.py:104 -#, python-format -msgid "by %s, from %s" -msgstr "door %s, van %s" +#: ../data/org.gnome.Music.gschema.xml.h:17 +msgid "Set to true when initial state has been displayed" +msgstr "Inschakelen wanneer de initiële status al is weergegeven" -#: ../gnomemusic/notification.py:125 ../data/PlayerToolbar.ui.h:5 +#: ../gnomemusic/notification.py:55 ../data/PlayerToolbar.ui.h:6 msgid "Previous" msgstr "Vorige" -#: ../gnomemusic/notification.py:128 ../gnomemusic/player.py:418 +#: ../gnomemusic/notification.py:58 ../gnomemusic/player.py:558 msgid "Pause" msgstr "Pauzeren" -#: ../gnomemusic/notification.py:131 ../gnomemusic/player.py:421 -#: ../data/PlayerToolbar.ui.h:6 +#: ../gnomemusic/notification.py:61 ../gnomemusic/player.py:561 +#: ../data/PlayerToolbar.ui.h:7 msgid "Play" msgstr "Afspelen" -#: ../gnomemusic/notification.py:133 ../data/PlayerToolbar.ui.h:7 +#: ../gnomemusic/notification.py:63 ../data/PlayerToolbar.ui.h:8 msgid "Next" msgstr "Volgende" +#: ../gnomemusic/player.py:1167 +msgid "Unable to play the file" +msgstr "Kan het bestand niet afspelen" + +#. 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:1172 +#, python-format +msgid "_Find in %s" +msgstr "_Zoeken in %s" + +#. TRANSLATORS: separator for a list of codecs +#: ../gnomemusic/player.py:1182 +msgid " and " +msgstr " en " + +#. TRANSLATORS: separator for a list of codecs +#: ../gnomemusic/player.py:1185 +msgid ", " +msgstr ", " + +#: ../gnomemusic/player.py:1186 +#, 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 is vereist om het bestand af te spelen, maar is niet geïnstalleerd" +msgstr[1] "" +"%s zijn vereist om het bestand af te spelen, maar zijn niet geïnstalleerd" + #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:49 +#: ../gnomemusic/playlists.py:59 msgid "Most Played" msgstr "Meest afgespeeld" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:56 +#: ../gnomemusic/playlists.py:64 msgid "Never Played" msgstr "Nooit afgespeeld" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:63 +#: ../gnomemusic/playlists.py:69 msgid "Recently Played" msgstr "Onlangs afgespeeld" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:70 +#: ../gnomemusic/playlists.py:74 msgid "Recently Added" msgstr "Onlangs toegevoegd" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:77 +#: ../gnomemusic/playlists.py:79 msgid "Favorite Songs" msgstr "Favoriete nummers" -#. 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:69 -msgid "the a an" -msgstr "the de het een a an" - -#: ../gnomemusic/searchbar.py:58 ../gnomemusic/searchbar.py:101 +#: ../gnomemusic/searchbar.py:63 ../gnomemusic/searchbar.py:111 msgid "All" msgstr "Alles" -#: ../gnomemusic/searchbar.py:59 +#: ../gnomemusic/searchbar.py:64 msgid "Artist" msgstr "Artiest" -#: ../gnomemusic/searchbar.py:60 +#: ../gnomemusic/searchbar.py:65 msgid "Album" msgstr "Album" -#: ../gnomemusic/searchbar.py:61 +#: ../gnomemusic/searchbar.py:66 ../data/AlbumWidget.ui.h:3 +msgid "Composer" +msgstr "Componist" + +#: ../gnomemusic/searchbar.py:67 msgid "Track Title" -msgstr "titel van het nummer" +msgstr "Titel van het nummer" -#: ../gnomemusic/searchbar.py:102 +#: ../gnomemusic/searchbar.py:112 msgid "Local" msgstr "Lokaal" -#: ../gnomemusic/searchbar.py:204 +#: ../gnomemusic/searchbar.py:224 msgid "Sources" msgstr "Bronnen" -#: ../gnomemusic/searchbar.py:211 +#: ../gnomemusic/searchbar.py:231 msgid "Match" msgstr "Overeenkomst" -#: ../gnomemusic/view.py:190 ../gnomemusic/widgets.py:267 -#: ../gnomemusic/widgets.py:508 ../gnomemusic/window.py:292 -#, python-format -msgid "Selected %d item" -msgid_plural "Selected %d items" -msgstr[0] "%d item geselecteerd" -msgstr[1] "%d items geselecteerd" +#: ../gnomemusic/utils.py:63 +msgid "Unknown Artist" +msgstr "Onbekende artiest" -#: ../gnomemusic/view.py:192 ../gnomemusic/widgets.py:269 -#: ../gnomemusic/widgets.py:510 ../gnomemusic/window.py:296 -#: ../gnomemusic/window.py:308 ../data/headerbar.ui.h:3 -msgid "Click on items to select them" -msgstr "Klik op items om deze te selecteren" +#: ../gnomemusic/utils.py:75 +msgid "Untitled" +msgstr "Naamloos" -#: ../gnomemusic/view.py:279 ../gnomemusic/view.py:1645 +#: ../gnomemusic/views/albumsview.py:44 ../gnomemusic/views/searchview.py:454 msgid "Albums" msgstr "Muziekalbum" -#: ../gnomemusic/view.py:371 ../gnomemusic/view.py:1647 -msgid "Songs" -msgstr "Nummers" - -#: ../gnomemusic/view.py:569 ../gnomemusic/view.py:1646 +#: ../gnomemusic/views/artistsview.py:55 ../gnomemusic/views/searchview.py:455 msgid "Artists" msgstr "Artiesten" -#: ../gnomemusic/view.py:615 ../gnomemusic/view.py:617 -#: ../gnomemusic/widgets.py:517 -msgid "All Artists" -msgstr "Alle artiesten" +#: ../gnomemusic/views/baseview.py:196 +msgid "Selected {} item" +msgid_plural "Selected {} items" +msgstr[0] "{} item geselecteerd" +msgstr[1] "{} items geselecteerd" -#: ../gnomemusic/view.py:795 ../gnomemusic/view.py:1648 +#: ../gnomemusic/views/baseview.py:201 ../gnomemusic/views/baseview.py:303 +#: ../gnomemusic/widgets/albumwidget.py:198 +#: ../gnomemusic/widgets/artistalbumswidget.py:232 ../data/headerbar.ui.h:3 +msgid "Click on items to select them" +msgstr "Klik op items om deze te selecteren" + +#: ../gnomemusic/views/emptyview.py:51 +msgid "Music folder" +msgstr "Muziekmap" + +#: ../gnomemusic/views/emptysearchview.py:50 +msgid "Try a different search" +msgstr "Probeer een andere zoekopdracht" + +#: ../gnomemusic/views/initialstateview.py:50 +msgid "Hey DJ" +msgstr "Hoi DJ" + +#: ../gnomemusic/views/playlistview.py:58 ../gnomemusic/views/searchview.py:457 msgid "Playlists" msgstr "Afspeellijsten" -#: ../gnomemusic/view.py:1161 +#: ../gnomemusic/views/playlistview.py:420 #, python-format msgid "%d Song" msgid_plural "%d Songs" msgstr[0] "%d nummer" msgstr[1] "%d nummers" -#: ../gnomemusic/widgets.py:308 ../gnomemusic/widgets.py:342 +#: ../gnomemusic/views/searchview.py:456 ../gnomemusic/views/songsview.py:55 +msgid "Songs" +msgstr "Nummers" + +#: ../gnomemusic/widgets/albumwidget.py:194 +#: ../gnomemusic/widgets/artistalbumswidget.py:228 +#, python-format +msgid "Selected %d item" +msgid_plural "Selected %d items" +msgstr[0] "%d item geselecteerd" +msgstr[1] "%d items geselecteerd" + +#: ../gnomemusic/widgets/albumwidget.py:291 +#: ../gnomemusic/widgets/albumwidget.py:345 #, python-format msgid "%d min" msgstr "%d min" -#: ../gnomemusic/widgets.py:755 -msgid "New Playlist" -msgstr "Nieuwe afspeellijst" +#: ../gnomemusic/widgets/disclistboxwidget.py:189 +msgid "Disc {}" +msgstr "Schijf {}" -#: ../gnomemusic/window.py:240 -msgid "Empty" -msgstr "Leeg" - -#: ../gnomemusic/window.py:320 +#: ../gnomemusic/window.py:125 msgid "Loading" msgstr "Laden" -#: ../gnomemusic/window.py:335 +#. Undo button +#: ../gnomemusic/window.py:162 msgid "_Undo" msgstr "_Ongedaan maken" -#: ../gnomemusic/window.py:336 -#, python-format -msgid "Playlist %s removed" -msgstr "Afspeellijst %s verwijderd" +#: ../gnomemusic/window.py:314 +msgid "Empty" +msgstr "Leeg" + +#: ../gnomemusic/window.py:390 +msgid "Playlist {} removed" +msgstr "Afspeellijst {} verwijderd" #: ../data/AboutDialog.ui.in.h:2 -msgid "Copyright © 2013 GNOME Music Developers" -msgstr "Copyright © 2013 Gnome Music ontwikkelaars" +msgid "Copyright © 2016 GNOME Music Developers" +msgstr "Copyright © 2016 Gnome Muziek-ontwikkelaars" #: ../data/AboutDialog.ui.in.h:3 msgid "A music player and management application for GNOME." -msgstr "Een muziekspeler en beheertoepassing voor GNOME." +msgstr "Een muziekspeler en beheertoepassing voor Gnome." #: ../data/AboutDialog.ui.in.h:4 msgid "Visit GNOME Music website" -msgstr "Bezoek de Gnome Music-website" +msgstr "Bezoek de Gnome Muziek-website" #: ../data/AboutDialog.ui.in.h:5 msgid "" @@ -338,31 +352,37 @@ 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." +"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 is vrije software; u mag het verder verspreiden en/of wijzigen " +"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 3 ofwel " +"door de Free Software Foundation, naar keuze ofwel onder versie 2 ofwel " "onder een nieuwere versie van die licentie.\n" "\n" -"Gnome Music wordt uitgegeven in de hoop dat het nuttig is, maar ZONDER ENIGE " -"GARANTIE; zelfs zonder de impliciete garantie van VERKOOPBAARHEID of " +"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" -"Bij dit programma hoort u een kopie van de GNU General Public " -"License ontvangen te hebben; mocht dit niet het geval zijn, schrijf dan naar " -"Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA " -"02110-1301, USA.\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 Music verlenen hierbij toestemming om niet-GPL " -"overeenkomende GStreamer-plugins te gebruiken en te distribueren samen met " -"GStreamer en Gnome Music. Deze toestemming overstijgt en gaat verder dan de " -"toestemming verleend door de GPL-licentie waaronder Gnome Music 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." +"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.\n" +"\n" +"‘Magic of the vinyl’ door Sami Pyylampi afbeelding is uitgebracht onder CC-" +"BY-SA 2.0 https://www.flickr.com/photos/_spy_/12270839403\n" #: ../data/AlbumWidget.ui.h:1 msgid "Released" @@ -373,41 +393,21 @@ msgid "Running Length" msgstr "Speelduur" #: ../data/app-menu.ui.h:1 +msgid "_Keyboard Shortcuts" +msgstr "_Sneltoetsen" + +#: ../data/app-menu.ui.h:2 msgid "_Help" msgstr "_Hulp" -#: ../data/app-menu.ui.h:2 +#: ../data/app-menu.ui.h:3 msgid "_About" msgstr "_Info" -#: ../data/app-menu.ui.h:3 +#: ../data/app-menu.ui.h:4 msgid "_Quit" msgstr "_Afsluiten" -#: ../data/PlayerToolbar.ui.h:1 -msgid "Shuffle" -msgstr "Willekeurig" - -#: ../data/PlayerToolbar.ui.h:2 -msgid "Repeat All" -msgstr "Alles herhalen" - -#: ../data/PlayerToolbar.ui.h:3 -msgid "Repeat Song" -msgstr "Nummer herhalen" - -#: ../data/PlayerToolbar.ui.h:4 -msgid "Shuffle/Repeat Off" -msgstr "Willekeurig/Herhalen uit" - -#: ../data/NoMusic.ui.h:1 -msgid "No music found" -msgstr "Geen muziek gevonden" - -#: ../data/NoMusic.ui.h:2 -msgid "The contents of your music folder will appear here." -msgstr "De inhoud van uw muziekmap zal hier verschijnen." - #: ../data/headerbar.ui.h:1 msgid "Select All" msgstr "Alles selecteren" @@ -420,25 +420,129 @@ msgstr "Niets selecteren" msgid "Search" msgstr "Zoeken" -#: ../data/headerbar.ui.h:5 ../data/PlaylistDialog.ui.h:3 +#: ../data/headerbar.ui.h:5 msgid "Select" msgstr "Selecteren" -#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:2 -msgid "Cancel" -msgstr "Annuleren" +#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:6 +msgid "_Cancel" +msgstr "_Annuleren" #: ../data/headerbar.ui.h:7 msgid "Back" msgstr "Terug" -#: ../data/SelectionToolbar.ui.h:1 -msgid "Add to Playlist" -msgstr "Aan afspeellijst toevoegen" +#: ../data/help-overlay.ui.h:1 +msgctxt "shortcut window" +msgid "General" +msgstr "Algemeen" -#: ../data/SelectionToolbar.ui.h:2 -msgid "Remove from Playlist" -msgstr "Uit afspeellijst verwijderen" +#: ../data/help-overlay.ui.h:2 +msgctxt "shortcut window" +msgid "Close window" +msgstr "Venster sluiten" + +#: ../data/help-overlay.ui.h:3 +msgctxt "shortcut window" +msgid "Search" +msgstr "Zoeken" + +#: ../data/help-overlay.ui.h:4 +msgctxt "shortcut window" +msgid "Help" +msgstr "Hulp" + +#: ../data/help-overlay.ui.h:5 +msgctxt "shortcut window" +msgid "Shortcuts" +msgstr "Sneltoetsen" + +#: ../data/help-overlay.ui.h:6 +msgctxt "shortcut window" +msgid "Playback" +msgstr "Afspelen" + +#: ../data/help-overlay.ui.h:7 +msgctxt "shortcut window" +msgid "Play/Pause" +msgstr "Afspelen/pauzeren" + +#: ../data/help-overlay.ui.h:8 +msgctxt "shortcut window" +msgid "Next song" +msgstr "Volgend nummer" + +#: ../data/help-overlay.ui.h:9 +msgctxt "shortcut window" +msgid "Previous song" +msgstr "Vorig nummer" + +#: ../data/help-overlay.ui.h:10 +msgctxt "shortcut window" +msgid "Toggle repeat" +msgstr "Herhalen in/uitschakelen" + +#: ../data/help-overlay.ui.h:11 +msgctxt "shortcut window" +msgid "Toggle shuffle" +msgstr "Willekeurig in/uitschakelen" + +#: ../data/help-overlay.ui.h:12 +msgctxt "shortcut window" +msgid "Navigation" +msgstr "Navigatie" + +#: ../data/help-overlay.ui.h:13 +msgctxt "shortcut window" +msgid "Go to Albums" +msgstr "Naar Albums gaan" + +#: ../data/help-overlay.ui.h:14 +msgctxt "shortcut window" +msgid "Go to Artists" +msgstr "Naar Artiesten gaan" + +#: ../data/help-overlay.ui.h:15 +msgctxt "shortcut window" +msgid "Go to Songs" +msgstr "Naar Nummers gaan" + +#: ../data/help-overlay.ui.h:16 +msgctxt "shortcut window" +msgid "Go to Playlists" +msgstr "Naar Afspeellijsten gaan" + +#: ../data/help-overlay.ui.h:17 +msgctxt "shortcut window" +msgid "Go back" +msgstr "Teruggaan" + +#: ../data/NoMusic.ui.h:1 +msgid "No music found" +msgstr "Geen muziek gevonden" + +#. 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 "De inhoud van uw %s zal hier verschijnen." + +#: ../data/PlayerToolbar.ui.h:1 +msgid "Shuffle" +msgstr "Willekeurig" + +#: ../data/PlayerToolbar.ui.h:2 +msgid "Repeat All" +msgstr "Alles herhalen" + +#: ../data/PlayerToolbar.ui.h:3 +msgid "Repeat Song" +msgstr "Nummer herhalen" + +#. Causes tracks to play in random order +#: ../data/PlayerToolbar.ui.h:5 +msgid "Shuffle/Repeat Off" +msgstr "Willekeurig/Herhalen uit" #: ../data/PlaylistControls.ui.h:1 msgid "_Play" @@ -453,21 +557,64 @@ msgid "Playlist Name" msgstr "Afspeellijstnaam" #: ../data/PlaylistDialog.ui.h:1 +msgid "Enter a name for your first playlist" +msgstr "Voer een naam in voor uw eerste afspeellijst" + +#: ../data/PlaylistDialog.ui.h:2 +msgid "C_reate" +msgstr "_Maken" + +#: ../data/PlaylistDialog.ui.h:3 +msgid "New Playlist" +msgstr "Nieuwe afspeellijst" + +#: ../data/PlaylistDialog.ui.h:4 +msgid "Add" +msgstr "Toevoegen" + +#: ../data/PlaylistDialog.ui.h:5 msgid "Select Playlist" msgstr "Afspeellijst selecteren" +#: ../data/PlaylistDialog.ui.h:7 +msgid "_Add" +msgstr "_Toevoegen" + +#: ../data/SelectionToolbar.ui.h:1 +msgid "_Add to Playlist" +msgstr "Aan afspeellijst _toevoegen" + +#: ../data/SelectionToolbar.ui.h:2 +msgid "_Remove from Playlist" +msgstr "Uit afspeellijst _verwijderen" + +#~ msgid "the|a|an" +#~ msgstr "the|a|an|de|het|een" + +#~ msgid "Max chars to display in track name on Artist view" +#~ msgstr "" +#~ "Maximum aantal weer te geven tekens in de naam van het nummer in " +#~ "artiestweergave" + #~ msgid "" -#~ "No Music found!\n" -#~ " Put some files into the folder %s" +#~ "This setting modifies the amount of chars for track title on Artist view " +#~ "before its been ellipsized. Set this to -1 to disable" #~ msgstr "" -#~ "Geen muziek gevonden!\n" -#~ " Zet enkele muziekbestanden in map %s" +#~ "Deze instelling wijzigt het aantal tekens dat wordt weergegeven in de " +#~ "titel van het nummer in artiestweergave voor deze wordt afgekort. Stel in " +#~ "als -1 om uit te schakelen" + +#~ msgid "Unknown Album" +#~ msgstr "Onbekend album" + +#~ msgid "the a an" +#~ msgstr "the de het een a an" -#~ msgid "Load More" -#~ msgstr "Meer laden" +#~ msgid "All Artists" +#~ msgstr "Alle artiesten" -#~ msgid "_New Playlist" -#~ msgstr "_Nieuwe afspeellijst" +#~ msgid "Not playing" +#~ msgstr "Afspelen gestopt" -#~ msgid "Now _Playing" -#~ msgstr "_Nu aan het afspelen" +#~ msgid "by %s, from %s" +#~ msgstr "door %s, van %s" diff --git a/po/ro.po b/po/ro.po index d0d1ec36b109179ed9dcd930f2b8f32128cdeddf..f43067679e4a923289896b3db11e5506076e653c 100644 --- a/po/ro.po +++ b/po/ro.po @@ -2,248 +2,374 @@ # Copyright (C) 2014 gnome-music's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-music package. # Bogdan Mințoi , 2014. -# +# Daniel Șerbănescu , 2017. msgid "" msgstr "" "Project-Id-Version: gnome-music master\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "music&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2014-07-28 06:59+0000\n" -"PO-Revision-Date: 2014-07-29 12:15+0300\n" -"Last-Translator: Bogdan Mințoi \n" -"Language-Team: Română <>\n" +"POT-Creation-Date: 2017-09-12 11:14+0000\n" +"PO-Revision-Date: 2017-09-12 21:30+0200\n" +"Last-Translator: Daniel Șerbănescu \n" +"Language-Team: Gnome Romanian Translation Team\n" "Language: ro\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==0 || (n%100 > 0 && n%100 < " -"20)) ? 1 : 2);\n" -"X-Generator: Gtranslator 2.91.6\n" +"20)) ? 1 : 2);;\n" +"X-Generator: Virtaal 0.7.1\n" +"X-Project-Style: gnome\n" -#: ../data/org.gnome.Music.gschema.xml.h:1 +#: data/org.gnome.Music.appdata.xml.in:6 +msgid "GNOME Music" +msgstr "Muzică GNOME" + +#: data/org.gnome.Music.appdata.xml.in:7 data/org.gnome.Music.desktop.in:5 +msgid "Play and organize your music collection" +msgstr "Redă și organizează colecția dumneavoastră de muzică" + +#: data/org.gnome.Music.appdata.xml.in:9 +msgid "Music is the new GNOME music playing application." +msgstr "Muzică este noua aplicație GNOME pentru redare de muzică." + +#: data/org.gnome.Music.desktop.in:3 gnomemusic/application.py:53 +#: gnomemusic/application.py:102 gnomemusic/toolbar.py:90 +#: gnomemusic/window.py:68 data/AboutDialog.ui.in:7 +msgid "Music" +msgstr "Muzică" + +#: data/org.gnome.Music.desktop.in:4 +msgid "Music Player" +msgstr "Player pentru muzică" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Music.desktop.in:7 +msgid "gnome-music" +msgstr "gnome-music" + +#. 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:13 +#| msgid "Music Player" +msgid "Music;Player;" +msgstr "Music;Player;Muzică;Redare;" + +#: data/org.gnome.Music.gschema.xml:12 msgid "Window size" msgstr "Dimensiune fereastră" -#: ../data/org.gnome.Music.gschema.xml.h:2 +#: data/org.gnome.Music.gschema.xml:13 msgid "Window size (width and height)." -msgstr "Dimensiune fereastră (înălțime și lățime)." +msgstr "Dimensiune fereastră (lățime și înălțime)." -#: ../data/org.gnome.Music.gschema.xml.h:3 +#: data/org.gnome.Music.gschema.xml:17 msgid "Window position" msgstr "Poziție fereastră" -#: ../data/org.gnome.Music.gschema.xml.h:4 +#: 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.h:5 +#: data/org.gnome.Music.gschema.xml:22 msgid "Window maximized" msgstr "Fereastră maximizată" -#: ../data/org.gnome.Music.gschema.xml.h:6 +#: data/org.gnome.Music.gschema.xml:23 msgid "Window maximized state." msgstr "Starea ferestrei maximizată." -#: ../data/org.gnome.Music.gschema.xml.h:7 +#: data/org.gnome.Music.gschema.xml:27 msgid "Playback repeat mode" -msgstr "Modul de repetare a redării" +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.h:9 +#: 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)." 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 "" "Valoarea identifică dacă redarea se face repetitiv sau aleatoriu din " -"colecție. Valori permise sunt: „nimic” (repetiția și redarea aleatorie sunt " -"dezactivate), „melodie” (se repetă doar melodia actuală), „tot” (se repetă " -"toată lista de redare, fără amestecare), „amestecare” (amestecă lista de " -"redare, probabil se repetă tot)." +"colecție. Valorile permise sunt: „nimic” (repetiția și redarea aleatorie " +"sunt dezactivate), „melodie” (se repetă doar melodia actuală), „tot” (se " +"repetă toată lista de redare, fără amestecare), „amestecare” (amestecă lista " +"de redare, implică repetarea întregii liste)." -#: ../data/org.gnome.Music.gschema.xml.h:10 +#: data/org.gnome.Music.gschema.xml:33 msgid "Search mode" msgstr "Mod de căutare" -#: ../data/org.gnome.Music.gschema.xml.h:11 +#: data/org.gnome.Music.gschema.xml:34 msgid "If true, the search bar is shown." msgstr "Dacă este adevărat, bara de căutare va fi afișată." -#: ../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 "Muzică" - -#: ../data/gnome-music.desktop.in.h:2 -msgid "Music Player" -msgstr "Redare de muzică" +#: data/org.gnome.Music.gschema.xml:38 +msgid "Notifications mode" +msgstr "Mod de notificări" -#: ../data/gnome-music.desktop.in.h:3 ../data/gnome-music.appdata.xml.in.h:2 -msgid "Play and organize your music collection" -msgstr "Redă și organizează colecția dumneavoastră de muzică" +#: data/org.gnome.Music.gschema.xml:39 +msgid "Enables or disables playback notifications" +msgstr "Actvează sau dezactivează notificările de redare" -#: ../data/gnome-music.appdata.xml.in.h:1 -msgid "GNOME Music" -msgstr "Muzică GNOME" +#: data/org.gnome.Music.gschema.xml:43 +msgid "Enable ReplayGain" +msgstr "Activează ReplayGain" -#: ../data/gnome-music.appdata.xml.in.h:3 -msgid "Music is the new GNOME music playing application." -msgstr "Muzică este noua aplicație GNOME pentru redare de muzică." +#: data/org.gnome.Music.gschema.xml:44 +msgid "Enables or disables ReplayGain for albums" +msgstr "Activează sau dezactivează ReplayGain pentru albume" -#: ../gnomemusic/albumArtCache.py:100 ../gnomemusic/albumArtCache.py:108 -msgid "Untitled" -msgstr "Fără titlu" +#: data/org.gnome.Music.gschema.xml:48 +msgid "Inital state has been displayed" +msgstr "Starea inițială a fost afișată" -#: ../gnomemusic/mpris.py:133 ../gnomemusic/notification.py:100 -#: ../gnomemusic/player.py:400 ../gnomemusic/view.py:577 -#: ../gnomemusic/view.py:964 ../gnomemusic/view.py:1291 -msgid "Unknown Album" -msgstr "Album necunoscut" - -#: ../gnomemusic/mpris.py:149 ../gnomemusic/notification.py:98 -#: ../gnomemusic/player.py:391 ../gnomemusic/view.py:286 -#: ../gnomemusic/view.py:486 ../gnomemusic/view.py:720 -#: ../gnomemusic/view.py:1068 ../gnomemusic/view.py:1289 -#: ../gnomemusic/view.py:1320 ../gnomemusic/widgets.py:184 -#: ../gnomemusic/widgets.py:563 -msgid "Unknown Artist" -msgstr "Artist necunoscut" - -#: ../gnomemusic/notification.py:89 -msgid "Not playing" -msgstr "Nu este în redare" +#: data/org.gnome.Music.gschema.xml:49 +msgid "Set to true when initial state has been displayed" +msgstr "Stabiliți la adevărat când starea inițială a fost afișată" -#. TRANSLATORS: by refers to the artist, from to the album -#: ../gnomemusic/notification.py:104 -#, python-format -msgid "by %s, from %s" -msgstr "de %s, de la %s" - -#: ../gnomemusic/notification.py:128 ../data/PlayerToolbar.ui.h:5 +#: gnomemusic/notification.py:55 data/PlayerToolbar.ui:70 msgid "Previous" -msgstr "Precedent" +msgstr "Precedenta" -#: ../gnomemusic/notification.py:131 ../gnomemusic/player.py:348 +#: gnomemusic/notification.py:58 gnomemusic/player.py:558 msgid "Pause" msgstr "Pauză" -#: ../gnomemusic/notification.py:134 ../gnomemusic/player.py:351 -#: ../data/PlayerToolbar.ui.h:6 +#: gnomemusic/notification.py:61 gnomemusic/player.py:561 +#: data/PlayerToolbar.ui:87 msgid "Play" -msgstr "Redare" +msgstr "Redă" -#: ../gnomemusic/notification.py:136 ../data/PlayerToolbar.ui.h:7 +#: gnomemusic/notification.py:63 data/PlayerToolbar.ui:104 msgid "Next" -msgstr "Următorul" +msgstr "Următoarea" + +#: gnomemusic/player.py:1167 +msgid "Unable to play the file" +msgstr "Nu s-a putut reda fișierul" + +#. 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:1172 +#, python-format +msgid "_Find in %s" +msgstr "_Caută în %s" + +#. TRANSLATORS: separator for a list of codecs +#: gnomemusic/player.py:1182 +msgid " and " +msgstr " și " -#: ../gnomemusic/searchbar.py:30 ../gnomemusic/searchbar.py:73 +#. TRANSLATORS: separator for a list of codecs +#: gnomemusic/player.py:1185 +msgid ", " +msgstr ", " + +#: gnomemusic/player.py:1186 +#, 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 este necesar pentru a reda fișierul, dar nu este instalat." +msgstr[1] "%s sunt necesare pentru a reda fișierul, dar nu sunt instalate." +msgstr[2] "%s sunt necesare pentru a reda fișierul, dar nu sunt instalate." + +#. TRANSLATORS: this is a playlist name +#: gnomemusic/playlists.py:59 +#| msgid "Music Player" +msgid "Most Played" +msgstr "Cele mai redate" + +#. TRANSLATORS: this is a playlist name +#: gnomemusic/playlists.py:64 +msgid "Never Played" +msgstr "Niciodată redate" + +#. TRANSLATORS: this is a playlist name +#: gnomemusic/playlists.py:69 +msgid "Recently Played" +msgstr "Redate recent" + +#. TRANSLATORS: this is a playlist name +#: gnomemusic/playlists.py:74 +msgid "Recently Added" +msgstr "Adăugate recent" + +#. TRANSLATORS: this is a playlist name +#: gnomemusic/playlists.py:79 +msgid "Favorite Songs" +msgstr "Melodii favorite" + +#: gnomemusic/searchbar.py:63 gnomemusic/searchbar.py:111 msgid "All" msgstr "Toate" -#: ../gnomemusic/searchbar.py:31 -#| msgid "Artists" +#: gnomemusic/searchbar.py:64 msgid "Artist" msgstr "Artist" -#: ../gnomemusic/searchbar.py:32 -#| msgid "Albums" +#: gnomemusic/searchbar.py:65 msgid "Album" msgstr "Album" -#: ../gnomemusic/searchbar.py:33 +#: gnomemusic/searchbar.py:66 data/AlbumWidget.ui:171 +msgid "Composer" +msgstr "Compozitor" + +#: gnomemusic/searchbar.py:67 msgid "Track Title" -msgstr "Numele melodiei" +msgstr "Titlul piesei" -#: ../gnomemusic/searchbar.py:74 +#: gnomemusic/searchbar.py:112 msgid "Local" msgstr "Local" -#: ../gnomemusic/searchbar.py:176 +#: gnomemusic/searchbar.py:224 msgid "Sources" msgstr "Surse" -#: ../gnomemusic/searchbar.py:183 +#: gnomemusic/searchbar.py:231 msgid "Match" msgstr "Potrivire" -#: ../gnomemusic/view.py:201 ../gnomemusic/widgets.py:225 -#: ../gnomemusic/widgets.py:442 ../gnomemusic/window.py:278 -#, python-format -msgid "Selected %d item" -msgid_plural "Selected %d items" -msgstr[0] "Selectat %d element" -msgstr[1] "Selectat %d elemente" -msgstr[2] "Selectat %d de elemente" - -#: ../gnomemusic/view.py:203 ../gnomemusic/widgets.py:227 -#: ../gnomemusic/widgets.py:444 ../gnomemusic/window.py:282 -#: ../gnomemusic/window.py:294 ../data/headerbar.ui.h:3 -msgid "Click on items to select them" -msgstr "Clic pe obiecte pentru a le selecta" +#: gnomemusic/utils.py:63 +msgid "Unknown Artist" +msgstr "Artist necunoscut" -#: ../gnomemusic/view.py:340 -#, python-format -msgid "" -"No Music found!\n" -" Put some files into the folder %s" -msgstr "" -"Nu s-a găsit nicio muzică!\n" -" Adăugați câteva fișiere în dosarul %s" +#: gnomemusic/utils.py:75 +msgid "Untitled" +msgstr "Fără titlu" -#: ../gnomemusic/view.py:348 ../gnomemusic/view.py:1535 +#: gnomemusic/views/albumsview.py:44 gnomemusic/views/searchview.py:454 msgid "Albums" msgstr "Albume" -#: ../gnomemusic/view.py:430 ../gnomemusic/view.py:1537 -msgid "Songs" -msgstr "Melodii" - -#: ../gnomemusic/view.py:594 ../gnomemusic/view.py:1536 +#: gnomemusic/views/artistsview.py:55 gnomemusic/views/searchview.py:455 msgid "Artists" msgstr "Artiști" -#: ../gnomemusic/view.py:639 ../gnomemusic/view.py:641 -#: ../gnomemusic/widgets.py:451 -msgid "All Artists" -msgstr "Toți artiștii" +#: gnomemusic/views/baseview.py:196 +#| msgid "Selected %d item" +#| msgid_plural "Selected %d items" +msgid "Selected {} item" +msgid_plural "Selected {} items" +msgstr[0] "Selectat {} element" +msgstr[1] "Selectat {} elemente" +msgstr[2] "Selectat {} de elemente" + +#: gnomemusic/views/baseview.py:201 gnomemusic/views/baseview.py:303 +#: gnomemusic/widgets/albumwidget.py:198 +#: gnomemusic/widgets/artistalbumswidget.py:232 data/headerbar.ui:33 +msgid "Click on items to select them" +msgstr "Clic pe obiecte pentru a le selecta" + +#: gnomemusic/views/emptyview.py:51 +#| msgid "Music Player" +msgid "Music folder" +msgstr "Dosar de muzică" + +#: gnomemusic/views/emptysearchview.py:50 +msgid "Try a different search" +msgstr "Încercați cu un alt termen de căutare." -#: ../gnomemusic/view.py:800 ../gnomemusic/view.py:1538 +#: gnomemusic/views/initialstateview.py:50 +msgid "Hey DJ" +msgstr "Salut DJ" + +#: gnomemusic/views/playlistview.py:58 gnomemusic/views/searchview.py:457 msgid "Playlists" msgstr "Liste de redare" -#: ../gnomemusic/view.py:1080 +#: gnomemusic/views/playlistview.py:420 #, python-format -#| msgid "Songs" msgid "%d Song" msgid_plural "%d Songs" msgstr[0] "%d melodie" msgstr[1] "%d melodii" msgstr[2] "%d de melodii" -#: ../gnomemusic/widgets.py:677 -#| msgid "_New Playlist" -msgid "New Playlist" -msgstr "Listă de redare nouă" +#: gnomemusic/views/searchview.py:456 gnomemusic/views/songsview.py:55 +msgid "Songs" +msgstr "Melodii" -#: ../gnomemusic/window.py:226 +#: gnomemusic/widgets/albumwidget.py:194 +#: gnomemusic/widgets/artistalbumswidget.py:228 +#, python-format +msgid "Selected %d item" +msgid_plural "Selected %d items" +msgstr[0] "Selectat %d element" +msgstr[1] "Selectat %d elemente" +msgstr[2] "Selectat %d de elemente" + +#: gnomemusic/widgets/albumwidget.py:291 gnomemusic/widgets/albumwidget.py:345 +#, python-format +msgid "%d min" +msgstr "%d min" + +#: gnomemusic/widgets/disclistboxwidget.py:189 +msgid "Disc {}" +msgstr "Disc {}" + +#: gnomemusic/window.py:125 +#| msgid "Loading..." +msgid "Loading" +msgstr "Se încarcă" + +#. Undo button +#: gnomemusic/window.py:162 +msgid "_Undo" +msgstr "An_ulează" + +#: gnomemusic/window.py:314 msgid "Empty" msgstr "Gol" -#: ../data/AboutDialog.ui.in.h:2 -msgid "Copyright © 2013 GNOME Music Developers" -msgstr "Drepturi de autor © 2013 Dezvoltatorii GNOME Music" +#: gnomemusic/window.py:390 +msgid "Playlist {} removed" +msgstr "Listă de redare {} eliminată" + +#: data/AboutDialog.ui.in:9 +#| msgid "Copyright © 2013 GNOME Music Developers" +msgid "Copyright © 2016 GNOME Music Developers" +msgstr "Drepturi de autor © 2016 Dezvoltatorii GNOME Music" -#: ../data/AboutDialog.ui.in.h:3 +#: data/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/AboutDialog.ui.in.h:4 +#: data/AboutDialog.ui.in:12 msgid "Visit GNOME Music website" -msgstr "Vizitați portalul web al GNOME Music" - -#: ../data/AboutDialog.ui.in.h:5 +msgstr "Vizitați situl web al GNOME Music" + +#: data/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." 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 " @@ -265,7 +391,10 @@ 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." +"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 "" "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 " @@ -287,106 +416,254 @@ msgstr "" "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ă." +"ștergeți această declarație din versiunea dumneavoastră.\n" +"\n" +"Imaginea „Magic of the vinyl” de Sami Pyylampi este licențiată sub CC-BY-SA " +"2.0 https://www.flickr.com/photos/_spy_/12270839403\n" -#: ../data/AlbumWidget.ui.h:1 +#: data/AlbumWidget.ui:110 msgid "Released" msgstr "Lansat" -#: ../data/AlbumWidget.ui.h:2 +#: data/AlbumWidget.ui:126 msgid "Running Length" msgstr "Lungimea piesei" -#: ../data/app-menu.ui.h:1 -msgid "_New Playlist" -msgstr "_Listă de redare nouă" +#: data/app-menu.ui:5 +msgid "_Keyboard Shortcuts" +msgstr "S_curtături de tastatură" -#: ../data/app-menu.ui.h:2 +#: data/app-menu.ui:9 msgid "_Help" msgstr "_Ajutor" -#: ../data/app-menu.ui.h:3 +#: data/app-menu.ui:15 msgid "_About" msgstr "_Despre" -#: ../data/app-menu.ui.h:4 +#: data/app-menu.ui:19 msgid "_Quit" msgstr "_Ieșire" -#: ../data/PlayerToolbar.ui.h:1 -msgid "Shuffle" -msgstr "Amestecă" - -#: ../data/PlayerToolbar.ui.h:2 -msgid "Repeat All" -msgstr "Repetă tot" - -#: ../data/PlayerToolbar.ui.h:3 -msgid "Repeat Song" -msgstr "Repetă piesa" - -#: ../data/PlayerToolbar.ui.h:4 -msgid "Shuffle/Repeat Off" -msgstr "Amestecare/Repetare oprită" - -#: ../data/NoMusic.ui.h:1 -msgid "No Music Found" -msgstr "Nu s-a găsit muzică" - -#: ../data/headerbar.ui.h:1 +#: data/headerbar.ui:7 msgid "Select All" -msgstr "Selectare totală" +msgstr "Selectează toate" -#: ../data/headerbar.ui.h:2 +#: data/headerbar.ui:12 msgid "Select None" -msgstr "Deselectare totală" +msgstr "Deselectează toate" -#: ../data/headerbar.ui.h:4 -#| msgid "Search mode" +#: data/headerbar.ui:67 msgid "Search" msgstr "Caută" -#: ../data/headerbar.ui.h:5 ../data/PlaylistDialog.ui.h:3 -#| msgid "Select All" +#: data/headerbar.ui:90 msgid "Select" msgstr "Selectează" -#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:2 -msgid "Cancel" -msgstr "Anulează" +#: data/headerbar.ui:112 data/PlaylistDialog.ui:264 +#| msgid "Cancel" +msgid "_Cancel" +msgstr "_Anulează" -#: ../data/headerbar.ui.h:7 +#: data/headerbar.ui:130 msgid "Back" -msgstr "Precedent" +msgstr "Înapoi" -#: ../data/SelectionToolbar.ui.h:1 -msgid "Add to Playlist" -msgstr "Adaugă în lista de redare" +#: data/help-overlay.ui:13 +msgctxt "shortcut window" +msgid "General" +msgstr "Generale" -#: ../data/SelectionToolbar.ui.h:2 -#| msgid "Add to Playlist" -msgid "Remove from Playlist" -msgstr "Elimină din lista de redare" +#: data/help-overlay.ui:17 +msgctxt "shortcut window" +msgid "Close window" +msgstr "Închide fereastra" + +#: data/help-overlay.ui:24 +#| msgid "Search" +msgctxt "shortcut window" +msgid "Search" +msgstr "Caută" + +#: data/help-overlay.ui:31 +#| msgid "_Help" +msgctxt "shortcut window" +msgid "Help" +msgstr "Ajutor" -#: ../data/PlaylistControls.ui.h:1 +#: data/help-overlay.ui:38 +msgctxt "shortcut window" +msgid "Shortcuts" +msgstr "Scurtături" + +#: data/help-overlay.ui:47 #| msgid "Play" +msgctxt "shortcut window" +msgid "Playback" +msgstr "Redare" + +#: data/help-overlay.ui:51 +#| msgid "Pause" +msgctxt "shortcut window" +msgid "Play/Pause" +msgstr "Redare/Pauză" + +#: data/help-overlay.ui:58 +#| msgid "Next" +msgctxt "shortcut window" +msgid "Next song" +msgstr "Melodia următoare" + +#: data/help-overlay.ui:65 +#| msgid "Previous" +msgctxt "shortcut window" +msgid "Previous song" +msgstr "Melodia precedentă" + +#: data/help-overlay.ui:72 +msgctxt "shortcut window" +msgid "Toggle repeat" +msgstr "Comută repetarea" + +#: data/help-overlay.ui:79 +msgctxt "shortcut window" +msgid "Toggle shuffle" +msgstr "Comută amestecarea" + +#: data/help-overlay.ui:88 +msgctxt "shortcut window" +msgid "Navigation" +msgstr "Navigare" + +#: data/help-overlay.ui:92 +#| msgid "Albums" +msgctxt "shortcut window" +msgid "Go to Albums" +msgstr "Navighează la albume" + +#: data/help-overlay.ui:99 +#| msgid "Artists" +msgctxt "shortcut window" +msgid "Go to Artists" +msgstr "Navighează la artiști" + +#: data/help-overlay.ui:106 +#| msgid "Songs" +msgctxt "shortcut window" +msgid "Go to Songs" +msgstr "Navighează la melodii" + +#: data/help-overlay.ui:113 +#| msgid "Add to Playlist" +msgctxt "shortcut window" +msgid "Go to Playlists" +msgstr "Navighează la listele de redare" + +#: data/help-overlay.ui:120 +msgctxt "shortcut window" +msgid "Go back" +msgstr "Înapoi" + +#: data/NoMusic.ui:35 +#| msgid "No Music Found" +msgid "No music found" +msgstr "Nu s-a găsit muzică" + +#. Translators: %s will be replaced with a link with text 'Music folder' +#: data/NoMusic.ui:55 +#, python-format +msgid "The contents of your %s will appear here." +msgstr "Conținutul lui %s va apărea aici." + +#: data/PlayerToolbar.ui:6 +msgid "Shuffle" +msgstr "Amestecă" + +#: data/PlayerToolbar.ui:11 +msgid "Repeat All" +msgstr "Repetă toate" + +#: data/PlayerToolbar.ui:16 +msgid "Repeat Song" +msgstr "Repetă piesa" + +#. Causes tracks to play in random order +#: data/PlayerToolbar.ui:21 +msgid "Shuffle/Repeat Off" +msgstr "Amestecare/Repetare oprită" + +#: data/PlaylistControls.ui:6 msgid "_Play" msgstr "_Redare" -#: ../data/PlaylistControls.ui.h:2 +#: data/PlaylistControls.ui:10 msgid "_Delete" msgstr "Ș_terge" -#: ../data/PlaylistDialog.ui.h:1 -#| msgid "Select All" +#: data/PlaylistControls.ui:27 +#| msgid "Playlists" +msgid "Playlist Name" +msgstr "Numele listei de redare" + +#: data/PlaylistDialog.ui:63 +msgid "Enter a name for your first playlist" +msgstr "Introduceți un nume pentru prima listă de redare" + +#: data/PlaylistDialog.ui:88 +msgid "C_reate" +msgstr "C_reează" + +#: data/PlaylistDialog.ui:157 +msgid "New Playlist" +msgstr "Listă de redare nouă" + +#: data/PlaylistDialog.ui:170 +msgid "Add" +msgstr "Adaugă" + +#: data/PlaylistDialog.ui:261 msgid "Select Playlist" msgstr "Selectează lista de redare" +#: data/PlaylistDialog.ui:276 +msgid "_Add" +msgstr "_Adaugă" + +#: data/SelectionToolbar.ui:9 +#| msgid "Add to Playlist" +msgid "_Add to Playlist" +msgstr "_Adaugă în lista de redare" + +#: data/SelectionToolbar.ui:21 +#| msgid "Remove from Playlist" +msgid "_Remove from Playlist" +msgstr "_Elimină din lista de redare" + +#~ msgid "Unknown Album" +#~ msgstr "Album necunoscut" + +#~ msgid "Not playing" +#~ msgstr "Nu este în redare" + +#~ msgid "by %s, from %s" +#~ msgstr "de %s, de la %s" + +#~ msgid "" +#~ "No Music found!\n" +#~ " Put some files into the folder %s" +#~ msgstr "" +#~ "Nu s-a găsit nicio muzică!\n" +#~ " Adăugați câteva fișiere în dosarul %s" + +#~ msgid "All Artists" +#~ msgstr "Toți artiștii" + +#~ msgid "_New Playlist" +#~ msgstr "_Listă de redare nouă" + #~ msgid "Load More" #~ msgstr "Încarcă mai mult" -#~ msgid "Loading..." -#~ msgstr "Se încarcă..." - #~ msgid "Now _Playing" #~ msgstr "Acum _se redă" diff --git a/po/sr.po b/po/sr.po index e28a0c6926a45a38bef41c168250af3193c6c858..acc85856b0de48c24c9ff842338f460ba40c83cc 100644 --- a/po/sr.po +++ b/po/sr.po @@ -5,50 +5,82 @@ msgid "" msgstr "" "Project-Id-Version: gnome-music master\n" -"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" -"music&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2017-03-07 09:53+0000\n" -"PO-Revision-Date: 2017-03-12 08:06+0200\n" -"Last-Translator: Мирослав Николић \n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n" +"POT-Creation-Date: 2017-12-19 16:16+0000\n" +"PO-Revision-Date: 2017-12-25 22:05+0100\n" +"Last-Translator: Марко М. Костић \n" "Language-Team: српски \n" "Language: sr\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-Project-Style: gnome\n" +"X-Generator: Poedit 2.0.3\n" -#: ../data/org.gnome.Music.gschema.xml.h:1 +#: data/org.gnome.Music.appdata.xml.in:6 +msgid "GNOME Music" +msgstr "Гномова музика" + +#: data/org.gnome.Music.appdata.xml.in:7 data/org.gnome.Music.desktop.in:5 +msgid "Play and organize your music collection" +msgstr "Слушајте и уређујте музичку збирку" + +#: data/org.gnome.Music.appdata.xml.in:9 +msgid "Music is the new GNOME music playing application." +msgstr "Музика је нови Гномов програм за пуштање музике." + +#: data/org.gnome.Music.desktop.in:3 gnomemusic/application.py:53 +#: gnomemusic/application.py:102 gnomemusic/toolbar.py:89 +#: gnomemusic/window.py:68 data/AboutDialog.ui.in:7 +msgid "Music" +msgstr "Музика" + +#: data/org.gnome.Music.desktop.in:4 +msgid "Music Player" +msgstr "Програм за музику" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Music.desktop.in:7 +msgid "gnome-music" +msgstr "gnome-music" + +#. 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: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 +#: data/org.gnome.Music.gschema.xml:17 msgid "Window position" msgstr "Положај прозора" -#: ../data/org.gnome.Music.gschema.xml.h:4 +#: data/org.gnome.Music.gschema.xml:18 msgid "Window position (x and y)." msgstr "Положај прозора (положено и усправно)." -#: ../data/org.gnome.Music.gschema.xml.h:5 +#: data/org.gnome.Music.gschema.xml:22 msgid "Window maximized" msgstr "Увећан прозор" -#: ../data/org.gnome.Music.gschema.xml.h:6 +#: data/org.gnome.Music.gschema.xml:23 msgid "Window maximized state." msgstr "Стање увећаног прозора." -#: ../data/org.gnome.Music.gschema.xml.h:7 +#: data/org.gnome.Music.gschema.xml:27 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:29 msgid "" "Value identifies whether to repeat or randomize playback through the " "collection. Allowed values are: “none” (repeat and shuffle are off), " @@ -60,104 +92,78 @@ msgstr "" "„song“ (понавља текућу песму), „all“ (понавља списак нумера, не меша), " "„shuffle“ (меша списак нумера, подразумева понављање свега)." -#: ../data/org.gnome.Music.gschema.xml.h:10 +#: data/org.gnome.Music.gschema.xml:33 msgid "Search mode" msgstr "Режим претраге" -#: ../data/org.gnome.Music.gschema.xml.h:11 +#: data/org.gnome.Music.gschema.xml:34 msgid "If true, the search bar is shown." msgstr "Ако је изабрано, биће приказана трака за претрагу." -#: ../data/org.gnome.Music.gschema.xml.h:12 +#: data/org.gnome.Music.gschema.xml:38 msgid "Notifications mode" msgstr "Режим обавештавања" -#: ../data/org.gnome.Music.gschema.xml.h:13 +#: data/org.gnome.Music.gschema.xml:39 msgid "Enables or disables playback notifications" msgstr "Укључује или искључује обавештења пуштања" -#: ../data/org.gnome.Music.gschema.xml.h:14 +#: data/org.gnome.Music.gschema.xml:43 msgid "Enable ReplayGain" msgstr "Укључује појачање понављања" -#: ../data/org.gnome.Music.gschema.xml.h:15 +#: data/org.gnome.Music.gschema.xml:44 msgid "Enables or disables ReplayGain for albums" msgstr "Укључује или искључује појачање понављања за албуме" -#: ../data/org.gnome.Music.gschema.xml.h:16 +#: data/org.gnome.Music.gschema.xml:48 msgid "Inital state has been displayed" msgstr "Почетно стање је приказано" -#: ../data/org.gnome.Music.gschema.xml.h:17 +#: data/org.gnome.Music.gschema.xml:49 msgid "Set to true when initial state has been displayed" msgstr "Постави на тачно када се почетно стање прикаже" -#: ../data/gnome-music.desktop.in.h:1 ../gnomemusic/application.py:53 -#: ../gnomemusic/application.py:101 ../gnomemusic/toolbar.py:90 -#: ../gnomemusic/window.py:68 ../data/AboutDialog.ui.in.h:1 -msgid "Music" -msgstr "Музика" - -#: ../data/gnome-music.desktop.in.h:2 -msgid "Music Player" -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/gnome-music.desktop.in.h:4 -msgid "Music;Player;" -msgstr "музика;пусти;" - -#: ../data/gnome-music.appdata.xml.in.h:1 -msgid "GNOME Music" -msgstr "Гномова музика" - -#: ../data/gnome-music.appdata.xml.in.h:3 -msgid "Music is the new GNOME music playing application." -msgstr "Музика је нови Гномов програм за пуштање музике." - -#: ../gnomemusic/notification.py:55 ../data/PlayerToolbar.ui.h:6 +#: gnomemusic/notification.py:55 data/PlayerToolbar.ui:70 msgid "Previous" msgstr "Претходно" -#: ../gnomemusic/notification.py:58 ../gnomemusic/player.py:559 +#: gnomemusic/notification.py:58 gnomemusic/player.py:558 msgid "Pause" msgstr "Застани" -#: ../gnomemusic/notification.py:61 ../gnomemusic/player.py:562 -#: ../data/PlayerToolbar.ui.h:7 +#: gnomemusic/notification.py:61 gnomemusic/player.py:561 +#: data/PlayerToolbar.ui:87 msgid "Play" msgstr "Пусти" -#: ../gnomemusic/notification.py:63 ../data/PlayerToolbar.ui.h:8 +#: gnomemusic/notification.py:63 data/PlayerToolbar.ui:104 msgid "Next" msgstr "Наредно" -#: ../gnomemusic/player.py:1132 +#: gnomemusic/player.py:1167 msgid "Unable to play the file" 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:1137 +#: gnomemusic/player.py:1172 #, python-format msgid "_Find in %s" msgstr "_Пронађи у %s" #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1147 +#: gnomemusic/player.py:1182 msgid " and " msgstr " и " #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1150 +#: gnomemusic/player.py:1185 msgid ", " msgstr ", " -#: ../gnomemusic/player.py:1151 +#: gnomemusic/player.py:1186 #, 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." @@ -167,92 +173,79 @@ msgstr[2] "%s су потребни за пуштање датотеке али msgstr[3] "%s је потребан за пуштање датотеке али није инсталиран." #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:59 +#: gnomemusic/playlists.py:58 msgid "Most Played" msgstr "Највише пуштане" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:64 +#: gnomemusic/playlists.py:63 msgid "Never Played" msgstr "Никад пуштане" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:69 +#: gnomemusic/playlists.py:68 msgid "Recently Played" msgstr "Недавно пуштане" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:74 +#: gnomemusic/playlists.py:73 msgid "Recently Added" msgstr "Недавно додате" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:79 +#: gnomemusic/playlists.py:78 msgid "Favorite Songs" msgstr "Омиљене песме" -#. TRANSLATORS: The following translatable string should be a -#. vertical bar-separated list of all-lowercase articles that -#. should be ignored when alphabetizing artists/albums. This -#. list should include the basic english translatable strings -#. regardless of language because they are so universal. -#. If some articles occur more frequently than others, the most -#. common one should appear first, the least common one last. -#: ../gnomemusic/query.py:90 -msgid "the|a|an" -msgstr "the|a|an" - -#: ../gnomemusic/searchbar.py:63 ../gnomemusic/searchbar.py:111 +#: gnomemusic/searchbar.py:62 gnomemusic/searchbar.py:110 msgid "All" msgstr "Све" -#: ../gnomemusic/searchbar.py:64 +#: gnomemusic/searchbar.py:63 msgid "Artist" msgstr "Извођач" -#: ../gnomemusic/searchbar.py:65 +#: gnomemusic/searchbar.py:64 msgid "Album" msgstr "Албум" -#: ../gnomemusic/searchbar.py:66 ../data/AlbumWidget.ui.h:3 +#: gnomemusic/searchbar.py:65 data/AlbumWidget.ui:171 msgid "Composer" msgstr "Композитор" -#: ../gnomemusic/searchbar.py:67 +#: gnomemusic/searchbar.py:66 msgid "Track Title" msgstr "Наслов нумере" -#: ../gnomemusic/searchbar.py:112 +#: gnomemusic/searchbar.py:111 msgid "Local" msgstr "Месно" -#: ../gnomemusic/searchbar.py:224 +#: gnomemusic/searchbar.py:223 msgid "Sources" msgstr "Извори" -#: ../gnomemusic/searchbar.py:231 +#: gnomemusic/searchbar.py:230 msgid "Match" msgstr "Поклопи" -#: ../gnomemusic/utils.py:63 +#: gnomemusic/utils.py:63 msgid "Unknown Artist" msgstr "Непознат извођач" -#: ../gnomemusic/utils.py:75 +#: gnomemusic/utils.py:75 msgid "Untitled" msgstr "Без наслова" -#: ../gnomemusic/views/albumsview.py:44 ../gnomemusic/views/searchview.py:454 +#: gnomemusic/views/albumsview.py:44 gnomemusic/views/searchview.py:484 msgid "Albums" msgstr "Албуми" -#: ../gnomemusic/views/artistsview.py:52 ../gnomemusic/views/searchview.py:455 +#: gnomemusic/views/artistsview.py:55 gnomemusic/views/searchview.py:486 msgid "Artists" msgstr "Извођачи" -#: ../gnomemusic/views/baseview.py:196 -#| msgid "Selected %d item" -#| msgid_plural "Selected %d items" +#: gnomemusic/views/baseview.py:196 msgid "Selected {} item" msgid_plural "Selected {} items" msgstr[0] "Изабрана је {} ставка" @@ -260,29 +253,29 @@ msgstr[1] "Изабране су {} ставке" msgstr[2] "Изабрано је {} ставки" msgstr[3] "Изабрана је {} ставка" -#: ../gnomemusic/views/baseview.py:201 ../gnomemusic/views/baseview.py:303 -#: ../gnomemusic/widgets/albumwidget.py:198 -#: ../gnomemusic/widgets/artistalbumswidget.py:232 ../data/headerbar.ui.h:3 +#: gnomemusic/views/baseview.py:201 gnomemusic/views/baseview.py:303 +#: gnomemusic/widgets/albumwidget.py:196 +#: gnomemusic/widgets/artistalbumswidget.py:232 data/headerbar.ui:33 msgid "Click on items to select them" msgstr "Кликните на ставке да их изаберете" -#: ../gnomemusic/views/emptyview.py:51 +#: gnomemusic/views/emptyview.py:51 msgid "Music folder" msgstr "Фасцикла са музиком" -#: ../gnomemusic/views/emptysearchview.py:50 +#: gnomemusic/views/emptysearchview.py:52 msgid "Try a different search" msgstr "Пробајте са другачијом претрагом" -#: ../gnomemusic/views/initialstateview.py:50 +#: gnomemusic/views/initialstateview.py:50 msgid "Hey DJ" msgstr "Хеј! Диџеј!" -#: ../gnomemusic/views/playlistview.py:58 ../gnomemusic/views/searchview.py:457 +#: gnomemusic/views/playlistview.py:58 gnomemusic/views/searchview.py:490 msgid "Playlists" msgstr "Списак нумера" -#: ../gnomemusic/views/playlistview.py:421 +#: gnomemusic/views/playlistview.py:438 #, python-format msgid "%d Song" msgid_plural "%d Songs" @@ -291,12 +284,12 @@ msgstr[1] "%d песме" msgstr[2] "%d песама" msgstr[3] "%d песма" -#: ../gnomemusic/views/searchview.py:456 ../gnomemusic/views/songsview.py:52 +#: gnomemusic/views/searchview.py:488 gnomemusic/views/songsview.py:55 msgid "Songs" msgstr "Песме" -#: ../gnomemusic/widgets/albumwidget.py:194 -#: ../gnomemusic/widgets/artistalbumswidget.py:228 +#: gnomemusic/widgets/albumwidget.py:192 +#: gnomemusic/widgets/artistalbumswidget.py:228 #, python-format msgid "Selected %d item" msgid_plural "Selected %d items" @@ -305,46 +298,45 @@ msgstr[1] "Изабране су %d ставке" msgstr[2] "Изабрано је %d ставки" msgstr[3] "Изабрана је %d ставка" -#: ../gnomemusic/widgets/albumwidget.py:291 -#: ../gnomemusic/widgets/albumwidget.py:345 +#: gnomemusic/widgets/albumwidget.py:288 gnomemusic/widgets/albumwidget.py:343 #, python-format msgid "%d min" msgstr "%d min" -#: ../gnomemusic/widgets/disclistboxwidget.py:189 +#: gnomemusic/widgets/disclistboxwidget.py:189 msgid "Disc {}" msgstr "Диск {}" -#: ../gnomemusic/window.py:128 +#: gnomemusic/window.py:125 msgid "Loading" msgstr "Учитавам" #. Undo button -#: ../gnomemusic/window.py:183 +#: gnomemusic/window.py:162 msgid "_Undo" msgstr "_Опозови" -#: ../gnomemusic/window.py:342 +#: gnomemusic/window.py:314 msgid "Empty" msgstr "Празно" -#: ../gnomemusic/window.py:419 +#: gnomemusic/window.py:390 msgid "Playlist {} removed" msgstr "Списак нумера {} је уклоњен" -#: ../data/AboutDialog.ui.in.h:2 +#: data/AboutDialog.ui.in:9 msgid "Copyright © 2016 GNOME Music Developers" msgstr "Ауторска права © 2016 Програмери Гномове музике" -#: ../data/AboutDialog.ui.in.h:3 +#: data/AboutDialog.ui.in:10 msgid "A music player and management application for GNOME." msgstr "Гномов програм за пуштање и управљање музиком." -#: ../data/AboutDialog.ui.in.h:4 +#: data/AboutDialog.ui.in:12 msgid "Visit GNOME Music website" msgstr "Посетите веб страницу Гномове музике" -#: ../data/AboutDialog.ui.in.h:5 +#: data/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 " @@ -397,206 +389,221 @@ msgstr "" "Слика \"Magic of the vinyl\" од Самија Пилампија је лиценцирана под CC-BY-SA " "2.0 https://www.flickr.com/photos/_spy_/12270839403\n" -#: ../data/AlbumWidget.ui.h:1 +#: data/AlbumWidget.ui:110 msgid "Released" msgstr "Издат" -#: ../data/AlbumWidget.ui.h:2 +#: data/AlbumWidget.ui:126 msgid "Running Length" msgstr "Дужина трајања" -#: ../data/app-menu.ui.h:1 +#: data/app-menu.ui:5 msgid "_Keyboard Shortcuts" msgstr "_Пречице тастатуре" -#: ../data/app-menu.ui.h:2 +#: data/app-menu.ui:9 msgid "_Help" msgstr "По_моћ" -#: ../data/app-menu.ui.h:3 +#: data/app-menu.ui:15 msgid "_About" msgstr "_О програму" -#: ../data/app-menu.ui.h:4 +#: data/app-menu.ui:19 msgid "_Quit" msgstr "_Изађи" -#: ../data/headerbar.ui.h:1 +#: data/headerbar.ui:7 msgid "Select All" msgstr "Изабери све" -#: ../data/headerbar.ui.h:2 +#: data/headerbar.ui:12 msgid "Select None" msgstr "Поништи избор" -#: ../data/headerbar.ui.h:4 +#: data/headerbar.ui:67 msgid "Search" msgstr "Потражи" -#: ../data/headerbar.ui.h:5 +#: data/headerbar.ui:90 msgid "Select" msgstr "Изабери" -#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:5 +#: data/headerbar.ui:112 data/PlaylistDialog.ui:264 msgid "_Cancel" msgstr "_Откажи" -#: ../data/headerbar.ui.h:7 +#: data/headerbar.ui:130 msgid "Back" msgstr "Назад" -#: ../data/help-overlay.ui.h:1 +#: data/help-overlay.ui:13 msgctxt "shortcut window" msgid "General" msgstr "Опште" -#: ../data/help-overlay.ui.h:2 +#: data/help-overlay.ui:17 msgctxt "shortcut window" msgid "Close window" msgstr "Затвара прозор" -#: ../data/help-overlay.ui.h:3 +#: data/help-overlay.ui:24 msgctxt "shortcut window" msgid "Search" msgstr "Претрага" -#: ../data/help-overlay.ui.h:4 +#: data/help-overlay.ui:31 msgctxt "shortcut window" msgid "Help" msgstr "Помоћ" -#: ../data/help-overlay.ui.h:5 +#: data/help-overlay.ui:38 msgctxt "shortcut window" msgid "Shortcuts" msgstr "Пречице" -#: ../data/help-overlay.ui.h:6 +#: data/help-overlay.ui:47 msgctxt "shortcut window" msgid "Playback" msgstr "Пуштање" -#: ../data/help-overlay.ui.h:7 +#: data/help-overlay.ui:51 msgctxt "shortcut window" msgid "Play/Pause" msgstr "Пушта/паузира" -#: ../data/help-overlay.ui.h:8 +#: data/help-overlay.ui:58 msgctxt "shortcut window" msgid "Next song" msgstr "Следећа песма" -#: ../data/help-overlay.ui.h:9 +#: data/help-overlay.ui:65 msgctxt "shortcut window" msgid "Previous song" msgstr "Претходна песма" -#: ../data/help-overlay.ui.h:10 +#: data/help-overlay.ui:72 msgctxt "shortcut window" msgid "Toggle repeat" msgstr "Прекидач за понављање" -#: ../data/help-overlay.ui.h:11 +#: data/help-overlay.ui:79 msgctxt "shortcut window" msgid "Toggle shuffle" msgstr "Прекидач за мешање" -#: ../data/help-overlay.ui.h:12 +#: data/help-overlay.ui:88 msgctxt "shortcut window" msgid "Navigation" msgstr "Навигација" -#: ../data/help-overlay.ui.h:13 +#: data/help-overlay.ui:92 msgctxt "shortcut window" msgid "Go to Albums" msgstr "Иде на албуме" -#: ../data/help-overlay.ui.h:14 +#: data/help-overlay.ui:99 msgctxt "shortcut window" msgid "Go to Artists" msgstr "Иде на извођаче" -#: ../data/help-overlay.ui.h:15 +#: data/help-overlay.ui:106 msgctxt "shortcut window" msgid "Go to Songs" msgstr "Иде на песме" -#: ../data/help-overlay.ui.h:16 +#: data/help-overlay.ui:113 msgctxt "shortcut window" msgid "Go to Playlists" msgstr "Иде на списак нумера" -#: ../data/help-overlay.ui.h:17 +#: data/help-overlay.ui:120 msgctxt "shortcut window" msgid "Go back" msgstr "Иде назад" -#: ../data/NoMusic.ui.h:1 +#: data/NoMusic.ui:35 msgid "No music found" msgstr "Нисам пронашао музику" -#. Translators: %s will be replaced with a link with text -#: ../data/NoMusic.ui.h:4 -#, no-c-format +#. Translators: %s will be replaced with a link with text 'Music folder' +#: data/NoMusic.ui:55 +#, python-format msgid "The contents of your %s will appear here." msgstr "Садржај фасцикле „%s“ ће се појавити овде." -#: ../data/PlayerToolbar.ui.h:1 +#: data/PlayerToolbar.ui:6 msgid "Shuffle" msgstr "Насумично" -#: ../data/PlayerToolbar.ui.h:2 +#: data/PlayerToolbar.ui:11 msgid "Repeat All" msgstr "Понови све" -#: ../data/PlayerToolbar.ui.h:3 +#: data/PlayerToolbar.ui:16 msgid "Repeat Song" msgstr "Понови песму" #. Causes tracks to play in random order -#: ../data/PlayerToolbar.ui.h:5 +#: data/PlayerToolbar.ui:21 msgid "Shuffle/Repeat Off" msgstr "Искључи мешање/понављање" -#: ../data/PlaylistControls.ui.h:1 +#: data/PlaylistControls.ui:6 msgid "_Play" msgstr "_Пусти" -#: ../data/PlaylistControls.ui.h:2 +#: data/PlaylistControls.ui:10 msgid "_Delete" msgstr "_Обриши" -#: ../data/PlaylistControls.ui.h:3 +#: data/PlaylistControls.ui:14 +msgid "_Rename…" +msgstr "_Преименуј…" + +#: data/PlaylistControls.ui:33 msgid "Playlist Name" msgstr "Назив списка нумера" -#: ../data/PlaylistDialog.ui.h:1 +#: data/PlaylistControls.ui:65 +msgid "_Done" +msgstr "_Готово" + +#: data/PlaylistDialog.ui:63 msgid "Enter a name for your first playlist" msgstr "Унесите назив за ваш први списак нумера" -#: ../data/PlaylistDialog.ui.h:2 +#: data/PlaylistDialog.ui:88 msgid "C_reate" msgstr "_Направи" -#: ../data/PlaylistDialog.ui.h:3 +#: data/PlaylistDialog.ui:157 msgid "New Playlist" msgstr "Нови списак нумера" -#: ../data/PlaylistDialog.ui.h:4 +#: data/PlaylistDialog.ui:170 msgid "Add" msgstr "Додај" -#: ../data/PlaylistDialog.ui.h:6 +#: data/PlaylistDialog.ui:261 +msgid "Select Playlist" +msgstr "Изаберите списак нумера" + +#: data/PlaylistDialog.ui:276 msgid "_Add" msgstr "_Додај" -#: ../data/SelectionToolbar.ui.h:1 +#: data/SelectionToolbar.ui:9 msgid "_Add to Playlist" msgstr "_Додај на списак нумера" -#: ../data/SelectionToolbar.ui.h:2 +#: data/SelectionToolbar.ui:21 msgid "_Remove from Playlist" msgstr "_Уклони са списка нумера" +#~ msgid "the|a|an" +#~ msgstr "the|a|an" + #~ msgid "Max chars to display in track name on Artist view" #~ msgstr "Највише знакова за приказ у називу нумере у прегледу извођача" @@ -622,9 +629,6 @@ msgstr "_Уклони са списка нумера" #~ msgid "by %s, from %s" #~ msgstr "изводи %s, са „%s“" -#~ msgid "Select Playlist" -#~ msgstr "Изаберите списак нумера" - #~ msgid "" #~ "No Music found!\n" #~ " Put some files into the folder %s" diff --git a/po/sv.po b/po/sv.po index 26e173ef44ef7aa2b42b30380148eadcab0979e4..25c39d2413b69e880e1e5c1be66ac4d5ff1408e2 100644 --- a/po/sv.po +++ b/po/sv.po @@ -8,10 +8,9 @@ msgid "" msgstr "" "Project-Id-Version: gnome-music master\n" -"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" -"music&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2017-03-01 09:59+0000\n" -"PO-Revision-Date: 2017-03-01 11:41+0100\n" +"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-music/issues\n" +"POT-Creation-Date: 2017-12-19 16:16+0000\n" +"PO-Revision-Date: 2017-12-26 13:01+0100\n" "Last-Translator: Anders Jonsson \n" "Language-Team: Swedish \n" "Language: sv\n" @@ -19,38 +18,70 @@ 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 1.8.11\n" +"X-Generator: Poedit 2.0.5\n" -#: ../data/org.gnome.Music.gschema.xml.h:1 +#: data/org.gnome.Music.appdata.xml.in:6 +msgid "GNOME Music" +msgstr "GNOME Musik" + +#: data/org.gnome.Music.appdata.xml.in:7 data/org.gnome.Music.desktop.in:5 +msgid "Play and organize your music collection" +msgstr "Spela och organisera din musiksamling" + +#: data/org.gnome.Music.appdata.xml.in:9 +msgid "Music is the new GNOME music playing application." +msgstr "Musik är det nya GNOME-programmet för att spela musik." + +#: data/org.gnome.Music.desktop.in:3 gnomemusic/application.py:53 +#: gnomemusic/application.py:102 gnomemusic/toolbar.py:89 +#: gnomemusic/window.py:68 data/AboutDialog.ui.in:7 +msgid "Music" +msgstr "Musik" + +#: data/org.gnome.Music.desktop.in:4 +msgid "Music Player" +msgstr "Musikspelare" + +#. Translators: Do NOT translate or transliterate this text (this is an icon file name)! +#: data/org.gnome.Music.desktop.in:7 +msgid "gnome-music" +msgstr "gnome-music" + +#. 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:13 +msgid "Music;Player;" +msgstr "Musik;Spelare;" + +#: data/org.gnome.Music.gschema.xml:12 msgid "Window size" msgstr "Fönsterstorlek" -#: ../data/org.gnome.Music.gschema.xml.h:2 +#: data/org.gnome.Music.gschema.xml:13 msgid "Window size (width and height)." msgstr "Fönsterstorlek (bredd och höjd)." -#: ../data/org.gnome.Music.gschema.xml.h:3 +#: data/org.gnome.Music.gschema.xml:17 msgid "Window position" msgstr "Fönsterposition" -#: ../data/org.gnome.Music.gschema.xml.h:4 +#: 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.h:5 +#: data/org.gnome.Music.gschema.xml:22 msgid "Window maximized" msgstr "Fönster maximerat" -#: ../data/org.gnome.Music.gschema.xml.h:6 +#: data/org.gnome.Music.gschema.xml:23 msgid "Window maximized state." msgstr "Tillstånd för maximerat fönster." -#: ../data/org.gnome.Music.gschema.xml.h:7 +#: data/org.gnome.Music.gschema.xml:27 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.h:9 +#: 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), " @@ -63,104 +94,78 @@ 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.h:10 +#: data/org.gnome.Music.gschema.xml:33 msgid "Search mode" msgstr "Sökläge" -#: ../data/org.gnome.Music.gschema.xml.h:11 +#: data/org.gnome.Music.gschema.xml:34 msgid "If true, the search bar is shown." msgstr "Visar sökraden om sant." -#: ../data/org.gnome.Music.gschema.xml.h:12 +#: data/org.gnome.Music.gschema.xml:38 msgid "Notifications mode" msgstr "Aviseringsläge" -#: ../data/org.gnome.Music.gschema.xml.h:13 +#: data/org.gnome.Music.gschema.xml:39 msgid "Enables or disables playback notifications" msgstr "Aktiverar eller inaktiverar uppspelningsaviseringar" -#: ../data/org.gnome.Music.gschema.xml.h:14 +#: data/org.gnome.Music.gschema.xml:43 msgid "Enable ReplayGain" msgstr "Aktivera uppspelningsförstärkning" -#: ../data/org.gnome.Music.gschema.xml.h:15 +#: data/org.gnome.Music.gschema.xml:44 msgid "Enables or disables ReplayGain for albums" msgstr "Aktiverar eller inaktiverar uppspelningsförstärkning för album" -#: ../data/org.gnome.Music.gschema.xml.h:16 +#: data/org.gnome.Music.gschema.xml:48 msgid "Inital state has been displayed" msgstr "Initialtillstånd har visats" -#: ../data/org.gnome.Music.gschema.xml.h:17 +#: data/org.gnome.Music.gschema.xml:49 msgid "Set to true when initial state has been displayed" msgstr "Satt till true när initialtillstånd har visats" -#: ../data/gnome-music.desktop.in.h:1 ../gnomemusic/application.py:53 -#: ../gnomemusic/application.py:101 ../gnomemusic/toolbar.py:90 -#: ../gnomemusic/window.py:68 ../data/AboutDialog.ui.in.h:1 -msgid "Music" -msgstr "Musik" - -#: ../data/gnome-music.desktop.in.h:2 -msgid "Music Player" -msgstr "Musikspelare" - -#: ../data/gnome-music.desktop.in.h:3 ../data/gnome-music.appdata.xml.in.h:2 -msgid "Play and organize your music collection" -msgstr "Spela och organisera din musiksamling" - -#: ../data/gnome-music.desktop.in.h:4 -msgid "Music;Player;" -msgstr "Musik;Spelare;" - -#: ../data/gnome-music.appdata.xml.in.h:1 -msgid "GNOME Music" -msgstr "GNOME Musik" - -#: ../data/gnome-music.appdata.xml.in.h:3 -msgid "Music is the new GNOME music playing application." -msgstr "Musik är det nya GNOME-programmet för att spela musik." - -#: ../gnomemusic/notification.py:55 ../data/PlayerToolbar.ui.h:6 +#: gnomemusic/notification.py:55 data/PlayerToolbar.ui:70 msgid "Previous" msgstr "Föregående" -#: ../gnomemusic/notification.py:58 ../gnomemusic/player.py:559 +#: gnomemusic/notification.py:58 gnomemusic/player.py:558 msgid "Pause" msgstr "Gör paus" -#: ../gnomemusic/notification.py:61 ../gnomemusic/player.py:562 -#: ../data/PlayerToolbar.ui.h:7 +#: gnomemusic/notification.py:61 gnomemusic/player.py:561 +#: data/PlayerToolbar.ui:87 msgid "Play" msgstr "Spela" -#: ../gnomemusic/notification.py:63 ../data/PlayerToolbar.ui.h:8 +#: gnomemusic/notification.py:63 data/PlayerToolbar.ui:104 msgid "Next" msgstr "Nästa" -#: ../gnomemusic/player.py:1132 +#: gnomemusic/player.py:1167 msgid "Unable to play the file" msgstr "Kan inte spela upp filen" #. 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:1137 +#: gnomemusic/player.py:1172 #, python-format msgid "_Find in %s" msgstr "_Hitta i %s" #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1147 +#: gnomemusic/player.py:1182 msgid " and " msgstr " och " #. TRANSLATORS: separator for a list of codecs -#: ../gnomemusic/player.py:1150 +#: gnomemusic/player.py:1185 msgid ", " msgstr ", " -#: ../gnomemusic/player.py:1151 +#: gnomemusic/player.py:1186 #, 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." @@ -168,176 +173,164 @@ msgstr[0] "%s krävs för att spela upp filen men är inte installerad." msgstr[1] "%s krävs för att spela upp filen men är inte installerade." #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:59 +#: gnomemusic/playlists.py:58 msgid "Most Played" msgstr "Mest spelade" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:64 +#: gnomemusic/playlists.py:63 msgid "Never Played" msgstr "Aldrig spelade" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:69 +#: gnomemusic/playlists.py:68 msgid "Recently Played" msgstr "Nyligen spelade" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:74 +#: gnomemusic/playlists.py:73 msgid "Recently Added" msgstr "Nyligen tillagda" #. TRANSLATORS: this is a playlist name -#: ../gnomemusic/playlists.py:79 +#: gnomemusic/playlists.py:78 msgid "Favorite Songs" msgstr "Favoritlåtar" -#. TRANSLATORS: The following translatable string should be a -#. vertical bar-separated list of all-lowercase articles that -#. should be ignored when alphabetizing artists/albums. This -#. list should include the basic english translatable strings -#. regardless of language because they are so universal. -#. If some articles occur more frequently than others, the most -#. common one should appear first, the least common one last. -#: ../gnomemusic/query.py:90 -msgid "the|a|an" -msgstr "the|a|an" - -#: ../gnomemusic/searchbar.py:63 ../gnomemusic/searchbar.py:111 +#: gnomemusic/searchbar.py:62 gnomemusic/searchbar.py:110 msgid "All" msgstr "Alla" -#: ../gnomemusic/searchbar.py:64 +#: gnomemusic/searchbar.py:63 msgid "Artist" msgstr "Artist" -#: ../gnomemusic/searchbar.py:65 +#: gnomemusic/searchbar.py:64 msgid "Album" msgstr "Album" -#: ../gnomemusic/searchbar.py:66 ../data/AlbumWidget.ui.h:3 +#: gnomemusic/searchbar.py:65 data/AlbumWidget.ui:171 msgid "Composer" msgstr "Kompositör" -#: ../gnomemusic/searchbar.py:67 +#: gnomemusic/searchbar.py:66 msgid "Track Title" msgstr "Låttitel" -#: ../gnomemusic/searchbar.py:112 +#: gnomemusic/searchbar.py:111 msgid "Local" msgstr "Lokal" -#: ../gnomemusic/searchbar.py:224 +#: gnomemusic/searchbar.py:223 msgid "Sources" msgstr "Källor" -#: ../gnomemusic/searchbar.py:231 +#: gnomemusic/searchbar.py:230 msgid "Match" msgstr "Träff" -#: ../gnomemusic/utils.py:63 +#: gnomemusic/utils.py:63 msgid "Unknown Artist" msgstr "Okänd artist" -#: ../gnomemusic/utils.py:75 +#: gnomemusic/utils.py:75 msgid "Untitled" msgstr "Namnlös" -#: ../gnomemusic/views/albumsview.py:44 ../gnomemusic/views/searchview.py:454 +#: gnomemusic/views/albumsview.py:44 gnomemusic/views/searchview.py:484 msgid "Albums" msgstr "Album" -#: ../gnomemusic/views/artistsview.py:52 ../gnomemusic/views/searchview.py:455 +#: gnomemusic/views/artistsview.py:55 gnomemusic/views/searchview.py:486 msgid "Artists" msgstr "Artister" -#: ../gnomemusic/views/baseview.py:196 +#: gnomemusic/views/baseview.py:196 msgid "Selected {} item" msgid_plural "Selected {} items" msgstr[0] "Markerade {} objekt" msgstr[1] "Markerade {} objekt" -#: ../gnomemusic/views/baseview.py:201 ../gnomemusic/views/baseview.py:303 -#: ../gnomemusic/widgets/albumwidget.py:198 -#: ../gnomemusic/widgets/artistalbumswidget.py:232 ../data/headerbar.ui.h:3 +#: gnomemusic/views/baseview.py:201 gnomemusic/views/baseview.py:303 +#: gnomemusic/widgets/albumwidget.py:196 +#: gnomemusic/widgets/artistalbumswidget.py:232 data/headerbar.ui:33 msgid "Click on items to select them" msgstr "Klicka på objekt för att välja dem" -#: ../gnomemusic/views/emptyview.py:51 +#: gnomemusic/views/emptyview.py:51 msgid "Music folder" msgstr "Musikmapp" -#: ../gnomemusic/views/emptysearchview.py:50 +#: gnomemusic/views/emptysearchview.py:52 msgid "Try a different search" msgstr "Försök med en annan sökning" -#: ../gnomemusic/views/initialstateview.py:50 +#: gnomemusic/views/initialstateview.py:50 msgid "Hey DJ" msgstr "Hej DJ" -#: ../gnomemusic/views/playlistview.py:58 ../gnomemusic/views/searchview.py:457 +#: gnomemusic/views/playlistview.py:58 gnomemusic/views/searchview.py:490 msgid "Playlists" msgstr "Spellistor" -#: ../gnomemusic/views/playlistview.py:421 +#: gnomemusic/views/playlistview.py:438 #, python-format msgid "%d Song" msgid_plural "%d Songs" msgstr[0] "%d låt" msgstr[1] "%d låtar" -#: ../gnomemusic/views/searchview.py:456 ../gnomemusic/views/songsview.py:52 +#: gnomemusic/views/searchview.py:488 gnomemusic/views/songsview.py:55 msgid "Songs" msgstr "Låtar" -#: ../gnomemusic/widgets/albumwidget.py:194 -#: ../gnomemusic/widgets/artistalbumswidget.py:228 +#: gnomemusic/widgets/albumwidget.py:192 +#: gnomemusic/widgets/artistalbumswidget.py:228 #, python-format msgid "Selected %d item" msgid_plural "Selected %d items" msgstr[0] "Markerade %d objekt" msgstr[1] "Markerade %d objekt" -#: ../gnomemusic/widgets/albumwidget.py:291 -#: ../gnomemusic/widgets/albumwidget.py:345 +#: gnomemusic/widgets/albumwidget.py:288 gnomemusic/widgets/albumwidget.py:343 #, python-format msgid "%d min" msgstr "%d min" -#: ../gnomemusic/widgets/disclistboxwidget.py:189 +#: gnomemusic/widgets/disclistboxwidget.py:189 msgid "Disc {}" msgstr "Skiva {}" -#: ../gnomemusic/window.py:128 +#: gnomemusic/window.py:125 msgid "Loading" msgstr "Läser in" #. Undo button -#: ../gnomemusic/window.py:183 +#: gnomemusic/window.py:162 msgid "_Undo" msgstr "_Ångra" -#: ../gnomemusic/window.py:342 +#: gnomemusic/window.py:314 msgid "Empty" msgstr "Tom" -#: ../gnomemusic/window.py:419 +#: gnomemusic/window.py:390 msgid "Playlist {} removed" msgstr "Spellista {} borttagen" -#: ../data/AboutDialog.ui.in.h:2 +#: data/AboutDialog.ui.in:9 msgid "Copyright © 2016 GNOME Music Developers" msgstr "Copyright © 2016 GNOME Musik-utvecklarna" -#: ../data/AboutDialog.ui.in.h:3 +#: data/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/AboutDialog.ui.in.h:4 +#: data/AboutDialog.ui.in:12 msgid "Visit GNOME Music website" msgstr "Besök webbplatsen för GNOME Musik" -#: ../data/AboutDialog.ui.in.h:5 +#: data/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 " @@ -389,206 +382,221 @@ msgstr "" "Bilden ”Magic of the vinyl” av Sami Pyylampi är licensierad med CC-BY-SA 2.0 " "https://www.flickr.com/photos/_spy_/12270839403\n" -#: ../data/AlbumWidget.ui.h:1 +#: data/AlbumWidget.ui:110 msgid "Released" msgstr "Utgiven" -#: ../data/AlbumWidget.ui.h:2 +#: data/AlbumWidget.ui:126 msgid "Running Length" msgstr "Speltid" -#: ../data/app-menu.ui.h:1 +#: data/app-menu.ui:5 msgid "_Keyboard Shortcuts" msgstr "_Tangentbordsgenvägar" -#: ../data/app-menu.ui.h:2 +#: data/app-menu.ui:9 msgid "_Help" msgstr "_Hjälp" -#: ../data/app-menu.ui.h:3 +#: data/app-menu.ui:15 msgid "_About" msgstr "_Om" -#: ../data/app-menu.ui.h:4 +#: data/app-menu.ui:19 msgid "_Quit" msgstr "A_vsluta" -#: ../data/headerbar.ui.h:1 +#: data/headerbar.ui:7 msgid "Select All" msgstr "Markera alla" -#: ../data/headerbar.ui.h:2 +#: data/headerbar.ui:12 msgid "Select None" msgstr "Avmarkera alla" -#: ../data/headerbar.ui.h:4 +#: data/headerbar.ui:67 msgid "Search" msgstr "Sök" -#: ../data/headerbar.ui.h:5 +#: data/headerbar.ui:90 msgid "Select" msgstr "Välj" -#: ../data/headerbar.ui.h:6 ../data/PlaylistDialog.ui.h:5 +#: data/headerbar.ui:112 data/PlaylistDialog.ui:264 msgid "_Cancel" msgstr "_Avbryt" -#: ../data/headerbar.ui.h:7 +#: data/headerbar.ui:130 msgid "Back" msgstr "Bakåt" -#: ../data/help-overlay.ui.h:1 +#: data/help-overlay.ui:13 msgctxt "shortcut window" msgid "General" msgstr "Allmänt" -#: ../data/help-overlay.ui.h:2 +#: data/help-overlay.ui:17 msgctxt "shortcut window" msgid "Close window" msgstr "Stäng fönster" -#: ../data/help-overlay.ui.h:3 +#: data/help-overlay.ui:24 msgctxt "shortcut window" msgid "Search" msgstr "Sök" -#: ../data/help-overlay.ui.h:4 +#: data/help-overlay.ui:31 msgctxt "shortcut window" msgid "Help" msgstr "Hjälp" -#: ../data/help-overlay.ui.h:5 +#: data/help-overlay.ui:38 msgctxt "shortcut window" msgid "Shortcuts" msgstr "Genvägar" -#: ../data/help-overlay.ui.h:6 +#: data/help-overlay.ui:47 msgctxt "shortcut window" msgid "Playback" msgstr "Uppspelning" -#: ../data/help-overlay.ui.h:7 +#: data/help-overlay.ui:51 msgctxt "shortcut window" msgid "Play/Pause" msgstr "Spela upp/Gör paus" -#: ../data/help-overlay.ui.h:8 +#: data/help-overlay.ui:58 msgctxt "shortcut window" msgid "Next song" msgstr "Nästa låt" -#: ../data/help-overlay.ui.h:9 +#: data/help-overlay.ui:65 msgctxt "shortcut window" msgid "Previous song" msgstr "Föregående låt" -#: ../data/help-overlay.ui.h:10 +#: data/help-overlay.ui:72 msgctxt "shortcut window" msgid "Toggle repeat" msgstr "Växla repetera" -#: ../data/help-overlay.ui.h:11 +#: data/help-overlay.ui:79 msgctxt "shortcut window" msgid "Toggle shuffle" msgstr "Växla blandad uppspelning" -#: ../data/help-overlay.ui.h:12 +#: data/help-overlay.ui:88 msgctxt "shortcut window" msgid "Navigation" msgstr "Navigering" -#: ../data/help-overlay.ui.h:13 +#: data/help-overlay.ui:92 msgctxt "shortcut window" msgid "Go to Albums" msgstr "Gå till Album" -#: ../data/help-overlay.ui.h:14 +#: data/help-overlay.ui:99 msgctxt "shortcut window" msgid "Go to Artists" msgstr "Gå till Artister" -#: ../data/help-overlay.ui.h:15 +#: data/help-overlay.ui:106 msgctxt "shortcut window" msgid "Go to Songs" msgstr "Gå till Låtar" -#: ../data/help-overlay.ui.h:16 +#: data/help-overlay.ui:113 msgctxt "shortcut window" msgid "Go to Playlists" msgstr "Gå till Spellistor" -#: ../data/help-overlay.ui.h:17 +#: data/help-overlay.ui:120 msgctxt "shortcut window" msgid "Go back" msgstr "Gå bakåt" -#: ../data/NoMusic.ui.h:1 +#: data/NoMusic.ui:35 msgid "No music found" msgstr "Ingen musik hittades" -#. Translators: %s will be replaced with a link with text -#: ../data/NoMusic.ui.h:4 -#, no-c-format +#. Translators: %s will be replaced with a link with text 'Music folder' +#: data/NoMusic.ui:55 +#, python-format msgid "The contents of your %s will appear here." msgstr "Innehållet i din %s kommer att visas här." -#: ../data/PlayerToolbar.ui.h:1 +#: data/PlayerToolbar.ui:6 msgid "Shuffle" msgstr "Spela i slumpmässig ordning" -#: ../data/PlayerToolbar.ui.h:2 +#: data/PlayerToolbar.ui:11 msgid "Repeat All" msgstr "Upprepa alla" -#: ../data/PlayerToolbar.ui.h:3 +#: data/PlayerToolbar.ui:16 msgid "Repeat Song" msgstr "Upprepa låt" #. Causes tracks to play in random order -#: ../data/PlayerToolbar.ui.h:5 +#: data/PlayerToolbar.ui:21 msgid "Shuffle/Repeat Off" msgstr "Spela i ordning utan upprepning" -#: ../data/PlaylistControls.ui.h:1 +#: data/PlaylistControls.ui:6 msgid "_Play" msgstr "_Spela" -#: ../data/PlaylistControls.ui.h:2 +#: data/PlaylistControls.ui:10 msgid "_Delete" msgstr "_Ta bort" -#: ../data/PlaylistControls.ui.h:3 +#: data/PlaylistControls.ui:14 +msgid "_Rename…" +msgstr "_Byt namn…" + +#: data/PlaylistControls.ui:33 msgid "Playlist Name" msgstr "Namn på spellista" -#: ../data/PlaylistDialog.ui.h:1 +#: data/PlaylistControls.ui:65 +msgid "_Done" +msgstr "_Färdig" + +#: data/PlaylistDialog.ui:63 msgid "Enter a name for your first playlist" msgstr "Ange ett namn för din första spellista" -#: ../data/PlaylistDialog.ui.h:2 +#: data/PlaylistDialog.ui:88 msgid "C_reate" msgstr "S_kapa" -#: ../data/PlaylistDialog.ui.h:3 +#: data/PlaylistDialog.ui:157 msgid "New Playlist" msgstr "Ny spellista" -#: ../data/PlaylistDialog.ui.h:4 +#: data/PlaylistDialog.ui:170 msgid "Add" msgstr "Lägg till" -#: ../data/PlaylistDialog.ui.h:6 +#: data/PlaylistDialog.ui:261 +msgid "Select Playlist" +msgstr "Välj spellista" + +#: data/PlaylistDialog.ui:276 msgid "_Add" msgstr "_Lägg till" -#: ../data/SelectionToolbar.ui.h:1 +#: data/SelectionToolbar.ui:9 msgid "_Add to Playlist" msgstr "_Lägg till i spellista" -#: ../data/SelectionToolbar.ui.h:2 +#: data/SelectionToolbar.ui:21 msgid "_Remove from Playlist" msgstr "_Ta bort från spellista" +#~ msgid "the|a|an" +#~ msgstr "the|a|an" + #~ msgid "Max chars to display in track name on Artist view" #~ msgstr "Maximalt antal tecken att visa i spårnamnet i artistvyn" @@ -613,6 +621,3 @@ msgstr "_Ta bort från spellista" #~ msgid "by %s, from %s" #~ msgstr "av %s, från %s" - -#~ msgid "Select Playlist" -#~ msgstr "Välj spellista"
Music is the new GNOME music playing application. - +