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": "交易成功发送!交易可能需要一分钟才会显示在您的账户上" + } + } +}