diff --git a/.beads/pr-context.jsonl b/.beads/pr-context.jsonl index b46eb353c9f..ec4cf00c824 100644 --- a/.beads/pr-context.jsonl +++ b/.beads/pr-context.jsonl @@ -1,7 +1,4 @@ -{"id":"shapeshiftweb-33d","title":"bugfix pass: wrapped assets, popular assets, chain icons for second-class EVM chains","description":"Sequential bugfix pass from Mantle to Mode. For each PR: checkout, fix issues, merge previous, build/regen/lint/typecheck, commit and push. NEVER force push. NEVER merge PRs. gh api read-only (PR body + comments only). Key fixes: (1) Generalize wrapped native asset detection from Berachain to all chains via chainId-\u003ewrappedNativeAddress mapping, (2) Fix popular assets availability (Cronos only has 2, Linea too), (3) Fix Linea perma-loading asset icon, (4) Sanity check brand chain icons for each chain, (5) Update second-class-evm-chain contract with learnings, (6) Create append-only check skill to prevent closing brace issues in future PRs.","status":"open","priority":2,"issue_type":"epic","owner":"17035424+gomesalexandre@users.noreply.github.com","created_at":"2026-02-20T15:05:00Z","created_by":"gomes","updated_at":"2026-02-20T15:05:00Z"} -{"id":"shapeshiftweb-33d.1","title":"Mantle (#11905): generalize wrapped native detection, fix popular assets, fix Linea icon, update contract, create append-only skill","description":"gh pr checkout 11905. (1) Generalize Berachain's WBERA burn detection to all second-class chains via WRAPPED_NATIVE_BY_CHAIN_ID mapping in SecondClassEvmAdapter.ts - add WMNT address for Mantle. (2) Investigate + fix popular assets issue (compare against happy chains like Scroll/Ink). (3) Fix Linea perma-loading asset icon. (4) Update .claude/contracts/second-class-evm-chain.md with wrapped native + popular assets learnings. (5) Create append-only check skill to prevent closing brace issues. (6) Sanity check Mantle chain icon. Build/regen/lint/typecheck/commit/push. NEVER force push. NEVER merge PR.","status":"in-progress","priority":2,"issue_type":"task","owner":"17035424+gomesalexandre@users.noreply.github.com","created_at":"2026-02-20T15:05:20Z","created_by":"gomes","updated_at":"2026-02-20T15:05:51Z","dependencies":[{"issue_id":"shapeshiftweb-33d.1","depends_on_id":"shapeshiftweb-33d","type":"parent-child","created_at":"2026-02-20T16:05:20Z","created_by":"gomes","metadata":"{}"}]} -{"id":"shapeshiftweb-33d.2","title":"Cronos (#11910): ensure wrapped asset fix for WCRO, fix popular assets","description":"gh pr checkout 11910. Merge Mantle branch. Ensure WCRO address in WRAPPED_NATIVE_BY_CHAIN_ID. Fix popular assets (only 2 currently). Sanity check chain icon. Build/regen/lint/typecheck/commit/push. NEVER force push. NEVER merge PR.","status":"open","priority":2,"issue_type":"task","owner":"17035424+gomesalexandre@users.noreply.github.com","created_at":"2026-02-20T15:05:20Z","created_by":"gomes","updated_at":"2026-02-20T15:05:20Z","dependencies":[{"issue_id":"shapeshiftweb-33d.2","depends_on_id":"shapeshiftweb-33d","type":"parent-child","created_at":"2026-02-20T16:05:20Z","created_by":"gomes","metadata":"{}"},{"issue_id":"shapeshiftweb-33d.2","depends_on_id":"shapeshiftweb-33d.1","type":"blocks","created_at":"2026-02-20T16:05:20Z","created_by":"gomes","metadata":"{}"}]} -{"id":"shapeshiftweb-33d.3","title":"Sonic (#11923): merge Cronos, ensure no wrapped/popular bugs, sanity check icon","description":"gh pr checkout 11923. Merge Cronos branch. Check if Sonic has wrapped native pattern (likely WSONIC). Sanity check popular assets + chain icon. Build/regen/lint/typecheck/commit/push. NEVER force push. NEVER merge PR.","status":"open","priority":2,"issue_type":"task","owner":"17035424+gomesalexandre@users.noreply.github.com","created_at":"2026-02-20T15:05:21Z","created_by":"gomes","updated_at":"2026-02-20T15:05:21Z","dependencies":[{"issue_id":"shapeshiftweb-33d.3","depends_on_id":"shapeshiftweb-33d","type":"parent-child","created_at":"2026-02-20T16:05:20Z","created_by":"gomes","metadata":"{}"},{"issue_id":"shapeshiftweb-33d.3","depends_on_id":"shapeshiftweb-33d.2","type":"blocks","created_at":"2026-02-20T16:05:20Z","created_by":"gomes","metadata":"{}"}]} -{"id":"shapeshiftweb-33d.4","title":"Unichain (#11924): merge Sonic, ensure no wrapped/popular bugs, sanity check icon","description":"gh pr checkout 11924. Merge Sonic branch. Check wrapped native pattern (WETH on Unichain). Sanity check popular assets + chain icon. Build/regen/lint/typecheck/commit/push. NEVER force push. NEVER merge PR.","status":"open","priority":2,"issue_type":"task","owner":"17035424+gomesalexandre@users.noreply.github.com","created_at":"2026-02-20T15:05:21Z","created_by":"gomes","updated_at":"2026-02-20T15:05:21Z","dependencies":[{"issue_id":"shapeshiftweb-33d.4","depends_on_id":"shapeshiftweb-33d","type":"parent-child","created_at":"2026-02-20T16:05:20Z","created_by":"gomes","metadata":"{}"},{"issue_id":"shapeshiftweb-33d.4","depends_on_id":"shapeshiftweb-33d.3","type":"blocks","created_at":"2026-02-20T16:05:20Z","created_by":"gomes","metadata":"{}"}]} -{"id":"shapeshiftweb-33d.5","title":"BOB (#11925): merge Unichain, ensure no wrapped/popular bugs, sanity check icon","description":"gh pr checkout 11925. Merge Unichain branch. Check wrapped native pattern (WETH on BOB). Sanity check popular assets + chain icon. Build/regen/lint/typecheck/commit/push. NEVER force push. NEVER merge PR.","status":"open","priority":2,"issue_type":"task","owner":"17035424+gomesalexandre@users.noreply.github.com","created_at":"2026-02-20T15:05:21Z","created_by":"gomes","updated_at":"2026-02-20T15:05:21Z","dependencies":[{"issue_id":"shapeshiftweb-33d.5","depends_on_id":"shapeshiftweb-33d","type":"parent-child","created_at":"2026-02-20T16:05:21Z","created_by":"gomes","metadata":"{}"},{"issue_id":"shapeshiftweb-33d.5","depends_on_id":"shapeshiftweb-33d.4","type":"blocks","created_at":"2026-02-20T16:05:21Z","created_by":"gomes","metadata":"{}"}]} -{"id":"shapeshiftweb-33d.6","title":"Mode (#11926): merge BOB, ensure no wrapped/popular bugs, sanity check icon","description":"gh pr checkout 11926. Merge BOB branch. Check wrapped native pattern (WETH on Mode). Sanity check popular assets + chain icon. Build/regen/lint/typecheck/commit/push. NEVER force push. NEVER merge PR.","status":"open","priority":2,"issue_type":"task","owner":"17035424+gomesalexandre@users.noreply.github.com","created_at":"2026-02-20T15:05:21Z","created_by":"gomes","updated_at":"2026-02-20T15:05:21Z","dependencies":[{"issue_id":"shapeshiftweb-33d.6","depends_on_id":"shapeshiftweb-33d","type":"parent-child","created_at":"2026-02-20T16:05:21Z","created_by":"gomes","metadata":"{}"},{"issue_id":"shapeshiftweb-33d.6","depends_on_id":"shapeshiftweb-33d.5","type":"blocks","created_at":"2026-02-20T16:05:21Z","created_by":"gomes","metadata":"{}"}]} +{"id":"shapeshiftWeb-2f09","title":"Sanity check Ink + Scroll regen data","description":"Verify generatedAssetData.json has entries for both eip155:534352 (Scroll) and eip155:57073 (Ink). Verify relatedAssetIndex.json has inkAssetId in ETH related array. Verify no regressions. Run review-second-class-evm skill.","status":"closed","priority":1,"issue_type":"task","owner":"contact@0xgom.es","created_at":"2026-02-19T13:51:24.013329+01:00","created_by":"gomes-bot","updated_at":"2026-02-19T17:01:37.198079+01:00","closed_at":"2026-02-19T17:01:37.198079+01:00","close_reason":"Popular assets + market data verified working after cache clear. All ink fixes merged, PR #11960 opened.","dependencies":[{"issue_id":"shapeshiftWeb-2f09","depends_on_id":"shapeshiftWeb-cgtg","type":"blocks","created_at":"2026-02-19T13:51:48.716437+01:00","created_by":"gomes-bot"}]} +{"id":"shapeshiftWeb-4uq9","title":"Checkout + merge-fix Ink PR #11904","description":"Checkout Ink PR, extract regen data before merge, merge origin/develop with -X theirs to resolve all conflicts in favor of develop. Result: branch has Ink code changes but develop's generated files.","status":"closed","priority":1,"issue_type":"task","owner":"contact@0xgom.es","created_at":"2026-02-19T13:50:52.705351+01:00","created_by":"gomes-bot","updated_at":"2026-02-19T13:53:13.843624+01:00","closed_at":"2026-02-19T13:53:13.843624+01:00","close_reason":"Merged origin/develop with -X theirs, all conflicts resolved"} +{"id":"shapeshiftWeb-cgtg","title":"Cherry-pick Ink regen data into develop generated files","description":"Extract Ink (eip155:57073) entries from saved PR generated files. Merge into develop's generatedAssetData.json, relatedAssetIndex.json. Create coingecko adapter. Bump clearAssets migration. Regenerate manifest hashes + brotli/gzip compression.","status":"closed","priority":1,"issue_type":"task","owner":"contact@0xgom.es","created_at":"2026-02-19T13:51:03.136273+01:00","created_by":"gomes-bot","updated_at":"2026-02-19T13:56:30.878339+01:00","closed_at":"2026-02-19T13:56:30.878339+01:00","close_reason":"Added coingecko adapter, index.ts import/export, migration bump 293. User will run yarn generate:asset-data for actual regen.","dependencies":[{"issue_id":"shapeshiftWeb-cgtg","depends_on_id":"shapeshiftWeb-4uq9","type":"blocks","created_at":"2026-02-19T13:51:38.351227+01:00","created_by":"gomes-bot"}]} +{"id":"shapeshiftWeb-l6zn","title":"Add Ink native to ETH related asset index + recompress","status":"closed","priority":1,"issue_type":"bug","owner":"contact@0xgom.es","created_at":"2026-02-19T16:09:45.315585+01:00","created_by":"gomes-bot","updated_at":"2026-02-19T16:12:14.214097+01:00","closed_at":"2026-02-19T16:12:14.214097+01:00","close_reason":"Closed"} diff --git a/.claude/skills/benchmark-translate/SKILL.md b/.claude/skills/benchmark-translate/SKILL.md new file mode 100644 index 00000000000..d196fea43c7 --- /dev/null +++ b/.claude/skills/benchmark-translate/SKILL.md @@ -0,0 +1,140 @@ +--- +name: benchmark-translate +description: Run a quality benchmark of the /translate skill by selecting stratified test keys, capturing ground truth, translating, judging with sub-agents, and compiling a regression report. Invoke with /benchmark-translate. +allowed-tools: Read, Write, Edit, Grep, Glob, Bash(node *), Bash(git checkout*), Bash(git diff*), Bash(git status*), Bash(git rev-parse*), Task, Skill, AskUserQuestion +--- + +# Translation Quality Benchmark + +Measures the quality of the `/translate` skill by comparing its output against existing human translations. Uses stratified key selection with a fixed/rotating split, LLM judges, and programmatic validation to produce a comprehensive quality report with regression tracking across all 9 supported locales. + +## Data Artifacts + +All benchmark data lives in `scripts/translations/benchmark/` (gitignored): + +| File | Purpose | +|------|---------| +| `testKeys.json` | Selected test keys with categories and `fixed` flag | +| `coreKeys.json` | Persistent core key set (stable across runs) | +| `ground-truth.json` | Captured human translations before removal | +| `report.json` | Latest benchmark report (becomes baseline on next run) | +| `baseline.json` | Previous report (auto-copied by setup.js) | + +## Pipeline (7 Steps) + +### Step 1: Select Keys + +```bash +node .claude/skills/benchmark-translate/scripts/select-keys.js [--count N] [--core N] +``` + +Selects N keys (default 150) stratified across 6 categories: glossary-term, financial-error, single-word, interpolation, defi-jargon, general. Validates all selected keys exist in en + all 9 locales. + +**Fixed/rotating split:** +- `--core N` (default 100): Number of fixed core keys for stable regression tracking +- `--count N` (default 150): Total keys (core + rotating) +- If `coreKeys.json` exists: loads it, validates keys still exist in all locales, tops up if needed +- If `coreKeys.json` doesn't exist: selects core keys via stratified sampling and saves them +- Remaining keys (default 50) are randomly selected as rotating keys from the non-core pool +- Each entry in `testKeys.json` has `"fixed": true` (core) or `"fixed": false` (rotating) + +Outputs `scripts/translations/benchmark/testKeys.json`. + +### Step 2: Setup + +```bash +node .claude/skills/benchmark-translate/scripts/setup.js +``` + +- If `report.json` exists from a previous run, copies it to `baseline.json` +- Reads `testKeys.json`, captures ground truth translations for all 9 locales +- Writes `ground-truth.json` +- Removes test keys from locale files so `/translate` can regenerate them + +### Step 3: Translate + +Invoke the `/translate` skill using the Skill tool. This regenerates the removed keys through the full translate-review-refine pipeline. + +### Step 4: Judge (Sub-Agents) + +Launch **9 sub-agents in 3 waves of 3** (matching `/translate`'s wave structure) using the Task tool. Each sub-agent receives the locale info, all key triplets, and glossary terms. + +**Wave 1:** de, es, fr +**Wave 2:** pt, ru, tr +**Wave 3:** ja, uk, zh + +**For each locale, use this prompt:** + +``` +You are an expert multilingual localization quality assessor for a cryptocurrency/DeFi application. +Rate translations from English into {LANGUAGE_NAME} on a 1-5 scale. + +1 = Wrong/misleading meaning +2 = Significant issues (wrong register, missing nuance) +3 = Acceptable but could be more natural +4 = Good, natural, accurate +5 = Excellent, indistinguishable from professional native translation + +Check: meaning preservation, naturalness, register ({REGISTER}), UI conciseness, +glossary compliance (these stay English: {NEVER_TRANSLATE_TERMS}), +placeholder integrity (%{...} preserved), DeFi terminology conventions. + +Rate each translation INDEPENDENTLY. Community translations can contain errors. + +Input: JSON array of {key, english, human, skill} +{ITEMS_JSON} + +Output: Return ONLY a JSON array of objects with these exact fields: +{key, humanScore, skillScore, humanJustification, skillJustification, preferenceNote} + +Scores must be integers 1-5. Justifications should be 1-2 sentences. preferenceNote should say which is better and why, or "tie" if equal. +``` + +**Locale info for prompt substitution:** + +| Locale | Language | Register | +|--------|----------|----------| +| `de` | German | Formal (Sie) | +| `es` | Spanish | Informal (tú) | +| `fr` | French | Formal (vous) | +| `ja` | Japanese | Polite (です/ます) | +| `pt` | Portuguese | Informal (você) | +| `ru` | Russian | Formal (вы) | +| `tr` | Turkish | Formal (siz) | +| `uk` | Ukrainian | Formal (ви) | +| `zh` | Chinese (Simplified) | Neutral/formal | + +**Building the items array for each locale:** + +1. Read `scripts/translations/benchmark/ground-truth.json` +2. Read the current (post-translate) `src/assets/translations/{locale}/main.json` +3. For each test key, build: `{ key: dottedPath, english: groundTruth.english[key], human: groundTruth.groundTruth[locale][key], skill: getValueFromLocaleFile(key) }` + +**Getting never-translate terms:** Read `src/assets/translations/glossary.json`, collect all keys where value is `null` (excluding `_meta`). + +**Each sub-agent must write its output** to `/tmp/{locale}-judge-scores.json`. Parse the JSON array from the sub-agent's response and write it to that path. + +### Step 5: Compile Report + +```bash +node .claude/skills/benchmark-translate/scripts/compile-report.js +``` + +Loads judge scores from `/tmp/{locale}-judge-scores.json`, runs programmatic validation (including Cyrillic script check for ru/uk), computes summary stats, and writes `scripts/translations/benchmark/report.json`. If `baseline.json` exists, includes regression deltas. Report includes `coreSummary` and `rotatingSummary` alongside the overall `summary`. + +### Step 6: Restore + +```bash +node .claude/skills/benchmark-translate/scripts/restore.js +``` + +Restores locale files via `git checkout --`, verifies no diff remains. + +### Step 7: Present Results + +Read the compile output (printed to stdout) and present to the user: +- Overall score summary with baseline regression (if available) +- Core vs rotating stats (divergence suggests overfitting) +- Notable improvements/regressions +- Per-locale and per-category highlights +- Any items needing attention (low scores, validation failures, glossary issues) diff --git a/.claude/skills/benchmark-translate/scripts/compile-report.js b/.claude/skills/benchmark-translate/scripts/compile-report.js new file mode 100644 index 00000000000..c20cf5c344f --- /dev/null +++ b/.claude/skills/benchmark-translate/scripts/compile-report.js @@ -0,0 +1,499 @@ +const fs = require('fs') +const path = require('path') + +const { stemMatch } = require('../../translate/scripts/script-utils') + +const TRANSLATIONS_DIR = path.resolve(__dirname, '../../../../src/assets/translations') +const BENCHMARK_DIR = path.resolve(__dirname, '../../../../scripts/translations/benchmark') +const GT_PATH = path.join(BENCHMARK_DIR, 'ground-truth.json') +const REPORT_PATH = path.join(BENCHMARK_DIR, 'report.json') +const BASELINE_PATH = path.join(BENCHMARK_DIR, 'baseline.json') +const GLOSSARY_PATH = path.join(TRANSLATIONS_DIR, 'glossary.json') + +const TEST_LOCALES = ['de', 'es', 'fr', 'ja', 'pt', 'ru', 'tr', 'uk', 'zh'] +const CJK_LOCALES = ['ja', 'zh'] +const CYRILLIC_LOCALES = ['ru', 'uk'] + +const LOCALE_INFO = { + de: { name: 'German', register: 'Formal (Sie)' }, + es: { name: 'Spanish', register: 'Informal (tú)' }, + fr: { name: 'French', register: 'Formal (vous)' }, + ja: { name: 'Japanese', register: 'Polite (です/ます)' }, + pt: { name: 'Portuguese', register: 'Informal (você)' }, + ru: { name: 'Russian', register: 'Formal (вы)' }, + tr: { name: 'Turkish', register: 'Formal (siz)' }, + uk: { name: 'Ukrainian', register: 'Formal (ви)' }, + zh: { name: 'Chinese (Simplified)', register: 'Neutral/formal' }, +} + +const GLOSSARY_TARGET_TERMS = [ + { englishPattern: 'dust', glossaryKey: 'dust', isNeverTranslate: true }, + { englishPattern: 'claim', glossaryKey: 'claim', isNeverTranslate: false }, + { englishPattern: 'trade', glossaryKey: 'trade', isNeverTranslate: false }, + { englishPattern: 'impermanent loss', glossaryKey: 'impermanent loss', isNeverTranslate: false }, + { englishPattern: 'approve', glossaryKey: 'approve', isNeverTranslate: false }, + { englishPattern: 'seed phrase', glossaryKey: 'seed phrase', isNeverTranslate: false }, + { englishPattern: 'deposit', glossaryKey: 'deposit', isNeverTranslate: false }, + { englishPattern: 'staking', glossaryKey: 'staking', isNeverTranslate: false }, + { englishPattern: 'swap', glossaryKey: 'swap', isNeverTranslate: false }, + { englishPattern: 'wallet', glossaryKey: 'wallet', isNeverTranslate: false }, + { englishPattern: 'insufficient funds', glossaryKey: 'insufficient funds', isNeverTranslate: false }, +] + +function getVal(obj, p) { + return p.split('.').reduce((o, k) => o && o[k], obj) +} + +function extractPh(s) { + return [...s.matchAll(/%\{(\w+)\}/g)].map(m => m[1]).sort() +} + +function escRe(s) { + return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') +} + +if (!fs.existsSync(GT_PATH)) { + console.error('Error: ground-truth.json not found. Run setup.js first.') + process.exit(1) +} + +const gt = JSON.parse(fs.readFileSync(GT_PATH, 'utf8')) +const glossary = JSON.parse(fs.readFileSync(GLOSSARY_PATH, 'utf8')) + +const neverTranslateTerms = Object.entries(glossary) + .filter(([k, v]) => k !== '_meta' && v === null) + .map(([k]) => k) + +const approvedByLocale = {} +for (const [key, value] of Object.entries(glossary)) { + if (key === '_meta' || value === null || typeof value !== 'object') continue + for (const locale of TEST_LOCALES) { + if (!approvedByLocale[locale]) approvedByLocale[locale] = [] + if (value[locale]) approvedByLocale[locale].push({ term: key, approved: value[locale] }) + } +} + +const judgeScores = {} +let hasJudgeScores = true +for (const locale of TEST_LOCALES) { + const scorePath = `/tmp/${locale}-judge-scores.json` + if (!fs.existsSync(scorePath)) { + console.error(`Warning: ${scorePath} not found — skipping judge scores for ${locale}`) + hasJudgeScores = false + judgeScores[locale] = new Map() + continue + } + const scores = JSON.parse(fs.readFileSync(scorePath, 'utf8')) + judgeScores[locale] = new Map() + for (const s of scores) { + judgeScores[locale].set(s.key, s) + } +} + +function checkGlossaryCorrectness(english, skill, locale) { + const englishLower = english.toLowerCase() + const matched = [] + for (const term of GLOSSARY_TARGET_TERMS) { + if (!englishLower.includes(term.englishPattern)) continue + if (term.isNeverTranslate) { + const has = skill.toLowerCase().includes(term.englishPattern) + matched.push({ passed: has, reason: has ? `"${term.englishPattern}" kept` : `"${term.englishPattern}" missing` }) + } else { + const entry = glossary[term.glossaryKey] + if (entry && typeof entry === 'object' && entry[locale]) { + const has = stemMatch(skill, entry[locale], locale) + const display = Array.isArray(entry[locale]) ? entry[locale][0] : entry[locale] + matched.push({ passed: has, reason: has ? `"${term.englishPattern}" → "${display}"` : `"${term.englishPattern}" should be "${display}"` }) + } + } + } + if (matched.length === 0) return { correct: null, detail: null } + return { correct: matched.every(m => m.passed), detail: matched.map(m => m.reason).join('; ') } +} + +function validate(english, skill, locale) { + const isCjk = CJK_LOCALES.includes(locale) + const isCyrillic = CYRILLIC_LOCALES.includes(locale) + const isEmpty = skill.trim().length === 0 + const words = english.trim().split(/\s+/).length + const isUntranslated = skill === english && words > 3 + const srcPh = extractPh(english) + const tgtPh = extractPh(skill) + const placeholderIntegrity = srcPh.length === tgtPh.length && srcPh.every((p, i) => p === tgtPh[i]) + const ratio = english.length > 0 ? skill.length / english.length : 1 + const lengthRatioOk = ratio <= (isCjk ? 4.0 : 3.0) && ratio >= (isCjk ? 0.15 : 0.25) + + const glossaryViolations = [] + for (const term of neverTranslateTerms) { + if (english.toLowerCase().includes(term.toLowerCase()) && !skill.toLowerCase().includes(term.toLowerCase())) { + glossaryViolations.push(`"${term}" should stay in English`) + } + } + for (const { term, approved } of (approvedByLocale[locale] || [])) { + const tl = term.toLowerCase() + if (english.toLowerCase().includes(tl) && !stemMatch(skill, approved, locale)) { + const display = Array.isArray(approved) ? approved[0] : approved + glossaryViolations.push(`"${term}" should be "${display}"`) + } + } + + const { correct: glossaryCorrectness, detail: glossaryCorrectnessDetail } = checkGlossaryCorrectness(english, skill, locale) + + let scriptCorrect = true + if ((isCjk || isCyrillic) && !isEmpty && !isUntranslated) { + let stripped = skill.replace(/%\{\w+\}/g, '') + stripped = neverTranslateTerms.reduce((s, t) => s.replace(new RegExp(escRe(t), 'g'), ''), stripped) + const nw = stripped.replace(/\s/g, '') + if (nw.length > 0) { + const latin = nw.replace(/[^a-zA-Z]/g, '').length + scriptCorrect = latin / nw.length <= 0.7 + } + } + + return { + placeholderIntegrity, lengthRatioOk, lengthRatio: Math.round(ratio * 100) / 100, + glossaryCompliance: glossaryViolations.length === 0, glossaryViolations, + glossaryCorrectness, glossaryCorrectnessDetail, + scriptCorrect, isEmpty, isUntranslated, + } +} + +const results = [] +for (const locale of TEST_LOCALES) { + const localeData = JSON.parse(fs.readFileSync(path.join(TRANSLATIONS_DIR, `${locale}/main.json`), 'utf8')) + for (const tk of gt.testKeys) { + const english = gt.english[tk.dottedPath] + const human = gt.groundTruth[locale][tk.dottedPath] + const skill = getVal(localeData, tk.dottedPath) || '' + const exactMatch = skill === human + const validation = validate(english, skill, locale) + const js = judgeScores[locale].get(tk.dottedPath) + const judgeScore = js ? { + humanScore: js.humanScore, skillScore: js.skillScore, + humanJustification: js.humanJustification, skillJustification: js.skillJustification, + preferenceNote: js.preferenceNote, + } : null + results.push({ dottedPath: tk.dottedPath, category: tk.category, fixed: tk.fixed, locale, english, humanTranslation: human, skillTranslation: skill, exactMatch, validation, judgeScore }) + } +} + +function computeStats(subset) { + const total = subset.length + const exactMatchCount = subset.filter(r => r.exactMatch).length + const validPass = subset.filter(r => + r.validation.placeholderIntegrity && r.validation.lengthRatioOk && + r.validation.glossaryCompliance && r.validation.scriptCorrect && + !r.validation.isEmpty && !r.validation.isUntranslated + ).length + const judged = subset.filter(r => r.judgeScore) + const avgHuman = judged.length > 0 ? judged.reduce((s, r) => s + r.judgeScore.humanScore, 0) / judged.length : null + const avgSkill = judged.length > 0 ? judged.reduce((s, r) => s + r.judgeScore.skillScore, 0) / judged.length : null + const humanWins = judged.filter(r => r.judgeScore.humanScore > r.judgeScore.skillScore).length + const skillWins = judged.filter(r => r.judgeScore.skillScore > r.judgeScore.humanScore).length + const ties = judged.filter(r => r.judgeScore.humanScore === r.judgeScore.skillScore).length + const lowScores = judged.filter(r => r.judgeScore.skillScore <= 3).length + return { total, exactMatchCount, validPass, judged, avgHuman, avgSkill, humanWins, skillWins, ties, lowScores } +} + +const overall = computeStats(results) +const coreResults = results.filter(r => r.fixed === true) +const rotatingResults = results.filter(r => r.fixed === false) +const coreStats = computeStats(coreResults) +const rotatingStats = computeStats(rotatingResults) + +const gcResults = results.filter(r => r.validation.glossaryCorrectness !== null) +const gcPass = gcResults.filter(r => r.validation.glossaryCorrectness === true).length + +const baseline = fs.existsSync(BASELINE_PATH) + ? JSON.parse(fs.readFileSync(BASELINE_PATH, 'utf8')) + : null + +console.log('\n=== Translation Benchmark Report ===\n') +console.log(`Ground truth SHA: ${gt.gitSha}`) +console.log(`Total comparisons: ${overall.total} (${gt.testKeys.length} keys × ${TEST_LOCALES.length} locales)\n`) + +console.log('--- Overall Summary ---') +console.log(`Exact match rate: ${overall.exactMatchCount}/${overall.total} (${((overall.exactMatchCount / overall.total) * 100).toFixed(1)}%)`) +console.log(`Validation pass rate: ${overall.validPass}/${overall.total} (${((overall.validPass / overall.total) * 100).toFixed(1)}%)`) +if (overall.avgHuman !== null && overall.avgSkill !== null) { + console.log(`Avg human score: ${overall.avgHuman.toFixed(2)}/5`) + console.log(`Avg skill score: ${overall.avgSkill.toFixed(2)}/5`) + console.log(`Human wins: ${overall.humanWins} | Skill wins: ${overall.skillWins} | Ties: ${overall.ties}`) + console.log(`Low skill scores (≤3): ${overall.lowScores}`) +} + +const coreKeyCount = gt.testKeys.filter(k => k.fixed === true).length +const rotatingKeyCount = gt.testKeys.filter(k => k.fixed === false).length +console.log('\n--- Core vs Rotating ---') +const coreLine = coreStats.avgSkill !== null + ? `Core (${coreKeyCount} fixed keys): skill ${coreStats.avgSkill.toFixed(2)} valid ${((coreStats.validPass / coreStats.total) * 100).toFixed(1)}%` + : `Core (${coreKeyCount} fixed keys): valid ${((coreStats.validPass / coreStats.total) * 100).toFixed(1)}%` +const rotatingLine = rotatingStats.avgSkill !== null + ? `Rotating (${rotatingKeyCount} keys): skill ${rotatingStats.avgSkill.toFixed(2)} valid ${((rotatingStats.validPass / rotatingStats.total) * 100).toFixed(1)}%` + : `Rotating (${rotatingKeyCount} keys): valid ${((rotatingStats.validPass / rotatingStats.total) * 100).toFixed(1)}%` +console.log(` ${coreLine}`) +console.log(` ${rotatingLine}`) + +console.log('\n--- By Category ---') +const cats = ['glossary-term', 'financial-error', 'single-word', 'interpolation', 'defi-jargon', 'general'] +for (const cat of cats) { + const cr = results.filter(r => r.category === cat) + if (cr.length === 0) continue + const cj = cr.filter(r => r.judgeScore) + const ch = cj.length > 0 ? cj.reduce((s, r) => s + r.judgeScore.humanScore, 0) / cj.length : null + const cs = cj.length > 0 ? cj.reduce((s, r) => s + r.judgeScore.skillScore, 0) / cj.length : null + const cv = cr.filter(r => r.validation.placeholderIntegrity && r.validation.lengthRatioOk && !r.validation.isEmpty && !r.validation.isUntranslated).length + const scoreStr = ch !== null && cs !== null ? ` | human: ${ch.toFixed(2)} skill: ${cs.toFixed(2)}` : '' + console.log(` ${cat.padEnd(20)} n=${cr.length.toString().padEnd(3)} valid: ${cv}/${cr.length}${scoreStr}`) +} + +console.log('\n--- By Locale ---') +for (const locale of TEST_LOCALES) { + const lr = results.filter(r => r.locale === locale) + const lj = lr.filter(r => r.judgeScore) + const lh = lj.length > 0 ? lj.reduce((s, r) => s + r.judgeScore.humanScore, 0) / lj.length : null + const ls = lj.length > 0 ? lj.reduce((s, r) => s + r.judgeScore.skillScore, 0) / lj.length : null + const lv = lr.filter(r => r.validation.placeholderIntegrity && r.validation.lengthRatioOk && !r.validation.isEmpty && !r.validation.isUntranslated).length + const sw = lj.filter(r => r.judgeScore.skillScore > r.judgeScore.humanScore).length + const hw = lj.filter(r => r.judgeScore.humanScore > r.judgeScore.skillScore).length + const ti = lj.filter(r => r.judgeScore.humanScore === r.judgeScore.skillScore).length + const scoreStr = lh !== null && ls !== null ? ` | human: ${lh.toFixed(2)} skill: ${ls.toFixed(2)} | wins: skill ${sw} human ${hw} tie ${ti}` : '' + console.log(` ${locale} valid: ${lv}/${lr.length}${scoreStr}`) +} + +if (overall.judged.length > 0) { + console.log('\n--- Score Difference Distribution (skill - human) ---') + const diffs = overall.judged.map(r => r.judgeScore.skillScore - r.judgeScore.humanScore) + const mean = diffs.reduce((s, d) => s + d, 0) / diffs.length + const variance = diffs.reduce((s, d) => s + (d - mean) ** 2, 0) / diffs.length + const stddev = Math.sqrt(variance) + const buckets = { '≤-3': 0, '-2': 0, '-1': 0, '0': 0, '+1': 0, '+2': 0, '≥+3': 0 } + for (const d of diffs) { + if (d <= -3) buckets['≤-3']++ + else if (d === -2) buckets['-2']++ + else if (d === -1) buckets['-1']++ + else if (d === 0) buckets['0']++ + else if (d === 1) buckets['+1']++ + else if (d === 2) buckets['+2']++ + else buckets['≥+3']++ + } + const maxBucket = Math.max(...Object.values(buckets)) + const barScale = maxBucket > 0 ? 40 / maxBucket : 1 + for (const [label, count] of Object.entries(buckets)) { + const bar = '█'.repeat(Math.round(count * barScale)) + console.log(` ${label.padStart(3)} ${bar} ${count}`) + } + console.log(` Mean: ${mean >= 0 ? '+' : ''}${mean.toFixed(2)} Stddev: ${stddev.toFixed(2)}`) +} + +console.log('\n--- UI Length Expansion Risk (>150% of English) ---') +const expansionThreshold = 1.5 +const expanded = results.filter(r => { + if (r.validation.isEmpty || r.validation.isUntranslated) return false + return r.english.length > 0 && r.skillTranslation.length / r.english.length > expansionThreshold +}) +const expansionByLocale = {} +for (const locale of TEST_LOCALES) { + const localeExpanded = expanded.filter(r => r.locale === locale) + expansionByLocale[locale] = localeExpanded + if (localeExpanded.length > 0) { + console.log(` ${locale}: ${localeExpanded.length} strings over 150%`) + } +} +if (expanded.length > 0) { + const sorted = expanded.toSorted((a, b) => (b.skillTranslation.length / b.english.length) - (a.skillTranslation.length / a.english.length)) + console.log(` Total: ${expanded.length} strings`) + console.log(` Worst 10:`) + for (const r of sorted.slice(0, 10)) { + const ratio = Math.round((r.skillTranslation.length / r.english.length) * 100) + console.log(` ${r.locale}:${r.dottedPath} (${ratio}%) EN[${r.english.length}ch] → ${r.locale.toUpperCase()}[${r.skillTranslation.length}ch]`) + } +} else { + console.log(' None found.') +} + +console.log('\n--- Glossary Term Correctness ---') +for (const tt of GLOSSARY_TARGET_TERMS) { + const tr = results.filter(r => r.english.toLowerCase().includes(tt.englishPattern)) + const checked = tr.filter(r => r.validation.glossaryCorrectness !== null) + const correct = checked.filter(r => r.validation.glossaryCorrectness === true).length + console.log(` "${tt.englishPattern}": ${correct}/${checked.length} correct (${checked.length > 0 ? ((correct / checked.length) * 100).toFixed(0) : 'N/A'}%)`) + for (const locale of TEST_LOCALES) { + const lc = checked.filter(r => r.locale === locale) + const lcOk = lc.filter(r => r.validation.glossaryCorrectness === true).length + if (lc.length > 0) console.log(` ${locale}: ${lcOk}/${lc.length}`) + } +} + +console.log('\n--- Validation Details ---') +const phFail = results.filter(r => !r.validation.placeholderIntegrity) +const lenFail = results.filter(r => !r.validation.lengthRatioOk) +const glosFail = results.filter(r => !r.validation.glossaryCompliance) +const scrFail = results.filter(r => !r.validation.scriptCorrect) +const empFail = results.filter(r => r.validation.isEmpty) +const untFail = results.filter(r => r.validation.isUntranslated) +console.log(` Placeholder failures: ${phFail.length}`) +console.log(` Length ratio OOB: ${lenFail.length}`) +console.log(` Glossary violations: ${glosFail.length}`) +console.log(` Wrong script: ${scrFail.length}`) +console.log(` Empty: ${empFail.length}`) +console.log(` Untranslated: ${untFail.length}`) + +if (phFail.length > 0) { + console.log('\n Placeholder failures:') + for (const r of phFail) { + console.log(` ${r.locale}:${r.dottedPath}`) + console.log(` EN: ${r.english}`) + console.log(` Skill: ${r.skillTranslation}`) + } +} + +if (glosFail.length > 0) { + console.log('\n Glossary violations:') + for (const r of glosFail) { + console.log(` ${r.locale}:${r.dottedPath} — ${r.validation.glossaryViolations.join('; ')}`) + } +} + +if (overall.judged.length > 0) { + console.log('\n--- Notable Results ---') + const skillBigWins = overall.judged.filter(r => r.judgeScore.skillScore - r.judgeScore.humanScore >= 2) + const humanBigWins = overall.judged.filter(r => r.judgeScore.humanScore - r.judgeScore.skillScore >= 2) + + if (skillBigWins.length > 0) { + console.log(`\n Skill significantly better (≥2 pts, ${skillBigWins.length} cases):`) + for (const r of skillBigWins) { + console.log(` ${r.locale}:${r.dottedPath} (human: ${r.judgeScore.humanScore} skill: ${r.judgeScore.skillScore})`) + console.log(` ${r.judgeScore.preferenceNote}`) + } + } + + if (humanBigWins.length > 0) { + console.log(`\n Human significantly better (≥2 pts, ${humanBigWins.length} cases):`) + for (const r of humanBigWins) { + console.log(` ${r.locale}:${r.dottedPath} (human: ${r.judgeScore.humanScore} skill: ${r.judgeScore.skillScore})`) + console.log(` ${r.judgeScore.preferenceNote}`) + } + } +} + +if (baseline && baseline.summary) { + const bs = baseline.summary + console.log('\n--- Regression vs Baseline ---') + console.log(` Comparisons: ${bs.totalComparisons} → ${overall.total}`) + + const r3vpr = Math.round((overall.validPass / overall.total) * 1000) / 10 + const r3as = overall.avgSkill !== null ? Math.round(overall.avgSkill * 100) / 100 : null + const r3ah = overall.avgHuman !== null ? Math.round(overall.avgHuman * 100) / 100 : null + + if (r3as !== null && bs.avgSkillScore !== null) { + console.log(` Avg skill score: ${bs.avgSkillScore} → ${r3as} (${r3as >= bs.avgSkillScore ? '+' : ''}${(r3as - bs.avgSkillScore).toFixed(2)})`) + } + if (r3ah !== null && bs.avgHumanScore !== null) { + console.log(` Avg human score: ${bs.avgHumanScore} → ${r3ah} (${r3ah >= bs.avgHumanScore ? '+' : ''}${(r3ah - bs.avgHumanScore).toFixed(2)})`) + } + if (bs.skillWins !== null && bs.totalComparisons > 0) { + const bsSwr = Math.round((bs.skillWins / bs.totalComparisons) * 1000) / 10 + const r3swr = overall.total > 0 ? Math.round((overall.skillWins / overall.total) * 1000) / 10 : null + if (r3swr !== null) { + console.log(` Skill win rate: ${bsSwr}% → ${r3swr}% (${r3swr >= bsSwr ? '+' : ''}${(r3swr - bsSwr).toFixed(1)}pp)`) + } + } + if (bs.lowScoreCount !== null) { + console.log(` Low scores (≤3): ${bs.lowScoreCount} → ${overall.lowScores}`) + } + if (bs.validationPassRate !== null) { + console.log(` Validation pass rate: ${bs.validationPassRate}% → ${r3vpr}%`) + } + const bsGlosViolations = baseline.results + ? baseline.results.filter(r => !r.validation.glossaryCompliance).length + : null + if (bsGlosViolations !== null) { + console.log(` Glossary violations: ${bsGlosViolations} → ${glosFail.length}`) + } + + if (baseline.coreSummary && coreStats.avgSkill !== null) { + const bcs = baseline.coreSummary + console.log('\n Core regression:') + if (bcs.avgSkillScore !== null) { + const coreSkill = Math.round(coreStats.avgSkill * 100) / 100 + console.log(` Avg skill score: ${bcs.avgSkillScore} → ${coreSkill} (${coreSkill >= bcs.avgSkillScore ? '+' : ''}${(coreSkill - bcs.avgSkillScore).toFixed(2)})`) + } + if (bcs.validationPassRate !== null) { + const coreVpr = Math.round((coreStats.validPass / coreStats.total) * 1000) / 10 + console.log(` Validation pass rate: ${bcs.validationPassRate}% → ${coreVpr}%`) + } + } + + if (baseline.results && baseline.results.length > 0) { + const baselineLocales = new Set(baseline.results.map(r => r.locale)) + const currentLocales = new Set(results.map(r => r.locale)) + const overlapping = TEST_LOCALES.filter(l => baselineLocales.has(l) && currentLocales.has(l)) + + if (overlapping.length < TEST_LOCALES.length || overlapping.length < baselineLocales.size) { + console.log(`\n Apples-to-apples (${overlapping.length} overlapping locales: ${overlapping.join(', ')}):`) + const bCoreKeys = new Set(baseline.results.filter(r => r.fixed === true).map(r => r.dottedPath)) + const cCoreKeys = new Set(coreResults.map(r => r.dottedPath)) + const sharedCoreKeys = [...bCoreKeys].filter(k => cCoreKeys.has(k)) + if (sharedCoreKeys.length > 0) { + const bShared = baseline.results.filter(r => overlapping.includes(r.locale) && r.fixed === true && sharedCoreKeys.includes(r.dottedPath) && r.judgeScore) + const cShared = results.filter(r => overlapping.includes(r.locale) && r.fixed === true && sharedCoreKeys.includes(r.dottedPath) && r.judgeScore) + const bAvg = bShared.length > 0 ? bShared.reduce((s, r) => s + r.judgeScore.skillScore, 0) / bShared.length : null + const cAvg = cShared.length > 0 ? cShared.reduce((s, r) => s + r.judgeScore.skillScore, 0) / cShared.length : null + if (bAvg !== null && cAvg !== null) { + const bAvgR = Math.round(bAvg * 100) / 100 + const cAvgR = Math.round(cAvg * 100) / 100 + console.log(` Shared core keys (${sharedCoreKeys.length} keys × ${overlapping.length} locales): skill ${bAvgR} → ${cAvgR} (${cAvgR >= bAvgR ? '+' : ''}${(cAvgR - bAvgR).toFixed(2)})`) + } + } + } + + console.log('\n Per-locale regression deltas:') + for (const locale of TEST_LOCALES) { + const bLocale = baseline.results.filter(r => r.locale === locale && r.judgeScore) + const cLocale = results.filter(r => r.locale === locale && r.judgeScore) + if (bLocale.length === 0 || cLocale.length === 0) continue + const bSkill = bLocale.reduce((s, r) => s + r.judgeScore.skillScore, 0) / bLocale.length + const cSkill = cLocale.reduce((s, r) => s + r.judgeScore.skillScore, 0) / cLocale.length + const delta = cSkill - bSkill + const bSkillR = Math.round(bSkill * 100) / 100 + const cSkillR = Math.round(cSkill * 100) / 100 + const arrow = delta > 0.05 ? '↑' : delta < -0.05 ? '↓' : '→' + console.log(` ${locale}: ${bSkillR} → ${cSkillR} (${delta >= 0 ? '+' : ''}${delta.toFixed(2)}) ${arrow}`) + } + } +} else { + console.log('\n--- No baseline found (first run) ---') +} + +function buildSummaryObj(stats) { + return { + totalComparisons: stats.total, + exactMatchCount: stats.exactMatchCount, + exactMatchRate: Math.round((stats.exactMatchCount / stats.total) * 1000) / 10, + validationPassCount: stats.validPass, + validationPassRate: Math.round((stats.validPass / stats.total) * 1000) / 10, + avgHumanScore: stats.avgHuman !== null ? Math.round(stats.avgHuman * 100) / 100 : null, + avgSkillScore: stats.avgSkill !== null ? Math.round(stats.avgSkill * 100) / 100 : null, + humanWins: stats.judged.length > 0 ? stats.humanWins : null, + skillWins: stats.judged.length > 0 ? stats.skillWins : null, + ties: stats.judged.length > 0 ? stats.ties : null, + lowScoreCount: stats.judged.length > 0 ? stats.lowScores : null, + } +} + +const report = { + generatedAt: new Date().toISOString(), + groundTruthSha: gt.gitSha, + summary: { + ...buildSummaryObj(overall), + glossaryCorrectnessChecked: gcResults.length, + glossaryCorrectnessPass: gcPass, + glossaryCorrectnessRate: gcResults.length > 0 ? Math.round((gcPass / gcResults.length) * 1000) / 10 : null, + }, + coreSummary: buildSummaryObj(coreStats), + rotatingSummary: buildSummaryObj(rotatingStats), + results, +} +fs.writeFileSync(REPORT_PATH, JSON.stringify(report, null, 2) + '\n') +console.log(`\nFull report written to ${REPORT_PATH}`) diff --git a/.claude/skills/benchmark-translate/scripts/restore.js b/.claude/skills/benchmark-translate/scripts/restore.js new file mode 100644 index 00000000000..17220235aeb --- /dev/null +++ b/.claude/skills/benchmark-translate/scripts/restore.js @@ -0,0 +1,27 @@ +const { execSync } = require('child_process') + +const TEST_LOCALES = ['de', 'es', 'fr', 'ja', 'pt', 'ru', 'tr', 'uk', 'zh'] + +function main() { + for (const locale of TEST_LOCALES) { + const filePath = `src/assets/translations/${locale}/main.json` + execSync(`git checkout -- ${filePath}`, { encoding: 'utf8' }) + console.log(`Restored ${filePath}`) + } + + console.log('\nAll locale files restored to their original state.') + + const diff = execSync( + `git diff --stat -- ${TEST_LOCALES.map(l => `src/assets/translations/${l}/main.json`).join(' ')}`, + { encoding: 'utf8' }, + ).trim() + + if (diff.length === 0) { + console.log('Verified: no diff from HEAD.') + } else { + console.error('Warning: unexpected diff remains:') + console.error(diff) + } +} + +main() diff --git a/.claude/skills/benchmark-translate/scripts/select-keys.js b/.claude/skills/benchmark-translate/scripts/select-keys.js new file mode 100644 index 00000000000..8fa3a18d356 --- /dev/null +++ b/.claude/skills/benchmark-translate/scripts/select-keys.js @@ -0,0 +1,251 @@ +const fs = require('fs') +const path = require('path') + +const TRANSLATIONS_DIR = path.resolve(__dirname, '../../../../src/assets/translations') +const BENCHMARK_DIR = path.resolve(__dirname, '../../../../scripts/translations/benchmark') +const OUTPUT_PATH = path.join(BENCHMARK_DIR, 'testKeys.json') +const CORE_KEYS_PATH = path.join(BENCHMARK_DIR, 'coreKeys.json') + +const TEST_LOCALES = ['de', 'es', 'fr', 'ja', 'pt', 'ru', 'tr', 'uk', 'zh'] + +function flatten(obj, prefix) { + prefix = prefix || '' + const entries = [] + for (const [key, value] of Object.entries(obj)) { + const fullPath = prefix ? `${prefix}.${key}` : key + if (typeof value === 'string') { + entries.push({ dottedPath: fullPath, value }) + } else if (typeof value === 'object' && value !== null) { + entries.push(...flatten(value, fullPath)) + } + } + return entries +} + +function getValueByPath(obj, dottedPath) { + const parts = dottedPath.split('.') + let current = obj + for (const part of parts) { + if (current === null || current === undefined || typeof current !== 'object') return undefined + current = current[part] + } + return typeof current === 'string' ? current : undefined +} + +function categorize(dottedPath, value) { + const lower = value.toLowerCase() + const pathLower = dottedPath.toLowerCase() + + if ( + lower.includes('dust') || + lower.includes('impermanent loss') || + lower.includes('claim') || + lower.includes('trade') + ) { + return 'glossary-term' + } + + if ( + pathLower.includes('.errors.') || + pathLower.includes('.error.') || + lower.includes('fee') || + lower.includes('collateral') || + lower.includes('deposit') || + lower.includes('withdraw') || + lower.includes('insufficient') + ) { + return 'financial-error' + } + + const wordCount = value.trim().split(/\s+/).length + if (wordCount <= 3 && !value.includes('%{')) { + return 'single-word' + } + + if (value.includes('%{')) { + return 'interpolation' + } + + const defiPrefixes = ['defi.', 'trade.', 'lending.', 'earn.', 'pools.'] + if (defiPrefixes.some(p => pathLower.startsWith(p))) { + return 'defi-jargon' + } + + return 'general' +} + +function shuffleArray(arr) { + const shuffled = [...arr] + for (let i = shuffled.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)) + ;[shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]] + } + return shuffled +} + +function stratifiedSelect(pool, candidates, count, selectedPaths) { + const pools = { + 'glossary-term': [], + 'financial-error': [], + 'single-word': [], + 'interpolation': [], + 'defi-jargon': [], + 'general': [], + } + + for (const entry of candidates) { + if (selectedPaths.has(entry.dottedPath)) continue + if (!pool.has(entry.dottedPath)) continue + const category = categorize(entry.dottedPath, entry.value) + if (pools[category]) pools[category].push(entry) + } + + const quotas = { + 'glossary-term': Math.round(18 * count / 75), + 'financial-error': Math.round(12 * count / 75), + 'single-word': Math.round(12 * count / 75), + 'interpolation': Math.round(12 * count / 75), + 'defi-jargon': Math.round(8 * count / 75), + } + + const selected = [] + const usedPaths = new Set() + + function selectFrom(entries, category, target) { + const shuffled = shuffleArray(entries) + for (const entry of shuffled) { + if (usedPaths.has(entry.dottedPath)) continue + selected.push({ dottedPath: entry.dottedPath, category }) + usedPaths.add(entry.dottedPath) + if (selected.filter(s => s.category === category).length >= target) break + } + } + + selectFrom(pools['glossary-term'], 'glossary-term', quotas['glossary-term']) + selectFrom(pools['financial-error'], 'financial-error', quotas['financial-error']) + selectFrom(pools['single-word'], 'single-word', quotas['single-word']) + selectFrom(pools['interpolation'], 'interpolation', quotas['interpolation']) + selectFrom(pools['defi-jargon'], 'defi-jargon', quotas['defi-jargon']) + + const remaining = count - selected.length + selectFrom(pools['general'], 'general', remaining) + + if (selected.length < count) { + const allRemaining = candidates.filter( + e => pool.has(e.dottedPath) && !usedPaths.has(e.dottedPath) && !selectedPaths.has(e.dottedPath), + ) + const shuffled = shuffleArray(allRemaining) + for (const entry of shuffled) { + if (selected.length >= count) break + selected.push({ dottedPath: entry.dottedPath, category: 'general' }) + usedPaths.add(entry.dottedPath) + } + } + + return selected +} + +function main() { + const countArg = process.argv.indexOf('--count') + const totalTarget = countArg !== -1 ? parseInt(process.argv[countArg + 1], 10) : 150 + + const coreArg = process.argv.indexOf('--core') + const coreTarget = coreArg !== -1 ? parseInt(process.argv[coreArg + 1], 10) : 100 + + if (isNaN(totalTarget) || totalTarget < 1) { + console.error('Error: --count must be a positive integer') + process.exit(1) + } + if (isNaN(coreTarget) || coreTarget < 1) { + console.error('Error: --core must be a positive integer') + process.exit(1) + } + if (coreTarget >= totalTarget) { + console.error(`Error: --core (${coreTarget}) must be less than --count (${totalTarget})`) + process.exit(1) + } + + const enData = JSON.parse(fs.readFileSync(path.join(TRANSLATIONS_DIR, 'en/main.json'), 'utf8')) + const allFlat = flatten(enData) + console.log(`Total English strings: ${allFlat.length}`) + + const localeData = {} + for (const locale of TEST_LOCALES) { + localeData[locale] = JSON.parse(fs.readFileSync(path.join(TRANSLATIONS_DIR, `${locale}/main.json`), 'utf8')) + } + + const candidates = allFlat.filter(entry => { + return TEST_LOCALES.every(locale => { + const val = getValueByPath(localeData[locale], entry.dottedPath) + return val !== undefined && val.trim().length > 0 + }) + }) + console.log(`Candidates (exist in all ${TEST_LOCALES.length} locales): ${candidates.length}`) + const candidatePathSet = new Set(candidates.map(e => e.dottedPath)) + + let coreKeys = [] + let coreCreated = false + + if (fs.existsSync(CORE_KEYS_PATH)) { + const loaded = JSON.parse(fs.readFileSync(CORE_KEYS_PATH, 'utf8')) + const validated = loaded.filter(entry => candidatePathSet.has(entry.dottedPath)) + const staleCount = loaded.length - validated.length + if (staleCount > 0) { + console.log(`Core keys: removed ${staleCount} stale keys (no longer in all locales)`) + } + coreKeys = validated + console.log(`Core keys loaded: ${coreKeys.length}/${loaded.length} valid`) + } + + const corePathSet = new Set(coreKeys.map(e => e.dottedPath)) + + if (coreKeys.length < coreTarget) { + const needed = coreTarget - coreKeys.length + console.log(`Core keys: selecting ${needed} additional keys to reach target of ${coreTarget}`) + const topUp = stratifiedSelect( + new Set(candidates.filter(e => !corePathSet.has(e.dottedPath)).map(e => e.dottedPath)), + candidates, + needed, + corePathSet, + ) + coreKeys = [...coreKeys, ...topUp] + coreCreated = true + } + + if (!fs.existsSync(CORE_KEYS_PATH) || coreCreated) { + fs.mkdirSync(path.dirname(CORE_KEYS_PATH), { recursive: true }) + fs.writeFileSync(CORE_KEYS_PATH, JSON.stringify(coreKeys, null, 2) + '\n') + console.log(`Core keys saved to ${CORE_KEYS_PATH} (${coreKeys.length} keys)`) + } + + const allCorePathSet = new Set(coreKeys.map(e => e.dottedPath)) + const rotatingCount = totalTarget - coreKeys.length + console.log(`\nSelecting ${rotatingCount} rotating keys...`) + + const rotatingPool = new Set( + candidates.filter(e => !allCorePathSet.has(e.dottedPath)).map(e => e.dottedPath), + ) + const rotatingKeys = stratifiedSelect(rotatingPool, candidates, rotatingCount, allCorePathSet) + + const selected = [ + ...coreKeys.map(e => ({ ...e, fixed: true })), + ...rotatingKeys.map(e => ({ ...e, fixed: false })), + ] + + console.log(`\nSelected ${selected.length} keys (${coreKeys.length} fixed + ${rotatingKeys.length} rotating)`) + + const categoryCounts = {} + for (const entry of selected) { + categoryCounts[entry.category] = (categoryCounts[entry.category] || 0) + 1 + } + console.log('\nCategory distribution:') + for (const [cat, count] of Object.entries(categoryCounts).sort((a, b) => b[1] - a[1])) { + console.log(` ${cat}: ${count}`) + } + + fs.mkdirSync(path.dirname(OUTPUT_PATH), { recursive: true }) + fs.writeFileSync(OUTPUT_PATH, JSON.stringify(selected, null, 2) + '\n') + console.log(`\nWrote ${OUTPUT_PATH}`) +} + +main() diff --git a/.claude/skills/benchmark-translate/scripts/setup.js b/.claude/skills/benchmark-translate/scripts/setup.js new file mode 100644 index 00000000000..c745600b293 --- /dev/null +++ b/.claude/skills/benchmark-translate/scripts/setup.js @@ -0,0 +1,119 @@ +const fs = require('fs') +const path = require('path') +const { execSync } = require('child_process') + +const TRANSLATIONS_DIR = path.resolve(__dirname, '../../../../src/assets/translations') +const BENCHMARK_DIR = path.resolve(__dirname, '../../../../scripts/translations/benchmark') +const TEST_KEYS_PATH = path.join(BENCHMARK_DIR, 'testKeys.json') +const GROUND_TRUTH_PATH = path.join(BENCHMARK_DIR, 'ground-truth.json') +const REPORT_PATH = path.join(BENCHMARK_DIR, 'report.json') +const BASELINE_PATH = path.join(BENCHMARK_DIR, 'baseline.json') + +const TEST_LOCALES = ['de', 'es', 'fr', 'ja', 'pt', 'ru', 'tr', 'uk', 'zh'] + +function getValueByPath(obj, dottedPath) { + const parts = dottedPath.split('.') + let current = obj + for (const part of parts) { + if (current === null || current === undefined || typeof current !== 'object') return undefined + current = current[part] + } + return typeof current === 'string' ? current : undefined +} + +function deletePropertyByPath(obj, dottedPath) { + const parts = dottedPath.split('.') + let current = obj + for (let i = 0; i < parts.length - 1; i++) { + if (!current.hasOwnProperty(parts[i])) return false + current = current[parts[i]] + } + delete current[parts[parts.length - 1]] + return true +} + +function main() { + if (!fs.existsSync(TEST_KEYS_PATH)) { + console.error('Error: testKeys.json not found. Run select-keys.js first.') + process.exit(1) + } + + const testKeys = JSON.parse(fs.readFileSync(TEST_KEYS_PATH, 'utf8')) + + const localeFiles = TEST_LOCALES.map(locale => `src/assets/translations/${locale}/main.json`) + const gitStatus = execSync(`git status --porcelain -- ${localeFiles.join(' ')}`, { + encoding: 'utf8', + }).trim() + + if (gitStatus.length > 0) { + console.error('Error: Git working tree is not clean for locale files:') + console.error(gitStatus) + console.error('Please commit or stash changes before running the benchmark setup.') + process.exit(1) + } + + if (fs.existsSync(REPORT_PATH)) { + fs.copyFileSync(REPORT_PATH, BASELINE_PATH) + console.log('Copied report.json → baseline.json (previous run becomes baseline)') + } + + const gitSha = execSync('git rev-parse HEAD', { encoding: 'utf8' }).trim() + const enData = JSON.parse(fs.readFileSync(path.join(TRANSLATIONS_DIR, 'en/main.json'), 'utf8')) + + const groundTruth = {} + for (const locale of TEST_LOCALES) groundTruth[locale] = {} + const english = {} + + for (const { dottedPath } of testKeys) { + const enValue = getValueByPath(enData, dottedPath) + if (!enValue) { + console.error(`Error: English key not found: ${dottedPath}`) + process.exit(1) + } + english[dottedPath] = enValue + } + + for (const locale of TEST_LOCALES) { + const localeData = JSON.parse(fs.readFileSync(path.join(TRANSLATIONS_DIR, `${locale}/main.json`), 'utf8')) + + for (const { dottedPath } of testKeys) { + const value = getValueByPath(localeData, dottedPath) + if (!value) { + console.error(`Error: Key not found in ${locale}: ${dottedPath}`) + process.exit(1) + } + groundTruth[locale][dottedPath] = value + } + } + + const groundTruthData = { + generatedAt: new Date().toISOString(), + gitSha, + testKeys, + groundTruth, + english, + } + fs.mkdirSync(BENCHMARK_DIR, { recursive: true }) + fs.writeFileSync(GROUND_TRUTH_PATH, JSON.stringify(groundTruthData, null, 2) + '\n') + console.log(`Ground truth saved to ${GROUND_TRUTH_PATH}`) + console.log(`Git SHA: ${gitSha}`) + console.log(`Test keys: ${testKeys.length}`) + + for (const locale of TEST_LOCALES) { + const localePath = path.join(TRANSLATIONS_DIR, `${locale}/main.json`) + const localeData = JSON.parse(fs.readFileSync(localePath, 'utf8')) + let removedCount = 0 + + for (const { dottedPath } of testKeys) { + const deleted = deletePropertyByPath(localeData, dottedPath) + if (deleted) removedCount++ + } + + fs.writeFileSync(localePath, JSON.stringify(localeData, null, 2) + '\n') + console.log(`${locale}: removed ${removedCount}/${testKeys.length} keys`) + } + + console.log('\nSetup complete. Run /translate to regenerate the removed keys, then run compile-report.js.') +} + +main() diff --git a/.claude/skills/translate/SKILL.md b/.claude/skills/translate/SKILL.md new file mode 100644 index 00000000000..8bfe3949254 --- /dev/null +++ b/.claude/skills/translate/SKILL.md @@ -0,0 +1,384 @@ +--- +name: translate +description: Translate new/changed English UI strings into all supported languages using a translate-review-refine pipeline. Invoke with /translate to detect untranslated strings and produce high-quality translations for de, es, fr, ja, pt, ru, tr, uk, zh. +allowed-tools: Read, Write, Edit, Grep, Glob, Bash(node *), Bash(git diff*), Bash(git log*), Bash(git rev-parse*), Bash(wc *), Bash(mkdir *), Task, AskUserQuestion +--- + +# Automated i18n Translation Skill + +Translates new or changed English UI strings into all 9 supported non-English languages using a translate-review-refine pipeline. Detects what changed, translates in batches with terminology glossary enforcement, validates output programmatically, and merges results into the existing translation files. + +## Supported Languages + +| Locale | Language | Register | +|--------|----------|----------| +| `de` | German | Formal (Sie) | +| `es` | Spanish | Informal (tú) | +| `fr` | French | Formal (vous) | +| `ja` | Japanese | Polite (です/ます) | +| `pt` | Portuguese (BR) | Informal (você) | +| `ru` | Russian | Formal (вы) | +| `tr` | Turkish | Formal (siz) | +| `uk` | Ukrainian | Formal (ви) | +| `zh` | Chinese (Simplified) | Neutral/formal | + +See `.claude/skills/translate/locales/{locale}.md` for detailed locale-specific rules. + +## Precautions + +- **Do not translate `en`** — English is the source language. +- **Do not touch `id` or `ko`** — these locales exist on disk but are not imported in `index.ts` or declared in `constants.ts`. +- **Preserve existing translations** — only add/update keys, never delete existing translated keys. +- **Interpolation is sacred** — `%{variableName}` placeholders must survive translation intact, including exact variable names. +- **JSON validity** — all output files must be valid JSON. Validate before writing. +- **File format** — 2-space indent, trailing newline, UTF-8 encoding (matches `saveJSONFile` in `scripts/translations/utils.ts`). +- **The glossary is a living document** — it grows over time as new terms are identified. Check it at the start of every run. + +## Step 1: Compute Translation Diff + +Determine which English strings need translation. + +### 1a. Check for marker file + +``` +Read src/assets/translations/.last-translation-sha +``` + +### 1b. If marker file exists — diff-based detection + +The marker contains a git SHA from the last translation run. Use it to find new/modified English strings since then. + +```bash +node .claude/skills/translate/scripts/diff.js +``` + +This follows the same recursive comparison pattern as `scripts/translations/utils.ts` `findStringsToTranslate()`. + +### 1c. If no marker file — missing-key detection + +Compare each non-English language against English to find missing keys: + +```bash +node .claude/skills/translate/scripts/missing-keys.js +``` + +### 1d. Early exit + +If no changes or missing keys are found, print: + +> Translations are up to date. No new or modified English strings detected. + +and stop. + +### 1e. For modified keys (English value changed) + +Mark these as needing re-translation in ALL languages, not just those missing the key. + +## Step 2: Batching Strategy + +Group the strings to translate by their **top-level JSON namespace** (the first segment of the dotted path, e.g., `agenticChat`, `common`, `trade`). + +- Target **20-50 strings per batch** +- If a namespace has more than 50 strings, split into sub-batches of **30-35 strings, preserving original key order** +- If a namespace has fewer than 5 strings, combine with other small namespaces into a single batch +- Each batch item includes: `{ dottedPath, englishValue }` +- Keep batch contents together because namespace context improves translation consistency + +## Step 3: Load Glossary + +Read `src/assets/translations/glossary.json`. This file contains: +- Terms with value `null` = **never translate**, keep in English (e.g., "Bitcoin", "DeFi", "MetaMask") +- Terms with locale-keyed objects = **use the approved translation** for that language (e.g., "staking" → "ステーキング" in Japanese) + +The glossary is passed to every translator and reviewer sub-agent. If the glossary file is missing or contains invalid JSON, log an error and exit immediately with a clear message. + +## Step 3b: Cross-Reference Existing Translations for Term Consistency + +Before translation begins, extract significant terms from the new English strings and search **all namespaces** in the target locale for existing translations containing those terms. This ensures that domain terms like "pool", "vault", "bridge", "fee", etc. are translated consistently with how they've already been translated elsewhere in the app — even across different namespaces. + +Run the term-context script **once per locale at pipeline start**: + +```bash +node .claude/skills/translate/scripts/term-context.js LOCALE NEW_STRINGS_JSON_OR_FILE +``` + +- `LOCALE` — the target locale code (e.g., `fr`) +- `NEW_STRINGS_JSON_OR_FILE` — path to a temp file containing the new strings as `[{ path, value }]` array or `{ "dotted.path": "english value" }` object + +The script: +1. Extracts significant words and 2-word phrases from the new English strings (filtering stop words and glossary terms which are already handled) +2. Searches the full `{locale}/main.json` for existing translated strings whose English source contains those terms +3. Returns up to 3 matches per term, prioritizing multi-word phrases, capped at 30 terms total + +Output format: +```json +{ + "liquidity pool": [ + { "key": "defi.liquidityPools.title", "en": "Liquidity Pool", "fr": "Pool de liquidité" } + ], + "fee": [ + { "key": "common.gasFee", "en": "Gas Fee", "fr": "Frais de gas" }, + { "key": "trade.networkFee", "en": "Network Fee", "fr": "Frais de réseau" } + ] +} +``` + +Pass this as `{TERM_CONTEXT}` in the translator prompt (see Step 5a). If the script returns an empty object (no matching terms found in existing translations), omit the `{TERM_CONTEXT}` section from the prompt. + +**Caching**: Run term-context.js and load few-shot context once per locale at pipeline start. Reuse this context for all batches of that locale — do not re-run scripts per batch. + +## Step 4: Load Few-Shot Context from Existing Translations + +Before translating each batch for a given locale, sample ~10 existing translations from the same namespace(s) being translated. These serve as tone/style reference for the translator. + +1. Read `src/assets/translations/{locale}/main.json` +2. From the namespace(s) in the current batch, extract entries that are **not** in the batch being translated +3. Prefer entries of similar string length to the batch strings +4. Format as: + ```json + { "dotted.path": { "en": "English source", "{locale}": "Existing translation" } } + ``` +5. Pass as `{EXISTING_TRANSLATIONS_SAMPLE}` in the translator prompt (see Step 5a) + +This grounds the translator in the existing voice and terminology of the project for that locale. + +**Caching**: Load the locale file once at pipeline start and reuse for all batches of that locale. + +## Step 4b: Prepare Locale Bundle + +After loading few-shot context (Step 4), run `prepare-locale.js` **once per locale** to bundle all translation context into a single file. This prevents sub-agents from needing to read any codebase files. + +```bash +node .claude/skills/translate/scripts/prepare-locale.js LOCALE --batches=BATCHES_FILE --term-context=TERM_CONTEXT_FILE --few-shot=FEW_SHOT_FILE +``` + +- `BATCHES_FILE` — path to a JSON file containing an array of batch objects (each batch is `{ "dotted.path": "english value" }`) +- `TERM_CONTEXT_FILE` — path to term-context output from Step 3b (omit if empty) +- `FEW_SHOT_FILE` — path to few-shot context from Step 4 (omit if empty) + +Output: `/tmp/translate-{locale}.json` containing locale rules, glossary, term context, few-shot examples, and all batches in a single file. + +## Step 5: Spawn Self-Contained Language Agents + +Launch **9 Task sub-agents in parallel** (one per language) using the **Task tool** with `model: "sonnet"`. Each language agent owns its entire lifecycle: translate → validate → retry → review → refine → merge → verify. + +The orchestrator's only job after spawning is to read status files and compile the report (Step 6). + +### Language Agent Prompt + +For each locale, spawn a Task with the following prompt (substituting `{LOCALE_CODE}` and `{LANGUAGE_NAME}`): + +``` +You are a self-contained translation agent for {LANGUAGE_NAME} ({LOCALE_CODE}) in a cryptocurrency/DeFi application. + +You own the full translation lifecycle for your locale. Do NOT read any codebase source files — all context is in the locale bundle. + +## Your Locale Bundle + +Read `/tmp/translate-{LOCALE_CODE}.json`. It contains: +- `locale`, `language`, `register` — your target locale metadata +- `localeRules` — locale-specific translation rules (follow these precisely) +- `neverTranslate` — terms that must remain in English +- `approvedTerms` — terms with mandatory translations for your locale +- `termContext` — how key terms have been translated elsewhere in this project +- `fewShot` — reference translations for tone/style +- `batches` — array of batch objects, each containing: + - `strings` — the key-value pairs to translate (`{ "dotted.path": "english value" }`) + - `relevantNeverTranslate` — never-translate terms that appear in this batch's strings + - `relevantApprovedTerms` — approved translations relevant to this batch + +## Per-Batch Pipeline (process batches sequentially, 0-indexed) + +For each batch in the `batches` array: + +### 1. Translate + +Translate all strings in `batch.strings` from English to {LANGUAGE_NAME}. + +GLOSSARY REMINDER for this batch: +- Never translate these terms (keep in English): {batch.relevantNeverTranslate} +- Use these approved translations: {batch.relevantApprovedTerms} + +RULES: +1. INTERPOLATION: Preserve all %{variableName} placeholders exactly as-is. Do not translate variable names inside %{}. +2. TERMINOLOGY: + - NEVER TRANSLATE terms in `relevantNeverTranslate` for this batch (keep in English) + - USE APPROVED TRANSLATIONS from `relevantApprovedTerms` for this batch + - Also reference the full `neverTranslate` and `approvedTerms` in the bundle as fallback + - When a term in `termContext` has an established translation, use it unless the context clearly demands a different meaning +3. Keep translations concise — UI space is limited. Match the approximate length of the English source. +4. FORMAT: Preserve HTML entities and markdown. If a string is a single word that's also a UI label (like "Done", "Cancel"), translate it as a UI action. +5. SOURCE FAITHFULNESS: Do not add information not present in the English source. +6. CONCISENESS: Prefer shorter synonyms or abbreviations common in {LANGUAGE_NAME} UI conventions. +7. KEY INTEGRITY: Output keys must EXACTLY match input keys. No additions, removals, or modifications to key names. +8. TAG KEYS: If the key path contains `.tags.`, the value is likely a short label or abbreviation. Preserve abbreviations as-is without expanding them. Check the `tagKeys` array in the bundle to identify these keys. + +Use the `fewShot` examples from the bundle as tone/style reference. + +### 2. Validate + +Write the source batch (`batch.strings`) to `/tmp/batch-{LOCALE_CODE}-{BATCH_IDX}-source.json` and your translation to `/tmp/batch-{LOCALE_CODE}-{BATCH_IDX}-target.json`, then run: + +```bash +node .claude/skills/translate/scripts/validate.js {LOCALE_CODE} /tmp/batch-{LOCALE_CODE}-{BATCH_IDX}-source.json /tmp/batch-{LOCALE_CODE}-{BATCH_IDX}-target.json +``` + +This outputs `{ rejected, flagged, passed }`. + +### 3. Retry Rejected Strings + +For any strings in `rejected`: re-translate them incorporating the rejection reason as feedback. Run validation again. Retry up to 2 times total. Strings that still fail after 2 retries become "manual review" items. + +### 4. Review (spawn fresh sub-agent) + +Collect flagged strings plus a 10% random sample of passed strings. If there are any strings to review, spawn a **separate reviewer sub-agent** using the Task tool (model: sonnet) with this prompt: + +``` +You are a senior localization reviewer for a cryptocurrency/DeFi application ({LANGUAGE_NAME}). +Do NOT read any other files from the codebase. All context you need is provided below. + +Review these translations for quality. For each string, respond with either "approved" or a specific issue description. + +LOCALE RULES: +{LOCALE_RULES_FROM_BUNDLE} + +FOCUS ON: +1. Naturalness - does it sound natural to a native {LANGUAGE_NAME} speaker? +2. Semantic accuracy - does the translation accurately convey the English meaning? +3. Cultural appropriateness - are there any culturally awkward or inappropriate phrasings? +4. UI appropriateness - translations should be concise enough for UI elements +5. Source faithfulness - verify translation doesn't add information not in the English source +6. Register consistency — verify ALL address forms, verb conjugations, imperatives, and possessives match the declared register. Check beyond just pronouns: verb forms, possessives, and sentence endings must all be consistent. + +TERM CONTEXT: +{TERM_CONTEXT_FROM_BUNDLE} + +VALIDATION FLAGS: +{FLAGS_FOR_FLAGGED_STRINGS_OR_NONE} + +STRINGS TO REVIEW (JSON: { "path": { "en": "source", "translation": "target" } }): +{STRINGS_TO_REVIEW} + +OUTPUT: JSON object with dotted paths as keys. Value is either "approved" or "Issue: [one-sentence description]". +``` + +### 5. Refine (spawn fresh sub-agent, conditional) + +If the reviewer flagged any strings, spawn a **separate refiner sub-agent** using the Task tool (model: sonnet): + +``` +You are a professional UI translator for a cryptocurrency/DeFi application. +Do NOT read any other files from the codebase. All context you need is provided below. +Fix the following {LANGUAGE_NAME} translations based on reviewer feedback. + +LOCALE RULES: +{LOCALE_RULES_FROM_BUNDLE} + +RULES: Preserve %{placeholders}, use approved terminology, be concise, be faithful to source. + +INPUT: { "dotted.path": { "en": "source", "translation": "current", "feedback": "Issue: ..." } } + +STRINGS TO FIX: +{STRINGS_WITH_FEEDBACK} + +OUTPUT: JSON object with dotted paths as keys and corrected translations as values. +``` + +Re-validate refined output. If it still fails after 1 retry, mark as "manual review". + +### 6. Accumulate + +After processing all batches, combine all passing translations into a single object. + +## Post-Batch: Merge & Verify + +After all batches are complete: + +1. Write accumulated translations to `/tmp/translations-{LOCALE_CODE}-final.json` + +2. Run merge (which creates a pre-merge backup automatically). By default, merge **only adds new keys** — existing translations are never overwritten. Pass `--force` only when re-translating changed English strings: + ```bash + node .claude/skills/translate/scripts/merge.js {LOCALE_CODE} /tmp/translations-{LOCALE_CODE}-final.json + ``` + +3. Run post-merge validation: + ```bash + node .claude/skills/translate/scripts/validate-file.js {LOCALE_CODE} --pre-merge=/tmp/pre-merge-{LOCALE_CODE}.json + ``` + +4. If validate-file reports `valid: false`: + - Restore the pre-merge backup: copy `/tmp/pre-merge-{LOCALE_CODE}.json` back to `src/assets/translations/{LOCALE_CODE}/main.json` + - Mark locale as "failed" in status + +5. Write status to `/tmp/translate-status-{LOCALE_CODE}.json`: + ```json + { + "locale": "{LOCALE_CODE}", + "status": "success" | "failed", + "translated": , + "manualReview": [{ "path": "...", "reason": "..." }], + "errors": ["..."] + } + ``` + +## Error Handling + +- **JSON parse failure** from your own translation: retry once with stricter instructions +- **Empty batch**: skip without processing +- **Sub-agent (reviewer/refiner) failure**: log as "manual review", continue with next batch +- Strings that fail all retries: include in `manualReview` array in status file +``` + +### Temp File Conventions + +All files are namespaced by locale — zero overlap between parallel agents: + +| File | Writer | Reader | +|------|--------|--------| +| `/tmp/translate-{locale}.json` | orchestrator | language agent | +| `/tmp/batch-{locale}-{idx}-source.json` | language agent | validate.js | +| `/tmp/batch-{locale}-{idx}-target.json` | language agent | validate.js | +| `/tmp/translations-{locale}-final.json` | language agent | merge.js | +| `/tmp/pre-merge-{locale}.json` | merge.js | language agent (rollback), validate-file.js | +| `/tmp/translate-status-{locale}.json` | language agent | orchestrator | + +## Step 6: Update Marker & Report + +After all 9 language agents complete, read their status files and compile results. + +1. **Read status files**: Read `/tmp/translate-status-{locale}.json` for each locale. If a status file is missing, report that locale as "no response" (agent may have crashed — locale file is unchanged). + +2. **Write marker file** (only if at least one locale succeeded): + ```bash + git rev-parse HEAD > src/assets/translations/.last-translation-sha + ``` + +3. **Update glossary timestamp** (if glossary was modified during this run): + Update `_meta.lastUpdated` in `src/assets/translations/glossary.json` to today's date. + +4. **Print summary report**: + ``` + === Translation Summary === + SHA marker: + + Strings translated: across languages + Strings skipped (manual review needed): + Locales failed (rolled back): + + Per-language breakdown: + de: translated, skipped [success|failed|no response] + es: translated, skipped [success|failed|no response] + ... + + Skipped strings (need manual review): + - (): + ``` + +## Step 7: Glossary Update (conditional) + +After all translations complete, scan for English terms that appear untranslated (kept as-is) in **7 or more locales**. These are candidates for the glossary never-translate list. + +1. Collect terms that remained in English across most languages +2. Present candidates to the user for confirmation before adding +3. For confirmed terms, add to `src/assets/translations/glossary.json` with value `null` +4. Log additions in the summary report diff --git a/.claude/skills/translate/locales/de.md b/.claude/skills/translate/locales/de.md new file mode 100644 index 00000000000..26fb7cf1266 --- /dev/null +++ b/.claude/skills/translate/locales/de.md @@ -0,0 +1,17 @@ +# German (de) — Formal (Sie) + +- Use formal "Sie" address consistently +- Register violations beyond pronouns: imperative verb forms ("Folge" is du-form, use "Folgen Sie"); possessives ("dein" is du-form, use "Ihr/Ihre") +- WRONG: "Folge den Anweisungen auf deinem Gerät" (du-imperative + du-possessive) +- RIGHT: "Folgen Sie den Anweisungen auf Ihrem Gerät" (Sie-imperative + Sie-possessive) +- Use verb infinitives for action buttons (e.g., "Einzahlen" not "Einzahlung") +- German compound nouns are ALWAYS written as one word or hyphenated, NEVER as separate words (e.g., "Verkaufsvorschau" not "Verkauf vorschau", "Gasgebühr" not "Gas Gebühr") +- Use established German financial terms +- Translate English adjectives — don't leave English untranslated unless in glossary +- Do not invent compound nouns that don't exist in German — if no established compound exists, use a short phrase or keep the English term +- For preview/overview labels, use compound forms: Vorschau (preview), Übersicht (overview) +- Action buttons use infinitive form (Einzahlen, Handeln, Einfordern), not noun form (Einzahlung, Handel) +- "claim" in DeFi context = "Einfordern" (not "Anfordern" or "Beanspruchen") +- "dust" stays English (glossary never-translate) — not "Staub" (physical dust) +- Separable verb imperatives with "Sie": the prefix goes to end of clause (e.g., "Fordern Sie Ihre Belohnungen ein") +- Watch for typos in technical terms: "Miner" not "Mincer", "Token" not "Toke" diff --git a/.claude/skills/translate/locales/es.md b/.claude/skills/translate/locales/es.md new file mode 100644 index 00000000000..7293c25405e --- /dev/null +++ b/.claude/skills/translate/locales/es.md @@ -0,0 +1,10 @@ +# Spanish (es) — Informal (tu) + +- Use informal "tú" address consistently +- Register violations beyond pronouns: verb conjugation ("habla" is usted-form, use "hablas" for tú); imperatives ("hable" is formal, use "habla" for tú) +- WRONG: "Conecte su billetera" (usted imperative + formal possessive) +- RIGHT: "Conecta tu billetera" (tú imperative + informal possessive) +- Never invent verbs from English (no "tradear", "swapear") +- "trade" verb = "intercambiar", noun = "intercambio" +- Don't use English nouns outside the glossary +- "liquidity pool" = "pool de liquidez" or "fondo de liquidez" — NEVER "piscina de liquidez" (piscina = swimming pool) diff --git a/.claude/skills/translate/locales/fr.md b/.claude/skills/translate/locales/fr.md new file mode 100644 index 00000000000..1abe2944b94 --- /dev/null +++ b/.claude/skills/translate/locales/fr.md @@ -0,0 +1,17 @@ +# French (fr) — Formal (vous) + +- Use formal "vous" address consistently +- Register violations beyond pronouns: verb endings ("tu peux" vs "vous pouvez"); imperatives ("connecte" is tu-form, use "connectez" for vous) +- WRONG: "Connecte ton portefeuille" (tu-imperative + tu-possessive) +- RIGHT: "Connectez votre portefeuille" (vous-imperative + vous-possessive) +- "claim" (DeFi) verb = "réclamer", noun = "réclamation" — NEVER "réclame" (= advertisement in French) +- "supported" (feature/chain) = "pris(e) en charge" — not "supportée" (anglicism) +- Use consistent "vous" register: prefer "Veuillez + infinitive" for instructions, no mixed imperatives +- Keep product names exactly as-is: FOXy, rFOX, FOX Token are distinct products — never substitute one for another +- Prefer concise phrasing — French typically runs 30-40% longer than English, so trim filler words +- "seed phrase" = "phrase de récupération" — never literal "phrase de graine" or "phrase de semences" +- "unstake" = "déstaker" — coined French DeFi verb, consistent throughout +- "liquidity pool" = "pool de liquidités" — never "piscine" +- French elision with dynamic placeholders: "de" requires elision before vowels ("d'ETH") but placeholders resolve at runtime to unknown values. Two rules: + - When a numeric %{amount} precedes the symbol, "de" is safe — digits prevent elision (e.g. "dépôt de %{amount} %{symbol}" → "dépôt de 1,5 ETH" is correct French) + - When an asset/symbol placeholder appears directly after the preposition with no number buffer, use "en" (denominated in) instead of "de" (e.g. "montant en %{symbol}" not "montant de %{symbol}", "déstake en %{symbol}" not "déstake de %{symbol}") diff --git a/.claude/skills/translate/locales/ja.md b/.claude/skills/translate/locales/ja.md new file mode 100644 index 00000000000..0450410655b --- /dev/null +++ b/.claude/skills/translate/locales/ja.md @@ -0,0 +1,17 @@ +# Japanese (ja) — Polite (です/ます) + +- Short UI labels: use noun form without です/ます +- Register violations: sentence endings (casual だ/ない vs polite です/ません); verb forms (casual ~てる vs polite ~ています) +- WRONG: "トランザクションが失敗した" (casual past tense) +- RIGHT: "トランザクションが失敗しました" (polite past tense) +- Prefer native kanji over katakana loanwords (e.g., 入金 not デポジット, 残高不足 not 資金不足です) +- Never use お客様 +- For "X out of Y" → Y件中X件 +- Prefer リスト over リスティング +- For bridge/DeFi "claim" (withdrawal action), use 請求 not 獲得 (which means earn/win) +- Avoid mixing katakana and Japanese in a single compound where it reads unnaturally (e.g., ペンディング中の → 保留中の) +- Reorder %{…} placeholders to match Japanese SOV/postpositional grammar (e.g., "%{count} of %{total}" → "%{total}件中%{count}件") +- "allowance" (token approval) = 承認枠 or 承認額 — NEVER プール (= pool, completely wrong meaning) +- "vault" = ヴォールト — not バルト (typo that changes the meaning entirely) +- "deposit" = always 入金 (kanji form) — consistent with the kanji-over-katakana rule +- "position" (financial) = ポジション — not 位置 (= physical location/coordinates) diff --git a/.claude/skills/translate/locales/pt.md b/.claude/skills/translate/locales/pt.md new file mode 100644 index 00000000000..449ea97b111 --- /dev/null +++ b/.claude/skills/translate/locales/pt.md @@ -0,0 +1,12 @@ +# Portuguese — Brazil (pt) — Informal (você) + +- Use informal "você" address consistently +- Register violations: mixing tu-forms with você. Você uses third-person conjugation (fala, é), not second-person (falas, és) +- WRONG: "Tu precisas conectar a carteira" (tu conjugation) +- RIGHT: "Você precisa conectar a carteira" (você conjugation) +- "claim" (DeFi) = "resgatar" — not "reivindicar" (sounds legalistic/formal in Brazilian Portuguese) +- "seed phrase" = "frase de recuperacao" — never literal "frase de sementes" +- Keep English DeFi loanwords where Brazilian crypto community uses them directly: unstaking, restaking, staking +- "liquidity pool" = "pool de liquidez" — never "piscina de liquidez" +- "unstake" action = "remover stake" — not "desbloquear" (unlock) which has different semantics +- "streaming swap" = "troca de streaming" — keep "streaming" as loanword diff --git a/.claude/skills/translate/locales/ru.md b/.claude/skills/translate/locales/ru.md new file mode 100644 index 00000000000..533185074a7 --- /dev/null +++ b/.claude/skills/translate/locales/ru.md @@ -0,0 +1,14 @@ +# Russian (ru) — Formal (вы) + +- Use formal "вы" address consistently +- Register violations beyond pronouns: imperative forms (ты-imperative "делай" vs вы-imperative "делайте"); possessives ("твой" is ты-form, use "ваш") +- WRONG: "Подключи свой кошелёк" (ты-imperative) +- RIGHT: "Подключите ваш кошелёк" (вы-imperative + вы-possessive) +- "staking" = "стейкинг" — NEVER "ставка" (= gambling bet) or "стейкировать" (malformed verb) +- "restaking" = "рестейкинг" — NEVER "переставка" (= rearranging physical objects, catastrophically wrong) +- "unstaking" = "снять со стейкинга" — NEVER native calques that produce meaningless words +- "claim" (DeFi) = "получить" — NEVER "заклеймить" (= to brand/stigmatize, catastrophically wrong) +- "seed phrase" = "сид-фраза" — transliterated loanword, standard in Russian crypto community +- Prefer transliterated English DeFi loanwords over native Russian calques (e.g., "бридж" not "мост" for bridge) +- "liquidity pool" = "пул ликвидности" — "пул" is the standard transliteration +- "dust" (in crypto context, meaning tiny leftover amounts) must stay in English — do NOT translate as "пыль" diff --git a/.claude/skills/translate/locales/tr.md b/.claude/skills/translate/locales/tr.md new file mode 100644 index 00000000000..3287b4309fb --- /dev/null +++ b/.claude/skills/translate/locales/tr.md @@ -0,0 +1,13 @@ +# Turkish (tr) — Formal (siz) + +- Use formal "siz" address consistently +- Register violations beyond pronouns: verb suffixes (sen-form "-sın/-sin" vs siz-form "-sınız/-siniz"); possessives ("senin" is informal, use "sizin") +- WRONG: "Cüzdanını bağla" (sen-imperative + sen-possessive) +- RIGHT: "Cüzdanınızı bağlayınız" (siz-imperative + siz-possessive) +- Verify correct vowel harmony in suffixes (e.g., "Parolayı" not "Parolay" — accusative requires buffer vowel) +- "claim" (DeFi) = "talep etmek" — NEVER "yuklemeler" (= uploads, completely wrong) +- Keep DeFi English loanwords where Turkish crypto community uses them: staking, restaking, swap +- When borrowing English terms, use apostrophe for Turkish suffixes (e.g., "Stake'i Kaldır") +- Vowel harmony with dynamic placeholders: Turkish suffixes change form based on the last vowel of the preceding word, but %{placeholder} values are unknown at translation time. Since crypto symbols span all vowel classes (ETH=front, AVAX=back-unrounded, FOX=back-rounded), any static suffix will be wrong for some symbols. Two rules: + - Avoid attaching case suffixes directly to %{placeholder} — restructure using postpositions instead (e.g. "%{symbol} için" not "%{symbol}'ı", "%{symbol} üzerinde" not "%{symbol}'de") + - When a suffix on a placeholder is unavoidable, use front-unrounded harmony (e/i/in/den) as the default — this matches the majority of common crypto symbols (ETH, BTC, USDC, USDT) diff --git a/.claude/skills/translate/locales/uk.md b/.claude/skills/translate/locales/uk.md new file mode 100644 index 00000000000..21be30850d9 --- /dev/null +++ b/.claude/skills/translate/locales/uk.md @@ -0,0 +1,17 @@ +# Ukrainian (uk) — Formal (ви) + +- Use formal "ви" address consistently +- Register violations beyond pronouns: imperative forms (ти-imperative "роби" vs ви-imperative "робіть"); possessives ("твій" is ти-form, use "ваш") +- WRONG: "Підключи свій гаманець" (ти-imperative) +- RIGHT: "Підключіть ваш гаманець" (ви-imperative + ви-possessive) +- "staking" = "стейкiнг" — same transliteration pattern as Russian but with Ukrainian orthography +- "restaking" = "рестейкiнг" — NEVER native calques +- "unstaking" = "зняти зi стейкiнгу" — NEVER meaningless calques like "ненаставлений" +- "claim" (DeFi) = "отримати" — NEVER "заклеймити" (= to brand/stigmatize, same catastrophic error as Russian) +- "seed phrase" = "сiд-фраза" — NEVER literal "фраза-насiння" (= phrase of seeds, meaningless) +- Verify morphological correctness — Ukrainian agglutination rules differ from Russian; incorrect suffixes produce meaningless words +- "liquidity pool" = "пул лiквiдностi" — standard transliteration matching Russian pattern +- "dust" (in crypto context, meaning tiny leftover amounts) must stay in English — do NOT translate as "пил" +- Preposition alternation before dynamic placeholders: Ukrainian alternates в/у and з/із/зі based on surrounding sounds, but %{placeholder} values are unknown at translation time. Two rules: + - Always use "у" (not "в") before %{placeholder} — "у" is the safer default before unknown values (e.g. "у %{opportunity}" not "в %{opportunity}") + - Always use "з" (not "із" or "зі") before %{placeholder} — reserve "зі" only for static text before known consonant clusters (e.g. "з %{opportunity}" not "із %{opportunity}") diff --git a/.claude/skills/translate/locales/zh.md b/.claude/skills/translate/locales/zh.md new file mode 100644 index 00000000000..38b9e76896c --- /dev/null +++ b/.claude/skills/translate/locales/zh.md @@ -0,0 +1,12 @@ +# Chinese — Simplified (zh) — Neutral/formal + +- Use crypto-community terms: 授权 not 批准 (approve), 回滚 not 恢复 (revert) +- Don't add words not in the English source +- "trade" = 交易 (broader); "swap" = 兑换 (token exchange) — do not use 兑换 for "trade" +- Always use full-width Chinese punctuation (。?!) not half-width (.?!) +- Use 您 (formal "you") in error/status messages, not 你 (informal) +- Beyond pronouns: prefer formal lexical choices — 请 (please, neutral) over casual omission; avoid colloquial particles (啦, 啊, 哦) in UI text +- "dust" stays English (glossary never-translate) — not 灰尘 (physical dust) or 小额资金 (small funds) +- "streaming swap" = 流式兑换 — not 流动兑换 (流动 means "flowing/liquid", 流式 means "streaming-style") +- "allowance" (token approval) = 授权额度 — not unrelated terms +- Reinforce: 授权 (authorize) for on-chain approve — skill has violated this existing rule, be strict diff --git a/.claude/skills/translate/scripts/diff.js b/.claude/skills/translate/scripts/diff.js new file mode 100644 index 00000000000..48c9072455c --- /dev/null +++ b/.claude/skills/translate/scripts/diff.js @@ -0,0 +1,33 @@ +const { execSync } = require('child_process'); +const fs = require('fs'); + +try { + const sha = fs.readFileSync('src/assets/translations/.last-translation-sha', 'utf8').trim(); + if (!/^[0-9a-f]{7,40}$/.test(sha)) { + throw new Error(`Invalid SHA format: "${sha}"`); + } + var oldContent = execSync(`git show "${sha}":src/assets/translations/en/main.json`, { encoding: 'utf8' }); +} catch (err) { + console.log(JSON.stringify({ error: err.message })); + process.exit(1); +} +const oldStrings = JSON.parse(oldContent); +const newStrings = JSON.parse(fs.readFileSync('src/assets/translations/en/main.json', 'utf8')); + +function findChanges(prev, curr, path) { + const results = []; + for (const key in curr) { + const currentPath = path ? path + '.' + key : key; + const currentValue = curr[key]; + const previousValue = prev?.[key]; + if (typeof currentValue === 'string' && previousValue !== currentValue) { + results.push({ path: currentPath, value: currentValue, status: previousValue ? 'modified' : 'new' }); + } else if (typeof currentValue === 'object' && currentValue !== null) { + results.push(...findChanges(previousValue || {}, currentValue, currentPath)); + } + } + return results; +} + +const changes = findChanges(oldStrings, newStrings); +console.log(JSON.stringify(changes, null, 2)); diff --git a/.claude/skills/translate/scripts/merge.js b/.claude/skills/translate/scripts/merge.js new file mode 100644 index 00000000000..3790d2b9528 --- /dev/null +++ b/.claude/skills/translate/scripts/merge.js @@ -0,0 +1,93 @@ +const fs = require('fs'); + +const ALLOWED_LOCALES = ['de', 'es', 'fr', 'ja', 'pt', 'ru', 'tr', 'uk', 'zh']; + +const enKeys = JSON.parse(fs.readFileSync('src/assets/translations/en/main.json', 'utf8')); +const locale = process.argv[2]; +if (!ALLOWED_LOCALES.includes(locale)) { + console.error(`Invalid locale "${locale}". Allowed: ${ALLOWED_LOCALES.join(', ')}`); + process.exit(1); +} +const translationsArg = process.argv[3]; + +if (!translationsArg) { + console.error('Usage: node merge.js [--force]'); + process.exit(1); +} + +let newTranslations; +if (fs.existsSync(translationsArg)) { + newTranslations = JSON.parse(fs.readFileSync(translationsArg, 'utf8')); +} else { + try { + newTranslations = JSON.parse(translationsArg); + } catch (e) { + console.error(`Invalid JSON argument: ${e.message}`); + process.exit(1); + } +} + +const localeFilePath = 'src/assets/translations/' + locale + '/main.json'; +const existing = JSON.parse(fs.readFileSync(localeFilePath, 'utf8')); + +// Pre-merge backup for rollback support +const backupPath = `/tmp/pre-merge-${locale}.json`; +fs.writeFileSync(backupPath, JSON.stringify(existing, null, 2) + '\n'); + +const forceOverwrite = process.argv.includes('--force'); + +function getByPath(obj, path) { + const parts = path.split('.'); + let current = obj; + for (const part of parts) { + if (current == null || typeof current !== 'object') return undefined; + current = current[part]; + } + return current; +} + +function setByPath(obj, path, value) { + const parts = path.split('.'); + let current = obj; + for (let i = 0; i < parts.length - 1; i++) { + if (!current[parts[i]] || typeof current[parts[i]] !== 'object') { + current[parts[i]] = {}; + } + current = current[parts[i]]; + } + current[parts[parts.length - 1]] = value; +} + +function orderLike(template, target) { + if (typeof template !== 'object' || template === null) return target; + const ordered = {}; + for (const key of Object.keys(template)) { + if (key in target) { + if (typeof template[key] === 'object' && template[key] !== null && typeof target[key] === 'object' && target[key] !== null) { + ordered[key] = orderLike(template[key], target[key]); + } else { + ordered[key] = target[key]; + } + } + } + for (const key of Object.keys(target)) { + if (!(key in ordered)) ordered[key] = target[key]; + } + return ordered; +} + +let added = 0; +let skipped = 0; +for (const [path, value] of Object.entries(newTranslations)) { + const existingValue = getByPath(existing, path); + if (existingValue !== undefined && !forceOverwrite) { + skipped++; + continue; + } + setByPath(existing, path, value); + added++; +} + +const ordered = orderLike(enKeys, existing); +fs.writeFileSync(localeFilePath, JSON.stringify(ordered, null, 2) + '\n'); +console.log('Merged ' + added + ' new translations into ' + locale + ' (' + skipped + ' existing skipped, backup: ' + backupPath + ')'); diff --git a/.claude/skills/translate/scripts/missing-keys.js b/.claude/skills/translate/scripts/missing-keys.js new file mode 100644 index 00000000000..2425c02f266 --- /dev/null +++ b/.claude/skills/translate/scripts/missing-keys.js @@ -0,0 +1,30 @@ +const fs = require('fs'); +const en = JSON.parse(fs.readFileSync('src/assets/translations/en/main.json', 'utf8')); + +function findMissing(source, target, path) { + const results = []; + for (const key in source) { + const currentPath = path ? path + '.' + key : key; + if (typeof source[key] === 'string') { + if (target?.[key] === undefined) { + results.push({ path: currentPath, value: source[key], status: 'new' }); + } + } else if (typeof source[key] === 'object' && source[key] !== null) { + results.push(...findMissing(source[key], target?.[key] || {}, currentPath)); + } + } + return results; +} + +const locales = ['de','es','fr','ja','pt','ru','tr','uk','zh']; +const result = {}; +for (const locale of locales) { + try { + const target = JSON.parse(fs.readFileSync('src/assets/translations/' + locale + '/main.json', 'utf8')); + const missing = findMissing(en, target); + if (missing.length > 0) result[locale] = missing; + } catch (e) { + result[locale] = [{ error: e.message }]; + } +} +console.log(JSON.stringify(result, null, 2)); diff --git a/.claude/skills/translate/scripts/prepare-locale.js b/.claude/skills/translate/scripts/prepare-locale.js new file mode 100644 index 00000000000..af007d207aa --- /dev/null +++ b/.claude/skills/translate/scripts/prepare-locale.js @@ -0,0 +1,121 @@ +const fs = require('fs'); + +const LOCALE_META = { + de: { language: 'German', register: 'Formal (Sie)' }, + es: { language: 'Spanish', register: 'Informal (tú)' }, + fr: { language: 'French', register: 'Formal (vous)' }, + ja: { language: 'Japanese', register: 'Polite (です/ます)' }, + pt: { language: 'Portuguese (BR)', register: 'Informal (você)' }, + ru: { language: 'Russian', register: 'Formal (вы)' }, + tr: { language: 'Turkish', register: 'Formal (siz)' }, + uk: { language: 'Ukrainian', register: 'Formal (ви)' }, + zh: { language: 'Chinese (Simplified)', register: 'Neutral/formal' }, +}; + +const locale = process.argv[2]; + +if (!locale || !LOCALE_META[locale]) { + console.error('Usage: node prepare-locale.js --batches= [--term-context=] [--few-shot=] [--output=]'); + console.error('Supported locales: ' + Object.keys(LOCALE_META).join(', ')); + process.exit(1); +} + +let batchesPath; +let termContextPath; +let fewShotPath; +let outputPath = `/tmp/translate-${locale}.json`; + +for (const arg of process.argv.slice(3)) { + if (arg.startsWith('--batches=')) batchesPath = arg.slice('--batches='.length); + if (arg.startsWith('--term-context=')) termContextPath = arg.slice('--term-context='.length); + if (arg.startsWith('--few-shot=')) fewShotPath = arg.slice('--few-shot='.length); + if (arg.startsWith('--output=')) outputPath = arg.slice('--output='.length); +} + +if (!batchesPath) { + console.error('Error: --batches= is required'); + process.exit(1); +} + +const meta = LOCALE_META[locale]; + +const localeRulesPath = `${__dirname}/../locales/${locale}.md`; +const localeRules = fs.existsSync(localeRulesPath) + ? fs.readFileSync(localeRulesPath, 'utf8').trim() + : ''; + +const glossaryPath = 'src/assets/translations/glossary.json'; +if (!fs.existsSync(glossaryPath)) { + console.error('Error: glossary file not found at ' + glossaryPath); + process.exit(1); +} +const glossary = JSON.parse(fs.readFileSync(glossaryPath, 'utf8')); + +const neverTranslate = Object.entries(glossary) + .filter(([key, value]) => key !== '_meta' && value === null) + .map(([key]) => key); + +const approvedTerms = {}; +for (const [term, value] of Object.entries(glossary)) { + if (term === '_meta') continue; + if (typeof value === 'object' && value !== null && value[locale]) { + approvedTerms[term] = Array.isArray(value[locale]) ? value[locale][0] : value[locale]; + } +} + +const batches = JSON.parse(fs.readFileSync(batchesPath, 'utf8')); + +let termContext = {}; +if (termContextPath && fs.existsSync(termContextPath)) { + termContext = JSON.parse(fs.readFileSync(termContextPath, 'utf8')); +} + +let fewShot = {}; +if (fewShotPath && fs.existsSync(fewShotPath)) { + fewShot = JSON.parse(fs.readFileSync(fewShotPath, 'utf8')); +} + +const batchArray = Array.isArray(batches) ? batches : [batches]; +const tagKeys = batchArray.flatMap(batch => Object.keys(batch).filter(k => k.includes('.tags.'))); + +function filterGlossaryForBatch(batch) { + const batchText = Object.values(batch).join(' ').toLowerCase(); + + const relevantNeverTranslate = neverTranslate.filter(term => + batchText.includes(term.toLowerCase()) + ); + + const relevantApprovedTerms = {}; + for (const [term, canonical] of Object.entries(approvedTerms)) { + if (batchText.includes(term.toLowerCase())) { + relevantApprovedTerms[term] = canonical; + } + } + + return { relevantNeverTranslate, relevantApprovedTerms }; +} + +const batchesWithGlossary = batchArray.map(batch => { + const { relevantNeverTranslate, relevantApprovedTerms } = filterGlossaryForBatch(batch); + return { + strings: batch, + relevantNeverTranslate, + relevantApprovedTerms, + }; +}); + +const bundle = { + locale, + language: meta.language, + register: meta.register, + localeRules, + neverTranslate, + approvedTerms, + termContext, + fewShot, + tagKeys, + batches: batchesWithGlossary, +}; + +fs.writeFileSync(outputPath, JSON.stringify(bundle, null, 2) + '\n'); +console.log(`Wrote locale bundle to ${outputPath}`); diff --git a/.claude/skills/translate/scripts/script-utils.js b/.claude/skills/translate/scripts/script-utils.js new file mode 100644 index 00000000000..126142e4592 --- /dev/null +++ b/.claude/skills/translate/scripts/script-utils.js @@ -0,0 +1,130 @@ +const fs = require('fs'); + +const CJK_LOCALES = new Set(['ja', 'zh']); + +function extractPlaceholders(str) { + return [...str.matchAll(/%\{(\w+)\}/g)].map(m => m[1]); +} + +const LOCALE_CONFIGS = { + de: { + stemRatio: 0.75, + suffixes: [ + 'ungen', 'keit', 'lich', 'isch', 'ung', 'ten', 'tet', 'en', 'er', 'es', 'em', 'te', 'st', 'e', + ], + }, + es: { + stemRatio: 0.65, + suffixes: [ + 'iendo', 'ando', 'ción', 'ado', 'ido', 'mos', 'ar', 'er', 'ir', 'an', 'en', 'as', 'es', 'os', + ], + }, + fr: { + stemRatio: 0.65, + suffixes: [ + 'tion', 'ment', 'ons', 'ant', 'ent', 'ais', 'ait', 'eur', 'ée', 'és', 'ez', 'er', 'ir', 're', + ], + }, + pt: { + stemRatio: 0.65, + suffixes: [ + 'mente', 'ando', 'ção', 'ado', 'ido', 'mos', 'ar', 'er', 'ir', 'am', 'em', 'as', 'es', + ], + }, + ru: { + stemRatio: 0.55, + suffixes: [ + 'ения', 'ение', 'ами', 'ать', 'ять', 'ишь', 'ала', 'али', 'ите', 'ют', 'ут', 'ят', 'ть', 'ти', + 'ит', 'ов', 'ам', 'ах', 'ом', 'ой', 'ен', 'на', 'ы', 'а', 'у', 'е', 'и', + ], + }, + tr: { + stemRatio: 0.60, + suffixes: [ + 'sınız', 'siniz', 'abilir', 'ebilir', 'ıyor', 'iyor', 'mak', 'mek', 'lar', 'ler', 'lık', 'lik', + 'ın', 'in', 'da', 'de', 'ta', 'te', 'dı', 'di', 'ı', 'i', 'u', 'ü', + ], + }, + uk: { + stemRatio: 0.55, + suffixes: [ + 'ення', 'ання', 'ами', 'ати', 'яти', 'іть', 'ає', 'ює', 'ала', 'али', 'іте', 'айте', + 'ть', 'ти', 'ав', 'ів', 'ам', 'ах', 'ом', 'ою', 'а', 'у', 'і', 'и', + ], + }, +}; + +function stripSuffix(word, suffixes) { + for (const suffix of suffixes) { + if (word.endsWith(suffix)) { + const root = word.slice(0, -suffix.length); + if (root.length >= 3) return root; + } + } + return null; +} + +function stemMatch(target, approved, locale) { + const config = LOCALE_CONFIGS[locale]; + + if (!config) { + const forms = Array.isArray(approved) ? approved : [approved]; + return forms.some(form => target.toLowerCase().includes(form.toLowerCase())); + } + + const targetLower = target.toLowerCase(); + const forms = Array.isArray(approved) ? approved : [approved]; + + return forms.some(form => { + const words = form.split(/\s+/); + return words.every(word => { + const wordLower = word.toLowerCase(); + + // Tier 1: Exact substring + if (targetLower.includes(wordLower)) return true; + + // Tier 2: Stem prefix + const minLen = Math.max(3, Math.ceil(wordLower.length * config.stemRatio)); + const stem = wordLower.slice(0, minLen); + if (targetLower.includes(stem)) return true; + + // Tier 3: Suffix-stripped root + const root = stripSuffix(wordLower, config.suffixes); + if (root && targetLower.includes(root)) return true; + + return false; + }); + }); +} + +function loadGlossary(glossaryPath) { + if (!fs.existsSync(glossaryPath)) return {}; + return JSON.parse(fs.readFileSync(glossaryPath, 'utf8')); +} + +function glossaryTerms(glossary) { + return Object.keys(glossary).filter(k => k !== '_meta'); +} + +function flattenJson(obj, prefix) { + const result = {}; + for (const [key, value] of Object.entries(obj)) { + const path = prefix ? `${prefix}.${key}` : key; + if (typeof value === 'string') { + result[path] = value; + } else if (typeof value === 'object' && value !== null) { + Object.assign(result, flattenJson(value, path)); + } + } + return result; +} + +module.exports = { + CJK_LOCALES, + LOCALE_CONFIGS, + extractPlaceholders, + stemMatch, + loadGlossary, + glossaryTerms, + flattenJson, +}; diff --git a/.claude/skills/translate/scripts/term-context.js b/.claude/skills/translate/scripts/term-context.js new file mode 100644 index 00000000000..e644be9a6a4 --- /dev/null +++ b/.claude/skills/translate/scripts/term-context.js @@ -0,0 +1,127 @@ +const fs = require('fs'); + +const locale = process.argv[2]; +const newStringsArg = process.argv[3]; + +if (!locale || !newStringsArg) { + console.error('Usage: node term-context.js '); + process.exit(1); +} + +let newStrings; +if (fs.existsSync(newStringsArg)) { + newStrings = JSON.parse(fs.readFileSync(newStringsArg, 'utf8')); +} else { + newStrings = JSON.parse(newStringsArg); +} + +// Normalize input: accept both [{ path, value }] array and { path: value } object +const newEntries = Array.isArray(newStrings) + ? newStrings.map(s => ({ path: s.path, value: s.value })) + : Object.entries(newStrings).map(([path, value]) => ({ path, value })); + +const glossary = JSON.parse(fs.readFileSync('src/assets/translations/glossary.json', 'utf8')); +const glossaryTermsLower = new Set( + Object.keys(glossary).filter(k => k !== '_meta').map(t => t.toLowerCase()) +); + +const en = JSON.parse(fs.readFileSync('src/assets/translations/en/main.json', 'utf8')); +const localeFile = `src/assets/translations/${locale}/main.json`; +if (!fs.existsSync(localeFile)) { + console.error(`Locale file not found: ${localeFile}`); + process.exit(1); +} +const localeData = JSON.parse(fs.readFileSync(localeFile, 'utf8')); + +function flatten(obj, prefix) { + const result = {}; + for (const [key, value] of Object.entries(obj)) { + const path = prefix ? `${prefix}.${key}` : key; + if (typeof value === 'string') { + result[path] = value; + } else if (typeof value === 'object' && value !== null) { + Object.assign(result, flatten(value, path)); + } + } + return result; +} + +const flatEn = flatten(en, ''); +const flatLocale = flatten(localeData, ''); + +const stopWords = new Set([ + 'the','a','an','is','are','was','were','be','been','being','have','has','had', + 'do','does','did','will','would','could','should','may','might','shall','can', + 'need','must','to','of','in','for','on','with','at','by','from','as','into', + 'through','during','before','after','above','below','between','out','off','over', + 'under','again','further','then','once','here','there','when','where','why','how', + 'all','both','each','few','more','most','other','some','such','no','not','only', + 'own','same','so','than','too','very','just','because','but','and','or','if', + 'while','about','up','it','its','this','that','these','those','my','your','his', + 'her','our','their','what','which','who','whom','we','you','they','me','him', + 'us','them','any','every','much','many','also','still','already','even','now', + 'get','got','make','made','let','set','put','take','come','go','see','know', + 'want','use','find','give','tell','say','try','keep','show','turn','move','run', + 'work','call','ask','look','new','old','big','small','long','short','high','low', + 'good','bad','great','little','right','left','first','last','next','back','well', + 'way','day','time','year','thing','per','been','please','don','doesn','didn', + 'won','isn','aren','wasn','weren','hasn','haven','hadn','couldn','shouldn', + 'wouldn','can','able','unable' +]); + +const newStringPaths = new Set(newEntries.map(s => s.path)); + +// Extract significant terms from the new English strings +const termSet = new Set(); +for (const { value } of newEntries) { + const cleaned = value.toLowerCase().replace(/%\{\w+\}/g, '').replace(/[^a-z\s-]/g, ' '); + const words = cleaned.split(/\s+/).filter(w => w.length >= 3); + + for (const word of words) { + if (!stopWords.has(word) && !glossaryTermsLower.has(word)) { + termSet.add(word); + } + } + + // Also extract 2-word phrases (catches compound terms like "liquidity pool", "gas fee") + for (let i = 0; i < words.length - 1; i++) { + if (!stopWords.has(words[i]) && !stopWords.has(words[i + 1]) + && !glossaryTermsLower.has(`${words[i]} ${words[i + 1]}`)) { + termSet.add(`${words[i]} ${words[i + 1]}`); + } + } +} + +// For each term, find existing translated strings that contain it in the English source +const MAX_MATCHES_PER_TERM = 3; +const termContext = {}; + +for (const term of termSet) { + const escapedTerm = term.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + const regex = new RegExp(`\\b${escapedTerm}\\b`, 'i'); + const matches = []; + + for (const [path, enValue] of Object.entries(flatEn)) { + if (newStringPaths.has(path)) continue; + if (!flatLocale[path]) continue; + if (!regex.test(enValue)) continue; + + matches.push({ key: path, en: enValue, [locale]: flatLocale[path] }); + if (matches.length >= MAX_MATCHES_PER_TERM) break; + } + + if (matches.length > 0) { + termContext[term] = matches; + } +} + +// Sort: phrases first (they're more specific/useful), then cap total +const sorted = Object.entries(termContext) + .sort(([a], [b]) => { + const aIsPhrase = a.includes(' ') ? 0 : 1; + const bIsPhrase = b.includes(' ') ? 0 : 1; + return aIsPhrase - bIsPhrase; + }) + .slice(0, 30); + +console.log(JSON.stringify(Object.fromEntries(sorted), null, 2)); diff --git a/.claude/skills/translate/scripts/validate-file.js b/.claude/skills/translate/scripts/validate-file.js new file mode 100644 index 00000000000..16c3a37fdb4 --- /dev/null +++ b/.claude/skills/translate/scripts/validate-file.js @@ -0,0 +1,82 @@ +const fs = require('fs'); +const { + flattenJson, +} = require('./script-utils'); + +const locale = process.argv[2]; + +if (!locale) { + console.error('Usage: node validate-file.js [--pre-merge=]'); + process.exit(1); +} + +let preMergePath; + +for (const arg of process.argv.slice(3)) { + if (arg.startsWith('--pre-merge=')) preMergePath = arg.slice('--pre-merge='.length); +} + +const errors = []; +const warnings = []; + +// Check 1: JSON validity — read and parse the locale file +const localeFilePath = `src/assets/translations/${locale}/main.json`; +let localeData; +try { + const raw = fs.readFileSync(localeFilePath, 'utf8'); + localeData = JSON.parse(raw); +} catch (e) { + errors.push(`JSON parse error: ${e.message}`); + console.log(JSON.stringify({ valid: false, errors, warnings })); + process.exit(0); +} + +// Flatten for inspection +const flatLocale = flattenJson(localeData, ''); + +// Check 2: Key completeness — every English key should exist in locale +let enData; +try { + enData = JSON.parse(fs.readFileSync('src/assets/translations/en/main.json', 'utf8')); +} catch (e) { + errors.push(`Cannot read English file: ${e.message}`); + console.log(JSON.stringify({ valid: false, errors, warnings })); + process.exit(0); +} + +const flatEn = flattenJson(enData, ''); +const missingKeys = []; +for (const key of Object.keys(flatEn)) { + if (!(key in flatLocale)) { + missingKeys.push(key); + } +} +if (missingKeys.length > 0) { + warnings.push(`${missingKeys.length} English keys missing from ${locale} (expected for incremental translation)`); +} + +// Check 3: No regression — if pre-merge backup provided, check no keys were deleted or corrupted +if (preMergePath && fs.existsSync(preMergePath)) { + let preMergeData; + try { + preMergeData = JSON.parse(fs.readFileSync(preMergePath, 'utf8')); + } catch (e) { + warnings.push(`Could not parse pre-merge backup: ${e.message}`); + } + + if (preMergeData) { + const flatPreMerge = flattenJson(preMergeData, ''); + const deletedKeys = []; + for (const key of Object.keys(flatPreMerge)) { + if (!(key in flatLocale)) { + deletedKeys.push(key); + } + } + if (deletedKeys.length > 0) { + errors.push(`${deletedKeys.length} existing keys were deleted during merge: ${deletedKeys.slice(0, 5).join(', ')}${deletedKeys.length > 5 ? '...' : ''}`); + } + } +} + +const valid = errors.length === 0; +console.log(JSON.stringify({ valid, errors, warnings }, null, 2)); diff --git a/.claude/skills/translate/scripts/validate.js b/.claude/skills/translate/scripts/validate.js new file mode 100644 index 00000000000..dfddc90ac68 --- /dev/null +++ b/.claude/skills/translate/scripts/validate.js @@ -0,0 +1,155 @@ +const fs = require('fs'); +const { + CJK_LOCALES, + LOCALE_CONFIGS, + extractPlaceholders, + stemMatch, + loadGlossary, +} = require('./script-utils'); + +const locale = process.argv[2]; +const sourceArg = process.argv[3]; +const targetArg = process.argv[4]; + +if (!locale || !sourceArg || !targetArg) { + console.error('Usage: node validate.js [--term-context=] [--glossary=]'); + process.exit(1); +} + +function loadJsonArg(arg) { + if (fs.existsSync(arg)) return JSON.parse(fs.readFileSync(arg, 'utf8')); + return JSON.parse(arg); +} + +const source = loadJsonArg(sourceArg); +const target = loadJsonArg(targetArg); + +let termContextPath; +let glossaryPath = 'src/assets/translations/glossary.json'; + +for (const arg of process.argv.slice(5)) { + if (arg.startsWith('--term-context=')) termContextPath = arg.slice('--term-context='.length); + if (arg.startsWith('--glossary=')) glossaryPath = arg.slice('--glossary='.length); +} + +const glossary = loadGlossary(glossaryPath); + +let termContext = {}; +if (termContextPath && fs.existsSync(termContextPath)) { + termContext = JSON.parse(fs.readFileSync(termContextPath, 'utf8')); +} + +const rejected = []; +const flagged = []; +const passed = []; + +// Check 0: Key set validation +const sourceKeys = new Set(Object.keys(source)); +const targetKeys = new Set(Object.keys(target)); + +for (const key of targetKeys) { + if (!sourceKeys.has(key)) { + rejected.push({ path: key, reason: 'unexpected key', details: 'Key not in input batch — translator may have hallucinated a different key path' }); + } +} +for (const key of sourceKeys) { + if (!targetKeys.has(key)) { + rejected.push({ path: key, reason: 'missing key', details: 'Key was in input batch but missing from translator output' }); + } +} + +const rejectedPaths = new Set(rejected.map(r => r.path)); + +for (const path of Object.keys(source)) { + if (rejectedPaths.has(path)) continue; + + const src = source[path]; + const tgt = target[path]; + + // Check 3: Empty/whitespace + if (tgt === undefined || tgt === null || (typeof tgt === 'string' && tgt.trim() === '')) { + rejected.push({ path, reason: 'empty', details: 'Translated value is empty or whitespace-only' }); + continue; + } + + // Check 1: Placeholder integrity + const srcPlaceholders = extractPlaceholders(src); + const tgtPlaceholders = extractPlaceholders(tgt); + const srcSet = [...srcPlaceholders].sort().join(','); + const tgtSet = [...tgtPlaceholders].sort().join(','); + + if (srcSet !== tgtSet) { + rejected.push({ path, reason: 'placeholder mismatch', details: `Source: {${srcSet}} Target: {${tgtSet}}` }); + continue; + } + + let isFlagged = false; + const flags = []; + + // Check 1b: Placeholder order + if (srcPlaceholders.join(',') !== tgtPlaceholders.join(',') && srcSet === tgtSet) { + flags.push({ path, reason: 'placeholder reorder', details: `Source order: ${srcPlaceholders.join(',')} Target order: ${tgtPlaceholders.join(',')}` }); + isFlagged = true; + } + + // Check 2: Length ratio + const ratio = tgt.length / src.length; + const maxRatio = CJK_LOCALES.has(locale) ? 4.0 : 3.0; + const minRatio = CJK_LOCALES.has(locale) ? 0.15 : 0.25; + if (ratio > maxRatio || ratio < minRatio) { + flags.push({ path, reason: 'length ratio', details: `Ratio: ${ratio.toFixed(2)} (threshold: ${minRatio}-${maxRatio})` }); + isFlagged = true; + } + + // Check 4: Untranslated detection + const wordCount = src.split(/\s+/).length; + if (tgt === src && wordCount > 3) { + flags.push({ path, reason: 'untranslated', details: `Target identical to source (${wordCount} words)` }); + isFlagged = true; + } + + // Check 5: Glossary compliance + for (const [term, value] of Object.entries(glossary)) { + if (term === '_meta') continue; + const termRegex = new RegExp('\\b' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + '\\b', 'gi'); + + if (value === null) { + if (termRegex.test(src) && !new RegExp('\\b' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + '\\b', 'i').test(tgt)) { + flags.push({ path, reason: 'glossary never-translate', details: `"${term}" should stay in English` }); + isFlagged = true; + } + } else if (typeof value === 'object' && value[locale]) { + if (termRegex.test(src) && !stemMatch(tgt, value[locale], locale)) { + const display = Array.isArray(value[locale]) ? value[locale][0] : value[locale]; + const isInflected = !!LOCALE_CONFIGS[locale]; + flags.push({ path, reason: 'glossary approved translation', severity: isInflected ? 'info' : 'error', details: `"${term}" should be "${display}" in ${locale}` }); + if (!isInflected) isFlagged = true; + } + } + } + + // Check 6: Term consistency + for (const [term, matches] of Object.entries(termContext)) { + if (!matches || matches.length === 0) continue; + const translations = matches.map(m => m[locale]).filter(Boolean); + if (translations.length === 0) continue; + + const unique = [...new Set(translations)]; + if (unique.length !== 1) continue; + + const established = unique[0]; + const termRegex = new RegExp(term.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'i'); + if (termRegex.test(src) && !tgt.includes(established)) { + flags.push({ path, reason: 'term consistency', details: `"${term}" is typically "${established}" but not found in translation` }); + isFlagged = true; + } + } + + if (isFlagged) { + flagged.push(...flags); + } else { + passed.push(path); + } +} + +console.log(JSON.stringify({ rejected, flagged, passed }, null, 2)); diff --git a/.gitattributes b/.gitattributes index 937c0eb3795..26e4a840bc0 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,5 @@ /.yarn/releases/** binary /.yarn/plugins/** binary + +# Use bd merge for beads JSONL files +.beads/issues.jsonl merge=beads diff --git a/.gitignore b/.gitignore index 3575f2e1649..7b1cdfa1a00 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,6 @@ yarn-error.log* .idea/ .playwright-mcp/ .sisyphus/ + +# translation benchmark data +scripts/translations/benchmark/ diff --git a/src/assets/translations/.last-translation-sha b/src/assets/translations/.last-translation-sha new file mode 100644 index 00000000000..98bd1e21846 --- /dev/null +++ b/src/assets/translations/.last-translation-sha @@ -0,0 +1 @@ +71dbb57f5a5e53e9ce777ae0f9f064a0b71fd98f diff --git a/src/assets/translations/de/main.json b/src/assets/translations/de/main.json index d389ec468bb..d61181c69ff 100644 --- a/src/assets/translations/de/main.json +++ b/src/assets/translations/de/main.json @@ -9,7 +9,7 @@ "trade": "Handelsumsatz", "back": "Zurück", "and": "und", - "balance": "Kontostand", + "balance": "Guthaben", "next": "Weiter", "edit": "Bearbeiten", "error": "Fehler", @@ -27,7 +27,7 @@ "continue": "Fortsetzen", "approve": "Genehmigen", "approveToken": "Token Genehmigen", - "approveAmount": "Betrag Genehmigen", + "approveAmount": "Betrag genehmigen", "approveTo": "Genehmigen Für", "reset": "Zurücksetzen", "confirm": "Bestätigen", @@ -37,7 +37,7 @@ "goBack": "Geh zurück", "fiat": "Fiat", "connected": "Verbunden", - "trendingTokens": "Token im Trend", + "trendingTokens": "Beliebte Tokens", "created": "Erstellt %{date}", "noResultsFound": "Keine Ergebnisse gefunden.", "noResultsBody": "Keine Ergebnisse für %{searchQuery}. Versuchen Sie neue Suche.", @@ -52,16 +52,16 @@ "withdraw": "Abheben", "withdrawal": "Abhebung", "claim": "Beanspruchen", - "claiming": "Beanspruchen...", + "claiming": "Einfordern...", "confirming": "Bestätigen...", "withdrawAndClaim": "Abheben & Beanspruchen", "overview": "Übersicht", - "connectWallet": "Verbinde Wallet", + "connectWallet": "Wallet verbinden", "pairing": "Koppeln", "connectWalletToGetStartedWith": "Verbinden Sie eine Wallet, um mit %{feature} zu beginnen", "connectedWallet": "Verbundene Wallet", "crypto": "Krypto", - "walletActions": "Wallet Aktionen", + "walletActions": "Wallet-Aktionen", "connectedWalletSettings": "Wallet Einstellungen", "noWallet": "Keine Wallet verbunden", "darkTheme": "Dunkle Farben", @@ -82,7 +82,7 @@ "happySuccess": "Erfolg!", "transactionFailed": "Transaktion fehlgeschlagen", "transactionFailedBody": "Transaktion fehlgeschlagen", - "safeProposalQueued": "SAFE-Vorschlag in der Warteschlange. %{currentConfirmations} von %{confirmationsRequired} unterzeichnet.", + "safeProposalQueued": "SAFE-Vorschlag in der Warteschlange. %{currentConfirmations} von %{confirmationsRequired} signiert.", "submitFeedback": "Feedback senden", "send": "Senden", "receive": "Empfangen ", @@ -120,7 +120,7 @@ "sepa": "SEPA", "buySell": "Kaufen/Verkaufen", "all": "Alle", - "seeMore": "Zeige mehr", + "seeMore": "Mehr anzeigen", "slippage": "Marktabweichung", "feesPlusSlippage": "Gebühren + Marktabweichung", "gasFee": "Gasgebühr", @@ -137,7 +137,7 @@ "needAsset": "Brauchen Sie %{asset}?", "buyNow": "Kaufe jetzt", "manage": "Verwalten", - "view": "Ansicht", + "view": "Anzeigen", "viewOnly": "Nur Ansicht", "allChains": "All Blockchains", "wallet": "Wallet", @@ -157,11 +157,11 @@ "chainHalted": "Blockchain angehalten", "poolDisabled": "Pool deaktiviert", "symmetric": "Symmetrische", - "asymmetric": "Asymmetrische (%{assetSymbol})", + "asymmetric": "Asymmetrisch (%{assetSymbol})", "import": "Importieren", "accountsLoading": "Lade Konten", "noAccounts": "Keine Konten für die ausgewählten Filter.", - "sortBy": "Kategorisiert nach", + "sortBy": "Sortieren nach", "orderBy": "Geordnet nach", "filterBy": "Gefiltert nach", "filterAndSort": "Filtern und Sortieren", @@ -193,7 +193,7 @@ "boost": "Boost", "viewOnExplorer": "Im Explorer anzeigen", "approval": "Genehmigung", - "permit2Approval": "Permit2 Genehmigung", + "permit2Approval": "Permit2-Genehmigung", "network": "Netzwerk", "feeEstimate": "Voraussichtliche Gebühren", "list": "Liste" @@ -207,7 +207,7 @@ "openChat": "Chat öffnen", "closeChat": "Chat schließen", "emptyState": "Wie kann ich Ihnen heute helfen?", - "placeholder": "Geben Sie eine Nachricht ein...", + "placeholder": "Nachricht eingeben...", "stop": "Anhalten", "send": "Senden", "txStepProgress": "%{completedCount} von %{totalCount} abgeschlossen", @@ -217,7 +217,7 @@ "receivedFrom": "Empfangen von %{address}", "steps": { "preparation": "Transaktion wird vorbereitet", - "send": "Transaktion unterschreiben und absenden" + "send": "Transaktion signieren und senden" }, "errors": { "prepareFailed": "Fehler beim Vorbereiten der Transaktion", @@ -345,15 +345,15 @@ "marketCapRank": "Rangliste der Marktkapitalisierung", "volume24h": "24h Volumen", "volMcap": "Vol/Marktkap.", - "about": "Über", + "about": "Über %{symbol}", "noDescription": "Für diese Wertanlage ist keine Beschreibung verfügbar." }, "receive": { "title": "Erhalten", - "receiveOn": "Empfange %{symbol} auf %{network}", + "receiveOn": "%{symbol} auf %{network} empfangen", "copyAddress": "Kopiere Adresse", "copied": "Kopiert!", - "warning": "Senden Sie an diese Adresse nur %{network} kompatible Token." + "warning": "Nur %{network}-kompatible Token an diese Adresse senden" }, "getLimitOrders": { "title": "Limit Auftrag", @@ -413,7 +413,7 @@ "error": { "insufficientFunds": "Schnellkauf von %{amount} fehlgeschlagen, nicht genügend Guthaben, versuchen Sie es mit einem kleineren Betrag?", "noQuote": "Der Schnellkauf von %{amount} ist fehlgeschlagen, es konnte kein gültiges Angebot abgerufen werden.", - "failed": "Schnellkauf von %{amount} fehlgeschlagen." + "failed": "Schnellkauf von %{amount} ist fehlgeschlagen." } }, "consentBanner": { @@ -453,12 +453,12 @@ } }, "rampPage": { - "buyTitle": "Kaufen Sie Krypto in Sekunden", - "sellTitle": "Verkaufen Sie Kryptowährungen in Sekunden", - "buyBody": "Verwenden Sie eine Kreditkarte, Debitkarte oder ein Bankkonto. Kaufen Sie Bitcoin, Ethereum, USDT, USDC oder andere Top-Kryptowährungen. Anbieter ohne KYC verfügbar.", + "buyTitle": "Krypto kaufen in Sekunden", + "sellTitle": "Krypto verkaufen in Sekunden", + "buyBody": "Verwenden Sie eine Kredit-, Debitkarte oder ein Bankkonto. Kaufen Sie Bitcoin, Ethereum, USDT, USDC oder andere führende Kryptowährungen. Nicht-KYC-Anbieter verfügbar.", "sellBody": "Verwenden Sie eine Kreditkarte, Debitkarte oder ein Bankkonto. Verkaufen Sie Bitcoin, Ethereum, USDT, USDC oder andere Top-Kryptowährungen. Anbieter ohne KYC verfügbar.", "disclaimer": "*Sie können Kryptowährungen auch direkt gegen Bargeld auf Ihr Bankkonto verkaufen.", - "ctaTitle": "Sie können ShapeShift auch mit allen Top Wallets verwenden, um zu handeln, Erträge zu erzielen und Ihre Kryptowährung über %{chainCount} Ketten hinweg zu verfolgen", + "ctaTitle": "Sie können ShapeShift auch mit allen Top-Wallets nutzen, um zu handeln, Rendite zu erzielen und Ihre Krypto über %{chainCount} Chains zu verfolgen", "availableAssets": "Verfügbare Assets" }, "updateToast": { @@ -467,7 +467,7 @@ "keepKey": { "title": "KeepKey Aktualisierung \n verfügbar", "newUpdateAvailable": "Eine neue KeepKey Aktualisierung ist verfügbar.", - "downloadCta": "Aktualisierung herunterladen", + "downloadCta": "Update herunterladen", "updateRequiredForFeature": "Dieses Update ist erforderlich, um %{feature} zu unterstützen" } }, @@ -498,7 +498,7 @@ }, "fiatRamps": { "title": "Krypto kaufen oder verkaufen", - "titleMessage": "Sie können %{action} %{asset} verwenden, für:", + "titleMessage": "Sie können %{action} %{asset} mit:", "banxa": "Banxa", "mtPelerin": "Mt Pelerin", "onRamper": "OnRamper", @@ -534,11 +534,11 @@ "createOrImport": "Wallet erstellen oder importieren", "viewSavedWallets": "Gespeicherte Wallets anzeigen", "footerOne": "Fortfahren, gilt als Zustimmung zu den ", - "terms": "Bedingungen", + "terms": "AGB", "privacyPolicy": "Datenschutzrichtlinie", "connectNewWallet": "Neue Wallet verbinden", "getANewWallet": "Hol dir eine neue Wallet", - "alreadyHaveWallet": "Ich besitze bereits eine Wallet" + "alreadyHaveWallet": "Ich habe bereits eine Wallet" }, "connectWallet": { "menu": { @@ -563,10 +563,10 @@ "risks": "Gibt es Risiken?" }, "bodies": { - "rateFluctuationInfo": "Der Betrag von %{assetName}, den Sie verdienen, die jährliche prozentuale Rendite (APR), schwankt normalerweise zwischen 7 % und 20 %.", + "rateFluctuationInfo": "Die Rendite von %{assetName}, der jährliche Prozentsatz (APR), schwankt typischerweise zwischen 7% und 20%.", "amountStakingInfo": "Sie können einen beliebigen Betrag von %{assetName} einsetzen und erhalten sofort Belohnungen.", "withdrawInfo": "Sie können Ihre Belohnungen jederzeit abheben, wofür eine geringe Transfergebühr von ca. 0,01 $ anfällt.", - "unbondingInfo": "Wenn Sie Ihre Token aus Staking entfernen, bleiben sie für %{unbondingDays} Tage gesperrt, während dieser Zeit erhalten sie keine Belohnungen. Nach %{unbondingDays} Tagen wird Ihr %{assetName} zu Ihrem primären Wallet übertragen.", + "unbondingInfo": "Wenn Sie Ihr Staking beenden, bleiben Ihre Token %{unbondingDays} Tage lang gesperrt und verdienen in dieser Zeit keine Belohnungen. Nach den %{unbondingDays} Tagen kehrt Ihr %{assetName} in Ihre primäre Wallet zurück.", "slashingInfo": "Das Staking erfolgt über einen Validator. Es ist sehr selten, aber wenn der Validator, mit dem Sie gestaket haben, durcheinander kommt, indem er falsche oder nicht korrekte Transaktionen zulässt, könnten Sie einen Teil Ihres Vermögens verlieren.", "partnerInfo": "Wir haben dieses Risiko verringert, indem wir mit einem seriösen Prüfer zusammenarbeiten, der über eine sichere, zuverlässige und geprüfte Infrastruktur verfügt." } @@ -586,7 +586,7 @@ "header": "Zahlen Sie ETH-FOX LP Tokens bei %{opportunity} ein, um zu verdienen", "body": "Genehmigen und Staken Sie Ihre Liquiditätstoken, um Ihre FOX Bonusprämien zu erhalten.", "rewards": "Die Belohnungen, die Sie verdienen, fallen automatisch an.", - "cta": "Zahlen Sie jetzt ETH-FOX LP Token ein" + "cta": "ETH-FOX LP Tokens jetzt einzahlen" }, "overview": { "underlyingTokens": "Zugrunde liegende Token", @@ -602,9 +602,9 @@ "claimYour": "Fordern Sie Ihre %{opportunity} an" }, "saversVaults": { - "description": "Verdienen Sie Rendite auf Ihr %{asset} durch die THORChain Savers Vaults. Es gibt keine Sperrzeit und Belohnungen werden automatisch angesammelt. Die Rendite auf THORChain ergibt sich aus Swap-Gebühren und Blockbelohnungen. Die einseitige Rendite ist auf die Hälfte der doppelseitigen Rendite der Liquiditätsanbieter begrenzt.", - "runePoolDescription": "Mit RUNEPool können Sie mehr %{asset} verdienen, indem Sie Ihr %{asset} mit anderen bündeln. Sie müssen keine bestimmten Pools auswählen, alle sind an der Gesamtleistung beteiligt.", - "runePoolOverviewDescription": "RUNEPool optimiert die RUNE Nutzung, indem es in alle POL-fähigen Liquiditätspools in THORChain eingezahlt wird. Durch das Pooling von RUNE in diesen Pools verdienen die Teilnehmer den kombinierten APY, sind jedoch dem gesamten vorübergehenden Verlust ausgesetzt. Anstatt einzelne Pools auszuwählen, profitieren Benutzer von der Gesamtleistung und investieren effektiv in einen RUNE-Index und alle POL-fähigen THORChain-Vermögenswerte. Dies vereinfacht die Liquiditätsbereitstellung und reduziert das individuelle Risiko.", + "description": "Verdienen Sie Rendite auf Ihr %{asset} über die THORChain Savers Vaults. Es gibt keine Sperrfrist, und Belohnungen werden automatisch angesammelt. Die Rendite auf THORChain stammt aus Swap-Gebühren und Block-Belohnungen. Die einseitige Rendite ist auf die Hälfte der doppelseitigen Rendite der Liquiditätsanbieter begrenzt.", + "runePoolDescription": "RUNEPool ermöglicht es Ihnen, mehr %{asset} zu verdienen, indem Sie Ihr %{asset} mit anderen zusammenlegen. Sie müssen keine bestimmten Pools auswählen – alle teilen die Gesamtleistung.", + "runePoolOverviewDescription": "RUNEPool optimiert die RUNE-Nutzung, indem es in alle POL-fähigen Liquiditätspools in THORChain eingezahlt wird. Durch die Bündelung von RUNE in diesen Pools erzielen die Teilnehmer den kombinierten APY, sind aber dem aggregierten impermanenten Verlust ausgesetzt. Anstatt einzelne Pools auszuwählen, profitieren die Benutzer von der Gesamtleistung und investieren effektiv in einen RUNE-Index und alle POL-fähigen THORChain-Assets. Dies vereinfacht die Liquiditätsbereitstellung und reduziert das individuelle Risiko.", "vaultCap": "Tresorobergrenze", "vaultCapTooltip": "Akt. max. Kapazität für diesen Tresor", "haltedDepositTitle": "Einzahlungen sind vorübergehend gestoppt.", @@ -621,16 +621,16 @@ "introducingSaversVaults": "Einführung von Savers Vaults", "introducingRunePool": "Einführung in RUNEPool", "risksBody": { - "vaults": "In Bezug auf diesen Artikel für Risiken im Zusammenhang mit Savers Vaults.", - "runePool": "In Bezug auf diesen Artikel für die mit RUNEPool verbundenen Risiken." + "vaults": "Lesen Sie diesen Artikel für Risiken im Zusammenhang mit Savers Vaults.", + "runePool": "Lesen Sie diesen Artikel für Risiken im Zusammenhang mit RUNEPool." }, "timeToBreakEven": { "title": "Zeit zum Break-Even", "tooltip": "Geschätzte Zeit zur Deckung von Einzahlungsgebühren und Einnahmen." }, "cannotDepositWhilePendingTx": "Kann nicht einzahlen, während Txs ausstehen", - "cannotWithdrawWhilePendingTx": "Kann nicht auszahlen, während Txs ausstehen", - "agreeRunePool": "Mir ist bewusst, dass bei RUNEPool eine Mindestsperrfrist von 30 Tagen besteht und ein erhöhtes Risiko eines vorübergehenden Verlusts besteht." + "cannotWithdrawWhilePendingTx": "Abhebung nicht möglich, solange Transaktionen ausstehend sind", + "agreeRunePool": "Ich verstehe, dass RUNEPool eine Mindestbindungsdauer von 30 Tagen und ein erhöhtes Risiko impermanenter Verluste hat." } }, "memoNote": { @@ -654,7 +654,7 @@ "ended": "Beendet", "balance": "Kontostand", "netWorth": "Nettovermögen", - "loadingAccounts": "Geladene %{portfolioAccountsLoaded} Konten", + "loadingAccounts": "%{portfolioAccountsLoaded} Konten geladen", "loadingMorePositions": "Weitere DeFi Positionen werden noch geladen", "walletBalanceChange24Hr": "24 Stunden Veränderung", "earnBody": "Verdienen Sie passives Einkommen, indem Sie Ihr Guthaben einsetzen oder in eine DeFi-Strategie einzahlen.", @@ -680,9 +680,9 @@ }, "withdraw": { "info": { - "title": "Abhebungsinformation", + "title": "Abhebungsinfo", "description": "Geben Sie den Betrag von %{asset} ein, den Sie abheben möchten.", - "yieldyDescription": "Geben Sie den Betrag von %{asset} ein, den Sie abheben möchten. Nachfolgende Auszahlungen werden zusammengefasst und setzen die Auszahlungszeit zurück.", + "yieldyDescription": "Geben Sie den Betrag von %{asset} ein, den Sie abheben möchten. Nachfolgende Abhebungen werden zusammengeführt und setzen die Abhebungszeit zurück.", "farmingExpiredDescription": "Dieser Farming Vertrag ist beendet. Sie müssen Ihr gesamtes Guthaben abheben.", "rewardsInfo": "Belohnungen, die Sie erhalten" } @@ -765,7 +765,7 @@ "common": "Transaktion", "confirmed": "Bestätigt", "pending": "Ausstehend", - "failed": "Gescheitert", + "failed": "Fehlgeschlagen", "swap": "Tauschen", "amount": "Betrag", "emptyMessage": "Ihre %{status} Transaktionen werden hier angezeigt.", @@ -783,7 +783,7 @@ "rfox": { "stake": "Stake", "withdraw": "Abheben", - "unstakeRequest": "Anfrage zur Aufhebung von Staking", + "unstakeRequest": "Staking-Ende-Anfrage", "setRuneAddress": "RUNE Adresse festlegen", "reward": "Belohnungsverteilung" }, @@ -823,7 +823,7 @@ }, "thorchain": { "deposit": "Einzahlung", - "depositRefund": "Rückerstattung der Einzahlung", + "depositRefund": "Einzahlungsrückerstattung", "depositRefundNative": "Anzahlung + Rückerstattung", "loanOpen": "Kredit offen", "loanOpenOut": "Kredit erhalten", @@ -838,7 +838,7 @@ "swapOut": "Tausch erhalten", "swap": "Handel", "swapRefund": "Swap Rückerstattung", - "unstake": "Stake beenden", + "unstake": "Staking beenden", "withdraw": "Auszahlung beantragt", "withdrawNative": "Abheben", "withdrawOut": "Auszahlung erhalten" @@ -917,7 +917,7 @@ "assetAddress": "%{asset} Adresse", "verifyAsset": "überprüfe %{asset}", "verifyAddressMessage": "Stellen Sie sicher, dass Ihre Adressen korrekt sind, bevor Sie fortfahren.", - "slippageInfo": "Ihre Transaktion wird rückgängig gemacht, wenn sich der Preis um mehr als diesen Prozentsatz ungünstig ändert.", + "slippageInfo": "Ihre Transaktion wird rückgängig gemacht, wenn sich der Preis um mehr als diesen Prozentsatz ungünstig verändert.", "allowanceTooltip": "Der Betrag, den Sie dem Smart Contract zur Nutzung in Ihrem Namen erteilen.", "searchingRate": "Auf der Suche nach dem besten Preis...", "noRateAvailable": "Kein Wechselkurs verfügbar.", @@ -985,7 +985,7 @@ "changeAddress": "Retourgeld Adresse", "changeAddressExplainer": "Beim Senden von Kryptowährungen über UTXO-basierte Netzwerke werden alle Restbeträge Ihrer Transaktion an diese Adresse zurückgesendet.", "depositAddress": "Einzahlungsadresse", - "depositAddressExplainer": "Dies ist die Protokolladresse, an die Ihre Werte zur Verarbeitung gesendet werden. Ihre Hardware Wallet zeigt diese Adresse zur Überprüfung an.", + "depositAddressExplainer": "Dies ist die Protokolladresse, an die Ihre Mittel zur Verarbeitung gesendet werden. Ihre Hardware-Wallet zeigt diese Adresse zur Überprüfung an.", "customReceiveAddress": "Benutzerdefinierte Empfangsadresse", "customReceiveAddressDescription": "Geben Sie eine benutzerdefinierte Empfangsadresse für diesen Handel ein", "thisIsYourCustomReceiveAddress": "Dies ist Ihre benutzerdefinierte Empfangsadresse", @@ -994,7 +994,7 @@ "tooltip": { "continueSwapping": "Weiter tauschen, um die letzten Details zu erfahren", "noRateAvailable": "Dies ist häufig auf eine sehr begrenzte oder keine Liquidität des Handelspaars zurückzuführen.", - "minerFee": "Dies ist die Gebühr für die Verarbeitung der Transaktion auf der Blockchain, dies ist keine Gebühr, die von ShapeShift erhoben wird.", + "minerFee": "Dies ist die Gebühr zur Verarbeitung der Transaktion auf der Blockchain. Diese wird nicht von ShapeShift erhoben.", "protocolFee": "Dies ist die Gebühr, die von dem für die Verarbeitung dieser Transaktion ausgewählten Protokoll erhoben wird, dies ist keine Gebühr, die von ShapeShift erhoben wird", "inputOutputDifference": "Die geschätzte Differenz zwischen dem USD-Wert der Eingabe- und Ausgabebeträge.", "slippageWithAmount": "Wenn sich der Preis so verändert, dass Sie weniger als %{amount} erhalten, wird Ihre Transaktion rückgängig gemacht. Dies ist der Mindestbetrag, den Sie garantiert erhalten.", @@ -1008,13 +1008,13 @@ }, "rateExpired": { "title": "Neuer Tarif", - "body": "Ihr bisheriger Swap-Kurs ist abgelaufen. Wir haben einen neuen Kurs abgerufen und Ihre Angebotsbeträge aktualisiert. Bitte überprüfen Sie die neuesten Details, bevor Sie Ihren Swap bestätigen.", + "body": "Ihr vorheriger Swap-Kurs ist abgelaufen. Wir haben einen neuen Kurs abgerufen und Ihre Angebotsbeträge aktualisiert. Bitte überprüfen Sie die neuesten Details, bevor Sie Ihren Swap bestätigen.", "cta": "Okay, verstanden" } }, "permit2Allowance": { - "title": "Permit2 Contract Genehmigungsbetrag ", - "tooltip": "Dieser Handel verwendet Permit2, das eine einmalige Genehmigung erfordert, um dem Permit2-Vertrag eine unbegrenzte Zuteilung zu gewähren. Nach dieser anfänglichen Einrichtung können Sie Trades auf jedem von Permit2 unterstützten Protokoll autorisieren, indem Sie gasfreie Nachrichten signieren, die vorübergehende 5-Minuten-Zuteilungen gewähren." + "title": "Permit2-Vertragslimit", + "tooltip": "Dieser Trade verwendet Permit2, das eine einmalige Genehmigung erfordert, um dem Permit2-Vertrag ein unbegrenztes Limit zu erteilen. Nach dieser Ersteinrichtung können Sie Trades auf jedem Permit2-unterstützten Protokoll durch Signieren gebührenfreier Nachrichten autorisieren, die temporäre 5-Minuten-Limits gewähren." }, "permit2Eip712": { "title": "Token Übertragung zulassen", @@ -1028,7 +1028,7 @@ "sellAmountDoesNotCoverFee": "Verkaufsbetrag niedriger als die Gebühr", "insufficientFunds": "Unzureichende Mittel für Miner-Gebühr und -Betrag", "transactionRejected": "Der Benutzer hat die Transaktion abgelehnt", - "insufficientFundsForProtocolFee": "Nicht genügend %{symbol} auf %{chainName} für Gebühren", + "insufficientFundsForProtocolFee": "Unzureichende %{symbol} auf %{chainName} für Gebühren", "unsupportedTradePair": "Nicht unterstütztes Handelspaar", "noRouteFound": "Für dieses Paar und diese Menge wurden keine Routen gefunden", "quoteExpired": "Angebot abgelaufen, versuchen Sie es erneut.", @@ -1070,28 +1070,28 @@ "summary": "Handelszusammenfassung", "estimatedCompletionTime": "Geschätzte Fertigstellungszeit", "transactionSuccessful": "Transaktion erfolgreich, Warte auf Bestätigungen", - "thorchainSwapperVolatilityAcknowledgementMessage": "Das THORCHain Protokoll weist Volatilität auf. Gehen Sie mit besonderer Vorsicht vor und berücksichtigen Sie zusätzliche verfügbare Routen.", + "thorchainSwapperVolatilityAcknowledgementMessage": "Das THORChain-Protokoll erlebt Volatilität. Bitte gehen Sie mit besonderer Vorsicht vor und berücksichtigen Sie alternative verfügbare Routen.", "temp": { "tradeSuccess": "Handel abgeschlossen" }, "hopTitle": { "swap": "Tauschen über %{swapperName}", - "swapEta": "Tausch via %{swapperName} in ~%{eta}" + "swapEta": "Swap über %{swapperName} in ~%{eta}" }, "transactionTitle": { "bridge": "Tausch von %{sellChainName} zu %{buyChainName} über %{swapperName}", - "swap": "Tauschen Sie %{sellChainName} über %{swapperName}" + "swap": "Swap auf %{sellChainName} über %{swapperName}" }, "approvalTitle": "Genehmigung der Token-Zulage", "resetTitle": "Token Genehmigungsbetrag zurücksetzen", "fiatAmountOnChain": "%{amountFiatFormatted} auf %{chainName}", "quote": { - "cantSetSlippage": "Wir können keine benutzerdefinierte Slippage (%{userSlippageFormatted}) für %{swapperName} festlegen", + "cantSetSlippage": "Wir können keinen benutzerdefinierten Slippage (%{userSlippageFormatted}) für %{swapperName} setzen", "gas": "Die Gasgebühren, um die Transaktion dieses Swappers abzuschließen.", "slippage": "Dies ist die Abweichung bei diesem Angebot.", "timeEstimate": "Dies ist die geschätzte Zeit, die für die Fertigstellung dieses Austauschs benötigt wird." }, - "awaitingPermit2Approval": "Auf Token Übertragung warten", + "awaitingPermit2Approval": "Warten auf Token-Transfer", "awaitingSwap": "Warte auf Tausch über %{swapperName}", "awaitingApproval": "Wartet auf Genehmigung", "awaitingAllowanceReset": "Warten auf Zurücksetzen des Genehmigungsbetrags", @@ -1132,12 +1132,12 @@ "noOpenOrders": "Noch keine offenen Bestellungen.", "noHistoricalOrders": "Noch keine vorherigen Bestellungen.", "limitPriceIsPercentLowerThanMarket": "Der Limitpreis liegt bei %{percent}% unter dem Marktpreis", - "highCowFeeImpact": "Die CoW-Gebühr beträgt %{percentage}% Ihres Verkaufsbetrags (%{cryptoImpact} %{sellAssetSymbol}). Ihre Bestellung wird möglicherweise nicht ausgeführt.", + "highCowFeeImpact": "Die CoW-Gebühr beträgt %{percentage}% Ihres Verkaufsbetrags (%{cryptoImpact} %{sellAssetSymbol}). Ihre Order wird möglicherweise nicht ausgeführt.", "awaitingOrderPlacement": "Warte auf Auftragserteilung bei %{swapperName}", "awaitingAllowanceApproval": "Warten auf OK von Genehmigungsbetrag", "awaitingAllowanceReset": "Warten auf Zurücksetzen des Genehmigungsbetrags", "orderPlacement": "Bestellung auf %{swapperName} aufgeben", - "explanation": "Wenn der Preis von %{assetSymbol} %{limitPrice} erreicht, wird Ihre Limit-Order automatisch %{sellAmount} verkauft, wodurch sichergestellt wird, dass Sie mindestens %{receiveAmount} erhalten.", + "explanation": "Wenn der Preis von %{assetSymbol} %{limitPrice} erreicht, verkauft Ihre Limit-Order automatisch %{sellAmount} und stellt sicher, dass Sie mindestens %{receiveAmount} erhalten.", "sellBuy": "Verkaufen → Kaufen", "limitExecution": "Limit/Ausführung", "statusHead": "Status", @@ -1179,7 +1179,7 @@ "loadingOrderList": "Ihre Limit Bestellungen werden geladen …", "orderCard": { "warning": { - "insufficientBalance": "Ihr Wallet verfügt derzeit nicht über ein ausreichendes %{symbol}-Guthaben auf %{chainName}, um diese Bestellung auszuführen. Die Bestellung ist noch offen und wird ausführbar, wenn Sie Ihr %{symbol}-Guthaben auf %{chainName} aufladen.", + "insufficientBalance": "Ihre Wallet hat derzeit kein ausreichendes %{symbol}-Guthaben auf %{chainName}, um diese Order auszuführen. Die Order ist weiterhin offen und wird ausführbar, wenn Sie Ihr %{symbol}-Guthaben auf %{chainName} aufstocken.", "insufficientAllowance": "Für diese Bestellung ist ein zusätzlicher Genehmigungsbetrag von %{symbol} auf %{chainName} erforderlich, damit CoW Swap diese Bestellung ausführen kann. Die Bestellung ist noch offen und wird ausführbar, sobald Sie die Genehmigung abgeschlossen haben." } }, @@ -1257,7 +1257,7 @@ }, "disconnect": { "header": "Trennen Sie das KeepKey-Gerät", - "body": "Leider ist beim Wiederherstellen/Einrichten Ihres KeepKey-Geräts ein Fehler aufgetreten. Bitte trennen Sie Ihr Gerät, schließen es erneut an und versuchen erneut, Ihr KeepKey-Gerät einzurichten. Wenn das Problem weiterhin besteht, wenden Sie sich bitte an den KeepKey-Support." + "body": "Leider ist beim Wiederherstellen/Einrichten Ihres KeepKey-Geräts ein Fehler aufgetreten. Bitte trennen und verbinden Sie Ihr Gerät erneut und versuchen Sie, Ihr KeepKey-Gerät neu einzurichten. Falls das Problem weiterhin besteht, wenden Sie sich bitte an den KeepKey-Support." } }, "shapeShift": { @@ -1286,13 +1286,13 @@ "menuItem": "Meine Wallet sichern", "enterPassword": "Geben Sie Ihr Passwort ein, um fortzufahren", "testTitle": "Überprüfen Sie Ihre geheime Wiederherstellungsphrase", - "title": "Sicherung bestätigen", + "title": "Backup bestätigen", "description": "Tippen Sie bitte unten auf die richtige Antwort auf die Seed Phrasen.", "desktopDescription": "Führen Sie diesen Kurztest durch, um zu bestätigen, dass Sie alles richtig gespeichert haben.", "wordNumber": "Wort Nr. %{number}", "info": { "title": "Ihre geheime Wiederherstellungsphrase", - "description": "Schreiben Sie diese 12 Wörter auf und speichern Sie sie sicher offline. Diese 12-Wort-Phrase wird verwendet, um Ihre privaten Wallet Schlüssel wiederherzustellen.", + "description": "Schreiben Sie diese 12 Wörter auf und speichern Sie sie sicher offline. Diese 12-Wort-Phrase wird verwendet, um Ihre Wallet-Private Keys wiederherzustellen.", "warning": "Hinweis: Wenn Sie Ihre geheime Wiederherstellungsphrase verlieren, kann ShapeShift Ihnen nicht helfen, Ihre Wallet wiederherzustellen, und Ihr Guthaben ist für immer verloren." }, "success": { @@ -1306,7 +1306,7 @@ }, "skip": { "title": "Diesen Schritt überspringen?", - "description": "Wenn Sie die Sicherung überspringen, können Sie Ihr Wallet nicht wiederherstellen, wenn Sie den Zugriff auf Ihr Gerät verlieren.", + "description": "Das Überspringen des Backups bedeutet, dass Sie Ihre Wallet nicht wiederherstellen können, wenn Sie den Zugang zu Ihrem Gerät verlieren.", "confirmCta": "Ja, ich habe meine Seed Phrase gespeichert" } } @@ -1328,7 +1328,7 @@ "qrCode": "QR Code", "addressBook": "Adressbuch", "noEntries": "Keine Adresse gefunden.", - "yourWallets": "Ihre Wallet", + "yourWallets": "Ihre Wallets", "noInternalAccounts": "Keine Konten gefunden.", "addNewAddress": "Neue Adresse hinzufügen", "addAddress": { @@ -1347,7 +1347,7 @@ "generic": "Ein Fehler ist aufgetreten.", "notEnoughNativeToken": "Nicht genug %{asset}, um Gaskosten abzudecken", "transactionRejected": "Der Benutzer hat die Transaktion abgelehnt", - "qrPermissions": "Diese Funktion benötigt Kamerazugriffsberechtigungen, um zu funktionieren. Bitte ändern Sie Ihre Browsereinstellungen.", + "qrPermissions": "Diese Funktion benötigt Kamerazugriffsberechtigungen. Bitte ändern Sie Ihre Browsereinstellungen.", "qrDangerousEthUrl": "QR-Codes, die eine Vertragsadresse enthalten, werden nicht unterstützt. Bitte fügen Sie die Zieladresse manuell ein.", "noAccountsOnChain": "Keine Konten auf %{chain}" }, @@ -1376,7 +1376,7 @@ "availableBalance": "%{balance} verfügbar" }, "status": { - "pendingBody": "Sende %{amount} %{symbol}" + "pendingBody": "%{amount} %{symbol} wird gesendet" } }, "receive": { @@ -1435,7 +1435,7 @@ } }, "approve": { - "header": "Erlaube %{spenderName}, deine %{asset} zu verwenden", + "header": "%{spenderName} erlauben, Ihr %{asset} zu verwenden", "resetHeader": "%{spenderName} Genehmigungsbetrag für %{asset} zurücksetzen", "body": "benötigt Ihre Erlaubnis, um Ihr %{asset} zu verwenden", "learnMore": "Warum muss ich das tun?", @@ -1462,9 +1462,9 @@ "withdrawInstantTime": "Sofort", "withdrawDelayedTime": "7 bis 14 Tage", "xDays": "%{unbondingDays} Tage", - "estimatedGas": "Geschätzte Gasgebühr", + "estimatedGas": "Geschätzte Gas-Gebühr", "notEnoughGas": "Nicht genug %{assetSymbol}, um Gas abzudecken", - "missingFundsForGas": "Nicht genügend Guthaben, Sie benötigen %{cryptoAmountHuman} %{assetSymbol} mehr, um die Transaktion abzuschließen", + "missingFundsForGas": "Nicht genug Guthaben, Sie benötigen %{cryptoAmountHuman} %{assetSymbol} mehr, um die Transaktion abzuschließen", "signBroadcast": "Signieren und übertragen", "cancel": "Abbruch" }, @@ -1506,10 +1506,10 @@ "CAD": "Kanadischer Dollar", "HKD": "Hongkong Dollar", "AUD": "Australischer Dollar", - "TWD": "Neuer Taiwan-Dollar", + "TWD": "Taiwanesischer Dollar", "BRL": "brasilianischer Real", "CHF": "Schweizer Franken", - "THB": "Thai Baht", + "THB": "Thailändischer Baht", "MXN": "Mexikanischer Peso", "RUB": "russischer Rubel", "SAR": "Saudi-Riyal", @@ -1720,7 +1720,7 @@ "success": "Sie können dieses Fenster jetzt schließen." }, "errors": { - "unknown": "Bei der Kommunikation mit der Ledger Wallet ist ein unerwarteter Fehler aufgetreten", + "unknown": "Ein unerwarteter Fehler bei der Kommunikation mit der Ledger-Wallet ist aufgetreten", "noDeviceConnected": "Kein Ledger-Gerät verbunden", "multipleDevicesConnected": "Mehrere Ledger-Geräte verbunden. Bitte trennen Sie alle Geräte bis auf eines." }, @@ -1733,7 +1733,7 @@ }, "failure": { "header": "Verbindung zum Ledger nicht möglich", - "body": "Wir konnten Ihr Ledger nicht erkennen, aber Sie können sich im Nur-Lese-Modus verbinden." + "body": "Ihr Ledger konnte nicht erkannt werden, Sie können jedoch im schreibgeschützten Modus verbinden." }, "readOnly": { "button": "Verbindung im Nur-Lese-Modus herstellen" @@ -1817,10 +1817,10 @@ "warningExperimental": "Der ShapeShift Multichain Snap ist eine neue, experimentelle Funktion, sofern sie „as is“ bereitgestellt wird.", "warningBackup": "Stellen Sie sicher, dass Sie Ihre MetaMask-Seed-Phrase gesichert haben. Alle Guthaben, die Sie mit diesem Snap an Nicht-EVM-Ketten senden, werden an das Standardkonto weitergeleitet, das Sie mit MetaMask eingerichtet haben.", "agreeIntro": "Bevor Sie fortfahren, lesen Sie bitte Folgendes:", - "agreeItem1": "Hardware Wallets werden NICHT unterstützt", + "agreeItem1": "Hardware-Wallets werden NICHT unterstützt", "agreeItem2": "Für die zusätzlichen Ketten, die der ShapeShift Multichain Snap bereitstellt, wird nur Konto Nr. 1 in MetaMask unterstützt", - "agreeItem3": "Um die vorhandenen Ethereum-Ketten von MetaMask nutzen zu können, müssen Sie Konto Nr. 1 mit ShapeShift in MetaMask verbinden", - "agreeItem4": "Indem Sie den ShapeShift Multichain Snap aktivieren, erkennen Sie an, dass Sie ihn auf eigenes Risiko verwenden", + "agreeItem3": "Um die bestehenden Ethereum-Chains von MetaMask zu nutzen, müssen Sie Konto #0 in MetaMask mit ShapeShift verbinden", + "agreeItem4": "Durch die Aktivierung des ShapeShift Multichain Snap bestätigen Sie, dass Sie es auf eigenes Risiko verwenden", "readAndUnderstood": "Ich habe es gelesen und verstanden", "seedBackedUp": "Ich habe meine MetaMask Seed-Phrase gesichert", "acceptInstall": "Bestätigen & Installieren", @@ -1857,14 +1857,14 @@ "header": "Gespeicherte Wallets", "forgetWallet": "Wallet abmelden", "confirmForget": "Möchten Sie %{wallet} wirklich vergessen?", - "confirmForgetBody": "Wenn Sie keine Sicherung Ihrer Wallet erstellt haben, können Sie nicht darauf zugreifen." + "confirmForgetBody": "Sie können nicht auf Ihre Wallet zugreifen, wenn Sie kein Backup erstellt haben." }, "import": { "header": "Importieren Sie Ihre Wallet", "keystoreHeader": "Importieren Sie Ihr Keystore Wallet", "body": "Geben oder fügen Sie Ihre geheime Wiederherstellungsphrase in Kleinbuchstaben ein, ohne Kommas oder Zahlen und mit einem Leerzeichen zwischen den einzelnen Wörtern.", "button": "Weiter", - "secretRecoveryPhraseError": "Geben Sie Ihren geheimen Wiederherstellungsphrase mit einem einzelnen Leerzeichen zwischen den Wörtern ein. Lassen Sie Kommas, Returns oder zusätzliche Zeichen weg.", + "secretRecoveryPhraseError": "Geben Sie Ihre Geheime Wiederherstellungsphrase mit einem einzelnen Leerzeichen zwischen den Wörtern ein. Lassen Sie Kommas, Zeilenumbrüche oder sonstige Sonderzeichen weg.", "secretRecoveryPhraseRequired": "Geheime Wiederherstellungsphrase ist erforderlich", "secretRecoveryPhraseTooShort": "Geheime Wiederherstellungsphrase ist zu kurz", "dragAndDrop": "Drag & Drop oder Datei auswählen", @@ -1900,7 +1900,7 @@ "importKeystore": "Importiere Keystore File" }, "success": { - "encryptingWallet": "Verschlüsselung Ihrer Wallet... Wenn Ihr Browser Sie auffordert, Daten zu speichern, klicken Sie bitte auf \"Zulassen\".", + "encryptingWallet": "Ihre Wallet wird verschlüsselt... Wenn Ihr Browser fragt, ob Daten in persistentem Speicher gespeichert werden sollen, klicken Sie bitte auf 'Zulassen'.", "header": "Wallet verbunden", "success": "Sie können dieses Fenster jetzt schließen.", "error": "Beim Verbinden Ihrer Wallet ist ein Fehler aufgetreten" @@ -1951,7 +1951,7 @@ "multiChain": { "title": "Mehrere Ketten werden gleichzeitig unterstützt ", "subTitle": "Sie müssen nie das Netzwerk in der Wallet wechseln, es funktioniert mit jeder nahtlos.", - "body": "Wenn eine neues Netzwerk in ShapeShift hinzugefügt wird, wird Ihre Native Wallet es automatisch unterstützen." + "body": "Greifen Sie auf Bitcoin, Ethereum, Solana und viele weitere Chains über ein einziges Wallet zu. Handeln und verwalten Sie Ihre Assets nahtlos über verschiedene Netzwerke hinweg." }, "selfCustody": { "title": "Ihre ShapeShift Wallet verwalten Sie", @@ -1985,7 +1985,7 @@ "headerSecret": "geheime", "headerEnd": "Wiederherstellungsphrase sicher", "subHeader": "Es ist äußerst wichtig, die Sicherheit Ihrer geheimen Wiederherstellungsphrase zu gewährleisten.", - "description": "Behandeln Sie Ihre geheime Wiederherstellungsphrase wie Ihren wertvollsten Besitz – bewahren Sie sie stets sicher auf. Ein Passwortmanager bietet eine hervorragende Sicherheit, die Wörter aufzuschreiben ist sogar noch besser.", + "description": "Behandeln Sie Ihre Geheime Wiederherstellungsphrase wie Ihren wertvollsten Besitz – halten Sie sie jederzeit sicher. Ein Passwort-Manager bietet gute Sicherheit, das Aufschreiben der Wörter ist noch besser.", "bulletPoints": { "share": "Geben Sie sie nicht an andere weiter", "lose": "Wenn Sie sie verlieren, können wir sie nicht wiederherstellen" @@ -2001,13 +2001,13 @@ "button": "Weiter zur Bestätigung", "success": { "title": "Geschafft", - "description": "Sie haben Ihre geheime Wiederherstellungsphrase verifiziert. Bewahren Sie sie sicher auf – nur so können Sie Ihr Wallet wiederherstellen.", + "description": "Sie haben Ihre Geheime Wiederherstellungsphrase verifiziert. Bewahren Sie sie sicher auf – dies ist der einzige Weg, Ihre Wallet wiederherzustellen.", "viewWallet": "Wallet anzeigen" } }, "vultisig": { "errors": { - "connectFailure": "Verbindung zur Vultisig Wallet nicht möglich." + "connectFailure": "Verbindung zur Vultisig-Wallet nicht möglich" }, "connect": { "header": "Kopple Vultisig", @@ -2090,7 +2090,7 @@ "selectChain": "Wählen Sie das Netzwerk aus, für das Sie ein Konto erstellen möchten.", "requiresPriorTxHistory": "Sie können nur dann ein neues Konto hinzufügen, wenn die bestehenden Konten über einen früheren Transaktionsverlauf verfügen", "newAccountAdded": "Neues %{name} Konto hinzugefügt", - "youCanNowUse": "Verwenden Sie nun %{name} Konto #%{accountNumber}", + "youCanNowUse": "Sie können jetzt %{name} Konto #%{accountNumber} verwenden", "showAssets": "Vermögen anzeigen", "hideAssets": "Vermögenswerte ausblenden", "viewAccount": "Konto ansehen", @@ -2100,8 +2100,8 @@ "menuTitle": "Konten verwalten", "manageAccounts": { "title": "Konten verwalten", - "description": "Dies sind die Ketten, die Sie verbunden haben, und die Anzahl der Konten, die Sie importiert haben.", - "emptyList": "Sie haben noch keine Konten verknüpft. Fügen Sie zunächst eine Kette hinzu.", + "description": "Dies sind die Chains, die Sie verbunden haben, und die Anzahl der importierten Konten.", + "emptyList": "Sie haben noch keine Konten verbunden. Fügen Sie eine Chain hinzu, um zu beginnen.", "addChain": "Kette hinzufügen", "addAnotherChain": "Eine weitere Kette hinzufügen" }, @@ -2141,7 +2141,7 @@ "resetFilters": "Alle Filter zurücksetzen", "to": "bis", "categories": "Kategorien", - "dayRange": "Bereich von Tagen", + "dayRange": "Tagesbereich", "10days": "10 Tage", "30days": "30 Tage", "90days": "90 Tage", @@ -2172,7 +2172,7 @@ "minerFee": "Miner-Gebühr", "date": "Datum", "sentTo": "Gesendet an %{address}", - "receivedFrom": "Erhalten von %{address}", + "receivedFrom": "Empfangen von %{address}", "today": "Heute", "yesterday": "Gestern", "thisWeek": "Diese Woche", @@ -2291,7 +2291,7 @@ "loanToValue": "Beleihungswert", "availablePools": "Verfügbare Pools", "pool": "Pool", - "poolDepth": "Pooltiefe", + "poolDepth": "Pool-Tiefe", "poolDepthDescription": "Die Gesundheit des Pools", "status": "Status", "statusDescription": "Der Status des Pools", @@ -2301,7 +2301,7 @@ "totalCollateralDescription": "Gesamte dem Lending-pool hinzugefügte Sicherheiten", "estCollateralizationRatio": "zirka Besicherungsverhältnis", "estCollateralizationRatioDescription": "Derzeit gilt eine pauschale Besicherungsquote von 200 %. Zukünftig wird eine dynamische Quote je nach Marktbedingungen einen Ausgleich zwischen der maximalen und minimalen Besicherungsquote schaffen.", - "collateralizationRatio": "Besicherungsverhältnis", + "collateralizationRatio": "Besicherungsquote", "totalBorrowers": "Gesamtzahl der Kreditnehmer", "totalBorrowersDescription": "Anzahl der teilnehmenden Kreditnehmer", "myLoanInformation": "Meine Kreditinformationen", @@ -2345,7 +2345,7 @@ }, "borrowing": { "title": "Wie funktioniert die Kreditaufnahme?", - "body": "Bei der Kreditaufnahme in THORChain nutzen Sie Ihr hinterlegtes Vermögen als Sicherheit für die Aufnahme eines Kredits. Das Darlehen lautet auf USD (TOR) und kann in verschiedenen L1 Vermögenswerten aufgenommen werden. Mit einer dynamischen Besicherungsquote können Sie flexibel Kredite aufnehmen, ohne sich um Zinsen oder Liquidation sorgen zu müssen" + "body": "Das Borrowing in THORChain beinhaltet die Verwendung Ihrer eingezahlten Assets als Sicherheit für einen Kredit. Der Kredit ist in USD (TOR) denominiert und kann in verschiedenen L1-Assets empfangen werden. Mit einer dynamischen Besicherungsquote können Sie flexibel leihen, ohne sich über Zinsen oder Liquidation Sorgen zu machen." }, "repayments": { "title": "Wie funktioniert die Rückzahlung?", @@ -2358,14 +2358,14 @@ "repaymentsDisabled": "Rückzahlungen sind vorübergehend deaktiviert.", "borrowingDisabled": "Ausleihen ist vorübergehend deaktiviert.", "amountTooLowToReturnCollateral": "Betrag zu niedrig, um Sicherheiten zurückzugeben", - "amountTooLowToReturnCollateralTooltip": "Die Rückzahlung ist zu niedrig, um Ihre Sicherheiten zurückzuerhalten. Bitte versuchen Sie es erneut mit einem höheren Betrag oder zahlen Sie einen Teilbetrag zurück (wodurch Sie Ihre Sicherheiten nicht zurückerhalten, Ihre Schulden jedoch verringern).", + "amountTooLowToReturnCollateralTooltip": "Der Rückzahlungsbetrag ist zu gering, um Ihre Sicherheit zurückzugeben. Bitte versuchen Sie es mit einem höheren Betrag, oder zahlen Sie einen Teilbetrag zurück (der Ihre Sicherheit nicht zurückgibt, aber Ihre Schulden verringert).", "amountTooSmallUnknownMinimumTooltip": "Der von Ihnen eingegebene Rückzahlungsbetrag ist zu gering. Bitte versuchen Sie es erneut mit einem höheren Betrag.", "repaymentUnavailableTooltip": "Eine Rückzahlung Ihres Kredites ist derzeit nicht möglich. Bitte warten Sie, bis die Rückzahlungssperre abgelaufen ist.", "repaymentsHaltedTooltip": "Die Rückzahlungen sind vorübergehend ausgesetzt. Bitte versuchen Sie es später noch einmal." }, "quote": { "collateral": "Gesamtvermögenswert, der gegen Ihr Darlehen besichert wird", - "debt": "Gesamtschulden, die Sie basierend auf Ihrem neuen Kreditbetrag schulden", + "debt": "Gesamtschuld basierend auf Ihrem neuen Kreditbetrag", "repaymentLock": "Mindestlaufzeit, bevor Sie Ihr Darlehen zurückzahlen können", "collateralizationRatio": "Verhältnis Ihres Sicherheitenwertes zum Kreditbetrag", "feesPlusSlippage": "Es fielen insgesamt Gebühren an, einschließlich L1 Gebühren, Slippage und THORChain-Liquiditätsgebühren" @@ -2404,12 +2404,12 @@ "removeLiquidity": "Liquidität entfernen", "initialPricesAndPoolShare": "Anfangspreise und Poolanteil", "pricePerAsset": "%{from} pro %{to}", - "symAlert": "Ihr %{from} wird beim Eintritt in den Pool in ein 50:50-Engagement für %{to} und %{from} aufgeteilt.", + "symAlert": "Ihr %{from} wird beim Eintritt in den Pool in eine 50:50-Exposition gegenüber %{to} und %{from} aufgeteilt.", "withdrawTypeNotAvailable": "Diese Auszahlungsart ist für diesen Pool nicht verfügbar.", "incompletePositionDepositAlert": "Diese Position ist unvollständig. Bitte zahlen Sie den entsprechenden Betrag von %{asset} ein, um diese Position abzuschließen.", "incompletePositionWithdrawAlert": "Diese Position ist unvollständig. Bitte stornieren Sie die Position, indem Sie 100 % der Liquidität entfernen. Sie können die Position auch über „Liquidität hinzufügen“ abschließen.", "unsupportedNetworkExplainer": "Ihre Wallet ist nicht mit %{network} verbunden. Bitte verbinden Sie sie oder wechseln Sie zu einer Wallet, die dieses Netzwerk unterstützt.", - "unsupportedNetworksExplainer": "Ihre Wallet ist nicht mit %{network1} und %{network2} verbunden. Bitte verbinden Sie sie oder wechseln Sie zu einer Wallet, die diese Netzwerke unterstützt.", + "unsupportedNetworksExplainer": "Ihre Wallet ist nicht mit %{network1} und %{network2} verbunden. Bitte verbinden Sie diese Chain oder wechseln Sie zu einer Wallet, die diese Netzwerke unterstützt.", "depositsDisabled": "Einzahlungen deaktiviert", "shareOfPool": "Anteil am Pool", "totalLiquidity": "Gesamtliquidität", @@ -2519,9 +2519,9 @@ "staking": "rFOX Staking", "bridge": "Wechsel", "bridgeFunds": "Wechsel Betrag", - "bridgeSuccess": "Ihr Betrag wurden erfolgreich gewechselt. Sie können jetzt mit dem Staking fortfahren.", + "bridgeSuccess": "Ihre Mittel wurden erfolgreich gebrückt. Sie können jetzt mit dem Staking fortfahren.", "stake": "Stake", - "unstake": "Unstake", + "unstake": "Staking beenden", "claim": "Beanspruchen", "rewards": "Belohnung", "chainNotSupportedByWallet": "Kette wird von der Wallet nicht unterstützt", @@ -2541,8 +2541,8 @@ "useWalletAddress": "Wallet Adresse verwenden", "useCustomAddress": "Benutzerdefinierte Adresse verwenden", "stakeWarning": "Wenn Sie Ihr %{symbol} einsetzen, beachten Sie bitte, dass die Sperrfrist %{cooldownPeriod} beträgt. Das bedeutet, dass Sie, wenn Sie sich entscheiden, Ihre Tokens nicht einzusetzen, %{cooldownPeriod} warten müssen, bevor Sie Ihre Gelder einfordern können.", - "bridgeCta": "Sie haben %{assetSymbol} auf %{originNetwork} ausgewählt, aber Sie benötigen %{assetSymbol} auf %{destinationNetwork} zum Staking. Wir können Ihnen helfen, Ihre Mittel auf %{destinationNetwork} zu übertragen. Möchten Sie, dass wir Sie durch den Prozess führen?", - "unstakeWarning": "Bevor Sie Ihr %{symbol} beanspruchen können, beträgt die Abkühlphase %{cooldownPeriod}. Nach Ablauf dieser Zeit können Sie Ihren nicht eingesetzten Betrag beanspruchen.", + "bridgeCta": "Sie haben %{assetSymbol} auf %{originNetwork} ausgewählt, benötigen jedoch %{assetSymbol} auf %{destinationNetwork} zum Staken. Wir können Ihnen helfen, Ihre Mittel auf %{destinationNetwork} zu bridgen. Möchten Sie, dass wir Sie durch den Prozess führen?", + "unstakeWarning": "Bevor Sie Ihr %{symbol} einfordern können, beträgt die Abkühlungsphase %{cooldownPeriod}. Nach Ablauf dieser Zeit können Sie Ihren nicht gestakten Betrag einfordern.", "tooltips": { "stakeAmount": "Dies ist der Betrag an FOX, den Sie Staken werden", "unstakeAmount": "Dies ist der Betrag an FOX, den Sie Unstaken werden", @@ -2551,12 +2551,12 @@ "unstakePendingCooldown": "Anspruch verfügbar %{cooldownPeriodHuman}", "cooldownComplete": "Abkühlungsphase beendet %{cooldownPeriodHuman}" }, - "stakeSuccess": "Sie haben erfolgreich %{amount} %{symbol} gestaked", + "stakeSuccess": "Sie haben erfolgreich %{amount} %{symbol} gestakt", "stakePending": "Staking %{amount} %{symbol}...", "changeAddressPending": "RFOX Belohnungsadresse in %{newAddress} ändern", "changeAddressSuccess": "RFOX Belohnungsadresse in %{newAddress} geändert", - "unstakePending": "Auszahlung von %{amount} %{symbol} anfordern", - "unstakeSuccess": "Sobald %{cooldownPeriod} abgelaufen ist, können Sie Ihren %{amount} %{symbol} einfordern", + "unstakePending": "Abhebung von %{amount} %{symbol} wird angefordert", + "unstakeSuccess": "Sobald %{cooldownPeriod} abgelaufen ist, können Sie Ihr %{amount} %{symbol} einfordern", "currentRewardAddress": "Aktuelle Belohnungsadresse", "newRewardAddress": "Neue Belohnungsadresse", "rewardCycleExplainer": "Dies wird für den nächsten Belohnungszyklus aktualisiert.", @@ -2589,13 +2589,16 @@ "body": "rFOX ist ein Begriff, der die Vorteile und Belohnungen beschreibt, die Sie erhalten, wenn Sie Ihre FOX-Token auf Arbitrum einsetzen. Derzeit sperren und entsperren Sie Vanilla-FOX-Token (auf Arbitrum) für das Einsetzen von Emissionen." }, "why": { - "title": "Warum sollten Sie Ihren FOX staken?" + "title": "Warum sollten Sie Ihren FOX staken?", + "body": "Das Staking Ihrer FOX ermöglicht es Ihnen, regelmäßige USDC-Auszahlungen aus der DAO-Schatzkammer zu erhalten, die ein stetiges passives Einkommen in USDC pro Epoche bieten. Zusätzlich wird ein Teil der DAO-Einnahmen zur Reduzierung des gesamten FOX-Angebots durch Token-Burns verwendet. Der Staking-Prozess erfordert eine Mindest-Entstaking-Periode von 28 Tagen, was Engagement und Stabilität in der Community fördert." }, "stake": { - "title": "Wie stake ich meinen FOX?" + "title": "Wie stake ich meinen FOX?", + "body": "Um Ihre FOX einzusetzen, nutzen Sie die Staking-Oberfläche, um Ihre FOX-Token in den Staking-Vertrag zu sperren. Nach dem Einsetzen beginnen Sie, USDC-Belohnungen pro Block als Teil Ihrer Staking-Vorteile zu verdienen." }, "unstake": { - "title": "Was passiert, wenn ich mein Staking zurücknehme?" + "title": "Was passiert, wenn ich mein Staking zurücknehme?", + "body": "Wenn Sie das Staking beenden möchten, gilt eine Mindest-Unstaking-Periode von 28 Tagen. Während dieser Zeit bleibt Ihr FOX gesperrt, und Sie erhalten keine USDC-Emissionen mehr. Nach der Unstaking-Periode können Sie Ihre regulären FOX-Token entsperren und abrufen." }, "cooldown": { "title": "Wie lange ist die Abkühlungsphase?", @@ -2606,7 +2609,8 @@ "body": "Ja, Sie können mehrere Beträge aufheben. Für jede Aufhebungsaktion gilt eine Abkühlungsphase von 28 Tagen." }, "connect": { - "title": "Welcher Zusammenhang besteht zwischen den insgesamt erhobenen Gebühren, dem gesamten FOX-Einsatz, dem Emissionspool und der FOX-Verbrennungsmenge?" + "title": "Welcher Zusammenhang besteht zwischen den insgesamt erhobenen Gebühren, dem gesamten FOX-Einsatz, dem Emissionspool und der FOX-Verbrennungsmenge?", + "body": "Die vom DAO erhobenen Gebühren werden in nativen Vermögenswerten pro Swapper berechnet. Ein Teil dieses Einkommens wird umgewandelt und als Belohnungen an FOX-Staker verteilt, während ein anderer Teil zur Reduzierung des gesamten FOX-Angebots durch Token-Verbrennungen verwendet wird. Die Gesamtmenge der eingesetzten FOX beeinflusst die Verteilung der Belohnungen, da diese pro rata auf Basis der eingesetzten FOX-Menge verteilt werden. Der Emissionspool stellt die Menge an FOX dar, die für Staking-Belohnungen verfügbar ist, und die FOX-Verbrennungsmenge ist der Anteil an FOX, der gekauft und verbrannt wird." } }, "totals": "rFOX Summen", @@ -2639,7 +2643,7 @@ "claimConfirm": { "dustAmountTooltip": "Eine kleine Menge %{symbol} ist erforderlich, um Ihre Adresse im THOR-Netzwerk zu identifizieren", "networkFeeTooltip": "Dies ist die %{symbol} Gebühr für die Verarbeitung der Transaktion auf der Blockchain. Dies ist keine von ShapeShift erhobene Gebühr.", - "missingFundsForGasAlert": "Nicht genügend %{symbol}, Sie benötigen mindestens %{amount} %{symbol}, um die Transaktion abzuschließen. Wir empfehlen, etwas mehr zu senden, um schwankende Netzwerkgebühren abzudecken.", + "missingFundsForGasAlert": "Nicht genug %{symbol}, Sie benötigen mindestens %{amount} %{symbol} zum Abschluss der Transaktion. Wir empfehlen, etwas mehr für schwankende Netzwerkgebühren zu senden.", "confirmTitle": "Anspruch bestätigen", "networkFee": "Netzwerkgebühr", "confirmAndClaim": "Anspruch & Staken", @@ -2675,10 +2679,10 @@ }, "claimPending": "Anspruch auf %{amount} %{symbol}...", "claimStatus": { - "pendingSubtitle": "Wir bearbeiten Ihren Anspruch über %{amount} %{symbol}", + "pendingSubtitle": "%{amount} %{symbol} einfordern", "goBack": "Geh zurück", "successTitle": "Anspruch erfolgreich", - "successSubtitle": "Sie haben %{amount} TCY erfolgreich eingefordert", + "successSubtitle": "%{amount} TCY erfolgreich eingefordert", "failedTitle": "Da ist etwas schiefgelaufen", "failedSubtitle": "Ihr Antrag ist fehlgeschlagen. Bitte versuchen Sie es erneut." } @@ -2686,7 +2690,7 @@ "markets": { "recommended": "Empfohlen", "watchlist": "Meine Merkliste", - "marketsBody": "Entdecken Sie die aufregendsten Kryptowährungen. Verfolgen Sie die Top-Mover, aufstrebende Token, DeFi-Chancen und vieles mehr. Speichern, teilen und handeln Sie Ihre Favoriten.", + "marketsBody": "Entdecken Sie die spannendsten Kryptowährungen. Verfolgen Sie Top-Mover, aufkommende Tokens, DeFi-Möglichkeiten und vieles mehr. Speichern, teilen und mit Ihren Favoriten handeln.", "watchlistEmpty": { "emptyTitle": "Keine Vermögenswerte in der Beobachtungsliste", "emptyBody": "Es scheint, dass Sie bisher keine Vermögenswerte mit einem Stern markiert haben. Fügen Sie jetzt Vermögenswerte zu Ihrer Beobachtungsliste hinzu, um sie zu verfolgen!" @@ -2696,13 +2700,13 @@ "emptyBodySwapper": "Mit dem aktuellen Filter wurden keine Werte gefunden.", "categories": { "oneClickDefiAssets": { - "title": "DeFi-Vermögenswerte mit einem Klick", + "title": "Ein-Klick-DeFi-Assets", "filterTitle": "Hochertrags Token", "subtitle": "Entdecken Sie die Rendite, die am besten zu Ihnen passt! Wechseln Sie mühelos mit Portalen zwischen Pools, Tresoren, Kreditoptionen und LSDs." }, "thorchainDefi": { "title": "THORChain DeFi", - "subtitle": "Erzielen Sie mit THORChain Savers eine lokale Rendite auf Ihr Vermögen." + "subtitle": "Verdienen Sie native Rendite auf Ihre Assets mit THORChain Savers." }, "trending": { "title": "Beliebt", @@ -2742,14 +2746,14 @@ }, "foxFarming": { "title": "FOX Farming+", - "description": "Sind Sie es leid, Ihr %{rewardAssetSymbol} von Farm zu Farm zu migrieren? Setzen Sie einfach Ihre %{assetSymbol} ein und verdienen Sie dauerhaft %{rewardAssetSymbol}.", + "description": "Müde vom Migrieren Ihrer %{rewardAssetSymbol} von Farm zu Farm? Staken Sie einfach Ihr %{assetSymbol} und verdienen Sie %{rewardAssetSymbol} auf unbestimmte Zeit.", "totalClaimableRewards": "Gesamte einforderbare Belohnungen", "totalStakingValue": "Gesamter Einsatzwert", "nextEpoch": "Nächste Epoche" }, "governance": { "title": "Verwaltung", - "description": "Folgen Sie uns im Forum und gestalten Sie die Zukunft der DAO.", + "description": "Treten Sie uns im Forum bei und gestalten Sie die Zukunft der DAO.", "totalVotingPower": "Gesamtstimmrecht", "noActiveProposals": "Keine aktiven Vorschläge verfügbar", "noClosedProposals": "Keine abgeschlossenen Vorschläge verfügbar" @@ -2776,7 +2780,7 @@ "getFeeData": "Die Netzwerkgebühren konnten nicht geschätzt werden.", "getPublicKey": "Der öffentliche Schlüssel konnte nicht aus der Wallet abgerufen werden.", "getUtxos": "Utxos konnten nicht abgerufen werden.", - "getValidator": "Der Validierer konnte nicht abgerufen werden.", + "getValidator": "Validator konnte nicht abgerufen werden.", "gridplus": { "wrongSafeCard": "Die falsche SafeCard wurde eingelegt. Bitte legen Sie die richtige SafeCard ein und versuchen Sie es erneut.", "removeSafeCard": "Um auf die interne GridPlus Wallet zuzugreifen, entfernen Sie die eingelegte SafeCard." @@ -2816,43 +2820,51 @@ "startSwapping": "Beginnen Sie zu Tauschen" }, "swap": { - "processing": "Ihr Tausch von %{sellAmountAndSymbol} gegen %{buyAmountAndSymbol} wird verarbeitet.", + "processing": "Ihr Swap von %{sellAmountAndSymbol} zu %{buyAmountAndSymbol} wird verarbeitet.", "complete": "Ihr Tausch von %{sellAmountAndSymbol} gegen %{buyAmountAndSymbol} ist abgeschlossen.", - "failed": "Ihr Tausch von %{sellAmountAndSymbol} gegen %{buyAmountAndSymbol} ist fehlgeschlagen.", + "failed": "Ihr Swap von %{sellAmountAndSymbol} zu %{buyAmountAndSymbol} ist fehlgeschlagen.", "streaming": "Ihr Tausch von %{sellAmountAndSymbol} gegen %{buyAmountAndSymbol} läuft.", - "awaitingApproval": "Ihr Tausch von %{sellAmountAndSymbol} gegen %{buyAmountAndSymbol} wartet auf Genehmigung.", - "awaitingSwap": "Ihr Tausch von %{sellAmountAndSymbol} gegen %{buyAmountAndSymbol} wartet auf Ausführung." + "awaitingApproval": "Ihr Swap von %{sellAmountAndSymbol} zu %{buyAmountAndSymbol} wartet auf Genehmigung.", + "awaitingSwap": "Ihr Swap von %{sellAmountAndSymbol} zu %{buyAmountAndSymbol} wartet auf Ausführung." }, "thorchainLp": { "pairAssets": "%{asset1} und %{asset2}", "withdraw": { - "processing": "Ihre Auszahlung von %{assetAmountsAndSymbols} aus dem Pool %{poolName} wird verarbeitet.", - "complete": "Ihre Auszahlung von %{assetAmountsAndSymbols} aus dem %{poolName}-Pool ist abgeschlossen." + "processing": "Ihre Abhebung von %{assetAmountsAndSymbols} aus dem %{poolName}-Pool wird verarbeitet.", + "complete": "Ihre Abhebung von %{assetAmountsAndSymbols} aus dem %{poolName}-Pool ist abgeschlossen." }, "deposit": { "processing": "Ihre Einzahlung von %{amount} %{symbol} auf den Pool %{poolName} wird verarbeitet.", - "complete": "Ihre Einzahlung von %{amount} %{symbol} auf den Pool %{poolName} wurde abgeschlossen." + "complete": "Ihre Einzahlung von %{amount} %{symbol} in den %{poolName}-Pool ist abgeschlossen." } }, "deposit": { "pending": "Ihre Einzahlung von %{amount} %{symbol} wird bearbeitet.", - "complete": "Ihre Einzahlung von %{amount} %{symbol} ist abgeschlossen." + "complete": "Ihre Einzahlung von %{amount} %{symbol} ist abgeschlossen.", + "failed": "Ihre Einzahlung von %{amount} %{symbol} ist fehlgeschlagen." }, "withdrawal": { "pending": "Ihre Auszahlung von %{amount} %{symbol} wird bearbeitet.", - "complete": "Ihre Auszahlung von %{amount} %{symbol} ist abgeschlossen." + "complete": "Ihre Abhebung von %{amount} %{symbol} ist abgeschlossen.", + "failed": "Ihre Abhebung von %{amount} %{symbol} ist fehlgeschlagen." }, "claim": { "pending": "Ihr Anspruch in Höhe von %{amount} %{symbol} wird bearbeitet.", - "complete": "Ihr Anspruch in Höhe von %{amount} %{symbol} ist vollständig." + "complete": "Ihr Anspruch in Höhe von %{amount} %{symbol} ist vollständig.", + "failed": "Das Einfordern von %{amount} %{symbol} ist fehlgeschlagen." + }, + "yield": { + "unstakeAvailableIn": "Ihr %{symbol} Staking-Ende ist in %{duration} verfügbar.", + "unstakeReady": "Das Beenden des Stakings für Ihr %{symbol} ist bereit zum Einfordern.", + "unstakeClaimed": "Das Beenden des Stakings für Ihr %{symbol} wurde eingefordert." }, "bridge": { - "processing": "Ihr Wechsel von %{sellAmountAndSymbol}.%{sellChainShortName} zu %{buyAmountAndSymbol}.%{buyChainShortName} wird verarbeitet.", - "complete": "Ihr Wechsel von %{sellAmountAndSymbol}.%{sellChainShortName} zu %{buyAmountAndSymbol}.%{buyChainShortName} ist abgeschlossen.", + "processing": "Ihr Bridge von %{sellAmountAndSymbol}.%{sellChainShortName} zu %{buyAmountAndSymbol}.%{buyChainShortName} wird verarbeitet.", + "complete": "Ihr Bridge von %{sellAmountAndSymbol}.%{sellChainShortName} zu %{buyAmountAndSymbol}.%{buyChainShortName} ist abgeschlossen.", "initiated": "Ihr Wechsel von %{sellAmountAndSymbol} zu %{buyAmountAndSymbol} wurde initiiert.", "pendingWithdraw": "Ihre Auszahlung von %{amountAndSymbol} wird %{timeText} verfügbar sein.", "claimAvailable": "Ihr Wechsel von %{amountAndSymbol} kann beansprucht werden.", - "failed": "Ihr Wechsel von %{sellAmountAndSymbol}.%{sellChainShortName} zu %{buyAmountAndSymbol}.%{buyChainShortName} ist fehlgeschlagen.", + "failed": "Ihr Bridge von %{sellAmountAndSymbol}.%{sellChainShortName} zu %{buyAmountAndSymbol}.%{buyChainShortName} ist fehlgeschlagen.", "transactionInitiated": "Transaktion eingeleitet", "claimWithdraw": "Auszahlung beanspruchen", "withdrawTx": "Tx abheben", @@ -2861,26 +2873,26 @@ "limitOrder": { "placed": "Limit Order für %{sellAmountAndSymbol} bis %{buyAmountAndSymbol} aufgegeben", "complete": "Ihre Bestellung zum Kauf von %{buyAmountAndSymbol} für %{sellAmountAndSymbol} wurde erfolgreich ausgeführt.", - "cancelled": "Ihre Bestellung zum Kauf von %{buyAmountAndSymbol} für %{sellAmountAndSymbol} wurde storniert.", + "cancelled": "Ihre Order zum Kauf von %{buyAmountAndSymbol} für %{sellAmountAndSymbol} wurde storniert.", "expired": "Ihre Bestellung zum Kauf von %{buyAmountAndSymbol} für %{sellAmountAndSymbol} ist abgelaufen." }, "rfox": { - "unstakeReady": "Ihr nicht beanspruchter Anteil von %{amount} %{symbol} kann eingefordert werden.", - "unstakeTxPending": "Ihr nicht beanspruchter Anteil von %{amount} %{symbol} steht noch aus.", + "unstakeReady": "Ihr Staking-Ende von %{amount} %{symbol} ist zum Einfordern bereit.", + "unstakeTxPending": "Ihr Staking-Ende von %{amount} %{symbol} ist ausstehend.", "unstakeTxComplete": "Ihr nicht beanspruchter Anteil von %{amount} %{symbol} ist abgeschlossen." }, "tcy": { "stakePending": "Ihr Staking von %{amount} %{symbol} wird verarbeitet …", - "unstakePending": "Ihre Rücknahme von %{amount} %{symbol} wird verarbeitet …", + "unstakePending": "Ihr Staking-Ende von %{amount} %{symbol} wird verarbeitet...", "stakeComplete": "Ihr Staking von %{amount} %{symbol} ist vollständig.", "unstakeComplete": "Ihre Rücknahme von %{amount} %{symbol} ist abgeschlossen.", "claimReady": "Ihr TCY Anspruch in Höhe von %{amount} %{symbol} ist bereit.", - "claimTxPending": "Ihr TCY Anspruch in Höhe von %{amount} %{symbol} ist ausstehend.", + "claimTxPending": "Ihr TCY-Anspruch von %{amount} %{symbol} ist ausstehend.", "claimTxComplete": "Ihr TCY Anspruch in Höhe von %{amount} %{symbol} ist abgeschlossen." }, "approve": { "approvalTxPending": "Genehmigung für %{contractName} um %{amount} %{symbol} zu verwenden.", - "approvalTxComplete": "Genehmigt für %{contractName} die Verwendung von %{amount} %{symbol}." + "approvalTxComplete": "%{contractName} wurde genehmigt, %{amount} %{symbol} zu verwenden." }, "pendingTransactions": "%{count} Ausstehend", "rewardDistribution": { @@ -2895,8 +2907,7 @@ "yieldXYZ": { "pageTitle": "Erträge", "pageSubtitle": "Ertragspotenziale über mehrere Ketten hinweg erkennen und nutzen", - "actions": { - }, + "actions": {}, "yield": "Ertrag", "apy": "APY", "apr": "APR", @@ -2908,8 +2919,8 @@ "connectWallet": "Verbinden Sie eine Wallet, um die Renditen anzuzeigen.", "stats": "Statistiken", "minStake": "Min Stake", - "minDeposit": "Min Einzahlung", - "rewardSchedule": "Prämienplan", + "minDeposit": "Mindesteinzahlung", + "rewardSchedule": "Belohnungsplan", "staking": "Staking...", "unstaking": "Unstaking...", "depositing": "Einzahlung...", @@ -2937,8 +2948,8 @@ "pending": "Ausstehend", "ready": "Bereit", "bestReturn": "Beste Rendite", - "highestApy": "Höchster eff. Jahreszins", - "lowestApy": "Niedrigster eff. Jahreszins", + "highestApy": "Höchster APY", + "lowestApy": "Niedrigster APY", "highestTvl": "Höchster TVL", "lowestTvl": "Niedrigster TVL", "nameAZ": "Name (A-Z)", @@ -2988,9 +2999,10 @@ "providers": "Anbieter", "successStaked": "Sie haben erfolgreich %{amount} %{symbol} gestaked.", "successUnstaked": "Sie haben %{amount} %{symbol} erfolgreich freigegeben.", - "successDeposited": "Sie haben erfolgreich %{amount} %{symbol} eingezahlt.", + "cooldownNotice": "Ihre Auszahlung ist in %{cooldownDuration} verfügbar.", + "successDeposited": "Sie haben erfolgreich %{amount} %{symbol} eingezahlt", "successWithdrawn": "Sie haben erfolgreich %{amount} %{symbol} abgehoben.", - "successClaim": "Sie haben erfolgreich %{amount} %{symbol} beansprucht.", + "successClaim": "Sie haben erfolgreich %{amount} %{symbol} eingefordert", "viewPosition": "Zeige Position", "via": "über", "resetAllowance": "Genehmigungsbetrag zurücksetzen", @@ -3031,7 +3043,7 @@ "aboutProvider": "Über %{provider}", "visitWebsite": "Website besuchen", "providerDescriptions": { - "morpho": "Morpho ist ein Infrastrukturprotokoll für Geldmärkte und Tresore, das von führenden Sicherheitsfirmen mehrfach geprüft wurde, seit 2022 aktiv ist und Bug-Bounty-Prämien in Höhe von 2,5 Millionen US-Dollar bietet.", + "morpho": "Morpho ist ein Geldmarkt- und Vault-Infrastrukturprotokoll, mehrfach von erstklassigen Sicherheitsunternehmen geprüft, aktiv seit 2022, mit 2,5 Mio. USD Bug-Bounty-Anreizen.", "morpho-aave": "Morpho ist ein Infrastrukturprotokoll für Geldmärkte und Tresore, das von führenden Sicherheitsfirmen mehrfach geprüft wurde, seit 2022 aktiv ist und Bug-Bounty-Prämien in Höhe von 2,5 Millionen US-Dollar bietet.", "morpho-compound": "Morpho ist ein Infrastrukturprotokoll für Geldmärkte und Tresore, das von führenden Sicherheitsfirmen mehrfach geprüft wurde, seit 2022 aktiv ist und Bug-Bounty-Prämien in Höhe von 2,5 Millionen US-Dollar bietet.", "lido": "Lido ist ein Liquid-Staking-Protokoll, mit dem Nutzer ETH staken und gleichzeitig die Liquidität über stETH erhalten können. Es wurde mehrfach von führenden Sicherheitsfirmen geprüft, ist seit 2020 aktiv und bietet Bug-Bounty-Prämien im Wert von 2 Millionen US-Dollar.", @@ -3040,18 +3052,18 @@ "kamino": "Kamino ist eine Solana DeFi Suite, die Kreditvergabe, Liquidität und Hebelwirkung auf einer Plattform vereint. Sie betreibt ein Immunefi-Programm mit einer maximalen Prämie von bis zu 1,5 Millionen US-Dollar.", "fluid": "Fluid ist eine Liquiditätsplattform, die vom Instadapp Team entwickelt wurde und die Märkte für Kredite, dezentrale Börsen (DEX), Kreditaufnahme und Stablecoins in einem effizienten System vereint. Mehrfach von führenden Sicherheitsfirmen geprüft, seit 2024 live, mit Bug-Bounty-Prämien in Höhe von 0,5 Millionen US-Dollar.", "venus": "Venus ist ein Kreditprotokoll, das auf der BNB Chain basiert. Es legt Wert auf Sicherheit durch externe Audits und ein fortlaufendes Bug-Bounty-Programm.", - "gearbox": "Gearbox ist ein flexibles Leih Protokoll, das Kreditkonten ermöglicht, die in DeFi-Strategien integriert werden können. Es wurde mehrfach von führenden Sicherheitsfirmen geprüft, ist seit 2021 live und bietet Bug-Bounty-Prämien in Höhe von 0,2 Millionen US-Dollar.", - "yearn": "Yearn ist eine dezentrale Produktpalette, die Einzelpersonen, DAOs und anderen Protokollen hilft, Renditen mit ihren digitalen Vermögenswerten zu erzielen. Mehrfach von führenden Sicherheitsfirmen geprüft, seit 2020 live, mit Bug-Bounty-Prämien in Höhe von 0,2 Millionen US-Dollar.", + "gearbox": "Gearbox ist ein komponierbares Hebelprotokoll, das Kreditkonten ermöglicht, die sich in DeFi-Strategien einbinden lassen. Mehrfach von erstklassigen Sicherheitsunternehmen geprüft, aktiv seit 2021, mit 0,2 Mio. USD Bug-Bounty-Anreizen.", + "yearn": "Yearn ist eine dezentralisierte Produktsuite, die Einzelpersonen, DAOs und anderen Protokollen hilft, Rendite auf ihre digitalen Assets zu erzielen. Mehrfach von erstklassigen Sicherheitsunternehmen geprüft, aktiv seit 2020, mit 0,2 Mio. USD Bug-Bounty-Anreizen.", "spark": "Spark ist ein dezentrales Kreditprotokoll, das auf dem Sky Ökosystem (ehemals MakerDAO) basiert und es Nutzern ermöglicht, DAI und andere Stablecoins zu wettbewerbsfähigen Konditionen zu leihen. Es betreibt ein Immunefi Programm mit einer maximalen Prämie von bis zu 5 Millionen US-Dollar.", - "rocket-pool": "Rocket Pool ist ein dezentrales Ethereum-Liquid-Staking-Protokoll, das rETH ausgibt. Es wurde mehrfach von führenden Sicherheitsfirmen geprüft, ist seit 2021 live und bietet Bug-Bounty-Prämien in Höhe von 0,5 Millionen US-Dollar.", + "rocket-pool": "Rocket Pool ist ein dezentralisiertes Ethereum-Liquid-Staking-Protokoll, das rETH ausgibt. Mehrfach von erstklassigen Sicherheitsunternehmen geprüft, aktiv seit 2021, mit 0,5 Mio. USD Bug-Bounty-Anreizen.", "drift": "Drift ist eine dezentrale Handels- und Kreditplattform für Perpetual-Token, die auf Solana basiert. Sie betreibt ein Immunefi Programm mit einer maximalen Prämie von bis zu 0,5 Millionen US-Dollar." }, "otherYields": "Andere %{symbol} Erträge", - "availableToDeposit": "Verfügbar zur Einzahlung", + "availableToDeposit": "Zum Einzahlen verfügbar", "availableToDepositTooltip": "Dies ist der Betrag von %{symbol} in Ihrer Wallet, den Sie in diese Renditechance einzahlen können.", "getAsset": "Abruf %{symbol}", "manage": "Verwalten", - "potentialEarningsAmount": "%{amount}/yr bei %{apy}% APY", + "potentialEarningsAmount": "%{amount}/Jahr bei %{apy}% APY", "depositNow": "Jetzt einzahlen", "strategyInfo": "Strategieinformationen", "overview": "Übersicht", @@ -3066,13 +3078,13 @@ "estimatedYearlyEarnings": "Geschätztes Jahreseinkommen", "yieldType": "Ertragsart", "yieldTypes": { - "native-staking": "Nativ Staken", + "native-staking": "Native Staking", "pooled-staking": "Gemeinsames Staken", "liquid-staking": "Liquides Staken", - "staking": "Staken", + "staking": "Staking", "lending": "Verleihen", "vault": "Tresor", - "restaking": "Wiederveranlagung" + "restaking": "Restaking" }, "confirmEarn": "Einsatz bestätigen", "earnWith": "Verdienen Sie mit", @@ -3094,7 +3106,7 @@ }, "perfProfiler": { "title": "Perf Profiler", - "export": "Export", + "export": "Exportieren", "reset": "Reset", "disabledMessage": "Profilerstellung deaktiviert. Klicken Sie auf das Augensymbol, um sie zu aktivieren.", "toggleAria": "Profiler umschalten", diff --git a/src/assets/translations/es/main.json b/src/assets/translations/es/main.json index fa8c77d39fa..2984cebe95d 100644 --- a/src/assets/translations/es/main.json +++ b/src/assets/translations/es/main.json @@ -9,7 +9,7 @@ "trade": "Intercambiar", "back": "Atrás", "and": "y", - "balance": "Balance", + "balance": "Saldo", "next": "Siguiente", "edit": "Editar", "error": "Error", @@ -27,19 +27,19 @@ "continue": "Continuar", "approve": "Aprobar", "approveToken": "Aprobar Token", - "approveAmount": "Aprobar Monto", + "approveAmount": "Aprobar monto", "approveTo": "Aprobar a", - "reset": "Reiniciar", + "reset": "Restablecer", "confirm": "Confirmar", "seeDetails": "Ver detalles", "activity": "Actividad", "reject": "Rechazar", "goBack": "Regresar", - "fiat": "Fíat", + "fiat": "Fiat", "connected": "Conectado", - "trendingTokens": "Tokens en Tendencia", + "trendingTokens": "Tokens en tendencia", "created": "Creado %{date}", - "noResultsFound": "No se han encontrado resultados.", + "noResultsFound": "No se encontraron resultados.", "noResultsBody": "No resultados para %{searchQuery}. Intente de nuevo.", "insufficientFunds": "Fondos Insuficientes", "insufficientFundsForTrade": "Fondos insuficientes para el intercambio", @@ -56,12 +56,12 @@ "confirming": "Confirmando...", "withdrawAndClaim": "Retirar y Reclamar", "overview": "Vista Rápida", - "connectWallet": "Conectar Billetera", + "connectWallet": "Conectar billetera", "pairing": "Emparejando", - "connectWalletToGetStartedWith": "Conecte una billetera para comenzar a usar %{feature}", - "connectedWallet": "Billetera Conectada", + "connectWalletToGetStartedWith": "Conecta una billetera para comenzar con %{feature}", + "connectedWallet": "Billetera conectada", "crypto": "Cripto", - "walletActions": "Acciones de Billetera", + "walletActions": "Acciones de billetera", "connectedWalletSettings": "Configuración de billetera", "noWallet": "Sin billetera conectada", "darkTheme": "Tema oscuro", @@ -71,7 +71,7 @@ "preview": "Vista Previa", "incomplete": "Incompleto", "available": "Disponible", - "or": "ó", + "or": "o", "somethingWentWrong": "Algo salió mal", "somethingWentWrongBody": "Algo salió mal", "accountError": "Temporalmente no se puede obtener datos para las cadenas:", @@ -82,7 +82,7 @@ "happySuccess": "¡Éxito!", "transactionFailed": "Transacción fallida", "transactionFailedBody": "Transacción fallida", - "safeProposalQueued": "Propuesta SAFE en cola. %{currentConfirmations} de %{confirmationsRequired} firmados.", + "safeProposalQueued": "Propuesta SAFE en cola. %{currentConfirmations} de %{confirmationsRequired} firmadas.", "submitFeedback": "Enviar Comentarios", "send": "Enviar", "receive": "Recibir", @@ -137,7 +137,7 @@ "needAsset": "¿Necesita %{asset}?", "buyNow": "Comprar ahora", "manage": "Administre", - "view": "Vista", + "view": "Ver", "viewOnly": "Sólo Lectura", "allChains": "Todas las cadenas", "wallet": "Billetera", @@ -171,7 +171,7 @@ "dot": "Punto" }, "table": { - "nextPage": "Siguiente Página", + "nextPage": "Página siguiente", "prevPage": "Pagina Anterior", "sortedAsc": "Ordenado ascendente", "sortedDesc": "Ordenado descendente", @@ -193,7 +193,7 @@ "boost": "Aumentar", "viewOnExplorer": "Ver en el explorador", "approval": "Aprobación", - "permit2Approval": "Permiso para Aprobar", + "permit2Approval": "Aprobación Permit2", "network": "Red", "feeEstimate": "Tarifa Estimada", "list": "Lista" @@ -206,11 +206,11 @@ "aiChat": "Chat IA", "openChat": "Abrir chat", "closeChat": "Cerrar chat", - "emptyState": "¿Cómo puedo ayudarte hoy?", + "emptyState": "¿En qué puedo ayudarte hoy?", "placeholder": "Escribe un mensaje...", "stop": "Detener", "send": "Enviar", - "txStepProgress": "%{completedCount} de %{totalCount} completo", + "txStepProgress": "%{completedCount} de %{totalCount} completado", "agenticChatTools": { "send": { "title": "Enviar Cripto", @@ -345,7 +345,7 @@ "marketCapRank": "Clasificación en capitalización de mercado", "volume24h": "Volumen 24 horas", "volMcap": "Vol/Cap. M", - "about": "Acerca de", + "about": "Acerca de %{symbol}", "noDescription": "No hay descripción disponible para este activo." }, "receive": { @@ -353,14 +353,14 @@ "receiveOn": "Recibir %{symbol} en %{network}", "copyAddress": "Copiar dirección", "copied": "Copiado!", - "warning": "Envíe únicamente tokens compatibles con %{network} a esta dirección" + "warning": "Solo envía tokens compatibles con %{network} a esta dirección" }, "getLimitOrders": { "title": "Órdenes Limitadas", "openOrders": "%{count} abierto", "noOrders": "No se encontraron órdenes limitadas", "status": { - "open": "Abierto", + "open": "Abierta", "fulfilled": "Completada", "cancelled": "Cancelada", "expired": "Caducada", @@ -368,7 +368,7 @@ }, "sellLabel": "Vender", "buyLabel": "Comprar", - "expiresLabel": "Caduca", + "expiresLabel": "Vence", "view": "Ver", "filledLabel": "Completada" }, @@ -395,7 +395,7 @@ "tokens": "Tokens" } }, - "chatHistory": "Historial de Chat", + "chatHistory": "Historial de chat", "newChat": "Nuevo Chat", "deleteConversation": "Eliminar Conversación", "deleteConfirmation": "¿Estás seguro que deseas eliminar esta conversación?", @@ -413,7 +413,7 @@ "error": { "insufficientFunds": "Compra rápida de %{amount} falló, no hay fondos suficientes, ¿probar con otra cantidad?", "noQuote": "Compra rápida de %{amount} falló, no se pudo recuperar una cotización válida.", - "failed": "Compra rápida de %{amount} falló." + "failed": "La compra rápida de %{amount} ha fallado." } }, "consentBanner": { @@ -453,12 +453,12 @@ } }, "rampPage": { - "buyTitle": "Compra Cripto en Segundos", - "sellTitle": "Vende Cripto en Segundos", - "buyBody": "Usa una tarjeta de crédito, débito o cuenta bancaria. Compra Bitcoin, Ethereum, USDT, USDC u otras cripto importantes. Ofrecemos proveedores sin KYC.", + "buyTitle": "Compra crypto en segundos", + "sellTitle": "Vende crypto en segundos", + "buyBody": "Usa una tarjeta de crédito, débito o cuenta bancaria. Compra Bitcoin, Ethereum, USDT, USDC u otras criptomonedas populares. Proveedores sin KYC disponibles.", "sellBody": "Usa una tarjeta de crédito, débito o cuenta bancaria. Vende Bitcoin, Ethereum, USDT, USDC u otras cripto importantes. Ofrecemos proveedores sin KYC.", "disclaimer": "*También puedes vender cripto directamente por efectivo en tu cuenta bancaria.", - "ctaTitle": "También puedes usar ShapeShift con todas las billeteras principales para intercambiar, obtener rendimiento y rastrear tu cripto entre %{chainCount} cadenas", + "ctaTitle": "También puedes usar ShapeShift con todas las billeteras principales para intercambiar, ganar rendimiento y rastrear tu crypto en %{chainCount} cadenas", "availableAssets": "Activos Disponibles" }, "updateToast": { @@ -498,7 +498,7 @@ }, "fiatRamps": { "title": "Compra o Vende criptomonedas", - "titleMessage": "Puede %{action} %{asset} usando:", + "titleMessage": "Puedes %{action} %{asset} usando:", "banxa": "Banxa", "mtPelerin": "Mt Pelerin", "onRamper": "Rampa de entrada", @@ -538,7 +538,7 @@ "privacyPolicy": "Política de Privacidad", "connectNewWallet": "Conectar Billetera Nueva", "getANewWallet": "Obtener Billetera Nueva", - "alreadyHaveWallet": "Ya tengo una Billetera" + "alreadyHaveWallet": "Ya tengo una billetera" }, "connectWallet": { "menu": { @@ -563,10 +563,10 @@ "risks": "¿Existen riesgos?" }, "bodies": { - "rateFluctuationInfo": "La tasa de %{assetName} que gana, el rendimiento porcentual anual (APR), normalmente fluctúa entre el 7 % y el 20 %.", + "rateFluctuationInfo": "La tasa de %{assetName} que ganas, el Retorno Porcentual Anual (APR), generalmente fluctúa entre 7% y 20%.", "amountStakingInfo": "Puede hacer staking de cualquier cantidad de %{assetName} e inmediatamente comenzar a ganar.", "withdrawInfo": "Retire recompensas en cualquier momento, pero se requiere gas alrededor de ~$0,01.", - "unbondingInfo": "Cuando retire sus activos de staking, permanecerán bloqueados durante %{unbondingDays} días, sin generar recompensas. Después de los %{unbondingDays} días, su %{assetName} volverá a su billetera principal.", + "unbondingInfo": "Al retirar del staking tus tokens, permanecerán bloqueados por %{unbondingDays} días y no generarán recompensas. Después de esos %{unbondingDays} días, tu %{assetName} volverá a tu billetera principal.", "slashingInfo": "El staking se realiza a través de un validador. Es increíblemente raro, pero si el validador delegado se equivoca al permitir que se realicen transacciones falsas o incorrectas, podría perder parte de sus activos.", "partnerInfo": "Hemos mitigado este riesgo al asociarnos con un validador acreditado, que tiene una infraestructura segura, confiable y auditada." } @@ -586,7 +586,7 @@ "header": "Deposite tokens LP ETH-FOX en %{opportunity} para ganar", "body": "Aprueba y Stake tus tokens de liquidez para ganar recompensas adicionales en FOX.", "rewards": "Las recompensas se acumulan automáticamente.", - "cta": "Deposite tokens LP ETH-FOX ahora" + "cta": "Deposita tokens LP ETH-FOX ahora" }, "overview": { "underlyingTokens": "Tokens Subyacentes", @@ -602,9 +602,9 @@ "claimYour": "Reclame su %{opportunity}" }, "saversVaults": { - "description": "Obtenga rendimiento de su %{asset} a través de las bóvedas de ahorro de THORChain. No hay tiempo de bloqueo y las recompensas se acumulan automáticamente. El rendimiento en THORChain proviene de las tarifas de intercambio y las recompensas en bloque. El rendimiento unilateral tiene un tope de la mitad del rendimiento bilateral de los proveedores de liquidez.", - "runePoolDescription": "RUNEPool permite ganar más %{asset} si agrupas tus %{asset} con otros. No tienes que elegir grupos específicos, todos comparten el rendimiento general.", - "runePoolOverviewDescription": "RUNEPool optimiza el uso de RUNE depositándolos en todos los pools de liquidez habilitados para POL en THORChain. Al agrupar RUNE, participantes obtienen APY combinado, pero enfrentan exposición agregada a pérdida impermanente. En lugar de elegir pools individuales, usuarios se benefician del rendimiento general, invirtiendo efectivamente en un índice RUNE y todos los activos habilitados para POL THORChain. Simplifica la provisión de liquidez y reduce riesgo individual.", + "description": "Gana rendimiento sobre tu %{asset} a través de THORChain Savers Vaults. Sin período de bloqueo y con recompensas acumuladas automáticamente. El rendimiento en THORChain proviene de tarifas de swap y recompensas de bloque. El rendimiento unilateral está limitado a la mitad del rendimiento bilateral de los proveedores de liquidez.", + "runePoolDescription": "RUNEPool te permite ganar más %{asset} combinando tu %{asset} con otros. No tienes que elegir pools específicos, todos comparten el rendimiento general.", + "runePoolOverviewDescription": "RUNEPool optimiza el uso de RUNE depositándolo en todos los pools de liquidez habilitados para POL en THORChain. Al combinar RUNE en estos pools, los participantes obtienen el APY combinado pero asumen exposición a la pérdida impermanente agregada. En lugar de elegir pools individuales, los usuarios se benefician del rendimiento global, invirtiendo efectivamente en un índice de RUNE y todos los activos habilitados para POL de THORChain. Esto simplifica la provisión de liquidez y reduce el riesgo individual.", "vaultCap": "Límite de bóveda", "vaultCapTooltip": "Capacidad máxima actual para esta bóveda", "haltedDepositTitle": "Los depositos estan temporalmente detenidos.", @@ -621,15 +621,15 @@ "introducingSaversVaults": "Presentamos Bóvedas Savers", "introducingRunePool": "Presentamos RUNEPool", "risksBody": { - "vaults": "Refiere a Este artículo por los riesgos de las Bovedas Savers.", - "runePool": "Refiere a Este artículo por los riesgos involucrados con RUNEPool." + "vaults": "Consulta este artículo para conocer los riesgos asociados con las bóvedas de ahorro.", + "runePool": "Consulta este artículo para conocer los riesgos asociados con RUNEPool." }, "timeToBreakEven": { "title": "Tiempo para evitar pérdidas", "tooltip": "Tiempo estimado para cubrir tarifas de depósito y ganancias." }, "cannotDepositWhilePendingTx": "No se puede depositar mientras Txs están pendientes", - "cannotWithdrawWhilePendingTx": "No se puede retirar mientras Txs están pendientes", + "cannotWithdrawWhilePendingTx": "No se puede retirar mientras hay transacciones pendientes", "agreeRunePool": "Entiendo que RUNEPool tiene un bloqueo mínimo de 30 días y un mayor riesgo de pérdida impermanente." } }, @@ -654,7 +654,7 @@ "ended": "Finalizado", "balance": "Balance", "netWorth": "Valor neto", - "loadingAccounts": "%{portfolioAccountsLoaded} Cargadas", + "loadingAccounts": "%{portfolioAccountsLoaded} cuentas cargadas", "loadingMorePositions": "Se siguen cargando más posiciones DeFi", "walletBalanceChange24Hr": "Cambio de 24 horas", "earnBody": "Obtenga ingresos adicionales haciendo staking o depositando sus activos en una estrategia DeFi.", @@ -680,9 +680,9 @@ }, "withdraw": { "info": { - "title": "Información sobre retiro", + "title": "Información de retiro", "description": "Ingrese la cantidad de %{asset} que desea retirar.", - "yieldyDescription": "Ingrese la cantidad de %{asset} que desea retirar. Los retiros posteriores se combinarán y restablecerán el tiempo de retiro.", + "yieldyDescription": "Ingresa la cantidad de %{asset} que deseas retirar. Los retiros posteriores se combinarán y restablecerán el tiempo de retiro.", "farmingExpiredDescription": "Este contrato de recompensas ha finalizado. Debes retirar todo tu saldo.", "rewardsInfo": "Recompensas que recibirá" } @@ -765,7 +765,7 @@ "common": "Transacción", "confirmed": "Confirmado", "pending": "Pendiente", - "failed": "Fallido", + "failed": "Fallida", "swap": "Intercambiar", "amount": "Cantidad", "emptyMessage": "El %{status} de tus transacciones aparecerán aquí.", @@ -783,7 +783,7 @@ "rfox": { "stake": "Staking", "withdraw": "Retirar", - "unstakeRequest": "Solicitud para retirar Staking", + "unstakeRequest": "Solicitud de retiro del staking", "setRuneAddress": "Establecer Dirección RUNE", "reward": "Distribución de Recompensas" }, @@ -838,7 +838,7 @@ "swapOut": "Intercambio Recibido", "swap": "Intercambiar", "swapRefund": "Reembolso de intercambio", - "unstake": "Unstake", + "unstake": "Retirar del staking", "withdraw": "Retiro Solicitado", "withdrawNative": "Retirar", "withdrawOut": "Retiro Recibido" @@ -917,7 +917,7 @@ "assetAddress": "dirección %{asset}", "verifyAsset": "Verificar %{asset}", "verifyAddressMessage": "Asegúrese de que sus direcciones sean correctas antes de continuar.", - "slippageInfo": "Su transacción se revertirá si el precio cambia desfavorablemente más de porcentaje.", + "slippageInfo": "Tu transacción se revertirá si el precio cambia desfavorablemente más de este porcentaje.", "allowanceTooltip": "La cantidad que otorgará en permiso al contrato inteligente para utilizar.", "searchingRate": "Buscando la mejor tarifa...", "noRateAvailable": "No hay tarifa disponible.", @@ -956,7 +956,7 @@ "youGet": "Obtiene", "tradeTo": "Intercambia a", "expand": "Expandir", - "minerFee": "Tarifa de minero", + "minerFee": "Comisión de minero", "protocolFee": "Tarifa de protocolo", "protocol": "Protocolo", "tradeFeeSource": "Tarifa de %{tradeFeeSource}", @@ -970,7 +970,7 @@ "viewTransaction": "Ver Transacción", "noQuotesAvailable": "No hay Cotizaciones Disponibles", "noQuotesAvailableDescription": "No se encontraron cotizaciones disponibles en este momento. Intente seleccionar otro par.", - "availableQuotes": "Cotizaciones Disponibles", + "availableQuotes": "Cotizaciones disponibles", "unavailableSwappers": "Intercambiadores No Disponibles", "unlimited": "Ilimitado", "swapsFailed": "%{failedSwaps} intercambios fallidos", @@ -985,7 +985,7 @@ "changeAddress": "Cambiar dirección", "changeAddressExplainer": "Al enviar criptomonedas de redes basadas en UTXO, los fondos sobrantes se envían de vuelta a esta dirección.", "depositAddress": "Dirección de depósito", - "depositAddressExplainer": "Dirección de protocolo donde se enviarán tus fondos para su procesamiento. Tu billetera física mostrará esta dirección para verificación.", + "depositAddressExplainer": "Esta es la dirección del protocolo a la que se enviarán tus fondos para su procesamiento. Tu billetera de hardware mostrará esta dirección para verificación.", "customReceiveAddress": "Dirección de recepción personalizada", "customReceiveAddressDescription": "Introduzca dirección personalizada para este intercambio", "thisIsYourCustomReceiveAddress": "Esta es tu dirección de recepción personalizada", @@ -994,7 +994,7 @@ "tooltip": { "continueSwapping": "Continúe intercambiando para obtener detalles finales.", "noRateAvailable": "Esto a menudo se debe a una liquidez muy limitada o nula en el par comercial.", - "minerFee": "Esta es la tarifa para procesar la transacción en la blockchain, no es una tarifa cobrada por ShapeShift.", + "minerFee": "Esta es la comisión para procesar la transacción en la blockchain, no es una comisión cobrada por ShapeShift.", "protocolFee": "Esta es la tarifa cobrada por el protocolo seleccionado para procesar, No es una tarifa cobrada por ShapeShift", "inputOutputDifference": "La diferencia estimada entre los valores USD de las cantidades de insumos y productos.", "slippageWithAmount": "Si el precio se mueve de modo que usted reciba menos de %{amount}, su transacción se revertirá. Esta es la cantidad mínima que tiene garantizado recibir.", @@ -1008,13 +1008,13 @@ }, "rateExpired": { "title": "Nueva Tarifa", - "body": "Su tasa de intercambio ha expirado. Hemos obtenido nueva tasa y actualizado montos de cotización. Revise los detalles más recientes antes de confirmar su intercambio.", + "body": "Tu tasa de swap anterior ha expirado. Hemos obtenido una nueva tasa y actualizado los montos de tu cotización. Por favor, revisa los últimos detalles antes de confirmar tu swap.", "cta": "Ok, lo entiendo" } }, "permit2Allowance": { - "title": "Permiso de contrato Permit2", - "tooltip": "Intercambio utiliza Permit2, que requiere aprobación única para otorgar asignación ilimitada al contrato Permit2. Después de configuración inicial, puede autorizar operaciones en cualquier protocolo compatible firmando mensajes sin gas que otorgan asignaciones temporales de 5 minutos." + "title": "Límite del contrato Permit2", + "tooltip": "Este intercambio usa Permit2, que requiere una aprobación única para otorgar un límite ilimitado al contrato Permit2. Tras esta configuración inicial, puedes autorizar intercambios en cualquier protocolo compatible con Permit2 firmando mensajes sin gas que otorgan límites temporales de 5 minutos." }, "permit2Eip712": { "title": "Permitir transferencia de token", @@ -1028,7 +1028,7 @@ "sellAmountDoesNotCoverFee": "Cantidad de venta inferior a la tarifa", "insufficientFunds": "Fondos insuficientes para la tarifa y el monto del minero", "transactionRejected": "Usuario ha rechazado la transacción.", - "insufficientFundsForProtocolFee": "%{symbol} insuficiente en %{chainName} para las tarifas", + "insufficientFundsForProtocolFee": "%{symbol} insuficiente en %{chainName} para comisiones", "unsupportedTradePair": "Par No Compatible", "noRouteFound": "No se encontraron rutas para este par y cantidad", "quoteExpired": "Cotización caducada, intente de nuevo.", @@ -1070,17 +1070,17 @@ "summary": "Resumen de Intercambio", "estimatedCompletionTime": "Tiempo Estimado de Finalización", "transactionSuccessful": "Transacción exitosa, esperando confirmaciones", - "thorchainSwapperVolatilityAcknowledgementMessage": "El protocolo THORCHain está experimentando volatilidad. Proceda con cuidado y considere otras rutas disponibles.", + "thorchainSwapperVolatilityAcknowledgementMessage": "El protocolo THORChain está experimentando volatilidad. Procede con precaución adicional y considera otras rutas disponibles.", "temp": { "tradeSuccess": "Intercambio completado" }, "hopTitle": { "swap": "Intercambie via %{swapperName}", - "swapEta": "Intercambio via %{swapperName} en ~%{eta}" + "swapEta": "Swap vía %{swapperName} en ~%{eta}" }, "transactionTitle": { "bridge": "Intercambio de %{sellChainName} a %{buyChainName} via %{swapperName}", - "swap": "Intercambie en %{sellChainName} utilizando %{swapperName}" + "swap": "Swap en %{sellChainName} vía %{swapperName}" }, "approvalTitle": "Aprobar asignación de Token", "resetTitle": "Restablecimiento Asignación de Tokens", @@ -1132,12 +1132,12 @@ "noOpenOrders": "No hay órdenes abiertas todavía", "noHistoricalOrders": "Aún no hay pedidos históricos.", "limitPriceIsPercentLowerThanMarket": "Precio límite es %{percent}% más bajo que precio de mercado", - "highCowFeeImpact": "La comisión de CoW es del %{percentage}% del importe de venta (%{cryptoImpact} %{sellAssetSymbol}). Es posible que su orden no se ejecute.", + "highCowFeeImpact": "La comisión CoW es del %{percentage}% de tu monto de venta (%{cryptoImpact} %{sellAssetSymbol}). Es posible que tu orden no se ejecute.", "awaitingOrderPlacement": "Esperando la colocación de la orden en %{swapperName}", "awaitingAllowanceApproval": "Esperando aprobación de la asignación", "awaitingAllowanceReset": "Esperando restablecimiento de la asignación", "orderPlacement": "Realizar pedido en %{swapperName}", - "explanation": "Cuando el precio de %{assetSymbol} alcance %{limitPrice}, su orden limitada venderá automáticamente %{sellAmount}, lo que garantiza que recibirá al menos %{receiveAmount}.", + "explanation": "Cuando el precio de %{assetSymbol} alcance %{limitPrice}, tu orden limitada venderá automáticamente %{sellAmount}, garantizando que recibas al menos %{receiveAmount}.", "sellBuy": "Vender → Comprar", "limitExecution": "Límite/Ejecución", "statusHead": "Estado", @@ -1154,7 +1154,7 @@ "nativeSellAssetNotSupported": "No se admite venta de activos nativos", "insufficientValidTo": "Orden vence demasiado pronto", "excessiveValidTo": "Vencimiento de orden demasiado lejano en el tiempo", - "insufficientLiquidity": "Liquidez Insuficiente", + "insufficientLiquidity": "Liquidez insuficiente", "zeroFunds": "Se necesita un saldo en activos de venta distinto a cero", "insufficientFundsForGas": "Fondos insuficientes para gas", "allowanceResetRequired": "Se requiere Reinicio de Asignación" @@ -1179,7 +1179,7 @@ "loadingOrderList": "Cargando sus órdenes límite...", "orderCard": { "warning": { - "insufficientBalance": "Actualmente, su billetera no tiene saldo suficiente de %{symbol} en %{chainName} para ejecutar esta orden. La orden aún está abierta y se podrá ejecutar cuando recargue su saldo de %{symbol} en %{chainName}.", + "insufficientBalance": "Tu billetera actualmente tiene saldo de %{symbol} insuficiente en %{chainName} para ejecutar esta orden. La orden sigue abierta y se podrá ejecutar cuando recargues tu saldo de %{symbol} en %{chainName}.", "insufficientAllowance": "Esta orden requiere una asignación adicional de %{symbol} en %{chainName} para que CoW Swap apruebe y ejecute. La orden aún está abierta y se podrá ejecutar cuando complete la aprobación de la asignación." } }, @@ -1232,7 +1232,7 @@ "header": "Inicie con Keepkey", "body": "Su KeepKey tiene la configuración predeterminada de fábrica. Cree una nueva billetera o restaure una billetera usando su frase de recuperación secreta", "createButton": "Crear una Billetera Nueva", - "recoverButton": "Recuperar Billetera" + "recoverButton": "Recuperar billetera" }, "recoverySentenceEntry": { "header": "Ingrese su Oración de Recuperación", @@ -1257,7 +1257,7 @@ }, "disconnect": { "header": "Desconectar dispositivo KeepKey", - "body": "Lamentablemente, se produjo un error al recuperar/configurar su KeepKey. Desconecte y vuelva a conectar su dispositivo e intente configurarlo nuevamente. Si el problema persiste, comuníquese con el soporte KeepKey." + "body": "Lamentablemente, ocurrió un error al recuperar/configurar tu dispositivo KeepKey. Por favor, desconéctalo y vuelve a conectarlo, luego intenta configurarlo de nuevo. Si el problema persiste, contacta al soporte de KeepKey." } }, "shapeShift": { @@ -1276,7 +1276,7 @@ } }, "confirmPassword": { - "placeholder": "Confirmar Contraseña", + "placeholder": "Confirmar contraseña", "error": { "invalid": "Contraseña debe coincidir", "required": "Se requiere confirmación de contraseña" @@ -1292,7 +1292,7 @@ "wordNumber": "Palabra #%{number}", "info": { "title": "Su Frase Secreta de Recuperación", - "description": "Escriba estas 12 palabras y guárdelas de forma segura fuera de línea. Esta frase de 12 palabras se usa para recuperar las claves privadas de su billetera.", + "description": "Anota estas 12 palabras y guárdalas de forma segura sin conexión. Esta frase de 12 palabras se usa para recuperar las claves privadas de tu billetera.", "warning": "Nota: si pierde su Frase de recuperación secreta, ShapeShift no puede ayudarlo a recuperar su billetera y sus fondos se perderán para siempre." }, "success": { @@ -1306,7 +1306,7 @@ }, "skip": { "title": "¿Omitir este paso?", - "description": "Omitir la copia de seguridad significa que no podrá recuperar su billetera si pierde el acceso a su dispositivo.", + "description": "Omitir la copia de seguridad significa que no podrás recuperar tu billetera si pierdes acceso a tu dispositivo.", "confirmCta": "Sí, he guardado mi frase semilla" } } @@ -1328,7 +1328,7 @@ "qrCode": "Código QR", "addressBook": "Libro de Direcciones", "noEntries": "Ninguna dirección encontrada.", - "yourWallets": "Tus Billeteras", + "yourWallets": "Tus billeteras", "noInternalAccounts": "No se encontraron cuentas.", "addNewAddress": "Agregar Nueva Dirección", "addAddress": { @@ -1347,7 +1347,7 @@ "generic": "Ocurrió un error.", "notEnoughNativeToken": "No hay suficiente %{asset} para cubrir gas", "transactionRejected": "El usuario ha rechazado la transacción.", - "qrPermissions": "Esta función necesita permisos de acceso a la cámara para funcionar. Por favor cambia la configuración de tu navegador.", + "qrPermissions": "Esta función necesita permisos de acceso a la cámara para funcionar. Por favor, cambia la configuración de tu navegador.", "qrDangerousEthUrl": "Los códigos QR contienen una dirección no compatible. Pegue la dirección manualmente.", "noAccountsOnChain": "No hay cuentas en %{chain}" }, @@ -1423,7 +1423,7 @@ "withdrawType": "Tipo de Retiro", "instant": "iInstantáneo", "delayed": "7 - 14 días", - "fee": "%{fee}% %{symbol} tarifa", + "fee": "%{fee}% de comisión en %{symbol}", "noFee": "Sin cargo de %{symbol}", "withdrawFee": "Habrá una tarifa de gas por separado para retirar.", "notEnoughGas": "No hay suficiente %{assetSymbol} para cubrir el gas", @@ -1435,14 +1435,14 @@ } }, "approve": { - "header": "Permita que %{spenderName} use su %{asset}", + "header": "Permite que %{spenderName} use tu %{asset}", "resetHeader": "Restablecer asignación de %{spenderName} para %{asset}", "body": "Necesitamos su permiso para usar su %{asset}", "learnMore": "¿Por qué necesito hacer esto?", "depositFee": "Habrá una tarifa de gas por separado para depositar.", "estimatedGas": "Tarifa Estimada de Gas", "reject": "Rechazar", - "approved": "Aprobada" + "approved": "Aprobado" }, "confirm": { "withdraw": { @@ -1462,9 +1462,9 @@ "withdrawInstantTime": "Instantáneo", "withdrawDelayedTime": "7 - 14 días", "xDays": "%{unbondingDays} días", - "estimatedGas": "Tarifa Estimada de Gas", + "estimatedGas": "Comisión de gas estimada", "notEnoughGas": "No hay suficiente %{assetSymbol} para cubrir el gas", - "missingFundsForGas": "No hay suficientes fondos, necesita %{cryptoAmountHuman} %{assetSymbol} más para completar la transacción", + "missingFundsForGas": "Fondos insuficientes, necesitas %{cryptoAmountHuman} %{assetSymbol} más para completar la transacción", "signBroadcast": "Firmar y Transmitir", "cancel": "Cancelar" }, @@ -1506,10 +1506,10 @@ "CAD": "Dolar Canadiense", "HKD": "Dolar de Hong Kong", "AUD": "Dólar Australiano", - "TWD": "Nuevo Dólar Taiwanés", + "TWD": "Dólar taiwanés", "BRL": "Real Brasileño", "CHF": "Franco Suizo", - "THB": "Baht Tailandés", + "THB": "Baht tailandés", "MXN": "Peso Mexicano", "RUB": "Rublo Ruso", "SAR": "Rial Saudita", @@ -1720,7 +1720,7 @@ "success": "Ahora puedes cerrar esta ventana." }, "errors": { - "unknown": "Error inesperado al comunicarse con la billetera Ledger", + "unknown": "Ocurrió un error inesperado al comunicarse con la billetera Ledger", "noDeviceConnected": "No hay dispositivo Ledger conectado", "multipleDevicesConnected": "Múltiples dispositivos Ledger conectados. Desconecte todos los dispositivos menos uno." }, @@ -1733,7 +1733,7 @@ }, "failure": { "header": "No se puede conectar Ledger", - "body": "No pudimos detectar su Ledger, pero puede conectarse en modo solo lectura." + "body": "No pudimos detectar tu Ledger, pero puedes conectarte en modo de solo lectura." }, "readOnly": { "button": "Conectar como Solo Lectura" @@ -1817,10 +1817,10 @@ "warningExperimental": "Snap Multicadena ShapeShift es función nueva y experimental que se proporciona \"tal cual\"", "warningBackup": "Asegúrese tener copia de su frase semilla de MetaMask. Cualquier fondo que envíe a cadenas que no sean EVM usando este Snap se dirigirá a la cuenta predeterminada configurada con MetaMask.", "agreeIntro": "Antes de continuar por favor lea lo siguiente:", - "agreeItem1": "Las Carteras de hardware son NO soportado", + "agreeItem1": "Las billeteras de hardware NO son compatibles", "agreeItem2": "Solo se admite la cuenta n.° 1 en MetaMask para las cadenas adicionales que proporciona Snap Multicadena ShapeShift", - "agreeItem3": "Para utilizar cadenas Ethereum existentes por MetaMask, debe conectar Cuenta n.° 1 a ShapeShift en MetaMask", - "agreeItem4": "Al habilitar Snap Multicadena ShapeShift, usted reconoce que lo utiliza bajo su propio riesgo.", + "agreeItem3": "Para usar las cadenas Ethereum existentes de MetaMask, debes conectar la Cuenta #0 a ShapeShift en MetaMask", + "agreeItem4": "Al habilitar el ShapeShift Multichain Snap, reconoces que lo usas bajo tu propio riesgo", "readAndUnderstood": "He leído y entiendo", "seedBackedUp": "Hice copia de seguridad de mi frase semilla de MetaMask", "acceptInstall": "Confirmar e instalar", @@ -1850,21 +1850,21 @@ "load": { "error": { "delete": "No se puede eliminar tu billetera, lo siento.", - "noWallet": "No tienes billeteras guardados", + "noWallet": "No tienes billeteras guardadas", "pair": "No se puede emparejar su billetera", "fetchingWallets": "Se produjo un error al obtener las billeteras." }, - "header": "Billeteras Guardadas", + "header": "Billeteras guardadas", "forgetWallet": "Olvidar Billetera", "confirmForget": "¿Estás seguro de que quieres olvidar %{wallet}?", - "confirmForgetBody": "No podrás acceder a tu billetera si no realizas una copia de seguridad de la misma." + "confirmForgetBody": "No podrás acceder a tu billetera si no hiciste una copia de seguridad." }, "import": { "header": "Importa tu billetera", "keystoreHeader": "Importa tu billetera keystore", "body": "Escriba o pegue su frase de recuperación secreta en minúsculas, sin comas ni números y con un solo espacio entre cada palabra.", "button": "Siguiente", - "secretRecoveryPhraseError": "Ingrese su frase de recuperación secreta con un solo espacio entre palabras. Omita comas, retornos o carácter adicional.", + "secretRecoveryPhraseError": "Ingresa tu Frase de Recuperación Secreta con un solo espacio entre palabras. Omite comas, saltos de línea o cualquier carácter adicional.", "secretRecoveryPhraseRequired": "Frase de Recuperación Secreta requerida", "secretRecoveryPhraseTooShort": "Frase de Recuperación Secreta demasiado corta", "dragAndDrop": "Arrastre y Soltar o elija archivo", @@ -1887,7 +1887,7 @@ "showWords": "Mostrar Palabras" }, "start": { - "header": "Billetera ShapeShift", + "header": "ShapeShift Wallet", "selectHeader": "Importar Billetera", "body": "Puede tener múltiples billeteras ShapeShift. Puede cargar, crear o importar usando una Frase de recuperación secreta.", "selectBody": "Importar billetera usando tu frase de recuperación secreta o cargando tu archivo keystore.", @@ -1900,7 +1900,7 @@ "importKeystore": "Importar Archivo Keystore" }, "success": { - "encryptingWallet": "Cifrando su billetera... si su navegador solicita almacenar datos en almacenamiento persistente, clic en 'Permitir'.", + "encryptingWallet": "Cifrando tu billetera... si tu navegador pide almacenar datos en almacenamiento persistente, haz clic en 'Permitir'.", "header": "Billetera Conectado", "success": "Ahora puedes cerrar esta ventana.", "error": "Hubo un error al conectar tu billetera" @@ -1951,7 +1951,7 @@ "multiChain": { "title": "Se admiten varias cadenas simultáneamente", "subTitle": "Nunca necesita cambiar cadenas en la billetera, funciona con cada cadena sin problemas.", - "body": "Al agregar una nueva cadena a ShapeShift, su billetera ShapeShift la admitirá automáticamente." + "body": "Accede a Bitcoin, Ethereum, Solana y muchas más cadenas desde una sola billetera. Intercambia y gestiona tus activos en diferentes redes sin problemas." }, "selfCustody": { "title": "Su Billetera ShapeShift es auto-custodia", @@ -1985,7 +1985,7 @@ "headerSecret": "Secreta", "headerEnd": "y Segura Tu Frase de Recuperación", "subHeader": "Garantizar la seguridad de su Frase Secreta de Recuperación es crucial.", - "description": "Trate su Frase Secreta de Recuperación como si fuera su posesión más valiosa: manténgala segura en todo momento. Un administrador de contraseñas es una excelente medida de seguridad, pero escribir las palabras es aún mejor.", + "description": "Trata tu Frase de Recuperación Secreta como tu posesión más valiosa: mantenla segura en todo momento. Un gestor de contraseñas es muy seguro, pero anotar las palabras es aún mejor.", "bulletPoints": { "share": "No la compartas con nadie más", "lose": "Si la pierdes, no podemos recuperarla" @@ -2001,7 +2001,7 @@ "button": "Continuar para confirmar", "success": { "title": "Estás dentro", - "description": "Has verificado tu Frase Secreta de Recuperación. Asegúrate guardarla de forma segura; es la única manera de recuperar tu billetera.", + "description": "Has verificado tu Frase de Recuperación Secreta. Guárdala de forma segura: es la única manera de recuperar tu billetera.", "viewWallet": "Ver Billetera" } }, @@ -2090,7 +2090,7 @@ "selectChain": "Seleccione la cadena para la que le gustaría crear una cuenta.", "requiresPriorTxHistory": "Solo puede agregar una nueva cuenta si las cuentas existentes tienen un historial de transacciones", "newAccountAdded": "Nueva cuenta de %{name} añadida", - "youCanNowUse": "Ahora puede usar la cuenta %{name} #%{accountNumber}", + "youCanNowUse": "Ahora puedes usar %{name} Cuenta #%{accountNumber}", "showAssets": "Mostrar activos", "hideAssets": "Ocultar activos", "viewAccount": "Ver cuenta", @@ -2100,7 +2100,7 @@ "menuTitle": "Administrar Cuentas", "manageAccounts": { "title": "Administrar Cuentas", - "description": "Estas son las cadenas que has conectado y la cantidad de cuentas que has importado.", + "description": "Estas son las cadenas que has conectado y el número de cuentas que has importado.", "emptyList": "Aún no tienes cuentas conectadas. Agrega una cadena para comenzar.", "addChain": "Añadir una cadena", "addAnotherChain": "Añadir otra cadena" @@ -2141,7 +2141,7 @@ "resetFilters": "Restablecer filtros", "to": "para", "categories": "Categorías", - "dayRange": "Intervalo de días", + "dayRange": "Rango de días", "10days": "10 días", "30days": "30 dias", "90days": "90 dias", @@ -2159,7 +2159,7 @@ "timestamp": "Marca de tiempo", "status": "Estado", "minerFee": "Tarifa de minero", - "minerFeeCurrency": "Moneda de la tarifa del minero", + "minerFeeCurrency": "Moneda de comisión de minero", "inputAmount": "Cantidad de entrada", "inputCurrency": "Moneda de entrada", "inputAddress": "Dirección de entrada", @@ -2291,7 +2291,7 @@ "loanToValue": "Préstamo a valor", "availablePools": "Piscinas disponibles", "pool": "Piscina", - "poolDepth": "Profundidad de la piscina", + "poolDepth": "Profundidad del pool", "poolDepthDescription": "La salud de su pool", "status": "Estado", "statusDescription": "El estado del pool", @@ -2301,7 +2301,7 @@ "totalCollateralDescription": "Garantía total agregada al conjunto de préstamos", "estCollateralizationRatio": "Est. Ratio de colateral", "estCollateralizationRatioDescription": "Actualmente existe índice de garantía fijo del 200%. En el futuro, un ratio dinámico equilibrará el CR máximo y mínimo en función de las condiciones del mercado.", - "collateralizationRatio": "Ratio de garantía colateral", + "collateralizationRatio": "Índice de garantía", "totalBorrowers": "Prestatarios totales", "totalBorrowersDescription": "Número de prestatarios participantes", "myLoanInformation": "Mi información de préstamo", @@ -2345,7 +2345,7 @@ }, "borrowing": { "title": "¿Cómo funciona la toma de préstamos?", - "body": "Prestar en THORChain implica utilizar sus activos depositados como garantía. El préstamo está denominado en USD (TOR) y puede recibirse en varios activos L1. Con un índice de garantía dinámico, puede prestar de manera flexible sin preocuparse por intereses o liquidación." + "body": "Pedir prestado en THORChain implica usar tus activos depositados como garantía para obtener un préstamo. El préstamo está denominado en USD (TOR) y puede recibirse en varios activos L1. Con un índice de garantía dinámico, puedes pedir prestado de manera flexible sin preocuparte por intereses o liquidaciones." }, "repayments": { "title": "¿Cómo funciona el reembolso o repago?", @@ -2358,7 +2358,7 @@ "repaymentsDisabled": "Pagos temporalmente inhabilitados.", "borrowingDisabled": "Préstamo temporalmente deshabilitado.", "amountTooLowToReturnCollateral": "Monto demasiado bajo para devolver la garantía", - "amountTooLowToReturnCollateralTooltip": "El pago es demasiado bajo para que se devuelva la garantía. Inténtelo nuevamente con un monto mayor o pague un monto parcial (lo que no devolverá su garantía, pero disminuirá su deuda).", + "amountTooLowToReturnCollateralTooltip": "El pago es demasiado bajo para que se devuelva tu garantía. Inténtalo de nuevo con un monto mayor, o paga un monto parcial (que no devolverá tu garantía, pero reducirá tu deuda).", "amountTooSmallUnknownMinimumTooltip": "El importe de pago que ha introducido es demasiado pequeño. Inténtelo de nuevo con una cantidad mayor.", "repaymentUnavailableTooltip": "Aún no es posible pagar su préstamo. Espere hasta que haya transcurrido el bloqueo de pago.", "repaymentsHaltedTooltip": "Pagos suspendidos temporalmente. Por favor, inténte más tarde." @@ -2404,16 +2404,16 @@ "removeLiquidity": "Retirar liquidez", "initialPricesAndPoolShare": "Precios iniciales y participación en el pool", "pricePerAsset": "%{from} por %{to}", - "symAlert": "Su %{from} se dividirá en exposición 50:50 para %{to} y %{from} al ingresar al grupo.", + "symAlert": "Tu %{from} se dividirá en una exposición 50:50 entre %{to} y %{from} al ingresar al pool.", "withdrawTypeNotAvailable": "Este tipo de retiro no está disponible para este pool.", "incompletePositionDepositAlert": "Posición incompleta, deposite la cantidad correspondiente de %{asset} para finalizar esta posición.", "incompletePositionWithdrawAlert": "Posición incompleta, cancele la posición eliminando el 100% de la liquidez. También puede finalizar la posición a través de \"Agregar liquidez\".", "unsupportedNetworkExplainer": "Tu billetera no está conectada a %{network}. Conecte esta cadena o cambie a una billetera que admita esta red.", - "unsupportedNetworksExplainer": "Tu billetera no está conectada a %{network1} y %{network2}. Conecte esta cadena o cambie a una billetera que admita estas redes.", - "depositsDisabled": "Depósitos Deshabilitados", + "unsupportedNetworksExplainer": "Tu billetera no está conectada a %{network1} ni a %{network2}. Conecta esta cadena o cambia a una billetera que soporte estas redes.", + "depositsDisabled": "Depósitos deshabilitados", "shareOfPool": "Participación de Pool", "totalLiquidity": "Liquidez Total", - "totalVolume": "Volumen Total", + "totalVolume": "Volumen total", "fees24h": "Tarifas 24H", "selectPair": "Seleccione Par", "depositAmounts": "Monto(s) de Depósito", @@ -2503,7 +2503,7 @@ "body": "Stake TCY gana RUNE." }, "tags": { - "liquid-staking": "Staking Líquido", + "liquid-staking": "Staking líquido", "yield": "Rendimiento", "lending": "Préstamo", "rwa": "RWA", @@ -2519,9 +2519,9 @@ "staking": "Staking rFOX", "bridge": "Bridge", "bridgeFunds": "Bridge Fondos", - "bridgeSuccess": "Sus fondos han Bridge exitosamente. Ahora puede continuar Staking.", + "bridgeSuccess": "Tus fondos han sido transferidos con éxito. Ahora puedes continuar con el staking.", "stake": "Stake", - "unstake": "Unstake", + "unstake": "Retirar del staking", "claim": "Reclamar", "rewards": "Recompensas", "chainNotSupportedByWallet": "Cadena no soportada por billetera", @@ -2541,8 +2541,8 @@ "useWalletAddress": "Usar dirección de billetera", "useCustomAddress": "Usar dirección personalizada", "stakeWarning": "Cuando hagas staking de tus %{symbol}, ten en cuenta que el período de bloqueo es %{cooldownPeriod}. Significa que, si decides dejar de hacer staking, tendrás que esperar %{cooldownPeriod} antes de poder reclamar tus fondos.", - "bridgeCta": "Seleccionó %{assetSymbol} en %{originNetwork}, pero necesitará %{assetSymbol} en %{destinationNetwork} para staking. Podemos ayudar a transferir sus fondos a %{destinationNetwork}. ¿Quieres que te guiemos en el proceso?", - "unstakeWarning": "Antes de poder reclamar tu %{symbol}, el período de recuperación es %{cooldownPeriod}. Una vez transcurrido, podrás reclamar el monto que retiras de staking.", + "bridgeCta": "Seleccionaste %{assetSymbol} en %{originNetwork}, pero necesitarás %{assetSymbol} en %{destinationNetwork} para hacer staking. Podemos ayudarte a transferir tus fondos a %{destinationNetwork}. ¿Te gustaría que te guiáramos en el proceso?", + "unstakeWarning": "Antes de reclamar tu %{symbol}, el período de espera es de %{cooldownPeriod}. Una vez transcurrido ese tiempo, podrás reclamar tu monto retirado del staking.", "tooltips": { "stakeAmount": "Esta es la cantidad de FOX que Stake", "unstakeAmount": "Cantidad de FOX a Unstake", @@ -2551,12 +2551,12 @@ "unstakePendingCooldown": "Reclamo disponible %{cooldownPeriodHuman}", "cooldownComplete": "El tiempo de enfriamiento finalizó %{cooldownPeriodHuman}" }, - "stakeSuccess": "Has Stake con éxito %{amount} %{symbol}", + "stakeSuccess": "Has hecho staking exitosamente de %{amount} %{symbol}", "stakePending": "Stake %{amount} %{symbol}...", "changeAddressPending": "Cambiar dirección de recompensas RFOX a %{newAddress}", "changeAddressSuccess": "Dirección cambiada para recompensas RFOX a %{newAddress}", "unstakePending": "Solicitando retiro de %{amount} %{symbol}", - "unstakeSuccess": "Una vez transcurrido %{cooldownPeriod} podrás reclamar tu %{amount} %{symbol}", + "unstakeSuccess": "Una vez transcurrido %{cooldownPeriod}, podrás reclamar tu %{amount} %{symbol}", "currentRewardAddress": "Dirección de Recompensa Actual", "newRewardAddress": "Nueva Dirección de Recompensa", "rewardCycleExplainer": "Esto se actualizará para el próximo ciclo de recompensas.", @@ -2589,13 +2589,16 @@ "body": "rFOX término utilizado para describir beneficios y recompensas que recibe al hacer Staking de sus FOX en Arbitrum. Actualmente, bloquea y desbloquea tokens vanilla FOX (en Arbitrum) para emisiones Staking." }, "why": { - "title": "¿Por qué hacer Staking de FOX?" + "title": "¿Por qué hacer Staking de FOX?", + "body": "Hacer staking de tu FOX te permite ganar pagos regulares en USDC del tesoro del DAO, proporcionando un flujo constante de ingresos pasivos en USDC por época. Además, una parte de los ingresos del DAO se destinará a reducir el suministro total de FOX mediante quemas de tokens. El proceso de staking requiere un período mínimo de 28 días para el retiro, fomentando el compromiso y la estabilidad dentro de la comunidad." }, "stake": { - "title": "¿Cómo hago Staking FOX?" + "title": "¿Cómo hago Staking FOX?", + "body": "Para hacer staking de tus FOX, usa la interfaz de staking para bloquear tus tokens FOX en el contrato de staking. Una vez en staking, comienzas a ganar recompensas en USDC por bloque como parte de tus beneficios de staking." }, "unstake": { - "title": "¿Qué pasa cuando dejo de hacer Staking?" + "title": "¿Qué pasa cuando dejo de hacer Staking?", + "body": "Cuando decides retirar del staking, hay un período mínimo de 28 días. Durante este tiempo, tus FOX permanecen bloqueados y dejas de recibir emisiones de USDC. Tras el período de retiro del staking, puedes desbloquear y recuperar tus tokens FOX regulares." }, "cooldown": { "title": "¿Cuánto dura el período de recuperación?", @@ -2606,7 +2609,8 @@ "body": "Sí, puedes tener múltiples cantidades en recuperación. Cada acción tendrá su propio período de 28 días." }, "connect": { - "title": "¿Cómo se relacionan las tarifas totales recaudadas, total Staking FOX, emisiones y cantidad quemado?" + "title": "¿Cómo se relacionan las tarifas totales recaudadas, total Staking FOX, emisiones y cantidad quemado?", + "body": "Las tarifas recaudadas por la DAO están en activos nativos por swapper. Una parte de estos ingresos se convierte y distribuye a los que tienen FOX en staking como recompensas, mientras que otra parte se destina a reducir el suministro total de FOX mediante quema de tokens. El total de FOX en staking influye en la distribución de recompensas, ya que se distribuyen de forma proporcional según la cantidad de FOX en staking. El pool de emisiones representa la cantidad de FOX disponible para recompensas de staking, y la cantidad de quema de FOX es la porción de FOX comprada y quemada." } }, "totals": "rFOX Totales", @@ -2639,7 +2643,7 @@ "claimConfirm": { "dustAmountTooltip": "Se requiere una pequeña cantidad de %{symbol} para identificar su dirección en la red THOR", "networkFeeTooltip": "Esta tarifa de %{symbol} es para procesar la transacción en la cadena de bloques, no es tarifa cobrada por ShapeShift", - "missingFundsForGasAlert": "No hay suficientes %{symbol}; necesitas al menos %{amount} %{symbol} para completar la transacción. Recomendamos enviar un poco más para cubrir las fluctuaciones en las tarifas de red.", + "missingFundsForGasAlert": "%{symbol} insuficiente, necesitas al menos %{amount} %{symbol} para completar la transacción. Recomendamos enviar un poco más para cubrir las comisiones de red fluctuantes.", "confirmTitle": "Confirmar Reclamación", "networkFee": "Tarifa de Red", "confirmAndClaim": "Reclamar y Stake", @@ -2675,10 +2679,10 @@ }, "claimPending": "Reclamando %{amount} %{symbol}...", "claimStatus": { - "pendingSubtitle": "Estamos procesando su reclamo por %{amount} %{symbol}", + "pendingSubtitle": "Reclamando %{amount} %{symbol}", "goBack": "Regresar", "successTitle": "Reclamación exitosa", - "successSubtitle": "Has reclamado con éxito %{amount} TCY", + "successSubtitle": "Reclamaste exitosamente %{amount} TCY", "failedTitle": "Algo salió mal", "failedSubtitle": "Tu reclamación ha fallado. Inténtalo de nuevo." } @@ -2686,7 +2690,7 @@ "markets": { "recommended": "Recomendado", "watchlist": "Mi lista de seguimiento", - "marketsBody": "Descubra las criptomonedas más interesantes. Siga las principales, conozca tokens emergentes, oportunidades DeFi y mucho más. Guarde, comparta e intercambie sus favoritas.", + "marketsBody": "Descubre las criptomonedas más emocionantes. Rastrea los mayores movimientos, tokens emergentes, oportunidades DeFi y mucho más. Guarda, comparte e intercambia tus favoritos.", "watchlistEmpty": { "emptyTitle": "No hay activos en la lista de seguimiento", "emptyBody": "Parece que aún no has marcado ningún activo como favorito. ¡Agrega activos a tu lista de seguimiento ahora!" @@ -2696,13 +2700,13 @@ "emptyBodySwapper": "No se encontraron activos con el filtro actual.", "categories": { "oneClickDefiAssets": { - "title": "Activos DeFi con un Clic", + "title": "Activos DeFi con un clic", "filterTitle": "Tokens de Alto Rendimiento", "subtitle": "¡Descubre el rendimiento que más te conviene! Cambia sin esfuerzo con Portals entre Pools, Vaults, opciones de préstamo y LSD." }, "thorchainDefi": { "title": "DeFi THORChain", - "subtitle": "Obtenga rendimiento nativo de sus activos con THORCHain Savers." + "subtitle": "Gana rendimiento nativo sobre tus activos con THORChain Savers." }, "trending": { "title": "Tendencias", @@ -2736,20 +2740,20 @@ "simulateTitle": "Simulador rFOX", "simulateSubtle": "Simule el rendimiento de staking rFOX", "estimatedRewards": "Recompensas Estimadas", - "depositAmount": "Monto de Depósito", + "depositAmount": "Monto del depósito", "shapeshiftRevenue": "Ingreso ShapeShift", "30days": "30 días" }, "foxFarming": { "title": "Farming+ FOX", - "description": "¿Cansado de migrar tus %{rewardAssetSymbol} de una granja a otra? Simplemente haz stake con tus %{assetSymbol} y gana %{rewardAssetSymbol} a perpetuidad.", + "description": "¿Cansado de migrar tu %{rewardAssetSymbol} de granja en granja? Solo haz staking de tu %{assetSymbol} y gana %{rewardAssetSymbol} indefinidamente.", "totalClaimableRewards": "Recompensas totales reclamables", "totalStakingValue": "Valor total en Staking", "nextEpoch": "Siguiente Epoch" }, "governance": { "title": "Gobernancia", - "description": "Únase al forum y dale forma al futuro DAO.", + "description": "Únete a nosotros en el foro y da forma al futuro del DAO.", "totalVotingPower": "Poder de Voto Total", "noActiveProposals": "No hay propuestas activas disponibles", "noClosedProposals": "No hay propuestas cerradas disponibles" @@ -2772,11 +2776,11 @@ "signMessage": "No se pudo firmar el mensaje.", "broadcastTransaction": "No se pudo transmitir la transacción.", "broadcastTransactionWithMessage": "Error al transmitir la transacción (%{message}).", - "getGasFeeData": "No se pudieron obtener las tarifas de red.", + "getGasFeeData": "Error al obtener las comisiones de red.", "getFeeData": "No se pudieron estimar las tarifas de red.", "getPublicKey": "No se pudo obtener la clave pública de billetera.", "getUtxos": "No se pudieron obtener utxos.", - "getValidator": "No se pudo obtener validador.", + "getValidator": "Error al obtener el validador.", "gridplus": { "wrongSafeCard": "SafeCard incorrecta. Inserte SafeCard correcta y vuelva a intentarlo.", "removeSafeCard": "Retire SafeCard insertada para acceder a billetera interna GridPlus." @@ -2799,7 +2803,7 @@ "open": "Abierto", "expired": "Venció", "cancelled": "Cancelado", - "confirmed": "Confirmado", + "confirmed": "Confirmada", "failed": "Fallido", "pending": "Pendiente", "claimAvailable": "Reclamo Disponible", @@ -2816,43 +2820,51 @@ "startSwapping": "Empezar a Intercambiar" }, "swap": { - "processing": "Intercambio de %{sellAmountAndSymbol} a %{buyAmountAndSymbol} se está procesando.", + "processing": "Tu swap de %{sellAmountAndSymbol} a %{buyAmountAndSymbol} está siendo procesado.", "complete": "Intercambio de %{sellAmountAndSymbol} a %{buyAmountAndSymbol} se ha completado.", - "failed": "Intercambio de %{sellAmountAndSymbol} a %{buyAmountAndSymbol} ha fallado.", + "failed": "Tu swap de %{sellAmountAndSymbol} a %{buyAmountAndSymbol} ha fallado.", "streaming": "Intercambio de %{sellAmountAndSymbol} a %{buyAmountAndSymbol} se está transmitiendo.", - "awaitingApproval": "Su intercambio de %{sellAmountAndSymbol} a %{buyAmountAndSymbol} está esperando aprobación.", - "awaitingSwap": "Su intercambio de %{sellAmountAndSymbol} a %{buyAmountAndSymbol} está esperando ejecución." + "awaitingApproval": "Tu swap de %{sellAmountAndSymbol} a %{buyAmountAndSymbol} está esperando aprobación.", + "awaitingSwap": "Tu swap de %{sellAmountAndSymbol} a %{buyAmountAndSymbol} está esperando ejecución." }, "thorchainLp": { "pairAssets": "%{asset1} y %{asset2}", "withdraw": { - "processing": "Su retiro de %{assetAmountsAndSymbols} del pool %{poolName} se está procesando.", - "complete": "Su retiro de %{assetAmountsAndSymbols} de pool %{poolName} se ha completado." + "processing": "Tu retiro de %{assetAmountsAndSymbols} del pool %{poolName} está procesándose.", + "complete": "Tu retiro de %{assetAmountsAndSymbols} del pool %{poolName} está completo." }, "deposit": { "processing": "Su depósito de %{amount} %{symbol} en el pool %{poolName} se está procesando.", - "complete": "Su depósito de %{amount} %{symbol} al pool %{poolName} se ha completado." + "complete": "Tu depósito de %{amount} %{symbol} al pool %{poolName} está completo." } }, "deposit": { "pending": "Su depósito de %{amount} %{symbol} procesando.", - "complete": "Su depósito de %{amount} %{symbol} completado." + "complete": "Su depósito de %{amount} %{symbol} completado.", + "failed": "Tu depósito de %{amount} %{symbol} ha fallado." }, "withdrawal": { "pending": "Su retiro de %{amount} %{symbol} procesando.", - "complete": "Su retiro de %{amount} %{symbol} completado." + "complete": "Tu retiro de %{amount} %{symbol} está completo.", + "failed": "Tu retiro de %{amount} %{symbol} ha fallado." }, "claim": { "pending": "Su reclamo de %{amount} %{symbol} procesando.", - "complete": "Su reclamo de %{amount} %{symbol} está completo." + "complete": "Su reclamo de %{amount} %{symbol} está completo.", + "failed": "Tu reclamación de %{amount} %{symbol} ha fallado." + }, + "yield": { + "unstakeAvailableIn": "Tu retiro del staking de %{symbol} estará disponible en %{duration}.", + "unstakeReady": "Tu retiro del staking de %{symbol} está listo para reclamar.", + "unstakeClaimed": "Tu retiro del staking de %{symbol} fue reclamado." }, "bridge": { - "processing": "Su bridge de %{sellAmountAndSymbol}.%{sellChainShortName} a %{buyAmountAndSymbol}.%{buyChainShortName} se está procesando.", - "complete": "Su bridge de %{sellAmountAndSymbol}.%{sellChainShortName} a %{buyAmountAndSymbol}.%{buyChainShortName} está completo.", + "processing": "Tu bridge de %{sellAmountAndSymbol}.%{sellChainShortName} a %{buyAmountAndSymbol}.%{buyChainShortName} está siendo procesado.", + "complete": "Tu bridge de %{sellAmountAndSymbol}.%{sellChainShortName} a %{buyAmountAndSymbol}.%{buyChainShortName} está completo.", "initiated": "Se ha iniciado su bridge de %{sellAmountAndSymbol} a %{buyAmountAndSymbol}.", "pendingWithdraw": "Su retiro de %{amountAndSymbol} estará disponible %{timeText}.", "claimAvailable": "Su bridge de %{amountAndSymbol} está disponible para reclamar.", - "failed": "Bridge de %{sellAmountAndSymbol}.%{sellChainShortName} a %{buyAmountAndSymbol}.%{buyChainShortName} ha fallado.", + "failed": "Tu bridge de %{sellAmountAndSymbol}.%{sellChainShortName} a %{buyAmountAndSymbol}.%{buyChainShortName} ha fallado.", "transactionInitiated": "Transacción Iniciada", "claimWithdraw": "Reclamar Retiro", "withdrawTx": "Retirar Tx", @@ -2861,28 +2873,28 @@ "limitOrder": { "placed": "Orden Limite colocada para %{sellAmountAndSymbol} a %{buyAmountAndSymbol}", "complete": "Orden para comprar %{buyAmountAndSymbol} por %{sellAmountAndSymbol} se completó exitosamente.", - "cancelled": "Orden para comprar %{buyAmountAndSymbol} por %{sellAmountAndSymbol} fue cancelada.", + "cancelled": "Tu orden de compra de %{buyAmountAndSymbol} por %{sellAmountAndSymbol} fue cancelada.", "expired": "Orden para comprar %{buyAmountAndSymbol} por %{sellAmountAndSymbol} expiró." }, "rfox": { - "unstakeReady": "Unstake de %{amount} %{symbol} está listo para reclamar.", - "unstakeTxPending": "Unstake de %{amount} %{symbol} está pendiente.", + "unstakeReady": "Tu retiro del staking de %{amount} %{symbol} está listo para reclamar.", + "unstakeTxPending": "Tu retiro del staking de %{amount} %{symbol} está pendiente.", "unstakeTxComplete": "Unstake de %{amount} %{symbol} completado." }, "tcy": { "stakePending": "Su stake de %{amount} %{symbol} procesando...", - "unstakePending": "Unstake de %{amount} %{symbol} se está procesando...", + "unstakePending": "Tu retiro del staking de %{amount} %{symbol} está procesándose...", "stakeComplete": "Su stake de %{amount} %{symbol} está completa.", "unstakeComplete": "Se ha completado Unstake de %{amount} %{symbol}.", "claimReady": "Su reclamo TCY de %{amount} %{symbol} está listo.", - "claimTxPending": "Su reclamo TCY de %{amount} %{symbol} está pendiente.", + "claimTxPending": "Tu reclamo TCY de %{amount} %{symbol} está pendiente.", "claimTxComplete": "Su reclamo TCY de %{amount} %{symbol} ha completado." }, "approve": { "approvalTxPending": "Aprobando a %{contractName} para usar %{amount} %{symbol}.", - "approvalTxComplete": "Aprobado a %{contractName} el uso de %{amount} %{symbol}." + "approvalTxComplete": "Se aprobó %{contractName} para usar %{amount} %{symbol}." }, - "pendingTransactions": "%{count} Pendiente", + "pendingTransactions": "%{count} pendiente(s)", "rewardDistribution": { "pending": { "description": "Su recompensa de %{amountAndSymbol} se está procesando..." @@ -2895,8 +2907,7 @@ "yieldXYZ": { "pageTitle": "Rendimientos", "pageSubtitle": "Descubra y gestione oportunidades de rendimiento en múltiples cadenas", - "actions": { - }, + "actions": {}, "yield": "Rendimiento", "apy": "APY", "apr": "APR", @@ -2908,8 +2919,8 @@ "connectWallet": "Conecta una billetera para ver los rendimientos", "stats": "Estadísticas", "minStake": "Staking Mínimo", - "minDeposit": "Depósito Mínimo", - "rewardSchedule": "Cronograma de Recompensas", + "minDeposit": "Depósito mínimo", + "rewardSchedule": "Calendario de recompensas", "staking": "Staking...", "unstaking": "Retirando Staking...", "depositing": "Depositando...", @@ -2937,8 +2948,8 @@ "pending": "Pendiente", "ready": "Listo", "bestReturn": "Mejor Retorno", - "highestApy": "APY más Alto", - "lowestApy": "APY más Bajo", + "highestApy": "APY más alto", + "lowestApy": "APY más bajo", "highestTvl": "TVL más Alto", "lowestTvl": "TVL más Bajo", "nameAZ": "Nombre (A-Z)", @@ -2982,17 +2993,18 @@ "availableToEarnTooltip": "Saldo inactivo total en activos que tienen oportunidades de rendimiento disponibles.", "apyTooltip": "Rendimiento porcentual anual mostrado por el proveedor. Las tarifas pueden fluctuar con el tiempo.", "perYear": "/yr", - "earningsPerYear": "%{amount} %{symbol} /yr", + "earningsPerYear": "%{amount} %{symbol} /año", "recommendedForYou": "Recomendado para ti", "earn": "Ganar", "providers": "Proveedores", "successStaked": "Has staked con éxito %{amount} %{symbol}", "successUnstaked": "Has retirado staking exitosamente %{amount} %{symbol}", - "successDeposited": "Depositó exitosamente %{amount} %{symbol}", + "cooldownNotice": "Tu retiro estará disponible en %{cooldownDuration}.", + "successDeposited": "Depositaste exitosamente %{amount} %{symbol}", "successWithdrawn": "Retiraste exitosamente %{amount} %{symbol}", "successClaim": "Reclamaste exitosamente %{amount} %{symbol}", "viewPosition": "Ver Posición", - "via": "via", + "via": "vía", "resetAllowance": "Restablecer Asignación", "loading": { "signInWallet": "Iniciar Sesión en Billetera", @@ -3031,7 +3043,7 @@ "aboutProvider": "Acerca de %{provider}", "visitWebsite": "Visitar Sitio Web", "providerDescriptions": { - "morpho": "Morpho es un protocolo en infraestructura de bóveda y mercado monetario, auditado múltiples veces por empresas de seguridad de primer nivel, activo desde 2022, con $2,5 millones en incentivos de recompensas por bugs.", + "morpho": "Morpho es un protocolo de mercado monetario e infraestructura de bóvedas, auditado múltiples veces por empresas de seguridad de primer nivel, activo desde 2022, con $2.5M en incentivos de recompensas por errores.", "morpho-aave": "Morpho es un protocolo en infraestructura de bóveda y mercado monetario, auditado múltiples veces por empresas de seguridad de primer nivel, activo desde 2022, con $2,5 millones en incentivos de recompensas por bugs.", "morpho-compound": "Morpho es un protocolo en infraestructura de bóveda y mercado monetario, auditado múltiples veces por empresas de seguridad de primer nivel, activo desde 2022, con $2,5 millones en incentivos de recompensas por bugs.", "lido": "Lido es un protocolo de staking líquido que permite a usuarios stake ETH mientras mantienen la liquidez mediante stETH. Auditado repetidamente por firmas de seguridad de primer nivel, activo desde 2020 y con $2 millones en recompensas por bugs.", @@ -3040,18 +3052,18 @@ "kamino": "Kamino es una suite DeFi en Solana que unifica préstamos, liquidez y apalancamiento en una sola plataforma. Gestiona un programa Immunefi con una recompensa máxima de hasta $1.5 millones.", "fluid": "Fluid es una capa de liquidez desarrollada por el equipo Instadapp que conecta mercados de préstamos, DEX, préstamos y stablecoins en un sistema eficiente. Auditada repetidamente por firmas de seguridad de primer nivel, activa desde 2024 y con $0.5 millones en recompensas por bugs.", "venus": "Venus es un protocolo de préstamos centrado en la cadena BNB. Prioriza la seguridad mediante auditorías externas y un programa continuo de recompensas por bugs.", - "gearbox": "Gearbox es un protocolo de apalancamiento componible que permite cuentas de crédito que se integran con estrategias DeFi. Auditado repetidamente por firmas de seguridad de primer nivel, activo desde 2021, con $0.2 millones en recompensas por bugs.", - "yearn": "Yearn es un conjunto descentralizado de productos que ayuda a individuos, DAO y otros protocolos a obtener rentabilidad de sus activos digitales. Auditado repetidamente por firmas de seguridad de primer nivel, activo desde 2020, con $0.2 millones en recompensas por bugs.", + "gearbox": "Gearbox es un protocolo de apalancamiento componible que habilita cuentas de crédito integradas con estrategias DeFi. Auditado múltiples veces por empresas de seguridad de primer nivel, activo desde 2021, con $0.2M en incentivos de recompensas por errores.", + "yearn": "Yearn es un conjunto descentralizado de productos que ayuda a personas, DAOs y otros protocolos a ganar rendimiento sobre sus activos digitales. Auditado múltiples veces por empresas de seguridad de primer nivel, activo desde 2020, con $0.2M en incentivos de recompensas por errores.", "spark": "Spark es un protocolo de préstamos descentralizado impulsado por el ecosistema Sky (anteriormente MakerDAO), que permite a usuarios pedir prestado DAI y otras monedas estables a tasas competitivas. Gestiona un programa Immunefi con una recompensa máxima de hasta $5 millones.", - "rocket-pool": "Rocket Pool es un protocolo descentralizado de staking líquido en Ethereum que emite rETH. Auditado repetidamente por firmas de seguridad de primer nivel, activo desde 2021 y con $0.5 millones en recompensas por bugs.", + "rocket-pool": "Rocket Pool es un protocolo descentralizado de staking líquido de Ethereum que emite rETH. Auditado múltiples veces por empresas de seguridad de primer nivel, activo desde 2021, con $0.5M en incentivos de recompensas por errores.", "drift": "Drift es una plataforma descentralizada de intercambios perpetuo y préstamos basada en Solana. Gestiona un programa Immunefi con una recompensa máxima de hasta $0.5 millones." }, "otherYields": "Otros %{symbol} Rendimientos", - "availableToDeposit": "Disponible para Depositar", + "availableToDeposit": "Disponible para depositar", "availableToDepositTooltip": "Cantidad de %{symbol} en su billetera que puede depositar en esta oportunidad de rendimiento.", "getAsset": "Obtener %{symbol}", "manage": "Administrar", - "potentialEarningsAmount": "%{amount}/yr a %{apy}% APY", + "potentialEarningsAmount": "%{amount}/año al %{apy}% APY", "depositNow": "Deposite Ahora", "strategyInfo": "Información de Estrategia", "overview": "Descripción General", @@ -3066,7 +3078,7 @@ "estimatedYearlyEarnings": "Ganancias Anuales Est.", "yieldType": "Tipo de Rendimiento", "yieldTypes": { - "native-staking": "Staking Nativo", + "native-staking": "Staking nativo", "pooled-staking": "Staking en Grupo", "liquid-staking": "Staking Líquido", "staking": "Staking", @@ -3098,7 +3110,7 @@ "reset": "Reiniciar", "disabledMessage": "Perfilador deshabilitado. Haga clic en el icono del ojo para habilitarla.", "toggleAria": "Activar o Desactivar perfilador", - "collapseAria": "Colapsar", + "collapseAria": "Contraer", "expandAria": "Expandir perfilador", "enableProfiling": "Habilitar perfilador", "disableProfiling": "Deshabilitar perfilador", diff --git a/src/assets/translations/fr/main.json b/src/assets/translations/fr/main.json index 7c7abcaca7f..bb9b6323c2a 100644 --- a/src/assets/translations/fr/main.json +++ b/src/assets/translations/fr/main.json @@ -27,7 +27,7 @@ "continue": "Continuer", "approve": "Autoriser", "approveToken": "Autoriser le jeton", - "approveAmount": "Autoriser le montant", + "approveAmount": "Approuver le montant", "approveTo": "Autoriser à", "reset": "Réinitialiser", "confirm": "Confirmer", @@ -37,7 +37,7 @@ "goBack": "Retour", "fiat": "Fiat", "connected": "Connecté", - "trendingTokens": "Jetons tendances", + "trendingTokens": "Jetons tendance", "created": "Créé %{date}", "noResultsFound": "Aucun résultat trouvé.", "noResultsBody": "Il n'y a pas de résultat pour %{searchQuery}. Essayez une nouvelle recherche.", @@ -56,12 +56,12 @@ "confirming": "Confirmation en cours...", "withdrawAndClaim": "Retirer et réclamer", "overview": "Vue d'ensemble", - "connectWallet": "Connecter un porte-monnaie", + "connectWallet": "Connecter le porte-monnaie", "pairing": "Appairage", - "connectWalletToGetStartedWith": "Connectez un porte-monnaie pour commencer à utiliser %{feature}", + "connectWalletToGetStartedWith": "Connectez un porte-monnaie pour commencer avec %{feature}", "connectedWallet": "Porte-monnaie connecté", "crypto": "Crypto", - "walletActions": "Actions porte-monnaie", + "walletActions": "Actions du porte-monnaie", "connectedWalletSettings": "Paramètres Porte-monnaie", "noWallet": "Aucun porte-monnaie connecté", "darkTheme": "Thème sombre", @@ -82,7 +82,7 @@ "happySuccess": "Succès !", "transactionFailed": "Échec de la transaction", "transactionFailedBody": "Échec de la transaction", - "safeProposalQueued": "Proposition SAFE en attente. Signatures : %{currentConfirmations} sur %{confirmationsRequired}.", + "safeProposalQueued": "Proposition SAFE mise en file d'attente. %{currentConfirmations} sur %{confirmationsRequired} signées.", "submitFeedback": "Envoyer un commentaire", "send": "Envoyer", "receive": "Recevoir", @@ -161,7 +161,7 @@ "import": "Importer", "accountsLoading": "Chargement des comptes", "noAccounts": "Aucun compte pour les filtres sélectionnés.", - "sortBy": "Classer par", + "sortBy": "Trier par", "orderBy": "Trier par", "filterBy": "Filtrer par", "filterAndSort": "Filtrer et classer", @@ -207,10 +207,10 @@ "openChat": "Ouvrir le chat", "closeChat": "Fermer le chat", "emptyState": "Comment puis-je vous aider aujourd'hui ?", - "placeholder": "Entrez un message...", + "placeholder": "Saisissez un message...", "stop": "Stop", "send": "Envoyer", - "txStepProgress": "%{completedCount} sur %{totalCount} terminés", + "txStepProgress": "%{completedCount} sur %{totalCount} terminé", "agenticChatTools": { "send": { "title": "Envoyer des cryptos", @@ -345,15 +345,15 @@ "marketCapRank": "Rang de capitalisation boursière", "volume24h": "Volume sur 24h", "volMcap": "Vol/Cap", - "about": "Informations sur", + "about": "À propos de %{symbol}", "noDescription": "Aucune description disponible pour cet actif." }, "receive": { "title": "Recevoir", - "receiveOn": "Recevoir des %{symbol} sur %{network}", + "receiveOn": "Recevoir %{symbol} sur %{network}", "copyAddress": "Copier l'adresse", "copied": "Copié !", - "warning": "N'envoyez que des jetons compatibles avec %{network} à cette adresse" + "warning": "N'envoyez que des jetons compatibles %{network} à cette adresse" }, "getLimitOrders": { "title": "Ordres à cours limité", @@ -395,7 +395,7 @@ "tokens": "Jetons" } }, - "chatHistory": "Historique des chats", + "chatHistory": "Historique des discussions", "newChat": "Nouveau chat", "deleteConversation": "Supprimer la conversation", "deleteConfirmation": "Êtes-vous sûr de vouloir supprimer cette conversation ?", @@ -455,10 +455,10 @@ "rampPage": { "buyTitle": "Achetez des cryptos en quelques secondes", "sellTitle": "Vendez des cryptos en quelques secondes", - "buyBody": "Utilisez une carte de crédit, une carte de débit ou un compte bancaire. Achetez du Bitcoin, de l'Ethereum, de l'USDT, de l'USDC ou d'autres cryptomonnaies populaires. Prestataires sans KYC disponibles.", + "buyBody": "Utilisez une carte de crédit, une carte de débit ou un compte bancaire. Achetez Bitcoin, Ethereum, USDT, USDC ou d'autres cryptomonnaies de premier plan. Fournisseurs sans KYC disponibles.", "sellBody": "Utilisez une carte de crédit, une carte de débit ou un compte bancaire. Vendez du Bitcoin, de l'Ethereum, de l'USDT, de l'USDC ou d'autres cryptomonnaies populaires. Prestataires sans KYC disponibles.", "disclaimer": "*Vous pouvez également vendre des cryptos directement contre de l'argent sur votre compte bancaire.", - "ctaTitle": "Vous pouvez également utiliser ShapeShift avec tous les principaux porte-monnaie pour échanger, gagner des rendements et suivre vos cryptos sur %{chainCount} chaînes", + "ctaTitle": "Vous pouvez aussi utiliser ShapeShift avec les meilleurs porte-monnaies pour trader, générer du rendement et suivre vos cryptos sur %{chainCount} chaînes", "availableAssets": "Actifs disponibles" }, "updateToast": { @@ -498,7 +498,7 @@ }, "fiatRamps": { "title": "Acheter ou Vendre des cryptos", - "titleMessage": "Vous pouvez %{action} des %{asset} en utilisant :", + "titleMessage": "Vous pouvez %{action} %{asset} en utilisant :", "banxa": "Banxa", "mtPelerin": "Mt Pelerin", "onRamper": "OnRamper", @@ -563,10 +563,10 @@ "risks": "Y a-t-il des risques ?" }, "bodies": { - "rateFluctuationInfo": "Le taux de %{assetName} que vous gagnez, le taux annuel de retour (APR), fluctue généralement entre 7% et 20%.", + "rateFluctuationInfo": "Le taux en %{assetName} que vous gagnez, le rendement annuel en pourcentage (APR), fluctue généralement entre 7 % et 20 %.", "amountStakingInfo": "Vous pouvez staker n'importe quel montant en %{assetName} et ils commenceront immédiatement à gagner des récompenses.", "withdrawInfo": "Vous pouvez retirer vos récompenses à tout moment, cela requiert des frais de carburant modestes d'environ 0,01 $.", - "unbondingInfo": "Lorsque vous déstakez vos jetons, ils restent verrouillés durant %{unbondingDays} jours, au cours desquels ils ne sont pas récompensés. Après ces %{unbondingDays} jours, vos %{assetName} retourneront dans votre porte-monnaie principal.", + "unbondingInfo": "Lorsque vous destakez vos jetons, ils restent verrouillés pendant %{unbondingDays} jours, durant lesquels ils ne génèrent pas de récompenses. Après ces %{unbondingDays} jours, vos %{assetName} retourneront dans votre porte-monnaie principal.", "slashingInfo": "Le staking est effectuée grâce un validateur. C'est extrêmement rare, mais si le validateur avec lequel vous avez staké se trompe en autorisant des transactions fausses ou incorrectes, vous pouvez perdre une partie de vos actifs.", "partnerInfo": "Nous avons mitigé ce risque en nous associant à un validateur réputé — qui dispose d'une infrastructure sécurisée, fiable et auditée." } @@ -602,9 +602,9 @@ "claimYour": "Réclamer vos %{opportunity}" }, "saversVaults": { - "description": "Gagnez du rendement sur vos %{asset} grâce aux THORChain Savers Vaults. Il n'y a pas de temps de verrouillage et les récompenses s'accumulent automatiquement. Le rendement sur THORChain provient des frais d'échange et des récompenses de blocs. Le rendement unilatéral est plafonné à la moitié du rendement bilatéral des fournisseurs de liquidité.", - "runePoolDescription": "RUNEPool vous permet de gagner des %{asset} en plus en poolant vos %{asset} avec d'autres. Vous n'avez pas à choisir de pools spécifiques, tout le monde partage les performances globales.", - "runePoolOverviewDescription": "RUNEPool optimise l'utilisation des RUNE en les déposant dans tous les pools de liquidités compatibles POL de THORChain. En regroupant les RUNE dans ces pools, les participants gagnent l'APY combiné mais sont exposés aux pertes impermanentes globales. Au lieu de choisir des pools individuels, les utilisateurs bénéficient de la performance globale, en investissant en réalité dans un indice RUNE et de tous les actifs compatibles POL de THORChain. Cela simplifie la mise à disposition de liquidités et réduit le risque individuel.", + "description": "Gagnez du rendement sur vos %{asset} via les Savers Vaults de THORChain. Il n'y a pas de période de blocage, et les récompenses s'accumulent automatiquement. Le rendement sur THORChain provient des frais de swap et des récompenses de blocs. Le rendement unilatéral est plafonné à la moitié du rendement bilatéral des fournisseurs de liquidité.", + "runePoolDescription": "RUNEPool vous permet de gagner davantage en %{asset} en regroupant vos %{asset} avec d'autres utilisateurs. Vous n'avez pas à choisir des pools spécifiques, tout le monde partage la performance globale.", + "runePoolOverviewDescription": "RUNEPool optimise l'utilisation de RUNE en le déposant dans tous les pools de liquidité activés par POL sur THORChain. En regroupant RUNE dans ces pools, les participants bénéficient de l'APY combiné mais s'exposent à la perte impermanente agrégée. Plutôt que de choisir des pools individuels, les utilisateurs profitent de la performance globale, investissant effectivement dans un index RUNE et tous les actifs activés par POL sur THORChain. Cela simplifie la fourniture de liquidité et réduit le risque individuel.", "vaultCap": "Plafond du Vault", "vaultCapTooltip": "Capacité maximale actuelle pour ce Vault", "haltedDepositTitle": "Les dépôts sont temporairement suspendus.", @@ -621,16 +621,16 @@ "introducingSaversVaults": "Présentation des Savers Vaults", "introducingRunePool": "Présentation de RUNEPool", "risksBody": { - "vaults": "Référez-vous à cet article pour les risques liés aux Savers Vaults.", - "runePool": "Référez-vous à cet article pour les risques liés à RUNEPool." + "vaults": "Consultez cet article pour les risques liés aux savers vaults.", + "runePool": "Consultez cet article pour les risques liés à RUNEPool." }, "timeToBreakEven": { "title": "Temps avant le seuil de rentabilité", "tooltip": "Temps estimé pour couvrir les frais de dépôt et les gains." }, "cannotDepositWhilePendingTx": "Impossible de déposer tant que des Txs sont en attente", - "cannotWithdrawWhilePendingTx": "Impossible de retirer tant que des Txs sont en attente", - "agreeRunePool": "Je comprends que RUNEPool implique à la fois un verrouillage minimum de 30 jours et un risque accru de pertes impermanentes." + "cannotWithdrawWhilePendingTx": "Retrait impossible pendant des transactions en attente", + "agreeRunePool": "Je comprends que RUNEPool impose une période de blocage minimale de 30 jours et un risque accru de perte impermanente." } }, "memoNote": { @@ -680,9 +680,9 @@ }, "withdraw": { "info": { - "title": "Informations sur le retrait", + "title": "Informations de retrait", "description": "Entrez le montant en %{asset} que vous souhaitez retirer.", - "yieldyDescription": "Entrez le montant en %{asset} que vous souhaitez retirer. Les retraits suivants seront combinés et réinitialiseront la durée du retrait.", + "yieldyDescription": "Saisissez le montant en %{asset} que vous souhaitez retirer. Les retraits suivants seront combinés et réinitialiseront le délai de retrait.", "farmingExpiredDescription": "Ce contrat de récompenses de farming est terminé. Vous devez retirer la totalité de votre solde.", "rewardsInfo": "Récompenses que vous recevrez" } @@ -783,7 +783,7 @@ "rfox": { "stake": "Staker", "withdraw": "Retirer", - "unstakeRequest": "Demande de déstake", + "unstakeRequest": "Demande de destake", "setRuneAddress": "Définir l'adresse RUNE", "reward": "Distribution des récompenses" }, @@ -838,7 +838,7 @@ "swapOut": "Échange reçu", "swap": "Échange", "swapRefund": "Remboursement d'échange", - "unstake": "Déstaker", + "unstake": "Destake", "withdraw": "Retrait demandé", "withdrawNative": "Retrait", "withdrawOut": "Retrait reçu" @@ -917,7 +917,7 @@ "assetAddress": "Adresse %{asset}", "verifyAsset": "Vérifier %{asset}", "verifyAddressMessage": "Assurez-vous que vos adresses sont correctes avant de continuer.", - "slippageInfo": "Votre transaction sera annulée si le prix change défavorablement de plus de ce pourcentage.", + "slippageInfo": "Votre transaction sera annulée si le prix évolue défavorablement de plus de ce pourcentage.", "allowanceTooltip": "Le montant que vous allez autoriser le contrat intelligent à utiliser en votre nom.", "searchingRate": "Recherche du meilleur taux...", "noRateAvailable": "Aucun taux disponible.", @@ -972,7 +972,7 @@ "noQuotesAvailableDescription": "Aucun devis n'a été trouvé pour le moment. Essayez de sélectionner une autre paire.", "availableQuotes": "Devis disponibles", "unavailableSwappers": "Échanges indisponibles", - "unlimited": "Illimitée", + "unlimited": "Illimité", "swapsFailed": "%{failedSwaps} échange(s) échoué(s)", "exact": "Exacte", "free": "Gratuit", @@ -994,7 +994,7 @@ "tooltip": { "continueSwapping": "Continuer l'échange pour les détails finaux", "noRateAvailable": "Cela est souvent dû à une liquidité très limitée ou inexistante sur la paire d'échange.", - "minerFee": "Il s'agit des frais de traitement de la transaction sur la blockchain, ce ne sont pas des frais facturés par ShapeShift.", + "minerFee": "Il s'agit des frais de traitement de la transaction sur la blockchain, ce n'est pas un frais facturé par ShapeShift.", "protocolFee": "Il s'agit des frais facturés par le protocole sélectionné pour traiter cette transaction, il ne s'agit pas de frais facturés par ShapeShift", "inputOutputDifference": "La différence estimée entre les valeurs en USD des montants d’entrée et de sortie.", "slippageWithAmount": "Si le prix change de telle manière que vous recevrez moins de %{amount}, votre transaction sera annulée. Il s’agit du montant minimum garanti que vous recevrez.", @@ -1008,13 +1008,13 @@ }, "rateExpired": { "title": "Nouveau taux", - "body": "Votre taux d'échange précédent a expiré. Nous avons récupéré un nouveau taux et mis à jour les montants de vos devis. Veuillez consulter les derniers détails avant de confirmer votre échange.", + "body": "Votre taux de swap précédent a expiré. Nous avons récupéré un nouveau taux et mis à jour vos montants de devis. Veuillez consulter les dernières informations avant de confirmer votre swap.", "cta": "Ok, j'ai compris" } }, "permit2Allowance": { - "title": "Allocation de contrat Permit2", - "tooltip": "Cet échange utilise Permit2, qui nécessite une autorisation unique pour accorder une allocation illimitée au contrat Permit2. Après cette configuration initiale, vous pouvez autoriser les transactions sur n'importe quel protocole pris en charge par Permit2 en signant des messages sans frais de carburant qui accordent des allocations temporaires de 5 minutes." + "title": "Autorisation du contrat Permit2", + "tooltip": "Ce trade utilise Permit2, qui nécessite une approbation unique pour accorder une autorisation illimitée au contrat Permit2. Après cette configuration initiale, vous pouvez autoriser des trades sur tout protocole pris en charge par Permit2 en signant des messages sans gas qui accordent des autorisations temporaires de 5 minutes." }, "permit2Eip712": { "title": "Autoriser le transfert de jetons", @@ -1070,28 +1070,28 @@ "summary": "Afficher le sommaire", "estimatedCompletionTime": "Temps d'exécution estimé", "transactionSuccessful": "Transaction réussie, en attente de confirmations", - "thorchainSwapperVolatilityAcknowledgementMessage": "Le protocole THORCHain subit une certaine volatilité actuellement. Procédez avec une prudence accrue et envisagez les autres routes disponibles.", + "thorchainSwapperVolatilityAcknowledgementMessage": "Le protocole THORChain connaît une période de volatilité. Procédez avec une prudence accrue et envisagez les routes alternatives disponibles.", "temp": { "tradeSuccess": "Échange terminé" }, "hopTitle": { "swap": "Échange via %{swapperName}", - "swapEta": "Échange via %{swapperName} dans ~%{eta}" + "swapEta": "Swap via %{swapperName} en ~%{eta}" }, "transactionTitle": { "bridge": "Échange de %{sellChainName} à %{buyChainName} via %{swapperName}", - "swap": "Échange sur %{sellChainName} via %{swapperName}" + "swap": "Swap sur %{sellChainName} via %{swapperName}" }, "approvalTitle": "Autorisation d'allocation de jetons", "resetTitle": "Réinitialisation d'allocation de jetons", "fiatAmountOnChain": "%{amountFiatFormatted} sur %{chainName}", "quote": { - "cantSetSlippage": "Nous ne parvenons pas à définir un glissement/slippage personnalisé (%{userSlippageFormatted}) pour %{swapperName}", + "cantSetSlippage": "Nous ne pouvons pas définir un glissement personnalisé (%{userSlippageFormatted}) pour %{swapperName}", "gas": "Le carburant pour compléter la transaction avec cet échange.", "slippage": "C'est le glissement/slippage de ce devis.", "timeEstimate": "Il s’agit du temps estimé nécessaire pour que cet échange se termine." }, - "awaitingPermit2Approval": "En attente de transfert de jetons", + "awaitingPermit2Approval": "En attente de transfert de jeton", "awaitingSwap": "En attente d'échange via %{swapperName}", "awaitingApproval": "En attente d'autorisation", "awaitingAllowanceReset": "En attente de réinitialisation d'allocation", @@ -1132,12 +1132,12 @@ "noOpenOrders": "Aucun ordre ouvert pour le moment.", "noHistoricalOrders": "Aucun ordre dans l'historique pour le moment.", "limitPriceIsPercentLowerThanMarket": "Le prix limite est %{percent}% inférieur au prix du marché", - "highCowFeeImpact": "Les frais CoW s'élèvent à %{percentage}% du montant de votre vente (%{cryptoImpact} %{sellAssetSymbol}). Votre ordre pourrait ne pas être exécuté.", + "highCowFeeImpact": "Les frais CoW représentent %{percentage}% de votre montant de vente (%{cryptoImpact} %{sellAssetSymbol}). Votre ordre risque de ne pas s'exécuter.", "awaitingOrderPlacement": "En attente du placement de l'ordre sur %{swapperName}", "awaitingAllowanceApproval": "En attente d'autorisation de l'allocation", "awaitingAllowanceReset": "En attente de réinitialisation de l'allocation", "orderPlacement": "Placer l'ordre sur %{swapperName}", - "explanation": "Lorsque le prix en %{assetSymbol} atteint %{limitPrice}, votre ordre limite vendra %{sellAmount}, vous assurant ainsi de recevoir au moins %{receiveAmount}.", + "explanation": "Lorsque le prix de %{assetSymbol} atteint %{limitPrice}, votre ordre limite vendra automatiquement %{sellAmount}, vous garantissant de recevoir au moins %{receiveAmount}.", "sellBuy": "Vendre → Acheter", "limitExecution": "Limite/Exécution", "statusHead": "Statut", @@ -1179,7 +1179,7 @@ "loadingOrderList": "Chargement de vos ordres à cours limité...", "orderCard": { "warning": { - "insufficientBalance": "Votre porte-monnaie ne dispose actuellement pas d'un solde en %{symbol} suffisant sur %{chainName} pour exécuter cet ordre. L'ordre est toujours ouvert et deviendra exécutable lorsque vous approvisionnerez votre solde en %{symbol} sur %{chainName}.", + "insufficientBalance": "Votre porte-monnaie a actuellement un solde en %{symbol} insuffisant sur %{chainName} pour exécuter cet ordre. L'ordre est toujours ouvert et deviendra exécutable lorsque vous rechargerez votre solde en %{symbol} sur %{chainName}.", "insufficientAllowance": "Cet ordre nécessite qu'une allocation supplémentaire en %{symbol} sur %{chainName} soit approuvée pour que CoW Swap puisse exécuter cet ordre. L'ordre est toujours ouvert et deviendra exécutable une fois l'autorisation d'allocation terminée." } }, @@ -1232,7 +1232,7 @@ "header": "Commencer avec KeepKey", "body": "Votre KeepKey est réglé sur les paramètres d'usine par défaut. Créez un nouveau porte-monnaie ou restaurez un porte-monnaie à l'aide de votre phrase de récupération secrète", "createButton": "Créer un nouveau porte-monnaie", - "recoverButton": "Récupérer un porte-monnaie" + "recoverButton": "Récupérer le porte-monnaie" }, "recoverySentenceEntry": { "header": "Entrez votre phrase de récupération", @@ -1257,7 +1257,7 @@ }, "disconnect": { "header": "Déconnecter l'appareil KeepKey", - "body": "Malheureusement, une erreur s'est produite lors de la récupération/configuration de votre appareil KeepKey. Veuillez déconnecter et reconnecter votre appareil et essayez de configurer votre KeepKey à nouveau. Si le problème persiste, veuillez contacter l'assistance KeepKey." + "body": "Malheureusement, une erreur s'est produite lors de la récupération/configuration de votre appareil KeepKey. Veuillez déconnecter et reconnecter votre appareil, puis réessayer la configuration. Si le problème persiste, veuillez contacter le support KeepKey." } }, "shapeShift": { @@ -1292,7 +1292,7 @@ "wordNumber": "Mot n° %{number}", "info": { "title": "Votre phrase secrète de récupération", - "description": "Écrivez ces 12 mots et stockez-les en toute sécurité hors ligne. Cette phrase de 12 mots est utilisée pour récupérer les clés privées de votre porte-monnaie.", + "description": "Notez ces 12 mots et stockez-les en toute sécurité hors ligne. Cette phrase de 12 mots est utilisée pour récupérer les clés privées de votre porte-monnaie.", "warning": "Remarque : si vous perdez votre Phrase de Récupération Secrète, ShapeShift ne peut pas vous aider à récupérer votre porte-monnaie et vos fonds seront perdus pour toujours." }, "success": { @@ -1306,7 +1306,7 @@ }, "skip": { "title": "Sauter cette étape ?", - "description": "Sauter l'étape de sauvegarde signifie que vous ne pourrez pas récupérer votre porte-monnaie si vous perdez l'accès à votre appareil.", + "description": "Ignorer la sauvegarde signifie que vous ne pourrez pas récupérer votre porte-monnaie si vous perdez l'accès à votre appareil.", "confirmCta": "Oui, j’ai sauvegardé ma phrase de récupération" } } @@ -1328,7 +1328,7 @@ "qrCode": "QR Code", "addressBook": "Carnet d'adresses", "noEntries": "Aucune adresse trouvée.", - "yourWallets": "Vos porte-monnaie", + "yourWallets": "Vos porte-monnaies", "noInternalAccounts": "Aucun compte trouvé.", "addNewAddress": "Ajouter une nouvelle adresse", "addAddress": { @@ -1347,7 +1347,7 @@ "generic": "Une erreur s'est produite.", "notEnoughNativeToken": "Solde %{asset} insuffisant pour couvrir le carburant", "transactionRejected": "L'utilisateur a rejeté la transaction", - "qrPermissions": "Cette fonctionnalité nécessite des autorisations d'accès à la caméra pour fonctionner. Veuillez modifier les paramètres de votre navigateur.", + "qrPermissions": "Cette fonctionnalité nécessite l'accès à la caméra pour fonctionner. Veuillez modifier les paramètres de votre navigateur.", "qrDangerousEthUrl": "Les codes QR contenant une adresse de contrat ne sont pas pris en charge. Veuillez coller l'adresse de destination manuellement.", "noAccountsOnChain": "Aucun compte sur %{chain}" }, @@ -1423,7 +1423,7 @@ "withdrawType": "Type de retrait", "instant": "Instantané", "delayed": "7 à 14 jours", - "fee": "%{fee}% %{symbol} de frais", + "fee": "Frais de %{fee}% en %{symbol}", "noFee": "Pas de frais en %{symbol}", "withdrawFee": "Il y aura des frais de carburant séparés pour effectuer un retirait.", "notEnoughGas": "Solde %{assetSymbol} insuffisant pour couvrir le carburant", @@ -1462,9 +1462,9 @@ "withdrawInstantTime": "Instantané", "withdrawDelayedTime": "7 à 14 jours", "xDays": "%{unbondingDays} jours", - "estimatedGas": "Frais de carburant estimés", + "estimatedGas": "Frais de gas estimés", "notEnoughGas": "Solde %{assetSymbol} insuffisant pour couvrir le carburant", - "missingFundsForGas": "Fonds insuffisants, vous avez besoin de %{cryptoAmountHuman} %{assetSymbol} en plus pour terminer la transaction", + "missingFundsForGas": "Fonds insuffisants, vous avez besoin de %{cryptoAmountHuman} %{assetSymbol} supplémentaires pour compléter la transaction", "signBroadcast": "Signer et diffuser", "cancel": "Annuler" }, @@ -1506,7 +1506,7 @@ "CAD": "Dollar canadien", "HKD": "Dollar de Hong Kong", "AUD": "Dollar australien", - "TWD": "Nouveau dollar taïwanais", + "TWD": "Dollar taïwanais", "BRL": "Réal brésilien", "CHF": "Franc suisse", "THB": "Baht thaïlandais", @@ -1817,10 +1817,10 @@ "warningExperimental": "Le Snap ShapeShift Multichain est une nouvelle fonctionnalité expérimentale, fournie « telle quelle ».", "warningBackup": "Assurez-vous d'avoir sauvegardé votre phrase de récupération MetaMask. Tous les fonds que vous envoyez sur des chaînes non-EVM à l'aide de ce Snap seront dirigés vers le compte par défaut que vous avez créé dans MetaMask.", "agreeIntro": "Avant de continuer, veuillez lire ce qui suit :", - "agreeItem1": "Les porte-monnaie matériels ne sont PAS pris en charge", + "agreeItem1": "Les porte-monnaies matériels NE SONT PAS pris en charge", "agreeItem2": "Seul le Compte #1 dans MetaMask est pris en charge pour les chaînes supplémentaires fournies par le Snap ShapeShift Multichain.", - "agreeItem3": "Pour utiliser les chaînes Ethereum existantes fournies par MetaMask, vous devez connecter le Compte #1 à ShapeShift dans MetaMask", - "agreeItem4": "En activant le Snap ShapeShift Multichain, vous reconnaissez que vous l'utilisez à vos propres risques.", + "agreeItem3": "Pour utiliser les chaînes Ethereum existantes fournies par MetaMask, vous devez connecter le Compte #0 à ShapeShift dans MetaMask", + "agreeItem4": "En activant le ShapeShift Multichain Snap, vous reconnaissez l'utiliser à vos propres risques", "readAndUnderstood": "J'ai lu et compris", "seedBackedUp": "J'ai sauvegardé ma phrase de récupération MetaMask", "acceptInstall": "Confirmer et installer", @@ -1850,11 +1850,11 @@ "load": { "error": { "delete": "Impossible de supprimer votre porte-monnaie, désolé.", - "noWallet": "Vous n'avez pas de porte-monnaie mémorisé", + "noWallet": "Vous n'avez aucun porte-monnaie sauvegardé", "pair": "Impossible d'appairer votre porte-monnaie", "fetchingWallets": "Une erreur s'est produite lors de la récupération des porte-monnaie." }, - "header": "Porte-monnaie mémorisés", + "header": "Porte-monnaies sauvegardés", "forgetWallet": "Oublier ce porte-monnaie", "confirmForget": "Êtes-vous sûr de vouloir oublier %{wallet} ?", "confirmForgetBody": "Vous ne pourrez pas accéder à votre porte-monnaie si vous ne l'avez pas sauvegardé." @@ -1864,7 +1864,7 @@ "keystoreHeader": "Importer votre porte-monnaie Keystore", "body": "Entrez ou collez votre Phrase de Récupération Secrète en minuscules, sans virgule, ni chiffre et avec un seul espace entre chaque mot.", "button": "Suivant", - "secretRecoveryPhraseError": "Entrez votre Phrase de Récupération Secrète en laissant un seul espace entre les mots. Omettez les virgules, les retours à la ligne ou tout autre caractère supplémentaire.", + "secretRecoveryPhraseError": "Saisissez votre Phrase de Récupération Secrète avec un espace entre chaque mot. Omettez toute virgule, retour à la ligne ou caractère supplémentaire.", "secretRecoveryPhraseRequired": "La Phrase de Récupération Secrète est requise", "secretRecoveryPhraseTooShort": "La Phrase de Récupération Secrète est trop courte", "dragAndDrop": "Glisser-déposer ou Choisir un fichier", @@ -1887,7 +1887,7 @@ "showWords": "Montrer les mots" }, "start": { - "header": "Porte-monnaie ShapeShift", + "header": "ShapeShift Wallet", "selectHeader": "Importer un porte-monnaie", "body": "Vous pouvez avoir plusieurs porte-monnaie ShapeShift. Vous pouvez charger un porte-monnaie, importer un porte-monnaie à partir d'une Phrase de Récupération Secrète ou créer un nouveau porte-monnaie.", "selectBody": "Importez votre porte-monnaie en utilisant votre Phrase de Récupération Secrète ou en chargeant votre fichier Keystore.", @@ -1900,7 +1900,7 @@ "importKeystore": "Importer le fichier Keystore" }, "success": { - "encryptingWallet": "Cryptage de votre porte-monnaie... si votre navigateur vous demande de stocker des données dans une mémoire persistante, veuillez cliquer sur 'Autoriser'.", + "encryptingWallet": "Chiffrement de votre porte-monnaie... si votre navigateur vous demande d'autoriser le stockage persistant, cliquez sur « Autoriser ».", "header": "Porte-monnaie connecté", "success": "Vous pouvez maintenant fermer cette fenêtre.", "error": "Une erreur s'est produite lors de la connexion de votre porte-monnaie" @@ -1951,7 +1951,7 @@ "multiChain": { "title": "Plusieurs chaînes sont prises en charge simultanément", "subTitle": "Vous n'avez jamais besoin de changer de chaîne dans le porte-monnaie, il fonctionne avec chaque chaîne de manière transparente.", - "body": "Lorsqu'une nouvelle chaîne est ajoutée sur ShapeShift, votre porte-monnaie ShapeShift la prend en charge automatiquement." + "body": "Accédez à Bitcoin, Ethereum, Solana et bien d'autres chaînes depuis un seul portefeuille. Échangez et gérez vos actifs sur différents réseaux en toute simplicité." }, "selfCustody": { "title": "Votre porte-monnaie ShapeShift est auto-dépositaire", @@ -1985,7 +1985,7 @@ "headerSecret": "Secrète", "headerEnd": "en sécurité", "subHeader": "Assurer la sécurité de votre Phrase de Récupération Secrète est crucial.", - "description": "Traitez votre Phrase de Récupération Secrète comme votre bien le plus précieux : gardez-la en sécurité à tout moment. Un gestionnaire de mots de passe est un bon outil de sécurité, mais écrire les mots est encore mieux.", + "description": "Traitez votre Phrase de Récupération Secrète comme votre bien le plus précieux — gardez-la en sécurité à tout moment. Un gestionnaire de mots de passe est une excellente sécurité, noter les mots est encore mieux.", "bulletPoints": { "share": "Ne la partagez avec personne d'autre", "lose": "Si vous la perdez, nous ne pouvons pas la récupérer" @@ -2001,7 +2001,7 @@ "button": "Continuer pour confirmer", "success": { "title": "C’est fait !", - "description": "Vous avez vérifié votre phrase secrète de récupération. Conservez-la précieusement : c'est le seul moyen de récupérer votre porte-monnaie.", + "description": "Vous avez vérifié votre Phrase de Récupération Secrète. Veillez à la conserver en lieu sûr — c'est le seul moyen de récupérer votre porte-monnaie.", "viewWallet": "Voir le porte-monnaie" } }, @@ -2090,7 +2090,7 @@ "selectChain": "Sélectionnez la chaîne pour laquelle vous souhaitez créer un compte.", "requiresPriorTxHistory": "Vous ne pouvez ajouter un nouveau compte que si le ou les comptes existants ont déjà un historique de transactions", "newAccountAdded": "Nouveau compte %{name} ajouté", - "youCanNowUse": "Vous pouvez maintenant utiliser %{name} Compte #%{accountNumber}", + "youCanNowUse": "Vous pouvez maintenant utiliser le Compte %{name} #%{accountNumber}", "showAssets": "Afficher les actifs", "hideAssets": "Masquer les actifs", "viewAccount": "Voir le compte", @@ -2100,8 +2100,8 @@ "menuTitle": "Gérer les comptes", "manageAccounts": { "title": "Gérer les comptes", - "description": "Ce sont les chaînes que vous avez connectées et le nombre de comptes que vous avez importés.", - "emptyList": "Vous n'avez pas encore de compte connecté. Ajoutez une chaîne pour commencer.", + "description": "Voici les chaînes que vous avez connectées et le nombre de comptes que vous avez importés.", + "emptyList": "Vous n'avez encore aucun compte connecté. Ajoutez une chaîne pour commencer.", "addChain": "Ajouter une chaîne", "addAnotherChain": "Ajouter une autre chaîne" }, @@ -2345,7 +2345,7 @@ }, "borrowing": { "title": "Comment fonctionne l'emprunt ?", - "body": "Emprunter avec THORChain implique d’utiliser vos actifs déposés comme collatéraux pour contracter un prêt. Le prêt est libellé en USD (TOR) et peut être reçu dans divers actifs L1. Avec un ratio de collatéralisation dynamique, vous pouvez emprunter de manière flexible sans vous soucier des intérêts ou de la liquidation" + "body": "L'emprunt sur THORChain consiste à utiliser vos actifs déposés comme collatéral pour contracter un prêt. Le prêt est libellé en USD (TOR) et peut être reçu en différents actifs L1. Grâce à un ratio de collatéralisation dynamique, vous pouvez emprunter flexiblement sans vous soucier des intérêts ni de la liquidation." }, "repayments": { "title": "Comment fonctionne le remboursement ?", @@ -2358,14 +2358,14 @@ "repaymentsDisabled": "Les remboursements sont temporairement désactivés.", "borrowingDisabled": "Les emprunts sont temporairement désactivés.", "amountTooLowToReturnCollateral": "Montant trop petit pour restituer le collatéral", - "amountTooLowToReturnCollateralTooltip": "Le remboursement est trop petit pour que votre collatéral soit restitué. Veuillez réessayer avec un montant plus élevé ou remboursez un montant partiel (ce qui ne vous rendra pas votre collatéral, mais diminuera votre dette).", + "amountTooLowToReturnCollateralTooltip": "Le remboursement est trop faible pour que votre collatéral soit restitué. Veuillez réessayer avec un montant plus élevé, ou effectuez un remboursement partiel (qui ne restituera pas votre collatéral, mais réduira votre dette).", "amountTooSmallUnknownMinimumTooltip": "Le montant du remboursement que vous avez saisi est trop petit. Veuillez réessayer avec un montant plus grand.", "repaymentUnavailableTooltip": "Il n'est pas encore possible de rembourser votre prêt. Veuillez attendre que le délai de remboursement soit écoulé.", "repaymentsHaltedTooltip": "Les remboursements sont temporairement interrompus. Veuillez réessayer plus tard." }, "quote": { "collateral": "Montant total des actifs qui seront utilisés comme garantie afin de couvrir votre prêt", - "debt": "Dette totale que vous devrez en fonction du montant de votre nouveau prêt", + "debt": "Dette totale que vous devrez en fonction de votre nouveau montant de prêt", "repaymentLock": "Délai minimum avant de pouvoir rembourser votre prêt", "collateralizationRatio": "Rapport entre la valeur de votre collatéral et le montant du prêt", "feesPlusSlippage": "Total des frais perçus, y compris les frais L1, le glissement/slippage et les frais de liquidité de THORChain" @@ -2404,12 +2404,12 @@ "removeLiquidity": "Retirer de la liquidité", "initialPricesAndPoolShare": "Prix ​​initiaux et part du pool", "pricePerAsset": "%{from} par %{to}", - "symAlert": "Votre %{from} sera divisé en une exposition 50:50 à %{to} et %{from} dès votre entrée dans le pool.", + "symAlert": "Vos %{from} seront répartis en une exposition 50:50 entre %{to} et %{from} lors de l'entrée dans le pool.", "withdrawTypeNotAvailable": "Ce type de retrait n'est pas disponible pour ce pool.", "incompletePositionDepositAlert": "Cette position est incomplète, veuillez déposer le montant correspondant en %{asset} pour finaliser cette position.", "incompletePositionWithdrawAlert": "Cette position est incomplète, veuillez annuler la position en supprimant 100% de la liquidité. Vous pouvez également finaliser la position via « Ajouter des liquidités ».", "unsupportedNetworkExplainer": "Votre porte-monnaie n'est pas connecté à %{network}. Veuillez connecter cette chaîne ou passez à un porte-monnaie prenant en charge ce réseau.", - "unsupportedNetworksExplainer": "Votre porte-monnaie n'est pas connecté à %{network1} et %{network2}. Veuillez connecter ces chaînes ou passez à un porte-monnaie prenant en charge ces réseaux.", + "unsupportedNetworksExplainer": "Votre porte-monnaie n'est pas connecté à %{network1} et %{network2}. Veuillez connecter cette chaîne ou utiliser un porte-monnaie qui prend en charge ces réseaux.", "depositsDisabled": "Dépôts désactivés", "shareOfPool": "Part du pool", "totalLiquidity": "Liquidité totale", @@ -2503,7 +2503,7 @@ "body": "Stakez des TCY et gagnez des RUNE." }, "tags": { - "liquid-staking": "Staking liquide", + "liquid-staking": "Liquid Staking", "yield": "Rendement", "lending": "Prêts", "rwa": "RWA", @@ -2519,9 +2519,9 @@ "staking": "Staking rFOX", "bridge": "Bridger", "bridgeFunds": "Bridger des fonds", - "bridgeSuccess": "Vos fonds ont été bridgés avec succès. Vous pouvez maintenant poursuivre avec le staking.", + "bridgeSuccess": "Vos fonds ont été bridgés avec succès. Vous pouvez maintenant continuer vers le staking.", "stake": "Staker", - "unstake": "Déstaker", + "unstake": "Destaker", "claim": "Réclamer", "rewards": "Récompenses", "chainNotSupportedByWallet": "Chaîne non prise en charge par le porte-monnaie", @@ -2541,7 +2541,7 @@ "useWalletAddress": "Utiliser l'adresse du porte-monnaie", "useCustomAddress": "Utiliser une adresse personnalisée", "stakeWarning": "Lorsque vous stakez vos jetons %{symbol}, sachez que la période de verrouillage est de %{cooldownPeriod}. Cela signifie que si vous décidez déstaker vos jetons, vous devrez attendre %{cooldownPeriod} avant de pouvoir réclamer vos fonds.", - "bridgeCta": "Vous avez sélectionné %{assetSymbol} sur %{originNetwork}, mais vous aurez besoin de %{assetSymbol} sur %{destinationNetwork} pour staker. Nous pouvons vous aider à transférer vos fonds vers %{destinationNetwork}. Souhaitez-vous que nous vous guidions dans le processus ?", + "bridgeCta": "Vous avez sélectionné %{assetSymbol} sur %{originNetwork}, mais vous aurez besoin de %{assetSymbol} sur %{destinationNetwork} pour staker. Nous pouvons vous aider à bridger vos fonds vers %{destinationNetwork}. Souhaitez-vous que nous vous guidions tout au long du processus ?", "unstakeWarning": "Avant de pouvoir réclamer vos %{symbol}, la période de repos est de %{cooldownPeriod}. Une fois ce délai écoulé, vous pourrez réclamer votre montant déstaké.", "tooltips": { "stakeAmount": "C'est le montant en FOX que vous stakerez", @@ -2551,12 +2551,12 @@ "unstakePendingCooldown": "Réclamation disponible %{cooldownPeriodHuman}", "cooldownComplete": "Temps de repos terminé %{cooldownPeriodHuman}" }, - "stakeSuccess": "Vous avez staké %{amount} %{symbol} avec succès", + "stakeSuccess": "Vous avez staké avec succès %{amount} %{symbol}", "stakePending": "Staking de %{amount} %{symbol} en cours...", "changeAddressPending": "Adresse de récompenses RFOX en cours de changement pour %{newAddress}", "changeAddressSuccess": "Adresse de récompenses RFOX changée pour %{newAddress}", "unstakePending": "Demande de retrait de %{amount} %{symbol}", - "unstakeSuccess": "Une fois %{cooldownPeriod} écoulé(s), vous pourrez réclamer vos %{amount} %{symbol}", + "unstakeSuccess": "Une fois %{cooldownPeriod} écoulé, vous pourrez réclamer vos %{amount} %{symbol}", "currentRewardAddress": "Adresse de récompenses actuelle", "newRewardAddress": "Nouvelle adresse de récompenses", "rewardCycleExplainer": "Cela sera mis à jour pour le prochain cycle de récompenses.", @@ -2589,13 +2589,16 @@ "body": "rFOX est un terme utilisé pour décrire les avantages et les récompenses que vous recevez lorsque vous stakez vos jetons FOX sur Arbitrum. Actuellement, vous verrouillez et déverrouillez les jetons « vanilla » FOX (sur Arbitrum) pour les émissions de staking." }, "why": { - "title": "Pourquoi staker vos FOX ?" + "title": "Pourquoi staker vos FOX ?", + "body": "Staker vos FOX vous permet de percevoir des versements réguliers en USDC depuis la trésorerie du DAO, fournissant un flux constant de revenus passifs en USDC par époque. De plus, une partie des revenus du DAO sera allouée à la réduction de l'offre totale de FOX via des burns de jetons. Le processus de staking impose une période de destaking minimale de 28 jours, favorisant l'engagement et la stabilité au sein de la communauté." }, "stake": { - "title": "Comment staker mes FOX ?" + "title": "Comment staker mes FOX ?", + "body": "Pour staker votre FOX, utilisez l'interface de staking afin de verrouiller vos jetons FOX dans le contrat de staking. Une fois staké, vous commencez à gagner des récompenses en USDC par bloc dans le cadre de vos avantages de staking." }, "unstake": { - "title": "Que se passe-t-il lorsque je déstake ?" + "title": "Que se passe-t-il lorsque je déstake ?", + "body": "Lorsque vous décidez de déstaker, une période minimale de déstaking de 28 jours s'applique. Durant cette période, votre FOX reste verrouillé et vous cessez de recevoir des émissions en USDC. Après la période de déstaking, vous pouvez déverrouiller et récupérer vos jetons FOX." }, "cooldown": { "title": "Quelle est la durée de la période de repos ?", @@ -2606,7 +2609,8 @@ "body": "Oui, vous pouvez avoir plusieurs montants en cours de déstaking. Chaque action de déstaking aura sa propre période de repos de 28 jours." }, "connect": { - "title": "Quel est le rapport entre le total de frais collectés, le total staké en FOX, le pool d'émissions et le montant de FOX brûlés ?" + "title": "Quel est le rapport entre le total de frais collectés, le total staké en FOX, le pool d'émissions et le montant de FOX brûlés ?", + "body": "Les frais collectés par la DAO sont exprimés en actifs natifs par swapper. Une partie de ces revenus est convertie et distribuée aux stakers de FOX sous forme de récompenses, tandis qu'une autre partie est allouée à la réduction de l'offre globale de FOX par le biais de brûlages de jetons. Le total de FOX staké influence la distribution des récompenses, celles-ci étant distribuées au prorata du montant de FOX staké. Le pool d'émissions représente la quantité de FOX disponible pour les récompenses de staking, et le montant de FOX brûlés correspond à la part de FOX achetée et brûlée." } }, "totals": "Totaux rFOX", @@ -2639,7 +2643,7 @@ "claimConfirm": { "dustAmountTooltip": "Un petit montant en %{symbol} est nécessaire pour identifier votre adresse sur le réseau THOR", "networkFeeTooltip": "Il s'agit des frais en %{symbol} pour traiter la transaction sur la blockchain, ce ne sont pas des frais facturés par ShapeShift", - "missingFundsForGasAlert": "Montant en %{symbol} insuffisant, il vous faut au moins %{amount} %{symbol} pour finaliser la transaction. Nous vous recommandons d'envoyer un peu plus afin de couvrir d’éventuelles fluctuations de frais de réseau.", + "missingFundsForGasAlert": "%{symbol} insuffisant, vous avez besoin d'au moins %{amount} %{symbol} pour compléter la transaction. Nous recommandons d'envoyer un peu plus pour couvrir les frais de réseau fluctuants.", "confirmTitle": "Confirmer la réclamation", "networkFee": "Frais de réseau", "confirmAndClaim": "Réclamer et staker", @@ -2675,10 +2679,10 @@ }, "claimPending": "Réclamation de %{amount} %{symbol}...", "claimStatus": { - "pendingSubtitle": "Nous traitons votre réclamation de %{amount} %{symbol}", + "pendingSubtitle": "Réclamation de %{amount} %{symbol} en cours", "goBack": "Retour", "successTitle": "La réclamation est acceptée", - "successSubtitle": "Vous avez réclamé %{amount} TCY avec succès", + "successSubtitle": "Réclamation de %{amount} TCY réussie", "failedTitle": "Quelque chose s'est mal déroulé", "failedSubtitle": "Votre réclamation a échoué. Veuillez réessayer." } @@ -2686,7 +2690,7 @@ "markets": { "recommended": "Recommandé", "watchlist": "Ma liste de suivi", - "marketsBody": "Découvrez les cryptomonnaies les plus intéressantes. Suivez les meilleures performances, les jetons émergents, les opportunités DeFi et bien plus encore. Enregistrez, partagez et échangez vos favoris.", + "marketsBody": "Découvrez les cryptomonnaies les plus prometteuses. Suivez les plus gros mouvements, les jetons émergents, les opportunités DeFi et bien plus encore. Sauvegardez, partagez et tradez vos favoris.", "watchlistEmpty": { "emptyTitle": "Aucun actif dans la liste de suivi", "emptyBody": "Il semble que vous n'ayez pas encore ajouté d'actifs favoris. Commencez dès maintenant à ajouter des actifs à votre liste de suivi pour les surveiller !" @@ -2702,7 +2706,7 @@ }, "thorchainDefi": { "title": "DeFi THORChain", - "subtitle": "Gagnez un rendement natif sur vos actifs avec les THORCHain Savers." + "subtitle": "Gagnez un rendement natif sur vos actifs avec THORChain Savers." }, "trending": { "title": "Tendance", @@ -2742,14 +2746,14 @@ }, "foxFarming": { "title": "Farming de FOX+", - "description": "Vous en avez assez de déplacer vos %{rewardAssetSymbol} d'un farming à l'autre ? Stakez simplement vos %{assetSymbol} et gagnez des %{rewardAssetSymbol} en permanence.", + "description": "Fatigué de migrer vos %{rewardAssetSymbol} de ferme en ferme ? Stakez simplement vos %{assetSymbol} et gagnez des %{rewardAssetSymbol} à perpétuité.", "totalClaimableRewards": "Total des récompenses réclamables", "totalStakingValue": "Valeur totale du staking", "nextEpoch": "Prochaine époque" }, "governance": { "title": "Gouvernance", - "description": "Rejoignez-nous sur le forum et façonnez l’avenir de la DAO.", + "description": "Rejoignez-nous sur le forum et participez à l'avenir du DAO.", "totalVotingPower": "Pouvoir de vote total", "noActiveProposals": "Aucune proposition active disponible", "noClosedProposals": "Aucune proposition fermée disponible" @@ -2772,11 +2776,11 @@ "signMessage": "Échec de la signature du message.", "broadcastTransaction": "Échec de la diffusion de la transaction.", "broadcastTransactionWithMessage": "Échec de la diffusion de la transaction (%{message}).", - "getGasFeeData": "Échec de l'obtention des frais de réseau.", + "getGasFeeData": "Impossible de récupérer les frais de réseau.", "getFeeData": "Échec de l'estimation des frais de réseau.", "getPublicKey": "Échec de l'obtention de la clé publique du porte-monnaie.", "getUtxos": "Échec de l'obtention des UTXO.", - "getValidator": "Échec de l'obtention du validateur.", + "getValidator": "Impossible de récupérer le validateur.", "gridplus": { "wrongSafeCard": "SafeCard incorrecte insérée. Veuillez insérer la SafeCard correcte et réessayer.", "removeSafeCard": "Retirez la carte SafeCard insérée pour accéder au porte-monnaie interne GridPlus." @@ -2816,17 +2820,17 @@ "startSwapping": "Commencer à échanger" }, "swap": { - "processing": "Votre échange de %{sellAmountAndSymbol} contre %{buyAmountAndSymbol} est en cours de traitement.", + "processing": "Votre swap de %{sellAmountAndSymbol} vers %{buyAmountAndSymbol} est en cours de traitement.", "complete": "Votre échange de %{sellAmountAndSymbol} contre %{buyAmountAndSymbol} est terminé.", - "failed": "Votre échange de %{sellAmountAndSymbol} contre %{buyAmountAndSymbol} a échoué.", + "failed": "Votre swap de %{sellAmountAndSymbol} vers %{buyAmountAndSymbol} a échoué.", "streaming": "Votre échange de %{sellAmountAndSymbol} contre %{buyAmountAndSymbol} est en cours de streaming.", - "awaitingApproval": "Votre échange de %{sellAmountAndSymbol} contre %{buyAmountAndSymbol} est en attente d'autorisation.", - "awaitingSwap": "Votre échange de %{sellAmountAndSymbol} contre %{buyAmountAndSymbol} est en attente d'exécution." + "awaitingApproval": "Votre swap de %{sellAmountAndSymbol} vers %{buyAmountAndSymbol} est en attente d'autorisation.", + "awaitingSwap": "Votre swap de %{sellAmountAndSymbol} vers %{buyAmountAndSymbol} est en attente d'exécution." }, "thorchainLp": { "pairAssets": "%{asset1} et %{asset2}", "withdraw": { - "processing": "Votre retrait de %{assetAmountsAndSymbols} du pool %{poolName} est en cours de traitement.", + "processing": "Votre retrait de %{assetAmountsAndSymbols} du pool %{poolName} est en cours.", "complete": "Votre retrait de %{assetAmountsAndSymbols} du pool %{poolName} est terminé." }, "deposit": { @@ -2836,19 +2840,27 @@ }, "deposit": { "pending": "Votre dépôt de %{amount} %{symbol} est en cours de traitement.", - "complete": "Votre dépôt de %{amount} %{symbol} est terminé." + "complete": "Votre dépôt de %{amount} %{symbol} est terminé.", + "failed": "Votre dépôt de %{amount} %{symbol} a échoué." }, "withdrawal": { "pending": "Votre retrait de %{amount} %{symbol} est en cours de traitement.", - "complete": "Votre retrait de %{amount} %{symbol} est terminé." + "complete": "Votre retrait de %{amount} %{symbol} est terminé.", + "failed": "Votre retrait de %{amount} %{symbol} a échoué." }, "claim": { "pending": "Votre réclamation de %{amount} %{symbol} est en cours de traitement.", - "complete": "Votre réclamation de %{amount} %{symbol} est terminée." + "complete": "Votre réclamation de %{amount} %{symbol} est terminée.", + "failed": "Votre réclamation de %{amount} %{symbol} a échoué." + }, + "yield": { + "unstakeAvailableIn": "Votre destake en %{symbol} sera disponible dans %{duration}.", + "unstakeReady": "Votre déstake en %{symbol} est prêt à être réclamé.", + "unstakeClaimed": "Votre déstake en %{symbol} a été réclamé." }, "bridge": { "processing": "Votre bridge de %{sellAmountAndSymbol}.%{sellChainShortName} vers %{buyAmountAndSymbol}.%{buyChainShortName} est en cours de traitement.", - "complete": "Votre bridge de %{sellAmountAndSymbol}.%{sellChainShortName} à %{buyAmountAndSymbol}.%{buyChainShortName} est terminé.", + "complete": "Votre bridge de %{sellAmountAndSymbol}.%{sellChainShortName} vers %{buyAmountAndSymbol}.%{buyChainShortName} est terminé.", "initiated": "Votre bridge de %{sellAmountAndSymbol} ver %{buyAmountAndSymbol} a été initié.", "pendingWithdraw": "Votre retrait de %{amountAndSymbol} sera disponible %{timeText}.", "claimAvailable": "Votre bridge de %{amountAndSymbol} est disponible pour être réclamé.", @@ -2861,17 +2873,17 @@ "limitOrder": { "placed": "Ordre à cours limité de %{sellAmountAndSymbol} contre %{buyAmountAndSymbol} placé", "complete": "Votre ordre d'achat de %{buyAmountAndSymbol} contre %{sellAmountAndSymbol} été exécuté avec succès.", - "cancelled": "Votre ordre d'achat de %{buyAmountAndSymbol} contre %{sellAmountAndSymbol} a été annulé.", + "cancelled": "Votre ordre d'achat de %{buyAmountAndSymbol} pour %{sellAmountAndSymbol} a été annulé.", "expired": "Votre ordre d'achat de %{buyAmountAndSymbol} contre %{sellAmountAndSymbol} a expiré." }, "rfox": { - "unstakeReady": "Votre déstake de %{amount} %{symbol} est prêt à être réclamé.", - "unstakeTxPending": "Votre déstake de %{amount} %{symbol} est en attente.", + "unstakeReady": "Votre destake de %{amount} %{symbol} est prêt à être réclamé.", + "unstakeTxPending": "Votre destake de %{amount} %{symbol} est en attente.", "unstakeTxComplete": "Votre déstake de %{amount} %{symbol} est terminé." }, "tcy": { "stakePending": "Votre stake de %{amount} %{symbol} est en cours de traitement...", - "unstakePending": "Votre déstake de %{amount} %{symbol} est en cours de traitement...", + "unstakePending": "Votre destake de %{amount} %{symbol} est en cours...", "stakeComplete": "Votre stake de %{amount} %{symbol} est terminé.", "unstakeComplete": "Votre déstake de %{amount} %{symbol} est terminé.", "claimReady": "Votre réclamation TCY de %{amount} %{symbol} est prête.", @@ -2880,7 +2892,7 @@ }, "approve": { "approvalTxPending": "Autorisation de %{contractName} pour utiliser %{amount} %{symbol}.", - "approvalTxComplete": "%{contractName} a été autorisé à utiliser %{amount} %{symbol}." + "approvalTxComplete": "%{contractName} autorisé à utiliser %{amount} %{symbol}." }, "pendingTransactions": "%{count} en attente", "rewardDistribution": { @@ -2895,8 +2907,7 @@ "yieldXYZ": { "pageTitle": "Rendements", "pageSubtitle": "Découvrez et gérez les opportunités de rendements sur plusieurs chaînes.", - "actions": { - }, + "actions": {}, "yield": "Rendement", "apy": "APY", "apr": "APR", @@ -2909,7 +2920,7 @@ "stats": "Statistiques", "minStake": "Stake min.", "minDeposit": "Dépôt min.", - "rewardSchedule": "Planning des récompenses", + "rewardSchedule": "Calendrier des récompenses", "staking": "Staking en cours ...", "unstaking": "Unstaking en cours ...", "depositing": "Dépôt en cours ...", @@ -2988,9 +2999,10 @@ "providers": "Fournisseurs", "successStaked": "Vous avez staké %{amount} %{symbol} avec succès", "successUnstaked": "Vous avez unstaké %{amount} %{symbol} avec succès", - "successDeposited": "Vous avez déposé %{amount} %{symbol} avec succès", + "cooldownNotice": "Votre retrait sera disponible dans %{cooldownDuration}.", + "successDeposited": "Vous avez déposé avec succès %{amount} %{symbol}", "successWithdrawn": "Vous avez retiré %{amount} %{symbol} avec succès", - "successClaim": "Vous avez réclamé %{amount} %{symbol} avec succès", + "successClaim": "Vous avez réclamé avec succès %{amount} %{symbol}", "viewPosition": "Voir la position", "via": "via", "resetAllowance": "Réinitialiser l'allocation", @@ -3031,7 +3043,7 @@ "aboutProvider": "Informations sur %{provider}", "visitWebsite": "Visitez le site web", "providerDescriptions": { - "morpho": "Morpho est un protocole d'infrastructure pour les marchés monétaires et les coffres-forts, audité à plusieurs reprises par des sociétés de sécurité renommées, opérationnel depuis 2022, avec 2.5 millions de dollars de primes pour la découverte de bugs.", + "morpho": "Morpho est un protocole d'infrastructure de marché monétaire et de vault, audité à plusieurs reprises par des firmes de sécurité de premier plan, actif depuis 2022, avec 2,5 M$ d'incitations en bug bounty.", "morpho-aave": "Morpho est un protocole d'infrastructure pour les marchés monétaires et les coffres-forts, audité à plusieurs reprises par des sociétés de sécurité renommées, opérationnel depuis 2022, avec 2.5 millions de dollars de primes pour la découverte de bugs.", "morpho-compound": "Morpho est un protocole d'infrastructure pour les marchés monétaires et les coffres-forts, audité à plusieurs reprises par des sociétés de sécurité renommées, opérationnel depuis 2022, avec 2.5 millions de dollars de primes pour la découverte de bugs.", "lido": "Lido est un protocole de staking liquide qui permet aux utilisateurs de staker de l'ETH tout en conservant leur liquidité via stETH. Audité à plusieurs reprises par des entreprises de sécurité renommées, il est opérationnel depuis 2020 et offre 2 millions de dollars de primes pour la découverte de bugs.", @@ -3040,14 +3052,14 @@ "kamino": "Kamino est une suite d'outils DeFi de Solana qui réunit prêts, liquidités et effet de levier sur une seule plateforme. Elle propose un programme ImmuneFi avec une prime maximale de 1.5 million de dollars.", "fluid": "Fluid est une plateforme de liquidités développée par l'équipe Instadapp, qui connecte les marchés de prêts et d'emprunts, des DEX et des stablecoins au sein d'un système performant. Auditée à plusieurs reprises par des sociétés de sécurité renommées, elle est opérationnelle depuis 2024 et offre 0.5 million dollars de primes pour la découverte de bugs.", "venus": "Venus est un protocole de prêts et d'emprunts basé sur la blockchain BNB. Il met l'accent sur la sécurité grâce à des audits réalisés par des tiers et à un programme de primes pour la découverte de bugs.", - "gearbox": "Gearbox est un protocole de levier composable qui permet de créer des comptes de crédit connectés à des stratégies DeFi. Audité par des entreprises de sécurité de renommées, il est opérationnel depuis 2021 et offre 0.2 million dollars de primes pour découverte de bugs.", - "yearn": "Yearn est une suite de produits décentralisés permettant aux particuliers, aux DAO et à d'autres protocoles de générer des revenus sur leurs actifs numériques. Auditée par des entreprises de sécurité renommées, elle est en ligne depuis 2020 et offre 0.2 million de dollars de primes pour la découverte de bugs.", + "gearbox": "Gearbox est un protocole de levier composable permettant des comptes de crédit connectés aux stratégies DeFi. Audité à plusieurs reprises par des firmes de sécurité de premier plan, actif depuis 2021, avec 0,2 M$ d'incitations en bug bounty.", + "yearn": "Yearn est une suite décentralisée de produits aidant les particuliers, les DAOs et d'autres protocoles à générer du rendement sur leurs actifs numériques. Audité à plusieurs reprises par des firmes de sécurité de premier plan, actif depuis 2020, avec 0,2 M$ d'incitations en bug bounty.", "spark": "Spark est un protocole de prêts décentralisés basé sur l'écosystème Sky (anciennement MakerDAO), permettant aux utilisateurs d'emprunter des DAI et d'autres stablecoins à des taux compétitifs. Il propose un programme Immunefi avec une prime maximale de 5 millions de dollars.", - "rocket-pool": "Rocket Pool est un protocole décentralisé de staking liquide sur Ethereum qui émet des rETH. Audité à plusieurs reprises par des entreprises de sécurité renommées, il est opérationnel depuis 2021 et offre 0.5 million de dollars de primes à la découverte de bugs.", + "rocket-pool": "Rocket Pool est un protocole de liquid staking Ethereum décentralisé émettant du rETH. Audité à plusieurs reprises par des firmes de sécurité de premier plan, actif depuis 2021, avec 0,5 M$ d'incitations en bug bounty.", "drift": "Drift est une plateforme décentralisée d'échanges perpétuels et de prêts construite sur Solana. Elle propose un programme Immunefi avec une prime maximale de 0.5 million de dollars." }, "otherYields": "Autres rendements %{symbol}", - "availableToDeposit": "Disponible pour déposer", + "availableToDeposit": "Disponible à déposer", "availableToDepositTooltip": "Il s'agit du montant en %{symbol} dans votre porte-monnaie que vous pouvez déposer dans cette opportunité de rendement.", "getAsset": "Obtenir des %{symbol}", "manage": "Gérer", diff --git a/src/assets/translations/glossary.json b/src/assets/translations/glossary.json new file mode 100644 index 00000000000..98649a81c97 --- /dev/null +++ b/src/assets/translations/glossary.json @@ -0,0 +1,306 @@ +{ + "_meta": { + "description": "Crypto/DeFi terminology glossary for translation. null = never translate (keep in English). Object with locale keys = use approved translation.", + "lastUpdated": "2026-02-20" + }, + "Bitcoin": null, + "BTC": null, + "Ethereum": null, + "ETH": null, + "ShapeShift": null, + "ShapeShift DAO": null, + "FOX": null, + "FOX Token": null, + "rFOX": null, + "THORChain": null, + "RUNE": null, + "Cosmos": null, + "ATOM": null, + "Osmosis": null, + "OSMO": null, + "Arbitrum": null, + "Avalanche": null, + "AVAX": null, + "Base": null, + "BNB Smart Chain": null, + "BNB": null, + "Gnosis": null, + "Optimism": null, + "Polygon": null, + "Solana": null, + "SOL": null, + "DeFi": null, + "NFT": null, + "NFTs": null, + "LP": null, + "DEX": null, + "AMM": null, + "UTXO": null, + "EVM": null, + "ERC-20": null, + "WalletConnect": null, + "MetaMask": null, + "Ledger": null, + "KeepKey": null, + "Coinbase": null, + "XDEFI": null, + "Keplr": null, + "Phantom": null, + "Multichain Snap": null, + "Snap": null, + "GridPlus": null, + "Uniswap": null, + "SushiSwap": null, + "Aave": null, + "Compound": null, + "Yearn": null, + "Curve": null, + "MayaChain": null, + "CowSwap": null, + "Jupiter": null, + "Chainflip": null, + "FOXy": null, + "staking": { + "de": "Staking", + "es": "staking", + "fr": "staking", + "ja": "ステーキング", + "pt": "staking", + "ru": "стейкинг", + "tr": "staking", + "uk": "стейкінг", + "zh": "质押" + }, + "blockchain": { + "de": "Blockchain", + "es": "blockchain", + "fr": "blockchain", + "ja": "ブロックチェーン", + "pt": "blockchain", + "ru": "блокчейн", + "tr": "blok zinciri", + "uk": "блокчейн", + "zh": "区块链" + }, + "wallet": { + "de": "Wallet", + "es": "billetera", + "fr": "portefeuille", + "ja": "ウォレット", + "pt": "carteira", + "ru": "кошелёк", + "tr": "cüzdan", + "uk": "гаманець", + "zh": "钱包" + }, + "token": { + "de": "Token", + "es": "token", + "fr": "jeton", + "ja": "トークン", + "pt": "token", + "ru": "токен", + "tr": "token", + "uk": "токен", + "zh": "代币" + }, + "swap": { + "de": "Swap", + "es": "swap", + "fr": "swap", + "ja": "スワップ", + "pt": "swap", + "ru": "своп", + "tr": "takas", + "uk": "своп", + "zh": "兑换" + }, + "gas": { + "de": "Gas", + "es": "gas", + "fr": "gas", + "ja": "ガス", + "pt": "gas", + "ru": "газ", + "tr": "gas", + "uk": "газ", + "zh": "Gas" + }, + "airdrop": { + "de": "Airdrop", + "es": "airdrop", + "fr": "airdrop", + "ja": "エアドロップ", + "pt": "airdrop", + "ru": "аирдроп", + "tr": "airdrop", + "uk": "аірдроп", + "zh": "空投" + }, + "bridge": { + "de": "Bridge", + "es": "bridge", + "fr": "bridge", + "ja": "ブリッジ", + "pt": "bridge", + "ru": "бридж", + "tr": "köprü", + "uk": "бридж", + "zh": "跨链桥" + }, + "slippage": { + "de": "Slippage", + "es": "deslizamiento", + "fr": "glissement", + "ja": "スリッページ", + "pt": "deslizamento", + "ru": "проскальзывание", + "tr": "kayma", + "uk": "прослизання", + "zh": "滑点" + }, + "impermanent loss": { + "de": "impermanenter Verlust", + "es": "pérdida impermanente", + "fr": "perte impermanente", + "ja": "インパーマネントロス", + "pt": "perda impermanente", + "ru": "непостоянные потери", + "tr": "geçici kayıp", + "uk": "непостійні втрати", + "zh": "无常损失" + }, + "claim": { + "de": "Einfordern", + "es": "reclamar", + "fr": "réclamer", + "ja": "請求", + "pt": "resgatar", + "ru": ["получить", "получение"], + "tr": ["talep etmek", "talep"], + "uk": ["отримати", "отримання"], + "zh": "领取" + }, + "dust": null, + "trade": { + "de": "Handeln", + "es": "intercambiar", + "fr": "échanger", + "ja": "取引", + "pt": "negociar", + "ru": ["торговать", "торговля"], + "tr": ["işlem yapmak", "işlem"], + "uk": ["торгувати", "торгівля"], + "zh": "交易" + }, + "Loan to Value": { + "de": "Beleihungswert", + "es": "relación préstamo-valor", + "fr": "ratio prêt-valeur", + "ja": "LTV", + "pt": "relação empréstimo-valor", + "ru": "соотношение кредита к стоимости", + "tr": "kredi-değer oranı", + "uk": "співвідношення кредиту до вартості", + "zh": "贷款价值比" + }, + "approve": { + "de": "Genehmigen", + "es": "aprobar", + "fr": "approuver", + "ja": "承認", + "pt": "aprovar", + "ru": ["одобрить", "одобрение"], + "tr": "onaylamak", + "uk": ["схвалити", "схвалення"], + "zh": "授权" + }, + "revert": { + "de": "rückgängig machen", + "es": "revertir", + "fr": "annuler", + "ja": "リバート", + "pt": "reverter", + "ru": "откатить", + "tr": "geri almak", + "uk": "скасувати", + "zh": "回滚" + }, + "deposit": { + "de": "Einzahlen", + "es": "depositar", + "fr": "déposer", + "ja": "入金", + "pt": "depositar", + "ru": ["внести", "внесение", "депозит"], + "tr": ["yatırmak", "yatırma"], + "uk": ["внести", "внесення"], + "zh": "存入" + }, + "insufficient funds": { + "de": "unzureichendes Guthaben", + "es": "fondos insuficientes", + "fr": "fonds insuffisants", + "ja": "残高不足", + "pt": "saldo insuficiente", + "ru": "недостаточно средств", + "tr": "yetersiz bakiye", + "uk": "недостатньо коштів", + "zh": "余额不足" + }, + "seed phrase": { + "de": "Seed-Phrase", + "es": "frase semilla", + "fr": "phrase de récupération", + "ja": "シードフレーズ", + "pt": "frase de recuperação", + "ru": "сид-фраза", + "tr": "tohum ifadesi", + "uk": "сід-фраза", + "zh": "助记词" + }, + "streaming swap": { + "de": "Streaming-Tausch", + "es": "intercambio streaming", + "fr": "échange en streaming", + "ja": "ストリーミングスワップ", + "pt": "troca de streaming", + "ru": "потоковый обмен", + "tr": "akış takası", + "uk": "потоковий обмін", + "zh": "流式兑换" + }, + "unstake": { + "de": "Staking beenden", + "es": "retirar del staking", + "fr": "déstaker", + "ja": "ステーク解除", + "pt": "remover stake", + "ru": "снять со стейкинга", + "tr": "stake'i kaldırmak", + "uk": "зняти зі стейкінгу", + "zh": "取消质押" + }, + "restake": { + "de": "Wiederveranlagung", + "es": "restaking", + "fr": "restaking", + "ja": "再ステーキング", + "pt": "restaking", + "ru": "рестейкинг", + "tr": "restaking", + "uk": "рестейкінг", + "zh": "再质押" + }, + "liquidity pool": { + "de": "Liquidity Pool", + "es": "pool de liquidez", + "fr": "pool de liquidités", + "ja": "流動性プール", + "pt": "pool de liquidez", + "ru": "пул ликвидности", + "tr": "likidite havuzu", + "uk": "пул ліквідності", + "zh": "流动资金池" + } +} diff --git a/src/assets/translations/ja/main.json b/src/assets/translations/ja/main.json index 3aa597303d8..de173589537 100644 --- a/src/assets/translations/ja/main.json +++ b/src/assets/translations/ja/main.json @@ -27,7 +27,7 @@ "continue": "次へ", "approve": "承認する", "approveToken": "トークンを承認", - "approveAmount": "金額を承認", + "approveAmount": "承認額", "approveTo": "承認先", "reset": "リセット", "confirm": "確認する", @@ -35,7 +35,7 @@ "activity": "アクティビティ", "reject": "拒否する", "goBack": "戻る", - "fiat": "フィアット", + "fiat": "法定通貨", "connected": "接続済み", "trendingTokens": "トレンドトークン", "created": "作成日 %{date}", @@ -56,12 +56,12 @@ "confirming": "確認しています...", "withdrawAndClaim": "出金と獲得", "overview": "概要", - "connectWallet": "ウォレットを接続する", + "connectWallet": "ウォレットを接続", "pairing": "ペアリング", - "connectWalletToGetStartedWith": "%{feature} を使い始めるにはウォレットを接続してください", - "connectedWallet": "ウォレット接続済み", + "connectWalletToGetStartedWith": "%{feature}を始めるにはウォレットを接続してください", + "connectedWallet": "接続済みウォレット", "crypto": "暗号", - "walletActions": "ウォレットアクション\n", + "walletActions": "ウォレット操作", "connectedWalletSettings": "ウォレットの設定", "noWallet": "ウォレットが接続されていません", "darkTheme": "ダークテーマ", @@ -82,7 +82,7 @@ "happySuccess": "成功!", "transactionFailed": "処理に失敗しました", "transactionFailedBody": "処理に失敗しました", - "safeProposalQueued": "SAFE の提案がキューに追加されました。%{confirmationsRequired} 件中 %{currentConfirmations} 件が署名されました。", + "safeProposalQueued": "SAFEプロポーザルがキューに追加されました。%{confirmationsRequired}件中%{currentConfirmations}件が署名済みです。", "submitFeedback": "フィードバックを送信", "send": "送信", "receive": "受け取る", @@ -137,7 +137,7 @@ "needAsset": "%{asset} が必要ですか?", "buyNow": "今すぐ購入", "manage": "管理", - "view": "ビュー", + "view": "表示", "viewOnly": "表示のみ", "allChains": "すべてのチェーン", "wallet": "ウォレット", @@ -161,12 +161,12 @@ "import": "インポート", "accountsLoading": "アカウントの読み込み中", "noAccounts": "選択したフィルターに該当するアカウントはありません。", - "sortBy": "並べ替える", + "sortBy": "並び替え", "orderBy": "並び替える", "filterBy": "の条件でフィルター", "filterAndSort": "フィルターと並べ替え", "carousel": { - "next": "次", + "next": "次へ", "prev": "前", "dot": "ドット" }, @@ -193,7 +193,7 @@ "boost": "ブースト", "viewOnExplorer": "エクスプローラーで表示", "approval": "承認", - "permit2Approval": "Permit2の承認", + "permit2Approval": "Permit2承認", "network": "ネットワーク", "feeEstimate": "料金見積もり", "list": "リスト" @@ -206,18 +206,18 @@ "aiChat": "AIチャット", "openChat": "チャットを開く", "closeChat": "チャットを閉じる", - "emptyState": "本日はどのようなご用件でしょうか?", - "placeholder": "メッセージを入力してください...", + "emptyState": "今日はどのようなご用件ですか?", + "placeholder": "メッセージを入力...", "stop": "停止", "send": "送信", - "txStepProgress": "%{completedCount} / %{totalCount} 完了", + "txStepProgress": "%{totalCount}件中%{completedCount}件完了", "agenticChatTools": { "send": { "title": "暗号通貨を送信", "receivedFrom": "%{address}から受信", "steps": { "preparation": "送信トランザクションの準備", - "send": "署名してトランザクションを送信する" + "send": "トランザクションに署名して送信" }, "errors": { "prepareFailed": "送信トランザクションの準備に失敗しました", @@ -345,22 +345,22 @@ "marketCapRank": "時価総額ランキング", "volume24h": "24時間ボリューム", "volMcap": "出来高/時価総額", - "about": "について", + "about": "%{symbol}について", "noDescription": "このアセットの説明はありません。" }, "receive": { "title": "受け取る", - "receiveOn": "%{network} で %{symbol} を受信", + "receiveOn": "%{network}で%{symbol}を受け取る", "copyAddress": "アドレスをコピー", "copied": "コピーしました!", - "warning": "このアドレスには %{network} 互換トークンのみを送信してください" + "warning": "%{network}互換のトークンのみこのアドレスに送信してください" }, "getLimitOrders": { "title": "指値注文", "openOrders": "%{count} オープン", "noOrders": "指値注文が見つかりません", "status": { - "open": "Open", + "open": "オープン", "fulfilled": "約定済み", "cancelled": "キャンセル", "expired": "期限切れ", @@ -413,7 +413,7 @@ "error": { "insufficientFunds": "%{amount} のクイック購入に失敗しました。資金が足りません。別の金額を試してみませんか?", "noQuote": "%{amount} のクイック購入に失敗しました。有効なレート(価格情報)を取得できませんでした。", - "failed": "%{amount} のクイック購入に失敗しました。" + "failed": "%{amount}のクイック購入が失敗しました。" } }, "consentBanner": { @@ -453,12 +453,12 @@ } }, "rampPage": { - "buyTitle": "暗号通貨を数秒で購入", - "sellTitle": "暗号通貨を数秒で売却", - "buyBody": "クレジットカード、デビットカード、または銀行口座をご利用いただけます。ビットコイン、イーサリアム、USDT、USDC、その他の主要暗号通貨をご購入いただけます。KYC不要のプロバイダーもご利用いただけます。", + "buyTitle": "暗号通貨をすぐに購入", + "sellTitle": "暗号通貨をすぐに売却", + "buyBody": "クレジットカード、デビットカード、銀行口座を使用できます。Bitcoin、Ethereum、USDT、USDCなどのトップ暗号通貨を購入できます。KYC不要のプロバイダーも利用可能です。", "sellBody": "クレジットカード、デビットカード、または銀行口座をご利用いただけます。ビットコイン、イーサリアム、USDT、USDC、その他の主要暗号通貨を売却できます。KYC不要のプロバイダーもご利用いただけます。", "disclaimer": "*暗号通貨を売却して銀行口座に直接現金化することもできます。", - "ctaTitle": "ShapeShift をすべてのトップウォレットで使用して取引し、利回りを獲得し、%{chainCount} チェーンにわたって暗号資産を追跡することもできます。", + "ctaTitle": "ShapeShiftをトップウォレットと一緒に使って、取引、利回り獲得、%{chainCount}チェーンにわたる暗号資産のトラッキングもできます", "availableAssets": "利用可能な資産" }, "updateToast": { @@ -498,13 +498,13 @@ }, "fiatRamps": { "title": "暗号通貨の売買", - "titleMessage": " %{action}で%{asset} を利用できます", + "titleMessage": "%{asset}を%{action}するには:", "banxa": "Banxa", "mtPelerin": "Mt Pelerin", "onRamper": "OnRamper", "coinbase": "Coinbase", "buy": "買う", - "sell": "売る", + "sell": "売却", "asset": "アセット", "selectAnAssetToBuy": "購入するアセットを選択してください", "selectBody": "暗号通貨のリストから選択してください", @@ -519,7 +519,7 @@ "availableProviders": "利用可能なプロバイダー", "noProvidersAvailable": "利用可能なプロバイダーがありません", "noProvidersBody": "そのアセットのプロバイダーはまだありません", - "notSupported": "%{asset} は %{wallet} でサポートされていません", + "notSupported": "%{asset}は%{wallet}でサポートされていません", "previewPurchase": "購入内容の確認\n", "previewSale": "売却プレビュー" }, @@ -545,7 +545,7 @@ "switchWallet": "ウォレットを切り替える", "disconnect": "切断する", "disconnected": "(切断済み)", - "locked": "(ロックされています)", + "locked": "(ロック済み)", "reconnectWallet": "ウォレットを再接続する", "walletNotConnected": "現在、ウォレットが接続されていません。取引に影響します。", "connecting": "接続中..." @@ -563,10 +563,10 @@ "risks": "リスクはありますか?" }, "bodies": { - "rateFluctuationInfo": "あなたが獲得する %{assetName} の割合、つまり年間収益率 (APR) は、通常 7% ~ 20% の間で変動します。", + "rateFluctuationInfo": "%{assetName}で獲得できる年利回り(APR)は通常7%〜20%の間で変動します。", "amountStakingInfo": "任意の量の %{assetName} をステークすることができ、すぐに報酬の獲得が始まります。", "withdrawInfo": "報酬はいつでも引き出す​​ことができますが、約 $0.01 程度の少額のガス料金が必要です。", - "unbondingInfo": "トークンのステークを解除すると、トークンは %{unbondingDays} 日間ロックされたままになり、その間は報酬を獲得できません。 %{unbondingDays} 日が経過すると、%{assetName} はプライマリ ウォレットに戻ります。", + "unbondingInfo": "トークンのステーク解除後、%{unbondingDays}日間はロックされ、報酬は獲得できません。%{unbondingDays}日後、%{assetName}はメインウォレットに返却されます。", "slashingInfo": "ステーキングはバリデーターを通じて行われます。これは非常にまれですが、ステークしているバリデーターが誤った取引や不正確な取引の通過を許可して台無しになった場合、資産の一部を失う可能性があります。", "partnerInfo": "安全で信頼性が高く、監査済みのインフラを備えた評判の高いバリデーターと提携することで、リスクを軽減しています。" } @@ -602,9 +602,9 @@ "claimYour": "%{opportunity}を獲得しましょう" }, "saversVaults": { - "description": "THORChain Savers Vaultを通じて %{asset} の収益を獲得しましょう。ロックアップの時間はなく、報酬は自動的に蓄積されます。 THORChainの利回りはスワップ手数料とブロック報酬から得られます。片面利回りは流動性プロバイダーの両面利回りの半分に制限されています。", - "runePoolDescription": "RUNEPool では、他のユーザーと %{asset} をプールすることで、より多くの %{asset} を獲得できます。特定のプールを選択する必要はなく、全員が全体のパフォーマンスを共有します。", - "runePoolOverviewDescription": "RUNEPool は、THORChain のすべての POL 対応流動性プールに RUNE を預けることで、RUNE の使用を最適化します。これらのプールに RUNE をプールすることで、参加者は合計 APY を獲得しますが、総変動損失のリスクにさらされます。個々のプールを選択する代わりに、ユーザーは全体的なパフォーマンスの恩恵を受け、RUNE インデックスとすべての THORChain POL 対応資産に効果的に投資します。これにより、流動性の提供が簡素化され、個々のリスクが軽減されます。", + "description": "THORChain Savers Vaultsを通じて%{asset}の利回りを獲得できます。ロックアップ期間はなく、報酬は自動的に蓄積されます。THORChainの利回りはスワップ手数料とブロック報酬から得られます。片側利回りは流動性プロバイダーの両側利回りの半分が上限です。", + "runePoolDescription": "RUNEPoolでは、%{asset}を他のユーザーとプールすることでより多くの%{asset}を獲得できます。特定のプールを選ぶ必要はなく、全体のパフォーマンスを共有します。", + "runePoolOverviewDescription": "RUNEPoolはTHORChainのすべてのPOL対応流動性プールにRUNEを入金することでRUNEの活用を最適化します。これらのプール全体でRUNEをプールすることで、参加者は合計APYを獲得しますが、合計インパーマネントロスのリスクにさらされます。個別プールを選択する代わりに、ユーザーは全体のパフォーマンスから利益を得て、効果的にRUNEインデックスとすべてのTHORChain POL対応資産に投資します。これにより流動性提供が簡素化され、個別リスクが軽減されます。", "vaultCap": "Vaultキャップ", "vaultCapTooltip": "このVaultの現在の最大容量", "haltedDepositTitle": "一時的に入金を停止しております。", @@ -621,16 +621,16 @@ "introducingSaversVaults": "Savers Vaultについて", "introducingRunePool": "RUNEPoolの説明", "risksBody": { - "vaults": "参照する この記事 Savers Vaultに伴うリスクについて。", - "runePool": "参照する この記事 RUNEPool に伴うリスクについて。" + "vaults": "セーバーズボルトに関するリスクはこの記事を参照してください。", + "runePool": "RUNEPoolに関するリスクはこの記事を参照してください。" }, "timeToBreakEven": { "title": "損益分岐点の時間", "tooltip": "入金手数料と収益をカバーするまでの推定時間" }, "cannotDepositWhilePendingTx": "送信保留中は入金できません", - "cannotWithdrawWhilePendingTx": "送信保留中は出金できません", - "agreeRunePool": "RUNEPool には、最低 30 日間のロックアップと、一時的な損失のリスクの上昇の両方があることを理解しています。" + "cannotWithdrawWhilePendingTx": "トランザクション保留中は出金できません", + "agreeRunePool": "RUNEPoolには30日間の最低ロック期間とインパーマネントロスの高いリスクがあることを理解しています。" } }, "memoNote": { @@ -654,7 +654,7 @@ "ended": "終了", "balance": "バランス", "netWorth": "純資産", - "loadingAccounts": "%{portfolioAccountsLoaded} 個のアカウントを読み込んでいます", + "loadingAccounts": "%{portfolioAccountsLoaded}件のアカウントを読み込みました", "loadingMorePositions": "さらに多くのDeFiポジションがまだロード中です", "walletBalanceChange24Hr": "24時間の変動", "earnBody": "アセットをステーキングするか、DeFiに預けることで受動的収入を獲得します。", @@ -682,7 +682,7 @@ "info": { "title": "出金情報", "description": "出金したい%{asset}の金額を入力してください。", - "yieldyDescription": "出金したい%{asset}の金額を入力してください。以降の出金は結合され、出金時間がリセットされます。", + "yieldyDescription": "出金したい%{asset}の量を入力してください。以降の出金は統合され、出金時間がリセットされます。", "farmingExpiredDescription": "このファーミング報酬コントラクトは終了しました。残高全額を引き出す必要があります。", "rewardsInfo": "受け取れる報酬" } @@ -701,7 +701,7 @@ "navBar": { "history": "履歴", "home": "ホーム", - "myWallet": "ウォレット", + "myWallet": "マイウォレット", "dashboard": "ダッシュボード", "assets": "アセット", "accounts": "アカウント", @@ -722,7 +722,7 @@ "tcy": "TCY", "foxEcosystem": "FOXエコシステム", "ecosystem": "エコシステム", - "markets": "市場", + "markets": "マーケット", "tokens": "トークン", "swap": "スワップ", "yields": "利回り", @@ -765,7 +765,7 @@ "common": "取引", "confirmed": "確認済み", "pending": "保留中", - "failed": "失敗しました", + "failed": "失敗", "swap": "スワップ", "amount": "額", "emptyMessage": "%{status} トランザクションがここに表示されます。", @@ -801,7 +801,7 @@ "revoke": "取り消す", "revokeSymbol": "%{symbol} の承認を取り消す", "amountUnavailable": "利用不可", - "withdraw": "出金する", + "withdraw": "出金", "receive": "受け取る" }, "yearn": { @@ -823,7 +823,7 @@ }, "thorchain": { "deposit": "デポジット", - "depositRefund": "デポジットの払い戻し", + "depositRefund": "入金返金", "depositRefundNative": "デポジット+返金", "loanOpen": "ローンオープン", "loanOpenOut": "融資を受けました", @@ -917,7 +917,7 @@ "assetAddress": "%{asset} アドレス", "verifyAsset": "%{asset} を確認してください", "verifyAddressMessage": "続行する前に、アドレスが正しいことを確認してください。", - "slippageInfo": "価格がこのパーセンテージを超えて不利に変化した場合、トランザクションは元に戻ります。", + "slippageInfo": "価格がこの割合を超えて不利に変動した場合、トランザクションはリバートされます。", "allowanceTooltip": "スマートコントラクトの使用許可を与える金額。", "searchingRate": "フェッチ率...", "noRateAvailable": "利用可能なレートはありません。", @@ -970,7 +970,7 @@ "viewTransaction": "トランザクションの表示", "noQuotesAvailable": "利用できる引用はありません", "noQuotesAvailableDescription": "現時点では利用可能な引用が見つかりません。別のペアを選択してください。", - "availableQuotes": "提示レート", + "availableQuotes": "利用可能な見積もり", "unavailableSwappers": "利用できないスワッパー", "unlimited": "無制限", "swapsFailed": "%{failedSwaps} のスワップが失敗しました", @@ -985,7 +985,7 @@ "changeAddress": "アドレスを変更", "changeAddressExplainer": "UTXO ベースのネットワークで暗号通貨を送信すると、トランザクションで残った資金はこのアドレスに送り返されます。", "depositAddress": "入金先アドレス", - "depositAddressExplainer": "これは、資金が処理のために送金されるプロトコルアドレスです。ハードウェアウォレットには、確認のためにこのアドレスが表示されます。", + "depositAddressExplainer": "これは資金が処理のために送られるプロトコルアドレスです。ハードウェアウォレットに確認用のアドレスが表示されます。", "customReceiveAddress": "カスタム受信アドレス", "customReceiveAddressDescription": "この取引のカスタム受信アドレスを入力してください", "thisIsYourCustomReceiveAddress": "これはあなたのカスタム受信アドレスです", @@ -994,7 +994,7 @@ "tooltip": { "continueSwapping": "最終的な詳細について交換を続ける", "noRateAvailable": "多くの場合、取引ペアの流動性が非常に限られているか、まったくないことが原因です。", - "minerFee": "これはブロックチェーン上でトランザクションを処理するための料金であり、ShapeShiftによって請求される料金ではありません。", + "minerFee": "これはブロックチェーン上でトランザクションを処理するための手数料であり、ShapeShiftが請求する手数料ではありません。", "protocolFee": "このトランザクションを処理するために選択されたプロトコルによって請求される料金であり、ShapeShiftによって請求される料金ではありません", "inputOutputDifference": "入力量と出力量のUSD値間の推定差", "slippageWithAmount": "価格が変動し、受け取る金額が %{amount} 未満になる場合、トランザクションは取り消されます。これは受け取ることが保証される最低金額です。", @@ -1008,13 +1008,13 @@ }, "rateExpired": { "title": "新しいレート", - "body": "以前のスワップ レートは期限切れです。新しいレートを取得し、見積額を更新しました。スワップを確認する前に、最新の詳細を確認してください。", + "body": "以前のスワップレートが期限切れになりました。新しいレートを取得し、見積もり額を更新しました。スワップを確認する前に最新の詳細をご確認ください。", "cta": "分かりました" } }, "permit2Allowance": { - "title": "Permit2コントラクと認可", - "tooltip": "この取引は Permit2 を使用します。Permit2 では、Permit2 コントラクトに無制限の許可を与えるために One-timeの承認が必要です。この初期設定の後、一時的な 5 分間の許可を与えるガスフリー メッセージに署名することで、Permit2 がサポートする任意のプロトコルで取引を承認できます。" + "title": "Permit2コントラクト承認枠", + "tooltip": "この取引はPermit2を使用しており、Permit2コントラクトへの無制限の承認枠を付与するための一度の承認が必要です。初期設定後、5分間の一時的な承認枠を付与するガスフリーメッセージに署名することで、Permit2対応プロトコルでの取引を承認できます。" }, "permit2Eip712": { "title": "トークンの転送を許可する", @@ -1028,7 +1028,7 @@ "sellAmountDoesNotCoverFee": "手数料よりも低い金額で売却する", "insufficientFunds": "マイナーの手数料と金額に対して資金が不十分です", "transactionRejected": "ユーザーが取引を拒否しました", - "insufficientFundsForProtocolFee": "%{chainName} の %{symbol} が手数料として不十分です", + "insufficientFundsForProtocolFee": "%{chainName}上の%{symbol}が手数料として不足しています", "unsupportedTradePair": "サポートされていないトレードペア", "noRouteFound": "このペアと金額のルートは見つかりませんでした", "quoteExpired": "見積もりの​​有効期限が切れました。もう一度お試しください。", @@ -1070,28 +1070,28 @@ "summary": "取引概要", "estimatedCompletionTime": "推定完了時間", "transactionSuccessful": "トランザクションが成功しました。確認を待っています", - "thorchainSwapperVolatilityAcknowledgementMessage": "THORCHain プロトコルは不安定な状態にあります。細心の注意を払って進め、追加の利用可能なルートを検討してください。", + "thorchainSwapperVolatilityAcknowledgementMessage": "THORChainプロトコルは変動性を経験しています。十分に注意して進め、利用可能な追加ルートを検討してください。", "temp": { "tradeSuccess": "取引完了" }, "hopTitle": { "swap": "%{swapperName} 経由で交換", - "swapEta": "~%{eta} の %{swapperName} 経由でスワップ" + "swapEta": "%{swapperName}経由で約%{eta}でスワップ" }, "transactionTitle": { "bridge": "%{swapperName} 経由で %{sellChainName} から %{buyChainName} にスワップ", - "swap": "%{swapperName} 経由で %{sellChainName} でスワップします" + "swap": "%{swapperName}経由で%{sellChainName}上でスワップ" }, "approvalTitle": "トークン割り当ての承認", "resetTitle": "トークン許容量のリセット", "fiatAmountOnChain": "%{chainName} の %{amountFiatFormatted}", "quote": { - "cantSetSlippage": "%{swapperName} のカスタム スリッページ (%{userSlippageFormatted}) を設定できません", + "cantSetSlippage": "%{swapperName}にカスタムスリッページ(%{userSlippageFormatted})を設定できません", "gas": "このスワッパーのトランザクションを完了するためのガス代", "slippage": "この提示レートでのスリッページです。", "timeEstimate": "これは、このスワップが完了するまでの推定時間です。" }, - "awaitingPermit2Approval": "トークン転送を待機中", + "awaitingPermit2Approval": "トークン転送待ち", "awaitingSwap": "%{swapperName} 経由でのスワップを待機中", "awaitingApproval": "承認待ち", "awaitingAllowanceReset": "手当のリセットを待機中", @@ -1132,12 +1132,12 @@ "noOpenOrders": "未約定の注文はありません", "noHistoricalOrders": "注文履歴はまだありません。", "limitPriceIsPercentLowerThanMarket": "指値は市場価格より %{percent}% 低いです", - "highCowFeeImpact": "CoW手数料は売却額(%{cryptoImpact} %{sellAssetSymbol})の%{percentage}%です。注文は執行されない可能性があります。", + "highCowFeeImpact": "CoW手数料は売却額の%{percentage}%(%{cryptoImpact} %{sellAssetSymbol})です。注文が執行されない可能性があります。", "awaitingOrderPlacement": "%{swapperName} での注文待ち", "awaitingAllowanceApproval": "利用許可の承認待ち", "awaitingAllowanceReset": "利用許可のリセット待ち", "orderPlacement": "%{swapperName} で注文する", - "explanation": "%{assetSymbol} の価格が %{limitPrice} に達すると、指値注文により自動的に %{sellAmount} が売却され、少なくとも %{receiveAmount} を受け取ることが保証されます。", + "explanation": "%{assetSymbol}の価格が%{limitPrice}に達すると、指値注文が自動的に%{sellAmount}を売却し、少なくとも%{receiveAmount}を受け取ることができます。", "sellBuy": "売る → 買う", "limitExecution": "制限/実行", "statusHead": "状態.", @@ -1179,7 +1179,7 @@ "loadingOrderList": "指値注文を読み込んでいます...", "orderCard": { "warning": { - "insufficientBalance": "この注文の実行には %{chainName} 上の %{symbol} の残高が不足しています。注文は有効な状態で維持され、%{chainName} の %{symbol} 残高を追加すると実行可能になります。", + "insufficientBalance": "ウォレットは現在%{chainName}上での%{symbol}残高が不足しているため、この注文を執行できません。注文はオープンのままで、%{chainName}上の%{symbol}残高を補充すると執行可能になります。", "insufficientAllowance": "この注文の実行には、CoW Swapへの %{chainName} の %{symbol} の追加アローワンスが必要です。注文は有効な状態で維持され、アローワンスの承認後に実行可能となります。" } }, @@ -1257,7 +1257,7 @@ }, "disconnect": { "header": "KeepKeyデバイスを切断する", - "body": "KeepKeyデバイスの復元/セットアップ中にエラーが発生しました。デバイスを切断して再接続し、KeepKeyデバイスのセットアップを再度試してください。問題が解決しない場合は、KeepKeyサポートにお問い合わせください。" + "body": "KeepKeyデバイスの復元/セットアップ中にエラーが発生しました。デバイスを切断して再接続し、KeepKeyデバイスのセットアップを再度お試しください。問題が解決しない場合は、KeepKeyサポートにお問い合わせください。" } }, "shapeShift": { @@ -1276,7 +1276,7 @@ } }, "confirmPassword": { - "placeholder": "パスワードを認証する", + "placeholder": "パスワードを確認", "error": { "invalid": "パスワードが一致している必要があります", "required": "パスワードの確認が必要です" @@ -1286,7 +1286,7 @@ "menuItem": "ウォレットをバックアップしてください", "enterPassword": "続行するにはパスワードを入力してください", "testTitle": "シークレットリカバリーフレーズを確認する", - "title": "バックアップの確認", + "title": "バックアップを確認", "description": "以下のシードフレーズの正しい答えをタップしてください。", "desktopDescription": "この簡単なテストを完了して、すべてが正しく保存されたことを確認してください。", "wordNumber": " #%{number} 番目の単語", @@ -1306,7 +1306,7 @@ }, "skip": { "title": "このステップをスキップしますか?", - "description": "バックアップをスキップすると、デバイスにアクセスできなくなった場合にウォレットを回復できなくなります。", + "description": "バックアップをスキップすると、デバイスへのアクセスを失った場合にウォレットを復元できなくなります。", "confirmCta": "はい、シードフレーズを保存しました" } } @@ -1347,7 +1347,7 @@ "generic": "エラーが発生しました。", "notEnoughNativeToken": "ガス代の十分な %{asset} がありません", "transactionRejected": "ユーザーが取引を拒否しました", - "qrPermissions": "この機能が動作するには、カメラへのアクセス許可が必要です。ブラウザの設定を変更してください。", + "qrPermissions": "この機能にはカメラへのアクセス許可が必要です。ブラウザの設定を変更してください。", "qrDangerousEthUrl": "コントラクトアドレスを含むQRコードはサポートされていません。宛先アドレスを手動で貼り付けてください。", "noAccountsOnChain": "%{chain} にアカウントがありません" }, @@ -1376,7 +1376,7 @@ "availableBalance": "%{balance} 利用可能" }, "status": { - "pendingBody": "%{amount} %{symbol} を送信します" + "pendingBody": "%{amount} %{symbol}を送信中" } }, "receive": { @@ -1423,7 +1423,7 @@ "withdrawType": "出金タイプ", "instant": "即時の", "delayed": "7~14日", - "fee": "%{fee}% %{symbol} 手数料", + "fee": "%{fee}% %{symbol}手数料", "noFee": "%{symbol}手数料なし", "withdrawFee": "出金の際には別途ガス代がかかります。", "notEnoughGas": "ガスをカバーするのに十分な %{assetSymbol} がありません", @@ -1435,14 +1435,14 @@ } }, "approve": { - "header": "%{spenderName} に %{asset} の使用を許可します", + "header": "%{spenderName}が%{asset}を使用することを許可する", "resetHeader": "%{asset} の %{spenderName} の手当をリセットします", "body": "%{asset} を使用するには許可が必要です", "learnMore": "なぜこれを行う必要があるのか?", "depositFee": "入金には別途ガス代がかかります。", "estimatedGas": "ガス代の目安", "reject": "拒否する", - "approved": "承認されました" + "approved": "承認済み" }, "confirm": { "withdraw": { @@ -1462,9 +1462,9 @@ "withdrawInstantTime": "即時の", "withdrawDelayedTime": "7~14日", "xDays": "%{unbondingDays} 日", - "estimatedGas": "ガス代の目安", + "estimatedGas": "推定ガス手数料", "notEnoughGas": "ガス代をカバーするのに十分な %{assetSymbol} がありません", - "missingFundsForGas": "資金が不足しています。トランザクションを完了するにはさらに %{cryptoAmountHuman} %{assetSymbol} が必要です", + "missingFundsForGas": "残高不足です。トランザクションを完了するには%{cryptoAmountHuman} %{assetSymbol}が追加で必要です", "signBroadcast": "署名とブロードキャスト", "cancel": "キャンセルする" }, @@ -1635,7 +1635,7 @@ "noProvider": "Keplrウォレット拡張機能が見つかりません" }, "connect": { - "header": "Keplrのペアリング", + "header": "Keplrをペアリング", "body": "「ペアリング」をクリックし、ポップアップウィンドウから「Keplr」を選択します。", "button": "ペアリング" }, @@ -1651,7 +1651,7 @@ "addFirst": "最初のSafeCardを接続する", "addNew": "新しいセーフカードを追加", "lastConnected": "最終接続日: %{date}", - "connected": "接続", + "connected": "接続済み", "connect": "接続する", "editNameLabel": "名前を編集", "deleteLabel": "削除", @@ -1720,7 +1720,7 @@ "success": "このウィンドウを閉じることができます。" }, "errors": { - "unknown": "Ledgerウォレットとの通信で予期せぬエラーが発生しました", + "unknown": "Ledgerウォレットとの通信中に予期しないエラーが発生しました", "noDeviceConnected": "Ledgerデバイスが接続されていません", "multipleDevicesConnected": "複数の Ledger デバイスが接続されています。1 つのデバイス以外はすべて切断してください。" }, @@ -1733,7 +1733,7 @@ }, "failure": { "header": "Ledgerに接続できません", - "body": "Ledger を検出できませんでしたが、読み取り専用モードで接続できます。" + "body": "Ledgerを検出できませんでしたが、読み取り専用モードで接続できます。" }, "readOnly": { "button": "読み取り専用として接続" @@ -1817,10 +1817,10 @@ "warningExperimental": "ShapeShiftマルチチェーンスナップは新しい実験的な機能であり、現状のまま提供されます。", "warningBackup": "MetaMaskシードフレーズをバックアップしていることを確認してください。このスナップを使用してnon-EVMチェーンに送金した資金は、MetaMaskで設定したデフォルトのアカウントに送られます。", "agreeIntro": "続行する前に、以下をお読みください。", - "agreeItem1": "ハードウェアウォレットは、 ない サポートされてい", + "agreeItem1": "ハードウェアウォレットはサポートされていません", "agreeItem2": "ShapeShiftマルチチェーンスナップが提供する追加チェーンでは、MetaMaskのアカウント#1のみがサポートされています。", - "agreeItem3": "MetaMaskによって提供される既存のイーサリアムチェーンを使用するには、アカウント#1をMetaMaskのShapeShiftに接続する必要があります", - "agreeItem4": "ShapeShiftマルチチェーンスナップを有効にすることにより、ご自身の責任でそれを使用することを認めたものとみなされます", + "agreeItem3": "MetaMaskが提供する既存のEthereumチェーンを使用するには、MetaMaskでアカウント#0をShapeShiftに接続する必要があります", + "agreeItem4": "ShapeShift Multichain Snapを有効にすることで、自己責任で使用することを承認します", "readAndUnderstood": "読んで理解しました", "seedBackedUp": "MetaMaskシードフレーズをバックアップしました", "acceptInstall": "確認してインストールする", @@ -1841,7 +1841,7 @@ "unknown": "WalletConnectとの通信で予期せぬエラーが発生しました" }, "connect": { - "header": "WalletConnectのペアリング", + "header": "WalletConnectをペアリング", "body": "「ペアリング」をクリックし、ポップアップウィンドウから「WalletConnect」を選択します。", "button": "ペアリング" } @@ -1850,21 +1850,21 @@ "load": { "error": { "delete": "ウォレットを削除できません。", - "noWallet": "保存されたウォレットがありません", + "noWallet": "保存済みのウォレットがありません", "pair": "ウォレットをペアリングできません", "fetchingWallets": "ウォレットの取得中にエラーが発生しました。" }, - "header": "保存されたウォレット", + "header": "保存済みウォレット", "forgetWallet": "ウォレットを忘れた", "confirmForget": "%{wallet} を忘れてもよろしいですか?", - "confirmForgetBody": "バックアップしていない場合、ウォレットにアクセスすることはできません。" + "confirmForgetBody": "バックアップしていない場合、ウォレットにアクセスできなくなります。" }, "import": { "header": "ウォレットをインポートする", "keystoreHeader": "キーストアウォレットをインポートする", "body": "シークレットリカバリーフレーズをすべて小文字で入力するか貼り付けます。コンマや数字は使用せず、各単語の間にスペースを 1 つ入れます。", "button": "次へ", - "secretRecoveryPhraseError": "シークレットリカバリーフレーズを単語の間にスペースを 1 つ入れて入力します。カンマ、リターン、または追加の文字は省略します。", + "secretRecoveryPhraseError": "シークレットリカバリーフレーズを単語間に半角スペースを入れて入力してください。カンマ、改行、その他の文字は省略してください。", "secretRecoveryPhraseRequired": "シークレットリカバリーフレーズが必要です", "secretRecoveryPhraseTooShort": "シークレットリカバリーフレーズが短すぎます", "dragAndDrop": "ドラッグ&ドロップまたはファイルを選択", @@ -1887,7 +1887,7 @@ "showWords": "単語を表示する" }, "start": { - "header": "ShapeShiftウォレット", + "header": "ShapeShift ウォレット", "selectHeader": "ウォレットをインポート", "body": "複数のShapeShiftウォレットを持つことができます。ウォレットをロードしたり、シークレットリカバリーフレーズからウォレットをインポートしたり、新しいウォレットを作成したりできます。", "selectBody": "シークレット リカバリ フレーズを使用するか、キーストア ファイルをロードしてウォレットをインポートします。", @@ -1900,7 +1900,7 @@ "importKeystore": "キーストアファイルのインポート" }, "success": { - "encryptingWallet": "ウォレットを暗号化しています...ブラウザが永続ストレージにデータを保存するように要求した場合は、「許可」をクリックしてください。", + "encryptingWallet": "ウォレットを暗号化中です...ブラウザが永続ストレージへのデータ保存を求めた場合は、「許可」をクリックしてください。", "header": "ウォレットが接続されました", "success": "このウィンドウを閉じることができます。", "error": "ウォレットの接続中にエラーが発生しました" @@ -1951,7 +1951,7 @@ "multiChain": { "title": "複数のチェーンが同時にサポートされます", "subTitle": "ウォレット内のチェーンを切り替える必要はなく、各チェーンでシームレスに動作します。", - "body": "新しいチェーンがShapeShiftに追加されると、ShapeShiftウォレットは自動的にそれをサポートします。" + "body": "1つのウォレットからBitcoin、Ethereum、Solanaなど、多数のチェーンにアクセスできます。異なるネットワーク間でシームレスに取引や資産管理を行えます。" }, "selfCustody": { "title": "ShapeShiftウォレットはセルフカストディです", @@ -1985,7 +1985,7 @@ "headerSecret": "秘密", "headerEnd": "リカバリフレーズを補完", "subHeader": "秘密回復フレーズの安全性を確保することは非常に重要です。", - "description": "秘密のリカバリーフレーズは、最も貴重な所有物として扱い、常に安全に保管してください。パスワード マネージャーは優れたセキュリティ対策ですが、単語を書き留めておくとさらに効果的です。", + "description": "シークレットリカバリーフレーズは最も大切なものとして扱い、常に安全に保管してください。パスワードマネージャーは優れたセキュリティ対策ですが、単語を書き留める方がさらに安全です。", "bulletPoints": { "share": "他の人と共有しないでください\n", "lose": "紛失した場合、復旧することはできません" @@ -2001,7 +2001,7 @@ "button": "確認を続ける", "success": { "title": "準備ができました", - "description": "シークレットリカバリーフレーズを確認しまし\nた。ウォレットを復元するには、このフレーズが唯一の方法なので、必ず安全に保管してください。", + "description": "シークレットリカバリーフレーズを確認しました。安全に保管してください。これがウォレットを復元する唯一の方法です。", "viewWallet": "ウォレットを表示" } }, @@ -2090,7 +2090,7 @@ "selectChain": "アカウントを作成したいチェーンを選択します。", "requiresPriorTxHistory": "新しいアカウントを追加できるのは、既存のアカウントに以前の取引履歴がある場合のみです。", "newAccountAdded": "新しい %{name} アカウントが追加されました", - "youCanNowUse": "%{name} アカウント #%{accountNumber} を使用できるようになりました", + "youCanNowUse": "%{name}アカウント#%{accountNumber}を使用できます", "showAssets": "アセットの表示", "hideAssets": "アセットを非表示にする", "viewAccount": "アカウントをみる", @@ -2100,8 +2100,8 @@ "menuTitle": "アカウントの管理", "manageAccounts": { "title": "アカウントの管理", - "description": "これらは、接続したチェーンとインポートしたアカウントの数です。", - "emptyList": "まだアカウントが接続されていません。開始するにはチェーンを追加してください。", + "description": "接続済みのチェーンとインポート済みのアカウント数です。", + "emptyList": "アカウントがまだ接続されていません。チェーンを追加して始めましょう。", "addChain": "チェーンを追加する", "addAnotherChain": "別のチェーンを追加する" }, @@ -2141,7 +2141,7 @@ "resetFilters": "フィルターをリセットする", "to": "に", "categories": "カテゴリー", - "dayRange": "日範囲", + "dayRange": "期間", "10days": "10日", "30days": "30日", "90days": "90日", @@ -2172,7 +2172,7 @@ "minerFee": "マイナー手数料", "date": "日付", "sentTo": "%{address}に送信", - "receivedFrom": "%{address} から受信しました", + "receivedFrom": "%{address}から受信", "today": "今日", "yesterday": "昨日", "thisWeek": "今週", @@ -2291,7 +2291,7 @@ "loanToValue": "価値へのローン", "availablePools": "利用可能なプール", "pool": "プール", - "poolDepth": "プールの深さ", + "poolDepth": "プール深度", "poolDepthDescription": "プールの状態", "status": "状態", "statusDescription": "プールの状態", @@ -2345,7 +2345,7 @@ }, "borrowing": { "title": "借入はどのように機能しますか?", - "body": "THORChainでの借入には、預けた資産を担保として使用してローンを組むことが含まれます。融資は米ドル (TOR) 建てで、さまざまな L1 資産で受け取ることができます。動的な担保比率により、利息や清算の心配なく柔軟に借入できます。" + "body": "THORChainでの借り入れでは、入金した資産を担保としてローンを組みます。ローンはUSD(TOR)建てで、様々なL1資産で受け取ることができます。動的な担保比率により、利息や清算の心配なく柔軟に借り入れできます。" }, "repayments": { "title": "返済はどのように行われますか?", @@ -2358,14 +2358,14 @@ "repaymentsDisabled": "返済は一時的に無効になります。", "borrowingDisabled": "借用は一時的に無効になっています。", "amountTooLowToReturnCollateral": "担保を返還するには金額が低すぎます", - "amountTooLowToReturnCollateralTooltip": "返済額が低すぎるため、担保を返却できません。金額を増やして再度お試しいただくか、一部を返済してください (担保は返却されませんが、負債額は減ります)。", + "amountTooLowToReturnCollateralTooltip": "返済額が低すぎるため担保が返却されません。金額を増やして再度お試しいただくか、一部返済(担保は返却されませんが負債が減少します)をお試しください。", "amountTooSmallUnknownMinimumTooltip": "入力した返済額が少なすぎます。金額を増やして再度お試しください。", "repaymentUnavailableTooltip": "まだローンの返済はできません。返済ロックが経過するまでお待ちください。", "repaymentsHaltedTooltip": "返済は一時停止されています。しばらくしてからもう一度お試しください。" }, "quote": { "collateral": "ローンに対して担保される資産総額", - "debt": "新たなローン金額に基づいて支払うべき負債の合計", + "debt": "新しいローン額に基づく総負債額", "repaymentLock": "ローンを返済できるまでの最低期間", "collateralizationRatio": "融資金額に対する担保価値の比率", "feesPlusSlippage": "L1手数料、スリッページ、THORChain流動性手数料を含む、発生した手数料の合計" @@ -2403,17 +2403,17 @@ "addLiquidity": "流動性の追加", "removeLiquidity": "流動性の除去", "initialPricesAndPoolShare": "初期価格とプールシェア", - "pricePerAsset": "%{from}/%{to}", - "symAlert": "あなたの %{from} は、プールに入ると %{to} と %{from} の両方に 50:50 の割合で公開されます。", + "pricePerAsset": "%{to}あたり%{from}", + "symAlert": "%{from}はプール参入時に%{to}と%{from}の50:50の比率に分割されます。", "withdrawTypeNotAvailable": "この引き出しタイプはこのプールでは利用できません。", "incompletePositionDepositAlert": "このポジションは不完全です。このポジションを確定するには、対応する金額の %{asset} を入金してください。", "incompletePositionWithdrawAlert": "このポジションは不完全です。流動性を 100% 削除してポジションをキャンセルしてください。 「流動性の追加」を通じてポジションを確定することもできます。", "unsupportedNetworkExplainer": "ウォレットは %{network} に接続されていません。このチェーンを接続するか、このネットワークをサポートするウォレットに切り替えてください。", - "unsupportedNetworksExplainer": "ウォレットは %{network1} と %{network2} に接続されていません。このチェーンを接続するか、これらのネットワークをサポートするウォレットに切り替えてください。", - "depositsDisabled": "デポジットが無効です", + "unsupportedNetworksExplainer": "ウォレットが%{network1}および%{network2}に接続されていません。このチェーンを接続するか、これらのネットワークをサポートするウォレットに切り替えてください。", + "depositsDisabled": "入金無効", "shareOfPool": "プールのシェア", "totalLiquidity": "総流動性", - "totalVolume": "トータルボリューム", + "totalVolume": "総取引量", "fees24h": "手数料 24時間", "selectPair": "ペアの選択", "depositAmounts": "入金額", @@ -2503,7 +2503,7 @@ "body": "TCYをステークしてRUNEを獲得する。" }, "tags": { - "liquid-staking": "流動性ステーキング", + "liquid-staking": "リキッドステーキング", "yield": "利回り", "lending": "レンディング", "rwa": "RWA", @@ -2519,7 +2519,7 @@ "staking": "rFOXステーキング", "bridge": "ブリッジ", "bridgeFunds": "資金のブリッジ", - "bridgeSuccess": "資金のブリッジが完了しました。ステーキングを続行できます。", + "bridgeSuccess": "資金のブリッジが完了しました。ステーキングを続けることができます。", "stake": "ステーク", "unstake": "ステーク解除", "claim": "請求", @@ -2541,8 +2541,8 @@ "useWalletAddress": "ウォレットアドレスを使用する", "useCustomAddress": "カスタムアドレスを使用する", "stakeWarning": "%{symbol} をステークする際は、ロックアップ期間が %{cooldownPeriod} であることに注意してください。つまり、トークンのステークを解除することにした場合、資金を請求できるようになるまで %{cooldownPeriod} 待つ必要があります。", - "bridgeCta": "%{originNetwork} で %{assetSymbol} を選択しましたが、ステークするには %{destinationNetwork} で %{assetSymbol} が必要になります。資金を %{destinationNetwork} にブリッジするお手伝いをいたします。手順についてのガイドを開始しますか?", - "unstakeWarning": "%{symbol} を請求できるまでのクールダウン期間は %{cooldownPeriod} です。その時間が経過すると、ステークされていない金額を請求できるようになります。", + "bridgeCta": "%{originNetwork}上の%{assetSymbol}を選択しましたが、ステーキングには%{destinationNetwork}上の%{assetSymbol}が必要です。資金を%{destinationNetwork}にブリッジするサポートができます。プロセスをガイドしましょうか?", + "unstakeWarning": "%{symbol}を請求する前に、クールダウン期間(%{cooldownPeriod})があります。その期間が経過した後、ステーク解除した量を請求できます。", "tooltips": { "stakeAmount": "こちらがあなたがステークするFOXの量です", "unstakeAmount": "こちらがあなたがステークを解除するFOXの量です", @@ -2551,12 +2551,12 @@ "unstakePendingCooldown": " %{cooldownPeriodHuman}は請求可能です", "cooldownComplete": " %{cooldownPeriodHuman}はクールダウンが終了しました" }, - "stakeSuccess": "%{amount} %{symbol} のステークに成功しました", + "stakeSuccess": "%{amount} %{symbol}のステーキングに成功しました", "stakePending": "%{amount} %{symbol} をステーキング中...", "changeAddressPending": "RFOX 報酬アドレスを %{newAddress} に変更します", "changeAddressSuccess": "RFOX 報酬アドレスを %{newAddress} に変更しました", - "unstakePending": "%{amount} %{symbol} の引き出しをリクエストしています", - "unstakeSuccess": "%{cooldownPeriod}が経過すると、%{amount} %{symbol}を請求できるようになります", + "unstakePending": "%{amount} %{symbol}の出金をリクエスト中", + "unstakeSuccess": "%{cooldownPeriod}が経過すると%{amount} %{symbol}を請求できます", "currentRewardAddress": "現在の報酬アドレス", "newRewardAddress": "新しい報酬アドレス", "rewardCycleExplainer": "これは次の報酬サイクルを通して更新されます。", @@ -2589,13 +2589,16 @@ "body": "rFOX は、Arbitrum で FOX トークンをステークしたときに受け取る利益と報酬を表すために使用される用語です。現在、ステーク発行のために、(Arbitrum 上の)バニラ FOXトークンをロックおよびロック解除します。" }, "why": { - "title": "FOXをステークする理由は何?" + "title": "FOXをステークする理由は何?", + "body": "FOXをステーキングすると、DAOの財務からエポックごとに定期的なUSDC支払いを獲得でき、安定したパッシブ収入を得られます。さらに、DAO収益の一部がトークンバーンを通じてFOXの全体的な供給量を削減するために割り当てられます。ステーキングプロセスには最低28日間のステーク解除期間が必要で、コミュニティ内のコミットメントと安定性を促進します。" }, "stake": { - "title": "FOXをステークするにはどうすればいいか?" + "title": "FOXをステークするにはどうすればいいか?", + "body": "FOXをステーキングするには、ステーキングインターフェースを使用してFOXトークンをステーキングコントラクトにロックします。ステーキング後、ステーキング特典の一環としてブロックごとにUSDC報酬の獲得が始まります。" }, "unstake": { - "title": "ステークを解除するとどうなるか?" + "title": "ステークを解除するとどうなるか?", + "body": "ステークを解除する際は、最低28日間のステーク解除期間があります。この期間中、FOXはロックされたままとなり、USDCエミッションの受け取りが停止されます。ステーク解除期間が終了すると、通常のFOXトークンのロックを解除して回収できます。" }, "cooldown": { "title": "クールダウン期間はどれくらいか?", @@ -2606,7 +2609,8 @@ "body": "はい、ステーキング解除量は複数設定できます。ステーキング解除アクションごとに 28 日間のクールダウン期間があります。" }, "connect": { - "title": "徴収された合計手数料、ステークされた FOX の合計、発行プール、FOX バーン量はそれぞれどのように関連していますか?" + "title": "徴収された合計手数料、ステークされた FOX の合計、発行プール、FOX バーン量はそれぞれどのように関連していますか?", + "body": "DAOが収集する手数料は、スワッパーごとにネイティブ資産で支払われます。この収益の一部はFOXステーカーへの報酬として変換・配分され、別の一部はトークンバーンを通じてFOXの総供給量を削減するために充当されます。ステーキングされたFOXの総量が報酬の配分に影響し、報酬はステーキングされたFOXの量に基づいてプロラータで配分されます。エミッションプールはステーキング報酬として利用可能なFOXの量を表し、FOXバーン量は購入してバーンされたFOXの量です。" } }, "totals": "rFOX の合計", @@ -2639,7 +2643,7 @@ "claimConfirm": { "dustAmountTooltip": "THORネットワーク上であなたのアドレスを識別するには、少量の%{symbol}が必要です", "networkFeeTooltip": "これはブロックチェーン上で取引を処理するための%{symbol}手数料であり、ShapeShiftが請求する手数料ではありません。", - "missingFundsForGasAlert": "%{symbol}が不足しています。取引を完了するには少なくとも%{amount} %{symbol}が必要です。ネットワーク手数料の変動を考慮して、多めに送金することをお勧めします。", + "missingFundsForGasAlert": "%{symbol}が不足しています。トランザクションを完了するには少なくとも%{amount} %{symbol}が必要です。変動するネットワーク手数料に備えて少し多めに送ることをお勧めします。", "confirmTitle": "請求の確認", "networkFee": "ネットワーク料金", "confirmAndClaim": "請求&ステーク", @@ -2675,10 +2679,10 @@ }, "claimPending": "%{amount} %{symbol} を取得中です...", "claimStatus": { - "pendingSubtitle": "%{amount} %{symbol}の請求を処理中です", + "pendingSubtitle": "%{amount} %{symbol}を請求中", "goBack": "戻る", "successTitle": "請求は成功しました", - "successSubtitle": "%{amount} TCY を請求しました", + "successSubtitle": "%{amount} TCYの請求に成功しました", "failedTitle": "問題が発生しました", "failedSubtitle": "申請は失敗しました。もう一度お試しください。" } @@ -2686,7 +2690,7 @@ "markets": { "recommended": "推奨", "watchlist": "ウォッチリスト", - "marketsBody": "最もエキサイティングな暗号通貨を発見してください。トップムーバー、新興トークン、DeFi の機会などを追跡してください。お気に入りの暗号通貨を保存、共有、取引しましょう。", + "marketsBody": "最も注目の暗号通貨を発見しましょう。トップムーバー、新興トークン、DeFiの機会などを追跡できます。お気に入りを保存、共有、取引しましょう。", "watchlistEmpty": { "emptyTitle": "ウォッチリストに資産がありません", "emptyBody": "まだアセットにスターを付けていないようです。今すぐウォッチリストにアセットを追加して追跡しましょう。" @@ -2702,7 +2706,7 @@ }, "thorchainDefi": { "title": "THORChain DeFi", - "subtitle": "THORCHain Savers で資産のネイティブ利回りを獲得しましょう。" + "subtitle": "THORChain Saversで資産のネイティブ利回りを獲得しましょう。" }, "trending": { "title": "トレンド", @@ -2736,20 +2740,20 @@ "simulateTitle": "rFOXシミュレーター", "simulateSubtle": "rFOXステーキングの利回りをシミュレーションする", "estimatedRewards": "推定報酬", - "depositAmount": "預入金額", + "depositAmount": "入金額", "shapeshiftRevenue": "ShapeShiftの収益", "30days": "30日間" }, "foxFarming": { "title": "FOXファーミング+", - "description": "%{rewardAssetSymbol} をファームからファームへ移行するのにうんざりしていませんか? %{assetSymbol} をステークするだけで、%{rewardAssetSymbol} を永久に獲得できます。", + "description": "%{rewardAssetSymbol}をファームからファームへ移行するのに疲れましたか?%{assetSymbol}をステーキングするだけで永続的に%{rewardAssetSymbol}を獲得できます。", "totalClaimableRewards": "請求可能な報酬の合計", "totalStakingValue": "総ステーキング価値", "nextEpoch": "次のエポック" }, "governance": { "title": "ガバナンス", - "description": "参加しましょう フォーラムで DAO の未来を形作ります。", + "description": "フォーラムに参加してDAOの未来を形作りましょう。", "totalVotingPower": "総投票権", "noActiveProposals": "有効な提案はありません", "noClosedProposals": "終了した提案はありません" @@ -2772,11 +2776,11 @@ "signMessage": "メッセージの署名に失敗しました。", "broadcastTransaction": "トランザクションのブロードキャストに失敗しました。", "broadcastTransactionWithMessage": "トランザクション (%{message}) のブロードキャストに失敗しました。", - "getGasFeeData": "ネットワーク料金を取得できませんでした。", + "getGasFeeData": "ネットワーク手数料の取得に失敗しました。", "getFeeData": "ネットワーク料金の見積りに失敗しました。", "getPublicKey": "ウォレットから公開鍵を取得できませんでした。", "getUtxos": "utxos を取得できませんでした。", - "getValidator": "バリデータを取得できませんでした。", + "getValidator": "バリデーターの取得に失敗しました。", "gridplus": { "wrongSafeCard": "間違ったSafeCardが挿入されました。正しいSafeCardを挿入して、もう一度お試しください。", "removeSafeCard": "挿入された SafeCard を取り外して、内部の GridPlus ウォレットにアクセスします。" @@ -2816,43 +2820,51 @@ "startSwapping": "交換を始める" }, "swap": { - "processing": "%{sellAmountAndSymbol} から %{buyAmountAndSymbol} へのスワップを処理中です。", + "processing": "%{sellAmountAndSymbol}から%{buyAmountAndSymbol}へのスワップを処理中です。", "complete": "%{sellAmountAndSymbol} から %{buyAmountAndSymbol} へのスワップが完了しました。", - "failed": "%{sellAmountAndSymbol} から %{buyAmountAndSymbol} へのスワップに失敗しました。", + "failed": "%{sellAmountAndSymbol}から%{buyAmountAndSymbol}へのスワップが失敗しました。", "streaming": "%{sellAmountAndSymbol} から %{buyAmountAndSymbol} へのスワップがストリーミング中です。", - "awaitingApproval": "%{sellAmountAndSymbol} から %{buyAmountAndSymbol} へのスワップは承認待ちです。", - "awaitingSwap": "%{sellAmountAndSymbol} から %{buyAmountAndSymbol} へのスワップが実行を待機しています。" + "awaitingApproval": "%{sellAmountAndSymbol}から%{buyAmountAndSymbol}へのスワップは承認待ちです。", + "awaitingSwap": "%{sellAmountAndSymbol}から%{buyAmountAndSymbol}へのスワップは実行待ちです。" }, "thorchainLp": { - "pairAssets": "%{asset1} と %{asset2}", + "pairAssets": "%{asset1}と%{asset2}", "withdraw": { - "processing": "%{poolName} プールからの %{assetAmountsAndSymbols} の引き出しが処理中です。", - "complete": "%{poolName} プールからの %{assetAmountsAndSymbols} の引き出しが完了しました。" + "processing": "%{poolName}プールからの%{assetAmountsAndSymbols}の出金を処理中です。", + "complete": "%{poolName}プールからの%{assetAmountsAndSymbols}の出金が完了しました。" }, "deposit": { "processing": "%{poolName} プールへの %{amount} %{symbol} の入金が処理中です。", - "complete": "%{poolName} プールへの %{amount} %{symbol} の入金が完了しました。" + "complete": "%{poolName}プールへの%{amount} %{symbol}の入金が完了しました。" } }, "deposit": { "pending": "%{amount} %{symbol} の入金を処理中です。", - "complete": "%{amount} %{symbol} の入金が完了しました。" + "complete": "%{amount} %{symbol} の入金が完了しました。", + "failed": "%{amount} %{symbol} の入金が失敗しました。" }, "withdrawal": { "pending": "%{amount} %{symbol} の出金を処理中です。", - "complete": "%{amount} %{symbol} の出金が完了しました。" + "complete": "%{amount} %{symbol}の出金が完了しました。", + "failed": "%{amount} %{symbol}の出金が失敗しました。" }, "claim": { "pending": "%{amount} %{symbol} の請求を処理中です。", - "complete": "%{amount} %{symbol} の請求が完了しました。" + "complete": "%{amount} %{symbol} の請求が完了しました。", + "failed": "%{amount} %{symbol} の請求が失敗しました。" + }, + "yield": { + "unstakeAvailableIn": "%{symbol}のステーク解除は%{duration}後に利用可能になります。", + "unstakeReady": "%{symbol} のステーク解除の請求が可能になりました。", + "unstakeClaimed": "%{symbol} のステーク解除が請求されました。" }, "bridge": { - "processing": "%{sellAmountAndSymbol}.%{sellChainShortName} から %{buyAmountAndSymbol}.%{buyChainShortName} へのブリッジが処理中です。", - "complete": "%{sellAmountAndSymbol}.%{sellChainShortName} から %{buyAmountAndSymbol}.%{buyChainShortName} へのブリッジが完了しました。", + "processing": "%{sellAmountAndSymbol}.%{sellChainShortName}から%{buyAmountAndSymbol}.%{buyChainShortName}へのブリッジを処理中です。", + "complete": "%{sellAmountAndSymbol}.%{sellChainShortName}から%{buyAmountAndSymbol}.%{buyChainShortName}へのブリッジが完了しました。", "initiated": "%{sellAmountAndSymbol} から %{buyAmountAndSymbol} へのブリッジが開始されました。", "pendingWithdraw": "%{amountAndSymbol} の出金は %{timeText} から可能になります。", "claimAvailable": "ブリッジした %{amountAndSymbol} を受け取れます", - "failed": "%{sellAmountAndSymbol}.%{sellChainShortName} から %{buyAmountAndSymbol}.%{buyChainShortName} へのブリッジが失敗しました。", + "failed": "%{sellAmountAndSymbol}.%{sellChainShortName}から%{buyAmountAndSymbol}.%{buyChainShortName}へのブリッジが失敗しました。", "transactionInitiated": "取引開始", "claimWithdraw": "引き出しを請求", "withdrawTx": "出金トランザクション", @@ -2861,28 +2873,28 @@ "limitOrder": { "placed": "%{sellAmountAndSymbol} から %{buyAmountAndSymbol} への指値注文が出されました", "complete": "%{buyAmountAndSymbol} を %{sellAmountAndSymbol} で購入する注文が正常に実行されました。", - "cancelled": "%{buyAmountAndSymbol} を %{sellAmountAndSymbol} で購入する注文はキャンセルされました。", + "cancelled": "%{sellAmountAndSymbol}で%{buyAmountAndSymbol}を購入する注文がキャンセルされました。", "expired": "%{buyAmountAndSymbol} を %{sellAmountAndSymbol} で購入する注文の有効期限が切れました。" }, "rfox": { - "unstakeReady": "%{amount} %{symbol} のステーク解除を請求する準備ができました。", - "unstakeTxPending": "%{amount} %{symbol} のステーク解除が保留中です。", + "unstakeReady": "%{amount} %{symbol}のステーク解除の請求準備ができました。", + "unstakeTxPending": "%{amount} %{symbol}のステーク解除は保留中です。", "unstakeTxComplete": "%{amount} %{symbol} のステーク解除が完了しました。" }, "tcy": { "stakePending": "あなたの %{amount} %{symbol} のステークを処理中です...", - "unstakePending": "%{amount} %{symbol} のステーク解除を処理中です...", + "unstakePending": "%{amount} %{symbol}のステーク解除を処理中です...", "stakeComplete": "%{amount} %{symbol} のステークが完了しました。", "unstakeComplete": "%{amount} %{symbol} のステーク解除が完了しました。", "claimReady": "%{amount} %{symbol}のTCY請求が準備完了です。", - "claimTxPending": "%{amount} %{symbol} の TCY 請求は保留中です。", + "claimTxPending": "%{amount} %{symbol}のTCY請求は保留中です。", "claimTxComplete": "%{amount} %{symbol} の TCY 請求が完了しました。" }, "approve": { "approvalTxPending": "%{contractName} が %{amount} %{symbol} の使用を承認中です。", - "approvalTxComplete": "%{contractName} が %{amount} %{symbol} を使用することを承認しました。" + "approvalTxComplete": "%{contractName}が%{amount} %{symbol}を使用することを承認しました。" }, - "pendingTransactions": "%{count} 保留中", + "pendingTransactions": "%{count}件保留中", "rewardDistribution": { "pending": { "description": "%{amountAndSymbol} の報酬を処理中です..." @@ -2895,8 +2907,7 @@ "yieldXYZ": { "pageTitle": "利回り", "pageSubtitle": "複数のチェーンにわたる収益機会の発見と管理", - "actions": { - }, + "actions": {}, "yield": "利回り", "apy": "年利", "apr": "APR", @@ -2982,15 +2993,16 @@ "availableToEarnTooltip": "収益機会のある資産全体の合計アイドル残高。", "apyTooltip": "プロバイダーが提示する年利回り。利率は時間の経過とともに変動する場合があります。", "perYear": "/年", - "earningsPerYear": "%{amount} %{symbol} /年", + "earningsPerYear": "%{amount} %{symbol}/年", "recommendedForYou": "あなたにおすすめ", "earn": "得る", "providers": "プロバイダー", "successStaked": "%{amount} %{symbol} をステークしました", "successUnstaked": "%{amount} %{symbol} のステーク解除に成功しました", - "successDeposited": "%{amount} %{symbol} を入金しました", + "cooldownNotice": "出金は %{cooldownDuration} 後に利用可能になります。", + "successDeposited": "%{amount} %{symbol}の入金に成功しました", "successWithdrawn": "%{amount} %{symbol} の引き出しに成功しました", - "successClaim": "%{amount} %{symbol} の請求に成功しました", + "successClaim": "%{amount} %{symbol}の請求に成功しました", "viewPosition": "表示位置", "via": "経由", "resetAllowance": "承認をリセット", @@ -3031,7 +3043,7 @@ "aboutProvider": "%{provider}について", "visitWebsite": "ウェブサイトを訪問", "providerDescriptions": { - "morpho": "Morpho はマネー マーケットおよび金庫インフラストラクチャ プロトコルであり、一流のセキュリティ企業によって何度も監査され、2022 年から稼働しており、250 万ドルのバグ報奨金インセンティブが付いています。", + "morpho": "Morphoはマネーマーケットとヴォールトインフラのプロトコルで、トップクラスのセキュリティ企業により複数回監査済み、2022年から稼働中、バグバウンティは250万ドル。", "morpho-aave": "Morpho はマネー マーケットおよび金庫インフラストラクチャ プロトコルであり、一流のセキュリティ企業によって何度も監査され、2022 年から稼働しており、250 万ドルのバグ報奨金インセンティブが付いています。", "morpho-compound": "Morpho はマネー マーケットおよび金庫インフラストラクチャ プロトコルであり、一流のセキュリティ企業によって何度も監査され、2022 年から稼働しており、250 万ドルのバグ報奨金インセンティブが付いています。", "lido": "Lidoは、stETHを介して流動性を維持しながらETHをステーキングできる流動性ステーキングプロトコルです。一流セキュリティ企業による監査を受け、2020年から運用されており、200万ドルのバグバウンティインセンティブも提供しています。", @@ -3040,18 +3052,18 @@ "kamino": "Kaminoは、レンディング、流動性、レバレッジを1つのプラットフォームに統合したSolanaのDeFiスイートです。最大150万ドルの報奨金が設定されたImmunefiプログラムを運営しています。", "fluid": "Fluidは、Instadappチームが構築した流動性レイヤーで、レンディング、DEX、借入、ステーブルコイン市場を1つの効率的なシステムに統合します。一流セキュリティ企業による監査を受け、2024年から稼働しており、バグバウンティとして50万ドルのインセンティブを提供しています。", "venus": "Venusは、BNBチェーンに特化した貸借プロトコルです。第三者監査と継続的なバグ報奨金プログラムを通じてセキュリティを重視しています。", - "gearbox": "Gearboxは、DeFi戦略に組み込むクレジットアカウントを可能にする、構成可能なレバレッジプロトコルです。複数のトップクラスのセキュリティ企業による監査を受けており、2021年から運用されており、バグバウンティとして20万ドルのインセンティブを提供しています。", - "yearn": "Yearnは、個人、DAO、その他のプロトコルがデジタル資産から収益を得ることを支援する分散型製品スイートです。複数のトップクラスのセキュリティ企業による監査を受けており、2020年から運用されており、バグバウンティとして20万ドルのインセンティブを提供しています。", + "gearbox": "GearboxはDeFi戦略に接続できるクレジットアカウントを可能にするコンポーザブルなレバレッジプロトコルです。トップクラスのセキュリティ企業により複数回監査済み、2021年から稼働中、バグバウンティは20万ドル。", + "yearn": "Yearnは個人、DAO、その他のプロトコルがデジタル資産から利回りを獲得できる分散型プロダクト群です。トップクラスのセキュリティ企業により複数回監査済み、2020年から稼働中、バグバウンティは20万ドル。", "spark": "Sparkは、Sky(旧MakerDAO)エコシステムをベースにした分散型レンディングプロトコルで、ユーザーはDAIやその他のステーブルコインを競争力のあるレートで借りることができます。最大500万ドルの報奨金が設定されたImmunefiプログラムを運営しています。", - "rocket-pool": "Rocket Poolは、rETHを発行する分散型イーサリアム流動性ステーキングプロトコルです。一流セキュリティ企業による監査を受けており、2021年から稼働しています。バグバウンティインセンティブとして50万ドルを提供しています。", + "rocket-pool": "Rocket PoolはrETHを発行する分散型Ethereumリキッドステーキングプロトコルです。トップクラスのセキュリティ企業により複数回監査済み、2021年から稼働中、バグバウンティは50万ドル。", "drift": "Driftは、Solana上に構築されたパーペチュアル取引および貸付プラットフォームです。最大50万ドルの報奨金が設定されたImmunefiプログラムを運営しています。" }, "otherYields": "その他の%{symbol}利回り", - "availableToDeposit": "入金可能", + "availableToDeposit": "入金可能額", "availableToDepositTooltip": "これは、この利回り機会に入金できるウォレット内の %{symbol} の金額です。", "getAsset": "%{symbol} を取得", "manage": "管理", - "potentialEarningsAmount": "%{amount}/年、%{apy}% APY", + "potentialEarningsAmount": "%{apy}% APYで%{amount}/年", "depositNow": "今すぐ入金", "strategyInfo": "戦略情報", "overview": "概要", diff --git a/src/assets/translations/pt/main.json b/src/assets/translations/pt/main.json index 742d7670739..4dd1a1bfadf 100644 --- a/src/assets/translations/pt/main.json +++ b/src/assets/translations/pt/main.json @@ -27,9 +27,9 @@ "continue": "Continuar", "approve": "Aprovar", "approveToken": "Aprovar Token", - "approveAmount": "Aprove a Quantia", + "approveAmount": "Aprovar Valor", "approveTo": "Aprovar Para", - "reset": "Reiniciar", + "reset": "Redefinir", "confirm": "Confirmar", "seeDetails": "Veja detalhes", "activity": "Atividade", @@ -82,14 +82,14 @@ "happySuccess": "Sucesso!", "transactionFailed": "Falha na transação", "transactionFailedBody": "Falha na transação", - "safeProposalQueued": "Proposta SAFE na fila. %{currentConfirmations} de %{confirmationsRequired} assinada.", + "safeProposalQueued": "Proposta SAFE enfileirada. %{currentConfirmations} de %{confirmationsRequired} assinadas.", "submitFeedback": "Deixe um comentário", "send": "Enviar", "receive": "Receber", "privacy": "Política de Privacidade", "terms": "Termos de Serviço", "clear": "Apagado", - "copy": "Copiado", + "copy": "Copiar", "copied": "Copiado para área de transferência.", "copyFailed": "Não foi possível copiar.", "copyFailedDescription": "Por favor, copie manualmente", @@ -120,7 +120,7 @@ "sepa": "SEPA", "buySell": "Compre/Venda", "all": "Todos", - "seeMore": "Veja Mais", + "seeMore": "Ver Mais", "slippage": "Slippage", "feesPlusSlippage": "Taxas + Slippage", "gasFee": "Taxas", @@ -161,7 +161,7 @@ "import": "Importar", "accountsLoading": "Carregando contas", "noAccounts": "Nenhuma conta para os filtros selecionados.", - "sortBy": "Classificar por", + "sortBy": "Ordenar Por", "orderBy": "Ordenar por", "filterBy": "Filtrar por", "filterAndSort": "Filtrar e classificar", @@ -193,7 +193,7 @@ "boost": "Impulso", "viewOnExplorer": "Ver no explorador", "approval": "Aprovação", - "permit2Approval": "Aprovaçõa Permit2 ", + "permit2Approval": "Aprovação Permit2", "network": "Rede", "feeEstimate": "Estimativa de Taxa", "list": "Lista" @@ -206,11 +206,11 @@ "aiChat": "Converse com AI", "openChat": "Abrir conversa", "closeChat": "Fechar conversa", - "emptyState": "Como posso te ajudar hoje?", + "emptyState": "Como posso ajudar você hoje?", "placeholder": "Digite uma mensagem...", "stop": "Parar", "send": "Enviar", - "txStepProgress": "%{completedCount} de %{totalCount} concluído", + "txStepProgress": "%{completedCount} de %{totalCount} concluídos", "agenticChatTools": { "send": { "title": "Enviar cripto", @@ -345,22 +345,22 @@ "marketCapRank": "Classificação de capitalização de mercado", "volume24h": "Volume nas últimas 24 horas", "volMcap": "Vol/Cap Mercado", - "about": "Sobre", + "about": "Sobre %{symbol}", "noDescription": "Não há descrição disponível para este recurso." }, "receive": { "title": "Receber", - "receiveOn": "Receber %{symbol} na %{network}", + "receiveOn": "Receber %{symbol} em %{network}", "copyAddress": "Copiar endereço", "copied": "Copiado!", - "warning": "Envie apenas tokens compatíveis com %{network} para este endereço." + "warning": "Envie apenas tokens compatíveis com %{network} para este endereço" }, "getLimitOrders": { "title": "Ordens Limite", "openOrders": "%{count} aberto", "noOrders": "Não foram encontradas ordens limite.", "status": { - "open": "Abrir", + "open": "Aberta", "fulfilled": "Preenchido", "cancelled": "Cancelado", "expired": "Expirado", @@ -395,7 +395,7 @@ "tokens": "Tokens" } }, - "chatHistory": "Histórico de conversas", + "chatHistory": "Histórico de Chat", "newChat": "Nova Conversa", "deleteConversation": "Apagar conversa", "deleteConfirmation": "Tem certeza de que deseja excluir esta conversa?", @@ -413,7 +413,7 @@ "error": { "insufficientFunds": "A compra rápida de %{amount} falhou, fundos insuficientes, tentar outro valor?", "noQuote": "A compra rápida de %{amount} falhou, não foi possível recuperar uma cotação válida.", - "failed": "Falha na compra rápida de %{amount}." + "failed": "Compra rápida de %{amount} falhou." } }, "consentBanner": { @@ -453,12 +453,12 @@ } }, "rampPage": { - "buyTitle": "Compre criptomoedas em segundos", - "sellTitle": "Venda criptomoedas em segundos", - "buyBody": "Use um cartão de crédito, débito ou conta bancária. Compre Bitcoin, Ethereum, USDT, USDC ou outras criptomoedas de ponta. Provedores sem KYC disponíveis.", + "buyTitle": "Compre Crypto em Segundos", + "sellTitle": "Venda Crypto em Segundos", + "buyBody": "Use cartão de crédito, cartão de débito ou conta bancária. Compre Bitcoin, Ethereum, USDT, USDC ou outras criptomoedas principais. Provedores sem KYC disponíveis.", "sellBody": "Use um cartão de crédito, débito ou conta bancária. Venda Bitcoin, Ethereum, USDT, USDC ou outras criptomoedas de ponta. Provedores sem KYC disponíveis.", "disclaimer": "*Você também pode vender criptomoedas diretamente por dinheiro na sua conta bancária.", - "ctaTitle": "Você também pode usar o ShapeShift com todas as principais carteiras para negociar, ganhar rendimento e rastrear suas criptomoedas em várias %{chainCount} blockchains", + "ctaTitle": "Você também pode usar a ShapeShift com as principais carteiras para negociar, ganhar rendimento e acompanhar suas criptos em %{chainCount} chains", "availableAssets": "Ativos disponíveis" }, "updateToast": { @@ -467,7 +467,7 @@ "keepKey": { "title": "Atualização KeepKey disponível", "newUpdateAvailable": "Uma nova atualização da KeepKey está disponível.", - "downloadCta": "Baixar atualização", + "downloadCta": "Baixar Atualização", "updateRequiredForFeature": "Esta atualização é necessária para suportar %{feature}" } }, @@ -519,7 +519,7 @@ "availableProviders": "Soluções disponíveis", "noProvidersAvailable": "Nenhuma solução disponível", "noProvidersBody": "Parece que ainda não temos nenhuma solução para esse ativo.", - "notSupported": "%{asset} não é suportado pela %{wallet}", + "notSupported": "%{asset} não é suportado por %{wallet}", "previewPurchase": "Compra Anterior", "previewSale": "Venda Anterior" }, @@ -538,14 +538,14 @@ "privacyPolicy": "Política de Privacidade", "connectNewWallet": "Conectar Nova Carteira", "getANewWallet": "Pegue uma Nova Carteira", - "alreadyHaveWallet": "Já tenho uma nova carteira" + "alreadyHaveWallet": "Já tenho uma carteira" }, "connectWallet": { "menu": { "switchWallet": "Trocar Carteira", "disconnect": "Desconectar", "disconnected": "(Sem conexão)", - "locked": "(Travado)", + "locked": "(Bloqueado)", "reconnectWallet": "Reconectar carteira", "walletNotConnected": "Sua carteira não está conectada no momento. Isso afetará as transações.", "connecting": "Conectando..." @@ -563,10 +563,10 @@ "risks": "Existem Riscos?" }, "bodies": { - "rateFluctuationInfo": "A taxa de %{assetName} que você ganha, o Retorno Percentual Anual (APR), normalmente oscila entre 7% e 20%.", + "rateFluctuationInfo": "A taxa de %{assetName} que você ganha, o Retorno Percentual Anual (APR), tipicamente varia entre 7% - 20%.", "amountStakingInfo": "Você pode depositar qualquer quantia de %{assetName} e eles vão lhe gerar recompensas imediatamente.", "withdrawInfo": "Você pode sacar suas recompensas a qualquer momento, exigindo uma pequena taxa de gás em torno de aproximadamente US$ 0,01.", - "unbondingInfo": "Quando você retirar seus tokens, eles permanecerão bloqueados por %{unbondingDays} dias, durante os quais não ganharão recompensas. Após os %{unbondingDays} dias, seu %{assetName} retornará à sua Carteira.", + "unbondingInfo": "Quando você remove o stake dos seus tokens, eles ficam bloqueados por %{unbondingDays} dias, durante os quais não acumulam recompensas. Após os %{unbondingDays} dias, seu %{assetName} retornará à sua Carteira Principal.", "slashingInfo": "O staking é feito através de um validador. É incrivelmente raro, mas se o validador com o qual você realizou o stake errar ao permitir transações falsas ou incorretas, você poderá perder uma parte de seus ativos.", "partnerInfo": "Reduzimos esse risco em parceria com validadores confiáveis, que possuem uma infraestrutura segura e auditada." } @@ -586,7 +586,7 @@ "header": "Deposite tokens LP de ETH-FOX em %{opportunity} para ganhar", "body": "Aprove e faça stake de seus tokens de liquidez para ganhar recompensas FOX.", "rewards": "As recompensas que você ganhar serão acumuladas automaticamente.", - "cta": "Deposite tokens LP de ETH-FOX LP agora" + "cta": "Depositar tokens LP ETH-FOX Agora" }, "overview": { "underlyingTokens": "Tokens em Stake", @@ -602,9 +602,9 @@ "claimYour": "Ganhar %{opportunity}" }, "saversVaults": { - "description": "Ganhe recompensas em seu %{asset} através da THORChain Savers Vaults. Não precisa travá-lo e os incentivos são acumulados automaticamente. As recompensas na THORChain vem de taxas de swap e recompensas de blocos. O ganho do single-sided é limitado à metade do ganho obtido pelos provedores de liquidez em pools double-sided.", - "runePoolDescription": "RUNEPool permite que você ganhe mais %{asset} ao juntar seu %{asset} com outros. Você não precisa escolher pools específicos, todos compartilham o desempenho geral.", - "runePoolOverviewDescription": "O RUNEPool otimiza o uso do RUNE depositando-o em todos os pools de liquidez habilitados para POL no THORChain. Ao reunir o RUNE entre esses pools, os participantes ganham o APY combinado, mas enfrentam a exposição à perda impermanente agregada. Em vez de escolher pools individuais, os usuários se beneficiam do desempenho geral, investindo efetivamente em um índice RUNE e em todos os ativos habilitados para POL do THORChain. Isso simplifica o fornecimento de liquidez e reduz o risco individual.", + "description": "Ganhe rendimento em seu %{asset} através das Savers Vaults do THORChain. Não há período de bloqueio e as recompensas são acumuladas automaticamente. O rendimento no THORChain vem de taxas de swap e recompensas de bloco. O rendimento unilateral é limitado a metade do rendimento bilateral dos provedores de liquidez.", + "runePoolDescription": "RUNEPool permite que você ganhe mais %{asset} ao reunir seu %{asset} com outros. Você não precisa escolher pools específicos; todos compartilham o desempenho geral.", + "runePoolOverviewDescription": "RUNEPool otimiza o uso de RUNE depositando em todos os pools de liquidez com POL ativado no THORChain. Ao reunir RUNE nesses pools, os participantes ganham o APY combinado, mas ficam expostos à perda impermanente agregada. Em vez de escolher pools individuais, os usuários se beneficiam do desempenho geral, investindo efetivamente em um índice RUNE e em todos os ativos habilitados para POL no THORChain. Isso simplifica a provisão de liquidez e reduz o risco individual.", "vaultCap": "Limite da Vault", "vaultCapTooltip": "Capacidade máxima atual para este cofre", "haltedDepositTitle": "Depósitos estão temporariamente desabilitados. ", @@ -621,16 +621,16 @@ "introducingSaversVaults": "Introduzindo a Savers Vault", "introducingRunePool": "Apresentando RUNEPool", "risksBody": { - "vaults": "Indique para este artigo para riscos envolvidos com a Savers Vault", - "runePool": "Indique para este artigo para riscos envolvidos com o RUNEPool." + "vaults": "Consulte este artigo para conhecer os riscos envolvidos nas savers vaults.", + "runePool": "Consulte este artigo para conhecer os riscos envolvidos no RUNEPool." }, "timeToBreakEven": { "title": "Tempo para igualar", "tooltip": "Tempo estimado para cobrir taxas de depósito e ganhos." }, "cannotDepositWhilePendingTx": "Não é possível depositar enquanto as Txs estiverem pendentes", - "cannotWithdrawWhilePendingTx": "Não é possível sacar enquanto as Txs estiverem pendentes", - "agreeRunePool": "Entendo que o RUNEPool tem um bloqueio mínimo de 30 dias e um risco maior de perda impermanente." + "cannotWithdrawWhilePendingTx": "Não é possível sacar enquanto há transações pendentes", + "agreeRunePool": "Entendo que RUNEPool tem um período mínimo de bloqueio de 30 dias e um risco elevado de perda impermanente." } }, "memoNote": { @@ -654,7 +654,7 @@ "ended": "Finalizado", "balance": "Saldo", "netWorth": "Total", - "loadingAccounts": "Carregado %{portfolioAccountsLoaded} accounts", + "loadingAccounts": "%{portfolioAccountsLoaded} contas carregadas", "loadingMorePositions": "Mais posições DeFi ainda estão sendo carregadas.", "walletBalanceChange24Hr": "Mudança em 24 horas", "earnBody": "Deposite seus ativos em estratégias DeFi de renda passiva.", @@ -680,9 +680,9 @@ }, "withdraw": { "info": { - "title": "Informação do Saque", + "title": "Informações de Saque", "description": "Insira a quantia do %{asset} que você deseja sacar.", - "yieldyDescription": "Insira a quantia do %{asset} que você deseja sacar.\nOs próximos saques serão combinados e resetarão o tempo de saque.", + "yieldyDescription": "Insira a quantidade de %{asset} que deseja sacar. Saques subsequentes serão combinados e redefinirão o prazo de saque.", "farmingExpiredDescription": "As recompensas do contrato acabaram. Você deve sacar seu saldo total depositado. ", "rewardsInfo": "Recompensas que você receberá" } @@ -701,7 +701,7 @@ "navBar": { "history": "Histórico", "home": "Início", - "myWallet": "Minha carteira", + "myWallet": "Minha Carteira", "dashboard": "Dashboard", "assets": "Tokens", "accounts": "Carteiras", @@ -765,7 +765,7 @@ "common": "Transação", "confirmed": "Confirmado", "pending": "Pendente", - "failed": "Falha", + "failed": "Falhou", "swap": "Swap", "amount": "Quantia", "emptyMessage": "Suas %{status} transações aparecerão aqui.", @@ -801,7 +801,7 @@ "revoke": "Revogar", "revokeSymbol": "Revogar %{symbol} a aprovação", "amountUnavailable": "Indisponível", - "withdraw": "Retirar", + "withdraw": "Saque", "receive": "Receber" }, "yearn": { @@ -823,7 +823,7 @@ }, "thorchain": { "deposit": "Depósito", - "depositRefund": "Devolver o depósito", + "depositRefund": "Reembolso de Depósito", "depositRefundNative": "Depósito + Reembolso", "loanOpen": "Empréstimo em aberto", "loanOpenOut": "Empréstimo recebido", @@ -917,7 +917,7 @@ "assetAddress": "%{asset} endereço", "verifyAsset": "Verifique %{asset}", "verifyAddressMessage": "Certifique-se de que seus endereços estejam corretos antes de continuar.", - "slippageInfo": "Sua transação será revertida se o preço mudar desfavoravelmente em mais do que esta porcentagem.", + "slippageInfo": "Sua transação será revertida se o preço mudar desfavoravelmente em mais do que essa porcentagem.", "allowanceTooltip": "O valor que você concederá ao contrato inteligente para usar em sua assinatura.", "searchingRate": "Procurando a melhor taxa...", "noRateAvailable": "Nenhuma taxa disponível.", @@ -956,7 +956,7 @@ "youGet": "Você recebe", "tradeTo": "Negocie para", "expand": "Expandir", - "minerFee": "Taxa de Mineração", + "minerFee": "Taxa do Minerador", "protocolFee": "Taxa do Protocolo", "protocol": "Protocolo", "tradeFeeSource": "%{tradeFeeSource} Taxa", @@ -985,7 +985,7 @@ "changeAddress": "Endereço de troco", "changeAddressExplainer": "Ao enviar criptomoedas em redes baseadas em UTXO, quaisquer fundos restantes da sua transação são enviados de volta para este endereço.", "depositAddress": "Endereço de depósito", - "depositAddressExplainer": "Este é o endereço do protocolo para onde seus fundos serão enviados para processamento. Sua hardware wallet exibirá este endereço para verificação.", + "depositAddressExplainer": "Este é o endereço do protocolo para onde seus fundos serão enviados para processamento. Sua carteira hardware exibirá este endereço para verificação.", "customReceiveAddress": "Endereço de recebimento personalizado", "customReceiveAddressDescription": "Insira um endereço de recebimento personalizado para esta transação.", "thisIsYourCustomReceiveAddress": "Este é o seu endereço de recebimento personalizado.", @@ -994,7 +994,7 @@ "tooltip": { "continueSwapping": "Continue negociando para mais detalhes", "noRateAvailable": "Isso geralmente ocorre devido à liquidez limitada ou inexistente no par negociado.", - "minerFee": "Esta é a taxa para processar a transação no blockchain, não é uma taxa cobrada pela ShapeShift.", + "minerFee": "Esta é a taxa para processar a transação na blockchain, não é uma taxa cobrada pela ShapeShift.", "protocolFee": "Esta é a taxa cobrada pelo protocolo selecionado para processar esta transação, esta não é uma taxa cobrada pela ShapeShift", "inputOutputDifference": "A diferença estimada entre os valores em USD dos valores de entrada e saída.", "slippageWithAmount": "Se o preço mudar de forma que você receba menos de %{amount}, sua transação será revertida. Este é o valor mínimo que você tem garantia de receber.", @@ -1008,13 +1008,13 @@ }, "rateExpired": { "title": "Nova taxa", - "body": "Sua taxa de swap anterior expirou. Buscamos uma nova taxa e atualizamos seus valores de cotação. Revise os detalhes mais recentes antes de confirmar seu swap.", + "body": "Sua taxa de swap anterior expirou. Buscamos uma nova taxa e atualizamos os valores da sua cotação. Por favor, revise os detalhes mais recentes antes de confirmar seu swap.", "cta": "Ok, entendi" } }, "permit2Allowance": { - "title": "Permissão para o contrato Permit2", - "tooltip": "Esta negociação usa o Permit2, que requer uma aprovação única para conceder permissão ilimitada ao contrato Permit2. Após essa configuração inicial, você pode autorizar negociações em qualquer protocolo suportado pelo Permit2 assinando mensagens sem custo que concedem permissões temporárias de 5 minutos." + "title": "Permissão do contrato Permit2", + "tooltip": "Este trade usa Permit2, que requer uma aprovação única para conceder permissão ilimitada ao contrato Permit2. Após esta configuração inicial, você pode autorizar trades em qualquer protocolo compatível com Permit2 assinando mensagens sem gas que concedem permissões temporárias de 5 minutos." }, "permit2Eip712": { "title": "Permitir transferência de token", @@ -1028,7 +1028,7 @@ "sellAmountDoesNotCoverFee": "Quantidade muito pequena. O valor de venda para este par é menor do que a taxa.", "insufficientFunds": "Saldo insuficiente para efetivar as taxas da rede.", "transactionRejected": "O usuário rejeitou a transação", - "insufficientFundsForProtocolFee": "Insuficiente %{symbol} na %{chainName} para taxas", + "insufficientFundsForProtocolFee": "%{symbol} insuficiente em %{chainName} para taxas", "unsupportedTradePair": "Par Não Suportado", "noRouteFound": "Nenhuma rota encontrada para este par e quantidade", "quoteExpired": "Pedido expirado, tente novamente", @@ -1070,23 +1070,23 @@ "summary": "Resumo de Trades", "estimatedCompletionTime": "Tempo estimado de conclusão", "transactionSuccessful": "Transação bem-sucedida, aguardando confirmações", - "thorchainSwapperVolatilityAcknowledgementMessage": "O protocolo THORCHain está passando por volatilidade. Prossiga com cautela extra e considere rotas adicionais disponíveis.", + "thorchainSwapperVolatilityAcknowledgementMessage": "O protocolo THORChain está passando por volatilidade. Prossiga com cautela extra e considere as rotas disponíveis adicionais.", "temp": { "tradeSuccess": "Negociação concluída" }, "hopTitle": { "swap": "Swap via %{swapperName}", - "swapEta": "Trocar via %{swapperName} em ~%{eta}" + "swapEta": "Swap via %{swapperName} em ~%{eta}" }, "transactionTitle": { "bridge": "Trocar de %{sellChainName} para %{buyChainName} via %{swapperName}", - "swap": "Swap na %{sellChainName} via %{swapperName}" + "swap": "Swap em %{sellChainName} via %{swapperName}" }, "approvalTitle": "Aprovação de permissão de token", "resetTitle": "Redefinição da permissão de token", "fiatAmountOnChain": "%{amountFiatFormatted} em %{chainName}", "quote": { - "cantSetSlippage": "Não foi possível definir um slippage personalizado (%{userSlippageFormatted}) para %{swapperName}", + "cantSetSlippage": "Não é possível definir um deslizamento personalizado (%{userSlippageFormatted}) para %{swapperName}", "gas": "O gás para completar a transação deste swapper.", "slippage": "Esse é o slippage dessa cotação.", "timeEstimate": "Este é o tempo estimado para a conclusão desta troca." @@ -1132,12 +1132,12 @@ "noOpenOrders": "Ainda não há ordens abertas.", "noHistoricalOrders": "Nenhum histórico de ordens ainda.", "limitPriceIsPercentLowerThanMarket": "O preço limite é %{percent}% menor que o preço de mercado", - "highCowFeeImpact": "A taxa da CoW é de %{percentage}% do valor da sua venda (%{cryptoImpact} %{sellAssetSymbol}). Sua ordem pode não ser executada.", + "highCowFeeImpact": "A taxa CoW é %{percentage}% do seu valor de venda (%{cryptoImpact} %{sellAssetSymbol}). Sua ordem pode não ser executada.", "awaitingOrderPlacement": "Aguardando colocação do pedido em %{swapperName}", "awaitingAllowanceApproval": "Aguardando aprovação da permissão", "awaitingAllowanceReset": "Aguardando redefinição da permissão", "orderPlacement": "Coloque a ordem %{swapperName}", - "explanation": "Quando o preço de %{assetSymbol} atingir %{limitPrice}, sua ordem limite venderá automaticamente %{sellAmount}, garantindo que você receba pelo menos %{receiveAmount}.", + "explanation": "Quando o preço de %{assetSymbol} atingir %{limitPrice}, sua ordem limitada venderá automaticamente %{sellAmount}, garantindo que você receba pelo menos %{receiveAmount}.", "sellBuy": "Venda → Compra", "limitExecution": "Limite/Execução", "statusHead": "Status", @@ -1179,7 +1179,7 @@ "loadingOrderList": "Carregando suas ordens limite...", "orderCard": { "warning": { - "insufficientBalance": "Sua carteira atualmente tem saldo %{symbol} insuficiente em %{chainName} para executar esta ordem. A ordem ainda está aberta e se tornará executável quando você recarregar seu saldo %{symbol} em %{chainName}.", + "insufficientBalance": "Sua carteira tem saldo insuficiente de %{symbol} em %{chainName} para executar esta ordem. A ordem ainda está aberta e poderá ser executada quando você recarregar seu saldo de %{symbol} em %{chainName}.", "insufficientAllowance": "Esta ordem requer uma permissão adicional de %{symbol} em %{chainName} para ser aprovada para que o CoW Swap execute esta ordem. A ordem ainda está aberta e se tornará executável quando você concluir a aprovação da permissão." } }, @@ -1232,7 +1232,7 @@ "header": "Comece agora com a Keepkey.", "body": "Sua KeepKey foi resetada nos padrões de fábrica. Cria uma nova carteira ou restaure sua wallet usando suas palavras-chave.", "createButton": "Criar uma nova carteira.", - "recoverButton": "Recuperar carteira." + "recoverButton": "Recuperar Carteira" }, "recoverySentenceEntry": { "header": "Digite sua frase de recuperação", @@ -1257,7 +1257,7 @@ }, "disconnect": { "header": "Disconecte seu dispositivo KeepKey", - "body": "Infelizmente, ocorreu um erro ao recuperar/configurar seu dispositivo KeepKey. Desconecte e reconecte seu dispositivo e tente configurar seu dispositivo KeepKey novamente. Se o problema persistir, entre em contato com o suporte KeepKey." + "body": "Infelizmente, ocorreu um erro ao recuperar/configurar seu dispositivo KeepKey. Desconecte e reconecte seu dispositivo e tente configurar seu KeepKey novamente. Se o problema persistir, entre em contato com o suporte do KeepKey." } }, "shapeShift": { @@ -1276,7 +1276,7 @@ } }, "confirmPassword": { - "placeholder": "Confirme a Senha", + "placeholder": "Confirmar Senha", "error": { "invalid": "A senha deve corresponder", "required": "A confirmação da senha é obrigatória" @@ -1286,13 +1286,13 @@ "menuItem": "Fazer backup da minha carteira", "enterPassword": "Entre com sua senha para continuar.", "testTitle": "Verificar Sua Frase de Recuperação Secreta. ", - "title": "Confirmar backup", + "title": "Confirmar Backup", "description": "Toque na resposta correta para as frases-semente abaixo.", "desktopDescription": "Conclua este teste rápido para confirmar se você salvou tudo corretamente.", "wordNumber": "Palavra #%{number}", "info": { "title": "Sua Frase de Recuperação Secreta", - "description": "Anote essas 12 palavras e armazene-as offline com segurança. Esta frase de 12 palavras é usada para recuperar as chaves privadas da sua carteira.", + "description": "Anote estas 12 palavras e armazene-as offline em segurança. Esta frase de 12 palavras é usada para recuperar as chaves privadas da sua carteira.", "warning": "Lembre-se: se você perder sua frase secreta de recuperação, a ShapeShift não poderá ajudá-lo a recuperar sua carteira e seus fundos serão perdidos para sempre." }, "success": { @@ -1306,7 +1306,7 @@ }, "skip": { "title": "Pular esta etapa?", - "description": "Ignorar o backup significa que você não poderá recuperar sua carteira se perder o acesso ao seu dispositivo.", + "description": "Pular o backup significa que você não conseguirá recuperar sua carteira se perder o acesso ao seu dispositivo.", "confirmCta": "Sim, salvei minha frase-semente" } } @@ -1347,7 +1347,7 @@ "generic": "Um erro ocorreu.", "notEnoughNativeToken": "Não há %{asset} suficiente para efetivar taxas na rede", "transactionRejected": "O usuário rejeitou a transação", - "qrPermissions": "Esse recurso precisa de permissões de acesso à câmera para funcionar. Por favor, altere as configurações do seu navegador.", + "qrPermissions": "Este recurso precisa de permissão para acessar a câmera. Altere as configurações do seu navegador.", "qrDangerousEthUrl": "Códigos QR contendo endereços de contratos não são suportados. Cole o endereço de destino manualmente.", "noAccountsOnChain": "Nenhuma conta na %{chain}" }, @@ -1423,7 +1423,7 @@ "withdrawType": "Tipo de saque", "instant": "Instantâneo", "delayed": "7 a 14 dias", - "fee": "%{fee}% %{symbol} taxa", + "fee": "taxa de %{fee}% %{symbol}", "noFee": "Sem taxa de %{symbol}", "withdrawFee": "Haverá taxa de gás separada para retirar.", "notEnoughGas": "Insuficiente %{assetSymbol} para cobrir as taxas.", @@ -1435,7 +1435,7 @@ } }, "approve": { - "header": "Permitir %{spenderName} usar o seu %{asset}", + "header": "Permitir que %{spenderName} use seu %{asset}", "resetHeader": "Redefinir %{spenderName} permissão para %{asset}", "body": "Precisamos de sua permissão para utilizar %{asset}", "learnMore": "Por que isso é necessário?", @@ -1462,9 +1462,9 @@ "withdrawInstantTime": "Instantâneo", "withdrawDelayedTime": "7 a 14 dias", "xDays": "%{unbondingDays} dias", - "estimatedGas": "Taxa Estimada da Rede", + "estimatedGas": "Taxa de Gas Estimada", "notEnoughGas": "Insuficiente %{assetSymbol} para pagar o gas", - "missingFundsForGas": "Sem fundos suficientes, você precisa %{cryptoAmountHuman} %{assetSymbol} de mais para completar a transação", + "missingFundsForGas": "Saldo insuficiente, você precisa de %{cryptoAmountHuman} %{assetSymbol} a mais para concluir a transação", "signBroadcast": "Assinar e transmitir", "cancel": "Cancelar" }, @@ -1506,7 +1506,7 @@ "CAD": "Dólar canadense", "HKD": "Dólar de Hong Kong", "AUD": "Dólar australiano", - "TWD": "Novo dólar taiwanês", + "TWD": "Dólar de Taiwan", "BRL": "Real Brasileiro", "CHF": "Franco suíço", "THB": "Baht Tailandês", @@ -1720,7 +1720,7 @@ "success": "Agora você pode fechar esta janela." }, "errors": { - "unknown": "Ocorreu um erro inesperado na comunicação com a Ledger", + "unknown": "Ocorreu um erro inesperado ao se comunicar com a carteira Ledger", "noDeviceConnected": "Nenhum dispositivo Ledger conectado", "multipleDevicesConnected": "Vários dispositivos Ledger conectados. Desconecte todos, exceto um dispositivo." }, @@ -1733,7 +1733,7 @@ }, "failure": { "header": "Não é possível conectar a Ledger", - "body": "Não conseguimos detectar sua Ledger, mas você pode se conectar no modo somente leitura." + "body": "Não foi possível detectar seu Ledger, mas você pode conectar no modo somente leitura." }, "readOnly": { "button": "Conectar como somente leitura" @@ -1817,9 +1817,9 @@ "warningExperimental": "O ShapeShift Multichain Snap é um recurso novo e experimental, fornecido \"como está\"", "warningBackup": "Certifique-se de ter feito backup das palavras-chave da sua MetaMask. Qualquer fundos que você enviar para redes não EVM usando este Snap serão direcionados para a conta padrão que você configurou com MetaMask.", "agreeIntro": "Antes de continuar, leia o seguinte:", - "agreeItem1": "Hardware wallets são NÃO suportado", + "agreeItem1": "Carteiras hardware NÃO são suportadas", "agreeItem2": "Apenas a conta nº 1 no MetaMask é suportada para as redes extras que o ShapeShift Multichain Snap fornece", - "agreeItem3": "Para usar as redes Ethereum existentes fornecidas pela MetaMask, você deve conectar a conta nº 1 ao ShapeShift na MetaMask", + "agreeItem3": "Para usar as chains Ethereum existentes fornecidas pela MetaMask, você deve conectar a Conta #0 à ShapeShift na MetaMask", "agreeItem4": "Ao ativar o ShapeShift Multichain Snap, você reconhece que o está usando por sua própria conta e risco", "readAndUnderstood": "Eu li e entendi", "seedBackedUp": "Eu fiz backup das minhas palavras-chave da MetaMask", @@ -1854,17 +1854,17 @@ "pair": "Não foi possível emparelhar sua carteira", "fetchingWallets": "Ocorreu um erro ao obter carteiras." }, - "header": "Carteiras salvas", + "header": "Carteiras Salvas", "forgetWallet": "Esqueça a carteira", "confirmForget": "Tem certeza que deseja esquecer %{wallet}?", - "confirmForgetBody": "Você não conseguirá acessar sua carteira se não tiver feito um backup dela." + "confirmForgetBody": "Você não conseguirá acessar sua carteira se não tiver feito o backup." }, "import": { "header": "Importe sua carteira", "keystoreHeader": "Importe sua carteira keystore", "body": "Digite ou cole sua Frase de Recuperação Secreta em letras minúsculas, sem vírgulas ou números e um único espaço entre cada palavra.", "button": "Avançar", - "secretRecoveryPhraseError": "Digite sua Frase Secreta de Recuperação com um único espaço entre as palavras. Não utilize vírgulas ou caracteres adicionais.", + "secretRecoveryPhraseError": "Insira sua Frase de Recuperação Secreta com um único espaço entre as palavras. Omita vírgulas, quebras de linha ou quaisquer caracteres adicionais.", "secretRecoveryPhraseRequired": "A Frase Secreta de Recuperação é obrigatória", "secretRecoveryPhraseTooShort": "Frase Secreta de Recuperação é curta demais", "dragAndDrop": "Arraste e solte ou escolha o arquivo", @@ -1887,7 +1887,7 @@ "showWords": "Exibir palavras" }, "start": { - "header": "Carteira ShapeShift", + "header": "ShapeShift Wallet", "selectHeader": "Importar Carteira", "body": "Você pode ter várias carteiras ShapeShift. Crie, carregue ou importe uma nova carteira utilizando sua Frase de Recuperação Secreta.", "selectBody": "Importe a carteira usando sua Frase Secreta de Recuperação ou carregando seu arquivo keystore.", @@ -1900,7 +1900,7 @@ "importKeystore": "Importar arquivo Keystore" }, "success": { - "encryptingWallet": "Criptografando sua carteira... Caso seu navegador solicitar armazenamento persistente, clique em 'Permitir'.", + "encryptingWallet": "Criptografando sua carteira... se o seu navegador solicitar armazenamento de dados persistente, clique em 'Permitir'.", "header": "Carteira Conectada", "success": "Agora você pode fechar esta janela.", "error": "Ocorreu um erro ao conectar sua carteira" @@ -1951,7 +1951,7 @@ "multiChain": { "title": "Multi-chain", "subTitle": "Você nunca precisa trocar de corrente na carteira, funciona perfeitamente com cada rede.", - "body": "Quando uma nova rede é adicionada ao ShapeShift, sua carteira será compatível com ela automaticamente." + "body": "Acesse Bitcoin, Ethereum, Solana e muitas outras redes a partir de uma única carteira. Negocie e gerencie seus ativos em diferentes redes sem complicações." }, "selfCustody": { "title": "Auto-custódia", @@ -1985,7 +1985,7 @@ "headerSecret": "Segredo", "headerEnd": "Frase de recuperação segura", "subHeader": "Garantir a segurança da sua Frase Secreta de Recuperação é crucial.", - "description": "Trate sua Frase Secreta de Recuperação como se fosse seu bem mais valioso – mantenha-a segura o tempo todo. Um gerenciador de senhas é uma ótima segurança, escrever as palavras é ainda melhor.", + "description": "Trate sua Frase de Recuperação Secreta como seu bem mais valioso – mantenha-a segura o tempo todo. Um gerenciador de senhas é uma ótima segurança, mas anotar as palavras é ainda melhor.", "bulletPoints": { "share": "Não compartilhe com mais ninguém", "lose": "Se você perder, não poderemos recuperá-lo" @@ -2001,13 +2001,13 @@ "button": "Continuar para confirmar", "success": { "title": "Você está dentro", - "description": "Você verificou sua Frase Secreta de Recuperação. Guarde-a com segurança — esta é a única maneira de recuperar sua carteira.", + "description": "Você verificou sua Frase de Recuperação Secreta. Certifique-se de armazená-la com segurança - esta é a única forma de recuperar sua carteira.", "viewWallet": "Ver carteira" } }, "vultisig": { "errors": { - "connectFailure": "Não foi possível conectar à carteira Vultisig." + "connectFailure": "Não foi possível conectar a carteira Vultisig" }, "connect": { "header": "Parear Vultisig", @@ -2090,7 +2090,7 @@ "selectChain": "Selecione a rede em que você deseja criar uma conta.", "requiresPriorTxHistory": "Você só pode adicionar uma nova conta se as contas existentes tiverem histórico de transações anteriores.", "newAccountAdded": "Nova conta %{name} adicionada", - "youCanNowUse": "Agora você pode usar %{name} Conta #%{accountNumber}", + "youCanNowUse": "Você agora pode usar %{name} Conta #%{accountNumber}", "showAssets": "Mostrar ativos", "hideAssets": "Esconder ativos", "viewAccount": "Veja a conta", @@ -2100,8 +2100,8 @@ "menuTitle": "Gerenciar contas", "manageAccounts": { "title": "Gerenciar contas", - "description": "Estas são as redes que você conectou e o número de contas que você importou.", - "emptyList": "Você ainda não tem contas conectadas. Adicione uma rede para começar.", + "description": "Estas são as chains que você conectou e o número de contas importadas.", + "emptyList": "Você ainda não tem contas conectadas. Adicione uma chain para começar.", "addChain": "Adicionar uma rede", "addAnotherChain": "Adicionar outra rede" }, @@ -2141,7 +2141,7 @@ "resetFilters": "Redefinir filtros", "to": "para", "categories": "Categorias", - "dayRange": "Período do dia", + "dayRange": "Intervalo de Dias", "10days": "10 dias", "30days": "30 dias", "90days": "90 dias", @@ -2291,7 +2291,7 @@ "loanToValue": "Loan to Value", "availablePools": "Pools disponíveis", "pool": "Pool", - "poolDepth": "Liquidez da pool", + "poolDepth": "Profundidade do Pool", "poolDepthDescription": "A saúda da pool", "status": "Status", "statusDescription": "O estado da pool", @@ -2301,7 +2301,7 @@ "totalCollateralDescription": "Garantia total adicionada ao pool de empréstimos", "estCollateralizationRatio": "Relação Estim. da Colateralização", "estCollateralizationRatioDescription": "Uma Taxa de Colateralização fixa de 200% está atualmente em vigor. No futuro, uma taxa dinâmica equilibrará entre o CR máximo e mínimo com base nas condições de mercado.", - "collateralizationRatio": "Relação da Colateralização", + "collateralizationRatio": "Taxa de Colateralização", "totalBorrowers": "Emprestadores Totais", "totalBorrowersDescription": "Número de pessoas que emprestam capital participando", "myLoanInformation": "Informação do Meu Empréstimo", @@ -2345,7 +2345,7 @@ }, "borrowing": { "title": "Como funciona o empréstimo?", - "body": "Emprestar no THORChain envolve o uso de seus ativos depositados como garantia para contrair um empréstimo. O empréstimo é denominado em USD (TOR) e pode ser recebido em diversos ativos L1. Com um índice de colateralização dinâmico, você pode emprestar com flexibilidade, sem se preocupar com juros ou liquidação" + "body": "Tomar empréstimos no THORChain envolve usar seus ativos depositados como garantia para obter um empréstimo. O empréstimo é denominado em USD (TOR) e pode ser recebido em vários ativos L1. Com uma taxa de colateralização dinâmica, você pode tomar empréstimos com flexibilidade sem se preocupar com juros ou liquidação." }, "repayments": { "title": "Como funciona o pagamento?", @@ -2358,14 +2358,14 @@ "repaymentsDisabled": "Os reembolsos estão temporariamente desativados.", "borrowingDisabled": "O empréstimo está temporariamente desativado.", "amountTooLowToReturnCollateral": "Valor muito baixo para devolver o colateral", - "amountTooLowToReturnCollateralTooltip": "O pagamento é baixo demais para sua garantia ser devolvida. Tente novamente com um valor maior ou pague um valor parcial (o que não devolverá sua garantia, mas diminuirá sua dívida).", + "amountTooLowToReturnCollateralTooltip": "O valor do pagamento é muito baixo para que sua garantia seja devolvida. Por favor, tente novamente com um valor maior, ou pague um valor parcial (o que não devolverá sua garantia, mas reduzirá sua dívida).", "amountTooSmallUnknownMinimumTooltip": "O valor do pagamento inserido é muito pequeno. Por favor, tente novamente com um valor maior.", "repaymentUnavailableTooltip": "Ainda não é possível pagar o seu empréstimo. Aguarde até que o bloqueio de pagamento termine.", "repaymentsHaltedTooltip": "Os pagamentos estão temporariamente suspensos. Por favor, tente novamente mais tarde." }, "quote": { "collateral": "Valor total do ativo que será garantido pelo seu empréstimo", - "debt": "Débito total que você deve com base no valor do novo empréstimo", + "debt": "Dívida total que você terá com base no novo valor do empréstimo", "repaymentLock": "Período mínimo antes de você poder pagar seu empréstimo", "collateralizationRatio": "Proporção entre o valor da sua garantia e o valor do empréstimo", "feesPlusSlippage": "O total de taxas cobradas, incluindo taxas L1, slippage e taxas de liquidez THORChain" @@ -2404,16 +2404,16 @@ "removeLiquidity": "Remover Liquidez", "initialPricesAndPoolShare": "Preços Iniciais e Participação na Pool", "pricePerAsset": "%{from} por %{to}", - "symAlert": "Seu %{from} será dividido em uma exposição de 50:50 para %{to} e %{from} ao entrar na pool.", + "symAlert": "Seu %{from} será dividido em uma exposição 50:50 entre %{to} e %{from} ao entrar no pool.", "withdrawTypeNotAvailable": "Este tipo de retirada não está disponível para este pool.", "incompletePositionDepositAlert": "Esta posição está incompleta, por favor deposite o valor correspondente de %{asset} para finalizar esta posição.", "incompletePositionWithdrawAlert": "Esta posição está incompleta, cancele a posição retirando 100% da liquidez. Você também pode finalizar a posição através de 'Adicionar Liquidez'.", "unsupportedNetworkExplainer": "Sua carteira não está conectada a %{network}. Conecte esta rede ou mude para uma carteira que suporte esta rede.", - "unsupportedNetworksExplainer": "Sua carteira não está conectada a %{network1} e %{network2}. Conecte esta rede ou mude para uma carteira que suporte essas redes.", + "unsupportedNetworksExplainer": "Sua carteira não está conectada a %{network1} e %{network2}. Conecte esta chain ou mude para uma carteira que suporte essas redes.", "depositsDisabled": "Depósitos Desativados", "shareOfPool": "Participação na pool", "totalLiquidity": "Liquidez Total", - "totalVolume": "Volume total", + "totalVolume": "Volume Total", "fees24h": "Taxas em 24H", "selectPair": "Selecione o Par", "depositAmounts": "Valor(es) do depósito", @@ -2503,7 +2503,7 @@ "body": "Stake TCY, ganhe RUNE." }, "tags": { - "liquid-staking": "Staking Líquido", + "liquid-staking": "Liquid Staking", "yield": "Rendimento", "lending": "Empréstimo", "rwa": "RWA", @@ -2519,9 +2519,9 @@ "staking": "rFOX Staking", "bridge": "Ponte", "bridgeFunds": "Faça a ponte de seus fundos", - "bridgeSuccess": "Seus fundos foram transferidos com sucesso. Agora você pode continuar com staking.", + "bridgeSuccess": "Seus fundos foram transferidos com sucesso via bridge. Você pode continuar para o staking.", "stake": "Stake", - "unstake": "Unstake", + "unstake": "Remover Stake", "claim": "Resgatar", "rewards": "Recompensas", "chainNotSupportedByWallet": "Rede não suportada pela carteira", @@ -2541,8 +2541,8 @@ "useWalletAddress": "Usar endereço de carteira", "useCustomAddress": "Usar endereço personalizado", "stakeWarning": "Ao fazer stake de seu %{symbol}, esteja ciente de que o período de lock-up é %{cooldownPeriod}. Isso significa que se você decidir retirar seus tokens do stake, precisará esperar %{cooldownPeriod} antes de poder reivindicar seus fundos.", - "bridgeCta": "Você selecionou %{assetSymbol} em %{originNetwork}, mas precisará de %{assetSymbol} em %{destinationNetwork} para fazer stake. Podemos ajudar você a fazer a ponte entre seus fundos e %{destinationNetwork}. Gostaria que o orientássemos durante o processo?", - "unstakeWarning": "Antes de poder reivindicar seu %{symbol}, o período de espera é %{cooldownPeriod}. Após esse tempo, você poderá reivindicar seu valor não apostado.", + "bridgeCta": "Você selecionou %{assetSymbol} em %{originNetwork}, mas vai precisar de %{assetSymbol} em %{destinationNetwork} para fazer staking. Podemos ajudá-lo a fazer bridge dos seus fundos para %{destinationNetwork}. Gostaria que te guiássemos pelo processo?", + "unstakeWarning": "Antes de resgatar seu %{symbol}, o período de espera é de %{cooldownPeriod}. Após esse tempo, você poderá resgatar o valor do unstake.", "tooltips": { "stakeAmount": "Esta é a quantidade de FOX que você fará stake", "unstakeAmount": "Esta é a quantidade de FOX que você não fará stake", @@ -2551,12 +2551,12 @@ "unstakePendingCooldown": "Resgate disponível %{cooldownPeriodHuman}", "cooldownComplete": "Período de espera finalizado %{cooldownPeriodHuman}" }, - "stakeSuccess": "Você fez o stake %{amount} %{symbol} com sucesso", + "stakeSuccess": "Você fez staking de %{amount} %{symbol} com sucesso", "stakePending": "Staking %{amount} %{symbol}...", "changeAddressPending": "Alterando o endereço de recompensa do RFOX para %{newAddress}", "changeAddressSuccess": "Endereço de recompensa RFOX alterado para %{newAddress}", "unstakePending": "Solicitando saque de %{amount} %{symbol}", - "unstakeSuccess": "Depois que %{cooldownPeriod} tiver decorrido, você poderá reivindicar seu %{amount} %{symbol}", + "unstakeSuccess": "Após %{cooldownPeriod}, você poderá resgatar seus %{amount} %{symbol}", "currentRewardAddress": "Endereço de recompensa atual", "newRewardAddress": "Novo endereço de recompensa", "rewardCycleExplainer": "Isso será atualizado para o próximo ciclo de recompensa.", @@ -2589,13 +2589,16 @@ "body": "rFOX é um termo usado para descrever os benefícios e recompensas que você recebe ao fazer stake dos seus tokens FOX no Arbitrum. Atualmente, você os trava e desbloqueia tokens vanilla FOX (no Arbitrum) para emissões de staking." }, "why": { - "title": "Por que fazer o stake de FOX?" + "title": "Por que fazer o stake de FOX?", + "body": "Fazer staking do seu FOX permite que você receba pagamentos regulares em USDC do tesouro da DAO, proporcionando uma renda passiva constante em USDC por época. Além disso, uma parte da receita da DAO será destinada à redução do fornecimento total de FOX por meio de queima de tokens. O processo de staking requer um período mínimo de unstaking de 28 dias, incentivando o comprometimento e a estabilidade dentro da comunidade." }, "stake": { - "title": "Como faço para realizar stake de FOX?" + "title": "Como faço para realizar stake de FOX?", + "body": "Para fazer staking do seu FOX, você usa a interface de staking para bloquear seus tokens FOX no contrato de staking. Uma vez em staking, você começa a ganhar recompensas em USDC por bloco como parte dos seus benefícios de staking." }, "unstake": { - "title": "O que acontece quando realizo o unstake?" + "title": "O que acontece quando realizo o unstake?", + "body": "Quando você decidir remover stake, há um período mínimo de unstaking de 28 dias. Durante esse tempo, seu FOX permanece bloqueado e você deixa de receber emissões de USDC. Após o período de unstaking, você pode desbloquear e resgatar seus tokens FOX regulares." }, "cooldown": { "title": "Quanto tempo dura o período de espera?", @@ -2606,7 +2609,8 @@ "body": "Sim, você pode ter vários valores em unstaking. Cada ação terá seu próprio período de espera de 28 dias." }, "connect": { - "title": "Como o total de taxas cobradas, o total de FOX em stake, a pool de emissões e o valor queimado da FOX se conectam?" + "title": "Como o total de taxas cobradas, o total de FOX em stake, a pool de emissões e o valor queimado da FOX se conectam?", + "body": "As taxas coletadas pela DAO estão em ativos nativos por swapper. Uma parte dessa receita é convertida e distribuída aos stakers de FOX como recompensas, enquanto outra parte é alocada para reduzir a oferta total de FOX por meio de queimas de tokens. O total de FOX em stake influencia a distribuição de recompensas, pois as recompensas são distribuídas proporcionalmente com base na quantidade de FOX em stake. A pool de emissões representa a quantidade de FOX disponível para recompensas de staking, e o valor de queima de FOX é a parcela de FOX comprada e queimada." } }, "totals": "Totais de rFOX", @@ -2639,7 +2643,7 @@ "claimConfirm": { "dustAmountTooltip": "Uma pequena quantidade de %{symbol} é necessária para identificar seu endereço na rede THOR", "networkFeeTooltip": "Esta é a taxa %{symbol} para processar a transação no blockchain, esta não é uma taxa cobrada pela ShapeShift", - "missingFundsForGasAlert": "Não há %{symbol} suficiente. Você precisa de pelo menos %{amount} %{symbol} para concluir a transação. Recomendamos o envio de um pouco mais para pagar as taxas de rede, que variam.", + "missingFundsForGasAlert": "%{symbol} insuficiente, você precisa de pelo menos %{amount} %{symbol} para concluir a transação. Recomendamos enviar um pouco mais para cobrir as taxas de rede variáveis.", "confirmTitle": "Confirmar Resgate", "networkFee": "Taxa da Rede", "confirmAndClaim": "Resgate & Stake", @@ -2675,10 +2679,10 @@ }, "claimPending": "Resgatando %{amount} %{symbol}...", "claimStatus": { - "pendingSubtitle": "Estamos processando sua solicitação de %{amount} %{symbol}", + "pendingSubtitle": "Resgatando %{amount} %{symbol}", "goBack": "Volte", "successTitle": "O resgate foi bem-sucedido", - "successSubtitle": "Você resgatou seu %{amount} TCY com sucesso", + "successSubtitle": "Resgatado com sucesso %{amount} TCY", "failedTitle": "Algo deu errado", "failedSubtitle": "Seu resgate falhou. Tente novamente." } @@ -2686,7 +2690,7 @@ "markets": { "recommended": "Recomendado", "watchlist": "Minha Lista", - "marketsBody": "Descubra as criptomoedas mais empolgantes. Acompanhe os principais ganhadores, tokens emergentes, oportunidades DeFi e muito mais. Salve, compartilhe e negocie seus favoritos.", + "marketsBody": "Descubra as criptomoedas mais emocionantes. Acompanhe as maiores altas, tokens emergentes, oportunidades DeFi e muito mais. Salve, compartilhe e negocie seus favoritos.", "watchlistEmpty": { "emptyTitle": "Nenhum ativo na watchlist", "emptyBody": "Parece que você ainda não marcou nenhum ativo com estrela. Comece a adicionar ativos à sua watchlist agora para rastreá-los!" @@ -2696,13 +2700,13 @@ "emptyBodySwapper": "Nenhum ativo foi encontrado com o filtro atual.", "categories": { "oneClickDefiAssets": { - "title": "Ativos DeFi com um clique", + "title": "Ativos DeFi com Um Clique", "filterTitle": "Tokens com Alto Rendimento", "subtitle": "Descubra o rendimento que mais combina com você! Mude sem esforço com Portais entre Pools, Vaults, opções de empréstimo e LSDs." }, "thorchainDefi": { "title": "THORChain DeFi", - "subtitle": "Ganhe rendimento nativo em seus ativos com o THORCHain Savers." + "subtitle": "Ganhe rendimento nativo em seus ativos com THORChain Savers." }, "trending": { "title": "Trending", @@ -2736,13 +2740,13 @@ "simulateTitle": "Simulador rFOX", "simulateSubtle": "Simule seu rendimento de staking rFOX", "estimatedRewards": "Recompensas estimadas", - "depositAmount": "Valor do depósito", + "depositAmount": "Valor do Depósito", "shapeshiftRevenue": "Receita da ShapeShift", "30days": "30 dias" }, "foxFarming": { "title": "FOX Farming+", - "description": "Cansado de migrar seu %{rewardAssetSymbol} de pool para pool? Basta fazer stake do seu %{assetSymbol} e ganhar %{rewardAssetSymbol} sempre.", + "description": "Cansado de migrar seu %{rewardAssetSymbol} de farm em farm? Basta fazer staking do seu %{assetSymbol} e ganhar %{rewardAssetSymbol} em perpetuidade.", "totalClaimableRewards": "Total de recompensas resgatáveis.", "totalStakingValue": "Valor total em staking", "nextEpoch": "Próxima Época" @@ -2772,11 +2776,11 @@ "signMessage": "Falha ao assinar a mensagem.", "broadcastTransaction": "Falha ao transmitir a transação.", "broadcastTransactionWithMessage": "Falha ao transmitir transação (%{message}).", - "getGasFeeData": "Falha ao obter taxas da rede.", + "getGasFeeData": "Falha ao obter taxas de rede.", "getFeeData": "Falha ao estimar as taxas de rede.", "getPublicKey": "Falha ao obter a chave pública da carteira.", "getUtxos": "Falha ao obter os utxos.", - "getValidator": "Falha ao obter o validador.", + "getValidator": "Falha ao obter validador.", "gridplus": { "wrongSafeCard": "SafeCard errada inserida. Insira a SafeCard correta e tente novamente.", "removeSafeCard": "Remova a SafeCard para acessar a carteira GridPlus interna. " @@ -2820,39 +2824,47 @@ "complete": "Seu swap de %{sellAmountAndSymbol} para %{buyAmountAndSymbol} foi completado.", "failed": "Seu swap de %{sellAmountAndSymbol} para %{buyAmountAndSymbol} falhou.", "streaming": "Seu swap de %{sellAmountAndSymbol} para %{buyAmountAndSymbol} está sendo transmitido.", - "awaitingApproval": "Sua troca de %{sellAmountAndSymbol} para %{buyAmountAndSymbol} está aguardando aprovação.", - "awaitingSwap": "Sua troca de %{sellAmountAndSymbol} para %{buyAmountAndSymbol} está aguardando execução." + "awaitingApproval": "Seu swap de %{sellAmountAndSymbol} para %{buyAmountAndSymbol} está aguardando aprovação.", + "awaitingSwap": "Seu swap de %{sellAmountAndSymbol} para %{buyAmountAndSymbol} está aguardando execução." }, "thorchainLp": { "pairAssets": "%{asset1} e %{asset2}", "withdraw": { "processing": "Seu saque de %{assetAmountsAndSymbols} do pool %{poolName} está sendo processado.", - "complete": "Seu saque de %{assetAmountsAndSymbols} da pool %{poolName} foi concluído." + "complete": "Seu saque de %{assetAmountsAndSymbols} do pool %{poolName} foi concluído." }, "deposit": { "processing": "Seu depósito de %{amount} %{symbol} na pool %{poolName} está sendo processado.", - "complete": "Seu depósito de %{amount} %{symbol} na pool %{poolName} foi concluído." + "complete": "Seu depósito de %{amount} %{symbol} no pool %{poolName} foi concluído." } }, "deposit": { "pending": "Seu depósito de %{amount} %{symbol} está sendo processado.", - "complete": "Seu depósito de %{amount} %{symbol} foi concluído." + "complete": "Seu depósito de %{amount} %{symbol} foi concluído.", + "failed": "Seu depósito de %{amount} %{symbol} falhou." }, "withdrawal": { "pending": "Seu saque de %{amount} %{symbol} está sendo processado.", - "complete": "Seu saque de %{amount} %{symbol} foi concluído." + "complete": "Seu saque de %{amount} %{symbol} foi concluído.", + "failed": "Seu saque de %{amount} %{symbol} falhou." }, "claim": { "pending": "Seu resgate de %{amount} %{symbol} está sendo processado.", - "complete": "Seu resgate de %{amount} %{symbol} foi concluído." + "complete": "Seu resgate de %{amount} %{symbol} foi concluído.", + "failed": "Seu resgate de %{amount} %{symbol} falhou." + }, + "yield": { + "unstakeAvailableIn": "O unstake de %{symbol} estará disponível em %{duration}.", + "unstakeReady": "A remoção de stake do seu %{symbol} está pronta para resgatar.", + "unstakeClaimed": "A remoção de stake do seu %{symbol} foi resgatada." }, "bridge": { - "processing": "Sua ponte de %{sellAmountAndSymbol}.%{sellChainShortName} to %{buyAmountAndSymbol}.%{buyChainShortName} está sendo processada.", - "complete": "Sua ponte de %{sellAmountAndSymbol}.%{sellChainShortName} to %{buyAmountAndSymbol}.%{buyChainShortName} foi completada.", + "processing": "Seu bridge de %{sellAmountAndSymbol}.%{sellChainShortName} para %{buyAmountAndSymbol}.%{buyChainShortName} está sendo processado.", + "complete": "Seu bridge de %{sellAmountAndSymbol}.%{sellChainShortName} para %{buyAmountAndSymbol}.%{buyChainShortName} foi concluído.", "initiated": "Sua ponte de %{sellAmountAndSymbol} para %{buyAmountAndSymbol} foi iniciada.", "pendingWithdraw": "Seu saque de %{amountAndSymbol} estará disponível em %{timeText}.", "claimAvailable": "Sua ponte de %{amountAndSymbol} está disponível para ser resgatada.", - "failed": "Sua ponte de %{sellAmountAndSymbol}.%{sellChainShortName} para %{buyAmountAndSymbol}.%{buyChainShortName} falhou.", + "failed": "Seu bridge de %{sellAmountAndSymbol}.%{sellChainShortName} para %{buyAmountAndSymbol}.%{buyChainShortName} falhou.", "transactionInitiated": "Transação iniciada", "claimWithdraw": "Resgate seu saque", "withdrawTx": "Saque Tx", @@ -2861,28 +2873,28 @@ "limitOrder": { "placed": "Sua ordem limite colocada de %{sellAmountAndSymbol} para %{buyAmountAndSymbol}", "complete": "Sua ordem para comprar %{buyAmountAndSymbol} por %{sellAmountAndSymbol} foi preenchida com sucesso.", - "cancelled": "Sua ordem para comprar %{buyAmountAndSymbol} por %{sellAmountAndSymbol} foi cancelada.", + "cancelled": "Sua ordem de compra de %{buyAmountAndSymbol} por %{sellAmountAndSymbol} foi cancelada.", "expired": "Sua ordem para comprar %{buyAmountAndSymbol} por %{sellAmountAndSymbol} expirou." }, "rfox": { - "unstakeReady": "Seu unstake de %{amount} %{symbol} está pronto para resgate.", - "unstakeTxPending": "Seu unstake de %{amount} %{symbol} está pendente.", + "unstakeReady": "O unstake de %{amount} %{symbol} está pronto para resgate.", + "unstakeTxPending": "O unstake de %{amount} %{symbol} está pendente.", "unstakeTxComplete": "Seu unstake de %{amount} %{symbol} está completo." }, "tcy": { "stakePending": "Seu stake de %{amount} %{symbol} está sendo processado...", - "unstakePending": "Seu unstake de %{amount} %{symbol} está sendo processado...", + "unstakePending": "O unstake de %{amount} %{symbol} está sendo processado...", "stakeComplete": "Seu stake de %{amount} %{symbol} foi concluído.", "unstakeComplete": "Seu unstake de %{amount} %{symbol} foi concluído.", "claimReady": "Seu resgate de TCY %{amount} %{symbol} está pronto.", - "claimTxPending": "Seu resgate de TCY %{amount} %{symbol} está pendente. ", + "claimTxPending": "Seu resgate de TCY de %{amount} %{symbol} está pendente.", "claimTxComplete": "Seu resgate de TCY %{amount} %{symbol} foi completado." }, "approve": { "approvalTxPending": "Aprovando %{contractName} para usar %{amount} %{symbol}.", - "approvalTxComplete": "Aprovado %{contractName} para usar %{amount} %{symbol}." + "approvalTxComplete": "%{contractName} aprovado para usar %{amount} %{symbol}." }, - "pendingTransactions": "%{count} Pendente", + "pendingTransactions": "%{count} Pendente(s)", "rewardDistribution": { "pending": { "description": "Sua recompensa de %{amountAndSymbol} está sendo processada..." @@ -2895,8 +2907,7 @@ "yieldXYZ": { "pageTitle": "Yields", "pageSubtitle": "Descubra e gerencie oportunidades de rendimento em várias redes.", - "actions": { - }, + "actions": {}, "yield": "Yield", "apy": "APY", "apr": "APR", @@ -2909,7 +2920,7 @@ "stats": "Estatísticas", "minStake": "Stake Mínimo", "minDeposit": "Depósito Mínimo", - "rewardSchedule": "Cronograma de recompensas", + "rewardSchedule": "Calendário de Recompensas", "staking": "Staking...", "unstaking": "Unstaking...", "depositing": "Depositando...", @@ -2988,9 +2999,10 @@ "providers": "Fornecedores", "successStaked": "Você stakou com sucesso %{amount} %{symbol}", "successUnstaked": "You unstakou com sucesso %{amount} %{symbol}", - "successDeposited": "Você depositou com sucesso %{amount} %{symbol}", + "cooldownNotice": "Seu saque estará disponível em %{cooldownDuration}.", + "successDeposited": "Você depositou %{amount} %{symbol} com sucesso", "successWithdrawn": "Você sacou %{amount} %{symbol} com sucesso.", - "successClaim": "Você sacou com sucesso %{amount} %{symbol}", + "successClaim": "Você resgatou %{amount} %{symbol} com sucesso", "viewPosition": "Ver Posição", "via": "via", "resetAllowance": "Redefinir limite", @@ -3031,7 +3043,7 @@ "aboutProvider": "Sobre %{provider}", "visitWebsite": "Visite o site", "providerDescriptions": { - "morpho": "Morpho é um protocolo de infraestrutura para mercado de vaults, auditado diversas vezes por empresas de segurança de primeira linha, em operação desde 2022, com US$ 2,5 milhões em incentivos para descoberta de bugs.", + "morpho": "Morpho é um protocolo de mercado monetário e infraestrutura de vault, auditado várias vezes por empresas de segurança de alto nível, ativo desde 2022, com $2,5M em incentivos de bug bounty.", "morpho-aave": "Morpho é um protocolo de infraestrutura para mercado de vaults, auditado diversas vezes por empresas de segurança de primeira linha, em operação desde 2022, com US$ 2,5 milhões em incentivos para descoberta de bugs.", "morpho-compound": "Morpho é um protocolo de infraestrutura para mercado de vaults, auditado diversas vezes por empresas de segurança de primeira linha, em operação desde 2022, com US$ 2,5 milhões em incentivos para descoberta de bugs.", "lido": "Lido é um protocolo de staking líquido que permite aos usuários fazer staking de ETH enquanto mantêm liquidez por meio de stETH. Auditado diversas vezes por empresas de segurança de primeira linha, em operação desde 2020, com US$ 2 milhões em incentivos para descoberta de bugs.", @@ -3040,18 +3052,18 @@ "kamino": "Kamino é um conjunto de soluções DeFi da Solana que unifica empréstimos, liquidez e alavancagem em uma única plataforma. Opera um programa Immunefi com recompensa máxima de até US$ 1,5 milhão.", "fluid": "Fluid é uma camada de liquidez criada pela equipe da Instadapp, que conecta os mercados de empréstimo, DEX, financiamento e stablecoins em um sistema eficiente. Auditada diversas vezes por empresas de segurança de primeira linha, em operação desde 2024, com US$ 0,5 milhão em incentivos para descoberta de bugs.", "venus": "Venus é um protocolo de empréstimo e tomada de empréstimo focado na blockchain BNB. Prioriza a segurança por meio de auditorias de terceiros e um programa contínuo de recompensas por bugs.", - "gearbox": "Gearbox é um protocolo de alavancagem modular que permite contas de crédito integradas a estratégias DeFi. Auditado diversas vezes por empresas de segurança de primeira linha, em operação desde 2021, com US$ 0,2 milhão em incentivos para descoberta de bugs.", - "yearn": "Yearn é um conjunto descentralizado de produtos que ajuda indivíduos, DAOs e outros protocolos a obterem rendimento sobre seus ativos digitais. Auditado diversas vezes por empresas de segurança de primeira linha, em operação desde 2020, com US$ 0,2 milhão em incentivos para descoberta de bugs.", + "gearbox": "Gearbox é um protocolo de alavancagem composável que habilita contas de crédito integradas a estratégias DeFi. Auditado várias vezes por empresas de segurança de alto nível, ativo desde 2021, com $0,2M em incentivos de bug bounty.", + "yearn": "Yearn é um conjunto descentralizado de produtos que ajuda pessoas, DAOs e outros protocolos a ganhar rendimento em seus ativos digitais. Auditado várias vezes por empresas de segurança de alto nível, ativo desde 2020, com $0,2M em incentivos de bug bounty.", "spark": "Spark é um protocolo de empréstimo descentralizado, alimentado pelo ecossistema Sky (anteriormente MakerDAO), que permite aos usuários tomar empréstimos de DAI e outras stablecoins a taxas competitivas. Opera um programa Immunefi com recompensa máxima de até US$ 5 milhões.", - "rocket-pool": "A Rocket Pool é um protocolo descentralizado de staking líquido de Ethereum que emite rETH. Auditada por diversas empresas de segurança de primeira linha, em operação desde 2021, com US$ 0,5 milhão em incentivos para descoberta de bugs.", + "rocket-pool": "Rocket Pool é um protocolo descentralizado de liquid staking do Ethereum que emite rETH. Auditado várias vezes por empresas de segurança de alto nível, ativo desde 2021, com $0,5M em incentivos de bug bounty.", "drift": "A Drift é uma plataforma descentralizada de negociação e empréstimo de títulos perpétuos, construída na rede Solana. Ela opera um programa Immunefi com recompensa máxima de até US$ 0,5 milhão." }, "otherYields": "Outras %{symbol} Oportunidades de Rendimento", - "availableToDeposit": "Disponível para depósito", + "availableToDeposit": "Disponível para Depósito", "availableToDepositTooltip": "Este é o valor de %{symbol} em sua carteira que você pode depositar nesta oportunidade de rendimento.", "getAsset": "Obter %{symbol}", "manage": "Gerenciar", - "potentialEarningsAmount": "%{amount}/ao ano a %{apy}% anualmente", + "potentialEarningsAmount": "%{amount}/ano a %{apy}% APY", "depositNow": "Faça um depósito agora", "strategyInfo": "Informações sobre estratégia", "overview": "Visão geral", @@ -3098,7 +3110,7 @@ "reset": "Reiniciar", "disabledMessage": "Profiling está desativado. Clique no ícone do olho para ativar.", "toggleAria": "Alternar perfilador", - "collapseAria": "Fechar", + "collapseAria": "Recolher", "expandAria": "Expandir perfilador", "enableProfiling": "Ligar profiling", "disableProfiling": "Desligar profiling", diff --git a/src/assets/translations/ru/main.json b/src/assets/translations/ru/main.json index 3136f6ebf14..b334d8e3d66 100644 --- a/src/assets/translations/ru/main.json +++ b/src/assets/translations/ru/main.json @@ -11,7 +11,7 @@ "and": "и", "balance": "Баланс", "next": "Следующий", - "edit": "Редактировать", + "edit": "Изменить", "error": "Ошибка", "show": "Показать", "done": "Готово", @@ -27,9 +27,9 @@ "continue": "Продолжить", "approve": "Подтвердить", "approveToken": "Утвердить токен", - "approveAmount": "Утвердить сумму", + "approveAmount": "Одобрить сумму", "approveTo": "Утвердить", - "reset": "Сброс", + "reset": "Сбросить", "confirm": "Подтвердить", "seeDetails": "Посмотреть детали", "activity": "Активность", @@ -39,7 +39,7 @@ "connected": "Подключен", "trendingTokens": "Трендовые токены", "created": "Создан %{date}", - "noResultsFound": "Результатов не найдено.", + "noResultsFound": "Результаты не найдены.", "noResultsBody": "Для %{searchQuery} нет результатов. Попробуйте выполнить новый поиск.", "insufficientFunds": "Недостаточно средств", "insufficientFundsForTrade": "Недостаточно средств для торговли", @@ -52,14 +52,14 @@ "withdraw": "Вывод", "withdrawal": "Вывод средств", "claim": "Клейм", - "claiming": "Заявление...", + "claiming": "Получение...", "confirming": "Подтверждение...", "withdrawAndClaim": "Вывод и клейм", "overview": "Обзор", - "connectWallet": "Подключить кошелек", + "connectWallet": "Подключить кошелёк", "pairing": "Создание пары", - "connectWalletToGetStartedWith": "Подключите кошелек, чтобы начать работу с %{feature}", - "connectedWallet": "Подключенный кошелек", + "connectWalletToGetStartedWith": "Подключите кошелёк, чтобы начать работу с %{feature}", + "connectedWallet": "Подключённый кошелёк", "crypto": "Криптовалюта", "walletActions": "Действия с кошельком", "connectedWalletSettings": "Настройки кошелька", @@ -79,7 +79,7 @@ "degradedState": "Приложение находится в поврежденном состоянии", "degradedTransactionHistory": "История транзакций размыта", "success": "Успех", - "happySuccess": "Успех!", + "happySuccess": "Успешно!", "transactionFailed": "Ошибка транзакции", "transactionFailedBody": "Сбой транзакции", "safeProposalQueued": "Предложение SAFE поставлено в очередь. Подписано %{currentConfirmations} из %{confirmationsRequired}.", @@ -120,7 +120,7 @@ "sepa": "SEPA", "buySell": "Купить/Продать", "all": "Все", - "seeMore": "Смотреть больше", + "seeMore": "Показать больше", "slippage": "Проскальзывание", "feesPlusSlippage": "Комиссии + проскальзывание", "gasFee": "Плата за газ", @@ -137,7 +137,7 @@ "needAsset": "Нужно немного %{asset}?", "buyNow": "Купить сейчас", "manage": "Управлять", - "view": "Посмотреть", + "view": "Просмотр", "viewOnly": "Только просмотр", "allChains": "Все сети", "wallet": "Кошелек", @@ -157,7 +157,7 @@ "chainHalted": "Сеть остановлена", "poolDisabled": "Пул отключен", "symmetric": "Симметричный", - "asymmetric": "Асимметричный (%{assetSymbol})", + "asymmetric": "Асимметрично (%{assetSymbol})", "import": "Импорт", "accountsLoading": "Загрузка аккаунтов", "noAccounts": "Нет учетных записей для выбранных фильтров.", @@ -193,7 +193,7 @@ "boost": "Буст", "viewOnExplorer": "Просмотр в проводнике", "approval": "Утверждение", - "permit2Approval": "Permit2 Одобрение", + "permit2Approval": "Одобрение Permit2", "network": "Сеть", "feeEstimate": "Ориентировочная комиссия", "list": "Список" @@ -206,7 +206,7 @@ "aiChat": "AI Чат", "openChat": "Открыть чат", "closeChat": "Закрыть чат", - "emptyState": "Чем я могу вам помочь сегодня?", + "emptyState": "Чем могу помочь вам сегодня?", "placeholder": "Введите сообщение...", "stop": "Стоп", "send": "Отправить", @@ -245,7 +245,7 @@ "errors": { "quoteFailed": "Не удалось получить котировку обмена", "swapFailed": "Сбой выполнения обмена: %{error}", - "noWallet": "Кошелек не подключен", + "noWallet": "Кошелёк не подключён", "accountNotFound": "Учетная запись не найдена" }, "success": { @@ -345,7 +345,7 @@ "marketCapRank": "Рейтинг по рыночной капитализации", "volume24h": "24-часовой объем", "volMcap": "Объем/Рыночная капитализация", - "about": "О нас", + "about": "О %{symbol}", "noDescription": "Описание для этого актива отсутствует." }, "receive": { @@ -353,14 +353,14 @@ "receiveOn": "Получить %{symbol} в сети %{network}", "copyAddress": "Копировать адрес", "copied": "Скопировано!", - "warning": "Отправлять на этот адрес только токены, совместимые с %{network}" + "warning": "Отправляйте на этот адрес только токены, совместимые с %{network}" }, "getLimitOrders": { "title": "Лимитные ордера", "openOrders": "%{count} открытых", "noOrders": "Не найдено ни одного лимитного ордера", "status": { - "open": "Открыть", + "open": "Открыт", "fulfilled": "Заполнено", "cancelled": "Отменено", "expired": "Истекший срок", @@ -368,7 +368,7 @@ }, "sellLabel": "Продать", "buyLabel": "Купить", - "expiresLabel": "Срок действия истекает", + "expiresLabel": "Истекает", "view": "Просмотр", "filledLabel": "Заполнено" }, @@ -413,7 +413,7 @@ "error": { "insufficientFunds": "Быстрая покупка на сумму %{amount} не удалась, недостаточно средств, попробовать другую сумму?", "noQuote": "Быстрая покупка %{amount} не удалась, не удалось получить действительную котировку.", - "failed": "Быстрая покупка %{amount} не удалась." + "failed": "Быстрая покупка на %{amount} не выполнена." } }, "consentBanner": { @@ -453,12 +453,12 @@ } }, "rampPage": { - "buyTitle": "Купить криптовалюту за считанные секунды", - "sellTitle": "Продайте криптовалюту за считанные секунды", - "buyBody": "Используйте кредитную карту, дебетовую карту или банковский счет. Покупайте биткойны, эфир, USDT, USDC или другие популярные криптовалюты. Доступны поставщики, не требующие KYC.", + "buyTitle": "Купить крипту за секунды", + "sellTitle": "Продать крипту за секунды", + "buyBody": "Используйте кредитную карту, дебетовую карту или банковский счёт. Купите Bitcoin, Ethereum, USDT, USDC или другие ведущие криптовалюты. Доступны провайдеры без KYC.", "sellBody": "Используйте кредитную карту, дебетовую карту или банковский счет. Продавайте биткойны, эфир, USDT, USDC или другие популярные криптовалюты. Доступны поставщики, не требующие KYC.", "disclaimer": "*Вы также можете продать криптовалюту напрямую за наличные деньги на свой банковский счет.", - "ctaTitle": "Вы также можете использовать ShapeShift со всеми ведущими кошельками для торговли, получения дохода и отслеживания ваших криптовалют по %{chainCount} цепочкам.", + "ctaTitle": "Вы также можете использовать ShapeShift со всеми ведущими кошельками для торговли, получения дохода и отслеживания криптовалюты в %{chainCount} сетях", "availableAssets": "Доступные активы" }, "updateToast": { @@ -498,7 +498,7 @@ }, "fiatRamps": { "title": "Купить или продать криптовалюту", - "titleMessage": "Вы можете %{action} %{asset}, используя:", + "titleMessage": "Вы можете %{action} %{asset} с помощью:", "banxa": "Banxa", "mtPelerin": "Гора Пелерин", "onRamper": "OnRamper", @@ -534,11 +534,11 @@ "createOrImport": "Создать или импортировать кошелек", "viewSavedWallets": "Посмотреть сохраненные кошельки", "footerOne": "Продолжая, вы соглашаетесь с", - "terms": "условиями", + "terms": "Условия", "privacyPolicy": "Политики конфиденциальности", "connectNewWallet": "Подключить новый кошелек", "getANewWallet": "Получите новый кошелек", - "alreadyHaveWallet": "У меня уже есть кошелек" + "alreadyHaveWallet": "У меня уже есть кошелёк" }, "connectWallet": { "menu": { @@ -563,10 +563,10 @@ "risks": "Существуют ли риски?" }, "bodies": { - "rateFluctuationInfo": "Размер %{assetName}, который вы зарабатываете, — годовой процентный доход (APR) - обычно колеблется между 7% и 20%.", + "rateFluctuationInfo": "Ставка дохода по %{assetName}, Годовой процентный доход (APR), как правило, колеблется в диапазоне 7%–20%.", "amountStakingInfo": "Вы можете стейкать любую сумму %{assetName}, и она немедленно начнут приносить вознаграждение.", "withdrawInfo": "Вы можете снять свои вознаграждения в любое время, для чего необходимо оплатить небольшую комиссию за газ в размере ~$.01.", - "unbondingInfo": "Когда вы разблокируете свои токены, они останутся заблокированными на %{unbondingDays} дней, в течение которых они не будут получать вознаграждения. По истечении %{unbondingDays} дней ваши %{assetName} вернутся в ваш Основной кошелек.", + "unbondingInfo": "При снятии токенов со стейкинга они остаются заблокированными на %{unbondingDays} дней, в течение которых вознаграждения не начисляются. По истечении %{unbondingDays} дней ваши %{assetName} вернутся в основной кошелёк.", "slashingInfo": "Стейкинг делается через валидатора. Это случается крайне редко, но если валидатор, через который вы стейкали, ошибется, допустив ложные или неправильные транзакции, вы можете потерять часть своих активов.", "partnerInfo": "Мы снизили этот риск, заключив партнерство с авторитетным валидатором, который имеет безопасную, надежную и проверенную инфраструктуру." } @@ -586,7 +586,7 @@ "header": "Внесите токены ETH-FOX LP на %{opportunity}, чтобы заработать", "body": "Подтвердите и стейкайте свои токены ликвидности, чтобы получить бонусные вознаграждения FOX.", "rewards": "Вознаграждения, которые вы заработаете, будут начисляться автоматически.", - "cta": "Внести токены ETH-FOX LP сейчас " + "cta": "Внести токены ETH-FOX LP сейчас" }, "overview": { "underlyingTokens": "Базовые токены", @@ -602,9 +602,9 @@ "claimYour": "Заклеймить свои %{opportunity}" }, "saversVaults": { - "description": "Получайте доход от вашего %{asset} через хранилища THORChain. Время блокировки отсутствует, а вознаграждения накапливаются автоматически. Доходность THORChain складывается из комиссий за своп и вознаграждений за блокчейн. Односторонняя доходность ограничена половиной двусторонней доходности поставщиков ликвидности.", - "runePoolDescription": "RUNEPool позволяет вам зарабатывать больше %{asset}, объединяя свои %{asset} с другими. Вам не нужно выбирать конкретные пулы, все участвуют в общей производительности.", - "runePoolOverviewDescription": "RUNEPool оптимизирует использование RUNE, размещая его во всех пулах ликвидности THORChain, поддерживающих пулы. Объединяя RUNE в этих пулах, участники зарабатывают совокупную APY, но подвергаются риску совокупных непостоянных потерь. Вместо того чтобы выбирать отдельные пулы, пользователи получают выгоду от общей производительности, эффективно инвестируя в индекс RUNE и все активы THORChain с поддержкой пулов. Это упрощает предоставление ликвидности и снижает индивидуальный риск.", + "description": "Получайте доход на ваш %{asset} через хранилища THORChain Savers. Нет периода блокировки, вознаграждения накапливаются автоматически. Доход на THORChain формируется из комиссий за своп и наград за блоки. Односторонний доход ограничен половиной двустороннего дохода поставщиков ликвидности.", + "runePoolDescription": "RUNEPool позволяет зарабатывать больше %{asset}, объединяя ваш %{asset} с другими участниками. Вам не нужно выбирать конкретные пулы — все участники разделяют общую доходность.", + "runePoolOverviewDescription": "RUNEPool оптимизирует использование RUNE, размещая его во все пулы ликвидности THORChain с поддержкой POL. Объединяя RUNE в этих пулах, участники получают совокупный APY, но подвержены совокупным непостоянным потерям. Вместо выбора отдельных пулов пользователи получают выгоду от общей доходности, фактически инвестируя в индекс RUNE и все активы THORChain с поддержкой POL. Это упрощает предоставление ликвидности и снижает индивидуальный риск.", "vaultCap": "Капитализация хранилища", "vaultCapTooltip": "Текущая максимальная вместимость данного хранилища", "haltedDepositTitle": "Вклады временно приостановлены.", @@ -621,16 +621,16 @@ "introducingSaversVaults": "Представляем вашему вниманию хранилища Savers", "introducingRunePool": "Представляем вам RUNEPool", "risksBody": { - "vaults": "См. эту статью за риски, связанные с хранилищами сбережений.", - "runePool": "См. эту статью о рисках, связанных с использованием RUNEPool." + "vaults": "Ознакомьтесь с этой статьёй о рисках, связанных с хранилищами Savers.", + "runePool": "Ознакомьтесь с этой статьёй о рисках, связанных с RUNEPool." }, "timeToBreakEven": { "title": "Время выйти на безубыточность", "tooltip": "Расчетное время для покрытия комиссионных по вкладу и заработка." }, "cannotDepositWhilePendingTx": "Невозможно пополнить счет, пока транзакция находится на рассмотрении", - "cannotWithdrawWhilePendingTx": "Невозможно снять средства, пока транзакция находится на рассмотрении", - "agreeRunePool": "Я понимаю, что RUNEPool имеет как минимальную блокировку на 30 дней, так и повышенный риск непостоянной потери." + "cannotWithdrawWhilePendingTx": "Невозможно вывести средства при наличии ожидающих транзакций", + "agreeRunePool": "Я понимаю, что RUNEPool предусматривает минимальную блокировку на 30 дней и повышенный риск непостоянных потерь." } }, "memoNote": { @@ -654,7 +654,7 @@ "ended": "Завершено", "balance": "Баланс", "netWorth": "Чистая стоимость", - "loadingAccounts": "Загруженные аккаунты %{portfolioAccountsLoaded}", + "loadingAccounts": "Загружено %{portfolioAccountsLoaded} аккаунтов", "loadingMorePositions": "Дополнительные позиции DeFi все еще загружаются", "walletBalanceChange24Hr": "24-часовое изменение", "earnBody": "Получайте пассивный доход вкладывая свои активы в стейкинг или DeFi стратегию.", @@ -680,9 +680,9 @@ }, "withdraw": { "info": { - "title": "Информация о выводе средств", + "title": "Информация о выводе", "description": "Введите сумму %{asset}, которую вы хотите снять.", - "yieldyDescription": "Введите сумму %{asset}, которую вы хотите снять. Последующие снятия будут объединены и обнулят время снятия.", + "yieldyDescription": "Введите сумму %{asset} для вывода. Последующие выводы будут объединены и сбросят время вывода.", "farmingExpiredDescription": "Этот контракт на вознаграждение за фарминг закончился. Вы должны вывести весь свой баланс.", "rewardsInfo": "Вознаграждения, которые вы получите" } @@ -765,7 +765,7 @@ "common": "Транзакция", "confirmed": "Подтвержден", "pending": "В обработке", - "failed": "Не удалось", + "failed": "Неудачно", "swap": "Обмен", "amount": "Сумма", "emptyMessage": "Здесь %{status} будут отображаться ваши транзакции.", @@ -801,7 +801,7 @@ "revoke": "Отменить", "revokeSymbol": "Отменить разрешение %{symbol} ", "amountUnavailable": "Недоступно", - "withdraw": "Вывести", + "withdraw": "Вывод", "receive": "Получить" }, "yearn": { @@ -838,7 +838,7 @@ "swapOut": "Полученный обмен", "swap": "Обмен", "swapRefund": "Возврат обмена", - "unstake": "Снятие со стейкинга", + "unstake": "Снять со стейкинга", "withdraw": "Вывод Запрошено", "withdrawNative": "Вывести", "withdrawOut": "Заявка на вывод средств получена" @@ -917,7 +917,7 @@ "assetAddress": "%{asset} адрес", "verifyAsset": "Верификация %{asset}", "verifyAddressMessage": "Перед началом работы убедитесь, что адреса указаны правильно.", - "slippageInfo": "Ваша сделка будет возвращена, если цена изменится в неблагоприятную сторону более чем на этот процент.", + "slippageInfo": "Транзакция будет откатана, если цена изменится в невыгодную сторону более чем на этот процент.", "allowanceTooltip": "Сумма, которую вы дадите смарт-контракту полномочия использовать от вашего имени.", "searchingRate": "Поиск лучшего курса...", "noRateAvailable": "Тариф не предусмотрен.", @@ -956,7 +956,7 @@ "youGet": "Вы получаете", "tradeTo": "Обменять на", "expand": "Развернуть", - "minerFee": "Комиссия майнеров", + "minerFee": "Комиссия майнера", "protocolFee": "Комиссия за протокол", "protocol": "Протокол", "tradeFeeSource": "%{tradeFeeSource} Комиссия", @@ -972,7 +972,7 @@ "noQuotesAvailableDescription": "В данный момент доступных котировок не найдено. Попробуйте выбрать другую пару.", "availableQuotes": "Доступные котировки", "unavailableSwappers": "Недоступные обменники", - "unlimited": "Безлимитный", + "unlimited": "Неограниченно", "swapsFailed": "%{failedSwaps} обмен не удался", "exact": "Точный", "free": "Бесплатно", @@ -985,7 +985,7 @@ "changeAddress": "Изменить адрес", "changeAddressExplainer": "При отправке криптовалют в сетях на основе UTXO любые оставшиеся средства от вашей транзакции возвращаются вам на этот адрес.", "depositAddress": "Адрес для депозита", - "depositAddressExplainer": "Это протокольный адрес, на который будут отправлены ваши средства для обработки. Ваш аппаратный кошелек отобразит этот адрес для проверки.", + "depositAddressExplainer": "Это адрес протокола, на который будут отправлены ваши средства для обработки. Ваш аппаратный кошелёк отобразит этот адрес для проверки.", "customReceiveAddress": "Пользовательский адрес получения", "customReceiveAddressDescription": "Введите индивидуальный адрес получателя для этой сделки", "thisIsYourCustomReceiveAddress": "Это ваш индивидуальный адрес для получения", @@ -994,7 +994,7 @@ "tooltip": { "continueSwapping": "Продолжайте обменивать для получения окончательных данных", "noRateAvailable": "Часто это связано с очень ограниченной или отсутствующей ликвидностью по торговой паре.", - "minerFee": "Это комиссия для обработки транзакции в блокчейне, эту комиссию не снимает ShapeShift.", + "minerFee": "Это комиссия за обработку транзакции в блокчейне — ShapeShift её не взимает.", "protocolFee": "Это плата, взимаемая протоколом, выбранным для обработки данной транзакции, это не плата, взимаемая ShapeShift", "inputOutputDifference": "Расчетная разница между значениями входных и выходных сумм в долларах США.", "slippageWithAmount": "Если цена изменится таким образом, что вы получите меньше %{amount}, ваша сделка будет отменена. Это минимальная сумма, которую вы гарантированно получите.", @@ -1008,13 +1008,13 @@ }, "rateExpired": { "title": "Новый тариф", - "body": "Срок действия предыдущей ставки обмена истек. Мы нашли новый курс и обновили ваши котировки. Пожалуйста, просмотрите последние данные, прежде чем подтверждать своп.", + "body": "Предыдущий курс свопа истёк. Мы получили новый курс и обновили суммы котировки. Ознакомьтесь с актуальными данными перед подтверждением свопа.", "cta": "Хорошо, понял." } }, "permit2Allowance": { - "title": "Разрешение на Permit2 ", - "tooltip": "Эта сделка использует протокол Permit2, который требует однократного одобрения для предоставления неограниченного разрешения на контракт Permit2. После этой первоначальной настройки вы можете разрешать сделки по любому протоколу, поддерживаемому Permit2, подписывая сообщения без газа, которые предоставляют временные 5-минутные разрешения." + "title": "Лимит контракта Permit2", + "tooltip": "Этот трейд использует Permit2, который требует однократного одобрения для предоставления неограниченного лимита контракту Permit2. После первоначальной настройки вы можете авторизовать трейды на любом протоколе с поддержкой Permit2, подписывая сообщения без газа, предоставляющие временные 5-минутные лимиты." }, "permit2Eip712": { "title": "Разрешить передачу токенов", @@ -1028,7 +1028,7 @@ "sellAmountDoesNotCoverFee": "Сумма продажи меньше, чем комиссия", "insufficientFunds": "Недостаточно средств для комиссии майнерам и сумма", "transactionRejected": "Пользователь отклонил транзакцию", - "insufficientFundsForProtocolFee": "Недостаточно %{symbol} на %{chainName} для оплаты комиссии", + "insufficientFundsForProtocolFee": "Недостаточно %{symbol} в сети %{chainName} для оплаты комиссий", "unsupportedTradePair": "Неподдерживаемая торговая пара", "noRouteFound": "Для этой пары и суммы маршруты не найдены", "quoteExpired": "Срок действия истек, попробуйте еще раз.", @@ -1070,28 +1070,28 @@ "summary": "Торговая сводка", "estimatedCompletionTime": "Предполагаемое время завершения", "transactionSuccessful": "Транзакция прошла успешно, ожидаем подтверждений", - "thorchainSwapperVolatilityAcknowledgementMessage": "Протокол THORCHain испытывает нестабильность. Действуйте с особой осторожностью и рассматривайте дополнительные доступные маршруты.", + "thorchainSwapperVolatilityAcknowledgementMessage": "Протокол THORChain испытывает волатильность. Действуйте с особой осторожностью и рассмотрите дополнительные доступные маршруты.", "temp": { "tradeSuccess": "Трейд завершен" }, "hopTitle": { "swap": "Обмен через %{swapperName}", - "swapEta": "Обмен через %{swapperName} в ~%{eta}" + "swapEta": "Своп через %{swapperName} за ~%{eta}" }, "transactionTitle": { "bridge": "Обмен с %{sellChainName} на %{buyChainName} через %{swapperName}", - "swap": "Обмен на %{sellChainName} через %{swapperName}" + "swap": "Своп в сети %{sellChainName} через %{swapperName}" }, "approvalTitle": "Согласие на использование токенов", "resetTitle": "Сброс ограничений на токены", "fiatAmountOnChain": "%{amountFiatFormatted} на %{chainName}", "quote": { - "cantSetSlippage": "Мы не можем установить пользовательское проскальзывание (%{userSlippageFormatted}) для %{swapperName}", + "cantSetSlippage": "Невозможно установить пользовательское проскальзывание (%{userSlippageFormatted}) для %{swapperName}", "gas": "Газ для завершения сделки этого обменника.", "slippage": "Это проскальзывание по данной котировке.", "timeEstimate": "Это примерное время выполнения данного обмена." }, - "awaitingPermit2Approval": "Ожидание передачи токена", + "awaitingPermit2Approval": "Ожидание перевода токена", "awaitingSwap": "Ожидание обмена через %{swapperName}", "awaitingApproval": "Ожидает одобрения", "awaitingAllowanceReset": "Ожидание сброса разрешений", @@ -1132,12 +1132,12 @@ "noOpenOrders": "Открытых ордеров пока нет.", "noHistoricalOrders": "Исторических ордеров пока нет.", "limitPriceIsPercentLowerThanMarket": "Лимитная цена на %{percent}% ниже рыночной цены", - "highCowFeeImpact": "Комиссия CoW составляет %{percentage}% от суммы продажи (%{cryptoImpact} %{sellAssetSymbol}). Ваш ордер может быть не исполнен.", + "highCowFeeImpact": "Комиссия CoW составляет %{percentage}% от суммы продажи (%{cryptoImpact} %{sellAssetSymbol}). Ваш ордер может не исполниться.", "awaitingOrderPlacement": "Ожидаем размещения ордера на %{swapperName}", "awaitingAllowanceApproval": "Ожидает утверждения разрешения ", "awaitingAllowanceReset": "Ожидание сброса разрешения", "orderPlacement": "Разместите ордер на %{swapperName}", - "explanation": "Когда цена %{assetSymbol} достигнет %{limitPrice}, ваш лимитный ордер автоматически продаст %{sellAmount}, гарантируя, что вы получите не менее %{receiveAmount}.", + "explanation": "Когда цена %{assetSymbol} достигнет %{limitPrice}, ваш лимитный ордер автоматически продаст %{sellAmount}, обеспечив получение не менее %{receiveAmount}.", "sellBuy": "Продать → Купить", "limitExecution": "Лимит/Исполнение", "statusHead": "Статус", @@ -1154,7 +1154,7 @@ "nativeSellAssetNotSupported": "Родные активы для продажи не поддерживаются", "insufficientValidTo": "Слишком раннее истечение срока действия ордера", "excessiveValidTo": "Срок действия ордера слишком далеко в будущем", - "insufficientLiquidity": "Недостаточная ликвидность", + "insufficientLiquidity": "Недостаточно ликвидности", "zeroFunds": "Необходим ненулевой баланс активов на продажу", "insufficientFundsForGas": "Недостаточно средств на оплату газа", "allowanceResetRequired": "Требуется сброс разрешений" @@ -1179,7 +1179,7 @@ "loadingOrderList": "Загрузка лимитных ордеров...", "orderCard": { "warning": { - "insufficientBalance": "В настоящее время в вашем кошельке недостаточно %{symbol} баланса на %{chainName} для выполнения этого ордера. Ордер все еще открыт и будет исполнен, когда вы пополните свой баланс %{символ} на %{chainName}.", + "insufficientBalance": "В вашем кошельке недостаточно %{symbol} в сети %{chainName} для исполнения этого ордера. Ордер остаётся открытым и станет исполнимым, когда вы пополните баланс %{symbol} в сети %{chainName}.", "insufficientAllowance": "Для исполнения этого ордера требуется дополнительная надбавка в размере %{symbol} на %{chainName}, которая должна быть одобрена для CoW Swap. Ордер все еще открыт и станет исполняемым, когда вы завершите утверждение надбавки." } }, @@ -1232,7 +1232,7 @@ "header": "Начните работу с Keepkey", "body": "Ваш KeepKey имеет заводские настройки по умолчанию. Создайте новый кошелек или восстановите кошелек с помощью секретной фразы восстановления", "createButton": "Создать новый кошелек", - "recoverButton": "Восстановить кошелек" + "recoverButton": "Восстановить кошелёк" }, "recoverySentenceEntry": { "header": "Введите свою фразу восстановления", @@ -1257,7 +1257,7 @@ }, "disconnect": { "header": "Отключить устройство KeepKey", - "body": "К сожалению, при восстановлении/настройке устройства KeepKey произошла ошибка. Пожалуйста, отключите и снова подключите устройство и попробуйте настроить устройство KeepKey еще раз. Если проблема сохраняется, обратитесь в службу поддержки KeepKey." + "body": "К сожалению, при восстановлении/настройке устройства KeepKey произошла ошибка. Отключите и повторно подключите устройство и попробуйте настроить KeepKey снова. Если проблема не исчезнет, обратитесь в службу поддержки KeepKey." } }, "shapeShift": { @@ -1286,13 +1286,13 @@ "menuItem": "Резервное копирование моего кошелька", "enterPassword": "Введите пароль, чтобы продолжить", "testTitle": "Верификация секретной фразы восстановления", - "title": "Подтвердите резервное копирование", + "title": "Подтверждение резервной копии", "description": "Пожалуйста, выберите правильный ответ на сид фразу ниже.", "desktopDescription": "Выполните этот быстрый тест, чтобы убедиться, что вы сохранили все правильно.", "wordNumber": "Слово #%{number}", "info": { "title": "Ваша секретная фраза для восстановления", - "description": "Запишите эти 12 слов и надежно храните их в офлайне. Эти 12 слов используются для восстановления закрытых ключей вашего кошелька.", + "description": "Запишите эти 12 слов и надёжно храните их в офлайн-режиме. Эта фраза из 12 слов используется для восстановления приватных ключей вашего кошелька.", "warning": "Примечание: если вы потеряете Секретную фразу восстановления, ShapeShift не сможет помочь вам восстановить кошелек, и ваши средства будут потеряны навсегда." }, "success": { @@ -1306,7 +1306,7 @@ }, "skip": { "title": "Пропустить этот шаг?", - "description": "Пропуск резервного копирования означает, что вы не сможете восстановить свой кошелек, если потеряете доступ к устройству.", + "description": "Пропуск резервного копирования означает, что вы не сможете восстановить кошелёк в случае потери доступа к устройству.", "confirmCta": "Да, я сохранил свою сид фразу" } } @@ -1347,7 +1347,7 @@ "generic": "Произошла ошибка.", "notEnoughNativeToken": "Недостаточно %{asset} для покрытия оплаты газа", "transactionRejected": " Пользователь отклонил транзакцию", - "qrPermissions": "Для работы этой функции необходимы разрешения на доступ к камере. Пожалуйста, измените настройки браузера.", + "qrPermissions": "Для работы этой функции необходим доступ к камере. Измените настройки браузера.", "qrDangerousEthUrl": "QR-коды, содержащие адрес контракта, не поддерживаются. Пожалуйста, вставьте адрес назначения вручную.", "noAccountsOnChain": "Нет учетных записей на %{chain}" }, @@ -1423,7 +1423,7 @@ "withdrawType": "Способ вывода средств", "instant": "Мгновенно", "delayed": "от 7 до 14 дней", - "fee": "%{fee}% %{symbol} комиссия", + "fee": "Комиссия %{fee}% %{symbol}", "noFee": "Без комиссии %{symbol}", "withdrawFee": "За вывод средств взимается отдельная плата за газ.", "notEnoughGas": "Недостаточно %{assetSymbol} для покрытия газа", @@ -1442,7 +1442,7 @@ "depositFee": "За пополнение счета взимается отдельная плата за газ.", "estimatedGas": "Предполагаемая плата за газ", "reject": "Отклонить", - "approved": "Утверждено" + "approved": "Одобрено" }, "confirm": { "withdraw": { @@ -1462,9 +1462,9 @@ "withdrawInstantTime": "Мгновенно", "withdrawDelayedTime": "от 7 до 14 дней", "xDays": "%{unbondingDays} дней", - "estimatedGas": "Расчетная комиссия за газ", + "estimatedGas": "Расчётная комиссия за газ", "notEnoughGas": "Недостаточно %{assetSymbol} для покрытия газа", - "missingFundsForGas": "Недостаточно средств, вам нужно больше %{cryptoAmountHuman} %{assetSymbol} для завершения сделки", + "missingFundsForGas": "Недостаточно средств, вам нужно ещё %{cryptoAmountHuman} %{assetSymbol} для завершения транзакции", "signBroadcast": "Подпись и передача", "cancel": "Отменить" }, @@ -1506,10 +1506,10 @@ "CAD": "Канадский доллар", "HKD": "Гонконгский доллар", "AUD": "Австралийский доллар", - "TWD": "Новый тайваньский доллар", + "TWD": "Тайваньский доллар", "BRL": "Бразильский реал", "CHF": "Швейцарский франк", - "THB": "тайский бат", + "THB": "Тайский бат", "MXN": "Mexican Peso", "RUB": "Российский рубль", "SAR": "Саудовский риял", @@ -1720,7 +1720,7 @@ "success": "Теперь вы можете закрыть это окно." }, "errors": { - "unknown": "Возникла непредвиденная ошибка при взаимодействии с кошельком Ledger", + "unknown": "При связи с кошельком Ledger произошла непредвиденная ошибка", "noDeviceConnected": "Устройство Ledger не подключено", "multipleDevicesConnected": "Подключено несколько устройств Ledger. Отключите все устройства, кроме одного." }, @@ -1733,7 +1733,7 @@ }, "failure": { "header": "Не удается подключиться к Ledger", - "body": "Мы не смогли обнаружить ваш Ledger, но вы можете подключиться в режиме «только для чтения»." + "body": "Нам не удалось обнаружить ваш Ledger, но вы можете подключиться в режиме только для чтения." }, "readOnly": { "button": "Подключиться только для чтения" @@ -1817,9 +1817,9 @@ "warningExperimental": "ShapeShift Multichain Snap является новой, экспериментальной функцией и предоставляется \"как есть\".", "warningBackup": "Убедитесь, что вы создали резервную копию начальной фразы MetaMask. Все средства, которые вы отправляете в не-EVM-цепочки с помощью этой привязки, будут направляться на счет по умолчанию, настроенный в MetaMask.", "agreeIntro": "Перед продолжением работы ознакомьтесь с данной информацией:", - "agreeItem1": "Аппаратные кошельки НЕ поддерживают", + "agreeItem1": "Аппаратные кошельки НЕ поддерживаются", "agreeItem2": "Для дополнительных цепочек, которые предоставляет ShapeShift Multichain Snap, в MetaMask поддерживается только счет №1", - "agreeItem3": "Для использования существующих цепочек Ethereum, предоставляемых MetaMask, необходимо подключить к ShapeShift в MetaMask счет №1", + "agreeItem3": "Для использования существующих цепочек Ethereum, предоставленных MetaMask, необходимо подключить Аккаунт #0 к ShapeShift в MetaMask", "agreeItem4": "Включая ShapeShift Multichain Snap, вы подтверждаете, что используете его на свой страх и риск", "readAndUnderstood": "Я ознакомился и понимаю", "seedBackedUp": "Я создал резервную копию своей начальной фразы MetaMask", @@ -1850,21 +1850,21 @@ "load": { "error": { "delete": "Невозможно удалить ваш кошелек, извините.", - "noWallet": "У вас нет сохраненных кошельков", + "noWallet": "У вас нет сохранённых кошельков", "pair": "Невозможно подключить ваш кошелек", "fetchingWallets": "При получении кошельков произошла ошибка." }, - "header": "Сохраненные кошельки", + "header": "Сохранённые кошельки", "forgetWallet": "Забыть кошелек", "confirmForget": "Вы уверены, что хотите забыть %{wallet}?", - "confirmForgetBody": "Вы не сможете получить доступ к своему кошельку, если не сделали его резервную копию." + "confirmForgetBody": "Если вы не создали резервную копию, вы не сможете получить доступ к кошельку." }, "import": { "header": "Импортировать кошелек", "keystoreHeader": "Импортируйте кошелек keystore ", "body": "Введите или вставьте вашу секретную фразу восстановления в нижнем регистре без запятых и цифр и с одним пробелом между словами.", "button": "Далее", - "secretRecoveryPhraseError": "Введите свою секретную фразу восстановления с одним пробелом между словами. Опускайте запятые, знаки возврата и любые дополнительные символы.", + "secretRecoveryPhraseError": "Введите секретную фразу восстановления, разделяя слова одним пробелом. Не используйте запятые, переносы строк или дополнительные символы.", "secretRecoveryPhraseRequired": "Требуется секретная фраза восстановления", "secretRecoveryPhraseTooShort": "Секретная фраза восстановления слишком короткая", "dragAndDrop": "Перетащите или выберите файл ", @@ -1887,7 +1887,7 @@ "showWords": "Показать слова" }, "start": { - "header": " Кошелек ShapeShift", + "header": "Кошелёк ShapeShift", "selectHeader": "Импортировать кошелек ", "body": "У вас может быть несколько кошельков ShapeShift. Вы можете загрузить кошелек, импортировать кошелек из секретной фразы восстановления или создать новый кошелек.", "selectBody": "Импортируйте кошелек с помощью секретной фразы восстановления или загрузив файл keystore.", @@ -1900,7 +1900,7 @@ "importKeystore": "Импорт файла Keystore" }, "success": { - "encryptingWallet": "Шифрование кошелька... если ваш браузер запрашивает сохранение данных в постоянном хранилище, пожалуйста, нажмите Разрешить", + "encryptingWallet": "Шифрование кошелька... если браузер запросит сохранение данных в постоянном хранилище, нажмите «Разрешить».", "header": "Кошелек подключен", "success": "Теперь вы можете закрыть это окно.", "error": "Произошла ошибка при подключении вашего кошелька" @@ -1951,7 +1951,7 @@ "multiChain": { "title": "Одновременная поддержка нескольких сетей", "subTitle": "Вам никогда не придется менять сеть в кошельке, он работает с каждой сетью без проблем.", - "body": "Когда в ShapeShift появится новая сеть, ваш кошелек будет автоматически поддерживать ее." + "body": "Получите доступ к Bitcoin, Ethereum, Solana и многим другим сетям из одного кошелька. Беспрепятственно торгуйте и управляйте своими активами в различных сетях." }, "selfCustody": { "title": "Ваш кошелек ShapeShift - это самоохрана", @@ -1985,7 +1985,7 @@ "headerSecret": "Секретную", "headerEnd": "Фразу восстановления в безопасности", "subHeader": "Обеспечение безопасности вашей секретной фразы восстановления имеет решающее значение.", - "description": "Относитесь к своей секретной фразе для восстановления пароля так же, как к самому ценному, - храните ее в безопасности все время. Менеджер паролей - отличная защита, а записать слова - еще лучше.", + "description": "Относитесь к своей секретной фразе восстановления как к самой ценной вещи — храните её в безопасности. Менеджер паролей — это хорошая защита, но записать слова на бумаге — ещё надёжнее.", "bulletPoints": { "share": "Не делитесь ею ни с кем.", "lose": "Если вы ее потеряете, мы не сможем ее восстановить." @@ -2001,13 +2001,13 @@ "button": "Продолжайте подтверждать", "success": { "title": "Вы внутри", - "description": "Вы проверили свою секретную фразу восстановления. Храните ее в надежном месте - это единственный способ восстановить кошелек.", + "description": "Вы подтвердили свою секретную фразу восстановления. Обязательно храните её в надёжном месте — это единственный способ восстановить кошелёк.", "viewWallet": "Посмотреть кошелек" } }, "vultisig": { "errors": { - "connectFailure": "Невозможно подключиться к кошельку Vultisig" + "connectFailure": "Не удалось подключить кошелёк Vultisig" }, "connect": { "header": "Соеденить Vultisig", @@ -2090,7 +2090,7 @@ "selectChain": "Выберите сеть, для которой вы хотите создать учетную запись.", "requiresPriorTxHistory": "Вы можете добавить новый счет только в том случае, если существующий счет (счета) имеет предыдущую историю транзакций", "newAccountAdded": "Добавлен новый аккаунт %{name}", - "youCanNowUse": "Теперь вы можете использовать %{name} Аккаунт #%{accountNumber}", + "youCanNowUse": "Теперь вы можете использовать %{name} Аккаунт №%{accountNumber}", "showAssets": "Показать активы", "hideAssets": "Скрыть активы", "viewAccount": "Просмотр аккаунта", @@ -2100,8 +2100,8 @@ "menuTitle": "Управление учетными записями", "manageAccounts": { "title": "Управление учетными записями", - "description": "Это цепочки, которые вы подключили, и количество импортированных учетных записей.", - "emptyList": "У вас еще нет подключенных аккаунтов. Добавьте цепочку, чтобы начать работу.", + "description": "Это сети, которые вы подключили, и количество импортированных аккаунтов.", + "emptyList": "У вас пока нет подключённых аккаунтов. Добавьте сеть, чтобы начать.", "addChain": "Добавить цепочку", "addAnotherChain": "Добавить еще одну цепочку" }, @@ -2141,7 +2141,7 @@ "resetFilters": "Сброс фильтров", "to": "к", "categories": "Категории", - "dayRange": "Дневной диапазон", + "dayRange": "Диапазон дней", "10days": "10 дней", "30days": "30 дней", "90days": "90 дней", @@ -2291,7 +2291,7 @@ "loanToValue": "Отношение кредита к стоимости", "availablePools": "Доступные пулы", "pool": "Пул", - "poolDepth": "Размер пула", + "poolDepth": "Глубина пула", "poolDepthDescription": "Состояние пула", "status": "Статус", "statusDescription": "Состояние пула", @@ -2345,7 +2345,7 @@ }, "borrowing": { "title": "Как происходит заимствование?", - "body": "Заимствование в THORChain подразумевает использование размещенных вами активов в качестве залога для получения кредита. Кредит деноминирован в долларах США (TOR) и может быть получен в различных активах L1. Благодаря динамическому коэффициенту залога вы можете брать займы на гибких условиях, не беспокоясь о процентах или ликвидации." + "body": "Заимствование в THORChain предполагает использование внесённых активов в качестве залога для получения кредита. Кредит деноминирован в USD (TOR) и может быть получен в различных активах L1. Благодаря динамическому коэффициенту обеспеченности вы можете занимать гибко, не беспокоясь о процентах или ликвидации." }, "repayments": { "title": "Как происходит погашение кредита?", @@ -2358,14 +2358,14 @@ "repaymentsDisabled": "Погашение временно отключено.", "borrowingDisabled": "Займы временно отключены.", "amountTooLowToReturnCollateral": "Сумма слишком мала для возврата залога", - "amountTooLowToReturnCollateralTooltip": "Сумма погашения слишком мала для возврата залога. Пожалуйста, повторите попытку с большей суммой или погасите часть суммы (это не вернет вам залог, но уменьшит ваш долг).", + "amountTooLowToReturnCollateralTooltip": "Сумма погашения слишком мала для возврата залога. Попробуйте снова с большей суммой или погасите частичную сумму (это не вернёт залог, но уменьшит долг).", "amountTooSmallUnknownMinimumTooltip": "Введенная вами сумма погашения слишком мала. Пожалуйста, повторите попытку с большей суммой.", "repaymentUnavailableTooltip": "Погашение кредита пока невозможно. Пожалуйста, подождите, пока не истечет срок блокировки погашения.", "repaymentsHaltedTooltip": "Выплаты временно прекращены. Пожалуйста, повторите попытку позже." }, "quote": { "collateral": "Общая сумма активов, которые будут обеспечены вашим кредитом", - "debt": "Общая сумма долга, которую вы должны будете выплатить, исходя из новой суммы кредита", + "debt": "Общий долг, который вы будете должны, исходя из новой суммы кредита", "repaymentLock": "Минимальный срок, в течение которого вы сможете погасить кредит", "collateralizationRatio": "Отношение стоимости вашего залога к сумме кредита", "feesPlusSlippage": "Общая сумма возникших комиссий, включая комиссию за L1, проскальзывание и комиссию за ликвидность THORChain" @@ -2403,17 +2403,17 @@ "addLiquidity": "Добавить ликвидность", "removeLiquidity": "Убрать ликвидность", "initialPricesAndPoolShare": "Начальные цены и доля в пуле", - "pricePerAsset": "%{from} до %{to}", - "symAlert": "При входе в бассейн ваш %{from} будет разделен на %{to} и %{from} в соотношении 50:50.", + "pricePerAsset": "%{from} за %{to}", + "symAlert": "При входе в пул ваш %{from} будет разделён в соотношении 50:50 между %{to} и %{from}.", "withdrawTypeNotAvailable": "Этот тип снятия средств недоступен для данного пула.", "incompletePositionDepositAlert": "Эта позиция не завершена, пожалуйста, внесите соответствующую сумму %{asset} чтобы завершить эту позицию.", "incompletePositionWithdrawAlert": "Эта позиция не завершена, пожалуйста, отмените ее, удалив 100% ликвидности. Вы также можете завершить позицию через \"Добавить ликвидность\".", "unsupportedNetworkExplainer": "Ваш кошелек не подключен к %{network}. Пожалуйста, подключите эту сеть или переключитесь на кошелек, поддерживающий эту сеть.", - "unsupportedNetworksExplainer": "Ваш кошелек не подключен к %{network1} и %{network2}. Пожалуйста, подключите эту цепочку или переключитесь на кошелек, поддерживающий эти сети.", + "unsupportedNetworksExplainer": "Ваш кошелёк не подключён к %{network1} и %{network2}. Подключите эту сеть или переключитесь на кошелёк, поддерживающий эти сети.", "depositsDisabled": "Депозиты отключены", "shareOfPool": "Доля пула", "totalLiquidity": "Общая ликвидность", - "totalVolume": "Общий объем", + "totalVolume": "Общий объём", "fees24h": "Комиссии за 24 часа", "selectPair": "Выбрать пару", "depositAmounts": "Сумма депозита(ов)", @@ -2519,9 +2519,9 @@ "staking": "Стейкинг rFOX ", "bridge": "Мост", "bridgeFunds": "Перевести средства", - "bridgeSuccess": "Ваши средства были успешно переведены. Теперь вы можете продолжить стейкинг.", + "bridgeSuccess": "Ваши средства успешно переведены через бридж. Теперь вы можете перейти к стейкингу.", "stake": "Стейкинг", - "unstake": "Вывести стейкинг", + "unstake": "Снять со стейкинга", "claim": "Клейм", "rewards": "Награды", "chainNotSupportedByWallet": "Сеть не поддерживается кошельком", @@ -2541,8 +2541,8 @@ "useWalletAddress": "Используйте адрес кошелька", "useCustomAddress": "Использование пользовательского адреса", "stakeWarning": "Когда вы стейкаете на %{symbol}, пожалуйста, имейте в виду, что период блокировки составляет %{cooldownPeriod}.Это означает, что если вы решите снять свои токены со стейкинга, вам придется подождать %{cooldownPeriod}, прежде чем вы сможете получить свои средства.", - "bridgeCta": "Вы выбрали %{assetSymbol} в %{originNetwork}, но вам нужен %{assetSymbol} в %{destinationNetwork}, чтобы застейкать. Мы можем помочь вам перевести средства в %{сеть назначения}. Хотите, чтобы мы провели вас через этот процесс?", - "unstakeWarning": "Прежде чем вы сможете потребовать свой %{symbol} , необходимо подождать в течение %{cooldownPeriod}. По истечении этого времени вы сможете потребовать свою незастейканую сумму.", + "bridgeCta": "Вы выбрали %{assetSymbol} в сети %{originNetwork}, но для стейкинга вам нужен %{assetSymbol} в сети %{destinationNetwork}. Мы можем помочь вам перевести средства в %{destinationNetwork} через бридж. Хотите, чтобы мы провели вас через этот процесс?", + "unstakeWarning": "Прежде чем вы сможете получить %{symbol}, необходимо выждать период охлаждения: %{cooldownPeriod}. По истечении этого времени вы сможете получить снятую со стейкинга сумму.", "tooltips": { "stakeAmount": "Это сумма FOX, которую вы будете стейкать.", "unstakeAmount": "Это количество FOX, которое вы разблокируете.", @@ -2551,12 +2551,12 @@ "unstakePendingCooldown": "Клейм доступный %{cooldownPeriodHuman}", "cooldownComplete": "Время ожидания завершено %{cooldownPeriodHuman}" }, - "stakeSuccess": "Вы успешно застейкали %{amount} %{symbol}", + "stakeSuccess": "Вы успешно поставили на стейкинг %{amount} %{symbol}", "stakePending": "Стейкинг %{amount} %{symbol}...", "changeAddressPending": "Изменение адреса вознаграждения RFOX на %{newAddress}", "changeAddressSuccess": "Изменен адрес вознаграждения RFOX на %{newAddress}", - "unstakePending": "Запрос на снятие %{amount} %{symbol}", - "unstakeSuccess": "По истечении %{cooldownPeriod} вы сможете забрать свои %{amount} %{symbol}", + "unstakePending": "Запрос на вывод %{amount} %{symbol}", + "unstakeSuccess": "По истечении %{cooldownPeriod} вы сможете получить %{amount} %{symbol}", "currentRewardAddress": "Текущий адрес для получения вознаграждения", "newRewardAddress": "Новый адрес для вознаграждений", "rewardCycleExplainer": "Это будет обновлено для следующего цикла вознаграждений.", @@ -2589,13 +2589,16 @@ "body": "rFOX - это термин, используемый для описания преимуществ и вознаграждений, которые вы получаете, когда стейкаете свои токены FOX на Arbitrum. В настоящее время вы блокируете и разблокируете токены vanilla FOX (на Арбитруме), чтобы застейкать." }, "why": { - "title": "Зачем стейкать свой FOX?" + "title": "Зачем стейкать свой FOX?", + "body": "Стейкинг FOX позволяет вам получать регулярные выплаты USDC из казны DAO, обеспечивая стабильный пассивный доход в USDC за каждую эпоху. Кроме того, часть доходов DAO будет направлена на сокращение общего предложения FOX посредством сжигания токенов. Стейкинг предусматривает минимальный период снятия — 28 дней, что поощряет приверженность и стабильность внутри сообщества." }, "stake": { - "title": "Как стейкать мои FOX?" + "title": "Как стейкать мои FOX?", + "body": "Чтобы застейкать свои FOX, используйте интерфейс стейкинга для блокировки токенов FOX в контракте стейкинга. После стейкинга вы начинаете получать вознаграждения в USDC за каждый блок в рамках преимуществ стейкинга." }, "unstake": { - "title": "Что произойдет, если я сниму со стейкинга?" + "title": "Что произойдет, если я сниму со стейкинга?", + "body": "Когда вы решите снять токены со стейкинга, существует минимальный период в 28 дней. В течение этого времени ваши FOX остаются заблокированными, и вы перестаёте получать эмиссии USDC. После окончания периода снятия со стейкинга вы можете разблокировать и вернуть свои обычные токены FOX." }, "cooldown": { "title": "Как долго длится период снятия со стейкинга?", @@ -2606,7 +2609,8 @@ "body": "Да, у вас может быть несколько сумм разблокировки. У каждого действия по разблокировке будет свой 28-дневный период охлаждения." }, "connect": { - "title": "Как связаны между собой общая сумма собранных комиссий, общая сумма стейкинга FOX, пул и сумма сжигания FOX?" + "title": "Как связаны между собой общая сумма собранных комиссий, общая сумма стейкинга FOX, пул и сумма сжигания FOX?", + "body": "Комиссии, собранные DAO, — это нативные активы в расчёте на каждого свопера. Часть этого дохода конвертируется и распределяется между стейкерами FOX в виде вознаграждений, а другая часть направляется на сокращение общего предложения FOX посредством сжигания токенов. Общий объём застейканных FOX влияет на распределение вознаграждений, поскольку вознаграждения распределяются пропорционально количеству застейканных FOX. Пул эмиссий представляет собой количество FOX, доступное для вознаграждений за стейкинг, а сумма сжигания FOX — это часть FOX, купленная и сожжённая." } }, "totals": "Всего rFOX ", @@ -2639,7 +2643,7 @@ "claimConfirm": { "dustAmountTooltip": "Крошечное количество %{symbol} необходимо для идентификации вашего адреса в сети THOR", "networkFeeTooltip": "Это плата %{symbol} за обработку транзакции на блокчейне, эта плата не взимается ShapeShift", - "missingFundsForGasAlert": "Недостаточно %{symbol}, для завершения транзакции необходимо не менее %{amount} %{symbol}. Мы рекомендуем отправлять немного больше, чтобы учесть колебания сетевых комиссий.", + "missingFundsForGasAlert": "Недостаточно %{symbol}: вам нужно не менее %{amount} %{symbol} для завершения транзакции. Рекомендуем отправить немного больше с учётом колебания сетевых комиссий.", "confirmTitle": "Подтвердить претензию", "networkFee": "Комиссия за сеть", "confirmAndClaim": "Претензия и Стейкинг", @@ -2675,10 +2679,10 @@ }, "claimPending": "Запрос %{amount} %{symbol}...", "claimStatus": { - "pendingSubtitle": "Мы обрабатываем ваше заявление на %{amount} %{symbol}", + "pendingSubtitle": "Получение %{amount} %{symbol}", "goBack": "Вернуться", "successTitle": "Претензия удовлетворена", - "successSubtitle": "Вы успешно забрали %{amount} TCY", + "successSubtitle": "Успешно получено %{amount} TCY", "failedTitle": "Что-то пошло не так", "failedSubtitle": "Ваша претензия не прошла. Пожалуйста, попробуйте еще раз." } @@ -2686,7 +2690,7 @@ "markets": { "recommended": "Рекомендуем", "watchlist": "Мой список наблюдения", - "marketsBody": "Откройте для себя самые интересные криптовалюты. Отслеживайте топ-движения, появляющиеся токены, возможности DeFi и многое другое. Сохраняйте, делитесь и торгуйте избранным.", + "marketsBody": "Откройте для себя самые интересные криптовалюты. Отслеживайте лидеров роста, новые токены, возможности DeFi и многое другое. Сохраняйте, делитесь и торгуйте избранным.", "watchlistEmpty": { "emptyTitle": "Нет активов в списке наблюдения", "emptyBody": "Похоже, вы еще не отметили ни одного актива. Начните добавлять активы в свой список наблюдения прямо сейчас, чтобы отслеживать их!" @@ -2696,13 +2700,13 @@ "emptyBodySwapper": "С помощью текущего фильтра не было найдено никаких активов.", "categories": { "oneClickDefiAssets": { - "title": "Активы DeFi одним кликом", + "title": "DeFi-активы в один клик", "filterTitle": "Высокодоходные токены", "subtitle": "Откройте для себя доходность, которая подходит вам больше всего! Переключайтесь между пулами, хранилищами, вариантами кредитования и LSD без особых усилий с помощью порталов." }, "thorchainDefi": { "title": "THORChain DeFi", - "subtitle": "Получайте доходность на свои активы с THORCHain Savers." + "subtitle": "Зарабатывайте нативный доход на своих активах с THORChain Savers." }, "trending": { "title": "Тренды", @@ -2742,7 +2746,7 @@ }, "foxFarming": { "title": "FOX Farming+", - "description": "Надоело кочевать с фермы на ферму, чтобы заработать %{rewardAssetSymbol} Просто застейкайте свой %{assetSymbol} и зарабатывайте %{rewardAssetSymbol} ", + "description": "Устали переносить %{rewardAssetSymbol} с фермы на ферму? Просто поставьте на стейкинг %{assetSymbol} и зарабатывайте %{rewardAssetSymbol} бессрочно.", "totalClaimableRewards": "Общая сумма вознаграждений, на которые можно претендовать", "totalStakingValue": "Общая стоимость стейкинга", "nextEpoch": "Следующая эпоха" @@ -2772,11 +2776,11 @@ "signMessage": "Не удалось подписать сообщение.", "broadcastTransaction": "Не удалось передать транзакцию.", "broadcastTransactionWithMessage": "Не удалось передать транзакцию (%{message}).", - "getGasFeeData": "Не удалось получить оплату за сеть.", + "getGasFeeData": "Не удалось получить сетевые комиссии.", "getFeeData": "Не удалось оценить сетевые комиссии.", "getPublicKey": "Не удалось получить открытый ключ из кошелька.", "getUtxos": "Не удалось получить utxos.", - "getValidator": "Не удалось получить валидатора.", + "getValidator": "Не удалось получить валидатор.", "gridplus": { "wrongSafeCard": "Вставлена неверная карта SafeCard. Вставьте правильную карту SafeCard и повторите попытку.", "removeSafeCard": "Извлеките вставленную карту SafeCard, чтобы получить доступ к внутреннему кошельку GridPlus." @@ -2816,43 +2820,51 @@ "startSwapping": "Начать обмен" }, "swap": { - "processing": "Ваш обмен %{sellAmountAndSymbol} на %{buyAmountAndSymbol} находится в процессе обработки.", + "processing": "Ваш своп %{sellAmountAndSymbol} на %{buyAmountAndSymbol} обрабатывается.", "complete": "Ваш обмен %{sellAmountAndSymbol} на %{buyAmountAndSymbol} завершен.", - "failed": "Ваш обмен %{sellAmountAndSymbol} на %{buyAmountAndSymbol} не удался.", + "failed": "Ваш своп %{sellAmountAndSymbol} на %{buyAmountAndSymbol} не выполнен.", "streaming": "Ваш обмен %{sellAmountAndSymbol} на %{buyAmountAndSymbol} является в процесе.", - "awaitingApproval": "Ваша сделка по обмену %{sellAmountAndSymbol} на %{buyAmountAndSymbol} ожидает утверждения.", - "awaitingSwap": "Ваша сделка по обмену %{sellAmountAndSymbol} на %{buyAmountAndSymbol} ожидает выполнения." + "awaitingApproval": "Ваш своп %{sellAmountAndSymbol} на %{buyAmountAndSymbol} ожидает одобрения.", + "awaitingSwap": "Ваш своп %{sellAmountAndSymbol} на %{buyAmountAndSymbol} ожидает выполнения." }, "thorchainLp": { "pairAssets": "%{asset1} и %{asset2}", "withdraw": { - "processing": "Ваш вывод %{assetAmountsAndSymbols} из пула %{poolName} находится в процессе обработки.", - "complete": "Ваш вывод %{assetAmountsAndSymbols} из пула %{poolName} завершен." + "processing": "Вывод %{assetAmountsAndSymbols} из пула %{poolName} обрабатывается.", + "complete": "Вывод %{assetAmountsAndSymbols} из пула %{poolName} завершён." }, "deposit": { "processing": "Ваш депозит в размере %{amount} %{symbol} в пул %{poolName} обрабатывается.", - "complete": "Ваш депозит в размере %{amount} %{symbol} в пул %{poolName} завершен." + "complete": "Ваш депозит %{amount} %{symbol} в пул %{poolName} завершён." } }, "deposit": { "pending": "Ваш депозит в размере %{amount} %{symbol} находится в обработке.", - "complete": "Ваш депозит в размере %{amount} %{symbol} завершен." + "complete": "Ваш депозит в размере %{amount} %{symbol} завершен.", + "failed": "Не удалось внести %{amount} %{symbol}." }, "withdrawal": { "pending": "Ваш вывод средств в размере %{amount} %{symbol} находится в процессе обработки.", - "complete": "Ваш вывод средств в размере %{amount} %{symbol} завершен." + "complete": "Ваш вывод %{amount} %{symbol} завершён.", + "failed": "Ваш вывод %{amount} %{symbol} не выполнен." }, "claim": { "pending": "Ваше требование на сумму %{amount} %{symbol} находится в обработке.", - "complete": "Ваше требование на %{amount} %{symbol} выполнено." + "complete": "Ваше требование на %{amount} %{symbol} выполнено.", + "failed": "Не удалось получить %{amount} %{symbol}." + }, + "yield": { + "unstakeAvailableIn": "Снятие со стейкинга %{symbol} будет доступно через %{duration}.", + "unstakeReady": "Снятие со стейкинга %{symbol} готово — можно получить.", + "unstakeClaimed": "Снятие со стейкинга %{symbol} выполнено." }, "bridge": { - "processing": "Ваш перевод %{sellAmountAndSymbol}.%{sellChainShortName} в %{buyAmountAndSymbol}.%{buyChainShortName} обрабатывается.", - "complete": "Ваш перевод %{sellAmountAndSymbol}.%{sellChainShortName} до %{buyAmountAndSymbol}.%{buyChainShortName} завершен.", + "processing": "Ваш бридж %{sellAmountAndSymbol}.%{sellChainShortName} на %{buyAmountAndSymbol}.%{buyChainShortName} обрабатывается.", + "complete": "Ваш бридж %{sellAmountAndSymbol}.%{sellChainShortName} на %{buyAmountAndSymbol}.%{buyChainShortName} завершён.", "initiated": "Ваш мост от %{sellAmountAndSymbol} до %{buyAmountAndSymbol} был инициирован.", "pendingWithdraw": "Ваш вывод %{amountAndSymbol} будет доступен %{timeText}.", "claimAvailable": "Ваш мост %{amountAndSymbol} доступен для получения.", - "failed": "Ваш мост из %{sellAmountAndSymbol}.%{sellChainShortName} в %{buyAmountAndSymbol}.%{buyChainShortName} потерпел неудачу.", + "failed": "Ваш бридж %{sellAmountAndSymbol}.%{sellChainShortName} на %{buyAmountAndSymbol}.%{buyChainShortName} не выполнен.", "transactionInitiated": "Транзакция инициирована", "claimWithdraw": "Заклеймить вывод", "withdrawTx": "Тx вывода", @@ -2861,28 +2873,28 @@ "limitOrder": { "placed": "Размещен лимитный ордер %{sellAmountAndSymbol} на %{buyAmountAndSymbol}.", "complete": "Ваш ордер на покупку %{buyAmountAndSymbol} за %{sellAmountAndSymbol} был успешно исполнен.", - "cancelled": "Ваш ордер на покупку %{buyAmountAndSymbol} за %{sellAmountAndSymbol} был отменен.", + "cancelled": "Ваш ордер на покупку %{buyAmountAndSymbol} за %{sellAmountAndSymbol} отменён.", "expired": "Срок действия вашего ордера на покупку %{buyAmountAndSymbol} за %{sellAmountAndSymbol} истек." }, "rfox": { - "unstakeReady": "Ваше Снятие со стейкинга в размере %{amount} %{symbol} готово к получению.", - "unstakeTxPending": "Ваше Снятие со стейкинга %{amount} %{symbol} находится на рассмотрении.", + "unstakeReady": "Снятие со стейкинга %{amount} %{symbol} готово к получению.", + "unstakeTxPending": "Снятие со стейкинга %{amount} %{symbol} в ожидании.", "unstakeTxComplete": "Снятие со стейкинга %{amount} %{symbol} завершено." }, "tcy": { "stakePending": "Ваш стейкинг в размере %{amount} %{symbol} обрабатывается...", - "unstakePending": "Ваше снятие со стейкинга %{amount} %{symbol} находится в обработке...", + "unstakePending": "Снятие со стейкинга %{amount} %{symbol} обрабатывается...", "stakeComplete": "Ваш стейкинг %{amount} %{symbol} завершен.", "unstakeComplete": "Снятие со стейкинга %{amount} %{symbol} завершено.", "claimReady": "Ваше требование TCY в размере %{amount} %{symbol} готово.", - "claimTxPending": "Ваше требование TCY на сумму %{amount} %{symbol} находится на рассмотрении.", + "claimTxPending": "Ваш запрос на получение TCY в размере %{amount} %{symbol} в ожидании.", "claimTxComplete": "Ваше требование TCY в размере %{amount} %{symbol} выполнено." }, "approve": { "approvalTxPending": "Подтверждаю использование %{amount} %{symbol} для %{contractName}.", - "approvalTxComplete": "Одобрено использование %{contractName} для %{amount} %{symbol}." + "approvalTxComplete": "Одобрено: %{contractName} может использовать %{amount} %{symbol}." }, - "pendingTransactions": "%{count} В ожидании", + "pendingTransactions": "%{count} в ожидании", "rewardDistribution": { "pending": { "description": "Ваша награда в размере %{amountAndSymbol} обрабатывается..." @@ -2895,8 +2907,7 @@ "yieldXYZ": { "pageTitle": "Прибыль", "pageSubtitle": "Обнаруживайте и управляйте возможностями получения дохода в нескольких сетях", - "actions": { - }, + "actions": {}, "yield": "Доходность", "apy": "APY", "apr": "APR", @@ -2908,7 +2919,7 @@ "connectWallet": "Подключите кошелек, чтобы просматривать доходность", "stats": "Статистика", "minStake": "Минимальный Стейкинг", - "minDeposit": "Минимальный депозит", + "minDeposit": "Мин. депозит", "rewardSchedule": "График вознаграждений", "staking": "Стейкинг...", "unstaking": "Отмена стейкинга...", @@ -2938,7 +2949,7 @@ "ready": "Готов", "bestReturn": "Лучшая доходность", "highestApy": "Наивысший APY", - "lowestApy": "Самый низкий APY", + "lowestApy": "Наименьший APY", "highestTvl": "Наивысший TVL", "lowestTvl": "Самый низкий TVL", "nameAZ": "Имя (A-Z)", @@ -2948,7 +2959,7 @@ "allTypes": "Все типы", "showAll": "Показать все", "searchValidator": "Поиск валидатора", - "success": "Успех!", + "success": "Успешно!", "transactions": "Транзакции", "currentApy": "Текущая APY", "estYearlyEarnings": "Приблизительный годовой доход", @@ -2988,7 +2999,8 @@ "providers": "Поставщики", "successStaked": "Вы успешно застейкали %{amount} %{symbol}", "successUnstaked": "Вы успешно сняли стейкинг %{amount} %{symbol}", - "successDeposited": "Вы успешно внесли депозит %{amount} %{symbol}", + "cooldownNotice": "Ваш вывод будет доступен через %{cooldownDuration}.", + "successDeposited": "Вы успешно внесли %{amount} %{symbol}", "successWithdrawn": "Вы успешно сняли деньги %{amount} %{symbol}", "successClaim": "Вы успешно получили %{amount} %{symbol}", "viewPosition": "Просмотр позиции", @@ -3031,7 +3043,7 @@ "aboutProvider": "О %{provider}", "visitWebsite": "Посетить веб-сайт", "providerDescriptions": { - "morpho": "Morpho — это протокол денежного рынка и инфраструктуры хранилища, прошедший многократную проверку ведущими компаниями в области безопасности, действующий с 2022 года, с вознаграждением за обнаружение ошибок в размере 2,5 млн долларов.", + "morpho": "Morpho — протокол денежного рынка и хранилищ, неоднократно проверенный ведущими компаниями по безопасности, работающий с 2022 года, с $2,5 млн в виде вознаграждений за обнаружение уязвимостей.", "morpho-aave": "Morpho — это протокол денежного рынка и инфраструктуры хранилища, прошедший многократную проверку ведущими компаниями в области безопасности, действующий с 2022 года, с вознаграждением за обнаружение ошибок в размере 2,5 млн долларов.", "morpho-compound": "Morpho — это протокол денежного рынка и инфраструктуры хранилища, прошедший многократную проверку ведущими компаниями в области безопасности, действующий с 2022 года, с вознаграждением за обнаружение ошибок в размере 2,5 млн долларов.", "lido": "Lido — это протокол ликвидного стейкинга, который позволяет пользователям стейкать ETH, сохраняя ликвидность через stETH. Прошел многократную проверку ведущими компаниями в области безопасности, работает с 2020 года, предлагает вознаграждение за обнаружение ошибок в размере 2 млн долларов.", @@ -3040,14 +3052,14 @@ "kamino": "Kamino — это набор инструментов Solana DeFi, объединяющий кредитование, ликвидность и кредитное плечо в одной платформе. Запускает программу Immunefi с максимальным вознаграждением до 1,5 млн долларов.", "fluid": "Fluid — это уровень ликвидности, созданный командой Instadapp, который объединяет рынки кредитования, DEX, заимствований и стейблкоинов в одну эффективную систему. Прошел многократную проверку ведущими компаниями в области безопасности, работает с 2024 года, предлагает вознаграждение за обнаружение ошибок в размере 0,5 млн долларов.", "venus": "Venus — это протокол кредитования и заимствования, ориентированный на BNB Chain. Особое внимание уделяется безопасности за счет сторонних аудитов и постоянной программы по поиску уязвимостей.", - "gearbox": "Gearbox — это комбинируемый протокол кредитного плеча, позволяющий подключать кредитные счета к стратегиям DeFi. Прошел многократную аудиторскую проверку ведущими компаниями в области безопасности, работает с 2021 года, предлагает вознаграждение за обнаружение ошибок в размере 0,2 млн долларов.", - "yearn": "Yearn — это децентрализованный набор продуктов, помогающий частным лицам, DAO и другим протоколам получать доход от своих цифровых активов. Прошел многократную проверку ведущими компаниями в области безопасности, работает с 2020 года, предлагает вознаграждение за обнаружение ошибок в размере 0,2 млн долларов.\n", + "gearbox": "Gearbox — компонуемый протокол кредитного плеча, позволяющий использовать кредитные счета в DeFi-стратегиях. Неоднократно проверен ведущими компаниями по безопасности, работает с 2021 года, с $0,2 млн в виде вознаграждений за обнаружение уязвимостей.", + "yearn": "Yearn — децентрализованный набор продуктов, помогающих частным лицам, DAO и другим протоколам зарабатывать доход на цифровых активах. Неоднократно проверен ведущими компаниями по безопасности, работает с 2020 года, с $0,2 млн в виде вознаграждений за обнаружение уязвимостей.", "spark": "Spark — это децентрализованный протокол кредитования, работающий на базе экосистемы Sky (ранее MakerDAO), который позволяет пользователям брать в кредит DAI и другие стейблкоины по конкурентоспособным ставкам. Запускает программу Immunefi с максимальным вознаграждением до 5 миллионов долларов.", - "rocket-pool": "Rocket Pool — это децентрализованный протокол ликвидного стейкинга на Ethereum, который выпускает rETH. Прошел многократную аудиторскую проверку ведущими компаниями в области безопасности, работает с 2021 года, предлагает вознаграждение за обнаружение уязвимостей в размере 0,5 млн долларов.", + "rocket-pool": "Rocket Pool — децентрализованный протокол ликвидного стейкинга Ethereum, выпускающий rETH. Неоднократно проверен ведущими компаниями по безопасности, работает с 2021 года, с $0,5 млн в виде вознаграждений за обнаружение уязвимостей.", "drift": "Drift — это децентрализованная платформа для обмена и кредитования бессрочных контрактов, построенная на Solana. Запускает программу Immunefi с максимальным вознаграждением до 0,5 млн долларов." }, "otherYields": "Другие %{symbol} Доходности", - "availableToDeposit": "Доступно для депозита", + "availableToDeposit": "Доступно для внесения", "availableToDepositTooltip": "Это количество %{symbol} в вашем кошельке, которое вы можете внести в эту возможность получения дохода.", "getAsset": "Получить %{symbol}", "manage": "Управлять", @@ -3098,7 +3110,7 @@ "reset": "Сброс", "disabledMessage": "Профилирование отключено. Нажмите на значок глаза, чтобы включить.", "toggleAria": "Переключить profiler", - "collapseAria": "Сворачивание", + "collapseAria": "Свернуть", "expandAria": "Развернуть profiler", "enableProfiling": "Включить profiling", "disableProfiling": "Отключить profiling", diff --git a/src/assets/translations/tr/main.json b/src/assets/translations/tr/main.json index 26abd3e2818..2a1ef2bdb38 100644 --- a/src/assets/translations/tr/main.json +++ b/src/assets/translations/tr/main.json @@ -27,7 +27,7 @@ "continue": "Devam et", "approve": "Onayla", "approveToken": "Token'ı Onayla", - "approveAmount": "Bakiyeyi Onayla", + "approveAmount": "Tutarı Onayla", "approveTo": "Onaylamak İçin", "reset": "Sıfırla", "confirm": "Onaylayın", @@ -35,7 +35,7 @@ "activity": "Aktivite", "reject": "İptal", "goBack": "Geri git", - "fiat": "Fiyat", + "fiat": "Fiat", "connected": "Bağlandı", "trendingTokens": "Trend Tokenlar", "created": "Yaratıldı %{date}", @@ -58,10 +58,10 @@ "overview": "Genel Bakış", "connectWallet": "Cüzdan Bağla", "pairing": "Eşleştirme", - "connectWalletToGetStartedWith": "%{feature} ile başlamak için bir cüzdan bağlayın", - "connectedWallet": "Cüzdan Bağlandı", + "connectWalletToGetStartedWith": "%{feature} için başlamak üzere bir cüzdan bağlayın", + "connectedWallet": "Bağlı Cüzdan", "crypto": "Kripto", - "walletActions": "Cüzdan Hareketleri", + "walletActions": "Cüzdan İşlemleri", "connectedWalletSettings": "Cüzdan Ayarları", "noWallet": "Bağlı Bir Cüzdan Yok", "darkTheme": "Karanlık Tema", @@ -82,7 +82,7 @@ "happySuccess": "Başarılı!", "transactionFailed": "İşlem Başarısız", "transactionFailedBody": "İşlem Başarısız", - "safeProposalQueued": "SAFE teklif sıraya alındı. %{confirmationsRequired} tekliften %{currentConfirmations} tanesi imzalandı.", + "safeProposalQueued": "SAFE önerisi sıraya alındı. %{currentConfirmations} / %{confirmationsRequired} imzalandı.", "submitFeedback": "Geri Bildirim Gönder", "send": "Gönder", "receive": "Al", @@ -120,7 +120,7 @@ "sepa": "SEPA", "buySell": "Al/Sat", "all": "Hepsi", - "seeMore": "Daha Fazlasını Gör", + "seeMore": "Daha Fazla Gör", "slippage": "Kayma", "feesPlusSlippage": "Ücretler + Kayma", "gasFee": "Gaz Ücreti", @@ -161,7 +161,7 @@ "import": "İçe aktar", "accountsLoading": "Hesaplar Yükleniyor", "noAccounts": "Seçilen filtrelere ait hesap bulunamadı.", - "sortBy": "Göre sırala", + "sortBy": "Sıralama Ölçütü", "orderBy": "Emire göre sırala", "filterBy": "Filtrele", "filterAndSort": "Filtrele ve Sırala", @@ -210,14 +210,14 @@ "placeholder": "Bir mesaj yazın...", "stop": "Dur", "send": "Gönder", - "txStepProgress": "%{completedCount} %{totalCount} tamamlandı", + "txStepProgress": "%{completedCount} / %{totalCount} tamamlandı", "agenticChatTools": { "send": { "title": "Kripto Gönder", "receivedFrom": "%{address} adresinden alındı.", "steps": { "preparation": "Gönderme işlemi hazırlanıyor", - "send": "İşlemi imzalayıp gönderin." + "send": "İşlemi imzala ve gönder" }, "errors": { "prepareFailed": "Gönderme işlemine hazırlık başarısız oldu.", @@ -345,15 +345,15 @@ "marketCapRank": "Piyasa Değeri Sıralaması", "volume24h": "24sa Hacim", "volMcap": "Hacim/MCap", - "about": "Hakkında", + "about": "%{symbol} Hakkında", "noDescription": "Bu varlık için herhangi bir açıklama mevcut değil." }, "receive": { "title": "Alınan", - "receiveOn": "%{symbol}'ü %{network}'ten alın.", + "receiveOn": "%{symbol} için %{network} üzerinde al", "copyAddress": "Adresi kopyala", "copied": "Kopyalandı!", - "warning": "Bu adrese yalnızca %{network} uyumlu token'lar gönderin." + "warning": "Bu adrese yalnızca %{network} uyumlu tokenlar gönderin" }, "getLimitOrders": { "title": "Limit Emirleri", @@ -368,7 +368,7 @@ }, "sellLabel": "Sat", "buyLabel": "Satın Al", - "expiresLabel": "Süresi doluyor", + "expiresLabel": "Geçerlilik Süresi", "view": "Görünüm", "filledLabel": "Tamamlanan" }, @@ -392,7 +392,7 @@ "value": "Değer", "fee": "Ücret", "network": "Ağ", - "tokens": "Jetonlar" + "tokens": "Tokenlar" } }, "chatHistory": "Sohbet Geçmişi", @@ -413,7 +413,7 @@ "error": { "insufficientFunds": "%{amount} tutarındaki hızlı satın al işlemi başarısız oldu, yeterli bakiye yok, başka bir tutar deneyin?", "noQuote": "%{amount} tutarındaki hızlı satın al işlemi başarısız oldu, geçerli bir teklif alınamadı.", - "failed": "%{amount} tutarındaki hızlı satın al işlemi başarısız oldu." + "failed": "%{amount} tutarındaki hızlı satın alma başarısız oldu." } }, "consentBanner": { @@ -453,12 +453,12 @@ } }, "rampPage": { - "buyTitle": "Kriptoyu Saniyeler İçinde Satın Alın", - "sellTitle": "Kripto Paranızı Saniyeler İçinde Satın", - "buyBody": "Kredi kartı, banka kartı veya banka hesabı kullanın. Bitcoin, Ethereum, USDT, USDC veya diğer popüler kripto para birimlerini satın alın. KYC dışı sağlayıcılar mevcuttur.", + "buyTitle": "Saniyeler İçinde Kripto Satın Al", + "sellTitle": "Saniyeler İçinde Kripto Sat", + "buyBody": "Kredi kartı, banka kartı veya banka hesabı kullanın. Bitcoin, Ethereum, USDT, USDC veya diğer önde gelen kripto paraları satın alın. KYC gerektirmeyen sağlayıcılar mevcuttur.", "sellBody": "Kredi kartı, banka kartı veya banka hesabı kullanın. Bitcoin, Ethereum, USDT, USDC veya diğer popüler kripto para birimlerini satın. KYC dışı sağlayıcılar mevcuttur.", "disclaimer": "*Kripto paranızı doğrudan banka hesabınıza nakit olarak da satabilirsiniz.", - "ctaTitle": "ShapeShift'i tüm en iyi cüzdanlarla kullanarak ticaret yapabilir, getiri elde edebilir ve kripto paranızı %{chainCount} zincirde takip edebilirsiniz", + "ctaTitle": "İşlem yapmak, getiri kazanmak ve %{chainCount} zincir boyunca kriptolarınızı takip etmek için ShapeShift'i tüm önde gelen cüzdanlarla kullanabilirsiniz", "availableAssets": "Mevcut Varlıklar" }, "updateToast": { @@ -498,7 +498,7 @@ }, "fiatRamps": { "title": "Kripto Al veya Sat", - "titleMessage": "Şunları kullanarak %{action} %{asset} yapabilirsiniz:", + "titleMessage": "%{action} için %{asset} şunu kullanabilirsiniz:", "banxa": "Banxa", "mtPelerin": "Mt Pelerin", "onRamper": "OnRamper", @@ -534,11 +534,11 @@ "createOrImport": "Cüzdan Oluştur veya İçe Aktar", "viewSavedWallets": "Kayıtlı Cüzdanları Görüntüle", "footerOne": "Devam ederek şunları kabul etmiş olursunuz:", - "terms": "Şartlar", + "terms": "Koşullar", "privacyPolicy": "Gizlilik Politikası", "connectNewWallet": "Yeni Cüzdanı Bağla", "getANewWallet": "Yeni Bir Cüzdan Alın", - "alreadyHaveWallet": "Zaten bir Cüzdanım var" + "alreadyHaveWallet": "Zaten bir cüzdanım var" }, "connectWallet": { "menu": { @@ -563,10 +563,10 @@ "risks": "Riskler Var mı?" }, "bodies": { - "rateFluctuationInfo": "Kazandığınız %{assetName} oranı, Yıllık Yüzde Getiri (APR), genellikle %7 - %20 arasında dalgalanır.", + "rateFluctuationInfo": "Kazandığınız %{assetName} oranı, Yıllık Yüzde Getirisi (APR), genellikle %7 - %20 arasında dalgalanır.", "amountStakingInfo": "Dilediğiniz miktarda %{assetName} yatırabilirsiniz ve anında ödül kazanmaya başlar.", "withdrawInfo": "Ödüllerinizi istediğiniz zaman çekebilirsiniz; bu da ~0,01$ civarında küçük bir gas ücreti gerektirir.", - "unbondingInfo": "Jetonlarınızı geri aldığınızda, %{unbondingDays} gün boyunca kilitli kalacaklar ve bu süre zarfında ödül kazanamayacaklar. %{unbondingDays} gün sonra, %{assetName} hesabınız Birincil Cüzdanınıza geri dönecektir.", + "unbondingInfo": "Tokenlarınızın stake'ini kaldırdığınızda %{unbondingDays} gün boyunca kilitli kalır ve bu süre zarfında ödül kazanamaz. %{unbondingDays} günün ardından %{assetName} Birincil Cüzdanınıza geri döner.", "slashingInfo": "Staking bir doğrulayıcı aracılığıyla yapılır. Oldukça nadirdir, ancak stake ettiğiniz doğrulayıcı yanlış veya hatalı işlemlerin geçmesine izin vererek hata yaparsa, varlıklarınızın bir kısmını kaybedebilirsiniz.", "partnerInfo": "Güvenli, güvenilir ve denetlenmiş bir altyapıya sahip saygın bir doğrulayıcı ile iş ortaklığı yaparak bu riski azalttık." } @@ -586,7 +586,7 @@ "header": "Kazanmak için ETH-FOX LP jetonlarını %{opportunity}'e yatırın", "body": "Bonus FOX ödülleri kazanmak için likidite jetonlarınızı onaylayın ve stake edin.", "rewards": "Kazandığınız ödüller otomatik olarak tahakkuk edecektir.", - "cta": "Şimdi ETH-FOX LP jetonlarını Yatırın" + "cta": "ETH-FOX LP Tokenlarını Şimdi Yatırın" }, "overview": { "underlyingTokens": "Temel Jetonlar", @@ -602,9 +602,9 @@ "claimYour": " %{opportunity} Talep Edin" }, "saversVaults": { - "description": "THORChain Saver Vaults aracılığıyla %{asset} üzerinden getiri kazanın. Kilitlenme süresi yoktur ve ödüller otomatik olarak biriktirilir. THORChain'de getiri, takas ücretleri ve blok ödüllerinden gelir. Tek taraflı getiri, likidite sağlayıcılarının çift taraflı getirisinin yarısı ile sınırlandırılmıştır.", - "runePoolDescription": "RUNEPool, %{asset}'inizi başkalarıyla birleştirerek daha fazla %{asset} kazanmanızı sağlar. Belirli havuzları seçmenize gerek yok, herkes genel performanstan pay alır.", - "runePoolOverviewDescription": "RUNEPool, RUNE kullanımını THORChain'deki tüm POL-enabled likidite havuzlarına yatırarak optimize eder. RUNE'yi bu havuzlar arasında bir araya getirerek, katılımcılar birleşik APY'yi kazanır ancak toplam geçici kayba maruz kalır. Kullanıcılar, bireysel havuzları seçmek yerine genel performanstan yararlanır ve etkili bir şekilde bir RUNE endeksine ve tüm THORChain POL-enabled varlıklara yatırım yapar. Bu, likidite sağlamayı basitleştirir ve bireysel riski azaltır.", + "description": "THORChain Savers Vaults aracılığıyla %{asset} üzerinden getiri kazanın. Kilit süresi yoktur ve ödüller otomatik olarak birikir. THORChain üzerindeki getiri, takas ücretlerinden ve blok ödüllerinden elde edilir. Tek taraflı getiri, likidite sağlayıcılarının çift taraflı getirisinin yarısıyla sınırlıdır.", + "runePoolDescription": "RUNEPool, %{asset} değerinizi başkalarıyla birleştirerek daha fazla %{asset} kazanmanıza olanak tanır. Belirli havuzlar seçmenize gerek yoktur; herkes genel performanstan pay alır.", + "runePoolOverviewDescription": "RUNEPool, THORChain'deki tüm POL etkin likidite havuzlarına yatırım yaparak RUNE kullanımını optimize eder. RUNE'u bu havuzlarda birleştiren katılımcılar kombine APY kazanır ancak toplam geçici kayıp riskiyle karşı karşıya kalır. Bireysel havuz seçmek yerine kullanıcılar genel performanstan yararlanarak bir RUNE endeksine ve tüm THORChain POL etkin varlıklara yatırım yapmış olur. Bu, likidite sağlamayı basitleştirir ve bireysel riski azaltır.", "vaultCap": "Kasa Üst Limiti", "vaultCapTooltip": "Bu kasa için mevcut maksimum kapasite", "haltedDepositTitle": "Para yatırma işlemleri geçici olarak durdurulmuştur.", @@ -621,16 +621,16 @@ "introducingSaversVaults": "Saver Vaults Giriş", "introducingRunePool": "RUNEPool'u Tanıtımı", "risksBody": { - "vaults": "Saver Vaults ile ilgili riskler için bu makaleye bakın.", - "runePool": "Saver Vaults ile ilgili riskler için bu makaleye RUNEPool ile ilgili riskler için." + "vaults": "Savers Vaults ile ilgili riskler için bu makaleye bakın.", + "runePool": "RUNEPool ile ilgili riskler için bu makaleye bakın." }, "timeToBreakEven": { "title": "Eşitiliği bozma", "tooltip": "Para yatırma ücretlerini ve kazançları karşılamak için tahmini süre." }, "cannotDepositWhilePendingTx": "Tx'ler beklemedeyken para yatırılamaz", - "cannotWithdrawWhilePendingTx": "Tx'ler beklemedeyken çekim yapılamaz", - "agreeRunePool": "RUNEPool'un hem 30 günlük asgari bir kilitleme süresine sahip olduğunu hem de kalıcı olmayan kayıp riskinin yüksek olduğunu anlıyorum." + "cannotWithdrawWhilePendingTx": "Bekleyen işlemler varken para çekimi yapılamaz", + "agreeRunePool": "RUNEPool'un hem 30 günlük minimum kilit süresi hem de yüksek geçici kayıp riski taşıdığını anlıyorum." } }, "memoNote": { @@ -654,7 +654,7 @@ "ended": "Bitti", "balance": "Bakiye", "netWorth": "Net Değer", - "loadingAccounts": "Yüklenen %{portfolioAccountsLoaded} hesap", + "loadingAccounts": "%{portfolioAccountsLoaded} hesap yüklendi", "loadingMorePositions": "Daha fazla DeFi pozisyonu yüklenmeye devam ediyor.", "walletBalanceChange24Hr": "24 saatlik değişim", "earnBody": "Varlıklarınızı stake ederek veya bir DeFi stratejisine yatırarak pasif gelir elde edin.", @@ -680,9 +680,9 @@ }, "withdraw": { "info": { - "title": "Para Çekme Bilgisi", + "title": "Çekim Bilgisi", "description": "Çekmek istediğiniz %{asset} miktarını girin.", - "yieldyDescription": "Çekmek istediğiniz %{asset} miktarını girin. Sonraki para çekme işlemleri birleştirilecek ve para çekme süresi sıfırlanacaktır.", + "yieldyDescription": "Çekmek istediğiniz %{asset} miktarını girin. Sonraki çekimler birleştirilir ve çekim süresi sıfırlanır.", "farmingExpiredDescription": "Bu çiftçilik ödül sözleşmesi sona erdi. Bakiyenizin tamamını çekmelisiniz.", "rewardsInfo": "Alacağınız ödüller" } @@ -765,7 +765,7 @@ "common": "İşlem", "confirmed": "Onaylandı", "pending": "Beklemede", - "failed": "Hatalı", + "failed": "Başarısız", "swap": "Takas", "amount": "Tutar", "emptyMessage": "%{status} işlemleriniz burada görünecek.", @@ -801,7 +801,7 @@ "revoke": "Geri Çek", "revokeSymbol": "%{symbol} Onayını iptal et", "amountUnavailable": "Kullanım dışı", - "withdraw": "Çek", + "withdraw": "Çekim", "receive": "Al" }, "yearn": { @@ -823,7 +823,7 @@ }, "thorchain": { "deposit": "Depozit", - "depositRefund": "Depozit İadesi", + "depositRefund": "Yatırma İadesi", "depositRefundNative": "Depozit + Geri Ödeme", "loanOpen": "Kredi Aç", "loanOpenOut": "Kredi Alındı", @@ -838,7 +838,7 @@ "swapOut": "Takas Alındı", "swap": "Takas", "swapRefund": "Takas İadesi", - "unstake": "Unstake", + "unstake": "Stake'i Kaldır", "withdraw": "Para Çekme Talep Edildi", "withdrawNative": "Çekim", "withdrawOut": "Para Çekme Alındı" @@ -917,7 +917,7 @@ "assetAddress": "%{asset} adresi", "verifyAsset": "%{asset}'ı doğrulayın", "verifyAddressMessage": "Devam etmeden önce adreslerinizin doğru olduğundan emin olun.", - "slippageInfo": "Fiyat bu orandan daha fazla olumsuz yönde değişirse işleminiz geri alınır.", + "slippageInfo": "Fiyat bu yüzdeden fazla olumsuz değişirse işleminiz geri alınır.", "allowanceTooltip": "Akıllı sözleşmeye sizin adınıza kullanması için izin vereceğiniz tutar.", "searchingRate": "Oran getiriliyor...", "noRateAvailable": "Uygun Oran Yok.", @@ -972,7 +972,7 @@ "noQuotesAvailableDescription": "Şu anda kullanılabilir teklif bulunamadı. Başka bir çift seçmeyi deneyin.", "availableQuotes": "Mevcut Teklifler", "unavailableSwappers": "Kullanılamayan Swapper'lar", - "unlimited": "Limitsiz", + "unlimited": "Sınırsız", "swapsFailed": "%{failedSwaps} takas başarısız oldu", "exact": "Aynı", "free": "Ücretsiz", @@ -985,7 +985,7 @@ "changeAddress": "Adresi değiştir", "changeAddressExplainer": "UTXO tabanlı ağlar üzerinden kripto para gönderirken, işlemden kalan fonlar bu adrese geri gönderilir.", "depositAddress": "Para yatırma adresi", - "depositAddressExplainer": "Bu, paranızın işleme alınmak üzere gönderileceği protokol adresidir. Donanım cüzdanınız doğrulama için bu adresi gösterecektir.", + "depositAddressExplainer": "Bu, varlıklarınızın işlenmek üzere gönderileceği protokol adresidir. Donanım cüzdanınız doğrulama için bu adresi görüntüleyecektir.", "customReceiveAddress": "Özel alıcı adresi", "customReceiveAddressDescription": "Bu işlem için özel bir çekme adresi girin", "thisIsYourCustomReceiveAddress": "Bu sizin özel çekme adresinizdir", @@ -994,7 +994,7 @@ "tooltip": { "continueSwapping": "Son detaylar için takasa devam edin", "noRateAvailable": "Bunun nedeni genellikle ticaret çiftinde çok sınırlı veya hiç likidite olmamasıdır.", - "minerFee": "Bu, blok zincirindeki işlemi işlemek için alınan ücrettir, ShapeShift tarafından alınan bir ücret değildir.", + "minerFee": "Bu, işlemin blok zincirinde işlenmesi için alınan ücrettir; ShapeShift tarafından alınan bir ücret değildir.", "protocolFee": "Bu, bu işlemi gerçekleştirmek için seçilen protokol tarafından alınan ücrettir, ShapeShift tarafından alınan bir ücret değildir.", "inputOutputDifference": "Girdi ve çıktı tutarlarının USD değerleri arasındaki tahmini fark.", "slippageWithAmount": "Fiyat, %{amount} tutarından daha azını alacak şekilde hareket ederse işleminiz geri alınacaktır. Bu, alacağınız garanti edilen minimum tutardır.", @@ -1008,13 +1008,13 @@ }, "rateExpired": { "title": "Yeni Oran", - "body": "Önceki takas oranınız sona erdi. Yeni bir oran aldık ve teklif tutarlarınızı güncelledik. Lütfen takasınızı onaylamadan önce en son ayrıntıları inceleyin.", + "body": "Önceki takas oranınızın süresi doldu. Yeni bir oran alındı ve teklif tutarlarınız güncellendi. Takasınızı onaylamadan önce lütfen en son ayrıntıları inceleyin.", "cta": "Tamam, anladım" } }, "permit2Allowance": { - "title": "Permit2 sözleşme ödeneği", - "tooltip": "Bu işlem, Permit2 sözleşmesine sınırsız izin vermek için tek seferlik onay gerektiren Permit2'yi kullanır. Bu ilk kurulumdan sonra, geçici 5 dakikalık izinler veren gazsız mesajları imzalayarak Permit2 tarafından desteklenen herhangi bir protokolde işlemleri yetkilendirebilirsiniz." + "title": "Permit2 sözleşme izni", + "tooltip": "Bu işlem Permit2 kullanır; Permit2 sözleşmesine sınırsız izin vermek için tek seferlik bir onay gerektirir. Bu ilk kurulumun ardından, geçici 5 dakikalık izinler veren gas ücretsiz mesajlar imzalayarak Permit2 destekli herhangi bir protokolde işlemleri yetkilendirebilirsiniz." }, "permit2Eip712": { "title": "Token transferi izni", @@ -1028,7 +1028,7 @@ "sellAmountDoesNotCoverFee": "Ücretten daha düşük satış tutarı", "insufficientFunds": "Madenci ücreti ve miktarı için yetersiz bakiye", "transactionRejected": "Kullanıcı işlemi reddetti", - "insufficientFundsForProtocolFee": "%{chainName} üzerinde ücretler için yetersiz %{symbol}", + "insufficientFundsForProtocolFee": "Ücretler için %{symbol} yetersiz (%{chainName})", "unsupportedTradePair": "Desteklenmeyen Takas Çifti", "noRouteFound": "Bu çift ve miktar için yol bulunamadı", "quoteExpired": "Teklifin süresi doldu, tekrar deneyin.", @@ -1070,28 +1070,28 @@ "summary": "Ticaret Özeti", "estimatedCompletionTime": "Tahmini Tamamlanma Süresi", "transactionSuccessful": "İşlem başarılı, onay bekleniyor", - "thorchainSwapperVolatilityAcknowledgementMessage": "THORCHain protokolü oynaklık yaşıyor. Ekstra dikkatli olun ve ek mevcut rotaları göz önünde bulundurun.", + "thorchainSwapperVolatilityAcknowledgementMessage": "THORChain protokolü volatilite yaşıyor. Ekstra dikkatli ilerleyin ve mevcut ek rotaları değerlendirin.", "temp": { "tradeSuccess": "Takas tamamlandı" }, "hopTitle": { "swap": "%{swapperName} ile değiştir", - "swapEta": "~%{eta} içinde %{swapperName} aracılığıyla takas" + "swapEta": "%{swapperName} ile ~%{eta} içinde takas" }, "transactionTitle": { "bridge": "%{sellChainName}'den %{buyChainName}'e %{swapperName} aracılığıyla takas yapın", - "swap": "%{sellChainName} üzerinde %{swapperName} aracılığıyla takas yapın" + "swap": "%{sellChainName} üzerinde %{swapperName} aracılığıyla takas" }, "approvalTitle": "Token ödeneği onayı", "resetTitle": "Token ödeneği sıfırlama", "fiatAmountOnChain": "%{chainName} üzerinde %{amountFiatFormatted}", "quote": { - "cantSetSlippage": "%{swapperName} için özel bir kayma (%{userSlippageFormatted}) ayarlayamıyoruz", + "cantSetSlippage": "%{userSlippageFormatted} özel kayma %{swapperName} için ayarlanamıyor", "gas": "Bu takasçının işlemini tamamlamak için gereken gaz.", "slippage": "Bu alıntıdaki kayma.", "timeEstimate": "Bu takasın tamamlanması için tahmini süre." }, - "awaitingPermit2Approval": "Token transferini bekliyor", + "awaitingPermit2Approval": "Token transferi bekleniyor", "awaitingSwap": "%{swapperName} üzerinden takas bekleniyor", "awaitingApproval": "Onay bekleniyor", "awaitingAllowanceReset": "Ödeneğin sıfırlanması bekleniyor", @@ -1132,12 +1132,12 @@ "noOpenOrders": "Henüz açık emir yok.", "noHistoricalOrders": "Henüz tarihi bir emir yok.", "limitPriceIsPercentLowerThanMarket": "Limit fiyatı piyasa fiyatından %{percent}% daha düşüktür", - "highCowFeeImpact": "CoW ücreti, satış tutarınızın %{percentage}%'idir (%{cryptoImpact} %{sellAssetSymbol}). Emriniz gerçekleştirilemeyebilir.", + "highCowFeeImpact": "CoW ücreti, satış tutarınızın %{percentage}%'si (%{cryptoImpact} %{sellAssetSymbol}). Emriniz gerçekleşmeyebilir.", "awaitingOrderPlacement": "%{swapperName} üzerinde emir verilmesi bekleniyor", "awaitingAllowanceApproval": "Ödenek onayı bekleniyor", "awaitingAllowanceReset": "Ödeneğin sıfırlanması bekleniyor", "orderPlacement": "%{swapperName} üzerinde emir verin", - "explanation": "%{assetSymbol} fiyatı %{limitPrice} değerine ulaştığında, limit emriniz otomatik olarak %{sellAmount} tutarında satış yapacak ve en az %{receiveAmount} tutarında alım yapmanızı sağlayacaktır.", + "explanation": "%{assetSymbol} fiyatı %{limitPrice} seviyesine ulaştığında, limit emriniz otomatik olarak %{sellAmount} satacak ve en az %{receiveAmount} almanızı garantileyecektir.", "sellBuy": "Sat → Satın al", "limitExecution": "Limit/Uygulama", "statusHead": "Durum", @@ -1179,7 +1179,7 @@ "loadingOrderList": "Limit emirleriniz yükleniyor...", "orderCard": { "warning": { - "insufficientBalance": "Cüzdanınız şu anda bu emri yürütmek için %{chainName} üzerinde yeterli %{symbol} bakiyesine sahip değil. Emir hala açık ve %{chainName} üzerinde %{symbol} bakiyenizi yüklediğinizde yürütülebilir hale gelecek.", + "insufficientBalance": "Cüzdanınızda şu anda bu emri gerçekleştirmek için yeterli %{symbol} bakiyesi yok (%{chainName}). Emir hâlâ açık; %{symbol} bakiyenizi doldurduğunuzda (%{chainName}) gerçekleştirilebilecek.", "insufficientAllowance": "Bu emir, CoW Swap'ın bu emri yürütmesi için onaylanması için %{chainName} üzerinde ek bir %{symbol} ödeneği gerektirir. Emir hala açıktır ve ödenek onayını tamamladığınızda yürütülebilir hale gelecektir." } }, @@ -1257,7 +1257,7 @@ }, "disconnect": { "header": "KeepKey cihazının bağlantısını kesin", - "body": "Maalesef KeepKey cihazınızı kurtarırken/kurarken bir hata oluştu. Lütfen cihazınızın bağlantısını kesip yeniden bağlayın ve KeepKey cihazınızı yeniden kurmayı deneyin. Sorun devam ederse lütfen KeepKey desteğiyle iletişime geçin." + "body": "Maalesef KeepKey cihazınız kurtarılırken/kurulurken bir hata oluştu. Lütfen cihazınızın bağlantısını kesip yeniden bağlayın ve KeepKey cihazınızı kurmayı tekrar deneyin. Sorun devam ederse, lütfen KeepKey desteği ile iletişime geçin." } }, "shapeShift": { @@ -1276,7 +1276,7 @@ } }, "confirmPassword": { - "placeholder": "Şifreyi Onaylayın", + "placeholder": "Parolayı Onayla", "error": { "invalid": "Şifre uyuşmalı", "required": "Şifre onayı gerekli" @@ -1286,13 +1286,13 @@ "menuItem": "Cüzdanımı yedekle", "enterPassword": "Devam etmek için şifrenizi girin", "testTitle": "Gizli Kurtarma İfadenizi Doğrulayın", - "title": "Yedeklemeyi Onayla", + "title": "Yedeği Onayla", "description": "Lütfen aşağıdaki doğru tohum cümlelerinin üzerine tıklayın.", "desktopDescription": "Her şeyi doğru şekilde kaydettiğinizi doğrulamak için bu kısa testi tamamlayın.", "wordNumber": "Kelime #%{number}", "info": { "title": "Gizli Kurtarma İfadeniz", - "description": "Bu 12 kelimeyi bir yere yazın ve çevrimdışı olarak güvenli bir şekilde saklayın. Bu 12 kelimelik cümle, cüzdan özel anahtarlarınızı kurtarmak için kullanılır.", + "description": "Bu 12 kelimeyi bir yere yazın ve çevrimdışı güvenli bir şekilde saklayın. Bu 12 kelimelik cümle, cüzdan özel anahtarlarınızı kurtarmak için kullanılır.", "warning": "Not: Gizli Kurtarma İfadenizi kaybederseniz, ShapeShift cüzdanınızı kurtarmanıza yardımcı olamaz ve paranız sonsuza kadar kaybolur." }, "success": { @@ -1306,7 +1306,7 @@ }, "skip": { "title": "Bu adımı atlamak istiyor musunuz?", - "description": "Yedeklemeyi atlamak, cihazınıza erişiminizi kaybetmeniz durumunda cüzdanınızı kurtaramayacağınız anlamına gelir.", + "description": "Yedeği atlamak, cihazınıza erişiminizi kaybetmeniz durumunda cüzdanınızı kurtaramamanıza yol açar.", "confirmCta": "Evet, tohum cümlemi kaydettim" } } @@ -1347,7 +1347,7 @@ "generic": "Bir hata oluştu.", "notEnoughNativeToken": "Gazı kapatmak için yeterli %{asset} yok", "transactionRejected": "Kullanıcı işlemi reddetti", - "qrPermissions": "Bu özelliğin çalışması için kamera erişim izinlerine ihtiyacı var. Lütfen tarayıcı ayarlarınızı değiştirin.", + "qrPermissions": "Bu özelliğin çalışması için kamera erişim izni gereklidir. Lütfen tarayıcı ayarlarınızı değiştirin.", "qrDangerousEthUrl": "Bir sözleşme adresi içeren QR kodları desteklenmez. Lütfen hedef adresi manuel olarak yapıştırın.", "noAccountsOnChain": "%{chain} üzerinde hesap yok" }, @@ -1423,7 +1423,7 @@ "withdrawType": "Para Çekme Türü", "instant": "Anında", "delayed": "7 ila 14 gün", - "fee": "%{fee}% %{symbol} ücret", + "fee": "%{fee}% %{symbol} ücreti", "noFee": "%{symbol} ücreti yok", "withdrawFee": "Çekim için ayrı gaz ücreti olacaktır.", "notEnoughGas": "Gazı kapatmak için yeterli %{assetSymbol} yok", @@ -1435,7 +1435,7 @@ } }, "approve": { - "header": "%{spenderName}'ın %{asset} öğenizi kullanmasına izin verin", + "header": "%{spenderName} uygulamasının %{asset} kullanmasına izin ver", "resetHeader": "%{asset} için %{spenderName} ödeneğini sıfırla", "body": "%{asset} kullanımınız için izniniz gerekiyor", "learnMore": "Bunu neden yapmam gerekiyor?", @@ -1462,9 +1462,9 @@ "withdrawInstantTime": "Anında", "withdrawDelayedTime": "7 ila 14 gün", "xDays": "%{unbondingDays} gün", - "estimatedGas": "Tahmini Gaz Ücreti", + "estimatedGas": "Tahmini Gas Ücreti", "notEnoughGas": "Gazı kapatmak için yeterli %{assetSymbol} yok", - "missingFundsForGas": "Yeterli bakiye yok, işlemi tamamlamak için %{cryptoAmountHuman} %{assetSymbol} daha gerekiyor", + "missingFundsForGas": "Yetersiz bakiye, işlemi tamamlamak için %{cryptoAmountHuman} %{assetSymbol} daha gerekli", "signBroadcast": "İmzala ve Yayınla", "cancel": "İptal" }, @@ -1506,7 +1506,7 @@ "CAD": "Kanada Doları", "HKD": "Hong Kong Doları", "AUD": "Avustralya Doları", - "TWD": "Yeni Tayvan Doları", + "TWD": "Tayvan Doları", "BRL": "Brezilya Reali", "CHF": "İsviçre Frangı", "THB": "Tayland Bahtı", @@ -1635,7 +1635,7 @@ "noProvider": "Keplr cüzdan uzantısı bulunamadı" }, "connect": { - "header": "Keplr'i Eşleştir", + "header": "Keplr Eşleştir", "body": "Eşleştir'e tıklayın ve açılan pencereden Keplr'i seçin", "button": "Eşleştir" }, @@ -1651,7 +1651,7 @@ "addFirst": "Önce SafeCard'ınızı Bağlayın", "addNew": "Yeni SafeCard Ekle", "lastConnected": "Son bağlantı: %{date}", - "connected": "Bağlandı", + "connected": "Bağlı", "connect": "Bağla", "editNameLabel": "Adı düzenle", "deleteLabel": "Sil", @@ -1720,7 +1720,7 @@ "success": "Artık bu pencereyi kapatabilirsiniz." }, "errors": { - "unknown": "Ledger cüzdanıyla iletişimde beklenmeyen bir hata oluştu", + "unknown": "Ledger cüzdanıyla iletişim kurulurken beklenmeyen bir hata oluştu", "noDeviceConnected": "Hiçbir Ledger cihazı bağlı değil", "multipleDevicesConnected": "Birden fazla Ledger cihazı bağlı. Lütfen biri hariç tüm cihazların bağlantısını kesin." }, @@ -1733,7 +1733,7 @@ }, "failure": { "header": "Ledger'a bağlanılamıyor", - "body": "Ledger'ınızı tespit edemedik ancak salt okunur modda bağlanabilirsiniz." + "body": "Ledger cihazınız algılanamadı, ancak salt okunur modda bağlanabilirsiniz." }, "readOnly": { "button": "Salt Okunur Olarak Bağlan" @@ -1817,10 +1817,10 @@ "warningExperimental": "ShapeShift Multichain Snap, sağlanan yeni, deneysel bir özelliktir", "warningBackup": "MetaMask tohum ifadenizi yedeklediğinizden emin olun. Bu Snap'i kullanarak EVM dışı zincirlere göndereceğiniz tüm fonlar, MetaMask ile kurduğunuz varsayılan hesaba yönlendirilecektir.", "agreeIntro": "Devam etmeden önce lütfen aşağıdakileri okuyun:", - "agreeItem1": "Donanım cüzdanları DESTEKLENMİYOR !", + "agreeItem1": "Donanım cüzdanları DESTEKLENMEMEKTEDİR", "agreeItem2": "ShapeShift Multichain Snap'in sağladığı ekstra zincirler için yalnızca MetaMask'taki Account #1 Hesap desteklenir", - "agreeItem3": "MetaMask tarafından sağlanan mevcut Ethereum zincirlerini kullanmak için Account #1'i MetaMask'taki ShapeShift'e bağlamanız gerekir.", - "agreeItem4": "ShapeShift Multichain Snap'i etkinleştirerek, riski size ait olmak üzere kullandığınızı kabul etmiş olursunuz.", + "agreeItem3": "MetaMask tarafından sağlanan mevcut Ethereum zincirlerini kullanmak için MetaMask'ta #0 numaralı hesabı ShapeShift'e bağlamanız gerekir", + "agreeItem4": "ShapeShift Multichain Snap'i etkinleştirerek, bunu kendi sorumluluğunuzda kullandığınızı kabul ediyorsunuz", "readAndUnderstood": "Okudum Ve Anladım", "seedBackedUp": "MetaMask tohum ifademi yedekledim", "acceptInstall": "Onayla & Yükle", @@ -1841,7 +1841,7 @@ "unknown": "WalletConnect ile iletişim kurulurken beklenmeyen bir hata oluştu" }, "connect": { - "header": "WalletConnect'le Eşleştir", + "header": "WalletConnect Eşleştir", "body": "Eşleştir'e tıklayın ve ardından açılır pencereden WalletConnect'i seçin", "button": "Eşle" } @@ -1857,14 +1857,14 @@ "header": "Kayıtlı Cüzdanlar", "forgetWallet": "Cüzdanı Unut", "confirmForget": "%{wallet}'ı unutmak istediğinizden emin misiniz?", - "confirmForgetBody": "Cüzdanınızı yedeklemediyseniz, cüzdanınıza erişim sağlayamazsınız." + "confirmForgetBody": "Yedeklemediyseniz cüzdanınıza erişemezsiniz." }, "import": { "header": "Cüzdanınızı içe aktarın", "keystoreHeader": "Keystore cüzdanınızı içe aktarın", "body": "Gizli Kurtarma Cümlenizi tamamen küçük harflerle, virgül veya sayı olmadan ve her kelimenin arasına tek boşluk bırakarak yazın veya yapıştırın.", "button": "Sonraki", - "secretRecoveryPhraseError": "Kelimeler arasında tek bir boşluk bırakarak Gizli Kurtarma İfadenizi girin. Virgülleri, dönüşleri veya ek karakterleri atlayın.", + "secretRecoveryPhraseError": "Gizli Kurtarma İfadenizi kelimeler arasında tek boşluk bırakarak girin. Virgül, satır sonu veya ek karakterler kullanmayın.", "secretRecoveryPhraseRequired": "Gizli Kurtarma İfadesi gereklidir", "secretRecoveryPhraseTooShort": "Gizli Kurtarma İfadesi çok kısa", "dragAndDrop": "Sürükle & Bırak veya Dosya Seç", @@ -1900,7 +1900,7 @@ "importKeystore": "Keystore Dosyasını İçe Aktar" }, "success": { - "encryptingWallet": "Cüzdanınız şifreleniyor... Tarayıcınız verileri kalıcı depolamada saklamak isterse, lütfen 'İzin Ver'i tıklayın.", + "encryptingWallet": "Cüzdanınız şifreleniyor... Tarayıcınız kalıcı depolamada veri saklamak isterse lütfen 'İzin Ver'e tıklayın.", "header": "Cüzdan Bağlandı", "success": "Artık bu pencereyi kapatabilirsiniz.", "error": "Cüzdanınız bağlanırken bir hata oluştu" @@ -1951,7 +1951,7 @@ "multiChain": { "title": "Aynı anda birden çok zincir desteklenir", "subTitle": "Cüzdandaki zincirleri asla değiştirmenize gerek yoktur, her zincirle sorunsuz bir şekilde çalışır.", - "body": "ShapeShift'e yeni bir zincir eklendiğinde, Cüzdanınız bunu otomatik olarak destekleyecektir." + "body": "Tek bir cüzdandan Bitcoin, Ethereum, Solana ve daha birçok zincire erişin. Farklı ağlardaki varlıklarınızı sorunsuz bir şekilde takas edin ve yönetin." }, "selfCustody": { "title": "ShapeShift Cüzdanınız kişisel velayettir", @@ -1985,7 +1985,7 @@ "headerSecret": "Kurtarma", "headerEnd": "Kurtarma İfadenizi Güvende Tutun", "subHeader": "Gizli Kurtarma Cümlenizin güvenliğini sağlamak hayati önem taşır.", - "description": "Gizli Kurtarma Cümlenize en değerli eşyanız gibi davranın - her zaman güvende tutun. Bir parola yöneticisi harika bir güvenliktir, kelimeleri yazmak daha da iyidir.", + "description": "Gizli Kurtarma İfadenize en değerli varlığınız gibi davranın – her zaman güvende tutun. Bir parola yöneticisi iyi bir güvenlik sağlar; kelimeleri kağıda yazmak daha da iyidir.", "bulletPoints": { "share": "Başka kimseyle paylaşmayın", "lose": "Kaybederseniz, onu geri alamayız" @@ -2001,7 +2001,7 @@ "button": "Onaylamaya devam et", "success": { "title": "İçerdesin", - "description": "Gizli Kurtarma Cümlenizi doğruladınız. Güvenli bir şekilde sakladığınızdan emin olun - bu, cüzdanınızı kurtarmanın tek yoludur.", + "description": "Gizli Kurtarma İfadenizi doğruladınız. Güvenli bir yerde saklayın – cüzdanınızı kurtarmanın tek yolu budur.", "viewWallet": "Cüzdanı Görüntüle" } }, @@ -2090,7 +2090,7 @@ "selectChain": "Hesap oluşturmak istediğiniz zinciri seçin.", "requiresPriorTxHistory": "Yalnızca mevcut hesapların önceden işlem geçmişi varsa yeni bir hesap ekleyebilirsiniz.", "newAccountAdded": "Yeni %{name} Hesabı eklendi", - "youCanNowUse": "Artık %{name} Hesabını kullanabilirsiniz #%{accountNumber}", + "youCanNowUse": "%{name} #%{accountNumber} numaralı hesabı artık kullanabilirsiniz", "showAssets": "Varlıkları göster", "hideAssets": "Varlıkları gizle", "viewAccount": "Hesabı görüntüle", @@ -2100,7 +2100,7 @@ "menuTitle": "Hesapları Yönet", "manageAccounts": { "title": "Hesapları Yönet", - "description": "Bunlar bağladığınız zincirler ve içe aktardığınız hesapların sayısıdır.", + "description": "Bunlar bağladığınız zincirler ve içe aktardığınız hesap sayısıdır.", "emptyList": "Henüz bağlı hesabınız yok. Başlamak için bir zincir ekleyin.", "addChain": "Zincir ekle", "addAnotherChain": "Başka bir zincir ekle" @@ -2345,7 +2345,7 @@ }, "borrowing": { "title": "Borçlanma nasıl çalışır?", - "body": "THORChain'de borç almak, yatırılan varlıklarınızı kredi almak için teminat olarak kullanmayı içerir. Kredi USD (TOR) cinsindendir ve çeşitli L1 varlıklarında alınabilir. Dinamik teminat oranıyla faiz veya tasfiye endişesi olmadan esnek bir şekilde borçlanabilirsiniz" + "body": "THORChain'de borçlanma, yatırılan varlıklarınızı teminat olarak kullanarak kredi almayı içerir. Kredi USD (TOR) cinsinden ifade edilir ve çeşitli L1 varlıkları olarak alınabilir. Dinamik teminat oranı sayesinde faiz veya tasfiye kaygısı olmaksızın esnek biçimde borç alabilirsiniz." }, "repayments": { "title": "Geri ödeme nasıl çalışır?", @@ -2358,14 +2358,14 @@ "repaymentsDisabled": "Geri ödemeler geçici olarak devre dışı bırakıldı.", "borrowingDisabled": "Ödünç alma geçici olarak devre dışı bırakıldı.", "amountTooLowToReturnCollateral": "Teminatın iadesi için tutar çok düşük", - "amountTooLowToReturnCollateralTooltip": "Geri ödeme teminatınız iade edilemeyecek kadar düşük. Lütfen daha yüksek bir tutarla tekrar deneyin veya kısmi bir tutar ödeyin (bu, teminatınızı iade etmeyecek ancak borcunuzu azaltacaktır).", + "amountTooLowToReturnCollateralTooltip": "Geri ödeme tutarı teminatınızın iade edilmesi için çok düşük. Lütfen daha yüksek bir tutarla tekrar deneyin veya kısmi bir ödeme yapın (bu, teminatınızı iade etmez ancak borcunuzu azaltır).", "amountTooSmallUnknownMinimumTooltip": "Girdiğiniz geri ödeme tutarı çok küçük. Lütfen daha yüksek bir tutarla tekrar deneyin.", "repaymentUnavailableTooltip": "Kredinizi geri ödemeniz henüz mümkün değil. Lütfen geri ödeme kilidi bitene kadar bekleyin.", "repaymentsHaltedTooltip": "Geri ödemeler geçici olarak durduruldu. Lütfen daha sonra tekrar deneyiniz." }, "quote": { "collateral": "Kredinize karşılık teminat altına alınacak toplam varlık tutarı", - "debt": "Yeni kredi tutarınıza göre borçlu olacağınız toplam borç tutarı", + "debt": "Yeni kredi tutarınıza göre ödemeniz gereken toplam borç", "repaymentLock": "Kredinizi geri ödeyebilmeniz için gereken minimum süre", "collateralizationRatio": "Teminat değerinizin kredi tutarına oranı", "feesPlusSlippage": "L1 ücretleri, kayma ve THORChain likidite ücretleri dahil olmak üzere oluşan toplam ücretler" @@ -2404,13 +2404,13 @@ "removeLiquidity": "Likiditeyi Kaldır", "initialPricesAndPoolShare": "Başlangıç ​​Fiyatları ve Havuz Payı", "pricePerAsset": "%{to} başına %{from}", - "symAlert": "%{from}'unuz, havuza girdikten sonra hem %{to} hem de %{from}'a 50:50'lik bir maruziyete bölünecek.", + "symAlert": "%{from} değeriniz, havuza girerken %{to} ve %{from} için 50:50 oranında bölünecektir.", "withdrawTypeNotAvailable": "Bu çekim türü bu havuz için geçerli değil.", "incompletePositionDepositAlert": "Bu pozisyon eksik, lütfen bu pozisyonu tamamlamak için ilgili miktarda %{asset} yatırın.", "incompletePositionWithdrawAlert": "Bu pozisyon eksik, lütfen likiditenin %100'ünü çekerek pozisyonu iptal edin. Pozisyonu 'Likidite Ekle' yoluyla da sonlandırabilirsiniz.", "unsupportedNetworkExplainer": "Cüzdanınız %{network} ağına bağlı değil. Lütfen bu zinciri bağlayın veya bu ağı destekleyen bir cüzdana geçin.", - "unsupportedNetworksExplainer": "Cüzdanınız %{network1} ve %{network2}'ye bağlı değil. Lütfen bu zinciri bağlayın veya bu ağları destekleyen bir cüzdana geçin.", - "depositsDisabled": "Yatırma Devredışı", + "unsupportedNetworksExplainer": "Cüzdanınız %{network1} ve %{network2} ağlarına bağlı değil. Lütfen bu zinciri bağlayın veya bu ağları destekleyen bir cüzdana geçin.", + "depositsDisabled": "Yatırma Devre Dışı", "shareOfPool": "Havuz Payı", "totalLiquidity": "Toplam Likidite", "totalVolume": "Toplam Hacim", @@ -2519,9 +2519,9 @@ "staking": "rFOX Stake Etme", "bridge": "Köprü", "bridgeFunds": "Köprü Fonları", - "bridgeSuccess": "Paranız başarıyla köprülendi. Artık stake etmeye devam edebilirsiniz.", + "bridgeSuccess": "Varlıklarınız başarıyla köprülendi. Artık staking işlemine devam edebilirsiniz.", "stake": "Stake", - "unstake": "Stake Kaldır", + "unstake": "Stake'i Kaldır", "claim": "Topla", "rewards": "Ödüller", "chainNotSupportedByWallet": "Zincir cüzdan tarafından desteklenmiyor", @@ -2541,8 +2541,8 @@ "useWalletAddress": "Cüzdan adresini kullan", "useCustomAddress": "Özel adres kullan", "stakeWarning": "%{symbol}'unuzu stake ettiğinizde lütfen kilitlenme süresinin %{cooldownPeriod} olduğunu unutmayın. Bu, token'larınızı stake etmemeye karar verirseniz, fonlarınızı talep edebilmeniz için %{cooldownPeriod} beklemeniz gerekeceği anlamına gelir.", - "bridgeCta": "%{originNetwork} üzerinde %{assetSymbol}'ı seçtiniz, ancak stake etmek için %{destinationNetwork} üzerinde %{assetSymbol}'a ihtiyacınız olacak. Paranızı %{destinationNetwork}'a bağlamanıza yardımcı olabiliriz. Süreç boyunca size rehberlik etmemizi ister misiniz?", - "unstakeWarning": "%{symbol}'unuzu talep edebilmeniz için gereken soğuma süresi %{cooldownPeriod}'dur. Bu süre geçtikten sonra stake etmediğiniz miktarı talep edebileceksiniz.", + "bridgeCta": "%{originNetwork} üzerinde %{assetSymbol} seçtiniz, ancak staking için %{destinationNetwork} üzerinde %{assetSymbol} gereklidir. Varlıklarınızı %{destinationNetwork} ağına köprülemenize yardımcı olabiliriz. Süreç boyunca size rehberlik etmemizi ister misiniz?", + "unstakeWarning": "%{symbol} talebinde bulunabilmek için bekleme süresi %{cooldownPeriod} sürmektedir. Bu süre geçtikten sonra stake'ten çıkarılan tutarınızı talep edebileceksiniz.", "tooltips": { "stakeAmount": "Bu, yatıracağınız FOX miktarıdır", "unstakeAmount": "Bu, kaldıracağınız FOX miktarıdır", @@ -2551,12 +2551,12 @@ "unstakePendingCooldown": "Talep edilebilir %{cooldownPeriodHuman} ", "cooldownComplete": "Bekleme süresi bitti %{cooldownPeriodHuman}" }, - "stakeSuccess": "Başarıyla %{amount} %{symbol} stake ettiniz", + "stakeSuccess": "%{amount} %{symbol} başarıyla stake edildi", "stakePending": "%{amount} %{symbol} stake ediliyor...", "changeAddressPending": "RFOX Ödül Adresi %{newAddress} Olarak Değiştiriliyor", "changeAddressSuccess": "RFOX Ödül Adresi %{newAddress} olarak değiştirildi", - "unstakePending": "%{amount} %{symbol} tutarın çekilmesi isteniyor", - "unstakeSuccess": "%{cooldownPeriod} geçtikten sonra %{amount} %{symbol} miktarınızı talep edebileceksiniz", + "unstakePending": "%{amount} %{symbol} çekme talebi gönderiliyor", + "unstakeSuccess": "%{cooldownPeriod} süresi geçtikten sonra %{amount} %{symbol} talep edebileceksiniz", "currentRewardAddress": "Güncel Ödül Adresi", "newRewardAddress": "Yeni Ödül Adresi", "rewardCycleExplainer": "Bu, bir sonraki ödül döngüsü için güncellenecektir.", @@ -2589,13 +2589,16 @@ "body": "rFOX, FOX tokenlarınızı Arbitrum'da stake ettiğinizde elde ettiğiniz avantajları ve ödülleri tanımlamak için kullanılan bir terimdir. Şu anda, emisyonları stake etmek için vanilya FOX (Arbitrum'da) tokenlerini kilitliyor ve kilidini açıyorsunuz." }, "why": { - "title": "Neden FOX'unuzu stake etmelisiniz?" + "title": "Neden FOX'unuzu stake etmelisiniz?", + "body": "FOX stake etmek, DAO hazinesinden her dönem düzenli USDC ödemeleri kazanmanızı sağlar ve pasif bir USDC gelir akışı sunar. Ayrıca DAO gelirinin bir kısmı, token yakımı yoluyla genel FOX arzını azaltmaya ayrılacaktır. Staking süreci, topluluk içinde bağlılığı ve istikrarı teşvik etmek amacıyla minimum 28 günlük stake kaldırma dönemini gerektirmektedir." }, "stake": { - "title": "FOX'umu nasıl stake ederim?" + "title": "FOX'umu nasıl stake ederim?", + "body": "FOX'unuzu stake etmek için, FOX tokenlarınızı staking sözleşmesine kilitlemek üzere staking arayüzünü kullanırsınız. Stake edildikten sonra, staking avantajlarınızın bir parçası olarak blok başına USDC ödülleri kazanmaya başlarsınız." }, "unstake": { - "title": "Stake kaldırdığımda ne olur?" + "title": "Stake kaldırdığımda ne olur?", + "body": "Stake'i kaldırmaya karar verdiğinizde, minimum 28 günlük bir stake kaldırma süresi vardır. Bu süre zarfında FOX'unuz kilitli kalır ve USDC emisyonları almayı bırakırsınız. Stake kaldırma süresinin ardından düzenli FOX tokenlarınızın kilidini açabilir ve geri alabilirsiniz." }, "cooldown": { "title": "Soğuma süresi ne kadardır?", @@ -2606,7 +2609,8 @@ "body": "Evet, birden fazla stake etme tutarınız olabilir. Her bir stake kaldırma eyleminin kendine ait 28 günlük bekleme süresi olacaktır." }, "connect": { - "title": "Toplanan toplam ücretler, toplam FOX stake miktarı, emisyon havuzu ve FOX yakma miktarı nasıl birbirine bağlanır?" + "title": "Toplanan toplam ücretler, toplam FOX stake miktarı, emisyon havuzu ve FOX yakma miktarı nasıl birbirine bağlanır?", + "body": "DAO tarafından toplanan ücretler, takas başına yerel varlıklar cinsindedir. Bu gelirin bir kısmı dönüştürülerek FOX staker'larına ödül olarak dağıtılırken, bir kısmı token yakma yoluyla genel FOX arzını azaltmaya tahsis edilir. Stake edilen toplam FOX, ödüllerin dağıtımını etkiler; ödüller, stake edilen FOX miktarına göre orantılı olarak dağıtılır. Emisyon havuzu, staking ödülleri için mevcut FOX miktarını temsil eder ve FOX yakma miktarı, satın alınıp yakılan FOX miktarıdır." } }, "totals": "rFOX Toplamı", @@ -2639,7 +2643,7 @@ "claimConfirm": { "dustAmountTooltip": "THOR ağında adresinizi tanımlamak için küçük bir miktarda %{symbol} gereklidir", "networkFeeTooltip": "Bu, blockchain'de işlemi gerçekleştirmek için %{symbol} ücretidir, ShapeShift tarafından tahsil edilen bir ücret değildir", - "missingFundsForGasAlert": "Yeterli %{symbol} yok, işlemi tamamlamak için en az %{amount} %{symbol}'e ihtiyacınız var. Dalgalanan ağ ücretleri için biraz daha fazla teminat göndermenizi öneririz.", + "missingFundsForGasAlert": "Yeterli %{symbol} yok; işlemi tamamlamak için en az %{amount} %{symbol} gereklidir. Değişken ağ ücretlerini karşılamak için biraz daha göndermenizi öneririz.", "confirmTitle": "Talebi Onayla", "networkFee": "Ağ Ücreti", "confirmAndClaim": "Talep Et ve Stake", @@ -2675,10 +2679,10 @@ }, "claimPending": "%{amount} %{symbol} talep ediliyor...", "claimStatus": { - "pendingSubtitle": "%{amount} %{symbol} tutarındaki talebinizi işliyoruz", + "pendingSubtitle": "%{amount} %{symbol} talep ediliyor", "goBack": "Geri Git", "successTitle": "Talep başarılı oldu", - "successSubtitle": "%{amount} TCY'yi başarıyla talep ettiniz", + "successSubtitle": "%{amount} TCY başarıyla talep edildi", "failedTitle": "Bir şeyler ters gitti", "failedSubtitle": "Talebiniz başarısız oldu. Lütfen tekrar deneyin." } @@ -2686,7 +2690,7 @@ "markets": { "recommended": "Önerilen", "watchlist": "İzleme Listem", - "marketsBody": "En heyecan verici kripto paraları keşfedin. En çok hareket edenleri, yükselen token'ları, DeFi fırsatlarını ve çok daha fazlasını takip edin. Favorilerinizi kaydedin, paylaşın ve ticaretini yapın.", + "marketsBody": "En heyecan verici kripto paraları keşfedin. En çok hareket edenleri, yükselen tokenleri, DeFi fırsatlarını ve çok daha fazlasını takip edin. Favorilerinizi kaydedin, paylaşın ve işlem yapın.", "watchlistEmpty": { "emptyTitle": "İzleme Listesinde varlık yok", "emptyBody": "Görünüşe göre henüz hiçbir varlığı yıldızlamadınız. Varlıkları takip etmek için onları şimdi izleme listenize eklemeye başlayın!" @@ -2702,7 +2706,7 @@ }, "thorchainDefi": { "title": "THORChain DeFi", - "subtitle": "THORCHain Savers ile varlıklarınızdan yerel getiri elde edin." + "subtitle": "THORChain Savers ile varlıklarınızdan native getiri kazanın." }, "trending": { "title": "Trendler", @@ -2736,20 +2740,20 @@ "simulateTitle": "rFOX Simülatörü", "simulateSubtle": "rFOX staking getirilerinizi simüle edin", "estimatedRewards": "Tahmini Ödüller", - "depositAmount": "Depozito Tutarı", + "depositAmount": "Yatırma Tutarı", "shapeshiftRevenue": "ShapeShift Revenue", "30days": "30 gün" }, "foxFarming": { "title": "FOX Farming+", - "description": "%{rewardAssetSymbol}'unuzu çiftlikten çiftliğe taşımaktan bıktınız mı? Sadece %{assetSymbol}'unuzu stake edin ve sonsuza dek %{rewardAssetSymbol} kazanın.", + "description": "%{rewardAssetSymbol} çiftlikten çiftliğe taşımaktan yoruldunuz mu? Sadece %{assetSymbol} stake edin ve sonsuza dek %{rewardAssetSymbol} kazanın.", "totalClaimableRewards": "Toplam Talep Edilebilir Ödüller", "totalStakingValue": "Toplam Staking Değeri", "nextEpoch": "Sonraki Dönem" }, "governance": { "title": "Yönetim", - "description": "Forumda bize katılın ve DAO'nun geleceğini şekillendireceğiz.", + "description": "Foruma katılın ve DAO'nun geleceğini şekillendirin.", "totalVotingPower": "Toplam Oy Gücü", "noActiveProposals": "Aktif teklif yok", "noClosedProposals": "Kapalı teklif yok" @@ -2816,43 +2820,51 @@ "startSwapping": "Takasa Başlayın" }, "swap": { - "processing": "%{sellAmountAndSymbol} ile %{buyAmountAndSymbol} arasındaki takas işleminiz işleniyor.", + "processing": "%{sellAmountAndSymbol} ile %{buyAmountAndSymbol} takasınız işleniyor.", "complete": "%{sellAmountAndSymbol} ürününü %{buyAmountAndSymbol} ürününe dönüştürme işleminiz tamamlandı.", - "failed": "%{sellAmountAndSymbol} ile %{buyAmountAndSymbol} arasındaki takas işleminiz başarısız oldu.", + "failed": "%{sellAmountAndSymbol} ile %{buyAmountAndSymbol} takasınız başarısız oldu.", "streaming": "%{sellAmountAndSymbol} ile %{buyAmountAndSymbol} arasındaki takasınız yayında.", - "awaitingApproval": "%{sellAmountAndSymbol} ile %{buyAmountAndSymbol} arasındaki takasınız onay bekliyor.", - "awaitingSwap": "%{sellAmountAndSymbol} ile %{buyAmountAndSymbol} arasındaki takasınız gerçekleştirilmeyi bekliyor." + "awaitingApproval": "%{sellAmountAndSymbol} ile %{buyAmountAndSymbol} takasınız onay bekliyor.", + "awaitingSwap": "%{sellAmountAndSymbol} ile %{buyAmountAndSymbol} takasınız yürütme bekliyor." }, "thorchainLp": { "pairAssets": "%{asset1} ve %{asset2}", "withdraw": { - "processing": "%{poolName} havuzundan %{assetAmountsAndSymbols} tutarındaki çekim işleminiz işleniyor.", - "complete": "%{poolName} havuzundan %{assetAmountsAndSymbols} tutarındaki çekim işleminiz tamamlandı." + "processing": "%{poolName} havuzundan %{assetAmountsAndSymbols} çekiminiz işleniyor.", + "complete": "%{poolName} havuzundan %{assetAmountsAndSymbols} çekiminiz tamamlandı." }, "deposit": { "processing": "%{poolName} havuzuna %{amount} %{symbol} tutarındaki yatırımınız işleniyor.", - "complete": "%{poolName} havuzuna %{amount} %{symbol} tutarındaki yatırımınız tamamlandı." + "complete": "%{poolName} havuzuna %{amount} %{symbol} yatırma işleminiz tamamlandı." } }, "deposit": { "pending": "%{amount} %{symbol} tutarındaki yatırımınız işleniyor.", - "complete": "%{amount} %{symbol} tutarındaki yatırımınız tamamlandı." + "complete": "%{amount} %{symbol} tutarındaki yatırımınız tamamlandı.", + "failed": "%{amount} %{symbol} yatırma işleminiz başarısız oldu." }, "withdrawal": { "pending": "%{amount} %{symbol} tutarındaki çekim işleminiz işleniyor.", - "complete": "%{amount} %{symbol} tutarındaki çekim işleminiz tamamlandı." + "complete": "%{amount} %{symbol} çekiminiz tamamlandı.", + "failed": "%{amount} %{symbol} çekiminiz başarısız oldu." }, "claim": { "pending": "%{amount} %{symbol} tutarındaki talebiniz işleniyor.", - "complete": "%{amount} %{symbol} tutarındaki talebiniz tamamlandı." + "complete": "%{amount} %{symbol} tutarındaki talebiniz tamamlandı.", + "failed": "%{amount} %{symbol} talep işleminiz başarısız oldu." + }, + "yield": { + "unstakeAvailableIn": "%{symbol} stake'inizi kaldırma işlemi %{duration} içinde kullanılabilir olacak.", + "unstakeReady": "%{symbol} stake kaldırma işleminiz talep edilmeye hazır.", + "unstakeClaimed": "%{symbol} stake kaldırma işleminiz talep edildi." }, "bridge": { - "processing": "%{sellAmountAndSymbol}.%{sellChainShortName} ile %{buyAmountAndSymbol}.%{buyChainShortName} arasındaki köprünüz işleniyor.", - "complete": "%{sellAmountAndSymbol}.%{sellChainShortName} ile %{buyAmountAndSymbol}.%{buyChainShortName} arasındaki köprünüz tamamlandı.", + "processing": "%{sellAmountAndSymbol}.%{sellChainShortName} ile %{buyAmountAndSymbol}.%{buyChainShortName} köprü işleminiz işleniyor.", + "complete": "%{sellAmountAndSymbol}.%{sellChainShortName} ile %{buyAmountAndSymbol}.%{buyChainShortName} köprü işleminiz tamamlandı.", "initiated": "%{sellAmountAndSymbol} ile %{buyAmountAndSymbol} arasındaki köprünüz başlatıldı.", "pendingWithdraw": "%{amountAndSymbol} tutarındaki çekim işleminiz %{timeText} tarihinde gerçekleştirilebilecek.", "claimAvailable": "%{amountAndSymbol} köprünüz talep edilebilir.", - "failed": "%{sellAmountAndSymbol}.%{sellChainShortName} ile %{buyAmountAndSymbol}.%{buyChainShortName} arasındaki köprünüz başarısız oldu.", + "failed": "%{sellAmountAndSymbol}.%{sellChainShortName} ile %{buyAmountAndSymbol}.%{buyChainShortName} köprü işleminiz başarısız oldu.", "transactionInitiated": "İşlem Başlatıldı", "claimWithdraw": "Talep Geri Çekme", "withdrawTx": "Tx'i Çek", @@ -2861,28 +2873,28 @@ "limitOrder": { "placed": "%{sellAmountAndSymbol} ile %{buyAmountAndSymbol} arasında limit emri verildi", "complete": "%{buyAmountAndSymbol} ürününü %{sellAmountAndSymbol} karşılığında satın alma emriniz başarıyla gerçekleştirildi.", - "cancelled": "%{buyAmountAndSymbol} ürününü %{sellAmountAndSymbol} karşılığında satın alma siparişiniz iptal edildi.", + "cancelled": "%{sellAmountAndSymbol} karşılığında %{buyAmountAndSymbol} satın alma emriniz iptal edildi.", "expired": "%{buyAmountAndSymbol} ürününü %{sellAmountAndSymbol} karşılığında satın alma emriniz sona erdi." }, "rfox": { - "unstakeReady": "%{amount} %{symbol} tutarındaki hisse senedinizi talep etmeye hazırsınız.", - "unstakeTxPending": "%{amount} %{symbol} tutarındaki hisse senedinden çekilme talebiniz beklemede.", + "unstakeReady": "%{amount} %{symbol} stake kaldırma işleminiz talep için hazır.", + "unstakeTxPending": "%{amount} %{symbol} stake kaldırma işleminiz beklemede.", "unstakeTxComplete": "%{amount} %{symbol} tutarındaki hisse senedinden çekilme işleminiz tamamlandı." }, "tcy": { "stakePending": "%{amount} %{symbol} tutarındaki stake işleniyor...", - "unstakePending": "%{amount} %{symbol} tutarındaki stake geri çekme işleminiz işleniyor...", + "unstakePending": "%{amount} %{symbol} stake kaldırma işleminiz işleniyor...", "stakeComplete": "%{amount} %{symbol} tutarındaki stake tamamlandı.", "unstakeComplete": "%{amount} %{symbol} tutarındaki stake geri çekilme işleminiz tamamlandı.", "claimReady": "%{amount} %{symbol} tutarındaki TCY talebiniz hazır.", - "claimTxPending": "%{amount} %{symbol} tutarındaki TCY talebiniz beklemede.", + "claimTxPending": "%{amount} %{symbol} TCY talebiniz beklemede.", "claimTxComplete": "%{amount} %{symbol} tutarındaki TCY talebiniz tamamlandı." }, "approve": { "approvalTxPending": "%{contractName} sözleşmesinin %{amount} %{symbol} sembolünü kullanması onaylanıyor.", - "approvalTxComplete": "%{contractName}'in %{amount} %{symbol}'ü kullanması onaylandı." + "approvalTxComplete": "%{contractName}, %{amount} %{symbol} kullanmak için onaylandı." }, - "pendingTransactions": "%{count} Bekliyor", + "pendingTransactions": "%{count} Beklemede", "rewardDistribution": { "pending": { "description": "%{amountAndSymbol} tutarındaki ödülünüz işleniyor..." @@ -2895,8 +2907,7 @@ "yieldXYZ": { "pageTitle": "Getiriler", "pageSubtitle": "Birden fazla zincirde getiri fırsatlarını keşfedin ve yönetin.", - "actions": { - }, + "actions": {}, "yield": "Getiri", "apy": "APY", "apr": "APR", @@ -2937,8 +2948,8 @@ "pending": "Bekliyor", "ready": "Hazır", "bestReturn": "En İyi Getiri", - "highestApy": "En yüksek APY", - "lowestApy": "En düşük APY", + "highestApy": "En Yüksek APY", + "lowestApy": "En Düşük APY", "highestTvl": "En yüksek TVL", "lowestTvl": "En düşük TVL", "nameAZ": "İsim (A-Z)", @@ -2988,11 +2999,12 @@ "providers": "Sağlayıcılar", "successStaked": "%{amount} %{symbol} tutarındaki stake tutarınızı başarıyla yatırdınız.", "successUnstaked": "%{amount} %{symbol} tutarındaki yatırımınızı başarıyla geri çektiniz.", - "successDeposited": "%{amount} %{symbol} tutarını başarıyla yatırdınız.", + "cooldownNotice": "Çekme işleminiz %{cooldownDuration} içinde kullanılabilir olacak.", + "successDeposited": "%{amount} %{symbol} başarıyla yatırıldı", "successWithdrawn": "%{amount} %{symbol} tutarındaki çekme işleminiz başarıyla tamamlandı.", - "successClaim": "%{amount} %{symbol} tutarındaki talebinizi başarıyla karşıladınız.", + "successClaim": "%{amount} %{symbol} başarıyla talep edildi", "viewPosition": "Pozisyon Görüntüle", - "via": "ile", + "via": "üzerinden", "resetAllowance": "İzin Sıfırla", "loading": { "signInWallet": "Cüzdana giriş yap", @@ -3031,7 +3043,7 @@ "aboutProvider": "%{provider} hakkında", "visitWebsite": "Web sitesini ziyaret edin", "providerDescriptions": { - "morpho": "Morpho, önde gelen güvenlik firmaları tarafından birçok kez denetlenmiş, 2022'den beri faaliyette olan ve 2,5 milyon dolarlık hata ödül teşviki sunan bir para piyasası ve kasa altyapı protokolüdür.", + "morpho": "Morpho, 2022'den bu yana faaliyet gösteren, birçok kez üst düzey güvenlik firmaları tarafından denetlenen ve 2,5 milyon dolarlık hata ödülü teşvikleri sunan bir para piyasası ve vault altyapı protokolüdür.", "morpho-aave": "Morpho, önde gelen güvenlik firmaları tarafından birçok kez denetlenmiş, 2022'den beri faaliyette olan ve 2,5 milyon dolarlık hata ödül teşviki sunan bir para piyasası ve kasa altyapı protokolüdür.", "morpho-compound": "Morpho, önde gelen güvenlik firmaları tarafından birçok kez denetlenmiş, 2022'den beri faaliyette olan ve 2,5 milyon dolarlık hata ödül teşviki sunan bir para piyasası ve kasa altyapı protokolüdür.", "lido": "Lido, kullanıcıların ETH stake ederken stETH aracılığıyla likiditeyi korumalarına olanak tanıyan likit bir stake protokolüdür. Üst düzey güvenlik firmaları tarafından birden fazla kez denetlenmiş, 2020'den beri faaliyette olan ve 2 milyon dolarlık hata ödülü teşvikine sahip bir protokoldür.", @@ -3040,18 +3052,18 @@ "kamino": "Kamino, Solana'nın borç verme, likidite ve kaldıraç özelliklerini tek bir platformda birleştiren bir DeFi paketidir. Maksimum 1,5 milyon dolara kadar ödül sunan bir Immunefi programı yürütmektedir.", "fluid": "Fluid, Instadapp ekibi tarafından geliştirilen ve borç verme, DEX, borç alma ve stablecoin piyasalarını tek bir verimli sistemde birleştiren bir likidite katmanıdır. Üst düzey güvenlik firmaları tarafından birden fazla kez denetlenmiş, 2024'ten beri faaliyette olan ve 0,5 milyon dolarlık hata ödülü teşvikine sahip bir platformdur.", "venus": "Venus, BNB Chain'e odaklanmış bir borç verme ve borç alma protokolüdür. Üçüncü taraf denetimleri ve devam eden bir hata ödül programı aracılığıyla güvenliğe önem verir.", - "gearbox": "Gearbox, DeFi stratejilerine entegre edilebilen kredi hesapları sağlayan, birleştirilebilir bir kaldıraç protokolüdür. Üst düzey güvenlik firmaları tarafından birden fazla kez denetlenmiş, 2021'den beri faaliyette olan ve 0,2 milyon dolarlık hata ödülü teşviki sunan bir protokoldür.", - "yearn": "Yearn, bireylerin, DAO'ların ve diğer protokollerin dijital varlıklarından getiri elde etmelerine yardımcı olan merkeziyetsiz bir ürün paketidir. Üst düzey güvenlik firmaları tarafından birden fazla kez denetlenmiş, 2020'den beri faaliyette olan ve 0,2 milyon dolarlık hata ödülü teşvikine sahip bir platformdur.", + "gearbox": "Gearbox, DeFi stratejilerine entegre olan kredi hesaplarını etkinleştiren birleştirilebilir bir kaldıraç protokolüdür. 2021'den bu yana faaliyet göstermekte olup üst düzey güvenlik firmaları tarafından birçok kez denetlenmiş ve 0,2 milyon dolarlık hata ödülü teşvikleri sunmaktadır.", + "yearn": "Yearn, bireylerin, DAO'ların ve diğer protokollerin dijital varlıklarından getiri elde etmelerine yardımcı olan merkezi olmayan bir ürün paketidir. 2020'den bu yana faaliyet göstermekte olup üst düzey güvenlik firmaları tarafından birçok kez denetlenmiş ve 0,2 milyon dolarlık hata ödülü teşvikleri sunmaktadır.", "spark": "Spark, Sky (eski adıyla MakerDAO) ekosistemi tarafından desteklenen, kullanıcıların DAI ve diğer stablecoin'leri rekabetçi oranlarla ödünç almalarına olanak tanıyan merkeziyetsiz bir borç verme protokolüdür. Maksimum 5 milyon dolara kadar ödül sunan bir Immunefi programı yürütmektedir.", - "rocket-pool": "Rocket Pool, rETH çıkaran, merkeziyetsiz bir Ethereum likit staking protokolüdür. Üst düzey güvenlik firmaları tarafından birçok kez denetlenmiş, 2021'den beri faaliyette olan ve 0,5 milyon dolarlık hata ödülü teşviki sunan bir platformdur.", + "rocket-pool": "Rocket Pool, rETH ihraç eden merkezi olmayan bir Ethereum likit staking protokolüdür. 2021'den bu yana faaliyet göstermekte olup üst düzey güvenlik firmaları tarafından birçok kez denetlenmiş ve 0,5 milyon dolarlık hata ödülü teşvikleri sunmaktadır.", "drift": "Drift, Solana üzerine kurulu, merkeziyetsiz bir sürekli vadeli işlem borsası ve borç verme platformudur. 0,5 milyon dolara kadar azami ödül sunan bir Immunefi programı yürütmektedir." }, "otherYields": "Diğer %{symbol} Getirileri", - "availableToDeposit": "Yatırılabilir", + "availableToDeposit": "Yatırılabilir Miktar", "availableToDepositTooltip": "Bu, cüzdanınızda bulunan ve bu getiri fırsatına yatırabileceğiniz %{symbol} miktarıdır.", "getAsset": "%{symbol} alın", "manage": "Yönet", - "potentialEarningsAmount": "%{amount}/yıl %{apy}% APY", + "potentialEarningsAmount": "%{amount}/yıl (%{apy}% APY)", "depositNow": "Şimdi Yatırın", "strategyInfo": "Strateji Bilgisi", "overview": "Genel Bakış", @@ -3066,13 +3078,13 @@ "estimatedYearlyEarnings": "Tahmini Yıllık Kazanç", "yieldType": "Getiri Türü", "yieldTypes": { - "native-staking": "Yerel Hisse", + "native-staking": "Native Staking", "pooled-staking": "Havuzlanmış Hisse", "liquid-staking": "Likit Hisse", - "staking": "Yatırım", + "staking": "Staking", "lending": "Borç Verme", "vault": "Kasa", - "restaking": "Geri alma" + "restaking": "Restaking" }, "confirmEarn": "Hisseyi Onaylayın", "earnWith": "Kazanç elde edin", diff --git a/src/assets/translations/uk/main.json b/src/assets/translations/uk/main.json index 881d52aae23..7ba648f24a9 100644 --- a/src/assets/translations/uk/main.json +++ b/src/assets/translations/uk/main.json @@ -27,9 +27,9 @@ "continue": "Продовжити", "approve": "Схвалити", "approveToken": "Затвердити токен", - "approveAmount": "Затвердити кількість", + "approveAmount": "Схвалити суму", "approveTo": "Затвердити", - "reset": "Сброс", + "reset": "Скинути", "confirm": "Підтвердити", "seeDetails": "Переглянути деталі", "activity": "Активність", @@ -39,7 +39,7 @@ "connected": "Підключений", "trendingTokens": "Трендові токени", "created": "Створений %{date}", - "noResultsFound": "Нічого не знайдено.", + "noResultsFound": "Результатів не знайдено.", "noResultsBody": "За запитом %{searchQuery} нічого не знайдено. Спробуйте новий пошук.", "insufficientFunds": "Недостатньо коштів", "insufficientFundsForTrade": "Недостатньо коштів для торгівлі", @@ -52,13 +52,13 @@ "withdraw": "Вивести", "withdrawal": "Виведення коштів", "claim": "Claim", - "claiming": "Заявляючи...", + "claiming": "Отримання...", "confirming": "Підтвердження...", "withdrawAndClaim": "Зняти та Підтвердити", "overview": "Огляд", "connectWallet": "Підключити гаманець", "pairing": "Спарити", - "connectWalletToGetStartedWith": "Підключіть гаманець, щоб почати роботу з %{feature}", + "connectWalletToGetStartedWith": "Підключіть гаманець, щоб розпочати роботу з %{feature}", "connectedWallet": "Підключений гаманець", "crypto": "Крипто", "walletActions": "Дії з гаманцем", @@ -82,14 +82,14 @@ "happySuccess": "Успіх!", "transactionFailed": "Транзакція не вдалася", "transactionFailedBody": "Транзакція не вдалася", - "safeProposalQueued": "SAFE пропозиція в черзі. Підписано %{currentConfirmations} з %{confirmationsRequired}.", + "safeProposalQueued": "Пропозицію SAFE поставлено в чергу. Підписано %{currentConfirmations} з %{confirmationsRequired}.", "submitFeedback": "Залишити відгук", "send": "Надіслати", "receive": "Отримати", "privacy": "Політика конфіденційності", "terms": "Умови обслуговування", "clear": "Очистити.", - "copy": "Зрозуміло.", + "copy": "Копіювати", "copied": "Скопійовано в буфер обміну.", "copyFailed": "Не вдалося скопіювати в буфер обміну", "copyFailedDescription": "Скопіюйте, будь ласка, вручну", @@ -120,7 +120,7 @@ "sepa": "SEPA", "buySell": "Купити/продати", "all": "Всі", - "seeMore": "Дивитися більше", + "seeMore": "Більше", "slippage": "Прослизання", "feesPlusSlippage": "Комісії + прослизання", "gasFee": "Плата за газ", @@ -137,7 +137,7 @@ "needAsset": "Отримати %{asset}?", "buyNow": "Купити зараз", "manage": "Управління", - "view": "Вигляд", + "view": "Переглянути", "viewOnly": "Лише перегляд", "allChains": "Всі мережі", "wallet": "Гаманець", @@ -166,7 +166,7 @@ "filterBy": "Фільтрувати за", "filterAndSort": "Фільтр і сортування", "carousel": { - "next": "Далі", + "next": "Наступний", "prev": "Попередній", "dot": "Dot" }, @@ -193,7 +193,7 @@ "boost": "Буст", "viewOnExplorer": "Переглянути в браузері", "approval": "Затвердження", - "permit2Approval": "Permit2 Схвалення", + "permit2Approval": "Схвалення Permit2", "network": "Мережа", "feeEstimate": "Орієнтовна комісія", "list": "Список" @@ -206,8 +206,8 @@ "aiChat": "AI Чат", "openChat": "Відкрити чат", "closeChat": "Закрити чат", - "emptyState": "Чим можу вам допомогти сьогодні?", - "placeholder": "Напишіть повідомлення...", + "emptyState": "Як я можу вам допомогти сьогодні?", + "placeholder": "Введіть повідомлення...", "stop": "Стоп", "send": "Надіслати", "txStepProgress": "%{completedCount} з %{totalCount} завершено", @@ -345,22 +345,22 @@ "marketCapRank": "Рейтинг за ринковою капіталізацією", "volume24h": "24-годинний обсяг", "volMcap": "Обсяг/ринкова капіталізація", - "about": "Про", + "about": "Про %{symbol}", "noDescription": "Опис для цього ресурсу відсутній." }, "receive": { "title": "Отримати", - "receiveOn": "Отримати %{symbol} на %{network}", + "receiveOn": "Отримати %{symbol} у мережі %{network}", "copyAddress": "Скопіювати адресу", "copied": "Скопійовано!", - "warning": "На цю адресу надсилайте лише токени, сумісні з %{network}." + "warning": "Надсилайте на цю адресу лише токени, сумісні з %{network}" }, "getLimitOrders": { "title": "Лімітні ордери", "openOrders": "%{count} відкрито", "noOrders": "Не знайдено жодних лімітних ордерів", "status": { - "open": "Відкрити", + "open": "Відкрито", "fulfilled": "Наповнений", "cancelled": "Скасовано", "expired": "Термін дії закінчився", @@ -368,7 +368,7 @@ }, "sellLabel": "Продати", "buyLabel": "Купити", - "expiresLabel": "Термін дії закінчується", + "expiresLabel": "Закінчується", "view": "Перегляд", "filledLabel": "Наповнений" }, @@ -413,7 +413,7 @@ "error": { "insufficientFunds": "Швидка покупка на amount %{amount} не вдалася, недостатньо коштів, спробувати іншу суму?", "noQuote": "Швидка покупка на суму %{amount} не вдалася, не вдалося отримати дійсну цінову пропозицію.", - "failed": "Швидка покупка на суму %{amount} не вдалася." + "failed": "Швидка купівля на суму %{amount} не вдалася." } }, "consentBanner": { @@ -453,12 +453,12 @@ } }, "rampPage": { - "buyTitle": "Купуйте криптовалюту за лічені секунди", - "sellTitle": "Продайте криптовалюту за лічені секунди", - "buyBody": "Використовуйте кредитну картку, дебетову картку або банківський рахунок. Купуйте біткойни, ефіріум, USDT, USDC або інші популярні криптовалюти. Доступні постачальники послуг без KYC.", + "buyTitle": "Купити крипту за секунди", + "sellTitle": "Продати крипту за секунди", + "buyBody": "Використовуйте кредитну картку, дебетову картку або банківський рахунок. Купуйте Bitcoin, Ethereum, USDT, USDC або інші провідні криптовалюти. Доступні провайдери без KYC.", "sellBody": "Використовуйте кредитну картку, дебетову картку або банківський рахунок. Продавайте біткойни, ефіріум, USDT, USDC або інші популярні криптовалюти. Доступні постачальники послуг без KYC.", "disclaimer": "*Ви також можете продати криптовалюту безпосередньо за готівку на свій банківський рахунок.", - "ctaTitle": "Ви також можете використовувати ShapeShift з усіма провідними гаманцями для торгівлі, отримання доходу та відстеження ваших криптовалют у %{chainCount} ланцюгах.", + "ctaTitle": "Ви також можете використовувати ShapeShift з провідними гаманцями для торгівлі, отримання доходу та відстеження вашої крипти в %{chainCount} ланцюгах", "availableAssets": "Доступні активи" }, "updateToast": { @@ -534,7 +534,7 @@ "createOrImport": "Створити або імпортувати гаманець", "viewSavedWallets": "Переглянути збережені гаманці", "footerOne": "Продовжуючи, ви погоджуєтеся з", - "terms": "Умовами", + "terms": "Умови", "privacyPolicy": "Політики конфіденційності", "connectNewWallet": "Підключити новий гаманець", "getANewWallet": "Отримайте новий гаманець", @@ -563,10 +563,10 @@ "risks": "Чи існують ризики?" }, "bodies": { - "rateFluctuationInfo": "Ставка %{assetName} ви заробляєте, річний відсоток доходу (APR), як правило, коливається в діапазоні від 7% до 20%.", + "rateFluctuationInfo": "Ставка %{assetName}, яку ви заробляєте, річна процентна дохідність (APR), зазвичай коливається між 7% і 20%.", "amountStakingInfo": "Ви можете стейкати будь-яку кількість %{assetName}, і вони одразу ж почнуть заробляти винагороду.", "withdrawInfo": "Ви можете зняти свої винагороди в будь-який час, для цього потрібно буде сплатити невелику комісію за газ, приблизно $0.01.", - "unbondingInfo": "Коли ви знімаєте токени, вони залишаються заблокованими протягом %{unbondingDays} днів, протягом яких вони не будуть заробляти винагороди. Після завершення %{unbondingDays} днів, %{assetName} повернеться на ваш Основний гаманець.", + "unbondingInfo": "Після зняття зі стейкінгу ваші токени залишаться заблокованими на %{unbondingDays} днів, протягом яких вони не нараховуватимуть винагороди. Після %{unbondingDays} днів ваш %{assetName} повернеться до вашого основного гаманця.", "slashingInfo": "Стейкінг здійснюється через валідатора. Це трапляється неймовірно рідко, але якщо валідатор, за допомогою якого ви зробили стейкінг, дасть збій, пропустивши через себе помилкові або некоректні транзакції, ви можете втратити частину своїх активів.", "partnerInfo": "Ми зменшили цей ризик, співпрацюючи з надійними валідаторами, які мають безпечну, надійну та перевірену інфраструктуру." } @@ -586,7 +586,7 @@ "header": "Внесіть LP токени ETH-FOX у %{opportunity}, щоб заробити", "body": "Схвалюйте та стейкайте свої токени ліквідності, щоб отримати бонусні винагороди FOX.", "rewards": "Зароблені вами винагороди будуть нараховуватися автоматично.", - "cta": "Внесіть LP токени ETH-FOX зараз" + "cta": "Внести LP токени ETH-FOX зараз" }, "overview": { "underlyingTokens": "Основні токени", @@ -602,9 +602,9 @@ "claimYour": "Отримайте свою %{opportunity}" }, "saversVaults": { - "description": "Отримуйте дохід від вашого %{asset} через Сховища заощаджень THORChain. Час блокування відсутній, а винагороди накопичуються автоматично. Прибутковість THORChain складається з комісійних за свопи та винагороди за блокчейн. Одностороння дохідність обмежена половиною двосторонньої дохідності постачальників ліквідності.", - "runePoolDescription": "RUNEPool дозволяє вам заробляти більше %{asset}, об'єднуючи свій %{asset} з іншими. Вам не потрібно обирати конкретні пули, всі беруть участь у загальній продуктивності.", - "runePoolOverviewDescription": "RUNEPool оптимізує використання RUNE, розміщуючи його в усіх пулах ліквідності THORChain з підтримкою пулів. Об'єднуючи RUNE в цих пулах, учасники заробляють комбінований APY, але наражаються на ризик сукупних непостійних втрат. Замість того, щоб обирати окремі пули, користувачі отримують вигоду від загальної ефективності, ефективно інвестуючи в індекс RUNE і всі активи THORChain з підтримкою пулів. RUNEPool оптимізує використання RUNE, вкладаючи його в усі пули ліквідності з підтримкою пулів в THORChain. Об'єднуючи RUNE в цих пулах, учасники заробляють комбінований APY, але наражаються на ризик сукупних непостійних втрат. Замість того, щоб обирати окремі пули, користувачі отримують вигоду від загальної ефективності, ефективно інвестуючи в індекс RUNE і всі активи THORChain з підтримкою POL. Це спрощує забезпечення ліквідності та знижує індивідуальний ризик.", + "description": "Заробляйте дохід на своєму %{asset} через Сховища заощаджень THORChain. Немає часу блокування, і винагороди накопичуються автоматично. Дохід на THORChain формується з комісій за свопи та блок-винагород. Односторонній дохід обмежений половиною двостороннього доходу постачальників ліквідності.", + "runePoolDescription": "RUNEPool дозволяє вам заробляти більше %{asset}, об'єднуючи ваш %{asset} з іншими. Вам не потрібно вибирати конкретні пули — всі учасники ділять загальну продуктивність.", + "runePoolOverviewDescription": "RUNEPool оптимізує використання RUNE, депонуючи його в усі пули ліквідності THORChain з підтримкою POL. Об'єднуючи RUNE між цими пулами, учасники отримують сукупний APY, але несуть ризик сукупних непостійних втрат. Замість вибору окремих пулів користувачі отримують вигоду від загальної продуктивності, фактично інвестуючи в індекс RUNE та всі активи THORChain з підтримкою POL. Це спрощує надання ліквідності та зменшує індивідуальний ризик.", "vaultCap": "Капіталізація Сховища", "vaultCapTooltip": "Поточна максимальна місткість цього сховища", "haltedDepositTitle": "Вклади тимчасово зупинені.", @@ -621,16 +621,16 @@ "introducingSaversVaults": "Представляємо Сховища заощаджень", "introducingRunePool": "Представляємо RUNEPool", "risksBody": { - "vaults": "Подивіться на цю статтю щодо ризиків, пов'язаних з використанням ощадних сховищ.", - "runePool": "Подивіться на цю статтю за ризики, пов'язані з RUNEPool." + "vaults": "Зверніться до цієї статті щодо ризиків, пов'язаних зі сховищами заощаджень.", + "runePool": "Зверніться до цієї статті щодо ризиків, пов'язаних з RUNEPool." }, "timeToBreakEven": { "title": "Час для виходу на беззбитковість", "tooltip": "Орієнтовний час для покриття депозитних комісій та отримання прибутку." }, "cannotDepositWhilePendingTx": "Неможливо внести депозит, доки триває обробка транзакцій", - "cannotWithdrawWhilePendingTx": "Неможливо вивести кошти, доки триває обробка транзакцій", - "agreeRunePool": "Я розумію, що RUNEPool має мінімальний 30-денний термін блокування і підвищений ризик непостійних втрат." + "cannotWithdrawWhilePendingTx": "Неможливо вивести кошти, поки транзакції очікують на виконання", + "agreeRunePool": "Я розумію, що RUNEPool має мінімальний термін блокування 30 днів і підвищений ризик непостійних втрат." } }, "memoNote": { @@ -654,7 +654,7 @@ "ended": "Закінчено", "balance": "Баланс", "netWorth": "Чиста вартість", - "loadingAccounts": "Завантажено %{portfolioAccountsLoaded} акаунтів", + "loadingAccounts": "Завантажено %{portfolioAccountsLoaded} рахунків", "loadingMorePositions": "Більше позицій DeFi все ще завантажуються", "walletBalanceChange24Hr": "24 годинна зміна", "earnBody": "Отримуйте пасивний дохід, стейкаючи свої активи або вклавши їх у DeFi-стратегію.", @@ -680,9 +680,9 @@ }, "withdraw": { "info": { - "title": "Інформація про виведення коштів", + "title": "Інформація про виведення", "description": "Введіть суму %{asset} яку ви хотіли б вивести.", - "yieldyDescription": "Введіть суму %{asset} яку ви бажаєте вивести. Наступні виведення коштів будуть об'єднані й обнулять час виведення.", + "yieldyDescription": "Введіть суму %{asset}, яку ви хочете вивести. Наступні виведення будуть об'єднані та скинуть час виведення.", "farmingExpiredDescription": "Цей контракт з фармінгу закінчився. Ви повинні зняти весь свій баланс.", "rewardsInfo": "Винагороди, які ви отримаєте" } @@ -765,7 +765,7 @@ "common": "Транзакція", "confirmed": "Підтверджено", "pending": "Розглядається", - "failed": "Не вдалася", + "failed": "Не вдалося", "swap": "Обмін", "amount": "Сума", "emptyMessage": "Тут з'являться ваші транзакції %{status}.", @@ -783,7 +783,7 @@ "rfox": { "stake": "Стейкінг", "withdraw": "Зняти", - "unstakeRequest": "Запит на зняття з стейкінгу", + "unstakeRequest": "Запит на зняття зі стейкінгу", "setRuneAddress": "Встановити адресу для RUNE", "reward": "Розподіл винагороди" }, @@ -838,7 +838,7 @@ "swapOut": "Обмін прийнято", "swap": "Обмін", "swapRefund": "Відшкодування за обмін", - "unstake": "Зняти з стейкінгу", + "unstake": "Зняти зі стейкінгу", "withdraw": "Запит на виведення коштів", "withdrawNative": "Вивести", "withdrawOut": "Надійшло виведення коштів" @@ -917,7 +917,7 @@ "assetAddress": "%{asset} адреса", "verifyAsset": "Підтвердити %{asset}", "verifyAddressMessage": "Переконайтеся, що ваші адреси правильні, перш ніж продовжувати.", - "slippageInfo": "Ваша транзакція буде скасована, якщо ціна зміниться більше, ніж на цей відсоток.", + "slippageInfo": "Ваша транзакція буде скасована, якщо ціна зміниться несприятливо більш ніж на цей відсоток.", "allowanceTooltip": "Сума, яку ви надасте смарт-контракту право використовувати від вашого імені.", "searchingRate": "Швидкість вилучення...", "noRateAvailable": "Тариф не доступний.", @@ -956,7 +956,7 @@ "youGet": "Ви отримуєте", "tradeTo": "Обміняти на", "expand": "Розгорнути", - "minerFee": "Комісія майнерам", + "minerFee": "Комісія майнера", "protocolFee": "Комісія за протокол", "protocol": "Протокол", "tradeFeeSource": "%{tradeFeeSource} Комісії", @@ -985,7 +985,7 @@ "changeAddress": "Змінити адресу", "changeAddressExplainer": "При відправленні криптовалют у мережах на основі UTXO будь-які залишки коштів від вашої транзакції повертаються вам на цю адресу.", "depositAddress": "Адреса депозиту", - "depositAddressExplainer": "Це протокольна адреса, на яку будуть відправлені ваші кошти для обробки. Ваш апаратний гаманець відобразить цю адресу для перевірки.", + "depositAddressExplainer": "Це адреса протоколу, на яку ваші кошти будуть надіслані для обробки. Ваш апаратний гаманець відобразить цю адресу для перевірки.", "customReceiveAddress": "Адреса для отримання клейму", "customReceiveAddressDescription": "Введіть індивідуальну адресу для отримання цієї угоди", "thisIsYourCustomReceiveAddress": "Це ваша індивідуальна адреса для отримання повідомлень", @@ -994,7 +994,7 @@ "tooltip": { "continueSwapping": "Продовжуйте обмін для отримання фінальних деталей", "noRateAvailable": "Часто це пов'язано з дуже обмеженою ліквідністю або її відсутністю по торговій парі.", - "minerFee": "Це комісія за обробку транзакції на блокчейні, це не комісія, яку стягує ShapeShift.", + "minerFee": "Це комісія за обробку транзакції в блокчейні; ShapeShift не стягує цієї комісії.", "protocolFee": "Це комісія, що стягується протоколом, обраним для обробки цієї транзакції, це не комісія, що стягується ShapeShift.", "inputOutputDifference": "Розрахункова різниця між значеннями вхідних і вихідних сум у доларах США.", "slippageWithAmount": "Якщо ціна зміниться таким чином, що ви отримаєте менше %{amount}, ваша транзакція буде скасована. Це мінімальна сума, яку ви гарантовано отримаєте.", @@ -1008,13 +1008,13 @@ }, "rateExpired": { "title": "Новий курс", - "body": "Термін дії вашого попереднього своп-курсу закінчився. Ми отримали новий курс і оновили ваші котирування. Будь ласка, ознайомтеся з останніми даними, перш ніж підтверджувати своп.", + "body": "Попередній курс свопу вичерпав термін дії. Ми отримали новий курс та оновили суми в котируванні. Будь ласка, перегляньте останні деталі перед підтвердженням свопу.", "cta": "Гаразд, зрозумів." } }, "permit2Allowance": { - "title": "Дозвіл на укладення контракту Permit2", - "tooltip": "Ця торгівля використовує Permit2, який вимагає одноразового схвалення для надання необмеженого ліміту для контракту Permit2. Після цього початкового налаштування ви можете авторизувати торгівлю за будь-яким протоколом, що підтримує Permit2, підписуючи повідомлення без газу, які надають тимчасові 5-хвилинні дозволи." + "title": "Дозвіл контракту Permit2", + "tooltip": "Ця угода використовує Permit2, що потребує одноразового схвалення для надання необмеженого дозволу контракту Permit2. Після початкового налаштування ви можете авторизувати угоди на будь-якому протоколі з підтримкою Permit2, підписуючи безкоштовні повідомлення, що надають тимчасові 5-хвилинні дозволи." }, "permit2Eip712": { "title": "Дозвольте передачу токенів", @@ -1028,7 +1028,7 @@ "sellAmountDoesNotCoverFee": "Сума продажу менша за комісію", "insufficientFunds": "Недостатність коштів для сплати комісійного збору та його розмір", "transactionRejected": "Користувач скасував транзакцію", - "insufficientFundsForProtocolFee": "Недостатньо %{symbol} на %{chainName} для оплати комісій", + "insufficientFundsForProtocolFee": "Недостатньо %{symbol} у мережі %{chainName} для сплати комісій", "unsupportedTradePair": "Непідтримувана торговельна пара", "noRouteFound": "Для цієї пари та суми не знайдено маршрутів", "quoteExpired": "Термін дії пропозиції закінчився, спробуйте ще раз.", @@ -1070,28 +1070,28 @@ "summary": "Короткий огляд торгівлі", "estimatedCompletionTime": "Орієнтовний час завершення", "transactionSuccessful": "Транзакція успішна, чекаємо на підтвердження", - "thorchainSwapperVolatilityAcknowledgementMessage": "Протокол THORCHain переживає нестабільність. Дійте з особливою обережністю і розгляньте додаткові доступні маршрути.", + "thorchainSwapperVolatilityAcknowledgementMessage": "Протокол THORChain переживає волатильність. Дійте з особливою обережністю та розгляньте інші доступні маршрути.", "temp": { "tradeSuccess": "Обмін завершено" }, "hopTitle": { "swap": "Обміняти через %{swapperName}", - "swapEta": "Обмін через %{swapperName} в ~%{eta}" + "swapEta": "Своп через %{swapperName} приблизно за %{eta}" }, "transactionTitle": { "bridge": "Обмін з %{sellChainName} на %{buyChainName} через %{swapperName}.", - "swap": "Обмін на %{sellChainName} через %{swapperName}" + "swap": "Своп у %{sellChainName} через %{swapperName}" }, "approvalTitle": "Затвердження дозволу на використання токенів", "resetTitle": "Скидання ліміту токенів", "fiatAmountOnChain": "%{amountFiatFormatted} на %{chainName}", "quote": { - "cantSetSlippage": "Ми не можемо встановити користувацьке прослизання (%{userSlippageFormatted}) для %{swapperName}", + "cantSetSlippage": "Ми не можемо встановити власне прослизання (%{userSlippageFormatted}) для %{swapperName}", "gas": "Газ для завершення цієї транзакції обміну.", "slippage": "Це є прослизання у цьому котируванні.", "timeEstimate": "Це орієнтовний час завершення цього обміну." }, - "awaitingPermit2Approval": "Очікуємо на передачу токенів", + "awaitingPermit2Approval": "Очікування переказу токена", "awaitingSwap": "Очікування обміну через %{swapperName}", "awaitingApproval": "Очікує на затвердження", "awaitingAllowanceReset": "Очікування скидання дозволу", @@ -1132,12 +1132,12 @@ "noOpenOrders": "Відкритих ордерів поки що немає.", "noHistoricalOrders": "Історичних замовлень поки що немає.", "limitPriceIsPercentLowerThanMarket": "Гранична ціна на %{percent}% нижча за ринкову", - "highCowFeeImpact": "Комісія CoW становить %{percentage}% від суми продажу (%{cryptoImpact} %{sellAssetSymbol}). Ваш ордер може не виконатися.", + "highCowFeeImpact": "Комісія CoW становить %{percentage}% від вашої суми продажу (%{cryptoImpact} %{sellAssetSymbol}). Ваш ордер може не виконатися.", "awaitingOrderPlacement": "Очікує розміщення ордерів на %{swapperName}", "awaitingAllowanceApproval": "Очікуємо на затвердження дозволу", "awaitingAllowanceReset": "Очікування скидання дозволу", "orderPlacement": "Розмістіть ордер на %{swapperName}", - "explanation": "Коли ціна %{assetSymbol} досягне %{limitPrice}, ваш лімітний ордер автоматично продасть %{sellAmount}, гарантуючи, що ви отримаєте не менше %{receiveAmount}.", + "explanation": "Коли ціна %{assetSymbol} досягне %{limitPrice}, ваш лімітний ордер автоматично продасть %{sellAmount}, гарантуючи отримання щонайменше %{receiveAmount}.", "sellBuy": "Продати → Купити", "limitExecution": "Ліміт/Виконання", "statusHead": "Статус", @@ -1154,7 +1154,7 @@ "nativeSellAssetNotSupported": "Власний актив продажу не підтримується", "insufficientValidTo": "Занадто рано закінчився термін дії замовлення", "excessiveValidTo": "Термін дії замовлення занадто віддалений у часі", - "insufficientLiquidity": "Недостатня ліквідність", + "insufficientLiquidity": "Недостатньо ліквідності", "zeroFunds": "Потрібен ненульовий баланс активів для продажу", "insufficientFundsForGas": "Недостатньо коштів на оплату газу", "allowanceResetRequired": "Потрібне скидання дозволу" @@ -1179,7 +1179,7 @@ "loadingOrderList": "Завантаження лімітних ордерів...", "orderCard": { "warning": { - "insufficientBalance": " Наразі у вашому гаманці недостатньо %{symbol} балансу на %{chainName} для виконання цього ордера. Ордер все ще відкритий і буде виконаний, коли ви поповните баланс %{symbol} на %{chainName}.", + "insufficientBalance": "Ваш гаманець наразі має недостатній баланс %{symbol} у мережі %{chainName} для виконання цього ордеру. Ордер залишається відкритим і стане виконуваним, коли ви поповните баланс %{symbol} у мережі %{chainName}.", "insufficientAllowance": "Для виконання цього ордера потрібно затвердити додатковий запас у розмірі %{symbol} на %{chainName}, щоб CoW Swap зміг його виконати. Ордер все ще відкритий і стане виконуваним, коли ви завершите затвердження ліміту." } }, @@ -1257,7 +1257,7 @@ }, "disconnect": { "header": "Відключіть пристрій KeepKey", - "body": "На жаль, під час відновлення/налаштування вашого пристрою KeepKey сталася помилка. Будь ласка, від'єднайте та під'єднайте ваш пристрій і спробуйте налаштувати пристрій KeepKey ще раз. Якщо проблема не зникне, зверніться до служби підтримки KeepKey." + "body": "На жаль, під час відновлення/налаштування вашого пристрою KeepKey сталася помилка. Будь ласка, від'єднайте та знову підключіть пристрій і спробуйте налаштувати KeepKey знову. Якщо проблема не зникає, зверніться до служби підтримки KeepKey." } }, "shapeShift": { @@ -1276,7 +1276,7 @@ } }, "confirmPassword": { - "placeholder": "Підтвердити пароль", + "placeholder": "Підтвердіть пароль", "error": { "invalid": "Паролі повинні збігатися", "required": "Необхідне підтвердження паролю" @@ -1286,13 +1286,13 @@ "menuItem": "Резервна копія гаманця", "enterPassword": "Введіть пароль для продовження", "testTitle": "Підтвердіть свою секретну фразу відновлення", - "title": "Підтвердити резервне копіювання", + "title": "Підтвердити резервну копію", "description": "Будь ласка, оберіть правильну відповідь до початкових фраз нижче.", "desktopDescription": "Пройдіть цей швидкий тест, щоб переконатися, що ви все зберегли правильно.", "wordNumber": "Слово #%{number}", "info": { "title": "Ваша секретна фраза відновлення", - "description": "Запишіть ці 12 слів і надійно зберігайте їх в офлайн-режимі. Ці 12 слів використовуються для відновлення приватних ключів вашого гаманця.", + "description": "Запишіть ці 12 слів і надійно зберігайте їх офлайн. Ця фраза з 12 слів використовується для відновлення приватних ключів вашого гаманця.", "warning": "Примітка: якщо ви втратите секретну фразу відновлення, ShapeShift не зможе допомогти вам відновити ваш гаманець, і ваші кошти будуть втрачені назавжди." }, "success": { @@ -1306,7 +1306,7 @@ }, "skip": { "title": "Пропустити цей крок?", - "description": "Відсутність резервної копії означає, що ви не зможете відновити свій гаманець, якщо втратите доступ до пристрою.", + "description": "Пропуск резервного копіювання означає, що ви не зможете відновити гаманець, якщо втратите доступ до пристрою.", "confirmCta": "Так, я зберіг свою початкову фразу" } } @@ -1347,7 +1347,7 @@ "generic": "Сталася помилка.", "notEnoughNativeToken": "Не достатньо %{asset}, щоб покрити газ", "transactionRejected": "Користувач відхилив транзакцію", - "qrPermissions": "Для роботи цієї функції потрібен дозвіл на доступ до камери. Будь ласка, змініть налаштування вашого браузера.", + "qrPermissions": "Для роботи цієї функції потрібен доступ до камери. Будь ласка, змініть налаштування браузера.", "qrDangerousEthUrl": "QR-коди, що містять адресу контракту, не підтримуються. Будь ласка, вставте адресу призначення вручну.", "noAccountsOnChain": "Немає рахунків на %{chain}" }, @@ -1376,7 +1376,7 @@ "availableBalance": "%{balance} доступно" }, "status": { - "pendingBody": "Відправлення %{amount} %{symbol}" + "pendingBody": "Надсилання %{amount} %{symbol}" } }, "receive": { @@ -1423,7 +1423,7 @@ "withdrawType": "Тип виведення", "instant": "Миттєво", "delayed": "від 7 до 14 днів", - "fee": "Комісія %{fee}% %{symbol} ", + "fee": "Комісія %{fee}% %{symbol}", "noFee": "Без комісії %{symbol} ", "withdrawFee": "За виведення коштів буде окрема комісія за газ", "notEnoughGas": "Не достатньо %{assetSymbol}, щоб покрити комісію за газ", @@ -1462,9 +1462,9 @@ "withdrawInstantTime": "Миттєво", "withdrawDelayedTime": "від 7 до 14 днів", "xDays": "%{unbondingDays} днів", - "estimatedGas": "Розрахункова комісія за газ", + "estimatedGas": "Орієнтовна комісія за газ", "notEnoughGas": "Не достатньо %{assetSymbol}, щоб покрити комісію за газ", - "missingFundsForGas": "Недостатньо коштів, потрібно більше %{cryptoAmountHuman} %{assetSymbol} для завершення транзакції", + "missingFundsForGas": "Недостатньо коштів, вам потрібно ще %{cryptoAmountHuman} %{assetSymbol} для завершення транзакції", "signBroadcast": "Підписати та транслювати", "cancel": "Скасувати" }, @@ -1506,10 +1506,10 @@ "CAD": "Канадський долар", "HKD": "Гонконгський долар", "AUD": "Австралійський долар", - "TWD": "Новий тайванський долар", + "TWD": "Тайванський долар", "BRL": "Бразильський Реал", "CHF": "Швейцарський франк", - "THB": "тайський бат", + "THB": "Тайський бат", "MXN": "Мексиканське песо", "RUB": "Російський рубль", "SAR": "Саудівський Ріял", @@ -1556,7 +1556,7 @@ "connect": { "header": "З'єднайте свій KeepKey", "body": "Підключіть пристрій KeepKey та натисніть \"Створити пару\".", - "button": "Створити пару", + "button": "Підключити", "conflictingApp": "Не вдалося знайти ваш KeepKey. Можливо, інша програма намагається з'єднатися з вашим KeepKey.", "downloadUpdaterApp": "Завантажити оновлення додатку" }, @@ -1635,7 +1635,7 @@ "noProvider": "Розширення для гаманця Keplr не знайдено" }, "connect": { - "header": "Під'єднати Keplr", + "header": "Підключити Keplr", "body": "Натисніть Під'єднати та виберіть Keplr у спливаючому вікні", "button": "Під'єднати " }, @@ -1720,7 +1720,7 @@ "success": "Тепер ви можете закрити це вікно." }, "errors": { - "unknown": "Виникла несподівана помилка при взаємодії з гаманцем Ledger", + "unknown": "Виникла неочікувана помилка при зв'язку з гаманцем Ledger", "noDeviceConnected": "Не підключено пристрій Ledger", "multipleDevicesConnected": "Підключено кілька пристроїв Ledger. Будь ласка, від'єднайте всі пристрої, крім одного." }, @@ -1733,7 +1733,7 @@ }, "failure": { "header": "Не вдається підключитися до Ledger", - "body": "Ми не змогли виявити ваш Ledger, але ви можете підключитися в режимі тільки для читання." + "body": "Нам не вдалося виявити ваш Ledger, але ви можете підключитися в режимі лише для читання." }, "readOnly": { "button": "Підключити тільки для читання" @@ -1817,10 +1817,10 @@ "warningExperimental": "Multichain Snap у ShapeShift - це нова, експериментальна функція, яка надається \"як є\"", "warningBackup": "Переконайтеся, що ви створили резервну копію початкової фрази MetaMask. Будь-які кошти, які ви відправляєте в не-EVM-ланцюги за допомогою цієї прив'язки, будуть спрямовані на обліковий запис за замовчуванням, який ви створили в MetaMask.", "agreeIntro": "Перш ніж продовжити, будь ласка, прочитайте наступне:", - "agreeItem1": "Апаратні гаманці - це НЕ підтримують", + "agreeItem1": "Апаратні гаманці НЕ підтримуються", "agreeItem2": "Для додаткових ланцюжків, які надає ShapeShift Multichain Snap, підтримується лише обліковий запис №1 у MetaMask", - "agreeItem3": "Щоб використовувати існуючі ланцюжки Ethereum, надані MetaMask, ви повинні підключити обліковий запис №1 до ShapeShift в MetaMask", - "agreeItem4": "Увімкнувши багатоланцюгову прив'язку ShapeShift, ви визнаєте, що використовуєте її на свій страх і ризик", + "agreeItem3": "Щоб використовувати існуючі ланцюги Ethereum, надані MetaMask, необхідно підключити Акаунт №0 до ShapeShift у MetaMask", + "agreeItem4": "Увімкнюючи ShapeShift Multichain Snap, ви визнаєте, що використовуєте його на власний ризик", "readAndUnderstood": "Я ознайомився та зрозумів", "seedBackedUp": "Я створив резервну копію своєї сід фрази MetaMask", "acceptInstall": "Підтвердити та встановити", @@ -1841,7 +1841,7 @@ "unknown": "Виникла несподівана помилка при взаємодії з WalletConnect" }, "connect": { - "header": "Під'єднати WalletConnect", + "header": "Підключити WalletConnect", "body": "Натисніть \"Під'єднати\" та виберіть WalletConnect у спливаючому вікні", "button": "Під'єднати" } @@ -1857,14 +1857,14 @@ "header": "Збережені гаманці", "forgetWallet": "Забути гаманець", "confirmForget": "Ви впевнені, що хочете забути %{wallet}?", - "confirmForgetBody": "Ви не зможете отримати доступ до свого гаманця, якщо не створили його резервну копію." + "confirmForgetBody": "Ви не зможете отримати доступ до гаманця, якщо не зробили резервну копію." }, "import": { "header": "Імпортувати гаманець", "keystoreHeader": "Імпортуйте ваше keystore гаманець ", "body": "Введіть або вставте свою секретну фразу відновлення малими літерами без ком і цифр, залишаючи між словами один пробіл.", "button": "Далі", - "secretRecoveryPhraseError": "Введіть свою секретну фразу відновлення з одним пропуском між словами. Не використовуйте коми, крапки та інші додаткові символи.", + "secretRecoveryPhraseError": "Введіть вашу секретну фразу відновлення, розділяючи слова одним пробілом. Не використовуйте коми, переноси рядків або будь-які додаткові символи.", "secretRecoveryPhraseRequired": "Потрібна секретна фраза відновлення", "secretRecoveryPhraseTooShort": "Секретна фраза відновлення занадто коротка", "dragAndDrop": "Перетягніть або виберіть файл", @@ -1887,7 +1887,7 @@ "showWords": "Показувати слова" }, "start": { - "header": "Гаманець ShapeShift ", + "header": "ShapeShift Wallet", "selectHeader": "Імпортувати гаманець", "body": "Ви можете мати декілька гаманців ShapeShift. Ви можете завантажити гаманець, імпортувати гаманець із секретної фрази відновлення або створити новий гаманець.", "selectBody": "Імпортуйте гаманець за допомогою секретної фрази відновлення або завантаживши файл сховища ключів.", @@ -1900,7 +1900,7 @@ "importKeystore": "Імпорт файлу Keystore" }, "success": { - "encryptingWallet": "Шифрування гаманця... якщо ваш браузер пропонує зберігати дані в постійному сховищі, будь ласка, натисніть \"Дозволити\".", + "encryptingWallet": "Шифрування вашого гаманця... якщо браузер запитає дозвіл на збереження даних у постійному сховищі, натисніть «Дозволити».", "header": "Гаманець під'єднано", "success": "Тепер ви можете закрити це вікно.", "error": "Виникла помилка при підключенні вашого гаманця" @@ -1951,7 +1951,7 @@ "multiChain": { "title": "Одночасно підтримується кілька мереж", "subTitle": "Вам ніколи не доведеться перемикати мережу в гаманці, він працює з кожною мережею безперебійно.", - "body": "Коли в ShapeShift додається нова мережа, ваш гаманець автоматично підтримує його." + "body": "Отримайте доступ до Bitcoin, Ethereum, Solana та багатьох інших мереж з одного гаманця. Безперешкодно торгуйте та керуйте своїми активами у різних мережах." }, "selfCustody": { "title": "Ваш гаманець ShapeShift - це самозахист", @@ -1985,7 +1985,7 @@ "headerSecret": "Секретну", "headerEnd": "Фразу Відновлення в Безпеці", "subHeader": "Безпека вашої секретної фрази відновлення має вирішальне значення.", - "description": "Ставтеся до своєї секретної фрази відновлення як до найціннішого майна - завжди тримайте її в безпеці. Менеджер паролів - це чудовий захист, але записувати слова ще краще.", + "description": "Ставтеся до вашої секретної фрази відновлення як до найціннішого майна — зберігайте її в безпеці. Менеджер паролів забезпечує хороший захист, але записати слова ще надійніше.", "bulletPoints": { "share": "Не діліться нею ні з ким іншим", "lose": "Якщо ви її втратите, ми не зможемо її відновити" @@ -2001,13 +2001,13 @@ "button": "Продовжуйте підтверджувати", "success": { "title": "Ти з нами.", - "description": "Ви підтвердили свою секретну фразу відновлення. Обов'язково зберігайте її в надійному місці - це єдиний спосіб відновити ваш гаманець.", + "description": "Ви підтвердили вашу секретну фразу відновлення. Зберігайте її в надійному місці — це єдиний спосіб відновити ваш гаманець.", "viewWallet": "Переглянути гаманець" } }, "vultisig": { "errors": { - "connectFailure": "Неможливо підключитися до гаманця Vultisig" + "connectFailure": "Не вдалося підключити гаманець Vultisig" }, "connect": { "header": "Спарити Vultisig", @@ -2090,7 +2090,7 @@ "selectChain": "Виберіть мережу, для якої ви бажаєте створити обліковий запис.", "requiresPriorTxHistory": "Ви можете додати новий акаунт тільки в тому випадку, якщо існуючий(і) акаунт(и) має(ють) попередню історію транзакцій", "newAccountAdded": "Новий %{name} Акаунт додано", - "youCanNowUse": "Тепер ви можете користуватися %{name} Акаунт #%{accountNumber}", + "youCanNowUse": "Тепер ви можете використовувати %{name} Рахунок №%{accountNumber}", "showAssets": "Показати активи", "hideAssets": "Приховати активи", "viewAccount": "Переглянути акаунти", @@ -2100,8 +2100,8 @@ "menuTitle": "Керування акаунтами", "manageAccounts": { "title": "Керування акаунтами", - "description": "Це мережі, які ви підключили, і кількість акаунтів, які ви імпортували.", - "emptyList": "У вас ще немає підключених акаунтів. Додайте ланцюжок, щоб почати.", + "description": "Це ланцюги, які ви підключили, та кількість імпортованих рахунків.", + "emptyList": "У вас ще немає підключених рахунків. Додайте ланцюг, щоб розпочати.", "addChain": "Додати мережу", "addAnotherChain": "Додати іншу мережу" }, @@ -2141,7 +2141,7 @@ "resetFilters": "Скинути фільтри", "to": "до", "categories": "Категорії", - "dayRange": "Денний діапазон", + "dayRange": "Діапазон днів", "10days": "10 днів", "30days": "30 днів", "90days": "90 днів", @@ -2159,7 +2159,7 @@ "timestamp": "Часовий діапазон", "status": "Статус", "minerFee": "Комісія майнерам", - "minerFeeCurrency": "Валюта комісії майнерам", + "minerFeeCurrency": "Валюта комісії майнера", "inputAmount": "Сума вкладу", "inputCurrency": "Валюта платежу", "inputAddress": "Адреса введення", @@ -2291,7 +2291,7 @@ "loanToValue": "Кредит до капіталу", "availablePools": "Доступні пули", "pool": "Пул", - "poolDepth": "Обсяг пулу", + "poolDepth": "Глибина пулу", "poolDepthDescription": "Здоров'я пулу", "status": "Статус", "statusDescription": "Статус пулу", @@ -2301,7 +2301,7 @@ "totalCollateralDescription": "Загальна сума застави, доданої до кредитного пулу", "estCollateralizationRatio": "Приблизний коефіцієнт забезпечення", "estCollateralizationRatioDescription": "Наразі діє фіксований коефіцієнт забезпечення на рівні 200%. У майбутньому динамічний коефіцієнт буде балансувати між максимальним та мінімальним КЗ, виходячи з ринкових умов.", - "collateralizationRatio": "коефіцієнт забезпечення", + "collateralizationRatio": "Коефіцієнт забезпечення", "totalBorrowers": "Всього позичальників", "totalBorrowersDescription": "Кількість позичальників, які беруть участь", "myLoanInformation": "Інформація про мій кредит", @@ -2345,7 +2345,7 @@ }, "borrowing": { "title": "Як працює позика?", - "body": "Позики в THORChain передбачають використання ваших депонованих активів в якості застави для отримання кредиту. Кредит деномінований в доларах США (TOR) і може бути отриманий в різних активах L1. Завдяки динамічному коефіцієнту забезпечення ви можете гнучко позичати, не турбуючись про відсотки або ліквідацію" + "body": "Позичання в THORChain передбачає використання ваших депонованих активів як застави для отримання кредиту. Кредит деномінований у доларах США (TOR) і може бути отриманий у різних активах L1. Завдяки динамічному коефіцієнту забезпечення ви можете гнучко позичати без турботи про відсотки чи ліквідацію." }, "repayments": { "title": "Як відбувається погашення?", @@ -2358,14 +2358,14 @@ "repaymentsDisabled": "Погашення тимчасово відключено.", "borrowingDisabled": "Кредитування тимчасово відключено.", "amountTooLowToReturnCollateral": "Занадто мала сума для повернення застави", - "amountTooLowToReturnCollateralTooltip": "Сума погашення занадто мала, щоб повернути заставу. Будь ласка, спробуйте ще раз з більшою сумою або погасіть частково (це не поверне вам заставу, але зменшить ваш борг).", + "amountTooLowToReturnCollateralTooltip": "Сума погашення занадто мала для повернення застави. Спробуйте ще раз з більшою сумою або погасіть частину боргу (це не поверне заставу, але зменшить ваш борг).", "amountTooSmallUnknownMinimumTooltip": "Введена сума погашення занадто мала. Будь ласка, спробуйте ще раз з більшою сумою.", "repaymentUnavailableTooltip": "Погасити кредит поки що неможливо. Будь ласка, зачекайте, поки закінчиться блокування погашення.", "repaymentsHaltedTooltip": "Погашення тимчасово призупинено. Будь ласка, спробуйте пізніше." }, "quote": { "collateral": "Загальна сума активів, які будуть забезпечені під заставу вашого кредиту", - "debt": "Загальний борг, який ви будете винні, виходячи з нової суми кредиту", + "debt": "Загальний борг, який ви матимете, виходячи з нової суми кредиту", "repaymentLock": "Мінімальний термін, протягом якого ви можете погасити кредит", "collateralizationRatio": "Співвідношення вартості застави до суми кредиту", "feesPlusSlippage": "Загальна сума комісій, включаючи комісію L1, прослизання та комісію за ліквідність THORChain" @@ -2403,14 +2403,14 @@ "addLiquidity": "Додати ліквідності", "removeLiquidity": "Зняти ліквідність", "initialPricesAndPoolShare": "Початкові ціни та частка пулу", - "pricePerAsset": "%{from} на %{to}", - "symAlert": "Ваші %{from} будуть розподілені 50:50 %{to} та %{from} при внесені в пул.", + "pricePerAsset": "%{from} за %{to}", + "symAlert": "Ваш %{from} буде розподілено у співвідношенні 50:50 між %{to} та %{from} при вході до пулу.", "withdrawTypeNotAvailable": "Цей тип виведення коштів недоступний для цього пулу.", "incompletePositionDepositAlert": "Ця позиція є незавершеною, будь ласка, внесіть відповідну суму в %{asset} щоб завершити цю позицію.", "incompletePositionWithdrawAlert": "Ця позиція є незавершеною, будь ласка, скасуйте позицію, видаливши 100% ліквідності. Ви також можете завершити позицію через \"Додати ліквідність\".", "unsupportedNetworkExplainer": "Ваш гаманець не підключено до %{network}. Будь ласка, підключіть цей ланцюжок або перейдіть на гаманець, який підтримує цю мережу.", - "unsupportedNetworksExplainer": "Ваш гаманець не підключено до %{network1} та %{network2}. Будь ласка, підключіть цей ланцюжок або перейдіть на гаманець, який підтримує ці мережі.", - "depositsDisabled": "Депозити вимкнено", + "unsupportedNetworksExplainer": "Ваш гаманець не підключений до %{network1} та %{network2}. Будь ласка, підключіть цей ланцюг або перейдіть на гаманець, що підтримує ці мережі.", + "depositsDisabled": "Поповнення вимкнено", "shareOfPool": "Частка пулу", "totalLiquidity": "Загальна ліквідність", "totalVolume": "Загальний обсяг", @@ -2503,7 +2503,7 @@ "body": "Стейкайте TCY, заробляйте RUNE." }, "tags": { - "liquid-staking": "Ліквідний стейкінг", + "liquid-staking": "Рідкий стейкінг", "yield": "Дохідність", "lending": "Кредитування", "rwa": "RWA", @@ -2519,9 +2519,9 @@ "staking": "Стейкінг rFOX ", "bridge": "Міст", "bridgeFunds": "Перевести кошти", - "bridgeSuccess": "Ваші кошти були успішно переведені. Тепер ви можете продовжувати стейкінг.", + "bridgeSuccess": "Ваші кошти успішно переміщено через бридж. Тепер ви можете продовжити до стейкінгу.", "stake": "Стейкінг", - "unstake": "Зняти з стейкінгу", + "unstake": "Зняти зі стейкінгу", "claim": "Клейм", "rewards": "Винагороди", "chainNotSupportedByWallet": "Мережа не підтримується гаманцем", @@ -2541,8 +2541,8 @@ "useWalletAddress": "Використовуйте адресу гаманця", "useCustomAddress": "Використовуйте власну адресу", "stakeWarning": "Коли ви вкладаєте свої %{symbol}, будь ласка, пам'ятайте, що період блокування становить %{cooldownPeriod}. Це означає, що якщо ви вирішите зняти свої токени, вам потрібно буде почекати %{cooldownPeriod}, перш ніж ви зможете забрати свої кошти.", - "bridgeCta": "Ви вибрали %{assetSymbol} у %{originNetwork}, але для того, щоб застейкати, вам потрібен %{assetSymbol} у %{destinationNetwork}. Ми можемо допомогти вам перевести ваші кошти в %{destinationNetwork}. Бажаєте, щоб ми провели вас через цей процес?", - "unstakeWarning": "Перед тим, як ви зможете забрати свій %{symbol}, у вас є період очікування %{cooldownPeriod}. Після закінчення цього часу ви зможете забрати свою не застейкану суму.", + "bridgeCta": "Ви вибрали %{assetSymbol} у мережі %{originNetwork}, але для стейкінгу вам потрібен %{assetSymbol} у мережі %{destinationNetwork}. Ми можемо допомогти вам перемістити кошти через бридж до %{destinationNetwork}. Бажаєте, щоб ми провели вас через цей процес?", + "unstakeWarning": "Перш ніж ви зможете отримати ваш %{symbol}, необхідно зачекати %{cooldownPeriod} (період охолодження). Після закінчення цього часу ви зможете отримати знята зі стейкінгу суму.", "tooltips": { "stakeAmount": "Це сума FOX, яку ви поставите на кін", "unstakeAmount": "Це кількість FOX, яку ви знімете зі стейкінгу", @@ -2555,8 +2555,8 @@ "stakePending": "Стейкінг %{amount} %{symbol}...", "changeAddressPending": "Зміна адреси винагороди RFOX на %{newAddress}", "changeAddressSuccess": "Змінено адресу винагороди RFOX на %{newAddress}.", - "unstakePending": "Запит на зняття %{amount} %{symbol}", - "unstakeSuccess": "Після закінчення %{cooldownPeriod} ви зможете отримати свої %{amount} %{symbol}", + "unstakePending": "Запит на виведення %{amount} %{symbol}", + "unstakeSuccess": "Після закінчення %{cooldownPeriod} ви зможете отримати ваш %{amount} %{symbol}", "currentRewardAddress": "Поточна адреса для отримання винагороди", "newRewardAddress": "Нова адреса для отримання винагороди", "rewardCycleExplainer": "Ця інформація буде оновлена для наступного циклу нагородження.", @@ -2589,13 +2589,16 @@ "body": "rFOX - це термін, який використовується для опису переваг і винагород, які ви отримуєте, коли ви стейкаєте свої токени FOX на Arbitrum. Наразі ви блокуєте і розблоковуєте токени vanilla FOX (на Arbitrum) для стейкінгу." }, "why": { - "title": "Чому стейкати ваш FOX?" + "title": "Чому стейкати ваш FOX?", + "body": "Стейкінг ваших FOX дозволяє вам отримувати регулярні виплати в USDC з казни DAO, забезпечуючи стабільний потік пасивного доходу в USDC за кожну епоху. Крім того, частина доходів DAO буде спрямована на зменшення загальної пропозиції FOX через спалювання токенів. Процес стейкінгу передбачає мінімальний 28-денний період зняття зі стейкінгу, що заохочує відданість та стабільність у спільноті." }, "stake": { - "title": "Як я можу стейкати мої FOX?" + "title": "Як я можу стейкати мої FOX?", + "body": "Щоб застейкати FOX, ви використовуєте інтерфейс стейкінгу для блокування ваших токенів FOX у контракті стейкінгу. Після стейкінгу ви починаєте заробляти винагороди USDC за кожен блок як частину переваг стейкінгу." }, "unstake": { - "title": "Що станеться коли я виведу зі стейкінгу?" + "title": "Що станеться коли я виведу зі стейкінгу?", + "body": "Коли ви вирішите зняти зі стейкінгу, існує мінімальний 28-денний період очікування. Протягом цього часу ваш FOX залишається заблокованим, і ви перестаєте отримувати емісії USDC. Після завершення терміну зняття зі стейкінгу ви можете розблокувати та отримати свої звичайні токени FOX." }, "cooldown": { "title": "Як довго триває період зняття з стейкінгу?", @@ -2606,7 +2609,8 @@ "body": "Так, ви можете виконати декілька дій зі зняття стейкінгу. Кожна дія зі зняття стейкінгу матиме власний 28-денний період затишшя." }, "connect": { - "title": "як пов'язані між собою загальна сума зібраних комісій, загальна сума в стейкінгу FOX, пул монет та кількість спалених FOX?" + "title": "як пов'язані між собою загальна сума зібраних комісій, загальна сума в стейкінгу FOX, пул монет та кількість спалених FOX?", + "body": "Комісії, зібрані DAO, надходять у нативних активах від кожного свопера. Частина цього доходу конвертується та розподіляється між стейкерами FOX як винагороди, тоді як інша частина спрямовується на скорочення загальної пропозиції FOX через спалювання токенів. Загальна кількість застейканого FOX впливає на розподіл винагород, оскільки винагороди розподіляються пропорційно відповідно до обсягу застейканого FOX. Пул емісій представляє кількість FOX, доступного для винагород за стейкінг, а сума спалювання FOX — це частина FOX, придбаного та спаленого." } }, "totals": "Всього rFOX ", @@ -2639,7 +2643,7 @@ "claimConfirm": { "dustAmountTooltip": "Для ідентифікації вашої адреси в мережі THOR потрібна невелика кількість %{symbol}", "networkFeeTooltip": "Це комісія %{symbol} за обробку транзакції в блокчейні, це не комісія, яку стягує ShapeShift", - "missingFundsForGasAlert": "Недостатньо %{symbol}, вам потрібно щонайменше %{amount} %{symbol} для завершення транзакції. Ми рекомендуємо надсилати трохи більше коштів для покриття мінливих мережевих комісій.", + "missingFundsForGasAlert": "Недостатньо %{symbol}, вам потрібно щонайменше %{amount} %{symbol} для завершення транзакції. Рекомендуємо надіслати трохи більше, щоб покрити мінливі мережеві комісії.", "confirmTitle": "Підтвердити претензію", "networkFee": "Комісія мережі", "confirmAndClaim": "Претензія та Стейкінг", @@ -2675,10 +2679,10 @@ }, "claimPending": "Заявка на %{amount} %{symbol}...", "claimStatus": { - "pendingSubtitle": "Ми обробляємо вашу заяву на %{amount} %{symbol}", + "pendingSubtitle": "Отримання %{amount} %{symbol}", "goBack": "Повернутися", "successTitle": "Претензія успішна", - "successSubtitle": "Ви успішно подали заявку на отримання %{amount} TCY", + "successSubtitle": "Успішно отримано %{amount} TCY", "failedTitle": "Щось пішло не так.", "failedSubtitle": "Ваша заявка не пройшла. Будь ласка, спробуйте ще раз." } @@ -2686,7 +2690,7 @@ "markets": { "recommended": "Рекомендовано", "watchlist": "Мій список спостереження", - "marketsBody": "Відкрийте для себе найцікавіші криптовалюти. Відстежуйте лідерів, нові токени, можливості DeFi та багато іншого. Зберігайте, діліться та обмінюйте свої улюблені.", + "marketsBody": "Відкривайте найцікавіші криптовалюти. Відстежуйте лідерів зростання, нові токени, можливості DeFi та багато іншого. Зберігайте, діліться та торгуйте улюбленими активами.", "watchlistEmpty": { "emptyTitle": "Немає активів у списку спостереження", "emptyBody": "Схоже, ви ще не підписали жодного активу. Почніть додавати активи до свого списку спостереження зараз, щоб відстежувати їх!" @@ -2696,13 +2700,13 @@ "emptyBodySwapper": "За поточним фільтром активів не знайдено.", "categories": { "oneClickDefiAssets": { - "title": "DeFi-активи в один клік", + "title": "DeFi активи в один клік", "filterTitle": "Високоприбуткові токени", "subtitle": "Відкрийте для себе дохідність, яка підходить саме вам! Легко переключайтеся між пулами, сховищами, варіантами кредитування та LSD за допомогою порталів." }, "thorchainDefi": { "title": "THORChain DeFi", - "subtitle": "Заробляйте нативну прибутковість ваших активів за допомогою THORCHain Savers." + "subtitle": "Заробляйте нативний дохід на ваших активах з THORChain Savers." }, "trending": { "title": "Тренди", @@ -2742,14 +2746,14 @@ }, "foxFarming": { "title": "Фармінг+ FOX ", - "description": "Набридло переносити свій %{rewardAssetSymbol} з ферми на ферму? Просто закладіть свій %{assetSymbol} і заробляйте %{rewardAssetSymbol} назавжди.", + "description": "Втомилися переміщати ваш %{rewardAssetSymbol} між фармами? Просто застейкайте ваш %{assetSymbol} і отримуйте %{rewardAssetSymbol} безстроково.", "totalClaimableRewards": "Загальна сума винагород, що підлягають клейму", "totalStakingValue": "Загальна вартість стейкінгу", "nextEpoch": "Наступна Епоха" }, "governance": { "title": "Управління", - "description": "Приєднуйтесь до нас на форумі і сформуйте майбутнє DAO.", + "description": "Приєднуйтесь до нас на форумі та формуйте майбутнє DAO.", "totalVotingPower": "Загальна кількість голосів", "noActiveProposals": "Активних пропозицій немає", "noClosedProposals": "Закриті пропозиції відсутні" @@ -2776,7 +2780,7 @@ "getFeeData": "Не вдалося оцінити мережеві комісії.", "getPublicKey": "Не вдалося отримати публічний ключ від гаманця.", "getUtxos": "Не вдалося дістати utxos.", - "getValidator": "Не вдалося отримати валідатора.", + "getValidator": "Не вдалося отримати валідатор.", "gridplus": { "wrongSafeCard": "Вставлено неправильну картку SafeCard. Вставте правильну картку SafeCard і спробуйте ще раз.", "removeSafeCard": "Вийміть вставлену картку SafeCard, щоб отримати доступ до внутрішнього гаманця GridPlus." @@ -2816,43 +2820,51 @@ "startSwapping": "Почніть обмін" }, "swap": { - "processing": "Ваш обмін %{sellAmountAndSymbol} на %{buyAmountAndSymbol} обробляється.", + "processing": "Ваш своп з %{sellAmountAndSymbol} на %{buyAmountAndSymbol} обробляється.", "complete": "Ваш обмін %{sellAmountAndSymbol} на %{buyAmountAndSymbol} завершено.", - "failed": "Ваш обмін %{sellAmountAndSymbol} на %{buyAmountAndSymbol} завершився невдало.", + "failed": "Ваш своп з %{sellAmountAndSymbol} на %{buyAmountAndSymbol} не вдався.", "streaming": "Ваш обмін %{sellAmountAndSymbol} на %{buyAmountAndSymbol} відбувається в потоковому режимі.", - "awaitingApproval": "Ваша операція обміну %{sellAmountAndSymbol} на %{buyAmountAndSymbol} очікує на затвердження.", - "awaitingSwap": "Ваша операція обміну %{sellAmountAndSymbol} на %{buyAmountAndSymbol} очікує на виконання." + "awaitingApproval": "Ваш своп з %{sellAmountAndSymbol} на %{buyAmountAndSymbol} очікує на схвалення.", + "awaitingSwap": "Ваш своп з %{sellAmountAndSymbol} на %{buyAmountAndSymbol} очікує виконання." }, "thorchainLp": { - "pairAssets": "%{asset1} і %{asset2}", + "pairAssets": "%{asset1} та %{asset2}", "withdraw": { - "processing": "Ваше зняття %{assetAmountsAndSymbols} з пулу %{poolName} обробляється.", - "complete": "Виведення %{assetAmountsAndSymbols} з пулу %{poolName} завершено." + "processing": "Ваше виведення %{assetAmountsAndSymbols} з пулу %{poolName} обробляється.", + "complete": "Ваше виведення %{assetAmountsAndSymbols} з пулу %{poolName} завершено." }, "deposit": { "processing": "Ваш депозит у розмірі %{amount} %{symbol} до пулу %{poolName} обробляється.", - "complete": "Ваш депозит у розмірі %{amount} %{symbol} до пулу %{poolName} завершено." + "complete": "Ваше поповнення %{amount} %{symbol} до пулу %{poolName} завершено." } }, "deposit": { "pending": "Ваш депозит у розмірі %{amount} %{symbol} обробляється.", - "complete": "Ваш депозит у розмірі %{amount} %{symbol} завершено." + "complete": "Ваш депозит у розмірі %{amount} %{symbol} завершено.", + "failed": "Не вдалося внести %{amount} %{symbol}." }, "withdrawal": { "pending": "Ваш запит на виведення %{amount} %{symbol} обробляється.", - "complete": "Ваше виведення %{amount} %{symbol} завершено." + "complete": "Ваше виведення %{amount} %{symbol} завершено.", + "failed": "Ваше виведення %{amount} %{symbol} не вдалося." }, "claim": { "pending": "Ваша вимога на суму %{amount} %{symbol} обробляється.", - "complete": "Ваша вимога на суму %{amount} %{symbol} виконана." + "complete": "Ваша вимога на суму %{amount} %{symbol} виконана.", + "failed": "Ваш запит на отримання %{amount} %{symbol} не вдався." + }, + "yield": { + "unstakeAvailableIn": "Зняття зі стейкінгу вашого %{symbol} стане доступним через %{duration}.", + "unstakeReady": "Ваше зняття зі стейкінгу %{symbol} готове до отримання.", + "unstakeClaimed": "Ваше зняття зі стейкінгу %{symbol} було отримано." }, "bridge": { - "processing": "Ваш переказ з %{sellAmountAndSymbol}.%{sellChainShortName} на %{buyAmountAndSymbol}.%{buyChainShortName} обробляється.", - "complete": "Ваш переказ з %{sellAmountAndSymbol}.%{sellChainShortName} на %{buyAmountAndSymbol}.%{buyChainShortName} завершено.", + "processing": "Ваш бридж з %{sellAmountAndSymbol}.%{sellChainShortName} на %{buyAmountAndSymbol}.%{buyChainShortName} обробляється.", + "complete": "Ваш бридж з %{sellAmountAndSymbol}.%{sellChainShortName} на %{buyAmountAndSymbol}.%{buyChainShortName} завершено.", "initiated": "Ваш міст від %{sellAmountAndSymbol} до %{buyAmountAndSymbol} було ініційовано.", "pendingWithdraw": "Ваш вивід %{amountAndSymbol} буде доступний %{timeText}.", "claimAvailable": "Ваш міст на суму %{amountAndSymbol} доступний для отримання.", - "failed": "Ваш міст %{sellAmountAndSymbol}.%{sellChainShortName} до %{buyAmountAndSymbol}.%{buyChainShortName} не вдався.", + "failed": "Ваш бридж з %{sellAmountAndSymbol}.%{sellChainShortName} на %{buyAmountAndSymbol}.%{buyChainShortName} не вдався.", "transactionInitiated": "Транзакція ініційована", "claimWithdraw": "Заклеймити вивід", "withdrawTx": "Транзакція виводу", @@ -2861,28 +2873,28 @@ "limitOrder": { "placed": "Обмежити замовлення, розміщене на %{sellAmountAndSymbol} до %{buyAmountAndSymbol}", "complete": "Ваше замовлення на купівлю %{buyAmountAndSymbol} за %{sellAmountAndSymbol} успішно виконано.", - "cancelled": "Ваше замовлення на купівлю %{buyAmountAndSymbol} за %{sellAmountAndSymbol} було скасовано.", + "cancelled": "Ваш ордер на купівлю %{buyAmountAndSymbol} за %{sellAmountAndSymbol} скасовано.", "expired": "Ваше замовлення на покупку %{buyAmountAndSymbol} за %{sellAmountAndSymbol} закінчився." }, "rfox": { - "unstakeReady": "Ваше зняття зі стейкінгу %{amount} %{symbol} готове для клейму.", - "unstakeTxPending": "Ваше зняття зі стейкінгу %{amount} %{symbol} в процесі.", + "unstakeReady": "Зняття зі стейкінгу %{amount} %{symbol} готове до отримання.", + "unstakeTxPending": "Зняття зі стейкінгу %{amount} %{symbol} очікує на виконання.", "unstakeTxComplete": "Ваше зняття зі стейкінгу %{amount} %{symbol} готове." }, "tcy": { "stakePending": "Ваш cтейкінг %{amount} %{symbol} обробляється...", - "unstakePending": "Ваше зняття з стейкінгу %{amount} %{symbol} обробляється...", + "unstakePending": "Зняття зі стейкінгу %{amount} %{symbol} обробляється...", "stakeComplete": "Ваш стейкінг %{amount} %{symbol} завершено.", "unstakeComplete": "Ваше зняття зі стейкінгу %{amount} %{symbol} завершено.", "claimReady": "Ваша заява на отримання TCY у розмірі %{amount} %{symbol} готова.", - "claimTxPending": "Ваша заявка на TCY у розмірі %{amount} %{symbol} знаходиться на розгляді.", + "claimTxPending": "Ваша заявка TCY на %{amount} %{symbol} очікує на виконання.", "claimTxComplete": "Ваша заявка на TCY у розмірі %{amount} %{symbol} завершена." }, "approve": { "approvalTxPending": "Затвердження %{contractName} для використання %{amount} %{symbol}.", - "approvalTxComplete": "Затверджено %{contractName} для використання %{amount} %{symbol}." + "approvalTxComplete": "Схвалено %{contractName} для використання %{amount} %{symbol}." }, - "pendingTransactions": "%{count} На розгляді", + "pendingTransactions": "%{count} в очікуванні", "rewardDistribution": { "pending": { "description": "Ваша винагорода в розмірі %{amountAndSymbol} обробляється..." @@ -2895,8 +2907,7 @@ "yieldXYZ": { "pageTitle": "Дохідність", "pageSubtitle": "Відкривайте та керуйте можливостями отримання прибутку в декількох мережах", - "actions": { - }, + "actions": {}, "yield": "Прибутковість", "apy": "APY", "apr": "APR", @@ -2908,8 +2919,8 @@ "connectWallet": "Підключіть гаманець, щоб переглянути дохідність", "stats": "Статистика", "minStake": "Мінімальний Стейкінг", - "minDeposit": "Мінімальний Депозит", - "rewardSchedule": "Графік винагород", + "minDeposit": "Мін. депозит", + "rewardSchedule": "Розклад винагород", "staking": "Стейкінг...", "unstaking": "Зняття зі стейкінгу...", "depositing": "Внесення коштів...", @@ -2937,7 +2948,7 @@ "pending": "В очікуванні", "ready": "Готово", "bestReturn": "Найкращий прибуток", - "highestApy": "Найвища APY", + "highestApy": "Найвищий APY", "lowestApy": "Найнижчий APY", "highestTvl": "Найвищий TVL", "lowestTvl": "Найнижчий TVL", @@ -2988,6 +2999,7 @@ "providers": "Постачальники", "successStaked": "Ви успішно застейкали %{amount} %{symbol}", "successUnstaked": "Ви успішно зняли зі стейкінгу %{amount} %{symbol}", + "cooldownNotice": "Ваше виведення коштів буде доступне через %{cooldownDuration}.", "successDeposited": "Ви успішно внесли %{amount} %{symbol}", "successWithdrawn": "Ви успішно вивели %{amount} %{symbol}", "successClaim": "Ви успішно отримали %{amount} %{symbol}", @@ -3031,7 +3043,7 @@ "aboutProvider": "Про %{provider}", "visitWebsite": "Відвідати веб-сайт", "providerDescriptions": { - "morpho": "Morpho — це протокол грошового ринку та інфраструктури сховища, який пройшов численні аудити провідних компаній з безпеки, працює з 2022 року та пропонує винагороду за виявлення помилок у розмірі 2,5 млн доларів.", + "morpho": "Morpho — це протокол грошового ринку та інфраструктури сховищ, багаторазово перевірений провідними компаніями з безпеки, працює з 2022 року, з $2,5 млн у стимулах bug bounty.", "morpho-aave": "Morpho — це протокол грошового ринку та інфраструктури сховища, який пройшов численні аудити провідних компаній з безпеки, працює з 2022 року та пропонує винагороду за виявлення помилок у розмірі 2,5 млн доларів.", "morpho-compound": "Morpho — це протокол грошового ринку та інфраструктури сховища, який пройшов численні аудити провідних компаній з безпеки, працює з 2022 року та пропонує винагороду за виявлення помилок у розмірі 2,5 млн доларів.", "lido": "Lido — це протокол ліквідного стейкінгу, який дозволяє користувачам стейкати ETH, зберігаючи ліквідність за допомогою stETH. Протокол пройшов багаторазові аудити провідних компаній з безпеки, працює з 2020 року, а винагорода за виявлення багів становить 2 млн доларів.", @@ -3040,14 +3052,14 @@ "kamino": "Kamino — це набір інструментів Solana DeFi, що об'єднує кредитування, ліквідність та левередж в одній платформі. Запускає програму Immunefi з максимальною винагородою до 1,5 млн доларів.", "fluid": "Fluid — це рівень ліквідності, створений командою Instadapp, який об'єднує ринки кредитування, DEX, запозичень та стейблкоїнів в одну ефективну систему. Пройшов багаторазові аудити провідних компаній з безпеки, працює з 2024 року, з винагородою за виявлення багів у розмірі 0,5 млн доларів.", "venus": "Venus — це протокол для надання та отримання позик, орієнтований на BNB Chain. Наголошує на безпеці завдяки аудитам сторонніх організацій та постійній програмі винагороди за виявлення помилок.", - "gearbox": "Gearbox — це комбінований протокол, що дозволяє підключати кредитні рахунки до стратегій DeFi. Пройшов багаторазові аудити провідних компаній з безпеки, працює з 2021 року, з винагородою за виявлення багів у розмірі 0,2 млн доларів.", - "yearn": "Yearn — це децентралізований набір продуктів, що допомагає приватним особам, DAO та іншим протоколам отримувати дохід від своїх цифрових активів. Пройшов багаторазові аудити провідних компаній з безпеки, працює з 2020 року, з винагородою за виявлення багів у розмірі 0,2 млн доларів.", + "gearbox": "Gearbox — це компонований протокол кредитного плеча, що забезпечує кредитні рахунки для DeFi стратегій. Багаторазово перевірений провідними компаніями з безпеки, працює з 2021 року, з $0,2 млн у стимулах bug bounty.", + "yearn": "Yearn — децентралізований набір продуктів, що допомагає фізичним особам, DAO та іншим протоколам заробляти дохід на цифрових активах. Багаторазово перевірений провідними компаніями з безпеки, працює з 2020 року, з $0,2 млн у стимулах bug bounty.", "spark": "Spark — це децентралізований протокол кредитування, що працює на базі екосистеми Sky (раніше MakerDAO) і дозволяє користувачам позичати DAI та інші стейблкоіни за конкурентними ставками. Запускає програму Immunefi з максимальною винагородою до 5 млн доларів.", - "rocket-pool": "Rocket Pool — це децентралізований протокол ліквідного стейкінгу Ethereum, який випускає rETH. Пройшов багаторазові аудити провідних компаній з безпеки, працює з 2021 року, з винагородою за виявлення багів у розмірі 0,5 млн доларів.", + "rocket-pool": "Rocket Pool — децентралізований протокол рідкого стейкінгу Ethereum, що випускає rETH. Багаторазово перевірений провідними компаніями з безпеки, працює з 2021 року, з $0,5 млн у стимулах bug bounty.", "drift": "Drift — це децентралізована платформа для обміну та кредитування безстрокових контрактів, побудована на базі Solana. Запускає програму Immunefi з максимальною винагородою до 0,5 млн доларів." }, "otherYields": "Інші %{symbol} Прибутковості", - "availableToDeposit": "Доступно для депозиту", + "availableToDeposit": "Доступно для внесення", "availableToDepositTooltip": "Це сума %{symbol} у вашому гаманці, яку ви можете внести в цю можливість отримання доходу.", "getAsset": "Отримати %{symbol}", "manage": "Керувати", @@ -3094,11 +3106,11 @@ }, "perfProfiler": { "title": "Perf Profiler", - "export": "Експорт", + "export": "Експортувати", "reset": "Скинути", "disabledMessage": "Profiling вимкнено. Натисніть на піктограму ока, щоб увімкнути.", "toggleAria": "Перемикач profiler", - "collapseAria": "Скоротити", + "collapseAria": "Згорнути", "expandAria": "Розгорнути profiler", "enableProfiling": "Увімкнути profiling", "disableProfiling": "Вимкнути profiling", diff --git a/src/assets/translations/zh/main.json b/src/assets/translations/zh/main.json index 0436d6bbd65..bfde4d5590c 100644 --- a/src/assets/translations/zh/main.json +++ b/src/assets/translations/zh/main.json @@ -27,7 +27,7 @@ "continue": "继续", "approve": "授权", "approveToken": "授权代币", - "approveAmount": "授权数量", + "approveAmount": "授权金额", "approveTo": "授权给", "reset": "重置", "confirm": "确认", @@ -71,7 +71,7 @@ "preview": "预览", "incomplete": "不完整", "available": "可用的", - "or": "或者", + "or": "或", "somethingWentWrong": "出了点问题", "somethingWentWrongBody": "出了点问题", "accountError": "暂时无法获取以下链上的数据:", @@ -82,7 +82,7 @@ "happySuccess": "成功!", "transactionFailed": "交易失败", "transactionFailedBody": "交易失败", - "safeProposalQueued": "SAFE 提案已排队。已签署 %{currentConfirmations} 个(共 %{confirmationsRequired} 个)。", + "safeProposalQueued": "SAFE 提案已加入队列。%{currentConfirmations}/%{confirmationsRequired} 人已签名。", "submitFeedback": "提交反馈", "send": "发送", "receive": "接收", @@ -157,7 +157,7 @@ "chainHalted": "区块链已暂停", "poolDisabled": "池已禁用", "symmetric": "对称", - "asymmetric": "不对称 (%{assetSymbol})", + "asymmetric": "非对称 (%{assetSymbol})", "import": "导入", "accountsLoading": "正在加载帐户", "noAccounts": "没有符合所选过滤器的帐户。", @@ -206,18 +206,18 @@ "aiChat": "AI 聊天", "openChat": "打开聊天", "closeChat": "关闭聊天", - "emptyState": "有什么我可以帮您的?", + "emptyState": "今天有什么可以帮您的?", "placeholder": "输入消息...", "stop": "停止", "send": "发送", - "txStepProgress": "%{completedCount}/%{totalCount} complete", + "txStepProgress": "已完成 %{completedCount}/%{totalCount}", "agenticChatTools": { "send": { "title": "发送加密货币", "receivedFrom": "从 %{address} 接收", "steps": { "preparation": "准备发送交易中", - "send": "签署并发送交易" + "send": "签名并发送交易" }, "errors": { "prepareFailed": "无法准备发送交易", @@ -345,22 +345,22 @@ "marketCapRank": "市值排名", "volume24h": "24 小时交易量", "volMcap": "交易量/市值", - "about": "关于", + "about": "关于 %{symbol}", "noDescription": "此资产暂无描述。" }, "receive": { "title": "接收", - "receiveOn": "在 %{network} 上接收 %{symbol}", + "receiveOn": "接收 %{symbol}(%{network} 网络)", "copyAddress": "复制地址", "copied": "已复制!", - "warning": "仅向此地址发送与 %{network} 兼容的代币" + "warning": "请仅向此地址发送 %{network} 兼容的代币" }, "getLimitOrders": { "title": "限价订单", "openOrders": "%{count} 个待成交", "noOrders": "未找到限价订单", "status": { - "open": "待成交", + "open": "开放中", "fulfilled": "已成交", "cancelled": "已取消", "expired": "已过期", @@ -368,7 +368,7 @@ }, "sellLabel": "出售", "buyLabel": "购买", - "expiresLabel": "过期", + "expiresLabel": "到期时间", "view": "查看", "filledLabel": "已成交" }, @@ -453,12 +453,12 @@ } }, "rampPage": { - "buyTitle": "在几秒钟内购买加密货币", - "sellTitle": "在几秒钟内出售加密货币", - "buyBody": "使用信用卡、借记卡或银行账户购买比特币、以太币、USDT、USDC 或其他热门加密货币,无需 KYC。", + "buyTitle": "秒速购买加密货币 in Seconds", + "sellTitle": "秒速出售加密货币 in Seconds", + "buyBody": "使用信用卡、借记卡或银行账户。购买 Bitcoin、Ethereum、USDT、USDC 或其他顶级加密货币。提供无 KYC 服务商。", "sellBody": "使用信用卡、借记卡或银行账户出售比特币、以太币、USDT、USDC 或其他热门加密货币,无需 KYC。", "disclaimer": "*您可以直接使用加密货币换取现金并存入银行账户。", - "ctaTitle": "您还可以使用各种主流钱包,通过 ShapeShift 进行交易,赚取收益并在 %{chainCount} 条链上追踪您的加密货币资产", + "ctaTitle": "您还可以将 ShapeShift 与所有顶级钱包配合使用,进行交易、赚取收益并跨 %{chainCount} 条链追踪您的加密资产", "availableAssets": "可用资产" }, "updateToast": { @@ -498,7 +498,7 @@ }, "fiatRamps": { "title": "购买或出售加密货币", - "titleMessage": "你可以使用以下方法%{action} %{asset}:", + "titleMessage": "您可以使用以下方式 %{action} %{asset}:", "banxa": "Banxa", "mtPelerin": "Mt Pelerin", "onRamper": "OnRamper", @@ -519,7 +519,7 @@ "availableProviders": "可用的提供商", "noProvidersAvailable": "没有可用的提供商", "noProvidersBody": "看起来我们还没有该资产的任何提供商。", - "notSupported": "%{asset} 不被 %{wallet} 支持 ", + "notSupported": "%{asset} 不受 %{wallet} 钱包支持", "previewPurchase": "预览购买", "previewSale": "预览出售" }, @@ -538,14 +538,14 @@ "privacyPolicy": "隐私政策", "connectNewWallet": "连接新钱包", "getANewWallet": "获取一个新钱包", - "alreadyHaveWallet": "我已经有一个钱包" + "alreadyHaveWallet": "我已有钱包" }, "connectWallet": { "menu": { "switchWallet": "切换钱包", "disconnect": "断开", "disconnected": "(已断开)", - "locked": "(已锁定)", + "locked": "(已锁定)", "reconnectWallet": "重新连接钱包", "walletNotConnected": "您的钱包目前未连接,这将影响交易。", "connecting": "正在连接..." @@ -563,10 +563,10 @@ "risks": "有风险吗?" }, "bodies": { - "rateFluctuationInfo": "您赚取的 %{assetName} 的比率,即年度回报率 (APR),通常在 7% - 20% 之间波动。", + "rateFluctuationInfo": "您赚取的 %{assetName} 年化收益率(APR)通常在 7%-20% 之间波动。", "amountStakingInfo": "你可以质押任意数量的 %{assetName},并且他们将立即开始赚取奖励。", "withdrawInfo": "你可以随时提取你的奖励,这需要大约 0.01 美元左右的手续费。", - "unbondingInfo": "当你取消质押代币时,它们将保持锁定状态 %{unbondingDays} 天,在此期间它们不会获得奖励。 %{unbondingDays} 天后,你的 %{assetName} 将返回到你的主钱包。", + "unbondingInfo": "取消质押您的代币后,它们将锁定 %{unbondingDays} 天,期间不会产生奖励。%{unbondingDays} 天后,您的 %{assetName} 将返回您的主钱包。", "slashingInfo": "质押是通过验证器完成的。这种情况非常罕见,但如果你质押的验证器因允许虚假或不正确的交易而发生混乱,你可能会损失部分资产。", "partnerInfo": "我们通过与信誉良好的验证者合作来降低这种风险,该验证者拥有安全、可靠且经过审计的基础设施。" } @@ -602,9 +602,9 @@ "claimYour": "认领你的 %{opportunity}" }, "saversVaults": { - "description": "通过 THORChain 储户金库 赚取你的 %{asset} 收益。无锁定时间,奖励自动累积。 THORChain 上的收益来兑换费用和区块奖励。单面收益率上限为流动性提供者双面收益率的一半。", - "runePoolDescription": "RUNEPool 可让你通过与他人共享 %{asset} 来赚取更多 %{asset}。你不必选择特定的池子,每个人都可以分享整体表现。", - "runePoolOverviewDescription": "RUNEPool 通过将 RUNE 存入 THORChain 中所有支持 POL 的流动性池来优化 RUNE 的使用。通过在这些池中汇集 RUNE,参与者可以获得综合 APY,但面临总无常损失的风险。用户无需选择单个池,而是从整体表现中受益,有效地投资于 RUNE 指数和所有支持 THORChain POL 的资产。这简化了流动性提供并降低了个人风险。", + "description": "通过 THORChain 储户金库为您的 %{asset} 赚取收益。无锁定期,奖励自动累积。THORChain 上的收益来自兑换手续费和区块奖励。单边收益上限为流动性提供者双边收益的一半。", + "runePoolDescription": "RUNEPool 让您通过与他人共同汇集 %{asset} 来赚取更多 %{asset}。无需选择特定的流动资金池,所有人共享整体收益。", + "runePoolOverviewDescription": "RUNEPool 通过将 RUNE 存入 THORChain 中所有启用 POL 的流动资金池来优化 RUNE 的使用。通过在这些流动资金池中汇集 RUNE,参与者可赚取综合 APY,但同时面临整体无常损失风险。用户无需选择单个流动资金池,而是从整体表现中获益,有效投资于 RUNE 指数及所有 THORChain POL 支持的资产。这简化了流动性提供并降低了个人风险。", "vaultCap": "金库容量", "vaultCapTooltip": "该金库当前的最大容量", "haltedDepositTitle": "充值暂时停止。", @@ -621,16 +621,16 @@ "introducingSaversVaults": "介绍储户金库", "introducingRunePool": "介绍 RUNEPool", "risksBody": { - "vaults": "参考 这篇文章 以了解与储户金库相关的风险。", - "runePool": "参考 这篇文章 以了解与 RUNEPool 相关的风险。" + "vaults": "请参阅本文了解储户金库相关风险。", + "runePool": "请参阅本文了解 RUNEPool 相关风险。" }, "timeToBreakEven": { "title": "收支平衡的时候", "tooltip": "预计收益能支付手续费的时间" }, "cannotDepositWhilePendingTx": "交易待处理时无法充值", - "cannotWithdrawWhilePendingTx": "交易待处理时无法提现", - "agreeRunePool": "我知道 RUNEPool 有 30 天的最低锁定期,并且存在较高的无常损失风险。" + "cannotWithdrawWhilePendingTx": "有待处理的交易时无法提取", + "agreeRunePool": "我了解 RUNEPool 有 30 天最短锁定期,且无常损失风险较高。" } }, "memoNote": { @@ -680,9 +680,9 @@ }, "withdraw": { "info": { - "title": "提现信息", + "title": "提取信息", "description": "输入你想要提取的 %{asset} 数量。", - "yieldyDescription": "输入你想要提取的 %{asset} 数量。后续提现将合并并重置提现时间。", + "yieldyDescription": "输入您想提取的 %{asset} 数量。后续提取将合并处理并重置提取计时。", "farmingExpiredDescription": "本次收益挖矿奖励合同已结束。你必须提取全部余额。", "rewardsInfo": "你将接收的奖励" } @@ -722,7 +722,7 @@ "tcy": "TCY", "foxEcosystem": "FOX 生态系统", "ecosystem": "生态系统", - "markets": "市价", + "markets": "市场", "tokens": "代币", "swap": "交换", "yields": "收益", @@ -765,7 +765,7 @@ "common": "交易", "confirmed": "已确认", "pending": "待处理", - "failed": "失败的", + "failed": "失败", "swap": "兑换", "amount": "数量", "emptyMessage": "你的 %{status} 交易将显示在此处。", @@ -801,7 +801,7 @@ "revoke": "撤销", "revokeSymbol": "撤销 %{symbol} 的授权", "amountUnavailable": "不可用", - "withdraw": "提现", + "withdraw": "提取", "receive": "接收" }, "yearn": { @@ -823,7 +823,7 @@ }, "thorchain": { "deposit": "充值", - "depositRefund": "充值退款", + "depositRefund": "存入退款", "depositRefundNative": "充值 + 退款", "loanOpen": "借贷开放", "loanOpenOut": "收到贷款", @@ -917,7 +917,7 @@ "assetAddress": "%{asset} 地址", "verifyAsset": "验证 %{asset}", "verifyAddressMessage": "在继续之前确保您的地址正确。", - "slippageInfo": "如果价格不利变化超过此百分比,您的交易将会回滚。", + "slippageInfo": "如果价格变动超过此百分比,您的交易将回滚。", "allowanceTooltip": "授权智能合约代表您使用的数量。", "searchingRate": "获取费率中...", "noRateAvailable": "没有费率可用。", @@ -956,7 +956,7 @@ "youGet": "获得", "tradeTo": "交易成", "expand": "展开", - "minerFee": "矿工费用", + "minerFee": "矿工费", "protocolFee": "协议费用", "protocol": "协议", "tradeFeeSource": "%{tradeFeeSource} 费用", @@ -972,7 +972,7 @@ "noQuotesAvailableDescription": "目前未找到可用的报价。请尝试选择另一对。", "availableQuotes": "可用报价", "unavailableSwappers": "不可用的交换者", - "unlimited": "无限的", + "unlimited": "无限额", "swapsFailed": "%{failedSwaps} 兑换失败", "exact": "精确的", "free": "免费", @@ -985,7 +985,7 @@ "changeAddress": "退款地址", "changeAddressExplainer": "在基于 UTXO 的网络上发送加密货币时,交易中未使用的余额将会通过此地址返回给您。", "depositAddress": "充值地址", - "depositAddressExplainer": "这是协议用于处理资金的地址。您的硬件钱包会显示该地址供您验证。", + "depositAddressExplainer": "这是您的资金将被发送进行处理的协议地址。您的硬件钱包将显示此地址以供验证。", "customReceiveAddress": "自定义接收地址", "customReceiveAddressDescription": "为此交易输入一个自定义接收地址", "thisIsYourCustomReceiveAddress": "这是您的自定义接收地址", @@ -994,7 +994,7 @@ "tooltip": { "continueSwapping": "继续交换以查看最终详情", "noRateAvailable": "这通常是由于交易对的流动性非常有限或没有流动性。", - "minerFee": "这是在区块链上处理交易的费用,这不是 ShapeShift 收取的费用。", + "minerFee": "这是在区块链上处理交易的费用,不是 ShapeShift 收取的费用。", "protocolFee": "交易费用是选择的协议收取的,不是 ShapeShift 收取的", "inputOutputDifference": "输入和输出数量的美元价值之间的预计差异。", "slippageWithAmount": "如果价格变动导致您收到的数量少于 %{amount},交易将会回滚。这是保证您收到的最低数量。", @@ -1008,13 +1008,13 @@ }, "rateExpired": { "title": "新费率", - "body": "您之前的交换费率已过期。我们已获取最新费率并更新了您的报价数量。请在确认交换前查看最新详情。", + "body": "您之前的兑换价格已过期。我们已获取新价格并更新了您的报价金额。请在确认兑换前查看最新详情。", "cta": "好的,明白了" } }, "permit2Allowance": { - "title": "Permit2 合约额度", - "tooltip": "此交易使用 Permit2,需要进行一次性授权来授予 Permit2 合约无限额度。完成该初始设置后,您可以通过签署无需 gas 的消息,向任何支持 Permit2 的协议授权 5 分钟的临时额度来进行交易。" + "title": "Permit2 合约授权额度", + "tooltip": "此交易使用 Permit2,需要一次性授权以向 Permit2 合约授予无限额度。完成初始设置后,您可以通过签名免 Gas 的消息来授权任何支持 Permit2 协议的交易,每次消息授予 5 分钟临时授权额度。" }, "permit2Eip712": { "title": "允许代币转移", @@ -1028,7 +1028,7 @@ "sellAmountDoesNotCoverFee": "卖出数量低于手续费", "insufficientFunds": "矿工费及金额数量不足", "transactionRejected": "用户已拒绝交易", - "insufficientFundsForProtocolFee": "没有足够的 %{symbol} 来支付%{chainName} 上的费用", + "insufficientFundsForProtocolFee": "%{symbol} 余额不足(%{chainName}),无法支付费用", "unsupportedTradePair": "不支持的交易对", "noRouteFound": "没有找到该交易对和数量的路径", "quoteExpired": "报价已过期,请重试。", @@ -1070,28 +1070,28 @@ "summary": "交易概览", "estimatedCompletionTime": "预计完成时间", "transactionSuccessful": "交易成功,等待确认中", - "thorchainSwapperVolatilityAcknowledgementMessage": "THORCHain 协议正在经历波动,请格外小心,并考虑选择其他可用路径。", + "thorchainSwapperVolatilityAcknowledgementMessage": "THORChain 协议正在经历波动。请格外谨慎操作,并考虑其他可用路由。", "temp": { "tradeSuccess": "交易完成" }, "hopTitle": { "swap": "通过 %{swapperName} 交换", - "swapEta": "在 ~%{eta} 内通过 %{swapperName} 进行交换" + "swapEta": "通过 %{swapperName} 兑换,预计 ~%{eta}" }, "transactionTitle": { "bridge": "通过 %{swapperName} 从 %{sellChainName} 交换到 %{buyChainName} ", - "swap": "通过 %{swapperName} 在 %{sellChainName} 上进行兑换" + "swap": "在 %{sellChainName} 上通过 %{swapperName} 兑换" }, "approvalTitle": "代币额度授权", "resetTitle": "代币额度重置", "fiatAmountOnChain": "%{chainName} 上的 %{amountFiatFormatted}", "quote": { - "cantSetSlippage": "我们无法为 %{swapperName} 设置自定义滑点 (%{userSlippageFormatted})", + "cantSetSlippage": "无法为 %{userSlippageFormatted} 的自定义滑点设置 %{swapperName}", "gas": "完成此兑换交易所需的 gas。", "slippage": "这是此报价的滑点。", "timeEstimate": "这是此次兑换的预计完成时间。" }, - "awaitingPermit2Approval": "代币转移中", + "awaitingPermit2Approval": "等待代币转账", "awaitingSwap": "通过 %{swapperName} 进行交换中", "awaitingApproval": "授权中", "awaitingAllowanceReset": "额度重置中", @@ -1132,12 +1132,12 @@ "noOpenOrders": "尚无未结订单。", "noHistoricalOrders": "尚无历史订单。", "limitPriceIsPercentLowerThanMarket": "限价低于市价 %{percent}%", - "highCowFeeImpact": "CoW 费用为您出售数量 (%{cryptoImpact} %{sellAssetSymbol}) 的 %{percentage}% 。您的订单可能无法执行。", + "highCowFeeImpact": "CoW 费用占您卖出金额的 %{percentage}%(%{cryptoImpact} %{sellAssetSymbol})。您的订单可能无法执行。", "awaitingOrderPlacement": "在 %{swapperName} 上提交订单中", "awaitingAllowanceApproval": "额度授权中", "awaitingAllowanceReset": "额度重置中", "orderPlacement": "在 %{swapperName} 上下订单", - "explanation": "当 %{assetSymbol} 的价格达到 %{limitPrice},您的限价订单将自动出售 %{sellAmount},确保您至少收到 %{receiveAmount}。", + "explanation": "当 %{assetSymbol} 价格达到 %{limitPrice} 时,您的限价订单将自动卖出 %{sellAmount},确保您至少收到 %{receiveAmount}。", "sellBuy": "出售 → 购买", "limitExecution": "限价/执行", "statusHead": "状态", @@ -1179,7 +1179,7 @@ "loadingOrderList": "正在加载您的限价订单...", "orderCard": { "warning": { - "insufficientBalance": "您的钱包在 %{chainName} 上的 %{symbol} 余额不足以执行此订单。此订单仍然有效,当您在 %{chainName} 上充值 %{symbol} 余额后,将能够执行此订单。", + "insufficientBalance": "您的钱包目前 %{symbol} 余额不足(%{chainName}),无法执行此订单。订单仍处于开放状态,当您补充 %{symbol} 余额(%{chainName})后即可执行。", "insufficientAllowance": "此订单需要授权 %{chainName} 上 %{symbol} 的额外额度,以便 CoW Swap 执行此订单。此订单仍然有效,在您完成额度授权后,将能够执行此订单。" } }, @@ -1257,7 +1257,7 @@ }, "disconnect": { "header": "断开 KeepKey 设备", - "body": "很不幸,在恢复/设置您的 KeepKey 设备时发生错误。请断开并重新连接您的设备,然后尝试再次设置您的 KeepKey 设备。如果问题仍然存在,请联系 KeepKey 寻求支持。" + "body": "抱歉,恢复/设置您的 KeepKey 设备时发生错误。请断开并重新连接您的设备,然后重试设置 KeepKey 设备。如问题持续,请联系 KeepKey 支持。" } }, "shapeShift": { @@ -1292,7 +1292,7 @@ "wordNumber": "第 #%{number} 个单词", "info": { "title": "您的秘密恢复短语", - "description": "写下这 12 个单词并安全地离线存储。这个 12 个单词的短语用于恢复您的钱包私钥。", + "description": "写下这 12 个单词并安全地离线存储。这 12 个单词的短语用于恢复您的钱包私钥。", "warning": "注意:如果您丢失了秘密恢复短语,ShapeShift 无法帮助您恢复钱包,您的资金将永远丢失。" }, "success": { @@ -1306,7 +1306,7 @@ }, "skip": { "title": "跳过此步骤?", - "description": "跳过备份意味着如果您失去对该设备的访问权限,您将无法恢复您的钱包。", + "description": "跳过备份意味着如果您失去对设备的访问权限,将无法恢复您的钱包。", "confirmCta": "是的,我已经保存了我的助记词" } } @@ -1347,7 +1347,7 @@ "generic": "发生了错误", "notEnoughNativeToken": "没有足够的 %{asset} 来支付 gas", "transactionRejected": "用户已拒绝交易", - "qrPermissions": "此功能需要相机访问权限才能工作。请修改你的浏览器设置。", + "qrPermissions": "此功能需要摄像头访问权限才能运行。请修改您的浏览器设置。", "qrDangerousEthUrl": "不支持包含合约地址的二维码。请手动粘贴目标地址。", "noAccountsOnChain": "没有在 %{chain} 上的帐户" }, @@ -1423,7 +1423,7 @@ "withdrawType": "提现类型", "instant": "立即", "delayed": "7 至 14 天", - "fee": "%{fee}% %{symbol} 费用", + "fee": "%{fee}% %{symbol} 手续费", "noFee": "没有 %{symbol} 费用", "withdrawFee": "提现时将收取单独的手续费。", "notEnoughGas": "没有足够的 %{assetSymbol} 来支付 gas", @@ -1435,7 +1435,7 @@ } }, "approve": { - "header": "允许 %{spenderName} 使用你的 %{asset}", + "header": "允许 %{spenderName} 使用您的 %{asset}", "resetHeader": "重置 %{spenderName} 对 %{asset} 的额度", "body": "需要你的授权才能使用你的 %{asset}", "learnMore": "为什么我需要这样做?", @@ -1462,9 +1462,9 @@ "withdrawInstantTime": "立即", "withdrawDelayedTime": "7 至 14 天", "xDays": "%{unbondingDays} 天", - "estimatedGas": "预计 gas 费用", + "estimatedGas": "预估 Gas 费", "notEnoughGas": "没有足够的 %{assetSymbol} 来支付 gas", - "missingFundsForGas": "资金不足,你还需要更多的 %{cryptoAmountHuman} %{assetSymbol} 才能完成交易", + "missingFundsForGas": "余额不足,您还需要 %{cryptoAmountHuman} %{assetSymbol} 才能完成交易", "signBroadcast": "签名 & 广播", "cancel": "取消" }, @@ -1733,7 +1733,7 @@ }, "failure": { "header": "无法连接到 Ledger", - "body": "我们无法检测到您的 Ledger,但您可以以只读模式连接。" + "body": "我们未能检测到您的 Ledger,但您可以以只读模式连接。" }, "readOnly": { "button": "以只读模式连接" @@ -1817,10 +1817,10 @@ "warningExperimental": "ShapeShift 多链快照是一项全新的实验性功能,“按原样”提供", "warningBackup": "请确保您已备份您的 MetaMask 助记词。您通过此快照发送到非 EVM 链的任何资金将被发送到您在 MetaMask 中设置的默认账户。", "agreeIntro": "在继续之前,请阅读以下内容:", - "agreeItem1": "硬件钱包 受支持", + "agreeItem1": "硬件钱包受支持", "agreeItem2": "只有 MetaMask 中的帐户 #0 支持 ShapeShift 多链快照提供的额外链", - "agreeItem3": "要使用 MetaMask 提供的现有以太坊链,您必须在 MetaMask 中将帐户 #0 连接到 ShapeShift", - "agreeItem4": "启用 ShapeShift 多链快照即表示您承认自行承担使用风险。", + "agreeItem3": "要使用 MetaMask 提供的现有 Ethereum 链,您必须在 MetaMask 中将账户 #0 连接到 ShapeShift", + "agreeItem4": "通过启用 ShapeShift Multichain Snap,您确认自行承担使用风险", "readAndUnderstood": "我已阅读并理解", "seedBackedUp": "我已备份我的 MetaMask 助记词", "acceptInstall": "确认并安装", @@ -1850,21 +1850,21 @@ "load": { "error": { "delete": "抱歉,无法删除你的钱包。", - "noWallet": "你没有保存的钱包", + "noWallet": "您没有已保存的钱包", "pair": "无法配对您的钱包", "fetchingWallets": "获取钱包时发生错误。" }, - "header": "保存的钱包", + "header": "已保存的钱包", "forgetWallet": "忘记钱包", "confirmForget": "你确定要忘记 %{wallet} 吗?", - "confirmForgetBody": "如果您没有备份您的钱包,您将无法访问它。" + "confirmForgetBody": "如果您未备份钱包,将无法访问它。" }, "import": { "header": "导入你的钱包", "keystoreHeader": "导入您的密钥库钱包", "body": "以全小写输入或粘贴您的秘密恢复短语,单词之间用一个空格隔开,不包含逗号或数字。", "button": "下一步", - "secretRecoveryPhraseError": "输入您的秘密恢复短语,单词之间用一个空格隔开。省略任何逗号、回车或任何其他字符。", + "secretRecoveryPhraseError": "请输入您的秘密恢复短语,单词之间用单个空格分隔。不得包含逗号、换行符或任何其他额外字符。", "secretRecoveryPhraseRequired": "秘密恢复短语是必填项", "secretRecoveryPhraseTooShort": "秘密恢复短语太短", "dragAndDrop": "拖放或选择文件", @@ -1900,7 +1900,7 @@ "importKeystore": "从密钥库文件导入" }, "success": { - "encryptingWallet": "正在加密您的钱包... 如果您的浏览器要求将数据存储在持久存储中,请单击“允许”。", + "encryptingWallet": "正在加密您的钱包...如果您的浏览器请求在持久存储中存储数据,请点击「允许」。", "header": "钱包已连接", "success": "您现在可以关闭此窗口了。", "error": "连接你的钱包时出错" @@ -1951,7 +1951,7 @@ "multiChain": { "title": "同时支持多条链", "subTitle": "你永远不需要在钱包中切换链,它可以与每个链条无缝配合。", - "body": "当 ShapeShift 上添加新链时,你的 ShapeShift 钱包将自动支持它。" + "body": "通过单个钱包即可访问 Bitcoin、Ethereum、Solana 等众多链。在不同网络间无缝交易和管理您的资产。" }, "selfCustody": { "title": "你的 ShapeShift 钱包是自我保管的", @@ -1985,7 +1985,7 @@ "headerSecret": "秘密", "headerEnd": "恢复短语", "subHeader": "妥善保管您的秘密恢复短语至关重要。", - "description": "像对待您最宝贵的财产一样对待您的秘密恢复短语——始终确保其安全。密码管理器非常安全,但将其写下来会更安全。", + "description": "请像对待您最珍贵的财产一样对待您的秘密恢复短语——始终保持安全。密码管理器是良好的安全措施,将单词写下来则更好。", "bulletPoints": { "share": "不要与任何人分享它", "lose": "如果您丢失它,我们将无法恢复它" @@ -2001,13 +2001,13 @@ "button": "继续确认", "success": { "title": "成功加入!", - "description": "您已成功验证您的秘密恢复短语。请确保安全存储它——这是恢复您钱包的唯一方式。", + "description": "您已验证您的秘密恢复短语。请务必安全存储——这是恢复您钱包的唯一方式。", "viewWallet": "查看钱包" } }, "vultisig": { "errors": { - "connectFailure": "无法连接到 Vultisig 钱包" + "connectFailure": "无法连接 Vultisig 钱包" }, "connect": { "header": "配对 Vultisig", @@ -2090,7 +2090,7 @@ "selectChain": "为您即将创建的帐户选择一条链。", "requiresPriorTxHistory": "仅当现有帐户有先前的交易历史记录时,您才可以添加新帐户", "newAccountAdded": "新的 %{name} 帐户已添加", - "youCanNowUse": "你现在可以使用 %{name} 帐户 #%{accountNumber}", + "youCanNowUse": "您现在可以使用 %{name} 账户 #%{accountNumber}", "showAssets": "显示资产", "hideAssets": "隐藏资产", "viewAccount": "查看帐户", @@ -2100,8 +2100,8 @@ "menuTitle": "管理帐户", "manageAccounts": { "title": "管理帐户", - "description": "这些是您已连接的链和您已导入的帐户数量。", - "emptyList": "你尚未连接任何帐户。添加链即可开始。", + "description": "这些是您已连接的链及已导入账户的数量。", + "emptyList": "您尚未连接任何账户。添加一条链以开始使用。", "addChain": "添加一条链", "addAnotherChain": "添加另一条链" }, @@ -2172,7 +2172,7 @@ "minerFee": "矿工费", "date": "日期", "sentTo": "发送至 %{address}", - "receivedFrom": "从 %{address} 收到", + "receivedFrom": "收自 %{address}", "today": "今天", "yesterday": "昨天", "thisWeek": "本周", @@ -2301,7 +2301,7 @@ "totalCollateralDescription": "添加到借贷池的总抵押品", "estCollateralizationRatio": "预估抵押比例", "estCollateralizationRatioDescription": "目前抵押率固定为 200%,未来将根据市场情况,动态平衡抵押率的上限和下限。", - "collateralizationRatio": "抵押比例", + "collateralizationRatio": "抵押比率", "totalBorrowers": "借款人总数", "totalBorrowersDescription": "参与借款人数量", "myLoanInformation": "我的借贷信息", @@ -2345,7 +2345,7 @@ }, "borrowing": { "title": "借贷如何运作?", - "body": "在 THORChain 中借款涉及使用你存入的资产作为抵押品来获取贷款。贷款以美元(TOR)计价,可以多种 L1 资产形式收取。动态抵押比例,灵活借贷,无利息、爆仓之忧" + "body": "在 THORChain 借款涉及使用您已存入的资产作为抵押品来获取贷款。贷款以美元(TOR)计价,可以以各种 L1 资产形式收取。通过动态抵押率,您可以灵活借款而无需担心利息或清算。" }, "repayments": { "title": "还款如何运作?", @@ -2358,14 +2358,14 @@ "repaymentsDisabled": "还款功能暂时禁用。", "borrowingDisabled": "暂时禁止借贷。", "amountTooLowToReturnCollateral": "金额太低,无法退还抵押品", - "amountTooLowToReturnCollateralTooltip": "还款金额太低,无法退还你的抵押品。请尝试以更高的金额再试一次,或偿还部分金额(这不会退还你的抵押品,但会减少你的债务)。", + "amountTooLowToReturnCollateralTooltip": "还款金额太低,无法归还您的抵押品。请以更高金额重试,或还款部分金额(这不会归还您的抵押品,但会减少您的债务)。", "amountTooSmallUnknownMinimumTooltip": "你输入的还款金额太小。请输入更高的金额重试。", "repaymentUnavailableTooltip": "你目前无法偿还贷款。请等到还款锁定期结束。", "repaymentsHaltedTooltip": "还款暂时停止。请稍后重试。" }, "quote": { "collateral": "将作为你的贷款担保的总资产金额", - "debt": "根据你的新贷款金额,你所欠的债务总额", + "debt": "根据您的新贷款金额计算的总债务", "repaymentLock": "你可以偿还贷款的最短期限", "collateralizationRatio": "你的抵押品价值与贷款金额的比率", "feesPlusSlippage": "发生的总费用,包括 L1 费用、滑点费用和 THORChain 流动性费用" @@ -2404,13 +2404,13 @@ "removeLiquidity": "移除流动性", "initialPricesAndPoolShare": "初始价格和池份额", "pricePerAsset": "%{from} 每 %{to}", - "symAlert": "进入池后,你的 %{from} 将按照 50:50 的比例分为 %{to} 和 %{from}。", + "symAlert": "进入流动资金池后,您的 %{from} 将被拆分为 50:50 的 %{to} 和 %{from} 敞口。", "withdrawTypeNotAvailable": "此提款类型不适用于该池。", "incompletePositionDepositAlert": "此仓位尚未完成,请存入相应数量的 %{asset} 来完成此仓位。", "incompletePositionWithdrawAlert": "此仓位尚未完成,请通过移除 100% 流动性来取消仓位。你也可以通过“添加流动性”来完成仓位。", "unsupportedNetworkExplainer": "你的钱包未连接到 %{network}。请连接此链或切换到支持此网络的钱包。", - "unsupportedNetworksExplainer": "你的钱包未连接到 %{network1} 和 %{network2}。请连接此链或切换到支持这些网络的钱包。", - "depositsDisabled": "充值已禁用", + "unsupportedNetworksExplainer": "您的钱包未连接至 %{network1} 和 %{network2}。请连接此链或切换至支持这些网络的钱包。", + "depositsDisabled": "存款已禁用", "shareOfPool": "池份额", "totalLiquidity": "总流动性", "totalVolume": "总交易量", @@ -2519,7 +2519,7 @@ "staking": "rFOX 质押", "bridge": "桥接", "bridgeFunds": "桥接资金", - "bridgeSuccess": "你的资金已成功转入。你现在可以继续质押。", + "bridgeSuccess": "您的资金已成功跨链。您现在可以继续进行质押。", "stake": "质押", "unstake": "取消质押", "claim": "领取", @@ -2541,8 +2541,8 @@ "useWalletAddress": "使用钱包地址", "useCustomAddress": "使用自定义地址", "stakeWarning": "请注意:在质押您的 %{symbol} 时,会有 %{cooldownPeriod} 的锁定期。这意味着,如果您希望取消质押代币,在领取您的资金前,您需要等待 %{cooldownPeriod}。", - "bridgeCta": "你选择了 %{originNetwork} 上的 %{assetSymbol},但你需要 %{destinationNetwork} 上的 %{assetSymbol} 才能质押。我们可以帮助你将资金桥接到 %{destinationNetwork}。你希望我们指导你完成整个过程吗?", - "unstakeWarning": "在领取您的 %{symbol} 之前,需要经过 %{cooldownPeriod} 的冷却期。冷却期结束后,您将能够领取未质押的数量。", + "bridgeCta": "您选择了 %{assetSymbol}(%{originNetwork} 上),但质押需要 %{assetSymbol}(%{destinationNetwork} 上)。我们可以帮助您通过跨链桥将资金转至 %{destinationNetwork}。是否需要我们引导您完成该过程?", + "unstakeWarning": "在领取您的 %{symbol} 之前,冷却期为 %{cooldownPeriod}。时间到期后,您将能够领取已取消质押的金额。", "tooltips": { "stakeAmount": "这是你将质押的 FOX 数量", "unstakeAmount": "这是你将要赎回的 FOX 数量", @@ -2551,12 +2551,12 @@ "unstakePendingCooldown": "领取可用 %{cooldownPeriodHuman}", "cooldownComplete": "冷却完成 %{cooldownPeriodHuman}" }, - "stakeSuccess": "你已成功质押 %{amount} %{symbol}", + "stakeSuccess": "您已成功质押 %{amount} %{symbol}", "stakePending": "质押 %{amount} %{symbol}...", "changeAddressPending": "正在将 RFOX 奖励地址更改为 %{newAddress}", "changeAddressSuccess": "已将 RFOX 奖励地址更改为 %{newAddress}", - "unstakePending": "请求提取 %{amount} %{symbol}", - "unstakeSuccess": "一旦 %{cooldownPeriod} 过去,你将能够领取你的 %{amount} %{symbol}", + "unstakePending": "正在请求提取 %{amount} %{symbol}", + "unstakeSuccess": "%{cooldownPeriod} 到期后,您将能够领取 %{amount} %{symbol}", "currentRewardAddress": "当前奖励地址", "newRewardAddress": "新的奖励地址", "rewardCycleExplainer": "这将在下一个奖励周期更新。", @@ -2589,13 +2589,16 @@ "body": "rFOX 是一个术语,用于描述当您将 FOX 代币质押在 Arbitrum 上时所获得的利益和奖励。目前,您能够将原生 FOX(在 Arbitrum 上)代币进行锁仓和解锁,以获得质押奖励。" }, "why": { - "title": "为什么要质押你的 FOX?" + "title": "为什么要质押你的 FOX?", + "body": "质押您的 FOX 可让您从 DAO 国库中定期获得 USDC 收益,每个周期提供稳定的 USDC 被动收入来源。此外,DAO 收入的一部分将用于通过代币销毁来减少 FOX 总供应量。质押过程要求最短 28 天的取消质押期,鼓励社区成员保持承诺和稳定性。" }, "stake": { - "title": "我该如何质押我的 FOX?" + "title": "我该如何质押我的 FOX?", + "body": "要质押您的 FOX,请使用质押界面将您的 FOX 代币锁定到质押合约中。质押完成后,您将开始按区块获取 USDC 奖励,作为质押收益的一部分。" }, "unstake": { - "title": "当我取消质押时会发生什么?" + "title": "当我取消质押时会发生什么?", + "body": "当您决定取消质押时,须经过至少 28 天的取消质押期。在此期间,您的 FOX 保持锁定状态,您将停止接收 USDC 排放奖励。取消质押期结束后,您可以解锁并取回您的普通 FOX 代币。" }, "cooldown": { "title": "冷却期有多长?", @@ -2606,7 +2609,8 @@ "body": "是的,你可以有多个取消质押金额。每个取消质押操作都有各自的 28 天冷却期。" }, "connect": { - "title": "收取的总费用、FOX 总质押量、排放池和 FOX 销毁量有何关联?" + "title": "收取的总费用、FOX 总质押量、排放池和 FOX 销毁量有何关联?", + "body": "DAO 收取的费用以每个兑换者的原生资产计算。该收入的一部分被转换后作为奖励分配给 FOX 质押者,另一部分则通过代币销毁用于减少 FOX 的整体供应量。FOX 总质押量影响奖励的分配,奖励按质押的 FOX 数量按比例分配。排放池代表可用于质押奖励的 FOX 数量,FOX 销毁量则是被购买并销毁的 FOX 份额。" } }, "totals": "rFOX 总计", @@ -2639,7 +2643,7 @@ "claimConfirm": { "dustAmountTooltip": "需要少量 %{symbol} 以帮助在 THOR 网络上识别您的地址。", "networkFeeTooltip": "这是在区块链上处理该交易所需的 %{symbol} 费用,该费用并非由 ShapeShift 收取。", - "missingFundsForGasAlert": "%{symbol} 数量不足,您至少需要 %{amount} %{symbol} 才能完成交易。我们建议您多发送一些,以应对网络费用波动。", + "missingFundsForGasAlert": "%{symbol} 余额不足,您至少需要 %{amount} %{symbol} 才能完成交易。建议多发送一些以应对波动的网络费用。", "confirmTitle": "确认领取", "networkFee": "网络费用", "confirmAndClaim": "领取 & 质押", @@ -2675,10 +2679,10 @@ }, "claimPending": "领取 %{amount} %{symbol} 中...", "claimStatus": { - "pendingSubtitle": "我们正在处理您领取的 %{amount} %{symbol}", + "pendingSubtitle": "正在领取 %{amount} %{symbol}", "goBack": "返回", "successTitle": "领取成功", - "successSubtitle": "您已成功领取 %{amount} TCY", + "successSubtitle": "已成功领取 %{amount} TCY", "failedTitle": "出了些问题", "failedSubtitle": "您的领取已失败。请重试。" } @@ -2686,7 +2690,7 @@ "markets": { "recommended": "推荐的", "watchlist": "我的关注列表", - "marketsBody": "发现最令人兴奋的加密货币。跟踪最热门的货币、新兴代币、DeFi 机会等等。保存、分享和交易您最喜欢的货币。", + "marketsBody": "发现最令人兴奋的加密货币。追踪涨跌幅最大的代币、新兴代币、DeFi 机会以及更多内容。保存、分享和交易您的最爱。", "watchlistEmpty": { "emptyTitle": "关注列表中没有资产", "emptyBody": "看来您尚未为任何资产加注星标。立即开始将资产添加到您的关注列表以进行跟踪!" @@ -2696,13 +2700,13 @@ "emptyBodySwapper": "未找到符合条件的资产。", "categories": { "oneClickDefiAssets": { - "title": "一键获取 DeFi 资产", + "title": "一键 DeFi 资产", "filterTitle": "高收益代币", "subtitle": "发现最适合您的挖矿收益!通过门户轻松在流动性池、金库、贷款选项和 LSD 之间切换。" }, "thorchainDefi": { "title": "THORChain DeFi", - "subtitle": "利用 THORCHain Savers 获取你资产的原生收益。" + "subtitle": "通过 THORChain Savers 在您的资产上赚取原生收益。" }, "trending": { "title": "热门内容", @@ -2736,20 +2740,20 @@ "simulateTitle": "rFOX 模拟器", "simulateSubtle": "模拟您的 rFOX 质押收益", "estimatedRewards": "预计奖励", - "depositAmount": "存款金额", + "depositAmount": "存入金额", "shapeshiftRevenue": "ShapeShift 收入", "30days": "30 天" }, "foxFarming": { "title": "FOX 收益挖矿+", - "description": "厌倦了将你的 %{rewardAssetSymbol} 从一个农场转移到另一个农场?只需质押你的 %{assetSymbol} 并永久赚取 %{rewardAssetSymbol}。", + "description": "厌倦了在各个农场之间迁移您的 %{rewardAssetSymbol}?只需质押您的 %{assetSymbol},即可永久赚取 %{rewardAssetSymbol}。", "totalClaimableRewards": "可领取奖励总额", "totalStakingValue": "总质押价值", "nextEpoch": "下一个时段" }, "governance": { "title": "治理", - "description": "加入我们的 论坛 并塑造 DAO 的未来。", + "description": "加入我们的论坛,共同塑造 DAO 的未来。", "totalVotingPower": "总投票权", "noActiveProposals": "没有可用的活跃提案", "noClosedProposals": "没有可用的已关闭提案" @@ -2776,7 +2780,7 @@ "getFeeData": "无法估算网络费用。", "getPublicKey": "无法从钱包获取公钥。", "getUtxos": "无法获取 utxos。", - "getValidator": "无法获取验证器。", + "getValidator": "获取验证者失败。", "gridplus": { "wrongSafeCard": "插入了错误的 SafeCard。请插入正确的 SafeCard,然后重试", "removeSafeCard": "请移除已插入的 SafeCard 以访问内置的 GridPlus 钱包。" @@ -2816,43 +2820,51 @@ "startSwapping": "开始兑换" }, "swap": { - "processing": "您以 %{sellAmountAndSymbol} 购买 %{buyAmountAndSymbol} 的兑换正在进行中。", + "processing": "您将 %{sellAmountAndSymbol} 兑换为 %{buyAmountAndSymbol} 的交易正在处理中。", "complete": "您以 %{sellAmountAndSymbol} 购买 %{buyAmountAndSymbol} 的兑换已完成。", - "failed": "您以 %{sellAmountAndSymbol} 购买 %{buyAmountAndSymbol} 的兑换已失败。", + "failed": "您将 %{sellAmountAndSymbol} 兑换为 %{buyAmountAndSymbol} 的交易失败。", "streaming": "您以 %{sellAmountAndSymbol} 购买 %{buyAmountAndSymbol} 的流式兑换正在进行中。", - "awaitingApproval": "您以 %{sellAmountAndSymbol} 购买 %{buyAmountAndSymbol} 的兑换正在等待授权。", - "awaitingSwap": "您以 %{sellAmountAndSymbol} 购买 %{buyAmountAndSymbol} 的兑换正在等待执行。" + "awaitingApproval": "您将 %{sellAmountAndSymbol} 兑换为 %{buyAmountAndSymbol} 的交易正在等待授权。", + "awaitingSwap": "您将 %{sellAmountAndSymbol} 兑换为 %{buyAmountAndSymbol} 的交易正等待执行。" }, "thorchainLp": { "pairAssets": "%{asset1} 和 %{asset2}", "withdraw": { - "processing": "您从 %{poolName} 池中提取 %{assetAmountsAndSymbols} 的操作正在进行中。", - "complete": "您从 %{poolName} 流动性池中提现的 %{assetAmountsAndSymbols} 已完成。 " + "processing": "您提取 %{assetAmountsAndSymbols} 从 %{poolName} 流动资金池的请求正在处理中。", + "complete": "您提取 %{assetAmountsAndSymbols} 从 %{poolName} 流动资金池的请求已完成。" }, "deposit": { "processing": "您存入 %{poolName} 池的 %{amount} %{symbol} 正在处理中。", - "complete": "您向 %{poolName} 流动性池中存入的 %{amount} %{symbol} 已完成。" + "complete": "您存入 %{amount} %{symbol} 至 %{poolName} 流动资金池的请求已完成。" } }, "deposit": { "pending": "您存入的 %{amount} %{symbol} 正在处理中。", - "complete": "您存入的 %{amount} %{symbol} 已完成。" + "complete": "您存入的 %{amount} %{symbol} 已完成。", + "failed": "您存入 %{amount} %{symbol} 的操作失败。" }, "withdrawal": { "pending": "您提取的 %{amount} %{symbol} 正在处理中。", - "complete": "您提取的 %{amount} %{symbol} 已完成。" + "complete": "您提取 %{amount} %{symbol} 的请求已完成。", + "failed": "您提取 %{amount} %{symbol} 的请求失败。" }, "claim": { "pending": "您领取的 %{amount} %{symbol} 正在处理中。", - "complete": "您领取的 %{amount} %{symbol} 已完成。" + "complete": "您领取的 %{amount} %{symbol} 已完成。", + "failed": "您领取 %{amount} %{symbol} 的操作失败。" + }, + "yield": { + "unstakeAvailableIn": "您的 %{symbol} 取消质押将在 %{duration} 后可用。", + "unstakeReady": "您的 %{symbol} 取消质押已可领取。", + "unstakeClaimed": "您的 %{symbol} 取消质押已成功领取。" }, "bridge": { - "processing": "您从 %{sellAmountAndSymbol}.%{sellChainShortName} 到 %{buyAmountAndSymbol}.%{buyChainShortName} 的跨链交易正在处理中。", - "complete": "您从 %{sellAmountAndSymbol}.%{sellChainShortName} 到 %{buyAmountAndSymbol}.%{buyChainShortName} 的跨链交易已完成。", + "processing": "您通过跨链桥将 %{sellAmountAndSymbol}.%{sellChainShortName} 转至 %{buyAmountAndSymbol}.%{buyChainShortName} 的请求正在处理中。", + "complete": "您通过跨链桥将 %{sellAmountAndSymbol}.%{sellChainShortName} 转至 %{buyAmountAndSymbol}.%{buyChainShortName} 的请求已完成。", "initiated": "您将 %{sellAmountAndSymbol} 桥接到 %{buyAmountAndSymbol} 的操作已发起。", "pendingWithdraw": "您提现的 %{amountAndSymbol} 将在 %{timeText} 可用。", "claimAvailable": "您桥接的 %{amountAndSymbol} 已可领取。", - "failed": "您从 %{sellAmountAndSymbol}.%{sellChainShortName} 到 %{buyAmountAndSymbol}.%{buyChainShortName} 的跨链交易已失败。", + "failed": "您通过跨链桥将 %{sellAmountAndSymbol}.%{sellChainShortName} 转至 %{buyAmountAndSymbol}.%{buyChainShortName} 的请求失败。", "transactionInitiated": "交易已发起", "claimWithdraw": "领取提现", "withdrawTx": "提现交易", @@ -2861,28 +2873,28 @@ "limitOrder": { "placed": "使用 %{sellAmountAndSymbol} 购买 %{buyAmountAndSymbol} 的限价订单已下单", "complete": "您以 %{sellAmountAndSymbol} 购买 %{buyAmountAndSymbol} 的订单已成交。", - "cancelled": "您以 %{sellAmountAndSymbol} 购买 %{buyAmountAndSymbol} 的订单已取消。", + "cancelled": "您购买 %{buyAmountAndSymbol} 换取 %{sellAmountAndSymbol} 的订单已取消。", "expired": "您以 %{sellAmountAndSymbol} 购买 %{buyAmountAndSymbol} 的订单已到期。" }, "rfox": { "unstakeReady": "您取消质押的 %{amount} %{symbol} 已可领取。", - "unstakeTxPending": "您取消质押的 %{amount} %{symbol} 待处理中。", + "unstakeTxPending": "您取消质押 %{amount} %{symbol} 的交易正在处理中。", "unstakeTxComplete": "您取消质押的 %{amount} %{symbol} 已完成。" }, "tcy": { "stakePending": "您质押的 %{amount} %{symbol} 正在处理中...", - "unstakePending": "您取消质押的 %{amount} %{symbol} 正在处理中...", + "unstakePending": "您取消质押 %{amount} %{symbol} 的请求正在处理中...", "stakeComplete": "您质押的 %{amount} %{symbol} 已完成。", "unstakeComplete": "您取消质押的 %{amount} %{symbol} 已完成。", "claimReady": "您领取的 %{amount} %{symbol} TCY 已就绪。", - "claimTxPending": "您领取的 %{amount} %{symbol} TCY 待处理中。", + "claimTxPending": "您领取 %{amount} %{symbol} TCY 的交易正在处理中。", "claimTxComplete": "您领取的 %{amount} %{symbol} TCY 已完成。" }, "approve": { "approvalTxPending": "正在批准 %{contractName} 使用 %{amount} %{symbol}。", - "approvalTxComplete": "已批准 %{contractName} 使用 %{amount} %{symbol}。" + "approvalTxComplete": "已授权 %{contractName} 使用 %{amount} %{symbol}。" }, - "pendingTransactions": "%{count} 笔待处理交易", + "pendingTransactions": "%{count} 条待处理", "rewardDistribution": { "pending": { "description": "您领取的 %{amountAndSymbol} 正在处理中..." @@ -2895,8 +2907,7 @@ "yieldXYZ": { "pageTitle": "收益", "pageSubtitle": "发现并管理跨多条链的收益机会", - "actions": { - }, + "actions": {}, "yield": "收益", "apy": "APY", "apr": "APR", @@ -2908,8 +2919,8 @@ "connectWallet": "连接钱包以查看收益", "stats": "统计数据", "minStake": "最小质押数", - "minDeposit": "最小充值数", - "rewardSchedule": "奖励时间表", + "minDeposit": "最低存入", + "rewardSchedule": "奖励计划", "staking": "质押中...", "unstaking": "取消质押中...", "depositing": "充值中...", @@ -2948,7 +2959,7 @@ "allTypes": "所有类型", "showAll": "展示全部", "searchValidator": "搜索验证者", - "success": "成功!", + "success": "成功!", "transactions": "交易", "currentApy": "当前 APY", "estYearlyEarnings": "预计年收益", @@ -2982,13 +2993,14 @@ "availableToEarnTooltip": "有可用收益机会的跨资产总闲置余额。", "apyTooltip": "提供者展示的年收益率。可能随时间波动。", "perYear": "/年", - "earningsPerYear": "%{amount} %{symbol} /年", + "earningsPerYear": "%{amount} %{symbol}/年", "recommendedForYou": "为您精选", "earn": "赚钱", "providers": "提供者", "successStaked": "您已成功质押 %{amount} %{symbol}", "successUnstaked": "您已成功取消质押 %{amount} %{symbol}", - "successDeposited": "您已成功充值 %{amount} %{symbol}", + "cooldownNotice": "您的提款将在 %{cooldownDuration} 后可用。", + "successDeposited": "您已成功存入 %{amount} %{symbol}", "successWithdrawn": "您已成功提现 %{amount} %{symbol}", "successClaim": "您已成功领取 %{amount} %{symbol}", "viewPosition": "查看仓位", @@ -3031,7 +3043,7 @@ "aboutProvider": "关于 %{provider}", "visitWebsite": "访问网站", "providerDescriptions": { - "morpho": "Morpho 是一个货币市场和金库基础设施协议,经过顶级安全公司的多次审计,自 2022 年上线以来,一直提供 250 万美元的漏洞赏金奖励。", + "morpho": "Morpho 是一个货币市场和金库基础设施协议,经多家顶级安全公司审计,自 2022 年上线,提供 250 万美元漏洞赏金激励。", "morpho-aave": "Morpho 是一个货币市场和金库基础设施协议,经过顶级安全公司的多次审计,自 2022 年上线以来,一直提供 250 万美元的漏洞赏金奖励。", "morpho-compound": "Morpho 是一个货币市场和金库基础设施协议,经过顶级安全公司的多次审计,自 2022 年上线以来,一直提供 250 万美元的漏洞赏金奖励。", "lido": "Lido 是一个流动性质押协议,允许用户质押 ETH,并通过 stETH 保持流动性。该协议已通过顶级安全公司的多次审计,自 2020 年上线以来,一直提供 200 万美元的漏洞赏金奖励。", @@ -3040,18 +3052,18 @@ "kamino": "Kamino 是 Solana 推出的 DeFi 套件,将借贷、流动性和杠杆整合到一个平台上。它还运营着一个 Immunefi 计划,最高赏金可达 150 万美元。", "fluid": "Fluid 是由 Instadapp 团队构建的流动性层,它将借贷、去中心化交易所 (DEX)、借贷和稳定币市场整合到一个高效的系统中。该协议已通过顶级安全公司的多重审计,自 2024 年上线以来,一直提供 50 万美元的漏洞赏金奖励。", "venus": "Venus 是一个专注于 BNB 链的借贷协议。它通过第三方审计和持续的漏洞赏金计划来增强安全性。", - "gearbox": "Gearbox 是一个可组合的杠杆协议,支持集成到 DeFi 策略中的信用账户。该协议已通过顶级安全公司的审计,自 2021 年上线以来,一直提供 20 万美元的漏洞赏金奖励。", - "yearn": "Yearn 是一套去中心化产品,旨在帮助个人、DAO 和其他协议通过其数字资产赚取收益。该产品已通过顶级安全公司的审计,自 2020 年上线以来,一直提供 20 万美元的漏洞赏金奖励。", + "gearbox": "Gearbox 是一个可组合的杠杆协议,支持接入 DeFi 策略的信用账户。经多家顶级安全公司审计,自 2021 年上线,提供 20 万美元漏洞赏金激励。", + "yearn": "Yearn 是一套去中心化产品套件,帮助个人、DAO 及其他协议在其数字资产上获取收益。经多家顶级安全公司审计,自 2020 年上线,提供 20 万美元漏洞赏金激励。", "spark": "Spark 是一个去中心化借贷协议,由 Sky(前身为 MakerDAO)生态系统提供支持,允许用户以具有竞争力的利率借入 DAI 和其他稳定币。它还运行着一项 Immunefi 计划,最高赏金可达 500 万美元。", - "rocket-pool": "Rocket Pool 是一个去中心化的以太坊流动性质押协议,发行 rETH。该协议已通过顶级安全公司的多次审计,自 2021 年上线以来,一直提供 50 万美元的漏洞赏金奖励。", + "rocket-pool": "Rocket Pool 是一个去中心化的 Ethereum 流动性质押协议,发行 rETH。经多家顶级安全公司审计,自 2021 年上线,提供 50 万美元漏洞赏金激励。", "drift": "Drift 是一个基于 Solana 构建的去中心化永续交易和借贷平台,运行着一项最高赏金达 50 万美元的 Immunefi 计划。" }, "otherYields": "其他 %{symbol} 收益", - "availableToDeposit": "可用于充值", + "availableToDeposit": "可存入金额", "availableToDepositTooltip": "这是您钱包中可以存入此收益机会的 %{symbol} 数量。", "getAsset": "获取 %{symbol}", "manage": "管理", - "potentialEarningsAmount": "%{amount}/年 (%{apy}% APY)", + "potentialEarningsAmount": "%{amount}/年(APY %{apy}%)", "depositNow": "立即充值", "strategyInfo": "策略信息", "overview": "概述",