From fbdbc8d682833bbe976fda6aeccaa8a67aa1ada1 Mon Sep 17 00:00:00 2001 From: lukaw3d Date: Thu, 21 Dec 2023 00:41:25 +0100 Subject: [PATCH] i18n: Add German and Spanish partial translations --- .changelog/1817.feature.md | 1 + src/locales/de/translation.json | 368 ++++++++++++++++++++++++++++++++ src/locales/es/translation.json | 186 ++++++++++++++++ src/locales/i18n.ts | 10 + 4 files changed, 565 insertions(+) create mode 100644 .changelog/1817.feature.md create mode 100644 src/locales/de/translation.json create mode 100644 src/locales/es/translation.json diff --git a/.changelog/1817.feature.md b/.changelog/1817.feature.md new file mode 100644 index 0000000000..5b7e38da80 --- /dev/null +++ b/.changelog/1817.feature.md @@ -0,0 +1 @@ +Add German and Spanish partial translations diff --git a/src/locales/de/translation.json b/src/locales/de/translation.json new file mode 100644 index 0000000000..d9cfd2198a --- /dev/null +++ b/src/locales/de/translation.json @@ -0,0 +1,368 @@ +{ + "account": { + "addEscrow": { + "confirmDelegatingToInactive": { + "title": "Bist du sicher, dass du fortfahren möchtest?" + }, + "delegate": "Delegieren" + }, + "addressCopied": "Adresse kopiert.", + "loading": "Konto wird geladen", + "loadingError": "Konto konnte nicht geladen werden.", + "sendTransaction": { + "confirmSendingToValidator": { + "title": "Bist du sicher, dass du fortfahren möchtest?" + }, + "enterAddress": "Adresse eingeben", + "enterAmount": "Betrag eingeben", + "recipient": "Empfänger", + "send": "Senden", + "success": "Transaktion erfolgreich gesendet. Es kann bis zu einer Minute dauern, bis die Transaktion auf deinem Konto erscheint." + }, + "subnavigation": { + "activeDelegations": "Aktive Delegationen", + "mobileActiveDelegations": "Delegationen", + "transactions": "Transaktionen" + }, + "summary": { + "balance": { + "available": "Verfügbar", + "debonding": "Debonding", + "delegations": "Staked", + "total": "Gesamt" + }, + "noTransactionFound": "Keine Transaktionen gefunden.", + "noWalletIsOpen": "Um {{ticker}}-Tokens zu senden, empfangen, staken oder tauschen, öffne deine Wallet.", + "notYourAccount": "Dies ist nicht dein Konto.", + "yourAccount": "Dies ist dein Konto." + }, + "transaction": { + "addEscrow": { + "sent": "Delegierte an Validator" + }, + "failed": "Fehlgeschlagen", + "genericTransaction": { + "destination": "Andere Adresse" + }, + "loadingError": "Transaktionen konnten nicht geladen werden.", + "successful": "Erfolgreich", + "transfer": { + "received": "Erhalten ", + "sent": { + "header": "Gesendet " + } + }, + "unrecognizedTransaction": { + "destination": "Andere Adresse", + "header": "Unbekannte Transaktion, Methode '{{method}}'" + } + }, + "validator": { + "loadingError": "Validatoren konnten nicht geladen werden." + } + }, + "backends": { + "oasismonitor": "Oasis Monitor API", + "oasisscan": "Oasis Scan API" + }, + "banner": { + "buildStaging": "Bitte beachte, dass dies die Testversion der Oasis Wallet ist. VERWENDE SIE NUR ZU TESTZWECKEN." + }, + "common": { + "amount": "Betrag", + "block": "Block", + "cancel": "Abbrechen", + "confirm": "Bestätigen", + "delegator": "Delegator", + "from": "Von", + "hash": "Tx Hash", + "round": "Runde", + "time": "Zeit", + "to": "Zu", + "unavailable": "Nicht verfügbar", + "validator": "Validator", + "validators": "Validatoren" + }, + "createWallet": { + "confirmSaved": "Ich habe meine Keyphrase gespeichert.", + "doNotShare": "Gib niemals deine Keyphrase weiter, denn jeder, der deine Keyphrase hat, kann auf deine Wallet und deine Token zugreifen." + }, + "delegations": { + "activeDelegations": "Aktive Delegationen", + "delegatedAmount": "Delegierter Betrag", + "loadingError": "Delegationen konnten nicht geladen werden.", + "reclaimedAmount": "Betrag zur Rückerstattung" + }, + "deleteForm": { + "confirm": "Ja, löschen", + "confirmationKeyword": "löschen", + "hint": "Typ '{{confirmationKeyword}}'" + }, + "errors": { + "LedgerDerivedDifferentAccount": "Dieses Konto gehört nicht zu dem aktuell verbundenen Ledger.", + "LedgerOasisAppIsNotOpen": "Die Oasis App auf Ledger ist geschlossen.", + "bluetoothTransportNotSupported": "Dein Gerät unterstützt kein Bluetooth.", + "cannotSendToSelf": "Kann nicht an sich selbst senden", + "disconnectedError": "Verbindung verloren.", + "duplicateTransaction": "Doppelte Transaktion", + "insufficientBalance": "Unzureichendes Guthaben", + "invalidAddress": "Ungültige Adresse", + "invalidNonce": "Ungültige Nonce (Transaktionsnummer)", + "invalidPrivateKey": "Ungültiger privater Schlüssel", + "ledgerTransactionRejected": "Transaktion auf Ledger abgelehnt.", + "noOpenWallet": "Kein Wallet geöffnet", + "unknown": "Unbekannter Fehler: {{message}}", + "unknownGrpc": "Unbekannter gRPC-Fehler: {{message}}", + "unknownLedgerError": "Unbekannter Ledger-Fehler: {{message}}", + "unknownParaTimeError": "Unbekannter ParaTime-Fehler: {{message}}", + "usbTransportError": "USB Transportfehler: {{message}}.", + "usbTransportNotSupported": "Dein Browser unterstützt kein WebUSB (z.B. Firefox). Versuche es mit Chrome." + }, + "fatalError": { + "copied": "Fehler in die Zwischenablage kopiert", + "copy": "Fehler in die Zwischenablage kopieren", + "heading": "Schwerwiegender Fehler aufgetreten" + }, + "fiatOnramp": { + "header": "ROSE kaufen", + "notYourAccount": "Du kannst diese Funktion nur nutzen, wenn deine Wallet geöffnet ist.", + "openYourWallet": "Öffne dein Wallet", + "switchToMainnet": "Wechsel zu Mainnet." + }, + "footer": { + "poweredBy": { + "oasismonitor": "Powered by Oasis Monitor API & Oasis gRPC", + "oasisscan": "Powered by Oasis Scan API & Oasis gRPC" + }, + "terms": "Allgemeine Geschäftsbedingungen", + "version": "Version: (commit: ) gebaut um {{buildTime}}." + }, + "home": { + "create": { + "button": "Wallet erstellen", + "header": "Neue Wallet erstellen" + }, + "existing": { + "button": "Wallet öffnen", + "header": "Auf vorhandene Wallet zugreifen" + } + }, + "infoBox": { + "valueCopied": "{{label}} kopiert." + }, + "language": "Sprache", + "ledger": { + "extension": { + "connect": "Ledger-Gerät verbinden", + "failed": "Verbindung fehlgeschlagen", + "grantAccess": "Gewähre Zugriff auf dein Ledger.", + "succeed": "Gerät verbunden" + }, + "instructionSteps": { + "header": "Schritte:" + }, + "steps": { + "loadingAccounts": "Kontodetails werden geladen", + "loadingBluetoothDevices": "Bluetooth-Geräte werden geladen", + "openingUsb": "Öffne Ledger über USB" + } + }, + "menu": { + "addAccounts": "Konten hinzufügen", + "closeWallet": "Wallet schließen", + "fiatOnramp": "Kaufen", + "home": "Home", + "lockProfile": "Profil sperren", + "openMenu": "Menü", + "paraTimes": "ParaTimes", + "stake": "Stake", + "unlockProfile": "Profil entsperren", + "wallet": "Wallet" + }, + "migrateV0Extension": { + "finishMigration": "Öffne die neue Version der Wallet", + "nextStep": "Weiter", + "requiredField": "Dieses Feld ist erforderlich", + "title": "Wichtiges Wallet-Update" + }, + "openWallet": { + "importAccounts": { + "accountCounter_one": "Ein Konto ausgewählt", + "accountCounter_zero": "Kein Konto ausgewählt", + "next": "Weiter", + "openWallets": "Öffnen", + "prev": "Zurück" + }, + "method": { + "ledger": "Ledger", + "mnemonic": "Mnemonic", + "privateKey": "Privater Schlüssel" + }, + "mnemonic": { + "import": "Importiere mein Wallet" + }, + "privateKey": { + "error": "Ungültiger privater Schlüssel" + } + }, + "paraTimes": { + "amount": { + "advanced": "Erweitert", + "available": "Verfügbar:", + "emptyAccount": "Das Konto ist leer. Es gibt nichts abzuheben.", + "tooltip": "Der Maximalwert kann durch die Gebühr verringert werden." + }, + "common": { + "cipher": "Cipher" + }, + "confirmation": { + "confirmTransferLabel": "Ich bestätige, dass der Betrag und die Adresse korrekt sind.", + "confirmTransferToForeignAccount": "Ich bestätige, dass ich direkt auf ein externes Konto abheben möchte.", + "depositLabel": "Einzahlen", + "withdrawLabel": "Abheben" + }, + "footer": { + "back": "Zurück", + "next": "Weiter" + }, + "recipient": { + "placeholder": "0x..." + }, + "selection": { + "cancel": "Übertragung abbrechen", + "evmc": "EVMc" + }, + "transfers": { + "deposit": "Auf ParaTime einzahlen", + "withdraw": "Von ParaTime abheben" + }, + "unsupportedFormStep": "Nicht unterstützter Formularschritt", + "validation": { + "insufficientBalanceToPayFee": "Unzureichendes Guthaben, um die Gebühr zu bezahlen", + "invalidEthPrivateKeyLength": "Der private Schlüssel sollte 64 Zeichen lang sein", + "invalidFee": "Der Wert muss eine ganze Zahl sein, die größer oder gleich 0 ist", + "required": "Feld ist erforderlich" + } + }, + "persist": { + "createProfile": { + "choosePassword": "Passwort wählen", + "repeatPassword": "Passwort erneut eingeben" + }, + "loading": "Laden", + "loginToProfile": { + "deleteProfile": { + "button": "Profil löschen", + "title": "Profil löschen" + }, + "hidePassword": "Passwort verbergen", + "showPassword": "Passwort anzeigen", + "skipUnlocking": "Weiter ohne das Profil", + "title": "Willkommen zurück!", + "unlock": "Entsperren", + "wrongPassword": "Falsches Passwort" + } + }, + "theme": { + "title": "Theme" + }, + "toolbar": { + "contacts": { + "add": "Kontakt hinzufügen", + "address": "Adresse", + "cancel": "Abbrechen", + "delete": { + "button": "Kontakt löschen", + "confirm": "Ja, löschen", + "description": "Bist du sicher, dass du diesen Kontakt löschen möchtest?", + "title": "Kontakt löschen" + }, + "emptyList": "Du hast noch keine Kontakte.", + "manage": "Kontakt verwalten", + "name": "Name", + "save": "Speichern", + "validation": { + "addressError": "Bitte gib eine gültige Wallet-Adresse ein.", + "addressNotUniqueError": "Adresse existiert bereits", + "nameLengthError": "Nicht mehr als 16 Zeichen", + "required": "Feld ist erforderlich" + } + }, + "networks": { + "local": "Lokal", + "mainnet": "Mainnet", + "selector": "Netzwerk auswählen", + "testnet": "Testnet" + }, + "profile": { + "deletion": "Löschung", + "password": { + "current": "Aktuelles Passwort", + "enterCurrent": "Aktuelles Passwort eingeben", + "enterNewPassword": "Neues Passwort", + "reenterNewPassword": "Erneut neues Passwort eingeben", + "submit": "Passwort aktualisieren", + "success": "Passwort aktualisiert.", + "title": "Setze ein neues Passwort" + } + }, + "settings": { + "cancel": "Abbrechen", + "contacts": "Kontakte", + "delete": { + "description": "Bist du sicher, dass du das folgende Konto löschen möchtest?", + "inputHelp": "Diese Aktion kann nicht rückgängig gemacht werden. Um fortzufahren, gib bitte '{{confirmationKeyword}}' unten ein.", + "title": "Konto löschen", + "tooltip": "Du musst immer mindestens ein Konto haben." + }, + "exportPrivateKey": { + "copied": "Privater Schlüssel kopiert.", + "hint1": "Der private Schlüssel besteht aus einer Reihe von Zeichen. Jeder, der Zugriff auf deinen privaten Schlüssel hat, hat direkten Zugriff auf das Vermögen des Kontos.", + "title": "Privaten Schlüssel exportieren" + }, + "manageAccount": "Verwalten", + "myAccountsTab": "Meine Konten", + "nameLengthError": "Nicht mehr als 16 Zeichen", + "optionalName": "Name (optional)", + "profile": "Profil", + "save": "Speichern", + "settings": "Einstellungen" + }, + "wallets": { + "select": "Auswählen", + "type": { + "bluetoothLedger": "BLE Ledger", + "mnemonic": "Mnemonic", + "privateKey": "Privater Schlüssel", + "usbLedger": "USB Ledger" + } + } + }, + "transaction": { + "cancel": "Abbrechen", + "confirm": "Bestätigen", + "preview": { + "amount": "Betrag", + "fee": "Gebühr", + "from": "Von", + "to": "Zu", + "type": "Typ", + "validator": "Validator" + }, + "step": { + "preview": "Vorschau Transaktion" + } + }, + "validator": { + "boundsNotSet": "Keine Grenzen festgelegt (0% - 100%)", + "commission": "Kommission", + "fee": "Gebühr", + "name": "Name", + "rank": "Rang", + "status": "Status", + "statusActive": "Aktiv", + "statusInactive": "Inaktiv", + "statusUnknown": "Unbekannt", + "unknownValidator": "Unbekannter Validator" + } +} diff --git a/src/locales/es/translation.json b/src/locales/es/translation.json new file mode 100644 index 0000000000..cce76aa1bf --- /dev/null +++ b/src/locales/es/translation.json @@ -0,0 +1,186 @@ +{ + "account": { + "addEscrow": { + "confirmDelegatingToInactive": { + "description": "El estado de este validador es {{validatorStatus}}. Es posible que tu delegación no genere ninguna recompensa.", + "title": "¿Estás seguro de que quieres continuar?" + }, + "confirmDelegatingToTop": { + "acknowledge": "Delegar de todos modos" + }, + "delegate": "Delegar" + }, + "loading": "Cargando cuenta", + "loadingError": "No se pudo cargar la cuenta.", + "reclaimEscrow": { + "reclaim": "Reclamar" + }, + "sendTransaction": { + "confirmSendingToValidator": { + "title": "¿Estás seguro de que quieres continuar?" + }, + "enterAddress": "Introduce una dirección", + "recipient": "Destinatario", + "send": "Enviar", + "success": "Transacción enviada con éxito. La transacción puede tardar hasta un minuto en aparecer en tu cuenta." + }, + "subnavigation": { + "transactions": "Transacciones" + }, + "summary": { + "balance": { + "available": "Disponible" + }, + "noTransactionFound": "No se han encontrado transacciones.", + "notYourAccount": "Esta no es tu cuenta.", + "yourAccount": "Esta es tu cuenta." + }, + "transaction": { + "loadingError": "No se ha podido cargar las transacciones." + }, + "validator": { + "loadingError": "No se han podido cargar los validadores." + } + }, + "backends": { + "oasismonitor": "API de Oasis Monitor", + "oasisscan": "API de Oasis Scan" + }, + "common": { + "amount": "Cantidad", + "block": "Bloque", + "cancel": "Cancelar", + "confirm": "Confirmar", + "delegator": "Delegador", + "from": "De", + "to": "A", + "unavailable": "No disponible", + "validator": "Validador", + "validators": "Validadores" + }, + "createWallet": { + "confirmSaved": "He guardado mi frase semilla", + "doNotShare": "Nunca compartas tu frase semilla, cualquiera con tu frase semilla puede acceder a tu billetera y tus tokens.", + "mnemonicMismatch": "La frase semilla introducida no coincide.", + "newMnemonic": "Generar una frase semilla nueva", + "thisIsYourPhrase": "Esta es tu frase semilla." + }, + "delegations": { + "activeDelegations": "Delegaciones activas", + "delegatedAmount": "Cantidad delegada" + }, + "errors": { + "LedgerOasisAppIsNotOpen": "La aplicación de Oasis en Ledger está cerrada.", + "cannotSendToSelf": "No puedes enviarte a ti mismo", + "disconnectedError": "Se ha perdido la conexión.", + "duplicateTransaction": "Transacción duplicada", + "insufficientBalance": "Saldo insuficiente", + "invalidAddress": "Dirección inválida", + "invalidNonce": "Nonce inválido (número de transacción)", + "invalidPrivateKey": "Clave privada inválida", + "unknown": "Error desconocido: {{message}}", + "unknownGrpc": "Error gRPC desconocido: {{message}}", + "usbTransportNotSupported": "Tu navegador no es compatible con WebUSB ( por ejemplo, Firefox). Intenta utilizar Chrome." + }, + "fatalError": { + "copied": "Error copiado al portapapeles", + "copy": "Copiar error al portapapeles" + }, + "home": { + "create": { + "button": "Crear billetera", + "header": "Crear una billetera nueva" + }, + "existing": { + "button": "Abrir billetera", + "header": "Acceder a una billetera existente" + } + }, + "ledger": { + "instructionSteps": { + "connectLedger": "Conecta tu dispositivo Ledger al equipo", + "header": "Pasos:", + "openOasisApp": "Abre la aplicación de Oasis en tu dispositivo Ledger" + }, + "steps": { + "loadingAccounts": "Cargando los datos de la cuenta", + "loadingBalances": "Cargando detalles del saldo", + "openingUsb": "Abriendo Ledger a través de USB" + } + }, + "menu": { + "closeWallet": "Cerrar billetera", + "home": "Inicio", + "wallet": "Billetera" + }, + "openWallet": { + "header": "¿Cómo quieres abrir tu billetera?", + "ledger": { + "header": "Abrir desde dispositivo Ledger" + }, + "method": { + "ledger": "Ledger", + "mnemonic": "Frase semilla", + "privateKey": "Clave privada" + }, + "mnemonic": { + "enterPhraseHere": "Introduce aquí tu frase semilla", + "error": "Frase semilla inválida. Por favor, asegúrate de introducir las palabras en el orden correcto, todas en minúsculas.", + "header": "Introduce tu frase semilla", + "import": "Importar mi billetera", + "instruction": "A continuación, introduce todas las palabras de tu frase semilla separadas por espacios. La mayoría de las frases semilla se componen de 24 o 12 palabras." + }, + "privateKey": { + "enterPrivateKeyHere": "Introduce aquí tu clave privada", + "error": "Clave privada inválida", + "header": "Introduce tu clave privada", + "hidePrivateKey": "Ocultar la clave privada", + "instruction": "Introduce tu clave privada en formato Base64.", + "showPrivateKey": "Mostrar la clave privada" + } + }, + "theme": { + "darkMode": "Modo oscuro" + }, + "toolbar": { + "networks": { + "local": "Local", + "mainnet": "Mainnet", + "testnet": "Testnet" + }, + "wallets": { + "type": { + "mnemonic": "Frase semilla", + "privateKey": "Clave privada" + } + } + }, + "transaction": { + "confirm": "Confirmar", + "preview": { + "amount": "Cantidad", + "from": "De", + "gas": "Gas", + "to": "A", + "type": "Tipo", + "validator": "Validador", + "warning": "Una vez que confirmes la transacción, no podrás cancelarla. Revísala cuidadosamente y confirma una vez que estés seguro de que quieres enviarla." + }, + "step": { + "signing": "Firmando la transacción", + "submitting": "Enviando la transacción" + } + }, + "validator": { + "commission": "Comisión", + "commissionBounds": { + "label": "Límites de comisión" + }, + "name": "Nombre", + "status": "Estado", + "statusActive": "Activo", + "statusInactive": "Inactivo", + "statusUnknown": "Desconocido", + "unknownValidator": "Validador desconocido" + } +} diff --git a/src/locales/i18n.ts b/src/locales/i18n.ts index 058e7c51f2..7128fed020 100644 --- a/src/locales/i18n.ts +++ b/src/locales/i18n.ts @@ -2,16 +2,24 @@ import i18next from 'i18next' import { initReactI18next } from 'react-i18next' import LanguageDetector from 'i18next-browser-languagedetector' +import de from './de/translation.json' import en from './en/translation.json' +import es from './es/translation.json' import fr from './fr/translation.json' import sl from './sl/translation.json' import tr from './tr/translation.json' import zh_CN from './zh_CN/translation.json' export const translationsJson = { + de: { + translation: de, + }, en: { translation: en, }, + es: { + translation: es, + }, fr: { translation: fr, }, @@ -30,6 +38,8 @@ export type LanguageKey = keyof typeof translationsJson export const languageLabels: [LanguageKey, string][] = [ ['en', 'English'], + ['de', 'Deutsch'], + ['es', 'Español'], ['fr', 'Français'], ['sl', 'Slovenščina'], ['tr', 'Türkçe'],