diff --git a/.changelog/1815.bugfix.md b/.changelog/1815.bugfix.md
new file mode 100644
index 0000000000..7265865714
--- /dev/null
+++ b/.changelog/1815.bugfix.md
@@ -0,0 +1,8 @@
+i18n: Update translations from Transifex and add normalization script
+
+The translation procedure was slightly changed. On Transifex, use "Download
+file to translate" instead of "Download for use". This will download the
+version of the file which includes empty strings for missing translations.
+Remove empty strings by calling `yarn extract-messages` which invokes the new
+`normalize-translations` script. On the UI, React will replace them with the
+English versions automatically.
diff --git a/README.md b/README.md
index 66fd237278..18e74edc0d 100644
--- a/README.md
+++ b/README.md
@@ -179,9 +179,12 @@ translation-ready strings. You can then export the new keys to the
Updating from [Transifex]: [English translation.json] is set as an automatically
updating resource in Transifex, so the new translation strings will appear in
-Transifex a few hours after changes are merged. After they are translated, click
-"Download for use" on each language, and create a new pull request with title
-_"i18n: Update translations from Transifex"_.
+Transifex a few hours after changes are merged. After they are translated:
+
+1. click "Download file to translate" on the target languages,
+2. `yarn run extract-messages`, and
+3. create a new pull request titled _"i18n: Update translations from
+ Transifex"_.
Adding a new language:
diff --git a/internals/scripts/normalize-translations.js b/internals/scripts/normalize-translations.js
new file mode 100644
index 0000000000..ec2486c7f8
--- /dev/null
+++ b/internals/scripts/normalize-translations.js
@@ -0,0 +1,25 @@
+/**
+ * "Download for use" from Transifex includes English strings for untranslated.
+ * "Download file to translate" includes empty strings instead. This removes
+ * empty strings and then empty groups. react-i18next will automatically
+ * use the English version of the string, if the translation does not exist.
+ *
+ * Usage: `node ./normalize-translations.js ./path/*.json`
+ */
+
+const paths = process.argv.slice(2)
+paths.forEach(path => {
+ const translationStr = require('fs').readFileSync(path, 'utf-8')
+
+ const cleanedUpTranslation = JSON.stringify(
+ JSON.parse(translationStr, (k, v) => {
+ if (v === '') return // Remove untranslated "" fields
+ if (Object.getPrototypeOf(v) === Object.prototype && Object.keys(v).length === 0) return // Remove empty groups {}
+ return v
+ }),
+ null,
+ 2,
+ )
+
+ require('fs').writeFileSync(path, `${cleanedUpTranslation}\n`, 'utf-8')
+})
diff --git a/package.json b/package.json
index d58b5bac29..4608d1077a 100644
--- a/package.json
+++ b/package.json
@@ -27,7 +27,7 @@
"lint-changelog": "markdownlint --config .changelog/.markdownlint.yml .changelog/",
"changelog": "node ./internals/scripts/changelog.js",
"release-tag": "node ./internals/scripts/release-tag.js",
- "extract-messages": "rm src/locales/en/translation.json && i18next-scanner --config=internals/extractMessages/i18next-scanner.config.js",
+ "extract-messages": "rm src/locales/en/translation.json && i18next-scanner --config=internals/extractMessages/i18next-scanner.config.js && node ./internals/scripts/normalize-translations.js ./src/locales/*/translation.json",
"fix-grommet-icons-types": "node ./internals/scripts/fix-grommet-icons-types.js",
"print-extension-dev-csp": "node ./internals/scripts/print-extension-dev-csp.js"
},
diff --git a/src/locales/fr/translation.json b/src/locales/fr/translation.json
index 172bed55bd..4a4b1b3ebc 100644
--- a/src/locales/fr/translation.json
+++ b/src/locales/fr/translation.json
@@ -30,7 +30,7 @@
"summary": {
"balance": {
"available": "Disponible",
- "debonding": "Debonding",
+ "debonding": "Réclamé",
"delegations": "Délégué (stake)",
"total": "Solde total"
},
@@ -92,7 +92,6 @@
"delegations": {
"activeDelegations": "Délégations actives",
"debondingDelegations": "Délégations réclamées",
- "debondingEpoch": "Epoch de récupération",
"delegatedAmount": "Montant délégué",
"reclaimedAmount": "Montant réclamé"
},
@@ -150,7 +149,6 @@
"openOasisApp": "Ouvrez l'application Oasis sur votre matériel Ledger"
},
"steps": {
- "done": "Fin",
"loadingAccounts": "Chargement des adresses",
"loadingBalances": "Chargement du solde des adresses",
"openingUsb": "Ouverture du Ledger via USB"
@@ -168,10 +166,7 @@
},
"header": "Comment souhaitez-vous ouvrir votre portefeuille ?",
"ledger": {
- "cancel": "Annuler",
- "header": "Ouvrir à partir d'un matériel Ledger",
- "openWallets": "Ouvrir",
- "selectWallets": "Sélectionnez les comptes à ouvrir"
+ "header": "Ouvrir à partir d'un matériel Ledger"
},
"method": {
"ledger": "Ledger",
@@ -205,17 +200,13 @@
"testnet": "Testnet"
},
"wallets": {
- "close": "Fermer",
- "switchOtherWallet": "Passer à un autre compte",
"type": {
- "ledger": "Ledger",
"mnemonic": "Phrase secrète",
"privateKey": "Clé privée"
}
}
},
"transaction": {
- "abort": "Annuler",
"confirm": "Confirmer",
"preview": {
"amount": "Montant",
@@ -258,6 +249,6 @@
"statusInactive": "Inactif",
"statusUnknown": "Inconnu",
"totalEscrow": "Escrow total",
- "unknownValidator": "Unknown validator"
+ "unknownValidator": "Validateur inconnue"
}
}
diff --git a/src/locales/sl/translation.json b/src/locales/sl/translation.json
index c4d813ccda..0b94d6c720 100644
--- a/src/locales/sl/translation.json
+++ b/src/locales/sl/translation.json
@@ -11,6 +11,7 @@
},
"delegate": "Delegiraj"
},
+ "addressCopied": "Naslov skopiran.",
"loading": "Nalaganje računa",
"loadingError": "Računa ni mogoče naložiti.",
"reclaimEscrow": {
@@ -24,6 +25,7 @@
"title": "Ste prepričani, da želite nadaljevati?"
},
"enterAddress": "Vnesite naslov",
+ "enterAmount": "Vnesite znesek",
"recipient": "Prejemnik",
"send": "Pošlji",
"success": "Transakcija uspešno izvršena. Novo stanje na vašem računu bo prikazano v kratkem."
@@ -43,7 +45,7 @@
"total": "Stanje"
},
"noTransactionFound": "Ni transakcij",
- "noWalletIsOpen": "Za pošiljanje, sprejemanje, vlaganje in menjavo {{ ticker }} morate odpreti vašo denarnico!",
+ "noWalletIsOpen": "Za pošiljanje, sprejemanje, vlaganje in menjavo {{ticker}} morate odpreti vašo denarnico!",
"notYourAccount": "To ni vaš račun.",
"yourAccount": "To je vaš račun."
},
@@ -69,7 +71,7 @@
"loadingError": "Transakcij ni bilo mogoče pridobiti.",
"reclaimEscrow": {
"received": "Vračilo investitorju",
- "sent": "Prejeto od overitelja"
+ "sent": "Zahtevano od overitelja"
},
"stakingAllow": {
"received": "Dobljeno dovoljenje za ",
@@ -145,6 +147,7 @@
"unknown": "Neznana napaka: {{message}}",
"unknownGrpc": "Neznana napaka gRPC: {{message}}",
"unknownLedgerError": "Neznana napaka na Ledgerju: {{message}}",
+ "unknownParaTimeError": "Neznana napaka v ParaTime: {{message}}",
"usbTransportError": "Napaka na prenosu prek USB: {{message}}",
"usbTransportNotSupported": "Vaš brskalnik ne podpira WebUSB (npr. Firefox). Poskusite z uporabo Chroma."
},
@@ -161,7 +164,7 @@
"oasisscan": "Deluje s pomočjo Oasis Scan API & Oasis gRPC"
},
"terms": "Pogoji uporabe",
- "version": "Različica: , zgrajena dne {{buildTime}}"
+ "version": "Različica () zgrajena {{buildTime}}"
},
"home": {
"create": {
@@ -176,6 +179,13 @@
}
},
"ledger": {
+ "extension": {
+ "connect": "Priklopi Ledger",
+ "failed": "Priklop spodeletel",
+ "grantAccess": "Dovoli dostop Ledgerju",
+ "instructionStep": "Ko bo naprava priklopljena, nadaljujte z uporabo denarnice",
+ "succeed": "Naprava priklopljena"
+ },
"instructionSteps": {
"closeLedgerLive": "Zaprite Ledger Live app na računalniku.",
"connectLedger": "Povežite vaš Ledger z računalnikom.",
@@ -183,7 +193,7 @@
"openOasisApp": "Odprite Oasis App na vašem Ledgerju."
},
"steps": {
- "done": "Končano",
+ "idle": "Na voljo",
"loadingAccounts": "Nalaganje podrobnosti računa",
"loadingBalances": "Nalaganje podrobnosti stanja",
"openingUsb": "Odpiranje Ledgerja prek USB"
@@ -192,7 +202,10 @@
"menu": {
"closeWallet": "Zapri denarnico",
"home": "Domov",
+ "lockProfile": "Zakleni profil",
+ "paraTimes": "ParaTimi",
"stake": "Vlaganje",
+ "unlockProfile": "Odkleni profil",
"wallet": "Denarnica"
},
"openWallet": {
@@ -201,7 +214,11 @@
},
"header": "Kako želite odpreti denarnico?",
"importAccounts": {
+ "accountCounter_one": "Izbran en račun",
+ "accountCounter_zero": "Ni izbranega računa",
+ "next": "Nadaljuj",
"openWallets": "Odpri",
+ "prev": "Nazaj",
"selectWallets": "Izberite račune"
},
"ledger": {
@@ -228,28 +245,146 @@
"showPrivateKey": "Pokaži zasebni ključ"
}
},
+ "paraTimes": {
+ "amount": {
+ "advanced": "Napredno",
+ "available": "Na voljo:",
+ "feeAmountPlaceholder": "Znesek provizije (nano {{ticker}})",
+ "feeGasPlaceholder": "Gas za provizijo",
+ "max": "MAX",
+ "tooltip": "Maks. vrednost bo lahko zmanjšana za provizijo"
+ },
+ "common": {
+ "cipher": "Cipher",
+ "depositHeader": "Polog na ParaTime",
+ "emerald": "Emerald",
+ "evmcType": "(EVMc)",
+ "sapphire": "Sapphire",
+ "withdrawHeader": "Dvig iz ParaTima"
+ },
+ "confirmation": {
+ "confirmTransferLabel": "Potrjujem pravilnost zneska in naslova",
+ "depositLabel": "Položi",
+ "withdrawLabel": "Dvigni"
+ },
+ "footer": {
+ "back": "Nazaj",
+ "next": "Naprej"
+ },
+ "pageInaccessible": "Prenosi niso na voljo",
+ "recipient": {
+ "placeholder": "0x..."
+ },
+ "selection": {
+ "cancel": "Prekliči prenos",
+ "evmc": "EVMc",
+ "select": "Izberite ParaTime"
+ },
+ "transfers": {
+ "deposit": "Polog na ParaTime",
+ "depositDisabled": "Sredstev {{ticker}} za prenos ni na voljo",
+ "withdraw": "Dvig s ParaTima"
+ },
+ "unsupportedFormStep": "Nepodprt korak obrazca",
+ "validation": {
+ "insufficientBalanceToPayFee": "Stanje prenizko za plačilo provizije",
+ "invalidDecimalValue": "Dovoljenih največ {{decimals}} decimalk",
+ "invalidEthPrivateKey": "Neveljaven zasebni ključ Ethereum",
+ "invalidEthPrivateKeyLength": "Zasebni ključ mora biti dolg 64 znakov",
+ "invalidFee": "Vrednost mora biti število, večje ali enako 0",
+ "required": "Polje je zahtevano",
+ "unsupportedParaTime": "Nepodprt ParaTime"
+ }
+ },
+ "persist": {
+ "createProfile": {
+ "choosePassword": "Izberite geslo",
+ "passwordMismatch": "Geslo se ne ujema",
+ "repeatPassword": "Ponovno vnesite geslo",
+ "startPersisting": "Lokalno shrani zasebne ključe, zaščitene z geslom",
+ "unsupported": "Shramba na tem brskalniku ni podprta"
+ },
+ "loading": "Nalaganje",
+ "loginToProfile": {
+ "deleteProfile": {
+ "button": "Izbriši profil",
+ "description": "Ali ste prepričani, da želite izbrisati ta profil? To bo izbrisalo vaše zasebne ključe in ne bo jih mogoče obnoviti.
Če želite nadaljevati vnesite '{{confirmationKeyword}}'.",
+ "title": "Izbriši Profil"
+ },
+ "description": "Za dostop do obstoječe denarnice na tem brskalniku se prijavite v vaš profil",
+ "enterPasswordHere": "Vnesite geslo",
+ "hidePassword": "Skrij geslo",
+ "showPassword": "Prikaži gesl",
+ "skipUnlocking": "Nadaljuj brez uporabe profila",
+ "title": "Dobrodošli nazaj!",
+ "unlock": "Odkleni",
+ "wrongPassword": "Napačno geslo"
+ }
+ },
"theme": {
"darkMode": "Temni način",
- "lightMode": "Svetli način"
+ "lightMode": "Svetli način",
+ "title": "Tema"
},
"toolbar": {
+ "contacts": {
+ "add": "Dodaj Stik",
+ "address": "Naslov",
+ "cancel": "Prekliči",
+ "delete": {
+ "button": "Izbriši stik",
+ "confirm": "Da, izbriši",
+ "description": "Ste prepričani, da želite izbrisati ta stik?",
+ "title": "Izbriši Stik"
+ },
+ "emptyList": "Nimate stikov.",
+ "manage": "Upravljaj stik",
+ "name": "Ime",
+ "notAvailable": "Da pričnete dodajati stike, najprej ustvarite profil med odpiranjem denarnice.",
+ "save": "Shrani",
+ "validation": {
+ "addressError": "Vnesite veljaven naslov denarnice.",
+ "addressNotUniqueError": "Naslov že obstaja",
+ "nameLengthError": "Največ 16 znakov",
+ "required": "Polje je obvezno"
+ }
+ },
"networks": {
"local": "Lokalno",
"mainnet": "Mainnet",
"testnet": "Testnet"
},
+ "profile": {
+ "deletion": "Brisanje"
+ },
+ "settings": {
+ "cancel": "Prekliči",
+ "contacts": "Stiki",
+ "delete": {
+ "description": "Ali ste prepričani, da želite izbrisati ta račun?",
+ "inputHelp": "Tega ne bo mogoče razveljaviti. Če želite nadaljevati vnesite '{{confirmationKeyword}}'.",
+ "title": "Izbriši Račun"
+ },
+ "exportPrivateKey": {
+ "hint2": "Ključa ni mogoče obnoviti, če ga izgubite. Poskrbite, da imate varnostno kopijo zasebnega ključa shranjeno na varnem mestu.",
+ "title": "Izvozi Zasebni Ključ"
+ },
+ "myAccountsTab": "Moji računi",
+ "nameLengthError": "Največ 16 znakov",
+ "profile": "Profil",
+ "save": "Shrani",
+ "settings": "Nastavitve"
+ },
"wallets": {
- "close": "Zapri",
- "switchOtherWallet": "Izberite račun",
"type": {
- "ledger": "Ledger",
"mnemonic": "Mnemonik",
- "privateKey": "Zasebni ključ"
+ "privateKey": "Zasebni ključ",
+ "usbLedger": "USB Ledger"
}
}
},
"transaction": {
- "abort": "Prekini",
+ "cancel": "Prekliči",
"confirm": "Potrdi",
"preview": {
"amount": "Znesek",
@@ -270,9 +405,9 @@
"submitting": "Pošiljanje transakcije"
},
"types": {
- "addEscrow": "Delegiranje vaših kovancev overiteljem",
- "reclaimEscrow": "Vračilo delegiranih kovancev na vaš račun",
- "transfer": "Prenos kovancev z vašega na tuj račun"
+ "addEscrow": "delegiranje vaših kovancev overiteljem",
+ "reclaimEscrow": "vračilo delegiranih kovancev na vaš račun",
+ "transfer": "prenos kovancev z vašega na tuj račun"
}
},
"validator": {
diff --git a/src/locales/tr/translation.json b/src/locales/tr/translation.json
index 481e9e1e6c..430ac6659a 100644
--- a/src/locales/tr/translation.json
+++ b/src/locales/tr/translation.json
@@ -5,12 +5,19 @@
"description": "Doğrulayıcının durumu: {{validatorStatus}}. Yaptığınız delegasyonla herhangi bir ödül elde edemeyebilirsiniz.",
"title": "Devam etmek istediğinize emin misiniz?"
},
+ "confirmDelegatingToTop": {
+ "acknowledge": "Yine de delege et",
+ "description": "Bu doğrulayıcı, bahis miktarına göre ilk 20'de yer almaktadır. Ağ güvenliğini ve merkezi olmayan yönetimi artırmak için lütfen daha küçük bir doğrulayıcıya yetki vermeyi düşünün."
+ },
"delegate": "Delege"
},
+ "addressCopied": "Adres kopyalandı.",
"loading": "Hesap yükleniyor",
- "loadingError": "Hesap yüklenmedi. Bilgiler tam ya da güncel olmayabilir.",
+ "loadingError": "Hesap yüklenemedi.",
"reclaimEscrow": {
- "reclaim": "Al"
+ "convertedToShares": "Karşılık gelen gigashares sayısı: {{shares}}",
+ "reclaim": "Al",
+ "reclaimAll": "Hepsini al."
},
"sendTransaction": {
"confirmSendingToValidator": {
@@ -18,13 +25,16 @@
"title": "Devam etmek istediğine emin misin?"
},
"enterAddress": "Bir adres girin",
+ "enterAmount": "Bir miktar girin.",
"recipient": "Alıcı",
"send": "Gönder",
"success": "İşleminiz başarıyla gönderildi. İşlemin hesabınıza geçmesi bir dakikaya yakın sürebilmektedir."
},
"subnavigation": {
- "activeDelegations": "Aktif delegasyon",
- "debondingDelegations": "Ayrılmış delegasyon",
+ "activeDelegations": "Aktif delegasyonlar",
+ "debondingDelegations": "Debonding delegasyonları",
+ "mobileActiveDelegations": "Delegasyonlar",
+ "mobileDebondingDelegations": "Debonding",
"transactions": "İşlemler"
},
"summary": {
@@ -32,27 +42,42 @@
"available": "Uygun",
"debonding": "Ayrılmış",
"delegations": "Stake Edilmiş",
- "total": "Toplam bakiye"
+ "total": "Toplam"
},
"noTransactionFound": "İşlem bulunamadı",
- "noWalletIsOpen": "ROSE jetonlarınızı göndermek, almak, stake etmek ya da takas etmek için cüzdanınızı açın! ",
+ "noWalletIsOpen": "{{ticker}} token göndermek, almak, stake etmek ve takas etmek için cüzdanınızı açın ",
"notYourAccount": "Bu sizin hesabınız değil.",
"yourAccount": "Bu sizin hesabınız"
},
"transaction": {
"addEscrow": {
- "received": "Escrowdaki delegasyondan alındı",
- "sent": "Doğrulayıcıya delege edildi"
+ "received": "heyet emanette kabul edildi",
+ "sent": " validatörüne delege edildi."
+ },
+ "consensusDeposit": {
+ "received": "{{runtimeName}}ParaTime'a depozito alındı",
+ "sent": "{{runtimeName}} ParaTime'a yatırıldı"
+ },
+ "consensusWithdraw": {
+ "received": "{{runtimeName}}ParaTime'dan tanesi çekildi",
+ "sent": "{{runtimeName}}ParaTime'dan çekilmeden alındı"
},
+ "explorerLink": "Explorer aracılığıyla işlem kayıtlarını görüntüle",
+ "failed": "Hata",
"genericTransaction": {
"destination": "Diğer adres",
- "header": "Yöntemi '{{method}}'"
+ "header": "Yöntem {{method}}"
},
- "loadingError": "İşlem geçmişinizi yükleyemiyoruz. Liste boş ya da süresi geçmiş olabilir.",
+ "loadingError": "İşlemler yüklenemedi.",
"reclaimEscrow": {
- "received": " delegator tarafından alındı",
- "sent": "Doğrulayıcıdan alındı"
+ "received": "delege tarafından geri talep edildi",
+ "sent": "doğrulayıcı tarafından geri talep edildi"
},
+ "stakingAllow": {
+ "received": "ödenek aldı",
+ "sent": "Ödenek ayarla"
+ },
+ "successful": "Başarılı",
"transfer": {
"received": "Alındı ",
"sent": {
@@ -61,7 +86,7 @@
},
"unrecognizedTransaction": {
"destination": "Diğer adres",
- "header": "Tanınmayan işlem yöntemi '{{method}}'"
+ "header": "Tanınmayan işlem, yöntem {{method}}"
}
},
"validator": {
@@ -69,6 +94,14 @@
"showingStale": "Doğrulayıcı listesini gösteriyoruz: {{staleTimestamp}}."
}
},
+ "backends": {
+ "oasismonitor": "Oasis Monitör API",
+ "oasisscan": "Oasis Arama API"
+ },
+ "banner": {
+ "buildPreview": "Lütfen bunun Oasis Wallet'ın deneysel bir yapısı olduğunu ve sırlarınızın güvende olmadığını unutmayın. SADECE TEST AMAÇLI KULLANIN.",
+ "buildStaging": "Lütfen bunun Oasis Wallet'ın hazırlık dağıtımı olduğunu unutmayın. SADECE TEST AMAÇLI KULLANIN."
+ },
"common": {
"amount": "Miktar",
"block": "Engelle",
@@ -76,6 +109,9 @@
"confirm": "Onayla",
"delegator": "Delegatör",
"from": "Kimden",
+ "hash": "Tx Çıktısı",
+ "round": "Raund",
+ "time": "Zaman",
"to": "Kime",
"unavailable": "Uygun değil",
"validator": "Doğrulayıcı",
@@ -84,7 +120,7 @@
"createWallet": {
"confirmSaved": "Anahtar kelimelerimi kaydettim",
"doNotShare": "Anahtar kelimenizi asla paylaşmayın, anahtar kelimelerinizi bilen herkes cüzdanınıza ve tokenlarınıza erişebilir.",
- "instruction": "Anahtar kelimelerinizi doğru sırada güvenli bir yere kaydedin, cüzdanınızı açmak için buna ihtiyacınız olacak.",
+ "instruction": "Anahtar kelimenizi doğru sırayla güvenli bir konuma kaydedin; cüzdanınızı açmak için buna ihtiyacınız olacak.",
"mnemonicMismatch": "Girdiğiniz anımsatıcılar birbiriyle eşleşmiyor.",
"newMnemonic": "Yeni bir mnemonic oluştur",
"thisIsYourPhrase": "Size ait olan mnemonic"
@@ -92,26 +128,37 @@
"delegations": {
"activeDelegations": "Aktif delegasyonlar",
"debondingDelegations": "Ayrılan delegasyonlar",
- "debondingEpoch": "İşlemi/dönemi ayır",
+ "debondingTimeEnd": "Ayrılmanın sonu",
"delegatedAmount": "Devredilen miktar",
+ "loadingError": "Yetkiler yüklenemedi.",
"reclaimedAmount": "Alınan miktar"
},
+ "deleteForm": {
+ "confirm": "Evet, Sil",
+ "confirmationKeyword": "Sil",
+ "hint": "'{{confirmationKeyword}}' yazın"
+ },
"errors": {
+ "LedgerDerivedDifferentAccount": "Bu hesap şu anda bağlı olan Ledger'a ait değil.",
"LedgerOasisAppIsNotOpen": "Ledger üzerindeki Oasis Uygulaması kapalı.",
+ "bluetoothTransportNotSupported": "Cihazınız Bluetooth desteklemiyor.",
"cannotSendToSelf": "Kendinize gönderemezsiniz",
+ "disconnectedError": "Bağlantı koptu.",
"duplicateTransaction": "Tekrarlayan işlem",
+ "indexerAPIError": "{{indexerName}} çalışmıyor gibi görünüyor, bazı bilgiler eksik veya güncel olmayabilir. Lütfen daha sonra tekrar gelin.",
"insufficientBalance": "Yetersiz bakiye",
"invalidAddress": "Geçersiz adres",
"invalidNonce": "Geçersiz Nonce (transaction number)",
"invalidPrivateKey": "Geçersiz anahtar kelime",
"ledgerAppVersionNotSupported": "Alındı : \"Ledger uygulama versiyonu desteklenmiyor\", bu yanlış bir işlem olabilir, işlemi tekrar edin, eğer hata devam ederse Ledger'ınızdaki Oasis uygulamasını güncelleyin.",
"ledgerCannotOpenOasisApp": "Oasis uygulamasını Ledger üzerinde açamadı, kilidin açık olduğundan ve Oasis uygulamasının açık olduğundan emin olun.",
- "ledgerNoDeviceSelected": "Ledger cihazı seçilmedi. Bağlı olduğundan emin olun, Ledger ile USB bağlantınız arasındaki genel sorunları inceleyin ve site izinlerinin USB cihazınızı engellemediğinden emin olun .",
+ "ledgerNoDeviceSelected": "Hiçbir Ledger cihazı seçilmedi. Bağlı olduğundan emin olun, Ledger ile yaygın USB bağlantı sorunlarını kontrol edin ve site izinlerinin USB cihazlarını engellemediğini kontrol edin.",
"ledgerTransactionRejected": "İşlem, Ledger tarafından reddedildi",
"noOpenWallet": "Hiçbir cüzdan açık değil.",
"unknown": "Bilinmeyen hata : {{message}}",
"unknownGrpc": "Bilinmeyen gRPC hatası: {{message}}",
"unknownLedgerError": "Bilinmeyen ledger hatası : {{message}}",
+ "unknownParaTimeError": "Bilinmeyen ParaTime hatası: 1 {{message}}",
"usbTransportError": "USB hatası : {{message}}",
"usbTransportNotSupported": "Kullandığınız tarafıyıcı WebUSB'yi desteklemiyor. (Örneğin Firefox). Lütfen Chrome kullanmayı deneyin."
},
@@ -119,16 +166,28 @@
"copied": "Hata panoya kopyalandı",
"copy": "Hatayı panoya kopyala",
"heading": "Önemli bir hata oluştu",
- "instruction": "Oasis Cüzdanı'nın çalışmasını zorunlu olarak durduran bir hata meydana geldi. Lütfen sayfayı yenileyin ve sorunun devam edip etmediğini görmek için cüzdanınızı tekrar açın. Eğer sorun devam ediyorsa lütfen adresine e-posta atın ve hatayı ek olarak gönderin."
+ "instruction": "Önemli bir hata oluştu ve Oasis Cüzdanının durdurulması gerekiyor. Sorunun devam edip etmediğini görmek için sayfayı yenilemeyi ve cüzdanınızı yeniden açmayı deneyin. Sorun devam ederse lütfen e-posta yoluyla destek ekibimizle iletişime geçin ve raporu aşağıya ekleyin."
+ },
+ "fiatOnramp": {
+ "astarFootnote": "Cayman Adaları'ndan muaf bir şirket olan AStar Technologies'in, Oasis adına ve amaçları doğrultusunda hareket ettiği ve aynı zamanda Oasis Cüzdanının sağlayıcısı olduğu işbu belgeyle belirtilmektedir.",
+ "description": "Bu özellik, fiat para biriminizi kripto para birimine dönüştürmenize olanak tanır.",
+ "header": "ROSE Satın Al",
+ "headerInWidget": "Cüzdanınıza ROSE satın alın.",
+ "notMainnet": "Bu özelliği yalnızda Ana Ağda kullanabilirsiniz.",
+ "notYourAccount": "Bu özelliği yalnızda cüzdanınız açıkken kullanabilirsiniz.",
+ "openYourWallet": "Cüzdanınızı açın.",
+ "switchToMainnet": "Mainnet ağına geç.",
+ "thirdPartyAcknowledge": "Üçüncü taraf bir çözüm kullandığımı ve Oasis'in bu çözümün kullanımına ilişkin herhangi bir sorumluluk taşımadığını anlıyorum.",
+ "thirdPartyDisclaimer": "Bu hizmet harici bir tarafça sağlanmaktadır. Oasis herhangi bir sorumluluk taşımamaktadır. Tüm ücretler Transak tarafından tahsil edilir."
},
"footer": {
- "github": "Oasis Cüzdan tamamen açık kaynaktır - Geri bildirim ve sorunlar için teşekkür ederiz!",
+ "github": "Oasis Cüzdan tamamen açık kaynaktır - Geri bildirimler ve sorunlar takdir edilmektedir!",
"poweredBy": {
"oasismonitor": "Oasis Monitor API & Oasis gRPC tarafından destekleniyor",
"oasisscan": "Oasis Scan API & Oasis gRPC tarafından destekleniyor"
},
"terms": "Şartlar ve Koşullar",
- "version": "Versiyon: {{buildTime}} tarihinde inşa edildi."
+ "version": "Sürüm: (işlem: ) {{buildTime}} tarihinde oluşturuldu"
},
"home": {
"create": {
@@ -142,7 +201,18 @@
"header": "Mevcut cüzdana giriş yap"
}
},
+ "infoBox": {
+ "valueCopied": "{{label}}kopyalandı"
+ },
+ "language": "Dil",
"ledger": {
+ "extension": {
+ "connect": "Ledger cihazınızı bağlayın.",
+ "failed": "Bağlantı başarısız.",
+ "grantAccess": "Ledgerınıza erişim izni verin",
+ "instructionStep": "Cihaz bağlandıktan sonra cüzdan uygulamasında işleme devam edin",
+ "succeed": "Cihaz bağlandı"
+ },
"instructionSteps": {
"closeLedgerLive": "Bilgisayarınızdan Ledger Live Uygulamasını kapatın.",
"connectLedger": "Lütfen Ledger cihazınızı bilgisayarınıza bağlayın",
@@ -150,28 +220,58 @@
"openOasisApp": "Oasis Uygulamasını, Ledger cihazınızda açınız."
},
"steps": {
- "done": "Tamam",
+ "idle": "Boşta",
"loadingAccounts": "Hesap detayları yükleniyor",
"loadingBalances": "Bakiye detayları yükleniyor",
+ "loadingBluetoothDevices": "Bluetooth cihazları yükleniyor.",
"openingUsb": "Ledger USB Üzerinden Açılıyor"
}
},
"menu": {
+ "addAccounts": "Hesap ekle",
"closeWallet": "Cüzdanı kapat",
+ "fiatOnramp": "Satın Al",
"home": "Ana Sayfa",
+ "lockProfile": "Profili kilitle.",
+ "openMenu": "Menü",
+ "paraTimes": "ParaTimelar",
"stake": "Stake",
+ "unlockProfile": "Profilin kilidini aç.",
"wallet": "Cüzdan"
},
+ "migrateV0Extension": {
+ "backupInvalidPrivateKeys": {
+ "confirm": "Özel anahtarımı güvenle sakladım.",
+ "reveal": "Geçersiz özel anahtarı göstermek için dokunun"
+ },
+ "backupMnemonic": {
+ "confirm": "Özel kelimelerimi güvenle sakladım",
+ "description": "Cüzdan uzantısının yeni sürümü artık anımsatıcınızı saklamayacaktır. Bu ifade, erişiminizi kaybettiyseniz hesabınızı geri yüklemenin tek yoludur. Anımsatıcınızı yedeklemek için son bir şansınız var.",
+ "reveal": "Özel Kelimelerinizi göstermek için tıklayın."
+ },
+ "finishMigration": "Cüzdanın yeni sürümünü açın",
+ "nextStep": "Sonraki",
+ "requiredField": "Bu alan zorunludur.",
+ "title": "Önemli Cüzdan Güncellemesi"
+ },
"openWallet": {
"bitpie": {
- "warning": "BitPie cüzdan kullanıcıları: Anımsatıcı kelimelerinizi direkt olarak BitPie cüzdanınızda içeriye aktaramazsınız. Detaylar için dökümana göz atınız. "
+ "warning": "❗ BitPie cüzdan kullanıcıları: Anımsatıcı ifadeyi doğrudan BitPie cüzdanınızdan içe aktaramazsınız. Ayrıntılar için belgelere bakın."
},
"header": "Cüzdanınızı nasıl açmak istersiniz?",
- "ledger": {
- "cancel": "İptal et",
- "header": "Ledger cihazınızdan açınız",
+ "importAccounts": {
+ "accountCounter": "{{count}}hesaplar seçildi.",
+ "accountCounter_one": "Bir hesap seçildi",
+ "accountCounter_plural": "{{count}}hesaplar seçildi.",
+ "accountCounter_zero": "Seçilen Hesap bulunamadı.",
+ "next": "Sonraki",
"openWallets": "Aç",
- "selectWallets": "Açmak istediğiniz hesapları seçin"
+ "pageNumber": "Sayfa {{pageNum}} / {{totalPages}}",
+ "prev": "Önceki",
+ "selectWallets": "Açılacak hesapları seçin"
+ },
+ "ledger": {
+ "header": "Ledger cihazınızdan açınız"
},
"method": {
"ledger": "Ledger",
@@ -194,28 +294,186 @@
"showPrivateKey": "Özel anahtarı göster"
}
},
+ "paraTimes": {
+ "amount": {
+ "advanced": "Gelişmiş",
+ "available": "Mevcut",
+ "depositDescription": "Lütfen yatırılacak {{ticker}} miktarını girin ve ardından {{nextButtonLabel}} düğmesine tıklayın",
+ "emptyAccount": "Hesap boş. Çekilecek bir şey yok.",
+ "feeAmountPlaceholder": "Gas ücreti (nano {{ticker}})",
+ "feeGasPlaceholder": "Gas ücreti",
+ "max": "MAKS",
+ "tooltip": "Maksimum değer ücrete göre azalabilir",
+ "withdrawDescription": "Lütfen çekilecek {{ticker}}tutarını girin ve ardından {{nextButtonLabel}} düğmesine tıklayın"
+ },
+ "common": {
+ "cipher": "şifre",
+ "depositHeader": "ParaTime'a yatır",
+ "emerald": "Zümrüt",
+ "evmcType": "(EVMc)",
+ "header": "ParaTime Transferleri",
+ "sapphire": "Safir",
+ "withdrawHeader": "ParaTime'dan Çek"
+ },
+ "confirmation": {
+ "confirmDepositDescription": "Lütfen yatırılan tutarın ve alıcı adresinin doğru olduğunu onaylayın ve ardından \"{{nextButtonLabel}}\" seçeneğine tıklayın.",
+ "confirmDepositToForeignAccountDescription": "Hedef adres cüzdanınızdaki hesapların hiçbiriyle eşleşmiyor! Borsalar gibi bazı hizmetler, hesabınıza para yatırmak için doğrudan para yatırma işlemini desteklemeyebilir. Daha iyi uyumluluk için öncelikle ParaTime hesabınıza para yatırmanızı ve ardından {{ticker}}'ı hedef adrese aktarmanızı önemle tavsiye ederiz.",
+ "confirmTransferLabel": "Tutarın ve adresin doğru olduğunu onaylıyorum",
+ "confirmTransferToForeignAccount": "Doğrudan harici bir hesaba para çekmek istediğimi onaylıyorum",
+ "confirmTransferToValidatorDescription": "Bu bir doğrulayıcı cüzdan adresidir. Bu adrese yapılan transferler paranızı doğrulayıcıya yatırmaz.",
+ "confirmTransferToValidatorLabel": "{{ticker}}'u bir doğrulayıcı adresine aktarmak istediğimi onaylıyorum",
+ "confirmWithdrawDescription": "Lütfen çekilen tutarın ve alıcı adresinin doğru olduğunu onaylayın ve ardından \"{{nextButtonLabel}}\" seçeneğine tıklayın.",
+ "confirmWithdrawToForeignAccountDescription": "Hedef adres cüzdanınızdaki hesapların hiçbiriyle eşleşmiyor! Borsalar gibi bazı hizmetler, hesaba para yatırmak için doğrudan para çekme işlemlerini desteklemeyebilir. Daha iyi uyumluluk için öncelikle konsensüs hesabınıza para çekmenizi ve ardından {{ticker}}'ı hedef adrese aktarmanızı önemle tavsiye ederiz.",
+ "depositDescription": "{{paraTime}} {{paratimeType}}'a {{value}} {{ticker}} ila {{address}} yatırmak üzeresiniz",
+ "depositLabel": "Yatır",
+ "withdrawLabel": "Çek"
+ },
+ "footer": {
+ "back": "Geri",
+ "next": "İleri",
+ "notice": "EVMC - Ethereum Sanal Makine ile uyumlu"
+ },
+ "pageInaccessible": "Transferler mevcut değil",
+ "recipient": {
+ "depositDescription": "Lütfen alıcı adresini {{paraTime}} {{paratimeType}} alanına girin ve ardından {{nextButtonLabel}} seçeneğine tıklayın",
+ "ethPrivateKeyPlaceholder": "Ethereum uyumlu özel anahtarınızı girin",
+ "placeholder": "0x...",
+ "withdrawDescription": "Lütfen alıcı adresini fikir birliğiyle girin ve {{nextButtonLabel}} düğmesini tıklayın"
+ },
+ "selection": {
+ "cancel": "Transferi iptal et.",
+ "depositDescription": "Lütfen {{ticker}}'ınızı hangi ParaTime'a yatırmak istediğinizi seçin ve ardından {{nextButtonLabel}} seçeneğine tıklayın.",
+ "evmc": "EVMc",
+ "select": "ParaTime seç",
+ "withdrawDescription": "Lütfen {{ticker}}'ınızı hangi ParaTime'dan çekmek istediğinizi seçin ve ardından {{nextButtonLabel}} öğesine tıklayın."
+ },
+ "summary": {
+ "navigate": "ParaTime Transferlerine gidin"
+ },
+ "transfers": {
+ "deposit": "ParaTime'a yatır",
+ "depositDisabled": "Aktarılacak {{ticker}} jetonunuz yok",
+ "withdraw": "ParaTime'dan çek"
+ },
+ "unsupportedFormStep": "Desteklenmeyen adım",
+ "validation": {
+ "insufficientBalanceToPayFee": "Komisyonu ödemek için yeterli bakiyeniz yok.",
+ "invalidDecimalValue": "Maksimum {{decimals}} ondalık basamağa izin verilir",
+ "invalidEthPrivateKey": "Ethereum destekli özel anahtarınız geçerli değil.",
+ "invalidEthPrivateKeyLength": "Özel anahtarınız 64 haneli olmalıdır.",
+ "invalidFee": "Değer 0'dan büyük veya 0'a eşit bir tam sayı olmalıdır",
+ "required": "Alan gereklidir",
+ "unsupportedParaTime": "Desteklenmeyen ParaTime"
+ }
+ },
+ "persist": {
+ "createProfile": {
+ "choosePassword": "Şifre seçin.",
+ "passwordMismatch": "Girilen paralolar uyuşmuyor",
+ "repeatPassword": "Paralonuzu tekrardan girin.",
+ "startPersisting": "Özel anahtarları bir parolayla korunarak yerel olarak saklayın",
+ "unsupported": "Kalıcılık bu tarayıcıda desteklenmiyor."
+ },
+ "loading": "Yükleniyor",
+ "loginToProfile": {
+ "deleteProfile": {
+ "button": "Profili Sil",
+ "title": "Profili sil"
+ },
+ "description": "Zaten eklediğiniz cüzdanlara erişmek için bu bilgisayardaki mevcut kullanıcı profilinizde oturum açın.",
+ "enterPasswordHere": "Buraya şifrenizi girin.",
+ "hidePassword": "Parolayı sakla",
+ "showPassword": "Parolayı göster",
+ "skipUnlocking": "Profil olmadan devam et",
+ "title": "Tekrar hoşgeldiniz!",
+ "unlock": "Kilidi Aç",
+ "wrongPassword": "Yanlış şifre"
+ }
+ },
"theme": {
"darkMode": "Gece modu",
- "lightMode": "Gündüz modu"
+ "lightMode": "Gündüz Modu",
+ "title": "Tema"
},
"toolbar": {
+ "contacts": {
+ "add": "Kontakt Ekle",
+ "address": "Adres",
+ "cancel": "İptal",
+ "delete": {
+ "button": "Kontaktı sil",
+ "confirm": "Evet, sil",
+ "description": "Bu kontaktı silmek istediğinize emin misiniz?",
+ "title": "Kontaktı sil"
+ },
+ "emptyList": "Kontratınız bulunmuyor",
+ "manage": "Kontaktı düzenle",
+ "name": "İsim",
+ "notAvailable": "Kişi eklemeye başlamak için bir cüzdan açarken bir profil oluşturun.",
+ "save": "Kaydet",
+ "validation": {
+ "addressError": "Lütfen geçerli bir cüzdan adresi girin.",
+ "addressNotUniqueError": "Adres zaten bulunuyor",
+ "nameLengthError": "16 haneden daha fazla girmeyin",
+ "required": "Bu alan gerekli."
+ }
+ },
"networks": {
"local": "Yerel",
"mainnet": "Mainnet",
+ "selector": "Ağ seç",
"testnet": "Testnet"
},
+ "profile": {
+ "deletion": "Silme",
+ "notAvailable": "Bir cüzdan açarken profilinizi ayarlayabilirsiniz.",
+ "password": {
+ "current": "Mevcut şifre",
+ "enterCurrent": "Mevcut şifrenizi girin",
+ "enterNewPassword": "Yeni şifre",
+ "reenterNewPassword": "Yeni şifrenizi tekrar girin",
+ "submit": "Şifreyi güncelle",
+ "success": "Şifre güncellendi.",
+ "title": "Yeni bir şifre girin"
+ }
+ },
+ "settings": {
+ "accountNamingNotAvailable": "Hesabınızı adlandırmak içinbir cüzdan açarken bir profil oluşturun.",
+ "cancel": "İptal",
+ "contacts": "Kontaklar",
+ "delete": {
+ "description": "Aşağıdaki hesabı silmek istediğinizden emin misiniz?",
+ "inputHelp": "Bu eylem geri alınamaz. Devam etmek için lütfen aşağıya {{confirmationKeyword}} girin.",
+ "title": "Hesabı sil",
+ "tooltip": "Her zaman en az bir hesabınızın olması gerekir."
+ },
+ "exportPrivateKey": {
+ "confirm": "Anladım, özel anahtarımı göster",
+ "copied": "Özel anahtar kopyalandı.",
+ "hint1": "Özel anahtar bir dizi karakterden oluşur. Özel anahtarınıza erişimi olan herkes, o hesabın varlıklarına doğrudan erişebilir.",
+ "hint2": "Özel anahtar kaybolduğunda geri alınamaz. Lütfen özel anahtarı yedeklediğinizden ve güvenli bir yerde sakladığınızdan emin olun.",
+ "title": "Özel Anahtarı Dışa Aktar"
+ },
+ "manageAccount": "Yönet",
+ "myAccountsTab": "Hesaplarım",
+ "nameLengthError": "En fazla 16 karakter",
+ "optionalName": "İsim: (İsteğe bağlı)",
+ "profile": "Profil",
+ "save": "Kaydet",
+ "settings": "Ayarlar"
+ },
"wallets": {
- "close": "Kapat",
- "switchOtherWallet": "Başka hesaba geç",
+ "select": "Seç",
"type": {
- "ledger": "Ledger",
+ "bluetoothLedger": "BLE Ledger",
"mnemonic": "Anahtar kelime",
- "privateKey": "Özel anahtar"
+ "privateKey": "Özel anahtar",
+ "usbLedger": "USB Ledger"
}
}
},
"transaction": {
- "abort": "İptal et",
+ "cancel": "iptal",
"confirm": "Onayla",
"preview": {
"amount": "Miktar",
@@ -223,7 +481,7 @@
"from": "Kimden",
"gas": "Gas",
"genesisHash": "Genesis Hash",
- "shares": "Paylaşanlar",
+ "shares": "Gigapaylaşımlar",
"to": "Kime",
"type": "Tip",
"validator": "Doğrulayıcı",
@@ -236,20 +494,20 @@
"submitting": "İşlem gönderiliyor"
},
"types": {
- "addEscrow": "Tokenları bir doğrulayıcıya devretme ve ödüller oluşturma",
- "reclaimEscrow": "Bir doğrulayıcıya devredilen tokenları geri alma",
- "transfer": "Tokenları bir hesabınızdan diğerine aktarma"
+ "addEscrow": "Tokenlarınızı bir doğrulayıcıya devretmek ve ödüller oluştur",
+ "reclaimEscrow": "Bir doğrulayıcıya devredilen jetonlarınızı geri talep etme",
+ "transfer": "hesabınızdan diğerine jeton gönderme"
}
},
"validator": {
"boundsNotSet": "Sınır ayarlanmadı (0% - 100%)",
"commission": "Komisyon",
"commissionBounds": {
- "current": "{{lowerBound}}% - {{upperBound}}% şu anki dönemde {{epoch}}",
+ "current": "Geçerli Epoch {{epoch}}'ta {{lowerBound}}% - {{upperBound}}%",
"future": "{{lowerBound}}% - {{upperBound}}% dönemden başlıyor {{epoch}}",
"label": "Komisyon sınırları"
},
- "escrow": "Escrow",
+ "escrow": "Alıkoyma",
"fee": "İşlem ücreti",
"name": "İsim",
"rank": "Rütbe",
diff --git a/src/locales/zh_CN/translation.json b/src/locales/zh_CN/translation.json
index 0967ef424b..ccce17519b 100644
--- a/src/locales/zh_CN/translation.json
+++ b/src/locales/zh_CN/translation.json
@@ -1 +1,33 @@
-{}
+{
+ "account": {
+ "addEscrow": {
+ "confirmDelegatingToInactive": {
+ "description": "该节点的状态为{{validatorStatus}},你的质押或无法产生收益。",
+ "title": "确认继续吗?"
+ },
+ "confirmDelegatingToTop": {
+ "acknowledge": "仍要质押",
+ "description": "该节点的质押总量位于前20,请考虑给更小的节点质押,以增强网络的安全和去中心化程度。"
+ },
+ "delegate": "质押"
+ },
+ "addressCopied": "地址已复制",
+ "loading": "账户加载中",
+ "loadingError": "无法加载账户",
+ "reclaimEscrow": {
+ "reclaim": "取回",
+ "reclaimAll": "取回全部"
+ },
+ "sendTransaction": {
+ "confirmSendingToValidator": {
+ "description": "此为节点地址,直接转账到该地址无法为该节点质押",
+ "title": "确认继续吗?"
+ },
+ "enterAddress": "输入地址",
+ "enterAmount": "输入金额",
+ "recipient": "收款地址",
+ "send": "发送",
+ "success": "交易成功发送!交易可能需要一分钟才会显示在您的账户上"
+ }
+ }
+}