Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package picard for openSUSE:Factory checked 
in at 2022-06-16 18:19:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/picard (Old)
 and      /work/SRC/openSUSE:Factory/.picard.new.1548 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "picard"

Thu Jun 16 18:19:54 2022 rev:60 rq:982647 version:2.8.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/picard/picard.changes    2022-05-24 
20:32:20.170971306 +0200
+++ /work/SRC/openSUSE:Factory/.picard.new.1548/picard.changes  2022-06-16 
18:20:11.692078489 +0200
@@ -1,0 +2,15 @@
+Tue Jun 14 11:34:21 UTC 2022 - Antonio Larrosa <[email protected]>
+
+- Update to 2.8.1:
+  * Bugfixes
+    - PICARD-2489 - Preferred Releases UI not loading in Options
+      menu on FreeBSD
+    - PICARD-2491 - Crash upon loading album information for
+      releases with MBID redirects
+    - PICARD-2493 - If locales for picard-countries or
+      picard-attributes are missing UI translation is completely
+      skipped
+    - PICARD-2494 - Remove empty info dialog for
+      "[standalone-recordings]" special album entry
+
+-------------------------------------------------------------------

Old:
----
  picard-2.8.tar.gz

New:
----
  picard-2.8.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ picard.spec ++++++
--- /var/tmp/diff_new_pack.majhRd/_old  2022-06-16 18:20:12.400079496 +0200
+++ /var/tmp/diff_new_pack.majhRd/_new  2022-06-16 18:20:12.404079502 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           picard
-Version:        2.8
+Version:        2.8.1
 Release:        0
 Summary:        The Next Generation MusicBrainz Tagger
 License:        GPL-2.0-or-later

