replaced 'show-all-artists' by 'use-album-artist'

This commit is contained in:
Martin Wagner 2020-03-31 16:07:40 +02:00
parent 3e5b80ad3f
commit 7eb7dc71b1
4 changed files with 177 additions and 165 deletions

View File

@ -828,10 +828,10 @@ class Settings(Gio.Settings):
raise ValueError
def get_artist_type(self):
if self.get_boolean("show-all-artists"):
return ("artist")
else:
if self.get_boolean("use-album-artist"):
return ("albumartist")
else:
return ("artist")
class SongsView(Gtk.ScrolledWindow):
def __init__(self, client, show_album=True):
@ -1070,7 +1070,7 @@ class ArtistView(Gtk.ScrolledWindow):
#connect
self.treeview.connect("row-activated", self.on_row_activated)
self.settings.connect("changed::show-all-artists", self.refresh)
self.settings.connect("changed::use-album-artist", self.refresh)
self.settings.connect("changed::show-initials", self.on_show_initials_settings_changed)
self.client.emitter.connect("update", self.refresh)
@ -1327,6 +1327,7 @@ class AlbumView(Gtk.ScrolledWindow):
self.settings.connect("changed::album-cover", self.on_settings_changed)
self.iconview.connect("done", self.on_done)
self.client.emitter.connect("update", self.clear)
self.settings.connect("changed::use-album-artist", self.clear)
self.add(self.iconview)
@ -1419,6 +1420,9 @@ class MainCover(Gtk.Frame):
if not song == {}:
try:
artist=song[self.settings.get_artist_type()]
except:
try:
artist=song["artist"]
except:
artist=""
try:
@ -1775,6 +1779,13 @@ class Browser(Gtk.Box):
def back_to_album(self, *args):
try: #since this can still be running when the connection is lost, various exceptions can occur
song=self.client.currentsong()
try:
artist=song[self.settings.get_artist_type()]
except:
try:
artist=song["artist"]
except:
artist=""
try:
if not song['genre'] == self.genre_select.get_value():
self.genre_select.deactivate() #deactivate genre filter to show all artists
@ -1784,7 +1795,7 @@ class Browser(Gtk.Box):
row_num=len(self.artist_view.store)
for i in range(0, row_num):
path=Gtk.TreePath(i)
if self.artist_view.store[path][0] == song[self.settings.get_artist_type()]:
if self.artist_view.store[path][0] == artist:
self.artist_view.treeview.set_cursor(path, None, False)
self.artist_view.treeview.row_activated(path, self.artist_view.column_name)
break
@ -2036,7 +2047,7 @@ class GeneralSettings(Gtk.Box):
(_("Show initials in artist view"), "show-initials"), \
(_("Show tooltips in album view"), "show-album-view-tooltips"), \
(_("Sort albums by year"), "sort-albums-by-year"), \
(_("Use 'Artist' instead of 'Album Artist'"), "show-all-artists"), \
(_("Use 'Album Artist' tag"), "use-album-artist"), \
(_("Send notification on title change"), "send-notify"), \
(_("Stop playback on quit"), "stop-on-quit"), \
(_("Play selected albums immediately"), "force-mode")]
@ -2061,7 +2072,7 @@ class GeneralSettings(Gtk.Box):
self.pack_start(grid, True, True, 0)
self.pack_start(behavior_heading, True, True, 0)
self.pack_start(check_buttons["sort-albums-by-year"], True, True, 0)
self.pack_start(check_buttons["show-all-artists"], True, True, 0)
self.pack_start(check_buttons["use-album-artist"], True, True, 0)
self.pack_start(check_buttons["send-notify"], True, True, 0)
self.pack_start(check_buttons["stop-on-quit"], True, True, 0)
self.pack_start(check_buttons["force-mode"], True, True, 0)

View File

@ -71,9 +71,9 @@
<summary>Play selected albums directly</summary>
<description></description>
</key>
<key type="b" name="show-all-artists">
<default>false</default>
<summary>Show all artists instead of albumartists</summary>
<key type="b" name="use-album-artist">
<default>true</default>
<summary>Use 'Album Artist' tag to group albums</summary>
<description></description>
</key>
<key type="ai" name="column-permutation">

