Compare commits

...

10 Commits

Author SHA1 Message Date
Martin Wagner b4671ccc89 updated feature list 2022-11-06 11:58:11 +01:00
Martin Wagner 4fb0230c43 changed "lib-path" to "music-directory" 2022-11-06 11:52:41 +01:00
Martin Wagner 270619b15c updated translations 2022-11-06 11:38:18 +01:00
Martin Wagner fccb95287d trigger reconnect on socket-connection change 2022-11-06 11:20:23 +01:00
Martin Wagner 719aadfdfb fixed focus in ConnectionSettings 2022-11-06 11:14:15 +01:00
Martin Wagner ed67499101 connect via unix socket per default 2022-11-06 10:50:43 +01:00
Martin Wagner 2b42dc22a7 fixed method name 2022-11-06 10:47:10 +01:00
Martin Wagner 9216e7f517 unified fallbacks 2022-11-06 10:40:28 +01:00
Martin Wagner d4ab26c8d2 removed profiles 2022-11-06 10:30:55 +01:00
Martin Wagner 1927e61689 fixed socket connect with low permissions 2022-11-05 14:48:43 +01:00
11 changed files with 652 additions and 739 deletions

View File

@ -11,7 +11,6 @@ Features
- Play songs without double click
- Lyrics from: https://www.letras.mus.br
- MPRIS interface (based on mpDris2)
- Manage multiple MPD servers
- Basic queue manipulation (move and delete single tracks)
See: https://github.com/SoongNoonien/mpdevil/wiki/Usage

View File

@ -198,33 +198,6 @@
</child>
</object>
</child>
<child>
<object class="GtkShortcutsGroup">
<property name="visible">True</property>
<property name="title" translatable="yes">Profiles</property>
<child>
<object class="GtkShortcutsShortcut">
<property name="visible">True</property>
<property name="title" translatable="yes">Profile 1</property>
<property name="accelerator">&lt;Control&gt;1</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="visible">True</property>
<property name="title" translatable="yes">Profile 2</property>
<property name="accelerator">&lt;Control&gt;2</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="visible">True</property>
<property name="title" translatable="yes">Profile 3</property>
<property name="accelerator">&lt;Control&gt;3</property>
</object>
</child>
</object>
</child>
<child>
<object class="GtkShortcutsGroup">
<property name="visible">True</property>

View File

@ -13,7 +13,6 @@
<li>Play songs without doubleclick</li>
<li>Fetch lyrics</li>
<li>MPRIS interface</li>
<li>Manage multiple mpd servers</li>
<li>Basic queue manipulation (move and delete single tracks)</li>
</ul>
</description>

View File

@ -1,9 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
<schema id="org.mpdevil.mpdevil" path="/org/mpdevil/mpdevil/">
<child name="profile1" schema="org.mpdevil.mpdevil.profile"/>
<child name="profile2" schema="org.mpdevil.mpdevil.profile"/>
<child name="profile3" schema="org.mpdevil.mpdevil.profile"/>
<key type="b" name="maximize">
<default>false</default>
<summary>Maximize mpdevil on startup</summary>
@ -40,6 +37,35 @@
<default>177</default>
<summary>Default position of genre/artist separator</summary>
</key>
<key type="b" name="socket-connection">
<default>true</default>
<summary>Connect via Unix domain socket</summary>
</key>
<key type="s" name="socket">
<default>""</default>
<summary>Unix domain socket</summary>
</key>
<key type="s" name="host">
<default>"localhost"</default>
<summary>Hostname or IP address</summary>
</key>
<key type="i" name="port">
<range min="0" max="65535"/>
<default>6600</default>
<summary>Network port</summary>
</key>
<key type="s" name="password">
<default>""</default>
<summary>Password</summary>
</key>
<key type="s" name="music-directory">
<default>""</default>
<summary>Music library directory</summary>
</key>
<key type="s" name="regex">
<default>""</default>
<summary>Cover regex</summary>
</key>
<key type="b" name="genre-filter">
<default>false</default>
<summary>Show genre filter</summary>
@ -100,11 +126,6 @@
<default>true</default>
<summary>Move playlist to the right</summary>
</key>
<key type="i" name="active-profile">
<range min="0" max="2"/>
<default>0</default>
<summary>Active profile</summary>
</key>
<key type="i" name="refresh-interval">
<default>100</default>
<summary>Main refresh interval</summary>
@ -118,35 +139,4 @@
</description>
</key>
</schema>
<schema id="org.mpdevil.mpdevil.profile">
<key type="b" name="socket-connection">
<default>false</default>
<summary>Connect via Unix domain socket</summary>
</key>
<key type="s" name="socket">
<default>""</default>
<summary>Unix domain socket</summary>
</key>
<key type="s" name="host">
<default>"localhost"</default>
<summary>Hostname or IP address</summary>
</key>
<key type="i" name="port">
<range min="0" max="65535"/>
<default>6600</default>
<summary>Network port</summary>
</key>
<key type="s" name="password">
<default>""</default>
<summary>Password</summary>
</key>
<key type="s" name="path">
<default>""</default>
<summary>Music library path</summary>
</key>
<key type="s" name="regex">
<default>""</default>
<summary>Cover regex</summary>
</key>
</schema>
</schemalist>

186
po/bg.po
View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: mpdevil\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-10-22 11:02+0200\n"
"PO-Revision-Date: 2022-10-22 11:10+0200\n"
"POT-Creation-Date: 2022-11-06 11:32+0100\n"
"PO-Revision-Date: 2022-11-06 11:37+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: bg\n"
@ -33,66 +33,67 @@ msgid_plural "{channels} channels"
msgstr[0] "{channels} канал"
msgstr[1] "{channels} канали"
#: src/mpdevil.py:1004
#: src/mpdevil.py:1002
msgid "(restart required)"
msgstr "(необходим е рестарт)"
#: src/mpdevil.py:1050
#: src/mpdevil.py:1048
msgid "Use Client-side decoration"
msgstr "Използвай декорация от Клиентска страна"
#: src/mpdevil.py:1051
#: src/mpdevil.py:1049
msgid "Show stop button"
msgstr "Покажи бутон стоп"
#: src/mpdevil.py:1052
#: src/mpdevil.py:1050
msgid "Show audio format"
msgstr "Покажи аудио формат"
#: src/mpdevil.py:1053
#: src/mpdevil.py:1051
msgid "Show lyrics button"
msgstr "Покажи бутон за лирики"
#: src/mpdevil.py:1054
#: src/mpdevil.py:1052
msgid "Place playlist at the side"
msgstr "Постави плейлитът на страни"
#: src/mpdevil.py:1060
#: src/mpdevil.py:1058
msgid "Album view cover size"
msgstr "Големина за основна облечка"
#: src/mpdevil.py:1061
#: src/mpdevil.py:1059
msgid "Action bar icon size"
msgstr "Големина за иконите на бутоните"
#: src/mpdevil.py:1071
#: src/mpdevil.py:1069
msgid "Support “MPRIS”"
msgstr "Поддръжка на “MPRIS”"
#: src/mpdevil.py:1072
#: src/mpdevil.py:1070
msgid "Sort albums by year"
msgstr "Сортирай албумите по година"
#: src/mpdevil.py:1073
#: src/mpdevil.py:1071
msgid "Send notification on title change"
msgstr "Прати известие при промяна на заглавие"
#: src/mpdevil.py:1074
#: src/mpdevil.py:1072
msgid "Play selected albums and titles immediately"
msgstr "Възпроизведи избраните албуми и заглавия веднага"
#: src/mpdevil.py:1075
#: src/mpdevil.py:1073
msgid "Rewind via previous button"
msgstr "Пренавий чрез бутон назад"
#: src/mpdevil.py:1076
#: src/mpdevil.py:1074
msgid "Stop playback on quit"
msgstr "Прекрати възпроизвеждането при изход"
#: src/mpdevil.py:1103
#: src/mpdevil.py:1101
msgid "Choose directory"
msgstr "Избери директория"
#. labels and entries
#: src/mpdevil.py:1116
msgid "Connect via Unix domain socket"
msgstr "Свържи чрез Unix domain socket"
@ -127,255 +128,244 @@ msgstr "Музикална библиотека:"
msgid "Cover regex:"
msgstr "Обложка - регулярен израз:"
#: src/mpdevil.py:1171 src/mpdevil.py:3280 data/ShortcutsWindow.ui:208
msgid "Profile 1"
msgstr "Профил 1"
#: src/mpdevil.py:1172 src/mpdevil.py:3280 data/ShortcutsWindow.ui:215
msgid "Profile 2"
msgstr "Профил 2"
#: src/mpdevil.py:1173 src/mpdevil.py:3280 data/ShortcutsWindow.ui:222
msgid "Profile 3"
msgstr "Профил 3"
#. connect button
#: src/mpdevil.py:1177 src/mpdevil.py:3167
#: src/mpdevil.py:1150 src/mpdevil.py:3139
msgid "Connect"
msgstr "Свържи"
#: src/mpdevil.py:1200 src/mpdevil.py:1202 src/mpdevil.py:3168
#: src/mpdevil.py:3272
#: src/mpdevil.py:1173 src/mpdevil.py:1175 src/mpdevil.py:3140
#: src/mpdevil.py:3236
msgid "Preferences"
msgstr "Предпочитания"
#: src/mpdevil.py:1214 src/mpdevil.py:1224
#: src/mpdevil.py:1187 src/mpdevil.py:1197
msgid "View"
msgstr "Поглед"
#: src/mpdevil.py:1215 src/mpdevil.py:1225
#: src/mpdevil.py:1188 src/mpdevil.py:1198
msgid "Behavior"
msgstr "Държане"
#: src/mpdevil.py:1216 src/mpdevil.py:1226 data/ShortcutsWindow.ui:204
msgid "Profiles"
msgstr "Профили"
#: src/mpdevil.py:1189 src/mpdevil.py:1199
#, fuzzy
msgid "Connection"
msgstr "Връзка"
#: src/mpdevil.py:1243
#: src/mpdevil.py:1216
msgid "Stats"
msgstr "Статистика"
#: src/mpdevil.py:1252
#: src/mpdevil.py:1225
msgid "<b>Protocol:</b>"
msgstr "<b>Протокол:</b>"
#: src/mpdevil.py:1253
#: src/mpdevil.py:1226
msgid "<b>Uptime:</b>"
msgstr "<b>Време на работа:</b>"
#: src/mpdevil.py:1254
#: src/mpdevil.py:1227
msgid "<b>Playtime:</b>"
msgstr "<b>Време на възпроизвеждане:</b>"
#: src/mpdevil.py:1255
#: src/mpdevil.py:1228
msgid "<b>Artists:</b>"
msgstr "<b>Артисти:</b>"
#: src/mpdevil.py:1256
#: src/mpdevil.py:1229
msgid "<b>Albums:</b>"
msgstr "<b>Албуми:</b>"
#: src/mpdevil.py:1257
#: src/mpdevil.py:1230
msgid "<b>Songs:</b>"
msgstr "<b>Песни::</b>"
#: src/mpdevil.py:1258
#: src/mpdevil.py:1231
msgid "<b>Total Playtime:</b>"
msgstr "<b>Цялостно време на възпроизвеждане:</b>"
#: src/mpdevil.py:1259
#: src/mpdevil.py:1232
msgid "<b>Database Update:</b>"
msgstr "<b>Актуализация на базата с данни:</b>"
#: src/mpdevil.py:1319
#: src/mpdevil.py:1292
msgid "Show in file manager"
msgstr ""
#: src/mpdevil.py:1323 data/ShortcutsWindow.ui:235
#: src/mpdevil.py:1296 data/ShortcutsWindow.ui:208
msgid "Append"
msgstr "Добави"
#: src/mpdevil.py:1323 src/mpdevil.py:2718 src/mpdevil.py:2751
#: src/mpdevil.py:1296 src/mpdevil.py:2690 src/mpdevil.py:2723
#, fuzzy
msgid "Play"
msgstr "Свири"
#: src/mpdevil.py:1339
#: src/mpdevil.py:1312
msgid "MPD-Tag"
msgstr "MPD-Етикет"
#: src/mpdevil.py:1342
#: src/mpdevil.py:1315
msgid "Value"
msgstr "Стойност"
#: src/mpdevil.py:1412 src/mpdevil.py:2239
#: src/mpdevil.py:1385 src/mpdevil.py:2212
msgid "No"
msgstr "№"
#: src/mpdevil.py:1413 src/mpdevil.py:2240
#: src/mpdevil.py:1386 src/mpdevil.py:2213
msgid "Title"
msgstr "Заглавие"
#: src/mpdevil.py:1414 src/mpdevil.py:2241
#: src/mpdevil.py:1387 src/mpdevil.py:2214
msgid "Length"
msgstr "Дължина"
#: src/mpdevil.py:1427
#: src/mpdevil.py:1400
msgid "Add all titles to playlist"
msgstr "Добави всички заглавия към плейлист"
#: src/mpdevil.py:1428
#: src/mpdevil.py:1401
msgid "Directly play all titles"
msgstr "Директно възпроизведи всички заглавия"
#: src/mpdevil.py:1521
#: src/mpdevil.py:1494
#, python-brace-format
msgid "{number} song ({duration})"
msgid_plural "{number} songs ({duration})"
msgstr[0] "{number} песен ({duration})"
msgstr[1] "{number} песни ({duration})"
#: src/mpdevil.py:1584
#: src/mpdevil.py:1557
#, python-brace-format
msgid "{hits} hit"
msgid_plural "{hits} hits"
msgstr[0] "{hits} попадение"
msgstr[1] "{hits} попадения"
#: src/mpdevil.py:1669
#: src/mpdevil.py:1642
msgid "all tags"
msgstr "всички тагове"
#: src/mpdevil.py:1801
#: src/mpdevil.py:1774
msgid "all genres"
msgstr "всички жанрове"
#: src/mpdevil.py:1824
#: src/mpdevil.py:1797
msgid "all artists"
msgstr "всички артисти"
#: src/mpdevil.py:2411
#: src/mpdevil.py:2384
msgid "Scroll to current song"
msgstr "Превъртане до моментната песен"
#: src/mpdevil.py:2528
#: src/mpdevil.py:2502
msgid "searching…"
msgstr "търсене…"
#: src/mpdevil.py:2533
#: src/mpdevil.py:2507
msgid "connection error"
msgstr "грешка при свързване"
#: src/mpdevil.py:2535
#: src/mpdevil.py:2509
msgid "lyrics not found"
msgstr "лириките не са намерени"
#: src/mpdevil.py:2662
#: src/mpdevil.py:2634
msgid "Lyrics"
msgstr "Лирики"
#: src/mpdevil.py:2720 data/ShortcutsWindow.ui:105
#: src/mpdevil.py:2692 data/ShortcutsWindow.ui:105
msgid "Stop"
msgstr "Спри"
#: src/mpdevil.py:2724 data/ShortcutsWindow.ui:126
#: src/mpdevil.py:2696 data/ShortcutsWindow.ui:126
msgid "Previous title"
msgstr "Предишно заглавие"
#: src/mpdevil.py:2727 data/ShortcutsWindow.ui:119
#: src/mpdevil.py:2699 data/ShortcutsWindow.ui:119
msgid "Next title"
msgstr "Следващо заглавие"
#: src/mpdevil.py:2748
#: src/mpdevil.py:2720
#, fuzzy
msgid "Pause"
msgstr "Пауза"
#: src/mpdevil.py:2920
#: src/mpdevil.py:2892
msgid "Repeat mode"
msgstr "Повтарящ режим"
#: src/mpdevil.py:2921
#: src/mpdevil.py:2893
msgid "Random mode"
msgstr "Случаен режим"
#: src/mpdevil.py:2922
#: src/mpdevil.py:2894
msgid "Single mode"
msgstr "Единичен режим"
#: src/mpdevil.py:2923
#: src/mpdevil.py:2895
msgid "Consume mode"
msgstr "Консумиращ режим"
#: src/mpdevil.py:3137
#: src/mpdevil.py:3109
msgid "Updating Database…"
msgstr "Актуализиране на базата с данни…"
#: src/mpdevil.py:3189
#: src/mpdevil.py:3157
#, python-brace-format
msgid "Connection to “{socket}” failed"
msgstr "Свързването със “{socket}” се провали"
#: src/mpdevil.py:3191
#: src/mpdevil.py:3159
#, python-brace-format
msgid "Connection to “{host}:{port}” failed"
msgstr "Свързването със “{host}:{port}” се провали"
#: src/mpdevil.py:3256
#: src/mpdevil.py:3220
msgid "Search"
msgstr "Търси"
#: src/mpdevil.py:3259 data/ShortcutsWindow.ui:85
#: src/mpdevil.py:3223 data/ShortcutsWindow.ui:85
msgid "Back to current album"
msgstr "Обратно в моментния албум"
#: src/mpdevil.py:3273
#: src/mpdevil.py:3237
msgid "Keyboard Shortcuts"
msgstr "Преки пътища на клавиатурата"
#: src/mpdevil.py:3274
#: src/mpdevil.py:3238
msgid "Help"
msgstr "Помощ"
#: src/mpdevil.py:3275
#: src/mpdevil.py:3239
msgid "About mpdevil"
msgstr "За mpdevil"
#: src/mpdevil.py:3277
#: src/mpdevil.py:3241
msgid "Update Database"
msgstr "Актуализирай базата с данни"
#: src/mpdevil.py:3278
#: src/mpdevil.py:3242
msgid "Server Stats"
msgstr "Статистика на сървърът"
#: src/mpdevil.py:3285
#: src/mpdevil.py:3244
msgid "Mini Player"
msgstr "Мини Плеър"
#: src/mpdevil.py:3286
#: src/mpdevil.py:3245
msgid "Genre Filter"
msgstr "Филтър на Жанрове"
#: src/mpdevil.py:3296
#: src/mpdevil.py:3254
msgid "Menu"
msgstr "Меню"
#: src/mpdevil.py:3483 src/mpdevil.py:3485
#: src/mpdevil.py:3438 src/mpdevil.py:3440
msgid "connecting…"
msgstr "свързване…"
#: src/mpdevil.py:3523
#: src/mpdevil.py:3478
msgid "Debug mode"
msgstr "Debug режим"
@ -485,20 +475,32 @@ msgstr "Премахни избраната песен"
msgid "Clear playlist"
msgstr "Изчисти плейлист"
#: data/ShortcutsWindow.ui:195 data/ShortcutsWindow.ui:249
#: data/ShortcutsWindow.ui:195 data/ShortcutsWindow.ui:222
#, fuzzy
msgid "Show information"
msgstr "Покажи допълнителна информация"
#: data/ShortcutsWindow.ui:231
#: data/ShortcutsWindow.ui:204
msgid "Search, Album Dialog and Album List"
msgstr "Търси, Диалог за албум и Лист на Албум"
#: data/ShortcutsWindow.ui:242
#: data/ShortcutsWindow.ui:215
#, fuzzy
msgid "Play immediately"
msgstr "Възпроизведи избрания предмет веднага"
#~ msgid "Profile 1"
#~ msgstr "Профил 1"
#~ msgid "Profile 2"
#~ msgstr "Профил 2"
#~ msgid "Profile 3"
#~ msgstr "Профил 3"
#~ msgid "Profiles"
#~ msgstr "Профили"
#~ msgid "Enqueue"
#~ msgstr "На опашката"