++++++ picard-2.8.tar.gz -> picard-2.8.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picard-release-2.8/NEWS.md 
new/picard-release-2.8.1/NEWS.md
--- old/picard-release-2.8/NEWS.md      2022-05-24 08:02:55.000000000 +0200
+++ new/picard-release-2.8.1/NEWS.md    2022-06-07 08:10:30.000000000 +0200
@@ -1,3 +1,13 @@
+# Version 2.8.1 - 2022-06-07
+
+## Bugfixes
+
+- [PICARD-2489](https://tickets.metabrainz.org/browse/PICARD-2489) - Preferred 
Releases UI not loading in Options menu on FreeBSD
+- [PICARD-2491](https://tickets.metabrainz.org/browse/PICARD-2491) - Crash 
upon loading album information for releases with MBID redirects
+- [PICARD-2493](https://tickets.metabrainz.org/browse/PICARD-2493) - If 
locales for picard-countries or picard-attributes are missing UI translation is 
completely skipped
+- [PICARD-2494](https://tickets.metabrainz.org/browse/PICARD-2494) - Remove 
empty info dialog for "[standalone-recordings]" special album entry
+
+
 # Version 2.8 - 2022-05-24
 
 ## Tasks
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picard-release-2.8/picard/__init__.py 
new/picard-release-2.8.1/picard/__init__.py
--- old/picard-release-2.8/picard/__init__.py   2022-05-24 08:02:55.000000000 
+0200
+++ new/picard-release-2.8.1/picard/__init__.py 2022-06-07 08:10:30.000000000 
+0200
@@ -42,7 +42,7 @@
 PICARD_DISPLAY_NAME = "MusicBrainz Picard"
 PICARD_APP_ID = "org.musicbrainz.Picard"
 PICARD_DESKTOP_NAME = PICARD_APP_ID + ".desktop"
-PICARD_VERSION = Version(2, 8, 0, 'final', 0)
+PICARD_VERSION = Version(2, 8, 1, 'final', 0)
 
 
 # optional build version
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picard-release-2.8/picard/album.py 
new/picard-release-2.8.1/picard/album.py
--- old/picard-release-2.8/picard/album.py      2022-05-24 08:02:55.000000000 
+0200
+++ new/picard-release-2.8.1/picard/album.py    2022-06-07 08:10:30.000000000 
+0200
@@ -120,6 +120,12 @@
     LOADED = 3
 
 
+class ParseResult(IntEnum):
+    PARSED = 0
+    REDIRECT = 1
+    MISSING_TRACK_RELS = 2
+
+
 class Album(DataObject, Item):
 
     metadata_images_changed = QtCore.pyqtSignal()
@@ -208,7 +214,7 @@
                 album.match_files(self.unmatched_files.files)
                 album.update()
                 self.tagger.remove_album(self)
-                return False
+                return ParseResult.REDIRECT
             else:
                 del self.tagger.albums[self.id]
                 self.tagger.albums[release_id] = self
@@ -257,17 +263,20 @@
             try:
                 for medium_node in release_node['media']:
                     if medium_node['track-count']:
-                        return 'relations' in 
medium_node['tracks'][0]['recording']
+                        if 'relations' in 
medium_node['tracks'][0]['recording']:
+                            return ParseResult.PARSED
+                        else:
+                            return ParseResult.MISSING_TRACK_RELS
             except KeyError:
                 pass
 
-        return True
+        return ParseResult.PARSED
 
     def _release_request_finished(self, document, http, error):
         if self.load_task is None:
             return
         self.load_task = None
-        parsed = False
+        parse_result = None
         try:
             if error:
                 self.error_append(http.errorString())
@@ -288,19 +297,21 @@
                         error = False
             else:
                 try:
-                    parsed = self._parse_release(document)
+                    parse_result = self._parse_release(document)
                     config = get_config()
-                    if not parsed and config.setting['track_ars']:
+                    if parse_result == ParseResult.MISSING_TRACK_RELS:
                         log.debug('Recording relationships not loaded in 
initial request for %r, issuing separate requests' % self)
                         self._request_recording_relationships(config=config)
-                    else:
+                    elif parse_result == ParseResult.PARSED:
                         self._run_album_metadata_processors()
+                    elif parse_result == ParseResult.REDIRECT:
+                        error = False
                 except Exception:
                     error = True
                     self.error_append(traceback.format_exc())
         finally:
             self._requests -= 1
-            if parsed or error:
+            if parse_result == ParseResult.PARSED or error:
                 self._finalize_loading(error)
 
     def _request_recording_relationships(self, offset=0, 
limit=RECORDING_QUERY_LIMIT, config=None):
@@ -402,6 +413,12 @@
         all_media = []
         absolutetracknumber = 0
 
+        def _load_track(node, mm, artists, extra_metadata):
+            nonlocal absolutetracknumber
+            absolutetracknumber += 1
+            extra_metadata['~absolutetracknumber'] = absolutetracknumber
+            self._finalize_loading_track(node, mm, artists, extra_metadata)
+
         va = self._new_metadata['musicbrainz_albumartistid'] == 
VARIOUS_ARTISTS_ID
 
         djmix_ars = {}
@@ -431,37 +448,24 @@
 
             pregap_node = medium_node.get('pregap')
             if pregap_node:
-                absolutetracknumber += 1
                 mm['~discpregap'] = '1'
-                extra_metadata = {
-                    '~pregap': '1',
-                    '~absolutetracknumber': absolutetracknumber,
-                }
-                self._finalize_loading_track(medium_node['pregap'], mm, 
artists, extra_metadata)
+                _load_track(pregap_node, mm, artists, {'~pregap': '1'})
 
             for track_node in medium_node.get('tracks', []):
-                absolutetracknumber += 1
-                extra_metadata = {
-                    '~absolutetracknumber': absolutetracknumber,
-                }
-                self._finalize_loading_track(track_node, mm, artists, 
extra_metadata)
+                _load_track(track_node, mm, artists, {})
 
             for track_node in medium_node.get('data-tracks', []):
-                absolutetracknumber += 1
-                extra_metadata = {
-                    '~datatrack': '1',
-                    '~absolutetracknumber': absolutetracknumber,
-                }
-                self._finalize_loading_track(track_node, mm, artists, 
extra_metadata)
+                _load_track(track_node, mm, artists, {'~datatrack': '1'})
 
         totalalbumtracks = absolutetracknumber
         self._new_metadata['~totalalbumtracks'] = totalalbumtracks
         # Generate a list of unique media, but keep order of first appearance
         self._new_metadata['media'] = " / 
".join(list(OrderedDict.fromkeys(all_media)))
 
+        multiartists = len(artists) > 1
         for track in self._new_tracks:
             track.metadata["~totalalbumtracks"] = totalalbumtracks
-            if len(artists) > 1:
+            if multiartists:
                 track.metadata["~multiartist"] = "1"
         del self._release_node
         del self._release_artist_nodes
@@ -864,6 +868,9 @@
     def can_browser_lookup(self):
         return False
 
+    def can_view_info(self):
+        return False
+
 
 _album_post_removal_processors = 
PluginFunctions(label='album_post_removal_processors')
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picard-release-2.8/picard/i18n.py 
new/picard-release-2.8.1/picard/i18n.py
--- old/picard-release-2.8/picard/i18n.py       2022-05-24 08:02:55.000000000 
+0200
+++ new/picard-release-2.8.1/picard/i18n.py     2022-06-07 08:10:30.000000000 
+0200
@@ -80,6 +80,15 @@
     return language  # Just return the language, so at least UI translation 
works
 
 
+def _load_translation(domain, localedir, logger):
+    try:
+        logger("Loading gettext translation for %s, localedir=%r", domain, 
localedir)
+        return gettext.translation(domain, localedir)
+    except OSError as e:
+        logger(e)
+        return gettext.NullTranslations()
+
+
 def setup_gettext(localedir, ui_language=None, logger=None):
     """Setup locales, load translations, install gettext functions."""
     if not logger:
@@ -95,18 +104,10 @@
     os.environ['LANGUAGE'] = os.environ['LANG'] = current_locale
     QLocale.setDefault(QLocale(current_locale))
     logger("Using locale %r", current_locale)
-    try:
-        logger("Loading gettext translation, localedir=%r", localedir)
-        trans = gettext.translation("picard", localedir)
-        logger("Loading gettext translation (picard-countries), localedir=%r", 
localedir)
-        trans_countries = gettext.translation("picard-countries", localedir)
-        logger("Loading gettext translation (picard-attributes), 
localedir=%r", localedir)
-        trans_attributes = gettext.translation("picard-attributes", localedir)
-    except OSError as e:
-        logger(e)
-        trans = gettext.NullTranslations()
-        trans_countries = gettext.NullTranslations()
-        trans_attributes = gettext.NullTranslations()
+
+    trans = _load_translation('picard', localedir, logger)
+    trans_countries = _load_translation('picard-countries', localedir, logger)
+    trans_attributes = _load_translation('picard-attributes', localedir, 
logger)
 
     trans.install(['ngettext'])
     builtins.__dict__['gettext_countries'] = trans_countries.gettext
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picard-release-2.8/picard/ui/collectionmenu.py 
new/picard-release-2.8.1/picard/ui/collectionmenu.py
--- old/picard-release-2.8/picard/ui/collectionmenu.py  2022-05-24 
08:02:55.000000000 +0200
+++ new/picard-release-2.8.1/picard/ui/collectionmenu.py        2022-06-07 
08:10:30.000000000 +0200
@@ -23,8 +23,6 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 
USA.
 
 
-import locale
-
 from PyQt5 import (
     QtCore,
     QtGui,
@@ -35,6 +33,7 @@
     load_user_collections,
     user_collections,
 )
+from picard.util import strxfrm
 
 
 class CollectionMenu(QtWidgets.QMenu):
@@ -51,7 +50,7 @@
         self.actions = []
         for id_, collection in sorted(user_collections.items(),
                                       key=lambda k_v:
-                                      (locale.strxfrm(str(k_v[1])), k_v[0])):
+                                      (strxfrm(str(k_v[1])), k_v[0])):
             action = QtWidgets.QWidgetAction(self)
             action.setDefaultWidget(CollectionMenuItem(self, collection))
             self.addAction(action)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picard-release-2.8/picard/ui/itemviews.py 
new/picard-release-2.8.1/picard/ui/itemviews.py
--- old/picard-release-2.8/picard/ui/itemviews.py       2022-05-24 
08:02:55.000000000 +0200
+++ new/picard-release-2.8.1/picard/ui/itemviews.py     2022-06-07 
08:10:30.000000000 +0200
@@ -47,7 +47,6 @@
     heappop,
     heappush,
 )
-from locale import strxfrm
 
 from PyQt5 import (
     QtCore,
@@ -85,6 +84,7 @@
     natsort,
     normpath,
     restore_method,
+    strxfrm,
 )
 
 from picard.ui.collectionmenu import CollectionMenu
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picard-release-2.8/picard/ui/options/interface.py 
new/picard-release-2.8.1/picard/ui/options/interface.py
--- old/picard-release-2.8/picard/ui/options/interface.py       2022-05-24 
08:02:55.000000000 +0200
+++ new/picard-release-2.8.1/picard/ui/options/interface.py     2022-06-07 
08:10:30.000000000 +0200
@@ -29,7 +29,6 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 
USA.
 
 
-import locale
 import os.path
 
 from PyQt5 import (
@@ -46,7 +45,10 @@
 )
 from picard.const import UI_LANGUAGES
 from picard.const.sys import IS_MACOS
-from picard.util import icontheme
+from picard.util import (
+    icontheme,
+    strxfrm,
+)
 
 from picard.ui import PicardDialog
 from picard.ui.moveable_list_view import MoveableListView
@@ -204,7 +206,7 @@
         language_list = [(lang[0], lang[1], _(lang[2])) for lang in 
UI_LANGUAGES]
 
         def fcmp(x):
-            return locale.strxfrm(x[2])
+            return strxfrm(x[2])
         for lang_code, native, translation in sorted(language_list, key=fcmp):
             if native and native != translation:
                 name = '%s (%s)' % (translation, native)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picard-release-2.8/picard/ui/options/releases.py 
new/picard-release-2.8.1/picard/ui/options/releases.py
--- old/picard-release-2.8/picard/ui/options/releases.py        2022-05-24 
08:02:55.000000000 +0200
+++ new/picard-release-2.8.1/picard/ui/options/releases.py      2022-06-07 
08:10:30.000000000 +0200
@@ -25,7 +25,6 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 
USA.
 
 
-from locale import strxfrm
 from operator import itemgetter
 
 from PyQt5 import (
@@ -44,6 +43,7 @@
     RELEASE_SECONDARY_GROUPS,
 )
 from picard.const.sys import IS_WIN
+from picard.util import strxfrm
 
 from picard.ui.options import (
     OptionsPage,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picard-release-2.8/picard/util/__init__.py 
new/picard-release-2.8.1/picard/util/__init__.py
--- old/picard-release-2.8/picard/util/__init__.py      2022-05-24 
08:02:55.000000000 +0200
+++ new/picard-release-2.8.1/picard/util/__init__.py    2022-06-07 
08:10:30.000000000 +0200
@@ -44,6 +44,7 @@
 from collections.abc import Mapping
 from itertools import chain
 import json
+from locale import strxfrm as _strxfrm
 import ntpath
 from operator import attrgetter
 import os
@@ -1084,3 +1085,21 @@
 def any_exception_isinstance(error, type_):
     """Returns True, if any exception in the exception chain is instance of 
type_."""
     return any(isinstance(err, type_) for err in iter_exception_chain(error))
+
+
+def strxfrm(string):
+    """Transforms a string to one that can be used in locale-aware comparisons.
+
+    Wrapper around locale.strxfrm, that never throws OSError. If an OSError
+    occurs this function will return the string converted to lower case.
+
+    Args:
+        string: The string to convert
+
+    Returns: A string that can be compared locale-aware
+    """
+    try:
+        return _strxfrm(string)
+    except OSError as err:
+        log.warning('strxfrm(%r) failed: %r', string, err)
+        return string.lower()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picard-release-2.8/picard/util/natsort.py 
new/picard-release-2.8.1/picard/util/natsort.py
--- old/picard-release-2.8/picard/util/natsort.py       2022-05-24 
08:02:55.000000000 +0200
+++ new/picard-release-2.8.1/picard/util/natsort.py     2022-06-07 
08:10:30.000000000 +0200
@@ -2,7 +2,7 @@
 #
 # Picard, the next-generation MusicBrainz tagger
 #
-# Copyright (C) 2019-2020 Philipp Wolfer
+# Copyright (C) 2019-2020, 2022 Philipp Wolfer
 # Copyright (C) 2020-2021 Laurent Monin
 #
 # This program is free software; you can redistribute it and/or
@@ -23,9 +23,10 @@
 """Functions for natural sorting of strings containing numbers.
 """
 
-from locale import strxfrm
 import re
 
+from picard.util import strxfrm
+
 
 RE_NUMBER = re.compile(r'(\d+)')
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picard-release-2.8/po/appstream/nl.po 
new/picard-release-2.8.1/po/appstream/nl.po
--- old/picard-release-2.8/po/appstream/nl.po   2022-05-24 08:02:55.000000000 
+0200
+++ new/picard-release-2.8.1/po/appstream/nl.po 2022-06-07 08:10:30.000000000 
+0200
@@ -5,7 +5,7 @@
 # 
 # Translators:
 # Luk???? Lalinsk?? <[email protected]>, 2020
-# Maurits Meulenbelt <[email protected]>, 2021
+# Maurits Meulenbelt, 2021
 # 
 #, fuzzy
 msgid ""
@@ -14,7 +14,7 @@
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-01-14 23:03+0100\n"
 "PO-Revision-Date: 2018-11-25 07:37+0000\n"
-"Last-Translator: Maurits Meulenbelt <[email protected]>, 2021\n"
+"Last-Translator: Maurits Meulenbelt, 2021\n"
 "Language-Team: Dutch 
(https://www.transifex.com/musicbrainz/teams/13846/nl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picard-release-2.8/po/attributes/nl.po 
new/picard-release-2.8.1/po/attributes/nl.po
--- old/picard-release-2.8/po/attributes/nl.po  2022-05-24 08:02:55.000000000 
+0200
+++ new/picard-release-2.8.1/po/attributes/nl.po        2022-06-07 
08:10:30.000000000 +0200
@@ -2,8 +2,8 @@
 # Translators:
 # reneweesp <[email protected]>, 2017
 # Maurits Meulenbelt <email address hidden>, 2012
-# Maurits Meulenbelt <[email protected]>, 2012
-# Maurits Meulenbelt <[email protected]>, 2013-2022
+# Maurits Meulenbelt, 2012
+# Maurits Meulenbelt, 2013-2022
 # Nikolai Prokoschenko <email address hidden>, 2011
 # Nikolai Prokoschenko <[email protected]>, 2011
 # Niko Strijbol <[email protected]>, 2018
@@ -12,7 +12,7 @@
 msgstr ""
 "Project-Id-Version: MusicBrainz\n"
 "PO-Revision-Date: 2012-05-24 18:52+0000\n"
-"Last-Translator: Maurits Meulenbelt <[email protected]>, 2013-2022\n"
+"Last-Translator: Maurits Meulenbelt, 2013-2022\n"
 "Language-Team: Dutch 
(http://www.transifex.com/musicbrainz/musicbrainz/language/nl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -186,7 +186,7 @@
 #: DB:release_packaging/description:19
 msgctxt "release_packaging"
 msgid "A box usually containing multiple discs as part of a boxed set."
-msgstr ""
+msgstr "Een doos met meestal meerdere cd???s als onderdeel van een boxset."
 
 #: DB:work_type/description:3
 msgctxt "work_type"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picard-release-2.8/po/countries/nl.po 
new/picard-release-2.8.1/po/countries/nl.po
--- old/picard-release-2.8/po/countries/nl.po   2022-05-24 08:02:55.000000000 
+0200
+++ new/picard-release-2.8.1/po/countries/nl.po 2022-06-07 08:10:30.000000000 
+0200
@@ -1,13 +1,13 @@
 # 
 # Translators:
-# Maurits Meulenbelt <[email protected]>, 2012
-# Maurits Meulenbelt <[email protected]>, 2014-2015
+# Maurits Meulenbelt, 2012
+# Maurits Meulenbelt, 2014-2015
 # Nikolai Prokoschenko <[email protected]>, 2011
 msgid ""
 msgstr ""
 "Project-Id-Version: MusicBrainz\n"
 "PO-Revision-Date: 2012-05-24 19:20+0000\n"
-"Last-Translator: Maurits Meulenbelt <[email protected]>, 2014-2015\n"
+"Last-Translator: Maurits Meulenbelt, 2014-2015\n"
 "Language-Team: Dutch 
(http://www.transifex.com/musicbrainz/musicbrainz/language/nl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picard-release-2.8/po/es.po 
new/picard-release-2.8.1/po/es.po
--- old/picard-release-2.8/po/es.po     2022-05-24 08:02:55.000000000 +0200
+++ new/picard-release-2.8.1/po/es.po   2022-06-07 08:10:30.000000000 +0200
@@ -84,7 +84,7 @@
 msgid "Added %(count)i release to collection \"%(name)s\""
 msgid_plural "Added %(count)i releases to collection \"%(name)s\""
 msgstr[0] "A??adida %(count)i publicaci??n a la colecci??n \"%(name)s\""
-msgstr[1] ""
+msgstr[1] "A??adidas %(count)i publicaciones a la colecci??n \"%(name)s\""
 msgstr[2] "A??adidas %(count)i publicaciones a la colecci??n \"%(name)s\""
 
 #: picard/collection.py:86
@@ -92,7 +92,7 @@
 msgid "Removed %(count)i release from collection \"%(name)s\""
 msgid_plural "Removed %(count)i releases from collection \"%(name)s\""
 msgstr[0] "Eliminada %(count)i publicaci??n de la colecci??n \"%(name)s\""
-msgstr[1] ""
+msgstr[1] "Eliminadas %(count)i publicaciones de la colecci??n \"%(name)s\""
 msgstr[2] "Eliminadas %(count)i publicaciones de la colecci??n \"%(name)s\""
 
 #: picard/collection.py:97
@@ -3675,7 +3675,7 @@
 msgid "%s (%i release)"
 msgid_plural "%s (%i releases)"
 msgstr[0] "%s (%i publicaci??n)"
-msgstr[1] ""
+msgstr[1] "%s (%i publicaciones)"
 msgstr[2] "%s (%i publicaciones)"
 
 #: picard/ui/colors.py:37
@@ -3904,7 +3904,7 @@
 msgid "%i file in this track"
 msgid_plural "%i files in this track"
 msgstr[0] "%i fichero en esta pista"
-msgstr[1] ""
+msgstr[1] "%i ficheros en esta pista"
 msgstr[2] "%i ficheros en esta pista"
 
 #: picard/ui/infodialog.py:409
@@ -4215,7 +4215,7 @@
 msgid_plural ""
 "There are %d unsaved files. Closing Picard will lose all unsaved changes."
 msgstr[0] "Hay %d archivo no guardado. Si cierra Picard perder?? todos los 
cambios sin guardar."
-msgstr[1] ""
+msgstr[1] "Hay %d archivos no guardados. Si cierras Picard perder??s todos los 
cambios sin guardar."
 msgstr[2] "Hay %d archivos no guardados. Si cierras Picard perder??s todos los 
cambios sin guardar."
 
 #: picard/ui/mainwindow.py:347
@@ -4740,7 +4740,7 @@
 msgid "(different across %d item)"
 msgid_plural "(different across %d items)"
 msgstr[0] "(var??a en %d elemento)"
-msgstr[1] ""
+msgstr[1] "(var??a en %d elementos)"
 msgstr[2] "(var??a en %d elementos)"
 
 #: picard/ui/metadatabox.py:120
@@ -4748,7 +4748,7 @@
 msgid "(missing from %d item)"
 msgid_plural "(missing from %d items)"
 msgstr[0] "(falta en %d elemento)"
-msgstr[1] ""
+msgstr[1] "(falta en %d elementos)"
 msgstr[2] "(falta en %d elementos)"
 
 #: picard/ui/metadatabox.py:218
@@ -4807,7 +4807,7 @@
 msgid "Use Original Value"
 msgid_plural "Use Original Values"
 msgstr[0] ""
-msgstr[1] ""
+msgstr[1] "Usar valor original"
 msgstr[2] "Usar valor original"
 
 #: picard/ui/metadatabox.py:439
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picard-release-2.8/po/nl.po 
new/picard-release-2.8.1/po/nl.po
--- old/picard-release-2.8/po/nl.po     2022-05-24 08:02:55.000000000 +0200
+++ new/picard-release-2.8.1/po/nl.po   2022-06-07 08:10:30.000000000 +0200
@@ -6,8 +6,8 @@
 # reneweesp <[email protected]>, 2017-2019
 # Dogmatica <[email protected]>, 2006
 # Jan van Thiel <[email protected]>, 2006
-# Maurits Meulenbelt <[email protected]>, 2012
-# Maurits Meulenbelt <[email protected]>, 2012-2022
+# Maurits Meulenbelt, 2012
+# Maurits Meulenbelt, 2012-2022
 # Philipp Wolfer <[email protected]>, 2019-2021
 msgid ""
 msgstr ""
@@ -15,7 +15,7 @@
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 "POT-Creation-Date: 2022-05-01 15:38+0200\n"
 "PO-Revision-Date: 2012-05-29 16:17+0000\n"
-"Last-Translator: Maurits Meulenbelt <[email protected]>, 2012-2022\n"
+"Last-Translator: Maurits Meulenbelt, 2012-2022\n"
 "Language-Team: Dutch 
(http://www.transifex.com/musicbrainz/musicbrainz/language/nl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picard-release-2.8/po/zh_TW.po 
new/picard-release-2.8.1/po/zh_TW.po
--- old/picard-release-2.8/po/zh_TW.po  2022-05-24 08:02:55.000000000 +0200
+++ new/picard-release-2.8.1/po/zh_TW.po        2022-06-07 08:10:30.000000000 
+0200
@@ -7,7 +7,7 @@
 # Philipp Wolfer <[email protected]>, 2019-2022
 # S B <[email protected]>, 2022
 # Shen-Ta Hsieh(BestSteve) <[email protected]>, 2016
-# Shen-Ta Hsieh(BestSteve) <[email protected]>, 2016-2020
+# Shen-Ta Hsieh(BestSteve) <[email protected]>, 2016-2020,2022
 # riotism, 2017-2018,2020
 msgid ""
 msgstr ""
@@ -15,7 +15,7 @@
 "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 "POT-Creation-Date: 2022-05-01 15:38+0200\n"
 "PO-Revision-Date: 2012-05-29 16:17+0000\n"
-"Last-Translator: Philipp Wolfer <[email protected]>, 2019-2022\n"
+"Last-Translator: Shen-Ta Hsieh(BestSteve) <[email protected]>, 
2016-2020,2022\n"
 "Language-Team: Chinese (Taiwan) 
(http://www.transifex.com/musicbrainz/musicbrainz/language/zh_TW/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -6933,7 +6933,7 @@
 
 #: picard/util/tags.py:53
 msgid "Copyright"
-msgstr "?????????"
+msgstr "??????"
 
 #: picard/util/tags.py:55
 msgid "Video Director"

Reply via email to