From 492a1370abe631d806fe15e4afe47218bf6c9b72 Mon Sep 17 00:00:00 2001 From: Maurice Bauer <34477772+mauricebauer@users.noreply.github.com> Date: Tue, 6 Dec 2022 00:42:17 +0100 Subject: [PATCH] feat: add German i18n item (#686) --- api/user_setting.go | 2 +- .../Settings/PreferencesSection.tsx | 4 + web/src/i18n.ts | 4 + web/src/locales/de.json | 213 ++++++++++++++++++ web/src/pages/Auth.tsx | 1 + web/src/types/i18n.d.ts | 2 +- 6 files changed, 224 insertions(+), 2 deletions(-) create mode 100644 web/src/locales/de.json diff --git a/api/user_setting.go b/api/user_setting.go index cdff0939..68df9b5d 100644 --- a/api/user_setting.go +++ b/api/user_setting.go @@ -34,7 +34,7 @@ func (key UserSettingKey) String() string { } var ( - UserSettingLocaleValue = []string{"en", "zh", "vi", "fr", "sv"} + UserSettingLocaleValue = []string{"en", "zh", "vi", "fr", "sv", "de"} UserSettingAppearanceValue = []string{"system", "light", "dark"} UserSettingMemoVisibilityValue = []Visibility{Private, Protected, Public} UserSettingMemoDisplayTsOptionKeyValue = []string{"created_ts", "updated_ts"} diff --git a/web/src/components/Settings/PreferencesSection.tsx b/web/src/components/Settings/PreferencesSection.tsx index c225accd..dfa45a5e 100644 --- a/web/src/components/Settings/PreferencesSection.tsx +++ b/web/src/components/Settings/PreferencesSection.tsx @@ -28,6 +28,10 @@ const localeSelectorItems = [ text: "Svenska", value: "sv", }, + { + text: "German", + value: "de", + }, ]; const PreferencesSection = () => { diff --git a/web/src/i18n.ts b/web/src/i18n.ts index b4b2c108..96b33520 100644 --- a/web/src/i18n.ts +++ b/web/src/i18n.ts @@ -5,6 +5,7 @@ import zhLocale from "./locales/zh.json"; import viLocale from "./locales/vi.json"; import frLocale from "./locales/fr.json"; import svLocale from "./locales/sv.json"; +import deLocale from "./locales/de.json"; i18n.use(initReactI18next).init({ resources: { @@ -23,6 +24,9 @@ i18n.use(initReactI18next).init({ sv: { translation: svLocale, }, + de: { + translation: deLocale, + }, }, lng: "en", fallbackLng: "en", diff --git a/web/src/locales/de.json b/web/src/locales/de.json new file mode 100644 index 00000000..a79ffad6 --- /dev/null +++ b/web/src/locales/de.json @@ -0,0 +1,213 @@ +{ + "common": { + "about": "Über Memos", + "email": "E-Mail", + "password": "Passwort", + "repeat-password-short": "Wiederholen", + "repeat-password": "Wiederhole das Passwort", + "new-password": "Neues Passwort", + "repeat-new-password": "Neues Passwort wiederholen", + "username": "Nutzername", + "nickname": "Nickname", + "save": "Speichern", + "close": "Schließen", + "cancel": "Abbrechen", + "create": "Erstellen", + "change": "Ändern", + "confirm": "Bestätigen", + "reset": "Zurücksetzen", + "language": "Sprache", + "version": "Version", + "pin": "Anpinnen", + "unpin": "Pin lösen", + "edit": "Bearbeiten", + "restore": "Wiederherstellen", + "delete": "Löschen", + "null": "Null", + "share": "Teilen", + "archive": "Archivieren", + "basic": "Allgemeines", + "admin": "Administrierung", + "explore": "Erkunden", + "sign-in": "Anmelden", + "sign-up": "Registrieren", + "sign-out": "Abmelden", + "back-to-home": "Zurück zur Startseite", + "type": "Typ", + "shortcuts": "Verknüpfungen", + "title": "Titel", + "filter": "Filter", + "tags": "Tags", + "yourself": "Du selbst", + "archived-at": "Archiviert am", + "changed": "Verändert", + "update-on": "Verändert am", + "fold": "Falten", + "expand": "Erweitern", + "image": "Bild", + "link": "Link" + }, + "slogan": "Eine quelloffene, selbst gehostete Sammlung an Memos zur Wissensverwaltung und Vernetzung.", + "auth": { + "signup-as-host": "Als Host registrieren", + "host-tip": "Du registrierst dich als Host dieser Seite.", + "not-host-tip": "Wenn du noch keinen Account hast, kontaktiere den Host dieser Seite." + }, + "sidebar": { + "daily-review": "Tagesbilanz", + "resources": "Ressourcen", + "setting": "Einstellung", + "archived": "Archiviert" + }, + "daily-review": { + "oops-nothing": "Oops, hier ist nichts." + }, + "resources": { + "description": "Zeige deine Ressourcen in Memos. Beispielsweise Bilder.", + "no-resources": "Keine Ressourcen.", + "fetching-data": "Lade Daten...", + "upload": "Hochladen", + "preview": "Vorschau", + "copy-link": "Link kopieren", + "delete-resource": "Ressource löschen", + "warning-text": "Möchtest du diese Ressource wirklich löschen? Dies kann nicht rückgängig gemacht werden❗", + "linked-amount": "Anzahl verlinkter Memos", + "rename": "Umbenennen", + "clear-unused-resources": "Lösche ungenutzte Ressourcen", + "warning-text-unused": "Möchtest du diese ungenutzte Ressource wirklich löschen? Dies kann nicht rückgängig gemacht werden❗", + "no-unused-resources": "Keine ungenutzten Ressourcen" + }, + "archived": { + "archived-memos": "Archivierte Memos", + "no-archived-memos": "Keine archivierten Memos", + "fetching-data": "Lade Daten..." + }, + "editor": { + "editing": "Bearbeitung...", + "cancel-edit": "Bearbeitung abbrechen", + "save": "Speichern", + "placeholder": "Ein Gedanke...", + "only-image-supported": "Nur Bilder werden unterstützt.", + "cant-empty": "Inhalt kann nicht leer sein", + "local": "Lokal", + "resources": "Ressourcen" + }, + "memo": { + "view-detail": "Zeige Details", + "copy": "Kopieren", + "visibility": { + "private": "Nur für dich sichtbar", + "protected": "Für Mitglieder sichtbar", + "public": "Für alle sichtbar" + } + }, + "memo-list": { + "fetching-data": "Lade Daten...", + "fetch-more": "Klicke hier, um mehr zu laden" + }, + "shortcut-list": { + "shortcut-title": "Titel der Verknüpfung", + "create-shortcut": "Verknüpfung erstellen", + "edit-shortcut": "Verknüpfung bearbeiten", + "eligible-memo": "Förderfähige Memo", + "fill-previous": "Bitte vorherigen Filterwert ausfüllen", + "title-required": "Titel wird benötigt", + "value-required": "Filterwert wird benötigt" + }, + "filter": { + "new-filter": "Neuer Filter", + "operator": { + "contains": "enthält", + "not-contains": "enthält nicht", + "is": "ist", + "is-not": "ist nicht", + "before": "vor", + "after": "nach" + }, + "value": { + "not-tagged": "Keine Tags", + "linked": "Hat Links" + }, + "text-placeholder": "Starte einen Regex mit ^" + }, + "tag-list": { + "tip-text": "Erstelle einen Tag mit `#tag `" + }, + "search": { + "quickly-filter": "Schnelles Filtern" + }, + "setting": { + "my-account": "Mein Account", + "preference": "Präferenz", + "member": "Mitglied", + "member-list": "Mitgliederliste", + "system": "System", + "account-section": { + "title": "Account Informationen", + "update-information": "Informationen aktualisieren", + "change-password": "Passwort ändern" + }, + "preference-section": { + "default-memo-visibility": "Standard Sichtbarkeit von Memos", + "enable-folding-memo": "Aktiviere Falten von Memos", + "editor-font-style": "Editor Textstil", + "mobile-editor-style": "Mobiler Editorstil", + "default-memo-sort-option": "Angezeigter Memo Zeitpunkt", + "created_ts": "Zeitpunkt der Erstellung", + "updated_ts": "Zeitpunkt der Änderung" + }, + "member-section": { + "create-a-member": "Mitglied hinzufügen" + }, + "system-section": { + "database-file-size": "Dateigröße der Datenbank", + "allow-user-signup": "Erlaube Registrierungen für neue Mitglieder", + "additional-style": "Zusätzlicher Style", + "additional-script": "Zusätzliches Skript", + "additional-style-placeholder": "Zusätzliches CSS", + "additional-script-placeholder": "Zusätzliches JavaScript" + }, + "apperance-option": { + "system": "System", + "light": "Hell", + "dark": "Dunkel" + } + }, + "amount-text": { + "memo": "MEMO", + "tag": "TAG", + "day": "TAG" + }, + "message": { + "no-memos": "Keine Memos 🌃", + "memos-ready": "Alle Memos bereit 🎉", + "restored-successfully": "Erfolgreich wiederhergestellt", + "memo-updated-datetime": "Zeitpunkt der Erstellung geändert.", + "invalid-created-datetime": "Ungültiger Zeitpunkt der Erstellung", + "change-memo-created-time": "Ändere den Zeitpunkt der Erstellung", + "memo-not-found": "Memo nicht gefunden.", + "fill-all": "Bitte alle Felder ausfüllen.", + "password-not-match": "Passwörter stimmen nicht überein", + "new-password-not-match": "Neue Passwörter stimmen nicht überein.", + "image-load-failed": "Laden des Bilds fehlgeschlagen", + "fill-form": "Bitte das Formular ausfüllen", + "login-failed": "Anmeldung fehlgeschlagen", + "signup-failed": "Registrierung fehlgeschlagen", + "user-not-found": "Nutzer nicht gefunden", + "password-changed": "Passwort geändert", + "private-only": "Dieses Memo ist privat.", + "copied": "Kopiert", + "succeed-copy-content": "Inhalt erfolgreich kopiert", + "succeed-copy-link": "Link erfolgreich kopiert", + "change-resource-filename": "Ändere den Dateinamen der Ressource", + "resource-filename-updated": "Dateiname der Ressource geändert.", + "invalid-resource-filename": "Ungültiger Dateiname.", + "click-to-save-the-image": "Klicken um Bild zu speichern", + "generating-the-screenshot": "Erstelle Screenshot...", + "count-selected-resources": "Insgesamt markiert", + "too-short": "Zu kurz", + "too-long": "Zu lang", + "not-allow-space": "Keine Leerzeichen erlaubt", + "not-allow-chinese": "Keine chinesischen Zeichen erlaubt" + } +} diff --git a/web/src/pages/Auth.tsx b/web/src/pages/Auth.tsx index 03c817d2..396fc9e0 100644 --- a/web/src/pages/Auth.tsx +++ b/web/src/pages/Auth.tsx @@ -177,6 +177,7 @@ const Auth = () => { + diff --git a/web/src/types/i18n.d.ts b/web/src/types/i18n.d.ts index ef1b5c07..1a750816 100644 --- a/web/src/types/i18n.d.ts +++ b/web/src/types/i18n.d.ts @@ -1 +1 @@ -type Locale = "en" | "zh" | "vi" | "fr" | "sv"; +type Locale = "en" | "zh" | "vi" | "fr" | "sv" | "de";