185
po/de.po
View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-10-22 11:02+0200\n"
"PO-Revision-Date: 2022-10-22 11:04+0200\n"
"POT-Creation-Date: 2022-11-06 11:32+0100\n"
"PO-Revision-Date: 2022-11-06 11:33+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: de\n"
@ -32,66 +32,67 @@ msgid_plural "{channels} channels"
msgstr[0] "{channels} Kanal"
msgstr[1] "{channels} Kanäle"
#: src/mpdevil.py:1004
#: src/mpdevil.py:1002
msgid "(restart required)"
msgstr "(Neustart erforderlich)"
#: src/mpdevil.py:1050
#: src/mpdevil.py:1048
msgid "Use Client-side decoration"
msgstr "„Client-side decoration“ benutzen"
#: src/mpdevil.py:1051
#: src/mpdevil.py:1049
msgid "Show stop button"
msgstr "Stopp-Knopf anzeigen"
#: src/mpdevil.py:1052
#: src/mpdevil.py:1050
msgid "Show audio format"
msgstr "Audioformat anzeigen"
#: src/mpdevil.py:1053
#: src/mpdevil.py:1051
msgid "Show lyrics button"
msgstr "Liedtext-Knopf anzeigen"
#: src/mpdevil.py:1054
#: src/mpdevil.py:1052
msgid "Place playlist at the side"
msgstr "Wiedergabeliste seitlich anzeigen"
#: src/mpdevil.py:1060
#: src/mpdevil.py:1058
msgid "Album view cover size"
msgstr "Covergröße in Albumliste"
#: src/mpdevil.py:1061
#: src/mpdevil.py:1059
msgid "Action bar icon size"
msgstr "Symbolgröße Aktionsleiste"
#: src/mpdevil.py:1071
#: src/mpdevil.py:1069
msgid "Support “MPRIS”"
msgstr "„MPRIS“ unterstützen"
#: src/mpdevil.py:1072
#: src/mpdevil.py:1070
msgid "Sort albums by year"
msgstr "Alben nach Jahr sortieren"
#: src/mpdevil.py:1073
#: src/mpdevil.py:1071
msgid "Send notification on title change"
msgstr "Über Titelwechsel benachrichtigen"
#: src/mpdevil.py:1074
#: src/mpdevil.py:1072
msgid "Play selected albums and titles immediately"
msgstr "Ausgewählte Alben und Titel sofort abspielen"
#: src/mpdevil.py:1075
#: src/mpdevil.py:1073
msgid "Rewind via previous button"
msgstr "Klassischer Rück­spul­knopf"
#: src/mpdevil.py:1076
#: src/mpdevil.py:1074
msgid "Stop playback on quit"
msgstr "Wiedergabe beim Beenden stoppen"
#: src/mpdevil.py:1103
#: src/mpdevil.py:1101
msgid "Choose directory"
msgstr "Verzeichnis wählen"
#. labels and entries
#: src/mpdevil.py:1116
msgid "Connect via Unix domain socket"
msgstr "Über „Unix domain socket“ verbinden"
@ -126,253 +127,241 @@ msgstr "Musikverzeichnis:"
msgid "Cover regex:"
msgstr "Cover-Regex:"
#: src/mpdevil.py:1171 src/mpdevil.py:3280 data/ShortcutsWindow.ui:208
msgid "Profile 1"
msgstr "Profil 1"
#: src/mpdevil.py:1172 src/mpdevil.py:3280 data/ShortcutsWindow.ui:215
msgid "Profile 2"
msgstr "Profil 2"
#: src/mpdevil.py:1173 src/mpdevil.py:3280 data/ShortcutsWindow.ui:222
msgid "Profile 3"
msgstr "Profil 3"
#. connect button
#: src/mpdevil.py:1177 src/mpdevil.py:3167
#: src/mpdevil.py:1150 src/mpdevil.py:3139
msgid "Connect"
msgstr "Verbinden"
#: src/mpdevil.py:1200 src/mpdevil.py:1202 src/mpdevil.py:3168
#: src/mpdevil.py:3272
#: src/mpdevil.py:1173 src/mpdevil.py:1175 src/mpdevil.py:3140
#: src/mpdevil.py:3236
msgid "Preferences"
msgstr "Einstellungen"
#: src/mpdevil.py:1214 src/mpdevil.py:1224
#: src/mpdevil.py:1187 src/mpdevil.py:1197
msgid "View"
msgstr "Ansicht"
#: src/mpdevil.py:1215 src/mpdevil.py:1225
#: src/mpdevil.py:1188 src/mpdevil.py:1198
msgid "Behavior"
msgstr "Verhalten"
#: src/mpdevil.py:1216 src/mpdevil.py:1226 data/ShortcutsWindow.ui:204
msgid "Profiles"
msgstr "Profile"
#: src/mpdevil.py:1189 src/mpdevil.py:1199
msgid "Connection"
msgstr "Verbindung"
#: src/mpdevil.py:1243
#: src/mpdevil.py:1216
msgid "Stats"
msgstr "Statistik"
#: src/mpdevil.py:1252
#: src/mpdevil.py:1225
msgid "<b>Protocol:</b>"
msgstr "<b>Protokoll:</b>"
#: src/mpdevil.py:1253
#: src/mpdevil.py:1226
msgid "<b>Uptime:</b>"
msgstr "<b>Uptime:</b>"
#: src/mpdevil.py:1254
#: src/mpdevil.py:1227
msgid "<b>Playtime:</b>"
msgstr "<b>Wiedergabezeit:</b>"
#: src/mpdevil.py:1255
#: src/mpdevil.py:1228
msgid "<b>Artists:</b>"
msgstr "<b>Künstler:</b>"
#: src/mpdevil.py:1256
#: src/mpdevil.py:1229
msgid "<b>Albums:</b>"
msgstr "<b>Alben:</b>"
#: src/mpdevil.py:1257
#: src/mpdevil.py:1230
msgid "<b>Songs:</b>"
msgstr "<b>Titel:</b>"
#: src/mpdevil.py:1258
#: src/mpdevil.py:1231
msgid "<b>Total Playtime:</b>"
msgstr "<b>Gesamtwiedergabezeit:</b>"
#: src/mpdevil.py:1259
#: src/mpdevil.py:1232
msgid "<b>Database Update:</b>"
msgstr "<b>Datenbankaktualisierung:</b>"
#: src/mpdevil.py:1319
#: src/mpdevil.py:1292
msgid "Show in file manager"
msgstr "In Dateimanager anzeigen"
#: src/mpdevil.py:1323 data/ShortcutsWindow.ui:235
#: src/mpdevil.py:1296 data/ShortcutsWindow.ui:208
msgid "Append"
msgstr "Anhängen"
#: src/mpdevil.py:1323 src/mpdevil.py:2718 src/mpdevil.py:2751
#: src/mpdevil.py:1296 src/mpdevil.py:2690 src/mpdevil.py:2723
msgid "Play"
msgstr "Wiedergabe"
#: src/mpdevil.py:1339
#: src/mpdevil.py:1312
msgid "MPD-Tag"
msgstr "MPD-Tag"
#: src/mpdevil.py:1342
#: src/mpdevil.py:1315
msgid "Value"
msgstr "Wert"
#: src/mpdevil.py:1412 src/mpdevil.py:2239
#: src/mpdevil.py:1385 src/mpdevil.py:2212
msgid "No"
msgstr "Nr."
#: src/mpdevil.py:1413 src/mpdevil.py:2240
#: src/mpdevil.py:1386 src/mpdevil.py:2213
msgid "Title"
msgstr "Titel"
#: src/mpdevil.py:1414 src/mpdevil.py:2241
#: src/mpdevil.py:1387 src/mpdevil.py:2214
msgid "Length"
msgstr "Länge"
#: src/mpdevil.py:1427
#: src/mpdevil.py:1400
msgid "Add all titles to playlist"
msgstr "Alle Titel der Wiedergabeliste anhängen"
#: src/mpdevil.py:1428
#: src/mpdevil.py:1401
msgid "Directly play all titles"
msgstr "Alle Titel sofort abspielen"
#: src/mpdevil.py:1521
#: src/mpdevil.py:1494
#, python-brace-format
msgid "{number} song ({duration})"
msgid_plural "{number} songs ({duration})"
msgstr[0] "{number} Stück ({duration})"
msgstr[1] "{number} Stücke ({duration})"
#: src/mpdevil.py:1584
#: src/mpdevil.py:1557
#, python-brace-format
msgid "{hits} hit"
msgid_plural "{hits} hits"
msgstr[0] "{hits} Treffer"
msgstr[1] "{hits} Treffer"
#: src/mpdevil.py:1669
#: src/mpdevil.py:1642
msgid "all tags"
msgstr "Alle Tags"
#: src/mpdevil.py:1801
#: src/mpdevil.py:1774
msgid "all genres"
msgstr "Alle Genres"
#: src/mpdevil.py:1824
#: src/mpdevil.py:1797
msgid "all artists"
msgstr "Alle Interpreten"
#: src/mpdevil.py:2411
#: src/mpdevil.py:2384
msgid "Scroll to current song"
msgstr "Gehe zu aktuellem Lied"
#: src/mpdevil.py:2528
#: src/mpdevil.py:2502
msgid "searching…"
msgstr "suche…"
#: src/mpdevil.py:2533
#: src/mpdevil.py:2507
msgid "connection error"
msgstr "Verbindungsfehler"
#: src/mpdevil.py:2535
#: src/mpdevil.py:2509
msgid "lyrics not found"
msgstr "Liedtext nicht gefunden"
#: src/mpdevil.py:2662
#: src/mpdevil.py:2634
msgid "Lyrics"
msgstr "Liedtext"
#: src/mpdevil.py:2720 data/ShortcutsWindow.ui:105
#: src/mpdevil.py:2692 data/ShortcutsWindow.ui:105
msgid "Stop"
msgstr "Stopp"
#: src/mpdevil.py:2724 data/ShortcutsWindow.ui:126
#: src/mpdevil.py:2696 data/ShortcutsWindow.ui:126
msgid "Previous title"
msgstr "Vorheriger Titel"
#: src/mpdevil.py:2727 data/ShortcutsWindow.ui:119
#: src/mpdevil.py:2699 data/ShortcutsWindow.ui:119
msgid "Next title"
msgstr "Nächster Titel"
#: src/mpdevil.py:2748
#: src/mpdevil.py:2720
msgid "Pause"
msgstr "Pause"
#: src/mpdevil.py:2920
#: src/mpdevil.py:2892
msgid "Repeat mode"
msgstr "Dauerschleife"
#: src/mpdevil.py:2921
#: src/mpdevil.py:2893
msgid "Random mode"
msgstr "Zufallsmodus"
#: src/mpdevil.py:2922
#: src/mpdevil.py:2894
msgid "Single mode"
msgstr "Einzelstückmodus"
#: src/mpdevil.py:2923
#: src/mpdevil.py:2895
msgid "Consume mode"
msgstr "Wiedergabeliste verbrauchen"
#: src/mpdevil.py:3137
#: src/mpdevil.py:3109
msgid "Updating Database…"
msgstr "Datenbank aktualisieren…"
#: src/mpdevil.py:3189
#: src/mpdevil.py:3157
#, python-brace-format
msgid "Connection to “{socket}” failed"
msgstr "Verbindung zu „{socket}“ fehlgeschlagen"
#: src/mpdevil.py:3191
#: src/mpdevil.py:3159
#, python-brace-format
msgid "Connection to “{host}:{port}” failed"
msgstr "Verbindung zu „{host}:{port}“ fehlgeschlagen"
#: src/mpdevil.py:3256
#: src/mpdevil.py:3220
msgid "Search"
msgstr "Suche"
#: src/mpdevil.py:3259 data/ShortcutsWindow.ui:85
#: src/mpdevil.py:3223 data/ShortcutsWindow.ui:85
msgid "Back to current album"
msgstr "Zurück zu aktuellem Album"
#: src/mpdevil.py:3273
#: src/mpdevil.py:3237
msgid "Keyboard Shortcuts"
msgstr "Tastenkürzel"
#: src/mpdevil.py:3274
#: src/mpdevil.py:3238
msgid "Help"
msgstr "Hilfe"
#: src/mpdevil.py:3275
#: src/mpdevil.py:3239
msgid "About mpdevil"
msgstr "Info zu mpdevil"
#: src/mpdevil.py:3277
#: src/mpdevil.py:3241
msgid "Update Database"
msgstr "Datenbank aktualisieren"
#: src/mpdevil.py:3278
#: src/mpdevil.py:3242
msgid "Server Stats"
msgstr "Serverstatistik"
#: src/mpdevil.py:3285
#: src/mpdevil.py:3244
msgid "Mini Player"
msgstr "Miniplayer"
#: src/mpdevil.py:3286
#: src/mpdevil.py:3245
msgid "Genre Filter"
msgstr "Genrefilter"
#: src/mpdevil.py:3296
#: src/mpdevil.py:3254
msgid "Menu"
msgstr "Menü"
#: src/mpdevil.py:3483 src/mpdevil.py:3485
#: src/mpdevil.py:3438 src/mpdevil.py:3440
msgid "connecting…"
msgstr "verbinden…"
#: src/mpdevil.py:3523
#: src/mpdevil.py:3478
msgid "Debug mode"
msgstr "Debugmodus"
@ -480,18 +469,30 @@ msgstr "Titel entfernen"
msgid "Clear playlist"
msgstr "Wiedergabeliste leeren"
#: data/ShortcutsWindow.ui:195 data/ShortcutsWindow.ui:249
#: data/ShortcutsWindow.ui:195 data/ShortcutsWindow.ui:222
msgid "Show information"
msgstr "Informationen anzeigen"
#: data/ShortcutsWindow.ui:231
#: data/ShortcutsWindow.ui:204
msgid "Search, Album Dialog and Album List"
msgstr "Suche, Albumdialog und Albumliste"
#: data/ShortcutsWindow.ui:242
#: data/ShortcutsWindow.ui:215
msgid "Play immediately"
msgstr "Sofort abspielen"
#~ msgid "Profile 1"
#~ msgstr "Profil 1"
#~ msgid "Profile 2"
#~ msgstr "Profil 2"
#~ msgid "Profile 3"
#~ msgstr "Profil 3"
#~ msgid "Profiles"
#~ msgstr "Profile"
#~ msgid "Add to playlist"
#~ msgstr "An Wiedergabeliste anhängen"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: mpdevil\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-10-22 11:02+0200\n"
"POT-Creation-Date: 2022-11-06 11:32+0100\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"
@ -32,66 +32,67 @@ msgid_plural "{channels} channels"
msgstr[0] ""
msgstr[1] ""
#: src/mpdevil.py:1004
#: src/mpdevil.py:1002
msgid "(restart required)"
msgstr ""
#: src/mpdevil.py:1050
#: src/mpdevil.py:1048
msgid "Use Client-side decoration"
msgstr ""
#: src/mpdevil.py:1051
#: src/mpdevil.py:1049
msgid "Show stop button"
msgstr ""
#: src/mpdevil.py:1052
#: src/mpdevil.py:1050
msgid "Show audio format"
msgstr ""
#: src/mpdevil.py:1053
#: src/mpdevil.py:1051
msgid "Show lyrics button"
msgstr ""
#: src/mpdevil.py:1054
#: src/mpdevil.py:1052
msgid "Place playlist at the side"
msgstr ""
#: src/mpdevil.py:1060
#: src/mpdevil.py:1058
msgid "Album view cover size"
msgstr ""
#: src/mpdevil.py:1061
#: src/mpdevil.py:1059
msgid "Action bar icon size"
msgstr ""
#: src/mpdevil.py:1071
#: src/mpdevil.py:1069
msgid "Support “MPRIS”"
msgstr ""
#: src/mpdevil.py:1072
#: src/mpdevil.py:1070
msgid "Sort albums by year"
msgstr ""
#: src/mpdevil.py:1073
#: src/mpdevil.py:1071
msgid "Send notification on title change"
msgstr ""
#: src/mpdevil.py:1074
#: src/mpdevil.py:1072
msgid "Play selected albums and titles immediately"
msgstr ""
#: src/mpdevil.py:1075
#: src/mpdevil.py:1073
msgid "Rewind via previous button"
msgstr ""
#: src/mpdevil.py:1076
#: src/mpdevil.py:1074
msgid "Stop playback on quit"
msgstr ""
#: src/mpdevil.py:1103
#: src/mpdevil.py:1101
msgid "Choose directory"
msgstr ""
#. labels and entries
#: src/mpdevil.py:1116
msgid "Connect via Unix domain socket"
msgstr ""
@ -123,253 +124,241 @@ msgstr ""
msgid "Cover regex:"
msgstr ""
#: src/mpdevil.py:1171 src/mpdevil.py:3280 data/ShortcutsWindow.ui:208
msgid "Profile 1"
msgstr ""
#: src/mpdevil.py:1172 src/mpdevil.py:3280 data/ShortcutsWindow.ui:215
msgid "Profile 2"
msgstr ""
#: src/mpdevil.py:1173 src/mpdevil.py:3280 data/ShortcutsWindow.ui:222
msgid "Profile 3"
msgstr ""
#. connect button
#: src/mpdevil.py:1177 src/mpdevil.py:3167
#: src/mpdevil.py:1150 src/mpdevil.py:3139
msgid "Connect"
msgstr ""
#: src/mpdevil.py:1200 src/mpdevil.py:1202 src/mpdevil.py:3168
#: src/mpdevil.py:3272
#: src/mpdevil.py:1173 src/mpdevil.py:1175 src/mpdevil.py:3140
#: src/mpdevil.py:3236
msgid "Preferences"
msgstr ""
#: src/mpdevil.py:1214 src/mpdevil.py:1224
#: src/mpdevil.py:1187 src/mpdevil.py:1197
msgid "View"
msgstr ""
#: src/mpdevil.py:1215 src/mpdevil.py:1225
#: src/mpdevil.py:1188 src/mpdevil.py:1198
msgid "Behavior"
msgstr ""
#: src/mpdevil.py:1216 src/mpdevil.py:1226 data/ShortcutsWindow.ui:204
msgid "Profiles"
#: src/mpdevil.py:1189 src/mpdevil.py:1199
msgid "Connection"
msgstr ""
#: src/mpdevil.py:1243
#: src/mpdevil.py:1216
msgid "Stats"
msgstr ""
#: src/mpdevil.py:1252
#: src/mpdevil.py:1225
msgid "<b>Protocol:</b>"
msgstr ""
#: src/mpdevil.py:1253
#: src/mpdevil.py:1226
msgid "<b>Uptime:</b>"
msgstr ""
#: src/mpdevil.py:1254
#: src/mpdevil.py:1227
msgid "<b>Playtime:</b>"
msgstr ""
#: src/mpdevil.py:1255
#: src/mpdevil.py:1228
msgid "<b>Artists:</b>"
msgstr ""
#: src/mpdevil.py:1256
#: src/mpdevil.py:1229
msgid "<b>Albums:</b>"
msgstr ""
#: src/mpdevil.py:1257
#: src/mpdevil.py:1230
msgid "<b>Songs:</b>"
msgstr ""
#: src/mpdevil.py:1258
#: src/mpdevil.py:1231
msgid "<b>Total Playtime:</b>"
msgstr ""
#: src/mpdevil.py:1259
#: src/mpdevil.py:1232
msgid "<b>Database Update:</b>"
msgstr ""
#: src/mpdevil.py:1319
#: src/mpdevil.py:1292
msgid "Show in file manager"
msgstr ""
#: src/mpdevil.py:1323 data/ShortcutsWindow.ui:235
#: src/mpdevil.py:1296 data/ShortcutsWindow.ui:208
msgid "Append"
msgstr ""
#: src/mpdevil.py:1323 src/mpdevil.py:2718 src/mpdevil.py:2751
#: src/mpdevil.py:1296 src/mpdevil.py:2690 src/mpdevil.py:2723
msgid "Play"
msgstr ""
#: src/mpdevil.py:1339
#: src/mpdevil.py:1312
msgid "MPD-Tag"
msgstr ""
#: src/mpdevil.py:1342
#: src/mpdevil.py:1315
msgid "Value"
msgstr ""
#: src/mpdevil.py:1412 src/mpdevil.py:2239
#: src/mpdevil.py:1385 src/mpdevil.py:2212
msgid "No"
msgstr ""
#: src/mpdevil.py:1413 src/mpdevil.py:2240
#: src/mpdevil.py:1386 src/mpdevil.py:2213
msgid "Title"
msgstr ""
#: src/mpdevil.py:1414 src/mpdevil.py:2241
#: src/mpdevil.py:1387 src/mpdevil.py:2214
msgid "Length"
msgstr ""
#: src/mpdevil.py:1427
#: src/mpdevil.py:1400
msgid "Add all titles to playlist"
msgstr ""
#: src/mpdevil.py:1428
#: src/mpdevil.py:1401
msgid "Directly play all titles"
msgstr ""
#: src/mpdevil.py:1521
#: src/mpdevil.py:1494
#, python-brace-format
msgid "{number} song ({duration})"
msgid_plural "{number} songs ({duration})"
msgstr[0] ""
msgstr[1] ""
#: src/mpdevil.py:1584
#: src/mpdevil.py:1557
#, python-brace-format
msgid "{hits} hit"
msgid_plural "{hits} hits"
msgstr[0] ""
msgstr[1] ""
#: src/mpdevil.py:1669
#: src/mpdevil.py:1642
msgid "all tags"
msgstr ""
#: src/mpdevil.py:1801
#: src/mpdevil.py:1774
msgid "all genres"
msgstr ""
#: src/mpdevil.py:1824
#: src/mpdevil.py:1797
msgid "all artists"
msgstr ""
#: src/mpdevil.py:2411
#: src/mpdevil.py:2384
msgid "Scroll to current song"
msgstr ""
#: src/mpdevil.py:2528
#: src/mpdevil.py:2502
msgid "searching…"
msgstr ""
#: src/mpdevil.py:2533
#: src/mpdevil.py:2507
msgid "connection error"
msgstr ""
#: src/mpdevil.py:2535
#: src/mpdevil.py:2509
msgid "lyrics not found"
msgstr ""
#: src/mpdevil.py:2662
#: src/mpdevil.py:2634
msgid "Lyrics"
msgstr ""
#: src/mpdevil.py:2720 data/ShortcutsWindow.ui:105
#: src/mpdevil.py:2692 data/ShortcutsWindow.ui:105
msgid "Stop"
msgstr ""
#: src/mpdevil.py:2724 data/ShortcutsWindow.ui:126
#: src/mpdevil.py:2696 data/ShortcutsWindow.ui:126
msgid "Previous title"
msgstr ""
#: src/mpdevil.py:2727 data/ShortcutsWindow.ui:119
#: src/mpdevil.py:2699 data/ShortcutsWindow.ui:119
msgid "Next title"
msgstr ""
#: src/mpdevil.py:2748
#: src/mpdevil.py:2720
msgid "Pause"
msgstr ""
#: src/mpdevil.py:2920
#: src/mpdevil.py:2892
msgid "Repeat mode"
msgstr ""
#: src/mpdevil.py:2921
#: src/mpdevil.py:2893
msgid "Random mode"
msgstr ""
#: src/mpdevil.py:2922
#: src/mpdevil.py:2894
msgid "Single mode"
msgstr ""
#: src/mpdevil.py:2923
#: src/mpdevil.py:2895
msgid "Consume mode"
msgstr ""
#: src/mpdevil.py:3137
#: src/mpdevil.py:3109
msgid "Updating Database…"
msgstr ""
#: src/mpdevil.py:3189
#: src/mpdevil.py:3157
#, python-brace-format
msgid "Connection to “{socket}” failed"
msgstr ""
#: src/mpdevil.py:3191
#: src/mpdevil.py:3159
#, python-brace-format
msgid "Connection to “{host}:{port}” failed"
msgstr ""
#: src/mpdevil.py:3256
#: src/mpdevil.py:3220
msgid "Search"
msgstr ""
#: src/mpdevil.py:3259 data/ShortcutsWindow.ui:85
#: src/mpdevil.py:3223 data/ShortcutsWindow.ui:85
msgid "Back to current album"
msgstr ""
#: src/mpdevil.py:3273
#: src/mpdevil.py:3237
msgid "Keyboard Shortcuts"
msgstr ""
#: src/mpdevil.py:3274
#: src/mpdevil.py:3238
msgid "Help"
msgstr ""
#: src/mpdevil.py:3275
#: src/mpdevil.py:3239
msgid "About mpdevil"
msgstr ""
#: src/mpdevil.py:3277
#: src/mpdevil.py:3241
msgid "Update Database"
msgstr ""
#: src/mpdevil.py:3278
#: src/mpdevil.py:3242
msgid "Server Stats"
msgstr ""
#: src/mpdevil.py:3285
#: src/mpdevil.py:3244
msgid "Mini Player"
msgstr ""
#: src/mpdevil.py:3286
#: src/mpdevil.py:3245
msgid "Genre Filter"
msgstr ""
#: src/mpdevil.py:3296
#: src/mpdevil.py:3254
msgid "Menu"
msgstr ""
#: src/mpdevil.py:3483 src/mpdevil.py:3485
#: src/mpdevil.py:3438 src/mpdevil.py:3440
msgid "connecting…"
msgstr ""
#: src/mpdevil.py:3523
#: src/mpdevil.py:3478
msgid "Debug mode"
msgstr ""
@ -477,14 +466,14 @@ msgstr ""
msgid "Clear playlist"
msgstr ""
#: data/ShortcutsWindow.ui:195 data/ShortcutsWindow.ui:249
#: data/ShortcutsWindow.ui:195 data/ShortcutsWindow.ui:222
msgid "Show information"
msgstr ""
#: data/ShortcutsWindow.ui:231
#: data/ShortcutsWindow.ui:204
msgid "Search, Album Dialog and Album List"
msgstr ""
#: data/ShortcutsWindow.ui:242
#: data/ShortcutsWindow.ui:215
msgid "Play immediately"
msgstr ""

