From 716d55a3701c956f67afbdae115c284cd8f7b32e Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Tue, 21 Jun 2022 18:18:02 +0200 Subject: [PATCH] Add German Translation (#997) * Add German Translation * Fix visibility description * fix lint * Registries or Registry * Update web/src/assets/locales/de.json * Apply suggestions from code review Co-authored-by: Anbraten * Update web/src/assets/locales/de.json Co-authored-by: Anbraten * Update web/src/assets/locales/de.json Co-authored-by: Anbraten --- web/src/assets/locales/de.json | 217 ++++++++++++++++++++++++++++++++ web/src/assets/locales/en.json | 6 +- web/src/assets/locales/lv.json | 4 +- web/src/compositions/useDate.ts | 1 + web/src/utils/timeAgo.ts | 2 + 5 files changed, 225 insertions(+), 5 deletions(-) create mode 100644 web/src/assets/locales/de.json diff --git a/web/src/assets/locales/de.json b/web/src/assets/locales/de.json new file mode 100644 index 000000000..39e18680f --- /dev/null +++ b/web/src/assets/locales/de.json @@ -0,0 +1,217 @@ +{ + "login": "Anmelden", + "welcome": "Willkommen bei Woodpecker", + "repos": "Repos", + "repositories": "Repositories", + "docs": "Docs", + "logout": "Abmelden", + "search": "Suche...", + "username": "Benutzername", + "password": "Passwort", + "url": "URL", + "unknown_error": "Ein unbekannter Fehler ist aufgetreten", + + "not_found": { + "not_found": "Whoa 404, entweder haben wir etwas kaputt gemacht oder du hattest einen Tippfehler :-/", + "back_home": "Zurück zum Start" + }, + + "time": { + "tmpl": "DD.MM.YYYY, HH:mm z", + "weeks_short": "w", + "days_short": "t", + "hours_short": "h", + "min_short": "min", + "sec_short": "sek", + "not_started": "noch nicht gestartet" + }, + + "repo": { + "activity": "Aktivitäten", + "branches": "Branches", + "add": "Repository hinzufügen", + "user_none": "Diese Organisation / dieser Benutzer hat noch keine Repositories.", + "not_allowed": "Zugriff auf dieses Repository nicht erlaubt", + + "enable": { + "reload": "Repositories neu laden", + "enable": "Aktivieren", + "enabled": "Bereits Aktiviert", + "success": "Repository aktiviert", + "list_reloaded": "Repository-Liste neu geladen" + }, + + "settings": { + "settings": "Einstellungen", + "not_allowed": "Zugriff auf die Einstellungen dieses Repositorys nicht erlaubt", + + "general": { + "general": "Allgemein", + "project": "Projekt-Einstellungen", + "save": "Einstellungen speichern", + "success": "Repository-Einstellungen aktualisiert", + + "pipeline_path": { + "path": "Pipeline-Pfad", + "default": "Standardmäßig: .woodpecker/*.yml -> .woodpecker.yml -> .drone.yml", + "desc": "Pfad zu deiner Pipeline-Konfiguration (z. B. mein/pfad/). Ordner sollten mit einem / enden." + }, + + "allow_pr": { + "allow": "Pull Requests zulassen", + "desc": "Pipelines können für Pull-Requests genutzt werden." + }, + + "protected": { + "protected": "Geschützt", + "desc": "Jede Pipeline muss genehmigt werden, bevor sie ausgeführt wird." + }, + "trusted": { + "trusted": "Vertrauenswürdig", + "desc": "Die zugrundeliegenden Pipeline-Container erhalten Zugriff auf ausgeweitete Funktionen wie z. B. das Einhängen von Volumes." + }, + "visibility": { + "visibility": "Sichtbarkeit des Projekts", + + "public": { + "public": "Öffentlich", + "desc": "Jeder Benutzer kann Ihr Projekt sehen, ohne eingeloggt zu sein." + }, + "private": { + "private": "Privat", + "desc": "Nur du und andere Besitzer des Repositorys können dieses Projekt sehen." + }, + "internal": { + "internal": "Intern", + "desc": "Nur authentifizierte Benutzer der Woodpecker-Instanz können dieses Projekt sehen." + } + }, + + "timeout": { + "timeout": "Zeitlimit", + "minutes": "Minuten" + }, + + "cancel_prev": { + "cancel": "Breche ältere Pipelines ab", + "desc": "Aktiviere diese Option, um laufende Pipelines desselben Ereignisses und Kontexts abzubrechen, bevor die neue Pipeline startet." + } + }, + + "secrets": { + "secrets": "Secrets", + "desc": "Secrets können zur Laufzeit als Umgebungsvariablen an einzelne Pipelineschritte übergeben werden.", + "none": "Es gibt noch keine Secrets.", + "add": "Secret hinzufügen", + "save": "Secret speichern", + "show": "Secret anzeigen", + "name": "Name", + "value": "Wert", + "deleted": "Secret gelöscht", + "created": "Secret erstellt", + "saved": "Secret gespeichert", + + "images": { + "images": "Verfügbar für folgende Images", + "desc": "Durch Kommata getrennte Liste der Images, für die dieses Secret verfügbar ist; leer lassen, um alle Images zuzulassen" + }, + "events": { + "events": "Verfügbar bei folgenden Ereignissen", + "pr_warning": "Sei bitte vorsichtig mit dieser Option, da ein bösartiger Akteur eine bösartigen Pull Request erstellen kann, der deine Secrets preisgibt." + } + }, + + "registries": { + "registries": "Registries", + "creds": "Zugangsdaten für die Registry", + "desc": "Zugangsdaten für die Registry können hinzugefügt werden, um private Images für Ihre Pipeline zu verwenden.", + "show": "Registries anzeigen", + "add": "Registry hinzufügen", + "none": "Es gibt noch keine Zugangsdaten für die Registry.", + "save": "Registry speichern", + "created": "Registry-Zugangsdaten erstellt", + "saved": "Registry-Zugangsdaten gespeichert", + "deleted": "Registry-Zugangsdaten gelöscht", + + "address": { + "address": "Adresse", + "placeholder": "Registry-Adresse (z. B. docker.io)" + } + }, + + "badge": { + "badge": "Abzeichen", + "url_branch": "URL für bestimmten Branch", + "markdown": "Markdown" + }, + + "actions": { + "actions": "Aktionen", + + "repair": { + "repair": "Repository reparieren", + "success": "Repository repariert" + }, + "disable": { + "disable": "Repository deaktivieren", + "success": "Repository deaktiviert" + }, + "delete": { + "delete": "Repository löschen", + "confirm": "Alle Daten sind nach dieser Aktion verloren!!!\n\nMöchtest du wirklich fortfahren?", + "success": "Repository gelöscht" + } + } + }, + + "build": { + "created": "Erstellt", + "tasks": "Vorgänge", + "config": "Konfiguration", + "files": "Geänderte Dateien ({files})", + "no_files": "Es wurden keine Dateien geändert.", + "execution_error": "Ausführungsfehler", + "no_pipelines": "Bisher wurden noch keine Pipelines gestartet.", + "no_pipeline_steps": "Keine Schritte in der Pipeline vorhanden!", + "step_not_started": "Dieser Schritt hat noch nicht begonnen.", + "pipelines_for": "Pipelines für den Branch \"{branch}\"", + "exit_code": "Exit-Code {exitCode}", + "loading": "Laden ...", + "pipeline": "Pipeline #{buildId}", + + "actions": { + "cancel": "Abbrechen", + "restart": "Neustarten", + "canceled": "Dieser Schritt wurde abgebrochen.", + "cancel_success": "Pipeline abgebrochen", + "restart_success": "Pipeline neu gestartet" + }, + "protected": { + "awaits": "Diese Pipeline wartet auf die Genehmigung durch einen Maintainer!", + "approve": "Genehmigen", + "decline": "Ablehnen", + "declined": "Diese Pipeline ist abgelehnt worden!", + "approve_success": "Pipeline genehmigt", + "decline_success": "Pipeline abgelehnt" + }, + "event": { + "push": "Push", + "tag": "Tag", + "pr": "Pull Request", + "deploy": "Deploy" + } + } + }, + + "user": { + "oauth_error": "Fehler bei der Authentifizierung gegen OAuth-Anbieter", + "internal_error": "Ein interner Fehler ist aufgetreten", + "access_denied": "Du bist nicht berechtigt, dich anzumelden", + "token": "Dein persönlicher Token", + "shell_setup": "Kommandozeilen-Einrichtung", + "api_usage": "Beispiel für die API-Nutzung", + "cli_usage": "Beispiel für die Kommandozeilen-Nutzung", + "dl_cli": "Download Kommando-Zeilen-Tool", + "shell_setup_before": "Führe bitte die Schritte zur Einrichtung der Kommandozeile vorher aus" + } +} diff --git a/web/src/assets/locales/en.json b/web/src/assets/locales/en.json index 7f50391e2..1ea927e74 100644 --- a/web/src/assets/locales/en.json +++ b/web/src/assets/locales/en.json @@ -79,11 +79,11 @@ }, "private": { "private": "Private", - "desc": "Only authenticated users of the Woodpecker instance can see this project." + "desc": "Only you and other owners of the repository can see this project." }, "internal": { "internal": "Internal", - "desc": "Only you and other owners of the repository can see this project." + "desc": "Only authenticated users of the Woodpecker instance can see this project." } }, @@ -94,7 +94,7 @@ "cancel_prev": { "cancel": "Cancel previous pipelines", - "desc": "Enable to cancel running pipelines of the same event and context before starting the newly triggered one." + "desc": "Enable to cancel pending and running pipelines of the same event and context before starting the newly triggered one." } }, diff --git a/web/src/assets/locales/lv.json b/web/src/assets/locales/lv.json index 89f28df7b..7b8d3a1db 100644 --- a/web/src/assets/locales/lv.json +++ b/web/src/assets/locales/lv.json @@ -79,11 +79,11 @@ }, "private": { "private": "Privāts", - "desc": "Tikai autorizēti lietotāji var piekļūt šim projektam." + "desc": "Tikai lietotāji, kam ir tiesības uz repozitoriju, var piekļūt šim projektam." }, "internal": { "internal": "Iekšējs", - "desc": "Tikai lietotāji, kam ir tiesības uz repozitoriju, var piekļūt šim projektam." + "desc": "Tikai autorizēti lietotāji var piekļūt šim projektam." } }, diff --git a/web/src/compositions/useDate.ts b/web/src/compositions/useDate.ts index 4feb36944..5827c00ac 100644 --- a/web/src/compositions/useDate.ts +++ b/web/src/compositions/useDate.ts @@ -1,5 +1,6 @@ import 'dayjs/locale/en'; import 'dayjs/locale/lv'; +import 'dayjs/locale/de'; import dayjs from 'dayjs'; import advancedFormat from 'dayjs/plugin/advancedFormat'; diff --git a/web/src/utils/timeAgo.ts b/web/src/utils/timeAgo.ts index 6ca86b271..6724b3fec 100644 --- a/web/src/utils/timeAgo.ts +++ b/web/src/utils/timeAgo.ts @@ -1,10 +1,12 @@ import TimeAgo from 'javascript-time-ago'; +import de from 'javascript-time-ago/locale/de.json'; import en from 'javascript-time-ago/locale/en.json'; import lv from 'javascript-time-ago/locale/lv.json'; import { getUserLanguage } from '~/utils/locale'; TimeAgo.addDefaultLocale(en); +TimeAgo.addLocale(de); TimeAgo.addLocale(lv); const timeAgo = new TimeAgo(getUserLanguage());