158
po/de.po
View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-03-30 10:42+0200\n"
"PO-Revision-Date: 2020-03-30 10:45+0200\n"
"POT-Creation-Date: 2020-03-31 15:38+0200\n"
"PO-Revision-Date: 2020-03-31 16:05+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: de\n"
@ -18,215 +18,214 @@ msgstr ""
"X-Generator: Poedit 2.2.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: mpdevil.py:834 mpdevil.py:1367 mpdevil.py:2023 mpdevil.py:2677
#: mpdevil.py:860 mpdevil.py:1473 mpdevil.py:2118
msgid "No"
msgstr "Nr."
#: mpdevil.py:839 mpdevil.py:1373 mpdevil.py:2023 mpdevil.py:2683
#: mpdevil.py:866 mpdevil.py:1479 mpdevil.py:2118
msgid "Title"
msgstr "Titel"
#: mpdevil.py:844 mpdevil.py:1005 mpdevil.py:1376 mpdevil.py:2023
#: mpdevil.py:2689
#: mpdevil.py:872 mpdevil.py:1093 mpdevil.py:1482 mpdevil.py:2118
msgid "Artist"
msgstr "Interpret"
#: mpdevil.py:849 mpdevil.py:1382 mpdevil.py:2023 mpdevil.py:2701
#: mpdevil.py:879 mpdevil.py:1485 mpdevil.py:2118
msgid "Album"
msgstr "Album"
#: mpdevil.py:885 mpdevil.py:1488 mpdevil.py:2118
msgid "Length"
msgstr "Länge"
#: mpdevil.py:886 mpdevil.py:1535 mpdevil.py:2743
#: mpdevil.py:933 mpdevil.py:1641
msgid "Unknown Title"
msgstr "Unbekannter Titel"
#: mpdevil.py:890 mpdevil.py:1547 mpdevil.py:2751
#: mpdevil.py:941 mpdevil.py:1653
msgid "Unknown Artist"
msgstr "Unbekannter Interpret"
#: mpdevil.py:921
#: mpdevil.py:945 mpdevil.py:1657
msgid "Unknown Album"
msgstr "Unbekanntes Album"
#: mpdevil.py:1010
msgid "all genres"
msgstr "Alle Genres"
#: mpdevil.py:1003
#: mpdevil.py:1091
msgid "Album Artist"
msgstr "Albuminterpret"
#: mpdevil.py:1006
#: mpdevil.py:1094
msgid "all artists"
msgstr "Alle Interpreten"
#: mpdevil.py:1142 mpdevil.py:1466
#: mpdevil.py:1234 mpdevil.py:1572
#, python-format
msgid "%(total_tracks)i titles (%(total_length)s)"
msgstr "%(total_tracks)i Titel (%(total_length)s)"
#: mpdevil.py:1370 mpdevil.py:2023
#: mpdevil.py:1476 mpdevil.py:2118
msgid "Disc"
msgstr "CD"
#: mpdevil.py:1379 mpdevil.py:2023 mpdevil.py:2695
msgid "Album"
msgstr "Album"
#: mpdevil.py:1385 mpdevil.py:2023
#: mpdevil.py:1491 mpdevil.py:2118
msgid "Year"
msgstr "Jahr"
#: mpdevil.py:1388 mpdevil.py:2023
#: mpdevil.py:1494 mpdevil.py:2118
msgid "Genre"
msgstr "Genre"
#: mpdevil.py:1551 mpdevil.py:2755
msgid "Unknown Album"
msgstr "Unbekanntes Album"
#: mpdevil.py:1606
#: mpdevil.py:1702
msgid "Back to current album"
msgstr "Zurück zu aktuellem Album"
#: mpdevil.py:1608 mpdevil.py:2641
#: mpdevil.py:1704 mpdevil.py:2732
msgid "Search"
msgstr "Suche"
#: mpdevil.py:1765
#: mpdevil.py:1860
msgid "Select"
msgstr "Auswählen"
#: mpdevil.py:1767
#: mpdevil.py:1862
msgid "Profile:"
msgstr "Profil:"
#: mpdevil.py:1769
#: mpdevil.py:1864
msgid "Name:"
msgstr "Name:"
#: mpdevil.py:1771
#: mpdevil.py:1866
msgid "Host:"
msgstr "Host:"
#: mpdevil.py:1773
#: mpdevil.py:1868
msgid "Password:"
msgstr "Passwort:"
#: mpdevil.py:1775
#: mpdevil.py:1870
msgid "Music lib:"
msgstr "Musikverzeichnis:"
#: mpdevil.py:1858
#: mpdevil.py:1953
msgid "Choose directory"
msgstr "Verzeichnis Wählen"
#: mpdevil.py:1896
#: mpdevil.py:1991
msgid "Main cover size:"
msgstr "Größe des Haupt-Covers:"
#: mpdevil.py:1900
#: mpdevil.py:1995
msgid "Album view cover size:"
msgstr "Covergröße in Albumliste:"
#: mpdevil.py:1904
#: mpdevil.py:1999
msgid "Button icon size:"
msgstr "Symbolgröße der Knöpfe:"
#: mpdevil.py:1906
#: mpdevil.py:2001
msgid "(restart required)"
msgstr "(Neustart erforderlich)"
#: mpdevil.py:1931
#: mpdevil.py:2026
msgid "<b>View</b>"
msgstr "<b>Ansicht</b>"
#: mpdevil.py:1934
#: mpdevil.py:2029
msgid "<b>Behavior</b>"
msgstr "<b>Verhalten</b>"
#: mpdevil.py:1939
#: mpdevil.py:2034
msgid "Use alternative layout"
msgstr "Benutze alternatives Layout"
#: mpdevil.py:1940
#: mpdevil.py:2035
msgid "Show stop button"
msgstr "Zeige Stopp-Knopf"
#: mpdevil.py:1941
#: mpdevil.py:2036
msgid "Show initials in artist view"
msgstr "Zeige Anfangsbuchstaben in Interpretenliste"
#: mpdevil.py:1942
#: mpdevil.py:2037
msgid "Show tooltips in album view"
msgstr "Zeige Tooltips in Albumliste"
#: mpdevil.py:1943
#: mpdevil.py:2038
msgid "Sort albums by year"
msgstr "Sortiere Alben nach Jahr"
#: mpdevil.py:1944
msgid "Use 'Artist' instead of 'Album Artist'"
msgstr "Benutze \"Interpret\" statt \"Albuminterpret\""
#: mpdevil.py:2039
msgid "Use 'Album Artist' tag"
msgstr "Benutze \"Album Artist\" Tag"
#: mpdevil.py:1945
#: mpdevil.py:2040
msgid "Send notification on title change"
msgstr "Sende Benachrichtigung bei Titelwechsel"
#: mpdevil.py:1946
#: mpdevil.py:2041
msgid "Stop playback on quit"
msgstr "Wiedergabe beim Beenden stoppen"
#: mpdevil.py:1947
#: mpdevil.py:2042
msgid "Play selected albums immediately"
msgstr "Ausgewählte Alben sofort abspielen"
#: mpdevil.py:1995
#: mpdevil.py:2090
msgid "Choose the order of information to appear in the playlist:"
msgstr ""
"Lege die Reihenfolge fest, in der Informationen in der Wiedergabeliste "
"angezeigt werden sollen:"
#: mpdevil.py:2108 mpdevil.py:2888
#: mpdevil.py:2203 mpdevil.py:2893
msgid "Settings"
msgstr "Einstellungen"
#: mpdevil.py:2122
#: mpdevil.py:2217
msgid "General"
msgstr "Allgemein"
#: mpdevil.py:2123
#: mpdevil.py:2218
msgid "Profiles"
msgstr "Profile"
#: mpdevil.py:2124
#: mpdevil.py:2219
msgid "Playlist"
msgstr "Wiedergabeliste"
#: mpdevil.py:2398
#: mpdevil.py:2490
msgid "Random mode"
msgstr "Zufallsmodus"
#: mpdevil.py:2400
#: mpdevil.py:2492
msgid "Repeat mode"
msgstr "Dauerschleife"
#: mpdevil.py:2402
#: mpdevil.py:2494
msgid "Single mode"
msgstr "Einzelstückmodus"
#: mpdevil.py:2404
#: mpdevil.py:2496
msgid "Consume mode"
msgstr "Wiedergabeliste verbrauchen"
#: mpdevil.py:2493
#: mpdevil.py:2585
msgid "Click to show additional information"
msgstr "Klicken für weitere Informationen"
#: mpdevil.py:2519
#: mpdevil.py:2611
msgid "MPD-Tag"
msgstr "MPD-Tag"
#: mpdevil.py:2523 mpdevil.py:2624
#: mpdevil.py:2615 mpdevil.py:2715
msgid "Value"
msgstr "Wert"
#: mpdevil.py:2545
#: mpdevil.py:2637
#, python-format
msgid ""
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s "
@ -235,67 +234,70 @@ msgstr ""
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s "
"Kanäle, %(file_type)s"
#: mpdevil.py:2602
#: mpdevil.py:2693
msgid "Stats"
msgstr "Statistik"
#: mpdevil.py:2621
#: mpdevil.py:2712
msgid "Tag"
msgstr "Tag"
#: mpdevil.py:2762
#: mpdevil.py:2769
#, python-format
msgid "hits: %i"
msgstr "Treffer: %i"
#: mpdevil.py:2766
#: mpdevil.py:2773
msgid "Lyrics"
msgstr "Liedtext"
#: mpdevil.py:2799
#: mpdevil.py:2805
msgid "searching..."
msgstr "suche..."
#: mpdevil.py:2803
#: mpdevil.py:2809
msgid "not found"
msgstr "nicht gefunden"
#: mpdevil.py:2878
#: mpdevil.py:2883
msgid "Select profile"
msgstr "Profil auswählen"
#: mpdevil.py:2882
#: mpdevil.py:2887
msgid "Show lyrics"
msgstr "Zeige Liedtext"
#: mpdevil.py:2887
#: mpdevil.py:2892
msgid "Save window layout"
msgstr "Fensterlayout speichern"
#: mpdevil.py:2889
#: mpdevil.py:2894
msgid "Update database"
msgstr "Datenbank aktualisieren"
#: mpdevil.py:2890
#: mpdevil.py:2895
msgid "Server stats"
msgstr "Serverstatistik"
#: mpdevil.py:2891
#: mpdevil.py:2896
msgid "About"
msgstr "Über"
#: mpdevil.py:2892
#: mpdevil.py:2897
msgid "Quit"
msgstr "Beenden"
#: mpdevil.py:2897
#: mpdevil.py:2902
msgid "Menu"
msgstr "Menü"
#: mpdevil.py:3059
#: mpdevil.py:3056
msgid "A small MPD client written in python"
msgstr ""
#~ msgid "Use 'Artist' instead of 'Album Artist'"
#~ msgstr "Benutze \"Interpret\" statt \"Albuminterpret\""
#~ msgid "Don't interrupt current title on album select"
#~ msgstr "Laufenden Titel bei Albumauswahl nicht abbrechen"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-03-30 10:42+0200\n"
"POT-Creation-Date: 2020-03-31 15:38+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,276 +17,275 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: mpdevil.py:834 mpdevil.py:1367 mpdevil.py:2023 mpdevil.py:2677
#: mpdevil.py:860 mpdevil.py:1473 mpdevil.py:2118
msgid "No"
msgstr ""
#: mpdevil.py:839 mpdevil.py:1373 mpdevil.py:2023 mpdevil.py:2683
#: mpdevil.py:866 mpdevil.py:1479 mpdevil.py:2118
msgid "Title"
msgstr ""
#: mpdevil.py:844 mpdevil.py:1005 mpdevil.py:1376 mpdevil.py:2023
#: mpdevil.py:2689
#: mpdevil.py:872 mpdevil.py:1093 mpdevil.py:1482 mpdevil.py:2118
msgid "Artist"
msgstr ""
#: mpdevil.py:849 mpdevil.py:1382 mpdevil.py:2023 mpdevil.py:2701
#: mpdevil.py:879 mpdevil.py:1485 mpdevil.py:2118
msgid "Album"
msgstr ""
#: mpdevil.py:885 mpdevil.py:1488 mpdevil.py:2118
msgid "Length"
msgstr ""
#: mpdevil.py:886 mpdevil.py:1535 mpdevil.py:2743
#: mpdevil.py:933 mpdevil.py:1641
msgid "Unknown Title"
msgstr ""
#: mpdevil.py:890 mpdevil.py:1547 mpdevil.py:2751
#: mpdevil.py:941 mpdevil.py:1653
msgid "Unknown Artist"
msgstr ""
#: mpdevil.py:921
#: mpdevil.py:945 mpdevil.py:1657
msgid "Unknown Album"
msgstr ""
#: mpdevil.py:1010
msgid "all genres"
msgstr ""
#: mpdevil.py:1003
#: mpdevil.py:1091
msgid "Album Artist"
msgstr ""
#: mpdevil.py:1006
#: mpdevil.py:1094
msgid "all artists"
msgstr ""
#: mpdevil.py:1142 mpdevil.py:1466
#: mpdevil.py:1234 mpdevil.py:1572
#, python-format
msgid "%(total_tracks)i titles (%(total_length)s)"
msgstr ""
#: mpdevil.py:1370 mpdevil.py:2023
#: mpdevil.py:1476 mpdevil.py:2118
msgid "Disc"
msgstr ""
#: mpdevil.py:1379 mpdevil.py:2023 mpdevil.py:2695
msgid "Album"
msgstr ""
#: mpdevil.py:1385 mpdevil.py:2023
#: mpdevil.py:1491 mpdevil.py:2118
msgid "Year"
msgstr ""
#: mpdevil.py:1388 mpdevil.py:2023
#: mpdevil.py:1494 mpdevil.py:2118
msgid "Genre"
msgstr ""
#: mpdevil.py:1551 mpdevil.py:2755
msgid "Unknown Album"
msgstr ""
#: mpdevil.py:1606
#: mpdevil.py:1702
msgid "Back to current album"
msgstr ""
#: mpdevil.py:1608 mpdevil.py:2641
#: mpdevil.py:1704 mpdevil.py:2732
msgid "Search"
msgstr ""
#: mpdevil.py:1765
#: mpdevil.py:1860
msgid "Select"
msgstr ""
#: mpdevil.py:1767
#: mpdevil.py:1862
msgid "Profile:"
msgstr ""
#: mpdevil.py:1769
#: mpdevil.py:1864
msgid "Name:"
msgstr ""
#: mpdevil.py:1771
#: mpdevil.py:1866
msgid "Host:"
msgstr ""
#: mpdevil.py:1773
#: mpdevil.py:1868
msgid "Password:"
msgstr ""
#: mpdevil.py:1775
#: mpdevil.py:1870
msgid "Music lib:"
msgstr ""
#: mpdevil.py:1858
#: mpdevil.py:1953
msgid "Choose directory"
msgstr ""
#: mpdevil.py:1896
#: mpdevil.py:1991
msgid "Main cover size:"
msgstr ""
#: mpdevil.py:1900
#: mpdevil.py:1995
msgid "Album view cover size:"
msgstr ""
#: mpdevil.py:1904
#: mpdevil.py:1999
msgid "Button icon size:"
msgstr ""
#: mpdevil.py:1906
#: mpdevil.py:2001
msgid "(restart required)"
msgstr ""
#: mpdevil.py:1931
#: mpdevil.py:2026
msgid "<b>View</b>"
msgstr ""
#: mpdevil.py:1934
#: mpdevil.py:2029
msgid "<b>Behavior</b>"
msgstr ""
#: mpdevil.py:1939
#: mpdevil.py:2034
msgid "Use alternative layout"
msgstr ""
#: mpdevil.py:1940
#: mpdevil.py:2035
msgid "Show stop button"
msgstr ""
#: mpdevil.py:1941
#: mpdevil.py:2036
msgid "Show initials in artist view"
msgstr ""
#: mpdevil.py:1942
#: mpdevil.py:2037
msgid "Show tooltips in album view"
msgstr ""
#: mpdevil.py:1943
#: mpdevil.py:2038
msgid "Sort albums by year"
msgstr ""
#: mpdevil.py:1944
msgid "Use 'Artist' instead of 'Album Artist'"
#: mpdevil.py:2039
msgid "Use 'Album Artist' tag"
msgstr ""
#: mpdevil.py:1945
#: mpdevil.py:2040
msgid "Send notification on title change"
msgstr ""
#: mpdevil.py:1946
#: mpdevil.py:2041
msgid "Stop playback on quit"
msgstr ""
#: mpdevil.py:1947
#: mpdevil.py:2042
msgid "Play selected albums immediately"
msgstr ""
#: mpdevil.py:1995
#: mpdevil.py:2090
msgid "Choose the order of information to appear in the playlist:"
msgstr ""
#: mpdevil.py:2108 mpdevil.py:2888
#: mpdevil.py:2203 mpdevil.py:2893
msgid "Settings"
msgstr ""
#: mpdevil.py:2122
#: mpdevil.py:2217
msgid "General"
msgstr ""
#: mpdevil.py:2123
#: mpdevil.py:2218
msgid "Profiles"
msgstr ""
#: mpdevil.py:2124
#: mpdevil.py:2219
msgid "Playlist"
msgstr ""
#: mpdevil.py:2398
#: mpdevil.py:2490
msgid "Random mode"
msgstr ""
#: mpdevil.py:2400
#: mpdevil.py:2492
msgid "Repeat mode"
msgstr ""
#: mpdevil.py:2402
#: mpdevil.py:2494
msgid "Single mode"
msgstr ""
#: mpdevil.py:2404
#: mpdevil.py:2496
msgid "Consume mode"
msgstr ""
#: mpdevil.py:2493
#: mpdevil.py:2585
msgid "Click to show additional information"
msgstr ""
#: mpdevil.py:2519
#: mpdevil.py:2611
msgid "MPD-Tag"
msgstr ""
#: mpdevil.py:2523 mpdevil.py:2624
#: mpdevil.py:2615 mpdevil.py:2715
msgid "Value"
msgstr ""
#: mpdevil.py:2545
#: mpdevil.py:2637
#, python-format
msgid ""
"%(bitrate)s kb/s, %(frequency)s kHz, %(resolution)s bit, %(channels)s "
"channels, %(file_type)s"
msgstr ""
#: mpdevil.py:2602
#: mpdevil.py:2693
msgid "Stats"
msgstr ""
#: mpdevil.py:2621
#: mpdevil.py:2712
msgid "Tag"
msgstr ""
#: mpdevil.py:2762
#: mpdevil.py:2769
#, python-format
msgid "hits: %i"
msgstr ""
#: mpdevil.py:2766
#: mpdevil.py:2773
msgid "Lyrics"
msgstr ""
#: mpdevil.py:2799
#: mpdevil.py:2805
msgid "searching..."
msgstr ""
#: mpdevil.py:2803
#: mpdevil.py:2809
msgid "not found"
msgstr ""
#: mpdevil.py:2878
#: mpdevil.py:2883
msgid "Select profile"
msgstr ""
#: mpdevil.py:2882
#: mpdevil.py:2887
msgid "Show lyrics"
msgstr ""
#: mpdevil.py:2887
#: mpdevil.py:2892
msgid "Save window layout"
msgstr ""
#: mpdevil.py:2889
#: mpdevil.py:2894
msgid "Update database"
msgstr ""
#: mpdevil.py:2890
#: mpdevil.py:2895
msgid "Server stats"
msgstr ""
#: mpdevil.py:2891
#: mpdevil.py:2896
msgid "About"
msgstr ""
#: mpdevil.py:2892
#: mpdevil.py:2897
msgid "Quit"
msgstr ""
#: mpdevil.py:2897
#: mpdevil.py:2902
msgid "Menu"
msgstr ""
#: mpdevil.py:3059
#: mpdevil.py:3056
msgid "A small MPD client written in python"
msgstr ""