185
po/nl.po
View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-10-22 11:02+0200\n"
"PO-Revision-Date: 2022-10-22 11:13+0200\n"
"POT-Creation-Date: 2022-11-06 11:32+0100\n"
"PO-Revision-Date: 2022-11-06 11:34+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: nl\n"
@ -32,66 +32,67 @@ msgid_plural "{channels} channels"
msgstr[0] "{channels} kanaal"
msgstr[1] "{channels} kanalen"
#: src/mpdevil.py:1004
#: src/mpdevil.py:1002
msgid "(restart required)"
msgstr "(herstart vereist)"
#: src/mpdevil.py:1050
#: src/mpdevil.py:1048
msgid "Use Client-side decoration"
msgstr "Gebruik vensterdecoratie van mpdevil"
#: src/mpdevil.py:1051
#: src/mpdevil.py:1049
msgid "Show stop button"
msgstr "Toon stopknop"
#: src/mpdevil.py:1052
#: src/mpdevil.py:1050
msgid "Show audio format"
msgstr "Toon audioformaat"
#: src/mpdevil.py:1053
#: src/mpdevil.py:1051
msgid "Show lyrics button"
msgstr "Toon songtekstknop"
#: src/mpdevil.py:1054
#: src/mpdevil.py:1052
msgid "Place playlist at the side"
msgstr "Plaats afspeellijst aan de zijkant"
#: src/mpdevil.py:1060
#: src/mpdevil.py:1058
msgid "Album view cover size"
msgstr "Hoesgrootte in albumlijst"
#: src/mpdevil.py:1061
#: src/mpdevil.py:1059
msgid "Action bar icon size"
msgstr "Grootte iconen werkbalk"
#: src/mpdevil.py:1071
#: src/mpdevil.py:1069
msgid "Support “MPRIS”"
msgstr "Ondersteun „MPRIS”"
#: src/mpdevil.py:1072
#: src/mpdevil.py:1070
msgid "Sort albums by year"
msgstr "Sorteer albums op jaar"
#: src/mpdevil.py:1073
#: src/mpdevil.py:1071
msgid "Send notification on title change"
msgstr "Verstuur een melding bij titelwisseling"
#: src/mpdevil.py:1074
#: src/mpdevil.py:1072
msgid "Play selected albums and titles immediately"
msgstr "Geselecteerde albums en titels direct afspelen"
#: src/mpdevil.py:1075
#: src/mpdevil.py:1073
msgid "Rewind via previous button"
msgstr "Terugspoelen met „vorige” knop"
#: src/mpdevil.py:1076
#: src/mpdevil.py:1074
msgid "Stop playback on quit"
msgstr "Stop afspelen bij afsluiten"
#: src/mpdevil.py:1103
#: src/mpdevil.py:1101
msgid "Choose directory"
msgstr "Kies een map"
#. labels and entries
#: src/mpdevil.py:1116
msgid "Connect via Unix domain socket"
msgstr "Verbinden via Unix domain socket"
@ -126,253 +127,241 @@ msgstr "Muziekmap:"
msgid "Cover regex:"
msgstr "Regex albumhoes:"
#: src/mpdevil.py:1171 src/mpdevil.py:3280 data/ShortcutsWindow.ui:208
msgid "Profile 1"
msgstr "Profiel 1"
#: src/mpdevil.py:1172 src/mpdevil.py:3280 data/ShortcutsWindow.ui:215
msgid "Profile 2"
msgstr "Profiel 2"
#: src/mpdevil.py:1173 src/mpdevil.py:3280 data/ShortcutsWindow.ui:222
msgid "Profile 3"
msgstr "Profiel 3"
#. connect button
#: src/mpdevil.py:1177 src/mpdevil.py:3167
#: src/mpdevil.py:1150 src/mpdevil.py:3139
msgid "Connect"
msgstr "Verbinden"
#: src/mpdevil.py:1200 src/mpdevil.py:1202 src/mpdevil.py:3168
#: src/mpdevil.py:3272
#: src/mpdevil.py:1173 src/mpdevil.py:1175 src/mpdevil.py:3140
#: src/mpdevil.py:3236
msgid "Preferences"
msgstr "Voorkeuren"
#: src/mpdevil.py:1214 src/mpdevil.py:1224
#: src/mpdevil.py:1187 src/mpdevil.py:1197
msgid "View"
msgstr "Beeld"
#: src/mpdevil.py:1215 src/mpdevil.py:1225
#: src/mpdevil.py:1188 src/mpdevil.py:1198
msgid "Behavior"
msgstr "Gedrag"
#: src/mpdevil.py:1216 src/mpdevil.py:1226 data/ShortcutsWindow.ui:204
msgid "Profiles"
msgstr "Profielen"
#: src/mpdevil.py:1189 src/mpdevil.py:1199
msgid "Connection"
msgstr "Verbinding"
#: src/mpdevil.py:1243
#: src/mpdevil.py:1216
msgid "Stats"
msgstr "Statistieken"
#: src/mpdevil.py:1252
#: src/mpdevil.py:1225
msgid "<b>Protocol:</b>"
msgstr "<b>Protocol:</b>"
#: src/mpdevil.py:1253
#: src/mpdevil.py:1226
msgid "<b>Uptime:</b>"
msgstr "<b>Uptime:</b>"
#: src/mpdevil.py:1254
#: src/mpdevil.py:1227
msgid "<b>Playtime:</b>"
msgstr "<b>Afspeeltijd:</b>"
#: src/mpdevil.py:1255
#: src/mpdevil.py:1228
msgid "<b>Artists:</b>"
msgstr "<b>Artiesten:</b>"
#: src/mpdevil.py:1256
#: src/mpdevil.py:1229
msgid "<b>Albums:</b>"
msgstr "<b>Albums:</b>"
#: src/mpdevil.py:1257
#: src/mpdevil.py:1230
msgid "<b>Songs:</b>"
msgstr "<b>Titels:</b>"
#: src/mpdevil.py:1258
#: src/mpdevil.py:1231
msgid "<b>Total Playtime:</b>"
msgstr "<b>Totale speelduur:</b>"
#: src/mpdevil.py:1259
#: src/mpdevil.py:1232
msgid "<b>Database Update:</b>"
msgstr "<b>Database bijgewerkt:</b>"
#: src/mpdevil.py:1319
#: src/mpdevil.py:1292
msgid "Show in file manager"
msgstr ""
#: src/mpdevil.py:1323 data/ShortcutsWindow.ui:235
#: src/mpdevil.py:1296 data/ShortcutsWindow.ui:208
msgid "Append"
msgstr "Toevoegen"
#: src/mpdevil.py:1323 src/mpdevil.py:2718 src/mpdevil.py:2751
#: src/mpdevil.py:1296 src/mpdevil.py:2690 src/mpdevil.py:2723
msgid "Play"
msgstr "Afspelen"
#: src/mpdevil.py:1339
#: src/mpdevil.py:1312
msgid "MPD-Tag"
msgstr "MPD-Tag"
#: src/mpdevil.py:1342
#: src/mpdevil.py:1315
msgid "Value"
msgstr "Waarde"
#: src/mpdevil.py:1412 src/mpdevil.py:2239
#: src/mpdevil.py:1385 src/mpdevil.py:2212
msgid "No"
msgstr "Nr"
#: src/mpdevil.py:1413 src/mpdevil.py:2240
#: src/mpdevil.py:1386 src/mpdevil.py:2213
msgid "Title"
msgstr "Titel"
#: src/mpdevil.py:1414 src/mpdevil.py:2241
#: src/mpdevil.py:1387 src/mpdevil.py:2214
msgid "Length"
msgstr "Lengte"
#: src/mpdevil.py:1427
#: src/mpdevil.py:1400
msgid "Add all titles to playlist"
msgstr "Voeg alle titels toe aan de afspeellijst"
#: src/mpdevil.py:1428
#: src/mpdevil.py:1401
msgid "Directly play all titles"
msgstr "Alle titels direct afspelen"
#: src/mpdevil.py:1521
#: src/mpdevil.py:1494
#, python-brace-format
msgid "{number} song ({duration})"
msgid_plural "{number} songs ({duration})"
msgstr[0] "{number} nummer ({duration})"
msgstr[1] "{number} nummers ({duration})"
#: src/mpdevil.py:1584
#: src/mpdevil.py:1557
#, python-brace-format
msgid "{hits} hit"
msgid_plural "{hits} hits"
msgstr[0] "{hits} hit"
msgstr[1] "{hits} treffers"
#: src/mpdevil.py:1669
#: src/mpdevil.py:1642
msgid "all tags"
msgstr "alle tags"
#: src/mpdevil.py:1801
#: src/mpdevil.py:1774
msgid "all genres"
msgstr "alle genres"
#: src/mpdevil.py:1824
#: src/mpdevil.py:1797
msgid "all artists"
msgstr "alle artiesten"
#: src/mpdevil.py:2411
#: src/mpdevil.py:2384
msgid "Scroll to current song"
msgstr "Naar de huidige titel scrollen"
#: src/mpdevil.py:2528
#: src/mpdevil.py:2502
msgid "searching…"
msgstr "bezig met zoeken…"
#: src/mpdevil.py:2533
#: src/mpdevil.py:2507
msgid "connection error"
msgstr "verbindingsfout"
#: src/mpdevil.py:2535
#: src/mpdevil.py:2509
msgid "lyrics not found"
msgstr "geen songtekst gevonden"
#: src/mpdevil.py:2662
#: src/mpdevil.py:2634
msgid "Lyrics"
msgstr "Songtekst"
#: src/mpdevil.py:2720 data/ShortcutsWindow.ui:105
#: src/mpdevil.py:2692 data/ShortcutsWindow.ui:105
msgid "Stop"
msgstr "Stoppen"
#: src/mpdevil.py:2724 data/ShortcutsWindow.ui:126
#: src/mpdevil.py:2696 data/ShortcutsWindow.ui:126
msgid "Previous title"
msgstr "Vorige titel"
#: src/mpdevil.py:2727 data/ShortcutsWindow.ui:119
#: src/mpdevil.py:2699 data/ShortcutsWindow.ui:119
msgid "Next title"
msgstr "Volgende titel"
#: src/mpdevil.py:2748
#: src/mpdevil.py:2720
msgid "Pause"
msgstr "Pauzeren"
#: src/mpdevil.py:2920
#: src/mpdevil.py:2892
msgid "Repeat mode"
msgstr "Herhaalmodus"
#: src/mpdevil.py:2921
#: src/mpdevil.py:2893
msgid "Random mode"
msgstr "Willekeurige modus"
#: src/mpdevil.py:2922
#: src/mpdevil.py:2894
msgid "Single mode"
msgstr "Enkele modus"
#: src/mpdevil.py:2923
#: src/mpdevil.py:2895
msgid "Consume mode"
msgstr "Verbruiksmodus"
#: src/mpdevil.py:3137
#: src/mpdevil.py:3109
msgid "Updating Database…"
msgstr "Database bijwerken…"
#: src/mpdevil.py:3189
#: src/mpdevil.py:3157
#, python-brace-format
msgid "Connection to “{socket}” failed"
msgstr "Verbinding met „{socket}” mislukt"
#: src/mpdevil.py:3191
#: src/mpdevil.py:3159
#, python-brace-format
msgid "Connection to “{host}:{port}” failed"
msgstr "Verbinding met „{host}:{port}” mislukt"
#: src/mpdevil.py:3256
#: src/mpdevil.py:3220
msgid "Search"
msgstr "Zoeken"
#: src/mpdevil.py:3259 data/ShortcutsWindow.ui:85
#: src/mpdevil.py:3223 data/ShortcutsWindow.ui:85
msgid "Back to current album"
msgstr "Terug naar huidige album"
#: src/mpdevil.py:3273
#: src/mpdevil.py:3237
msgid "Keyboard Shortcuts"
msgstr "Sneltoetsen"
#: src/mpdevil.py:3274
#: src/mpdevil.py:3238
msgid "Help"
msgstr "Hulp"
#: src/mpdevil.py:3275
#: src/mpdevil.py:3239
msgid "About mpdevil"
msgstr "Over mpdevil"
#: src/mpdevil.py:3277
#: src/mpdevil.py:3241
msgid "Update Database"
msgstr "Database bijwerken"
#: src/mpdevil.py:3278
#: src/mpdevil.py:3242
msgid "Server Stats"
msgstr "Serverstatistieken"
#: src/mpdevil.py:3285
#: src/mpdevil.py:3244
msgid "Mini Player"
msgstr "Minispeler"
#: src/mpdevil.py:3286
#: src/mpdevil.py:3245
msgid "Genre Filter"
msgstr "Genrefilter"
#: src/mpdevil.py:3296
#: src/mpdevil.py:3254
msgid "Menu"
msgstr "Menu"
#: src/mpdevil.py:3483 src/mpdevil.py:3485
#: src/mpdevil.py:3438 src/mpdevil.py:3440
msgid "connecting…"
msgstr "verbinding maken…"
#: src/mpdevil.py:3523
#: src/mpdevil.py:3478
msgid "Debug mode"
msgstr "Debugmodus"
@ -481,20 +470,32 @@ msgstr "Titel verwijderen"
msgid "Clear playlist"
msgstr "Afspeellijst legen"
#: data/ShortcutsWindow.ui:195 data/ShortcutsWindow.ui:249
#: data/ShortcutsWindow.ui:195 data/ShortcutsWindow.ui:222
#, fuzzy
msgid "Show information"
msgstr "Toon informatie"
#: data/ShortcutsWindow.ui:231
#: data/ShortcutsWindow.ui:204
msgid "Search, Album Dialog and Album List"
msgstr "Zoeken, Albumdialoog en Albumlijst"
#: data/ShortcutsWindow.ui:242
#: data/ShortcutsWindow.ui:215
#, fuzzy
msgid "Play immediately"
msgstr "Direct afspelen"
#~ msgid "Profile 1"
#~ msgstr "Profiel 1"
#~ msgid "Profile 2"
#~ msgstr "Profiel 2"
#~ msgid "Profile 3"
#~ msgstr "Profiel 3"
#~ msgid "Profiles"
#~ msgstr "Profielen"
#~ msgid "Enqueue"
#~ msgstr "In wachtrij plaatsen"

