feat(library): add game links, auditor queue, audit log and filter
Build, Test & Push Frontend / quality-check (push) Successful in 25s
Build, Test & Push Frontend / docker (push) Successful in 23s

LinkGameDialog (user request or auditor link), EditionsCard on the
details page, LinkQueuePage and AuditLogPage for auditors with paging,
hideDuplicates filter and editions badge in the library, audit menu
entries, de/en texts.
This commit is contained in:
lobo committed 2026-10-02 09:10:56 +02:00
1 parent 80259cb0e9
commit f71e8f7aff
21 files changed
+992 -11

No files matched your search

+54 -2
View File
@@ -229,7 +229,9 @@
"FILTER_SHORT": "Kurz (bis 10 h)",
"FILTER_HIDDEN": "Ausgeblendet",
"NO_HIDDEN": "Keine ausgeblendeten Spiele. Blende ein Spiel auf seiner Detailseite aus, z. B. einen Playtest oder ein Tool.",
"ACHIEVEMENTS": "{{unlocked}} von {{total}} Erfolgen"
"ACHIEVEMENTS": "{{unlocked}} von {{total}} Erfolgen",
"FILTER_HIDE_DUPLICATES": "Duplikate ausblenden",
"EDITIONS": "{{count}} Ausgaben in deiner Bibliothek"
},
"GAME_DETAIL": {
"BACK": "Zurück",
@@ -319,7 +321,9 @@
"ADMIN_NEWS": "Neuigkeiten verwalten",
"ADMIN_BROADCASTS": "Rundmail",
"PENDING_REQUESTS_one": "{{count}} Registrierung wartet",
"PENDING_REQUESTS_other": "{{count}} Registrierungen warten"
"PENDING_REQUESTS_other": "{{count}} Registrierungen warten",
"LINK_QUEUE": "Verknüpfungen",
"AUDIT_LOG": "Protokoll"
},
"BACKLOG": {
"TITLE": "Mein Backlog",
@@ -622,6 +626,54 @@
"OTHER": "Die Spiele konnten nicht zusammengeführt werden."
}
},
"LINKS": {
"ALSO_IN_LIBRARY": "Auch in deiner Bibliothek:",
"SAME_AS": "Dasselbe Spiel wie...",
"LINK_WITH": "Verknüpfen mit...",
"DIALOG_HINT": "Wähle das Spiel deiner Bibliothek, das dasselbe Spiel wie \"{{name}}\" ist.",
"SEARCH_PLACEHOLDER": "Deine Bibliothek durchsuchen ...",
"NO_HITS": "Kein Spiel in deiner Bibliothek gefunden.",
"REQUEST_CONFIRM": "Einen Auditor bitten, \"{{name}}\" und \"{{other}}\" für alle als ein Spiel zu verknüpfen?",
"LINK_CONFIRM": "\"{{name}}\" und \"{{other}}\" für alle Nutzer als ein Spiel verknüpfen?",
"REQUEST": "Anfrage senden",
"LINK": "Verknüpfen",
"UNLINK": "Verknüpfung lösen",
"DISMISS": "Nicht dasselbe",
"REQUESTED": "Anfrage gesendet",
"LINKED": "Spiele verknüpft",
"UNLINKED": "Verknüpfung gelöst",
"DISMISSED": "Paar verworfen",
"QUEUE_TITLE": "Verknüpfungen prüfen",
"QUEUE_EMPTY": "Nichts zu prüfen.",
"PAGE_OF": "Seite {{current}} von {{total}}",
"FROM_IGDB": "IGDB",
"REQUESTED_BY": "von {{count}} Spielern angefragt",
"NO_ACCESS": "Nur Auditoren können diese Seite öffnen.",
"ERROR": "Die Aktion ist fehlgeschlagen.",
"ERROR_CODES": {
"SAME_GAME": "Ein Spiel kann nicht mit sich selbst verknüpft werden.",
"ALREADY_LINKED": "Diese Spiele sind schon verknüpft.",
"PAIR_DISMISSED": "Ein Auditor hat bereits entschieden, dass das verschiedene Spiele sind.",
"TOO_MANY_REQUESTS": "Du hast 20 offene Anfragen. Warte, bis ein Auditor sie entschieden hat.",
"GAME_NOT_FOUND": "Dieses Spiel ist nicht in deiner Bibliothek."
}
},
"AUDIT": {
"TITLE": "Protokoll",
"EMPTY": "Keine Einträge.",
"NO_ACCESS": "Nur Auditoren können diese Seite öffnen.",
"LOAD_ERROR": "Das Protokoll konnte nicht geladen werden.",
"USER_ID": "Nutzer {{id}}",
"PAGE_OF": "Seite {{current}} von {{total}}",
"ACTION": {
"LABEL": "Aktion",
"ALL": "Alle Aktionen",
"GAME_MERGE": "Zusammengeführt",
"GAME_LINK": "Verknüpft",
"GAME_UNLINK": "Verknüpfung gelöst",
"GAME_LINK_DISMISS": "Verworfen"
}
},
"HINT": {
"CLOSE": "Schließen",
"DO_NOT_SHOW_AGAIN": "Nicht mehr anzeigen",