Skip to content

Commit

Permalink
feat(i18n): add de (#538)
Browse files Browse the repository at this point in the history
* feat(i18n): add de

* fix: error

* fix: order

---------

Co-authored-by: Innei <[email protected]>
  • Loading branch information
upupnoah and Innei authored Sep 26, 2024
1 parent 71bb323 commit da2e823
Show file tree
Hide file tree
Showing 10 changed files with 661 additions and 0 deletions.
2 changes: 2 additions & 0 deletions apps/renderer/src/@types/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// DONT EDIT THIS FILE MANUALLY
export const currentSupportedLanguages = [
"en",
"de",
"ja",
"zh-CN",
"zh-TW",
Expand Down Expand Up @@ -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")],
}
Expand Down
3 changes: 3 additions & 0 deletions apps/renderer/src/@types/default-resource.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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"
Expand Down Expand Up @@ -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 },
}
210 changes: 210 additions & 0 deletions locales/app/de.json
Original file line number Diff line number Diff line change
@@ -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 (<From /> - <To />), 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 <maintainers />",
"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 <code />-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"
}
29 changes: 29 additions & 0 deletions locales/common/de.json
Original file line number Diff line number Diff line change
@@ -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"
}
29 changes: 29 additions & 0 deletions locales/errors/de.json
Original file line number Diff line number Diff line change
@@ -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ß"
}
42 changes: 42 additions & 0 deletions locales/external/de.json
Original file line number Diff line number Diff line change
@@ -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."
}
}
21 changes: 21 additions & 0 deletions locales/lang/de.json
Original file line number Diff line number Diff line change
@@ -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"
}
Loading

0 comments on commit da2e823

Please sign in to comment.