186
po/pl.po
View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: mpdevil\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-10-22 11:02+0200\n"
"PO-Revision-Date: 2022-10-22 11:14+0200\n"
"POT-Creation-Date: 2022-11-06 11:32+0100\n"
"PO-Revision-Date: 2022-11-06 11:35+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: pl\n"
@ -35,66 +35,67 @@ msgstr[0] "{channels} kanał"
msgstr[1] "{channels} kanały"
msgstr[2] "{channels} kanałów"
#: src/mpdevil.py:1004
#: src/mpdevil.py:1002
msgid "(restart required)"
msgstr "(wymagane ponowne uruchomienie)"
#: src/mpdevil.py:1050
#: src/mpdevil.py:1048
msgid "Use Client-side decoration"
msgstr "Używaj dekoracji po stronie klienta"
#: src/mpdevil.py:1051
#: src/mpdevil.py:1049
msgid "Show stop button"
msgstr "Pokaż przycisk „stop”"
#: src/mpdevil.py:1052
#: src/mpdevil.py:1050
msgid "Show audio format"
msgstr "Pokaż format audio"
#: src/mpdevil.py:1053
#: src/mpdevil.py:1051
msgid "Show lyrics button"
msgstr "Pokaż przycisk tekstu utworu"
#: src/mpdevil.py:1054
#: src/mpdevil.py:1052
msgid "Place playlist at the side"
msgstr "Umieść playlistę z boku"
#: src/mpdevil.py:1060
#: src/mpdevil.py:1058
msgid "Album view cover size"
msgstr "Rozmiar okładek w przeglądarce"
#: src/mpdevil.py:1061
#: src/mpdevil.py:1059
msgid "Action bar icon size"
msgstr "Rozmiar ikon na pasku akcji"
#: src/mpdevil.py:1071
#: src/mpdevil.py:1069
msgid "Support “MPRIS”"
msgstr "Wspieraj „MPRIS”"
#: src/mpdevil.py:1072
#: src/mpdevil.py:1070
msgid "Sort albums by year"
msgstr "Sortuj albumy według roku"
#: src/mpdevil.py:1073
#: src/mpdevil.py:1071
msgid "Send notification on title change"
msgstr "Wysyłaj powiadomienie przy zmianie utworu"
#: src/mpdevil.py:1074
#: src/mpdevil.py:1072
msgid "Play selected albums and titles immediately"
msgstr "Odtwarzaj wybrane albumy i utwory od razu"
#: src/mpdevil.py:1075
#: src/mpdevil.py:1073
msgid "Rewind via previous button"
msgstr "Przewijaj w tył za pomocą przycisku „poprzedni”"
#: src/mpdevil.py:1076
#: src/mpdevil.py:1074
msgid "Stop playback on quit"
msgstr "Zatrzymaj odtwarzanie przy wyjściu"
#: src/mpdevil.py:1103
#: src/mpdevil.py:1101
msgid "Choose directory"
msgstr "Wybierz katalog"
#. labels and entries
#: src/mpdevil.py:1116
msgid "Connect via Unix domain socket"
msgstr "Połącz się poprzez Unix domain socket"
@ -129,117 +130,106 @@ msgstr "Biblioteka muzyczna:"
msgid "Cover regex:"
msgstr "Wyrażenie regularne okładki:"
#: src/mpdevil.py:1171 src/mpdevil.py:3280 data/ShortcutsWindow.ui:208
msgid "Profile 1"
msgstr "Profil 1"
#: src/mpdevil.py:1172 src/mpdevil.py:3280 data/ShortcutsWindow.ui:215
msgid "Profile 2"
msgstr "Profil 2"
#: src/mpdevil.py:1173 src/mpdevil.py:3280 data/ShortcutsWindow.ui:222
msgid "Profile 3"
msgstr "Profil 3"
#. connect button
#: src/mpdevil.py:1177 src/mpdevil.py:3167
#: src/mpdevil.py:1150 src/mpdevil.py:3139
msgid "Connect"
msgstr "Połącz się"
#: src/mpdevil.py:1200 src/mpdevil.py:1202 src/mpdevil.py:3168
#: src/mpdevil.py:3272
#: src/mpdevil.py:1173 src/mpdevil.py:1175 src/mpdevil.py:3140
#: src/mpdevil.py:3236
msgid "Preferences"
msgstr "Preferencje"
#: src/mpdevil.py:1214 src/mpdevil.py:1224
#: src/mpdevil.py:1187 src/mpdevil.py:1197
msgid "View"
msgstr "Widok"
#: src/mpdevil.py:1215 src/mpdevil.py:1225
#: src/mpdevil.py:1188 src/mpdevil.py:1198
msgid "Behavior"
msgstr "Zachowanie"
#: src/mpdevil.py:1216 src/mpdevil.py:1226 data/ShortcutsWindow.ui:204
msgid "Profiles"
msgstr "Profile"
#: src/mpdevil.py:1189 src/mpdevil.py:1199
#, fuzzy
msgid "Connection"
msgstr "Połączenie"
#: src/mpdevil.py:1243
#: src/mpdevil.py:1216
msgid "Stats"
msgstr "Statystyki"
#: src/mpdevil.py:1252
#: src/mpdevil.py:1225
msgid "<b>Protocol:</b>"
msgstr "<b>Protokół:</b>"
#: src/mpdevil.py:1253
#: src/mpdevil.py:1226
msgid "<b>Uptime:</b>"
msgstr "<b>Czas działania:</b>"
#: src/mpdevil.py:1254
#: src/mpdevil.py:1227
msgid "<b>Playtime:</b>"
msgstr "<b>Czas odtwarzania:</b>"
#: src/mpdevil.py:1255
#: src/mpdevil.py:1228
msgid "<b>Artists:</b>"
msgstr "<b>Artyści:</b>"
#: src/mpdevil.py:1256
#: src/mpdevil.py:1229
msgid "<b>Albums:</b>"
msgstr "<b>Albumy:</b>"
#: src/mpdevil.py:1257
#: src/mpdevil.py:1230
msgid "<b>Songs:</b>"
msgstr "<b>Utwory:</b>"
#: src/mpdevil.py:1258
#: src/mpdevil.py:1231
msgid "<b>Total Playtime:</b>"
msgstr "<b>Całkowity czas odtwarzania:</b>"
#: src/mpdevil.py:1259
#: src/mpdevil.py:1232
msgid "<b>Database Update:</b>"
msgstr "<b>Aktualizacja bazy danych:</b>"
#: src/mpdevil.py:1319
#: src/mpdevil.py:1292
msgid "Show in file manager"
msgstr "Pokaż w menedżerze plików"
#: src/mpdevil.py:1323 data/ShortcutsWindow.ui:235
#: src/mpdevil.py:1296 data/ShortcutsWindow.ui:208
msgid "Append"
msgstr "Dodaj"
#: src/mpdevil.py:1323 src/mpdevil.py:2718 src/mpdevil.py:2751
#: src/mpdevil.py:1296 src/mpdevil.py:2690 src/mpdevil.py:2723
msgid "Play"
msgstr "Odtwórz"
#: src/mpdevil.py:1339
#: src/mpdevil.py:1312
msgid "MPD-Tag"
msgstr "Tag MPD"
#: src/mpdevil.py:1342
#: src/mpdevil.py:1315
msgid "Value"
msgstr "Wartość"
#: src/mpdevil.py:1412 src/mpdevil.py:2239
#: src/mpdevil.py:1385 src/mpdevil.py:2212
msgid "No"
msgstr "Nie"
#: src/mpdevil.py:1413 src/mpdevil.py:2240
#: src/mpdevil.py:1386 src/mpdevil.py:2213
msgid "Title"
msgstr "Tytuł"
#: src/mpdevil.py:1414 src/mpdevil.py:2241
#: src/mpdevil.py:1387 src/mpdevil.py:2214
msgid "Length"
msgstr "Długość"
#: src/mpdevil.py:1427
#: src/mpdevil.py:1400
msgid "Add all titles to playlist"
msgstr "Dodaj wszystkie utwory do playlisty"
#: src/mpdevil.py:1428
#: src/mpdevil.py:1401
msgid "Directly play all titles"
msgstr "Bezpośrednio odtwórz wszystkie utwory"
#: src/mpdevil.py:1521
#: src/mpdevil.py:1494
#, python-brace-format
msgid "{number} song ({duration})"
msgid_plural "{number} songs ({duration})"
@ -247,7 +237,7 @@ msgstr[0] "{number} utwór ({duration})"
msgstr[1] "{number} utwory ({duration})"
msgstr[2] "{number} utworów ({duration})"
#: src/mpdevil.py:1584
#: src/mpdevil.py:1557
#, python-brace-format
msgid "{hits} hit"
msgid_plural "{hits} hits"
@ -255,129 +245,129 @@ msgstr[0] "{hits} trafienie"
msgstr[1] "{hits} trafienia"
msgstr[2] "{hits} trafień"
#: src/mpdevil.py:1669
#: src/mpdevil.py:1642
msgid "all tags"
msgstr "wszystkie tagi"
#: src/mpdevil.py:1801
#: src/mpdevil.py:1774
msgid "all genres"
msgstr "wszystkie gatunki"
#: src/mpdevil.py:1824
#: src/mpdevil.py:1797
msgid "all artists"
msgstr "wszyscy artyści"
#: src/mpdevil.py:2411
#: src/mpdevil.py:2384
msgid "Scroll to current song"
msgstr "Przewiń do aktualnego utworu"
#: src/mpdevil.py:2528
#: src/mpdevil.py:2502
msgid "searching…"
msgstr "wyszukiwanie…"
#: src/mpdevil.py:2533
#: src/mpdevil.py:2507
msgid "connection error"
msgstr "błąd połączenia"
#: src/mpdevil.py:2535
#: src/mpdevil.py:2509
msgid "lyrics not found"
msgstr "nie znaleziono tekstu utworu"
#: src/mpdevil.py:2662
#: src/mpdevil.py:2634
msgid "Lyrics"
msgstr "Tekst utworu"
#: src/mpdevil.py:2720 data/ShortcutsWindow.ui:105
#: src/mpdevil.py:2692 data/ShortcutsWindow.ui:105
msgid "Stop"
msgstr "Stop"
#: src/mpdevil.py:2724 data/ShortcutsWindow.ui:126
#: src/mpdevil.py:2696 data/ShortcutsWindow.ui:126
msgid "Previous title"
msgstr "Poprzedni utwór"
#: src/mpdevil.py:2727 data/ShortcutsWindow.ui:119
#: src/mpdevil.py:2699 data/ShortcutsWindow.ui:119
msgid "Next title"
msgstr "Następny utwór"
#: src/mpdevil.py:2748
#: src/mpdevil.py:2720
msgid "Pause"
msgstr "Pauza"
#: src/mpdevil.py:2920
#: src/mpdevil.py:2892
msgid "Repeat mode"
msgstr "Tryb powtarzania"
#: src/mpdevil.py:2921
#: src/mpdevil.py:2893
msgid "Random mode"
msgstr "Tryb losowy"
#: src/mpdevil.py:2922
#: src/mpdevil.py:2894
msgid "Single mode"
msgstr "Tryb pojedynczy"
#: src/mpdevil.py:2923
#: src/mpdevil.py:2895
msgid "Consume mode"
msgstr "Tryb wyczerpywania"
#: src/mpdevil.py:3137
#: src/mpdevil.py:3109
msgid "Updating Database…"
msgstr "Aktualizowanie bazy danych…"
#: src/mpdevil.py:3189
#: src/mpdevil.py:3157
#, python-brace-format
msgid "Connection to “{socket}” failed"
msgstr "Nie udało połączyć się do „{socket}”"
#: src/mpdevil.py:3191
#: src/mpdevil.py:3159
#, python-brace-format
msgid "Connection to “{host}:{port}” failed"
msgstr "Nie udało połączyć się do „{host}:{port}”"
#: src/mpdevil.py:3256
#: src/mpdevil.py:3220
msgid "Search"
msgstr "Szukaj"
#: src/mpdevil.py:3259 data/ShortcutsWindow.ui:85
#: src/mpdevil.py:3223 data/ShortcutsWindow.ui:85
msgid "Back to current album"
msgstr "Wróć do aktualnego albumu"
#: src/mpdevil.py:3273
#: src/mpdevil.py:3237
msgid "Keyboard Shortcuts"
msgstr "Skróty klawiszowe"
#: src/mpdevil.py:3274
#: src/mpdevil.py:3238
msgid "Help"
msgstr "Pomoc"
#: src/mpdevil.py:3275
#: src/mpdevil.py:3239
msgid "About mpdevil"
msgstr "O mpdevil"
#: src/mpdevil.py:3277
#: src/mpdevil.py:3241
msgid "Update Database"
msgstr "Aktualizuj bazę danych"
#: src/mpdevil.py:3278
#: src/mpdevil.py:3242
msgid "Server Stats"
msgstr "Statystyki serwera"
#: src/mpdevil.py:3285
#: src/mpdevil.py:3244
msgid "Mini Player"
msgstr "Mini odtwarzacz"
#: src/mpdevil.py:3286
#: src/mpdevil.py:3245
msgid "Genre Filter"
msgstr "Filtr gatunku"
#: src/mpdevil.py:3296
#: src/mpdevil.py:3254
msgid "Menu"
msgstr "Menu"
#: src/mpdevil.py:3483 src/mpdevil.py:3485
#: src/mpdevil.py:3438 src/mpdevil.py:3440
msgid "connecting…"
msgstr "łączenie…"
#: src/mpdevil.py:3523
#: src/mpdevil.py:3478
msgid "Debug mode"
msgstr "Tryb debugowania"
@ -486,20 +476,32 @@ msgstr "Usuń wybrany utwór"
msgid "Clear playlist"
msgstr "Wyczyść playlistę"
#: data/ShortcutsWindow.ui:195 data/ShortcutsWindow.ui:249
#: data/ShortcutsWindow.ui:195 data/ShortcutsWindow.ui:222
#, fuzzy
msgid "Show information"
msgstr "Wyświetl dodatkowe informacje"
#: data/ShortcutsWindow.ui:231
#: data/ShortcutsWindow.ui:204
msgid "Search, Album Dialog and Album List"
msgstr "Wyszukiwanie, Okno albumu i Lista albumów"
#: data/ShortcutsWindow.ui:242
#: data/ShortcutsWindow.ui:215
#, fuzzy
msgid "Play immediately"
msgstr "Odtwórz wybraną pozycję natychmiast"
#~ msgid "Profile 1"
#~ msgstr "Profil 1"
#~ msgid "Profile 2"
#~ msgstr "Profil 2"
#~ msgid "Profile 3"
#~ msgstr "Profil 3"
#~ msgid "Profiles"
#~ msgstr "Profile"
#~ msgid "Add to playlist"
#~ msgstr "Dodaj do playlisty"

