0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-03-10 22:22:45 -05:00

feat(phrases): add german language (#2053)

This commit is contained in:
Lukas 2022-11-03 10:16:44 +01:00 committed by GitHub
parent 20dbc8a83e
commit 492ce312be
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
29 changed files with 924 additions and 6 deletions

View file

@ -4,6 +4,7 @@ import { languages } from '@logto/language-kit';
import type { NormalizeKeyPaths } from '@silverhand/essentials';
import { z } from 'zod';
import de from './locales/de';
import en from './locales/en';
import fr from './locales/fr';
import ko from './locales/ko';
@ -16,7 +17,7 @@ export type { LocalePhrase } from './types';
export type I18nKey = NormalizeKeyPaths<typeof en.translation>;
export const builtInLanguages = ['en', 'fr', 'pt-PT', 'zh-CN', 'ko', 'tr-TR'] as const;
export const builtInLanguages = ['de', 'en', 'fr', 'ko', 'pt-PT', 'tr-TR', 'zh-CN'] as const;
export const builtInLanguageOptions = builtInLanguages.map((languageTag) => ({
value: languageTag,
@ -30,12 +31,13 @@ export type BuiltInLanguageTag = z.infer<typeof builtInLanguageTagGuard>;
export type Resource = Record<BuiltInLanguageTag, LocalePhrase>;
const resource: Resource = {
de,
en,
fr,
'pt-PT': ptPT,
'zh-CN': zhCN,
ko,
'pt-PT': ptPT,
'tr-TR': trTR,
'zh-CN': zhCN,
};
export const getDefaultLanguageTag = (language: string): LanguageTag =>

View file

@ -0,0 +1,90 @@
import type { LocalePhrase } from '../types';
const translation = {
input: {
username: 'Benutzername',
password: 'Passwort',
email: 'Email',
phone_number: 'Telefonnummer',
confirm_password: 'Passwort bestätigen',
},
secondary: {
sign_in_with: 'Anmelden mit {{methods, list(type: disjunction;)}}',
social_bind_with:
'Besitzt du schon ein Konto? Melde dich an, um {{methods, list(type: disjunction;)}} mit deiner Identität zu verbinden.',
},
action: {
sign_in: 'Anmelden',
continue: 'Weiter',
create_account: 'Konto erstellen',
create: 'Erstellen',
enter_passcode: 'Bestätigungscode eingeben',
confirm: 'Bestätigen',
cancel: 'Abbrechen',
save_password: 'Speichern',
bind: 'Mit {{address}} verknüpfen',
back: 'Gehe zurück',
nav_back: 'Zurück',
agree: 'Zustimmen',
got_it: 'Alles klar',
sign_in_with: 'Mit {{name}} anmelden',
forgot_password: 'Passwort vergessen?',
switch_to: 'Zu {{method}} wechseln',
},
description: {
email: 'Email',
phone_number: 'Telefonnummer',
reminder: 'Erinnerung',
not_found: '404 Nicht gefunden',
agree_with_terms: 'Ich akzeptiere die ',
agree_with_terms_modal: 'Bitte akzeptiere die <link></link>.',
terms_of_use: 'Nutzungsbedingungen',
create_account: 'Konto erstellen',
or: 'oder',
enter_passcode: 'Der Bestätigungscode wurde an deine {{address}} gesendet',
passcode_sent: 'Der Bestätigungscode wurde erneut gesendet',
resend_after_seconds: 'Nach <span>{{seconds}}</span> Sekunden erneut senden',
resend_passcode: 'Bestätigungscode erneut senden',
continue_with: 'Weiter mit',
create_account_id_exists:
'Das Konto mit {{type}} {{value}} existiert bereits, möchtest du dich anmelden?',
sign_in_id_does_not_exists:
'Das Konto mit {{type}} {{value}} existiert nicht, möchtest du ein neues Konto erstellen?',
forgot_password_id_does_not_exits: 'Das Konto mit {{type}} {{value}} existiert nicht.',
bind_account_title: 'Konto verknüpfen',
social_create_account: 'Kein Konto? Du kannst ein neues Konto erstellen und es verknüpfen.',
social_bind_account:
'Besitzt du schon ein Konto? Melde dich an, um die Identität zu verknüpfen.',
social_bind_with_existing: 'Wir haben ein Konto gefunden, das du verknüpfen kannst.',
reset_password: 'Passwort zurücksetzen',
reset_password_description_email:
'Gib die Email Adresse deines Kontos ein und wir senden dir einen Bestätigungscode um dein Passwort zurückzusetzen.',
reset_password_description_sms:
'Gib die Telefonnummer deines Kontos ein und wir senden dir einen Bestätigungscode um dein Passwort zurückzusetzen.',
new_password: 'Neues Passwort',
password_changed: 'Passwort geändert',
},
error: {
username_password_mismatch: 'Benutzername oder Passwort ist falsch',
username_required: 'Benutzername ist erforderlich',
password_required: 'Passwort ist erforderlich',
username_exists: 'Benutzername existiert bereits',
username_should_not_start_with_number: 'Benutzername darf nicht mit einer Zahl beginnen',
username_valid_charset: 'Benutzername darf nur Buchstaben, Zahlen und Unterstriche enthalten',
invalid_email: 'Die Email ist ungültig',
invalid_phone: 'Die Telefonnummer ist ungültig',
password_min_length: 'Passwort muss mindestens {{min}} Zeichen lang sein',
passwords_do_not_match: 'Passwörter stimmen nicht überein',
invalid_passcode: 'Der Bestätigungscode ist ungültig',
invalid_connector_auth: 'Die Autorisierung ist ungültig',
invalid_connector_request: 'Connector Daten sind ungültig',
unknown: 'Unbekannter Fehler. Versuche es später noch einmal.',
invalid_session: 'Die Sitzung ist ungültig. Bitte melde dich erneut an.',
},
};
const de: LocalePhrase = Object.freeze({
translation,
});
export default de;

View file

@ -4,6 +4,7 @@ import { languages } from '@logto/language-kit';
import type { NormalizeKeyPaths } from '@silverhand/essentials';
import { z } from 'zod';
import de from './locales/de';
import en from './locales/en';
import fr from './locales/fr';
import ko from './locales/ko';
@ -16,7 +17,7 @@ export type { LocalPhrase } from './types';
export type I18nKey = NormalizeKeyPaths<typeof en.translation>;
export const builtInLanguages = ['en', 'fr', 'pt-PT', 'zh-CN', 'ko', 'tr-TR'] as const;
export const builtInLanguages = ['de', 'en', 'fr', 'ko', 'pt-PT', 'tr-TR', 'zh-CN'] as const;
export const builtInLanguageOptions = builtInLanguages.map((languageTag) => ({
value: languageTag,
@ -42,12 +43,13 @@ export const isBuiltInLanguageTag = (language: string): language is BuiltInLangu
export type Resource = Record<BuiltInLanguageTag, LocalPhrase>;
const resource: Resource = {
de,
en,
fr,
'pt-PT': ptPT,
'zh-CN': zhCN,
ko,
'pt-PT': ptPT,
'tr-TR': trTR,
'zh-CN': zhCN,
};
export default resource;

View file

@ -0,0 +1,133 @@
const errors = {
auth: {
authorization_header_missing: 'Autorisierungs-Header fehlt.',
authorization_token_type_not_supported: 'Autorisierungs-Typ wird nicht unterstützt.',
unauthorized: 'Unautorisiert. Bitte überprüfe deine Zugangsdaten.',
forbidden: 'Verboten. Bitte überprüfe deine Rollen und Berechtigungen.',
expected_role_not_found:
'Erwartete Rolle nicht gefunden. Bitte überprüfe deine Rollen und Berechtigungen.',
jwt_sub_missing: '`sub` fehlt in JWT.',
},
guard: {
invalid_input: 'Die Anfrage {{type}} ist ungültig.',
invalid_pagination: 'Die Paginierung der Anfrage ist ungültig.',
},
oidc: {
aborted: 'Der Endnutzer hat die Interaktion abgebrochen.',
invalid_scope: 'Scope {{scope}} wird nicht unterstützt.',
invalid_scope_plural: 'Scopes {{scopes}} werden nicht unterstützt.',
invalid_token: 'Ungültiger Token übermittelt.',
invalid_client_metadata: 'Ungültige Client Metadaten übermittelt.',
insufficient_scope: 'Access token fehlen angefragte scope {{scopes}}.',
invalid_request: 'Anfrage ist ungültig.',
invalid_grant: 'Grant request ist ungültig.',
invalid_redirect_uri:
'`redirect_uri` stimmt nicht mit den registrierten `redirect_uris` des Clients überein.',
access_denied: 'Zugang verweigert.',
invalid_target: 'Ungültiger resource indicator.',
unsupported_grant_type: 'Nicht unterstützter `grant_type` angefragt.',
unsupported_response_mode: 'Nicht unterstützter `response_mode` angefragt.',
unsupported_response_type: 'Nicht unterstützter `response_type` angefragt.',
provider_error: 'OIDC interner Fehler: {{message}}.',
},
user: {
username_exists_register: 'Der Benutzername wurde registriert.',
email_exists_register: 'Die E-Mail wurde registriert.',
phone_exists_register: 'Die Telefonnummer wurde registriert.',
invalid_email: 'Ungültige E-Mail.',
invalid_phone: 'Ungültige Telefonnummer.',
email_not_exists: 'Die E-Mail wurde noch nicht registriert.',
phone_not_exists: 'Die Telefonnummer wurde noch nicht registriert.',
identity_not_exists: 'Die Identität wurde noch nicht registriert.',
identity_exists: 'Die Identität wurde registriert.',
invalid_role_names: 'Rollennamen ({{roleNames}}) sind ungültig',
cannot_delete_self: 'Du kannst dich nicht selbst löschen.',
same_password: 'Das neue Passwort muss sich vom alten unterscheiden.',
},
password: {
unsupported_encryption_method: 'Die Verschlüsselungsmethode {{name}} wird nicht unterstützt.',
pepper_not_found: 'Password pepper not found. Please check your core envs.',
},
session: {
not_found: 'Sitzung nicht gefunden. Bitte melde dich erneut an.',
invalid_credentials: 'Ungültige Zugangsdaten. Überprüfe deine Eingaben.',
invalid_sign_in_method: 'Aktuelle Anmeldemethode ist ungültig.',
invalid_connector_id: 'Connector mit ID {{connectorId}} wurde nicht gefunden.',
insufficient_info: 'Unzureichende Informationen für die Anmeldung.',
connector_id_mismatch: 'Connector ID stimmt nicht mit Sitzung überein.',
connector_session_not_found: 'Connector Sitzung nicht gefunden. Bitte melde dich erneut an.',
verification_session_not_found:
'Die Verifizierung war nicht erfolgreich. Starte die Verifizierung neu und versuche es erneut.',
verification_expired:
'Die Verbindung wurde unterbrochen. Verifiziere erneut, um die Sicherheit deines Kontos zu gewährleisten.',
unauthorized: 'Bitte melde dich erst an.',
unsupported_prompt_name: 'Nicht unterstützter prompt Name.',
},
connector: {
// UNTRANSLATED
general: 'An unexpected error occurred in connector.{{errorDescription}}',
not_found: 'Cannot find any available connector for type: {{type}}.',
not_enabled: 'The connector is not enabled.',
invalid_metadata: "The connector's metadata is invalid.",
invalid_config_guard: "The connector's config guard is invalid.",
unexpected_type: "The connector's type is unexpected.",
invalid_request_parameters: 'The request is with wrong input parameter(s).',
insufficient_request_parameters: 'The request might miss some input parameters.',
invalid_config: "The connector's config is invalid.",
invalid_response: "The connector's response is invalid.",
template_not_found: 'Unable to find correct template in connector config.',
not_implemented: '{{method}}: has not been implemented yet.',
social_invalid_access_token: "The connector's access token is invalid.",
invalid_auth_code: "The connector's auth code is invalid.",
social_invalid_id_token: "The connector's id token is invalid.",
authorization_failed: "The user's authorization process is unsuccessful.",
social_auth_code_invalid: 'Unable to get access token, please check authorization code.',
more_than_one_sms: 'The number of SMS connectors is larger then 1.',
more_than_one_email: 'The number of Email connectors is larger then 1.',
db_connector_type_mismatch: 'There is a connector in the DB that does not match the type.',
},
passcode: {
phone_email_empty: 'Telefonnummer oder E-Mail darf nicht leer sein.',
not_found: 'Passcode nicht gefunden. Bitte sende erst einen Passcode.',
phone_mismatch:
'Telefonnummer stimmt nicht mit Passcode überein. Frage einen neuen Passcode an.',
email_mismatch: 'E-Mail stimmt nicht mit Passcode überein. Frage einen neuen Passcode an.',
code_mismatch: 'Ungültiger Passcode.',
expired: 'Passcode ist abgelaufen. Frage einen neuen Passcode an.',
exceed_max_try: 'Passcode wurde zu oft versucht. Frage einen neuen Passcode an.',
},
sign_in_experiences: {
empty_content_url_of_terms_of_use:
'Leere "Nutzungsbedingungen" URL. Bitte füge die URL hinzu, wenn "Nutzungsbedingungen" aktiviert ist.',
empty_logo: 'Bitte füge eine Logo URL hinzu.',
empty_slogan:
'Leerer Branding-Slogan. Bitte füge einen Branding-Slogan hinzu, wenn ein UI-Stil ausgewählt wird, der den Slogan enthält.',
empty_social_connectors:
'Leere Social Connectors. Bitte füge aktivierte Social Connectoren hinzu, wenn Social Anmeldung aktiviert ist.',
enabled_connector_not_found: 'Aktivierter {{type}} Connector nicht gefunden.',
not_one_and_only_one_primary_sign_in_method:
'Es darf nur eine primäre Anmeldemethode geben. Bitte überprüfe deine Eingabe.',
unsupported_default_language: 'Die Sprache - {{language}} wird momentan nicht unterstützt.',
},
localization: {
cannot_delete_default_language:
'{{languageTag}} ist die Standard-Sprache und kann nicht gelöscht werden.',
invalid_translation_structure: 'Ungültige Übersetzungsstruktur. Bitte überprüfe deine Eingabe.',
},
swagger: {
invalid_zod_type: 'Ungültiger Zod Typ. Überprüfe deine route guard Konfiguration.',
not_supported_zod_type_for_params:
'Nicht unterstützter Zod Typ für diese Parameter. Überprüfe deine route guard Konfiguration.',
},
entity: {
create_failed: 'Fehler beim erstellen von {{name}}.',
not_exists: '{{name}} existiert nicht.',
not_exists_with_id: '{{name}} mit ID `{{id}}` existiert nicht.',
not_found: 'Die Ressource wurde nicht gefunden.',
},
log: {
invalid_type: 'Der Log Typ ist ungültig.',
},
};
export default errors;

View file

@ -0,0 +1,10 @@
import type { LocalPhrase } from '../../types';
import errors from './errors';
import translation from './translation';
const de: LocalPhrase = Object.freeze({
translation,
errors,
});
export default de;

View file

@ -0,0 +1,11 @@
const api_resource_details = {
back_to_api_resources: 'Zurück zu API Ressourcen',
token_expiration_time_in_seconds: 'Token Ablaufzeit (in Sekunden)',
token_expiration_time_in_seconds_placeholder: 'Gib die Ablaufzeit des Tokens ein',
delete_description:
'Diese Aktion kann nicht rückgängig gemacht werden. Die API Ressource wird permanent gelöscht. Bitte gib den API Ressourcennamen <span>{{name}}</span> zur Bestätigung ein.',
enter_your_api_resource_name: 'Gib einen API Ressourcennamen ein',
api_resource_deleted: 'Die API Ressource {{name}} wurde erfolgreich gelöscht',
};
export default api_resource_details;

View file

@ -0,0 +1,14 @@
const api_resources = {
title: 'API Ressourcen',
subtitle: 'Lege APIs an, die du in deinen autorisierten Anwendungen verwenden kannst',
create: 'Erstelle API Ressource',
api_name: 'API Name',
api_name_placeholder: 'Gib einen API Namen ein',
api_identifier: 'API Identifikator',
api_identifier_tip:
'Der eindeutige Identifikator der API Ressource muss eine absolute URI ohne Fragmentbezeichner (#) sein. Entspricht dem Ressourcen Parameter in OAuth 2.0.',
api_resource_created: 'Die API Ressource {{name}} wurde erfolgreich angelegt',
api_identifier_placeholder: 'https://dein-api-identifikator/',
};
export default api_resources;

View file

@ -0,0 +1,44 @@
const application_details = {
back_to_applications: 'Zurück zu Anwendungen',
check_guide: 'Zur Anleitung',
advanced_settings: 'Erweiterte Einstellungen',
application_name: 'Anwendungsname',
application_name_placeholder: 'Meine App',
description: 'Beschreibung',
description_placeholder: 'Gib eine Beschreibung ein',
authorization_endpoint: 'Autorisierungs-Endpoint',
authorization_endpoint_tip:
'Der Endpoint, der für die Authentifizierung und Autorisierung via OpenID Connect verwendet wird.',
application_id: 'App ID',
application_secret: 'App Geheimnis',
redirect_uri: 'Umleitungs-URI',
redirect_uris: 'Umleitungs-URIs',
redirect_uri_placeholder: 'https://deine.website.de/app',
redirect_uri_placeholder_native: 'io.logto://callback',
redirect_uri_tip:
'URI zu der der Benutzer nach der Anmeldung (egal ob erfolgreich oder nicht) weitergeleitet wird. See OpenID Connect AuthRequest for more info.',
post_sign_out_redirect_uri: 'Post Sign-out Umleitungs-URI',
post_sign_out_redirect_uris: 'Post Sign-out Umleitungs-URIs',
post_sign_out_redirect_uri_placeholder: 'https://deine.website.de/home',
post_sign_out_redirect_uri_tip:
'URI zu der der Benutzer nach dem Abmelden weitergeleitet wird (optional). Hat bei einigen Anwendungstypen keine Auswirkungen.',
cors_allowed_origins: 'CORS allowed origins',
cors_allowed_origins_placeholder: 'https://your.website.de',
cors_allowed_origins_tip:
'Es sind standardmäßig alle Umleitungs-URI Origins erlaubt. Normalerweise ist dieses Feld nicht erforderlich.',
add_another: 'Weitere hinzufügen',
id_token_expiration: 'ID Token Ablaufzeit',
refresh_token_expiration: 'Refresh Token Ablaufzeit',
token_endpoint: 'Token Endpoint',
user_info_endpoint: 'Benutzerinformations-Endpoint',
enable_admin_access: 'Admin-Zugang aktivieren',
enable_admin_access_label:
'Zugang zur Management API aktivieren oder deaktivieren. Falls aktiviert, können access tokens verwendet werden, um die Management API im Namen der Anwendung aufzurufen.',
delete_description:
'Diese Aktion kann nicht rückgängig gemacht werden. Die Anwendung wird permanent gelöscht. Bitte gib den Anwendungsnamen <span>{{name}}</span> zur Bestätigung ein.',
enter_your_application_name: 'Gib einen Anwendungsnamen ein',
application_deleted: 'Anwendung {{name}} wurde erfolgreich gelöscht',
redirect_uri_required: 'Gebe mindestens eine Umleitungs-URI an',
};
export default application_details;

View file

@ -0,0 +1,50 @@
const applications = {
title: 'Anwendungen',
subtitle:
'Richte eine native, Single Page oder herkömmliche Anwendung ein, die Logto zur Authentifizierung nutzt.',
create: 'Anwendung erstellen',
application_name: 'Anwendungsname',
application_name_placeholder: 'Meine App',
application_description: 'Anwendungsbeschreibung',
application_description_placeholder: 'Gib eine Beschreibung ein',
select_application_type: 'Wähle einen Anwendungstyp',
no_application_type_selected: 'Du hast noch keinen Anwendungstyp ausgewählt',
application_created:
'Die Anwendung {{name}} wurde erfolgreich erstellt! \nKonfiguriere jetzt die Anwendung.',
app_id: 'App ID',
type: {
native: {
title: 'Native App',
subtitle: 'Eine Anwendung, die in einer nativen Umgebung läuft',
description: 'z.B. iOS app, Android app',
},
spa: {
title: 'Single Page App',
subtitle:
'Eine Anwendung, die in einem Webbrowser ausgeführt wird und Daten dynamisch an Ort und Stelle aktualisiert',
description: 'z.B. React DOM app, Vue app',
},
traditional: {
title: 'Herkömmliche Website',
subtitle: 'Eine Anwendung, die Seiten allein durch den Webserver rendert und aktualisiert',
description: 'z.B. Next.js, PHP',
},
machine_to_machine: {
title: 'Machine to Machine',
subtitle: 'Eine Anwendung (normalerweise ein Dienst), die direkt mit Ressourcen kommuniziert',
description: 'z.B. Backend Dienst',
},
},
guide: {
get_sample_file: 'Zum Beispielprojekt',
header_description:
'Folge der Schritt-für-Schritt-Anleitung, um die Anwendung zu integrieren, oder klick auf die rechte Schaltfläche, um unser Beispielprojekt zu erhalten',
title: 'Die Anwendung wurde erfolgreich erstellt',
subtitle:
'Folge nun den folgenden Schritten, um deine App-Einstellungen abzuschließen. Bitte wähle den SDK-Typ aus, um fortzufahren.',
description_by_sdk:
'Diese Schnellstart-Anleitung zeigt, wie man Logto in die {{sdk}} App integriert',
},
};
export default applications;

View file

@ -0,0 +1,22 @@
const connector_details = {
back_to_connectors: 'Zurück zu Connectoren',
check_readme: 'Zur README',
save_error_empty_config: 'Bitte fülle die Konfiguration aus',
send: 'Senden',
send_error_invalid_format: 'Ungültige Eingabe',
edit_config_label: 'Gib deine JSON-Konfiguration ein',
test_email_sender: 'Teste den E-Mail Connector',
test_sms_sender: 'Teste den SMS Connector',
test_email_placeholder: 'Gib eine Test-E-Mail ein',
test_sms_placeholder: 'Gib eine Test-Telefonnummer ein',
test_message_sent: 'Testnachricht wurde gesendet!',
test_sender_description: 'Wenn dein JSON richtig konfiguriert ist, erhältst du eine Nachricht.',
options_change_email: 'E-Mail Connector bearbeiten',
options_change_sms: 'SMS Connector bearbeiten',
connector_deleted: 'Der Connector wurde erfolgreich gelöscht',
type_email: 'E-Mail connector',
type_sms: 'SMS connector',
type_social: 'Social connector',
};
export default connector_details;

View file

@ -0,0 +1,37 @@
const connectors = {
title: 'Connectoren',
subtitle: 'Richte Connectoren ein um passwortlose und Social Anmeldung zu aktivieren',
create: 'Social Connector erstellen',
tab_email_sms: 'E-Mail und SMS Connectoren',
tab_social: 'Social Connectoren',
connector_name: 'Connectorname',
connector_type: 'Typ',
connector_status: 'Anmeldeoberfläche',
connector_status_in_use: 'In Benutzung',
connector_status_not_in_use: 'Nicht in Benutzung',
social_connector_eg: 'z.B. Google, Facebook, Github',
save_and_done: 'Speichern und fertigstellen',
type: {
email: 'E-Mail Connector',
sms: 'SMS Connector',
social: 'Social Connector',
},
setup_title: {
email: 'E-Mail Connector einrichten',
sms: 'SMS Connector einrichten',
social: 'Social Connector erstellen',
},
guide: {
subtitle: 'Eine Schritt-für-Schritt-Anleitung zur Konfiguration deines Connectors',
},
platform: {
universal: 'Universal',
web: 'Web',
native: 'Nativ',
},
add_multi_platform: ' unterstützt mehrere Plattformen, wähle eine Plattform aus, um fortzufahren',
drawer_title: 'Connector Anleitung',
drawer_subtitle: 'Folge den Anweisungen, um deinen Connector zu integrieren',
};
export default connectors;

View file

@ -0,0 +1,22 @@
const contact = {
title: 'Kontakt',
description:
'Tritt unserer Community bei, um Feedback zu geben, um Hilfe zu bitten und deine Gedanken mit anderen Entwicklern zu teilen',
discord: {
title: 'Discord channel',
description: 'Tritt unserem öffentlichen Kanal bei, um mit anderen Entwicklern zu chatten',
button: 'Beitreten',
},
github: {
title: 'GitHub',
description: 'Erstelle ein Issue bei GitHub',
button: 'Öffnen',
},
email: {
title: 'E-Mail senden',
description: 'Schick uns eine E-Mail für weitere Informationen und Hilfe',
button: 'Senden',
},
};
export default contact;

View file

@ -0,0 +1,22 @@
const dashboard = {
title: 'Dashboard',
description: 'Verschaffe dir einen Überblick über die Leistung deiner App',
total_users: 'Gesamtzahl der Benutzer',
total_users_tip: 'Gesamtzahl der Benutzer',
new_users_today: 'Neue Benutzer heute',
new_users_today_tip: 'Neue Benutzer, die sich heute in deinen Anwendungen registriert haben',
new_users_7_days: 'Neue Benutzer in den letzten 7 Tagen',
new_users_7_days_tip:
'Neue Benutzer, die sich in den letzten 7 Tagen in deinen Anwendungen registriert haben',
daily_active_users: 'Täglich aktive Benutzer',
daily_active_users_tip:
'Die Anzahl der einzelnen Benutzer, die heute Token in deinen Anwendungen ausgetauscht haben',
weekly_active_users: 'Wöchentlich aktive Benutzer',
weekly_active_users_tip:
'Die Anzahl der einzelnen Benutzer, die in den letzten 7 Tagen Token in deinen Anwendungen ausgetauscht haben',
monthly_active_users: 'Monatlich aktive Benutzer',
monthly_active_users_tip:
'Die Anzahl der einzelnen Benutzer, die in den letzten 30 Tagen Token in deinen Anwendungen ausgetauscht haben',
};
export default dashboard;

View file

@ -0,0 +1,21 @@
const errors = {
something_went_wrong: 'Ups, da ist etwas schief gelaufen.',
page_not_found: 'Seite nicht gefunden',
unknown_server_error: 'Unbekannter Serverfehler',
empty: 'Keine Daten verfügbar',
missing_total_number: 'Total-Number wurde nicht in Response Headern gefunden',
invalid_uri_format: 'Ungültiges URI-Format',
invalid_origin_format: 'Ungültiges URI Origin-Format',
invalid_json_format: 'Ungültiges JSON-Format',
invalid_error_message_format: 'Ungültiges Fehlermeldung-Format.',
required_field_missing: 'Bitte fülle {{field}} aus',
required_field_missing_plural: 'Mindestens ein {{field}} muss ausgefüllt sein',
more_details: 'Mehr Details',
username_pattern_error:
'Der Benutzername sollte nur Buchstaben, Zahlen oder Unterstriche enthalten und nicht mit einer Zahl beginnen.',
password_pattern_error: 'Das Passwort muss aus mindestens 6 Zeichen lang sein',
insecure_contexts: 'Unsichere Kontexte (nicht-HTTPS) werden nicht unterstützt.',
unexpected_error: 'Ein unerwarteter Fehler ist aufgetreten',
};
export default errors;

View file

@ -0,0 +1,42 @@
const general = {
placeholder: 'Platzhalter',
skip: 'Überspringen',
next: 'Weiter',
retry: 'Erneut versuchen',
done: 'Fertig',
search: 'Suche',
search_placeholder: 'Suchen',
clear_result: 'Ergebnisse löschen',
save: 'Speichern',
save_changes: 'Änderungen speichern',
saved: 'Gespeichert!',
loading: 'Lade...',
redirecting: 'Weiterleiten...',
add: 'Hinzufügen',
added: 'Hinzugefügt',
cancel: 'Abbrechen',
confirm: 'Bestätigen',
check_out: 'Ansehen',
create: 'Erstellen',
set_up: 'Einrichten',
customize: 'Anpassen',
enable: 'Aktivieren',
reminder: 'Erinnerung',
delete: 'Löschen',
more_options: 'MEHR OPTIONEN',
close: 'Schließen',
copy: 'Kopieren',
copying: 'Kopiere',
copied: 'Kopiert',
required: 'Erforderlich',
add_another: '+ Weitere hinzufügen',
deletion_confirmation: 'Willst du {{title}} wirklich löschen?',
settings_nav: 'Einstellungen',
unsaved_changes_warning:
'Du hast ungespeicherte Änderungen. Willst du diese Seite wirklich verlassen?',
leave_page: 'Seite verlassen',
stay_on_page: 'Auf Seite bleiben',
type_to_search: 'Tippe um zu suchen',
};
export default general;

View file

@ -0,0 +1,29 @@
const get_started = {
progress: 'Erste Schritte: {{completed}}/{{total}}',
progress_dropdown_title: 'Was du machen kannst...',
title: 'Wie willst du mit Logto loslegen?',
subtitle_part1: 'Ein paar Dinge, die du tun kannst, um schnell von Logto zu profitieren',
subtitle_part2: 'Ich bin fertig mit der Einrichtung.',
hide_this: 'Ausblenden',
confirm_message:
'Bist du sicher, dass du diese Seite ausblenden willst? Diese Aktion kann nicht rückgängig gemacht werden.',
card1_title: 'Zur Demo',
card1_subtitle: 'Probiere die Logto-Anmeldung jetzt aus, um zu sehen, wie sie funktioniert',
card2_title: 'Erste Anwendung erstellen und integrieren',
card2_subtitle:
'Richte eine native, Single Page oder herkömmliche Anwendung ein, die Logto zur Authentifizierung nutzt.',
card3_title: 'Anmeldeoberfläche anpassen',
card3_subtitle:
'Passe die Benutzeroberfläche für die Anmeldung an deine Marke an und zeige eine Vorschau in Echtzeit an',
card4_title: 'SMS- und E-Mail-Verbindung einrichten',
card4_subtitle:
'Probiere die passwortlose Anmeldung mit Telefonnummer oder E-Mail aus, um ein sicheres und reibungsloses Kundenerlebnis zu ermöglichen.',
card5_title: 'Social Connector hinzufügen',
card5_subtitle:
'Lass deine Kunden sich mit einem Klick mit ihren sozialen Identitäten bei deiner App anmelden',
card6_title: 'Weitere Informationen',
card6_subtitle:
'Schau dir unsere schrittweisen, szenariobasierten Dokumentationen ohne langweilige Konzepte an',
};
export default get_started;

View file

@ -0,0 +1,52 @@
import api_resource_details from './api-resource-details';
import api_resources from './api-resources';
import application_details from './application-details';
import applications from './applications';
import connector_details from './connector-details';
import connectors from './connectors';
import contact from './contact';
import dashboard from './dashboard';
import errors from './errors';
import general from './general';
import get_started from './get-started';
import log_details from './log-details';
import logs from './logs';
import session_expired from './session-expired';
import settings from './settings';
import sign_in_exp from './sign-in-exp';
import tab_sections from './tab-sections';
import tabs from './tabs';
import user_details from './user-details';
import users from './users';
import welcome from './welcome';
const admin_console = {
title: 'Admin Konsole',
sign_out: 'Abmelden',
profile: 'Profil',
admin_user: 'Admin',
system_app: 'System',
general,
errors,
tab_sections,
tabs,
applications,
application_details,
api_resources,
api_resource_details,
connectors,
connector_details,
get_started,
users,
user_details,
contact,
sign_in_exp,
settings,
dashboard,
logs,
log_details,
session_expired,
welcome,
};
export default admin_console;

View file

@ -0,0 +1,17 @@
const log_details = {
back_to_logs: 'Zurück zu Audit Logs',
back_to_user: 'Zurück zu {{name}}',
success: 'Erfolgreich',
failed: 'Fehlgeschlagen',
event_type: 'Event Typ',
application: 'Anwendung',
ip_address: 'IP Adresse',
user: 'Benutzer',
log_id: 'Log ID',
time: 'Zeit',
user_agent: 'User agent',
tab_details: 'Details',
raw_data: 'Rohe Daten',
};
export default log_details;

View file

@ -0,0 +1,12 @@
const logs = {
title: 'Audit Logs',
subtitle:
'Anzeige der Log Daten von Authentifizierungsereignissen, die von Admins und Benutzern stammen',
event: 'Event',
user: 'Benutzer',
application: 'Anwendung',
time: 'Zeit',
filter_by: 'Filter nach',
};
export default logs;

View file

@ -0,0 +1,8 @@
const session_expired = {
title: 'Sitzung abgelaufen',
subtitle:
'Deine Sitzung ist möglicherweise abgelaufen und deine Verbindung wurde unterbrochen. Klicke auf die Schaltfläche unten, um dich erneut an der Admin Konsole anzumelden.',
button: 'Erneut anmelden',
};
export default session_expired;

View file

@ -0,0 +1,27 @@
const settings = {
title: 'Einstellungen',
description: 'Verwalte die globalen Einstellungen',
tabs: {
general: 'Allgemein',
},
custom_domain: 'Benutzerdefinierte Domain',
language: 'Sprache',
appearance: 'Darstellung',
appearance_system: 'Synchonisiere mit Systemeinstellungen',
appearance_light: 'Hell',
appearance_dark: 'Dunkel',
saved: 'Gespeichert!',
change_password: 'Passwort ändern',
change_password_description:
'Du kannst das Passwort für dieses Konto ändern. Du verwendest den aktuellen Benutzernamen mit dem neuen Passwort, um dich in der Admin Konsole anzumelden.',
change_modal_title: 'Account Password ändern',
change_modal_description:
'Du verwendest den aktuellen Benutzernamen mit dem neuen Passwort, um dich in der Admin Konsole anzumelden.',
new_password: 'Neues Passwort',
new_password_placeholder: 'Gib ein neues Passwort ein',
confirm_password: 'Passwort bestätigen',
confirm_password_placeholder: 'Bestätige das neue Passwort',
password_changed: 'Passwort geändert!',
};
export default settings;

View file

@ -0,0 +1,140 @@
const sign_in_exp = {
title: 'Anmeldeoberfläche',
description:
'Passe die Benutzeroberfläche für die Anmeldung an deine Marke an und zeige eine Vorschau in Echtzeit an',
tabs: {
branding: 'Branding',
methods: 'Anmeldemethoden',
others: 'Andere',
},
welcome: {
title:
'Dies ist das erste Mal, dass du deine Anmeldeoberfläche anpasst. Diese Anleitung hilft dir, alle notwendigen Einstellungen vorzunehmen und schnell loszulegen.',
get_started: 'Erste Schritte',
apply_remind:
'Bitte beachte, dass die Anmeldeoberfläche für alle Anwendungen unter diesem Konto gilt.',
got_it: 'Alles klar',
},
color: {
title: 'FARBE',
primary_color: 'Markenfarbe',
dark_primary_color: 'Markenfarbe (Dunkler Modus)',
dark_mode: 'Aktiviere Dunklen Modus',
dark_mode_description:
'Deine App erhält einen automatisch generierten Dunklen Modus, der auf deiner Markenfarbe und dem Logto-Algorithmus basiert. Du kannst diesen nach Belieben anpassen.',
dark_mode_reset_tip: 'Neuberechnung der Farbe des dunklen Modus basierend auf der Markenfarbe.',
reset: 'Neuberechnen',
},
branding: {
title: 'BRANDING',
ui_style: 'Stil',
styles: {
logo_slogan: 'App logo mit Slogan',
logo: 'Nur App logo',
},
logo_image_url: 'App logo URL',
logo_image_url_placeholder: 'https://dein.cdn.domain/logo.png',
dark_logo_image_url: 'App logo URL (Dunkler Modus)',
dark_logo_image_url_placeholder: 'https://dein.cdn.domain/logo-dark.png',
slogan: 'Slogan',
slogan_placeholder: 'Entfessle deine Kreativität',
},
sign_in_methods: {
title: 'ANMELDEMETHODEN',
primary: 'Primäre Anmeldemethode',
enable_secondary: 'Aktiviere sekundäre Anmeldemethoden',
enable_secondary_description:
'Sobald sie aktiviert ist, unterstützt deine App neben der primären Anmeldemethode noch weitere Anmeldemethoden. ',
methods: 'Anmeldemethode',
methods_sms: 'SMS Anmeldung',
methods_email: 'E-Mail Anmeldung',
methods_social: 'Social Anmeldung',
methods_username: 'Benutzername-und-Passwort Anmeldung',
methods_primary_tag: '(Primär)',
define_social_methods: 'Definiere die unterstützten Social Anmeldemethoden',
transfer: {
title: 'Social Connectoren',
footer: {
not_in_list: 'Nicht in der Liste?',
set_up_more: 'Mehr Social Connectoren einrichten',
go_to: 'oder "Connectoren" aufrufen.',
},
},
},
others: {
terms_of_use: {
title: 'NUTZUNGSBEDINGUNGEN',
enable: 'Aktiviere Nutzungsbedingungen',
description: 'Füge die rechtlichen Vereinbarungen für die Nutzung deines Produkts hinzu',
terms_of_use: 'Nutzungsbedingungen',
terms_of_use_placeholder: 'https://beispiel.de/nutzungsbedingungen',
terms_of_use_tip: 'URL zu den Nutzungsbedingungen',
},
languages: {
title: 'SPRACHEN',
enable_auto_detect: 'Aktiviere automatische Spracherkennung',
description:
'Deine Software erkennt die Sprach-Einstellung des Nutzers und schaltet auf die lokale Sprache um. Du kannst neue Sprachen hinzufügen, indem du die Benutzeroberfläche vom Englischen in eine andere Sprache übersetzt.',
manage_language: 'Sprachen verwalten',
default_language: 'Standard-Sprache',
default_language_description_auto:
'Die Standardsprache wird verwendet, wenn die erkannte Benutzersprache nicht in der aktuellen Sprachbibliothek enthalten ist.',
default_language_description_fixed:
'Wenn die automatische Erkennung deaktiviert ist, ist die Standardsprache die einzige Sprache, die deine Software anzeigt. Schalte die automatische Erkennung ein um weitere Sprachen anzuzeigen.',
},
manage_language: {
title: 'Sprachen verwalten',
subtitle:
'Erweitere die Anmeldeoberfläche durch neue Sprachen und Übersetzungen. Deine Übersetzung kann als Standard-Sprache verwendet werden.',
add_language: 'Sprache hinzufügen',
logto_provided: 'Von Logto bereitgestellt',
key: 'Schlüssel',
logto_source_values: 'Logto Übersetzungen',
custom_values: 'Benutzerdefinierte Übersetzungen',
clear_all_tip: 'Alle benutzerdefinierten Übersetzungen löschen',
unsaved_description:
'Wenn du diese Seite verlässt, ohne zu speichern, werden die Änderungen nicht gespeichert.',
deletion_tip: 'Sprache löschen',
deletion_title: 'Willst du diese Sprache wirklich löschen?',
deletion_description:
'Nach dem Löschen können deine Benutzer diese Sprache nicht mehr nutzen.',
default_language_deletion_title: 'Die Standardsprache kann nicht gelöscht werden.',
default_language_deletion_description:
'{{language}} ist als Standardsprache eingestellt und kann nicht gelöscht werden. ',
got_it: 'Alles klar',
},
authentication: {
title: 'AUTHENTIFIZIERUNG',
enable_create_account: 'Aktiviere Registrierung',
enable_create_account_description:
'Aktiviere oder deaktiviere Konto Registrierung. Wenn diese Funktion deaktiviert ist, können deine Kunden keine Konten über die Anmeldeoberfläche erstellen, aber du kannst immer noch Benutzer in der Admin Konsole hinzufügen.',
},
},
setup_warning: {
no_connector: '',
no_connector_sms:
'Du hast noch keinen SMS Connector eingerichtet. Deine Anmeldung wird erst freigeschaltet, wenn du die Einstellungen abgeschlossen hast. ',
no_connector_email:
'Du hast noch keinen E-Mail Connector eingerichtet. Deine Anmeldung wird erst freigeschaltet, wenn du die Einstellungen abgeschlossen hast. ',
no_connector_social:
'Du hast noch keinen Social Connector eingerichtet. Deine Anmeldung wird erst freigeschaltet, wenn du die Einstellungen abgeschlossen hast. ',
no_added_social_connector:
'Du hast jetzt ein paar Social Connectoren eingerichtet. Füge jetzt einige zu deinem Anmeldeerlebnis hinzu.',
},
save_alert: {
description:
'Du änderst die Anmeldemethoden. Das wird sich auf einige deiner Benutzer auswirken. Bist du sicher, dass du das tun willst?',
before: 'Vorher',
after: 'Nachher',
},
preview: {
title: 'Vorschau',
dark: 'Dunkel',
light: 'Hell',
native: 'Nativ',
desktop_web: 'Desktop Web',
mobile_web: 'Mobil Web',
},
};
export default sign_in_exp;

View file

@ -0,0 +1,8 @@
const tab_sections = {
overview: 'Übersicht',
resource_management: 'Ressourcenverwaltung',
user_management: 'Benutzerverwaltung',
help_and_support: 'Hilfe und Support',
};
export default tab_sections;

View file

@ -0,0 +1,15 @@
const tabs = {
get_started: 'Erste Schritte',
dashboard: 'Dashboard',
applications: 'Anwendungen',
api_resources: 'API Ressourcen',
sign_in_experience: 'Anmeldeoberfläche',
connectors: 'Connectoren',
users: 'Benutzerverwaltung',
audit_logs: 'Audit Logs',
docs: 'Dokumentation',
contact_us: 'Kontakt',
settings: 'Einstellungen',
};
export default tabs;

View file

@ -0,0 +1,41 @@
const user_details = {
back_to_users: 'Zurück zur Benutzerverwaltung',
created_title: 'Der Benutzer wurde erfolgreich erstellt',
created_guide: 'Sende dem Benutzer folgende Anmeldeinformationen',
created_username: 'Benutzername:',
created_password: 'Passwort:',
menu_delete: 'Löschen',
delete_description:
'Diese Aktion kann nicht rückgängig gemacht werden. Der Benutzer wird permanent gelöscht.',
deleted: 'Der Benutzer wurde erfolgreich gelöscht',
reset_password: {
reset_password: 'Passwort zurücksetzen',
title: 'Willst du das Passwort wirklich zurücksetzen?',
content:
'Diese Aktion kann nicht rückgängig gemacht werden. Das Anmeldeinformationen werden zurückgesetzt.',
congratulations: 'Der Benutzer wurde erfolgreich zurückgesetzt',
new_password: 'Neues Passwort:',
},
tab_logs: 'Benutzer-Logs',
field_email: 'Primäre E-Mail',
field_phone: 'Primäre Telefonnummer',
field_username: 'Benutzername',
field_name: 'Name',
field_avatar: 'Profilbild URL',
field_avatar_placeholder: 'https://dein.cdn.domain/profilbild.png',
field_custom_data: 'Benutzerdefinierte Daten',
field_custom_data_tip:
'Zusätzliche Benutzerinformationen, die nicht in den vordefinierten Benutzereigenschaften aufgeführt sind, wie z. B. die vom Benutzer bevorzugte Farbe und Sprache.',
field_connectors: 'Social Connections',
custom_data_invalid: 'Benutzerdefinierte Daten müssen ein gültiges JSON-Objekt sein.',
connectors: {
connectors: 'Connectoren',
user_id: 'Benutzer ID',
remove: 'Löschen',
not_connected: 'Der Nutzer ist nicht mit einem Social Connector verbunden',
deletion_confirmation:
'Du entfernst die bestehende <name/> Identität. Bist du sicher, dass du das tun willst?',
},
};
export default user_details;

View file

@ -0,0 +1,15 @@
const users = {
title: 'Benutzerverwaltung',
subtitle:
'Verwalten von Benutzeridentitäten, einschließlich des Anlegens von Benutzern, Bearbeiten von Benutzerinformationen, Anzeigen von Benutzer-Logs, Zurücksetzen von Passwörtern und Löschen von Benutzern',
create: 'Benutzer hinzufügen',
user_name: 'Benutzer',
application_name: 'Anwendungsname',
latest_sign_in: 'Letzte Anmeldung',
create_form_username: 'Benutzername',
create_form_password: 'Passwort',
create_form_name: 'Name',
unnamed: 'Unbenannt',
};
export default users;

View file

@ -0,0 +1,8 @@
const welcome = {
title: 'Willkommen in der Admin Konsole',
description:
'Die Admin-Konsole ist eine Web-App, mit der du Logto verwalten kannst, ohne programmieren zu müssen. Legen wir zunächst ein Konto an. Mit diesem Konto kannst du Logto selbst oder im Namen deines Unternehmens verwalten.',
create_account: 'Konto erstellen',
};
export default welcome;

View file

@ -0,0 +1,15 @@
const demo_app = {
notification:
'Nutze dein existierendes Admin Konto oder erstelle ein neues Konto um dich in die Demo App einzuloggen.',
title: 'Du hast dich erfolgreich in der Demo App angemeldet!',
subtitle: 'Here is your log in information:',
username: 'Benutzername: ',
user_id: 'Benutzer ID: ',
sign_out: 'Aus der Demo App ausloggen',
continue_explore: 'Oder weiter zum Entdecken',
customize_sign_in_experience: 'Anmeldeoberfläche anpassen',
enable_passwordless: 'Passwordless einschalten',
add_social_connector: 'Social Connector hinzufügen',
};
export default demo_app;

View file

@ -0,0 +1,9 @@
import admin_console from './admin-console';
import demo_app from './demo-app';
const translation = {
admin_console,
demo_app,
};
export default translation;