A Metamask fork with Infura removed and default networks editable
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ciphermask/app/_locales/zh_CN/messages.json

2018 lines
58 KiB

{
"about": {
"message": "关于"
},
"aboutSettingsDescription": {
"message": "版本、支持中心和联系方式。"
},
"acceleratingATransaction": {
"message": "* 设定更高燃料价格,可以加快交易完成进度,提高网络快速处理机率,但无法保证每次均能够实现提速。"
},
"acceptTermsOfUse": {
"message": "我已阅读并同意 $1",
"description": "$1 is the `terms` message"
},
"accessAndSpendNotice": {
"message": "$1 可以访问并使用此最大数额",
"description": "$1 is the url of the site requesting ability to spend"
},
"accessingYourCamera": {
"message": "正在获取您的相机……"
},
7 years ago
"account": {
"message": "账户"
},
"accountDetails": {
"message": "账户详情"
},
"accountName": {
"message": "账户名称"
},
"accountOptions": {
"message": "账户选项"
},
"accountSelectionRequired": {
"message": "您需要选择一个账户 !"
},
"active": {
"message": "当前"
},
"activity": {
"message": "活动"
},
"activityLog": {
"message": "活动日志"
},
"addAcquiredTokens": {
"message": "在 MetaMask 上添加获得的代币"
},
"addAlias": {
"message": "添加别名"
},
"addNetwork": {
"message": "添加网络"
},
"addRecipient": {
"message": "添加接收方"
},
"addSuggestedTokens": {
"message": "添加推荐代币"
},
"addToAddressBook": {
"message": "添加地址簿"
},
"addToAddressBookModalPlaceholder": {
"message": "如:John D."
},
7 years ago
"addToken": {
"message": "添加代币"
},
"addTokens": {
"message": "添加代币"
},
"advanced": {
"message": "高级"
},
"advancedOptions": {
"message": "高级选项"
},
"advancedSettingsDescription": {
"message": "访问开发者功能,下载状态日志,重置账户,设置测试网和自定义 RPC。"
},
"affirmAgree": {
"message": "我同意"
},
"aggregatorFeeCost": {
"message": "聚集器网络手续费"
},
"alertDisableTooltip": {
"message": "这个可以在“设置 > 提醒”中进行更改"
},
"alertSettingsUnconnectedAccount": {
"message": "选择了未连接的账户时浏览网站"
},
"alertSettingsUnconnectedAccountDescription": {
"message": "当您在浏览已连接的 Web3 网站,但当前选择的账户没有连接时,该提醒会在弹出的窗口中显示。"
},
"alertSettingsWeb3ShimUsage": {
"message": "当网站尝试使用已经删除的 window.web3 API"
},
"alertSettingsWeb3ShimUsageDescription": {
"message": "当您在浏览的网站尝试使用已经删除的 window.web3 API 时,该提醒会在弹出的窗口中显示。"
},
"alerts": {
"message": "提醒"
},
"alertsSettingsDescription": {
"message": "启用或禁用每个提醒"
},
"allowExternalExtensionTo": {
"message": "允许这个外部扩展到:"
},
"allowOriginSpendToken": {
"message": "允许 $1 使用您的 $2?",
"description": "$1 is the url of the site and $2 is the symbol of the token they are requesting to spend"
},
"allowThisSiteTo": {
"message": "允许本网站:"
},
"allowWithdrawAndSpend": {
"message": "允许 $1 提取和最多消费以下数额:",
"description": "The url of the site that requested permission to 'withdraw and spend'"
},
7 years ago
"amount": {
"message": "数额"
},
"amountWithColon": {
"message": "数额:"
7 years ago
},
"appDescription": {
"message": "以太坊浏览器插件",
"description": "The description of the application"
7 years ago
},
"appName": {
"message": "MetaMask",
"description": "The name of the application"
},
"approvalAndAggregatorTxFeeCost": {
"message": "批准聚合商网络手续费"
},
"approvalTxGasCost": {
"message": "批准交易燃料成本"
},
"approve": {
"message": "批准消费限额"
},
"approveSpendLimit": {
"message": "批准 $1 消费限额",
"description": "The token symbol that is being approved"
},
"approved": {
"message": "已批准"
},
"asset": {
"message": "资产"
},
"assets": {
"message": "资产"
},
"attemptToCancel": {
"message": "想要取消吗?"
},
"attemptToCancelDescription": {
"message": "确认提交该操作无法保证能够成功取消您的原始交易。如取消成功,您将被收取上述交易费。"
},
"attemptingConnect": {
"message": "正在尝试连接到区块链。"
},
"attributions": {
"message": "来源"
},
"authorizedPermissions": {
"message": "您已授权以下权限"
},
"autoLockTimeLimit": {
"message": "自动锁定定时(分钟)"
},
"autoLockTimeLimitDescription": {
"message": "请设置 MetaMask 自动锁定前的空闲时间(单位:分钟)"
},
"average": {
"message": "平均值"
},
7 years ago
"back": {
"message": "返回"
},
"backToAll": {
"message": "返回全部"
},
"backupApprovalInfo": {
"message": "如果不慎丢失个人设备,忘记密码,或者需要重新安装 MetaMask,亦或是需在另一台设备上打开钱包,请使用该保密码恢复个人钱包数据。"
},
"backupApprovalNotice": {
"message": "请备份您的账户助记词,保证您的钱包和资金安全。"
},
"backupNow": {
"message": "立即备份"
},
7 years ago
"balance": {
"message": "余额 "
7 years ago
},
"balanceOutdated": {
"message": "余额可能已过期"
},
"basic": {
"message": "基本"
7 years ago
},
"blockExplorerUrl": {
"message": "区块浏览器"
},
"blockExplorerView": {
"message": "通过 $1 查看账户",
"description": "$1 replaced by URL for custom block explorer"
},
"blockiesIdenticon": {
"message": "使用 Blockies Identicon 图标头像"
},
"browserNotSupported": {
"message": "您的浏览器不支持该功能……"
7 years ago
},
"builtInCalifornia": {
"message": "MetaMask在加利福尼亚设计和制造。"
},
"buy": {
"message": "购买"
},
"buyWithWyre": {
"message": "使用 Wyre 购买 ETH"
},
"buyWithWyreDescription": {
"message": "您可以通过 Wyre 使用信用卡将 ETH 存入您的 MetaMask 账户。"
},
"bytes": {
"message": "字节"
},
"canToggleInSettings": {
"message": "您可以在 设置 -> 提醒 中重新启用该提醒通知。"
},
7 years ago
"cancel": {
"message": "取消"
},
"cancellationGasFee": {
"message": "取消交易燃料费用"
},
"cancelled": {
"message": "已取消"
},
"chainId": {
"message": "链 ID"
},
"chromeRequiredForHardwareWallets": {
"message": "您需要在谷歌浏览器(Google Chrome)上使用 MetaMask 才能连接到您的硬件钱包。"
},
"clickToRevealSeed": {
"message": "点击此处显示密语"
},
"close": {
"message": "关闭"
},
7 years ago
"confirm": {
"message": "确认"
},
"confirmPassword": {
"message": "确认密码"
},
"confirmSecretBackupPhrase": {
"message": "请确认您的账户助记词"
},
"confirmed": {
"message": "确认"
},
"congratulations": {
"message": "恭喜"
},
"connect": {
"message": "连接"
},
"connectAccountOrCreate": {
"message": "连接账户或创建新账户"
},
"connectHardwareWallet": {
"message": "连接硬件钱包"
},
"connectManually": {
"message": "手动连接到当前站点"
},
"connectTo": {
"message": "连接到 $1",
"description": "$1 is the name/origin of a web3 site/application that the user can connect to metamask"
},
"connectToAll": {
"message": "连接到您的全部$1",
"description": "$1 will be replaced by the translation of connectToAllAccounts"
},
"connectToAllAccounts": {
"message": "账户",
"description": "will replace $1 in connectToAll, completing the sentence 'connect to all of your accounts', will be text that shows list of accounts on hover"
},
"connectToMultiple": {
"message": "连接到 $1",
"description": "$1 will be replaced by the translation of connectToMultipleNumberOfAccounts"
},
"connectToMultipleNumberOfAccounts": {
"message": "$1 个账户",
"description": "$1 is the number of accounts to which the web3 site/application is asking to connect; this will substitute $1 in connectToMultiple"
},
"connectWithMetaMask": {
"message": "使用 MetaMask 连接"
},
"connectedAccountsDescriptionPlural": {
"message": "您有 $1 个账户连接到了该网站。",
"description": "$1 is the number of accounts"
},
"connectedAccountsDescriptionSingular": {
"message": "您有 1 个账户连接到了该网站。"
},
"connectedAccountsEmptyDescription": {
"message": "MetaMask 没有连接这个网站。要连接到 web3 网站,请在他们的网站上找到连接按钮。"
},
"connectedSites": {
"message": "已连接的网站"
},
"connectedSitesDescription": {
"message": "$1 已连接到这些网站。他们可以查看您的账户地址。",
"description": "$1 is the account name"
},
"connectedSitesEmptyDescription": {
"message": "$1 还没连接任何网站。",
"description": "$1 is the account name"
},
"connecting": {
"message": "连接中……"
},
"connectingTo": {
"message": "正在连接 $1"
},
"connectingToGoerli": {
"message": "正在连接 Goerli 测试网络"
},
"connectingToKovan": {
"message": "正在连接到 Kovan 测试网络"
},
"connectingToMainnet": {
"message": "正在连接到以太坊 Ethereum 主网"
},
"connectingToRinkeby": {
"message": "正在连接到 Rinkeby 测试网络"
},
"connectingToRopsten": {
"message": "正在连接到 Ropsten 测试网络"
},
"contactUs": {
"message": "联系我们"
},
"contacts": {
"message": "联系人"
},
"contactsSettingsDescription": {
"message": "添加、编辑、删除和管理您的联系人。"
},
"continueToWyre": {
"message": "继续前往 Wyre"
},
7 years ago
"contractDeployment": {
"message": "合约部署"
},
"contractInteraction": {
"message": "合约交互"
},
7 years ago
"copiedExclamation": {
"message": "已复制"
},
"copiedTransactionId": {
"message": "交易 ID 复制成功"
},
"copyAddress": {
"message": "复制地址到剪贴板"
},
"copyPrivateKey": {
"message": "这是您的私钥(点击复制)"
},
7 years ago
"copyToClipboard": {
7 years ago
"message": "复制到剪贴板"
7 years ago
},
"copyTransactionId": {
"message": "复制交易 ID"
7 years ago
},
"create": {
"message": "创建"
},
"createAWallet": {
"message": "创建钱包"
},
"createAccount": {
"message": "创建账户"
},
"createPassword": {
"message": "创建密码"
},
"currencyConversion": {
"message": "货币转换"
},
"currentAccountNotConnected": {
"message": "您的当前账户没有连接"
},
"currentExtension": {
"message": "当前扩展页"
},
"currentLanguage": {
"message": "当前语言"
},
7 years ago
"customGas": {
"message": "自定义燃料"
7 years ago
},
"customGasSubTitle": {
"message": "提升费用可能会缩短处理时间,但不保证绝对有效。"
},
7 years ago
"customRPC": {
"message": "自定义 RPC"
},
"customSpendLimit": {
"message": "自定义消费限额"
},
"customToken": {
"message": "自定义代币"
},
"dataBackupFoundInfo": {
"message": "您的部分账户数据已在之前安装的 MetaMask 时备份。其中可能包括您的设置、联系人和代币。您现在想恢复这些数据吗?"
},
"decimal": {
"message": "小数精度"
},
"decimalsMustZerotoTen": {
"message": "小数位最小为0并且不超过36位."
},
"decrypt": {
"message": "解密"
},
"decryptCopy": {
"message": "复制加密信息"
},
"decryptInlineError": {
"message": "无法解密此消息,错误:$1",
"description": "$1 is error message"
},
"decryptMessageNotice": {
"message": "$1 希望阅读此信息来完成您的操作。",
"description": "$1 is the web3 site name"
},
"decryptMetamask": {
"message": "解密信息"
},
"decryptRequest": {
"message": "解密请求"
},
7 years ago
"defaultNetwork": {
"message": "默认以太坊(Ether)交易网络为主网。"
7 years ago
},
"delete": {
"message": "删除"
},
"deleteAccount": {
"message": "删除账户"
},
"deleteNetwork": {
"message": "删除网络?"
},
"deleteNetworkDescription": {
"message": "是否确认要删除该网络?"
},
7 years ago
"depositEther": {
"message": "存入 Ether"
},
"details": {
"message": "详情"
},
"directDepositEther": {
"message": "直接存入 Ether"
},
"directDepositEtherExplainer": {
"message": "如果您已经有了一些 Ether,最快捷的方法就是直接向新钱包存入 Ether。"
},
"disconnect": {
"message": "断开"
},
"disconnectAllAccounts": {
"message": "断开所有账户"
},
"disconnectAllAccountsConfirmationDescription": {
"message": "您确定要断开连接吗?您可能会失去网站功能。"
},
"disconnectPrompt": {
"message": "断开 $1"
},
"disconnectThisAccount": {
"message": "断开此账户的连接"
},
"dismiss": {
"message": "关闭"
7 years ago
},
"done": {
"message": "完成"
},
"dontShowThisAgain": {
"message": "不再显示"
},
"downloadGoogleChrome": {
"message": "下载 Google Chrome 浏览器"
},
"downloadSecretBackup": {
"message": "下载账户助记词,并将其安全保存在外部加密硬盘或存储介质上。"
},
"downloadStateLogs": {
"message": "下载状态日志"
},
"dropped": {
"message": "丢弃"
},
7 years ago
"edit": {
"message": "编辑"
},
"editContact": {
"message": "编辑联系人"
},
"editPermission": {
"message": "编辑权限"
},
"encryptionPublicKeyNotice": {
"message": "$1 希望得到您的加密公钥。同意后该网站将可以想您发送加密信息。",
"description": "$1 is the web3 site name"
},
"encryptionPublicKeyRequest": {
"message": "申请加密公钥"
},
"endOfFlowMessage1": {
"message": "您通过了测试—— 保管好您的账户助记词,这是您的责任!"
},
"endOfFlowMessage10": {
"message": "全部完成"
},
"endOfFlowMessage2": {
"message": "安全保存技巧"
},
"endOfFlowMessage3": {
"message": "在多处保存备份数据。"
},
"endOfFlowMessage4": {
"message": "不向任何任何人分享该账户助记词。"
},
"endOfFlowMessage5": {
"message": "谨防网络钓鱼!MetaMask 绝不会主动要求您提供个人账户助记词。"
},
"endOfFlowMessage6": {
"message": "如果您需要再次备份账户助记词,请通过设置 -> 安全选项完成该操作。"
},
"endOfFlowMessage8": {
"message": "MetaMask 无法恢复您的账户助记词。"
},
"endOfFlowMessage9": {
"message": "了解详情。"
},
"endpointReturnedDifferentChainId": {
"message": "RPC 端点使用链不同的链 ID: $1",
"description": "$1 is the return value of eth_chainId from an RPC endpoint"
},
"ensNotFoundOnCurrentNetwork": {
"message": "未在当前网络找到 ENS 名称。请尝试切换至主以太坊网络。"
},
"ensRegistrationError": {
"message": "ENS 名称登记错误"
},
"enterAnAlias": {
"message": "输入别名"
},
"enterMaxSpendLimit": {
"message": "输入最高消费额度"
},
7 years ago
"enterPassword": {
"message": "输入密码"
7 years ago
},
"enterPasswordContinue": {
"message": "输入密码以继续"
},
"errorCode": {
"message": "代码:$1",
"description": "Displayed error code for debugging purposes. $1 is the error code"
},
"errorDetails": {
"message": "错误详情",
"description": "Title for collapsible section that displays error details for debugging purposes"
},
"errorMessage": {
"message": "信息:$1",
"description": "Displayed error message for debugging purposes. $1 is the error message"
},
"errorName": {
"message": "代码:$1",
"description": "Displayed error name for debugging purposes. $1 is the error name"
},
"errorPageTitle": {
"message": "MetaMask 遇到了一个错误",
"description": "Title of generic error page"
},
"errorStack": {
"message": "栈:",
"description": "Title for error stack, which is displayed for debugging purposes"
},
"estimatedProcessingTimes": {
"message": "预计处理时间"
},
"eth_accounts": {
"message": "查看您允许的账户的地址(必填)",
"description": "The description for the `eth_accounts` permission"
},
"ethereumPublicAddress": {
"message": "以太坊 Ethereum 公开地址"
},
"etherscan": {
"message": "Etherscan(以太坊浏览器)"
},
7 years ago
"etherscanView": {
"message": "在 Etherscan(以太坊浏览器)上查看账户"
7 years ago
},
"expandView": {
"message": "展开视图"
},
7 years ago
"exportPrivateKey": {
"message": "导出私钥"
},
"externalExtension": {
"message": "外部扩展"
},
"extraApprovalGas": {
"message": "+$1 批准燃料",
"description": "Expresses an additional gas amount the user will have to pay, on top of some other displayed amount. $1 is a decimal amount of gas"
},
7 years ago
"failed": {
"message": "失败"
},
"failedToFetchChainId": {
"message": "无法获取链 IC,您的 RPC URL 地址是正确的么?"
},
"failureMessage": {
"message": "出了点问题,我们无法完成这个操作。"
},
"fast": {
"message": "快"
},
"fastest": {
"message": "最快"
},
"feeAssociatedRequest": {
"message": "此请求需要支付一定的费用。"
},
7 years ago
"fiat": {
"message": "FIAT",
"description": "Exchange type"
7 years ago
},
"fileImportFail": {
"message": "文件导入失败? 点击这里!",
"description": "Helps user import their account from a JSON file"
},
"forbiddenIpfsGateway": {
"message": "禁用的 IPFS 网关:请指定一个 CID 网关"
7 years ago
},
"forgetDevice": {
"message": "忘记此设备"
},
7 years ago
"from": {
"message": "从"
},
"fromAddress": {
"message": "从:$1",
"description": "$1 is the address to include in the From label. It is typically shortened first using shortenAddress"
},
"functionApprove": {
"message": "功能:同意"
7 years ago
},
"functionType": {
"message": "功能类型"
7 years ago
},
"gasLimit": {
"message": "燃料限制"
},
"gasLimitInfoTooltipContent": {
"message": "燃料限制是指您愿意花费的最燃料量单位。"
},
7 years ago
"gasLimitTooLow": {
"message": "燃料限制至少要 21000"
},
"gasLimitTooLowWithDynamicFee": {
"message": "燃料限制至少要 $1",
"description": "$1 is the custom gas limit, in decimal."
},
"gasPrice": {
"message": "燃料价格(GWEI)"
7 years ago
},
"gasPriceExtremelyLow": {
"message": "燃料价格极低"
},
"gasPriceInfoTooltipContent": {
"message": "燃料价格规定了您愿意为每单位燃料支付的 Ether 数量。"
},
"gasUsed": {
"message": "燃料使用"
},
"gdprMessage": {
"message": "这些数据是汇总的,因此,根据《GDPR 通用数据保护条例》(EU)2016/679,这些数据是匿名的。有关我们隐私惯例的更多信息,请参见我们的 $1。",
"description": "$1 refers to the gdprMessagePrivacyPolicy message, the translation of which is meant to be used exclusively in the context of gdprMessage"
},
"gdprMessagePrivacyPolicy": {
"message": "隐私政策",
"description": "this translation is intended to be exclusively used as the replacement for the $1 in the gdprMessage translation"
},
"general": {
"message": "通用"
},
"generalSettingsDescription": {
"message": "货币转换、主要价格单位、语言和 Blockies Identicon 图标头像"
},
7 years ago
"getEther": {
"message": "获取 Ether"
},
"getEtherFromFaucet": {
"message": "从水管获取 $1 网络的 Ether",
"description": "Displays network name for Ether faucet"
7 years ago
},
"getStarted": {
"message": "开始使用"
},
"goerli": {
"message": "Goerli 测试网络"
},
"happyToSeeYou": {
"message": "我们很高兴见到您。"
},
"hardware": {
"message": "硬件"
},
"hardwareWalletConnected": {
"message": "已连接的硬件钱包"
},
"hardwareWallets": {
"message": "连接硬件钱包"
},
"hardwareWalletsMsg": {
"message": "选择希望用于 MetaMask 的硬件钱包"
},
7 years ago
"here": {
"message": "这里",
"description": "as in -click here- for more information (goes with troubleTokenBalances)"
7 years ago
},
"hexData": {
"message": "十六进制数据"
},
7 years ago
"hide": {
"message": "隐藏"
},
"hideTokenPrompt": {
7 years ago
"message": "隐藏代币?"
7 years ago
},
"hideTokenSymbol": {
"message": "隐藏 $1",
"description": "$1 is the symbol for a token (e.g. 'DAI')"
},
"history": {
"message": "历史记录"
},
7 years ago
"import": {
"message": "导入",
"description": "Button to import an account from a selected file"
7 years ago
},
"importAccount": {
7 years ago
"message": "导入账户"
7 years ago
},
"importAccountMsg": {
"message": "导入的账户将不会与最初创建的 MetaMask 账户助记词相关联。了解更多有关导入账户的信息 。"
},
"importAccountSeedPhrase": {
"message": "使用账户助记词导入账户"
},
"importWallet": {
"message": "导入钱包"
},
7 years ago
"imported": {
"message": "已导入",
"description": "status showing that an account has been fully loaded into the keyring"
7 years ago
},
"initialTransactionConfirmed": {
"message": "您的初始交易已通过网络确认。请点击“确定”返回。"
},
"insufficientBalance": {
"message": "余额不足。"
},
"insufficientFunds": {
"message": "余额不足。"
},
"insufficientTokens": {
"message": "代币余额不足。"
},
7 years ago
"invalidAddress": {
"message": "无效地址"
},
"invalidAddressRecipient": {
"message": "接收方地址无效"
7 years ago
},
"invalidAddressRecipientNotEthNetwork": {
"message": "非 ETH 网络,请使用小写"
},
"invalidBlockExplorerURL": {
"message": "无效的区块浏览器 URL"
},
"invalidChainIdTooBig": {
"message": "无效的链 ID,该链 ID 数字过大。"
},
"invalidCustomNetworkAlertContent1": {
"message": "需要重新输入自定义网络'$1'的链 ID。",
"description": "$1 is the name/identifier of the network."
},
"invalidCustomNetworkAlertContent2": {
"message": "为了保护您免受恶意或有问题的网络提供商的侵害,现在所有的自定义网络都需要提供链 ID。"
},
"invalidCustomNetworkAlertContent3": {
"message": "进入设置 > 网络并输入链 ID。您可以通过 $1 查找常用的链 ID。",
"description": "$1 is a link to https://chainid.network"
},
"invalidCustomNetworkAlertTitle": {
"message": "无效的自定义网络"
},
"invalidHexNumber": {
"message": "无效的十六进制数。"
},
"invalidHexNumberLeadingZeros": {
"message": "无效的十六进制数。去除任何开头的零。"
},
"invalidIpfsGateway": {
"message": "无效的 IPFS 网关。该值必须是一个有效的 URL"
},
"invalidNumber": {
"message": "无效的数字。输入一个数字或‘0x’开头的十六进制数。"
},
"invalidNumberLeadingZeros": {
"message": "无效的数字。去除任何开头的零。"
},
"invalidRPC": {
"message": "无效 RPC URL"
},
"invalidSeedPhrase": {
"message": "无效的账户助记词"
},
"ipfsGateway": {
"message": "IPFS 网关"
},
"ipfsGatewayDescription": {
"message": "输入用于 ENS 内容解析的 IPFS CID 网关的 URL。"
},
7 years ago
"jsonFile": {
"message": "JSON 文件",
"description": "format for importing an account"
7 years ago
},
"knownAddressRecipient": {
"message": "已知接收方地址。"
},
"knownTokenWarning": {
"message": "此操作将编辑已经在您的钱包中列出的代币,有肯能被用来欺骗您。只有确定要更改这些代币的内容时,才通过此操作。"
},
7 years ago
"kovan": {
7 years ago
"message": "Kovan 测试网络"
7 years ago
},
"lastConnected": {
"message": "最后连接"
},
"learnMore": {
"message": "查看更多"
},
"ledgerAccountRestriction": {
"message": "在添加新的账户之前,需要使用您的最后一个账户。"
},
"letsGoSetUp": {
"message": "第一次,立即开始设置!"
},
"likeToAddTokens": {
"message": "您想添加这些代币吗?"
},
"links": {
"message": "链接"
},
"loadMore": {
"message": "加载更多"
},
7 years ago
"loading": {
"message": "加载中……"
7 years ago
},
"loadingTokens": {
"message": "加载代币中……"
},
"localhost": {
"message": "Localhost 8545"
7 years ago
},
"lock": {
"message": "锁定"
7 years ago
},
"lockTimeTooGreat": {
"message": "锁定时间过长"
},
7 years ago
"mainnet": {
"message": "以太坊 Ethereum 主网络"
7 years ago
},
"max": {
"message": "最大"
},
"memo": {
"message": "备忘"
},
"memorizePhrase": {
"message": "记住该账户助记词。"
},
7 years ago
"message": {
7 years ago
"message": "消息"
7 years ago
},
"metaMaskConnectStatusParagraphOne": {
"message": "现在您可在 MetaMask 中对账户连接进行更多的控制。"
},
"metaMaskConnectStatusParagraphThree": {
"message": "点击管理连接的账户。"
},
"metaMaskConnectStatusParagraphTwo": {
"message": "连接状态按钮显示所访问的网站是否与您当前选择的账户连接。"
},
"metamaskDescription": {
"message": "将您与 Ethereum 和去中心化网络连接起来。"
},
"metamaskSwapsOfflineDescription": {
"message": "MetaMask Swaps 正在进行维护。请稍后访问。"
},
"metamaskVersion": {
"message": "MetaMask 版本"
},
"metametricsCommitmentsAllowOptOut": {
"message": "始终允许您通过设置选择退出"
},
"metametricsCommitmentsBoldNever": {
"message": "从不",
"description": "This string is localized separately from some of the commitments so that we can bold it"
},
"metametricsCommitmentsIntro": {
"message": "MetaMask……"
},
"metametricsCommitmentsNeverCollectIP": {
"message": "$1收集您的完整IP地址",
"description": "The $1 is the bolded word 'Never', from 'metametricsCommitmentsBoldNever'"
},
"metametricsCommitmentsNeverCollectKeysEtc": {
"message": "$1收集密钥、地址、交易记录、余额、哈希或任何个人信息",
"description": "The $1 is the bolded word 'Never', from 'metametricsCommitmentsBoldNever'"
},
"metametricsCommitmentsNeverSellDataForProfit": {
"message": "$1为利益而出售您的数据,永远不会!",
"description": "The $1 is the bolded word 'Never', from 'metametricsCommitmentsBoldNever'"
},
"metametricsCommitmentsSendAnonymizedEvents": {
"message": "发送匿名的点击和页面浏览事件信息"
},
"metametricsHelpImproveMetaMask": {
"message": "帮助我们让 MetaMask 变得更好"
},
"metametricsOptInDescription": {
"message": "MetaMask 希望收集使用数据,以更好地了解我们的用户如何与扩展进行互动。这些数据将被用于持续改进我们产品和 Ethereum 生态系统的可用性和用户体验。"
},
"mobileSyncText": {
"message": "请输入密码确认个人身份!"
},
"mustSelectOne": {
"message": "至少选择 1 种代币。"
},
"myAccounts": {
"message": "我的账户"
},
7 years ago
"needEtherInWallet": {
"message": "使用 MetaMask 与分布式应用交互,需要您的钱包里需要有 Ether。"
7 years ago
},
"needImportFile": {
"message": "必须选择一个文件来导入。",
"description": "User is important an account and needs to add a file to continue"
},
"negativeETH": {
"message": "不能发负值的 ETH。"
7 years ago
},
"networkName": {
"message": "网络名称"
},
"networkSettingsChainIdDescription": {
"message": "链 ID 用于签署交易。它必须与网络返回的链 ID 相匹配。您可以输入十进制或'0x'前缀的十六进制数字,但我们将以十进制显示。"
},
"networkSettingsDescription": {
"message": "添加和编辑自定义 RPC 网络"
},
"networks": {
"message": "网络"
},
"nevermind": {
"message": "无所谓"
},
7 years ago
"newAccount": {
7 years ago
"message": "新账户"
7 years ago
},
"newAccountDetectedDialogMessage": {
"message": "检测到新地址!点击添加至地址簿。"
},
7 years ago
"newAccountNumberName": {
"message": "账户 $1",
"description": "Default name of next account to be created on create account screen"
7 years ago
},
"newContact": {
"message": "新联系人"
},
7 years ago
"newContract": {
7 years ago
"message": "新合约"
7 years ago
},
"newNetwork": {
"message": "新增网络"
},
"newPassword": {
"message": "新密码(至少 8 个字符)"
},
"newToMetaMask": {
"message": "第一次使用 MetaMask?"
},
"newTotal": {
"message": "新总额"
},
"newTransactionFee": {
"message": "新交易费用"
},
"next": {
"message": "下一步"
},
"nextNonceWarning": {
"message": "Nonce 高于建议的 nouce 值 $1",
"description": "The next nonce according to MetaMask's internal logic"
},
"noAccountsFound": {
"message": "没找到查询的账户"
},
"noAddressForName": {
"message": "这个名字还没有设置地址。"
},
"noAlreadyHaveSeed": {
"message": "不,我已经有一个账户助记词了。"
7 years ago
},
"noConversionRateAvailable": {
"message": "无可用转换率"
},
"noThanks": {
"message": "不,谢谢"
},
7 years ago
"noTransactions": {
7 years ago
"message": "没有交易"
7 years ago
},
"noWebcamFound": {
"message": "未找到您的电脑摄像头。请重试。"
},
"noWebcamFoundTitle": {
"message": "未找到摄像头"
},
"nonceField": {
"message": "自定义交易 nonce"
},
"nonceFieldDescription": {
"message": "开启此功能可以改变确认屏幕上的 nonce(交易号)。此为高级功能,请谨慎使用。"
},
"nonceFieldHeading": {
"message": "自定义 Nonce"
},
"notCurrentAccount": {
"message": "这是正确的账户吗?这与您钱包中当前选择的账户不同。"
},
"notEnoughGas": {
"message": "燃料不足"
},
"ofTextNofM": {
"message": "/"
},
"off": {
"message": "关"
},
"offlineForMaintenance": {
"message": "脱机维护"
},
"ok": {
"message": "确定"
},
"on": {
"message": "启用"
},
"onboardingReturnNotice": {
"message": "“$1”会关闭此标签,直接回到 $2",
"description": "Return the user to the site that initiated onboarding"
},
"onlyAvailableOnMainnet": {
"message": "仅在主网(mainnet)上提供"
},
"onlyConnectTrust": {
"message": "只连接您信任的网站。"
},
"optionalBlockExplorerUrl": {
"message": "区块浏览器 URL(选填)"
},
"optionalCurrencySymbol": {
"message": "符号(选填)"
},
"origin": {
"message": "来源"
},
"parameters": {
"message": "参数"
},
"participateInMetaMetrics": {
"message": "加入 MetaMetrics"
},
"participateInMetaMetricsDescription": {
"message": "加入 MetaMetrics ,帮助我们改善 MetaMask 服务"
},
"password": {
"message": "密码"
},
"passwordNotLongEnough": {
"message": "密码长度不足"
},
"passwordsDontMatch": {
"message": "密码不匹配"
},
7 years ago
"pastePrivateKey": {
"message": "请粘贴您的私钥:",
"description": "For importing an account from a private key"
7 years ago
},
"pending": {
"message": "待处理"
},
"permissionCheckedIconDescription": {
"message": "您已同意该权限"
},
"permissionUncheckedIconDescription": {
"message": "您还未同意该权限"
},
"permissions": {
"message": "权限"
},
"personalAddressDetected": {
"message": "检测到个人地址。请输入代币合约地址。"
},
"plusXMore": {
"message": "+ $1",
"description": "$1 is a number of additional but unshown items in a list- this message will be shown in place of those items"
},
"prev": {
"message": "上一个"
},
"primaryCurrencySetting": {
"message": "主要货币"
},
"primaryCurrencySettingDescription": {
"message": "请选择“本地”,优先显示当地货币链价值(如 ETH )。选择“货币”则优先以所选货币作为价值显示单位。"
},
"privacyMsg": {
"message": "隐私政策"
},
7 years ago
"privateKey": {
"message": "私钥",
"description": "select this type of file to use to import an account"
7 years ago
},
"privateKeyWarning": {
"message": "注意:永远不要公开这个私钥。任何拥有您的私钥的人都可以窃取您帐户中的任何资产。"
7 years ago
},
"privateNetwork": {
7 years ago
"message": "私有网络"
7 years ago
},
"proposedApprovalLimit": {
"message": "拟议的审批上限"
},
"provide": {
"message": "提供"
},
"queue": {
"message": "队列"
},
"queued": {
"message": "队列中"
},
7 years ago
"readdToken": {
"message": "之后您还可以通过帐户选项菜单中的“添加代币”来添加此代币。"
7 years ago
},
"receive": {
"message": "接收"
},
"recents": {
"message": "最近记录"
},
7 years ago
"recipientAddress": {
7 years ago
"message": "接收地址"
7 years ago
},
"recipientAddressPlaceholder": {
"message": "查找、公用地址 (0x) 或 ENS"
},
"reject": {
"message": "拒绝"
},
"rejectAll": {
"message": "拒绝全部"
},
"rejectTxsDescription": {
"message": "您将批量拒绝 $1 笔交易。"
},
"rejectTxsN": {
"message": "拒绝 $1 笔交易"
},
7 years ago
"rejected": {
7 years ago
"message": "拒绝"
7 years ago
},
"remindMeLater": {
"message": "稍后提醒"
},
"remove": {
"message": "删除"
},
"removeAccount": {
"message": "删除账户"
},
"removeAccountDescription": {
"message": "该账户已从您的钱包中删除。请在继续后续操作前,确认您是否已拥有该导入账户的原始账户助记词或账户密钥。您可以通过账户下拉菜单再次导入或创建账户。"
},
"requestsAwaitingAcknowledgement": {
"message": "待确认的请求"
},
7 years ago
"required": {
7 years ago
"message": "必填"
7 years ago
},
"reset": {
"message": "重置"
},
"resetAccount": {
"message": "重设账户"
},
"resetAccountDescription": {
"message": "重置账户将清除您的交易历史记录。这不会改变您账户中的余额,也不会要求您重新输入账户助记词。"
},
"restore": {
"message": "恢复"
},
"restoreAccountWithSeed": {
"message": "使用账户助记词恢复您的账户"
},
"restoreWalletPreferences": {
"message": "已找到于 $1 的数据备份。您想恢复您的钱包设置吗?",
"description": "$1 is the date at which the data was backed up"
},
"retryTransaction": {
"message": "重试交易"
},
"reusedTokenNameWarning": {
"message": "此处的一个代币使用了与您关注的另一个代币的相同符号,这可能会让人感到困惑或欺骗。"
},
"revealSeedWords": {
"message": "显示账户助记词"
},
"revealSeedWordsDescription": {
"message": "如果您更换浏览器或计算机,则需要使用此账户助记词访问您的帐户。请将它们保存在安全秘密的地方。"
},
"revealSeedWordsTitle": {
"message": "账户助记词"
},
"revealSeedWordsWarning": {
"message": "该账户助记词可以用来窃取您的所有帐户"
},
"revealSeedWordsWarningTitle": {
"message": "不要对任何人展示此账户助记词!"
},
"rinkeby": {
"message": "Rinkeby 测试网络"
},
"ropsten": {
"message": "Ropsten 测试网络"
},
"rpcUrl": {
"message": "新增 RPC URL"
},
7 years ago
"save": {
7 years ago
"message": "保存"
7 years ago
},
"saveAsCsvFile": {
"message": "保存为 CSV 文件"
},
"scanInstructions": {
"message": "将二维码放在相机前"
},
"scanQrCode": {
"message": "扫描二维码"
},
"scrollDown": {
"message": "向下滚动"
},
"search": {
"message": "搜索"
},
"searchAccounts": {
"message": "搜索账户"
},
"searchResults": {
"message": "搜索结果"
},
"searchTokens": {
"message": "搜索代币"
},
"secretBackupPhrase": {
"message": "账户助记词"
},
"secretBackupPhraseDescription": {
"message": "您的账户助记词可以帮助您轻松备份和恢复个人账户。"
},
"secretBackupPhraseWarning": {
"message": "警告:切勿向他人透露您的账户助记词。任何人一旦持有该账户助记词,即可控制您的 Ether。"
},
"securityAndPrivacy": {
"message": "安全与隐私"
},
"securitySettingsDescription": {
"message": "隐私设置和账户助记词"
},
"seedPhrasePlaceholder": {
"message": "用空格分隔每个单词"
},
"seedPhrasePlaceholderPaste": {
"message": "从剪贴板粘贴账户助记词"
},
"seedPhraseReq": {
"message": "账户助记词由 12、15、18、21 或 24 个单词组成"
},
"selectAHigherGasFee": {
"message": "选择更高的燃料费用,提高交易处理速度。*"
},
"selectAccounts": {
"message": "选择账户"
},
"selectAll": {
"message": "全部选择"
},
"selectAnAccount": {
"message": "选择一个账户"
},
"selectAnAccountHelp": {
"message": "选择在 MetaMask 中查看的账户"
},
"selectEachPhrase": {
"message": "请选择每个单词,以确保其正确性。"
},
"selectHdPath": {
"message": "选择 HD 路径"
},
"selectPathHelp": {
"message": "如果下列账户中没有您当前所持有的 Ledger 账户,请将路径切换至“Legacy (MEW / MyCrypto)”"
},
"selectType": {
"message": "选择类型"
},
"selectingAllWillAllow": {
"message": "选择全部将允许本网站查看您当前的所有账户。确保您信任这个网站。"
},
7 years ago
"send": {
7 years ago
"message": "发送"
7 years ago
},
"sendAmount": {
"message": "发送数额"
},
"sendSpecifiedTokens": {
"message": "发送 $1",
"description": "Symbol of the specified token"
},
7 years ago
"sendTokens": {
"message": "发送代币"
},
"sentEther": {
"message": "发送 Ether"
},
"separateEachWord": {
"message": "用空格分隔每个单词"
},
7 years ago
"settings": {
7 years ago
"message": "设置"
7 years ago
},
"showAdvancedGasInline": {
"message": "高级燃料控制"
},
"showAdvancedGasInlineDescription": {
"message": "在发送和确认界面显示燃料价格和燃料限制设置选项。"
},
"showFiatConversionInTestnets": {
"message": "在 Testnets 上显示兑换率"
},
"showFiatConversionInTestnetsDescription": {
"message": "请选择该选项,在 Testnets 上显示法定兑换率"
},
"showHexData": {
"message": "显示十六进制数据"
},
"showHexDataDescription": {
"message": "请选择该选项,在发送页面显示十六进制数据字域"
},
"showIncomingTransactions": {
"message": "显示收到的交易"
},
"showIncomingTransactionsDescription": {
"message": "选择该选项可使用 Etherscan(以太坊浏览器)(以太坊浏览器)在交易列表中显示收到的交易。"
},
"showPermissions": {
"message": "显示权限"
},
"showPrivateKeys": {
"message": "显示私钥"
},
"showSeedPhrase": {
"message": "显示账户助记词"
},
"sigRequest": {
"message": "请求签名"
},
7 years ago
"sign": {
7 years ago
"message": "签名"
7 years ago
},
"signNotice": {
"message": "签署此消息可能会产生危险的副作用。 \n只从您完全信任的网站上签名。 未来的版本将移除这种危险的方法。"
},
"signatureRequest": {
"message": "请求签名"
},
"signatureRequest1": {
"message": "信息"
},
"signed": {
"message": "已签名"
},
"slow": {
"message": "慢"
7 years ago
},
"somethingWentWrong": {
"message": "糟糕!出问题了。"
},
"speedUp": {
"message": "加速"
},
"speedUpCancellation": {
"message": "加速该取消操作"
},
"speedUpTransaction": {
"message": "加速该交易操作"
},
"spendLimitAmount": {
"message": "消费限额数量"
},
"spendLimitInsufficient": {
"message": "消费限额不足"
},
"spendLimitInvalid": {
"message": "消费限制无效,必须是正数。"
},
"spendLimitPermission": {
"message": "消费限制权限"
},
"spendLimitRequestedBy": {
"message": "消费限制申请来自 $1",
"description": "Origin of the site requesting the spend limit"
},
"spendLimitTooLarge": {
"message": "消费限制过大"
},
"stateLogError": {
"message": "检索状态日志时出错。"
},
"stateLogFileName": {
"message": "MetaMask 状态日志"
},
"stateLogs": {
"message": "状态日志"
},
"stateLogsDescription": {
"message": "状态日志包含您的账户地址和已发送的交易。"
},
"statusConnected": {
"message": "已连接"
},
"statusNotConnected": {
"message": "未连接"
},
"storePhrase": {
"message": "通过如 1Password 等密码管理工具保存该账户助记词。"
},
"submit": {
"message": "提交"
},
"submitted": {
"message": "已提交"
},
"supportCenter": {
"message": "访问我们的支持中心"
},
"swap": {
"message": "兑换 Swap"
},
"swapAdvancedSlippageInfo": {
"message": "如果价格在您下单和确认之间发生变化,这就叫做“滑点”。如果滑点超过您的“最大滑点”设置,您的的兑换将自动取消。"
},
"swapAggregator": {
"message": "聚合商"
},
"swapAmountReceived": {
"message": "保证数额"
},
"swapAmountReceivedInfo": {
"message": "这是您将收到的最低数额。根据滑点值, 您可能会收到更多。"
},
"swapApproval": {
"message": "批准 $1 的兑换 ",
"description": "Used in the transaction display list to describe a transaction that is an approve call on a token that is to be swapped.. $1 is the symbol of a token that has been approved."
},
"swapApproveNeedMoreTokens": {
"message": "您还需 $1 $2 来完成这笔兑换",
"description": "Tells the user how many more of a given token they need for a specific swap. $1 is an amount of tokens and $2 is the token symbol."
},
"swapBetterQuoteAvailable": {
"message": "有一个可用的更优报价"
},
"swapBuildQuotePlaceHolderText": {
"message": "没有匹配的代币符合 $1",
"description": "Tells the user that a given search string does not match any tokens in our token lists. $1 can be any string of text"
},
"swapCheckingQuote": {
"message": "正在检查 $1",
"description": "Shown to the user during quote loading. $1 is the name of an aggregator. The message indicates that metamask is currently checking if that aggregator has a trade/quote for their requested swap."
},
"swapCustom": {
"message": "自定义"
},
"swapDecentralizedExchange": {
"message": "去中心化交易所"
},
"swapEditLimit": {
"message": "修改限制"
},
"swapEnableDescription": {
"message": "这是必须的,并且允许 MetaMask 兑换您的 $1。",
"description": "Gives the user info about the required approval transaction for swaps. $1 will be the symbol of a token being approved for swaps."
},
"swapEstimatedNetworkFee": {
"message": "预计网络手续费"
},
"swapEstimatedNetworkFeeSummary": {
"message": "“$1”是我们预计的实际产生费用。具体数额视网络情况而定。",
"description": "$1 will be the translation of swapEstimatedNetworkFee, with the font bolded"
},
"swapEstimatedNetworkFees": {
"message": "预计网络手续费"
},
"swapEstimatedNetworkFeesInfo": {
"message": "这是预估的用于完成您的兑换所使用的网络手续费。实际数额可能会根据网络条件而变化。"
},
"swapFailedErrorTitle": {
"message": "兑换失败"
},
"swapFetchingQuotesErrorDescription": {
"message": "呃……出错了。再试一次,如果错误仍存在,请联系客户支持。"
},
"swapFetchingQuotesErrorTitle": {
"message": "获取报价出错"
},
"swapFetchingTokens": {
"message": "获取代币中……"
},
"swapFinalizing": {
"message": "确定中……"
},
"swapLowSlippageError": {
"message": "交易可能失败,最大滑点过低。"
},
"swapMaxNetworkFeeInfo": {
"message": "“$1”是您最多所话费的数量,当网络不稳定时,这可能是一个大的数额。",
"description": "$1 will be the translation of swapMaxNetworkFees, with the font bolded"
},
"swapMaxNetworkFees": {
"message": "最大网络手续费"
},
"swapMaxSlippage": {
"message": "最大滑点"
},
"swapMetaMaskFee": {
"message": "MetaMask 手续费"
},
"swapMetaMaskFeeDescription": {
"message": "我们每次都能从顶级流动性资源中找到最好的价格。每次报价都会自动收取1%的手续费用,以支持 MetaMask 的持续发展,使其更加完善。",
"description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number."
},
"swapNQuotes": {
"message": "$1 个报价",
"description": "$1 is the number of quotes that the user can select from when opening the list of quotes on the 'view quote' screen"
},
"swapNetworkFeeSummary": {
Version v9.5.0 RC (#10944) * add trezor HD path for ledger wallets (#10616) Co-authored-by: Barry Gitarts <bgitarts@gmail.com> * Replace logic for eth swap token in fetchQuotesAndSetQuoteState with getSwapsEthToken call (#10624) * Ensure permission log will only store JSON-able data (#10524) * remove transactionCategory in favor of more types (#10615) * remove transactionCategory in favor of more types * remove reference to STANDARD in stubs * Removing double click bug from delete custom network modal (#10628) Fixes MetaMask/metamask-extension#10626 * Hide zero balance tokens at useTokenTracker layer (#10630) * Setting balance to 0x0 when the original value is undefined (#10634) * fix: speedup cancellation (#10579) fixes #7305 * no more node:console (#10640) * prefer chainId over networkId in most cases (#10594) * Move swaps constants to the shared constants directory (#10614) * Position the 3dot menu in the same spot on asset screen and home screen (#10642) * Ensure swaps detail height doesn't create jump in vertical height (#10644) * Fix: ETH 'token' now only appears once in the swaps to and from dropdowns. (#10650) * Prevent network menu highlighting (#10643) * Allow TextField to receive min and max attributes (#10656) * colocate tests in flat structure (#10655) * Fixing migration script generation paths (#10664) * Improve specificity of `test:unit:lax` npm script (#10661) The unit test npm script `test:unit:lax` is now more specific about which tests files to exclude. An `--ignore` CLI option is used to specify the files to ignore, rather than using the braces glob syntax to ignore them from the target glob itself. This makes the option easier to update going forward as we move more tests into the "strict" group, because the options are exactly the same between the two scripts. It also ensures we don't accidentally exclude other subdirectories that happen to also be named `permissions`. In trying to implement this, I stumbled at first because mocha expects the ignore pattern to be a relative path if the target is a relative path (i.e. they need to both start with `./` or neither). The script `test:unit:strict` has been updated to use a relative target pattern for consistency. * Swaps support for local testnet (#10658) * Swaps support for local testnet * Create util method for comparison of token addresses/symbols to default swaps token * Get chainId from txMeta in _trackSwapsMetrics of transaction controller * Add comment to document purpose of getTransactionGroupRecipientAddressFilter * Use isSwapsDefaultTokenSymbol in place of repeated defaultTokenSymbol comparisons in build-quote.js * fix: replace dnode background with JSON-RPC (#10627) fixes #10090 * Don't render faucet row in deposit modal for custom chains (#10674) Fixes MetaMask/metamask-extension#10038 * Change 'Send ETH' title to 'Send' (#10651) * Fixing incorrectly typed token decimal attribute (#10666) * refactor incoming tx controller (#10639) * make migration more safe (#10689) * Adding default properties to NetworkForm (#10682) Fixes MetaMask/metamask-extension#10681 * deps - remove "remotedev-server" (#10687) * deps - remove remotedev-server * Remove stale references from allow-scripts config Any packages that are no longer in the dependency tree have been removed from the `allow-scripts` config. Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Excluding sourcemaps comment in production builds (#10695) * Excluding sourcemaps comment in production builds Fixes MetaMask/metamask-extension#7077 * Fix source map explorer script The source map explorer script now re-adds the source map comment to each file to ensure the source map visualization still works. Each module with a sourcemap is copied to a temporary directory along with the module it corresponds to, and from there it's passed into `source-map-explorer`. This should ensure the resulting visualization matches what it was before. Everything has been moved inside of functions to generally improve readability, and to allow the use of local variables. Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Delete setupFetchDebugging.js (#10636) * Delete setupFetchDebugging.js * remove fetch-debugging (now handled corrently by sentry) * resolve issue with missing template error (#10692) * resolve issue with missing template error * also apply filtering to confirmation page * rename variable * Add MetaMask to list of BIP44 HD path examples (#10703) The "BIP44 Standard" HD path option in the Ledger connect flow listed only Trezor as an example. It seemed appropriate to include MetaMask as well, since we use the same path. This helps users who have imported their MetaMask seed phrase onto a Ledger device to discover this option. * Removing hard references to 12 word seed phrases in copy (#10704) Adding translation entry for "Wallet Seed" Fixed label padding issue by adding missing CSS rule * rule out empty string for symbol (#10712) * fix: remove unused `metamask.rpcUrl` from redux state + fix tests to reflect that (#10714) * Fix 10706 - Prevent autocomplete from add token input (#10700) * Fix mismatchedChain typo in custom network approval screen (#10723) * Fix 10562 - Hide the suggested token pane when not on Mainnet or test network (#10702) * Update @metamask/controllers to v6.2.1 (#10701) * Additional swaps network support (#10721) * Add swaps support for bnc chain * Use single default token address in shared/constants/swaps * ci - cache deps before patch-package (#10735) * ci - cache deps before patch-package * ci - bump dep cache number (cache break) * build - refactor build system for easier configuration (#10718) * build - refactor build system for easier configuration of before and after bundle * build - fix dependenciesToBundle option * build - fix bify external options and other config * build - refactor for cleanliness * build - fix minify argument * build - fix sourcemaps setup * scripts - refactor setupBundlerDefaults in anticipation of factor bundles * build - scripts - remove unused pipeline label * build - scripts - make filepath entry optional * build - scripts - rename filepath and filename options to entryFilepath and destFilepath * Update development/build/scripts.js Co-authored-by: Mark Stacey <markjstacey@gmail.com> Co-authored-by: Mark Stacey <markjstacey@gmail.com> * security - update SES lockdown (#10663) * update ses * build - reference ses directly * deps - unify regenerator-runtime versions on 0.13.7 * patches - apply regenerator-runtime ses compat patch\nhttps://github.com/facebook/regenerator/pull/411 * patches - patch regenerator-runtime for latest ses fix * reduc patch, new lockdown severe override taming * updated redux patch * update redux patch for production * ignore lockdown in lint * deps - bump patch-package just in case * trailing comma * remove ses as dep * fix path for frozen promise * remove js extension in lockdown require * Revert "ignore lockdown in lint" This reverts commit 8cefdc94dd25d7781bb09eed8af36441397676da. * Revert "build - reference ses directly" This reverts commit 30371a377dcdd781c1bf9abe55e9c8ae34da26b5. * deps - update ses * Revert "fix path for frozen promise" This reverts commit 966e4c60921a25befe8ca8dea58313cc25852f72. Co-authored-by: kumavis <aaron@kumavis.me> * Allow 11 characters in symbol for RPC (#10670) * Add error in RPC for zero length symbols * Increase RPC symbol length allowed to 11 * Add RPC tests for new symbol length checks * eth-block-tracker@5.0.1 (#10737) * Ensure swaps gas prices are fetched from the correct chain specific endpoint (#10744) * Ensure swaps gas prices are fetched from the correct chain specific endpoint * Just rely on fetchWithCache to cache swaps gas prices, instead of directly using storage in getSwapsPriceEstimatesLastRetrieved * Empty commit * update @metamask/etherscan-link to v2.0.0 (#10747) * Use correct block explorer name and link in swaps when on custom network (#10743) * Use correct block explorer name and link in swaps when on custom network. * Fix up custom etherscan link code in build-quote.js * Use blockExplorerUrl hostname instead of 'blockExplorerBaseUrl' * Use correct etherscan-link method for token links in build-quote * Create correct token link in build-quote for mainnet AND custom networks * Block explorer url improvements in awaiting-swap.js and build-quote.js * Use swapVerifyTokenExplanation message with substitutable block explorer for all applicable locales * Ensure that block explorer links are not shown in awaiting-swap if no url is available * Add New Zealand Dollar to currency options (#10746) * Ensure that the correct default currency symbols are used for fees on the view quote screen (#10753) * Fix 10517 - Prevent tokens without addresses from being added to token list (#10593) * Updating y18n and netmask to resolve dependency issues (#10765) netmask@1.0.6 -> 2.0.1, y18n@3.2.1 -> 3.2.2, y18n@4.0.0 -> 4.0.1 * Refactor Tx State Manager (#10672) Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Ensure that the approval fee in the swaps custom gas modal is in network specific currency (#10763) * Ensure that priceSlippage fiat amounts are always shown in view-quote.js (#10762) * Use network specific swaps contract address when checking swap contract token approval (#10774) * Build - refactor background process to use html (#10769) * build - declare background as html * build - fill in empty file when a missing file is expected * lint - fix * Update development/build/manifest.js Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Update development/build/manifest.js Co-authored-by: Mark Stacey <markjstacey@gmail.com> Co-authored-by: Mark Stacey <markjstacey@gmail.com> * build - fix use of empty file to replace unused js files (#10780) * cache lint results for faster repeat execution (#10773) * eslint perf improvement (#10775) * Improve detection of task process exit (#10776) Our build script waits for the `close` event to determine whether the task has exited. The `exit` event is a better representation of this, because if a stream is shared between multiple processes, the process may exit without the `close` event being emitted. We aren't sharing streams between processes, so this edge case doesn't apply to us. This just seemed like a more suitable event to listen to, since we care about the process exiting not the stream ending. See this description of the `close` event from the Node.js documentation [1]: >The `'close'` event is emitted when the stdio streams of a child >process have been closed. This is distinct from the `'exit'` event, >since multiple processes might share the same stdio streams. And see this description of the `exit` event: >The `'exit'` event is emitted after the child process ends. [1]: https://nodejs.org/docs/latest-v14.x/api/child_process.html#child_process_event_exit * Rewrite changelog script from Bash to JavaScript (#10782) The `auto-changelog` script has been rewritten from Bash to JavaScript. Functionally it should behave identically. * Refactoring ethereum-on.spec.js to use fixtures (#10778) * Remove useless negation (#10787) !contentComponent always evaluates to true * Remove date from changelog release header (#10790) New changelog release headers now omit the date. These headers are added automatically when a new release branch is created, and that rarely ends up being the actual date of the release, so these dates have all been inaccurate anyway. The date will be re-added to the changelog later as part of a new script, after a release has been published. * Remove script for creating master sync PR (#10791) The script responsible for creating the "Sync `master` with `develop`" PR has been removed. We will soon be eliminating the need for a `master` branch altogether, so we don't need this anymore. Also, this script hasn't been running correctly in a long time. We've been creating this PR manually. * Add changelog entries under release candidate header (#10784) Instead of always placing new changelog entries under the "Current Develop Branch" header, the changelog script now places them under the header for the current release if that release has not yet been tagged. This eliminates one manual step from the release process. Relates to #10752 * Prevent duplicate changelog entries (#10786) The changelog update script now prevents duplicate entries from being added. Specifically, it will ensure that if a PR has been referenced already in an entry, it will not add it again. This should prevent it from adding duplicate entries for changes that were cherry-picked into hotfix releases. Note that this duplication prevention only works for entries containing a PR number. We don't have any way to prevent duplicate entries yet in cases where we don't know the associated PR. We will be preventing this possibility entirely pretty soon in some upcoming release automation changes though, so I'm not concerned about this omission. * Set the BSC_CONTRACT_ADDRESS to lowercase (#10800) * only applies rules to the appropriate files (#10788) * upgrade eslint deps (#10789) * Ensure correct primary currency image is displayed on home screen and token list (#10777) * Add release header when updating changelog (#10794) The changelog update script now adds a release header if it doesn't find one already that matches the current release candidate version. * remove node-sass dependency (#10797) * Add support for locators into driver abstraction (#10802) * Update changelog headers and fix dates (#10805) The changelog release header format has been updated to match the "keep a changelog" [1] format. Each header is now the bracketed version number followed by a dash, then the release date in ISO-8601 format. The release dates in each header were also updated to match the date of the corresponding GitHub Release [2]. Many of these dates were incorrect because they were set on the day we created the release candidate, rather than on the day of release. Any changelog release entries without a corresponding GitHub release was left with the date already specified. The three oldest release headers were missing dates. For the first two, I used the date of the version bump commit. For the third, I removed it since no changes were listed anyway, and it represented a range of releases rather than a single one. The `auto-changelog.js` script has been updated to account for this new format as well. [1]: https://keepachangelog.com/en/1.0.0/ [2]: https://github.com/MetaMask/metamask-extension/releases * Update the changelog when creating an RC (#10795) The changelog will now be automatically updated when a release branch is created. A new release header along with changelog entries for any new commits will be added. Note that this changelog will still need to be manually cleaned up, but it's one less manual step at least. The old Bash script for adding a new release header to the changelog has been removed, as that functionality is now built into the changelog update script. A new script has been added to commit any changes made to the manifest and changelog. This step used to happen at the end of the bump manifest version script, but now the changelog update relies upon the manifest version bump happening first, so it needed to be re-ordered. The changes should only be committed on the first run of the branch, as it's contingent upon the manifest changing (due to the version bump). Further changelog updates won't trigger new automatic commits. * Refactoring address-book.spec.js to use fixtures (#10804) * Refactoring send-edit.spec.js to use fixtures (#10792) * Fix _getPermittedAccounts type safety (#10819) * Removing unnecessary params from withFixtures function call. (#10831) * Add links to release headers (#10808) Each release header now includes a link to the range of commits included with that release. These links are at the end of the document, in accordance with the "keep a changelog" [1] format. For the purpose of this changelog, the "previous release" is the most recent release mentioned in the changelogs. The diffs ignore any releases that were omitted from the changelog. This is mainly an issue with older releases, so it seemed acceptable. All releases have been documented for a couple of years now, and will be going forward as well. The name of the "Current Develop Branch" section was changed to "Unreleased" to confirm with "keep a changelog". The `auto-changelog.js` script has been updated to update/add these links whenever adding a new release header as well. [1]: https://keepachangelog.com/en/1.0.0/ * Refactoring permissions.spec.js to use fixtures (#10829) * Add validation for the `fee` property from the `/trades` API response (#10836) * Refactoring signature-request.spec.js to use fixtures (#10820) * use locator abstraction in tests folder (#10833) * Move BSC chain ID, rename some BSC-related vars (#10807) * Add categories to each changelog release (#10837) Each changelog release now has category headers. The standard "keep a changelog" [1] categories are used, along with the addition of "Uncategorized" for any changes that have not yet been categorized. The changelog script has been updated to add this "Uncategorized" header if it isn't already present, and to place any new commits under this header. The changelog has been updated to property categorize each change in recent releases, and to place changes in older releases under the header "Uncategorized". [1]: https://keepachangelog.com/en/1.0.0/ * Remove unused CI script (#10840) This script has not been used since #10795. It is now gone. * Add `--rc` flag to changelog script (#10839) The changelog script now accepts an `--rc` flag to tell it whether to add new changes to `Unreleased` or to the header for the current version. Previously this was inferred from whether the current version matched the most recent tag. However this method only works for the first update. Using a flag simplifies this logic, and makes it possible to manually re-run this for further updates to a release candidate. * Add `--help` flag to changelog script (#10846) The changelog script now accepts a `--help` flag, which prints a help text explaining how the script works and what each flag does. * add abstraction for waitForSelector (#10844) * Adds jest dependency (#10845) * Add Jest * Refactor changelog parsing and generation (#10847) The `auto-changelog.js` script has been refactoring into various different modules. This was done in preparation for migrating this to a separate repository, where it can be used in our libraries as well. Functionally this should act _mostly_ the same way, but there have been some changes. It was difficult to make this a pure refactor because of the strategy used to validate the changelog and ensure each addition remained valid. Instead of being updated in-place, the changelog is now parsed upfront and stored as a "Changelog" instance, which is a new class that was written to allow only valid changes. The new changelog is then stringified and completely overwrites the old one. The parsing had to be much more strict, as any unanticipated content would otherwise be erased unintentionally. This script now also normalizes the formatting of the changelog (though the individual change descriptions are still unformatted). The changelog stringification now accommodates non-linear releases as well. For example, you can now release v1.0.1 *after* v2.0.0, and it will be listed in chronological order while also correctly constructing the `compare` URLs for each release. * Increase default slippage from 2% to 3%, show Advanced Options by default (#10842) * Increase default slippage from 2% to 3%, show Advanced Options by default * Disable opening / closing of Advanced Options on the Swap page * Pre-select previously used slippage value when going back to the Swap page * Fix lint issues * Use a callback for setting up an initial customValue * Migrate unreleased changes in changelog (#10853) When updating the changelog for a release candidate, any unreleased changes are now migrated to the release header. Generally we don't make a habit of adding changes to the changelog prior to creating a release candidate, but if any are there we certainly don't want them duplicated. * @metamask/eslint-config*@6.0.0 (#10858) * @metamask/eslint-config*@6.0.0 * Minor eslintrc reorg * Refactoring threebox.spec.js to use fixtures (#10849) * Adjust renderWithProvider to accommodate redux-less components (#10857) * Jest config (#10855) * Setup jest config * Adjust test for jest. * Adjust lint config * Omit swaps ui folder for unit testing * Omit swaps from test:unit:lax * Add jest.config.js to script files * Restore mocks rather than clearing them. * Update jest config and adjust lint to include subdirs * Convert view-quote-price-difference test to jest * Add jest ci and ci coverage scripts. Add jest unit test to general test command * Add test coverage to ci * Use --ignore flag * Fixup * Add @metamask/eslint-config-jest * Update .eslintrc.js Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Adds jest-coverage/ Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Add jest-coverage/ to prettierignore (#10865) * Add jest coverage (#10868) * Add jest coverage This will add coverage for any tests ran in jest under the `test:coverage:jest` command, which is currently being used in CI. I set the values to the current test coverage in `ui/app/pages/swaps`. * Lint * Fix crash when adding new changelog release header (#10870) The `auto-changelog.js` script crashes when trying to add a new release header. This bug was introduced in #10847. The cause was a simple misnamed parameter. * Change caching for Swaps APIs from 1 hour to 5 minutes (#10871) * Change caching for the /tokens API from 1 hour to 5 minutes * Use 5 minutes caching for /topAssets and /aggregatorMetadata APIs as well * add key literals to driver (#10854) * Quote globs in prettier scripts (#10867) * use waitForSelector instead of until (#10852) * complete abstraction of until method * response to feedback * Adding recovery phrase video to onboarding process (#10717) * Adding recovery phrase video to onboarding process Adding english subtitles * Support textAlign in Box, converting sidebar to Box * Reduce calls of the `/featureFlag` API (#10859) * Remove periodic calls to the /featureFlag API * Always show the Swap button on the main page * Check if the Swaps feature is enabled, show loading animation while waiting * Reuse an existing useEffect call * Use ‘isFeatureFlagLoaded’ in React’s state, resolve lint issues * Add a watch mode for Jest testing * Add unit tests for Swaps: fetchSwapsLiveness, add /ducks/swaps into Jest testing * Remove Swaps Jest tests from Mocha’s ESLint rules * Ignore Swaps Jest tests while running Mocha, update paths * Increase test coverage to the current max * Fix ESLint issues for Swaps * Enable the Swaps feature by default and after state reset, remove loading screen before seeing Swaps * Update Jest config, fix tests * Update Jest coverage threshold to the current maximum * Update ESLint rule in jest.config.js * Disable the “Review Swap” button if the feature flag hasn’t loaded yet * Update jest threshold * Fix 10036 - Prevent odd localStorage migration error in Firefox (#10884) * Add jest watch mode script (#10869) * Refactoring metamask-responsive-ui.spec.js to use fixtures (#10866) * Handling infura blockage (#10883) * Handling infura blockage * Adding blockage home notification * Updating copy, adding temporary notification dismissal * Addressing review feedback * Using eth_blockNumber method to check Infura availability * Handling network changes in availability check * Use jest to run ui/**/*.test.js (#10885) * upgrade ethereumjs util (#10886) * Swaps: Show a network name dynamically in a tooltip (#10882) * Swaps: Show a network name dynamically in a tooltip * Replace “Ethereum” with “$1”, change “Test” to “Testnet” * Replace 이더리움 with $1 * Translate network names, use ‘Ethereum’ by default if a translation is not available yet * Reorder messages to resolve ESLint issues * Add a snapshot test for the FeeCard component, increase Jest threshold * Enable snapshot testing into external .snap files in ESLint * Add the “networkNameEthereum” key in ko/messages.json, remove default “Ethereum” value * Throw an error if chain ID is not supported by the Swaps feature * Use string literals when calling the `t` fn, * Adding option to set Custom Nonce to Confirm Approve Page (#10595) * Dep Upgrades for Lavamoat Patches (#10902) * dep upgrades * apply more patches * Dep upgrades and patches (#10903) * apply patches * lavamoat dep upgrades * remove lavamoat browserify * Increase Jest unit test coverage for the Swaps feature to ~25% (#10900) * Swaps: Show a network name dynamically in a tooltip * Replace “Ethereum” with “$1”, change “Test” to “Testnet” * Replace 이더리움 with $1 * Translate network names, use ‘Ethereum’ by default if a translation is not available yet * Reorder messages to resolve ESLint issues * Add a snapshot test for the FeeCard component, increase Jest threshold * Enable snapshot testing into external .snap files in ESLint * Add the “networkNameEthereum” key in ko/messages.json, remove default “Ethereum” value * Throw an error if chain ID is not supported by the Swaps feature * Use string literals when calling the `t` fn, * Watch Jest tests silently (no React warnings in terminal, only errors) * Add @testing-library/jest-dom, import it before running Jest tests * Add snapshot testing of Swaps’ React components for happy paths, increase minimum threshold for Jest * Add the test/jest folder for Jest setup and shared functions, use it in Swaps Jest tests * Fix ESLint issues, update linting config * Enable ESLint for .snap files (Jest snapshots), throw an error if a snapshot is bigger than 50 lines * Don’t run lint:fix for .snap files * Move `createProps` outside of `describe` blocks, move store creation inside tests * Use translations instead of keys, update a rendering function to load translations * Make sure all Jest snapshots are shorter than 50 lines (default limit) * Add / update props for Swaps tests * Fix React warnings when running tests for Swaps * Bump @metamask/contract-metadata from 1.23.0 to 1.25.0 (#10899) Bumps [@metamask/contract-metadata](https://github.com/MetaMask/contract-metadata) from 1.23.0 to 1.25.0. - [Release notes](https://github.com/MetaMask/contract-metadata/releases) - [Commits](https://github.com/MetaMask/contract-metadata/compare/v1.23.0...v1.25.0) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Refactoring from-import-ui.spec.js to use fixtures (#10907) * Fix 10458 - Understand where to get support (#10895) * Add contract address validation for token swaps (#10912) * Fixing ENS input entry in send flow (#10923) * Fixing ENS input entry in send flow Fixes MetaMask/metamask-extension#10691 * removed unnecessary apostrophe * Refactoring incremental-security.spec.js to use fixtures (#10917) * use one segment instance (#10915) * Implement Ledger Live bridge (#10293) * add view account-details menu item to token-options menu (#10932) * add view account-details menu item to token-options menu * add onViewAccountDetails propType * Fix 10609 - Prevent overflow of confirmation page hostname (#10935) * upgrade eth-keyring-controller (#10933) * [Fix] 10365 My Accounts Removal (#10680) * pushing my-accounts removal * removed CONTACT_MY_ACCOUNTS_ROUTE * removed CONTACT_MY_ACCOUNTS_VIEW_ROUTE * removing CONTACT_MY_ACCOUNTS_EDIT_ROUTE * removing CONTACT_MY_ACCOUNTS_EDIT_ROUTE * removed showingMyAccounts dead code * removed more dead code related to isMyAccountsPage * removing more dead code * fixed linting error(s) * removing my-accounts component/folder * added empty contact screen ui * styled empty contact page ui * fixed linting, removed add contacts button, and fixed errors * localized text and centered No Contacts * pushing localized verification and fixed e2e test * added listRoute redirect * added listroute and fixed linting error * Increase Jest unit test coverage for the Swaps feature to ~43% (#10934) * add hamburger menu to eth page (#10938) * add hamburger menu to eth page * change token-options to asset-options, use more direct selector for user address fetch * use token custom icons where possible (#10939) * Whats new popup (#10583) * Add 'What's New' notification popup * Move selectors from shared/notifications into ui/ directory * Use keys for localized message in whats new notifications objects, to ensure notifications will be translated. * Remove unused swaps intro popup locale messages * Fix keys of whats new notification locales * Remove notifications messages and descriptions from comment in shared/notifications * Move notifcationActionFunctions to shared/notifications and make it stateless * Get notification data from constants instead of state in whats-new-popup * Code cleanup * Fix build quote reference to swapsEthToken, broken during rebase * Rename notificationFilters to notificationToExclude to clarify its purpose * Documentation for getSortedNotificationsToShow * Move notification action functions from shared/ to whats-new-popup.js * Stop setting swapsWelcomeMessageHasBeenShown to state in app-state controller * Update e2e tests for whats new popup changes * Updating migration files * Addressing feedback part 1 * Addressing feedback part 2 * Remove unnecessary div in whats-new-popup * Change getNotificationsToExclude to getNotificationsToInclude for use in the getSortedNotificationsToShow selector * Delete intro-popup directory and test files * Lint fix * Add notifiction state to address-entry fixture * Use two separate functions for rendering first and subsequent notifications in the whats-new-popup * Ensure that string literals are passed to t for whats new popup text * Update import-ui fixtures to include notificaiton controller state * Remove unnecessary, accidental change confirm-approve * Remove swaps notification in favour of mobile swaps as first notifcation and TBD 3rd notification * Update whats-new-popup to use intersection observer api to detect if notification has been seen * Add notifications to send-edit and threebox e2e test fixtures * Update ui/app/selectors/selectors.js Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Update ui/app/selectors/selectors.js Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Clean up locale code for whats-new-popup notifications * Disconnect observers in whats-new-popup when their callback is first called * Add test case for migration 58 for when the AppStateController does not exist * Rename popover components containerRef to popoverWrapRef * Fix messages.json * Update notification messages and images * Rename popoverWrapRef -> popoverRef in whats-new-popup and popover.component * Only create one observer, and only after images have loaded, in whats-new-popup * Set width and height on whats-new-popup image, instead of setting state on img load * Update ui/app/components/app/whats-new-popup/whats-new-popup.js Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Code clean up in whats new popup re: notification rendering and action functions * Code cleanup in render notification functions of whats-new-popup * Update ui/app/components/app/whats-new-popup/whats-new-popup.js Co-authored-by: Mark Stacey <markjstacey@gmail.com> * lint fix * Update and localize notification dates * Clean up date code in shred/notifications/index.js Co-authored-by: ryanml <ryanlanese@gmail.com> Co-authored-by: Mark Stacey <markjstacey@gmail.com> * Revert "Implement Ledger Live bridge (#10293)" This reverts commit 15b596ad15f2d569255c39e5e7babc8b7ab700ca. * Version v9.5.0 * Update changelog for v9.5.0 * yarn allow-scripts and yarn lavamoat:auto for Version-v9.5.0 branch * Anchor the Need Help text to the bottom of the expanded page (#10955) * fix transaction sync logic (#10954) * Add backwards compatibility for ETH <-> WETH contract address validation (#10962) * Whats new popup design fixes (#10964) * Remove padding on QR code image * Allow the qr code to be below the description in the whats new popup * Fix size and position of QR code in whats new notification * Add right caret to action links in whats new popup * Clean up placeImageBelowDescription logic * Fix display of whats-new-popup image * Improve spacing and sizing of whats new popup in both full screen and popup view * refactor * Ensure method of adding contact when contacts exist (#10963) * Fixing alignment issue with bottom notification (#10979) * Revert "Adding recovery phrase video to onboarding process (#10717)" This reverts commit 9e918b602655e0e4620ab19a3959a8fc08ec0f47. * Removing recovery video entry from changelog * Remove tests that are only needed for the commit reverted in 68c5defc * Fix dependency vulnerability by upgrading xmlhttprequest-ssl via yarn.lock (#10990) Co-authored-by: Mark Stacey <markjstacey@gmail.com> Co-authored-by: Barry Gitarts <bgitarts@gmail.com> Co-authored-by: Dan J Miller <danjm.com@gmail.com> Co-authored-by: Erik Marks <25517051+rekmarks@users.noreply.github.com> Co-authored-by: Brad Decker <git@braddecker.dev> Co-authored-by: ryanml <ryanlanese@gmail.com> Co-authored-by: David Walsh <davidwalsh83@gmail.com> Co-authored-by: Niranjana Binoy <43930900+NiranjanaBinoy@users.noreply.github.com> Co-authored-by: Shane <jonas.shane@gmail.com> Co-authored-by: gitpurva <47534619+gitpurva@users.noreply.github.com> Co-authored-by: kumavis <kumavis@users.noreply.github.com> Co-authored-by: Etienne Dusseault <etienne.dusseault@gmail.com> Co-authored-by: kumavis <aaron@kumavis.me> Co-authored-by: Grant Bakker <grant@bakker.pw> Co-authored-by: Michael Standen <screaminghawk@gmail.com> Co-authored-by: Muhammet Kara <mrkara@users.noreply.github.com> Co-authored-by: Daniel <80175477+dan437@users.noreply.github.com> Co-authored-by: Thomas Huang <tmashuang@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Thomas <thomas.b.huang@gmail.com> Co-authored-by: Alex Donesky <alex.donesky@consensys.net> Co-authored-by: Austin Akers <austin.akers5@gmail.com> Co-authored-by: MetaMask Bot <metamaskbot@users.noreply.github.com>
4 years ago
"message": "网络手续费包括处理您的兑换和在以太坊($1)网络上存储的成本。MetaMask 不从这笔费用中获利。"
},
"swapNewQuoteIn": {
"message": "$1 后更新报价",
"description": "Tells the user the amount of time until the currently displayed quotes are update. $1 is a time that is counting down from 1:00 to 0:00"
},
"swapOnceTransactionHasProcess": {
"message": "一旦交易完成,您的 $1 将被添加到您的账户中。",
"description": "This message communicates the token that is being transferred. It is shown on the awaiting swap screen. The $1 will be a token symbol."
},
"swapPriceDifference": {
"message": "您将兑换 $1 $2(~$3)为 $4 $5(~$6)。",
"description": "This message represents the price slippage for the swap. $1 and $4 are a number (ex: 2.89), $2 and $5 are symbols (ex: ETH), and $3 and $6 are fiat currency amounts."
},
"swapPriceDifferenceTitle": {
"message": "价格差异 ~$1%",
"description": "$1 is a number (ex: 1.23) that represents the price difference."
},
"swapPriceDifferenceTooltip": {
"message": "市场价格的差异可能受到中介机构收取的费用、市场规模、交易规模或市场效率低下的影响。"
},
"swapPriceDifferenceUnavailable": {
"message": "市场价格不可用。 请确认您对退回的数额感到满意后再继续。"
},
"swapProcessing": {
"message": "处理中"
},
"swapQuoteDetails": {
"message": "报价详情"
},
"swapQuoteDetailsSlippageInfo": {
"message": "如果在您下订单和确认订单之间的价格发生了变化,这就叫做\"滑点\"。如果滑点超过您的\"最大滑点\"设置,您的兑换将自动取消。"
},
"swapQuoteIncludesRate": {
"message": "报价包含 $1% MetaMask 手续费",
"description": "Provides information about the fee that metamask takes for swaps. $1 is a decimal number."
},
"swapQuoteNofN": {
"message": "报价 $1 / $2",
"description": "A count of loaded quotes shown to the user while they are waiting for quotes to be fetched. $1 is the number of quotes already loaded, and $2 is the total number of quotes to load."
},
"swapQuoteSource": {
"message": "报价来源"
},
"swapQuotesAreRefreshed": {
"message": "报价会经常刷新,以反映当前的市场状况。"
},
"swapQuotesExpiredErrorDescription": {
"message": "请请求新的报价,以获得最新的价格。"
},
"swapQuotesExpiredErrorTitle": {
"message": "报价超时"
},
"swapQuotesNotAvailableErrorDescription": {
"message": "尝试调整滑点数量设置,并再试一次。"
},
"swapQuotesNotAvailableErrorTitle": {
"message": "无可用报价"
},
"swapRate": {
"message": "费率"
},
"swapReceiving": {
"message": "接收"
},
"swapReceivingInfoTooltip": {
"message": "这是一个预估数额。确切的数额取决于滑点。"
},
"swapRequestForQuotation": {
"message": "请求报价"
},
"swapSearchForAToken": {
"message": "搜索代币"
},
"swapSelect": {
"message": "选择"
},
"swapSelectAQuote": {
"message": "选择一个报价"
},
"swapSelectAToken": {
"message": "选择一个代币"
},
"swapSelectQuotePopoverDescription": {
"message": "以下是从多个流动资金来源收集到的所有报价。"
},
"swapSource": {
"message": "流动资金来源"
},
"swapSourceInfo": {
"message": "我们搜索多个流动性来源(交易所、聚合商和专业做市商),以找到最好的利率和最低的网络手续费。"
},
"swapSwapFrom": {
"message": "兑换自"
},
"swapSwapSwitch": {
"message": "切换兑换代币方向"
},
"swapSwapTo": {
"message": "兑换到"
},
"swapThisWillAllowApprove": {
"message": "这样将允许 $1 用于兑换。"
},
"swapTokenAvailable": {
"message": "您的 $1 已添加到您的账户。",
"description": "This message is shown after a swap is successful and communicates the exact amount of tokens the user has received for a swap. The $1 is a decimal number of tokens followed by the token symbol."
},
"swapTokenToToken": {
"message": "兑换 $1 到 $2",
"description": "Used in the transaction display list to describe a swap. $1 and $2 are the symbols of tokens in involved in a swap."
},
"swapTransactionComplete": {
"message": "交易完成"
},
"swapUnknown": {
"message": "未知的"
},
"swapUsingBestQuote": {
"message": "使用最好的报价"
},
"swapVerifyTokenExplanation": {
Version v9.3.0 RC (#10739) * Replace logic for eth swap token in fetchQuotesAndSetQuoteState with getSwapsEthToken call (#10624) * Move swaps constants to the shared constants directory (#10614) * Fix: ETH 'token' now only appears once in the swaps to and from dropdowns. (#10650) * Swaps support for local testnet (#10658) * Swaps support for local testnet * Create util method for comparison of token addresses/symbols to default swaps token * Get chainId from txMeta in _trackSwapsMetrics of transaction controller * Add comment to document purpose of getTransactionGroupRecipientAddressFilter * Use isSwapsDefaultTokenSymbol in place of repeated defaultTokenSymbol comparisons in build-quote.js * Additional swaps network support (#10721) * Add swaps support for bnc chain * Use single default token address in shared/constants/swaps * Ensure swaps gas prices are fetched from the correct chain specific endpoint (#10744) * Ensure swaps gas prices are fetched from the correct chain specific endpoint * Just rely on fetchWithCache to cache swaps gas prices, instead of directly using storage in getSwapsPriceEstimatesLastRetrieved * Empty commit * update @metamask/etherscan-link to v2.0.0 (#10747) * Use correct block explorer name and link in swaps when on custom network (#10743) * Use correct block explorer name and link in swaps when on custom network. * Fix up custom etherscan link code in build-quote.js * Use blockExplorerUrl hostname instead of 'blockExplorerBaseUrl' * Use correct etherscan-link method for token links in build-quote * Create correct token link in build-quote for mainnet AND custom networks * Block explorer url improvements in awaiting-swap.js and build-quote.js * Use swapVerifyTokenExplanation message with substitutable block explorer for all applicable locales * Ensure that block explorer links are not shown in awaiting-swap if no url is available * Ensure that the correct default currency symbols are used for fees on the view quote screen (#10753) * Updating y18n and netmask to resolve dependency issues (#10765) netmask@1.0.6 -> 2.0.1, y18n@3.2.1 -> 3.2.2, y18n@4.0.0 -> 4.0.1 * Ensure that priceSlippage fiat amounts are always shown in view-quote.js (#10762) * Ensure that the approval fee in the swaps custom gas modal is in network specific currency (#10763) * Use network specific swaps contract address when checking swap contract token approval (#10774) * Set the BSC_CONTRACT_ADDRESS to lowercase (#10800) * Ensure correct primary currency image is displayed on home screen and token list (#10777) * [skip e2e] Update changelog for v9.3.0 (#10740) * Version v9.3.0 * [skip e2e] Update changelog for v9.3.0 (#10803) Co-authored-by: Dan J Miller <danjm.com@gmail.com> Co-authored-by: ryanml <ryanlanese@gmail.com> Co-authored-by: David Walsh <davidwalsh83@gmail.com> Co-authored-by: MetaMask Bot <metamaskbot@users.noreply.github.com>
4 years ago
"message": "多个代币可以使用相同的名称和符号。检查 $1(以太坊浏览器)以确认这是您正在寻找的代币。",
"description": "This appears in a tooltip next to the verifyThisTokenOn message. It gives the user more information about why they should check the token on a block explorer. $1 will be the name or url of the block explorer, which will be the translation of 'etherscan' or a block explorer url specified for a custom network."
},
"swapViewToken": {
"message": "查看 $1"
},
"swapYourTokenBalance": {
"message": "$1 $2 可用",
"description": "Tells the user how much of a token they have in their balance. $1 is a decimal number amount of tokens, and $2 is a token symbol"
},
"swapZeroSlippage": {
"message": "0% 滑点"
},
"swapsAdvancedOptions": {
"message": "高级选项"
},
"swapsExcessiveSlippageWarning": {
"message": "滑点数额太高,会导致不良率。请将滑点设置降低到 15% 以下。"
},
"swapsMaxSlippage": {
"message": "最大滑点"
},
"swapsNotEnoughForTx": {
"message": "没有足够的 $1 来完成此交易",
"description": "Tells the user that they don't have enough of a token for a proposed swap. $1 is a token symbol"
},
"swapsViewInActivity": {
"message": "在活动中查看"
},
"switchNetworks": {
"message": "切换网络"
},
"switchToThisAccount": {
"message": "切换到该账户"
},
"symbol": {
"message": "符号"
},
"symbolBetweenZeroTwelve": {
"message": "符号不得超过 11 个字符。"
},
"syncWithMobile": {
"message": "使用移动设备同步"
},
"syncWithMobileBeCareful": {
"message": "扫描这个代码时,请确保附近没有其他人在看您的屏幕。"
},
"syncWithMobileComplete": {
"message": "您的数据已同步成功。尽情体验 MetaMask 应用程序!"
},
"syncWithMobileDesc": {
"message": "您可以使用个人移动设备同步个人账户与信息。打开 MetaMask 移动应用程序,进入“设置”选项,点击“通过浏览器扩展程序同步”"
},
"syncWithMobileDescNewUsers": {
"message": "如果您是首次启用 MetaMask 移动应用程序,请通过个人手机完成如下操作。"
},
"syncWithMobileScanThisCode": {
"message": "使用 MetaMask 应用程序扫描代码"
},
"syncWithMobileTitle": {
"message": "使用移动设备进行同步"
},
"syncWithThreeBox": {
"message": "使用 3Box 同步数据(实验功能)"
},
"syncWithThreeBoxDescription": {
"message": "开启后可以用 3Box 备份您的设置。此功能目前是实验功能,使用时风险自负。"
},
"syncWithThreeBoxDisabled": {
"message": "由于初始同步过程中出现错误,3Box 已被禁用。"
},
"terms": {
"message": "使用条款"
},
"termsOfService": {
"message": "服务条款"
},
7 years ago
"testFaucet": {
7 years ago
"message": "测试水管"
7 years ago
},
"thisWillCreate": {
"message": "将为您创建新的钱包账户和账户助记词"
},
"tips": {
"message": "小贴士"
},
7 years ago
"to": {
7 years ago
"message": "至"
7 years ago
},
"toAddress": {
"message": "至:$1",
"description": "$1 is the address to include in the To label. It is typically shortened first using shortenAddress"
},
"toWithColon": {
"message": "至:"
},
"token": {
"message": "代币"
},
"tokenAlreadyAdded": {
"message": "代币已添加。"
},
"tokenContractAddress": {
"message": "代币合约地址"
},
"tokenSymbol": {
"message": "代币符号"
},
7 years ago
"total": {
"message": "总额"
7 years ago
},
"transaction": {
"message": "交易"
},
"transactionCancelAttempted": {
"message": "尝试取消交易 $2,燃料费用:$1。"
},
"transactionCancelSuccess": {
"message": "取消交易成功 $2。"
},
"transactionConfirmed": {
"message": "交易已确认 $2。"
},
"transactionCreated": {
"message": "交易已创建 $2,交易数额:$1。"
},
"transactionDropped": {
"message": "交易终止 $2。"
},
"transactionError": {
"message": "交易出错。合约代码执行异常。"
},
"transactionErrorNoContract": {
"message": "试图在一个非合约地址上调用一个函数。"
},
"transactionErrored": {
"message": "交易出现错误。"
},
"transactionFee": {
"message": "交易费"
},
"transactionResubmitted": {
"message": "重新提交交易 $2,交易费升至:$1。"
},
"transactionSubmitted": {
"message": "交易已提交 $2,交易费:$1。"
},
"transactionUpdated": {
"message": "交易更新时间 $2。"
},
"transfer": {
"message": "转账"
},
"transferBetweenAccounts": {
"message": "在我的账户间转账"
},
"transferFrom": {
"message": "转自"
},
"troubleConnectingToWallet": {
"message": "我们在连接您的 $1 遇到问题,尝试检查 $2 并重试。",
"description": "$1 is the wallet device name; $2 is a link to wallet connection guide"
},
7 years ago
"troubleTokenBalances": {
"message": "我们无法加载您的代币余额。您可以查看它们",
"description": "Followed by a link (here) to view token balances"
},
"trustSiteApprovePermission": {
"message": "您信任这个网站吗?授权即表示您允许 $1 提取您的 $2,并为您自动进行交易。",
"description": "$1 is the url requesting permission and $2 is the symbol of the currency that the request is for"
7 years ago
},
"tryAgain": {
"message": "重试"
},
7 years ago
"typePassword": {
"message": "输入您的 MetaMask 密码"
7 years ago
},
"unapproved": {
"message": "未批准"
7 years ago
},
"units": {
"message": "数量"
},
7 years ago
"unknown": {
"message": "未知"
},
"unknownCameraError": {
"message": "尝试获取相机使用权限时报错。请重试……"
},
"unknownCameraErrorTitle": {
"message": "哎呀!出问题了……"
},
7 years ago
"unknownNetwork": {
"message": "未知的私有网络"
7 years ago
},
"unknownQrCode": {
"message": "错误:无法识别该二维码"
},
"unlimited": {
"message": "无限制"
},
"unlock": {
"message": "解锁"
},
"unlockMessage": {
"message": "即将进入去中心化网络"
},
"updatedWithDate": {
"message": "已更新 $1"
7 years ago
},
"urlErrorMsg": {
"message": "URL 需要相应的 HTTP/HTTPS 前缀。"
},
"urlExistsErrorMsg": {
"message": "URL 已经存在于现有的网络列表中"
},
"usePhishingDetection": {
"message": "使用网络钓鱼检测"
},
"usePhishingDetectionDescription": {
"message": "显示针对 Ethereum 用户钓鱼域名的警告。"
},
7 years ago
"usedByClients": {
7 years ago
"message": "可用于各种不同的客户端"
7 years ago
},
"userName": {
"message": "名称"
},
"verifyThisTokenOn": {
"message": "在 $1 上验证此代币",
"description": "Points the user to etherscan as a place they can verify information about a token. $1 is replaced with the translation for \"etherscan\""
},
7 years ago
"viewAccount": {
7 years ago
"message": "查看账户"
7 years ago
},
"viewContact": {
"message": "查看联系人"
},
"viewOnCustomBlockExplorer": {
"message": "在 $1 查看"
},
"viewOnEtherscan": {
"message": "在 Etherscan(以太坊浏览器)上查看"
},
"viewinExplorer": {
"message": "在浏览器中查看"
},
"visitWebSite": {
"message": "访问我们的网站"
},
"walletConnectionGuide": {
"message": "我们的硬件钱包连接指南"
},
"walletSeed": {
"message": "账户助记词"
},
"web3ShimUsageNotification": {
"message": "我们发现当前的网站尝试使用已经删除的 window.web3 API。如果这个网站网站已经无法正常使用,请点击 $1 获取更多信息。",
"description": "$1 is a clickable link."
},
"welcome": {
"message": "欢迎使用 MetaMask"
},
"welcomeBack": {
"message": "欢迎回来!"
},
"whatsThis": {
"message": "这是什么?"
},
"writePhrase": {
"message": "请将该账户助记词记录在纸上,并保存在安全的地方。如果希望提升信息安全性,请将信息记录在多张纸上,并分别保存在 2 - 3 个不同的地方。"
},
"xOfY": {
"message": "$1 / $2",
"description": "$1 and $2 are intended to be two numbers, where $2 is a total, and $1 is a count towards that total"
},
"yesLetsTry": {
"message": "是的,尝试下"
},
"youNeedToAllowCameraAccess": {
"message": "需要开启相机访问权限,才能使用该功能。"
},
7 years ago
"youSign": {
7 years ago
"message": "正在签名"
},
"yourPrivateSeedPhrase": {
"message": "您的账户助记词"
},
"zeroGasPriceOnSpeedUpError": {
"message": "加速时无燃料价格"
}
}