186
po/tr.po
View File

@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: mpdevil\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-10-22 11:02+0200\n"
"PO-Revision-Date: 2022-10-22 11:12+0200\n"
"POT-Creation-Date: 2022-11-06 11:32+0100\n"
"PO-Revision-Date: 2022-11-06 11:36+0100\n"
"Last-Translator: Oğuz Ersen <oguz@ersen.moe>\n"
"Language-Team: Turkish <tr>\n"
"Language: tr\n"
@ -31,66 +31,67 @@ msgid "{channels} channel"
msgid_plural "{channels} channels"
msgstr[0] "{channels} kanal"
#: src/mpdevil.py:1004
#: src/mpdevil.py:1002
msgid "(restart required)"
msgstr "(yeniden başlatma gerekli)"
#: src/mpdevil.py:1050
#: src/mpdevil.py:1048
msgid "Use Client-side decoration"
msgstr "İstemci tarafı süslemelerini kullan"
#: src/mpdevil.py:1051
#: src/mpdevil.py:1049
msgid "Show stop button"
msgstr "Durdur düğmesini göster"
#: src/mpdevil.py:1052
#: src/mpdevil.py:1050
msgid "Show audio format"
msgstr "Ses biçimini göster"
#: src/mpdevil.py:1053
#: src/mpdevil.py:1051
msgid "Show lyrics button"
msgstr "Şarkı sözleri düğmesini göster"
#: src/mpdevil.py:1054
#: src/mpdevil.py:1052
msgid "Place playlist at the side"
msgstr "Oynatma listesini yan tarafa yerleştir"
#: src/mpdevil.py:1060
#: src/mpdevil.py:1058
msgid "Album view cover size"
msgstr "Albüm görünümü kapak resmi boyutu"
#: src/mpdevil.py:1061
#: src/mpdevil.py:1059
msgid "Action bar icon size"
msgstr "Eylem çubuğu simge boyutu"
#: src/mpdevil.py:1071
#: src/mpdevil.py:1069
msgid "Support “MPRIS”"
msgstr "“MPRIS” destekle"
#: src/mpdevil.py:1072
#: src/mpdevil.py:1070
msgid "Sort albums by year"
msgstr "Albümleri yıla göre sırala"
#: src/mpdevil.py:1073
#: src/mpdevil.py:1071
msgid "Send notification on title change"
msgstr "Şarkı değişikliğinde bildirim gönder"
#: src/mpdevil.py:1074
#: src/mpdevil.py:1072
msgid "Play selected albums and titles immediately"
msgstr "Seçilen albümleri ve şarkıları hemen oynat"
#: src/mpdevil.py:1075
#: src/mpdevil.py:1073
msgid "Rewind via previous button"
msgstr "Önceki düğmesi ile geri sar"
#: src/mpdevil.py:1076
#: src/mpdevil.py:1074
msgid "Stop playback on quit"
msgstr "Çıkışta oynatmayı durdur"
#: src/mpdevil.py:1103
#: src/mpdevil.py:1101
msgid "Choose directory"
msgstr "Dizin seç"
#. labels and entries
#: src/mpdevil.py:1116
msgid "Connect via Unix domain socket"
msgstr "Unix etki alanı soketi ile bağlan"
@ -125,251 +126,240 @@ msgstr "Müzik kütüphanesi:"
msgid "Cover regex:"
msgstr "Kapak resmi düzenli ifadesi:"
#: src/mpdevil.py:1171 src/mpdevil.py:3280 data/ShortcutsWindow.ui:208
msgid "Profile 1"
msgstr "Profil 1"
#: src/mpdevil.py:1172 src/mpdevil.py:3280 data/ShortcutsWindow.ui:215
msgid "Profile 2"
msgstr "Profil 2"
#: src/mpdevil.py:1173 src/mpdevil.py:3280 data/ShortcutsWindow.ui:222
msgid "Profile 3"
msgstr "Profil 3"
#. connect button
#: src/mpdevil.py:1177 src/mpdevil.py:3167
#: src/mpdevil.py:1150 src/mpdevil.py:3139
msgid "Connect"
msgstr "Bağlan"
#: src/mpdevil.py:1200 src/mpdevil.py:1202 src/mpdevil.py:3168
#: src/mpdevil.py:3272
#: src/mpdevil.py:1173 src/mpdevil.py:1175 src/mpdevil.py:3140
#: src/mpdevil.py:3236
msgid "Preferences"
msgstr "Tercihler"
#: src/mpdevil.py:1214 src/mpdevil.py:1224
#: src/mpdevil.py:1187 src/mpdevil.py:1197
msgid "View"
msgstr "Gürünüm"
#: src/mpdevil.py:1215 src/mpdevil.py:1225
#: src/mpdevil.py:1188 src/mpdevil.py:1198
msgid "Behavior"
msgstr "Davranış"
#: src/mpdevil.py:1216 src/mpdevil.py:1226 data/ShortcutsWindow.ui:204
msgid "Profiles"
msgstr "Profiller"
#: src/mpdevil.py:1189 src/mpdevil.py:1199
#, fuzzy
msgid "Connection"
msgstr "Bağ"
#: src/mpdevil.py:1243
#: src/mpdevil.py:1216
msgid "Stats"
msgstr "İstatistikler"
#: src/mpdevil.py:1252
#: src/mpdevil.py:1225
msgid "<b>Protocol:</b>"
msgstr "<b>Protokol:</b>"
#: src/mpdevil.py:1253
#: src/mpdevil.py:1226
msgid "<b>Uptime:</b>"
msgstr "<b>Çalışma Süresi:</b>"
#: src/mpdevil.py:1254
#: src/mpdevil.py:1227
msgid "<b>Playtime:</b>"
msgstr "<b>Oynatma Süresi:</b>"
#: src/mpdevil.py:1255
#: src/mpdevil.py:1228
msgid "<b>Artists:</b>"
msgstr "<b>Sanatçılar:</b>"
#: src/mpdevil.py:1256
#: src/mpdevil.py:1229
msgid "<b>Albums:</b>"
msgstr "<b>Albümler:</b>"
#: src/mpdevil.py:1257
#: src/mpdevil.py:1230
msgid "<b>Songs:</b>"
msgstr "<b>Şarkılar:</b>"
#: src/mpdevil.py:1258
#: src/mpdevil.py:1231
msgid "<b>Total Playtime:</b>"
msgstr "<b>Toplam Oynatma Süresi:</b>"
#: src/mpdevil.py:1259
#: src/mpdevil.py:1232
msgid "<b>Database Update:</b>"
msgstr "<b>Veri Tabanı Güncellemesi:</b>"
#: src/mpdevil.py:1319
#: src/mpdevil.py:1292
msgid "Show in file manager"
msgstr "Dosya yöneticisinde göster"
#: src/mpdevil.py:1323 data/ShortcutsWindow.ui:235
#: src/mpdevil.py:1296 data/ShortcutsWindow.ui:208
msgid "Append"
msgstr "Sona ekle"
#: src/mpdevil.py:1323 src/mpdevil.py:2718 src/mpdevil.py:2751
#: src/mpdevil.py:1296 src/mpdevil.py:2690 src/mpdevil.py:2723
msgid "Play"
msgstr "Oynat"
#: src/mpdevil.py:1339
#: src/mpdevil.py:1312
msgid "MPD-Tag"
msgstr "MPD-Etiketi"
#: src/mpdevil.py:1342
#: src/mpdevil.py:1315
msgid "Value"
msgstr "Değer"
#: src/mpdevil.py:1412 src/mpdevil.py:2239
#: src/mpdevil.py:1385 src/mpdevil.py:2212
msgid "No"
msgstr "Sayı"
#: src/mpdevil.py:1413 src/mpdevil.py:2240
#: src/mpdevil.py:1386 src/mpdevil.py:2213
msgid "Title"
msgstr "Şarkı"
#: src/mpdevil.py:1414 src/mpdevil.py:2241
#: src/mpdevil.py:1387 src/mpdevil.py:2214
msgid "Length"
msgstr "Uzunluk"
#: src/mpdevil.py:1427
#: src/mpdevil.py:1400
msgid "Add all titles to playlist"
msgstr "Tüm şarkıları oynatma listesine ekle"
#: src/mpdevil.py:1428
#: src/mpdevil.py:1401
msgid "Directly play all titles"
msgstr "Tüm şarkıları doğrudan oynat"
#: src/mpdevil.py:1521
#: src/mpdevil.py:1494
#, python-brace-format
msgid "{number} song ({duration})"
msgid_plural "{number} songs ({duration})"
msgstr[0] "{number} şarkı ({duration})"
#: src/mpdevil.py:1584
#: src/mpdevil.py:1557
#, python-brace-format
msgid "{hits} hit"
msgid_plural "{hits} hits"
msgstr[0] "{hits} oynatma"
#: src/mpdevil.py:1669
#: src/mpdevil.py:1642
msgid "all tags"
msgstr "tüm etiketler"
#: src/mpdevil.py:1801
#: src/mpdevil.py:1774
msgid "all genres"
msgstr "tüm türler"
#: src/mpdevil.py:1824
#: src/mpdevil.py:1797
msgid "all artists"
msgstr "tüm sanatçılar"
#: src/mpdevil.py:2411
#: src/mpdevil.py:2384
msgid "Scroll to current song"
msgstr "Geçerli şarkıya kaydır"
#: src/mpdevil.py:2528
#: src/mpdevil.py:2502
msgid "searching…"
msgstr "aranıyor…"
#: src/mpdevil.py:2533
#: src/mpdevil.py:2507
msgid "connection error"
msgstr "bağlantı hatası"
#: src/mpdevil.py:2535
#: src/mpdevil.py:2509
msgid "lyrics not found"
msgstr "şarkı sözleri bulunamadı"
#: src/mpdevil.py:2662
#: src/mpdevil.py:2634
msgid "Lyrics"
msgstr "Şarkı sözleri"
#: src/mpdevil.py:2720 data/ShortcutsWindow.ui:105
#: src/mpdevil.py:2692 data/ShortcutsWindow.ui:105
msgid "Stop"
msgstr "Durdur"
#: src/mpdevil.py:2724 data/ShortcutsWindow.ui:126
#: src/mpdevil.py:2696 data/ShortcutsWindow.ui:126
msgid "Previous title"
msgstr "Önceki şarkı"
#: src/mpdevil.py:2727 data/ShortcutsWindow.ui:119
#: src/mpdevil.py:2699 data/ShortcutsWindow.ui:119
msgid "Next title"
msgstr "Sonraki şarkı"
#: src/mpdevil.py:2748
#: src/mpdevil.py:2720
msgid "Pause"
msgstr "Duraklat"
#: src/mpdevil.py:2920
#: src/mpdevil.py:2892
msgid "Repeat mode"
msgstr "Tekrar modu"
#: src/mpdevil.py:2921
#: src/mpdevil.py:2893
msgid "Random mode"
msgstr "Rastgele modu"
#: src/mpdevil.py:2922
#: src/mpdevil.py:2894
msgid "Single mode"
msgstr "Tekli modu"
#: src/mpdevil.py:2923
#: src/mpdevil.py:2895
msgid "Consume mode"
msgstr "Tüketim modu"
#: src/mpdevil.py:3137
#: src/mpdevil.py:3109
msgid "Updating Database…"
msgstr "Veri Tabanı Güncelleniyor…"
#: src/mpdevil.py:3189
#: src/mpdevil.py:3157
#, python-brace-format
msgid "Connection to “{socket}” failed"
msgstr "“{socket}” bağlantısı başarısız"
#: src/mpdevil.py:3191
#: src/mpdevil.py:3159
#, python-brace-format
msgid "Connection to “{host}:{port}” failed"
msgstr "“{host}:{port}” bağlantısı başarısız"
#: src/mpdevil.py:3256
#: src/mpdevil.py:3220
msgid "Search"
msgstr "Ara"
#: src/mpdevil.py:3259 data/ShortcutsWindow.ui:85
#: src/mpdevil.py:3223 data/ShortcutsWindow.ui:85
msgid "Back to current album"
msgstr "Geçerli albüme geri dön"
#: src/mpdevil.py:3273
#: src/mpdevil.py:3237
msgid "Keyboard Shortcuts"
msgstr "Klavye Kısayolları"
#: src/mpdevil.py:3274
#: src/mpdevil.py:3238
msgid "Help"
msgstr "Yardım"
#: src/mpdevil.py:3275
#: src/mpdevil.py:3239
msgid "About mpdevil"
msgstr "mpdevil Hakkında"
#: src/mpdevil.py:3277
#: src/mpdevil.py:3241
msgid "Update Database"
msgstr "Veri Tabanını Güncelle"
#: src/mpdevil.py:3278
#: src/mpdevil.py:3242
msgid "Server Stats"
msgstr "Sunucu İstatistikleri"
#: src/mpdevil.py:3285
#: src/mpdevil.py:3244
msgid "Mini Player"
msgstr "Küçük Oynatıcı"
#: src/mpdevil.py:3286
#: src/mpdevil.py:3245
msgid "Genre Filter"
msgstr "Tür Filtresi"
#: src/mpdevil.py:3296
#: src/mpdevil.py:3254
msgid "Menu"
msgstr "Menü"
#: src/mpdevil.py:3483 src/mpdevil.py:3485
#: src/mpdevil.py:3438 src/mpdevil.py:3440
msgid "connecting…"
msgstr "bağlanıyor…"
#: src/mpdevil.py:3523
#: src/mpdevil.py:3478
msgid "Debug mode"
msgstr "Hata ayıklama modu"
@ -478,20 +468,32 @@ msgstr "Seçilen şarkıyı kaldır"
msgid "Clear playlist"
msgstr "Oynatma listesini temizle"
#: data/ShortcutsWindow.ui:195 data/ShortcutsWindow.ui:249
#: data/ShortcutsWindow.ui:195 data/ShortcutsWindow.ui:222
#, fuzzy
msgid "Show information"
msgstr "Ek bilgileri göster"
#: data/ShortcutsWindow.ui:231
#: data/ShortcutsWindow.ui:204
msgid "Search, Album Dialog and Album List"
msgstr "Ara, Albüm İletişim Kutusu ve Albüm Listesi"
#: data/ShortcutsWindow.ui:242
#: data/ShortcutsWindow.ui:215
#, fuzzy
msgid "Play immediately"
msgstr "Seçilen ögeyi hemen oynat"
#~ msgid "Profile 1"
#~ msgstr "Profil 1"
#~ msgid "Profile 2"
#~ msgstr "Profil 2"
#~ msgid "Profile 3"
#~ msgstr "Profil 3"
#~ msgid "Profiles"
#~ msgstr "Profiller"
#~ msgid "Enqueue"
#~ msgstr "Sıraya al"

