diff --git a/apps/renderer/src/@types/constants.ts b/apps/renderer/src/@types/constants.ts index 41ef8937a7..97890d747a 100644 --- a/apps/renderer/src/@types/constants.ts +++ b/apps/renderer/src/@types/constants.ts @@ -2,6 +2,7 @@ // DONT EDIT THIS FILE MANUALLY export const currentSupportedLanguages = [ "en", + "de", "ja", "zh-CN", "zh-TW", @@ -39,6 +40,7 @@ export const dayjsLocaleImportMap = { ["ar-KW"]: ["ar-kw", () => import("dayjs/locale/ar-kw")], ["ar-TN"]: ["ar-tn", () => import("dayjs/locale/ar-tn")], ["zh-HK"]: ["zh-hk", () => import("dayjs/locale/zh-hk")], + ["de"]: ["de", () => import("dayjs/locale/de")], ["ko"]: ["ko", () => import("dayjs/locale/ko")], ["tr"]: ["tr", () => import("dayjs/locale/tr")], } diff --git a/apps/renderer/src/@types/default-resource.ts b/apps/renderer/src/@types/default-resource.ts index da0f599fb0..7b938577d7 100644 --- a/apps/renderer/src/@types/default-resource.ts +++ b/apps/renderer/src/@types/default-resource.ts @@ -7,6 +7,7 @@ import common_arkw from "../../../../locales/common/ar-KW.json" import common_arma from "../../../../locales/common/ar-MA.json" import common_arsa from "../../../../locales/common/ar-SA.json" import common_artn from "../../../../locales/common/ar-TN.json" +import common_de from "../../../../locales/common/de.json" import common_en from "../../../../locales/common/en.json" import common_es from "../../../../locales/common/es.json" import common_fi from "../../../../locales/common/fi.json" @@ -28,6 +29,7 @@ import lang_arkw from "../../../../locales/lang/ar-KW.json" import lang_arma from "../../../../locales/lang/ar-MA.json" import lang_arsa from "../../../../locales/lang/ar-SA.json" import lang_artn from "../../../../locales/lang/ar-TN.json" +import lang_de from "../../../../locales/lang/de.json" import lang_en from "../../../../locales/lang/en.json" import lang_es from "../../../../locales/lang/es.json" import lang_fi from "../../../../locales/lang/fi.json" @@ -86,6 +88,7 @@ export const defaultResources = { "ar-IQ": { lang: lang_ariq, common: common_ariq }, "ar-KW": { lang: lang_arkw, common: common_arkw }, "ar-TN": { lang: lang_artn, common: common_artn }, + de: { lang: lang_de, common: common_de }, ko: { lang: lang_ko, common: common_ko }, tr: { lang: lang_tr, common: common_tr }, } diff --git a/locales/app/de.json b/locales/app/de.json new file mode 100644 index 0000000000..be19d1219f --- /dev/null +++ b/locales/app/de.json @@ -0,0 +1,210 @@ +{ + "ai_daily.title": "Top-Nachrichten - {{title}}", + "ai_daily.tooltip.content": "Hier sind Nachrichten, die von der KI aus Ihrer Zeitleiste ausgewählt wurden ( - ), die für Sie wichtig sein könnten.", + "ai_daily.tooltip.update_schedule": "Täglich um 8 Uhr und 20 Uhr aktualisiert.", + "app.copy_logo_svg": "Logo-SVG kopieren", + "app.toggle_sidebar": "Seitenleiste umschalten", + "discover.any_url_or_keyword": "Beliebige URL oder Stichwort", + "discover.default_option": " (Standard)", + "discover.feed_description": "Die Beschreibung dieses Feeds lautet wie folgt. Sie können das Parameterformular mit den entsprechenden Informationen ausfüllen.", + "discover.feed_maintainers": "Dieser Feed wird von RSSHub bereitgestellt, mit Dank an ", + "discover.import.click_to_upload": "Klicken, um die OPML-Datei hochzuladen", + "discover.popular": "Beliebt", + "discover.preview": "Vorschau", + "discover.rss_hub_route": "RSSHub-Route", + "discover.rss_url": "RSS-URL", + "discover.select_placeholder": "Auswählen", + "early_access": "Früher Zugriff", + "entry_actions.copy_link": "Link kopieren", + "entry_actions.failed_to_save_to_eagle": "Speichern in Eagle fehlgeschlagen.", + "entry_actions.failed_to_save_to_instapaper": "Speichern in Instapaper fehlgeschlagen.", + "entry_actions.failed_to_save_to_readwise": "Speichern in Readwise fehlgeschlagen.", + "entry_actions.link_copied": "Link in die Zwischenablage kopiert.", + "entry_actions.mark_as_read": "Als gelesen markieren", + "entry_actions.mark_as_unread": "Als ungelesen markieren", + "entry_actions.open_in_browser": "Im Browser öffnen", + "entry_actions.save_media_to_eagle": "Medien in Eagle speichern", + "entry_actions.save_to_instapaper": "In Instapaper speichern", + "entry_actions.save_to_readwise": "In Readwise speichern", + "entry_actions.saved_to_eagle": "In Eagle gespeichert.", + "entry_actions.saved_to_instapaper": "In Instapaper gespeichert.", + "entry_actions.saved_to_readwise": "In Readwise gespeichert.", + "entry_actions.share": "Teilen", + "entry_actions.star": "Favorisieren", + "entry_actions.starred": "Favorisiert.", + "entry_actions.tip": "Trinkgeld", + "entry_actions.unstar": "Favorisierung entfernen", + "entry_actions.unstarred": "Favorisierung entfernt.", + "entry_column.filtered_content_tip": "Sie haben gefilterte Inhalte ausgeblendet.", + "entry_column.filtered_content_tip_2": "Zusätzlich zu den oben angezeigten Einträgen gibt es auch gefilterte Inhalte.", + "entry_column.refreshing": "Neue Einträge werden aktualisiert...", + "entry_content.ai_summary": "KI-Zusammenfassung", + "entry_content.fetching_content": "Originalinhalt wird abgerufen und verarbeitet...", + "entry_content.header.play_tts": "TTS abspielen", + "entry_content.header.readability": "Lesbarkeit", + "entry_content.no_content": "Keine Medien verfügbar", + "entry_content.readability_notice": "Dieser Inhalt wird von Readability bereitgestellt. Wenn Sie typografische Fehler feststellen, besuchen Sie bitte die Quellseite, um den Originalinhalt anzuzeigen.", + "entry_content.render_error": "Render-Fehler:", + "entry_content.report_issue": "Problem melden", + "entry_content.support_amount": "{{amount}} Personen haben den Ersteller dieses Feeds unterstützt.", + "entry_content.support_creator": "Ersteller unterstützen", + "entry_content.web_app_notice": "Möglicherweise unterstützt die Web-App diesen Inhaltstyp nicht. Sie können jedoch die Desktop-App herunterladen.", + "entry_list.zero_unread": "Keine ungelesenen", + "entry_list_header.daily_report": "Tagesbericht", + "entry_list_header.hide_no_image_items": "Einträge ohne Bilder ausblenden.", + "entry_list_header.items": "Elemente", + "entry_list_header.new_entries_available": "Neue Einträge verfügbar", + "entry_list_header.refetch": "Neu laden", + "entry_list_header.refresh": "Aktualisieren", + "entry_list_header.show_all": "Alle anzeigen", + "entry_list_header.show_all_items": "Alle Einträge anzeigen", + "entry_list_header.show_unread_only": "Nur ungelesene anzeigen", + "entry_list_header.switch_to_grid": "Zu Rasteransicht wechseln", + "entry_list_header.switch_to_masonry": "Zur Kachelansicht wechseln", + "entry_list_header.unread": "ungelesen", + "feed_claim_modal.choose_verification_method": "Es gibt drei Verifikationsmethoden. Wählen Sie eine aus, um die Eigentümerschaft zu bestätigen.", + "feed_claim_modal.claim_button": "Beanspruchen", + "feed_claim_modal.content_instructions": "Kopieren Sie den folgenden Inhalt und veröffentlichen Sie ihn in Ihrem neuesten RSS-Feed.", + "feed_claim_modal.description_current": "Aktuelle Beschreibung:", + "feed_claim_modal.description_instructions": "Kopieren Sie den folgenden Inhalt und fügen Sie ihn in das -Feld Ihres RSS-Feeds ein.", + "feed_claim_modal.failed_to_load": "Fehler beim Laden der Anspruchsnachricht", + "feed_claim_modal.rss_format_choice": "RSS-Generatoren bieten in der Regel zwei Formate zur Auswahl an. Bitte kopieren Sie die unten aufgeführten XML- und JSON-Formate nach Bedarf.", + "feed_claim_modal.rss_instructions": "Kopieren Sie den unten stehenden Code und fügen Sie ihn in Ihren RSS-Generator ein.", + "feed_claim_modal.rss_json_format": "JSON-Format", + "feed_claim_modal.rss_xml_format": "XML-Format", + "feed_claim_modal.rsshub_notice": "Dieser Feed wird von RSSHub mit einer Cache-Zeit von 1 Stunde bereitgestellt. Bitte erlauben Sie bis zu 1 Stunde, bis Änderungen nach der Veröffentlichung von Inhalten angezeigt werden.", + "feed_claim_modal.tab_content": "Inhalt", + "feed_claim_modal.tab_description": "Beschreibung", + "feed_claim_modal.tab_rss": "RSS-Tag", + "feed_claim_modal.verify_ownership": "Um diesen Feed als Ihren eigenen zu beanspruchen, müssen Sie das Eigentum verifizieren.", + "feed_form.add_follow": "Follow hinzufügen", + "feed_form.category": "Kategorie", + "feed_form.category_description": "Standardmäßig werden Ihre Follows nach Website gruppiert.", + "feed_form.error_fetching_feed": "Fehler beim Abrufen des Feeds.", + "feed_form.feed_not_found": "Feed nicht gefunden.", + "feed_form.feedback": "Feedback", + "feed_form.follow": "Folgen", + "feed_form.followed": "🎉 Gefolgt.", + "feed_form.private_follow": "Privates Folgen", + "feed_form.private_follow_description": "Ob dieses Follow öffentlich auf Ihrer Profilseite sichtbar ist.", + "feed_form.retry": "Erneut versuchen", + "feed_form.title": "Titel", + "feed_form.title_description": "Benutzerdefinierter Titel für diesen Feed. Lassen Sie das Feld leer, um den Standardwert zu verwenden.", + "feed_form.unfollow": "Entfolgen", + "feed_form.update": "Aktualisieren", + "feed_form.update_follow": "Follow aktualisieren", + "feed_form.updated": "🎉 Aktualisiert.", + "feed_form.view": "Ansehen", + "feed_item.claimed_by_owner": "Dieser Feed wurde beansprucht von", + "feed_item.claimed_by_unknown": "seinem Besitzer.", + "feed_item.claimed_by_you": "Von Ihnen beansprucht", + "feed_item.claimed_feed": "Beanspruchter Feed", + "feed_item.error_since": "Fehler seit", + "feed_item.not_publicly_visible": "Nicht öffentlich auf Ihrer Profilseite sichtbar", + "feed_view_type.articles": "Artikel", + "feed_view_type.audios": "Audios", + "feed_view_type.notifications": "Benachrichtigungen", + "feed_view_type.pictures": "Bilder", + "feed_view_type.social_media": "Soziale Medien", + "feed_view_type.videos": "Videos", + "mark_all_read_button.auto_confirm_info": "Wird nach 3 Sekunden automatisch bestätigt.", + "mark_all_read_button.confirm": "Bestätigen", + "mark_all_read_button.confirm_mark_all": "{{which}} als gelesen markieren?", + "mark_all_read_button.confirm_mark_all_info": "Möchten Sie alle als gelesen markieren?", + "mark_all_read_button.mark_all_as_read": "Alles als gelesen markieren", + "mark_all_read_button.mark_as_read": "{{which}} als gelesen markieren", + "mark_all_read_button.undo": "Rückgängig", + "player.back_10s": "10s zurück", + "player.close": "Schließen", + "player.download": "Herunterladen", + "player.exit_full_screen": "Vollbildmodus verlassen", + "player.forward_10s": "10s vorwärts", + "player.full_screen": "Vollbild", + "player.mute": "Stumm", + "player.open_entry": "Eintrag öffnen", + "player.pause": "Pause", + "player.play": "Abspielen", + "player.playback_rate": "Wiedergabegeschwindigkeit", + "player.unmute": "Stummschaltung aufheben", + "player.volume": "Lautstärke", + "search.empty.no_results": "Keine Ergebnisse gefunden.", + "search.group.entries": "Einträge", + "search.group.feeds": "Feeds", + "search.options.all": "Alle", + "search.options.entries": "Einträge", + "search.options.feeds": "Feeds", + "search.options.search_type": "Suchtyp", + "search.placeholder": "Suche...", + "search.result_count_local_mode": "(Lokaler Modus)", + "search.tooltip.local_search": "Diese Suche deckt nur lokal verfügbare Daten ab. Versuchen Sie, eine Neuladen durchzuführen, um die neuesten Daten einzubeziehen.", + "shortcuts.guide.title": "Kurzanleitung", + "sidebar.category_remove_dialog.cancel": "Abbrechen", + "sidebar.category_remove_dialog.continue": "Fortfahren", + "sidebar.category_remove_dialog.description": "Dieser Vorgang löscht Ihre Kategorie, aber die darin enthaltenen Feeds bleiben erhalten und werden nach Website gruppiert.", + "sidebar.category_remove_dialog.title": "Kategorie entfernen", + "sidebar.feed_actions.claim": "Beanspruchen", + "sidebar.feed_actions.claim_feed": "Feed beanspruchen", + "sidebar.feed_actions.copy_feed_id": "Feed-ID kopieren", + "sidebar.feed_actions.copy_feed_url": "Feed-URL kopieren", + "sidebar.feed_actions.edit": "Bearbeiten", + "sidebar.feed_actions.edit_feed": "Feed bearbeiten", + "sidebar.feed_actions.feed_owned_by_you": "Dieser Feed gehört Ihnen", + "sidebar.feed_actions.mark_all_as_read": "Alles als gelesen markieren", + "sidebar.feed_actions.navigate_to_feed": "Zu Feed navigieren", + "sidebar.feed_actions.open_feed_in_browser": "Feed im Browser öffnen", + "sidebar.feed_actions.open_site_in_browser": "Website im Browser öffnen", + "sidebar.feed_actions.unfollow": "Entfolgen", + "sidebar.feed_actions.unfollow_feed": "Feed entfolgen", + "sidebar.feed_column.context_menu.change_to_other_view": "Zu anderer Ansicht wechseln", + "sidebar.feed_column.context_menu.delete_category": "Kategorie löschen", + "sidebar.feed_column.context_menu.delete_category_confirmation": "Kategorie {{folderName}} löschen?", + "sidebar.feed_column.context_menu.mark_as_read": "Als gelesen markieren", + "sidebar.feed_column.context_menu.rename_category": "Kategorie umbenennen", + "sidebar.select_sort_method": "Sortiermethode auswählen", + "signin.continue_with_github": "Mit GitHub fortfahren", + "signin.continue_with_google": "Mit Google fortfahren", + "signin.sign_in_to": "Anmelden bei", + "sync_indicator.disabled": "Aus Sicherheitsgründen ist die Synchronisierung deaktiviert.", + "sync_indicator.offline": "Offline", + "sync_indicator.synced": "Mit Server synchronisiert", + "tip_modal.amount": "Betrag", + "tip_modal.claim_feed": "Diesen Feed beanspruchen", + "tip_modal.create_wallet": "Kostenloses Wallet erstellen", + "tip_modal.feed_owner": "Feed-Besitzer", + "tip_modal.low_balance": "Ihr Guthaben reicht nicht aus, um dieses Trinkgeld zu geben. Bitte passen Sie den Betrag an.", + "tip_modal.no_wallet": "Sie haben noch kein Wallet. Bitte erstellen Sie ein Wallet, um Trinkgelder zu geben.", + "tip_modal.tip_amount_sent": "wurde an den Autor gesendet.", + "tip_modal.tip_now": "Jetzt Trinkgeld geben", + "tip_modal.tip_sent": "Trinkgeld erfolgreich gesendet! Vielen Dank für Ihre Unterstützung.", + "tip_modal.tip_support": "⭐ Geben Sie ein Trinkgeld, um Ihre Unterstützung zu zeigen!", + "tip_modal.unclaimed_feed": "Dieser Feed wurde noch von niemandem beansprucht. Das erhaltene Power wird sicher im Blockchain-Vertrag gehalten, bis es beansprucht wird.", + "user_button.account": "Konto", + "user_button.download_desktop_app": "Desktop-App herunterladen", + "user_button.log_out": "Abmelden", + "user_button.power": "Power", + "user_button.preferences": "Einstellungen", + "user_button.profile": "Profil", + "user_profile.close": "Schließen", + "user_profile.edit": "Bearbeiten", + "user_profile.loading": "Wird geladen", + "user_profile.share": "Teilen", + "user_profile.toggle_item_style": "Artikelstil umschalten", + "words.add": "Hinzufügen", + "words.confirm": "Bestätigen", + "words.discover": "Entdecken", + "words.email": "E-Mail", + "words.import": "Importieren", + "words.items": "Elemente", + "words.language": "Sprache", + "words.load_archived_entries": "Archivierte Einträge laden", + "words.login": "Anmelden", + "words.rss": "RSS", + "words.rss3": "RSS3", + "words.rsshub": "RSSHub", + "words.search": "Suche", + "words.starred": "Favorisiert", + "words.unread": "Ungelesen", + "words.user": "Benutzer", + "words.which.all": "alle", + "words.zero_items": "Keine Elemente" +} diff --git a/locales/common/de.json b/locales/common/de.json new file mode 100644 index 0000000000..2070b16c67 --- /dev/null +++ b/locales/common/de.json @@ -0,0 +1,29 @@ +{ + "app.copied_to_clipboard": "In die Zwischenablage kopiert", + "cancel": "Abbrechen", + "close": "Schließen", + "confirm": "Bestätigen", + "ok": "OK", + "quantifier.piece": "", + "time.last_night": "Letzte Nacht", + "time.the_night_before_last": "Vorgestern Nacht", + "time.today": "Heute", + "time.yesterday": "Gestern", + "tips.load-lng-error": "Fehler beim Laden des Sprachpakets", + "words.back": "Zurück", + "words.copy": "Kopieren", + "words.edit": "Bearbeiten", + "words.entry": "Eintrag", + "words.id": "ID", + "words.items_one": "Element", + "words.items_other": "Elemente", + "words.local": "Lokal", + "words.record": "Aufzeichnung", + "words.record_one": "Aufzeichnung", + "words.record_other": "Aufzeichnungen", + "words.result": "Ergebnis", + "words.result_one": "Ergebnis", + "words.result_other": "Ergebnisse", + "words.space": " ", + "words.which.all": "Alle" +} diff --git a/locales/errors/de.json b/locales/errors/de.json new file mode 100644 index 0000000000..503ff9847b --- /dev/null +++ b/locales/errors/de.json @@ -0,0 +1,29 @@ +{ + "1000": "Nicht autorisiert", + "1001": "Erstellung der Sitzung fehlgeschlagen", + "1002": "Ungültiger Parameter", + "1003": "Ungültige Einladung", + "2000": "Nur Administratoren können Feeds aktualisieren", + "2001": "Feed nicht gefunden", + "2002": "feedId oder URL erforderlich", + "2003": "Fehler beim Abrufen des Feeds", + "2004": "Feed konnte nicht analysiert werden", + "2010": "Besitznachweis fehlgeschlagen", + "2011": "Abonnementlimit überschritten", + "3000": "Eintrag nicht gefunden", + "3001": "Eintrag gehört nicht zum Benutzer", + "4000": "Bereits beansprucht", + "4001": "Fehler in der Benutzer-Wallet", + "4002": "Unzureichendes Guthaben", + "4003": "Nicht ausreichendes verfügbares Guthaben im Feed", + "4004": "Fehler in der Zielbenutzer-Wallet", + "5000": "Einladungslimit überschritten. Bitte versuchen Sie es in ein paar Tagen erneut.", + "5001": "Einladung existiert bereits.", + "5002": "Einladungscode wurde bereits verwendet.", + "5003": "Einladungscode existiert nicht.", + "6000": "Benutzer nicht gefunden", + "7000": "Einstellung nicht gefunden", + "7001": "Ungültiger Einstellungs-Tab", + "7002": "Ungültige Einstellungsdaten", + "7003": "Einstellungsdaten sind zu groß" +} diff --git a/locales/external/de.json b/locales/external/de.json new file mode 100644 index 0000000000..44ea6c279a --- /dev/null +++ b/locales/external/de.json @@ -0,0 +1,42 @@ +{ + "feed": { + "follow_one": "follow", + "follow_other": "followers", + "followsAndReads": "{{subscriptionCount}} {{subscriptionNoun}} with {{readCount}} {{readNoun}} on {{appName}}", + "read_one": "read", + "read_other": "reads" + }, + "header": { + "app": "App", + "download": "Download" + }, + "invitation": { + "activate": "Activate", + "codeOptions": { + "1": "Looking for an alpha test user to invite you.", + "2": "Join our Discord server for occasional giveaways.", + "3": "Follow our X account for occasional giveaways." + }, + "earlyAccess": "Follow is currently in early access and requires an invitation code to use.", + "earlyAccessMessage": "😰 Sorry, Follow is currently in early access and requires an invitation code to use.", + "generateButton": "Generate new code", + "generateCost": "You can spend {{INVITATION_PRICE}} Power to generate an invitation code for your friends.", + "getCodeMessage": "You can get an invitation code through the following ways:", + "title": "Invitation Code" + }, + "login": { + "backToWebApp": "Back to the web app", + "continueWithGitHub": "Continue with GitHub", + "continueWithGoogle": "Continue with Google", + "logInTo": "Log in to ", + "openApp": "Open app", + "redirecting": "Redirecting", + "welcomeTo": "Welcome to " + }, + "redirect": { + "continueInBrowser": "Continue in browser", + "instruction": "It is time to open {{APP_NAME}} and safely close this page.", + "openApp": "Open {{APP_NAME}}", + "successMessage": "You have successfully connected to {{APP_NAME}} account." + } +} diff --git a/locales/lang/de.json b/locales/lang/de.json new file mode 100644 index 0000000000..e15cc9b495 --- /dev/null +++ b/locales/lang/de.json @@ -0,0 +1,21 @@ +{ + "langs.ar-DZ": "العربية (الجزائر)", + "langs.ar-IQ": "العربية (العراق)", + "langs.ar-KW": "العربية (الكويت)", + "langs.ar-MA": "العربية (المغرب)", + "langs.ar-SA": "العربية (السعودية)", + "langs.ar-TN": "العربية (تونس)", + "langs.de": "Deutsch", + "langs.en": "English", + "langs.es": "Español", + "langs.fi": "Suomi", + "langs.fr": "Français", + "langs.it": "Italiano", + "langs.ja": "日本語", + "langs.pt": "Português", + "langs.ru": "Русский", + "langs.zh-CN": "简体中文", + "langs.zh-HK": "繁體中文(香港)", + "langs.zh-TW": "繁體中文(台灣)", + "name": "Deutsch" +} diff --git a/locales/native/de.json b/locales/native/de.json new file mode 100644 index 0000000000..09f3c72014 --- /dev/null +++ b/locales/native/de.json @@ -0,0 +1,64 @@ +{ + "contextMenu.copy": "Kopieren", + "contextMenu.copyImage": "Bild kopieren", + "contextMenu.copyImageAddress": "Bildadresse kopieren", + "contextMenu.copyLink": "Link kopieren", + "contextMenu.copyVideoAddress": "Videoadresse kopieren", + "contextMenu.cut": "Ausschneiden", + "contextMenu.inspect": "Element untersuchen", + "contextMenu.learnSpelling": "Rechtschreibung lernen", + "contextMenu.lookUpSelection": "Auswahl nachschlagen", + "contextMenu.openImageInBrowser": "Bild im Browser öffnen", + "contextMenu.openLinkInBrowser": "Link im Browser öffnen", + "contextMenu.paste": "Einfügen", + "contextMenu.saveImage": "Bild speichern", + "contextMenu.saveImageAs": "Bild speichern unter...", + "contextMenu.saveLinkAs": "Link speichern unter...", + "contextMenu.saveVideo": "Video speichern", + "contextMenu.saveVideoAs": "Video speichern unter...", + "contextMenu.searchWithGoogle": "Mit Google suchen", + "contextMenu.selectAll": "Alles auswählen", + "contextMenu.services": "Dienste", + "menu.about": "Über {{name}}", + "menu.actualSize": "Tatsächliche Größe", + "menu.bringAllToFront": "Alle nach vorne bringen", + "menu.checkForUpdates": "Nach Updates suchen", + "menu.close": "Schließen", + "menu.copy": "Kopieren", + "menu.cut": "Ausschneiden", + "menu.debug": "Debug", + "menu.delete": "Löschen", + "menu.discover": "Entdecken", + "menu.edit": "Bearbeiten", + "menu.file": "Datei", + "menu.followReleases": "Veröffentlichungen folgen", + "menu.forceReload": "Neuladen erzwingen", + "menu.front": "In den Vordergrund bringen", + "menu.help": "Hilfe", + "menu.hide": "{{name}} ausblenden", + "menu.hideOthers": "Andere ausblenden", + "menu.minimize": "Minimieren", + "menu.openLogFile": "Protokolldatei öffnen", + "menu.paste": "Einfügen", + "menu.pasteAndMatchStyle": "Einfügen und Stil anpassen", + "menu.quickAdd": "Schnell hinzufügen", + "menu.quit": "{{name}} beenden", + "menu.quitAndInstallUpdate": "Debug: Beenden und Update installieren", + "menu.redo": "Wiederholen", + "menu.reload": "Neu laden", + "menu.search": "Suchen", + "menu.selectAll": "Alles auswählen", + "menu.services": "Dienste", + "menu.settings": "Einstellungen...", + "menu.speech": "Sprachausgabe", + "menu.startSpeaking": "Sprechen starten", + "menu.stopSpeaking": "Sprechen stoppen", + "menu.toggleDevTools": "Entwicklertools umschalten", + "menu.toggleFullScreen": "Vollbild umschalten", + "menu.undo": "Rückgängig machen", + "menu.view": "Ansicht", + "menu.window": "Fenster", + "menu.zoom": "Zoom", + "menu.zoomIn": "Vergrößern", + "menu.zoomOut": "Verkleinern" +} diff --git a/locales/settings/de.json b/locales/settings/de.json new file mode 100644 index 0000000000..512e8684c8 --- /dev/null +++ b/locales/settings/de.json @@ -0,0 +1,237 @@ +{ + "about.changelog": "Änderungsprotokoll", + "about.feedbackInfo": "{{appName}} ({{commitSha}}) befindet sich in den frühen Entwicklungsstadien. Wenn Sie Feedback oder Vorschläge haben, können Sie gerne ein Issue auf GitHub eröffnen .", + "about.iconLibrary": "Die verwendete Icon-Bibliothek ist urheberrechtlich geschützt von und darf nicht weiterverteilt werden.", + "about.licenseInfo": "{{appName}} ist und wird immer ein kostenloses und Open-Source-Projekt sein. Es steht unter der Lizenz {{license}}.", + "about.sidebar_title": "Über", + "about.socialMedia": "Soziale Medien", + "actions.actionName": "Aktion {{number}}", + "actions.action_card.add": "Hinzufügen", + "actions.action_card.all": "Alle", + "actions.action_card.block_rules": "Blockregeln", + "actions.action_card.custom_filters": "Benutzerdefinierte Filter", + "actions.action_card.enable_readability": "Lesbarkeit aktivieren", + "actions.action_card.entry_options.all": "Alle", + "actions.action_card.entry_options.author": "Autor", + "actions.action_card.entry_options.content": "Inhalt", + "actions.action_card.entry_options.order": "Reihenfolge", + "actions.action_card.entry_options.title": "Titel", + "actions.action_card.entry_options.url": "URL", + "actions.action_card.feed_options.category": "Kategorie", + "actions.action_card.feed_options.feed_url": "Feed-URL", + "actions.action_card.feed_options.site_url": "Website-URL", + "actions.action_card.feed_options.title": "Titel", + "actions.action_card.feed_options.view": "Ansicht", + "actions.action_card.field": "Feld", + "actions.action_card.from": "Von", + "actions.action_card.generate_summary": "Zusammenfassung mit KI erstellen", + "actions.action_card.name": "Name", + "actions.action_card.operation_options.contains": "enthält", + "actions.action_card.operation_options.does_not_contain": "enthält nicht", + "actions.action_card.operation_options.is_equal_to": "ist gleich", + "actions.action_card.operation_options.is_greater_than": "ist größer als", + "actions.action_card.operation_options.is_less_than": "ist kleiner als", + "actions.action_card.operation_options.is_not_equal_to": "ist nicht gleich", + "actions.action_card.operation_options.matches_regex": "entspricht Regex", + "actions.action_card.operator": "Operator", + "actions.action_card.rewrite_rules": "Umschreibregeln", + "actions.action_card.then_do": "Dann mache…", + "actions.action_card.to": "Zu", + "actions.action_card.translate_into": "Übersetzen in", + "actions.action_card.value": "Wert", + "actions.action_card.when_feeds_match": "Wenn Feeds übereinstimmen…", + "actions.newRule": "Neue Regel", + "actions.save": "Speichern", + "actions.saveSuccess": "🎉 Aktionen gespeichert.", + "actions.sidebar_title": "Aktionen", + "actions.title": "Aktionen", + "appearance.code_highlight_theme": "Code-Hervorhebungsthema", + "appearance.content": "Inhalt", + "appearance.content_font": "Schriftart für Inhalte", + "appearance.custom_font": "Benutzerdefinierte Schriftart", + "appearance.fonts": "Schriftarten", + "appearance.general": "Allgemein", + "appearance.guess_code_language.description": "Wichtige Programmiersprachen, die Modelle verwenden, um nicht gekennzeichnete Codeblöcke zu erkennen", + "appearance.guess_code_language.label": "Code-Sprache erraten", + "appearance.misc": "Sonstiges", + "appearance.modal_overlay.description": "Zeige modale Überlagerung", + "appearance.modal_overlay.label": "Modale Überlagerung anzeigen", + "appearance.opaque_sidebars.label": "Undurchsichtige Seitenleisten", + "appearance.reader_render_inline_style.description": "Ermöglicht das Rendern des Inline-Stils des ursprünglichen HTML.", + "appearance.reader_render_inline_style.label": "Inline-Stil rendern", + "appearance.reduce_motion.description": "Reduzierung der Bewegung von Elementen zur Leistungsverbesserung und Energieeinsparung", + "appearance.reduce_motion.label": "Bewegung reduzieren", + "appearance.save": "Speichern", + "appearance.show_dock_badge.label": "Als Dock-Abzeichen anzeigen", + "appearance.sidebar_show_unread_count.label": "Im Seitenmenü anzeigen", + "appearance.sidebar_title": "Aussehen", + "appearance.text_size": "Textgröße", + "appearance.theme.dark": "Dunkel", + "appearance.theme.label": "Thema", + "appearance.theme.light": "Hell", + "appearance.theme.system": "System", + "appearance.title": "Aussehen", + "appearance.ui_font": "UI-Schriftart", + "appearance.unread_count": "Ungelesene Anzahl", + "appearance.use_pointer_cursor.description": "Ändert den Cursor zu einem Zeiger, wenn über ein interaktives Element geschwebt wird.", + "appearance.use_pointer_cursor.label": "Zeiger-Cursor verwenden", + "common.give_star": "Lieben Sie unser Produkt? Geben Sie uns einen Stern auf GitHub!", + "feeds.claimTips": "Um Ihre Feeds zu beanspruchen und Tipps zu erhalten, klicken Sie mit der rechten Maustaste auf den Feed in Ihrer Abonnementliste und wählen Sie „Beanspruchen“.", + "feeds.noFeeds": "Keine beanspruchten Feeds", + "feeds.tableHeaders.entryCount": "Einträge", + "feeds.tableHeaders.name": "Name", + "feeds.tableHeaders.subscriptionCount": "Abonnements", + "feeds.tableHeaders.tipAmount": "Erhaltene Tipps", + "general.app": "App", + "general.data_persist.description": "Daten lokal speichern, um Offline-Zugriff und lokale Suche zu ermöglichen.", + "general.data_persist.label": "Daten für Offline-Nutzung speichern", + "general.group_by_date.description": "Einträge nach Datum gruppieren.", + "general.group_by_date.label": "Nach Datum gruppieren", + "general.language": "Sprache", + "general.launch_at_login": "Beim Start ausführen", + "general.mark_as_read.hover.description": "Einträge automatisch als gelesen markieren, wenn darüber geschwebt wird.", + "general.mark_as_read.hover.label": "Als gelesen markieren, wenn darüber geschwebt wird", + "general.mark_as_read.render.description": "Einträge auf einer Ebene (z. B. Social-Media-Posts, Bilder, Videoansichten) automatisch als gelesen markieren, wenn sie in den Ansichtsbereich gelangen.", + "general.mark_as_read.render.label": "Als gelesen markieren, wenn in der Ansicht", + "general.mark_as_read.scroll.description": "Einträge automatisch als gelesen markieren, wenn sie aus dem Ansichtsbereich gescrollt werden.", + "general.mark_as_read.scroll.label": "Als gelesen markieren, wenn gescrollt wird", + "general.network": "Netzwerk", + "general.privacy_data": "Datenschutz & Daten", + "general.proxy.description": "Proxy für Netzwerkverkehrsrouting einrichten, z.B. socks://proxy.beispiel.de:1080", + "general.proxy.label": "Proxy", + "general.rebuild_database.button": "Neu aufbauen", + "general.rebuild_database.description": "Wenn Sie Rendering-Probleme haben, kann das Neuaufbauen der Datenbank diese beheben.", + "general.rebuild_database.label": "Datenbank neu aufbauen", + "general.rebuild_database.title": "Datenbank neu aufbauen", + "general.rebuild_database.warning.line1": "Das Neuaufbauen der Datenbank löscht alle Ihre lokalen Daten.", + "general.rebuild_database.warning.line2": "Sind Sie sicher, dass Sie fortfahren möchten?", + "general.send_anonymous_data.description": "Wenn Sie sich für das Senden anonymisierter Telemetriedaten entscheiden, tragen Sie zur Verbesserung der Benutzererfahrung von Follow bei.", + "general.send_anonymous_data.label": "Anonyme Daten senden", + "general.show_unread_on_launch.description": "Ungelesene Inhalte beim Start anzeigen", + "general.show_unread_on_launch.label": "Ungelesene Inhalte beim Start anzeigen", + "general.sidebar_title": "Allgemein", + "general.timeline": "Zeitleiste", + "general.unread": "Ungelesen", + "general.voices": "Stimmen", + "integration.eagle.enable.description": "Zeige den Button „Medien zu Eagle speichern“, wenn verfügbar.", + "integration.eagle.enable.label": "Aktivieren", + "integration.eagle.title": "Eagle", + "integration.instapaper.enable.description": "Zeige den Button „Zu Instapaper speichern“, wenn verfügbar.", + "integration.instapaper.enable.label": "Aktivieren", + "integration.instapaper.password.label": "Instapaper Passwort", + "integration.instapaper.title": "Instapaper", + "integration.instapaper.username.label": "Instapaper Benutzername", + "integration.readwise.enable.description": "Zeige den Button „Zu Readwise speichern“, wenn verfügbar.", + "integration.readwise.enable.label": "Aktivieren", + "integration.readwise.title": "Readwise", + "integration.readwise.token.description": "Sie können es hier erhalten: readwise.io/access_token.", + "integration.readwise.token.label": "Readwise Zugangstoken", + "integration.sidebar_title": "Integration", + "integration.tip": "Tipp: Ihre sensiblen Daten werden lokal gespeichert und nicht auf den Server hochgeladen.", + "integration.title": "Integration", + "invitation.activate": "Aktivieren", + "invitation.codeOptions.betaUser": "1. Finden Sie einen Beta-Benutzer, der Sie einlädt.", + "invitation.codeOptions.discord": "2. Treten Sie unserem Discord-Server bei und erhalten Sie gelegentlich Geschenke.", + "invitation.codeOptions.xAccount": "3. Folgen Sie unserem X-Konto und erhalten Sie von Zeit zu Zeit Geschenke.", + "invitation.confirmModal.cancel": "Abbrechen", + "invitation.confirmModal.confirm": "Möchten Sie fortfahren?", + "invitation.confirmModal.continue": "Fortfahren", + "invitation.confirmModal.message": "Das Generieren eines Einladungscodes kostet Sie {{INVITATION_PRICE}} Power.", + "invitation.confirmModal.title": "Bestätigen", + "invitation.earlyAccess": "Follow befindet sich derzeit im Early Access und erfordert einen Einladungscode zur Nutzung.", + "invitation.earlyAccessMessage": "😰 Entschuldigung, Follow befindet sich derzeit im Early Access und erfordert einen Einladungscode zur Nutzung.", + "invitation.generateButton": "Neuen Code generieren", + "invitation.generateCost": "Sie können {{INVITATION_PRICE}} Power ausgeben, um einen Einladungscode für Ihre Freunde zu generieren.", + "invitation.getCodeMessage": "Sie können einen Einladungscode auf folgende Weise erhalten:", + "invitation.limitationMessage": "Basierend auf Ihrer Nutzungszeit können Sie bis zu {{limitation}} Einladungscodes generieren.", + "invitation.newInvitationSuccess": "🎉 Neuer Einladungscode generiert, Einladungscode wurde kopiert", + "invitation.noInvitations": "Keine Einladungen", + "invitation.notUsed": "Nicht benutzt", + "invitation.sidebar_title": "Einladungen", + "invitation.tableHeaders.code": "Code", + "invitation.tableHeaders.creationTime": "Erstellungszeit", + "invitation.tableHeaders.usedBy": "Verwendet von", + "invitation.title": "Einladungscode", + "lists.create": "Neue Liste erstellen", + "lists.created.error": "Liste konnte nicht erstellt werden.", + "lists.created.success": "Liste erfolgreich erstellt!", + "lists.description": "Beschreibung", + "lists.edit.error": "Bearbeitung der Liste fehlgeschlagen.", + "lists.edit.label": "Bearbeiten", + "lists.edit.success": "Liste erfolgreich bearbeitet!", + "lists.fee.description": "Die Gebühr, die andere zahlen müssen, um diese Liste zu abonnieren.", + "lists.fee.label": "Gebühr", + "lists.feeds.actions": "Aktionen", + "lists.feeds.add.error": "Feed konnte nicht zur Liste hinzugefügt werden.", + "lists.feeds.add.label": "Hinzufügen", + "lists.feeds.add.success": "Feed zur Liste hinzugefügt.", + "lists.feeds.delete.error": "Feed konnte nicht aus der Liste entfernt werden.", + "lists.feeds.delete.success": "Feed aus der Liste entfernt.", + "lists.feeds.id": "Feed-ID", + "lists.feeds.label": "Feeds", + "lists.feeds.manage": "Feeds verwalten", + "lists.feeds.owner": "Eigentümer", + "lists.feeds.search": "Feed suchen", + "lists.feeds.title": "Titel", + "lists.image": "Bild", + "lists.info": "Listen sind Sammlungen von Feeds, die Sie teilen oder verkaufen können, damit andere sie abonnieren können. Abonnenten werden alle Feeds in der Liste synchronisieren und darauf zugreifen.", + "lists.noLists": "Keine Listen", + "lists.submit": "Absenden", + "lists.title": "Titel", + "lists.view": "Ansehen", + "profile.avatar.label": "Avatar", + "profile.handle.description": "Ihre eindeutige Kennung.", + "profile.handle.label": "Handle", + "profile.name.description": "Ihr öffentlicher Anzeigename.", + "profile.name.label": "Anzeigename", + "profile.sidebar_title": "Profil", + "profile.submit": "Absenden", + "profile.title": "Profileinstellungen", + "profile.updateSuccess": "Profil aktualisiert.", + "titles.about": "Über", + "titles.actions": "Aktionen", + "titles.appearance": "Aussehen", + "titles.feeds": "Feeds", + "titles.general": "Allgemein", + "titles.integration": "Integration", + "titles.invitations": "Einladungen", + "titles.lists": "Listen", + "titles.power": "Power", + "titles.profile": "Profil", + "titles.shortcuts": "Verknüpfungen", + "wallet.address.title": "Ihre Adresse", + "wallet.balance.title": "Ihr Guthaben", + "wallet.balance.withdrawable": "Abhebbar", + "wallet.balance.withdrawableTooltip": "Abhebbare Power umfasst sowohl die erhaltenen Tipps als auch die aufgeladene Power.", + "wallet.claim.button.claim": "Tägliche Power beanspruchen", + "wallet.claim.button.claimed": "Heute beansprucht", + "wallet.claim.tooltip.alreadyClaimed": "Sie haben heute bereits beansprucht.", + "wallet.claim.tooltip.canClaim": "Beanspruchen Sie jetzt Ihre {{amount}} tägliche Power!", + "wallet.create.button": "Wallet erstellen", + "wallet.create.description": "Erstellen Sie eine kostenlose Wallet, um Power zu erhalten, die verwendet werden kann, um Ersteller zu belohnen und auch für Ihre Inhaltsbeiträge belohnt zu werden.", + "wallet.power.dailyClaim": "Sie können täglich {{amount}} kostenlose Power beanspruchen, die verwendet werden kann, um RSS-Einträge auf Follow zu belohnen.", + "wallet.power.description": "Power ist ein ERC-20-Token auf der {{blockchainName}}-Blockchain.", + "wallet.sidebar_title": "Power", + "wallet.transactions.amount": "Betrag", + "wallet.transactions.date": "Datum", + "wallet.transactions.from": "Von", + "wallet.transactions.noTransactions": "Keine Transaktionen", + "wallet.transactions.title": "Transaktionen", + "wallet.transactions.to": "An", + "wallet.transactions.tx": "Tx", + "wallet.transactions.type": "Typ", + "wallet.transactions.types.burn": "Verbrennen", + "wallet.transactions.types.mint": "Prägen", + "wallet.transactions.types.purchase": "Kauf", + "wallet.transactions.types.tip": "Tipp", + "wallet.transactions.types.withdraw": "Abheben", + "wallet.transactions.you": "Sie", + "wallet.withdraw.addressLabel": "Ihre Ethereum-Adresse", + "wallet.withdraw.amountLabel": "Betrag", + "wallet.withdraw.availableBalance": "Sie haben abhebbare Power in Ihrer Wallet.", + "wallet.withdraw.button": "Abheben", + "wallet.withdraw.error": "Abhebung fehlgeschlagen: {{error}}", + "wallet.withdraw.modalTitle": "Power abheben", + "wallet.withdraw.submitButton": "Absenden", + "wallet.withdraw.success": "Abhebung erfolgreich!" +} diff --git a/locales/shortcuts/de.json b/locales/shortcuts/de.json new file mode 100644 index 0000000000..ae0909d3ab --- /dev/null +++ b/locales/shortcuts/de.json @@ -0,0 +1,24 @@ +{ + "keys.audio.playPause": "Wiedergabe/Pause (Wenn der Audioplayer geöffnet ist)", + "keys.entries.markAllAsRead": "Alle als gelesen markieren", + "keys.entries.next": "Nächster Eintrag", + "keys.entries.previous": "Vorheriger Eintrag", + "keys.entries.refetch": "Erneut abrufen", + "keys.entries.toggleUnreadOnly": "Nur ungelesene anzeigen", + "keys.entry.copyLink": "Link kopieren", + "keys.entry.openInBrowser": "Im Browser öffnen", + "keys.entry.openInNewTab": "In neuem Tab öffnen", + "keys.entry.scrollDown": "Nach unten scrollen", + "keys.entry.scrollUp": "Nach oben scrollen", + "keys.entry.share": "Teilen", + "keys.entry.tip": "Trinkgeld geben", + "keys.entry.toggleRead": "Gelesen/Ungelesen umschalten", + "keys.entry.toggleStarred": "Markierung umschalten", + "keys.entry.tts": "Text-to-Speech abspielen", + "keys.feeds.add": "Abonnement hinzufügen", + "keys.feeds.switchBetweenViews": "Zwischen Ansichten wechseln", + "keys.feeds.switchToView": "Zur Ansicht wechseln", + "keys.layout.showShortcuts": "Kurzbefehle anzeigen/ausblenden", + "keys.layout.toggleSidebar": "Seitenleiste anzeigen/ausblenden", + "sidebar_title": "Kurzbefehle" +}