doc: de lang
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
<style>
|
||||
body {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
height: 100dvh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<style>
|
||||
body {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
height: 100dvh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
|
||||
+1
-1
@@ -110,7 +110,7 @@
|
||||
background-color: rgba(2, 2, 2, 0.4);
|
||||
pointer-events: all;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
height: 100dvh;
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"login": {
|
||||
"title": "Anmelden bei {{name}}",
|
||||
"google": "Mit Google anmelden",
|
||||
"github": "Mit GitHub anmelden",
|
||||
"metamask": "Mit MetaMask anmelden",
|
||||
"password": "Mit Passwort anmelden",
|
||||
"oidc": "Mit OIDC anmelden",
|
||||
"no_account": "Kein Konto?"
|
||||
},
|
||||
"reg": {
|
||||
"title": "Registrieren bei {{name}}",
|
||||
"google": "Mit Google registrieren",
|
||||
"github": "Mit GitHub registrieren",
|
||||
"metamask": "Mit MetaMask registrieren",
|
||||
"oidc": "Mit OIDC registrieren",
|
||||
"have_account": "Konto vorhanden?",
|
||||
"input_name": "Dein Name",
|
||||
"input_name_tip": "Name oder Pseudonym für andere sichtbar in deinen Spaces."
|
||||
},
|
||||
"logout": {
|
||||
"title": "Abmelden",
|
||||
"desc": "Wirklich abmelden?",
|
||||
"clear_local": "Lokale Daten löschen",
|
||||
"role_changed": "Deine Rolle hat sich geändert. Neu anmelden?",
|
||||
"later": "Später"
|
||||
},
|
||||
"continue": "Mit E-Mail fortfahren",
|
||||
"placeholder_name": "Deinen Namen eingeben",
|
||||
"placeholder_email": "Deine E-Mail eingeben",
|
||||
"placeholder_pwd": "Passwort eingeben",
|
||||
"placeholder_confirm_pwd": "Passwort bestätigen",
|
||||
"check_email": "E-Mail prüfen",
|
||||
"check_email_desc": "Magic Link gesendet an <0>{{email}}</0>. Gültig für 15 Minuten.",
|
||||
"back_sign_in": "Zurück zur Anmeldung",
|
||||
"welcome": "Willkommen auf dem Server {{name}}",
|
||||
"guest_login_tip": "Zum Senden anmelden oder QR-Code scannen",
|
||||
"enter": "Anmelden bei ",
|
||||
"sign_in": "Anmelden",
|
||||
"sign_up": "Registrieren",
|
||||
"signing_up": "Wird registriert",
|
||||
"github_login_success": "GitHub-Anmeldung erfolgreich!",
|
||||
"github_logging_in": "Anmeldung läuft...",
|
||||
"github_cb_tip": "Schließe dieses Fenster und kehre zum Widget zurück",
|
||||
"magic_link_expire": {
|
||||
"title": "Magic Link ungültig/abgelaufen",
|
||||
"desc": "Bitte neuen Magic Link anfordern.",
|
||||
"desc_close": "Du kannst dieses Fenster jetzt schließen."
|
||||
},
|
||||
"invite_mobile": {
|
||||
"join": "Tritt unserem Server bei",
|
||||
"start_download": "Lade die VoceChat-App herunter",
|
||||
"open": "VoceChat öffnen",
|
||||
"have_already": "App bereits installiert?"
|
||||
},
|
||||
"invite_expire": {
|
||||
"min30": "30 Minuten",
|
||||
"h1": "1 Stunde",
|
||||
"h6": "6 Stunden",
|
||||
"h12": "12 Stunden",
|
||||
"d1": "1 Tag",
|
||||
"d7": "7 Tage",
|
||||
"d30": "30 Tage"
|
||||
},
|
||||
"invite_times": {
|
||||
"no_limit": "Unbegrenzt",
|
||||
"time1": "1 Nutzung",
|
||||
"times5": "5 Nutzungen",
|
||||
"times10": "10 Nutzungen",
|
||||
"times25": "25 Nutzungen",
|
||||
"times50": "50 Nutzungen",
|
||||
"times100": "100 Nutzungen"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"pin": "Anheften",
|
||||
"pin_desc": "Möchtest du diese Nachricht anheften an",
|
||||
"pinned_msg": "Angeheftete Nachricht",
|
||||
"pin_empty_tip": "Dieser Kanal hat noch keine angehefteten Nachrichten.",
|
||||
"fav": "Favorit",
|
||||
"fav_msg": "Gespeicherte Nachricht",
|
||||
"fav_empty_tip": "Dieser Kanal hat noch keine gespeicherten Nachrichten.",
|
||||
"channel_members": "Kanalmitglieder",
|
||||
"add_channel_members": "Mitglieder hinzufügen",
|
||||
"welcome_channel": "Willkommen in {{name}}",
|
||||
"welcome_desc": "Dies ist der Beginn des Kanals #{{name}}.",
|
||||
"edit_channel": "Kanal bearbeiten",
|
||||
|
||||
"channel_name": "Kanalname",
|
||||
"private_channel": "Privater Kanal",
|
||||
"create_channel": "Neuen Kanal erstellen",
|
||||
"create_channel_desc": "Dies ist ein öffentlicher Kanal, alle Teammitglieder können ihn sehen.",
|
||||
"create_private_channel_desc": "Dies ist ein privater Kanal, nur ausgewählte Mitglieder können beitreten.",
|
||||
"search_user_placeholder": "Benutzernamen zum Suchen eingeben",
|
||||
"welcome_msg": "Willkommen im Kanal {{name}}",
|
||||
|
||||
"invite_title": "Freunde zu {{name}} einladen",
|
||||
"invite_by_email": "Per E-Mail einladen",
|
||||
"enable_smtp": "Zuerst SMTP aktivieren",
|
||||
"send_invite_link": "Oder Sende Einladungslink an Freunde",
|
||||
"share_invite_link": "Teile diesen Link, um Personen zu diesem Server einzuladen.",
|
||||
"invite_link_faq": "Falscher Einladungslink?",
|
||||
"invite_link_edit": "Einladungslink bearbeiten",
|
||||
"invite_link_setting_tip": "Einladungslink läuft ab in {{expire}}, maximale Nutzungen: {{times}}",
|
||||
"generate_new_link": "Neuen Link generieren",
|
||||
|
||||
"send_to": "Senden an",
|
||||
"edited": "bearbeitet",
|
||||
"license_tip": "Deine Lizenz hat das Limit erreicht, aktualisiere die Lizenz oder kontaktiere den Admin!",
|
||||
|
||||
"delete_msg_title": "Nachricht löschen",
|
||||
"delete_msg_desc": "Bist du sicher, dass du {{msg}} löschen möchtest?",
|
||||
"delete_msg_this": "diese Nachricht",
|
||||
"delete_msg_these": "diese Nachrichten",
|
||||
|
||||
"new_msg": "{{num}} neue Nachrichten",
|
||||
"mark_read": "Als gelesen markieren",
|
||||
"pin_chat": "Chat anheften",
|
||||
"unpin_chat": "Lösen",
|
||||
|
||||
"reply_msg_del": "Diese Nachricht wurde gelöscht.",
|
||||
|
||||
"file": "Datei",
|
||||
"image": "Bild",
|
||||
"forward": "Weiterleiten",
|
||||
"voice_message": "Sprachnachricht",
|
||||
"voice": "Sprachanruf",
|
||||
"deafen": "Ton deaktivieren",
|
||||
"undeafen": "Ton aktivieren",
|
||||
"mute": "Stummschalten",
|
||||
"unmute": "Stummschaltung aufheben",
|
||||
"camera_on": "Kamera einschalten",
|
||||
"camera_off": "Kamera ausschalten",
|
||||
"leave_voice": "Sprachanruf verlassen",
|
||||
"add_contact": "Zu Kontakten hinzufügen",
|
||||
"block": "Blockieren",
|
||||
"unblock": "Entblockieren",
|
||||
"contact_tip": "Dieser Benutzer ist nicht in deinen Kontakten",
|
||||
"contact_block_tip": "Dieser Benutzer wurde von dir blockiert",
|
||||
"file_expired": "Datei abgelaufen",
|
||||
"only_owner_can_send": "Nur der Kanalbesitzer kann Nachrichten senden!",
|
||||
|
||||
"remark": "Spitzname hinzufügen",
|
||||
"remark_clear": "Spitzname zurücksetzen",
|
||||
"remark_intro": "Finde Freunde schneller mit einem persönlichen Spitznamen. Dieser ist nur für dich in deinen Direktnachrichten sichtbar.",
|
||||
"remark_placeholder": "Spitznamen festlegen"
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
{
|
||||
"chat": "Chat",
|
||||
"members": "Mitglieder",
|
||||
"favs": "Gespeichert",
|
||||
"files": "Dateien",
|
||||
"setting": "Einstellungen",
|
||||
"more": "Mehr",
|
||||
"action": {
|
||||
"login": "Anmelden",
|
||||
"re_login": "Neu anmelden",
|
||||
"logout": "Abmelden",
|
||||
"change_avatar": "Ändern",
|
||||
"cancel": "Abbrechen",
|
||||
"dismiss": "Verwerfen",
|
||||
"search": "Suchen",
|
||||
"search_user": "Nach Namen suchen",
|
||||
"new_channel": "Neuer Kanal",
|
||||
"new_private_channel": "Neuer privater Kanal",
|
||||
"new_msg": "Neue Nachricht",
|
||||
"invite_people": "Personen einladen",
|
||||
"search_people": "Personen suchen",
|
||||
"create": "Erstellen",
|
||||
"open": "Öffnen",
|
||||
"update": "Aktualisieren",
|
||||
"upload": "Hochladen",
|
||||
"done": "Fertig",
|
||||
"add": "Hinzufügen",
|
||||
"yes": "Ja",
|
||||
"delete_channel": "Kanal löschen",
|
||||
"remove": "Entfernen",
|
||||
"remove_user": "Benutzer entfernen",
|
||||
"edit": "Bearbeiten",
|
||||
"edit_msg": "Nachricht bearbeiten",
|
||||
"add_reaction": "Reaktion hinzufügen",
|
||||
"add_to_fav": "Zu Favoriten hinzufügen",
|
||||
"select": "Auswählen",
|
||||
"forward": "Weiterleiten",
|
||||
"reply": "Antworten",
|
||||
"pin": "Anheften",
|
||||
"unpin": "Lösen",
|
||||
"send": "Senden",
|
||||
"send_msg": "Nachricht",
|
||||
"copy": "Kopieren",
|
||||
"copy_email": "E-Mail kopieren",
|
||||
"mute": "Stummschalten",
|
||||
"unmute": "Stummschaltung aufheben",
|
||||
"mark_read": "Als gelesen markieren",
|
||||
"hide_session": "Sitzung ausblenden",
|
||||
"reload": "Neu laden",
|
||||
"install": "Installieren",
|
||||
"download_origin": "Original herunterladen",
|
||||
"close": "Schließen",
|
||||
"upgrade": "Upgrade",
|
||||
"view_pwd": "Passwort anzeigen",
|
||||
"change_pwd": "Passwort ändern"
|
||||
},
|
||||
"status": {
|
||||
"uploading": "Wird hochgeladen"
|
||||
},
|
||||
"tip": {
|
||||
"email_msg_tip": "E-Mail-Benachrichtigungen sind in deiner Region blockiert. Upgrade auf Pro für diese Funktion.",
|
||||
"update": "Erfolgreich aktualisiert!",
|
||||
"delete": "Erfolgreich gelöscht!",
|
||||
"reg": "Erfolgreich registriert!",
|
||||
"login": "Anmeldung erfolgreich!",
|
||||
"logout": "Abmeldung erfolgreich!",
|
||||
"pin": "Nachricht erfolgreich angeheftet!",
|
||||
"pwa_install_title": "Web-App auf Desktop installieren?",
|
||||
"pwa_install_desc": "Zum Desktop hinzufügen für schnellen Zugriff."
|
||||
},
|
||||
"new_version": "<0>Neue Version</0> verfügbar",
|
||||
"mobile_app": "Entdecke unsere <0>Mobile App</0>",
|
||||
"price": {
|
||||
"pro": {
|
||||
"title": "VoceChat Pro",
|
||||
"desc": "",
|
||||
"price": "$49"
|
||||
},
|
||||
"supreme": {
|
||||
"title": "VoceChat SDK-Anpassung",
|
||||
"desc": "",
|
||||
"price": ""
|
||||
}
|
||||
},
|
||||
"server_update": {
|
||||
"version_needed": "Diese Funktion benötigt Server-Version: <0>{{version}}</0> 🚨",
|
||||
"current_version": "Aktuelle Version: <0>{{version}}</0>",
|
||||
"update_tip": "Bitte Server upgraden!",
|
||||
"howto": "Anleitung zum Update"
|
||||
},
|
||||
"inactive": {
|
||||
"title": "Nur ein aktiver Tab für VoceChat erlaubt",
|
||||
"desc": "Lade diese Seite neu oder schließe sie"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"all_items": "Alle Elemente",
|
||||
"image": "Bilder",
|
||||
"video": "Videos",
|
||||
"audio": "Audios"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"from": "Von",
|
||||
"channel": "Kanal",
|
||||
"type": "Typ",
|
||||
"date": "Datum"
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"username": "Benutzername",
|
||||
"email": "E-Mail",
|
||||
"password": "Passwort",
|
||||
"delete_account": "Konto löschen",
|
||||
"change_name": "Benutzernamen ändern",
|
||||
"change_name_desc": "Neuen Benutzernamen eingeben",
|
||||
"change_email": "E-Mail ändern",
|
||||
"change_email_desc": "Neue E-Mail eingeben.",
|
||||
"change_pwd": "Passwort ändern",
|
||||
"change_pwd_desc": "Aktuelles und neues Passwort eingeben",
|
||||
"current_pwd": "Aktuelles Passwort",
|
||||
"new_pwd": "Neues Passwort",
|
||||
"confirm_new_pwd": "Neues Passwort bestätigen",
|
||||
|
||||
"manage_members": "Kontakte verwalten",
|
||||
"manage_tip": "Deaktivieren ermöglicht späteres Wiederherstellen des Kontos.",
|
||||
"admin": "Admin",
|
||||
"user": "Benutzer",
|
||||
"copy_email": "E-Mail kopieren",
|
||||
"send_msg": "Nachricht senden",
|
||||
"call": "Anrufen",
|
||||
"remove": "Vom Server entfernen",
|
||||
"remove_from_contact": "Aus Kontakten entfernen",
|
||||
"remove_account": "Konto entfernen",
|
||||
"remove_account_desc": "Dieses Konto wirklich entfernen?",
|
||||
"remove_from_channel": "Aus Kanal entfernen",
|
||||
"roles": "Rollen",
|
||||
"set_admin": "Admin",
|
||||
"set_normal": "Benutzer",
|
||||
|
||||
"search_not_found": "Nicht gefunden oder Suchberechtigung fehlt.",
|
||||
"search_by_id": "Nach ID suchen",
|
||||
"search_by_id_ph": "Benutzer-ID eingeben",
|
||||
"search_by_email": "Nach E-Mail suchen",
|
||||
"search_by_email_ph": "Benutzer-E-Mail eingeben",
|
||||
"search_by_name": "Nach Namen suchen",
|
||||
"search_by_name_ph": "Benutzernamen eingeben"
|
||||
}
|
||||
@@ -0,0 +1,334 @@
|
||||
{
|
||||
"title": "Einstellungen",
|
||||
"save_change": "Änderungen speichern",
|
||||
"reset": "Zurücksetzen",
|
||||
"save_tip": "Du hast ungespeicherte Änderungen!",
|
||||
"nav": {
|
||||
"general": "Allgemein",
|
||||
"overview": "Übersicht",
|
||||
"members": "Mitglieder",
|
||||
"data_management": "Datenverwaltung",
|
||||
"auto_delete_msg": "Nachrichten automatisch löschen",
|
||||
"user": "Benutzer",
|
||||
"my_account": "Mein Konto",
|
||||
"config": "Konfiguration",
|
||||
"bot": "Bot & Webhook",
|
||||
"firebase": "Firebase",
|
||||
"agora": "Agora",
|
||||
"smtp": "SMTP",
|
||||
"login_method": "Anmeldemethoden",
|
||||
"third_app": "Anmeldung über Drittanbieter",
|
||||
"widget": "Widget",
|
||||
"license": "Lizenz",
|
||||
"about": "Über",
|
||||
"api_doc": "API-Dokumentation",
|
||||
"version": "Version"
|
||||
},
|
||||
"channel": {
|
||||
"leave": "Kanal verlassen",
|
||||
"leave_desc": "Bist du sicher, dass du diesen Kanal verlassen möchtest?",
|
||||
"transfer_desc": "Du musst deine Kanalbesitzerschaft übertragen, bevor du den Kanal verlässt.",
|
||||
"delete": "Kanal löschen",
|
||||
"delete_desc": "Bist du sicher, dass du diesen Kanal löschen möchtest?",
|
||||
"id": "Kanal-ID",
|
||||
"name": "Kanalname",
|
||||
"topic": "Kanalthema",
|
||||
"topic_placeholder": "Informiere alle über die Nutzung dieses Kanals. (Markdown unterstützt)",
|
||||
"visibility": "Kanalsichtbarkeit",
|
||||
"public": "Öffentlich",
|
||||
"private": "Privat",
|
||||
"enable": "Aktivieren",
|
||||
"disable": "Deaktivieren",
|
||||
"allow": "Erlauben",
|
||||
"disallow": "Verbieten",
|
||||
"add_friend": "Freund hinzufügen",
|
||||
"dm_to_member": "DM an Mitglied",
|
||||
"show_email": "E-Mail anzeigen",
|
||||
"only_owner": "Nur Besitzer und Admin können Nachrichten senden"
|
||||
},
|
||||
"dm": {
|
||||
"delete": "Benutzer löschen",
|
||||
"delete_desc": "Bist du sicher, dass du diesen Benutzer löschen möchtest?"
|
||||
},
|
||||
"overview": {
|
||||
"title_feat": "Funktionen",
|
||||
"name": "Servername",
|
||||
"desc": "Serverbeschreibung",
|
||||
"upload_desc": "Mindestgröße 128x128, empfohlene Größe mindestens 512x512. Maximale Größe 5 MB.",
|
||||
"sign_up": {
|
||||
"title": "Standardregistrierung",
|
||||
"desc": "Wer kann sich auf diesem Server registrieren.",
|
||||
"everyone": "Jeder",
|
||||
"invite": "Nur mit Einladungslink"
|
||||
},
|
||||
"user_msg_notify": {
|
||||
"title": "Neue Nachrichtenbenachrichtigung per E-Mail",
|
||||
"desc": "Steuere, ob neue Nachrichten per E-Mail gesendet werden."
|
||||
},
|
||||
"server_msg_notify": {
|
||||
"title": "Neue Nachrichtenbenachrichtigung per E-Mail (Server)",
|
||||
"desc": "Benutzer können steuern, ob neue Nachrichten per E-Mail gesendet werden. SMTP muss zuerst aktiviert sein.",
|
||||
"delay_5_min": "Alle 5 Minuten",
|
||||
"delay_15_min": "Alle 15 Minuten",
|
||||
"delay_1_hour": "Jede Stunde",
|
||||
"delay_3_hour": "Alle 3 Stunden",
|
||||
"delay_12_hour": "Alle 12 Stunden"
|
||||
},
|
||||
"admin_create_group": {
|
||||
"title": "Nur Admins können Gruppen erstellen",
|
||||
"desc": "Wenn aktiviert, können nur Admins Gruppen erstellen.",
|
||||
"enable": "Aktivieren",
|
||||
"disable": "Deaktivieren"
|
||||
},
|
||||
"admin_see_group_members": {
|
||||
"title": "Nur Admins können Gruppenmitglieder sehen",
|
||||
"desc": "Wenn aktiviert, können nur Admins Gruppenmitglieder sehen.",
|
||||
"enable": "Aktivieren",
|
||||
"disable": "Deaktivieren"
|
||||
},
|
||||
"admin_only_can_invite": {
|
||||
"title": "Nur Admins können Benutzer einladen",
|
||||
"desc": "Wenn aktiviert, können nur Admins neue Mitglieder einladen.",
|
||||
"enable": "Aktivieren",
|
||||
"disable": "Deaktivieren"
|
||||
},
|
||||
"enable_msg_url_preview": {
|
||||
"title": "URL-Vorschau in Nachrichten aktivieren",
|
||||
"desc": "Wenn aktiviert, werden URLs in Nachrichten eine Vorschau anzeigen.",
|
||||
"enable": "Aktivieren",
|
||||
"disable": "Deaktivieren"
|
||||
},
|
||||
"guest_mode": {
|
||||
"title": "Gastmodus",
|
||||
"desc": "Wenn aktiviert, sehen Besucher öffentliche Kanäle auf diesem Server.",
|
||||
"enable": "Aktivieren",
|
||||
"disable": "Deaktivieren"
|
||||
},
|
||||
"url": {
|
||||
"title": "Frontend-URL aktualisieren",
|
||||
"desc": "Frontend-URL aktualisieren"
|
||||
},
|
||||
"lang": {
|
||||
"title": "Sprachen",
|
||||
"desc": "Systemsprache festlegen"
|
||||
},
|
||||
"theme": {
|
||||
"title": "Design",
|
||||
"desc": "Wähle dein Design",
|
||||
"auto": "Automatisch",
|
||||
"dark": "Dunkel",
|
||||
"light": "Hell"
|
||||
},
|
||||
"message_sound": {
|
||||
"title": "Nachrichtenton",
|
||||
"desc": "Ton bei Erhalt neuer Nachrichten abspielen.",
|
||||
"enable": "Aktivieren",
|
||||
"disable": "Deaktivieren"
|
||||
},
|
||||
"online_status": {
|
||||
"title": "Online-Status",
|
||||
"desc": "Wenn aktiviert, sehen Mitglieder den Online/Offline-Status anderer.",
|
||||
"enable": "Aktivieren",
|
||||
"disable": "Deaktivieren"
|
||||
},
|
||||
"chat_layout": {
|
||||
"title": "Chat-Layout",
|
||||
"desc": "Anzeigeseite für deine eigenen Nachrichten",
|
||||
"left": "Links",
|
||||
"self_right": "Rechts"
|
||||
},
|
||||
"contact_verify": {
|
||||
"title": "Kontaktüberprüfung",
|
||||
"desc": "Standardmäßig können sich alle Servermitglieder sehen. Um Kontaktverwaltung zu ermöglichen, aktiviere diese Funktion (Admins sind standardmäßig in der Kontaktliste).",
|
||||
"enable": "Aktivieren",
|
||||
"disable": "Deaktivieren"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"clear_files": {
|
||||
"title": "Datei- und Bilddaten",
|
||||
"desc": "Klicke unten, um alle Dateien und Bilder dieses Servers zu löschen.",
|
||||
"btn": "Dateidaten löschen"
|
||||
},
|
||||
"clear_msgs": {
|
||||
"title": "Alle Nachrichtendaten",
|
||||
"desc": "Klicke unten, um alle Chatdaten (Texte und Dateien) dieses Servers zu löschen.",
|
||||
"btn": "Chatdaten löschen"
|
||||
},
|
||||
"auto_delete_file": {
|
||||
"title": "Dateien automatisch löschen",
|
||||
"desc": "Ablaufzeit für Dateien auf diesem Server festlegen.",
|
||||
"confirm_desc": "Alle Dateien älter als die eingestellte Zeit werden gelöscht.",
|
||||
"off": "Aus",
|
||||
"day1": "1 Tag",
|
||||
"day7": "7 Tage",
|
||||
"day30": "30 Tage",
|
||||
"day90": "90 Tage",
|
||||
"day180": "180 Tage"
|
||||
}
|
||||
},
|
||||
"license": {
|
||||
"signed": "Signiert",
|
||||
"domain": "Domänen",
|
||||
"user_limit": "Benutzerlimit",
|
||||
"expire": "Läuft ab am",
|
||||
"create": "Erstellt am",
|
||||
"value": "Lizenzwert",
|
||||
"renew": "Lizenz verlängern",
|
||||
"update": "Manuell aktualisieren",
|
||||
"update_placeholder": "Neuen Lizenzwert eingeben",
|
||||
"renew_select": "Preis auswählen",
|
||||
"tip": {
|
||||
"title": "Chance auf kostenloses Lizenz-Upgrade!",
|
||||
"user_test": "Kostenloses Upgrade durch 25-minütigen Benutzertest",
|
||||
"contact": "Termin buchen: "
|
||||
},
|
||||
"payment_success": "Zahlung erfolgreich!",
|
||||
"back_home": "Zurück zur Startseite",
|
||||
"tip_renewing": "Lizenz wird verlängert – Fenster nicht schließen!",
|
||||
"tip_renewed": "Lizenz erfolgreich verlängert!",
|
||||
"tip_renew_error": "Ungültige Stripe-Sitzungs-ID",
|
||||
"tip_domain": "Die Lizenz ist an eine Domain (ohne Port) gebunden. Bitte bestätigen oder aktualisieren:",
|
||||
"tip_port": "Domain ohne Port eingeben.",
|
||||
"tip_confirm": "Zahlung starten"
|
||||
},
|
||||
"bot": {
|
||||
"add_api_key": "API-Schlüssel hinzufügen",
|
||||
"no_api_key": "Noch kein API-Schlüssel",
|
||||
"bot_tip_title": "Bots können Nachrichten an Kanäle senden.",
|
||||
"bot_tip_desc": "Hinweis: API-Schlüssel werden nach Generierung nicht erneut angezeigt. Neue Schlüssel können über „API-Schlüssel hinzufügen“ generiert werden (vorherige Schlüssel bleiben gültig).",
|
||||
"webhook_tip_title": "Webhooks empfangen Nachrichten aus einem Kanal und benötigen eine von dir bereitgestellte URL.",
|
||||
"webhook_tip_desc": "Gib eine Webhook-URL an, die 200 zurückgibt.",
|
||||
"manage": "Verwalten",
|
||||
"how_to_use": "Anleitung",
|
||||
"manage_desc": "Bots können jederzeit gelöscht werden. Der Bot-Benutzer wird sofort entfernt und alle APIs ungültig.",
|
||||
"create_title": "Bot erstellen",
|
||||
"create_desc": "Benenne deinen Bot. Optional: Webhook-URL für Datenempfang hinzufügen.",
|
||||
"create_key_title": "Bot-API-Schlüssel erstellen",
|
||||
"create_key_desc": "API-Schlüssel zur Authentifizierung erstellen",
|
||||
"create_key_warning": "Kopiere den Schlüssel jetzt! Du wirst ihn später nicht mehr sehen können.",
|
||||
"key_copy_and_close": "Kopieren und schließen",
|
||||
"delete_title": "Bot löschen",
|
||||
"delete_desc": "Bist du sicher, dass du den Bot löschen möchtest?",
|
||||
"delete_key_title": "Bot-API-Schlüssel löschen",
|
||||
"delete_key_desc": "Bist du sicher, dass du diesen Schlüssel löschen möchtest?",
|
||||
"webhook_title": "Webhook-URL aktualisieren",
|
||||
"webhook_desc": "Gültige URL eingeben",
|
||||
"col_avatar": "Avatar",
|
||||
"col_name": "Bot-Name",
|
||||
"col_api_key": "API-Schlüssel (Eingehend)",
|
||||
"col_webhook": "Webhook-URL (Ausgehend)",
|
||||
"col_opt": "Aktionen",
|
||||
"col_key_name": "Name",
|
||||
"col_key_value": "Schlüssel",
|
||||
"col_key_create_time": "Erstellt am",
|
||||
"col_key_last_used": "Zuletzt verwendet"
|
||||
},
|
||||
"auto_delete_msg": {
|
||||
"title": "Eigene Nachrichten nach Zeitraum löschen",
|
||||
"desc": "Löscht Nachrichten auf Server- und Client-Seite.",
|
||||
"off": "Aus",
|
||||
"5_min": "5 Minuten",
|
||||
"10_min": "10 Minuten",
|
||||
"1_hour": "1 Stunde",
|
||||
"1_day": "1 Tag",
|
||||
"1_week": "1 Woche",
|
||||
"clear": "Alle Kanalnachrichten löschen",
|
||||
"clear_title": "Alle Nachrichten in diesem Kanal löschen.",
|
||||
"clear_desc": "Löscht alle Nachrichten auf Server- und Client-Seite."
|
||||
},
|
||||
"firebase": {
|
||||
"desc": "Benachrichtigungen erfordern Google Firebase als Standardmethode.",
|
||||
"sub_desc": "Offizielle Konfiguration bereitgestellt. Stelle sicher, dass FCM von deinem Server/ Gerät erreichbar ist.",
|
||||
"disable": "Deaktivieren",
|
||||
"use_official": "Offizielle Konfiguration nutzen",
|
||||
"custom": "Benutzerdefiniert",
|
||||
"enable": "Aktivieren",
|
||||
"token_url": "Token-URL",
|
||||
"project_id": "Projekt-ID",
|
||||
"private_key": "Privater Schlüssel",
|
||||
"client_email": "Client-E-Mail"
|
||||
},
|
||||
"smtp": {
|
||||
"desc": "Für E-Mail-Benachrichtigungen (Pro-Funktion) und Anmeldungsbestätigungen wird SMTP benötigt.",
|
||||
"sub_desc": "SMTP-Einstellungen konfigurieren:",
|
||||
"enable": "Aktivieren",
|
||||
"host": "Host",
|
||||
"port": "Port",
|
||||
"from": "Absender",
|
||||
"username": "Benutzername",
|
||||
"password": "Passwort",
|
||||
"how_to": "SMTP einrichten?",
|
||||
"send_test_email": "Test-E-Mail senden"
|
||||
},
|
||||
"agora": {
|
||||
"desc": "Für Video-/Sprachanrufe nutzen wir Agora.",
|
||||
"sub_desc": "Jedes Agora-Projekt bietet 10.000 kostenlose Minuten/Monat. Erstelle ein Projekt und folge der Anleitung.",
|
||||
"enable": "Aktivieren",
|
||||
"how_to": "Agora einrichten?"
|
||||
},
|
||||
"third_app": {
|
||||
"key": "API-Sicherheitsschlüssel",
|
||||
"update": "Geheimnis aktualisieren",
|
||||
"update_tip": "API-Geheimnis wirklich aktualisieren? Vorheriges Geheimnis wird ungültig.",
|
||||
"key_tip": "Sicherheitsschlüssel für verschlüsselte Kommunikation zwischen Server und Drittanbieter-App.",
|
||||
"how_to": "Anleitung"
|
||||
},
|
||||
"login": {
|
||||
"password": "Passwort",
|
||||
"password_desc": "Anmeldung mit Passwort erlauben.",
|
||||
"magic_link": "Magic Link",
|
||||
"magic_link_desc": "Anmeldung mit Magic Link erlauben.",
|
||||
"google": "Google",
|
||||
"google_desc": "Anmeldung mit Google erlauben.",
|
||||
"github": "GitHub",
|
||||
"github_desc": "Anmeldung mit GitHub erlauben.",
|
||||
"metamask": "Metamask",
|
||||
"metamask_desc": "Anmeldung mit Metamask erlauben.",
|
||||
"oidc": "OIDC",
|
||||
"oidc_desc": "Anmeldung mit OIDC erlauben.",
|
||||
"oidc_custom": "Benutzerdefiniert",
|
||||
"more_details": "Details? Siehe <0>Dokumentation</0>."
|
||||
},
|
||||
"widget": {
|
||||
"tip": "Erweitere VoceChat mit dem Widget-SDK!",
|
||||
"code": "Codebeispiel",
|
||||
"code_comment": "Diesen Code in deine HTML-Datei einfügen",
|
||||
"config": "Konfigurationsbeschreibung",
|
||||
"param_key": "Parameter",
|
||||
"default_value": "Standardwert",
|
||||
"remark": "Hinweise",
|
||||
"custom_style_tip": "Für präzise Positionierung: Nutze die Widget-ID in deinem HTML/CSS:",
|
||||
"css_code_tip": "Eigenes CSS wird als Datei geladen",
|
||||
"param_id": "Widget-ID (Server ≥ v0.3.12)",
|
||||
"param_host": "Benutzer-ID für Chat-Partner",
|
||||
"param_title": "Chat-Popup-Titel",
|
||||
"param_logo": "Logo-URL des Popups",
|
||||
"param_auto_reg": "true: Automatische Registrierung, false: Manuelle Eingabe erforderlich",
|
||||
"param_login_token": "Login-Token für externe Nutzersysteme (siehe Dokumentation). Standard: leer lassen!",
|
||||
"param_theme_color": "Widget-Farbe",
|
||||
"param_close_width": "Breite (geschlossen)",
|
||||
"param_close_height": "Höhe (geschlossen)",
|
||||
"param_open_width": "Breite (geöffnet)",
|
||||
"param_open_height": "Höhe (geöffnet)",
|
||||
"param_welcome": "Benutzerdefinierte Willkommensnachricht",
|
||||
"param_position": "Position: links/rechts",
|
||||
"share_link": "Teile den Widget-Link für direkte Chats",
|
||||
"widget_faq": "„Alle dürfen beitreten“ zuerst aktivieren"
|
||||
},
|
||||
"version": {
|
||||
"client_version": "Client-Version",
|
||||
"server_version": "Server-Version",
|
||||
"build_time": "Build-Zeitstempel",
|
||||
"sync": "Auf neueste Webclient-Version synchronisieren"
|
||||
},
|
||||
"api_doc": {
|
||||
"desc": "Detaillierte API-Dokumentation zum Erstellen eigener Chat-Tools.",
|
||||
"access": "URL:",
|
||||
"use_method": "Anwendung:",
|
||||
"step_1": "Schritt 1: Eigene Server-URL eintragen",
|
||||
"step_2": "Schritt 2: Login-Token eingeben",
|
||||
"step_2_desc": "Token per X-API-Key-Header abrufen oder unten kopieren:",
|
||||
"last": "Jede API hat einen „Testen“-Button zur Debugging."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"title": "Willkommen auf dem Server {{name}}",
|
||||
"desc": "Hier sind erste Schritte für dich:",
|
||||
"invite": "Lade Freunde oder Teammitglieder ein",
|
||||
"start_by_channel": "Erstelle einen Kanal für Gespräche",
|
||||
"start_by_dm": "Sende eine Direktnachricht",
|
||||
"download": "Mobile Apps herunterladen",
|
||||
"help": "Fragen? Besuche unser Hilfe-Center",
|
||||
"sign_in_tip": "Zum Senden anmelden",
|
||||
"onboarding": {
|
||||
"title": "VoceChat-Einrichtung",
|
||||
"welcome": "Willkommen bei VoceChat!",
|
||||
"welcome_desc": "Dieser Bereich gehört dir. Lass uns beginnen!",
|
||||
"start": "Starten",
|
||||
"new_server": "Server benennen",
|
||||
"server_desc": "Server sind Umgebungen für Teamarbeit und Chats.",
|
||||
"placeholder_server": "Servernamen eingeben",
|
||||
"create_server": "Server erstellen",
|
||||
"admin_title": "Richte jetzt dein Admin-Konto ein",
|
||||
"admin_desc": "Du bist der erste Benutzer und Admin!",
|
||||
"sign": "Registrieren",
|
||||
"invite_title": "Letzter Schritt: Andere einladen!",
|
||||
"invite_desc": "Wer darf sich auf diesem Server registrieren?",
|
||||
"confirm": "Bestätigen",
|
||||
"done_welcome": "Willkommen auf {{serverName}}",
|
||||
"done_title": "Stolz präsentiert von VoceChat",
|
||||
"done_desc": "Weitere Einstellungen (Domain, Berechtigungen, Sicherheit) unter <0>Einstellungen</0>",
|
||||
"enter": "Starten",
|
||||
"last_tip": "Jetzt andere einladen!",
|
||||
"last_desc": "Sende Einladungslink an zukünftige Mitglieder:",
|
||||
"done": "Fertig",
|
||||
"welcome_page": "Willkommensseite",
|
||||
"set_name": "Namen festlegen",
|
||||
"admin_account": "Admin-Konto",
|
||||
"who_sign_up": "Registrierungsberechtigung",
|
||||
"invites": "Einladungen",
|
||||
"update_domain_tip": "Falsche Domain? Hier aktualisieren:"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"welcome": "👋 Hallo! Schön, dich kennenzulernen!",
|
||||
"placeholder_send": "Eingabe und Enter drücken",
|
||||
"start_chat": "Chat starten"
|
||||
}
|
||||
+8
-3
@@ -140,7 +140,7 @@ function build(previousFileSizes) {
|
||||
|
||||
messages = formatWebpackMessages({
|
||||
errors: [errMessage],
|
||||
warnings: []
|
||||
warnings: [],
|
||||
});
|
||||
} else {
|
||||
messages = formatWebpackMessages(
|
||||
@@ -178,7 +178,7 @@ function build(previousFileSizes) {
|
||||
const resolveArgs = {
|
||||
stats,
|
||||
previousFileSizes,
|
||||
warnings: messages.warnings
|
||||
warnings: messages.warnings,
|
||||
};
|
||||
|
||||
return resolve(resolveArgs);
|
||||
@@ -187,8 +187,13 @@ function build(previousFileSizes) {
|
||||
}
|
||||
|
||||
function copyPublicFolder() {
|
||||
const ignoreFiles = ["widget_demo.html", "CNAME", "email.tpl.html", "robots.txt"];
|
||||
fs.copySync(paths.appPublic, paths.appBuild, {
|
||||
dereference: true,
|
||||
filter: (file) => file !== paths.appHtml
|
||||
filter: (file) => {
|
||||
const [fileName] = file.split("/").slice(-1);
|
||||
const filters = file !== paths.appHtml && !ignoreFiles.includes(fileName);
|
||||
return filters;
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ import { PlateEditor } from "@udecode/plate-common";
|
||||
|
||||
const Modes = {
|
||||
text: "text",
|
||||
markdown: "markdown"
|
||||
markdown: "markdown",
|
||||
};
|
||||
interface IProps {
|
||||
context?: ChatContext;
|
||||
@@ -35,20 +35,20 @@ interface IProps {
|
||||
const Send: FC<IProps> = ({
|
||||
// 发给谁,或者是 channel,或者是 user
|
||||
context = "channel",
|
||||
id
|
||||
id,
|
||||
}) => {
|
||||
const editorRef = useRef<PlateEditor | null>(null);
|
||||
|
||||
const { t } = useTranslation("chat");
|
||||
const { unblockThisContact, blocked, isChannelOwner } = useUserOperation({
|
||||
uid: context == "dm" ? id : undefined,
|
||||
cid: context == "channel" ? id : undefined
|
||||
cid: context == "channel" ? id : undefined,
|
||||
});
|
||||
const { resetStageFiles } = useUploadFile({ context, id });
|
||||
const { getDraft, getUpdateDraft } = useDraft({ context, id });
|
||||
const [msg, setMsg] = useState<MessageWithMentions>({
|
||||
text: "",
|
||||
mentions: []
|
||||
mentions: [],
|
||||
});
|
||||
const [markdownEditor, setMarkdownEditor] = useState(null);
|
||||
const [markdownFullscreen, setMarkdownFullscreen] = useState(false);
|
||||
@@ -95,7 +95,7 @@ const Send: FC<IProps> = ({
|
||||
type: "text",
|
||||
content: text,
|
||||
from_uid,
|
||||
properties
|
||||
properties,
|
||||
});
|
||||
}
|
||||
// send files
|
||||
@@ -112,10 +112,10 @@ const Send: FC<IProps> = ({
|
||||
content_type: type,
|
||||
name,
|
||||
size,
|
||||
local_id: ts
|
||||
local_id: ts,
|
||||
},
|
||||
from_uid,
|
||||
sending: true
|
||||
sending: true,
|
||||
};
|
||||
addLocalFileMessage(tmpMsg);
|
||||
});
|
||||
@@ -129,7 +129,7 @@ const Send: FC<IProps> = ({
|
||||
type: "markdown",
|
||||
content,
|
||||
from_uid,
|
||||
properties: { local_id: +new Date() }
|
||||
properties: { local_id: +new Date() },
|
||||
});
|
||||
};
|
||||
const toggleMode = () => {
|
||||
@@ -213,7 +213,7 @@ const Send: FC<IProps> = ({
|
||||
<MarkdownEditor
|
||||
updateDraft={getUpdateDraft("markdown")}
|
||||
initialValue={getDraft("markdown")}
|
||||
height={markdownFullscreen ? `calc(100vh - 168px)` : `30vh`}
|
||||
height={markdownFullscreen ? `calc(100dvh - 168px)` : `30vh`}
|
||||
placeholder={placeholder}
|
||||
setEditorInstance={setMarkdownEditor}
|
||||
sendMarkdown={sendMarkdown}
|
||||
|
||||
@@ -5,14 +5,13 @@ import "dayjs/locale/ja";
|
||||
import "dayjs/locale/fr";
|
||||
import "dayjs/locale/pt";
|
||||
import "dayjs/locale/tr";
|
||||
import "dayjs/locale/de";
|
||||
import "dayjs/locale/es";
|
||||
import duration from "dayjs/plugin/duration";
|
||||
import isToday from "dayjs/plugin/isToday";
|
||||
import isYesterday from "dayjs/plugin/isYesterday";
|
||||
import relativeTime from "dayjs/plugin/relativeTime";
|
||||
|
||||
// import i18n from '../i18n';
|
||||
|
||||
dayjs.extend(duration);
|
||||
dayjs.extend(relativeTime);
|
||||
dayjs.extend(isToday);
|
||||
|
||||
@@ -5,13 +5,14 @@ import SettingBlock from "@/components/SettingBlock";
|
||||
import StyledRadio from "@/components/styled/Radio";
|
||||
|
||||
// type Props = {}
|
||||
export type LanguageType = "en" | "zh" | "jp" | "tr" | "pt" | "es" | "fr" | "ru";
|
||||
export type LanguageType = "en" | "zh" | "jp" | "tr" | "pt" | "es" | "fr" | "ru" | "de";
|
||||
export const LangMap: Record<LanguageType, string> = {
|
||||
en: "English",
|
||||
zh: "中文",
|
||||
tr: "Türkçe",
|
||||
jp: "日本語",
|
||||
pt: "Portuguese",
|
||||
de: "Deutsch",
|
||||
fr: "Français",
|
||||
es: "Español",
|
||||
ru: "Русский",
|
||||
|
||||
@@ -5,13 +5,14 @@ import SettingBlock from "@/components/SettingBlock";
|
||||
import StyledRadio from "@/components/styled/Radio";
|
||||
|
||||
// type Props = {}
|
||||
export type LanguageType = "en" | "zh" | "jp" | "tr" | "pt" | "es" | "fr" | "ru";
|
||||
export type LanguageType = "en" | "zh" | "jp" | "tr" | "pt" | "es" | "fr" | "ru" | "de";
|
||||
export const LangMap: Record<LanguageType, string> = {
|
||||
en: "English",
|
||||
zh: "中文",
|
||||
tr: "Türkçe",
|
||||
jp: "日本語",
|
||||
pt: "Portuguese",
|
||||
de: "Deutsch",
|
||||
fr: "Français",
|
||||
es: "Español",
|
||||
ru: "Русский",
|
||||
|
||||
@@ -33,7 +33,7 @@ const Index = ({ handleClose, hostId }: Props) => {
|
||||
"flex flex-col bg-white dark:bg-gray-700 rounded-md overflow-hidden",
|
||||
embed
|
||||
? "w-full h-full"
|
||||
: `w-full h-full md:max-w-lg md:h-[calc(100vh_-_20px)] m-auto md:my-2 md:shadow-lg rounded-none md:rounded-md`
|
||||
: `w-full h-full md:max-w-lg md:h-[calc(100dvh_-_20px)] m-auto md:my-2 md:shadow-lg rounded-none md:rounded-md`
|
||||
)}
|
||||
>
|
||||
<Header handleClose={handleClose} />
|
||||
|
||||
Reference in New Issue
Block a user