View File

@ -46,10 +46,10 @@ bindtextdomain("mpdevil", localedir="@LOCALE_DIR@")
textdomain("mpdevil")
Gio.Resource._register(Gio.resource_load(os.path.join("@RESOURCES_DIR@", "mpdevil.gresource")))
COVER_REGEX=r"^\.?(album|cover|folder|front).*\.(gif|jpeg|jpg|png)$"
FALLBACK_REGEX=r"^\.?(album|cover|folder|front).*\.(gif|jpeg|jpg|png)$"
FALLBACK_COVER=Gtk.IconTheme.get_default().lookup_icon("media-optical", 128, Gtk.IconLookupFlags.FORCE_SVG).get_filename()
FALLBACK_SOCKET=os.path.join(GLib.get_user_runtime_dir(), "mpd/socket")
FALLBACK_LIB=GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_MUSIC)
FALLBACK_MUSIC_DIRECTORY=GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_MUSIC)
############################
# decorators and functions #
@ -654,11 +654,11 @@ class Client(MPDClient):
self._refresh_interval=self._settings.get_int("refresh-interval")
self._main_timeout_id=None
self._start_idle_id=None
self.lib_path=None
self.music_directory=None
self.current_cover=None
# connect
self._settings.connect("changed::active-profile", self._on_active_profile_changed)
self._settings.connect("changed::socket-connection", lambda *args: self.reconnect())
# workaround for list group
# see: https://github.com/Mic92/python-mpd2/pull/187
@ -710,29 +710,26 @@ class Client(MPDClient):
def start(self):
self.emitter.emit("connecting")
def callback():
profile=self._settings.get_active_profile()
if profile.get_boolean("socket-connection"):
socket=profile.get_string("socket")
if not socket:
socket=FALLBACK_SOCKET
args=(socket, None)
if self._settings.get_boolean("socket-connection"):
args=(self._settings.get_socket(), None)
else:
args=(profile.get_string("host"), profile.get_int("port"))
args=(self._settings.get_string("host"), self._settings.get_int("port"))
try:
self.connect(*args)
if profile.get_string("password"):
self.password(profile.get_string("password"))
if self._settings.get_string("password"):
self.password(self._settings.get_string("password"))
except:
self.emitter.emit("connection_error")
self._start_idle_id=None
return False
# connect successful
if profile.get_boolean("socket-connection"):
self.lib_path=self.config()
if self._settings.get_boolean("socket-connection"):
if "config" in self.commands():
self.music_directory=self.config()
else:
print("No permission to get music directory.")
else:
self.lib_path=self._settings.get_active_profile().get_string("path")
if not self.lib_path:
self.lib_path=FALLBACK_LIB
self.music_directory=self._settings.get_music_directory()
if "status" in self.commands():
self._main_timeout_id=GLib.timeout_add(self._refresh_interval, self._main_loop)
self.emitter.emit("connected")
@ -826,9 +823,8 @@ class Client(MPDClient):
def get_cover_path(self, song):
path=None
song_file=song["file"]
profile=self._settings.get_active_profile()
if self.lib_path is not None:
regex_str=profile.get_string("regex")
if self.music_directory is not None:
regex_str=self._settings.get_string("regex")
if regex_str:
regex_str=regex_str.replace("%AlbumArtist%", re.escape(song["albumartist"][0]))
regex_str=regex_str.replace("%Album%", re.escape(song["album"][0]))
@ -838,8 +834,8 @@ class Client(MPDClient):
print("illegal regex:", regex_str)
return None
else:
regex=re.compile(COVER_REGEX, flags=re.IGNORECASE)
song_dir=os.path.join(self.lib_path, os.path.dirname(song_file))
regex=re.compile(FALLBACK_REGEX, flags=re.IGNORECASE)
song_dir=os.path.join(self.music_directory, os.path.dirname(song_file))
if song_dir.lower().endswith(".cue"):
song_dir=os.path.dirname(song_dir) # get actual directory of .cue file
if os.path.isdir(song_dir):
@ -868,8 +864,8 @@ class Client(MPDClient):
return None
def get_absolute_path(self, uri):
if self.lib_path is not None:
path=re.sub(r"(.*\.cue)\/track\d+$", r"\1", os.path.join(self.lib_path, uri), flags=re.IGNORECASE)
if self.music_directory is not None:
path=re.sub(r"(.*\.cue)\/track\d+$", r"\1", os.path.join(self.music_directory, uri), flags=re.IGNORECASE)
if os.path.isfile(path):
return path
else:
@ -961,14 +957,11 @@ class Client(MPDClient):
self.disconnect()
self.emitter.emit("connection_error")
self._main_timeout_id=None
self.lib_path=None
self.music_directory=None
self.current_cover=None
return False
return True
def _on_active_profile_changed(self, *args):
self.reconnect()
########################
# gio settings wrapper #
########################
@ -979,13 +972,18 @@ class Settings(Gio.Settings):
cursor_watch=GObject.Property(type=bool, default=False)
def __init__(self):
super().__init__(schema=self.BASE_KEY)
self._profiles=(self.get_child("profile1"), self.get_child("profile2"), self.get_child("profile3"))
def get_profile(self, num):
return self._profiles[num]
def get_socket(self):
socket=self.get_string("socket")
if not socket:
socket=FALLBACK_SOCKET
return socket
def get_active_profile(self):
return self.get_profile(self.get_int("active-profile"))
def get_music_directory(self):
music_directory=self.get_string("music-directory")
if not music_directory:
music_directory=FALLBACK_MUSIC_DIRECTORY
return music_directory
###################
# settings dialog #
@ -1093,9 +1091,9 @@ class PasswordEntry(Gtk.Entry):
self.set_visibility(False)
self.set_icon_from_icon_name(Gtk.EntryIconPosition.SECONDARY, "view-conceal-symbolic")
class LibPathEntry(Gtk.Entry):
class MusicDirectoryEntry(Gtk.Entry):
def __init__(self, parent, **kwargs):
super().__init__(placeholder_text=FALLBACK_LIB, **kwargs)
super().__init__(placeholder_text=FALLBACK_MUSIC_DIRECTORY, **kwargs)
self.set_icon_from_icon_name(Gtk.EntryIconPosition.SECONDARY, "folder-open-symbolic")
self.connect("icon-release", self._on_icon_release, parent)
@ -1110,88 +1108,63 @@ class LibPathEntry(Gtk.Entry):
self.set_text(dialog.get_filename())
dialog.destroy()
class ProfileEntryMask(Gtk.Grid):
def __init__(self, profile, parent):
class ConnectionSettings(Gtk.Grid):
def __init__(self, parent, client, settings):
super().__init__(row_spacing=6, column_spacing=6, border_width=18)
# labels and entries
socket_button=Gtk.CheckButton(label=_("Connect via Unix domain socket"))
profile.bind("socket-connection", socket_button, "active", Gio.SettingsBindFlags.DEFAULT)
settings.bind("socket-connection", socket_button, "active", Gio.SettingsBindFlags.DEFAULT)
socket_entry=Gtk.Entry(placeholder_text=FALLBACK_SOCKET, hexpand=True, no_show_all=True)
profile.bind("socket", socket_entry, "text", Gio.SettingsBindFlags.DEFAULT)
profile.bind("socket-connection", socket_entry, "visible", Gio.SettingsBindFlags.GET)
settings.bind("socket", socket_entry, "text", Gio.SettingsBindFlags.DEFAULT)
settings.bind("socket-connection", socket_entry, "visible", Gio.SettingsBindFlags.GET)
host_entry=Gtk.Entry(hexpand=True, no_show_all=True)
profile.bind("host", host_entry, "text", Gio.SettingsBindFlags.DEFAULT)
profile.bind("socket-connection", host_entry, "visible", Gio.SettingsBindFlags.INVERT_BOOLEAN|Gio.SettingsBindFlags.GET)
settings.bind("host", host_entry, "text", Gio.SettingsBindFlags.DEFAULT)
settings.bind("socket-connection", host_entry, "visible", Gio.SettingsBindFlags.INVERT_BOOLEAN|Gio.SettingsBindFlags.GET)
port_entry=Gtk.SpinButton.new_with_range(0, 65535, 1)
port_entry.set_property("no-show-all", True)
profile.bind("port", port_entry, "value", Gio.SettingsBindFlags.DEFAULT)
profile.bind("socket-connection", port_entry, "visible", Gio.SettingsBindFlags.INVERT_BOOLEAN|Gio.SettingsBindFlags.GET)
settings.bind("port", port_entry, "value", Gio.SettingsBindFlags.DEFAULT)
settings.bind("socket-connection", port_entry, "visible", Gio.SettingsBindFlags.INVERT_BOOLEAN|Gio.SettingsBindFlags.GET)
password_entry=PasswordEntry(hexpand=True)
profile.bind("password", password_entry, "text", Gio.SettingsBindFlags.DEFAULT)
path_entry=LibPathEntry(parent, hexpand=True, no_show_all=True)
profile.bind("path", path_entry, "text", Gio.SettingsBindFlags.DEFAULT)
profile.bind("socket-connection", path_entry, "visible", Gio.SettingsBindFlags.INVERT_BOOLEAN|Gio.SettingsBindFlags.GET)
regex_entry=Gtk.Entry(hexpand=True, placeholder_text=COVER_REGEX)
settings.bind("password", password_entry, "text", Gio.SettingsBindFlags.DEFAULT)
music_directory_entry=MusicDirectoryEntry(parent, hexpand=True, no_show_all=True)
settings.bind("music-directory", music_directory_entry, "text", Gio.SettingsBindFlags.DEFAULT)
settings.bind("socket-connection", music_directory_entry, "visible", Gio.SettingsBindFlags.INVERT_BOOLEAN|Gio.SettingsBindFlags.GET)
regex_entry=Gtk.Entry(hexpand=True, placeholder_text=FALLBACK_REGEX)
regex_entry.set_tooltip_text(
_("The first image in the same directory as the song file "\
"matching this regex will be displayed. %AlbumArtist% and "\
"%Album% will be replaced by the corresponding tags of the song.")
)
profile.bind("regex", regex_entry, "text", Gio.SettingsBindFlags.DEFAULT)
settings.bind("regex", regex_entry, "text", Gio.SettingsBindFlags.DEFAULT)
socket_label=Gtk.Label(label=_("Socket:"), xalign=1, margin_end=6, no_show_all=True)
profile.bind("socket-connection", socket_label, "visible", Gio.SettingsBindFlags.GET)
settings.bind("socket-connection", socket_label, "visible", Gio.SettingsBindFlags.GET)
host_label=Gtk.Label(label=_("Host:"), xalign=1, margin_end=6, no_show_all=True)
profile.bind("socket-connection", host_label, "visible", Gio.SettingsBindFlags.INVERT_BOOLEAN|Gio.SettingsBindFlags.GET)
settings.bind("socket-connection", host_label, "visible", Gio.SettingsBindFlags.INVERT_BOOLEAN|Gio.SettingsBindFlags.GET)
password_label=Gtk.Label(label=_("Password:"), xalign=1, margin_end=6)
path_label=Gtk.Label(label=_("Music lib:"), xalign=1, margin_end=6, no_show_all=True)
profile.bind("socket-connection", path_label, "visible", Gio.SettingsBindFlags.INVERT_BOOLEAN|Gio.SettingsBindFlags.GET)
music_directory_label=Gtk.Label(label=_("Music lib:"), xalign=1, margin_end=6, no_show_all=True)
settings.bind("socket-connection", music_directory_label, "visible", Gio.SettingsBindFlags.INVERT_BOOLEAN|Gio.SettingsBindFlags.GET)
regex_label=Gtk.Label(label=_("Cover regex:"), xalign=1, margin_end=6)
# connect button
connect_button=Gtk.Button(label=_("Connect"), margin_start=18, margin_end=18, margin_top=18, halign=Gtk.Align.CENTER)
connect_button.get_style_context().add_class("suggested-action")
connect_button.connect("clicked", lambda *args: client.reconnect())
# packing
self.attach(socket_button, 0, 0, 3, 1)
self.attach(socket_label, 0, 1, 1, 1)
self.attach_next_to(host_label, socket_label, Gtk.PositionType.BOTTOM, 1, 1)
self.attach_next_to(password_label, host_label, Gtk.PositionType.BOTTOM, 1, 1)
self.attach_next_to(path_label, password_label, Gtk.PositionType.BOTTOM, 1, 1)
self.attach_next_to(regex_label, path_label, Gtk.PositionType.BOTTOM, 1, 1)
self.attach_next_to(music_directory_label, password_label, Gtk.PositionType.BOTTOM, 1, 1)
self.attach_next_to(regex_label, music_directory_label, Gtk.PositionType.BOTTOM, 1, 1)
self.attach_next_to(socket_entry, socket_label, Gtk.PositionType.RIGHT, 2, 1)
self.attach_next_to(host_entry, host_label, Gtk.PositionType.RIGHT, 1, 1)
self.attach_next_to(port_entry, host_entry, Gtk.PositionType.RIGHT, 1, 1)
self.attach_next_to(password_entry, password_label, Gtk.PositionType.RIGHT, 2, 1)
self.attach_next_to(path_entry, path_label, Gtk.PositionType.RIGHT, 2, 1)
self.attach_next_to(music_directory_entry, music_directory_label, Gtk.PositionType.RIGHT, 2, 1)
self.attach_next_to(regex_entry, regex_label, Gtk.PositionType.RIGHT, 2, 1)
class ProfileSettings(Gtk.Box):
def __init__(self, parent, client, settings):
super().__init__()
self._client=client
self._settings=settings
# stack
self._stack=Gtk.Stack()
self._stack.add_titled(ProfileEntryMask(settings.get_profile(0), parent), "0", _("Profile 1"))
self._stack.add_titled(ProfileEntryMask(settings.get_profile(1), parent), "1", _("Profile 2"))
self._stack.add_titled(ProfileEntryMask(settings.get_profile(2), parent), "2", _("Profile 3"))
self._stack.connect("show", lambda *args: self._stack.set_visible_child_name(str(self._settings.get_int("active-profile"))))
# connect button
connect_button=Gtk.Button(label=_("Connect"), margin_start=18, margin_end=18, margin_bottom=18, halign=Gtk.Align.CENTER)
connect_button.get_style_context().add_class("suggested-action")
connect_button.connect("clicked", self._on_connect_button_clicked)
# packing
vbox=Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
vbox.pack_start(self._stack, False, False, 0)
vbox.pack_start(connect_button, False, False, 0)
switcher=Gtk.StackSidebar(stack=self._stack)
self.pack_start(switcher, False, False, 0)
self.pack_start(vbox, True, True, 0)
def _on_connect_button_clicked(self, *args):
selected=int(self._stack.get_visible_child_name())
if selected == self._settings.get_int("active-profile"):
self._client.reconnect()
else:
self._settings.set_int("active-profile", selected)
self.attach(connect_button, 0, 6, 3, 1)
class SettingsDialog(Gtk.Dialog):
def __init__(self, parent, client, settings, tab="view"):
@ -1205,7 +1178,7 @@ class SettingsDialog(Gtk.Dialog):
# widgets
view=ViewSettings(settings)
behavior=BehaviorSettings(settings)
profiles=ProfileSettings(parent, client, settings)
connection=ConnectionSettings(parent, client, settings)
# packing
vbox=self.get_content_area()
@ -1213,7 +1186,7 @@ class SettingsDialog(Gtk.Dialog):
stack=Gtk.Stack(transition_type=Gtk.StackTransitionType.SLIDE_LEFT_RIGHT)
stack.add_titled(view, "view", _("View"))
stack.add_titled(behavior, "behavior", _("Behavior"))
stack.add_titled(profiles, "profiles", _("Profiles"))
stack.add_titled(connection, "connection", _("Connection"))
stack_switcher=Gtk.StackSwitcher(stack=stack)
vbox.set_property("border-width", 0)
vbox.pack_start(stack, True, True, 0)
@ -1223,7 +1196,7 @@ class SettingsDialog(Gtk.Dialog):
tabs=Gtk.Notebook()
tabs.append_page(view, Gtk.Label(label=_("View")))
tabs.append_page(behavior, Gtk.Label(label=_("Behavior")))
tabs.append_page(profiles, Gtk.Label(label=_("Profiles")))
tabs.append_page(connection, Gtk.Label(label=_("Connection")))
vbox.set_property("spacing", 6)
vbox.set_property("border-width", 6)
vbox.pack_start(tabs, True, True, 0)
@ -1231,7 +1204,7 @@ class SettingsDialog(Gtk.Dialog):
if use_csd:
stack.set_visible_child_name(tab)
else:
tabs.set_current_page({"view": 0, "behavior": 1, "profiles": 2}[tab])
tabs.set_current_page({"view": 0, "behavior": 1, "connection": 2}[tab])
#################
# other dialogs #
@ -3164,7 +3137,7 @@ class ConnectionNotify(Gtk.Revealer):
# widgets
self._label=Gtk.Label(wrap=True)
connect_button=Gtk.Button(label=_("Connect"))
settings_button=Gtk.Button(label=_("Preferences"), action_name="win.profile-settings")
settings_button=Gtk.Button(label=_("Preferences"), action_name="win.connection-settings")
# connect
connect_button.connect("clicked", self._on_connect_button_clicked)
@ -3180,14 +3153,11 @@ class ConnectionNotify(Gtk.Revealer):
self.add(box)
def _on_connection_error(self, *args):
profile=self._settings.get_active_profile()
if profile.get_boolean("socket-connection"):
socket=profile.get_string("socket")
if not socket:
socket=FALLBACK_SOCKET
text=_("Connection to “{socket}” failed").format(socket=socket)
if self._settings.get_boolean("socket-connection"):
text=_("Connection to “{socket}” failed").format(socket=self._settings.get_socket())
else:
text=_("Connection to “{host}:{port}” failed").format(host=profile.get_string("host"), port=profile.get_int("port"))
text=_("Connection to “{host}:{port}” failed").format(
host=self._settings.get_string("host"), port=self._settings.get_int("port"))
self._label.set_text(text)
self.set_reveal_child(True)
@ -3208,24 +3178,19 @@ class MainWindow(Gtk.ApplicationWindow):
# actions
simple_actions_data=(
"settings","profile-settings","stats","help","menu",
"settings","connection-settings","stats","help","menu",
"toggle-lyrics","back-to-current-album","toggle-search","show-info"
)
for name in simple_actions_data:
action=Gio.SimpleAction.new(name, None)
action.connect("activate", getattr(self, ("_on_"+name.replace("-","_"))))
self.add_action(action)
for i, name in enumerate(("profile-1","profile-2","profile-3")):
action=Gio.SimpleAction.new(name, None)
action.connect("activate", self._on_profile, i)
self.add_action(action)
for name in ("append","play"):
action=Gio.SimpleAction.new(name, None)
action.connect("activate", self._on_add_to_playlist, name)
self.add_action(action)
self.add_action(self._settings.create_action("mini-player"))
self.add_action(self._settings.create_action("genre-filter"))
self.add_action(self._settings.create_action("active-profile"))
# shortcuts
builder=Gtk.Builder()
@ -3275,15 +3240,9 @@ class MainWindow(Gtk.ApplicationWindow):
mpd_subsection=Gio.Menu()
mpd_subsection.append(_("Update Database"), "mpd.update")
mpd_subsection.append(_("Server Stats"), "win.stats")
profiles_subsection=Gio.Menu()
for num, profile in enumerate((_("Profile 1"), _("Profile 2"), _("Profile 3"))):
item=Gio.MenuItem.new(profile, None)
item.set_action_and_target_value("win.active-profile", GLib.Variant("i", num))
profiles_subsection.append_item(item)
menu=Gio.Menu()
menu.append(_("Mini Player"), "win.mini-player")
menu.append(_("Genre Filter"), "win.genre-filter")
menu.append_section(None, profiles_subsection)
menu.append_section(None, mpd_subsection)
menu.append_section(None, subsection)
@ -3402,8 +3361,8 @@ class MainWindow(Gtk.ApplicationWindow):
settings.run()
settings.destroy()
def _on_profile_settings(self, action, param):
settings=SettingsDialog(self, self._client, self._settings, "profiles")
def _on_connection_settings(self, action, param):
settings=SettingsDialog(self, self._client, self._settings, "connection")
settings.run()
settings.destroy()
@ -3417,9 +3376,6 @@ class MainWindow(Gtk.ApplicationWindow):
def _on_menu(self, action, param):
self._menu_button.emit("clicked")
def _on_profile(self, action, param, profile):
self._settings.set_int("active-profile", profile)
def _on_show_info(self, action, param):
widget=self.get_focus()
if hasattr(widget, "show_info") and callable(widget.show_info):
@ -3543,7 +3499,6 @@ class mpdevil(Gtk.Application):
action_accels=(
("app.quit", ["<Control>q"]),("win.mini-player", ["<Control>m"]),("win.help", ["F1"]),("win.menu", ["F10"]),
("win.show-help-overlay", ["<Control>question"]),("win.toggle-lyrics", ["<Control>l"]),
("win.profile-1", ["<Control>1"]),("win.profile-2", ["<Control>2"]),("win.profile-3", ["<Control>3"]),
("win.show-info", ["<Control>i","Menu"]),("win.append", ["<Control>plus"]),("win.play", ["<Control>p"]),
("win.genre-filter", ["<Control>g"]),("win.back-to-current-album", ["Escape"]),("win.toggle-search", ["<Control>f"]),
("mpd.update", ["F5"]),("mpd.clear", ["<Shift>Delete"]),("mpd.toggle-play", ["space"]),("mpd.stop", ["<Shift>space"]),