diff --git a/CHANGELOG.md b/CHANGELOG.md index ec0797cc125..e6314215221 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,103 @@ ## Current Main Branch +## 7.30.0 - Sep 6, 2024 +### Added +- [#10748](https://github.com/MetaMask/metamask-mobile/pull/10748): feat: Add yarn flipper script (#10748) +- [#10739](https://github.com/MetaMask/metamask-mobile/pull/10739): feat: Feat/add redux debugger (#10739) +- [#10589](https://github.com/MetaMask/metamask-mobile/pull/10589): feat: Feat/10521 react-native-performance mvp for measuring app start + JS bundle load times (#10589) +- [#10696](https://github.com/MetaMask/metamask-mobile/pull/10696): feat: Update @blockaid/ppom_release to release 1.5.2 (#10696) +- [#10718](https://github.com/MetaMask/metamask-mobile/pull/10718): feat: update add team label workflow (#10718) +- [#10682](https://github.com/MetaMask/metamask-mobile/pull/10682): feat: 2794 account edit permission multichain bottomsheet UI changes only (#10682) +- [#10542](https://github.com/MetaMask/metamask-mobile/pull/10542): feat: add warning banner to custom network bottom sheet (#10542) +- [#10519](https://github.com/MetaMask/metamask-mobile/pull/10519): feat: multichain popular network dapp connection confirmation bottomsheet (#10519) +- [#10393](https://github.com/MetaMask/metamask-mobile/pull/10393): feat(ramp): add property to provider selected event (#10393) +- [#10395](https://github.com/MetaMask/metamask-mobile/pull/10395): feat(ramp): add amounts to quotes received event (#10395) +- [#10596](https://github.com/MetaMask/metamask-mobile/pull/10596): feat: select multi rpc UI (#10596) +- [#10123](https://github.com/MetaMask/metamask-mobile/pull/10123): feat: improve add network fields checkers (#10123) +- [#9950](https://github.com/MetaMask/metamask-mobile/pull/9950): feat: QR-based add NGRAVE ZERO Hardware (#9950) + +### Changed +- [#10746](https://github.com/MetaMask/metamask-mobile/pull/10746): chore: fix another batch of TS errors (#10746) +- [#10735](https://github.com/MetaMask/metamask-mobile/pull/10735): chore: Add E2E folders to sonar exclusion list (#10735) +- [#10697](https://github.com/MetaMask/metamask-mobile/pull/10697): chore: Add more typescript fixes (#10697) +- [#10549](https://github.com/MetaMask/metamask-mobile/pull/10549): chore: New Crowdin translations by Github Action (#10549) +- [#10732](https://github.com/MetaMask/metamask-mobile/pull/10732): chore: ignore errors that are fixed on TS v5 (#10732) +- [#10710](https://github.com/MetaMask/metamask-mobile/pull/10710): chore: remove tsc issues of node_modules (#10710) +- [#10670](https://github.com/MetaMask/metamask-mobile/pull/10670): chore: Implement TypeScript for Ramp folder (#10670) +- [#10285](https://github.com/MetaMask/metamask-mobile/pull/10285): chore: enable webview debugging for all builds but prod (#10285) +- [#10698](https://github.com/MetaMask/metamask-mobile/pull/10698): chore: Ignore TS issues on snaps directory (#10698) +- [#10636](https://github.com/MetaMask/metamask-mobile/pull/10636): test: Update ios simulator to iphone 15 (#10636) +- [#10707](https://github.com/MetaMask/metamask-mobile/pull/10707): chore: Fix TS errors in batch of components/UI folder (#10707) +- [#10720](https://github.com/MetaMask/metamask-mobile/pull/10720): test: disable sonar on E2E folder (#10720) +- [#10603](https://github.com/MetaMask/metamask-mobile/pull/10603): chore: reverting chainID 1338 (#10603) +- [#10709](https://github.com/MetaMask/metamask-mobile/pull/10709): chore: Bump version 1398 RC3 (#10709) +- [#10700](https://github.com/MetaMask/metamask-mobile/pull/10700): chore: removing unused component (#10700) +- [#10690](https://github.com/MetaMask/metamask-mobile/pull/10690): chore: Prevent crash when engine is not initialized (#10690) +- [#10587](https://github.com/MetaMask/metamask-mobile/pull/10587): chore: Typescript Views folder part 3 - 1 (#10587) +- [#10672](https://github.com/MetaMask/metamask-mobile/pull/10672): chore: TS coverage on views folder part 3 - 2 (#10672) +- [#10665](https://github.com/MetaMask/metamask-mobile/pull/10665): chore: Views directory ts coverage - part 1 (#10665) +- [#10675](https://github.com/MetaMask/metamask-mobile/pull/10675): chore: typescript no check on notifications directory (#10675) +- [#10594](https://github.com/MetaMask/metamask-mobile/pull/10594): chore: Typescript Views folder part 3 - 3 (#10594) +- [#10681](https://github.com/MetaMask/metamask-mobile/pull/10681): chore: blockaid and fav icon test files ts errors (#10681) +- [#10561](https://github.com/MetaMask/metamask-mobile/pull/10561): chore: 10311 transactions simulation dir (#10561) +- [#10663](https://github.com/MetaMask/metamask-mobile/pull/10663): chore: Update axios to v1.7.4 (#10663) +- [#10645](https://github.com/MetaMask/metamask-mobile/pull/10645): chore: confirmations directory ts coverage (#10645) +- [#10653](https://github.com/MetaMask/metamask-mobile/pull/10653): chore: skip flakey test (#10653) +- [#10557](https://github.com/MetaMask/metamask-mobile/pull/10557): test: Bump Detox version from v20.20.3 to v20.23.1 (#10557) +- [#10609](https://github.com/MetaMask/metamask-mobile/pull/10609): chore: Cherry pick new terms of use (#10609) +- [#10537](https://github.com/MetaMask/metamask-mobile/pull/10537): chore: TS coverage UI folder part 1 (#10537) +- [#10538](https://github.com/MetaMask/metamask-mobile/pull/10538): chore: Update terms of use modal (#10538) +- [#10559](https://github.com/MetaMask/metamask-mobile/pull/10559): chore: Create app launch times pipeline (#10559) +- [#10575](https://github.com/MetaMask/metamask-mobile/pull/10575): chore: enable sonar on E2E (#10575) +- [#10307](https://github.com/MetaMask/metamask-mobile/pull/10307): chore: Fix some TS errors in component library (#10307) +- [#10578](https://github.com/MetaMask/metamask-mobile/pull/10578): chore: audit override (#10578) +- [#10576](https://github.com/MetaMask/metamask-mobile/pull/10576): chore: merge 7.28.0 (#10576) +- [#10510](https://github.com/MetaMask/metamask-mobile/pull/10510): chore: update Android SDK to API Level 34 (#10510) +- [#10553](https://github.com/MetaMask/metamask-mobile/pull/10553): chore: move detox setup into its own script (#10553) +- [#10354](https://github.com/MetaMask/metamask-mobile/pull/10354): chore: New Crowdin translations by Github Action (#10354) +- [#10546](https://github.com/MetaMask/metamask-mobile/pull/10546): chore: add runway bot to CLA allow list (#10546) +- [#10535](https://github.com/MetaMask/metamask-mobile/pull/10535): chore: Optimize/10528 remove generated svgs (#10535) +- [#10534](https://github.com/MetaMask/metamask-mobile/pull/10534): chore: chore/7.29.0-Changelog (#10534) +- [#10712](https://github.com/MetaMask/metamask-mobile/pull/10712): test: Refactor AdvancedView.js (#10712) +- [#10536](https://github.com/MetaMask/metamask-mobile/pull/10536): test: Refactor RequestPaymentView page object (#10536) +- [#10647](https://github.com/MetaMask/metamask-mobile/pull/10647): chore: updated in-app review to comply with SDK 14 on Android (#10647) +- [#10437](https://github.com/MetaMask/metamask-mobile/pull/10437): chore: Bump @metamask/smart-transactions-controller from 10.1.1 to 11.0.0 (#10437) +- [#10565](https://github.com/MetaMask/metamask-mobile/pull/10565): chore: Enable smart transactions only for ETH mainnet in production and for ETH mainnet and Sepolia in non-prod (#10565) +- [#10608](https://github.com/MetaMask/metamask-mobile/pull/10608): chore: add test variant for credential reveal (#10608) +- [#10262](https://github.com/MetaMask/metamask-mobile/pull/10262): chore(ramp): upgrade sdk to 1.28.3 and remove chainId casting (#10262) +- [#10680](https://github.com/MetaMask/metamask-mobile/pull/10680): refactor(notification types): fix notification types (#10680) +- [#10639](https://github.com/MetaMask/metamask-mobile/pull/10639): chore: chery pick fix for harmony network image (#10639) +- [#10490](https://github.com/MetaMask/metamask-mobile/pull/10490): chore: Add primary currency to user object in MetaMetrics (#10490) +- [#10457](https://github.com/MetaMask/metamask-mobile/pull/10457): chore: Notifications Settings Polishing (#10457) +- [#10692](https://github.com/MetaMask/metamask-mobile/pull/10692): perf: add parallel fetching for the network fee dropdown (#10692) +- [#10539](https://github.com/MetaMask/metamask-mobile/pull/10539): chore: enhance Source Detection Logic in Analytics Parameters (#10539) + +### Fixed +- [#10649](https://github.com/MetaMask/metamask-mobile/pull/10649): fix: Update test dapp favorite selector (#10649) +- [#10641](https://github.com/MetaMask/metamask-mobile/pull/10641): fix: Add missing pod lock changes (#10641) +- [#10613](https://github.com/MetaMask/metamask-mobile/pull/10613): fix: useBlockExplorer hook (#10613) +- [#10598](https://github.com/MetaMask/metamask-mobile/pull/10598): fix: App crashes when deleting browser favorites on android devices (#10598) +- [#10489](https://github.com/MetaMask/metamask-mobile/pull/10489): fix: url change bug (#10489) +- [#10733](https://github.com/MetaMask/metamask-mobile/pull/10733): fix: remove duplicate origin validation in transaction controller (#10733) +- [#10658](https://github.com/MetaMask/metamask-mobile/pull/10658): fix: issue in blockaid spinner for batched confirmations (#10658) +- [#10588](https://github.com/MetaMask/metamask-mobile/pull/10588): fix: disabled what's new modal (#10588) +- [#10547](https://github.com/MetaMask/metamask-mobile/pull/10547): fix: settings toggle extra large paddings when biometrics hidden (#10547) +- [#10154](https://github.com/MetaMask/metamask-mobile/pull/10154): fix: sets data marketing to false in case of non-selection (#10154) +- [#10532](https://github.com/MetaMask/metamask-mobile/pull/10532): fix: replaced incorrect icons on wallet bottom sheet with correct icons (#10532) +- [#10548](https://github.com/MetaMask/metamask-mobile/pull/10548): fix: replaced incorrect export icon with correct icon (#10548) +- [#10607](https://github.com/MetaMask/metamask-mobile/pull/10607): fix: hold to reveal UI/UX (#10607) +- [#10683](https://github.com/MetaMask/metamask-mobile/pull/10683): fix: remove snap webview flag (#10683) +- [#10600](https://github.com/MetaMask/metamask-mobile/pull/10600): fix: harmony network image (#10600) +- [#10404](https://github.com/MetaMask/metamask-mobile/pull/10404): fix: aggregated balance calculation (#10404) +- [#10394](https://github.com/MetaMask/metamask-mobile/pull/10394): fix: switch chain with walletconnect (#10394) +- [#10637](https://github.com/MetaMask/metamask-mobile/pull/10637): fix: swap button blocked by SwapsController polling issue (#10637) +- [#10361](https://github.com/MetaMask/metamask-mobile/pull/10361): fix: fix alignment issues in onboarding success (#10361) +- [#10741](https://github.com/MetaMask/metamask-mobile/pull/10741): fix: bump micromatch to 4.0.7 (#10741) +- [#10668](https://github.com/MetaMask/metamask-mobile/pull/10668): fix: notifications first round of tests (#10668) +- [#10640](https://github.com/MetaMask/metamask-mobile/pull/10640): fix: notification small fixes (#10640) +- [#10693](https://github.com/MetaMask/metamask-mobile/pull/10693): fix: notification second round fixes (#10693) + ## 7.29.2 - Sep 2, 2024 ### Fixed - [#10965](https://github.com/MetaMask/metamask-mobile/pull/10965): fix: gas never loading during send + high gas fee after deep link (#10965) @@ -75,6 +172,10 @@ - [#10383](https://github.com/MetaMask/metamask-mobile/pull/10383): fix: race condition issues when doing batch-rpc calls in the DeeplinkProtocolService (#10383) - [#10365](https://github.com/MetaMask/metamask-mobile/pull/10365): fix: attribution link (#10365) - [#10303](https://github.com/MetaMask/metamask-mobile/pull/10303): fix: page navigation during QR accounts selection (#10303) +<<<<<<< HEAD + +======= +>>>>>>> main ## 7.28.1 - Aug 15, 2024 ### Fixed - [#10637](https://github.com/MetaMask/metamask-mobile/pull/10637): fix: swap button blocked by SwapsController polling issue (#10637) diff --git a/android/app/build.gradle b/android/app/build.gradle index a7cebf8428a..74f3ccde4f5 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -173,8 +173,8 @@ android { applicationId "io.metamask" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 1409 - versionName "7.29.2" + versionCode 1410 + versionName "7.30.0" testBuildType System.getProperty('testBuildType', 'debug') missingDimensionStrategy 'react-native-camera', 'general' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/components/Approvals/SignatureApproval/SignatureApproval.tsx b/app/components/Approvals/SignatureApproval/SignatureApproval.tsx index 0eb8f82d43e..a22a06cd04d 100644 --- a/app/components/Approvals/SignatureApproval/SignatureApproval.tsx +++ b/app/components/Approvals/SignatureApproval/SignatureApproval.tsx @@ -9,7 +9,6 @@ const SignatureApproval = () => { const onSignConfirm = useCallback(async () => { await onConfirm({ waitForResult: true, - //@ts-expect-error - this is added via patch of approval controller deleteAfterResult: true, handleErrors: false, }); diff --git a/app/components/UI/AccountInfoCard/index.js b/app/components/UI/AccountInfoCard/index.js index bfabd8e281a..321428314fb 100644 --- a/app/components/UI/AccountInfoCard/index.js +++ b/app/components/UI/AccountInfoCard/index.js @@ -135,7 +135,6 @@ class AccountInfoCard extends PureComponent { */ ticker: PropTypes.string, transaction: PropTypes.object, - activeTabUrl: PropTypes.string, origin: PropTypes.string, }; @@ -150,7 +149,6 @@ class AccountInfoCard extends PureComponent { showFiatBalance = true, fromAddress: rawFromAddress, transaction, - activeTabUrl, origin, } = this.props; @@ -180,16 +178,14 @@ class AccountInfoCard extends PureComponent { url: isOriginUrl ? origin : originatorInfo?.url ?? strings('sdk.unknown'), icon: originatorInfo?.icon, }; + const actualOriginUrl = isOriginUrl + ? origin + : originatorInfo?.url ?? strings('sdk.unknown'); return operation === 'signing' && transaction !== undefined ? ( diff --git a/app/components/UI/BasicFunctionality/BasicFunctionalityModal/BasicFunctionalityModal.tsx b/app/components/UI/BasicFunctionality/BasicFunctionalityModal/BasicFunctionalityModal.tsx index 300cd8a1c48..99642d1249e 100644 --- a/app/components/UI/BasicFunctionality/BasicFunctionalityModal/BasicFunctionalityModal.tsx +++ b/app/components/UI/BasicFunctionality/BasicFunctionalityModal/BasicFunctionalityModal.tsx @@ -30,7 +30,9 @@ import { asyncAlert, requestPushNotificationsPermission, } from '../../../../util/notifications'; +import { MetaMetricsEvents } from '../../../../core/Analytics'; import { useEnableNotifications } from '../../../../util/notifications/hooks/useNotifications'; +import { useMetrics } from '../../../hooks/useMetrics'; interface Props { route: { @@ -41,6 +43,7 @@ interface Props { } const BasicFunctionalityModal = ({ route }: Props) => { + const { trackEvent } = useMetrics(); const { colors } = useTheme(); const styles = createStyles(colors); const bottomSheetRef = useRef(null); @@ -68,9 +71,14 @@ const BasicFunctionalityModal = ({ route }: Props) => { }, [enableNotifications]); const closeBottomSheet = async () => { - bottomSheetRef.current?.onCloseBottomSheet(() => - dispatch(toggleBasicFunctionality(!isEnabled)), - ); + bottomSheetRef.current?.onCloseBottomSheet(() => { + dispatch(toggleBasicFunctionality(!isEnabled)); + trackEvent( + !isEnabled + ? MetaMetricsEvents.BASIC_FUNCTIONALITY_ENABLED + : MetaMetricsEvents.BASIC_FUNCTIONALITY_DISABLED, + ); + }); if ( route.params.caller === Routes.SETTINGS.NOTIFICATIONS || diff --git a/app/components/UI/HardwareWallet/AccountSelector/index.tsx b/app/components/UI/HardwareWallet/AccountSelector/index.tsx index 24591c4b976..ed4944d0fb1 100644 --- a/app/components/UI/HardwareWallet/AccountSelector/index.tsx +++ b/app/components/UI/HardwareWallet/AccountSelector/index.tsx @@ -28,8 +28,6 @@ interface ISelectQRAccountsProps { onUnlock: (accountIndex: number[]) => void; onForget: () => void; title: string; - warningMsg?: string; - subMsg?: string; } const AccountSelector = (props: ISelectQRAccountsProps) => { @@ -42,8 +40,6 @@ const AccountSelector = (props: ISelectQRAccountsProps) => { onForget, onUnlock, title, - warningMsg, - subMsg, } = props; const { colors } = useTheme(); @@ -89,8 +85,6 @@ const AccountSelector = (props: ISelectQRAccountsProps) => { return ( {title} - {warningMsg && {warningMsg}} - {subMsg && {subMsg}} `address-${item.index}`} diff --git a/app/components/UI/Notification/List/__snapshots__/index.test.tsx.snap b/app/components/UI/Notification/List/__snapshots__/index.test.tsx.snap index 80acd6a2546..3d46759d65b 100644 --- a/app/components/UI/Notification/List/__snapshots__/index.test.tsx.snap +++ b/app/components/UI/Notification/List/__snapshots__/index.test.tsx.snap @@ -6,7 +6,6 @@ exports[`NotificationsList should render correctly 1`] = ` { "backgroundColor": "#ffffff", "flex": 1, - "marginHorizontal": 8, } } > diff --git a/app/components/UI/Notification/List/index.tsx b/app/components/UI/Notification/List/index.tsx index ddd47054f45..823baee0f4d 100644 --- a/app/components/UI/Notification/List/index.tsx +++ b/app/components/UI/Notification/List/index.tsx @@ -105,7 +105,6 @@ function NotificationsListItem(props: NotificationsListItemProps) { isRead={props.notification.isRead} {...menuItemState} /> - ); diff --git a/app/components/UI/Notification/List/styles.ts b/app/components/UI/Notification/List/styles.ts index 9e13f2c06ca..f3ea115c201 100644 --- a/app/components/UI/Notification/List/styles.ts +++ b/app/components/UI/Notification/List/styles.ts @@ -9,23 +9,22 @@ export const createStyles = ({ colors, typography }: Theme) => container: { flex: 1, backgroundColor: colors.background.default, - marginHorizontal: 8, }, itemContainer: { flex: 1, paddingVertical: 10, - paddingHorizontal: 8, + paddingHorizontal: 32, }, unreadItemContainer: { flex: 1, paddingVertical: 10, - paddingHorizontal: 8, + paddingHorizontal: 32, backgroundColor: colors.info.muted, }, readItemContainer: { flex: 1, paddingVertical: 10, - paddingHorizontal: 8, + paddingHorizontal: 32, backgroundColor: colors.background.default, }, unreadDot: { @@ -98,6 +97,7 @@ export const createStyles = ({ colors, typography }: Theme) => itemLogoSize: { width: 32, height: 32, + marginLeft: 4, }, containerFill: { flex: 1 }, badgeWrapper: { diff --git a/app/components/UI/Notification/NotificationMenuItem/__snapshots__/Icon.test.tsx.snap b/app/components/UI/Notification/NotificationMenuItem/__snapshots__/Icon.test.tsx.snap index 08b30cf3220..644007d810a 100644 --- a/app/components/UI/Notification/NotificationMenuItem/__snapshots__/Icon.test.tsx.snap +++ b/app/components/UI/Notification/NotificationMenuItem/__snapshots__/Icon.test.tsx.snap @@ -6,6 +6,7 @@ exports[`NotificationIcon matches snapshot when icon is provided 1`] = ` style={ { "height": 32, + "marginLeft": 4, "width": 32, } } diff --git a/app/components/Views/AccountConnect/AccountConnect.tsx b/app/components/Views/AccountConnect/AccountConnect.tsx index c08c15d01c3..53310b44aab 100644 --- a/app/components/Views/AccountConnect/AccountConnect.tsx +++ b/app/components/Views/AccountConnect/AccountConnect.tsx @@ -43,7 +43,8 @@ import { getActiveTabUrl } from '../../../util/transactions'; import { Account, useAccounts } from '../../hooks/useAccounts'; // Internal dependencies. -import { StyleSheet, ImageURISource } from 'react-native'; +import { PermissionsRequest } from '@metamask/permission-controller'; +import { ImageURISource, StyleSheet } from 'react-native'; import URLParse from 'url-parse'; import PhishingModal from '../../../components/UI/PhishingModal'; import { useMetrics } from '../../../components/hooks/useMetrics'; @@ -56,9 +57,9 @@ import { import AppConstants from '../../../core/AppConstants'; import SDKConnect from '../../../core/SDKConnect/SDKConnect'; import DevLogger from '../../../core/SDKConnect/utils/DevLogger'; +import { RootState } from '../../../reducers'; import { trackDappViewedEvent } from '../../../util/metrics'; import { useTheme } from '../../../util/theme'; -import { WALLET_CONNECT_ORIGIN } from '../../../util/walletconnect'; import useFavicon from '../../hooks/useFavicon/useFavicon'; import { SourceType } from '../../hooks/useMetrics/useMetrics.types'; import { @@ -68,8 +69,6 @@ import { import AccountConnectMultiSelector from './AccountConnectMultiSelector'; import AccountConnectSingle from './AccountConnectSingle'; import AccountConnectSingleSelector from './AccountConnectSingleSelector'; -import { RootState } from '../../../reducers'; -import { PermissionsRequest } from '@metamask/permission-controller'; const createStyles = () => StyleSheet.create({ @@ -86,9 +85,6 @@ const AccountConnect = (props: AccountConnectProps) => { const navigation = useNavigation(); const { trackEvent } = useMetrics(); - const [isOriginWalletConnect, setIsOriginWalletConnect] = useState(false); - const [isOriginMMSDKRemoteConn, setIsOriginMMSDKRemoteConn] = useState(false); - const [blockedUrl, setBlockedUrl] = useState(''); const selectedWalletAddress = useSelector( @@ -119,11 +115,9 @@ const AccountConnect = (props: AccountConnectProps) => { // origin is set to the last active tab url in the browser which can conflict with sdk const inappBrowserOrigin: string = useSelector(getActiveTabUrl, isEqual); const accountsLength = useSelector(selectAccountsLength); + const { wc2Metadata } = useSelector((state: RootState) => state.sdk); - // TODO: pending transaction controller update, we need to have a parameter that can be extracted from the metadata to know the correct source (inappbrowser, walletconnect, sdk) - // on inappBrowser: hostname from inappBrowserOrigin - // on walletConnect: hostname from hostInfo - // on sdk: channelId + const isOriginWalletConnect = wc2Metadata?.id && wc2Metadata?.id.length > 0; const { origin: channelIdOrHostname } = hostInfo.metadata as { id: string; origin: string; @@ -137,57 +131,39 @@ const AccountConnect = (props: AccountConnectProps) => { const isChannelId = isUUID(channelIdOrHostname); - useEffect(() => { - if (!channelIdOrHostname) { - setIsOriginWalletConnect(false); - setIsOriginMMSDKRemoteConn(false); - - return; - } - - setIsOriginWalletConnect( - channelIdOrHostname.startsWith(WALLET_CONNECT_ORIGIN), - ); - setIsOriginMMSDKRemoteConn( - channelIdOrHostname.startsWith(AppConstants.MM_SDK.SDK_REMOTE_ORIGIN), - ); - }, [channelIdOrHostname]); - const sdkConnection = SDKConnect.getInstance().getConnection({ channelId: channelIdOrHostname, }); - - const hostname = channelIdOrHostname - ? channelIdOrHostname.indexOf('.') !== -1 - ? channelIdOrHostname - : sdkConnection?.originatorInfo?.url ?? '' - : inappBrowserOrigin; + const isOriginMMSDKRemoteConn = sdkConnection !== undefined; const dappIconUrl = sdkConnection?.originatorInfo?.icon; const dappUrl = sdkConnection?.originatorInfo?.url ?? ''; - const domainTitle = useMemo(() => { + const { domainTitle, hostname } = useMemo(() => { let title = ''; + let dappHostname = dappUrl || channelIdOrHostname; - if (isOriginWalletConnect) { + if ( + isOriginMMSDKRemoteConn && + channelIdOrHostname.startsWith(AppConstants.MM_SDK.SDK_REMOTE_ORIGIN) + ) { title = getUrlObj( - (channelIdOrHostname as string).split(WALLET_CONNECT_ORIGIN)[1], - ).origin; - } else if (isOriginMMSDKRemoteConn) { - title = getUrlObj( - (channelIdOrHostname as string).split( - AppConstants.MM_SDK.SDK_REMOTE_ORIGIN, - )[1], + channelIdOrHostname.split(AppConstants.MM_SDK.SDK_REMOTE_ORIGIN)[1], ).origin; + } else if (isOriginWalletConnect) { + title = getUrlObj(channelIdOrHostname).origin; + dappHostname = title; } else if (!isChannelId && (dappUrl || channelIdOrHostname)) { title = prefixUrlWithProtocol(dappUrl || channelIdOrHostname); + dappHostname = inappBrowserOrigin; } else { title = strings('sdk.unknown'); } - return title; + return { domainTitle: title, hostname: dappHostname }; }, [ isOriginWalletConnect, + inappBrowserOrigin, isOriginMMSDKRemoteConn, isChannelId, dappUrl, @@ -234,13 +210,18 @@ const AccountConnect = (props: AccountConnectProps) => { return { uri: dappIconUrl }; } + if (isOriginWalletConnect) { + // fetch icon from store + return { uri: wc2Metadata?.icon ?? '' }; + } + const favicon = faviconSource as ImageURISource; if ('uri' in favicon) { return faviconSource; } return { uri: '' }; - }, [dappIconUrl, faviconSource]); + }, [dappIconUrl, wc2Metadata, faviconSource, isOriginWalletConnect]); const secureIcon = useMemo( () => diff --git a/app/components/Views/Notifications/Details/Fields/NetworkFeeField.test.tsx b/app/components/Views/Notifications/Details/Fields/NetworkFeeField.test.tsx new file mode 100644 index 00000000000..710f0c1a592 --- /dev/null +++ b/app/components/Views/Notifications/Details/Fields/NetworkFeeField.test.tsx @@ -0,0 +1,63 @@ +import React from 'react'; +import { render } from '@testing-library/react-native'; +import NetworkFeeField from './NetworkFeeField'; +import { OnChainRawNotificationsWithNetworkFields } from '@metamask/notification-services-controller/dist/types/NotificationServicesController/types'; +import { ModalFieldType } from '../../../../../util/notifications'; +import { NotificationServicesController } from '@metamask/notification-services-controller'; + +const { + Processors: { processNotification }, + Mocks, +} = NotificationServicesController; +jest.mock('../../../../../util/notifications/methods/common', () => ({ + getNetworkFees: () => + Promise.resolve({ + gasUsed: '0', + gasLimit: '0', + baseFee: '0', + priorityFee: '0', + maxFeePerGas: '0', + effectiveGasPrice: '0', + transactionFeeInEth: '0', + transactionFeeInUsd: '0', + }), +})); + +const MOCK_NOTIFICATION = processNotification( + Mocks.createMockNotificationEthReceived(), +) as OnChainRawNotificationsWithNetworkFields; + +describe('NetworkFeeField', () => { + const setIsCollapsed = jest.fn(); + const isCollapsed = false; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should renders correctly when type has "ModalField-NetworkFee"', () => { + const { toJSON } = render( + + Promise.resolve({ + gasUsed: 0, + gasLimit: 0, + baseFee: 0, + priorityFee: 0, + maxFeePerGas: 0, + effectiveGasPrice: 0, + transactionFeeInEth: '0', + transactionFeeInUsd: '0', + chainId: '0x1', + }) + } + />, + ); + + expect(toJSON()).toMatchSnapshot(); + }); +}); diff --git a/app/components/Views/Notifications/Details/Fields/NetworkFeeField.tsx b/app/components/Views/Notifications/Details/Fields/NetworkFeeField.tsx index 88e4282fd2a..78b4c715b38 100644 --- a/app/components/Views/Notifications/Details/Fields/NetworkFeeField.tsx +++ b/app/components/Views/Notifications/Details/Fields/NetworkFeeField.tsx @@ -1,16 +1,26 @@ import React, { useEffect, useRef, useState } from 'react'; -import { View } from 'react-native'; +import { TouchableOpacity, View } from 'react-native'; import { strings } from '../../../../../../locales/i18n'; import BottomSheet, { BottomSheetRef, } from '../../../../../component-library/components/BottomSheets/BottomSheet'; +import Avatar, { + AvatarSize, + AvatarVariant, +} from '../../../../../component-library/components/Avatars/Avatar'; import Text, { TextColor, TextVariant, } from '../../../../../component-library/components/Texts/Text'; import { ModalFieldNetworkFee } from '../../../../../util/notifications/notification-states/types/NotificationModalDetails'; -import { NotificationDetailStyles } from '../styles'; import useStyles from '../useStyles'; +import Icon, { + IconColor, + IconName, + IconSize, +} from '../../../../../component-library/components/Icons/Icon'; +import { NotificationDetailStyles } from '../styles'; +import { CURRENCY_SYMBOL_BY_CHAIN_ID } from '../../../../../constants/network'; type NetworkFeeFieldProps = ModalFieldNetworkFee & { isCollapsed: boolean; @@ -53,7 +63,8 @@ function NetworkFeeLabelAndValue(props: { } function NetworkFeeField(props: NetworkFeeFieldProps) { - const { styles } = useStyles(); + const { setIsCollapsed, isCollapsed } = props; + const { styles, theme } = useStyles(); const sheetRef = useRef(null); const networkFee = useNetworkFee(props); @@ -61,45 +72,81 @@ function NetworkFeeField(props: NetworkFeeFieldProps) { return null; } - if (props.isCollapsed) { - return null; - } + const collapsedIcon = isCollapsed ? IconName.ArrowDown : IconName.ArrowUp; + const ticker = CURRENCY_SYMBOL_BY_CHAIN_ID[networkFee.chainId]; - // TODO: Present an error screen when there is an error fetching the network fees return ( - props.setIsCollapsed(true)} - > - - - - - - - - + <> + setIsCollapsed(!isCollapsed)}> + + + + + + {strings('asset_details.network_fee')} + + + + {networkFee.transactionFeeInEth} {ticker} ($ + {networkFee.transactionFeeInUsd}) + + + + + {strings('transaction.details')} + + + + + + + {!isCollapsed && ( + props.setIsCollapsed(true)} + > + + + + + + + + + )} + ); } diff --git a/app/components/Views/Notifications/Details/Fields/NetworkField.tsx b/app/components/Views/Notifications/Details/Fields/NetworkField.tsx index 973d041f49b..bb6653ac753 100644 --- a/app/components/Views/Notifications/Details/Fields/NetworkField.tsx +++ b/app/components/Views/Notifications/Details/Fields/NetworkField.tsx @@ -1,5 +1,5 @@ import React, { useMemo } from 'react'; -import { TouchableOpacity, View } from 'react-native'; +import { View } from 'react-native'; import { strings } from '../../../../../../locales/i18n'; import Avatar, { AvatarSize, @@ -11,18 +11,9 @@ import Text, { } from '../../../../../component-library/components/Texts/Text'; import { ModalFieldNetwork } from '../../../../../util/notifications/notification-states/types/NotificationModalDetails'; import useStyles from '../useStyles'; -import Icon, { - IconName, - IconSize, -} from '../../../../../component-library/components/Icons/Icon'; -type NetworkFieldProps = ModalFieldNetwork & { - isCollapsed: boolean; - setIsCollapsed: (newVal: boolean) => void; -}; - -function NetworkField(props: NetworkFieldProps) { - const { iconUrl, name, setIsCollapsed, isCollapsed } = props; +function NetworkField(props: ModalFieldNetwork) { + const { iconUrl, name } = props; const { styles } = useStyles(); const iconSource = useMemo(() => { @@ -37,29 +28,25 @@ function NetworkField(props: NetworkFieldProps) { return null; } - const collapsedIcon = isCollapsed ? IconName.ArrowDown : IconName.ArrowUp; return ( - setIsCollapsed(!isCollapsed)}> - - - - - - {strings('asset_details.network')} - - - - {name} - - - + + + + + + {strings('asset_details.network')} + + + + {name} + - + ); } diff --git a/app/components/Views/Notifications/Details/Fields/__snapshots__/NetworkFeeField.test.tsx.snap b/app/components/Views/Notifications/Details/Fields/__snapshots__/NetworkFeeField.test.tsx.snap new file mode 100644 index 00000000000..d783926f116 --- /dev/null +++ b/app/components/Views/Notifications/Details/Fields/__snapshots__/NetworkFeeField.test.tsx.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`NetworkFeeField should renders correctly when type has "ModalField-NetworkFee" 1`] = `null`; diff --git a/app/components/Views/Notifications/Details/Fields/index.tsx b/app/components/Views/Notifications/Details/Fields/index.tsx index 91f4f87b2e7..bb8ac2deb86 100644 --- a/app/components/Views/Notifications/Details/Fields/index.tsx +++ b/app/components/Views/Notifications/Details/Fields/index.tsx @@ -40,13 +40,7 @@ export default function ModalField({ return ; if (modalField.type === 'ModalField-Network') - return ( - - ); + return ; if (modalField.type === 'ModalField-NetworkFee') return ( diff --git a/app/components/Views/Notifications/Details/Footers/BlockExplorerFooter.tsx b/app/components/Views/Notifications/Details/Footers/BlockExplorerFooter.tsx index cc9b81154ee..0b5c4a79808 100644 --- a/app/components/Views/Notifications/Details/Footers/BlockExplorerFooter.tsx +++ b/app/components/Views/Notifications/Details/Footers/BlockExplorerFooter.tsx @@ -10,6 +10,7 @@ import { selectNetworkConfigurations } from '../../../../../selectors/networkCon import { getBlockExplorerByChainId } from '../../../../../util/notifications'; import { ModalFooterBlockExplorer } from '../../../../../util/notifications/notification-states/types/NotificationModalDetails'; import useStyles from '../useStyles'; +import { IconName } from '../../../../../component-library/components/Icons/Icon'; type BlockExplorerFooterProps = ModalFooterBlockExplorer; @@ -37,6 +38,7 @@ export default function BlockExplorerFooter(props: BlockExplorerFooterProps) { variant={ButtonVariants.Secondary} label={strings('asset_details.options.view_on_block')} style={styles.ctaBtn} + endIconName={IconName.Arrow2Upright} onPress={() => Linking.openURL(txHashUrl)} /> ); diff --git a/app/components/Views/Notifications/Details/__snapshots__/index.test.tsx.snap b/app/components/Views/Notifications/Details/__snapshots__/index.test.tsx.snap index aee4b258802..e2896c17101 100644 --- a/app/components/Views/Notifications/Details/__snapshots__/index.test.tsx.snap +++ b/app/components/Views/Notifications/Details/__snapshots__/index.test.tsx.snap @@ -198,7 +198,7 @@ exports[`NotificationsDetails should renders correctly 1`] = ` } } > - To + From - 0x881D...300d + 0x881D...300C - From (You) + To (You) - 0x881D...300C + 0x881D...300d - - - - - + + + - - Network - - - Ethereum - - - + + > + Ethereum + - + View on block explorer + diff --git a/app/components/Views/Notifications/Details/index.tsx b/app/components/Views/Notifications/Details/index.tsx index 6df6228441b..0e5d75f03fd 100644 --- a/app/components/Views/Notifications/Details/index.tsx +++ b/app/components/Views/Notifications/Details/index.tsx @@ -85,6 +85,7 @@ const NotificationsDetails = ({ route, navigation }: Props) => { if (!state) { return null; } + return ( diff --git a/app/components/Views/confirmations/Approval/index.js b/app/components/Views/confirmations/Approval/index.js index 0c21971eda4..c35246ee8c9 100644 --- a/app/components/Views/confirmations/Approval/index.js +++ b/app/components/Views/confirmations/Approval/index.js @@ -55,6 +55,9 @@ import { selectCurrentTransactionSecurityAlertResponse } from '../../../../selec import { selectTransactions } from '../../../../selectors/transactionController'; import { selectShowCustomNonce } from '../../../../selectors/settings'; import { buildTransactionParams } from '../../../../util/confirmation/transactions'; +import DevLogger from '../../../../core/SDKConnect/utils/DevLogger'; +import SDKConnect from '../../../../core/SDKConnect/SDKConnect'; +import WC2Manager from '../../../../core/WalletConnect/WalletConnectV2'; const REVIEW = 'review'; const EDIT = 'edit'; @@ -144,13 +147,8 @@ class Approval extends PureComponent { transactionConfirmed: false, }; - originIsWalletConnect = this.props.transaction.origin?.startsWith( - WALLET_CONNECT_ORIGIN, - ); - - originIsMMSDKRemoteConn = this.props.transaction.origin?.startsWith( - AppConstants.MM_SDK.SDK_REMOTE_ORIGIN, - ); + originIsWalletConnect = false; + originIsMMSDKRemoteConn = false; updateNavBar = () => { const colors = this.context.colors || mockTheme.colors; @@ -250,12 +248,40 @@ class Approval extends PureComponent { navigation && navigation.setParams({ mode: REVIEW, dispatch: this.onModeChange }); + // Detect origin: WalletConnect / SDK / InAppBrowser + this.detectOrigin(); + this.props.metrics.trackEvent( MetaMetricsEvents.DAPP_TRANSACTION_STARTED, this.getAnalyticsParams(), ); }; + detectOrigin = async () => { + const { transaction } = this.props; + const { origin } = transaction; + + const connection = SDKConnect.getInstance().getConnection({ + channelId: origin, + }); + if (connection) { + this.originIsMMSDKRemoteConn = true; + } else { + // Check if origin is WalletConnect + const wc2Manager = await WC2Manager.getInstance(); + const sessions = wc2Manager.getSessions(); + this.originIsWalletConnect = sessions.some((session) => { + DevLogger.log( + `Approval::detectOrigin Comparing session URL ${session.peer.metadata.url} with origin ${origin}`, + ); + return session.peer.metadata.url === origin; + }); + } + DevLogger.log( + `Approval::detectOrigin originIsWalletConnect=${this.originIsWalletConnect} originIsMMSDKRemoteConn=${this.originIsMMSDKRemoteConn}`, + ); + }; + /** * Call Analytics to track confirm started event for approval screen */ diff --git a/app/components/Views/confirmations/SendFlow/Confirm/index.js b/app/components/Views/confirmations/SendFlow/Confirm/index.js index b05c887eaae..fc76fa34c8b 100644 --- a/app/components/Views/confirmations/SendFlow/Confirm/index.js +++ b/app/components/Views/confirmations/SendFlow/Confirm/index.js @@ -101,10 +101,7 @@ import { getRampNetworks } from '../../../../../reducers/fiatOrders'; import { ConfirmViewSelectorsIDs } from '../../../../../../e2e/selectors/SendFlow/ConfirmView.selectors'; import ExtendedKeyringTypes from '../../../../../constants/keyringTypes'; import { getDeviceId } from '../../../../../core/Ledger/Ledger'; -import { - getBlockaidTransactionMetricsParams, - isBlockaidFeatureEnabled, -} from '../../../../../util/blockaid'; +import { getBlockaidTransactionMetricsParams } from '../../../../../util/blockaid'; import ppomUtil from '../../../../../lib/ppom/ppom-util'; import TransactionBlockaidBanner from '../../components/TransactionBlockaidBanner/TransactionBlockaidBanner'; import { createLedgerTransactionModalNavDetails } from '../../../../../components/UI/LedgerModals/LedgerTransactionModal'; @@ -492,28 +489,26 @@ class Confirm extends PureComponent { this.setState({ result, transactionMeta }); - if (isBlockaidFeatureEnabled()) { - // start validate ppom - const id = transactionMeta.id; - const reqObject = { - id, - jsonrpc: '2.0', - method: 'eth_sendTransaction', - origin: isPaymentRequest - ? AppConstants.DEEPLINKS.ORIGIN_DEEPLINK - : TransactionTypes.MM, - params: [ - { - from, - to, - value, - data, - }, - ], - }; + // start validate ppom + const id = transactionMeta.id; + const reqObject = { + id, + jsonrpc: '2.0', + method: 'eth_sendTransaction', + origin: isPaymentRequest + ? AppConstants.DEEPLINKS.ORIGIN_DEEPLINK + : TransactionTypes.MM, + params: [ + { + from, + to, + value, + data, + }, + ], + }; - ppomUtil.validateRequest(reqObject, id); - } + ppomUtil.validateRequest(reqObject, id); }; componentDidUpdate = (prevProps, prevState) => { @@ -1306,7 +1301,7 @@ class Confirm extends PureComponent { layout="vertical" /> - {isBlockaidFeatureEnabled() && this.state.transactionMeta?.id && ( + {this.state.transactionMeta?.id && ( ({ jest.mock('../../../../../lib/ppom/ppom-util', () => ({ ...jest.requireActual('../../../../../lib/ppom/ppom-util'), validateRequest: jest.fn(), + isChainSupported: jest.fn(), })); jest.mock('../../../../../core/Engine', () => ({ diff --git a/app/components/Views/confirmations/components/ApproveTransactionHeader/ApproveTransactionHeader.tsx b/app/components/Views/confirmations/components/ApproveTransactionHeader/ApproveTransactionHeader.tsx index 7a7f3198a50..5e49b872c29 100644 --- a/app/components/Views/confirmations/components/ApproveTransactionHeader/ApproveTransactionHeader.tsx +++ b/app/components/Views/confirmations/components/ApproveTransactionHeader/ApproveTransactionHeader.tsx @@ -10,7 +10,6 @@ import AccountBalance from '../../../../../component-library/components-temp/Acc import { BadgeVariant } from '../../../../../component-library/components/Badges/Badge'; import TagUrl from '../../../../../component-library/components/Tags/TagUrl'; import { useStyles } from '../../../../../component-library/hooks'; -import AppConstants from '../../../../../core/AppConstants'; import { selectAccountsByChainId } from '../../../../../selectors/accountTrackerController'; import { selectNetworkImageSource, @@ -20,8 +19,7 @@ import { getLabelTextByAddress, renderAccountName, } from '../../../../../util/address'; -import { getUrlObj, prefixUrlWithProtocol } from '../../../../../util/browser'; -import { WALLET_CONNECT_ORIGIN } from '../../../../../util/walletconnect'; +import { prefixUrlWithProtocol } from '../../../../../util/browser'; import useAddressBalance from '../../../../hooks/useAddressBalance/useAddressBalance'; import useFavicon from '../../../../hooks/useFavicon/useFavicon'; import { @@ -45,8 +43,6 @@ const ApproveTransactionHeader = ({ const [accountName, setAccountName] = useState(''); const [isOriginDeepLink, setIsOriginDeepLink] = useState(false); - const [isOriginWalletConnect, setIsOriginWalletConnect] = useState(false); - const [isOriginMMSDKRemoteConn, setIsOriginMMSDKRemoteConn] = useState(false); const { styles } = useStyles(stylesheet, {}); const { addressBalance } = useAddressBalance(asset, from, dontWatchAsset); @@ -74,59 +70,22 @@ const ApproveTransactionHeader = ({ setAccountName(accountNameVal); setIsOriginDeepLink(isOriginDeepLinkVal); - - if (!origin) { - setIsOriginWalletConnect(false); - setIsOriginMMSDKRemoteConn(false); - - return; - } - - setIsOriginWalletConnect(origin.startsWith(WALLET_CONNECT_ORIGIN)); - setIsOriginMMSDKRemoteConn( - origin.startsWith(AppConstants.MM_SDK.SDK_REMOTE_ORIGIN), - ); }, [accountsByChainId, internalAccounts, activeAddress, origin]); const networkImage = useSelector(selectNetworkImageSource); const domainTitle = useMemo(() => { let title = ''; - - if (isOriginWalletConnect) { - title = getUrlObj( - (origin as string).split(WALLET_CONNECT_ORIGIN)[1], - ).origin; - } else if (isOriginMMSDKRemoteConn) { - title = getUrlObj( - (origin as string).split(AppConstants.MM_SDK.SDK_REMOTE_ORIGIN)[1], - ).origin; - } else if (url || currentEnsName) { + if (url || currentEnsName) { title = prefixUrlWithProtocol(currentEnsName || url || ''); } else { title = ''; } return title; - }, [ - currentEnsName, - origin, - isOriginWalletConnect, - isOriginMMSDKRemoteConn, - url, - ]); - - const faviconUpdatedOrigin = useMemo(() => { - let newOrigin = origin as string; - if (isOriginWalletConnect) { - newOrigin = newOrigin.split(WALLET_CONNECT_ORIGIN)[1]; - } else if (isOriginMMSDKRemoteConn) { - newOrigin = newOrigin.split(AppConstants.MM_SDK.SDK_REMOTE_ORIGIN)[1]; - } - return newOrigin; - }, [origin, isOriginWalletConnect, isOriginMMSDKRemoteConn]); + }, [currentEnsName, url]); - const faviconSource = useFavicon(faviconUpdatedOrigin); + const faviconSource = useFavicon(origin); const accountTypeLabel = getLabelTextByAddress(activeAddress); diff --git a/app/components/Views/confirmations/components/ApproveTransactionReview/index.js b/app/components/Views/confirmations/components/ApproveTransactionReview/index.js index c1cd0eed915..193f019f22c 100644 --- a/app/components/Views/confirmations/components/ApproveTransactionReview/index.js +++ b/app/components/Views/confirmations/components/ApproveTransactionReview/index.js @@ -52,7 +52,6 @@ import TransactionHeader from '../../../../UI/TransactionHeader'; import TransactionReviewDetailsCard from '../TransactionReview/TransactionReviewDetailsCard'; import AppConstants from '../../../../../core/AppConstants'; import { UINT256_HEX_MAX_VALUE } from '../../../../../constants/transaction'; -import { WALLET_CONNECT_ORIGIN } from '../../../../../util/walletconnect'; import { getBlockaidTransactionMetricsParams } from '../../../../../util/blockaid'; import { withNavigation } from '@react-navigation/compat'; import { @@ -102,6 +101,9 @@ import { regex } from '../../../../../util/regex'; import { withMetricsAwareness } from '../../../../../components/hooks/useMetrics'; import { selectShouldUseSmartTransaction } from '../../../../../selectors/smartTransactionsController'; import { createBuyNavigationDetails } from '../../../../UI/Ramp/routes/utils'; +import SDKConnect from '../../../../../core/SDKConnect/SDKConnect'; +import DevLogger from '../../../../../core/SDKConnect/utils/DevLogger'; +import { WC2Manager } from '../../../../../core/WalletConnect/WalletConnectV2'; const { ORIGIN_DEEPLINK, ORIGIN_QR_CODE } = AppConstants.DEEPLINKS; const POLLING_INTERVAL_ESTIMATED_L1_FEE = 30000; @@ -312,13 +314,12 @@ class ApproveTransactionReview extends PureComponent { }; customSpendLimitInput = React.createRef(); - originIsWalletConnect = this.props.transaction.origin?.startsWith( - WALLET_CONNECT_ORIGIN, - ); + channelIdOrHostname = this.props.transaction.origin; - originIsMMSDKRemoteConn = this.props.transaction.origin?.startsWith( - AppConstants.MM_SDK.SDK_REMOTE_ORIGIN, - ); + sdkConnection = SDKConnect.getInstance().getConnection({ + channelId: this.channelIdOrHostname, + }); + originIsMMSDKRemoteConn = Boolean(this.sdkConnection); fetchEstimatedL1Fee = async () => { const { transaction, chainId } = this.props; @@ -355,14 +356,21 @@ class ApproveTransactionReview extends PureComponent { } = this.props; const { AssetsContractController } = Engine.context; - let host; - - if (this.originIsWalletConnect) { - host = getHost(origin.split(WALLET_CONNECT_ORIGIN)[1]); - } else if (this.originIsMMSDKRemoteConn) { - host = origin.split(AppConstants.MM_SDK.SDK_REMOTE_ORIGIN)[1]; - } else { - host = getHost(origin); + const host = getHost(origin); + + if (!this.originIsMMSDKRemoteConn) { + // Check if it is walletConnect origin + WC2Manager.getInstance().then((wc2) => { + this.originIsWalletConnect = wc2.getSessions().some((session) => { + if (session.peer.metadata.url === origin) { + DevLogger.log( + `ApproveTransactionReview::componentDidMount Found matching session for origin ${origin}`, + ); + return true; + } + return false; + }); + }); } let tokenSymbol, diff --git a/app/components/Views/confirmations/components/BlockaidBanner/BlockaidBanner.tsx b/app/components/Views/confirmations/components/BlockaidBanner/BlockaidBanner.tsx index 782270ca0ba..ac2e6a54a95 100644 --- a/app/components/Views/confirmations/components/BlockaidBanner/BlockaidBanner.tsx +++ b/app/components/Views/confirmations/components/BlockaidBanner/BlockaidBanner.tsx @@ -17,7 +17,6 @@ import { import Icon from '../../../../../component-library/components/Icons/Icon/Icon'; import Text from '../../../../../component-library/components/Texts/Text/Text'; import { useStyles } from '../../../../../component-library/hooks/useStyles'; -import { isBlockaidFeatureEnabled } from '../../../../../util/blockaid'; import { FALSE_POSITIVE_REPOST_LINE_TEST_ID, REASON_DESCRIPTION_I18N_KEY_MAP, @@ -109,7 +108,7 @@ const BlockaidBanner = (bannerProps: BlockaidBannerProps) => { })(); }, [securityAlertResponse]); - if (!securityAlertResponse || !isBlockaidFeatureEnabled()) { + if (!securityAlertResponse) { return null; } diff --git a/app/components/Views/confirmations/components/PersonalSign/PersonalSign.tsx b/app/components/Views/confirmations/components/PersonalSign/PersonalSign.tsx index d62d5544988..3bc9978c4e6 100644 --- a/app/components/Views/confirmations/components/PersonalSign/PersonalSign.tsx +++ b/app/components/Views/confirmations/components/PersonalSign/PersonalSign.tsx @@ -98,7 +98,7 @@ const PersonalSign = ({ } } - let blockaidParams: Record = {}; + let blockaidParams: Record = {}; if (securityAlertResponse) { blockaidParams = getBlockaidMetricsParams( securityAlertResponse as SecurityAlertResponse, diff --git a/app/components/Views/confirmations/components/TransactionReview/index.js b/app/components/Views/confirmations/components/TransactionReview/index.js index 995e15658d6..0a404e95f6e 100644 --- a/app/components/Views/confirmations/components/TransactionReview/index.js +++ b/app/components/Views/confirmations/components/TransactionReview/index.js @@ -7,7 +7,6 @@ import { connect } from 'react-redux'; import { strings } from '../../../../../../locales/i18n'; import { withMetricsAwareness } from '../../../../../components/hooks/useMetrics'; import { MetaMetricsEvents } from '../../../../../core/Analytics'; -import AppConstants from '../../../../../core/AppConstants'; import Engine from '../../../../../core/Engine'; import { SDKConnect } from '../../../../../core/SDKConnect/SDKConnect'; import { @@ -52,7 +51,6 @@ import { getTransactionReviewActionKey, isApprovalTransaction, } from '../../../../../util/transactions'; -import { WALLET_CONNECT_ORIGIN } from '../../../../../util/walletconnect'; import AccountFromToInfoCard from '../../../../UI/AccountFromToInfoCard'; import ActionView, { ConfirmButtonState } from '../../../../UI/ActionView'; import QRSigningDetails from '../../../../UI/QRHardware/QRSigningDetails'; @@ -65,6 +63,7 @@ import TransactionBlockaidBanner from '../TransactionBlockaidBanner/TransactionB import TransactionReviewData from './TransactionReviewData'; import TransactionReviewInformation from './TransactionReviewInformation'; import TransactionReviewSummary from './TransactionReviewSummary'; +import DevLogger from '../../../../../core/SDKConnect/utils/DevLogger'; const POLLING_INTERVAL_ESTIMATED_L1_FEE = 30000; @@ -453,20 +452,8 @@ class TransactionReview extends PureComponent { }; getUrlFromBrowser() { - const { browser, transaction } = this.props; + const { browser } = this.props; let url; - if ( - transaction.origin && - transaction.origin.startsWith(WALLET_CONNECT_ORIGIN) - ) { - return transaction.origin.split(WALLET_CONNECT_ORIGIN)[1]; - } else if ( - transaction.origin && - transaction.origin.startsWith(AppConstants.MM_SDK.SDK_REMOTE_ORIGIN) - ) { - return transaction.origin.split(AppConstants.MM_SDK.SDK_REMOTE_ORIGIN)[1]; - } - browser.tabs.forEach((tab) => { if (tab.id === browser.activeTab) { url = tab.url; @@ -525,11 +512,21 @@ class TransactionReview extends PureComponent { approveTransaction, multiLayerL1FeeTotal, } = this.state; - const url = this.getUrlFromBrowser(); + const { origin: channelIdOrHostname } = transaction; + DevLogger.log( + `TransactionReview render channelIdOrHostname=${channelIdOrHostname}`, + ); const sdkConnections = SDKConnect.getInstance().getConnections(); - const currentConnection = sdkConnections[origin ?? '']; + const currentConnection = sdkConnections[channelIdOrHostname ?? '']; + + let url = ''; + if (currentConnection) { + url = currentConnection.originatorInfo.url; + } else { + url = this.getUrlFromBrowser(); + } const styles = this.getStyles(); diff --git a/app/core/Analytics/MetaMetrics.events.ts b/app/core/Analytics/MetaMetrics.events.ts index bfec76362b4..f8da8d5d757 100644 --- a/app/core/Analytics/MetaMetrics.events.ts +++ b/app/core/Analytics/MetaMetrics.events.ts @@ -159,6 +159,8 @@ enum EVENT_NAME { // Security & Privacy Settings VIEW_SECURITY_SETTINGS = 'Views Security & Privacy', + BASIC_FUNCTIONALITY_ENABLED = 'Basic Functionality Enabled', + BASIC_FUNCTIONALITY_DISABLED = 'Basic Functionality Disabled', // Settings SETTINGS_VIEWED = 'Settings Viewed', @@ -576,6 +578,12 @@ const events = { DAPP_VIEWED: generateOpt(EVENT_NAME.DAPP_VIEWED), // Security & Privacy Settings VIEW_SECURITY_SETTINGS: generateOpt(EVENT_NAME.VIEW_SECURITY_SETTINGS), + BASIC_FUNCTIONALITY_ENABLED: generateOpt( + EVENT_NAME.BASIC_FUNCTIONALITY_ENABLED, + ), + BASIC_FUNCTIONALITY_DISABLED: generateOpt( + EVENT_NAME.BASIC_FUNCTIONALITY_DISABLED, + ), // Reveal SRP REVEAL_SRP_CTA: generateOpt(EVENT_NAME.REVEAL_SRP_CTA), REVEAL_SRP_SCREEN: generateOpt(EVENT_NAME.REVEAL_SRP_SCREEN), diff --git a/app/core/Engine.ts b/app/core/Engine.ts index 67bae1b4199..5472614ea87 100644 --- a/app/core/Engine.ts +++ b/app/core/Engine.ts @@ -1878,6 +1878,7 @@ class Engine { requestData?: Record, opts: AcceptOptions & { handleErrors?: boolean } = { waitForResult: false, + deleteAfterResult: false, handleErrors: true, }, ) { @@ -1886,6 +1887,7 @@ class Engine { try { return await ApprovalController.accept(id, requestData, { waitForResult: opts.waitForResult, + deleteAfterResult: opts.deleteAfterResult, }); } catch (err) { if (opts.handleErrors === false) { diff --git a/app/core/SDKConnect/handlers/setupBridge.ts b/app/core/SDKConnect/handlers/setupBridge.ts index 23ca2f2e52a..638d4497d80 100644 --- a/app/core/SDKConnect/handlers/setupBridge.ts +++ b/app/core/SDKConnect/handlers/setupBridge.ts @@ -77,7 +77,7 @@ export const setupBridge = ({ title: { current: originatorInfo?.title, }, - icon: { current: undefined }, + icon: { current: originatorInfo.icon }, // Bookmarks isHomepage: () => false, // Show autocomplete diff --git a/app/core/WalletConnect/WalletConnect2Session.ts b/app/core/WalletConnect/WalletConnect2Session.ts index 535ad90066a..ff3613e63ff 100644 --- a/app/core/WalletConnect/WalletConnect2Session.ts +++ b/app/core/WalletConnect/WalletConnect2Session.ts @@ -429,11 +429,8 @@ class WalletConnect2Session { return; } - // Android specific logic to prevent automatic redirect on switchChain and let the dapp call wallet_addEthereumChain on error. - if ( - method.toLowerCase() === RPC_WALLET_SWITCHETHEREUMCHAIN.toLowerCase() && - Device.isAndroid() - ) { + // Specific logic to prevent automatic redirect on switchChain and let the dapp call wallet_addEthereumChain on error. + if (method.toLowerCase() === RPC_WALLET_SWITCHETHEREUMCHAIN.toLowerCase()) { // extract first chainId param from request array const params = requestEvent.params.request.params as [ { chainId?: string }, @@ -457,7 +454,7 @@ class WalletConnect2Session { ); if (!existingEntry && !existingNetworkDefault) { DevLogger.log( - `SKIP rpcMiddleWare -- auto rejection is detected android (_chainId=${_chainId})`, + `SKIP rpcMiddleWare -- auto rejection is detected (_chainId=${_chainId})`, ); await this.web3Wallet.rejectRequest({ id: requestEvent.id, diff --git a/app/core/WalletConnect/WalletConnectV2.ts b/app/core/WalletConnect/WalletConnectV2.ts index 2299ea188ee..432335c676f 100644 --- a/app/core/WalletConnect/WalletConnectV2.ts +++ b/app/core/WalletConnect/WalletConnectV2.ts @@ -1,33 +1,33 @@ -import Client, { - SingleEthereum, - SingleEthereumTypes, -} from '@walletconnect/se-sdk'; +import { AccountsController } from '@metamask/accounts-controller'; +import { toChecksumHexAddress } from '@metamask/controller-utils'; import { KeyringController } from '@metamask/keyring-controller'; import { PermissionController } from '@metamask/permission-controller'; import { NavigationContainerRef } from '@react-navigation/native'; import { Core } from '@walletconnect/core'; +import Client, { + SingleEthereum, + SingleEthereumTypes, +} from '@walletconnect/se-sdk'; import { SessionTypes } from '@walletconnect/types'; import { getSdkError } from '@walletconnect/utils'; -import { AccountsController } from '@metamask/accounts-controller'; -import { toChecksumHexAddress } from '@metamask/controller-utils'; +import { updateWC2Metadata } from '../../../app/actions/sdk'; +import { selectChainId } from '../../selectors/networkController'; +import { store } from '../../store'; import StorageWrapper from '../../store/storage-wrapper'; import Logger from '../../util/Logger'; import AppConstants from '../AppConstants'; import Engine from '../Engine'; +import { getPermittedAccounts } from '../Permissions'; import DevLogger from '../SDKConnect/utils/DevLogger'; import getAllUrlParams from '../SDKConnect/utils/getAllUrlParams.util'; +import { wait, waitForKeychainUnlocked } from '../SDKConnect/utils/wait.util'; import extractApprovedAccounts from './extractApprovedAccounts'; import WalletConnect from './WalletConnect'; import parseWalletConnectUri, { hideWCLoadingState, showWCLoadingState, } from './wc-utils'; -import { updateWC2Metadata } from '../../../app/actions/sdk'; -import { selectChainId } from '../../selectors/networkController'; -import { store } from '../../store'; -import { getPermittedAccounts } from '../Permissions'; -import { wait, waitForKeychainUnlocked } from '../SDKConnect/utils/wait.util'; import WalletConnect2Session from './WalletConnect2Session'; const { PROJECT_ID } = AppConstants.WALLET_CONNECT; @@ -417,13 +417,16 @@ export class WC2Manager { const name = metadata.description ?? ''; const icons = metadata.icons; const icon = icons?.[0] ?? ''; + DevLogger.log(`WC2::session_proposal metadata`, metadata); // Save Connection info to redux store to be retrieved in ui. store.dispatch(updateWC2Metadata({ url, name, icon, id: `${id}` })); try { await permissionsController.requestPermissions( { origin: url }, - { eth_accounts: {} }, + { + eth_accounts: {}, + }, // { id: undefined }, // Don't set id here, it will be set after session is created, identify via origin. ); // Permissions approved. @@ -468,6 +471,16 @@ export class WC2Manager { } } catch (err) { console.error(`invalid wallet status`, err); + } finally { + // Cleanup state + store.dispatch( + updateWC2Metadata({ + url: '', + name: '', + icon: '', + id: '', + }), + ); } } diff --git a/app/lib/ppom/ppom-util.test.ts b/app/lib/ppom/ppom-util.test.ts index 1046d63bf93..e84e99d2d17 100644 --- a/app/lib/ppom/ppom-util.test.ts +++ b/app/lib/ppom/ppom-util.test.ts @@ -6,10 +6,12 @@ import Engine from '../../core/Engine'; import PPOMUtil from './ppom-util'; // eslint-disable-next-line import/no-namespace import * as securityAlertAPI from './security-alerts-api'; +import { isBlockaidFeatureEnabled } from '../../util/blockaid'; const CHAIN_ID_MOCK = '0x1'; jest.mock('./security-alerts-api'); +jest.mock('../../util/blockaid'); jest.mock('../../util/transaction-controller', () => ({ __esModule: true, @@ -95,6 +97,8 @@ describe('PPOM Utils', () => { securityAlertAPI.isSecurityAlertsAPIEnabled, ); + const mockIsBlockaidFeatureEnabled = jest.mocked(isBlockaidFeatureEnabled); + const getSupportedChainIdsMock = jest.spyOn( securityAlertAPI, 'getSecurityAlertsAPISupportedChainIds', @@ -110,6 +114,7 @@ describe('PPOM Utils', () => { CHAIN_ID_MOCK; normalizeTransactionParamsMock.mockImplementation((params) => params); + mockIsBlockaidFeatureEnabled.mockResolvedValue(true); }); afterEach(() => { @@ -118,6 +123,7 @@ describe('PPOM Utils', () => { describe('validateRequest', () => { it('should not validate if preference securityAlertsEnabled is false', async () => { + mockIsBlockaidFeatureEnabled.mockResolvedValue(false); const spyTransactionAction = jest.spyOn( TransactionActions, 'setTransactionSecurityAlertResponse', @@ -152,6 +158,7 @@ describe('PPOM Utils', () => { }); it('should not validate user if on a non supporting blockaid network', async () => { + mockIsBlockaidFeatureEnabled.mockResolvedValue(false); const spyTransactionAction = jest.spyOn( TransactionActions, 'setTransactionSecurityAlertResponse', @@ -160,8 +167,10 @@ describe('PPOM Utils', () => { .spyOn(NetworkControllerSelectors, 'selectChainId') .mockReturnValue('0xfa'); await PPOMUtil.validateRequest(mockRequest, CHAIN_ID_MOCK); - expect(MockEngine.context.PPOMController?.usePPOM).toBeCalledTimes(0); - expect(spyTransactionAction).toBeCalledTimes(0); + expect(MockEngine.context.PPOMController?.usePPOM).toHaveBeenCalledTimes( + 0, + ); + expect(spyTransactionAction).toHaveBeenCalledTimes(0); }); it('should not validate if requested method is not allowed', async () => { @@ -178,8 +187,10 @@ describe('PPOM Utils', () => { }, CHAIN_ID_MOCK, ); - expect(MockEngine.context.PPOMController?.usePPOM).toBeCalledTimes(0); - expect(spyTransactionAction).toBeCalledTimes(0); + expect(MockEngine.context.PPOMController?.usePPOM).toHaveBeenCalledTimes( + 0, + ); + expect(spyTransactionAction).toHaveBeenCalledTimes(0); }); it('should not validate transaction and update response as failed if method type is eth_sendTransaction and transactionid is not defined', async () => { @@ -188,13 +199,17 @@ describe('PPOM Utils', () => { 'setTransactionSecurityAlertResponse', ); await PPOMUtil.validateRequest(mockRequest); - expect(MockEngine.context.PPOMController?.usePPOM).toBeCalledTimes(0); - expect(spyTransactionAction).toBeCalledTimes(1); + expect(MockEngine.context.PPOMController?.usePPOM).toHaveBeenCalledTimes( + 0, + ); + expect(spyTransactionAction).toHaveBeenCalledTimes(1); }); it('should invoke PPOMController usePPOM if securityAlertsEnabled is true', async () => { await PPOMUtil.validateRequest(mockRequest, CHAIN_ID_MOCK); - expect(MockEngine.context.PPOMController?.usePPOM).toBeCalledTimes(1); + expect(MockEngine.context.PPOMController?.usePPOM).toHaveBeenCalledTimes( + 1, + ); }); it('should update transaction with validation result', async () => { @@ -203,13 +218,13 @@ describe('PPOM Utils', () => { 'setTransactionSecurityAlertResponse', ); await PPOMUtil.validateRequest(mockRequest, CHAIN_ID_MOCK); - expect(spy).toBeCalledTimes(2); + expect(spy).toHaveBeenCalledTimes(2); }); it('should update signature requests with validation result', async () => { const spy = jest.spyOn(SignatureRequestActions, 'default'); await PPOMUtil.validateRequest(mockSignatureRequest); - expect(spy).toBeCalledTimes(2); + expect(spy).toHaveBeenCalledTimes(2); }); it('normalizes transaction requests before validation', async () => { @@ -235,13 +250,13 @@ describe('PPOM Utils', () => { await PPOMUtil.validateRequest(mockRequest, CHAIN_ID_MOCK); - expect(normalizeTransactionParamsMock).toBeCalledTimes(1); - expect(normalizeTransactionParamsMock).toBeCalledWith( + expect(normalizeTransactionParamsMock).toHaveBeenCalledTimes(1); + expect(normalizeTransactionParamsMock).toHaveBeenCalledWith( mockRequest.params[0], ); - expect(validateMock).toBeCalledTimes(1); - expect(validateMock).toBeCalledWith({ + expect(validateMock).toHaveBeenCalledTimes(1); + expect(validateMock).toHaveBeenCalledWith({ ...mockRequest, params: [normalizedTransactionParamsMock], }); @@ -267,13 +282,13 @@ describe('PPOM Utils', () => { CHAIN_ID_MOCK, ); - expect(normalizeTransactionParamsMock).toBeCalledTimes(1); - expect(normalizeTransactionParamsMock).toBeCalledWith( + expect(normalizeTransactionParamsMock).toHaveBeenCalledTimes(1); + expect(normalizeTransactionParamsMock).toHaveBeenCalledWith( mockRequest.params[0], ); - expect(validateMock).toBeCalledTimes(1); - expect(validateMock).toBeCalledWith({ + expect(validateMock).toHaveBeenCalledTimes(1); + expect(validateMock).toHaveBeenCalledWith({ ...mockRequest, }); }); @@ -323,7 +338,7 @@ describe('PPOM Utils', () => { .spyOn(securityAlertAPI, 'getSecurityAlertsAPISupportedChainIds') .mockRejectedValue(new Error('Test Error')); await PPOMUtil.validateRequest(mockRequest, CHAIN_ID_MOCK); - expect(spy).toBeCalledTimes(2); + expect(spy).toHaveBeenCalledTimes(2); }); }); }); diff --git a/app/lib/ppom/ppom-util.ts b/app/lib/ppom/ppom-util.ts index 8415622c3c2..4316387bba6 100644 --- a/app/lib/ppom/ppom-util.ts +++ b/app/lib/ppom/ppom-util.ts @@ -64,14 +64,13 @@ async function validateRequest(req: PPOMRequest, transactionId?: string) { NetworkController, PPOMController: ppomController, } = Engine.context; - const chainId = NetworkController.state.providerConfig.chainId; const isConfirmationMethod = CONFIRMATION_METHODS.includes(req.method); const isSupportedChain = await isChainSupported(chainId); - + const isBlockaidFeatEnabled = await isBlockaidFeatureEnabled(); if ( !ppomController || - !isBlockaidFeatureEnabled() || + !isBlockaidFeatEnabled || !isConfirmationMethod || !isSupportedChain ) { @@ -135,7 +134,6 @@ async function validateRequest(req: PPOMRequest, transactionId?: string) { async function isChainSupported(chainId: Hex): Promise { let supportedChainIds = BLOCKAID_SUPPORTED_CHAIN_IDS; - try { if (isSecurityAlertsAPIEnabled()) { supportedChainIds = await getSecurityAlertsAPISupportedChainIds(); @@ -223,4 +221,4 @@ function normalizeRequest(request: PPOMRequest): PPOMRequest { }; } -export default { validateRequest }; +export default { validateRequest, isChainSupported }; diff --git a/app/util/blockaid/index.test.ts b/app/util/blockaid/index.test.ts index 93fd1f27629..4c8b403849f 100644 --- a/app/util/blockaid/index.test.ts +++ b/app/util/blockaid/index.test.ts @@ -8,6 +8,7 @@ import { import * as NetworkControllerMock from '../../selectors/networkController'; import { NETWORKS_CHAIN_ID } from '../../constants/network'; import Engine from '../../core/Engine'; +import ppomUtil from '../../lib/ppom/ppom-util'; import { getBlockaidMetricsParams, @@ -29,19 +30,25 @@ jest.mock('../../core/Engine', () => ({ }, })); +const mockIsChainSupported = jest.fn().mockResolvedValue(true); + describe('Blockaid util', () => { describe('getBlockaidTransactionMetricsParams', () => { beforeEach(() => { jest .spyOn(NetworkControllerMock, 'selectChainId') .mockReturnValue(NETWORKS_CHAIN_ID.MAINNET); + + jest + .spyOn(ppomUtil, 'isChainSupported') + .mockImplementation(mockIsChainSupported); }); afterEach(() => { jest.clearAllMocks(); }); - it('returns empty object when transaction id does not match security response id', () => { + it('returns empty object when transaction id does not match security response id', async () => { const transaction: TransactionType = { status: TransactionStatus.failed, error: new Error('Simulated transaction error'), @@ -63,11 +70,13 @@ describe('Blockaid util', () => { }, }, }; - const result = getBlockaidTransactionMetricsParams(transaction); + const result = getBlockaidTransactionMetricsParams( + transaction as unknown as TransactionType, + ); expect(result).toStrictEqual({}); }); - it('returns metrics params object when transaction id matches security response id', () => { + it('returns metrics params object when transaction id matches security response id', async () => { const transaction: TransactionType = { status: TransactionStatus.failed, error: new Error('Simulated transaction error'), @@ -90,7 +99,9 @@ describe('Blockaid util', () => { }, }; - const result = getBlockaidTransactionMetricsParams(transaction); + const result = getBlockaidTransactionMetricsParams( + transaction as unknown as TransactionType, + ); expect(result).toEqual({ ui_customizations: ['flagged_as_malicious'], security_alert_response: ResultType.Malicious, @@ -112,12 +123,12 @@ describe('Blockaid util', () => { jest.clearAllMocks(); }); - it('returns empty object when securityAlertResponse is not defined', () => { + it('returns empty object when securityAlertResponse is not defined', async () => { const result = getBlockaidMetricsParams(undefined); expect(result).toStrictEqual({}); }); - it('returns empty object when chain id is not in supported chain ids list', () => { + it('returns empty object when chain id is not in supported chain ids list', async () => { jest .spyOn(NetworkControllerMock, 'selectChainId') .mockReturnValue('0x10'); @@ -125,7 +136,7 @@ describe('Blockaid util', () => { expect(result).toStrictEqual({}); }); - it('should return additionalParams object when securityAlertResponse is defined', () => { + it('should return additionalParams object when securityAlertResponse is defined', async () => { const securityAlertResponse: SecurityAlertResponse = { result_type: ResultType.Malicious, reason: Reason.notApplicable, @@ -148,7 +159,7 @@ describe('Blockaid util', () => { }); }); - it('should not return eth call counts if providerRequestsCount is empty', () => { + it('should not return eth call counts if providerRequestsCount is empty', async () => { const securityAlertResponse: SecurityAlertResponse = { result_type: ResultType.Malicious, reason: Reason.notApplicable, @@ -164,7 +175,7 @@ describe('Blockaid util', () => { }); }); - it('should not return eth call counts if providerRequestsCount is undefined', () => { + it('should not return eth call counts if providerRequestsCount is undefined', async () => { const securityAlertResponse: SecurityAlertResponse = { result_type: ResultType.Malicious, reason: Reason.notApplicable, @@ -186,19 +197,19 @@ describe('Blockaid util', () => { jest.clearAllMocks(); }); - it('return true if blockaid is supported on current network', () => { + it('return true if blockaid is supported on current network', async () => { jest .spyOn(NetworkControllerMock, 'selectChainId') .mockReturnValue(NETWORKS_CHAIN_ID.MAINNET); - const result = isBlockaidSupportedOnCurrentChain(); + const result = await isBlockaidSupportedOnCurrentChain(); expect(result).toEqual(true); }); - it('return false if blockaid is not on current network', () => { + it('return false if blockaid is not on current network', async () => { jest .spyOn(NetworkControllerMock, 'selectChainId') .mockReturnValue(NETWORKS_CHAIN_ID.GOERLI); - const result = isBlockaidSupportedOnCurrentChain(); + const result = await isBlockaidSupportedOnCurrentChain(); expect(result).toEqual(false); }); }); @@ -208,26 +219,26 @@ describe('Blockaid util', () => { jest.clearAllMocks(); }); - it('return true if blockaid is supported on current network and its enabled by the user', () => { + it('return true if blockaid is supported on current network and its enabled by the user', async () => { jest .spyOn(NetworkControllerMock, 'selectChainId') .mockReturnValue(NETWORKS_CHAIN_ID.MAINNET); - const result = isBlockaidFeatureEnabled(); + const result = await isBlockaidFeatureEnabled(); expect(result).toEqual(true); }); - it('return false if blockaid is not supported on current network', () => { + it('return false if blockaid is not supported on current network', async () => { jest.spyOn(NetworkControllerMock, 'selectChainId').mockReturnValue('0x9'); - const result = isBlockaidFeatureEnabled(); + const result = await isBlockaidFeatureEnabled(); expect(result).toEqual(false); }); - it('return false if blockaid is not enabled by the user', () => { + it('return false if blockaid is not enabled by the user', async () => { jest .spyOn(NetworkControllerMock, 'selectChainId') .mockReturnValue(NETWORKS_CHAIN_ID.MAINNET); Engine.context.PreferencesController.state.securityAlertsEnabled = false; - const result = isBlockaidFeatureEnabled(); + const result = await isBlockaidFeatureEnabled(); expect(result).toEqual(false); }); }); diff --git a/app/util/blockaid/index.ts b/app/util/blockaid/index.ts index 4523ef3e0ac..7379e669ce6 100644 --- a/app/util/blockaid/index.ts +++ b/app/util/blockaid/index.ts @@ -3,10 +3,10 @@ import { ResultType, SecurityAlertResponse, } from '../../components/Views/confirmations/components/BlockaidBanner/BlockaidBanner.types'; -import { BLOCKAID_SUPPORTED_CHAIN_IDS, getDecimalChainId } from '../networks'; import { store } from '../../store'; import { selectChainId } from '../../selectors/networkController'; import type { TransactionMeta } from '@metamask/transaction-controller'; +import PPOMUtils from '../../lib/ppom/ppom-util'; interface TransactionSecurityAlertResponseType { securityAlertResponses: Record; @@ -15,44 +15,25 @@ interface TransactionSecurityAlertResponseType { export type TransactionType = TransactionMeta & TransactionSecurityAlertResponseType; -export const isSupportedChainId = (chainId: string) => { - /** - * Quite a number of our test cases return undefined as chainId from state. - * In such cases, the tests don't really care about the chainId. - * So, this treats undefined chainId as mainnet for now. - * */ - if (chainId === undefined) { - return true; - } - - const isSupported = BLOCKAID_SUPPORTED_CHAIN_IDS.some( - (id) => getDecimalChainId(id) === getDecimalChainId(chainId), - ); - - return isSupported; -}; - -export const isBlockaidSupportedOnCurrentChain = () => { +export const isBlockaidSupportedOnCurrentChain = async (): Promise => { const chainId = selectChainId(store.getState()); - return isSupportedChainId(chainId); + return await PPOMUtils.isChainSupported(chainId); }; -export const isBlockaidPreferenceEnabled = () => { +export const isBlockaidPreferenceEnabled = (): boolean => { const { PreferencesController } = Engine.context; return PreferencesController.state.securityAlertsEnabled; }; -export const isBlockaidFeatureEnabled = () => - isBlockaidSupportedOnCurrentChain() && isBlockaidPreferenceEnabled(); +export const isBlockaidFeatureEnabled = async (): Promise => + (await isBlockaidSupportedOnCurrentChain()) && isBlockaidPreferenceEnabled(); export const getBlockaidMetricsParams = ( securityAlertResponse?: SecurityAlertResponse, -) => { - // TODO: Replace "any" with type - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const additionalParams: Record = {}; +): Record => { + const additionalParams: Record = {}; - if (securityAlertResponse && isBlockaidFeatureEnabled()) { + if (securityAlertResponse) { const { result_type, reason, providerRequestsCount, source } = securityAlertResponse; @@ -81,7 +62,7 @@ export const getBlockaidMetricsParams = ( export const getBlockaidTransactionMetricsParams = ( transaction: TransactionType, -) => { +): Record => { let blockaidParams = {}; if (!transaction) { diff --git a/app/util/notifications/methods/common.ts b/app/util/notifications/methods/common.ts index 8c89acbbb23..da342081d82 100644 --- a/app/util/notifications/methods/common.ts +++ b/app/util/notifications/methods/common.ts @@ -261,6 +261,7 @@ export const getNetworkFees = async ( baseFee, priorityFee, maxFeePerGas, + chainId, }; } catch (error) { throw new Error( diff --git a/app/util/notifications/notification-states/erc1155-sent-received/erc1155-sent-received.tsx b/app/util/notifications/notification-states/erc1155-sent-received/erc1155-sent-received.tsx index 3624ef59e77..d073c9ba27a 100644 --- a/app/util/notifications/notification-states/erc1155-sent-received/erc1155-sent-received.tsx +++ b/app/util/notifications/notification-states/erc1155-sent-received/erc1155-sent-received.tsx @@ -6,7 +6,11 @@ import { TRIGGER_TYPES, } from '../../constants'; import { ExtractedNotification, isOfTypeNodeGuard } from '../node-guard'; -import { NotificationState } from '../types/NotificationState'; +import { + label_address_from, + label_address_to, + NotificationState, +} from '../types/NotificationState'; import { getNativeTokenDetailsByChainId, getNetworkFees, @@ -86,17 +90,13 @@ const state: NotificationState = { fields: [ { type: ModalFieldType.ADDRESS, - label: isSent(notification) - ? strings('notifications.modal.label_address_to_you') - : strings('notifications.modal.label_address_to'), - address: notification.data.to, + label: label_address_from(notification), + address: notification.data.from, }, { type: ModalFieldType.ADDRESS, - label: isSent(notification) - ? strings('notifications.modal.label_address_from') - : strings('notifications.modal.label_address_from_you'), - address: notification.data.from, + label: label_address_to(notification), + address: notification.data.to, }, { type: ModalFieldType.TRANSACTION, diff --git a/app/util/notifications/notification-states/erc20-sent-received/erc20-sent-received.ts b/app/util/notifications/notification-states/erc20-sent-received/erc20-sent-received.ts index 48b83e7ceb5..0650aaa258b 100644 --- a/app/util/notifications/notification-states/erc20-sent-received/erc20-sent-received.ts +++ b/app/util/notifications/notification-states/erc20-sent-received/erc20-sent-received.ts @@ -5,7 +5,11 @@ import { TRIGGER_TYPES, } from '../../constants'; import { ExtractedNotification, isOfTypeNodeGuard } from '../node-guard'; -import { NotificationState } from '../types/NotificationState'; +import { + label_address_from, + label_address_to, + NotificationState, +} from '../types/NotificationState'; import { getAmount, getNativeTokenDetailsByChainId, @@ -74,17 +78,13 @@ const state: NotificationState = { fields: [ { type: ModalFieldType.ADDRESS, - label: isSent(notification) - ? strings('notifications.modal.label_address_to_you') - : strings('notifications.modal.label_address_to'), - address: notification.data.to, + label: label_address_from(notification), + address: notification.data.from, }, { type: ModalFieldType.ADDRESS, - label: isSent(notification) - ? strings('notifications.modal.label_address_from') - : strings('notifications.modal.label_address_from_you'), - address: notification.data.from, + label: label_address_to(notification), + address: notification.data.to, }, { type: ModalFieldType.TRANSACTION, diff --git a/app/util/notifications/notification-states/erc721-sent-received/erc721-sent-received.tsx b/app/util/notifications/notification-states/erc721-sent-received/erc721-sent-received.tsx index f15723a55dc..469b0b43587 100644 --- a/app/util/notifications/notification-states/erc721-sent-received/erc721-sent-received.tsx +++ b/app/util/notifications/notification-states/erc721-sent-received/erc721-sent-received.tsx @@ -6,7 +6,11 @@ import { TRIGGER_TYPES, } from '../../constants'; import { ExtractedNotification, isOfTypeNodeGuard } from '../node-guard'; -import { NotificationState } from '../types/NotificationState'; +import { + label_address_from, + label_address_to, + NotificationState, +} from '../types/NotificationState'; import { getNativeTokenDetailsByChainId, getNetworkFees, @@ -72,17 +76,13 @@ const state: NotificationState = { fields: [ { type: ModalFieldType.ADDRESS, - label: isSent(notification) - ? strings('notifications.modal.label_address_to_you') - : strings('notifications.modal.label_address_to'), - address: notification.data.to, + label: label_address_from(notification), + address: notification.data.from, }, { type: ModalFieldType.ADDRESS, - label: isSent(notification) - ? strings('notifications.modal.label_address_from') - : strings('notifications.modal.label_address_from_you'), - address: notification.data.from, + label: label_address_to(notification), + address: notification.data.to, }, { type: ModalFieldType.TRANSACTION, diff --git a/app/util/notifications/notification-states/eth-sent-received/eth-sent-received.tsx b/app/util/notifications/notification-states/eth-sent-received/eth-sent-received.tsx index e10c31540fe..435492ac2f8 100644 --- a/app/util/notifications/notification-states/eth-sent-received/eth-sent-received.tsx +++ b/app/util/notifications/notification-states/eth-sent-received/eth-sent-received.tsx @@ -5,7 +5,11 @@ import { TRIGGER_TYPES, } from '../../constants'; import { ExtractedNotification, isOfTypeNodeGuard } from '../node-guard'; -import { NotificationState } from '../types/NotificationState'; +import { + label_address_from, + label_address_to, + NotificationState, +} from '../types/NotificationState'; import { getNativeTokenDetailsByChainId, getNotificationBadge, @@ -74,17 +78,13 @@ const state: NotificationState = { fields: [ { type: ModalFieldType.ADDRESS, - label: isSent(notification) - ? strings('notifications.modal.label_address_to_you') - : strings('notifications.modal.label_address_to'), - address: notification.data.to, + label: label_address_from(notification), + address: notification.data.from, }, { type: ModalFieldType.ADDRESS, - label: isSent(notification) - ? strings('notifications.modal.label_address_from') - : strings('notifications.modal.label_address_from_you'), - address: notification.data.from, + label: label_address_to(notification), + address: notification.data.to, }, { type: ModalFieldType.TRANSACTION, diff --git a/app/util/notifications/notification-states/types/NotificationState.ts b/app/util/notifications/notification-states/types/NotificationState.ts index 0dbff37d726..1b519b82800 100644 --- a/app/util/notifications/notification-states/types/NotificationState.ts +++ b/app/util/notifications/notification-states/types/NotificationState.ts @@ -1,9 +1,53 @@ -import { Notification } from '../../types'; +import { strings } from '../../../../../locales/i18n'; import { NotificationMenuItem } from './NotificationMenuItem'; import { NotificationModalDetails } from './NotificationModalDetails'; +import { TRIGGER_TYPES } from '../../constants'; +import { ExtractedNotification } from '../node-guard'; +import { Notification } from '../../../../util/notifications'; export interface NotificationState { guardFn: (n: Notification) => n is T; createMenuItem: (n: T) => NotificationMenuItem; createModalDetails?: (n: T) => NotificationModalDetails; } + +type ERC20Notification = ExtractedNotification< + TRIGGER_TYPES.ERC20_RECEIVED | TRIGGER_TYPES.ERC20_SENT +>; +type ERC721Notification = ExtractedNotification< + TRIGGER_TYPES.ERC721_RECEIVED | TRIGGER_TYPES.ERC721_SENT +>; + +type ERC1155Notification = ExtractedNotification< + TRIGGER_TYPES.ERC1155_RECEIVED | TRIGGER_TYPES.ERC1155_SENT +>; +type NativeSentReceiveNotification = ExtractedNotification< + TRIGGER_TYPES.ETH_RECEIVED | TRIGGER_TYPES.ETH_SENT +>; + +type INotification = + | ERC20Notification + | ERC721Notification + | ERC1155Notification + | NativeSentReceiveNotification; +const isSent = ( + n: + | NativeSentReceiveNotification + | ERC20Notification + | ERC1155Notification + | ERC721Notification, +) => + n.type === TRIGGER_TYPES.ETH_SENT || + n.type === TRIGGER_TYPES.ERC20_SENT || + n.type === TRIGGER_TYPES.ERC721_SENT || + n.type === TRIGGER_TYPES.ERC1155_SENT; + +export const label_address_from = (n: INotification): string => + isSent(n) + ? strings('notifications.modal.label_address_from_you') + : strings('notifications.modal.label_address_from'); + +export const label_address_to = (n: INotification): string => + isSent(n) + ? strings('notifications.modal.label_address_to') + : strings('notifications.modal.label_address_to_you'); diff --git a/attribution.txt b/attribution.txt index 699be270831..406afed0a84 100644 --- a/attribution.txt +++ b/attribution.txt @@ -23762,34 +23762,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -****************************** - -fsevents -2.3.3 -MIT License ------------ - -Copyright (C) 2010-2020 by Philipp Dunkel, Ben Noordhuis, Elan Shankar, Paul Miller - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - ****************************** fs-extra @@ -40912,7 +40884,34 @@ SOFTWARE. ****************************** -@parcel/watcher-darwin-arm64 +@parcel/watcher-linux-x64-glibc +2.3.0 +MIT License + +Copyright (c) 2017-present Devon Govett + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +****************************** + +@parcel/watcher-linux-x64-musl 2.3.0 MIT License @@ -50476,7 +50475,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ****************************** -@sentry/cli-darwin +@sentry/cli-linux-x64 2.31.2 license: BSD-3-Clause authors: undefined diff --git a/bitrise.yml b/bitrise.yml index 05f10112ff0..5599d0b9cbc 100644 --- a/bitrise.yml +++ b/bitrise.yml @@ -66,7 +66,7 @@ pipelines: - create_build_qa_android: {} - app_launch_times_test_stage: {} -#App Upgrade pipeline. Runs on browserstack + #App Upgrade pipeline. Runs on browserstack app_upgrade_pipeline: stages: - create_build_qa_android: {} @@ -279,12 +279,12 @@ workflows: title: Install node, yarn and corepack install_detox: steps: - - script@1: - inputs: - - content: |- - #!/usr/bin/env bash - scripts/detox-setup.sh - title: Install Detox Dependencies + - script@1: + inputs: + - content: |- + #!/usr/bin/env bash + scripts/detox-setup.sh + title: Install Detox Dependencies # Notifications utility workflows # Provides values for commit or branch message and path depending on commit env setup initialised or not @@ -460,9 +460,9 @@ workflows: stack: linux-docker-android-22.04 machine_type_id: elite-xl envs: - - PRODUCTION_APP_URL: 'bs://2c870d0c5d739f19eae55fd254048374447e79fb' # Last production's QA build - - PRODUCTION_BUILD_NAME: 7.29.0 - - PRODUCTION_BUILD_NUMBER: 1397 + - PRODUCTION_APP_URL: 'bs://46f0542276828b691f56adec25ac81065b5abf73' # Last production's QA build + - PRODUCTION_BUILD_NAME: 7.30.0 + - PRODUCTION_BUILD_NUMBER: 1410 - CUCUMBER_TAG_EXPRESSION: '@upgrade and @androidApp' - PRODUCTION_BUILD_STRING: 'MetaMask-QA v$PRODUCTION_BUILD_NAME ($PRODUCTION_BUILD_NUMBER)' - NEW_BUILD_STRING: 'MetaMask-QA v$VERSION_NAME ($VERSION_NUMBER)' @@ -1494,16 +1494,16 @@ app: PROJECT_LOCATION_IOS: ios - opts: is_expand: false - VERSION_NAME: 7.29.2 + VERSION_NAME: 7.30.0 - opts: is_expand: false - VERSION_NUMBER: 1409 + VERSION_NUMBER: 1410 - opts: is_expand: false - FLASK_VERSION_NAME: 7.29.2 + FLASK_VERSION_NAME: 7.30.0 - opts: is_expand: false - FLASK_VERSION_NUMBER: 1409 + FLASK_VERSION_NUMBER: 1410 - opts: is_expand: false ANDROID_APK_LINK: '' diff --git a/e2e/resources/blacklistURLs.json b/e2e/resources/blacklistURLs.json index 1d1dec71849..cfa117ffc65 100644 --- a/e2e/resources/blacklistURLs.json +++ b/e2e/resources/blacklistURLs.json @@ -13,6 +13,7 @@ ".*phishing-detection.metafi.codefi.network/.*", ".*phishing-detection.cx.metamask.io/.*", ".*eth.llamarpc.com/.*", - ".*token-api.metaswap.codefi.network/.*" + ".*token-api.metaswap.codefi.network/.*", + ".*gas.api.cx.metamask.io/networks/*" ] } diff --git a/e2e/specs/confirmations/approve-custom-erc20.spec.js b/e2e/specs/confirmations/approve-custom-erc20.spec.js index e149bb45ed2..a5ef3cb5851 100644 --- a/e2e/specs/confirmations/approve-custom-erc20.spec.js +++ b/e2e/specs/confirmations/approve-custom-erc20.spec.js @@ -51,6 +51,9 @@ describe(SmokeConfirmations('ERC20 tokens'), () => { await TestDApp.tapApproveButton(); //Input custom token amount + await Assertions.checkIfVisible( + ContractApprovalModal.approveTokenAmount, + ); await ContractApprovalModal.clearInput(); await ContractApprovalModal.inputCustomAmount('2'); diff --git a/e2e/specs/confirmations/increase-allowance-erc20.spec.js b/e2e/specs/confirmations/increase-allowance-erc20.spec.js index aa76f2f7a07..a1e61c0d236 100644 --- a/e2e/specs/confirmations/increase-allowance-erc20.spec.js +++ b/e2e/specs/confirmations/increase-allowance-erc20.spec.js @@ -50,6 +50,9 @@ describe(SmokeConfirmations('ERC20 - Increase Allowance'), () => { await TestDApp.tapIncreaseAllowanceButton(); //Input custom token amount + await Assertions.checkIfVisible( + ContractApprovalModal.approveTokenAmount, + ); await ContractApprovalModal.clearInput(); await ContractApprovalModal.inputCustomAmount('2'); diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index bff0c1bbb7a..b5c88bf0e54 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1249,7 +1249,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1409; + CURRENT_PROJECT_VERSION = 1410; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1286,7 +1286,7 @@ "${inherited}", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.29.2; + MARKETING_VERSION = 7.30.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1314,7 +1314,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1409; + CURRENT_PROJECT_VERSION = 1410; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1349,7 +1349,7 @@ "${inherited}", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.29.2; + MARKETING_VERSION = 7.30.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1377,7 +1377,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1409; + CURRENT_PROJECT_VERSION = 1410; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1410,7 +1410,7 @@ ); LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift$(inherited)"; LLVM_LTO = YES; - MARKETING_VERSION = 7.29.2; + MARKETING_VERSION = 7.30.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1438,7 +1438,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1409; + CURRENT_PROJECT_VERSION = 1410; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1469,7 +1469,7 @@ ); LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift$(inherited)"; LLVM_LTO = YES; - MARKETING_VERSION = 7.29.2; + MARKETING_VERSION = 7.30.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = "$(inherited)"; OTHER_LDFLAGS = ( @@ -1592,7 +1592,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMaskDebug.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1409; + CURRENT_PROJECT_VERSION = 1410; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 48XVW22RCG; @@ -1629,7 +1629,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.29.2; + MARKETING_VERSION = 7.30.0; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "$(inherited)", @@ -1660,7 +1660,7 @@ CODE_SIGN_ENTITLEMENTS = MetaMask/MetaMask.entitlements; CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 1409; + CURRENT_PROJECT_VERSION = 1410; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 48XVW22RCG; "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 48XVW22RCG; @@ -1695,7 +1695,7 @@ "\"$(SRCROOT)/MetaMask/System/Library/Frameworks\"", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.29.2; + MARKETING_VERSION = 7.30.0; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "$(inherited)", diff --git a/ios/Podfile b/ios/Podfile index a4506c47e9b..d9ae91f6b43 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -116,11 +116,26 @@ target 'MetaMask-Flask' do end post_install do |installer| + # fix flipper with pika 15.3 toolchain + installer.pods_project.targets.each do |target| + if target.name == 'Flipper' + file_path = 'ios/Pods/Flipper/xplat/Flipper/FlipperTransportTypes.h' + system("chmod +w " + file_path) + contents = File.read(file_path) + unless contents.include?('#include ') + File.open(file_path, 'w') do |file| + file.puts('#include ') + file.puts(contents) + end + end + end + end + react_native_post_install( installer, # Set `mac_catalyst_enabled` to `true` in order to apply patches # necessary for Mac Catalyst builds :mac_catalyst_enabled => false - ) + ) __apply_Xcode_12_5_M1_post_install_workaround(installer) end diff --git a/locales/languages/de.json b/locales/languages/de.json index 6535d36c210..3f775f8daa3 100644 --- a/locales/languages/de.json +++ b/locales/languages/de.json @@ -451,10 +451,10 @@ "use_the_currency_symbol": "verwendet das Währungssymbol", "use_correct_symbol": "Vergewissern Sie sich, dass Sie das richtige Symbol verwenden, bevor Sie fortfahren.", "chain_id_currently_used": "Diese Chain-ID wird derzeit verwendet von der", - "incorrect_network_name_warning": "According to our records, the network name may not correctly match this chain ID.", - "suggested_name": "Suggested name:", + "incorrect_network_name_warning": "Laut unseren Aufzeichnungen stimmt dieser Netzwerkname nicht mit dieser Chain-ID überein.", + "suggested_name": "Vorgeschlagener Name:", "network_check_validation_desc": "verringert die Wahrscheinlichkeit, dass Sie sich mit einem böswilligen oder falschen Netz verbinden.", - "cant_verify_custom_network_warning": "We can’t verify custom networks. To avoid malicious providers from recording your network activity, only add networks you trust.", + "cant_verify_custom_network_warning": "Wir können benutzerdefinierte Netzwerke nicht verifizieren. Um zu verhindern, dass böswillige Anbieter Ihre Netzwerkaktivitäten aufzeichnen, fügen Sie nur Netzwerke hinzu, denen Sie vertrauen.", "nfts_autodetection_cta": "Aktivieren Sie die NFT-Erkennung in den Einstellungen.", "learn_more": "Mehr erfahren", "add_collectibles": "NFTs importieren", @@ -499,11 +499,14 @@ "address": "Token-Contract-Adresse", "decimal": "Token-Dezimale", "network": "Netzwerk", + "network_fee": "Network fee", "lists": "Token-Listen", "hide_cta": "Token verbergen", "options": { + "view_on_portfolio": "Auf Portfolio ansehenAuf Portfolio ansehen", "view_on_block": "Im Block-Explorer anzeigen", - "token_details": "Token-Details" + "token_details": "Token-Details", + "remove_token": "Token entfernen" } }, "activity_view": { @@ -550,6 +553,7 @@ "description_title": "Helfen Sie uns dabei, MetaMask zu verbessern.", "description_content_1": "Wir würden gerne grundlegende Nutzungsdaten sammeln, um MetaMask zu verbessern. Sie sollten wissen, dass wir die Daten, die Sie uns hier zur Verfügung stellen, niemals verkaufen.", "description_content_2": "Wenn wir Metriken sammeln, wird es immer wie folgt sein ...", + "description_content_3": "Erfahren Sie, wie wir Ihre Privatsphäre schützen, während wir Nutzungsdaten für Ihr Profil sammeln.", "checkbox": "Wir verwenden diese Daten, um zu erfahren, wie Sie mit unserer Marketingkommunikation umgehen. Wir können relevante Neuigkeiten (wie Produktmerkmale) teilen.", "action_description_1_prefix": "Privat:", "action_description_2_prefix": "Allgemein:", @@ -600,7 +604,21 @@ "decimals_is_required": "Dezimalstelle ist erforderlich. Finden Sie sie auf:", "no_tokens_found": "Wir konnten keine Token mit diesem Namen finden.", "select_token": "Token auswählen", - "address_must_be_smart_contract": "Privatadresse erkannt. Geben Sie die Token-Contract-Adresse ein." + "address_must_be_smart_contract": "Privatadresse erkannt. Geben Sie die Token-Contract-Adresse ein.", + "billion_abbreviation": "Mrd.", + "trillion_abbreviation": "T.", + "million_abbreviation": "Mio.", + "token_details": "Token-Details", + "contract_address": "Contract-Adresse", + "token_list": "Token-Liste", + "market_details": "Marktdetails", + "market_cap": "Marktkapitalisierung", + "total_volume": "Gesamtvolumen (24h)", + "volume_to_marketcap": "Volumen / Marktkapitalisierung", + "circulating_supply": "Zirkulierende Versorgung", + "all_time_high": "Allzeithoch", + "all_time_low": "Allzeittief", + "fully_diluted": "Vollständig verdünnt" }, "collectible": { "collectible_address": "Adresse", @@ -650,10 +668,10 @@ "accounts_title": "Konten", "connect_account_title": "Konto verbinden", "connect_accounts_title": "Konten verbinden", - "edit_accounts_title": "Edit accounts", + "edit_accounts_title": "Konten bearbeiten", "connected_accounts_title": "Verbundene Konten", "connect_description": "Konto-Adresse, Guthaben, Aktivitäten teilen und dieser Seite erlauben, Transaktionen einzuleiten.", - "select_accounts_description": "Select the account(s) to use on this site:", + "select_accounts_description": "Wählen Sie das/die Konto/Konten, das/die Sie auf dieser Website verwenden möchten:", "connect_multiple_accounts": "Mehrere Konten verbinden", "connect_more_accounts": "Mehr Konten verbinden", "cancel": "Stornieren", @@ -669,7 +687,10 @@ "address_balance_activity_permission": "Siehe Adresse, Kontostand und Aktivität", "suggest_transactions": "Transaktionen zur Bestätigung vorschlagen", "disconnect": "Trennen", + "disconnect_all": "Alle trennen", + "reconnect_notice": "Wenn Sie die Verbindung Ihrer Konten von {{dappUrl}} trennen, müssen Sie die Verbindung wiederherstellen, um sie erneut zu verwenden.", "disconnect_all_accounts": "Alle Konten trennen", + "disconnect_you_from": "Dadurch wird die Verbindung von {{dappUrl}} getrennt", "deceptive_site_ahead": "Täuschende Website voraus", "deceptive_site_desc": "Die Website, die Sie besuchen wollen, ist nicht sicher. Angreifer könnten Sie dazu verleiten, etwas Gefährliches zu tun.", "learn_more": "Mehr erfahren", @@ -687,6 +708,7 @@ "accounts_connected": "Konten verbunden.", "disconnected": "getrennt.", "disconnected_all": "Alle Konten wurden getrennt.", + "disconnected_from": "Getrennt von {{dappHostName}}", "nft_detection_enabled": "Automatische NFT-Erkennung aktiviert" }, "connect_qr_hardware": { @@ -697,13 +719,13 @@ "keystone": "Keystone", "ngravezero": "Ngrave Zero", "learnMore": "Mehr erfahren", - "buyNow": "Buy now", + "buyNow": "Jetzt kaufen", "tutorial": "Tutorial", "description4": "Keystone (Tutorial)", "description5": "1. Entsperren Sie Ihre Keystone.", "description6": "2. Tippen Sie auf das Menü ··· und gehen Sie dann zu Sync", "button_continue": "Weiter", - "hint_text": "Scan your hardware wallet to ", + "hint_text": "Scannen Sie Ihre Hardware-Wallet, um ", "purpose_connect": "verbinden", "purpose_sign": "die Transaktion zu bestätigen", "select_accounts": "Ein Konto auswählen" @@ -724,7 +746,7 @@ "enabling_profile_sync": "Aktivierung der Profilsynchronisierung ...", "disabling_profile_sync": "Deaktivierung der Profilsynchronisierung ...", "notifications_dismiss_modal": "Verwerfen", - "select_rpc_url": "Select RPC URL", + "select_rpc_url": "RPC-URL auswählen", "title": "Einstellungen", "current_conversion": "Basiswährung", "current_language": "Aktuelle Sprache", @@ -824,7 +846,7 @@ "notifications_title": "Benachrichtigungen", "notifications_desc": "Verwalten Sie Ihre Benachrichtigungen", "allow_notifications": "Benachrichtigungen erlauben", - "allow_notifications_desc": "Stay in the loop on what’s happening in your wallet with notifications. To use notifications, we use a profile to sync some settings across your devices.", + "allow_notifications_desc": "Bleiben Sie mit Benachrichtigungen stets darüber auf dem Laufenden, was in Ihrer Wallet passiert. Zur Nutzung von Benachrichtigungen verwenden wir ein Profil, um bestimmte Einstellungen auf Ihren Geräten zu synchronisieren.", "notifications_opts": { "customize_session_title": "Passen Sie Ihre Benachrichtigungen an", "customize_session_desc": "Schalten Sie die Arten von Benachrichtigungen ein, die Sie erhalten möchten:", @@ -843,6 +865,10 @@ }, "contacts_title": "Kontakte", "contacts_desc": "Konten hinzufügen, bearbeiten, entfernen und verwalten", + "permissions_title": "Genehmigungen", + "permissions_desc": "Verwalten Sie die Genehmigungen, die Sie Websites und Apps erteilt haben.", + "no_permissions": "Keine Genehmigungen", + "no_permissions_desc": "Wenn Sie ein Konto mit einer Website oder einer App verbinden, wird es hier angezeigt.", "security_title": "Sicherheit und Datenschutz", "back": "Zurück", "security_desc": "Datenschutzeinstellungen, MetaMetrics, privater Schlüssel und geheime Wiederherstellungsphrase für die Wallet", @@ -932,14 +958,18 @@ "custom_network_name": "Benutzerdefinierte Netzwerke", "popular": "Beliebt", "delete": "Löschen", + "account": "Konto", + "accounts": "Konten", + "network": "Netzwerk", + "networks": "Netzwerke", "network_exists": "Dieses Netzwerk wurde bereits hinzugefügt.", - "unMatched_chain": "According to our records, this URL does not match a known provider for this chain ID.", - "unMatched_chain_name": "This chain ID doesn’t match the network name.", - "url_associated_to_another_chain_id": "This URL is associated with another chain ID.", - "chain_id_associated_with_another_network": "The information you have entered is associated with an existing chain ID. Update your information or", - "network_already_exist": "You already have a network with the same chain ID or RPC URL. Enter a new chain ID or RPC URL", - "edit_original_network": "edit the original network", - "find_the_right_one": "Find the right one on:", + "unMatched_chain": "Laut unseren Aufzeichnungen stimmt diese URL nicht mit einem bekannten Anbieter für diese Chain-ID überein.", + "unMatched_chain_name": "Diese Chain-ID stimmt nicht mit dem Netzwerknamen überein.", + "url_associated_to_another_chain_id": "Diese URL ist mit einer anderen Chain-ID verknüpft.", + "chain_id_associated_with_another_network": "Die von Ihnen eingegebenen Informationen sind mit einer bestehenden Chain-ID verknüpft. Aktualisieren Sie Ihre Informationen oder", + "network_already_exist": "Sie haben bereits ein Netzwerk mit der gleichen Chain-ID oder RPC-URL. Geben Sie eine neue Chain-ID oder RPC-URL ein.", + "edit_original_network": "Das ursprüngliche Netzwerk bearbeiten", + "find_the_right_one": "Finden Sie das Richtige auf:", "delete_metrics_title": "MetaMetrics-Daten löschen", "delete_metrics_description_part_one": "Dies löscht historische", "delete_metrics_description_part_two": "MetaMetrics", @@ -1169,7 +1199,7 @@ "text": "TEXT", "qr_code": "QR-CODE", "hold_to_reveal_credential": "Halten, um {{credentialName}} offenlegen", - "reveal_credential": "Reveal {{credentialName}}", + "reveal_credential": "{{credentialName}} offenlegen", "keep_credential_safe": "Bewahren Sie Ihre {{credentialName}} sicher auf", "srp_abbreviation_text": "GWP", "srp_text": "Geheime Wiederherstellungsphrase", @@ -1296,13 +1326,14 @@ "error": "Fehler", "attempting_to_scan_with_wallet_locked": "Es sieht aus, als würden Sie versuchen, einen QR-Code einzuscannen. Sie müssen Ihre Wallet entsperren, um diesen nutzen zu können.", "attempting_sync_from_wallet_error": "Es sieht aus, als würden Sie versuchen, die Erweiterung zu synchronisieren. Um dies zu tun, müssen Sie Ihre aktuelle Waller löschen. \n\nNachdem Sie die App gelöscht oder eine aktuelle Version der App neu installiert haben, wählen Sie die Option „Mit MetaMask-Erweiterung synchronisieren“. Wichtig! Bevor Sie Ihre Wallet löschen, stellen Sie sicher, dass Sie ein Backup Ihrer geheimen Wiederherstellungsphrase erstellt haben.", - "not_allowed_error_title": "Kamerazugriff aktivieren", - "not_allowed_error_desc": "Kamerazugriff erforderlich, um einen QR-Code zu scannen, der einer Kontoadresse oder Kontaktadresse zugeordnet ist.", + "not_allowed_error_title": "Kamerazugriff einschalten", + "not_allowed_error_desc": "Um einen QR-Code zu scannen, müssen Sie MetaMask über das Einstellungsmenü Ihres Geräts Zugriff auf die Kamera gewähren.", "unrecognized_address_qr_code_title": "Unbekannter QR-Code", "unrecognized_address_qr_code_desc": "Es tut uns leid, aber dieser QR-Code ist mit keiner Konto- oder Contract-Adresse verbunden.", "url_redirection_alert_title": "Sie sind im Begriff, einen externen Link abzurufen.", "url_redirection_alert_desc": "Links können verwendet werden, um versuchen, Personen zu betrügen oder zu phishen, also besuchen Sie nur Webseiten, denen Sie vertrauen.", - "label": "Einen QR-Code scannen" + "label": "Einen QR-Code scannen", + "open_settings": "Einstellungen" }, "action_view": { "cancel": "Stornieren", @@ -1312,6 +1343,7 @@ "transaction_id": "Transaktions-ID", "alert": "BENACHRICHTIGUNG", "amount": "Betrag", + "details": "Details", "next": "Weiter", "back": "Zurück", "confirm": "Bestätigen", @@ -1320,7 +1352,7 @@ "cancel": "Stornieren", "save": "Speichern", "speedup": "Beschleunigen", - "sign_with_keystone": "Sign with hardware wallet", + "sign_with_keystone": "Mit Hardware-Wallet anmelden", "sign_with_ledger": "Mit Ledger unterschreiben", "from": "Von", "gas_fee": "Gas-Gebühr", @@ -1394,7 +1426,7 @@ "token_id": "Token-ID", "not_enough_for_gas": "Sie haben 0 {{ticker}} auf Ihrem Konto, um Transaktionsgebühren zu zahlen. Kaufen Sie {{ticker}} oder zahlen Sie über ein anderes Konto ein.", "send": "Senden", - "confirm_with_qr_hardware": "Confirm with hardware wallet", + "confirm_with_qr_hardware": "Mit Hardware-Wallet bestätigen", "confirm_with_ledger_hardware": "Mit Ledger bestätigen", "confirmed": "Bestätigt", "pending": "Ausstehend", @@ -1427,7 +1459,7 @@ "no_camera_permission": "Kamera nicht berechtigt. Bitte erteilen Sie die Genehmigung und versuchen Sie es erneut.", "invalid_qr_code_sign": "Ungültiger QR-Code. Bitte überprüfen Sie Ihre Hardware und versuchen Sie es erneut.", "no_camera_permission_android": "Sie müssen MetaMask Zugriff auf Ihre Kamera gewähren, um fortzufahren. Möglicherweise müssen Sie auch Ihre Systemeinstellungen ändern.", - "mismatched_qr_request_id": "Incongruent transaction data. Please use your hardware wallet to sign the QR code below and tap 'Get Signature'.", + "mismatched_qr_request_id": "Inkongruente Transaktionsdaten. Bitte verwenden Sie Ihre Hardware-Wallet, um den QR-Code unten zu unterzeichnen, und tippen Sie auf „Signatur abrufen“.", "fiat_conversion_not_available": "Fiat-Umrechnungen sind zur Zeit nicht verfügbar.", "hex_data_copied": "Hex-Daten in die Zwischenablage kopiert", "invalid_recipient": "Ungültiger Empfänger", @@ -1628,8 +1660,8 @@ "import_wallet_label": "Konto hinzugefügt", "import_wallet_tip": "Alle zukünftigen Transaktionen, die von diesem Gerät aus getätigt werden, erhalten neben dem Zeitstempel den Vermerk „von diesem Gerät“. Bei Transaktionen, die vor dem Hinzufügen des Kontos datiert wurden, wird im Verlauf nicht angegeben, welche ausgehenden Transaktionen von diesem Gerät stammen.", "sign_title_scan": "Scan ", - "sign_title_device": "with your hardware wallet", - "sign_description_1": "After you have signed with your hardware wallet,", + "sign_title_device": "mit Ihrer Hardware-Wallet", + "sign_description_1": "Nachdem Sie sich mit Ihrer Hardware-Wallet angemeldet haben,", "sign_description_2": "tippen Sie auf „Signatur abrufen“.", "sign_get_signature": "Signatur abrufen", "network_fee": "Netzwerkgebühr" @@ -1702,7 +1734,11 @@ "network_display_name": "Anzeigename", "network_chain_id": "Chain-ID", "network_rpc_url": "Netzwerk-URL", - "network_rpc_url_label": "Network RPC URL", + "network_rpc_url_label": "Netzwerk-RPC-URL", + "new_default_network_url": "Neue Standard-Netzwerk-URL", + "current_label": "Aktuell", + "new_label": "Neu", + "review": "Überprüfen", "view_details": "Details anzeigen", "network_details": "Netzwerkdetails", "network_select_confirm_use_safe_check": "Wenn Sie Bestätigen wählen, wird die Prüfung der Netzwerkdetails aktiviert. Sie können die Prüfung der Netzwerkdetails deaktivieren unter", @@ -1735,7 +1771,7 @@ "add_other_network_here": "hier entdecken.", "you_can": "Sie können aber auch", "add_network": "weitere Netzwerke manuell hinzufügen.", - "add_specific_network": "Add {{network_name}}", + "add_specific_network": "{{network_name}} hinzufügen", "select_network": "Netzwerk wählen", "enabled_networks": "Aktivierte Netzwerke", "additional_networks": "Zusätzliche Netzwerke", @@ -2010,7 +2046,7 @@ "staked": "Staked", "received": "Empfangen", "unstaked": "Unstaked", - "mark_all_as_read": "Mark all as read", + "mark_all_as_read": "Alle als gelesen markieren", "to": "An", "rate": "Preis (einschließlich Gebühren)", "unstaking_requested": "Unstaking angefordert", @@ -2023,7 +2059,7 @@ "swap": "Geswappt", "sent": "An {{address}} gesendet", "menu_item_title": { - "metamask_swap_completed": "Swapped {{symbolIn}} for {{symbolOut}}", + "metamask_swap_completed": "{{symbolIn}} für {{symbolOut}} geswappt", "erc20_sent": "An {{address}} gesendet", "erc20_received": "Empfangen von {{address}}", "eth_sent": "An {{address}} gesendet", @@ -2050,7 +2086,7 @@ "title_untake_ready": "Auszahlung bereit", "title_stake": "{{symbol}} staked", "title_unstake_completed": "Unstaking abgeschlossen", - "title_swapped": "Swapped {{symbolIn}} to {{symbolOut}}", + "title_swapped": "{{symbolIn}} an {{symbolOut}} geswappt", "label_address_to": "An", "label_address_from": "Von", "label_address_to_you": "An (Sie)", @@ -2129,9 +2165,9 @@ "transaction_id_copied_to_clipboard": "Transaktions-ID in die Zwischenablage kopiert", "activation_card": { "title": "Benachrichtigungen einschalten", - "description_1": "Bleiben Sie mit Benachrichtigungen auf dem Laufenden darüber, was in Ihrer Wallet passiert. ", + "description_1": "Bleiben Sie mit Benachrichtigungen auf dem Laufenden darüber, was in Ihrer Wallet passiert.", "description_2": "Um diese Funktion nutzen zu können, generieren wir eine anonyme ID für Ihr Konto. Sie wird nur für die Synchronisierung Ihrer Daten in MetaMask verwendet und ist nicht mit Ihren Aktivitäten oder anderen Identifikatoren verknüpft, sodass Ihre Privatsphäre gewahrt bleibt.", - "learn_more": "Erfahren Sie, wie wir Ihre Privatsphäre bei der Nutzung dieser Funktion schützen. ", + "learn_more": "Erfahren Sie, wie wir Ihre Privatsphäre bei der Nutzung dieser Funktion schützen.", "manage_preferences_1": "Sie können die Benachrichtigungen jederzeit ausschalten in ", "manage_preferences_2": "Einstellungen > Benachrichtigungen.", "cancel": "Stornieren", @@ -2523,7 +2559,8 @@ "sale_completed_title": "Bestellung abgeschlossen", "sale_completed_description": "Ihre Bestellung war erfolgreich!", "sale_pending_title": "{{currency}}-Verkaufsabwicklung", - "sale_pending_description": "Ihre Order wird soeben verarbeitet." + "sale_pending_description": "Ihre Order wird soeben verarbeitet.", + "no_date": "Unbekannt" } }, "swaps": { @@ -2782,14 +2819,14 @@ }, "switch_custom_network": { "title_existing_network": "Diese Seite möchte das Netzwerk wechseln.", - "title_enabled_network": "This site wants to:", + "title_enabled_network": "Diese Website möchte:", "title_new_network": "Neues Netzwerk hinzugefügt", "switch_warning": "Dadurch wird das ausgewählte Netzwerk in MetaMask auf ein zuvor hinzugefügtes Netzwerk umgestellt:", - "use_enabled_networks": "Use your enabled networks", - "wants_to_see_your_accounts": "See your accounts and suggest transactions", - "requesting_for": "Requesting for ", - "edit": "Edit", - "add_network_and_give_dapp_permission_warning": "You're adding this network to MetaMask and giving {{dapp_origin}} permission to use it.", + "use_enabled_networks": "Verwenden Sie Ihre aktivierten Netzwerke", + "wants_to_see_your_accounts": "Ihre Konten einsehen und Transaktionen vorschlagen", + "requesting_for": "Anfordern für ", + "edit": "Bearbeiten", + "add_network_and_give_dapp_permission_warning": "Sie fügen dieses Netzwerk zu MetaMask hinzu und geben {{dapp_origin}} die Genehmigung, es zu nutzen.", "available": "ist jetzt in der Netzwerkauswahl verfügbar.", "cancel": "Stornieren", "switch": "Netzwerk wechseln" @@ -3113,8 +3150,8 @@ "cannot_get_account": "Konto konnte nicht abgerufen werden.", "connect_ledger": "Ledger verbinden", "looking_for_device": "Suche nach Gerät", - "ledger_reminder_message": "Please make sure your Ledger device is:", - "ledger_reminder_message_step_one": "1. Unlock your Ledger device", + "ledger_reminder_message": "Bitte stellen Sie sicher, dass Ihr Ledger-Gerät:", + "ledger_reminder_message_step_one": "1. Entsperren Sie Ihre Ledger-Gerät", "ledger_reminder_message_step_two": "2. Installieren und öffnen Sie die Ethereum-App", "ledger_reminder_message_step_three": "3. Aktivieren Sie Bluetooth", "ledger_reminder_message_step_four": "4. Standort ist aktiviert mit Verwendung des genauen Standorts auf", @@ -3123,7 +3160,7 @@ "available_devices": "Verfügbare Geräte", "retry": "Erneut versuchen", "continue": "Fortfahren", - "confirm_transaction_on_ledger": "Confirm transaction on your Ledger", + "confirm_transaction_on_ledger": "Transaktion in Ihrem Ledger bestätigen", "bluetooth_enabled_message": "Vergewissern Sie sich, dass Bluetooth aktiviert ist.", "device_unlocked_message": "Gerät ist entsperrt", "ledger_disconnected": "Verbindung zu Ihrem Gerät unterbrochen", @@ -3146,13 +3183,11 @@ "not_supported": "Operation nicht unterstützt", "not_supported_error": "Nur Version 4 der getippten Daten-Unterzeichnung wird unterstützt.", "error_during_connection": "Ein unerwarteter Fehler ist aufgetreten", - "error_during_connection_message": "There's been a slight problem connecting your Ledger device, tap 'Retry' below to give this another go. Sometimes this occurs due to the ETH app on your Ledger device being open at the start of the pairing process with MetaMask Mobile.", + "error_during_connection_message": "Es gab ein kleines Problem mit der Verbindung zu Ihrem Ledger-Gerät. Tippen Sie weiter unten auf „Erneut versuchen“, um es noch einmal zu probieren. Dies passiert manchmal, wenn die EHP-App auf Ihrem Ledger-Gerät zu Beginn der Kopplung bereits mit MetaMask Mobile geöffnet ist.", "how_to_install_eth_webview_title": "So installieren Sie die Etherum-App", "nonce_too_low": "Nonce zu niedrig", "nonce_too_low_error": "Die eingestellte Nonce ist zu niedrig", - "select_accounts": "Select an Account", - "select_accounts_warning": "Note: these accounts might be different to what you're used to.", - "select_accounts_sub_msg": "These accounts are derived using the BIP44 derivation path, which is different to the default Ledger Live derivation path on MetaMask Extension, Different derivation paths for Ledger will be available on MetaMask Mobile soon." + "select_accounts": "Ein Konto auswählen" }, "account_actions": { "edit_name": "Kontonamen bearbeiten", @@ -3225,7 +3260,7 @@ "title_off": "Grundfunktionalität ausschalten", "description_off": "Dies bedeutet, dass Sie Ihre Zeit auf MetaMask nicht vollständig optimieren können. Grundlegende Funktionen (wie Token-Details, optimale Gas-Einstellungen und andere) stehen Ihnen nicht zur Verfügung.", "title_on": "Grundfunktionalität einschalten", - "description_on": "Um Ihre Zeit auf MetaMask zu optimieren, müssen Sie diese Funktion einschalten. Grundlegende Funktionen (wie Token-Details, optimale Gas-Einstellungen und andere) sind für das Web3-Erlebnis wichtig.", + "description_on": "Um Ihre Zeit auf MetaMask zu optimieren, müssen Sie diese Funktion einschalten. Grundlegende Funktionen (wie Token-Details, optimale Gas-Einstellungen, Benachrichtigungen und andere) sind für das Web3-Erlebnis wichtig.", "checkbox_label": "Ich verstehe und möchte fortfahren", "buttons": { "cancel": "Abbrechen", diff --git a/locales/languages/el.json b/locales/languages/el.json index 57a693b221b..af3ffc243b0 100644 --- a/locales/languages/el.json +++ b/locales/languages/el.json @@ -451,10 +451,10 @@ "use_the_currency_symbol": "χρησιμοποιεί το σύμβολο νομίσματος", "use_correct_symbol": "Βεβαιωθείτε ότι χρησιμοποιείτε το σωστό σύμβολο προτού συνεχίσετε", "chain_id_currently_used": "Αυτό το αναγνωριστικό αλυσίδας χρησιμοποιείται προς το παρόν από το", - "incorrect_network_name_warning": "According to our records, the network name may not correctly match this chain ID.", - "suggested_name": "Suggested name:", + "incorrect_network_name_warning": "Σύμφωνα με τα αρχεία μας, το όνομα του δικτύου ενδέχεται να μην ταιριάζει απόλυτα με αυτό το αναγνωριστικό αλυσίδας.", + "suggested_name": "Προτεινόμενο όνομα:", "network_check_validation_desc": "μειώνει τις πιθανότητες σύνδεσης σε κακόβουλο ή λανθασμένο δίκτυο.", - "cant_verify_custom_network_warning": "We can’t verify custom networks. To avoid malicious providers from recording your network activity, only add networks you trust.", + "cant_verify_custom_network_warning": "Δεν μπορούμε να επαληθεύσουμε τα προσαρμοσμένα δίκτυα. Για να αποφύγετε την καταγραφή της δραστηριότητας του δικτύου σας από κακόβουλους παρόχους, προσθέστε μόνο τα δίκτυα που εμπιστεύεστε.", "nfts_autodetection_cta": "Ενεργοποιήστε τον εντοπισμό NFT στις Ρυθμίσεις", "learn_more": "Μάθετε περισσότερα", "add_collectibles": "Εισαγωγή NFT", @@ -499,11 +499,14 @@ "address": "Διεύθυνση συμβολαίου token", "decimal": "Δεκαδικά Ψηφία token", "network": "Δίκτυο", + "network_fee": "Network fee", "lists": "Λίστες Token", "hide_cta": "Απόκρυψη token", "options": { + "view_on_portfolio": "Προβολή στο Portfolio", "view_on_block": "Προβολή στο block explorer", - "token_details": "Λεπτομέρειες token" + "token_details": "Λεπτομέρειες token", + "remove_token": "Αφαίρεση του token" } }, "activity_view": { @@ -550,6 +553,7 @@ "description_title": "Βοηθήστε μας να βελτιώσουμε το MetaMask", "description_content_1": "Θέλουμε να συλλέξουμε βασικά δεδομένα χρήσης για να βελτιώσουμε το MetaMask. Λάβετε υπόψη ότι δεν πουλάμε ποτέ τα δεδομένα που μας παρέχετε εδώ.", "description_content_2": "Όταν συγκεντρώνουμε μετρήσεις, θα είναι πάντα...", + "description_content_3": "Μάθετε πώς προστατεύουμε το απόρρητό σας ενώ συλλέγουμε δεδομένα χρήσης από το προφίλ σας.", "checkbox": "Θα χρησιμοποιήσουμε αυτά τα δεδομένα για να μάθουμε πώς αλληλεπιδράτε με τις επικοινωνίες μάρκετινγκ. Ενδέχεται να κοινοποιήσουμε σχετικές ειδήσεις (όπως χαρακτηριστικά προϊόντων).", "action_description_1_prefix": "Ιδιωτικές:", "action_description_2_prefix": "Γενικές:", @@ -600,7 +604,21 @@ "decimals_is_required": "Απαιτείται δεκαδικός αριθμός. Βρείτε τον στο:", "no_tokens_found": "Δεν μπορέσαμε να βρούμε κανένα token με αυτό το όνομα.", "select_token": "Επιλέξτε Token", - "address_must_be_smart_contract": "Εντοπίστηκε προσωπική διεύθυνση. Εισαγάγετε τη διεύθυνση συμβολαίου του token." + "address_must_be_smart_contract": "Εντοπίστηκε προσωπική διεύθυνση. Εισαγάγετε τη διεύθυνση συμβολαίου του token.", + "billion_abbreviation": "Δ", + "trillion_abbreviation": "Τ", + "million_abbreviation": "Ε", + "token_details": "Λεπτομέρειες του token", + "contract_address": "Διεύθυνση συμβολαίου", + "token_list": "Λίστα με tokens", + "market_details": "Λεπτομέρειες της αγοράς", + "market_cap": "Επιχειρηματικά κεφάλαια", + "total_volume": "Συνολική ποσότητα (24 ώρες)", + "volume_to_marketcap": "Ποσότητα / Επιχειριηματικά κεφάλαια", + "circulating_supply": "Διαθέσιμη προσφορά", + "all_time_high": "Υψηλό όλων των εποχών", + "all_time_low": "Χαμηλό όλων των εποχών", + "fully_diluted": "Πλήρως κατανεμημένα" }, "collectible": { "collectible_address": "Διεύθυνση", @@ -650,10 +668,10 @@ "accounts_title": "Λογαριασμοί", "connect_account_title": "Σύνδεση λογαριασμού", "connect_accounts_title": "Σύνδεση λογαριασμών", - "edit_accounts_title": "Edit accounts", + "edit_accounts_title": "Επεξεργασία λογαριασμών", "connected_accounts_title": "Συνδεδεμένοι λογαριασμοί", "connect_description": "Μοιραστείτε τη διεύθυνση του λογαριασμού σας, το υπόλοιπο, τη δραστηριότητά σας και επιτρέψτε στον ιστότοπο να ξεκινήσει συναλλαγές.", - "select_accounts_description": "Select the account(s) to use on this site:", + "select_accounts_description": "Επιλέξτε τον λογαριασμό (-ούς) που θέλετε να χρησιμοποιήσετε σε αυτόν τον ιστότοπο:", "connect_multiple_accounts": "Σύνδεση πολλαπλών λογαριασμών", "connect_more_accounts": "Σύνδεση περισσότερων λογαριασμών", "cancel": "Ακύρωση", @@ -669,7 +687,10 @@ "address_balance_activity_permission": "Προβολή διεύθυνσης, υπολοίπου λογαριασμού και δραστηριότητας", "suggest_transactions": "Προτείνει συναλλαγές προς έγκριση", "disconnect": "Αποσύνδεση", + "disconnect_all": "Αποσύνδεση όλων", + "reconnect_notice": "Αν αποσυνδέσετε τους λογαριασμούς σας από το {{dappUrl}}, θα πρέπει να επανασυνδεθείτε για να τους χρησιμοποιήσετε ξανά.", "disconnect_all_accounts": "Αποσύνδεση όλων των λογαριασμών", + "disconnect_you_from": "Αυτό θα σας αποσυνδέσει από το {{dappUrl}}", "deceptive_site_ahead": "Παραπλανητικός ιστότοπος εν όψει", "deceptive_site_desc": "Ο ιστότοπος που προσπαθείτε να επισκεφθείτε δεν είναι ασφαλής. Οι εισβολείς μπορεί να σας εξαπατήσουν για να κάνουν κάτι επικίνδυνο.", "learn_more": "Μάθετε περισσότερα", @@ -687,6 +708,7 @@ "accounts_connected": "λογαριασμοί συνδεδεμένοι.", "disconnected": "αποσυνδέθηκε.", "disconnected_all": "Όλοι οι λογαριασμοί αποσυνδέθηκαν.", + "disconnected_from": "Αποσυνδέθηκε από το {{dappHostName}}", "nft_detection_enabled": "Ενεργοποιήθηκε η αυτόματη ανίχνευση NFT" }, "connect_qr_hardware": { @@ -697,13 +719,13 @@ "keystone": "Βασικά στοιχεία", "ngravezero": "Ngrave Zero", "learnMore": "Μάθετε περισσότερα", - "buyNow": "Buy now", + "buyNow": "Αγοράστε τώρα", "tutorial": "Εκμάθηση", "description4": "Keystone (εκμάθηση)", "description5": "1. Ξεκλειδώστε το Keystone σας", "description6": "2. Πατήστε στο --- Μενού και, στη συνέχεια, μεταβείτε στην επιλογή Συγχρονισμός", "button_continue": "Συνέχεια", - "hint_text": "Scan your hardware wallet to ", + "hint_text": "Σαρώστε το πορτοφόλι σας για ", "purpose_connect": "συνδεθείτε", "purpose_sign": "επιβεβαιώσετε τη συναλλαγή", "select_accounts": "Επιλέξτε Λογαριασμό" @@ -724,7 +746,7 @@ "enabling_profile_sync": "Ενεργοποίηση συγχρονισμού του προφίλ...", "disabling_profile_sync": "Απενεργοποίηση συγχρονισμού του προφίλ...", "notifications_dismiss_modal": "Απόρριψη", - "select_rpc_url": "Select RPC URL", + "select_rpc_url": "Επιλέξτε την διεύθυνση URL του RPC", "title": "Ρυθμίσεις", "current_conversion": "Βασικό Νόμισμα", "current_language": "Τρέχουσα Γλώσσα", @@ -824,7 +846,7 @@ "notifications_title": "Ειδοποιήσεις", "notifications_desc": "Διαχειριστείτε τις ειδοποιήσεις σας", "allow_notifications": "Επιτρέψτε τις ειδοποιήσεις", - "allow_notifications_desc": "Stay in the loop on what’s happening in your wallet with notifications. To use notifications, we use a profile to sync some settings across your devices.", + "allow_notifications_desc": "Μείνετε ενήμεροι για ό,τι συμβαίνει στο πορτοφόλι σας με τις ειδοποιήσεις. Για να χρησιμοποιήσετε τις ειδοποιήσεις, χρησιμοποιούμε ένα προφίλ για να συγχρονίσουμε ορισμένες ρυθμίσεις στις συσκευές σας.", "notifications_opts": { "customize_session_title": "Προσαρμόστε τις ειδοποιήσεις σας", "customize_session_desc": "Ενεργοποιήστε τους τύπους ειδοποιήσεων που θέλετε να λαμβάνετε:", @@ -843,6 +865,10 @@ }, "contacts_title": "Επαφές", "contacts_desc": "Προσθέστε, επεξεργαστείτε, αφαιρέστε και διαχειριστείτε τους λογαριασμούς σας", + "permissions_title": "Άδειες", + "permissions_desc": "Διαχειριστείτε τις άδειες που έχετε δώσει σε ιστότοπους και εφαρμογές", + "no_permissions": "Δεν υπάρχουν άδειες", + "no_permissions_desc": "Αν συνδέσετε έναν λογαριασμό με έναν ιστότοπο ή μια εφαρμογή, θα τον δείτε εδώ.", "security_title": "Ασφάλεια και Απόρρητο", "back": "Πίσω", "security_desc": "Ρυθμίσεις απορρήτου, MetaMetrics, ιδιωτικό κλειδί και Μυστική Φράση Ανάκτησης πορτοφολιού", @@ -932,14 +958,18 @@ "custom_network_name": "Προσαρμοσμένα δίκτυα", "popular": "Δημοφιλή", "delete": "Διαγραφή", + "account": "λογαριασμός", + "accounts": "λογαριασμοί", + "network": "δίκτυο", + "networks": "δίκτυα", "network_exists": "Αυτό το δίκτυο έχει ήδη προστεθεί.", - "unMatched_chain": "According to our records, this URL does not match a known provider for this chain ID.", - "unMatched_chain_name": "This chain ID doesn’t match the network name.", - "url_associated_to_another_chain_id": "This URL is associated with another chain ID.", - "chain_id_associated_with_another_network": "The information you have entered is associated with an existing chain ID. Update your information or", - "network_already_exist": "You already have a network with the same chain ID or RPC URL. Enter a new chain ID or RPC URL", - "edit_original_network": "edit the original network", - "find_the_right_one": "Find the right one on:", + "unMatched_chain": "Σύμφωνα με τα αρχεία μας, αυτή η διεύθυνση URL δεν ταιριάζει με γνωστό πάροχο για αυτό το αναγνωριστικό αλυσίδας.", + "unMatched_chain_name": "Αυτό το αναγνωριστικό αλυσίδας δεν ταιριάζει με το όνομα του δικτύου.", + "url_associated_to_another_chain_id": "Αυτή η διεύθυνση URL συνδέεται με ένα άλλο αναγνωριστικό αλυσίδας.", + "chain_id_associated_with_another_network": "Οι πληροφορίες που έχετε καταχωρίσει συνδέονται με ένα υπάρχον αναγνωριστικό αλυσίδας. Ενημερώστε τις πληροφορίες σας ή", + "network_already_exist": "Έχετε ήδη ένα δίκτυο με το ίδιο αναγνωριστικό αλυσίδας ή διεύθυνση URL RPC. Εισάγετε ένα νέο αναγνωριστικό αλυσίδας ή διεύθυνση URL RPC", + "edit_original_network": "επεξεργαστείτε το αρχικό δίκτυο", + "find_the_right_one": "Βρείτε το κατάλληλο:", "delete_metrics_title": "Διαγραφή δεδομένων MetaMetrics", "delete_metrics_description_part_one": "Αυτό θα διαγράψει τα ιστορικά δεδομένα", "delete_metrics_description_part_two": "από το MetaMetrics", @@ -1169,7 +1199,7 @@ "text": "ΚΕΙΜΕΝΟ", "qr_code": "ΚΩΔΙΚΟΣ QR", "hold_to_reveal_credential": "Κρατήστε το πατημένο για να αποκαλυφθεί το {{credentialName}}", - "reveal_credential": "Reveal {{credentialName}}", + "reveal_credential": "Αποκάλυψη του {{credentialName}}", "keep_credential_safe": "Κρατήστε το {{credentialName}} σας ασφαλές", "srp_abbreviation_text": "ΜΦΑ", "srp_text": "Μυστική Φράση Ανάκτησης", @@ -1296,13 +1326,14 @@ "error": "Σφάλμα", "attempting_to_scan_with_wallet_locked": "Φαίνεται ότι προσπαθείτε να σαρώσετε έναν κωδικό QR. Πρέπει να ξεκλειδώσετε το πορτοφόλι σας για να μπορέσετε να τον χρησιμοποιήσετε.", "attempting_sync_from_wallet_error": "Φαίνεται ότι προσπαθείτε να συγχρονιστείτε με την επέκταση. Για να το κάνετε αυτό, θα πρέπει να διαγράψετε το τρέχον πορτοφόλι σας. \n\nΑφού διαγράψετε ή εγκαταστήσετε εκ νέου μια νέα έκδοση της εφαρμογής, επιλέξτε «Συγχρονισμός με την Επέκταση του MetaMask». Σημαντικό! Πριν διαγράψετε το πορτοφόλι σας, σιγουρευτείτε ότι έχετε δημιουργήσει αντίγραφο ασφαλείας της Μυστικής Φράσης Ανάκτησης.", - "not_allowed_error_title": "Επιτρέψτε την πρόσβαση στην κάμερα", - "not_allowed_error_desc": "Απαιτείται πρόσβαση στην κάμερα για να σαρωθεί ένας κωδικός QR που σχετίζεται με μια διεύθυνση λογαριασμού ή με μια διεύθυνση συμβολαίου", + "not_allowed_error_title": "Ενεργοποίηση της πρόσβασης στην κάμερα", + "not_allowed_error_desc": "Για να σαρώσετε έναν κωδικό QR, θα πρέπει να δώσετε πρόσβαση στην κάμερα στο MetaMask από το μενού ρυθμίσεων της συσκευής σας.", "unrecognized_address_qr_code_title": "Μη αναγνωρίσιμος κωδικός QR", "unrecognized_address_qr_code_desc": "Λυπούμαστε, αυτός ο κωδικός QR δεν συνδέεται με μια διεύθυνση λογαριασμού ή διεύθυνση συμβολαίου.", "url_redirection_alert_title": "Πρόκειται να επισκεφθείτε έναν εξωτερικό σύνδεσμο", "url_redirection_alert_desc": "Οι σύνδεσμοι μπορούν να χρησιμοποιηθούν με σκοπό να παραπλανήσουν ή να εξαπατήσουν τους χρήστες, γι' αυτό φροντίστε να επισκέπτεστε μόνο ιστότοπους που εμπιστεύεστε.", - "label": "Σάρωση ενός κωδικού QR" + "label": "Σάρωση ενός κωδικού QR", + "open_settings": "Ρυθμίσεις" }, "action_view": { "cancel": "Άκυρο", @@ -1312,6 +1343,7 @@ "transaction_id": "Αναγνωριστικό συναλλαγής", "alert": "ΕΙΔΟΠΟΙΗΣΗ", "amount": "Ποσό", + "details": "Details", "next": "Επόμενο", "back": "Πίσω", "confirm": "Επιβεβαιωση", @@ -1320,7 +1352,7 @@ "cancel": "Άκυρο", "save": "Αποθήκευση", "speedup": "Επιτάχυνση", - "sign_with_keystone": "Sign with hardware wallet", + "sign_with_keystone": "Σύνδεση με το πορτοφόλι υλικού", "sign_with_ledger": "Είσοδος με το Ledger", "from": "Από", "gas_fee": "Τέλος Συναλλαγής", @@ -1394,7 +1426,7 @@ "token_id": "Αναγνωριστικό token", "not_enough_for_gas": "Έχετε 0 {{ticker}} στον λογαριασμό σας για να πληρώσετε τα τέλη συναλλαγής. Αγοράστε μερικά {{ticker}} ή καταθέστε από άλλον λογαριασμό.", "send": "Αποστολή", - "confirm_with_qr_hardware": "Confirm with hardware wallet", + "confirm_with_qr_hardware": "Επιβεβαίωση με το πορτοφόλι υλικού", "confirm_with_ledger_hardware": "Επιβεβαίωση με το Ledger", "confirmed": "Επιβεβαιωμένο", "pending": "Εκκρεμεί", @@ -1427,7 +1459,7 @@ "no_camera_permission": "Η κάμερα δεν είναι εξουσιοδοτημένη. Δώστε άδεια και προσπαθήστε ξανά", "invalid_qr_code_sign": "Μη έγκυρος κωδικός QR. Ελέγξτε τον εξοπλισμό σας και προσπαθήστε ξανά.", "no_camera_permission_android": "Για να συνεχίσετε, πρέπει να παραχωρήσετε στο MetaMask πρόσβαση στην κάμερά σας. Μπορεί επίσης να χρειαστεί να αλλάξετε τις ρυθμίσεις του συστήματός σας.", - "mismatched_qr_request_id": "Incongruent transaction data. Please use your hardware wallet to sign the QR code below and tap 'Get Signature'.", + "mismatched_qr_request_id": "Αναντίστοιχα δεδομένα συναλλαγών. Χρησιμοποιήστε το πορτοφόλι σας για να συνδεθείτε με τον παρακάτω κωδικό QR και πατήστε «Λήψη υπογραφής».", "fiat_conversion_not_available": "Οι μετατροπές σε παραστατικά χρήματα δεν είναι διαθέσιμες αυτή τη στιγμή", "hex_data_copied": "Τα δεκαεξαδικά δεδομένα αντιγράφηκαν στο πρόχειρο", "invalid_recipient": "Μη έγκυρος παραλήπτης", @@ -1628,8 +1660,8 @@ "import_wallet_label": "Λογαριασμός που προστέθηκε", "import_wallet_tip": "Όλες οι μελλοντικές συναλλαγές που θα πραγματοποιούνται από αυτή τη συσκευή θα περιλαμβάνουν την ένδειξη «από αυτή τη συσκευή» δίπλα στη χρονοσήμανση. Για συναλλαγές που χρονολογούνται πριν από την προσθήκη του λογαριασμού, το ιστορικό αυτό δεν θα υποδεικνύει ποιες εξερχόμενες συναλλαγές προέρχονται από αυτή τη συσκευή.", "sign_title_scan": "Σάρωση ", - "sign_title_device": "with your hardware wallet", - "sign_description_1": "After you have signed with your hardware wallet,", + "sign_title_device": "με το πορτοφόλι υλικού σας", + "sign_description_1": "Αφού υπογράψετε με το πορτοφόλι υλικού σας,", "sign_description_2": "πατήστε στην επιλογή «Λήψη υπογραφής»", "sign_get_signature": "Λήψη Υπογραφής", "network_fee": "Τέλη Δικτύου" @@ -1702,7 +1734,11 @@ "network_display_name": "Εμφάνιση ονόματος", "network_chain_id": "Αναγνωριστικό Αλυσίδας", "network_rpc_url": "Διεύθυνση URL του Δικτύου", - "network_rpc_url_label": "Network RPC URL", + "network_rpc_url_label": "Διεύθυνση URL του δικτύου RPC", + "new_default_network_url": "Νέα προεπιλεγμένη διεύθυνση URL δικτύου", + "current_label": "Τρέχουσα", + "new_label": "Νέα", + "review": "Αναθεώρηση", "view_details": "Προβολή λεπτομερειών", "network_details": "Λεπτομέρειες δικτύου", "network_select_confirm_use_safe_check": "Η επιλογή \"Επιβεβαίωση\" ενεργοποιεί τον έλεγχο λεπτομερειών δικτύου. Μπορείτε να απενεργοποιήσετε τον έλεγχο λεπτομερειών δικτύου στις ", @@ -1735,7 +1771,7 @@ "add_other_network_here": "εδώ.", "you_can": "Ή μπορείτε", "add_network": "να προσθέσετε περισσότερα δίκτυα χειροκίνητα.", - "add_specific_network": "Add {{network_name}}", + "add_specific_network": "Προσθήκη του {{network_name}}", "select_network": "Επιλέξτε ένα δίκτυο", "enabled_networks": "Ενεργοποιημένα δίκτυα", "additional_networks": "Πρόσθετα δίκτυα", @@ -2010,7 +2046,7 @@ "staked": "Ποντάρισμα", "received": "Ελήφθη", "unstaked": "Ακύρωση πονταρίσματος", - "mark_all_as_read": "Mark all as read", + "mark_all_as_read": "Επισήμανση όλων ως αναγνωσμένων", "to": "Προς", "rate": "Τιμή (συμπεριλαμβάνονται τα τέλη)", "unstaking_requested": "Αίτημα ακύρωσης πονταρίσματος", @@ -2023,7 +2059,7 @@ "swap": "Ανταλλαγή", "sent": "Στάλθηκε σε {{address}}", "menu_item_title": { - "metamask_swap_completed": "Swapped {{symbolIn}} for {{symbolOut}}", + "metamask_swap_completed": "Ανταλλαγή του {{symbolIn}} για {{symbolOut}}", "erc20_sent": "Εστάλη σε {{address}}", "erc20_received": "Ελήφθη από {{address}}", "eth_sent": "Εστάλη σε {{address}}", @@ -2050,7 +2086,7 @@ "title_untake_ready": "Έτοιμη για ανάληψη", "title_stake": "Ποντάρισμα {{symbol}}", "title_unstake_completed": "Ολοκλήρωση ακύρωσης πονταρίσματος", - "title_swapped": "Swapped {{symbolIn}} to {{symbolOut}}", + "title_swapped": "Ανταλλαγή του {{symbolIn}} με {{symbolOut}}", "label_address_to": "Προς", "label_address_from": "Από", "label_address_to_you": "Προς (Εσάς)", @@ -2129,9 +2165,9 @@ "transaction_id_copied_to_clipboard": "Αντιγραφή του αναγνωριστικού συναλλαγής στο πρόχειρο", "activation_card": { "title": "Ενεργοποίηση των ειδοποιήσεων", - "description_1": "Μείνετε ενήμεροι για ό,τι συμβαίνει στο πορτοφόλι σας με τις ειδοποιήσεις. ", + "description_1": "Μείνετε ενήμεροι για ό,τι συμβαίνει στο πορτοφόλι σας με τις ειδοποιήσεις", "description_2": "Για να χρησιμοποιήσετε αυτή τη λειτουργία, θα δημιουργήσουμε ένα ανώνυμο αναγνωριστικό για τον λογαριασμό σας. Χρησιμοποιείται μόνο για τον συγχρονισμό των δεδομένων σας στο MetaMask και δεν συνδέεται με τις δραστηριότητές σας ή άλλα αναγνωριστικά στοιχεία, διασφαλίζοντας την ιδιωτικότητά σας.", - "learn_more": "Μάθετε πώς προστατεύουμε το απόρρητό σας κατά τη χρήση αυτής της λειτουργίας. ", + "learn_more": "Μάθετε πώς προστατεύουμε το απόρρητό σας κατά τη χρήση αυτής της λειτουργίας.", "manage_preferences_1": "Μπορείτε να απενεργοποιήσετε τις ειδοποιήσεις ανά πάσα στιγμή στις ", "manage_preferences_2": "Ρυθμίσεις > Ειδοποιήσεις.", "cancel": "Άκυρο", @@ -2523,7 +2559,8 @@ "sale_completed_title": "Ολοκλήρωση παραγγελίας", "sale_completed_description": "Η παραγγελία σας ήταν επιτυχής!.", "sale_pending_title": "Επεξεργασία πώλησης {{currency}}", - "sale_pending_description": "Η παραγγελία σας βρίσκεται τώρα υπό επεξεργασία." + "sale_pending_description": "Η παραγγελία σας βρίσκεται τώρα υπό επεξεργασία.", + "no_date": "Άγνωστο" } }, "swaps": { @@ -2782,14 +2819,14 @@ }, "switch_custom_network": { "title_existing_network": "Αυτός ο ιστότοπος θα ήθελε να αλλάξει το δίκτυο", - "title_enabled_network": "This site wants to:", + "title_enabled_network": "Αυτός ο ιστότοπος θέλει να:", "title_new_network": "Προστέθηκε νέο δίκτυο", "switch_warning": "Αυτό θα αλλάξει το επιλεγμένο δίκτυο στο MetaMask σε ένα δίκτυο που έχει προστεθεί προηγουμένως:", - "use_enabled_networks": "Use your enabled networks", - "wants_to_see_your_accounts": "See your accounts and suggest transactions", - "requesting_for": "Requesting for ", - "edit": "Edit", - "add_network_and_give_dapp_permission_warning": "You're adding this network to MetaMask and giving {{dapp_origin}} permission to use it.", + "use_enabled_networks": "Χρησιμοποιήσει τα ενεργά σας δίκτυα", + "wants_to_see_your_accounts": "Προβάλει τους λογαριασμούς σας και να προτείνει συναλλαγές", + "requesting_for": "Ζητάει ", + "edit": "Επεξεργασία", + "add_network_and_give_dapp_permission_warning": "Προσθέτετε αυτό το δίκτυο στο MetaMask και δίνετε στο {{dapp_origin}} την άδεια να το χρησιμοποιεί.", "available": "είναι τώρα διαθέσιμο στην επιλογή δικτύου.", "cancel": "Άκυρο", "switch": "Αλλαγή Δικτύου" @@ -3113,8 +3150,8 @@ "cannot_get_account": "Δεν είναι δυνατή η λήψη λογαριασμού", "connect_ledger": "Συνδέστε το Ledger", "looking_for_device": "Αναζήτηση συσκευής", - "ledger_reminder_message": "Please make sure your Ledger device is:", - "ledger_reminder_message_step_one": "1. Unlock your Ledger device", + "ledger_reminder_message": "Βεβαιωθείτε ότι η συσκευή σας Ledger είναι:", + "ledger_reminder_message_step_one": "1. Ξεκλειδώστε τη συσκευή σας Ledger", "ledger_reminder_message_step_two": "2. Εγκαταστήστε και ανοίξτε την εφαρμογή Ethereum", "ledger_reminder_message_step_three": "3. Ενεργοποιήστε το Bluetooth", "ledger_reminder_message_step_four": "4. Η τοποθεσία είναι ενεργοποιημένη με τη χρήση ακριβούς τοποθεσίας στο", @@ -3123,7 +3160,7 @@ "available_devices": "Διαθέσιμες συσκευές", "retry": "Επανάληψη", "continue": "Συνέχεια", - "confirm_transaction_on_ledger": "Confirm transaction on your Ledger", + "confirm_transaction_on_ledger": "Επιβεβαιώστε τη συναλλαγή στο Ledger", "bluetooth_enabled_message": "Βεβαιωθείτε ότι το Bluetooth είναι ενεργοποιημένο", "device_unlocked_message": "Η συσκευή είναι ξεκλείδωτη", "ledger_disconnected": "Η συσκευή σας αποσυνδέθηκε", @@ -3146,13 +3183,11 @@ "not_supported": "Η λειτουργία δεν υποστηρίζεται", "not_supported_error": "Υποστηρίζεται μόνο η έκδοση 4 της υπογραφής τυπωμένων δεδομένων.", "error_during_connection": "Παρουσιάστηκε ένα άγνωστο σφάλμα", - "error_during_connection_message": "There's been a slight problem connecting your Ledger device, tap 'Retry' below to give this another go. Sometimes this occurs due to the ETH app on your Ledger device being open at the start of the pairing process with MetaMask Mobile.", + "error_during_connection_message": "Προέκυψε ένα μικρό πρόβλημα στη σύνδεση της συσκευής σας Ledger, πατήστε 'Επανάληψη' παρακάτω για να προσπαθήσετε ξανά. Μερικές φορές αυτό συμβαίνει επειδή η εφαρμογή ETH στη συσκευή σας Ledger είναι ανοιχτή κατά την έναρξη της διαδικασίας σύζευξης με το MetaMask Mobile.", "how_to_install_eth_webview_title": "Πώς να εγκαταστήσετε την εφαρμογή Ethereum", "nonce_too_low": "Πολύ χαμηλό nonce", "nonce_too_low_error": "Το καθορισμένο nonce είναι πολύ χαμηλό", - "select_accounts": "Select an Account", - "select_accounts_warning": "Note: these accounts might be different to what you're used to.", - "select_accounts_sub_msg": "These accounts are derived using the BIP44 derivation path, which is different to the default Ledger Live derivation path on MetaMask Extension, Different derivation paths for Ledger will be available on MetaMask Mobile soon." + "select_accounts": "Επιλέξτε λογαριασμό" }, "account_actions": { "edit_name": "Επεξεργασία ονόματος λογαριασμού", @@ -3225,7 +3260,7 @@ "title_off": "Απενεργοποίηση βασικών λειτουργιών", "description_off": "Αυτό σημαίνει ότι δεν θα βελτιστοποιήσετε πλήρως το χρόνο σας στο MetaMask. Βασικές λειτουργίες (όπως λεπτομέρειες των tokens, βέλτιστες ρυθμίσεις τελών συναλλαγών και άλλα) δεν θα είναι διαθέσιμες σε εσάς.", "title_on": "Ενεργοποίηση βασικών λειτουργιών", - "description_on": "Για να βελτιστοποιήσετε το χρόνο σας στο MetaMask, θα πρέπει να ενεργοποιήσετε αυτή τη λειτουργία. Οι βασικές λειτουργίες (όπως οι λεπτομέρειες των tokens, οι βέλτιστες ρυθμίσεις τελών συναλλαγών και άλλα) είναι σημαντικές για την εμπειρία στο web3.", + "description_on": "Για να βελτιστοποιήσετε το χρόνο σας στο MetaMask, θα πρέπει να ενεργοποιήσετε αυτή τη λειτουργία. Οι βασικές λειτουργίες (όπως οι λεπτομέρειες του token, οι βέλτιστες ρυθμίσεις τελών συναλλαγών, οι ειδοποιήσεις και άλλες) είναι σημαντικές για την εμπειρία στο web3.", "checkbox_label": "Το κατανοώ και θέλω να συνεχίσω", "buttons": { "cancel": "Άκυρο", diff --git a/locales/languages/en.json b/locales/languages/en.json index 35bb1b35999..7af7ff0302e 100644 --- a/locales/languages/en.json +++ b/locales/languages/en.json @@ -499,6 +499,7 @@ "address": "Token contract address", "decimal": "Token decimal", "network": "Network", + "network_fee": "Network fee", "lists": "Token Lists", "hide_cta": "Hide token", "options": { @@ -1365,6 +1366,7 @@ "transaction_id": "Transaction ID", "alert": "ALERT", "amount": "Amount", + "details": "Details", "next": "Next", "back": "Back", "confirm": "Confirm", diff --git a/locales/languages/es.json b/locales/languages/es.json index 1cab219f31c..d00c9620041 100644 --- a/locales/languages/es.json +++ b/locales/languages/es.json @@ -499,11 +499,14 @@ "address": "Dirección de contrato del token", "decimal": "Decimales del token", "network": "Red", + "network_fee": "Network fee", "lists": "Listas de tokens", "hide_cta": "Ocultar token", "options": { + "view_on_portfolio": "View on Portfolio", "view_on_block": "Ver en el explorador de bloques", - "token_details": "Detalles del token" + "token_details": "Detalles del token", + "remove_token": "Remove token" } }, "activity_view": { @@ -550,6 +553,7 @@ "description_title": "Ayúdenos a mejorar MetaMask", "description_content_1": "Nos gustaría recopilar datos básicos de uso para mejorar MetaMask. Tenga en cuenta que nunca venderemos los datos que nos proporcione aquí.", "description_content_2": "Al recopilar métricas, siempre serán...", + "description_content_3": "Learn how we protect your privacy while collecting usage data for your profile.", "checkbox": "Utilizaremos estos datos para saber cómo interactúa con nuestras comunicaciones de marketing. Podemos compartir noticias relevantes (como características de productos).", "action_description_1_prefix": "Privadas:", "action_description_2_prefix": "Generales:", @@ -600,7 +604,21 @@ "decimals_is_required": "Se requiere decimal. Encuéntrelo en:", "no_tokens_found": "No se encontró ningún token con ese nombre.", "select_token": "Seleccionar token", - "address_must_be_smart_contract": "Se detectó una dirección personal. Escriba la dirección de contrato del token." + "address_must_be_smart_contract": "Se detectó una dirección personal. Escriba la dirección de contrato del token.", + "billion_abbreviation": "B", + "trillion_abbreviation": "T", + "million_abbreviation": "M", + "token_details": "Token details", + "contract_address": "Contract address", + "token_list": "Token list", + "market_details": "Market details", + "market_cap": "Market Cap", + "total_volume": "Total Volume (24h)", + "volume_to_marketcap": "Volume / Market Cap", + "circulating_supply": "Circulating supply", + "all_time_high": "All time high", + "all_time_low": "All time low", + "fully_diluted": "Fully diluted" }, "collectible": { "collectible_address": "Dirección", @@ -669,7 +687,10 @@ "address_balance_activity_permission": "Ver dirección, saldo de cuenta y actividad", "suggest_transactions": "Sugerir transacciones para aprobar", "disconnect": "Desconectar", + "disconnect_all": "Disconnect all", + "reconnect_notice": "If you disconnect your accounts from {{dappUrl}}, you’ll need to reconnect to use them again.", "disconnect_all_accounts": "Desconectar todas las cuentas", + "disconnect_you_from": "This will disconnect you from {{dappUrl}}", "deceptive_site_ahead": "Sitio engañoso más adelante", "deceptive_site_desc": "El sitio que intenta visitar no es seguro. Los atacantes pueden engañarlo para que haga algo peligroso.", "learn_more": "Más información", @@ -687,6 +708,7 @@ "accounts_connected": "cuentas conectadas.", "disconnected": "desconectadas.", "disconnected_all": "Todas las cuentas desconectadas.", + "disconnected_from": "Disconnected from {{dappHostName}}", "nft_detection_enabled": "Autodetección de NFT habilitada" }, "connect_qr_hardware": { @@ -843,6 +865,10 @@ }, "contacts_title": "Contactos", "contacts_desc": "Agregar, editar, quitar y administrar sus cuentas", + "permissions_title": "Permissions", + "permissions_desc": "Manage the permissions given to sites and apps", + "no_permissions": "No permissions", + "no_permissions_desc": "If you connect an account to a site or an app, you’ll see it here.", "security_title": "Seguridad y privacidad", "back": "Volver", "security_desc": "Configuración de privacidad, MetaMetrics, clave privada y frase secreta de recuperación del monedero", @@ -932,6 +958,10 @@ "custom_network_name": "Redes personalizadas", "popular": "Popular", "delete": "Eliminar", + "account": "account", + "accounts": "accounts", + "network": "network", + "networks": "networks", "network_exists": "La red ya ha sido instalada", "unMatched_chain": "According to our records, this URL does not match a known provider for this chain ID.", "unMatched_chain_name": "This chain ID doesn’t match the network name.", @@ -1296,13 +1326,14 @@ "error": "Error", "attempting_to_scan_with_wallet_locked": "Si desea escanear un código QR, desbloqueé su monedero para poder usarlo.", "attempting_sync_from_wallet_error": "Parece que intenta sincronizar con la extensión. debe borrar el monedero actual. \n\nUna vez que haya borrado o vuelto a instalar una versión nueva de la aplicación, seleccione la opción \"Sincronizar con la extensión MetaMask\". Importante: Antes de borrar el monedero, asegúrese de haber hecho una copia de seguridad de la frase secreta de recuperación.", - "not_allowed_error_title": "Habilitar acceso a la cámara", - "not_allowed_error_desc": "Se necesita acceso a la cámara para escanear un código QR asociado con una dirección de cuenta o una dirección de contrato", + "not_allowed_error_title": "Turn on camera access", + "not_allowed_error_desc": "To scan a QR code, you'll need to give MetaMask camera access from your device's settings menu.", "unrecognized_address_qr_code_title": "Código QR no reconocido", "unrecognized_address_qr_code_desc": "Lo sentimos, este código QR no está asociado con una dirección de cuenta o una dirección de contrato.", "url_redirection_alert_title": "Está a punto de visitar un enlace externo", "url_redirection_alert_desc": "Los enlaces se pueden usar para tratar de estafar o hacer phishing a las personas, así que asegúrese de visitar solo sitios web en los que confíe.", - "label": "Escanear un código QR" + "label": "Escanear un código QR", + "open_settings": "Settings" }, "action_view": { "cancel": "Cancelar", @@ -1312,6 +1343,7 @@ "transaction_id": "ID de transacción", "alert": "ALERTA", "amount": "Importe", + "details": "Details", "next": "Siguiente", "back": "Volver", "confirm": "Confirmar", @@ -1703,6 +1735,10 @@ "network_chain_id": "Identificador de cadena", "network_rpc_url": "URL de la red", "network_rpc_url_label": "Network RPC URL", + "new_default_network_url": "New default network URL", + "current_label": "Current", + "new_label": "New", + "review": "Review", "view_details": "Ver detalles", "network_details": "Detalles de la red", "network_select_confirm_use_safe_check": "Al seleccionar Confirmar, se activa la verificación de detalles de la red. Puedes desactivar el registro de detalles de la red ", @@ -2129,9 +2165,9 @@ "transaction_id_copied_to_clipboard": "ID de transacción copiado al portapapeles", "activation_card": { "title": "Activar las notificaciones", - "description_1": "Manténgase informado sobre lo que sucede en su monedero con notificaciones. ", + "description_1": "Stay in the loop on what's happening in your wallet with notifications.", "description_2": "Para utilizar esta función, generaremos un ID anónimo para su cuenta. Se utiliza únicamente para sincronizar sus datos en MetaMask y no se vincula a sus actividades ni a otros identificadores, lo que garantiza su privacidad.", - "learn_more": "Obtenga más información sobre cómo protegemos su privacidad mientras utiliza esta función. ", + "learn_more": "Learn how we protect your privacy while using this feature.", "manage_preferences_1": "Puede desactivar las notificaciones en cualquier momento ", "manage_preferences_2": "Configuración > Notificaciones.", "cancel": "Cancelar", @@ -2523,7 +2559,8 @@ "sale_completed_title": "Orden completada", "sale_completed_description": "¡Su orden fue exitosa!", "sale_pending_title": "Procesamiento de venta de {{currency}}", - "sale_pending_description": "Su orden esta siendo procesada." + "sale_pending_description": "Su orden esta siendo procesada.", + "no_date": "Unknown" } }, "swaps": { @@ -3150,9 +3187,7 @@ "how_to_install_eth_webview_title": "Cómo instalar la aplicación Ethereum", "nonce_too_low": "Nonce demasiado bajo", "nonce_too_low_error": "El nonce establecido es demasiado bajo", - "select_accounts": "Select an Account", - "select_accounts_warning": "Note: these accounts might be different to what you're used to.", - "select_accounts_sub_msg": "These accounts are derived using the BIP44 derivation path, which is different to the default Ledger Live derivation path on MetaMask Extension, Different derivation paths for Ledger will be available on MetaMask Mobile soon." + "select_accounts": "Select an Account" }, "account_actions": { "edit_name": "Editar nombre de la cuenta", @@ -3225,7 +3260,7 @@ "title_off": "Desactivar la funcionalidad básica", "description_off": "Esto significa que no optimizará completamente su tiempo en MetaMask. Las funciones básicas (como los detalles de los tokenes, la configuración óptima de gas y otras) no estarán disponibles para usted.", "title_on": "Activar la funcionalidad básica", - "description_on": "Para optimizar su tiempo en MetaMask, tendrá que activar esta función. Las funciones básicas (como los detalles de los tokenes, la configuración óptima de gas y otras) son importantes para la experiencia Web3.", + "description_on": "To optimize your time on MetaMask, you’ll need to turn on this feature. Basic functions (like token details, optimal gas settings, notifications, and others) are important to the web3 experience.", "checkbox_label": "Entiendo y deseo continuar", "buttons": { "cancel": "Cancelar", diff --git a/locales/languages/fr.json b/locales/languages/fr.json index 651ae563e7d..e9934fe2e62 100644 --- a/locales/languages/fr.json +++ b/locales/languages/fr.json @@ -451,10 +451,10 @@ "use_the_currency_symbol": "utilise le symbole monétaire", "use_correct_symbol": "Assurez-vous que vous utilisez le bon symbole avant de continuer", "chain_id_currently_used": "Cet ID de chaîne est actuellement utilisé par le", - "incorrect_network_name_warning": "According to our records, the network name may not correctly match this chain ID.", - "suggested_name": "Suggested name:", + "incorrect_network_name_warning": "Selon nos informations, il se peut que le nom du réseau ne corresponde pas exactement à cet ID de chaîne.", + "suggested_name": "Nom suggéré :", "network_check_validation_desc": "réduit les risques de connexion au mauvais réseau ou à un réseau malveillant.", - "cant_verify_custom_network_warning": "We can’t verify custom networks. To avoid malicious providers from recording your network activity, only add networks you trust.", + "cant_verify_custom_network_warning": "Nous ne pouvons pas vérifier les réseaux personnalisés. Pour éviter que des fournisseurs malveillants n’enregistrent votre activité sur les réseaux, n’ajoutez que des réseaux auxquels vous faites confiance.", "nfts_autodetection_cta": "Activez la détection de NFT dans les paramètres", "learn_more": "En savoir plus", "add_collectibles": "Importer des NFT", @@ -499,11 +499,14 @@ "address": "Adresse du contrat de jeton", "decimal": "Le nombre de décimales du jeton", "network": "Réseau", + "network_fee": "Network fee", "lists": "Listes de jetons ", "hide_cta": "Masquer le jeton", "options": { + "view_on_portfolio": "Voir sur Portfolio", "view_on_block": "Afficher sur l’explorateur de blocs", - "token_details": "Détails du jeton" + "token_details": "Détails du jeton", + "remove_token": "Supprimer ce jeton" } }, "activity_view": { @@ -550,6 +553,7 @@ "description_title": "Aidez-nous à améliorer MetaMask", "description_content_1": "Nous aimerions recueillir des données d’utilisation de base pour améliorer MetaMask. Sachez que nous ne vendrons jamais les informations que vous nous fournissez ici.", "description_content_2": "Lorsque nous recueillons des données, elles sont toujours…", + "description_content_3": "Découvrez comment nous protégeons votre vie privée lors de la collecte de données d’utilisation pour votre profil.", "checkbox": "Nous utiliserons ces données pour savoir comment vous interagissez avec nos communications commerciales et pour partager avec vous des informations pertinentes (comme les caractéristiques des produits).", "action_description_1_prefix": "Privé :", "action_description_2_prefix": "Général :", @@ -600,7 +604,21 @@ "decimals_is_required": "Le nombre de décimales est requis. Trouvez-le sur :", "no_tokens_found": "Nous n’avons pas trouvé de jetons portant ce nom.", "select_token": "Sélectionnez un jeton", - "address_must_be_smart_contract": "Adresse personnelle détectée. Saisissez l’adresse du contrat de jeton." + "address_must_be_smart_contract": "Adresse personnelle détectée. Saisissez l’adresse du contrat de jeton.", + "billion_abbreviation": "Mrd", + "trillion_abbreviation": "B", + "million_abbreviation": "M", + "token_details": "Détails du jeton", + "contract_address": "Adresse du contrat", + "token_list": "Liste des jetons", + "market_details": "Détails du marché", + "market_cap": "Capitalisation boursière", + "total_volume": "Volume total (24 h)", + "volume_to_marketcap": "Volume/Capitalisation boursière", + "circulating_supply": "Offre en circulation", + "all_time_high": "Le plus haut niveau jamais atteint", + "all_time_low": "Le plus bas niveau jamais atteint", + "fully_diluted": "Entièrement diluée" }, "collectible": { "collectible_address": "Adresse", @@ -650,10 +668,10 @@ "accounts_title": "Comptes", "connect_account_title": "Connecter le compte", "connect_accounts_title": "Connecter les comptes", - "edit_accounts_title": "Edit accounts", + "edit_accounts_title": "Modifier les comptes", "connected_accounts_title": "Comptes connectés", "connect_description": "Partagez l’adresse, le solde, l’activité de votre compte et autorisez le site à effectuer des transactions.", - "select_accounts_description": "Select the account(s) to use on this site:", + "select_accounts_description": "Sélectionnez le(s) compte(s) à utiliser sur ce site :", "connect_multiple_accounts": "Connecter plusieurs comptes", "connect_more_accounts": "Connecter plus de comptes", "cancel": "Annuler", @@ -669,7 +687,10 @@ "address_balance_activity_permission": "Consulter l’adresse, le solde et l’activité du compte", "suggest_transactions": "Proposer des transactions à approuver", "disconnect": "Déconnexion", + "disconnect_all": "Déconnecter tous les comptes", + "reconnect_notice": "Si vous déconnectez vos comptes de {{dappUrl}}, vous devrez vous reconnecter pour les utiliser à nouveau.", "disconnect_all_accounts": "Déconnecter tous les comptes", + "disconnect_you_from": "Cela vous déconnectera de {{dappUrl}}", "deceptive_site_ahead": "Site trompeur à venir", "deceptive_site_desc": "Le site que vous essayez de visiter n’est pas sécurisé. Les pirates peuvent vous inciter à agir de façon risquée.", "learn_more": "En savoir plus", @@ -687,6 +708,7 @@ "accounts_connected": "comptes connectés.", "disconnected": "déconnecté.", "disconnected_all": "Tous les comptes ont été déconnectés.", + "disconnected_from": "Déconnecté de {{dappHostName}}", "nft_detection_enabled": "Détection automatique des NFT activée" }, "connect_qr_hardware": { @@ -697,13 +719,13 @@ "keystone": "Keystone", "ngravezero": "Ngrave Zero", "learnMore": "En savoir plus", - "buyNow": "Buy now", + "buyNow": "Acheter maintenant", "tutorial": "Tutoriel", "description4": "Keystone (tutoriel)", "description5": "1. Déverrouillez votre Keystone", "description6": "2. Appuyez sur « ··· » pour accéder au menu, puis sur « Synchronisation »", "button_continue": "Continuer", - "hint_text": "Scan your hardware wallet to ", + "hint_text": "Scannez votre portefeuille matériel pour ", "purpose_connect": "connexion", "purpose_sign": "confirmer la transaction", "select_accounts": "Sélectionner un compte" @@ -724,7 +746,7 @@ "enabling_profile_sync": "Activation de la synchronisation des profils…", "disabling_profile_sync": "Désactivation de la synchronisation des profils…", "notifications_dismiss_modal": "Annuler", - "select_rpc_url": "Select RPC URL", + "select_rpc_url": "Sélectionner l’URL du RPC", "title": "Paramètres", "current_conversion": "Devise de base", "current_language": "Langue actuelle", @@ -824,7 +846,7 @@ "notifications_title": "Notifications", "notifications_desc": "Gérez vos notifications", "allow_notifications": "Autoriser les notifications", - "allow_notifications_desc": "Stay in the loop on what’s happening in your wallet with notifications. To use notifications, we use a profile to sync some settings across your devices.", + "allow_notifications_desc": "Restez au courant de ce qui se passe dans votre portefeuille grâce aux notifications. Pour activer les notifications, nous utilisons un profil pour synchroniser certains paramètres entre vos appareils.", "notifications_opts": { "customize_session_title": "Personnalisez vos notifications", "customize_session_desc": "Activez les types de notifications que vous souhaitez recevoir :", @@ -843,6 +865,10 @@ }, "contacts_title": "Contacts", "contacts_desc": "Ajoutez, modifiez, supprimez et gérez vos contacts", + "permissions_title": "Autorisations", + "permissions_desc": "Gérer les autorisations accordées aux sites et aux applications", + "no_permissions": "Aucune autorisation", + "no_permissions_desc": "Les comptes que vous connectez à un site ou à une application seront affichés ici.", "security_title": "Sécurité et confidentialité", "back": "Retour", "security_desc": "Paramètres de confidentialité, MetaMetrics, clé privée et phrase secrète de récupération du portefeuille", @@ -932,14 +958,18 @@ "custom_network_name": "Réseaux personnalisés", "popular": "Populaire", "delete": "Supprimer", + "account": "compte", + "accounts": "comptes", + "network": "réseau", + "networks": "réseaux", "network_exists": "Ce réseau a déjà été ajouté.", - "unMatched_chain": "According to our records, this URL does not match a known provider for this chain ID.", - "unMatched_chain_name": "This chain ID doesn’t match the network name.", - "url_associated_to_another_chain_id": "This URL is associated with another chain ID.", - "chain_id_associated_with_another_network": "The information you have entered is associated with an existing chain ID. Update your information or", - "network_already_exist": "You already have a network with the same chain ID or RPC URL. Enter a new chain ID or RPC URL", - "edit_original_network": "edit the original network", - "find_the_right_one": "Find the right one on:", + "unMatched_chain": "Selon nos informations, cette URL ne correspond pas à celle d’un fournisseur connu pour cet ID de chaîne.", + "unMatched_chain_name": "Cet ID de chaîne ne correspond pas au nom du réseau.", + "url_associated_to_another_chain_id": "Cette URL est associée à un autre ID de chaîne.", + "chain_id_associated_with_another_network": "Les informations que vous avez saisies sont associées à un ID de chaîne existant. Mettez à jour vos informations ou", + "network_already_exist": "Vous avez déjà un réseau avec le même ID de chaîne ou URL de RPC. Saisissez un nouvel ID de chaîne ou une nouvelle URL de RPC", + "edit_original_network": "modifier le réseau d’origine", + "find_the_right_one": "Trouvez le bon sur :", "delete_metrics_title": "Supprimer les données MetaMetrics", "delete_metrics_description_part_one": "Cela supprimera l’historique des données", "delete_metrics_description_part_two": "MetaMetrics", @@ -1169,7 +1199,7 @@ "text": "TEXTE", "qr_code": "CODE QR", "hold_to_reveal_credential": "Appuyez longuement pour révéler {{credentialName}}", - "reveal_credential": "Reveal {{credentialName}}", + "reveal_credential": "Révéler {{credentialName}}", "keep_credential_safe": "Protégez votre {{credentialName}}", "srp_abbreviation_text": "PSR", "srp_text": "Phrase secrète de récupération", @@ -1296,13 +1326,14 @@ "error": "Erreur", "attempting_to_scan_with_wallet_locked": "Il semble que vous essayez de scanner un code QR — vous devez déverrouiller votre portefeuille pour pouvoir l’utiliser.", "attempting_sync_from_wallet_error": "Il semble que vous essayez de vous synchroniser avec l’extension. Pour ce faire, vous devrez effacer votre portefeuille actuel. \n\nAprès avoir effacé ou réinstallé une nouvelle version de l’appli, sélectionnez l’option « Synchroniser avec l’extension MetaMask ». Attention ! Avant d’effacer votre portefeuille, effectuez une copie de votre phrase secrète de récupération.", - "not_allowed_error_title": "Autoriser l’accès à l’appareil photo", - "not_allowed_error_desc": "L’autorisation d’accéder à l’appareil photo est requise pour scanner un code QR associé à une adresse de compte ou à une adresse de contrat", + "not_allowed_error_title": "Accorder l’autorisation d’accéder à l’appareil photo", + "not_allowed_error_desc": "Pour scanner un code QR, vous devez autoriser MetaMask à accéder à l’appareil photo depuis le menu des paramètres de votre appareil.", "unrecognized_address_qr_code_title": "Code QR non reconnu", "unrecognized_address_qr_code_desc": "Désolé, ce code QR n’est pas associé à une adresse de compte ou à une adresse de contrat.", "url_redirection_alert_title": "Vous allez consulter un lien externe", "url_redirection_alert_desc": "Sachez que les liens peuvent être utilisés pour tenter d’escroquer ou d’hameçonner les utilisateurs. Faites donc bien attention de ne visiter que des sites Web fiables.", - "label": "Scanner un code QR" + "label": "Scanner un code QR", + "open_settings": "Paramètres" }, "action_view": { "cancel": "Annuler", @@ -1312,6 +1343,7 @@ "transaction_id": "ID de transaction", "alert": "ALERTE", "amount": "Montant", + "details": "Details", "next": "Suivant", "back": "Retour", "confirm": "Confirmer", @@ -1320,7 +1352,7 @@ "cancel": "Annuler", "save": "Enregistrer", "speedup": "Accélérer", - "sign_with_keystone": "Sign with hardware wallet", + "sign_with_keystone": "Signer avec le portefeuille matériel", "sign_with_ledger": "Signer avec Ledger", "from": "De", "gas_fee": "Frais de gaz", @@ -1394,7 +1426,7 @@ "token_id": "ID de jeton", "not_enough_for_gas": "Vous n’avez aucun {{ticker}} sur votre compte pour payer les frais de transaction. Achetez des {{ticker}} ou envoyez-en depuis un autre compte.", "send": "Envoyer", - "confirm_with_qr_hardware": "Confirm with hardware wallet", + "confirm_with_qr_hardware": "Confirmer avec le portefeuille matériel", "confirm_with_ledger_hardware": "Confirmer avec Ledger", "confirmed": "Confirmé", "pending": "En attente", @@ -1427,7 +1459,7 @@ "no_camera_permission": "Appareil photo non autorisé. Veuillez donner votre permission et réessayer.", "invalid_qr_code_sign": "Code QR non valide. Veuillez vérifier votre matériel et réessayer.", "no_camera_permission_android": "Vous devez autoriser MetaMask à accéder à votre appareil photo pour continuer. Vous devrez peut-être aussi modifier les paramètres de votre système.", - "mismatched_qr_request_id": "Incongruent transaction data. Please use your hardware wallet to sign the QR code below and tap 'Get Signature'.", + "mismatched_qr_request_id": "Données de transaction incompatibles. Veuillez utiliser votre portefeuille matériel pour signer le code QR ci-dessous puis appuyez sur « Obtenir la signature ».", "fiat_conversion_not_available": "La conversion des monnaies fiduciaires n’est pas disponible pour le moment", "hex_data_copied": "Données hexadécimales copiées dans le presse-papiers", "invalid_recipient": "Destinataire non valide", @@ -1628,8 +1660,8 @@ "import_wallet_label": "Compte ajouté", "import_wallet_tip": "Toutes les transactions futures effectuées à partir de cet appareil porteront la mention « depuis cet appareil » à côté de l’horodatage. Pour les transactions antérieures à l’ajout du compte, cet historique ne précisera pas quelles transactions sortantes proviennent de cet appareil.", "sign_title_scan": "Scanner ", - "sign_title_device": "with your hardware wallet", - "sign_description_1": "After you have signed with your hardware wallet,", + "sign_title_device": "avec votre portefeuille matériel", + "sign_description_1": "Après avoir signé avec votre portefeuille matériel,", "sign_description_2": "appuyez sur Obtenir la signature", "sign_get_signature": "Obtenir la signature", "network_fee": "Frais de réseau" @@ -1702,7 +1734,11 @@ "network_display_name": "Nom du réseau", "network_chain_id": "Identifiant de la chaîne", "network_rpc_url": "URL du réseau", - "network_rpc_url_label": "Network RPC URL", + "network_rpc_url_label": "URL de RPC du réseau", + "new_default_network_url": "Nouvelle URL par défaut du réseau", + "current_label": "Actuel", + "new_label": "Nouveau", + "review": "Revoir", "view_details": "Voir les détails", "network_details": "Détails du réseau", "network_select_confirm_use_safe_check": "En sélectionnant « Confirmer », vous activez la vérification des détails du réseau. Vous pouvez désactiver la vérification des détails du réseau dans ", @@ -1735,7 +1771,7 @@ "add_other_network_here": "ici.", "you_can": "Ou vous pouvez", "add_network": "ajouter manuellement d’autres réseaux.", - "add_specific_network": "Add {{network_name}}", + "add_specific_network": "Ajouter {{network_name}}", "select_network": "Sélectionner un réseau", "enabled_networks": "Réseaux activés", "additional_networks": "Réseaux supplémentaires", @@ -2010,7 +2046,7 @@ "staked": "Staké", "received": "Reçu", "unstaked": "Déstaké", - "mark_all_as_read": "Mark all as read", + "mark_all_as_read": "Marquer tout comme lu", "to": "À", "rate": "Taux (frais inclus)", "unstaking_requested": "Demande d’annulation du staking", @@ -2023,7 +2059,7 @@ "swap": "Échangé", "sent": "Envoyée à {{address}}", "menu_item_title": { - "metamask_swap_completed": "Swapped {{symbolIn}} for {{symbolOut}}", + "metamask_swap_completed": "A échangé {{symbolIn}} contre {{symbolOut}}", "erc20_sent": "Envoyé à {{address}}", "erc20_received": "Reçu de {{address}}", "eth_sent": "Envoyé à {{address}}", @@ -2050,7 +2086,7 @@ "title_untake_ready": "Retrait prêt à être effectué", "title_stake": "{{symbol}} staké(s)", "title_unstake_completed": "Annulation du staking terminée", - "title_swapped": "Swapped {{symbolIn}} to {{symbolOut}}", + "title_swapped": "A échangé {{symbolIn}} contre {{symbolOut}}", "label_address_to": "À", "label_address_from": "De", "label_address_to_you": "À (Vous)", @@ -2129,9 +2165,9 @@ "transaction_id_copied_to_clipboard": "ID de transaction copié dans le presse-papiers", "activation_card": { "title": "Activer les notifications", - "description_1": "Restez au courant de ce qui se passe dans votre portefeuille grâce aux notifications. ", + "description_1": "Restez au courant de ce qui se passe dans votre portefeuille grâce aux notifications.", "description_2": "Pour utiliser cette fonctionnalité, nous allons générer un ID anonyme pour votre compte. Il servira uniquement à synchroniser vos données dans MetaMask et non pour subtiliser vos données personnelles, car il n’est ni lié à vos activités ni à vos autres identifiants.", - "learn_more": "Découvrez comment nous protégeons vos données personnelles lorsque vous utilisez cette fonctionnalité. ", + "learn_more": "Découvrez comment nous protégeons vos données personnelles lorsque vous utilisez cette fonctionnalité.", "manage_preferences_1": "Vous pouvez désactiver les notifications à tout moment dans ", "manage_preferences_2": "Paramètres > Notifications.", "cancel": "Annuler", @@ -2523,7 +2559,8 @@ "sale_completed_title": "Commande finalisée", "sale_completed_description": "Votre commande a été traitée avec succès !", "sale_pending_title": "Traitement de l’ordre de vente de {{currency}}", - "sale_pending_description": "Votre commande est en train d’être traitée." + "sale_pending_description": "Votre commande est en train d’être traitée.", + "no_date": "Inconnu" } }, "swaps": { @@ -2782,14 +2819,14 @@ }, "switch_custom_network": { "title_existing_network": "Ce site souhaite changer de réseau", - "title_enabled_network": "This site wants to:", + "title_enabled_network": "Ce site veut :", "title_new_network": "Nouveau réseau ajouté", "switch_warning": "Ceci permet de remplacer le réseau sélectionné dans MetaMask par un réseau précédemment ajouté :", - "use_enabled_networks": "Use your enabled networks", - "wants_to_see_your_accounts": "See your accounts and suggest transactions", - "requesting_for": "Requesting for ", - "edit": "Edit", - "add_network_and_give_dapp_permission_warning": "You're adding this network to MetaMask and giving {{dapp_origin}} permission to use it.", + "use_enabled_networks": "Utilisez les réseaux que vous avez activés", + "wants_to_see_your_accounts": "Consultez vos comptes et suggérez des transactions", + "requesting_for": "Demande pour ", + "edit": "Modifier", + "add_network_and_give_dapp_permission_warning": "Vous allez ajouter ce réseau à MetaMask et donner à {{dapp_origin}} l’autorisation de l’utiliser.", "available": "est désormais disponible dans le sélecteur de réseau.", "cancel": "Annuler", "switch": "Changer de réseau" @@ -3113,8 +3150,8 @@ "cannot_get_account": "Impossible de récupérer le compte", "connect_ledger": "Connectez-vous à Ledger", "looking_for_device": "Recherche d’un appareil", - "ledger_reminder_message": "Please make sure your Ledger device is:", - "ledger_reminder_message_step_one": "1. Unlock your Ledger device", + "ledger_reminder_message": "Veuillez vous assurer que votre appareil Ledger est :", + "ledger_reminder_message_step_one": "1. Déverrouillez votre appareil Ledger", "ledger_reminder_message_step_two": "2. Installez et ouvrez l’application Ethereum", "ledger_reminder_message_step_three": "3. Activez le Bluetooth", "ledger_reminder_message_step_four": "4. La localisation est activée avec l’autorisation d’utiliser la localisation précise", @@ -3123,7 +3160,7 @@ "available_devices": "Appareils disponibles", "retry": "Réessayer", "continue": "Continuer", - "confirm_transaction_on_ledger": "Confirm transaction on your Ledger", + "confirm_transaction_on_ledger": "Confirmez la transaction sur votre appareil Ledger", "bluetooth_enabled_message": "Assurez-vous que le Bluetooth est activé", "device_unlocked_message": "L’appareil est débloqué", "ledger_disconnected": "Votre appareil a été déconnecté", @@ -3146,13 +3183,11 @@ "not_supported": "Opération non prise en charge", "not_supported_error": "Seule la version 4 de la signature de données dactylographiées est prise en charge.", "error_during_connection": "Une erreur inconnue est survenue", - "error_during_connection_message": "There's been a slight problem connecting your Ledger device, tap 'Retry' below to give this another go. Sometimes this occurs due to the ETH app on your Ledger device being open at the start of the pairing process with MetaMask Mobile.", + "error_during_connection_message": "Nous avons rencontré un petit problème lors de la connexion de votre appareil Ledger. Appuyez sur « Réessayer » ci-dessous pour essayer à nouveau. Cela se produit parfois lorsque l’application ETH de votre appareil Ledger est ouverte au début du processus d’appairage avec MetaMask Mobile.", "how_to_install_eth_webview_title": "Comment installer l’application Ethereum", "nonce_too_low": "Nonce trop court", "nonce_too_low_error": "Le nonce défini est trop court", - "select_accounts": "Select an Account", - "select_accounts_warning": "Note: these accounts might be different to what you're used to.", - "select_accounts_sub_msg": "These accounts are derived using the BIP44 derivation path, which is different to the default Ledger Live derivation path on MetaMask Extension, Different derivation paths for Ledger will be available on MetaMask Mobile soon." + "select_accounts": "Sélectionner un compte" }, "account_actions": { "edit_name": "Modifier le nom du compte", @@ -3225,7 +3260,7 @@ "title_off": "Désactiver la fonctionnalité de base", "description_off": "Cela signifie que vous n’optimiserez pas complètement votre temps sur MetaMask. Vous n’aurez pas accès aux fonctions de base (comme les détails des jetons, les réglages optimaux du gaz, etc.).", "title_on": "Activer la fonctionnalité de base", - "description_on": "Pour optimiser votre temps sur MetaMask, vous devez activer cette fonction. Les fonctions de base (comme les détails des jetons, les réglages optimaux du gaz, et autres) améliorent votre expérience Web3.", + "description_on": "Pour optimiser votre temps sur MetaMask, vous devez activer cette fonction. Les fonctions de base (comme les détails des jetons, les réglages optimaux du gaz, les notifications et autres) améliorent votre expérience Web3.", "checkbox_label": "Je comprends et je veux continuer", "buttons": { "cancel": "Annuler", diff --git a/locales/languages/hi.json b/locales/languages/hi.json index 12a527406c7..eb759df36b6 100644 --- a/locales/languages/hi.json +++ b/locales/languages/hi.json @@ -5,7 +5,7 @@ "deceptive_request_title": "इस अनुरोध को धोखेबाजी के उद्देश्य से भेजा गया है", "failed_title": "हो सकता है कि अनुरोध सुरक्षित न हो", "failed_description": "किसी गड़बड़ी के कारण, इस अनुरोध को सिक्यूरिटी प्रोवाइडर द्वारा सत्यापित नहीं किया गया। सावधानी से आगे बढ़ें।", - "loading_title": "सुरक्षा एलर्ट की जाँच की जा रही है...", + "loading_title": "सुरक्षा अलर्ट की जाँच की जा रही है...", "loading_complete_title": "कोई एलर्ट प्राप्त नहीं हुआ। किसी भी अनुरोध को एप्रूव करने से पहले हमेशा पूरी जांच-पड़ताल ज़रूर करें।", "malicious_domain_description": "आप एक बुरी नीयत वाले डोमेन से इंटरैक्ट कर रहे हैं। यदि आप इस रिक्वेस्ट को एप्रूव करते हैं, तो आप अपने सारे एसेट गंवा सकते हैं।", "other_description": "यदि आप इस अनुरोध को एप्रूव करते हैं, तो आप अपने सारे एसेट गंवा सकते हैं।", @@ -451,10 +451,10 @@ "use_the_currency_symbol": "करेंसी सिंबल का उपयोग करता है", "use_correct_symbol": "आगे बढ़ने से पहले यह पक्का कर लें कि आप सही सिंबल का उपयोग कर रहे हैं", "chain_id_currently_used": "यह चेन ID वर्तमान में के द्वारा इस्तेमाल की जाती है", - "incorrect_network_name_warning": "According to our records, the network name may not correctly match this chain ID.", - "suggested_name": "Suggested name:", + "incorrect_network_name_warning": "हमारे रिकॉर्ड के अनुसार, नेटवर्क का नाम इस चेन ID से ठीक से मेल नहीं खा सकता है।", + "suggested_name": "सुझाया गया नाम:", "network_check_validation_desc": "किसी बुरी नीयत वाले या गलत नेटवर्क से जुड़ने की आपकी संभावना कम हो जाती है।", - "cant_verify_custom_network_warning": "We can’t verify custom networks. To avoid malicious providers from recording your network activity, only add networks you trust.", + "cant_verify_custom_network_warning": "हम कस्टम नेटवर्क को वेरिफाई नहीं कर सकते। बुरी नीयत वाले प्रदाताओं को आपकी नेटवर्क गतिविधि रिकॉर्ड करने से रोकने के लिए, केवल वही नेटवर्क जोड़ें जिन पर आप भरोसा करते हैं।", "nfts_autodetection_cta": "सेटिंग में NFT का पता लगाना चालू करें", "learn_more": "ज्यादा जानें।", "add_collectibles": "NFT इम्पोर्ट करें", @@ -499,11 +499,14 @@ "address": "टोकन अनुबंध पता", "decimal": "टोकन दशमलव", "network": "नेटवर्क", + "network_fee": "Network fee", "lists": "टोकन सूचियाँ", "hide_cta": "टोकन छुपाएं", "options": { + "view_on_portfolio": "Portfolio पर देखें", "view_on_block": "ब्लॉक एक्सप्लोरर पर देखें", - "token_details": "टोकन विवरण" + "token_details": "टोकन विवरण", + "remove_token": "टोकन हटाएं" } }, "activity_view": { @@ -550,6 +553,7 @@ "description_title": "MetaMask को बेहतर बनाने में हमारी मदद करें", "description_content_1": "हम MetaMask को बेहतर बनाने के लिए बुनियादी यूसेज डेटा एकत्र करना चाहेंगे। जान लें कि हम आपके द्वारा यहां उपलब्ध कराया गया डेटा कभी नहीं बेचते हैं।", "description_content_2": "जब हम मेट्रिक्स इकट्ठा करते हैं, तो यह हमेशा... रहेगा", + "description_content_3": "जानें कि आपके प्रोफ़ाइल के लिए यूसेज डेटा एकत्र करते समय हम आपकी गोपनीयता की सुरक्षा कैसे करते हैं।", "checkbox": "हम इस डेटा का उपयोग यह जानने के लिए करेंगे कि आप हमारे मार्केटिंग कम्यूनिकेशन्स के साथ कैसे इंटरैक्ट करते हैं। हम प्रासंगिक समाचार (जैसे प्रॉडक्ट फीचर्स) साझा कर सकते हैं।", "action_description_1_prefix": "निजी:", "action_description_2_prefix": "सामान्य:", @@ -600,7 +604,21 @@ "decimals_is_required": "डेसिमल आवश्यक है। इसे यहां खोजें:", "no_tokens_found": "हम उस नाम के साथ कोई टोकन नहीं ढ़ूंढ़ सके।", "select_token": "टोकन चुनें", - "address_must_be_smart_contract": "व्यक्तिगत पता का पहचान हुई। टोकन अनुबंध पता दर्ज करें।" + "address_must_be_smart_contract": "व्यक्तिगत पता का पहचान हुई। टोकन अनुबंध पता दर्ज करें।", + "billion_abbreviation": "B", + "trillion_abbreviation": "T", + "million_abbreviation": "M", + "token_details": "टोकन विवरण", + "contract_address": "कॉन्ट्रैक्ट का एड्रेस", + "token_list": "टोकन की सूची", + "market_details": "मार्केट का ब्यौरा", + "market_cap": "मार्केट कैप", + "total_volume": "कुल वॉल्यूम (24h)", + "volume_to_marketcap": "वॉल्यूम / मार्केट कैप", + "circulating_supply": "सप्लाई सर्कुलेट किया जा रहा है", + "all_time_high": "अब तक के सबसे ऊँचे स्तर पर", + "all_time_low": "अब तक के सबसे निचले स्तर पर", + "fully_diluted": "पूरी तरह से डाइल्यूट किया हुआ" }, "collectible": { "collectible_address": "पता", @@ -650,10 +668,10 @@ "accounts_title": "खाता", "connect_account_title": "खाता कनेक्ट करें", "connect_accounts_title": "खातों को कनेक्ट करें", - "edit_accounts_title": "Edit accounts", + "edit_accounts_title": "एकाउंट्स बदलें", "connected_accounts_title": "कनेक्ट किए हुए खाते", "connect_description": "अपना खाता पता, शेष राशि, गतिविधि साझा करें और साइट को लेन-देन शुरू करने की अनुमति दें।", - "select_accounts_description": "Select the account(s) to use on this site:", + "select_accounts_description": "इस साइट पर इस्तेमाल करने के लिए अकाउंट (एकाउंट्स) को चुनें", "connect_multiple_accounts": "एक से अधिक खाते को कनेक्ट करें", "connect_more_accounts": "अधिक खाते को कनेक्ट करें", "cancel": "रद्द करें", @@ -669,7 +687,10 @@ "address_balance_activity_permission": "पता, अकाउंट बैलेंस और गतिविधि को देखना", "suggest_transactions": "स्वीकृत करने के लिए लेनदेन का सुझाव देना", "disconnect": "डिसकनेक्ट करें", + "disconnect_all": "सभी को डिस्कनेक्ट करें", + "reconnect_notice": "यदि आप अपने एकाउंट्स को {{dappUrl}} से डिस्कनेक्ट कर देते हैं, तो आपको उन्हें दोबारा उपयोग करने के लिए फिर से कनेक्ट करना होगा।", "disconnect_all_accounts": "सभी खाते डिसकनेक्ट करें", + "disconnect_you_from": "यह आपको {{dappUrl}} से डिस्कनेक्ट कर देगा", "deceptive_site_ahead": "आगे धोखाधड़ी करने वाली साइट मौजूद है", "deceptive_site_desc": "आप जिस साइट पर जाना चाह रहे हैं वह सुरक्षित नहीं है। हमला करने वाले आपको कुछ खतरनाक काम करने के लिए उकसा सकते हैं।", "learn_more": "ज़्यादा जानें", @@ -687,6 +708,7 @@ "accounts_connected": "खाते कनेक्ट किए गए।", "disconnected": "डिसकनेक्ट किया गया।", "disconnected_all": "सभी अकाउंट्स डिसकनेक्ट किए गए।", + "disconnected_from": "{{dappHostName}} से डिस्कनेक्ट किया गया", "nft_detection_enabled": "NFT ऑटोडिटेक्शन चालू किया गया" }, "connect_qr_hardware": { @@ -695,15 +717,15 @@ "description2": "ये कैसे काम करता है?", "description3": "आधिकारिक तौर पर सपोर्टेड एयरग्रैप्ड हार्डवेयर में शामिल हैं:", "keystone": "Keystone", - "ngravezero": "Ngrave Zero", + "ngravezero": "Ngrave ज़ीरो", "learnMore": "अधिक जानें", - "buyNow": "Buy now", + "buyNow": "अभी खरीदें", "tutorial": "ट्यूटोरियल", "description4": "कीस्टोन (ट्यूटोरियल)", "description5": "1. अपना कीस्टोन अनलॉक करें", "description6": "2. मेनू पर टैप करें, इसके बाद सिंक पर जाएं", "button_continue": "जारी रखें", - "hint_text": "Scan your hardware wallet to ", + "hint_text": "अपने हार्डवेयर वॉलेट को स्कैन करें ", "purpose_connect": "कनेक्ट", "purpose_sign": "लेनदेन की पुष्टि करें", "select_accounts": "किसी खाते का चयन करें" @@ -724,7 +746,7 @@ "enabling_profile_sync": "प्रोफ़ाइल सिंक चालू किया जा रहा है...", "disabling_profile_sync": "प्रोफ़ाइल सिंक बंद किया जा रहा है...", "notifications_dismiss_modal": "खारिज करें", - "select_rpc_url": "Select RPC URL", + "select_rpc_url": "RPC URL को चुनें", "title": "सेटिंग", "current_conversion": "बेस करेंसी", "current_language": "वर्तमान भाषा", @@ -824,7 +846,7 @@ "notifications_title": "नोटिफिकेशंस", "notifications_desc": "अपने नोटिफिकेशंस मैनेज करें", "allow_notifications": "नोटिफिकेशंस की अनुमति दें", - "allow_notifications_desc": "Stay in the loop on what’s happening in your wallet with notifications. To use notifications, we use a profile to sync some settings across your devices.", + "allow_notifications_desc": "नोटिफिकेशंस के साथ आपके वॉलेट में क्या हो रहा है, इसकी जानकारी रखें। नोटिफिकेशंस का उपयोग करने के लिए, हम आपके डिवाइस में कुछ सेटिंग्स को सिंक करने के लिए एक प्रोफ़ाइल का उपयोग करते हैं।", "notifications_opts": { "customize_session_title": "अपने नोटिफिकेशंस कस्टमाइज़ करें", "customize_session_desc": "आप जिस प्रकार के नोटिफिकेशंस प्राप्त करना चाहते हैं, उन्हें चालू करें:", @@ -843,6 +865,10 @@ }, "contacts_title": "संपर्क", "contacts_desc": "अपने अकाउंट को जोड़ें, संपादित करें, और प्रबंधित करें", + "permissions_title": "अनुमतियां", + "permissions_desc": "साइटों और ऐप्स को दी गई अनुमतियां प्रबंधित करें", + "no_permissions": "कोई अनुमति नहीं", + "no_permissions_desc": "यदि आप किसी अकाउंट को किसी साइट या ऐप से कनेक्ट करते हैं, तो वह आपको यहां दिखेगा।", "security_title": "सुरक्षा और गोपनीयता", "back": "वापस", "security_desc": "गोपनीय सेटिंग, MetaMetrics, निजी की और वॉलेट सीक्रेट रिकवरी फ्रेज", @@ -932,14 +958,18 @@ "custom_network_name": "कस्टम नेटवर्क्स", "popular": "लोकप्रिय", "delete": "हटाएँ", + "account": "अकाउंट", + "accounts": "एकाउंट्स", + "network": "नेटवर्क", + "networks": "नेटवर्क", "network_exists": "यह नेटवर्क पहले से ही जोड़ा जा चुका है।", - "unMatched_chain": "According to our records, this URL does not match a known provider for this chain ID.", - "unMatched_chain_name": "This chain ID doesn’t match the network name.", - "url_associated_to_another_chain_id": "This URL is associated with another chain ID.", - "chain_id_associated_with_another_network": "The information you have entered is associated with an existing chain ID. Update your information or", - "network_already_exist": "You already have a network with the same chain ID or RPC URL. Enter a new chain ID or RPC URL", - "edit_original_network": "edit the original network", - "find_the_right_one": "Find the right one on:", + "unMatched_chain": "हमारे रिकॉर्ड के अनुसार, यह URL इस चेन ID के लिए ज्ञात प्रदाता से मेल नहीं खाता है।", + "unMatched_chain_name": "यह चेन ID नेटवर्क के नाम से मेल नहीं खाती।", + "url_associated_to_another_chain_id": "यह URL किसी अन्य चेन ID से जुड़ा है।", + "chain_id_associated_with_another_network": "आपके द्वारा दर्ज की गई जानकारी मौजूदा चेन ID से जुड़ी है। अपनी जानकारी अपडेट करें या", + "network_already_exist": "आपके पास पहले से ही उसी चेन ID या RPC URL वाला नेटवर्क है। एक नई चेन ID या RPC URL दर्ज करें", + "edit_original_network": "मूल नेटवर्क को बदलें", + "find_the_right_one": "यहां पर सही खोजें:", "delete_metrics_title": "मेटामेट्रिक्स डेटा हटाएं", "delete_metrics_description_part_one": "यह आपके वॉलेट से जुड़ा ऐतिहासिक", "delete_metrics_description_part_two": "MetaMetrics", @@ -1169,7 +1199,7 @@ "text": "टेक्स्ट", "qr_code": "QR कोड", "hold_to_reveal_credential": "{{credentialName}} दिखाने के लिए होल्ड करें", - "reveal_credential": "Reveal {{credentialName}}", + "reveal_credential": "{{credentialName}} दिखाएं", "keep_credential_safe": "अपना {{credentialName}} सुरक्षित रखें", "srp_abbreviation_text": "SRP", "srp_text": "गुप्त रिकवरी वाक्यांश", @@ -1296,13 +1326,14 @@ "error": "त्रुटि", "attempting_to_scan_with_wallet_locked": "ऐसा लगता है कि आप एक QR कोड को स्कैन करने की कोशिश कर रहे हैं, आपको अपने वॉलेट को अनलॉक करने की जरुरत है ताकि उसका उपयोग कर सकें।", "attempting_sync_from_wallet_error": "ऐसा लगता है जैसे कि एक्सटेंशन के साथ आप सिंक करने की कोशिश कर रहे हैं। ऐसा करने के लिए, आपको अपने वर्तमान वॉलेट को मिटाना होगा। \n\nएक बार जब आपने ऐप के नए प्रारुप को मिटा दिया या फिर से स्थापित कर दिया हो, तब \"MetaMask एक्सटेंशन के साथ सिंक करें\" विकल्प को चुनें। महत्वपूर्ण! अपने वॉलेट को मिटाने से पहले, ये सुनिश्चित कर लें कि आपने अपने सीक्रेट रिकवरी फ्रेज का बैकअप ले लिया है।", - "not_allowed_error_title": "कैमरा एक्सेस सक्षम करें", - "not_allowed_error_desc": "किसी खाते के पते या अनुबंध के पते से जुड़े क्यूआर कोड को स्कैन करने के लिए कैमरा एक्सेस की ज़रूरत है", + "not_allowed_error_title": "कैमरे की ऐक्सेस चालू करें", + "not_allowed_error_desc": "QR कोड को स्कैन करने के लिए, आपको अपने डिवाइस के सेटिंग्स मेनू से MetaMask कैमरे की ऐक्सेस देनी होगी।", "unrecognized_address_qr_code_title": "अपरिचित QR कोड", "unrecognized_address_qr_code_desc": "क्षमा करें, यह QR कोड किसी खाते के पते या अनुबंध के पते से संबद्ध नहीं है।", "url_redirection_alert_title": "आप एक बाहरी लिंक पर जाने वाले हैं", "url_redirection_alert_desc": "लिंक का उपयोग लोगों को धोखा देने या फिश करने के लिए किया जा सकता है, इसलिए सुनिश्चित करें कि केवल उन्हीं वेबसाइटों पर जाएं जिन पर आप भरोसा करते हैं।", - "label": "एक QR कोड स्कैन करें" + "label": "एक QR कोड स्कैन करें", + "open_settings": "सेटिंग्स" }, "action_view": { "cancel": "रद्द करें", @@ -1312,6 +1343,7 @@ "transaction_id": "ट्रांसेक्शन आईडी", "alert": "सावधान", "amount": "रकम", + "details": "Details", "next": "अगला", "back": "वापस", "confirm": "पुष्टि करें", @@ -1320,7 +1352,7 @@ "cancel": "रद्द करें", "save": "सहेजें", "speedup": "गति बढ़ाएं", - "sign_with_keystone": "Sign with hardware wallet", + "sign_with_keystone": "हार्डवेयर वॉलेट के साथ साइन करें", "sign_with_ledger": "Ledger के साथ साइन करें", "from": "से", "gas_fee": "गैस शुल्क", @@ -1394,7 +1426,7 @@ "token_id": "टोकन ID", "not_enough_for_gas": "लेन-देन के शुल्क के भुगतान के लिए आपके पास 0 {{ticker}} आपके अकाउंट में है। कुछ {{ticker}} खरीदें या दूसरे अकाउंट में जमा करें।", "send": "भेजें", - "confirm_with_qr_hardware": "Confirm with hardware wallet", + "confirm_with_qr_hardware": "हार्डवेयर वॉलेट से कन्फर्म करें", "confirm_with_ledger_hardware": "Ledger से कन्फर्म करें", "confirmed": "पुष्ट हुआ", "pending": "विचाराधीन", @@ -1427,7 +1459,7 @@ "no_camera_permission": "कैमरा अधिकृत नहीं है। कृपया अनुमति दें और दोबारा प्रयास करें", "invalid_qr_code_sign": "अमान्य क्यूआर कोड। कृपया अपना हार्डवेयर जांचे और दोबारा प्रयास करें।", "no_camera_permission_android": "आगे बढ़ने के लिए आपको MetaMask को अपने कैमरे की एक्सेस देनी होगी। आपको अपने सिस्टम की सेटिंग्स भी बदलनी पड़ सकती है।", - "mismatched_qr_request_id": "Incongruent transaction data. Please use your hardware wallet to sign the QR code below and tap 'Get Signature'.", + "mismatched_qr_request_id": "असंगत ट्रांसेक्शन डेटा। कृपया नीचे दिए गए QR कोड को साइन करने के लिए अपने हार्डवेयर वॉलेट का उपयोग करें और 'सिग्नेचर पाएं' पर टैप करें।", "fiat_conversion_not_available": "फिएट रूपांतरण इस समय उपलब्ध नहीं हैं", "hex_data_copied": "Hex डेटा क्लिपबोर्ड पर कॉपी किया गया", "invalid_recipient": "अवैध प्राप्तकर्ता", @@ -1628,8 +1660,8 @@ "import_wallet_label": "अकाउंट जोड़ा गया", "import_wallet_tip": "इस डिवाइस से भविष्य के सभी किए गए लेन-देन में टाइमस्टैम्प के बाद एक लेबल \"इस डिवाइस से\" शामिल होगा। अकाउंट को जोड़े जाने से पहले की तिथि के लेन-देन के लिए, इतिहास सूचित नहीं करेगा कि कौन से आउटगोइंग लेन-देन इस डिवाइस से उत्पन्न हुए हैं।", "sign_title_scan": "स्कैन करें ", - "sign_title_device": "with your hardware wallet", - "sign_description_1": "After you have signed with your hardware wallet,", + "sign_title_device": "अपने हार्डवेयर वॉलेट के साथ", + "sign_description_1": "अपने हार्डवेयर वॉलेट के साथ साइन करने के बाद,", "sign_description_2": "गेट सिग्नेचर पर टैप करें", "sign_get_signature": "हस्ताक्षर प्राप्त करें", "network_fee": "नेटवर्क फीस" @@ -1702,7 +1734,11 @@ "network_display_name": "प्रदर्शित होने वाला नाम", "network_chain_id": "चेन आईडी", "network_rpc_url": "नेटवर्क यूआरएल", - "network_rpc_url_label": "Network RPC URL", + "network_rpc_url_label": "नेटवर्क RPC URL", + "new_default_network_url": "नया डिफॉल्ट नेटवर्क URL", + "current_label": "मौजूदा", + "new_label": "नया", + "review": "समीक्षा करें", "view_details": "विवरण देखें", "network_details": "नेटवर्क विवरण", "network_select_confirm_use_safe_check": "कन्फर्म करें को चुनने पर नेटवर्क डिटेल्स की जांच चालू हो जाती है। आप में नेटवर्क डिटेल्स की जांच बंद कर सकते हैं ", @@ -1735,7 +1771,7 @@ "add_other_network_here": "यहां।", "you_can": "या आप", "add_network": "मैन्युअल रूप से अधिक नेटवर्क जोड़ें।", - "add_specific_network": "Add {{network_name}}", + "add_specific_network": "{{network_name}} जोड़ें", "select_network": "एक नेटवर्क चुनें", "enabled_networks": "चालू किए गए नेटवर्क", "additional_networks": "अतिरिक्त नेटवर्क", @@ -2010,7 +2046,7 @@ "staked": "स्टेक किया गया", "received": "प्राप्त किया गया", "unstaked": "अनस्टेक किया गया", - "mark_all_as_read": "Mark all as read", + "mark_all_as_read": "सभी को पढ़ा हुआ चिन्हित करें", "to": "प्रति", "rate": "दर (शुल्क शामिल है)", "unstaking_requested": "अनस्टेकिंग का अनुरोध किया गया", @@ -2023,7 +2059,7 @@ "swap": "स्वैप किया गया", "sent": "{{address}} पर भेजा गया", "menu_item_title": { - "metamask_swap_completed": "Swapped {{symbolIn}} for {{symbolOut}}", + "metamask_swap_completed": "{{symbolIn}} को {{symbolOut}} के लिए स्वैप किया गया", "erc20_sent": "{{address}} पर भेजा गया", "erc20_received": "{{address}} से प्राप्त हुआ", "eth_sent": "{{address}} पर भेजा गया", @@ -2050,7 +2086,7 @@ "title_untake_ready": "विदड्रॉवल तैयार है", "title_stake": "{{symbol}} स्टेक किया गया", "title_unstake_completed": "अनस्टेकिंग पूरा हुआ", - "title_swapped": "Swapped {{symbolIn}} to {{symbolOut}}", + "title_swapped": "{{symbolIn}} को {{symbolOut}} से स्वैप किया गया", "label_address_to": "को", "label_address_from": "से", "label_address_to_you": "(आप) को", @@ -2129,9 +2165,9 @@ "transaction_id_copied_to_clipboard": "ट्रांसेक्शन आईडी क्लिपबोर्ड पर कॉपी किया गया", "activation_card": { "title": "नोटिफिकेशंस चालू करें", - "description_1": "नोटिफिकेशंस के साथ आपके वॉलेट में क्या हो रहा है, इसकी जानकारी रखें। ", + "description_1": "नोटिफिकेशंस के साथ आपके वॉलेट में क्या हो रहा है, इसकी जानकारी रखें।", "description_2": "इस सुविधा का उपयोग करने के लिए, हम आपके अकाउंट के लिए एक अनाम आईडी तैयार करेंगे। इसका उपयोग केवल MetaMask में आपके डेटा को सिंक करने के लिए किया जाता है और यह आपकी गोपनीयता सुनिश्चित करते हुए आपकी गतिविधियों या अन्य पहचानकर्ताओं से लिंक नहीं होता है।", - "learn_more": "जानें कि इस फीचर का उपयोग करते समय हम आपकी गोपनीयता की सुरक्षा कैसे करते हैं। ", + "learn_more": "जानें कि इस फीचर का उपयोग करते समय हम आपकी गोपनीयता की सुरक्षा कैसे करते हैं।", "manage_preferences_1": "आप किसी भी समय नोटिफिकेशंस बंद कर सकते हैं ", "manage_preferences_2": "सेटिंग्स > नोटीफिकेशंस में।", "cancel": "कैंसिल करें", @@ -2523,7 +2559,8 @@ "sale_completed_title": "ऑर्डर पूरा हो गया", "sale_completed_description": "आपका ऑर्डर सही से हो गया!", "sale_pending_title": "{{currency}} सेल प्रोसेस हो रही है", - "sale_pending_description": "आपके ऑर्डर को अब प्रोसेस किया जा रहा है।" + "sale_pending_description": "आपके ऑर्डर को अब प्रोसेस किया जा रहा है।", + "no_date": "अज्ञात" } }, "swaps": { @@ -2782,14 +2819,14 @@ }, "switch_custom_network": { "title_existing_network": "यह साइट नेटवर्क बदलना चाहेगा", - "title_enabled_network": "This site wants to:", + "title_enabled_network": "यह साइट निम्नलिखित करना चाहती है:", "title_new_network": "नया नेटवर्क जोड़ा गया", "switch_warning": "इससे चुना गया नेटवर्क को MetaMask के भीतर पहले से जोड़े गए नेटवर्क में बदल दिया जाएगा:", - "use_enabled_networks": "Use your enabled networks", - "wants_to_see_your_accounts": "See your accounts and suggest transactions", - "requesting_for": "Requesting for ", - "edit": "Edit", - "add_network_and_give_dapp_permission_warning": "You're adding this network to MetaMask and giving {{dapp_origin}} permission to use it.", + "use_enabled_networks": "आपके चालू नेटवर्क का उपयोग करना", + "wants_to_see_your_accounts": "आपके अकाउंट को देखकर ट्रांसेक्शन का सुझाव देना", + "requesting_for": "के लिए अनुरोध कर रहे हैं ", + "edit": "बदलें", + "add_network_and_give_dapp_permission_warning": "आप इस नेटवर्क को MetaMask में जोड़ रहे हैं और {{dapp_origin}} को इसका उपयोग करने की अनुमति दे रहे हैं।", "available": "नेटवर्क चयनकर्ता में अब उपलब्ध है।", "cancel": "रद्द करें", "switch": "नेटवर्क बदलें" @@ -3113,8 +3150,8 @@ "cannot_get_account": "अकाउंट नहीं मिल रहा है", "connect_ledger": "Ledger कनेक्ट करें", "looking_for_device": "डिवाइस खोज रहा है", - "ledger_reminder_message": "Please make sure your Ledger device is:", - "ledger_reminder_message_step_one": "1. Unlock your Ledger device", + "ledger_reminder_message": "कृपया सुनिश्चित करें कि आपका Ledger डिवाइस है:", + "ledger_reminder_message_step_one": "1. अपने Ledger डिवाइस को अनलॉक करें", "ledger_reminder_message_step_two": "2. Ethereum ऐप को इनस्टॉल करें और खोलें", "ledger_reminder_message_step_three": "3. ब्लूटूथ चालू करें", "ledger_reminder_message_step_four": "4. सटीक लोकेशन के उपयोग के साथ लोकेशन चालू कर दी गई है", @@ -3123,7 +3160,7 @@ "available_devices": "उपलब्ध डिवाइस", "retry": "फिर से कोशिश करें", "continue": "जारी रखें", - "confirm_transaction_on_ledger": "Confirm transaction on your Ledger", + "confirm_transaction_on_ledger": "अपने Ledger पर ट्रांसेक्शन कन्फर्म करें", "bluetooth_enabled_message": "सुनिश्चित करें कि ब्लूटूथ सक्षम है", "device_unlocked_message": "डिवाइस अनलॉक है", "ledger_disconnected": "आपका डिवाइस डिसकनेक्ट हो गया है", @@ -3146,13 +3183,11 @@ "not_supported": "ऑपरेशन समर्थित नहीं है", "not_supported_error": "टाइप किए गए डेटा साइनिंग का केवल संस्करण 4 समर्थित है।", "error_during_connection": "एक अज्ञात गड़बड़ी हुई", - "error_during_connection_message": "There's been a slight problem connecting your Ledger device, tap 'Retry' below to give this another go. Sometimes this occurs due to the ETH app on your Ledger device being open at the start of the pairing process with MetaMask Mobile.", + "error_during_connection_message": "आपके Ledger डिवाइस को जोड़ने में थोड़ी समस्या हुई है, इसे फिर से करने के लिए नीचे 'फिर कोशिश करें' पर टैप करें। कभी-कभी MetaMask मोबाइल के साथ जोड़ने की प्रक्रिया की शुरुआत में आपके Ledger डिवाइस पर ETH ऐप के खुले होने के कारण ऐसा होता है।", "how_to_install_eth_webview_title": "Ethereum ऐप कैसे इंस्टॉल करें", "nonce_too_low": "Nonce बहुत कम है", "nonce_too_low_error": "सेट किया हुआ nonce बहुत कम है", - "select_accounts": "Select an Account", - "select_accounts_warning": "Note: these accounts might be different to what you're used to.", - "select_accounts_sub_msg": "These accounts are derived using the BIP44 derivation path, which is different to the default Ledger Live derivation path on MetaMask Extension, Different derivation paths for Ledger will be available on MetaMask Mobile soon." + "select_accounts": "किसी अकाउंट को चुनें" }, "account_actions": { "edit_name": "खाते का नाम संपादित करें", @@ -3225,7 +3260,7 @@ "title_off": "बेसिक फंक्शनलिटी को बंद करें", "description_off": "इसका मतलब यह है कि आप MetaMask पर अपना समय सबसे अच्छे तरीके से इस्तेमाल नहीं कर पाएंगे। बेसिक फीचर्स (जैसे, टोकन विवरण, ऑप्टीमल गैस सेटिंग्स और अन्य) आपके लिए उपलब्ध नहीं होंगे।", "title_on": "बेसिक फंक्शनलिटी को चालू करें", - "description_on": "MetaMask पर अपना समय अच्छे तरीके से इस्तेमाल करने के लिए, आपको इस फीचर को चालू करना होगा। बुनियादी कार्य (जैसे, टोकन विवरण, ऑप्टीमल गैस सेटिंग्स और अन्य) Web3 अनुभव के लिए महत्वपूर्ण हैं।", + "description_on": "MetaMask पर अपना समय अच्छे तरीके से इस्तेमाल करने के लिए, आपको इस फीचर को चालू करना होगा। बुनियादी कार्य (जैसे, टोकन विवरण, ऑप्टीमल गैस सेटिंग्स, नोटिफिकेशंस और अन्य) Web3 अनुभव के लिए महत्वपूर्ण हैं।", "checkbox_label": "मैं समझता/समझती हूं और जारी रखना चाहता/चाहती हूं", "buttons": { "cancel": "कैंसिल करें", diff --git a/locales/languages/id.json b/locales/languages/id.json index b96e38b7d12..f6c944204d2 100644 --- a/locales/languages/id.json +++ b/locales/languages/id.json @@ -451,10 +451,10 @@ "use_the_currency_symbol": "menggunakan simbol mata uang", "use_correct_symbol": "Pastikan Anda menggunakan simbol yang benar sebelum melanjutkan", "chain_id_currently_used": "ID chain ini saat ini digunakan oleh", - "incorrect_network_name_warning": "According to our records, the network name may not correctly match this chain ID.", - "suggested_name": "Suggested name:", + "incorrect_network_name_warning": "Berdasarkan catatan kami, nama jaringan mungkin tidak cocok dengan ID chain ini.", + "suggested_name": "Nama yang disarankan:", "network_check_validation_desc": "mengurangi peluang Anda untuk terhubung ke jaringan berbahaya atau salah.", - "cant_verify_custom_network_warning": "We can’t verify custom networks. To avoid malicious providers from recording your network activity, only add networks you trust.", + "cant_verify_custom_network_warning": "Kami tidak dapat memverifikasi jaringan khusus. Untuk mencegah penyedia jahat merekam aktivitas jaringan Anda, tambahkan jaringan yang dipercaya saja.", "nfts_autodetection_cta": "Aktifkan deteksi NFT di Pengaturan", "learn_more": "Pelajari selengkapnya", "add_collectibles": "Impor NFT", @@ -499,11 +499,14 @@ "address": "Alamat kontrak token", "decimal": "Desimal token", "network": "Jaringan", + "network_fee": "Network fee", "lists": "Daftar Token", "hide_cta": "Sembunyikan token", "options": { + "view_on_portfolio": "Lihat di Portfolio", "view_on_block": "Lihat di block explorer", - "token_details": "Detail token" + "token_details": "Detail token", + "remove_token": "Hapus token" } }, "activity_view": { @@ -550,6 +553,7 @@ "description_title": "Bantu kami meningkatkan MetaMask", "description_content_1": "Kami ingin mengumpulkan data penggunaan dasar untuk meningkatkan MetaMask. Pahami bahwa kami tidak pernah menjual data yang Anda berikan di sini.", "description_content_2": "Saat kami mengumpulkan metrik, maka akan selalu...", + "description_content_3": "Pelajari cara kami melindungi privasi Anda saat mengumpulkan data penggunaan untuk profil Anda.", "checkbox": "Kami akan menggunakan data ini untuk mempelajari cara Anda berinteraksi dengan komunikasi pemasaran kami. Kami mungkin akan membagikan berita terkait (seperti fitur produk).", "action_description_1_prefix": "Pribadi:", "action_description_2_prefix": "Umum:", @@ -600,7 +604,21 @@ "decimals_is_required": "Desimal diperlukan. Temukan di:", "no_tokens_found": "Kami tidak dapat menemukan token dengan nama tersebut.", "select_token": "Pilih Token", - "address_must_be_smart_contract": "Alamat pribadi terdeteksi. Masukkan alamat kontrak token." + "address_must_be_smart_contract": "Alamat pribadi terdeteksi. Masukkan alamat kontrak token.", + "billion_abbreviation": "M", + "trillion_abbreviation": "T", + "million_abbreviation": "Jt", + "token_details": "Detail token", + "contract_address": "Alamat kontrak", + "token_list": "Daftar token", + "market_details": "Detail pasar", + "market_cap": "Kap Pasar", + "total_volume": "Volume Total (24 jam)", + "volume_to_marketcap": "Volume/Kap Pasar", + "circulating_supply": "Suplai yang beredar", + "all_time_high": "Tertinggi sepanjang waktu", + "all_time_low": "Terendah sepanjang waktu", + "fully_diluted": "Dicairkan sepenuhnya" }, "collectible": { "collectible_address": "Alamat", @@ -650,10 +668,10 @@ "accounts_title": "Akun", "connect_account_title": "Hubungkan akun", "connect_accounts_title": "Hubungkan akun", - "edit_accounts_title": "Edit accounts", + "edit_accounts_title": "Edit akun", "connected_accounts_title": "Akun yang terhubung", "connect_description": "Bagikan alamat, saldo, aktivitas akun Anda, dan izinkan situs untuk memulai transaksi.", - "select_accounts_description": "Select the account(s) to use on this site:", + "select_accounts_description": "Pilih akun yang akan digunakan di situs ini:", "connect_multiple_accounts": "Hubungkan beberapa akun", "connect_more_accounts": "Hubungkan lebih banyak akun", "cancel": "Batalkan", @@ -669,7 +687,10 @@ "address_balance_activity_permission": "Melihat alamat, saldo akun, dan aktivitas", "suggest_transactions": "Merekomendasikan transaksi untuk disetujui", "disconnect": "Memutus koneksi", + "disconnect_all": "Putuskan semua koneksi", + "reconnect_notice": "Jika Anda memutus koneksi akun dari {{dappUrl}}, Anda harus menghubungkannya kembali agar dapat menggunakannya lagi.", "disconnect_all_accounts": "Memutus koneksi semua akun", + "disconnect_you_from": "Ini akan memutus koneksi dari {{dappUrl}}", "deceptive_site_ahead": "Situs yang menipu terdeteksi", "deceptive_site_desc": "Situs yang akan Anda kunjungi tidak aman. Penyerang dapat mengelabui Anda untuk melakukan sesuatu yang berbahaya.", "learn_more": "Selengkapnya", @@ -687,6 +708,7 @@ "accounts_connected": "akun terhubung.", "disconnected": "koneksi terputus.", "disconnected_all": "Semua akun terputus koneksinya.", + "disconnected_from": "Koneksi dari {{dappHostName}} terputus", "nft_detection_enabled": "Autodeteksi NFT diaktifkan" }, "connect_qr_hardware": { @@ -695,15 +717,15 @@ "description2": "Bagaimana cara kerjanya?", "description3": "Dompet perangkat keras bercelah udara yang didukung secara resmi meliputi:", "keystone": "Keystone", - "ngravezero": "Ngrave Zero", + "ngravezero": "Ngrave Nol", "learnMore": "Selengkapnya", - "buyNow": "Buy now", + "buyNow": "Beli sekarang", "tutorial": "Tutorial", "description4": "Keystone (tutorial)", "description5": "1. Buka Keystone Anda", "description6": "2. Ketuk Menu ···, lalu buka Sinkronisasi", "button_continue": "Lanjutkan", - "hint_text": "Scan your hardware wallet to ", + "hint_text": "Pindai dompet perangkat keras ke ", "purpose_connect": "hubungkan", "purpose_sign": "konfirmasikan transaksi", "select_accounts": "Pilih Akun" @@ -724,7 +746,7 @@ "enabling_profile_sync": "Mengaktifkan sinkronisasi profil...", "disabling_profile_sync": "Menonaktifkan sinkronisasi profil...", "notifications_dismiss_modal": "Lewatkan", - "select_rpc_url": "Select RPC URL", + "select_rpc_url": "Pilih URL RPC", "title": "Pengaturan", "current_conversion": "Mata Uang Dasar", "current_language": "Bahasa Saat ini", @@ -824,7 +846,7 @@ "notifications_title": "Notifikasi", "notifications_desc": "Kelola notifikasi", "allow_notifications": "Izinkan notifikasi", - "allow_notifications_desc": "Stay in the loop on what’s happening in your wallet with notifications. To use notifications, we use a profile to sync some settings across your devices.", + "allow_notifications_desc": "Pantau terus segala yang terjadi di dompet Anda dengan notifikasi. Untuk menggunakan notifikasi, kami menggunakan profil untuk menyinkronkan beberapa pengaturan di seluruh perangkat Anda.", "notifications_opts": { "customize_session_title": "Sesuaikan notifikasi", "customize_session_desc": "Aktifkan jenis notifikasi yang ingin diterima:", @@ -843,6 +865,10 @@ }, "contacts_title": "Kontak", "contacts_desc": "Tambahkan, edit, hapus, dan kelola akun Anda", + "permissions_title": "Izin", + "permissions_desc": "Kelola izin yang diberikan ke situs dan aplikasi", + "no_permissions": "Tidak ada izin", + "no_permissions_desc": "Jika Anda menghubungkan akun ke situs atau aplikasi, Anda akan melihatnya di sini.", "security_title": "Keamanan dan Privasi", "back": "Kembali", "security_desc": "Pengaturan privasi, MetaMetrics, kunci pribadi, dan Frasa Pemulihan Rahasia dompet", @@ -932,14 +958,18 @@ "custom_network_name": "Jaringan khusus", "popular": "Populer", "delete": "Hapus", + "account": "akun", + "accounts": "akun", + "network": "jaringan", + "networks": "jaringan", "network_exists": "Jaringan ini telah ditambahkan.", - "unMatched_chain": "According to our records, this URL does not match a known provider for this chain ID.", - "unMatched_chain_name": "This chain ID doesn’t match the network name.", - "url_associated_to_another_chain_id": "This URL is associated with another chain ID.", - "chain_id_associated_with_another_network": "The information you have entered is associated with an existing chain ID. Update your information or", - "network_already_exist": "You already have a network with the same chain ID or RPC URL. Enter a new chain ID or RPC URL", - "edit_original_network": "edit the original network", - "find_the_right_one": "Find the right one on:", + "unMatched_chain": "Menurut catatan kami, URL ini tidak sesuai dengan penyedia yang dikenal untuk ID chain ini.", + "unMatched_chain_name": "ID chain ini tidak sesuai dengan nama jaringan.", + "url_associated_to_another_chain_id": "URL ini terhubung dengan ID chain lain.", + "chain_id_associated_with_another_network": "Informasi yang Anda masukkan terhubung dengan ID chain yang ada. Perbarui informasi Anda atau", + "network_already_exist": "Anda sudah memiliki jaringan dengan ID chain atau URL RPC yang sama. Masukkan ID chain atau URL RPC yang baru", + "edit_original_network": "edit jaringan asli", + "find_the_right_one": "Temukan yang tepat di:", "delete_metrics_title": "Hapus data MetaMetrics", "delete_metrics_description_part_one": "Ini akan menghapus riwayat", "delete_metrics_description_part_two": "MetaMetrics", @@ -1169,7 +1199,7 @@ "text": "TEKS", "qr_code": "KODE QR", "hold_to_reveal_credential": "Tahan untuk menampilkan {{credentialName}}", - "reveal_credential": "Reveal {{credentialName}}", + "reveal_credential": "Tampilkan {{credentialName}}", "keep_credential_safe": "Jaga keamanan {{credentialName}} Anda", "srp_abbreviation_text": "SRP", "srp_text": "Frasa Pemulihan Rahasia", @@ -1297,12 +1327,13 @@ "attempting_to_scan_with_wallet_locked": "Tampaknya Anda mencoba memindai kode QR, Anda harus membuka dompet untuk dapat menggunakannya.", "attempting_sync_from_wallet_error": "Tampaknya Anda mencoba menyinkronkan dengan ekstensi. Untuk melakukannya, Anda harus menghapus dompet saat ini. \n\nSetelah Anda menghapus atau menginstal ulang versi baru aplikasi, pilih opsi untuk \"Menyinkronkan dengan Ekstensi MetaMask\". Penting! Sebelum menghapus dompet Anda, pastikan Anda telah mencadangkan Frasa Pemulihan Rahasia.", "not_allowed_error_title": "Aktifkan akses kamera", - "not_allowed_error_desc": "Akses kamera diperlukan untuk memindai kode QR yang terkait dengan alamat akun atau alamat kontrak", + "not_allowed_error_desc": "Untuk memindai kode QR, berikan MetaMask akses ke kamera dari menu pengaturan perangkat Anda.", "unrecognized_address_qr_code_title": "Kode QR tak dikenal", "unrecognized_address_qr_code_desc": "Maaf, kode QR ini tidak terkait dengan alamat akun atau alamat kontrak.", "url_redirection_alert_title": "Anda akan mengunjungi tautan eksternal", "url_redirection_alert_desc": "Tautan dapat digunakan untuk mencoba menipu atau mengelabui orang, jadi pastikan untuk mengunjungi situs web yang aman saja.", - "label": "Pindai kode QR" + "label": "Pindai kode QR", + "open_settings": "Pengaturan" }, "action_view": { "cancel": "Batal", @@ -1312,6 +1343,7 @@ "transaction_id": "ID Transaksi", "alert": "PERINGATAN", "amount": "Jumlah", + "details": "Details", "next": "Selanjutnya", "back": "Kembali", "confirm": "Konfirmasikan", @@ -1320,7 +1352,7 @@ "cancel": "Batal", "save": "Simpan", "speedup": "Percepat", - "sign_with_keystone": "Sign with hardware wallet", + "sign_with_keystone": "Tandatangani dengan dompet perangkat keras", "sign_with_ledger": "Tandatangani dengan Ledger", "from": "Dari", "gas_fee": "Biaya gas", @@ -1394,7 +1426,7 @@ "token_id": "ID Token", "not_enough_for_gas": "Anda memiliki 0 {{ticker}} di akun Anda untuk membayar biaya transaksi. Beli {{ticker}} atau setor dari rekening lain.", "send": "Kirim", - "confirm_with_qr_hardware": "Confirm with hardware wallet", + "confirm_with_qr_hardware": "Konfirmasikan dengan dompet perangkat keras", "confirm_with_ledger_hardware": "Konfirmasikan dengan Ledger", "confirmed": "Dikonfirmasi", "pending": "Menunggu", @@ -1427,7 +1459,7 @@ "no_camera_permission": "Kamera tidak diizinkan. Harap berikan izin dan coba lagi", "invalid_qr_code_sign": "Kode QR tidak valid. Harap periksa perangkat keras Anda dan coba lagi.", "no_camera_permission_android": "Izinkan MetaMask mengakses kamera Anda untuk melanjutkan. Anda juga perlu mengubah pengaturan sistem.", - "mismatched_qr_request_id": "Incongruent transaction data. Please use your hardware wallet to sign the QR code below and tap 'Get Signature'.", + "mismatched_qr_request_id": "Data transaksi tidak sesuai. Gunakan dompet perangkat keras untuk menandatangani kode QR di bawah ini dan ketuk 'Dapatkan Tanda Tangan'.", "fiat_conversion_not_available": "Konversi fiat tidak tersedia untuk saat ini", "hex_data_copied": "Data hex disalin ke papan klip", "invalid_recipient": "Penerima tidak valid", @@ -1628,8 +1660,8 @@ "import_wallet_label": "Akun Ditambahkan", "import_wallet_tip": "Seluruh transaksi mendatang yang dilakukan dari perangkat ini akan menyertakan label \"dari perangkat ini\" di samping stempel waktu. Untuk transaksi yang diberi tanggal sebelum menambahkan akun, riwayat ini tidak akan menunjukkan transaksi keluar mana saja yang berasal dari perangkat ini.", "sign_title_scan": "Pindai ", - "sign_title_device": "with your hardware wallet", - "sign_description_1": "After you have signed with your hardware wallet,", + "sign_title_device": "dengan dompet perangkat keras Anda", + "sign_description_1": "Setelah menandatangani dengan dompet perangkat keras,", "sign_description_2": "ketuk Dapatkan Tanda Tangan", "sign_get_signature": "Dapatkan Tanda Tangan", "network_fee": "Biaya Jaringan" @@ -1702,7 +1734,11 @@ "network_display_name": "Nama tampilan", "network_chain_id": "ID Chain", "network_rpc_url": "URL Jaringan", - "network_rpc_url_label": "Network RPC URL", + "network_rpc_url_label": "URL RPC Jaringan", + "new_default_network_url": "URL jaringan default baru", + "current_label": "Saat ini", + "new_label": "Baru", + "review": "Tinjau", "view_details": "Lihat detail", "network_details": "Detail jaringan", "network_select_confirm_use_safe_check": "Memilih Konfirmasikan akan mengaktifkan pemeriksaan detail Jaringan. Anda dapat menonaktifkan pemeriksaan detail Jaringan di ", @@ -1735,7 +1771,7 @@ "add_other_network_here": "di sini.", "you_can": "Atau Anda dapat", "add_network": "menambahkan lebih banyak jaringan secara manual.", - "add_specific_network": "Add {{network_name}}", + "add_specific_network": "Tambahkan {{network_name}}", "select_network": "Pilih jaringan", "enabled_networks": "Jaringan yang diaktifkan", "additional_networks": "Jaringan tambahan", @@ -2010,7 +2046,7 @@ "staked": "Di-stake", "received": "Diterima", "unstaked": "Stake dibatalkan", - "mark_all_as_read": "Mark all as read", + "mark_all_as_read": "Tandai semua telah dibaca", "to": "Ke", "rate": "Tarif (termasuk biaya)", "unstaking_requested": "Permintaan pembatalan stake", @@ -2023,7 +2059,7 @@ "swap": "Ditukar", "sent": "Dikirim ke {{address}}", "menu_item_title": { - "metamask_swap_completed": "Swapped {{symbolIn}} for {{symbolOut}}", + "metamask_swap_completed": "Menukar {{symbolIn}} dengan {{symbolOut}}", "erc20_sent": "Dikirim ke {{address}}", "erc20_received": "Diterima dari {{address}}", "eth_sent": "Dikirim ke {{address}}", @@ -2050,7 +2086,7 @@ "title_untake_ready": "Penarikan siap", "title_stake": "Men-stake {{symbol}}", "title_unstake_completed": "Pembatalan stake selesai", - "title_swapped": "Swapped {{symbolIn}} to {{symbolOut}}", + "title_swapped": "Menukar {{symbolIn}} menjadi {{symbolOut}}", "label_address_to": "Ke", "label_address_from": "Dari", "label_address_to_you": "Untuk (Anda)", @@ -2129,9 +2165,9 @@ "transaction_id_copied_to_clipboard": "ID Transaksi disalin ke papan klip", "activation_card": { "title": "Aktifkan notifikasi", - "description_1": "Pantau terus segala perkembangan yang terjadi di dompet Anda dengan notifikasi. ", + "description_1": "Pantau terus segala yang terjadi di dompet Anda dengan notifikasi.", "description_2": "Untuk menggunakan fitur ini, kami akan membuat ID anonim untuk akun Anda. Ini hanya digunakan untuk menyinkronkan data di MetaMask dan tidak terhubung dengan aktivitas atau pengidentifikasi lainnya, sehingga privasi tetap terjaga.", - "learn_more": "Pelajari cara kami melindungi privasi Anda saat menggunakan fitur ini. ", + "learn_more": "Pelajari cara kami melindungi privasi Anda saat menggunakan fitur ini.", "manage_preferences_1": "Notifikasi dapat dinonaktifkan setiap saat ", "manage_preferences_2": "Pengaturan > Notifikasi.", "cancel": "Batal", @@ -2523,7 +2559,8 @@ "sale_completed_title": "Pesanan selesai", "sale_completed_description": "Pesanan berhasil!.", "sale_pending_title": "Pemrosesan penjualan {{currency}}", - "sale_pending_description": "Pesanan sedang diproses." + "sale_pending_description": "Pesanan sedang diproses.", + "no_date": "Tidak dikenal" } }, "swaps": { @@ -2782,14 +2819,14 @@ }, "switch_custom_network": { "title_existing_network": "Situs ini ingin beralih jaringan", - "title_enabled_network": "This site wants to:", + "title_enabled_network": "Situs ini ingin:", "title_new_network": "Jaringan baru ditambahkan", "switch_warning": "Ini akan mengalihkan jaringan yang dipilih dalam MetaMask ke jaringan yang ditambahkan sebelumnya:", - "use_enabled_networks": "Use your enabled networks", - "wants_to_see_your_accounts": "See your accounts and suggest transactions", - "requesting_for": "Requesting for ", + "use_enabled_networks": "Menggunakan jaringan aktif", + "wants_to_see_your_accounts": "Melihat akun Anda dan menyarangkan transaksi", + "requesting_for": "Meminta untuk ", "edit": "Edit", - "add_network_and_give_dapp_permission_warning": "You're adding this network to MetaMask and giving {{dapp_origin}} permission to use it.", + "add_network_and_give_dapp_permission_warning": "Anda menambahkan jaringan ini ke MetaMask dan memberikan {{dapp_origin}} izin untuk menggunakannya.", "available": "kini tersedia di pemilih jaringan.", "cancel": "Batal", "switch": "Alihkan jaringan" @@ -3113,8 +3150,8 @@ "cannot_get_account": "Tidak bisa mendapatkan akun", "connect_ledger": "Hubungkan Ledger", "looking_for_device": "Mencari perangkat", - "ledger_reminder_message": "Please make sure your Ledger device is:", - "ledger_reminder_message_step_one": "1. Unlock your Ledger device", + "ledger_reminder_message": "Pastikan perangkat Ledger:", + "ledger_reminder_message_step_one": "1. Buka perangkat Ledger", "ledger_reminder_message_step_two": "2. Instal dan buka aplikasi Ethereum", "ledger_reminder_message_step_three": "3. Aktifkan Bluetooth", "ledger_reminder_message_step_four": "4. Lokasi diaktifkan dengan menggunakan lokasi yang tepat", @@ -3123,7 +3160,7 @@ "available_devices": "Perangkat yang tersedia", "retry": "Coba lagi", "continue": "Lanjutkan", - "confirm_transaction_on_ledger": "Confirm transaction on your Ledger", + "confirm_transaction_on_ledger": "Konfirmasikan transaksi di Ledger Anda", "bluetooth_enabled_message": "Pastikan Bluetooth diaktifkan", "device_unlocked_message": "Perangkat tidak terkunci", "ledger_disconnected": "Sambungan perangkat terputus", @@ -3146,13 +3183,11 @@ "not_supported": "Operasi tidak didukung", "not_supported_error": "Hanya penandatanganan data yang diketik versi 4 yang didukung.", "error_during_connection": "Terjadi kesalahan tidak dikenal", - "error_during_connection_message": "There's been a slight problem connecting your Ledger device, tap 'Retry' below to give this another go. Sometimes this occurs due to the ETH app on your Ledger device being open at the start of the pairing process with MetaMask Mobile.", + "error_during_connection_message": "Ada sedikit masalah saat menghubungkan perangkat Ledger, ketuk 'Coba Lagi' di bawah ini untuk mencoba kembali. Terkadang hal ini terjadi karena aplikasi ETH pada perangkat Ledger terbuka di awal proses pemasangan dengan MetaMask Mobile.", "how_to_install_eth_webview_title": "Cara menginstal Aplikasi Ethereum", "nonce_too_low": "Nonce terlalu rendah", "nonce_too_low_error": "Nonce yang ditetapkan terlalu rendah", - "select_accounts": "Select an Account", - "select_accounts_warning": "Note: these accounts might be different to what you're used to.", - "select_accounts_sub_msg": "These accounts are derived using the BIP44 derivation path, which is different to the default Ledger Live derivation path on MetaMask Extension, Different derivation paths for Ledger will be available on MetaMask Mobile soon." + "select_accounts": "Pilih Akun" }, "account_actions": { "edit_name": "Edit nama akun", @@ -3225,7 +3260,7 @@ "title_off": "Nonaktifkan fungsionalitas dasar", "description_off": "Artinya, Anda tidak akan benar-benar mengoptimalkan waktu di MetaMask. Fitur dasar (seperti detail token, pengaturan gas optimal, dan lainnya) tidak akan tersedia untuk Anda.", "title_on": "Aktifkan fungsionalitas dasar", - "description_on": "Untuk mengoptimalkan waktu di MetaMask, Anda perlu mengaktifkan fitur ini. Fungsi dasar (seperti detail token, pengaturan gas optimal, dan lainnya) penting untuk pengalaman web3.", + "description_on": "Untuk mengoptimalkan waktu di MetaMask, Anda perlu mengaktifkan fitur ini. Fungsi dasar (seperti detail token, pengaturan gas optimal, notifikasi, dan lainnya) penting untuk pengalaman web3.", "checkbox_label": "Saya memahami dan ingin melanjutkan", "buttons": { "cancel": "Batal", diff --git a/locales/languages/ja.json b/locales/languages/ja.json index 56038847c18..eb33f046b70 100644 --- a/locales/languages/ja.json +++ b/locales/languages/ja.json @@ -499,11 +499,14 @@ "address": "トークンコントラクトアドレス", "decimal": "トークンの小数桁数", "network": "ネットワーク", + "network_fee": "Network fee", "lists": "トークンリスト", "hide_cta": "トークンを非表示", "options": { + "view_on_portfolio": "View on Portfolio", "view_on_block": "ブロックエクスプローラーで表示", - "token_details": "トークンの詳細" + "token_details": "トークンの詳細", + "remove_token": "Remove token" } }, "activity_view": { @@ -550,6 +553,7 @@ "description_title": "MetaMaskの改善にご協力ください", "description_content_1": "MetaMaskの改善を目的に、基本的な使用状況データを収集したいと思います。ここで提供されるデータが販売されることはありません。", "description_content_2": "指標を収集する際、常に次の条件が適用されます...", + "description_content_3": "Learn how we protect your privacy while collecting usage data for your profile.", "checkbox": "このデータは、ユーザーによる当社のマーケティングコミュニケーションとのインタラクションを把握するために使用されます。また、関連ニュースをお伝えする場合もあります (製品の機能など)。", "action_description_1_prefix": "非公開:", "action_description_2_prefix": "一般:", @@ -600,7 +604,21 @@ "decimals_is_required": "小数点以下の桁数が必要です。確認はこちら:", "no_tokens_found": "その名前のトークンは見つかりませんでした。", "select_token": "トークンを選択", - "address_must_be_smart_contract": "パーソナルアドレスが検出されました。トークンのコントラクトアドレスを入力してください。" + "address_must_be_smart_contract": "パーソナルアドレスが検出されました。トークンのコントラクトアドレスを入力してください。", + "billion_abbreviation": "B", + "trillion_abbreviation": "T", + "million_abbreviation": "M", + "token_details": "Token details", + "contract_address": "Contract address", + "token_list": "Token list", + "market_details": "Market details", + "market_cap": "Market Cap", + "total_volume": "Total Volume (24h)", + "volume_to_marketcap": "Volume / Market Cap", + "circulating_supply": "Circulating supply", + "all_time_high": "All time high", + "all_time_low": "All time low", + "fully_diluted": "Fully diluted" }, "collectible": { "collectible_address": "アドレス", @@ -669,7 +687,10 @@ "address_balance_activity_permission": "アドレス、アカウント残高、アクティビティの表示", "suggest_transactions": "承認するトランザクションの提案", "disconnect": "接続解除", + "disconnect_all": "Disconnect all", + "reconnect_notice": "If you disconnect your accounts from {{dappUrl}}, you’ll need to reconnect to use them again.", "disconnect_all_accounts": "すべてのアカウントの接続を解除", + "disconnect_you_from": "This will disconnect you from {{dappUrl}}", "deceptive_site_ahead": "偽装サイトにアクセスしようとしています", "deceptive_site_desc": "アクセスしようとしているサイトは安全ではありません。攻撃者が危険な行為に誘導しようとする可能性があります。", "learn_more": "詳細", @@ -687,6 +708,7 @@ "accounts_connected": "アカウントが接続されました。", "disconnected": "接続が解除されました。", "disconnected_all": "すべてのアカウントの接続が解除されました。", + "disconnected_from": "Disconnected from {{dappHostName}}", "nft_detection_enabled": "NFTの自動検出が有効になりました" }, "connect_qr_hardware": { @@ -843,6 +865,10 @@ }, "contacts_title": "連絡先", "contacts_desc": "アカウントを追加、編集、削除、管理します", + "permissions_title": "Permissions", + "permissions_desc": "Manage the permissions given to sites and apps", + "no_permissions": "No permissions", + "no_permissions_desc": "If you connect an account to a site or an app, you’ll see it here.", "security_title": "セキュリティとプライバシー", "back": "戻る", "security_desc": "プライバシー設定、MetaMetrics、秘密鍵、ウォレットのシークレットリカバリーフレーズ", @@ -932,6 +958,10 @@ "custom_network_name": "カスタムネットワーク", "popular": "人気", "delete": "削除", + "account": "account", + "accounts": "accounts", + "network": "network", + "networks": "networks", "network_exists": "このネットワークはすでに追加されています。", "unMatched_chain": "According to our records, this URL does not match a known provider for this chain ID.", "unMatched_chain_name": "This chain ID doesn’t match the network name.", @@ -1296,13 +1326,14 @@ "error": "エラー", "attempting_to_scan_with_wallet_locked": "QRコードをスキャンしようとしているようですが、使用するにはウォレットのロックを解除する必要があります。", "attempting_sync_from_wallet_error": "拡張機能と同期しようとしているようですが、これを行うには現在のウォレットを消去する必要があります。\n\n消去してアプリの新しいバージョンを再インストールしたら、「MetaMask拡張機能と同期」オプションを選択してください。ウォレットを消去する前に、必ずシークレットリカバリーフレーズがバックアップされていることを確認してください。", - "not_allowed_error_title": "カメラへのアクセスを有効にしてください", - "not_allowed_error_desc": "アカウントアドレスやコントラクトアドレスに関連したQRコードをスキャンするには、カメラへのアクセスが必要です", + "not_allowed_error_title": "Turn on camera access", + "not_allowed_error_desc": "To scan a QR code, you'll need to give MetaMask camera access from your device's settings menu.", "unrecognized_address_qr_code_title": "認識されないQRコード", "unrecognized_address_qr_code_desc": "申し訳ございませんが、このQRコードはアカウントアドレスまたはコントラクトアドレスに関連付けられていません。", "url_redirection_alert_title": "外部リンクにアクセスしようとしています。", "url_redirection_alert_desc": "リンクは詐欺やフィッシングに利用される場合があるため、信頼できるWebサイトにのみアクセスするようにしてください。", - "label": "QRコードをスキャン" + "label": "QRコードをスキャン", + "open_settings": "Settings" }, "action_view": { "cancel": "キャンセル", @@ -1312,6 +1343,7 @@ "transaction_id": "トランザクションID", "alert": "アラート", "amount": "金額", + "details": "Details", "next": "次へ", "back": "戻る", "confirm": "確定", @@ -1703,6 +1735,10 @@ "network_chain_id": "チェーンID", "network_rpc_url": "ネットワークURL", "network_rpc_url_label": "Network RPC URL", + "new_default_network_url": "New default network URL", + "current_label": "Current", + "new_label": "New", + "review": "Review", "view_details": "詳細を表示", "network_details": "ネットワークの詳細", "network_select_confirm_use_safe_check": "「確定」を選択すると、ネットワーク情報の確認がオンになります。ネットワーク情報の確認は、", @@ -2129,9 +2165,9 @@ "transaction_id_copied_to_clipboard": "トランザクションIDがクリップボードにコピーされました", "activation_card": { "title": "通知をオンにする", - "description_1": "通知を使えば、ウォレットで何が起きているか常に把握できます。", + "description_1": "Stay in the loop on what's happening in your wallet with notifications.", "description_2": "この機能を使うために、アカウントの匿名のIDが生成されます。このIDはMetaMask内のユーザーのデータの同期にのみ使用され、アクティビティや他の識別要素にはリンクされず、プライバシーは確保されます。", - "learn_more": "この機能を使用する際に当社がどのようにユーザーのプライバシーを保護するのか、詳細をご覧ください。", + "learn_more": "Learn how we protect your privacy while using this feature.", "manage_preferences_1": "通知は", "manage_preferences_2": "「設定」>「通知」でいつでもオフにできます。", "cancel": "キャンセル", @@ -2523,7 +2559,8 @@ "sale_completed_title": "注文が完了しました", "sale_completed_description": "注文に成功しました。", "sale_pending_title": "{{currency}}の売却を処理しています", - "sale_pending_description": "ただ今注文を処理しています。" + "sale_pending_description": "ただ今注文を処理しています。", + "no_date": "Unknown" } }, "swaps": { @@ -3150,9 +3187,7 @@ "how_to_install_eth_webview_title": "イーサリアムアプリのインストール方法", "nonce_too_low": "ナンスが低すぎます", "nonce_too_low_error": "設定されたナンスが低すぎます", - "select_accounts": "Select an Account", - "select_accounts_warning": "Note: these accounts might be different to what you're used to.", - "select_accounts_sub_msg": "These accounts are derived using the BIP44 derivation path, which is different to the default Ledger Live derivation path on MetaMask Extension, Different derivation paths for Ledger will be available on MetaMask Mobile soon." + "select_accounts": "Select an Account" }, "account_actions": { "edit_name": "アカウント名を編集", @@ -3225,7 +3260,7 @@ "title_off": "基本機能をオフにする", "description_off": "これは、MetaMaskでの時間が完全に最適化されないことを意味します。基本機能 (トークンの詳細、最適なガス設定など) は利用できません。", "title_on": "基本機能をオンにする", - "description_on": "MetaMaskでの時間を最適化するには、この機能をオンにする必要があります。基本機能 (トークンの詳細、最適なガス設定など) は、Web3エクスペリエンスに重要です。", + "description_on": "To optimize your time on MetaMask, you’ll need to turn on this feature. Basic functions (like token details, optimal gas settings, notifications, and others) are important to the web3 experience.", "checkbox_label": "理解したうえで続行します", "buttons": { "cancel": "キャンセル", diff --git a/locales/languages/ko.json b/locales/languages/ko.json index 359b5ae46ef..d08a0023f18 100644 --- a/locales/languages/ko.json +++ b/locales/languages/ko.json @@ -451,10 +451,10 @@ "use_the_currency_symbol": "통화 심볼 사용", "use_correct_symbol": "계속하기 전에 올바른 심볼을 사용하고 있는지 확인하세요", "chain_id_currently_used": "이 체인 ID는 현재 다음에서 사용됩니다:", - "incorrect_network_name_warning": "According to our records, the network name may not correctly match this chain ID.", - "suggested_name": "Suggested name:", + "incorrect_network_name_warning": "기록에 따르면 네트워크 이름이 이 체인 ID와 일치하지 않습니다.", + "suggested_name": "추천 이름:", "network_check_validation_desc": "악성 또는 잘못된 네트워크에 연결될 가능성이 줄어듭니다.", - "cant_verify_custom_network_warning": "We can’t verify custom networks. To avoid malicious providers from recording your network activity, only add networks you trust.", + "cant_verify_custom_network_warning": "사용자 지정 네트워크는 확인할 수 없습니다. 악의적인 제공업체가 네트워크 활동을 기록하지 못하도록 하려면 신뢰할 수 있는 네트워크만 추가하세요.", "nfts_autodetection_cta": "설정에서 NFT 감지를 켜세요", "learn_more": "더 알아보기", "add_collectibles": "NFT 가져오기", @@ -499,11 +499,14 @@ "address": "토큰 계약 주소", "decimal": "토큰 십진수", "network": "네트워크", + "network_fee": "Network fee", "lists": "토큰 목록", "hide_cta": "토큰 숨기기", "options": { + "view_on_portfolio": "Portfolio에서 보기", "view_on_block": "블록 탐색기에서 보기", - "token_details": "토큰 상세 정보" + "token_details": "토큰 상세 정보", + "remove_token": "토큰 제거" } }, "activity_view": { @@ -550,6 +553,7 @@ "description_title": "MetaMask 개선에 도움을 주세요", "description_content_1": "MetaMask를 개선하기 위해 기본적인 데이터 사용 데이터를 수집하고자 합니다. MetaMask는 제공받은 데이터를 절대 판매하지 않습니다.", "description_content_2": "메트릭을 수집할 때는 항상...", + "description_content_3": "프로필 사용 데이터를 수집하는 동안 개인정보 보호 방법을 알아보세요.", "checkbox": "당사는 이 데이터를 사용하여 사용자가 마케팅 커뮤니케이션과 어떻게 상호 작용하는지 파악합니다. 관련 뉴스(예: 제품 기능)를 공유할 수 있습니다.", "action_description_1_prefix": "개인 정보:", "action_description_2_prefix": "일반:", @@ -600,7 +604,21 @@ "decimals_is_required": "십진수가 필요합니다. 다음에서 찾을 수 있습니다.", "no_tokens_found": "해당 이름의 토큰을 찾을 수 없습니다.", "select_token": "토큰을 선택하세요", - "address_must_be_smart_contract": "개인 주소가 탐지되었습니다. 토큰 트랜잭션 주소를 입력하세요." + "address_must_be_smart_contract": "개인 주소가 탐지되었습니다. 토큰 트랜잭션 주소를 입력하세요.", + "billion_abbreviation": "B", + "trillion_abbreviation": "T", + "million_abbreviation": "M", + "token_details": "토큰 상세 정보", + "contract_address": "계약 주소", + "token_list": "토큰 목록", + "market_details": "시장 상세 정보", + "market_cap": "시가 총액", + "total_volume": "총 거래량(24시간)", + "volume_to_marketcap": "거래량 / 시가총액", + "circulating_supply": "순환 공급", + "all_time_high": "역대 최고", + "all_time_low": "역대 최저", + "fully_diluted": "완전히 희석됨" }, "collectible": { "collectible_address": "주소", @@ -650,10 +668,10 @@ "accounts_title": "계정", "connect_account_title": "계정 연결", "connect_accounts_title": "계정 연결", - "edit_accounts_title": "Edit accounts", + "edit_accounts_title": "계정 편집", "connected_accounts_title": "연결된 계정", "connect_description": "계정 주소와 잔액 및 활동을 공유하고 사이트가 결제를 진행하도록 허용하세요.", - "select_accounts_description": "Select the account(s) to use on this site:", + "select_accounts_description": "이 사이트에서 사용할 계정을 선택하세요:", "connect_multiple_accounts": "여러 계정 연결", "connect_more_accounts": "더 많은 계정 연결", "cancel": "취소", @@ -669,7 +687,10 @@ "address_balance_activity_permission": "주소, 계정 잔액, 활동 보기", "suggest_transactions": "승인할 트랜잭션 추천", "disconnect": "연결 해제", + "disconnect_all": "모두 연결 해제", + "reconnect_notice": "{{dappUrl}}에서 계정의 연결을 끊은 경우, 다시 사용하려면 다시 연결해야 합니다.", "disconnect_all_accounts": "모든 계정 연결 해제", + "disconnect_you_from": "이렇게 하면 {{dappUrl}}에서의 연결이 해제됩니다", "deceptive_site_ahead": "의심스러운 사이트 주의", "deceptive_site_desc": "방문하려는 사이트가 안전하지 않습니다. 공격자가 위험한 작업을 하도록 유도할 수 있습니다.", "learn_more": "자세히 알아보기", @@ -687,6 +708,7 @@ "accounts_connected": "계정이 연결되었습니다.", "disconnected": "연결 해제됨", "disconnected_all": "모든 계정 연결 해제됨", + "disconnected_from": "{{dappHostName}}(으)로부터 연결 해제", "nft_detection_enabled": "NFT 자동 감지 켜짐" }, "connect_qr_hardware": { @@ -695,15 +717,15 @@ "description2": "작동 원리", "description3": "공식적으로 지원되는 에어갭 하드웨어 지갑은 다음과 같습니다.", "keystone": "키스톤", - "ngravezero": "Ngrave Zero", + "ngravezero": "N그레이브 제로", "learnMore": "자세히 알아보기", - "buyNow": "Buy now", + "buyNow": "지금 매수", "tutorial": "튜토리얼", "description4": "Keystone(튜토리얼)", "description5": "1. 키스톤 잠금 해제", "description6": "2. ··· 메뉴를 누른 후 동기화로 이동", "button_continue": "계속", - "hint_text": "Scan your hardware wallet to ", + "hint_text": "하드웨어 지갑을 스캔하여 ", "purpose_connect": "연결", "purpose_sign": "트랜잭션 컨펌", "select_accounts": "계정 선택" @@ -724,7 +746,7 @@ "enabling_profile_sync": "프로필 동기화 활성화 중...", "disabling_profile_sync": "프로필 동기화 비활성화 중...", "notifications_dismiss_modal": "해지", - "select_rpc_url": "Select RPC URL", + "select_rpc_url": "RPC URL을 선택하세요", "title": "설정", "current_conversion": "기준 통화", "current_language": "현재 언어", @@ -824,7 +846,7 @@ "notifications_title": "알림", "notifications_desc": "알림 관리", "allow_notifications": "알림 허용", - "allow_notifications_desc": "Stay in the loop on what’s happening in your wallet with notifications. To use notifications, we use a profile to sync some settings across your devices.", + "allow_notifications_desc": "알림을 통해 지갑에서 무슨 일이 일어나고 있는지 계속 확인하세요. 알림 기능을 사용하려면 프로필을 사용해 기기 간에 일부 설정을 동기화해야 합니다.", "notifications_opts": { "customize_session_title": "알림 맞춤 설정", "customize_session_desc": "수신하려는 알림 유형 켜기:", @@ -843,6 +865,10 @@ }, "contacts_title": "연락처", "contacts_desc": "계정 추가, 편집, 제거 및 관리", + "permissions_title": "권한", + "permissions_desc": "사이트 및 앱에 부여된 권한 관리", + "no_permissions": "권한 없음", + "no_permissions_desc": "계정을 사이트나 앱에 연결하면 여기에 표시됩니다.", "security_title": "보안 & 개인정보 보호", "back": "뒤로", "security_desc": "개인정보 설정, 메타 매트릭스, 개인 키 및 지갑 비밀복구구문", @@ -932,14 +958,18 @@ "custom_network_name": "사용자 정의 네트워크", "popular": "인기", "delete": "삭제", + "account": "계정", + "accounts": "계정", + "network": "네트워크", + "networks": "네트워크", "network_exists": "이 네트워크는 이미 추가되었습니다.", - "unMatched_chain": "According to our records, this URL does not match a known provider for this chain ID.", - "unMatched_chain_name": "This chain ID doesn’t match the network name.", - "url_associated_to_another_chain_id": "This URL is associated with another chain ID.", - "chain_id_associated_with_another_network": "The information you have entered is associated with an existing chain ID. Update your information or", - "network_already_exist": "You already have a network with the same chain ID or RPC URL. Enter a new chain ID or RPC URL", - "edit_original_network": "edit the original network", - "find_the_right_one": "Find the right one on:", + "unMatched_chain": "기록에 따르면 이 URL은 이 체인 ID의 알려진 제공업체와 일치하지 않습니다.", + "unMatched_chain_name": "이 체인 ID는 네트워크 이름과 일치하지 않습니다.", + "url_associated_to_another_chain_id": "이 URL은 다른 체인 ID와 연결되어 있습니다.", + "chain_id_associated_with_another_network": "입력한 정보는 기존 체인 ID와 연결되어 있습니다. 정보를 업데이트하거나", + "network_already_exist": "이미 체인 ID 또는 RPC URL이 같은 네트워크가 있습니다. 새 체인 ID 또는 RPC URL을 입력하세요.", + "edit_original_network": "원본 네트워크 편집", + "find_the_right_one": "다음에서 적합한 것을 찾아보세요.", "delete_metrics_title": "MetaMetrics 데이터 삭제", "delete_metrics_description_part_one": "이렇게 하면 기록이 삭제됩니다", "delete_metrics_description_part_two": "MetaMetrics", @@ -1169,7 +1199,7 @@ "text": "텍스트", "qr_code": "QR 코드", "hold_to_reveal_credential": "눌러서 {{credentialName}} 정보를 확인하세요", - "reveal_credential": "Reveal {{credentialName}}", + "reveal_credential": "{{credentialName}} 공개", "keep_credential_safe": "{{credentialName}} 정보를 안전하게 보관하세요", "srp_abbreviation_text": "SRP", "srp_text": "비밀복구구문", @@ -1296,13 +1326,14 @@ "error": "오류", "attempting_to_scan_with_wallet_locked": "QR 코드를 스캔하시는 것 같습니다. 먼저 지갑을 잠금 해제하세요.", "attempting_sync_from_wallet_error": "확장 프로그램과의 동기화를 시도하시는 것 같습니다. 이를 위해서는 현재 지갑을 지워야 합니다. \n\n 신규 버전 앱을 지우거나 재설치하고 나면 \"MetaMask 확장 프로그램과 동기화\" 옵션을 선택하세요. 중요!: 지갑을 지우기 전에 비밀복구구문을 반드시 백업하세요.", - "not_allowed_error_title": "카메라 접근 허용", - "not_allowed_error_desc": "계정 주소나 연락처 주소와 연동된 QR 코드를 스캔하려면 카메라 접근을 허용해야 합니다", + "not_allowed_error_title": "카메라 접근 권한 허용", + "not_allowed_error_desc": "QR 코드를 스캔하려면 기기 설정 메뉴에서 MetaMask에 카메라 접근 권한을 허용해야 합니다.", "unrecognized_address_qr_code_title": "읽을 수 없는 QR 코드", "unrecognized_address_qr_code_desc": "죄송합니다. 이 QR 코드는 계정 주소나 연락처 주소와 연계되어 있지 않습니다.", "url_redirection_alert_title": "이제 외부 링크로 이동합니다.", "url_redirection_alert_desc": "링크는 피싱이나 사기에 도용될 수 있습니다. 신뢰할 수 있는 웹사이트만 방문하시기 바랍니다.", - "label": "QR 코드 스캔" + "label": "QR 코드 스캔", + "open_settings": "설정" }, "action_view": { "cancel": "취소", @@ -1312,6 +1343,7 @@ "transaction_id": "트랜잭션 ID", "alert": "경고", "amount": "금액", + "details": "Details", "next": "다음", "back": "뒤로", "confirm": "컨펌", @@ -1320,7 +1352,7 @@ "cancel": "취소", "save": "저장", "speedup": "속도 향상", - "sign_with_keystone": "Sign with hardware wallet", + "sign_with_keystone": "하드웨어 지갑으로 서명", "sign_with_ledger": "Ledger로 로그인", "from": "보내는 사람", "gas_fee": "가스비", @@ -1394,7 +1426,7 @@ "token_id": "토큰 ID", "not_enough_for_gas": "트랜잭션 수수료 지불이 필요한 {{ticker}} 0건 있습니다. 추가로 {{ticker}}(을)를 구매하거나 다른 계정에 예금하세요.", "send": "보내기", - "confirm_with_qr_hardware": "Confirm with hardware wallet", + "confirm_with_qr_hardware": "하드웨어 지갑으로 컨펌", "confirm_with_ledger_hardware": "Ledger로 확인", "confirmed": "컨펌", "pending": "대기 중", @@ -1427,7 +1459,7 @@ "no_camera_permission": "카메라가 허용되지 않았습니다. 권한 허용 후 다시 시도하세요.", "invalid_qr_code_sign": "잘못된 QR 코드입니다. 하드웨어를 확인하고 다시 시도하세요.", "no_camera_permission_android": "진행하려면 MetaMask에서 카메라를 허용해야 합니다. 시스템 설정을 변경해야 할 수도 있습니다.", - "mismatched_qr_request_id": "Incongruent transaction data. Please use your hardware wallet to sign the QR code below and tap 'Get Signature'.", + "mismatched_qr_request_id": "일치하지 않는 트랜잭션 데이터입니다. 하드웨어 지갑으로 아래의 QR 코드에 서명하고 '서명받기'를 누르세요.", "fiat_conversion_not_available": "현재 명목 화폐 환율을 사용할 수 없습니다.", "hex_data_copied": "헥스 데이터를 클립보드에 복사했습니다", "invalid_recipient": "잘못된 수신자", @@ -1628,8 +1660,8 @@ "import_wallet_label": "추가된 계정", "import_wallet_tip": "이 기기에서 진행된 모든 향후 트랜잭션에는 \"이 기기에서 진행\"이라는 라벨이 타임스탬프 옆에 추가됩니다. 계정이 추가되기 전 날짜에 발생한 트랜잭션에 대해서는 기록에 어떤 트랜잭션이 이 기기에서 진행되었는지 표시되지 않습니다.", "sign_title_scan": "스캔 ", - "sign_title_device": "with your hardware wallet", - "sign_description_1": "After you have signed with your hardware wallet,", + "sign_title_device": "하드웨어 지갑으로", + "sign_description_1": "하드웨어 지갑으로 서명한 후,", "sign_description_2": "서명 받기를 누르세요", "sign_get_signature": "서명 받기", "network_fee": "네트워크 수수료" @@ -1702,7 +1734,11 @@ "network_display_name": "이름 표시", "network_chain_id": "체인 ID", "network_rpc_url": "네트워크 URL", - "network_rpc_url_label": "Network RPC URL", + "network_rpc_url_label": "네트워크 RPC URL", + "new_default_network_url": "새 기본 네트워크 URL", + "current_label": "현재", + "new_label": "신규", + "review": "검토", "view_details": "세부 정보 보기", "network_details": "네트워크 세부 정보", "network_select_confirm_use_safe_check": "확인을 선택하면 네트워크 세부 정보 확인이 켜집니다. 다음에서 네트워크 세부 정보 확인을 끌 수 있습니다 : ", @@ -1735,7 +1771,7 @@ "add_other_network_here": "여기에서 확인하세요.", "you_can": "또는 다음을 확인하세요:", "add_network": "네트워크를 직접 추가할 수도 있습니다.", - "add_specific_network": "Add {{network_name}}", + "add_specific_network": "{{network_name}} 추가", "select_network": "네트워크 선택", "enabled_networks": "활성화된 네트워크", "additional_networks": "추가 네트워크", @@ -2010,7 +2046,7 @@ "staked": "스테이킹됨", "received": "받음", "unstaked": "언스테이킹됨", - "mark_all_as_read": "Mark all as read", + "mark_all_as_read": "모두 읽음으로 표시", "to": "수신:", "rate": "환율(수수료 포함)", "unstaking_requested": "언스테이킹 요청 완료", @@ -2023,7 +2059,7 @@ "swap": "스왑됨", "sent": "{{address}}(으)로 보냄", "menu_item_title": { - "metamask_swap_completed": "Swapped {{symbolIn}} for {{symbolOut}}", + "metamask_swap_completed": "{{symbolIn}}을(를) {{symbolOut}}(으)로 스왑함", "erc20_sent": "{{address}}(으)로 보냄", "erc20_received": "{{address}}에서 받음", "eth_sent": "{{address}}(으)로 보냄", @@ -2050,7 +2086,7 @@ "title_untake_ready": "인출 준비 완료", "title_stake": "{{symbol}} 스테이킹 완료", "title_unstake_completed": "언스테이킹 완료됨", - "title_swapped": "Swapped {{symbolIn}} to {{symbolOut}}", + "title_swapped": "{{symbolIn}}을(를) {{symbolOut}}(으)로 스왑함", "label_address_to": "수신:", "label_address_from": "발신:", "label_address_to_you": "받음(나)", @@ -2129,9 +2165,9 @@ "transaction_id_copied_to_clipboard": "트랜잭션 ID를 클립보드에 복사했습니다", "activation_card": { "title": "알림 켜기", - "description_1": "알림을 통해 지갑에서 무슨 일이 일어나고 있는지 계속 확인하세요. ", + "description_1": "알림을 통해 지갑에서 무슨 일이 일어나고 있는지 계속 확인하세요.", "description_2": "이 기능 사용을 위해 계정에 대한 익명 ID가 생성됩니다. 이는 MetaMask에서 데이터를 동기화하는 데에만 사용되며 활동이나 기타 식별자와 링크되지 않으므로 개인정보가 보호됩니다.", - "learn_more": "이 기능을 사용하는 동안 개인정보가 어떻게 보호되는지 알아보세요. ", + "learn_more": "이 기능을 사용하는 동안 개인정보가 어떻게 보호되는지 알아보세요.", "manage_preferences_1": "다음에서 언제든지 알림을 끌 수 있습니다: ", "manage_preferences_2": "설정 > 알림", "cancel": "취소", @@ -2523,7 +2559,8 @@ "sale_completed_title": "주문 완료", "sale_completed_description": "주문에 성공했습니다!", "sale_pending_title": "{{currency}} 매도 처리 중", - "sale_pending_description": "주문이 처리 중입니다." + "sale_pending_description": "주문이 처리 중입니다.", + "no_date": "알 수 없음" } }, "swaps": { @@ -2782,14 +2819,14 @@ }, "switch_custom_network": { "title_existing_network": "이 사이트는 네트워크 전환을 원합니다", - "title_enabled_network": "This site wants to:", + "title_enabled_network": "이 사이트에서 요청하는 사항:", "title_new_network": "신규 네트워크 추가됨", "switch_warning": "이는 MetaMask에서 선택한 네트워크를 이전에 추가한 다음 네트워크로 전환하게 됩니다:", - "use_enabled_networks": "Use your enabled networks", - "wants_to_see_your_accounts": "See your accounts and suggest transactions", - "requesting_for": "Requesting for ", - "edit": "Edit", - "add_network_and_give_dapp_permission_warning": "You're adding this network to MetaMask and giving {{dapp_origin}} permission to use it.", + "use_enabled_networks": "활성화된 네트워크 사용", + "wants_to_see_your_accounts": "계정 보기 및 거래 제안", + "requesting_for": "다음을 요청: ", + "edit": "편집", + "add_network_and_give_dapp_permission_warning": "MetaMask에 이 네트워크를 추가하고 {{dapp_origin}}에 사용 권한을 허용합니다.", "available": "이것은 이제 네트워크 선택자 내에서 이용 가능합니다.", "cancel": "취소", "switch": "네트워크 변경" @@ -3113,8 +3150,8 @@ "cannot_get_account": "계정 연결 실패", "connect_ledger": "Ledger 연결", "looking_for_device": "기기 찾는 중", - "ledger_reminder_message": "Please make sure your Ledger device is:", - "ledger_reminder_message_step_one": "1. Unlock your Ledger device", + "ledger_reminder_message": "Ledger 장치가 다음과 같은 상태인지 확인하세요.", + "ledger_reminder_message_step_one": "1. Ledger 장치를 잠금 해제하세요", "ledger_reminder_message_step_two": "2. 이더리움 앱을 설치하고 실행하세요", "ledger_reminder_message_step_three": "3. 블루투스를 켜세요", "ledger_reminder_message_step_four": "4. 정확한 위치 사용으로 위치 권한이 활성화되었습니다", @@ -3123,7 +3160,7 @@ "available_devices": "이용 가능한 기기", "retry": "재시도", "continue": "계속", - "confirm_transaction_on_ledger": "Confirm transaction on your Ledger", + "confirm_transaction_on_ledger": "Ledger에서 거래를 확인하세요", "bluetooth_enabled_message": "블루투스가 활성화된 상태인지 확인하세요", "device_unlocked_message": "기기가 잠금해제 되었습니다", "ledger_disconnected": "기기의 연결이 해제되었습니다", @@ -3146,13 +3183,11 @@ "not_supported": "지원되지 않는 지역입니다", "not_supported_error": "입력한 데이터의 버전 4만 지원됩니다.", "error_during_connection": "알 수 없는 오류가 발생했습니다", - "error_during_connection_message": "There's been a slight problem connecting your Ledger device, tap 'Retry' below to give this another go. Sometimes this occurs due to the ETH app on your Ledger device being open at the start of the pairing process with MetaMask Mobile.", + "error_during_connection_message": "Ledger 장치를 연결하는 데 약간의 문제가 발생했습니다. 다시 시도하려면 아래의 '재시도'를 탭하세요. 이는 가끔 MetaMask 모바일을 페어링할 때 Ledger 장치에서 ETH 앱이 열려 있기 때문에 발생합니다.", "how_to_install_eth_webview_title": "이더리움 앱 설치 방법", "nonce_too_low": "논스가 너무 낮습니다", "nonce_too_low_error": "설정한 논스가 너무 낮습니다", - "select_accounts": "Select an Account", - "select_accounts_warning": "Note: these accounts might be different to what you're used to.", - "select_accounts_sub_msg": "These accounts are derived using the BIP44 derivation path, which is different to the default Ledger Live derivation path on MetaMask Extension, Different derivation paths for Ledger will be available on MetaMask Mobile soon." + "select_accounts": "계정 선택" }, "account_actions": { "edit_name": "계정 이름 편집", @@ -3225,7 +3260,7 @@ "title_off": "기본 기능 끄기", "description_off": "이렇게 하면 MetaMask에서 시간을 완전히 최적화할 수 없습니다. 기본 기능(토큰 세부 정보, 최적의 가스 설정 등)을 사용할 수 없게 됩니다.", "title_on": "기본 기능 켜기", - "description_on": "MetaMask에서 시간을 최적화하려면 이 기능을 켜야 합니다. 기본 기능(토큰 세부 정보, 최적의 가스 설정 등)은 웹3 경험에 중요한 요소입니다.", + "description_on": "MetaMask에서 시간을 최적화하려면 이 기능을 켜야 합니다. 기본 기능(토큰 세부 정보, 최적의 가스 설정, 알림 등)은 웹3 경험에 중요한 요소입니다.", "checkbox_label": "이해했습니다. 계속 진행하겠습니다", "buttons": { "cancel": "취소", diff --git a/locales/languages/pt.json b/locales/languages/pt.json index e36c5f0004e..69dae79b639 100644 --- a/locales/languages/pt.json +++ b/locales/languages/pt.json @@ -451,10 +451,10 @@ "use_the_currency_symbol": "usa o símbolo de moeda", "use_correct_symbol": "Certifique-se de usar o símbolo correto antes de continuar", "chain_id_currently_used": "Esta ID de cadeia está sendo usada pela", - "incorrect_network_name_warning": "According to our records, the network name may not correctly match this chain ID.", - "suggested_name": "Suggested name:", + "incorrect_network_name_warning": "De acordo com os nossos registros, o nome da rede pode não corresponder a este ID de cadeia.", + "suggested_name": "Nome sugerido:", "network_check_validation_desc": "reduz suas chances de se conectar a uma rede mal-intencionada ou incorreta.", - "cant_verify_custom_network_warning": "We can’t verify custom networks. To avoid malicious providers from recording your network activity, only add networks you trust.", + "cant_verify_custom_network_warning": "Não conseguimos verificar redes personalizadas. Para evitar que provedores mal-intencionados registrem sua atividade de rede, adicione apenas redes da sua confiança.", "nfts_autodetection_cta": "Ative a detecção de NFTs nas Configurações", "learn_more": "Saiba mais", "add_collectibles": "Importar NFTs", @@ -499,11 +499,14 @@ "address": "Endereço de contrato do token", "decimal": "Decimal do token", "network": "Rede", + "network_fee": "Network fee", "lists": "Listas de tokens", "hide_cta": "Ocultar token", "options": { + "view_on_portfolio": "Ver no Portfolio", "view_on_block": "Ver no explorador de blocos", - "token_details": "Detalhes do token" + "token_details": "Detalhes do token", + "remove_token": "Remover token" } }, "activity_view": { @@ -550,6 +553,7 @@ "description_title": "Ajude a melhorar a MetaMask", "description_content_1": "Gostaríamos de coletar dados básicos de uso para melhorar a MetaMask. Saiba que nunca vendemos os dados que você fornece aqui.", "description_content_2": "Quando coletamos as métricas, elas sempre são...", + "description_content_3": "Saiba como protegemos sua privacidade durante a coleta de dados de uso relacionados ao seu perfil.", "checkbox": "Usaremos esses dados para saber como você interage com nossas comunicações de marketing. Podemos compartilhar novidades relevantes (como recursos de produtos).", "action_description_1_prefix": "Privadas:", "action_description_2_prefix": "Gerais:", @@ -600,7 +604,21 @@ "decimals_is_required": "O decimal é obrigatório. Encontre-o em:", "no_tokens_found": "Não encontramos nenhum token com esse nome.", "select_token": "Selecionar token", - "address_must_be_smart_contract": "Endereço pessoal detectado. Insira o endereço do contrato do token." + "address_must_be_smart_contract": "Endereço pessoal detectado. Insira o endereço do contrato do token.", + "billion_abbreviation": "B", + "trillion_abbreviation": "T", + "million_abbreviation": "M", + "token_details": "Detalhes do token", + "contract_address": "Endereço do contrato", + "token_list": "Lista de tokens", + "market_details": "Detalhes do mercado", + "market_cap": "Capitalização de mercado", + "total_volume": "Volume total (24h)", + "volume_to_marketcap": "Volume / Capitalização de mercado", + "circulating_supply": "Suprimento em circulação", + "all_time_high": "Alta histórica", + "all_time_low": "Baixa histórica", + "fully_diluted": "Totalmente diluído" }, "collectible": { "collectible_address": "Endereço", @@ -650,10 +668,10 @@ "accounts_title": "Contas", "connect_account_title": "Conectar conta", "connect_accounts_title": "Conectar contas", - "edit_accounts_title": "Edit accounts", + "edit_accounts_title": "Editar contas", "connected_accounts_title": "Contas conectadas", "connect_description": "Compartilhe o endereço, saldo e atividades da sua conta, e permita que o site inicie transações.", - "select_accounts_description": "Select the account(s) to use on this site:", + "select_accounts_description": "Selecione as contas para usar nesse site:", "connect_multiple_accounts": "Conectar múltiplas contas", "connect_more_accounts": "Conectar mais contas", "cancel": "Cancelar", @@ -669,7 +687,10 @@ "address_balance_activity_permission": "Visualizar endereço, saldo em conta e atividade", "suggest_transactions": "Sugerir transações para aprovar", "disconnect": "Desconectar", + "disconnect_all": "Desconectar todas", + "reconnect_notice": "Se você desconectar suas contas do {{dappUrl}}, precisará reconectar para usá-las novamente.", "disconnect_all_accounts": "Desconectar todas as contas", + "disconnect_you_from": "Isso desconectará você do {{dappUrl}}", "deceptive_site_ahead": "Site enganoso à vista", "deceptive_site_desc": "O site que você está tentando visitar não é seguro. Invasores podem induzir você a fazer algo perigoso por engano.", "learn_more": "Saiba mais", @@ -687,6 +708,7 @@ "accounts_connected": "contas conectadas.", "disconnected": "desconectada.", "disconnected_all": "Todas as contas estão desconectadas.", + "disconnected_from": "Desconectado do {{dappHostName}}", "nft_detection_enabled": "Detecção automática de NFT ativada" }, "connect_qr_hardware": { @@ -697,13 +719,13 @@ "keystone": "Keystone", "ngravezero": "Ngrave Zero", "learnMore": "Saiba mais", - "buyNow": "Buy now", + "buyNow": "Comprar agora", "tutorial": "Tutorial", "description4": "Keystone (tutorial)", "description5": "1. Desbloqueie sua Keystone", "description6": "2. Toque no Menu ···, depois vá até Sincronizar", "button_continue": "Continuar", - "hint_text": "Scan your hardware wallet to ", + "hint_text": "Escaneie sua carteira de hardware para", "purpose_connect": "conectar", "purpose_sign": "confirmar a transação", "select_accounts": "Selecione uma conta" @@ -724,7 +746,7 @@ "enabling_profile_sync": "Ativando sincronização de perfil...", "disabling_profile_sync": "Desativando sincronização de perfil...", "notifications_dismiss_modal": "Ignorar", - "select_rpc_url": "Select RPC URL", + "select_rpc_url": "Selecionar URL da RPC", "title": "Configurações", "current_conversion": "Moeda base", "current_language": "Idioma atual", @@ -824,7 +846,7 @@ "notifications_title": "Notificações", "notifications_desc": "Gerencie suas notificações", "allow_notifications": "Permitir notificações", - "allow_notifications_desc": "Stay in the loop on what’s happening in your wallet with notifications. To use notifications, we use a profile to sync some settings across your devices.", + "allow_notifications_desc": "Fique por dentro do que acontece na sua carteira com as notificações. Para fazer isso, usamos um perfil para sincronizar algumas configurações entre seus dispositivos.", "notifications_opts": { "customize_session_title": "Personalize suas notificações", "customize_session_desc": "Ative os tipos de notificações que você deseja receber:", @@ -843,6 +865,10 @@ }, "contacts_title": "Contatos", "contacts_desc": "Adicione, edite, remova e gerencie suas contas", + "permissions_title": "Permissões", + "permissions_desc": "Gerencie as permissões dadas aos sites e apps", + "no_permissions": "Nenhuma permissão", + "no_permissions_desc": "Se você conectar uma conta a um site ou app, poderá vê-los aqui.", "security_title": "Segurança e Privacidade", "back": "Voltar", "security_desc": "Configurações de privacidade, MetaMetrics, chave privada e Frase de Recuperação Secreta da carteira", @@ -932,14 +958,18 @@ "custom_network_name": "Redes personalizadas", "popular": "Populares", "delete": "Excluir", + "account": "conta", + "accounts": "contas", + "network": "rede", + "networks": "redes", "network_exists": "Essa rede já foi adicionada.", - "unMatched_chain": "According to our records, this URL does not match a known provider for this chain ID.", - "unMatched_chain_name": "This chain ID doesn’t match the network name.", - "url_associated_to_another_chain_id": "This URL is associated with another chain ID.", - "chain_id_associated_with_another_network": "The information you have entered is associated with an existing chain ID. Update your information or", - "network_already_exist": "You already have a network with the same chain ID or RPC URL. Enter a new chain ID or RPC URL", - "edit_original_network": "edit the original network", - "find_the_right_one": "Find the right one on:", + "unMatched_chain": "De acordo com nossos registros, este URL não corresponde a um provedor conhecido para esta ID de cadeia.", + "unMatched_chain_name": "Este ID de cadeia não corresponde ao nome da rede.", + "url_associated_to_another_chain_id": "Este URL está associado a outro ID de cadeia.", + "chain_id_associated_with_another_network": "As informações que você inseriu estão associadas a um ID de cadeia existente. Atualize suas informações ou", + "network_already_exist": "Você já tem uma rede com o mesmo ID de cadeia ou URL da RPC. Insira um novo ID de cadeia ou URL da RPC", + "edit_original_network": "editar a rede original", + "find_the_right_one": "Procure a opção correta em:", "delete_metrics_title": "Excluir dados do MetaMetrics", "delete_metrics_description_part_one": "Isso excluirá os dados históricos de", "delete_metrics_description_part_two": "MetaMetrics", @@ -1169,7 +1199,7 @@ "text": "TEXTO", "qr_code": "CÓDIGO QR", "hold_to_reveal_credential": "Mantenha pressionado para revelar {{credentialName}}", - "reveal_credential": "Reveal {{credentialName}}", + "reveal_credential": "Revelar {{credentialName}}", "keep_credential_safe": "Mantenha sua {{credentialName}} protegida", "srp_abbreviation_text": "FRS", "srp_text": "Frase de Recuperação Secreta", @@ -1296,13 +1326,14 @@ "error": "Erro", "attempting_to_scan_with_wallet_locked": "Parece que você está tentando ler um código QR. Você precisa desbloquear sua carteira para poder usá-lo.", "attempting_sync_from_wallet_error": "Parece que você está tentando sincronizar com a extensão. Para isso, você precisará apagar sua carteira atual. \n\nDepois de apagar ou reinstalar uma nova versão do app, selecione a opção \"Sincronizar com a extensão da MetaMask\". Importante: antes de apagar sua carteira, certifique-se de ter guardado sua Frase de Recuperação Secreta.", - "not_allowed_error_title": "Habilitar acesso à câmera", - "not_allowed_error_desc": "O acesso à câmera é necessário para ler o código QR associado a um endereço de conta ou endereço de contrato", + "not_allowed_error_title": "Ativar acesso à câmera", + "not_allowed_error_desc": "Para escanear um código QR, a MetaMask precisa ter acesso à câmera. Ative essa permissão através do menu de configurações do seu dispositivo.", "unrecognized_address_qr_code_title": "Código QR não reconhecido", "unrecognized_address_qr_code_desc": "Desculpe, esse código QR não está associado a um endereço de conta ou de contrato.", "url_redirection_alert_title": "Você está sendo direcionado a um link externo", "url_redirection_alert_desc": "Links podem ser usados para tentar aplicar golpes ou phishing nas pessoas. Portanto, certifique-se de só visitar sites em que você confia.", - "label": "Ler um código QR" + "label": "Ler um código QR", + "open_settings": "Configurações" }, "action_view": { "cancel": "Cancelar", @@ -1312,6 +1343,7 @@ "transaction_id": "ID da transação", "alert": "ALERTA", "amount": "Valor", + "details": "Details", "next": "Avançar", "back": "Voltar", "confirm": "Confirmar", @@ -1320,7 +1352,7 @@ "cancel": "Cancelar", "save": "Salvar", "speedup": "Acelerar", - "sign_with_keystone": "Sign with hardware wallet", + "sign_with_keystone": "Assinar com carteira de hardware", "sign_with_ledger": "Assinar com o Ledger", "from": "De", "gas_fee": "Taxa de gás", @@ -1394,7 +1426,7 @@ "token_id": "ID do token", "not_enough_for_gas": "Você tem 0 {{ticker}} na sua conta para pagar as taxas de transação. Compre {{ticker}} ou deposite de outra conta.", "send": "Enviar", - "confirm_with_qr_hardware": "Confirm with hardware wallet", + "confirm_with_qr_hardware": "Confirmar com carteira de hardware", "confirm_with_ledger_hardware": "Confirmar com o Ledger", "confirmed": "Confirmada", "pending": "Pendente", @@ -1427,7 +1459,7 @@ "no_camera_permission": "Câmera não autorizada. Por favor, dê permissão e tente novamente", "invalid_qr_code_sign": "Código QR inválido. Verifique seu hardware e tente novamente.", "no_camera_permission_android": "A MetaMask deve ser autorizada a acessar sua câmera para continuar. Também pode ser necessário alterar as configurações do seu sistema.", - "mismatched_qr_request_id": "Incongruent transaction data. Please use your hardware wallet to sign the QR code below and tap 'Get Signature'.", + "mismatched_qr_request_id": "Dados de transação incongruentes. Use sua carteira de hardware para assinar o código QR abaixo e toque em \"Obter assinatura\".", "fiat_conversion_not_available": "Conversões de moeda fiduciária não estão disponíveis no momento", "hex_data_copied": "Dados hexa copiados para a área de transferência", "invalid_recipient": "Destinatário inválido", @@ -1628,8 +1660,8 @@ "import_wallet_label": "Conta adicionada", "import_wallet_tip": "Todas as transações futuras feitas neste dispositivo incluirão o rótulo \"neste dispositivo\" ao lado do carimbo de data/hora. Para transações feitas antes da inclusão da conta, o histórico não indicará quais transações de saída se originaram neste dispositivo.", "sign_title_scan": "Faça a leitura ", - "sign_title_device": "with your hardware wallet", - "sign_description_1": "After you have signed with your hardware wallet,", + "sign_title_device": "com sua carteira de hardware", + "sign_description_1": "Depois de assinar com sua carteira de hardware,", "sign_description_2": "toque em Obter assinatura", "sign_get_signature": "Obter assinatura", "network_fee": "Taxa de rede" @@ -1702,7 +1734,11 @@ "network_display_name": "Nome de exibição", "network_chain_id": "ID da cadeia", "network_rpc_url": "URL da rede", - "network_rpc_url_label": "Network RPC URL", + "network_rpc_url_label": "URL da RPC da rede", + "new_default_network_url": "URL da nova rede padrão", + "current_label": "Atual", + "new_label": "Nova", + "review": "Revisar", "view_details": "Ver detalhes", "network_details": "Detalhes da rede", "network_select_confirm_use_safe_check": "Ao selecionar \"confirmar\", a verificação de dados da rede é ativada. Você pode desativar a verificação de dados da rede em ", @@ -1735,7 +1771,7 @@ "add_other_network_here": "aqui.", "you_can": "Ou você pode", "add_network": "adicionar mais redes manualmente.", - "add_specific_network": "Add {{network_name}}", + "add_specific_network": "Adicionar {{network_name}}", "select_network": "Selecione uma rede", "enabled_networks": "Redes habilitadas", "additional_networks": "Redes adicionais", @@ -2010,7 +2046,7 @@ "staked": "Em staking", "received": "Recebido", "unstaked": "Retirado de staking", - "mark_all_as_read": "Mark all as read", + "mark_all_as_read": "Marcar todas como lidas", "to": "Para", "rate": "Cotação (taxas incluídas)", "unstaking_requested": "Retirada de staking solicitada", @@ -2023,7 +2059,7 @@ "swap": "Trocado", "sent": "Enviou para {{address}}", "menu_item_title": { - "metamask_swap_completed": "Swapped {{symbolIn}} for {{symbolOut}}", + "metamask_swap_completed": "Trocou {{symbolIn}} por {{symbolOut}}", "erc20_sent": "Enviou para {{address}}", "erc20_received": "Recebeu de {{address}}", "eth_sent": "Enviou para {{address}}", @@ -2050,7 +2086,7 @@ "title_untake_ready": "Saque pronto", "title_stake": "Colocou {{symbol}} em staking", "title_unstake_completed": "Retirada de staking concluída", - "title_swapped": "Swapped {{symbolIn}} to {{symbolOut}}", + "title_swapped": "Trocou {{symbolIn}} para {{symbolOut}}", "label_address_to": "Para", "label_address_from": "De", "label_address_to_you": "Para (você)", @@ -2129,9 +2165,9 @@ "transaction_id_copied_to_clipboard": "ID da transação copiado para a área de transferência", "activation_card": { "title": "Ativar notificações", - "description_1": "Fique por dentro do que acontece na sua carteira com notificações. ", + "description_1": "Fique por dentro do que acontece em sua carteira com as notificações.", "description_2": "Para usar esse recurso, geramos um ID anônimo para sua conta. Ele é usado apenas para sincronizar seus dados na MetaMask e não é vinculado às suas atividades ou outros identificadores, garantindo sua privacidade.", - "learn_more": "Saiba como protegemos sua privacidade enquanto usa esse recurso. ", + "learn_more": "Saiba como protegemos sua privacidade enquanto usa este recurso.", "manage_preferences_1": "Você pode desativar as notificações a qualquer momento em ", "manage_preferences_2": "Configurações > Notificações.", "cancel": "Cancelar", @@ -2523,7 +2559,8 @@ "sale_completed_title": "Ordem concluída", "sale_completed_description": "Sua ordem foi bem-sucedida!", "sale_pending_title": "Processando venda de {{currency}}", - "sale_pending_description": "Sua ordem está sendo processada." + "sale_pending_description": "Sua ordem está sendo processada.", + "no_date": "Desconhecida" } }, "swaps": { @@ -2782,14 +2819,14 @@ }, "switch_custom_network": { "title_existing_network": "Este site deseja alternar a rede", - "title_enabled_network": "This site wants to:", + "title_enabled_network": "Este site quer:", "title_new_network": "Nova rede adicionada", "switch_warning": "Isso alternará a rede selecionada dentro da MetaMask para uma rede adicionada anteriormente:", - "use_enabled_networks": "Use your enabled networks", - "wants_to_see_your_accounts": "See your accounts and suggest transactions", - "requesting_for": "Requesting for ", - "edit": "Edit", - "add_network_and_give_dapp_permission_warning": "You're adding this network to MetaMask and giving {{dapp_origin}} permission to use it.", + "use_enabled_networks": "Usar suas redes habilitadas", + "wants_to_see_your_accounts": "Ver suas contas e sugerir transações", + "requesting_for": "Solicitando para ", + "edit": "Editar", + "add_network_and_give_dapp_permission_warning": "Você está adicionando esta rede à MetaMask e dando à {{dapp_origin}} permissão para usá-la.", "available": "está disponível agora no seletor de redes.", "cancel": "Cancelar", "switch": "Alternar rede" @@ -3113,8 +3150,8 @@ "cannot_get_account": "Não é possível obter a conta", "connect_ledger": "Conectar Ledger", "looking_for_device": "Procurando dispositivo", - "ledger_reminder_message": "Please make sure your Ledger device is:", - "ledger_reminder_message_step_one": "1. Unlock your Ledger device", + "ledger_reminder_message": "Certifique-se de que seu dispositivo Ledger esteja:", + "ledger_reminder_message_step_one": "1. Desbloqueie seu dispositivo Ledger", "ledger_reminder_message_step_two": "2. Instale e abra o app da Ethereum", "ledger_reminder_message_step_three": "3. Ative o Bluetooth", "ledger_reminder_message_step_four": "4. O acesso à localização está ativado com o uso de localização precisa", @@ -3123,7 +3160,7 @@ "available_devices": "Dispositivos disponíveis", "retry": "Tentar novamente", "continue": "Continuar", - "confirm_transaction_on_ledger": "Confirm transaction on your Ledger", + "confirm_transaction_on_ledger": "Confirme a transação em sua Ledger", "bluetooth_enabled_message": "Certifique-se de que o Bluetooth está ativado", "device_unlocked_message": "O dispositivo está desbloqueado", "ledger_disconnected": "Seu dispositivo foi desconectado", @@ -3146,13 +3183,11 @@ "not_supported": "Operação não compatível", "not_supported_error": "Somente a versão 4 da assinatura de dados digitados é compatível.", "error_during_connection": "Ocorreu um erro desconhecido", - "error_during_connection_message": "There's been a slight problem connecting your Ledger device, tap 'Retry' below to give this another go. Sometimes this occurs due to the ETH app on your Ledger device being open at the start of the pairing process with MetaMask Mobile.", + "error_during_connection_message": "Ocorreu um pequeno problema ao conectar seu dispositivo Ledger. Toque abaixo em \"Tentar novamente\" para tentar mais uma vez. Às vezes, isso ocorre quando o app ETH em seu dispositivo Ledger é aberto no início do processo de emparelhamento com a MetaMask para celular.", "how_to_install_eth_webview_title": "Como instalar o app Ethereum", "nonce_too_low": "Nonce muito baixo", "nonce_too_low_error": "O nonce definido está muito baixo", - "select_accounts": "Select an Account", - "select_accounts_warning": "Note: these accounts might be different to what you're used to.", - "select_accounts_sub_msg": "These accounts are derived using the BIP44 derivation path, which is different to the default Ledger Live derivation path on MetaMask Extension, Different derivation paths for Ledger will be available on MetaMask Mobile soon." + "select_accounts": "Selecione uma conta" }, "account_actions": { "edit_name": "Editar nome da conta", @@ -3225,7 +3260,7 @@ "title_off": "Desativar funcionalidade básica", "description_off": "Isso significa que você não otimizará totalmente seu tempo na MetaMask. Os recursos básicos (como detalhes de tokens, configurações ideais de gás e outros) não estarão disponíveis.", "title_on": "Ativar funcionalidade básica", - "description_on": "Para otimizar seu tempo na MetaMask, você precisará ativar este recurso. As funções básicas (como detalhes dos tokens, configurações ideais de gás e outras) são importantes para a experiência na web3.", + "description_on": "Para otimizar seu tempo na MetaMask, você precisará ativar este recurso. Funções básicas (como detalhes dos tokens, configurações ideais de gás, notificações e outras) são importantes para a experiência na web3.", "checkbox_label": "Entendo e quero continuar", "buttons": { "cancel": "Cancelar", diff --git a/locales/languages/ru.json b/locales/languages/ru.json index abab186c955..08250f8c6c6 100644 --- a/locales/languages/ru.json +++ b/locales/languages/ru.json @@ -451,10 +451,10 @@ "use_the_currency_symbol": "использует символ валюты", "use_correct_symbol": "Прежде чем продолжить, убедитесь, что вы используете правильный символ", "chain_id_currently_used": "Этот ID блокчейна в настоящее время используется", - "incorrect_network_name_warning": "According to our records, the network name may not correctly match this chain ID.", - "suggested_name": "Suggested name:", + "incorrect_network_name_warning": "Согласно нашим записям, имя сети может не соответствовать этому ID блокчейна.", + "suggested_name": "Предлагаемое имя:", "network_check_validation_desc": "снижает ваши шансы подключиться к вредоносной или неправильной сети.", - "cant_verify_custom_network_warning": "We can’t verify custom networks. To avoid malicious providers from recording your network activity, only add networks you trust.", + "cant_verify_custom_network_warning": "Мы не можем проверять пользовательские сети. Чтобы злоумышленники не записывали вашу сетевую активность, добавляйте только те сети, которым вы доверяете.", "nfts_autodetection_cta": "Включите определение NFT в настройках", "learn_more": "Подробнее", "add_collectibles": "Импорт NFT", @@ -499,11 +499,14 @@ "address": "Адрес контракта токена", "decimal": "Число десятичных знаков токена", "network": "Сеть", + "network_fee": "Network fee", "lists": "Списки токенов", "hide_cta": "Скрыть токен", "options": { + "view_on_portfolio": "Посмотреть в Portfolio", "view_on_block": "Смотреть в обозревателе блоков", - "token_details": "Описание токена" + "token_details": "Описание токена", + "remove_token": "Удалить токен" } }, "activity_view": { @@ -550,6 +553,7 @@ "description_title": "Помогите нам улучшить Metamask", "description_content_1": "Мы хотели бы собрать базовые данные об использовании для улучшения MetaMask. Помните, что мы никогда не продаем данные, которые вы здесь предоставляете.", "description_content_2": "Когда мы собираем показатели, они всегда будут...", + "description_content_3": "Узнайте, как мы защищаем вашу конфиденциальность при сборе данных об использовании вашего профиля.", "checkbox": "Мы будем использовать эти данные, чтобы узнать, как вы взаимодействуете с нашими маркетинговыми сообщениями. Мы можем отправлять соответствующие новости (например, о функциях продукта).", "action_description_1_prefix": "Приватными:", "action_description_2_prefix": "Общедоступными:", @@ -600,7 +604,21 @@ "decimals_is_required": "Требуется число десятичных знаков. Найдите его на:", "no_tokens_found": "нам не удалось найти токены с таким именем.", "select_token": "Выбрать токен", - "address_must_be_smart_contract": "Обнаружен личный адрес. Введите адрес контракта токена." + "address_must_be_smart_contract": "Обнаружен личный адрес. Введите адрес контракта токена.", + "billion_abbreviation": "Б", + "trillion_abbreviation": "Трлн", + "million_abbreviation": "Млн", + "token_details": "Описание токена", + "contract_address": "Адрес контракта", + "token_list": "Список токенов", + "market_details": "Сведения о рынке", + "market_cap": "Рыночная капитализация", + "total_volume": "Общий объем (24 часа)", + "volume_to_marketcap": "Объем/рыночная капитализация", + "circulating_supply": "Циркулирующее предложение", + "all_time_high": "Максимум за все время", + "all_time_low": "Минимум за все время", + "fully_diluted": "Полностью разбавленные" }, "collectible": { "collectible_address": "Адрес", @@ -650,10 +668,10 @@ "accounts_title": "Счета", "connect_account_title": "Подключить счет", "connect_accounts_title": "Подключить счета", - "edit_accounts_title": "Edit accounts", + "edit_accounts_title": "Изменить счета", "connected_accounts_title": "Подключенные счета", "connect_description": "Делитесь адресом, балансом и активностью своего счета и разрешите сайту инициировать транзакции.", - "select_accounts_description": "Select the account(s) to use on this site:", + "select_accounts_description": "Выберите счета(-а) для использования на этом сайте:", "connect_multiple_accounts": "Подключить нескольких счетов", "connect_more_accounts": "Подключите еще счета", "cancel": "Отмена", @@ -669,7 +687,10 @@ "address_balance_activity_permission": "Просмотр адреса, баланса счета и активности", "suggest_transactions": "Предлагать транзакции для одобрения", "disconnect": "Отключиться", + "disconnect_all": "Отключить все", + "reconnect_notice": "Если вы отключите свои счета от {{dappUrl}}, вам придется повторно подключиться, чтобы снова использовать их.", "disconnect_all_accounts": "Отключить все счета", + "disconnect_you_from": "Это отключит вас от {{dappUrl}}", "deceptive_site_ahead": "Впереди моешеннический сайт", "deceptive_site_desc": "Сайт, который вы пытаетесь посетить, небезопасен. Злоумышленники могут обманом заставить вас сделать что-то опасное.", "learn_more": "Подробнее", @@ -687,6 +708,7 @@ "accounts_connected": "счета подключены.", "disconnected": "отключен.", "disconnected_all": "Все счета отключены.", + "disconnected_from": "Отключен(-а) от {{dappHostName}}", "nft_detection_enabled": "Автоопределение NFT включено" }, "connect_qr_hardware": { @@ -697,13 +719,13 @@ "keystone": "Keystone", "ngravezero": "Ngrave Zero", "learnMore": "Подробнее", - "buyNow": "Buy now", + "buyNow": "Купить сейчас", "tutorial": "Руководство", "description4": "Keystone (руководство)", "description5": "1. Разблокируйте свой Keystone", "description6": "2. Нажмите на ··· Меню, затем перейдите к «Синхронизировать»", "button_continue": "Продолжить", - "hint_text": "Scan your hardware wallet to ", + "hint_text": "Отсканируйте свой аппаратный кошелек, чтобы ", "purpose_connect": "подключиться", "purpose_sign": "подтвердить транзакцию", "select_accounts": "Выберите счет" @@ -724,7 +746,7 @@ "enabling_profile_sync": "Включение синхронизации профиля...", "disabling_profile_sync": "Отключение синхронизации профиля...", "notifications_dismiss_modal": "Отклонить", - "select_rpc_url": "Select RPC URL", + "select_rpc_url": "Выберите URL-адрес RPC", "title": "Настройки", "current_conversion": "Базовая валюта", "current_language": "Текущий язык", @@ -824,7 +846,7 @@ "notifications_title": "Уведомления", "notifications_desc": "Управляйте своими уведомлениями", "allow_notifications": "Разрешить уведомления", - "allow_notifications_desc": "Stay in the loop on what’s happening in your wallet with notifications. To use notifications, we use a profile to sync some settings across your devices.", + "allow_notifications_desc": "Будьте в курсе того, что происходит в вашем кошельке, с помощью уведомлений. Чтобы использовать уведомления, мы используем профиль для синхронизации некоторых настроек на ваших устройствах.", "notifications_opts": { "customize_session_title": "Настройте свои уведомления", "customize_session_desc": "Включите типы уведомлений, которые хотите получать:", @@ -843,6 +865,10 @@ }, "contacts_title": "Контакты", "contacts_desc": "Добавляйте, изменяйте и удаляйте счета и управляйте ими", + "permissions_title": "Разрешения", + "permissions_desc": "Управляйте разрешениями, предоставляемыми сайтам и приложениям", + "no_permissions": "Нет разрешений", + "no_permissions_desc": "Если вы подключите счет к сайту или приложению, вы увидите его здесь.", "security_title": "Безопасность и конфиденциальность", "back": "Назад", "security_desc": "Настройки конфиденциальности, MetaMetrics, закрытый ключ и секретная фраза для восстановления кошелька", @@ -932,14 +958,18 @@ "custom_network_name": "Пользовательские сети", "popular": "Популярное", "delete": "Удалить", + "account": "счет", + "accounts": "счета", + "network": "сеть", + "networks": "сети", "network_exists": "Сеть уже добавлена.", - "unMatched_chain": "According to our records, this URL does not match a known provider for this chain ID.", - "unMatched_chain_name": "This chain ID doesn’t match the network name.", - "url_associated_to_another_chain_id": "This URL is associated with another chain ID.", - "chain_id_associated_with_another_network": "The information you have entered is associated with an existing chain ID. Update your information or", - "network_already_exist": "You already have a network with the same chain ID or RPC URL. Enter a new chain ID or RPC URL", - "edit_original_network": "edit the original network", - "find_the_right_one": "Find the right one on:", + "unMatched_chain": "Согласно нашим данным, этот URL-адрес не соответствует известному поставщику для этого ID блокчейна.", + "unMatched_chain_name": "Этот ID блокчейна не соответствует имени сети.", + "url_associated_to_another_chain_id": "Этот URL-адрес связан с другим ID блокчейна.", + "chain_id_associated_with_another_network": "Введенная вами информация связана с существующим ID блокчейна. Обновите свою информацию или", + "network_already_exist": "У вас уже есть сеть с таким же идентификатором блокчейна или URL-адресом RPC. Введите новый идентификатор ID блокчейна или URL-адреса RPC.", + "edit_original_network": "изменить исходную сеть", + "find_the_right_one": "Найдите подходящий в:", "delete_metrics_title": "Удалить данные MetaMetrics", "delete_metrics_description_part_one": "Это удалит исторические данные", "delete_metrics_description_part_two": "MetaMetrics,", @@ -1169,7 +1199,7 @@ "text": "ТЕКСТ", "qr_code": "QR-КОД", "hold_to_reveal_credential": "Удерживайте, чтобы показать {{credentialName}}", - "reveal_credential": "Reveal {{credentialName}}", + "reveal_credential": "Показать {{credentialName}}", "keep_credential_safe": "Храните {{credentialName}} в безопасности", "srp_abbreviation_text": "СФВ", "srp_text": "Секретная фраза для восстановления", @@ -1296,13 +1326,14 @@ "error": "Ошибка", "attempting_to_scan_with_wallet_locked": "Похоже, вы пытаетесь отсканировать QR-код. Вам нужно разблокировать свой кошелек, чтобы использовать его.", "attempting_sync_from_wallet_error": "Похоже, вы пытаетесь выполнить синхронизацию с расширением. Для этого вам нужно удалить текущий кошелек. \n\nПосле того как вы удалите или переустановите новую версию приложения, выберите параметр «Синхронизировать с расширением MetaMask». Важно! Прежде чем удалять кошелек, обязательно сделайте резервную копию секретной фразы для восстановления.", - "not_allowed_error_title": "Предоставить доступ к камере", - "not_allowed_error_desc": "Доступ к камере необходим для сканирования QR-кода, связанного с адресом счета или конракта", + "not_allowed_error_title": "Предоставьте доступ к камере", + "not_allowed_error_desc": "Чтобы отсканировать QR-код, вам необходимо предоставить доступ к камере MetaMask в меню настроек вашего устройства.", "unrecognized_address_qr_code_title": "Нераспознанный QR-код", "unrecognized_address_qr_code_desc": "Извините, этот QR-код не связан с адресом счета или адресом контракта.", "url_redirection_alert_title": "Вы собираетесь перейти по внешней ссылке", "url_redirection_alert_desc": "Ссылки могут быть использованы для обмана или фишинга, поэтому обязательно посещайте только те сайты, которым доверяете.", - "label": "Сканировать QR-код" + "label": "Сканировать QR-код", + "open_settings": "Настройки" }, "action_view": { "cancel": "Отмена", @@ -1312,6 +1343,7 @@ "transaction_id": "ID транзакции", "alert": "ВНИМАНИЕ", "amount": "Сумма", + "details": "Details", "next": "Далее", "back": "Назад", "confirm": "Подтвердить", @@ -1320,7 +1352,7 @@ "cancel": "Отмена", "save": "Сохранить", "speedup": "Ускорить", - "sign_with_keystone": "Sign with hardware wallet", + "sign_with_keystone": "Подписать аппаратным кошельком", "sign_with_ledger": "Подписать с помощью Ledger", "from": "От", "gas_fee": "Плата за газ", @@ -1394,7 +1426,7 @@ "token_id": "ID токена", "not_enough_for_gas": "На вашем счете 0 {{ticker}} для оплаты комиссии за транзакцию. Купите немного {{ticker}} или внесите депозит с другого счета.", "send": "Отправить", - "confirm_with_qr_hardware": "Confirm with hardware wallet", + "confirm_with_qr_hardware": "Подтвердить с помощью аппаратного кошелька", "confirm_with_ledger_hardware": "Подтвердить с помощь Ledger", "confirmed": "Подтверждено", "pending": "Ожидающий", @@ -1427,7 +1459,7 @@ "no_camera_permission": "Камера не авторизована. Предоставьте разрешение и повторите попытку", "invalid_qr_code_sign": "Недействительный QR-код. Проверьте ваше оборудование и повторите попытку.", "no_camera_permission_android": "Чтобы продолжить, вам необходимо предоставить MetaMask доступ к вашей камере. Вам также может потребоваться изменить системные настройки.", - "mismatched_qr_request_id": "Incongruent transaction data. Please use your hardware wallet to sign the QR code below and tap 'Get Signature'.", + "mismatched_qr_request_id": "Несоответствующие данные о транзакции. Используйте свой апппаратный кошелек, чтобы подписать QR-код ниже, и нажмите «Получить подпись».", "fiat_conversion_not_available": "Конвертация фиатных денег в данный момент недоступна", "hex_data_copied": "Шестнадцатеричные данные скопированы в буфер обмена", "invalid_recipient": "Недействительный получатель", @@ -1628,8 +1660,8 @@ "import_wallet_label": "Счет добавлен", "import_wallet_tip": "Все будущие транзакции с этого устройства будут сопровождаться ярлыком «с этого устройства» рядом с отметкой времени. Для транзакций, совершенных до добавления счета, в этой истории не будет указано, какие исходящие транзакции были совершены с этого устройства.", "sign_title_scan": "Сканировать ", - "sign_title_device": "with your hardware wallet", - "sign_description_1": "After you have signed with your hardware wallet,", + "sign_title_device": "с помощью аппаратного кошелька", + "sign_description_1": "Подтвердите с помощью аппаратного кошелька", "sign_description_2": "нажмите «Получить подпись»", "sign_get_signature": "Получить подпись", "network_fee": "Комиссия сети" @@ -1702,7 +1734,11 @@ "network_display_name": "Экранное имя", "network_chain_id": "ID блокчейна", "network_rpc_url": "URL сети", - "network_rpc_url_label": "Network RPC URL", + "network_rpc_url_label": "URL-адрес сетевого RPC", + "new_default_network_url": "Новый URL-адрес сети по умолчанию", + "current_label": "Текущая", + "new_label": "Новая", + "review": "Проверить", "view_details": "Просмотр сведений", "network_details": "Сведения о сети", "network_select_confirm_use_safe_check": "При выборе «Подтвердить» включается проверка сведений о сети. Вы можете отключить её в ", @@ -1735,7 +1771,7 @@ "add_other_network_here": "здесь.", "you_can": "Или вы можете", "add_network": "добавить другие сети вручную.", - "add_specific_network": "Add {{network_name}}", + "add_specific_network": "Добавить {{network_name}}", "select_network": "Выбрать сеть", "enabled_networks": "Включенные сети", "additional_networks": "Дополнительные сети", @@ -2010,7 +2046,7 @@ "staked": "В стейкинге", "received": "Получено", "unstaked": "Стейкинг отменен", - "mark_all_as_read": "Mark all as read", + "mark_all_as_read": "Отметить все как прочитанное", "to": "В", "rate": "Курс (включая комиссии)", "unstaking_requested": "Запрошена отмена стейкинга", @@ -2023,7 +2059,7 @@ "swap": "Выполнен обмен", "sent": "Отправленные на {{address}}", "menu_item_title": { - "metamask_swap_completed": "Swapped {{symbolIn}} for {{symbolOut}}", + "metamask_swap_completed": "{{symbolIn}} обменян на {{symbolOut}}", "erc20_sent": "Отправлено на {{address}}", "erc20_received": "Получено от {{address}}", "eth_sent": "Отправлено на {{address}}", @@ -2050,7 +2086,7 @@ "title_untake_ready": "Готово к выводу", "title_stake": "{{symbol}} в стейкинге", "title_unstake_completed": "Отмена стейкинга завершена", - "title_swapped": "Swapped {{symbolIn}} to {{symbolOut}}", + "title_swapped": "{{symbolIn}} обменян в {{symbolOut}}", "label_address_to": "В", "label_address_from": "Из", "label_address_to_you": "В (вы)", @@ -2129,9 +2165,9 @@ "transaction_id_copied_to_clipboard": "ID транзакции скопирован в буфер обмена", "activation_card": { "title": "Включить уведомления", - "description_1": "Будьте в курсе того, что происходит в вашем кошельке, с помощью уведомлений. ", + "description_1": "Будьте в курсе того, что происходит в вашем кошельке, с помощью уведомлений.", "description_2": "Чтобы использовать эту функцию, мы сгенерируем анонимный ID для вашего счета. Он используется только для синхронизации ваших данных в MetaMask и не связывается с вашими действиями или другими ID, обеспечивая вашу конфиденциальность.", - "learn_more": "Узнайте, как мы защищаем вашу конфиденциальность при использовании этой функции. ", + "learn_more": "Узнайте, как мы защищаем вашу конфиденциальность при использовании этой функции.", "manage_preferences_1": "Вы можете отключить уведомления в любое время в ", "manage_preferences_2": "Настройки > Уведомления.", "cancel": "Отмена", @@ -2523,7 +2559,8 @@ "sale_completed_title": "Ордер выполнен", "sale_completed_description": "Ваш ордер успешно выполнен!", "sale_pending_title": "Купля-продажа {{currency}} обрабатывается", - "sale_pending_description": "Ваш ордер обрабатывается." + "sale_pending_description": "Ваш ордер обрабатывается.", + "no_date": "Неизвестно" } }, "swaps": { @@ -2782,14 +2819,14 @@ }, "switch_custom_network": { "title_existing_network": "Этот сайт хотел бы сменить сеть", - "title_enabled_network": "This site wants to:", + "title_enabled_network": "Этот сайт хочет:", "title_new_network": "Добавлена новая сеть", "switch_warning": "В результате этого сеть, выбранная в MetaMask, будет изменена на ранее добавленную:", - "use_enabled_networks": "Use your enabled networks", - "wants_to_see_your_accounts": "See your accounts and suggest transactions", - "requesting_for": "Requesting for ", - "edit": "Edit", - "add_network_and_give_dapp_permission_warning": "You're adding this network to MetaMask and giving {{dapp_origin}} permission to use it.", + "use_enabled_networks": "Использовать ваши включенные сети", + "wants_to_see_your_accounts": "Просматривать ваши счета и предлагать транзакции", + "requesting_for": "Запрошено для ", + "edit": "Изменить", + "add_network_and_give_dapp_permission_warning": "Вы добавляете эту сеть в MetaMask и даете разрешение {{dapp_origin}} на ее использование.", "available": "теперь доступно в селекторе сети.", "cancel": "Отмена", "switch": "Сменить сеть" @@ -3113,8 +3150,8 @@ "cannot_get_account": "Не удается получить счет", "connect_ledger": "Подключить Ledger", "looking_for_device": "Поиск устройства...", - "ledger_reminder_message": "Please make sure your Ledger device is:", - "ledger_reminder_message_step_one": "1. Unlock your Ledger device", + "ledger_reminder_message": "Убедитесь, что ваше устройство Ledger:", + "ledger_reminder_message_step_one": "1. Разблокируйте свое устройство Ledger", "ledger_reminder_message_step_two": "2. Установите и откройте приложение Ethereum", "ledger_reminder_message_step_three": "3. Включите Bluetooth", "ledger_reminder_message_step_four": "4. Включена опция «Местоположение» с использованием точных данных", @@ -3123,7 +3160,7 @@ "available_devices": "Доступные устройства", "retry": "Повтор", "continue": "Продолжить", - "confirm_transaction_on_ledger": "Confirm transaction on your Ledger", + "confirm_transaction_on_ledger": "Подтвердите транзакцию в своем Ledger", "bluetooth_enabled_message": "Убедитесь, что Bluetooth включен", "device_unlocked_message": "Устройство разблокировано", "ledger_disconnected": "Ваше устройство отключилось", @@ -3146,13 +3183,11 @@ "not_supported": "Операция не поддерживается", "not_supported_error": "Поддерживается только 4-я версия подписи типизированных данных.", "error_during_connection": "Произошла неизвестная ошибка", - "error_during_connection_message": "There's been a slight problem connecting your Ledger device, tap 'Retry' below to give this another go. Sometimes this occurs due to the ETH app on your Ledger device being open at the start of the pairing process with MetaMask Mobile.", + "error_during_connection_message": "При подключении устройства Ledger возникла небольшая проблема. Нажмите «Повтор» ниже, чтобы попробовать еще раз. Иногда это происходит из-за того, что приложение ETH на вашем устройстве Ledger открыто в начале процесса сопряжения с MetaMask Mobile.", "how_to_install_eth_webview_title": "Как установить приложение Ethereum", "nonce_too_low": "Одноразовый код слишком короткий", "nonce_too_low_error": "Установлен слишком короткий одноразовый код", - "select_accounts": "Select an Account", - "select_accounts_warning": "Note: these accounts might be different to what you're used to.", - "select_accounts_sub_msg": "These accounts are derived using the BIP44 derivation path, which is different to the default Ledger Live derivation path on MetaMask Extension, Different derivation paths for Ledger will be available on MetaMask Mobile soon." + "select_accounts": "Выберите счет" }, "account_actions": { "edit_name": "Изменить имя счета", @@ -3225,7 +3260,7 @@ "title_off": "Выключить базовый функционал", "description_off": "Это означает, что вы не сможете полностью оптимизировать свое время в MetaMask. Вам будут недоступны базовые функции (например, сведения о токенах, оптимальные настройки газа и т. д.).", "title_on": "Включить базовый функционал", - "description_on": "Чтобы оптимизировать свое время в MetaMask, вам необходимо включить эту функцию. Базовые функции (например, сведения о токенах, оптимальные настройки газа и другие) важны для работы с web3.", + "description_on": "Чтобы оптимизировать свое время в MetaMask, вам необходимо включить эту функцию. Базовые функции (например, сведения о токенах, оптимальные настройки газа, уведомления и другие) важны для работы с web3.", "checkbox_label": "Я понимаю и хочу продолжить", "buttons": { "cancel": "Отмена", diff --git a/locales/languages/tl.json b/locales/languages/tl.json index 84e1a883dcc..ff56d7e5c2b 100644 --- a/locales/languages/tl.json +++ b/locales/languages/tl.json @@ -499,11 +499,14 @@ "address": "Address ng kontrata ng token", "decimal": "Decimal ng token", "network": "Network", + "network_fee": "Network fee", "lists": "Mga Listahan ng Token", "hide_cta": "Itago ang token", "options": { + "view_on_portfolio": "View on Portfolio", "view_on_block": "Tingnan sa block explorer", - "token_details": "Mga detalye ng token" + "token_details": "Mga detalye ng token", + "remove_token": "Remove token" } }, "activity_view": { @@ -550,6 +553,7 @@ "description_title": "Tulungan kaming mapahusay ang MetaMask", "description_content_1": "Nais naming mangalap ng data para sa batayang paggamit upang mapahusay ang MetaMask. Dapat mong malaman na hindi namin ibebenta ang data na iyong ibibigay rito.", "description_content_2": "Kapag kami ay nangangalap ng metrics, ito ay palaging...", + "description_content_3": "Learn how we protect your privacy while collecting usage data for your profile.", "checkbox": "Gagamitin namin ang data na ito upang matutunan paano ka nakikipag-ugnayan sa aming mga komunikasyon sa marketing. Maaari kaming magbahagi ng kaugnay na balita (tulad ng mga tampok ng produkto).", "action_description_1_prefix": "Pribado:", "action_description_2_prefix": "Pangkalahatan:", @@ -600,7 +604,21 @@ "decimals_is_required": "Kailangan ang decimal. Hanapin ito sa:", "no_tokens_found": "Wala kaming mahanap na anumang token na may ganyang pangalan.", "select_token": "Pumili ng Token", - "address_must_be_smart_contract": "Natukoy ang personal na address. Ilagay ang address ng kontrata ng token." + "address_must_be_smart_contract": "Natukoy ang personal na address. Ilagay ang address ng kontrata ng token.", + "billion_abbreviation": "B", + "trillion_abbreviation": "T", + "million_abbreviation": "M", + "token_details": "Token details", + "contract_address": "Contract address", + "token_list": "Token list", + "market_details": "Market details", + "market_cap": "Market Cap", + "total_volume": "Total Volume (24h)", + "volume_to_marketcap": "Volume / Market Cap", + "circulating_supply": "Circulating supply", + "all_time_high": "All time high", + "all_time_low": "All time low", + "fully_diluted": "Fully diluted" }, "collectible": { "collectible_address": "Address", @@ -669,7 +687,10 @@ "address_balance_activity_permission": "Tingnan ang address, balanse ng account, at aktibidad", "suggest_transactions": "Magmungkahi ng mga transaksyong aaprubahan", "disconnect": "Idiskonekta", + "disconnect_all": "Disconnect all", + "reconnect_notice": "If you disconnect your accounts from {{dappUrl}}, you’ll need to reconnect to use them again.", "disconnect_all_accounts": "Idiskonekta ang lahat ng account", + "disconnect_you_from": "This will disconnect you from {{dappUrl}}", "deceptive_site_ahead": "Papunta sa isang mapanlinlang na site", "deceptive_site_desc": "Ang site na iyong sinusubukang bisitahin ay hindi ligtas. Maaari kang linlangin ng mga umaatake na gumawa ng mapanganib na bagay.", "learn_more": "Matuto pa", @@ -687,6 +708,7 @@ "accounts_connected": "mga account na konektado.", "disconnected": "nadiskonekta.", "disconnected_all": "Nadiskonekta ang lahat ng account.", + "disconnected_from": "Disconnected from {{dappHostName}}", "nft_detection_enabled": "Pinagana ang autodetection ng NFT" }, "connect_qr_hardware": { @@ -843,6 +865,10 @@ }, "contacts_title": "Mga Kontak", "contacts_desc": "Magdagdag, mag-edit, mag-alis, at mamahala ng iyong mga account", + "permissions_title": "Permissions", + "permissions_desc": "Manage the permissions given to sites and apps", + "no_permissions": "No permissions", + "no_permissions_desc": "If you connect an account to a site or an app, you’ll see it here.", "security_title": "Seguridad at Pagkapribado", "back": "Bumalik", "security_desc": "Mga setting ng pagkapribado, MetaMetrics, pribadong key at Lihim na Parirala sa Pagbawi ng wallet", @@ -932,6 +958,10 @@ "custom_network_name": "Mga custom na network", "popular": "Sikat", "delete": "Tanggalin", + "account": "account", + "accounts": "accounts", + "network": "network", + "networks": "networks", "network_exists": "Naidagdag na ang network na ito.", "unMatched_chain": "According to our records, this URL does not match a known provider for this chain ID.", "unMatched_chain_name": "This chain ID doesn’t match the network name.", @@ -1296,13 +1326,14 @@ "error": "Error", "attempting_to_scan_with_wallet_locked": "Mukhang sinusubukan mong mag-scan ng QR code, kailangan mong i-unlock ang iyong wallet para magamit ito.", "attempting_sync_from_wallet_error": "Mukhang sinusubukan mong mag-sync sa extension. Para magawa ito, kakailanganin mong burahin ang iyong kasalukuyang wallet. \n\nSa oras na magbura o mag-install ka ng bagong bersyon ng app, piliin ang opsyong \"I-sync gamit ang MetaMask Extension\". Mahalaga! Bago burahin ang iyong wallet, tiyaking na-back up mo ang iyong Lihim na Parirala sa Pagbawi.", - "not_allowed_error_title": "Paganahin ang access sa camera", - "not_allowed_error_desc": "Kailangan ng access sa camera para mag-scan ng QR code na nauugnay sa isang address ng account o address ng kontrata", + "not_allowed_error_title": "Turn on camera access", + "not_allowed_error_desc": "To scan a QR code, you'll need to give MetaMask camera access from your device's settings menu.", "unrecognized_address_qr_code_title": "Hindi nakikilalang QR Code", "unrecognized_address_qr_code_desc": "Paumanhin, ang QR code na ito ay hindi nauugnay sa isang address ng account o isang address ng kontrata.", "url_redirection_alert_title": "Bibisitahin mo ang isang panlabas na link", "url_redirection_alert_desc": "Maaaring gamitin ang mga link upang subukang manlinlang o mag-phish ng mga tao, kaya siguraduhing bisitahin lamang ang mga website na pinagkakatiwalaan mo.", - "label": "Mag-scan ng QR code" + "label": "Mag-scan ng QR code", + "open_settings": "Settings" }, "action_view": { "cancel": "Kanselahin", @@ -1312,6 +1343,7 @@ "transaction_id": "ID ng Transaksyon", "alert": "ALERTO", "amount": "Halaga", + "details": "Details", "next": "Susunod", "back": "Bumalik", "confirm": "Kumpirmahin", @@ -1703,6 +1735,10 @@ "network_chain_id": "ID ng Chain", "network_rpc_url": "URL ng Network", "network_rpc_url_label": "Network RPC URL", + "new_default_network_url": "New default network URL", + "current_label": "Current", + "new_label": "New", + "review": "Review", "view_details": "Tingnan ang mga detalye", "network_details": "Mga detalye ng network", "network_select_confirm_use_safe_check": "Ang pagpili ng Kumpirmahin ay magbubukas ng pagsusuri ng detalye ng network. Maaari mong i-off ang pagsusuri ng detalye ng network sa ", @@ -2129,9 +2165,9 @@ "transaction_id_copied_to_clipboard": "Nakopya ang ID ng transaksyon sa clipboard", "activation_card": { "title": "I-on ang mga notipikasyon", - "description_1": "Manatiling may-alam sa nangyayari sa iyong wallet gamit ang mga notipikasyon. ", + "description_1": "Stay in the loop on what's happening in your wallet with notifications.", "description_2": "Para gamitin ang tampok na ito, kami ay gagawa ng isang hindi kilalang ID para sa iyong account. Ginagamit lang ito para sa pag-sync ng data sa MetaMask at hindi inuugnay ang iyong mga aktibidad o iba pang mga pagkakakilanlan, tinitiyak ang iyong pagkapribado.", - "learn_more": "Matutunan kung paano namin protektahan ang iyong pagkapribado habang gamit ang tampok na ito. ", + "learn_more": "Learn how we protect your privacy while using this feature.", "manage_preferences_1": "Maaari mong i-off ang mga notipikasypon anumang oras sa ", "manage_preferences_2": "Mga Setting > Mga notipikasyon.", "cancel": "Kanselahin", @@ -2523,7 +2559,8 @@ "sale_completed_title": "Nakumpleto ang order", "sale_completed_description": "Matagumpay ang iyong order!.", "sale_pending_title": "Pinoproseso ang pagbenta ng {{currency}}", - "sale_pending_description": "Pinoproseso na ang iyong order." + "sale_pending_description": "Pinoproseso na ang iyong order.", + "no_date": "Unknown" } }, "swaps": { @@ -3150,9 +3187,7 @@ "how_to_install_eth_webview_title": "Paano i-install ang App ng Ethereum", "nonce_too_low": "Masyadong mababa ang nonce", "nonce_too_low_error": "Masyadong mababa ang itinakdang nonce", - "select_accounts": "Select an Account", - "select_accounts_warning": "Note: these accounts might be different to what you're used to.", - "select_accounts_sub_msg": "These accounts are derived using the BIP44 derivation path, which is different to the default Ledger Live derivation path on MetaMask Extension, Different derivation paths for Ledger will be available on MetaMask Mobile soon." + "select_accounts": "Select an Account" }, "account_actions": { "edit_name": "I-edit ang pangalan ng account", @@ -3225,7 +3260,7 @@ "title_off": "I-off ang batayang kapakinabangan", "description_off": "Ibig sabihin nito hindi mo lubos na mao-optimize ang iyong oras sa MetaMask. Ang mga batayang tampok (tulad ng mga detalye ng token, optimal na settings ng gas, at iba pa) ay hindi magiging available para sa iyo.", "title_on": "I-on ang batayang kapakinabangan", - "description_on": "Upang ma-optimize ang iyong oras sa MetaMask, kailangan mong i-on ang tampok na ito. Ang mga batayang function (tulad ng mga detalye ng token, optimal na settings ng gas, at iba pa) ay mahalaga sa karanasan sa web3.", + "description_on": "To optimize your time on MetaMask, you’ll need to turn on this feature. Basic functions (like token details, optimal gas settings, notifications, and others) are important to the web3 experience.", "checkbox_label": "Nauunawaan ko at nais kong magpatuloy", "buttons": { "cancel": "Kanselahin", diff --git a/locales/languages/tr.json b/locales/languages/tr.json index 15c621122cf..7dbcba4bc3f 100644 --- a/locales/languages/tr.json +++ b/locales/languages/tr.json @@ -451,10 +451,10 @@ "use_the_currency_symbol": "para birimi sembolü kullanır", "use_correct_symbol": "Devam etmeden önce doğru sembolü kullandığınızdan emin olun", "chain_id_currently_used": "Bu Zincir Kimliği şu anda şunun tarafından kullanılıyor:", - "incorrect_network_name_warning": "According to our records, the network name may not correctly match this chain ID.", - "suggested_name": "Suggested name:", + "incorrect_network_name_warning": "Kayıtlarımıza göre ağ adı bu zincir kimliği ile doğru şekilde eşleşmiyor olabilir.", + "suggested_name": "Önerilen ad:", "network_check_validation_desc": "kötü amaçlı veya yanlış bir ağa bağlanma ihtimalinizi azaltır.", - "cant_verify_custom_network_warning": "We can’t verify custom networks. To avoid malicious providers from recording your network activity, only add networks you trust.", + "cant_verify_custom_network_warning": "Özel ağları doğrulayamıyoruz. Kötü amaçlı sağlayıcıların ağ aktivitenizi kaydetmesini önlemek amacıyla sadece güvendiğiniz ağları ekleyin.", "nfts_autodetection_cta": "Ayarlarda NFT algılamayı açın", "learn_more": "Daha fazlasını öğren", "add_collectibles": "NFT'leri içe aktar", @@ -499,11 +499,14 @@ "address": "Token sözleşme adresi", "decimal": "Token ondalığı", "network": "Ağ", + "network_fee": "Network fee", "lists": "Token Listeleri", "hide_cta": "Tokeni gizle", "options": { + "view_on_portfolio": "Portfolio'da görüntüle", "view_on_block": "Blok gezgininde görüntüle", - "token_details": "Token bilgileri" + "token_details": "Token bilgileri", + "remove_token": "Tokeni kaldır" } }, "activity_view": { @@ -550,6 +553,7 @@ "description_title": "MetaMask'ı iyileştirmemize yardımcı olun", "description_content_1": "MetaMask'i iyileştirmek için temel kullanım verilerini toplamak istiyoruz. Burada sunduğunuz verileri asla satmadığımızı bilmenizi isteriz.", "description_content_2": "Topladığımız ölçümler her zaman şu şekilde olacaktır...", + "description_content_3": "Profiliniz için kullanım verilerini toplarken gizliliğinizi nasıl koruduğumuzu öğrenin.", "checkbox": "Bu verileri, pazarlama iletişimlerimizle nasıl etkileşimde bulunduğunuzu öğrenmek için kullanacağız. İlgili haberleri (ürün özellikleri gibi) paylaşabiliriz.", "action_description_1_prefix": "Özel:", "action_description_2_prefix": "Genel:", @@ -600,7 +604,21 @@ "decimals_is_required": "Ondalık gereklidir. Şurada bulabilirsiniz:", "no_tokens_found": "Bu isimde token bulamadık.", "select_token": "Token Seç", - "address_must_be_smart_contract": "Kişisel adres algılandı. Token sözleşme adresini girin." + "address_must_be_smart_contract": "Kişisel adres algılandı. Token sözleşme adresini girin.", + "billion_abbreviation": "MR", + "trillion_abbreviation": "T", + "million_abbreviation": "MN", + "token_details": "Token bilgileri", + "contract_address": "Sözleşme adresi", + "token_list": "Token listesi", + "market_details": "Piyasa bilgileri", + "market_cap": "Piyasa Değeri", + "total_volume": "Toplam Hacim (24sa)", + "volume_to_marketcap": "Hacim / Piyasa Değeri", + "circulating_supply": "Dolaşımdaki arz", + "all_time_high": "Tüm zamanların en yükseği", + "all_time_low": "Tüm zamanların en düşüğü", + "fully_diluted": "Tamamen seyreltilmiş" }, "collectible": { "collectible_address": "Adres", @@ -650,10 +668,10 @@ "accounts_title": "Hesaplar", "connect_account_title": "Hesabı bağla", "connect_accounts_title": "Hesapları bağla", - "edit_accounts_title": "Edit accounts", + "edit_accounts_title": "Hesapları düzenle", "connected_accounts_title": "Bağlı hesaplar", "connect_description": "Hesap adresinizi, bakiyenizi, faaliyetinizi paylaşın ve sitenin işlem başlatmasına izin verin.", - "select_accounts_description": "Select the account(s) to use on this site:", + "select_accounts_description": "Bu sitede kullanılacak hesap veya hesapları seçin:", "connect_multiple_accounts": "Birden fazla hesabı bağla", "connect_more_accounts": "Daha fazla hesap bağla", "cancel": "İptal et", @@ -669,7 +687,10 @@ "address_balance_activity_permission": "Adres, hesap bakiyesi ve aktiviteyi görme", "suggest_transactions": "Onaylanacak işlemleri önerme", "disconnect": "Bağlantıyı kes", + "disconnect_all": "Tümünün bağlantısını kes", + "reconnect_notice": "Hesapların {{dappUrl}} ile bağlantısını keserseniz onları tekrar kullanmak için tekrar bağlamanız gerekir.", "disconnect_all_accounts": "Tüm hesapların bağlantısını kes", + "disconnect_you_from": "{{dappUrl}} ile bağlantınızı kesecekler", "deceptive_site_ahead": "Aldatıcı siteye gidiliyor", "deceptive_site_desc": "Ziyaret etmeye çalıştığınız sayfa güvenli değil. Saldırganlar tehlikeli bir şey yapmanız konusunda sizi aldatabilir.", "learn_more": "Daha fazla bilgi", @@ -687,6 +708,7 @@ "accounts_connected": "hesap bağlandı.", "disconnected": "bağlantısı kesildi.", "disconnected_all": "Tüm hesapların bağlantısı kesildi.", + "disconnected_from": "{{dappHostName}} ile bağlantı kesildi", "nft_detection_enabled": "NFT otomatik algılama etkinleştirildi" }, "connect_qr_hardware": { @@ -697,13 +719,13 @@ "keystone": "Ana İlke", "ngravezero": "Ngrave Zero", "learnMore": "Daha fazla bilgi edinin", - "buyNow": "Buy now", + "buyNow": "Şimdi al", "tutorial": "Öğretici", "description4": "Temel (öğretici)", "description5": "1. Kilit Taşınızı Açın", "description6": "2. ··· Menüsüne dokunun, ardından Senkronize Et sekmesine gidin", "button_continue": "Devam", - "hint_text": "Scan your hardware wallet to ", + "hint_text": "Donanım cüzdanınızı tarayarak ", "purpose_connect": "bağlan", "purpose_sign": "kilit cüzdanınızı okutun", "select_accounts": "Hesap Seç" @@ -724,7 +746,7 @@ "enabling_profile_sync": "Profil senkronizasyonu etkinleştiriliyor...", "disabling_profile_sync": "Profil senkronizasyonu devre dışı bırakılıyor...", "notifications_dismiss_modal": "Yok say", - "select_rpc_url": "Select RPC URL", + "select_rpc_url": "RPC URL adresini seç", "title": "Ayarlar", "current_conversion": "Temel Para Birimi", "current_language": "Geçerli Dil", @@ -824,7 +846,7 @@ "notifications_title": "Bildirimler", "notifications_desc": "Bildirimlerinizi yönetin", "allow_notifications": "Bildirimlere izin ver", - "allow_notifications_desc": "Stay in the loop on what’s happening in your wallet with notifications. To use notifications, we use a profile to sync some settings across your devices.", + "allow_notifications_desc": "Bildirimler ile cüzdanınızda neler olduğundan haberdar olun. Bildirimleri kullanmak için cihazlarınızdaki bazı ayarları senkronize etmek amacıyla bir profil kullanıyoruz.", "notifications_opts": { "customize_session_title": "Bildirimlerinizi özelleştirin", "customize_session_desc": "Almak istediğiniz bildirim türlerini açın:", @@ -843,6 +865,10 @@ }, "contacts_title": "Kişiler", "contacts_desc": "Hesap ekle, düzenle, kaldır ve hesaplarını yönet", + "permissions_title": "İzinler", + "permissions_desc": "Sitelere ve uygulamalara verilen izinleri yönet", + "no_permissions": "İzin yok", + "no_permissions_desc": "Bir siteye veya bir uygulamaya bağladığınız hesabı burada göreceksiniz.", "security_title": "Güvenlik ve Gizlilik", "back": "Geri", "security_desc": "Gizlilik ayarları, MetaMetrics, özel anahtar ve cüzdan Gizli Kurtarma İfadesi", @@ -932,14 +958,18 @@ "custom_network_name": "Özel ağlar", "popular": "Popüler", "delete": "Sil", + "account": "hesap", + "accounts": "hesap", + "network": "ağ", + "networks": "ağ", "network_exists": "Bu ağ zaten eklenmiş.", - "unMatched_chain": "According to our records, this URL does not match a known provider for this chain ID.", - "unMatched_chain_name": "This chain ID doesn’t match the network name.", - "url_associated_to_another_chain_id": "This URL is associated with another chain ID.", - "chain_id_associated_with_another_network": "The information you have entered is associated with an existing chain ID. Update your information or", - "network_already_exist": "You already have a network with the same chain ID or RPC URL. Enter a new chain ID or RPC URL", - "edit_original_network": "edit the original network", - "find_the_right_one": "Find the right one on:", + "unMatched_chain": "Kayıtlarımıza göre bu URL adresi bu zincir kimliğinin bilinen bir sağlayıcısı ile uyumlu değil.", + "unMatched_chain_name": "Bu zincir kimliği ağ adı ile uyumlu değil.", + "url_associated_to_another_chain_id": "Bu URL adresi başka bir zincir kimliği ile ilişkilidir.", + "chain_id_associated_with_another_network": "Girdiğiniz bilgiler mevcut bir zincir kimliği ile ilişkilidir. Bilgilerinizi güncelleyin veya", + "network_already_exist": "Zaten aynı zincir kimliği veya RPC URL adresi ile bir ağınız var. Yeni bir zincir kimliği veya RPC URL adresi girin", + "edit_original_network": "orijinal ağı düzenle", + "find_the_right_one": "Doğrusunu şurada bulabilirsiniz:", "delete_metrics_title": "MetaMetrics verilerini sil", "delete_metrics_description_part_one": "Bu işlem cüzdanınızla ilişkili geçmiş", "delete_metrics_description_part_two": "MetaMetrics", @@ -1169,7 +1199,7 @@ "text": "METİN", "qr_code": "QR KODU", "hold_to_reveal_credential": "{{credentialName}} bilgisinin gösterilmesi için tut", - "reveal_credential": "Reveal {{credentialName}}", + "reveal_credential": "{{credentialName}} açığa çıkar", "keep_credential_safe": "{{credentialName}} bilgini güvende tut", "srp_abbreviation_text": "GKİ", "srp_text": "Gizli Kurtarma İfadesi", @@ -1296,13 +1326,14 @@ "error": "Hata", "attempting_to_scan_with_wallet_locked": "Görünüşe göre bir QR kodunu taramaya çalışıyorsunuz, bunu kullanmak için cüzdanınızın kilidini açmanız gerekecek.", "attempting_sync_from_wallet_error": "Görünüşe göre uzantı ile senkronize etmeye çalışıyorsunuz. Bunu yapabilmek için mevcut cüzdanınızı silmeniz gerekecek. \n\nUygulamayı sildiğinizde veya uygulamanın yeni bir sürümünü tekrar yüklediğinizde \"MetaMask Uzantısı ile Senkronize Et\" seçeneğini seçin. Önemli! Cüzdanınızı silmeden önce Gizli Kurtarma İfadenizi yedeklediğinizden emin olun.", - "not_allowed_error_title": "Kamera erişimini etkinleştir", - "not_allowed_error_desc": "Bir hesap adresi veya iletişim adresi ile ilişkili bir QR kodunu taramak için kamera erişimine ihtiyaç var", + "not_allowed_error_title": "Kamera erişimini aç", + "not_allowed_error_desc": "Bir QR kodunu taramak için cihazınızın ayarlar menüsünden MetaMask'e kamera erişimi vermeniz gerekecek.", "unrecognized_address_qr_code_title": "Tanınmayan QR kodu", "unrecognized_address_qr_code_desc": "Üzgünüz, bu QR kodu bir hesap adresi ya da bir iletişim adresiyle ilişkilendirilmemiş.", "url_redirection_alert_title": "Harici bir bağlantıyı ziyaret etmek üzeresiniz", "url_redirection_alert_desc": "Bağlantılar insanları dolandırmak ya da kimlik avı için kullanılabilir bu nedenle sadece güendiğiniz web sitelerini ziyaret ettiğinizden emin olun.", - "label": "Bir QR kodunu tara" + "label": "Bir QR kodunu tara", + "open_settings": "Ayarlar" }, "action_view": { "cancel": "İptal", @@ -1312,6 +1343,7 @@ "transaction_id": "İşlem Numarası", "alert": "UYARI", "amount": "Tutar", + "details": "Details", "next": "Sonraki", "back": "Geri", "confirm": "Onayla", @@ -1320,7 +1352,7 @@ "cancel": "İptal", "save": "Kaydet", "speedup": "Hızlandır", - "sign_with_keystone": "Sign with hardware wallet", + "sign_with_keystone": "Donanım cüzdanı ile imzala", "sign_with_ledger": "Ledger ile oturum aç", "from": "Kimden", "gas_fee": "Gaz ücreti", @@ -1394,7 +1426,7 @@ "token_id": "Token Kimliği", "not_enough_for_gas": "Hesabınızda işlem ücretlerini ödemek için 0 {{ticker}} bulunuyor. Bir miktar {{ticker}} satın alın veya başka bir hesaptan yatırın.", "send": "Gönder", - "confirm_with_qr_hardware": "Confirm with hardware wallet", + "confirm_with_qr_hardware": "Donanım cüzdanı ile onayla", "confirm_with_ledger_hardware": "Ledger ile onayla", "confirmed": "Onaylandı", "pending": "Bekliyor", @@ -1427,7 +1459,7 @@ "no_camera_permission": "Kamera izni yok. Lütfen izin verin ve tekrar deneyin", "invalid_qr_code_sign": "Geçersiz QR kodu. Lütfen donanımınızı kontrol edin ve tekrar deneyin.", "no_camera_permission_android": "Devam etmek için kameranıza MetaMask erişim izni vermeniz gerekiyor. Ayrıca sistem ayarlarınızı değiştirmeniz gerekebilir.", - "mismatched_qr_request_id": "Incongruent transaction data. Please use your hardware wallet to sign the QR code below and tap 'Get Signature'.", + "mismatched_qr_request_id": "Uyumsuz işlem verisi. Lütfen aşağıdaki QR koduyla imzalamak için donanım cüzdanınızı kullanın ve 'İmzayı Al' tuşuna tıklayın.", "fiat_conversion_not_available": "Fiat para dönüştürmeleri şu anda kullanılmıyor", "hex_data_copied": "On altılı veriler panoya kopyalandı", "invalid_recipient": "Alıcı geçersiz", @@ -1628,8 +1660,8 @@ "import_wallet_label": "Hesap Eklendi", "import_wallet_tip": "Gelecekte bu cihazdan yapılan tüm işlemlerde zaman damgasının yanında \"bu cihazdan\" etiketi bulunacaktır. Hesabın eklenmesinden önceki tarihlerde yapılan işlemler için bu geçmiş, hangi giden işlemlerin bu cihazdan oluşturulduğunu göstermeyecektir.", "sign_title_scan": "Tara ", - "sign_title_device": "with your hardware wallet", - "sign_description_1": "After you have signed with your hardware wallet,", + "sign_title_device": "donanım cüzdanınızla", + "sign_description_1": "Donanım cüzdanınızla imzaladıktan sonra", "sign_description_2": "İmzayı Al tuşuna tıklayın", "sign_get_signature": "İmza Al", "network_fee": "Ağ Ücreti" @@ -1702,7 +1734,11 @@ "network_display_name": "Görüntü adı", "network_chain_id": "Zincir Kimliği", "network_rpc_url": "Ağ URL adresi", - "network_rpc_url_label": "Network RPC URL", + "network_rpc_url_label": "Ağ RPC URL adresi", + "new_default_network_url": "Yeni varsayılan ağ URL adresi", + "current_label": "Mevcut", + "new_label": "Yeni", + "review": "İncele", "view_details": "Ayrıntıları görüntüle", "network_details": "Ağ bilgileri", "network_select_confirm_use_safe_check": "Onayla seçeneğinin seçilmesi Ağ bilgileri kontrolünü açar. Ağ bilgileri kontrolünü şurada kapatabilirsiniz: ", @@ -1735,7 +1771,7 @@ "add_other_network_here": "Burada daha fazla ağ keşfedebilirsiniz.", "you_can": "Veya", "add_network": "manuel olarak daha fazla ekleyebilirsiniz.", - "add_specific_network": "Add {{network_name}}", + "add_specific_network": "{{network_name}} ekle", "select_network": "Bir ağ seçin", "enabled_networks": "Etkinleştirilen ağlar", "additional_networks": "İlave ağlar", @@ -2010,7 +2046,7 @@ "staked": "Stake edildi", "received": "Alınan", "unstaked": "Unstake edildi", - "mark_all_as_read": "Mark all as read", + "mark_all_as_read": "Tümünü okundu olarak işaretle", "to": "Alıcı", "rate": "Oran (ücretler dahil)", "unstaking_requested": "Unstake talep edildi", @@ -2023,7 +2059,7 @@ "swap": "Swap yapılan", "sent": "Alıcı: {{address}}", "menu_item_title": { - "metamask_swap_completed": "Swapped {{symbolIn}} for {{symbolOut}}", + "metamask_swap_completed": "{{symbolIn}} - {{symbolOut}} swap işlemi gerçekleştirildi", "erc20_sent": "Alıcı: {{address}}", "erc20_received": "Gönderen: {{address}}", "eth_sent": "Alıcı: {{address}}", @@ -2050,7 +2086,7 @@ "title_untake_ready": "Para çekme hazır", "title_stake": "{{symbol}} stake edildi", "title_unstake_completed": "Unstake tamamlandı", - "title_swapped": "Swapped {{symbolIn}} to {{symbolOut}}", + "title_swapped": "{{symbolIn}} - {{symbolOut}} swap işlemi gerçekleştirildi", "label_address_to": "Alıcı", "label_address_from": "Kimden", "label_address_to_you": "Kime (Size)", @@ -2129,9 +2165,9 @@ "transaction_id_copied_to_clipboard": "İşlem numarası hafıza panosuna kopyalandı", "activation_card": { "title": "Bildirimleri aç", - "description_1": "Bildirimler ile cüzdanınızda neler olduğundan haberdar olun. ", + "description_1": "Bildirimler ile cüzdanınızda neler olduğundan haberdar olun.", "description_2": "Bu özelliği kullanmak üzere hesabınız için anonim bir kimlik oluşturacağız. Bu kimlik sadece MetaMask'teki verilerinizi senkronize etmek için kullanılır ve aktivitelerinizi veya diğer tanımlayıcıları bağlamayarak gizliliğinizi korur.", - "learn_more": "Bu özelliği kullanırken gizliliğinizi nasıl koruduğumuzu öğrenin. ", + "learn_more": "Bu özelliği kullanırken gizliliğinizi nasıl koruduğumuzu öğrenin.", "manage_preferences_1": "Bildirimleri dilediğiniz zaman şurada kapatabilirsiniz: ", "manage_preferences_2": "Ayarlar > Bildirimler.", "cancel": "İptal", @@ -2523,7 +2559,8 @@ "sale_completed_title": "Emir tamamlandı", "sale_completed_description": "Emriniz başarılı oldu.", "sale_pending_title": "{{currency}} satışı gerçekleştiriliyor", - "sale_pending_description": "Emriniz şu anda gerçekleştiriliyor." + "sale_pending_description": "Emriniz şu anda gerçekleştiriliyor.", + "no_date": "Bilinmeyen" } }, "swaps": { @@ -2782,14 +2819,14 @@ }, "switch_custom_network": { "title_existing_network": "Bu site ağ değiştirmek istiyor", - "title_enabled_network": "This site wants to:", + "title_enabled_network": "Bu site şunları yapmak istiyor:", "title_new_network": "Yeni ağ eklendi", "switch_warning": "Bu işlem, MetaMask'te seçili bir ağı önceden eklenmiş bir ağ ile değiştirecek:", - "use_enabled_networks": "Use your enabled networks", - "wants_to_see_your_accounts": "See your accounts and suggest transactions", - "requesting_for": "Requesting for ", - "edit": "Edit", - "add_network_and_give_dapp_permission_warning": "You're adding this network to MetaMask and giving {{dapp_origin}} permission to use it.", + "use_enabled_networks": "Etkin ağlarınızı kullanmak", + "wants_to_see_your_accounts": "Hesaplarınızı görmek ve işlem önermek", + "requesting_for": "Talep: ", + "edit": "Düzenle", + "add_network_and_give_dapp_permission_warning": "Bu ağı MetaMask'e ekliyor ve {{dapp_origin}} uygulamasına bunu kullanma izni veriyorsunuz.", "available": "artık ağ seçicide mevcut.", "cancel": "İptal", "switch": "Ağ değiştir" @@ -3113,8 +3150,8 @@ "cannot_get_account": "Hesap alınamıyor", "connect_ledger": "Ledger'ı bağla", "looking_for_device": "Cihaz aranıyor", - "ledger_reminder_message": "Please make sure your Ledger device is:", - "ledger_reminder_message_step_one": "1. Unlock your Ledger device", + "ledger_reminder_message": "Lütfen Ledger cihazınızın şöyle olduğundan emin olun:", + "ledger_reminder_message_step_one": "1. Ledger cihazınızn kilidini açın", "ledger_reminder_message_step_two": "2. Ethereum uygulamasını yükleyin ve açın", "ledger_reminder_message_step_three": "Bluetooth'u etkinleştirin", "ledger_reminder_message_step_four": "4. Konum, hassas konum kullan özelliği açık olarak etkinleştirildi", @@ -3123,7 +3160,7 @@ "available_devices": "Kullanılabilir cihazlar", "retry": "Tekrar Dene", "continue": "Devam", - "confirm_transaction_on_ledger": "Confirm transaction on your Ledger", + "confirm_transaction_on_ledger": "Ledger'ınızda işlemi onaylayın", "bluetooth_enabled_message": "Bluetooth özelliğinin etknleştirilmiş olduğundan emin olun", "device_unlocked_message": "Cihazın kilidi açık", "ledger_disconnected": "Cihazınızın bağlantısı kesildi", @@ -3146,13 +3183,11 @@ "not_supported": "İşlem desteklenmiyor", "not_supported_error": "Girilen veri imzalama işleminde sadece sürüm 4 desteklenmektedir.", "error_during_connection": "Bilinmeyen bir hata oluştu", - "error_during_connection_message": "There's been a slight problem connecting your Ledger device, tap 'Retry' below to give this another go. Sometimes this occurs due to the ETH app on your Ledger device being open at the start of the pairing process with MetaMask Mobile.", + "error_during_connection_message": "Ledger cihazınıza bağlanırken küçük bir sorun oluştu, bunu tekrar denemek için aşağıdaki \"Tekrar Dene\" düğmesine dokunun. Bazen MetaMask Mobil ile eşleştirme sürecinin başlangıcında Ledger cihazında ETH uygulamasının açık olması nedeniyle bu durum meydana gelir.", "how_to_install_eth_webview_title": "Ethereum uygulaması nasıl yüklenir?", "nonce_too_low": "Nonce çok düşük", "nonce_too_low_error": "Ayarlanan nonce çok düşük", - "select_accounts": "Select an Account", - "select_accounts_warning": "Note: these accounts might be different to what you're used to.", - "select_accounts_sub_msg": "These accounts are derived using the BIP44 derivation path, which is different to the default Ledger Live derivation path on MetaMask Extension, Different derivation paths for Ledger will be available on MetaMask Mobile soon." + "select_accounts": "Hesap Seç" }, "account_actions": { "edit_name": "Hesap adını düzenleyin", @@ -3225,7 +3260,7 @@ "title_off": "Temel işlevselliği kapat", "description_off": "Bu, MetaMask'te zamanınızı tamamen optimize edemeyeceğiniz anlamına gelir. Temel özellikler (token bilgileri, en iyi gaz ayarları vb. gibi) sizin için sunulmayacaktır.", "title_on": "Temel işlevselliği aç", - "description_on": "MetaMask'te zamanınızı tamamen optimize etmek için bu özelliği açmanız gerekecektir. Temel özellikler (token bilgileri, en iyi gaz ayarları vb. gibi) web3 deneyimi için önemlidir.", + "description_on": "MetaMask'te zamanınızı tamamen optimize etmek için bu özelliği açmanız gerekecektir. Temel özellikler (token bilgileri, en iyi gaz ayarları, bildirimler vb. gibi) web3 deneyimi için önemlidir.", "checkbox_label": "Anlıyorum ve devam etmek istiyorum", "buttons": { "cancel": "İptal", diff --git a/locales/languages/vi.json b/locales/languages/vi.json index 3b34f82a1d1..3bd6b76e2d2 100644 --- a/locales/languages/vi.json +++ b/locales/languages/vi.json @@ -451,10 +451,10 @@ "use_the_currency_symbol": "sử dụng ký hiệu tiền tệ", "use_correct_symbol": "Đảm bảo bạn đang sử dụng đúng ký hiệu trước khi tiếp tục", "chain_id_currently_used": "ID chuỗi này hiện được sử dụng bởi", - "incorrect_network_name_warning": "According to our records, the network name may not correctly match this chain ID.", - "suggested_name": "Suggested name:", + "incorrect_network_name_warning": "Theo hồ sơ của chúng tôi, tên mạng có thể không khớp chính xác với ID chuỗi này.", + "suggested_name": "Tên đề xuất:", "network_check_validation_desc": "giảm khả năng bạn kết nối với mạng độc hại hoặc mạng không chính xác.", - "cant_verify_custom_network_warning": "We can’t verify custom networks. To avoid malicious providers from recording your network activity, only add networks you trust.", + "cant_verify_custom_network_warning": "Chúng tôi không thể xác minh mạng tùy chỉnh. Để tránh các nhà cung cấp độc hại ghi lại hoạt động mạng của bạn, chỉ nên thêm các mạng mà bạn tin tưởng.", "nfts_autodetection_cta": "Bật tính năng phát hiện NFT trong phần Cài đặt", "learn_more": "Tìm hiểu thêm", "add_collectibles": "Nhập NFT", @@ -499,11 +499,14 @@ "address": "Địa chỉ hợp đồng của token", "decimal": "Số thập phân của token", "network": "Mạng", + "network_fee": "Network fee", "lists": "Danh sách token", "hide_cta": "Ẩn token", "options": { + "view_on_portfolio": "Xem trên Portfolio", "view_on_block": "Xem trên trình khám phá khối", - "token_details": "Thông tin chi tiết về token" + "token_details": "Thông tin chi tiết về token", + "remove_token": "Xóa token" } }, "activity_view": { @@ -550,6 +553,7 @@ "description_title": "Giúp chúng tôi cải thiện MetaMask", "description_content_1": "Chúng tôi muốn thu thập dữ liệu sử dụng cơ bản để cải tiến MetaMask. Xin lưu ý, chúng tôi không bao giờ bán dữ liệu mà bạn cung cấp ở đây.", "description_content_2": "Khi thu thập số liệu, chúng tôi sẽ luôn cam kết điều này...", + "description_content_3": "Tìm hiểu cách chúng tôi bảo vệ quyền riêng tư của bạn khi thu thập dữ liệu sử dụng cho hồ sơ của bạn.", "checkbox": "Chúng tôi sẽ sử dụng dữ liệu này để tìm hiểu cách bạn tương tác với các thông tin tiếp thị. Chúng tôi có thể chia sẻ tin tức liên quan (chẳng hạn như tính năng sản phẩm).", "action_description_1_prefix": "Riêng tư:", "action_description_2_prefix": "Chung:", @@ -600,7 +604,21 @@ "decimals_is_required": "Số thập phân là bắt buộc. Hãy tìm trên:", "no_tokens_found": "Chúng tôi không thể tìm ra token nào có tên đó.", "select_token": "Chọn token", - "address_must_be_smart_contract": "Đã phát hiện địa chỉ cá nhân. Hãy nhập địa chỉ hợp đồng của token." + "address_must_be_smart_contract": "Đã phát hiện địa chỉ cá nhân. Hãy nhập địa chỉ hợp đồng của token.", + "billion_abbreviation": "Tỷ", + "trillion_abbreviation": "Nghìn Tỷ", + "million_abbreviation": "Triệu", + "token_details": "Thông tin token", + "contract_address": "Địa chỉ hợp đồng", + "token_list": "Danh sách token", + "market_details": "Chi tiết thị trường", + "market_cap": "Vốn hóa thị trường", + "total_volume": "Tổng khối lượng giao dịch (24h)", + "volume_to_marketcap": "Khối lượng giao dịch / Vốn hóa thị trường", + "circulating_supply": "Cung lưu hành", + "all_time_high": "Cao nhất lịch sử", + "all_time_low": "Thấp nhất lịch sử", + "fully_diluted": "Pha loãng hoàn toàn" }, "collectible": { "collectible_address": "Địa chỉ", @@ -650,10 +668,10 @@ "accounts_title": "Tài khoản", "connect_account_title": "Kết nối tài khoản", "connect_accounts_title": "Kết nối tài khoản", - "edit_accounts_title": "Edit accounts", + "edit_accounts_title": "Chỉnh sửa tài khoản", "connected_accounts_title": "Tài khoản đã kết nối", "connect_description": "Chia sẻ địa chỉ tài khoản, số dư, hoạt động của bạn và cho phép trang web bắt đầu thực hiện các giao dịch.", - "select_accounts_description": "Select the account(s) to use on this site:", + "select_accounts_description": "Chọn (các) tài khoản để sử dụng trên trang web này:", "connect_multiple_accounts": "Kết nối nhiều tài khoản", "connect_more_accounts": "Kết nối thêm tài khoản", "cancel": "Hủy", @@ -669,7 +687,10 @@ "address_balance_activity_permission": "Xem địa chỉ, số dư tài khoản và hoạt động", "suggest_transactions": "Đề xuất các giao dịch cần chấp thuận", "disconnect": "Ngắt kết nối", + "disconnect_all": "Ngắt kết nối tất cả", + "reconnect_notice": "Nếu bạn ngắt kết nối tài khoản của mình khỏi {{dappUrl}}, bạn sẽ cần kết nối lại để sử dụng lại.", "disconnect_all_accounts": "Ngắt kết nối tất cả các tài khoản", + "disconnect_you_from": "Hành động này sẽ ngắt kết nối bạn khỏi {{dappUrl}}", "deceptive_site_ahead": "Phía trước là trang web lừa đảo", "deceptive_site_desc": "Trang web mà bạn đang cố gắng truy cập không an toàn. Những kẻ tấn công có thể lừa bạn thực hiện một hành động nguy hiểm.", "learn_more": "Tìm hiểu thêm", @@ -687,6 +708,7 @@ "accounts_connected": "tài khoản đã được kết nối.", "disconnected": "đã ngắt kết nối.", "disconnected_all": "Đã ngắt kết nối tất cả các tài khoản.", + "disconnected_from": "Ngắt kết nối khỏi {{dappHostName}}", "nft_detection_enabled": "Tính năng tự động phát hiện NFT đã được bật" }, "connect_qr_hardware": { @@ -697,13 +719,13 @@ "keystone": "Keystone", "ngravezero": "Ngrave Zero", "learnMore": "Tìm hiểu thêm", - "buyNow": "Buy now", + "buyNow": "Mua ngay", "tutorial": "Hướng dẫn", "description4": "Keystone (hướng dẫn)", "description5": "1. Mở khóa Keystone", "description6": "2. Nhấn vào Trình đơn ···, sau đó chuyển đến Đồng bộ", "button_continue": "Tiếp tục", - "hint_text": "Scan your hardware wallet to ", + "hint_text": "Quét ví cứng của bạn để ", "purpose_connect": "kết nối", "purpose_sign": "xác nhận giao dịch", "select_accounts": "Chọn một tài khoản" @@ -724,7 +746,7 @@ "enabling_profile_sync": "Đang bật đồng bộ hồ sơ...", "disabling_profile_sync": "Đang tắt đồng bộ hồ sơ...", "notifications_dismiss_modal": "Đóng", - "select_rpc_url": "Select RPC URL", + "select_rpc_url": "Chọn URL RPC", "title": "Cài đặt", "current_conversion": "Tiền tệ cơ bản", "current_language": "Ngôn ngữ hiện tại", @@ -824,7 +846,7 @@ "notifications_title": "Thông báo", "notifications_desc": "Quản lý thông báo", "allow_notifications": "Cho phép thông báo", - "allow_notifications_desc": "Stay in the loop on what’s happening in your wallet with notifications. To use notifications, we use a profile to sync some settings across your devices.", + "allow_notifications_desc": "Nhận thông báo để cập nhật tình hình trong ví của bạn. Để sử dụng tính năng thông báo, chúng tôi sử dụng hồ sơ để đồng bộ một số chế độ cài đặt trên các thiết bị của bạn.", "notifications_opts": { "customize_session_title": "Tùy chỉnh thông báo", "customize_session_desc": "Bật các loại thông báo mà bạn muốn nhận:", @@ -843,6 +865,10 @@ }, "contacts_title": "Danh bạ", "contacts_desc": "Thêm, sửa, xóa và quản lý các tài khoản của bạn", + "permissions_title": "Quyền", + "permissions_desc": "Quản lý các quyền được cấp cho trang web và ứng dụng", + "no_permissions": "Không có quyền nào", + "no_permissions_desc": "Nếu bạn kết nối tài khoản với một trang web hoặc ứng dụng, bạn sẽ thấy tài khoản đó ở đây.", "security_title": "Bảo mật & Quyền riêng tư", "back": "Quay lại", "security_desc": "Cài đặt quyền riêng tư, MetaMetrics, khoá riêng tư và Cụm từ khôi phục bí mật của ví", @@ -932,14 +958,18 @@ "custom_network_name": "Mạng tùy chỉnh", "popular": "Phổ biến", "delete": "Xóa", + "account": "tài khoản", + "accounts": "tài khoản", + "network": "mạng", + "networks": "mạng", "network_exists": "Mạng này đã được thêm.", - "unMatched_chain": "According to our records, this URL does not match a known provider for this chain ID.", - "unMatched_chain_name": "This chain ID doesn’t match the network name.", - "url_associated_to_another_chain_id": "This URL is associated with another chain ID.", - "chain_id_associated_with_another_network": "The information you have entered is associated with an existing chain ID. Update your information or", - "network_already_exist": "You already have a network with the same chain ID or RPC URL. Enter a new chain ID or RPC URL", - "edit_original_network": "edit the original network", - "find_the_right_one": "Find the right one on:", + "unMatched_chain": "Theo hồ sơ của chúng tôi, URL này không khớp với nhà cung cấp đã biết cho ID chuỗi này.", + "unMatched_chain_name": "ID chuỗi này không khớp với tên mạng.", + "url_associated_to_another_chain_id": "URL này được liên kết với một ID chuỗi khác.", + "chain_id_associated_with_another_network": "Thông tin bạn đã nhập được liên kết với một ID chuỗi hiện có. Cập nhật thông tin của bạn hoặc", + "network_already_exist": "Bạn đã có một mạng có cùng ID chuỗi hoặc URL RPC. Nhập ID chuỗi hoặc URL RPC mới", + "edit_original_network": "chỉnh sửa mạng gốc", + "find_the_right_one": "Tìm thông tin đúng trên:", "delete_metrics_title": "Xóa dữ liệu MetaMetrics", "delete_metrics_description_part_one": "Thao tác này sẽ xóa dữ liệu", "delete_metrics_description_part_two": "MetaMetrics", @@ -1169,7 +1199,7 @@ "text": "VĂN BẢN", "qr_code": "MÃ QR", "hold_to_reveal_credential": "Giữ để hiển thị {{credentialName}}", - "reveal_credential": "Reveal {{credentialName}}", + "reveal_credential": "Hiển thị {{credentialName}}", "keep_credential_safe": "Đảm bảo an toàn cho {{credentialName}} của bạn", "srp_abbreviation_text": "SRP", "srp_text": "Cụm từ khôi phục bí mật", @@ -1297,12 +1327,13 @@ "attempting_to_scan_with_wallet_locked": "Có vẻ như bạn đang cố quét mã QR, bạn cần mở khóa ví của mình để làm được điều đó.", "attempting_sync_from_wallet_error": "Có vẻ như bạn đang cố đồng bộ với tiện ích mở rộng. Để làm như vậy, bạn sẽ cần xóa ví hiện tại của mình. \n\nSau khi bạn đã xóa hoặc cài đặt lại phiên bản ứng dụng mới, hãy chọn tùy chọn \"Đồng bộ với Tiện ích mở rộng MetaMask\". Lưu ý quan trọng! Trước khi xóa ví, hãy đảm bảo rằng bạn đã sao lưu Cụm từ khôi phục bí mật.", "not_allowed_error_title": "Bật quyền truy cập camera", - "not_allowed_error_desc": "Cần cấp quyền truy cập camera để quét mã QR được liên kết với địa chỉ tài khoản hoặc địa chỉ hợp đồng", + "not_allowed_error_desc": "Để quét mã QR, bạn cần cấp quyền truy cập camera cho MetaMask từ trình đơn cài đặt của thiết bị.", "unrecognized_address_qr_code_title": "Không nhận diện được mã QR", "unrecognized_address_qr_code_desc": "Rất tiếc, mã QR này không được liên kết với bất kỳ địa chỉ tài khoản hoặc địa chỉ hợp đồng nào.", "url_redirection_alert_title": "Bạn sắp truy cập một liên kết bên ngoài", "url_redirection_alert_desc": "Các liên kết có thể được sử dụng để cố gắng gian lận hoặc lừa đảo mọi người, vì vậy hãy đảm bảo chỉ truy cập các trang web mà bạn tin tưởng.", - "label": "Quét mã QR" + "label": "Quét mã QR", + "open_settings": "Cài đặt" }, "action_view": { "cancel": "Hủy", @@ -1312,6 +1343,7 @@ "transaction_id": "ID giao dịch", "alert": "CẢNH BÁO", "amount": "Số tiền", + "details": "Details", "next": "Tiếp", "back": "Quay lại", "confirm": "Xác nhận", @@ -1320,7 +1352,7 @@ "cancel": "Hủy", "save": "Lưu", "speedup": "Tăng tốc", - "sign_with_keystone": "Sign with hardware wallet", + "sign_with_keystone": "Ký bằng ví cứng", "sign_with_ledger": "Ký bằng Ledger", "from": "Từ", "gas_fee": "Phí gas", @@ -1394,7 +1426,7 @@ "token_id": "ID của token", "not_enough_for_gas": "Bạn có 0 {{ticker}} trong tài khoản để trả phí giao dịch. Mua {{ticker}} hoặc nạp từ tài khoản khác.", "send": "Gửi", - "confirm_with_qr_hardware": "Confirm with hardware wallet", + "confirm_with_qr_hardware": "Xác nhận bằng ví cứng", "confirm_with_ledger_hardware": "Xác nhận bằng Ledger", "confirmed": "Đã xác nhận", "pending": "Đang chờ", @@ -1427,7 +1459,7 @@ "no_camera_permission": "Camera chưa được cấp phép. Vui lòng cho phép và thử lại", "invalid_qr_code_sign": "Mã QR không hợp lệ. Vui lòng kiểm tra ví cứng và thử lại.", "no_camera_permission_android": "Bạn cần cho phép MetaMask truy cập vào camera để tiếp tục. Bạn cũng có thể cần thay đổi cài đặt của hệ thống.", - "mismatched_qr_request_id": "Incongruent transaction data. Please use your hardware wallet to sign the QR code below and tap 'Get Signature'.", + "mismatched_qr_request_id": "Dữ liệu giao dịch không đồng nhất. Vui lòng sử dụng ví cứng của bạn để ký mã QR bên dưới và nhấn vào 'Lấy Chữ Ký'.", "fiat_conversion_not_available": "Quy đổi pháp định hiện không khả dụng", "hex_data_copied": "Đã sao chép dữ liệu thập lục phân vào bộ nhớ đệm", "invalid_recipient": "Người nhận không hợp lệ", @@ -1628,8 +1660,8 @@ "import_wallet_label": "Tài khoản đã được thêm", "import_wallet_tip": "Tất cả giao dịch trong tương lai được thực hiện từ thiết bị này sẽ có nhãn \"từ thiết bị này\" bên cạnh dấu thời gian. Đối với các giao dịch được ghi ngày trước khi thêm tài khoản, lịch sử này sẽ không cho biết giao dịch gửi đi nào bắt nguồn từ thiết bị này.", "sign_title_scan": "Quét ", - "sign_title_device": "with your hardware wallet", - "sign_description_1": "After you have signed with your hardware wallet,", + "sign_title_device": "bằng ví cứng của bạn", + "sign_description_1": "Sau khi bạn đã ký bằng ví cứng,", "sign_description_2": "nhấn vào Lấy Chữ Ký", "sign_get_signature": "Lấy Chữ Ký", "network_fee": "Phí mạng" @@ -1702,7 +1734,11 @@ "network_display_name": "Tên hiển thị", "network_chain_id": "Mã chuỗi", "network_rpc_url": "URL mạng", - "network_rpc_url_label": "Network RPC URL", + "network_rpc_url_label": "URL Mạng RPC", + "new_default_network_url": "URL mạng mặc định mới", + "current_label": "Hiện tại", + "new_label": "Mới", + "review": "Xem lại", "view_details": "Xem chi tiết", "network_details": "Chi tiết về mạng", "network_select_confirm_use_safe_check": "Chọn Xác nhận để bật Kiểm tra thông tin mạng. Bạn có thể tắt Kiểm tra thông tin mạng trong phần ", @@ -1735,7 +1771,7 @@ "add_other_network_here": "tại đây.", "you_can": "Hoặc bạn có thể", "add_network": "thêm thủ công các mạng khác.", - "add_specific_network": "Add {{network_name}}", + "add_specific_network": "Thêm {{network_name}}", "select_network": "Chọn mạng", "enabled_networks": "Mạng được bật", "additional_networks": "Mạng bổ sung", @@ -2010,7 +2046,7 @@ "staked": "Đã ký gửi", "received": "Đã nhận", "unstaked": "Đã hủy ký gửi", - "mark_all_as_read": "Mark all as read", + "mark_all_as_read": "Đánh dấu đã đọc tất cả", "to": "Đến", "rate": "Tỷ giá (đã bao gồm phí)", "unstaking_requested": "Đã yêu cầu hủy ký gửi", @@ -2023,7 +2059,7 @@ "swap": "Đã hoán đổi", "sent": "Đã gửi đến {{address}}", "menu_item_title": { - "metamask_swap_completed": "Swapped {{symbolIn}} for {{symbolOut}}", + "metamask_swap_completed": "Đã hoán đổi {{symbolIn}} thành {{symbolOut}}", "erc20_sent": "Đã gửi đến {{address}}", "erc20_received": "Đã nhận được từ {{address}}", "eth_sent": "Đã gửi đến {{address}}", @@ -2050,7 +2086,7 @@ "title_untake_ready": "Sẵn sàng rút tiền", "title_stake": "Đã ký gửi {{symbol}}", "title_unstake_completed": "Đã hoàn tất hủy ký gửi", - "title_swapped": "Swapped {{symbolIn}} to {{symbolOut}}", + "title_swapped": "Đã hoán đổi {{symbolIn}} sang {{symbolOut}}", "label_address_to": "Đến", "label_address_from": "Từ", "label_address_to_you": "Đến (Bạn)", @@ -2129,9 +2165,9 @@ "transaction_id_copied_to_clipboard": "Đã sao chép ID giao dịch vào bộ nhớ đệm", "activation_card": { "title": "Bật thông báo", - "description_1": "Nhận thông báo để cập nhật tình hình trong ví của bạn. ", + "description_1": "Nhận thông báo để cập nhật tình hình trong ví của bạn.", "description_2": "Để sử dụng tính năng này, chúng tôi sẽ tạo một ID ẩn danh cho tài khoản của bạn. ID này chỉ được dùng để đồng bộ dữ liệu của bạn trong MetaMask và không được liên kết với các hoạt động hoặc mã định danh khác của bạn, qua đó đảm bảo quyền riêng tư của bạn.", - "learn_more": "Tìm hiểu cách chúng tôi bảo vệ quyền riêng tư của bạn khi sử dụng tính năng này. ", + "learn_more": "Tìm hiểu cách chúng tôi bảo vệ quyền riêng tư của bạn khi sử dụng tính năng này.", "manage_preferences_1": "Bạn có thể tắt thông báo bất kỳ lúc nào trong phần ", "manage_preferences_2": "Cài đặt > Thông báo.", "cancel": "Hủy", @@ -2523,7 +2559,8 @@ "sale_completed_title": "Lệnh đã hoàn tất", "sale_completed_description": "Lệnh của bạn đã thành công!.", "sale_pending_title": "Đang xử lý lệnh bán {{currency}}", - "sale_pending_description": "Lệnh của bạn hiện đang được xử lý." + "sale_pending_description": "Lệnh của bạn hiện đang được xử lý.", + "no_date": "Không xác định" } }, "swaps": { @@ -2782,14 +2819,14 @@ }, "switch_custom_network": { "title_existing_network": "Trang web này muốn chuyển mạng", - "title_enabled_network": "This site wants to:", + "title_enabled_network": "Trang web này muốn:", "title_new_network": "Đã thêm mạng mới", "switch_warning": "Thao tác này sẽ chuyển mạng được chọn trong MetaMask sang một mạng đã thêm trước đó:", - "use_enabled_networks": "Use your enabled networks", - "wants_to_see_your_accounts": "See your accounts and suggest transactions", - "requesting_for": "Requesting for ", - "edit": "Edit", - "add_network_and_give_dapp_permission_warning": "You're adding this network to MetaMask and giving {{dapp_origin}} permission to use it.", + "use_enabled_networks": "Sử dụng mạng đã kích hoạt của bạn", + "wants_to_see_your_accounts": "Xem tài khoản của bạn và đề xuất giao dịch", + "requesting_for": "Yêu cầu cho ", + "edit": "Chỉnh sửa", + "add_network_and_give_dapp_permission_warning": "Bạn đang thêm mạng này vào MetaMask và cấp cho {{dapp_origin}} quyền sử dụng mạng này.", "available": "hiện có sẵn trong trình chọn mạng.", "cancel": "Hủy", "switch": "Chuyển mạng" @@ -3113,8 +3150,8 @@ "cannot_get_account": "Không thể lấy tài khoản", "connect_ledger": "Kết nối với Ledger", "looking_for_device": "Tìm kiếm thiết bị", - "ledger_reminder_message": "Please make sure your Ledger device is:", - "ledger_reminder_message_step_one": "1. Unlock your Ledger device", + "ledger_reminder_message": "Đảm bảo thiết bị Ledger của bạn:", + "ledger_reminder_message_step_one": "1. Mở khóa thiết bị Ledger của bạn", "ledger_reminder_message_step_two": "2. Cài đặt và mở ứng dụng Ethereum", "ledger_reminder_message_step_three": "3. Bật Bluetooth", "ledger_reminder_message_step_four": "4. Vị trí đã được bật cùng với sử dụng vị trí chính xác", @@ -3123,7 +3160,7 @@ "available_devices": "Thiết bị có sẵn", "retry": "Thử lại", "continue": "Tiếp tục", - "confirm_transaction_on_ledger": "Confirm transaction on your Ledger", + "confirm_transaction_on_ledger": "Xác nhận giao dịch trên thiết bị Ledger của bạn", "bluetooth_enabled_message": "Nhớ bật Bluetooth", "device_unlocked_message": "Đã mở khóa thiết bị", "ledger_disconnected": "Thiết bị của bạn đã bị ngắt kết nối", @@ -3146,13 +3183,11 @@ "not_supported": "Thao tác không được hỗ trợ", "not_supported_error": "Chỉ hỗ trợ phiên bản 4 của ký dữ liệu đã nhập.", "error_during_connection": "Đã xảy ra lỗi không xác định", - "error_during_connection_message": "There's been a slight problem connecting your Ledger device, tap 'Retry' below to give this another go. Sometimes this occurs due to the ETH app on your Ledger device being open at the start of the pairing process with MetaMask Mobile.", + "error_during_connection_message": "Đã xảy ra một sự cố nhỏ khi kết nối với thiết bị Ledger của bạn, nhấn 'Thử lại' bên dưới để thử lại một lần nữa. Đôi khi sự cố này xảy ra do bạn đang mở ứng dụng ETH trên thiết bị Ledger khi bắt đầu quá trình ghép nối với MetaMask Di động.", "how_to_install_eth_webview_title": "Cách cài đặt Ứng dụng Ethereum", "nonce_too_low": "Số nonce quá thấp", "nonce_too_low_error": "Số nonce đã đặt quá thấp", - "select_accounts": "Select an Account", - "select_accounts_warning": "Note: these accounts might be different to what you're used to.", - "select_accounts_sub_msg": "These accounts are derived using the BIP44 derivation path, which is different to the default Ledger Live derivation path on MetaMask Extension, Different derivation paths for Ledger will be available on MetaMask Mobile soon." + "select_accounts": "Chọn một tài khoản" }, "account_actions": { "edit_name": "Chỉnh sửa tên tài khoản", @@ -3225,7 +3260,7 @@ "title_off": "Tắt chức năng cơ bản", "description_off": "Điều này có nghĩa là bạn sẽ không thể tối ưu hoàn toàn thời gian sử dụng MetaMask. Các tính năng cơ bản (chẳng hạn như chi tiết token, cài đặt gas tối ưu và các tính năng khác) sẽ không khả dụng.", "title_on": "Bật chức năng cơ bản", - "description_on": "Để tối ưu thời gian sử dụng MetaMask, bạn cần bật tính năng này. Các chức năng cơ bản (chẳng hạn như chi tiết token, cài đặt gas tối ưu và các chức năng khác) rất quan trọng đối với trải nghiệm web3.", + "description_on": "Để tối ưu thời gian sử dụng MetaMask, bạn cần bật tính năng này. Các chức năng cơ bản (chẳng hạn như chi tiết token, cài đặt gas tối ưu, thông báo và các chức năng khác) rất quan trọng đối với trải nghiệm web3.", "checkbox_label": "Tôi hiểu rõ và muốn tiếp tục", "buttons": { "cancel": "Hủy", diff --git a/locales/languages/zh.json b/locales/languages/zh.json index 3fc9ddaba46..1ad290fa05b 100644 --- a/locales/languages/zh.json +++ b/locales/languages/zh.json @@ -451,10 +451,10 @@ "use_the_currency_symbol": "使用货币符号", "use_correct_symbol": "确保您使用正确的符号才能继续", "chain_id_currently_used": "此链 ID 目前的使用者是", - "incorrect_network_name_warning": "According to our records, the network name may not correctly match this chain ID.", - "suggested_name": "Suggested name:", + "incorrect_network_name_warning": "根据我们的记录,该网络名称可能与此链 ID 不匹配。", + "suggested_name": "建议名称:", "network_check_validation_desc": "减少您连接到恶意或错误网络的机会。", - "cant_verify_custom_network_warning": "We can’t verify custom networks. To avoid malicious providers from recording your network activity, only add networks you trust.", + "cant_verify_custom_network_warning": "我们无法验证自定义网络。为了避免恶意提供商记录您的网络活动,请仅添加您信任的网络。", "nfts_autodetection_cta": "在设置中打开 NFT 检测", "learn_more": "了解更多", "add_collectibles": "添加收藏品", @@ -499,11 +499,14 @@ "address": "代币合约地址", "decimal": "代币小数位", "network": "网络", + "network_fee": "Network fee", "lists": "代币列表", "hide_cta": "隐藏代币", "options": { + "view_on_portfolio": "在 Portfolio 上查看", "view_on_block": "在区块浏览器上查看", - "token_details": "代币详情" + "token_details": "代币详情", + "remove_token": "删除代币" } }, "activity_view": { @@ -550,6 +553,7 @@ "description_title": "帮助我们改进 MetaMask", "description_content_1": "我们希望收集基本的使用数据,以改进 MetaMask。请注意,我们绝不会出卖您在此处提供的数据。", "description_content_2": "当我们收集指标时,总是...", + "description_content_3": "了解我们如何在收集您的个人资料使用数据的同时保护您的隐私。", "checkbox": "我们将使用此数据来了解您如何与我们的营销通信交互。我们可能会分享相关资讯(例如产品特点)。", "action_description_1_prefix": "私密:", "action_description_2_prefix": "通用:", @@ -600,7 +604,21 @@ "decimals_is_required": "需要小数位。请在下方查找:", "no_tokens_found": "我们无法找到具有该名称的任何代币。", "select_token": "选择代币", - "address_must_be_smart_contract": "检测到个人地址。输入代币合约地址。" + "address_must_be_smart_contract": "检测到个人地址。输入代币合约地址。", + "billion_abbreviation": "十亿", + "trillion_abbreviation": "万亿", + "million_abbreviation": "百万", + "token_details": "代币详情", + "contract_address": "合约地址", + "token_list": "代币列表", + "market_details": "市场详情", + "market_cap": "市值", + "total_volume": "总交易额(24 小时)", + "volume_to_marketcap": "交易额 / 市值", + "circulating_supply": "循环供应", + "all_time_high": "有史以来新高", + "all_time_low": "有史以来新低", + "fully_diluted": "已充分稀释" }, "collectible": { "collectible_address": "地址", @@ -650,10 +668,10 @@ "accounts_title": "账户", "connect_account_title": "连接账户", "connect_accounts_title": "连接账户", - "edit_accounts_title": "Edit accounts", + "edit_accounts_title": "编辑账户", "connected_accounts_title": "已连接的账户", "connect_description": "请分享您的账户地址、余额、活动,并允许站点启动交易。", - "select_accounts_description": "Select the account(s) to use on this site:", + "select_accounts_description": "选择要在此网站上使用的账户:", "connect_multiple_accounts": "连接多个账户", "connect_more_accounts": "连接更多账户", "cancel": "取消", @@ -669,7 +687,10 @@ "address_balance_activity_permission": "查看地址、账户余额和活动", "suggest_transactions": "建议要批准的交易", "disconnect": "断开连接", + "disconnect_all": "断开所有连接", + "reconnect_notice": "如果将您的账户与 {{dappUrl}} 断开连接,则需要重新连接才能再次使用。", "disconnect_all_accounts": "断开所有账户的连接", + "disconnect_you_from": "这将断开与 {{dappUrl}} 的连接", "deceptive_site_ahead": "前方为欺骗性网站", "deceptive_site_desc": "您尝试访问的网站并不安全。攻击者可能会诱使您做一些危险的事情", "learn_more": "了解详情", @@ -687,6 +708,7 @@ "accounts_connected": "账户已连接。", "disconnected": "已断开连接。", "disconnected_all": "所有账户都已断开连接。", + "disconnected_from": "已从 {{dappHostName}} 断开连接", "nft_detection_enabled": "已启用 NFT 自动检测" }, "connect_qr_hardware": { @@ -697,13 +719,13 @@ "keystone": "Keystone", "ngravezero": "Ngrave Zero", "learnMore": "了解详情", - "buyNow": "Buy now", + "buyNow": "立即购买", "tutorial": "教程", "description4": "Keystone(教程)", "description5": "1. 解锁您的Keystone", "description6": "2. 点击 … 菜单,然后进入同步", "button_continue": "继续", - "hint_text": "Scan your hardware wallet to ", + "hint_text": "扫描您的硬件钱包以 ", "purpose_connect": "连接", "purpose_sign": "确认交易", "select_accounts": "选择账户" @@ -724,7 +746,7 @@ "enabling_profile_sync": "正在启用配置文件同步...", "disabling_profile_sync": "正在禁用配置文件同步...", "notifications_dismiss_modal": "关闭", - "select_rpc_url": "Select RPC URL", + "select_rpc_url": "选择 RPC(远程过程调用)URL", "title": "设置", "current_conversion": "基础货币", "current_language": "当前语言", @@ -824,7 +846,7 @@ "notifications_title": "通知", "notifications_desc": "管理您的通知", "allow_notifications": "允许通知", - "allow_notifications_desc": "Stay in the loop on what’s happening in your wallet with notifications. To use notifications, we use a profile to sync some settings across your devices.", + "allow_notifications_desc": "通过通知随时了解您的钱包动态。为了使用通知,我们使用配置文件在您的不同设备上同步某些设置。", "notifications_opts": { "customize_session_title": "自定义您的通知", "customize_session_desc": "开启您想要接收的通知类型:", @@ -843,6 +865,10 @@ }, "contacts_title": "联系方式", "contacts_desc": "添加、编辑、删除和管理您的账户", + "permissions_title": "许可", + "permissions_desc": "管理授予网站和应用程序的许可", + "no_permissions": "无许可", + "no_permissions_desc": "如果您将账户连接到网站或应用程序,您可在此处查看。", "security_title": "安全和隐私", "back": "返回", "security_desc": "隐私设置、MetaMetrics、私钥和钱包私钥助记词", @@ -932,14 +958,18 @@ "custom_network_name": "自定义网络", "popular": "热门", "delete": "删除", + "account": "账户", + "accounts": "账户", + "network": "网络", + "networks": "网络", "network_exists": "这个网络已经被添加。", - "unMatched_chain": "According to our records, this URL does not match a known provider for this chain ID.", - "unMatched_chain_name": "This chain ID doesn’t match the network name.", - "url_associated_to_another_chain_id": "This URL is associated with another chain ID.", - "chain_id_associated_with_another_network": "The information you have entered is associated with an existing chain ID. Update your information or", - "network_already_exist": "You already have a network with the same chain ID or RPC URL. Enter a new chain ID or RPC URL", - "edit_original_network": "edit the original network", - "find_the_right_one": "Find the right one on:", + "unMatched_chain": "根据我们的记录,此 URL 与此链 ID 的已知提供者不匹配。", + "unMatched_chain_name": "此链 ID 与网络名称不匹配。", + "url_associated_to_another_chain_id": "此 URL 与另一个链 ID 相关联。", + "chain_id_associated_with_another_network": "您输入的信息与现有的链 ID 相关联。请更新您的信息或者", + "network_already_exist": "您已有具有相同链 ID 或 RPC(远程过程调用) URL 的网络。请输入新的链 ID 或 RPC URL", + "edit_original_network": "编辑原始网络", + "find_the_right_one": "在下方找到适合项:", "delete_metrics_title": "删除MetaMetrics数据", "delete_metrics_description_part_one": "此操作将删除历史记录", "delete_metrics_description_part_two": "MetaMetrics", @@ -1169,7 +1199,7 @@ "text": "文本", "qr_code": "二维码", "hold_to_reveal_credential": "按住以显示 {{credentialName}}", - "reveal_credential": "Reveal {{credentialName}}", + "reveal_credential": "显示 {{credentialName}}", "keep_credential_safe": "保护您的 {{credentialName}} 安全", "srp_abbreviation_text": "助记词", "srp_text": "私钥助记词", @@ -1296,13 +1326,14 @@ "error": "错误", "attempting_to_scan_with_wallet_locked": "看起来您是希望扫描二维码,您需要解锁您的钱包才能使用它。", "attempting_sync_from_wallet_error": "好像您正尝试与扩展程序同步。要进行同步,请转至“设置”>“高级”>“与 MetaMask 扩展程序同步”", - "not_allowed_error_title": "允许访问摄像头", - "not_allowed_error_desc": "扫描与账户地址或合约地址关联的二维码时,需要摄像头的访问权限", + "not_allowed_error_title": "开启摄像头访问功能", + "not_allowed_error_desc": "要扫描二维码,您需要从设备的设置菜单中授予 MetaMask 摄像头访问权限。", "unrecognized_address_qr_code_title": "二维码无法识别", "unrecognized_address_qr_code_desc": "对不起,此二维码没有关联的账户地址或合约地址。", "url_redirection_alert_title": "您即将访问外部链接", "url_redirection_alert_desc": "链接可能会被用于诈骗或网络钓鱼,因此请确保您只访问您信任的网站。", - "label": "扫描二维码" + "label": "扫描二维码", + "open_settings": "设置" }, "action_view": { "cancel": "取消", @@ -1312,6 +1343,7 @@ "transaction_id": "交易 ID", "alert": "警报", "amount": "数额", + "details": "Details", "next": "下一步", "back": "返回", "confirm": "确认", @@ -1320,7 +1352,7 @@ "cancel": "取消", "save": "保存", "speedup": "加速", - "sign_with_keystone": "Sign with hardware wallet", + "sign_with_keystone": "使用硬件钱包签名", "sign_with_ledger": "使用 Ledger 签名", "from": "自", "gas_fee": "燃料费", @@ -1394,7 +1426,7 @@ "token_id": "代币 ID", "not_enough_for_gas": "您的账户中有 0 {{ticker}} 可用于支付交易费用。购买一些 {{ticker}} 或保证金,从其他账户存入。", "send": "发送", - "confirm_with_qr_hardware": "Confirm with hardware wallet", + "confirm_with_qr_hardware": "使用硬件钱包确认", "confirm_with_ledger_hardware": "使用 Ledger 确认", "confirmed": "已确认", "pending": "待定", @@ -1427,7 +1459,7 @@ "no_camera_permission": "您未开启摄像头权限,请在设置中给予权限后重试", "invalid_qr_code_sign": "无效二维码。请检查您的硬件钱包并重试。", "no_camera_permission_android": "您需要授予MetaMask对您的相机的访问权限才能继续。您可能还需要更改系统设置。", - "mismatched_qr_request_id": "Incongruent transaction data. Please use your hardware wallet to sign the QR code below and tap 'Get Signature'.", + "mismatched_qr_request_id": "交易数据不一致。请使用您的硬件钱包在下面的二维码上签名,然后点击“获取签名”。", "fiat_conversion_not_available": "目前不提供法币兑换", "hex_data_copied": "十六进制数据已复制到剪贴板", "invalid_recipient": "收件人无效", @@ -1628,8 +1660,8 @@ "import_wallet_label": "已添加账户", "import_wallet_tip": "以后所有从这台设备进行的交易都会在时间戳旁边加上 “来自这台设备”的标签。对于添加账户之前的交易,该历史记录不会显示哪些传出交易来自该设备。", "sign_title_scan": "扫描 ", - "sign_title_device": "with your hardware wallet", - "sign_description_1": "After you have signed with your hardware wallet,", + "sign_title_device": "使用您的硬件钱包", + "sign_description_1": "您使用硬件钱包签名后,", "sign_description_2": "点击‘’获取签名‘’", "sign_get_signature": "获取签名", "network_fee": "网络费" @@ -1702,7 +1734,11 @@ "network_display_name": "显示名称", "network_chain_id": "链 ID", "network_rpc_url": "网络URL", - "network_rpc_url_label": "Network RPC URL", + "network_rpc_url_label": "网络 RPC(远程过程调用)URL", + "new_default_network_url": "新的默认网络 URL", + "current_label": "当前", + "new_label": "新增", + "review": "审核", "view_details": "查看详情", "network_details": "网络详情", "network_select_confirm_use_safe_check": "选择“确认”即开启网络详情检查。您可以在下方关闭网络详情检查:", @@ -1735,7 +1771,7 @@ "add_other_network_here": "这里。", "you_can": "或者您可以", "add_network": "手动添加更多网络。", - "add_specific_network": "Add {{network_name}}", + "add_specific_network": "添加 {{network_name}}", "select_network": "选择网络", "enabled_networks": "启用的网络", "additional_networks": "其他网络", @@ -2010,7 +2046,7 @@ "staked": "已质押", "received": "已收到", "unstaked": "已解除质押", - "mark_all_as_read": "Mark all as read", + "mark_all_as_read": "全部标记为已读", "to": "至", "rate": "价格(包括费用)", "unstaking_requested": "已请求解除质押", @@ -2023,7 +2059,7 @@ "swap": "已兑换", "sent": "已发送至 {{address}}", "menu_item_title": { - "metamask_swap_completed": "Swapped {{symbolIn}} for {{symbolOut}}", + "metamask_swap_completed": "已用 {{symbolIn}} 兑换 {{symbolOut}}", "erc20_sent": "已发送至 {{address}}", "erc20_received": "已从 {{address}} 收到", "eth_sent": "已发送至 {{address}}", @@ -2050,7 +2086,7 @@ "title_untake_ready": "提取已就绪", "title_stake": "已质押 {{symbol}}", "title_unstake_completed": "解除质押完成", - "title_swapped": "Swapped {{symbolIn}} to {{symbolOut}}", + "title_swapped": "已将 {{symbolIn}} 兑换为 {{symbolOut}}", "label_address_to": "至", "label_address_from": "从", "label_address_to_you": "至(您)", @@ -2523,7 +2559,8 @@ "sale_completed_title": "订单已完成", "sale_completed_description": "您的订单已成功!", "sale_pending_title": "正在处理{{currency}}的卖出", - "sale_pending_description": "您的订单正在处理中。" + "sale_pending_description": "您的订单正在处理中。", + "no_date": "未知" } }, "swaps": { @@ -2782,14 +2819,14 @@ }, "switch_custom_network": { "title_existing_network": "本站点希望切换网络", - "title_enabled_network": "This site wants to:", + "title_enabled_network": "此网站想要:", "title_new_network": "已增加新网络", "switch_warning": "这将把 MetaMask 中选择的网络切换到先前添加的网络:", - "use_enabled_networks": "Use your enabled networks", - "wants_to_see_your_accounts": "See your accounts and suggest transactions", - "requesting_for": "Requesting for ", - "edit": "Edit", - "add_network_and_give_dapp_permission_warning": "You're adding this network to MetaMask and giving {{dapp_origin}} permission to use it.", + "use_enabled_networks": "使用您启用的网络", + "wants_to_see_your_accounts": "查看您的账户并建议交易", + "requesting_for": "请求 ", + "edit": "编辑", + "add_network_and_give_dapp_permission_warning": "您正在将此网络添加到 MetaMask 并授予 {{dapp_origin}} 其使用许可。", "available": "现在可以在网络选择工具中使用。", "cancel": "取消", "switch": "切换网络" @@ -3113,8 +3150,8 @@ "cannot_get_account": "无法获取账户", "connect_ledger": "连接Ledger", "looking_for_device": "正在查找设备", - "ledger_reminder_message": "Please make sure your Ledger device is:", - "ledger_reminder_message_step_one": "1. Unlock your Ledger device", + "ledger_reminder_message": "请确保您的 Ledger 设备为:", + "ledger_reminder_message_step_one": "1. 解锁您的 Ledger 设备", "ledger_reminder_message_step_two": "2. 安装并打开以太坊应用程序", "ledger_reminder_message_step_three": "3. 启用蓝牙", "ledger_reminder_message_step_four": "4. 使用下述精确定位后,定位已启用:", @@ -3123,7 +3160,7 @@ "available_devices": "可用设备", "retry": "重试", "continue": "继续", - "confirm_transaction_on_ledger": "Confirm transaction on your Ledger", + "confirm_transaction_on_ledger": "在您的 Ledger 中确认交易", "bluetooth_enabled_message": "请确保蓝牙已启用", "device_unlocked_message": "设备已解锁", "ledger_disconnected": "您的设备已断开连接", @@ -3146,13 +3183,11 @@ "not_supported": "操作不受支持", "not_supported_error": "仅支持类型化数据签名的版本4。", "error_during_connection": "发生未知错误", - "error_during_connection_message": "There's been a slight problem connecting your Ledger device, tap 'Retry' below to give this another go. Sometimes this occurs due to the ETH app on your Ledger device being open at the start of the pairing process with MetaMask Mobile.", + "error_during_connection_message": "连接您的 Ledger 设备时出现小问题,请在下方点击“重试”,再试一次。有时,这是因为在和 MetaMask Mobile 进行配对的过程开始时,Ledger 设备上的以太坊应用程序处于打开状态。", "how_to_install_eth_webview_title": "如何安装以太坊应用程序", "nonce_too_low": "唯一交易标识号安全性过低", "nonce_too_low_error": "设置的唯一交易标识号安全性过低", - "select_accounts": "Select an Account", - "select_accounts_warning": "Note: these accounts might be different to what you're used to.", - "select_accounts_sub_msg": "These accounts are derived using the BIP44 derivation path, which is different to the default Ledger Live derivation path on MetaMask Extension, Different derivation paths for Ledger will be available on MetaMask Mobile soon." + "select_accounts": "选择一个账户" }, "account_actions": { "edit_name": "编辑账户名", @@ -3225,7 +3260,7 @@ "title_off": "关闭基本功能", "description_off": "这意味着您不能充分优化您在 MetaMask 上的时间。您将无法使用基本功能(例如代币详情、最优燃料设置等)。", "title_on": "开启基本功能", - "description_on": "如需优化您在 MetaMask 上的时间,您将需要开启此功能。基本功能(例如代币详情、最优燃料设置等)对于 Web3 体验至关重要。", + "description_on": "如需优化您在 MetaMask 上的时间,您将需要开启此功能。基本功能(例如代币详情、最优燃料设置、通知等)对于 Web3 体验至关重要。", "checkbox_label": "我理解并想继续", "buttons": { "cancel": "取消", diff --git a/package.json b/package.json index 47edd8478ec..286690adddd 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,13 @@ { "name": "metamask", - "version": "7.29.2", + "version": "7.30.0", "private": true, "scripts": { "audit:ci": "./scripts/yarn-audit.sh", "watch": "./scripts/build.sh watcher watch", "watch:clean": "./scripts/build.sh watcher clean", "clean:ios": "rm -rf ios/build", - "pod:install": "command -v pod && (cd ios/ && bundle exec pod install && cd ..) || echo \"Skipping pod install\"", + "pod:install": "command -v pod && bundle exec pod install --project-directory=ios || echo \"pod command not found. Skipping pod install\"", "clean:ppom": "rm -rf ppom/dist ppom/node_modules app/lib/ppom/ppom.html.js", "clean:android": "rm -rf android/app/build", "clean:node": "rm -rf node_modules && yarn --frozen-lockfile", diff --git a/patches/@metamask+approval-controller+7.0.2.patch b/patches/@metamask+approval-controller+7.0.2.patch index ec1116b644d..dd655204a82 100644 --- a/patches/@metamask+approval-controller+7.0.2.patch +++ b/patches/@metamask+approval-controller+7.0.2.patch @@ -385,3 +385,20 @@ index 84c51b2..0000000 @@ -1 +0,0 @@ -{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]} \ No newline at end of file +diff --git a/node_modules/@metamask/approval-controller/dist/types/ApprovalController.d.ts b/node_modules/@metamask/approval-controller/dist/types/ApprovalController.d.ts +index 2b9ad4d..26efec3 100644 +--- a/node_modules/@metamask/approval-controller/dist/types/ApprovalController.d.ts ++++ b/node_modules/@metamask/approval-controller/dist/types/ApprovalController.d.ts +@@ -101,6 +101,12 @@ export type AcceptOptions = { + * If false or unspecified, the promise will resolve immediately. + */ + waitForResult?: boolean; ++ /** ++ * Patch for #10758 ++ * provide the AcceptOptions with extra options which have been used in `engine.acceptPendingApproval()` function in mobile. ++ * the metamask mobile already patch the AprrovalControll.accept() function to accept the extra options. ++ */ ++ deleteAfterResult?: boolean; + }; + export type StartFlowOptions = OptionalField & { + show?: boolean; diff --git a/patches/@metamask+assets-controllers+30.0.0.patch b/patches/@metamask+assets-controllers+30.0.0.patch index bc3dcfd0a44..31f21c3eaed 100644 --- a/patches/@metamask+assets-controllers+30.0.0.patch +++ b/patches/@metamask+assets-controllers+30.0.0.patch @@ -23,6 +23,59 @@ index 0dc70ec..461a210 100644 } }; return acc; +diff --git a/node_modules/@metamask/assets-controllers/dist/chunk-ELSMS5S7.js b/node_modules/@metamask/assets-controllers/dist/chunk-ELSMS5S7.js +index 45254ad..83634ab 100644 +--- a/node_modules/@metamask/assets-controllers/dist/chunk-ELSMS5S7.js ++++ b/node_modules/@metamask/assets-controllers/dist/chunk-ELSMS5S7.js +@@ -87,6 +87,7 @@ var CurrencyRateController = class extends _pollingcontroller.StaticIntervalPoll + const nativeCurrencyForExchangeRate = Object.values( + _controllerutils.TESTNET_TICKER_SYMBOLS + ).includes(nativeCurrency) ? _controllerutils.FALL_BACK_VS_CURRENCY : nativeCurrency; ++ let shouldUpdateState = true; + try { + if (currentCurrency && nativeCurrency && // if either currency is an empty string we can skip the comparison + // because it will result in an error from the api and ultimately +@@ -103,23 +104,27 @@ var CurrencyRateController = class extends _pollingcontroller.StaticIntervalPoll + } + } catch (error) { + if (!(error instanceof Error && error.message.includes("market does not exist for this coin pair"))) { ++ // Don't update state on transient / unexpected errors ++ shouldUpdateState = false; + throw error; + } + } finally { + try { +- this.update(() => { +- return { +- currencyRates: { +- ...currencyRates, +- [nativeCurrency]: { +- conversionDate, +- conversionRate, +- usdConversionRate +- } +- }, +- currentCurrency +- }; +- }); ++ if (shouldUpdateState) { ++ this.update(() => { ++ return { ++ currencyRates: { ++ ...currencyRates, ++ [nativeCurrency]: { ++ conversionDate, ++ conversionRate, ++ usdConversionRate ++ } ++ }, ++ currentCurrency ++ }; ++ }); ++ } + } finally { + releaseLock(); + } diff --git a/node_modules/@metamask/assets-controllers/dist/chunk-FMZML3V5.js b/node_modules/@metamask/assets-controllers/dist/chunk-FMZML3V5.js index ee6155c..06a3a04 100644 --- a/node_modules/@metamask/assets-controllers/dist/chunk-FMZML3V5.js diff --git a/patches/@metamask+swaps-controller+9.0.12.patch b/patches/@metamask+swaps-controller+9.0.12.patch new file mode 100644 index 00000000000..9531473c60d --- /dev/null +++ b/patches/@metamask+swaps-controller+9.0.12.patch @@ -0,0 +1,15 @@ +diff --git a/node_modules/@metamask/swaps-controller/dist/constants.js b/node_modules/@metamask/swaps-controller/dist/constants.js +index 4c98522..523f25a 100644 +--- a/node_modules/@metamask/swaps-controller/dist/constants.js ++++ b/node_modules/@metamask/swaps-controller/dist/constants.js +@@ -129,8 +129,8 @@ exports.BSC_SWAPS_TOKEN_OBJECT = { + decimals: 18, + }; + exports.POLYGON_SWAPS_TOKEN_OBJECT = { +- symbol: 'MATIC', +- name: 'Matic', ++ symbol: 'POL', ++ name: 'Polygon', + address: exports.NATIVE_SWAPS_TOKEN_ADDRESS, + decimals: 18, + };