mirror of
https://github.com/Second-Hand-Friends/kleinanzeigen-bot.git
synced 2026-03-12 02:31:45 +01:00
515 lines
38 KiB
YAML
515 lines
38 KiB
YAML
#################################################
|
||
getopt.py:
|
||
#################################################
|
||
do_longs:
|
||
"option --%s requires argument": "Option --%s benötigt ein Argument"
|
||
"option --%s must not have an argument": "Option --%s darf kein Argument haben"
|
||
long_has_args:
|
||
"option --%s not recognized": "Option --%s unbekannt"
|
||
"option --%s not a unique prefix": "Option --%s ist kein eindeutiger Prefix"
|
||
do_shorts:
|
||
"option -%s requires argument": "Option -%s benötigt ein Argument"
|
||
short_has_arg:
|
||
"option -%s not recognized": "Option -%s unbekannt"
|
||
|
||
#################################################
|
||
kleinanzeigen_bot/__main__.py:
|
||
#################################################
|
||
module:
|
||
"[INFO] Captcha detected. Sleeping %s before restart...": "[INFO] Captcha erkannt. Warte %s h bis zum Neustart..."
|
||
|
||
#################################################
|
||
kleinanzeigen_bot/__init__.py:
|
||
#################################################
|
||
module:
|
||
"Direct execution not supported. Use 'pdm run app'": "Direkte Ausführung nicht unterstützt. Bitte 'pdm run app' verwenden"
|
||
create_default_config:
|
||
"Config file %s already exists. Aborting creation.": "Konfigurationsdatei %s existiert bereits. Erstellung abgebrochen."
|
||
|
||
configure_file_logging:
|
||
"Logging to [%s]...": "Protokollierung in [%s]..."
|
||
"App version: %s": "App Version: %s"
|
||
"Python version: %s": "Python Version: %s"
|
||
|
||
__check_ad_changed:
|
||
"Hash comparison for [%s]:": "Hash-Vergleich für [%s]:"
|
||
" Stored hash: %s": " Gespeicherter Hash: %s"
|
||
" Current hash: %s": " Aktueller Hash: %s"
|
||
"Changes detected in ad [%s], will republish": "Änderungen in Anzeige [%s] erkannt, wird erneut veröffentlicht"
|
||
|
||
load_ads:
|
||
"Searching for ad config files...": "Suche nach Anzeigendateien..."
|
||
" -> found %s": "-> %s gefunden"
|
||
"ad config file": "Anzeigendatei"
|
||
"Start fetch task for the ad(s) with id(s):": "Starte Abrufaufgabe für die Anzeige(n) mit ID(s):"
|
||
" -> SKIPPED: inactive ad [%s]": " -> ÜBERSPRUNGEN: inaktive Anzeige [%s]"
|
||
" -> SKIPPED: ad [%s] is not in list of given ids.": " -> ÜBERSPRUNGEN: Anzeige [%s] ist nicht in der Liste der angegebenen IDs."
|
||
" -> SKIPPED: ad [%s] is not new. already has an id assigned.": " -> ÜBERSPRUNGEN: Anzeige [%s] ist nicht neu. Eine ID wurde bereits zugewiesen."
|
||
"Category [%s] unknown. Using category [%s] with ID [%s] instead.": "Kategorie [%s] unbekannt. Verwende stattdessen Kategorie [%s] mit ID [%s]."
|
||
"Loaded %s": "%s geladen"
|
||
"ad": "Anzeige"
|
||
|
||
load_config:
|
||
"config": "Konfiguration"
|
||
" -> found %s": "-> %s gefunden"
|
||
"category": "Kategorie"
|
||
|
||
check_and_wait_for_captcha:
|
||
"# Captcha present! Please solve the captcha.": "# Captcha vorhanden! Bitte lösen Sie das Captcha."
|
||
"Captcha recognized - auto-restart enabled, abort run...": "Captcha erkannt - Auto-Neustart aktiviert, Durchlauf wird beendet..."
|
||
"Press a key to continue...": "Eine Taste drücken, um fortzufahren..."
|
||
|
||
login:
|
||
"Checking if already logged in...": "Überprüfe, ob bereits eingeloggt..."
|
||
"Already logged in as [%s]. Skipping login.": "Bereits eingeloggt als [%s]. Überspringe Anmeldung."
|
||
"Opening login page...": "Öffne Anmeldeseite..."
|
||
|
||
handle_after_login_logic:
|
||
"# Device verification message detected. Please follow the instruction displayed in the Browser.": "# Nachricht zur Geräteverifizierung erkannt. Bitte den Anweisungen im Browser folgen."
|
||
"Press ENTER when done...": "EINGABETASTE drücken, wenn erledigt..."
|
||
"Handling GDPR disclaimer...": "Verarbeite DSGVO-Hinweis..."
|
||
|
||
delete_ads:
|
||
"Processing %s/%s: '%s' from [%s]...": "Verarbeite %s/%s: '%s' von [%s]..."
|
||
"DONE: Deleted %s": "FERTIG: %s gelöscht"
|
||
"ad": "Anzeige"
|
||
|
||
delete_ad:
|
||
"Deleting ad '%s' if already present...": "Lösche Anzeige '%s', falls bereits vorhanden..."
|
||
"Expected CSRF Token not found in HTML content!": "Erwartetes CSRF-Token wurde im HTML-Inhalt nicht gefunden!"
|
||
" -> deleting %s '%s'...": " -> lösche %s '%s'..."
|
||
|
||
publish_ads:
|
||
"Processing %s/%s: '%s' from [%s]...": "Verarbeite %s/%s: '%s' von [%s]..."
|
||
"Skipping because ad is reserved": "Überspringen, da Anzeige reserviert ist"
|
||
"DONE: (Re-)published %s": "FERTIG: %s (erneut) veröffentlicht"
|
||
"ad": "Anzeige"
|
||
|
||
publish_ad:
|
||
"Publishing ad '%s'...": "Veröffentliche Anzeige '%s'..."
|
||
"Updating ad '%s'...": "Aktualisiere Anzeige '%s'..."
|
||
"Failed to set shipping attribute for type '%s'!": "Fehler beim setzen des Versandattributs für den Typ '%s'!"
|
||
"Shipping step skipped - reason: NOT_APPLICABLE": "Versandschritt übersprungen: Versand nicht anwendbar (Status = NOT_APPLICABLE)"
|
||
"# Payment form detected! Please proceed with payment.": "# Bestellformular gefunden! Bitte mit der Bezahlung fortfahren."
|
||
" -> SUCCESS: ad published with ID %s": " -> ERFOLG: Anzeige mit ID %s veröffentlicht"
|
||
" -> SUCCESS: ad updated with ID %s": " -> ERFOLG: Anzeige mit ID %s aktualisiert"
|
||
" -> effective ad meta:": " -> effektive Anzeigen-Metadaten:"
|
||
"Could not set city from location": "Stadt konnte nicht aus dem Standort gesetzt werden"
|
||
"Press a key to continue...": "Eine Taste drücken, um fortzufahren..."
|
||
|
||
update_ads:
|
||
"Processing %s/%s: '%s' from [%s]...": "Verarbeite %s/%s: '%s' von [%s]..."
|
||
"Skipping because ad is reserved": "Überspringen, da Anzeige reserviert ist"
|
||
"DONE: updated %s": "FERTIG: %s aktualisiert"
|
||
"ad": "Anzeige"
|
||
|
||
__set_condition:
|
||
"Unable to close condition dialog!": "Kann den Dialog für Artikelzustand nicht schließen!"
|
||
"Unable to open condition dialog and select condition [%s]": "Zustandsdialog konnte nicht geöffnet und Zustand [%s] nicht ausgewählt werden"
|
||
"Unable to select condition [%s]": "Zustand [%s] konnte nicht ausgewählt werden"
|
||
|
||
__upload_images:
|
||
" -> found %s": "-> %s gefunden"
|
||
"image": "Bild"
|
||
" -> uploading image [%s]": " -> Lade Bild [%s] hoch"
|
||
|
||
__check_ad_republication:
|
||
" -> SKIPPED: ad [%s] was last published %d days ago. republication is only required every %s days": " -> ÜBERSPRUNGEN: Anzeige [%s] wurde zuletzt vor %d Tagen veröffentlicht. Erneute Veröffentlichung ist erst nach %s Tagen erforderlich"
|
||
|
||
__set_special_attributes:
|
||
"Found %i special attributes": "%i spezielle Attribute gefunden"
|
||
"Setting special attribute [%s] to [%s]...": "Setze spezielles Attribut [%s] auf [%s]..."
|
||
"Successfully set attribute field [%s] to [%s]...": "Attributfeld [%s] erfolgreich auf [%s] gesetzt..."
|
||
"Attribute field '%s' could not be found.": "Attributfeld '%s' konnte nicht gefunden werden."
|
||
"Attribute field '%s' seems to be a select...": "Attributfeld '%s' scheint ein Auswahlfeld zu sein..."
|
||
"Attribute field '%s' is not of kind radio button.": "Attributfeld '%s' ist kein Radiobutton."
|
||
"Attribute field '%s' seems to be a checkbox...": "Attributfeld '%s' scheint eine Checkbox zu sein..."
|
||
"Attribute field '%s' seems to be a text input...": "Attributfeld '%s' scheint ein Texteingabefeld zu sein..."
|
||
|
||
download_ads:
|
||
"Scanning your ad overview...": "Scanne Anzeigenübersicht..."
|
||
"%s found.": "%s gefunden."
|
||
"ad": "Anzeige"
|
||
"Starting download of all ads...": "Starte den Download aller Anzeigen..."
|
||
"%d of %d ads were downloaded from your profile.": "%d von %d Anzeigen wurden aus Ihrem Profil heruntergeladen."
|
||
"Starting download of not yet downloaded ads...": "Starte den Download noch nicht heruntergeladener Anzeigen..."
|
||
"The ad with id %d has already been saved.": "Die Anzeige mit der ID %d wurde bereits gespeichert."
|
||
"%s were downloaded from your profile.": "%s wurden aus Ihrem Profil heruntergeladen."
|
||
"new ad": "neue Anzeige"
|
||
"Starting download of ad(s) with the id(s):": "Starte Download der Anzeige(n) mit den ID(s):"
|
||
"Downloaded ad with id %d": "Anzeige mit der ID %d heruntergeladen"
|
||
"The page with the id %d does not exist!": "Die Seite mit der ID %d existiert nicht!"
|
||
|
||
parse_args:
|
||
"Use --help to display available options.": "Mit --help können die verfügbaren Optionen angezeigt werden."
|
||
"More than one command given: %s": "Mehr als ein Befehl angegeben: %s"
|
||
|
||
run:
|
||
"DONE: No configuration errors found.": "FERTIG: Keine Konfigurationsfehler gefunden."
|
||
"DONE: No active ads found.": "FERTIG: Keine aktiven Anzeigen gefunden."
|
||
"You provided no ads selector. Defaulting to \"due\".": "Es wurden keine Anzeigen-Selektor angegeben. Es wird \"due\" verwendet."
|
||
"DONE: No new/outdated ads found.": "FERTIG: Keine neuen/veralteten Anzeigen gefunden."
|
||
"DONE: No ads to delete found.": "FERTIG: Keine zu löschenden Anzeigen gefunden."
|
||
"DONE: No changed ads found.": "FERTIG: Keine geänderten Anzeigen gefunden."
|
||
"You provided no ads selector. Defaulting to \"new\".": "Es wurden keine Anzeigen-Selektor angegeben. Es wird \"new\" verwendet."
|
||
"You provided no ads selector. Defaulting to \"changed\".": "Es wurden keine Anzeigen-Selektor angegeben. Es wird \"changed\" verwendet."
|
||
"Unknown command: %s": "Unbekannter Befehl: %s"
|
||
|
||
fill_login_data_and_send:
|
||
"Logging in as [%s]...": "Anmeldung als [%s]..."
|
||
|
||
__set_shipping:
|
||
"Unable to close shipping dialog!": "Versanddialog konnte nicht geschlossen werden!"
|
||
|
||
__set_shipping_options:
|
||
"Unable to close shipping dialog!": "Versanddialog konnte nicht geschlossen werden!"
|
||
|
||
update_content_hashes:
|
||
"DONE: Updated [content_hash] in %s": "FERTIG: [content_hash] in %s aktualisiert."
|
||
"Processing %s/%s: '%s' from [%s]...": "Verarbeite %s/%s: '%s' von [%s]..."
|
||
"ad": "Anzeige"
|
||
|
||
#################################################
|
||
kleinanzeigen_bot/extract.py:
|
||
#################################################
|
||
download_ad:
|
||
"Created ads directory at ./%s.": "Verzeichnis für Anzeigen erstellt unter ./%s."
|
||
|
||
_download_images_from_ad_page:
|
||
"Found %s.": "%s gefunden."
|
||
"Downloaded %s.": "%s heruntergeladen."
|
||
"No image area found. Continuing without downloading images.": "Keine Bildbereiche gefunden. Fahre ohne Bilder-Download fort."
|
||
|
||
extract_ad_id_from_ad_url:
|
||
"Failed to extract ad ID from URL '%s': %s": "Fehler beim Extrahieren der Anzeigen-ID aus der URL '%s': %s"
|
||
|
||
extract_own_ads_urls:
|
||
"Ad list container #my-manageitems-adlist not found. Maybe no ads present?": "Anzeigenlistencontainer #my-manageitems-adlist nicht gefunden. Vielleicht sind keine Anzeigen vorhanden?"
|
||
"Multiple ad pages detected.": "Mehrere Anzeigenseiten erkannt."
|
||
"Next button found but is disabled. Assuming single effective page.": "Weiter-Button gefunden, aber deaktiviert. Es wird von einer einzelnen effektiven Seite ausgegangen."
|
||
"No \"Naechste\" button found within pagination. Assuming single page.": "Kein \"Nächste\"-Button in der Paginierung gefunden. Es wird von einer einzelnen Seite ausgegangen."
|
||
"No pagination controls found. Assuming single page.": "Keine Paginierungssteuerung gefunden. Es wird von einer einzelnen Seite ausgegangen."
|
||
"Assuming single page due to error during pagination check.": "Es wird von einer einzelnen Seite ausgegangen wegen eines Fehlers bei der Paginierungsprüfung."
|
||
"Navigating to next page...": "Navigiere zur nächsten Seite..."
|
||
"Last ad overview page explored (no enabled \"Naechste\" button found).": "Letzte Anzeigenübersichtsseite erkundet (kein aktivierter \"Nächste\"-Button gefunden)."
|
||
"No pagination controls found after scrolling/waiting. Assuming last page.": "Keine Paginierungssteuerung nach dem Scrollen/Warten gefunden. Es wird von der letzten Seite ausgegangen."
|
||
"No ad URLs were extracted.": "Es wurden keine Anzeigen-URLs extrahiert."
|
||
"Could not find ad list container or items on page %s.": "Anzeigenlistencontainer oder Elemente auf Seite %s nicht gefunden."
|
||
"Error during pagination detection: %s": "Fehler bei der Paginierungserkennung: %s"
|
||
"Error during pagination navigation: %s": "Fehler bei der Paginierungsnavigation: %s"
|
||
"Error extracting refs on page %s: %s": "Fehler beim Extrahieren der Referenzen auf Seite %s: %s"
|
||
"Extracting ads from page %s...": "Extrahiere Anzeigen von Seite %s..."
|
||
"Found %s ad items on page %s.": "%s Anzeigen-Elemente auf Seite %s gefunden."
|
||
"Successfully extracted %s refs from page %s.": "%s Referenzen von Seite %s erfolgreich extrahiert."
|
||
|
||
navigate_to_ad_page:
|
||
"There is no ad under the given ID.": "Es gibt keine Anzeige unter der angegebenen ID."
|
||
"A popup appeared!": "Ein Popup ist erschienen!"
|
||
|
||
_extract_ad_page_info_with_directory_handling:
|
||
"Extracting title from ad %s: \"%s\"": "Extrahiere Titel aus Anzeige %s: \"%s\""
|
||
"Deleting current folder of ad %s...": "Lösche aktuellen Ordner der Anzeige %s..."
|
||
"New directory for ad created at %s.": "Neues Verzeichnis für Anzeige erstellt unter %s."
|
||
"Renaming folder from %s to %s for ad %s...": "Benenne Ordner von %s zu %s für Anzeige %s um..."
|
||
"Using existing folder for ad %s at %s.": "Verwende bestehenden Ordner für Anzeige %s unter %s."
|
||
|
||
_extract_contact_from_ad_page:
|
||
"No street given in the contact.": "Keine Straße in den Kontaktdaten angegeben."
|
||
|
||
#################################################
|
||
kleinanzeigen_bot/utils/i18n.py:
|
||
#################################################
|
||
_detect_locale:
|
||
"Error detecting language on Windows": "Fehler bei der Spracherkennung unter Windows"
|
||
|
||
#################################################
|
||
kleinanzeigen_bot/utils/error_handlers.py:
|
||
#################################################
|
||
on_sigint:
|
||
"Aborted on user request.": "Auf Benutzeranfrage abgebrochen."
|
||
on_exception:
|
||
"%s: %s": "%s: %s"
|
||
"Unknown exception occurred (missing exception info): ex_type=%s, ex=%s": "Unbekannter Fehler aufgetreten (fehlende Fehlerinformation): ex_type=%s, ex_value=%s"
|
||
|
||
#################################################
|
||
kleinanzeigen_bot/utils/loggers.py:
|
||
#################################################
|
||
format:
|
||
"CRITICAL": "KRITISCH"
|
||
"ERROR": "FEHLER"
|
||
"WARNING": "WARNUNG"
|
||
|
||
#################################################
|
||
kleinanzeigen_bot/utils/dicts.py:
|
||
#################################################
|
||
load_dict_if_exists:
|
||
"Loading %s[%s]...": "Lade %s[%s]..."
|
||
" from ": " von "
|
||
"Unsupported file type. The filename \"%s\" must end with *.json, *.yaml, or *.yml": "Nicht unterstützter Dateityp. Der Dateiname \"%s\" muss mit *.json, *.yaml oder *.yml enden"
|
||
save_dict:
|
||
"Saving [%s]...": "Speichere [%s]..."
|
||
load_dict_from_module:
|
||
"Loading %s[%s.%s]...": "Lade %s[%s.%s]..."
|
||
|
||
#################################################
|
||
kleinanzeigen_bot/utils/pydantics.py:
|
||
#################################################
|
||
__get_message_template:
|
||
"Object has no attribute '{attribute}'": "Objekt hat kein Attribut '{attribute}'"
|
||
"Invalid JSON: {error}": "Ungültiges JSON: {error}"
|
||
"JSON input should be string, bytes or bytearray": "JSON-Eingabe sollte eine Zeichenkette, Bytes oder Bytearray sein"
|
||
"Cannot check `{method_name}` when validating from json, use a JsonOrPython validator instead": "Kann `{method_name}` beim Validieren von JSON nicht prüfen, verwende stattdessen einen JsonOrPython-Validator"
|
||
"Recursion error - cyclic reference detected": "Rekursionsfehler – zirkuläre Referenz erkannt"
|
||
"Field required": "Feld erforderlich"
|
||
"Field is frozen": "Feld ist gesperrt"
|
||
"Instance is frozen": "Instanz ist gesperrt"
|
||
"Extra inputs are not permitted": "Zusätzliche Eingaben sind nicht erlaubt"
|
||
"Keys should be strings": "Schlüssel sollten Zeichenketten sein"
|
||
"Error extracting attribute: {error}": "Fehler beim Extrahieren des Attributs: {error}"
|
||
"Input should be a valid dictionary or instance of {class_name}": "Eingabe sollte ein gültiges Wörterbuch oder eine Instanz von {class_name} sein"
|
||
"Input should be a valid dictionary or object to extract fields from": "Eingabe sollte ein gültiges Wörterbuch oder Objekt sein, um Felder daraus zu extrahieren"
|
||
"Input should be a dictionary or an instance of {class_name}": "Eingabe sollte ein Wörterbuch oder eine Instanz von {class_name} sein"
|
||
"Input should be an instance of {class_name}": "Eingabe sollte eine Instanz von {class_name} sein"
|
||
"Input should be None": "Eingabe sollte None sein"
|
||
"Input should be greater than {gt}": "Eingabe sollte größer als {gt} sein"
|
||
"Input should be greater than or equal to {ge}": "Eingabe sollte größer oder gleich {ge} sein"
|
||
"Input should be less than {lt}": "Eingabe sollte kleiner als {lt} sein"
|
||
"Input should be less than or equal to {le}": "Eingabe sollte kleiner oder gleich {le} sein"
|
||
"Input should be a multiple of {multiple_of}": "Eingabe sollte ein Vielfaches von {multiple_of} sein"
|
||
"Input should be a finite number": "Eingabe sollte eine endliche Zahl sein"
|
||
"{field_type} should have at least {min_length} item{expected_plural} after validation, not {actual_length}": "{field_type} sollte nach der Validierung mindestens {min_length} Element{expected_plural} haben, nicht {actual_length}"
|
||
"{field_type} should have at most {max_length} item{expected_plural} after validation, not {actual_length}": "{field_type} sollte nach der Validierung höchstens {max_length} Element{expected_plural} haben, nicht {actual_length}"
|
||
"Input should be iterable": "Eingabe sollte iterierbar sein"
|
||
"Error iterating over object, error: {error}": "Fehler beim Iterieren des Objekts: {error}"
|
||
"Input should be a valid string": "Eingabe sollte eine gültige Zeichenkette sein"
|
||
"Input should be a string, not an instance of a subclass of str": "Eingabe sollte ein String sein, keine Instanz einer Unterklasse von str"
|
||
"Input should be a valid string, unable to parse raw data as a unicode string": "Eingabe sollte eine gültige Zeichenkette sein, Rohdaten können nicht als Unicode-String geparst werden"
|
||
"String should have at least {min_length} character{expected_plural}": "String sollte mindestens {min_length} Zeichen{expected_plural} haben"
|
||
"String should have at most {max_length} character{expected_plural}": "String sollte höchstens {max_length} Zeichen{expected_plural} haben"
|
||
"String should match pattern '{pattern}'": "String sollte dem Muster '{pattern}' entsprechen"
|
||
"Input should be {expected}": "Eingabe sollte {expected} sein"
|
||
"Input should be a valid dictionary": "Eingabe sollte ein gültiges Wörterbuch sein"
|
||
"Input should be a valid mapping, error: {error}": "Eingabe sollte eine gültige Zuordnung sein, Fehler: {error}"
|
||
"Input should be a valid list": "Eingabe sollte eine gültige Liste sein"
|
||
"Input should be a valid tuple": "Eingabe sollte ein gültiges Tupel sein"
|
||
"Input should be a valid set": "Eingabe sollte eine gültige Menge sein"
|
||
"Set items should be hashable": "Elemente einer Menge sollten hashbar sein"
|
||
"Input should be a valid boolean": "Eingabe sollte ein gültiger Boolescher Wert sein"
|
||
"Input should be a valid boolean, unable to interpret input": "Eingabe sollte ein gültiger Boolescher Wert sein, Eingabe kann nicht interpretiert werden"
|
||
"Input should be a valid integer": "Eingabe sollte eine gültige Ganzzahl sein"
|
||
"Input should be a valid integer, unable to parse string as an integer": "Eingabe sollte eine gültige Ganzzahl sein, Zeichenkette konnte nicht als Ganzzahl geparst werden"
|
||
"Input should be a valid integer, got a number with a fractional part": "Eingabe sollte eine gültige Ganzzahl sein, Zahl hat einen Dezimalteil"
|
||
"Unable to parse input string as an integer, exceeded maximum size": "Zeichenkette konnte nicht als Ganzzahl geparst werden, maximale Größe überschritten"
|
||
"Input should be a valid number": "Eingabe sollte eine gültige Zahl sein"
|
||
"Input should be a valid number, unable to parse string as a number": "Eingabe sollte eine gültige Zahl sein, Zeichenkette kann nicht als Zahl geparst werden"
|
||
"Input should be a valid bytes": "Eingabe sollte gültige Bytes sein"
|
||
"Data should have at least {min_length} byte{expected_plural}": "Daten sollten mindestens {min_length} Byte{expected_plural} enthalten"
|
||
"Data should have at most {max_length} byte{expected_plural}": "Daten sollten höchstens {max_length} Byte{expected_plural} enthalten"
|
||
"Data should be valid {encoding}: {encoding_error}": "Daten sollten gültiges {encoding} sein: {encoding_error}"
|
||
"Value error, {error}": "Wertfehler: {error}"
|
||
"Assertion failed, {error}": "Assertion fehlgeschlagen: {error}"
|
||
"Input should be a valid date": "Eingabe sollte ein gültiges Datum sein"
|
||
"Input should be a valid date in the format YYYY-MM-DD, {error}": "Eingabe sollte ein gültiges Datum im Format YYYY-MM-DD sein: {error}"
|
||
"Input should be a valid date or datetime, {error}": "Eingabe sollte ein gültiges Datum oder eine gültige Datums-Uhrzeit sein: {error}"
|
||
"Datetimes provided to dates should have zero time - e.g. be exact dates": "Datetime-Werte für Datum sollten keine Uhrzeit enthalten – also exakte Daten sein"
|
||
"Date should be in the past": "Datum sollte in der Vergangenheit liegen"
|
||
"Date should be in the future": "Datum sollte in der Zukunft liegen"
|
||
"Input should be a valid time": "Eingabe sollte eine gültige Uhrzeit sein"
|
||
"Input should be in a valid time format, {error}": "Eingabe sollte in einem gültigen Zeitformat sein: {error}"
|
||
"Input should be a valid datetime": "Eingabe sollte ein gültiges Datum mit Uhrzeit sein"
|
||
"Input should be a valid datetime, {error}": "Eingabe sollte ein gültiges Datum mit Uhrzeit sein: {error}"
|
||
"Invalid datetime object, got {error}": "Ungültiges Datetime-Objekt: {error}"
|
||
"Input should be a valid datetime or date, {error}": "Eingabe sollte ein gültiges Datum oder Datum mit Uhrzeit sein: {error}"
|
||
"Input should be in the past": "Eingabe sollte in der Vergangenheit liegen"
|
||
"Input should be in the future": "Eingabe sollte in der Zukunft liegen"
|
||
"Input should not have timezone info": "Eingabe sollte keine Zeitzonen-Information enthalten"
|
||
"Input should have timezone info": "Eingabe sollte Zeitzonen-Information enthalten"
|
||
"Timezone offset of {tz_expected} required, got {tz_actual}": "Zeitzonen-Offset von {tz_expected} erforderlich, erhalten: {tz_actual}"
|
||
"Input should be a valid timedelta": "Eingabe sollte ein gültiges Zeitdelta sein"
|
||
"Input should be a valid timedelta, {error}": "Eingabe sollte ein gültiges Zeitdelta sein: {error}"
|
||
"Input should be a valid frozenset": "Eingabe sollte ein gültiges Frozenset sein"
|
||
"Input should be an instance of {class}": "Eingabe sollte eine Instanz von {class} sein"
|
||
"Input should be a subclass of {class}": "Eingabe sollte eine Unterklasse von {class} sein"
|
||
"Input should be callable": "Eingabe sollte aufrufbar sein"
|
||
"Input tag '{tag}' found using {discriminator} does not match any of the expected tags: {expected_tags}": "Eingabe-Tag '{tag}', ermittelt durch {discriminator}, stimmt mit keinem der erwarteten Tags überein: {expected_tags}"
|
||
"Unable to extract tag using discriminator {discriminator}": "Tag kann mit {discriminator} nicht extrahiert werden"
|
||
"Arguments must be a tuple, list or a dictionary": "Argumente müssen ein Tupel, eine Liste oder ein Wörterbuch sein"
|
||
"Missing required argument": "Erforderliches Argument fehlt"
|
||
"Unexpected keyword argument": "Unerwartetes Schlüsselwort-Argument"
|
||
"Missing required keyword only argument": "Erforderliches keyword-only-Argument fehlt"
|
||
"Unexpected positional argument": "Unerwartetes Positionsargument"
|
||
"Missing required positional only argument": "Erforderliches positional-only-Argument fehlt"
|
||
"Got multiple values for argument": "Mehrere Werte für Argument erhalten"
|
||
"URL input should be a string or URL": "URL-Eingabe sollte eine Zeichenkette oder URL sein"
|
||
"Input should be a valid URL, {error}": "Eingabe sollte eine gültige URL sein: {error}"
|
||
"Input violated strict URL syntax rules, {error}": "Eingabe hat strikte URL-Syntaxregeln verletzt: {error}"
|
||
"URL should have at most {max_length} character{expected_plural}": "URL sollte höchstens {max_length} Zeichen{expected_plural} haben"
|
||
"URL scheme should be {expected_schemes}": "URL-Schema sollte {expected_schemes} sein"
|
||
"UUID input should be a string, bytes or UUID object": "UUID-Eingabe sollte eine Zeichenkette, Bytes oder ein UUID-Objekt sein"
|
||
"Input should be a valid UUID, {error}": "Eingabe sollte eine gültige UUID sein: {error}"
|
||
"UUID version {expected_version} expected": "UUID-Version {expected_version} erwartet"
|
||
"Decimal input should be an integer, float, string or Decimal object": "Decimal-Eingabe sollte eine Ganzzahl, Gleitkommazahl, Zeichenkette oder ein Decimal-Objekt sein"
|
||
"Input should be a valid decimal": "Eingabe sollte ein gültiges Decimal sein"
|
||
"Decimal input should have no more than {max_digits} digit{expected_plural} in total": "Decimal-Eingabe sollte insgesamt nicht mehr als {max_digits} Ziffer{expected_plural} haben"
|
||
"Decimal input should have no more than {decimal_places} decimal place{expected_plural}": "Decimal-Eingabe sollte nicht mehr als {decimal_places} Dezimalstelle{expected_plural} haben"
|
||
"Decimal input should have no more than {whole_digits} digit{expected_plural} before the decimal point": "Decimal-Eingabe sollte vor dem Dezimalpunkt nicht mehr als {whole_digits} Ziffer{expected_plural} haben"
|
||
? "Input should be a valid python complex object, a number, or a valid complex string following the rules at https://docs.python.org/3/library/functions.html#complex"
|
||
: "Eingabe sollte ein gültiges Python-komplexes Objekt, eine Zahl oder eine gültige komplexe Zeichenkette sein, gemäß https://docs.python.org/3/library/functions.html#complex"
|
||
"Input should be a valid complex string following the rules at https://docs.python.org/3/library/functions.html#complex": "Eingabe sollte eine gültige komplexe Zeichenkette sein, gemäß https://docs.python.org/3/library/functions.html#complex"
|
||
|
||
format_validation_error:
|
||
"validation error": "Validationsfehler"
|
||
"%s for [%s]:": "%s für %s"
|
||
"' or '": "' oder '"
|
||
|
||
#################################################
|
||
kleinanzeigen_bot/utils/web_scraping_mixin.py:
|
||
#################################################
|
||
create_browser_session:
|
||
"Creating Browser session...": "Erstelle Browser-Sitzung..."
|
||
"Using existing browser process at %s:%s": "Verwende existierenden Browser-Prozess unter %s:%s"
|
||
"New Browser session is %s": "Neue Browser-Sitzung ist %s"
|
||
" -> Browser binary location: %s": " -> Browser-Programmpfad: %s"
|
||
" -> Browser profile name: %s": " -> Browser-Profilname: %s"
|
||
" -> Browser user data dir: %s": " -> Browser-Benutzerdatenverzeichnis: %s"
|
||
" -> Custom Browser argument: %s": " -> Benutzerdefiniertes Browser-Argument: %s"
|
||
" -> Setting chrome prefs [%s]...": " -> Setze Chrome-Einstellungen [%s]..."
|
||
" -> Adding Browser extension: [%s]": " -> Füge Browser-Erweiterung hinzu: [%s]"
|
||
"Failed to connect to browser. This error often occurs when:": "Fehler beim Verbinden mit dem Browser. Dieser Fehler tritt häufig auf, wenn:"
|
||
"Failed to start browser. This error often occurs when:": "Fehler beim Starten des Browsers. Dieser Fehler tritt häufig auf, wenn:"
|
||
"1. Running as root user (try running as regular user)": "1. Als Root-Benutzer ausgeführt wird (versuchen Sie es als normaler Benutzer)"
|
||
"2. Browser profile is locked or in use by another process": "2. Das Browser-Profil gesperrt oder von einem anderen Prozess verwendet wird"
|
||
"3. Insufficient permissions to access the browser profile": "3. Unzureichende Berechtigungen für den Zugriff auf das Browser-Profil"
|
||
"4. Browser is not properly started with remote debugging enabled": "4. Der Browser nicht ordnungsgemäß mit aktiviertem Remote-Debugging gestartet wurde"
|
||
"4. Browser binary is not executable or missing": "4. Die Browser-Binärdatei nicht ausführbar oder fehlend ist"
|
||
"5. Check if any antivirus or security software is blocking the browser": "5. Überprüfen Sie, ob Antiviren- oder Sicherheitssoftware den Browser blockiert"
|
||
"Troubleshooting steps:": "Schritte zur Fehlerbehebung:"
|
||
"1. Close all browser instances and try again": "1. Schließen Sie alle Browser-Instanzen und versuchen Sie es erneut"
|
||
"2. Remove the user_data_dir configuration temporarily": "2. Entfernen Sie die user_data_dir-Konfiguration vorübergehend"
|
||
"3. Start browser manually with: %s --remote-debugging-port=%d": "3. Starten Sie den Browser manuell mit: %s --remote-debugging-port=%d"
|
||
"3. Try running without profile configuration": "3. Versuchen Sie es ohne Profil-Konfiguration"
|
||
"4. Check browser binary permissions: %s": "4. Überprüfen Sie die Browser-Binärdatei-Berechtigungen: %s"
|
||
"4. Check if any antivirus or security software is blocking the connection": "4. Überprüfen Sie, ob Antiviren- oder Sicherheitssoftware die Verbindung blockiert"
|
||
|
||
web_check:
|
||
"Unsupported attribute: %s": "Nicht unterstütztes Attribut: %s"
|
||
|
||
web_find:
|
||
"Unsupported selector type: %s": "Nicht unterstützter Selektor-Typ: %s"
|
||
|
||
web_find_all:
|
||
"Unsupported selector type: %s": "Nicht unterstützter Selektor-Typ: %s"
|
||
close_browser_session:
|
||
"Closing Browser session...": "Schließe Browser-Sitzung..."
|
||
|
||
get_compatible_browser:
|
||
"Installed browser could not be detected": "Installierter Browser konnte nicht erkannt werden"
|
||
"Installed browser for OS %s could not be detected": "Installierter Browser für Betriebssystem %s konnte nicht erkannt werden"
|
||
|
||
web_open:
|
||
" => skipping, [%s] is already open": " => überspringe, [%s] ist bereits geöffnet"
|
||
" -> Opening [%s]...": " -> Öffne [%s]..."
|
||
|
||
web_request:
|
||
" -> HTTP %s [%s]...": " -> HTTP %s [%s]..."
|
||
|
||
diagnose_browser_issues:
|
||
"=== Browser Connection Diagnostics ===": "=== Browser-Verbindungsdiagnose ==="
|
||
"=== End Diagnostics ===": "=== Ende der Diagnose ==="
|
||
"(ok) Browser binary exists: %s": "(Ok) Browser-Binärdatei existiert: %s"
|
||
"(ok) Browser binary is executable": "(Ok) Browser-Binärdatei ist ausführbar"
|
||
"(ok) Auto-detected browser: %s": "(Ok) Automatisch erkannter Browser: %s"
|
||
"(ok) User data directory exists: %s": "(Ok) Benutzerdatenverzeichnis existiert: %s"
|
||
"(ok) User data directory is readable and writable": "(Ok) Benutzerdatenverzeichnis ist lesbar und beschreibbar"
|
||
"(ok) Remote debugging port is open": "(Ok) Remote-Debugging-Port ist offen"
|
||
"(fail) Browser binary not found: %s": "(Fehler) Browser-Binärdatei nicht gefunden: %s"
|
||
"(fail) Browser binary is not executable": "(Fehler) Browser-Binärdatei ist nicht ausführbar"
|
||
"(fail) No compatible browser found": "(Fehler) Kein kompatibler Browser gefunden"
|
||
"(fail) User data directory permissions issue": "(Fehler) Benutzerdatenverzeichnis-Berechtigungsproblem"
|
||
"(info) User data directory does not exist (will be created): %s": "(Info) Benutzerdatenverzeichnis existiert nicht (wird erstellt): %s"
|
||
"(info) Remote debugging port configured: %d": "(Info) Remote-Debugging-Port konfiguriert: %d"
|
||
"(info) Remote debugging port is not open": "(Info) Remote-Debugging-Port ist nicht offen"
|
||
|
||
"(info) No browser processes currently running": "(Info) Derzeit keine Browser-Prozesse aktiv"
|
||
"(fail) Running as root - this can cause browser issues": "(Fehler) Läuft als Root - dies kann Browser-Probleme verursachen"
|
||
|
||
"(info) Found %d browser processes running": "(Info) %d Browser-Prozesse aktiv gefunden"
|
||
" - PID %d: %s (remote debugging enabled)": " - PID %d: %s (Remote-Debugging aktiviert)"
|
||
" - PID %d: %s (remote debugging NOT enabled)": " - PID %d: %s (Remote-Debugging NICHT aktiviert)"
|
||
"(ok) Remote debugging API accessible - Browser: %s": "(ok) Remote-Debugging-API zugänglich - Browser: %s"
|
||
"(fail) Remote debugging port is open but API not accessible: %s": "(Fehler) Remote-Debugging-Port ist offen, aber API nicht zugänglich: %s"
|
||
" This might indicate a browser update issue or configuration problem": " Dies könnte auf ein Browser-Update-Problem oder Konfigurationsproblem hinweisen"
|
||
|
||
_validate_chrome_136_configuration:
|
||
" -> %s 136+ configuration validation failed: %s": " -> %s 136+ Konfigurationsvalidierung fehlgeschlagen: %s"
|
||
" -> %s 136+ configuration validation passed": " -> %s 136+ Konfigurationsvalidierung bestanden"
|
||
|
||
_validate_chrome_version_configuration:
|
||
" -> %s 136+ detected: %s": " -> %s 136+ erkannt: %s"
|
||
" -> %s version detected: %s (pre-136, no special validation required)": " -> %s-Version erkannt: %s (vor 136, keine besondere Validierung erforderlich)"
|
||
" -> Browser version detection failed, skipping validation: %s": " -> Browser-Versionserkennung fehlgeschlagen, Validierung wird übersprungen: %s"
|
||
" -> Unexpected error during browser version validation, skipping: %s": " -> Unerwarteter Fehler bei Browser-Versionsvalidierung, wird übersprungen: %s"
|
||
|
||
_diagnose_chrome_version_issues:
|
||
"(info) %s version from binary: %s %s (major: %d)": "(Info) %s-Version von Binärdatei: %s %s (Hauptversion: %d)"
|
||
"(info) %s version from remote debugging: %s %s (major: %d)": "(Info) %s-Version von Remote-Debugging: %s %s (Hauptversion: %d)"
|
||
"(info) %s 136+ detected - security validation required": "(Info) %s 136+ erkannt - Sicherheitsvalidierung erforderlich"
|
||
"(info) %s pre-136 detected - no special security requirements": "(Info) %s vor 136 erkannt - keine besonderen Sicherheitsanforderungen"
|
||
"(info) Remote %s 136+ detected - validating configuration": "(Info) Remote %s 136+ erkannt - validiere Konfiguration"
|
||
"(fail) %s 136+ configuration validation failed: %s": "(Fehler) %s 136+ Konfigurationsvalidierung fehlgeschlagen: %s"
|
||
"(ok) %s 136+ configuration validation passed": "(Ok) %s 136+ Konfigurationsvalidierung bestanden"
|
||
"(info) Chrome/Edge 136+ security changes require --user-data-dir for remote debugging": "(Info) Chrome/Edge 136+ Sicherheitsänderungen erfordern --user-data-dir für Remote-Debugging"
|
||
" See: https://developer.chrome.com/blog/remote-debugging-port": " Siehe: https://developer.chrome.com/blog/remote-debugging-port"
|
||
" -> Browser version diagnostics failed: %s": " -> Browser-Versionsdiagnose fehlgeschlagen: %s"
|
||
" -> Unexpected error during browser version diagnostics: %s": " -> Unerwarteter Fehler bei Browser-Versionsdiagnose: %s"
|
||
" Solution: Add --user-data-dir=/path/to/directory to browser arguments": " Lösung: Fügen Sie --user-data-dir=/pfad/zum/verzeichnis zu Browser-Argumenten hinzu"
|
||
" And user_data_dir: \"/path/to/directory\" to your configuration": " Und user_data_dir: \"/pfad/zum/verzeichnis\" zu Ihrer Konfiguration"
|
||
|
||
#################################################
|
||
kleinanzeigen_bot/update_checker.py:
|
||
#################################################
|
||
_get_commit_date:
|
||
"Could not get commit date: %s": "Konnte Commit-Datum nicht ermitteln: %s"
|
||
_get_release_commit:
|
||
"Could not get release commit: %s": "Konnte Release-Commit nicht ermitteln: %s"
|
||
check_for_updates:
|
||
"A new version is available: %s from %s UTC (current: %s from %s UTC, channel: %s)": "Eine neue Version ist verfügbar: %s vom %s UTC (aktuell: %s vom %s UTC, Kanal: %s)"
|
||
"Could not determine commit dates for comparison.": "Konnte Commit-Daten für den Vergleich nicht ermitteln."
|
||
"Could not determine local commit hash.": "Konnte lokalen Commit-Hash nicht ermitteln."
|
||
"Could not determine local version.": "Konnte lokale Version nicht ermitteln."
|
||
"Could not determine release commit hash.": "Konnte Release-Commit-Hash nicht ermitteln."
|
||
"Could not get releases: %s": "Konnte Releases nicht abrufen: %s"
|
||
"Failed to get commit dates: %s": "Fehler beim Abrufen der Commit-Daten: %s"
|
||
"Failed to get release commit: %s": "Fehler beim Abrufen des Release-Commits: %s"
|
||
? "Release notes:\n%s"
|
||
: "Release-Notizen:\n%s"
|
||
"You are on the latest version: %s (compared to %s in channel %s)": "Sie verwenden die neueste Version: %s (verglichen mit %s im Kanal %s)"
|
||
"Latest release from GitHub is a prerelease, but 'latest' channel expects a stable release.": "Die neueste GitHub-Version ist eine Vorabversion, aber der 'latest'-Kanal erwartet eine stabile Version."
|
||
"No prerelease found for 'preview' channel.": "Keine Vorabversion für den 'preview'-Kanal gefunden."
|
||
"Unknown update channel: %s": "Unbekannter Update-Kanal: %s"
|
||
? "You are on a different commit than the release for channel '%s' (tag: %s). This may mean you are ahead, behind, or on a different branch. Local commit: %s (%s UTC), Release commit: %s (%s UTC)"
|
||
: "Sie befinden sich auf einem anderen Commit als das Release für Kanal '%s' (Tag: %s). Dies kann bedeuten, dass Sie voraus, hinterher oder auf einem anderen Branch sind. Lokaler Commit: %s (%s UTC), Release-Commit: %s (%s UTC)"
|
||
|
||
#################################################
|
||
kleinanzeigen_bot/model/update_check_state.py:
|
||
#################################################
|
||
_parse_timestamp:
|
||
"Invalid timestamp format in state file: %s": "Ungültiges Zeitstempel-Format in der Statusdatei: %s"
|
||
|
||
load:
|
||
"Failed to load update check state: %s": "Fehler beim Laden des Update-Prüfstatus: %s"
|
||
"Migrating update check state from version %d to %d": "Migriere Update-Prüfstatus von Version %d zu %d"
|
||
|
||
save:
|
||
"Failed to save update check state: %s": "Fehler beim Speichern des Update-Prüfstatus: %s"
|
||
"Permission denied when saving update check state to %s": "Keine Berechtigung zum Speichern des Update-Prüfstatus in %s"
|
||
|
||
should_check:
|
||
"Falling back to default interval: 1d (preview channel). Please fix your config to avoid this warning.": "Falle auf das Standardintervall zurück: 1 Tag (Vorschaukanal). Bitte korrigieren Sie Ihre Konfiguration, um diese Warnung zu vermeiden."
|
||
"Falling back to default interval: 7d (latest channel). Please fix your config to avoid this warning.": "Falle auf das Standardintervall zurück: 7 Tage (Stabiler Kanal). Bitte korrigieren Sie Ihre Konfiguration, um diese Warnung zu vermeiden."
|
||
"Interval is zero: %s. Minimum interval is 1d. Using default interval for this run.": "Intervall ist null: %s. Das Mindestintervall beträgt 1 Tag. Es wird das Standardintervall für diesen Durchlauf verwendet."
|
||
"Interval too long: %s. Maximum interval is 30d. Using default interval for this run.": "Intervall zu lang: %s. Das maximale Intervall beträgt 30 Tage. Es wird das Standardintervall für diesen Durchlauf verwendet."
|
||
"Interval too short: %s. Minimum interval is 1d. Using default interval for this run.": "Intervall zu kurz: %s. Das Mindestintervall beträgt 1 Tag. Es wird das Standardintervall für diesen Durchlauf verwendet."
|
||
"Invalid interval format or unsupported unit: %s. Using default interval for this run.": "Ungültiges Intervallformat oder nicht unterstützte Einheit: %s. Es wird das Standardintervall für diesen Durchlauf verwendet."
|
||
"Negative interval: %s. Minimum interval is 1d. Using default interval for this run.": "Negatives Intervall: %s. Das Mindestintervall beträgt 1 Tag. Es wird das Standardintervall für diesen Durchlauf verwendet."
|