diff --git a/src/Components/Collectibles/CollectiblesSendActionButton.tsx b/src/Components/Collectibles/CollectiblesSendActionButton.tsx index 71f15e25e8..61c6c69bd7 100644 --- a/src/Components/Collectibles/CollectiblesSendActionButton.tsx +++ b/src/Components/Collectibles/CollectiblesSendActionButton.tsx @@ -3,6 +3,7 @@ import React, { useCallback } from "react" import { useI18nContext } from "~i18n" import { Routes } from "~Navigation" import { CollectiblesActionButton } from "./CollectiblesActionButton" +import { useFeatureFlags } from "~Components" type Props = { address: string @@ -13,14 +14,22 @@ export const CollectiblesSendActionButton = ({ address, tokenId, onClose }: Prop const { LL } = useI18nContext() const nav = useNavigation() + const { betterWorldFeature } = useFeatureFlags() const onPress = useCallback(async () => { onClose() + if (betterWorldFeature.balanceScreen?.send?.enabled) { + nav.navigate(Routes.SEND_NFT, { + contractAddress: address, + tokenId, + }) + return + } nav.navigate(Routes.INSERT_ADDRESS_SEND, { contractAddress: address, tokenId, }) - }, [address, nav, onClose, tokenId]) + }, [address, nav, onClose, tokenId, betterWorldFeature.balanceScreen?.send?.enabled]) return ( > step: SendFlowStep @@ -33,7 +34,7 @@ type SendContextType = { setTxError: (hasError: boolean) => void } -const SendContext = React.createContext(undefined) +export const SendContext = React.createContext(undefined) type SendContextProviderProps = PropsWithChildren<{ initialToken?: FungibleTokenWithBalance diff --git a/src/Components/Reusable/Send/Provider/SendNFTContextProvider.spec.tsx b/src/Components/Reusable/Send/Provider/SendNFTContextProvider.spec.tsx new file mode 100644 index 0000000000..6de325c3aa --- /dev/null +++ b/src/Components/Reusable/Send/Provider/SendNFTContextProvider.spec.tsx @@ -0,0 +1,149 @@ +import React from "react" +import { renderHook, act } from "@testing-library/react-hooks" +import { TestWrapper, TestHelpers } from "~Test" +import { SendNFTContextProvider } from "./SendNFTContextProvider" +import { useSendContext } from "./SendContextProvider" +import { RootState } from "~Storage/Redux/Types" + +const { NFT_Mock } = TestHelpers.data + +const createWrapper = (preloadedState: Partial, initialNft?: typeof NFT_Mock) => { + return ({ children }: { children: React.ReactNode }) => ( + + {children} + + ) +} + +describe("SendNFTContextProvider", () => { + it("should render with initial state", () => { + const { result } = renderHook(() => useSendContext(), { + wrapper: createWrapper({}), + }) + + expect(result.current.flowState).toMatchObject({ + nft: undefined, + address: "", + }) + expect(result.current.step).toBe("insertAddress") + }) + + it("should render with initial NFT", () => { + const { result } = renderHook(() => useSendContext(), { + wrapper: createWrapper({}, NFT_Mock), + }) + + expect(result.current.flowState.nft).not.toBeUndefined() + expect(result.current.flowState.nft?.tokenId).toEqual(NFT_Mock.tokenId) + expect(result.current.flowState.nft?.address).toEqual(NFT_Mock.address) + }) + + it("should update the flow state", () => { + const { result } = renderHook(() => useSendContext(), { + wrapper: createWrapper({}, NFT_Mock), + }) + + act(() => { + result.current.setFlowState(prev => ({ + ...prev, + address: "0x1234567890123456789012345678901234567890", + })) + }) + + expect(result.current.flowState.address).toBe("0x1234567890123456789012345678901234567890") + }) + + it("should navigate from insertAddress to summary", () => { + const { result } = renderHook(() => useSendContext(), { + wrapper: createWrapper({}), + }) + + expect(result.current.step).toBe("insertAddress") + + act(() => { + result.current.goToNext() + }) + + expect(result.current.step).toBe("summary") + }) + + it("should navigate from summary back to insertAddress", () => { + const { result } = renderHook(() => useSendContext(), { + wrapper: createWrapper({}), + }) + + expect(result.current.step).toBe("insertAddress") + + act(() => { + result.current.goToNext() + }) + + expect(result.current.step).toBe("summary") + + act(() => { + result.current.goToPrevious() + }) + + expect(result.current.step).toBe("insertAddress") + }) + + it("should not change step when goToPrevious is called on insertAddress", () => { + const { result } = renderHook(() => useSendContext(), { + wrapper: createWrapper({}), + }) + + expect(result.current.step).toBe("insertAddress") + + act(() => { + result.current.goToPrevious() + }) + + expect(result.current.step).toBe("insertAddress") + }) + + it("should not change step when goToNext is called on summary", () => { + const { result } = renderHook(() => useSendContext(), { + wrapper: createWrapper({}), + }) + + act(() => { + result.current.goToNext() + }) + + expect(result.current.step).toBe("summary") + + act(() => { + result.current.goToNext() + }) + + expect(result.current.step).toBe("summary") + }) + + it("should update the isNextButtonEnabled state", () => { + const { result } = renderHook(() => useSendContext(), { + wrapper: createWrapper({}), + }) + + expect(result.current.isNextButtonEnabled).toBe(true) + + act(() => { + result.current.setIsNextButtonEnabled(false) + }) + + expect(result.current.isNextButtonEnabled).toBe(false) + }) + + it("should update the isPreviousButtonEnabled state", () => { + const { result } = renderHook(() => useSendContext(), { + wrapper: createWrapper({}), + }) + + expect(result.current.isPreviousButtonEnabled).toBe(true) + + act(() => { + result.current.setIsPreviousButtonEnabled(false) + }) + + expect(result.current.isPreviousButtonEnabled).toBe(false) + }) +}) diff --git a/src/Components/Reusable/Send/Provider/SendNFTContextProvider.tsx b/src/Components/Reusable/Send/Provider/SendNFTContextProvider.tsx new file mode 100644 index 0000000000..473c101a21 --- /dev/null +++ b/src/Components/Reusable/Send/Provider/SendNFTContextProvider.tsx @@ -0,0 +1,75 @@ +import React, { PropsWithChildren, useCallback, useMemo, useState } from "react" +import { useSharedValue } from "react-native-reanimated" +import { NonFungibleToken } from "~Model" +import { SendContext, SendContextType, SendFlowState, SendFlowStep } from "./SendContextProvider" + +type SendNFTFlowStep = "insertAddress" | "summary" + +type SendNFTContextProviderProps = PropsWithChildren<{ + initialNft?: NonFungibleToken +}> + +export const SendNFTContextProvider = ({ children, initialNft }: SendNFTContextProviderProps) => { + const [step, setStep] = useState("insertAddress") + const [flowState, setFlowState] = useState({ + nft: initialNft, + address: "", + }) + + const [isNextButtonEnabled, setIsNextButtonEnabled] = useState(true) + const [isPreviousButtonEnabled, setIsPreviousButtonEnabled] = useState(true) + + const previousStep = useSharedValue(undefined) + const nextStep = useSharedValue(undefined) + + const goToNext = useCallback(() => { + switch (step) { + case "insertAddress": + nextStep.value = "summary" + previousStep.value = step + setStep("summary") + break + } + }, [nextStep, previousStep, step]) + + const goToPrevious = useCallback(() => { + switch (step) { + case "summary": + nextStep.value = "insertAddress" + previousStep.value = step + setStep("insertAddress") + break + } + }, [nextStep, previousStep, step]) + + const contextValue: SendContextType = useMemo( + () => ({ + flowState, + setFlowState, + step, + previousStep, + nextStep, + isNextButtonEnabled, + isPreviousButtonEnabled, + setIsNextButtonEnabled, + setIsPreviousButtonEnabled, + goToNext, + goToPrevious, + }), + [ + flowState, + setFlowState, + step, + previousStep, + nextStep, + isNextButtonEnabled, + isPreviousButtonEnabled, + setIsNextButtonEnabled, + setIsPreviousButtonEnabled, + goToNext, + goToPrevious, + ], + ) + + return {children} +} diff --git a/src/Components/Reusable/Send/Provider/index.ts b/src/Components/Reusable/Send/Provider/index.ts index 5383551a85..58c8437e1f 100644 --- a/src/Components/Reusable/Send/Provider/index.ts +++ b/src/Components/Reusable/Send/Provider/index.ts @@ -1 +1,2 @@ export * from "./SendContextProvider" +export * from "./SendNFTContextProvider" diff --git a/src/Constants/Theme/Colors.ts b/src/Constants/Theme/Colors.ts index 8ce58189b8..41950596a0 100644 --- a/src/Constants/Theme/Colors.ts +++ b/src/Constants/Theme/Colors.ts @@ -381,8 +381,9 @@ export type Colors = { tokenSelectorBorder: string tokenSelectorText: string disabledTokenCardBackground: string - stepText: string } + stepText: string + stepBackground: string } transak: string } @@ -895,8 +896,9 @@ const light: Colors = { tokenSelectorBorder: COLORS.GREY_100, tokenSelectorText: COLORS.GREY_700, disabledTokenCardBackground: COLORS.GREY_100, - stepText: COLORS.GREY_500, }, + stepText: COLORS.GREY_700, + stepBackground: COLORS.GREY_200, }, transak: COLORS.WHITE, } @@ -1284,8 +1286,9 @@ const dark: Colors = { tokenSelectorBorder: COLORS.DARK_PURPLE_DISABLED, tokenSelectorText: COLORS.GREY_100, disabledTokenCardBackground: COLORS.PURPLE_DISABLED, - stepText: COLORS.GREY_300, }, + stepText: COLORS.GREY_100, + stepBackground: COLORS.PURPLE_DISABLED, }, transak: COLORS.TRANSAK_DARK, } diff --git a/src/Navigation/Stacks/HomeStack.tsx b/src/Navigation/Stacks/HomeStack.tsx index 34a3ecfe62..2626b4ed7e 100644 --- a/src/Navigation/Stacks/HomeStack.tsx +++ b/src/Navigation/Stacks/HomeStack.tsx @@ -47,6 +47,7 @@ import { WalletDetailScreen, WalletManagementScreen, SendScreen, + SendNFTScreen, } from "~Screens" import { AppsSearchScreen } from "~Screens/Flows/App/AppsScreen" import { AssetDetailScreenSheet } from "~Screens/Flows/App/AssetDetailScreenSheet" @@ -182,6 +183,10 @@ export type RootStackParamListHome = { nftAddress: string transactionClauses: TransactionClause[] } + [Routes.SEND_NFT]: { + contractAddress: string + tokenId: string + } [Routes.SEND_NFT_RECAP]: { contractAddress: string tokenId: string @@ -392,6 +397,9 @@ export const HomeStack = () => { options={{ headerShown: false }} /> )} + {betterWorldFeature.balanceScreen.collectibles.enabled && ( + + )} {betterWorldFeature.balanceScreen.collectibles.enabled && ( { options={{ headerShown: false }} /> + + { const isPendingTx = useAppSelector(state => selectPendingTx(state, nft?.id!)) - const onSendPress = useCallback( - () => - nav.navigate(Routes.INSERT_ADDRESS_SEND, { + const { betterWorldFeature } = useFeatureFlags() + + const onSendPress = useCallback(() => { + if (betterWorldFeature.balanceScreen?.send?.enabled) { + nav.navigate(Routes.SEND_NFT, { contractAddress: route.params.collectionAddress!, tokenId: route.params.nftTokenId, - }), - [nav, route.params.collectionAddress, route.params.nftTokenId], - ) + }) + return + } + nav.navigate(Routes.INSERT_ADDRESS_SEND, { + contractAddress: route.params.collectionAddress!, + tokenId: route.params.nftTokenId, + }) + }, [nav, route.params.collectionAddress, route.params.nftTokenId, betterWorldFeature.balanceScreen?.send?.enabled]) const onMarketPlacePress = useCallback(async () => { const supported = await Linking.canOpenURL(nft?.external_url ?? "") diff --git a/src/Screens/Flows/App/NFT/SendNFTScreen/SendNFTScreen.tsx b/src/Screens/Flows/App/NFT/SendNFTScreen/SendNFTScreen.tsx new file mode 100644 index 0000000000..d94df84766 --- /dev/null +++ b/src/Screens/Flows/App/NFT/SendNFTScreen/SendNFTScreen.tsx @@ -0,0 +1,189 @@ +import { RouteProp, useNavigation, useRoute } from "@react-navigation/native" +import { NativeStackNavigationProp } from "@react-navigation/native-stack" +import React, { ReactElement, useCallback, useMemo } from "react" +import { StyleSheet } from "react-native" +import Animated, { + EntryAnimationsValues, + ExitAnimationsValues, + FadeInLeft, + FadeOutLeft, + LinearTransition, +} from "react-native-reanimated" +import { BaseButton, BaseIcon, BaseText, BaseView, Layout } from "~Components" +import { CloseIconHeaderButton } from "~Components/Reusable/HeaderButtons" +import { ReceiverScreen, SendNFTContextProvider, useSendContext } from "~Components/Reusable/Send" +import { useTheme, useThemedStyles } from "~Hooks" +import { RootStackParamListNFT, Routes } from "~Navigation" +import { selectNFTWithAddressAndTokenId, useAppSelector } from "~Storage/Redux" +import { wrapFunctionComponent } from "~Utils/ReanimatedUtils/Reanimated" +import { useI18nContext } from "~i18n" +import { EnteringFromLeftAnimation, EnteringFromRightAnimation } from "../../SendScreen/Animations/Entering" +import { ExitingToLeftAnimation, ExitingToRightAnimation } from "../../SendScreen/Animations/Exiting" + +const TOTAL_STEPS = 2 + +type SendNFTFlowStep = "insertAddress" | "summary" + +const ORDER: SendNFTFlowStep[] = ["insertAddress", "summary"] + +type NavigationProps = NativeStackNavigationProp + +const AnimatedBaseButton = Animated.createAnimatedComponent(wrapFunctionComponent(BaseButton)) +const AnimatedBaseView = Animated.createAnimatedComponent(wrapFunctionComponent(BaseView)) + +type RouteProps = RouteProp + +export const SendNFTScreenContent = (): ReactElement => { + const { LL } = useI18nContext() + const theme = useTheme() + + const navigation = useNavigation() + const { styles } = useThemedStyles(baseStyles) + const { step, previousStep, nextStep, goToNext, goToPrevious, isPreviousButtonEnabled, isNextButtonEnabled } = + useSendContext() + + const handleClose = useCallback(() => { + navigation.goBack() + }, [navigation]) + + const stepInfo = useMemo(() => { + switch (step) { + case "insertAddress": + return { icon: "icon-user-check" as const, name: LL.SEND_RECEIVER(), currentStep: 1 } + case "summary": + return { icon: "icon-list-checks" as const, name: LL.SEND_REVIEW_DETAILS(), currentStep: 2 } + default: + return { icon: "icon-user" as const, name: "", currentStep: 1 } + } + }, [step, LL]) + + const headerRightElement = useMemo( + () => , + [handleClose], + ) + + const Entering = useCallback( + (values: EntryAnimationsValues) => { + "worklet" + if (!previousStep.value || !nextStep.value) + return { + initialValues: values, + animations: {}, + } + if (ORDER.indexOf(nextStep.value as SendNFTFlowStep) > ORDER.indexOf(previousStep.value as SendNFTFlowStep)) + return EnteringFromRightAnimation(values) + return EnteringFromLeftAnimation(values) + }, + [nextStep.value, previousStep.value], + ) + + const Exiting = useCallback( + (values: ExitAnimationsValues) => { + "worklet" + if (!previousStep.value || !nextStep.value) + return { + initialValues: values, + animations: {}, + } + if (ORDER.indexOf(nextStep.value as SendNFTFlowStep) > ORDER.indexOf(previousStep.value as SendNFTFlowStep)) + return ExitingToLeftAnimation(values) + return ExitingToRightAnimation(values) + }, + [nextStep.value, previousStep.value], + ) + + return ( + + + + + {stepInfo.name} + + + {LL.SEND_STEP_OF({ + currentStep: stepInfo.currentStep.toString(), + totalSteps: TOTAL_STEPS.toString(), + })} + + + + + {step === "insertAddress" && } + {step === "summary" && <>} + + + } + footer={ + + {step !== "insertAddress" && ( + + {LL.COMMON_LBL_BACK()} + + )} + + {LL.COMMON_LBL_NEXT()} + + + } + /> + ) +} + +export const SendNFTScreen = () => { + const route = useRoute() + + const nft = useAppSelector(state => + selectNFTWithAddressAndTokenId(state, route.params.contractAddress, route.params.tokenId), + ) + + return ( + + + + ) +} + +const baseStyles = () => + StyleSheet.create({ + flexElement: { flex: 1 }, + viewContainer: { paddingHorizontal: 16 }, + stepIndicator: { + flexDirection: "row", + alignItems: "center", + justifyContent: "space-between", + paddingTop: 16, + paddingHorizontal: 24, + }, + stepIndicatorLeft: { + flexDirection: "row", + alignItems: "center", + gap: 8, + }, + }) diff --git a/src/Screens/Flows/App/NFT/SendNFTScreen/index.ts b/src/Screens/Flows/App/NFT/SendNFTScreen/index.ts new file mode 100644 index 0000000000..0ed2c0d226 --- /dev/null +++ b/src/Screens/Flows/App/NFT/SendNFTScreen/index.ts @@ -0,0 +1 @@ +export * from "./SendNFTScreen" diff --git a/src/Screens/Flows/App/NFT/index.ts b/src/Screens/Flows/App/NFT/index.ts index e5d6edd78c..5af01441f0 100644 --- a/src/Screens/Flows/App/NFT/index.ts +++ b/src/Screens/Flows/App/NFT/index.ts @@ -3,4 +3,5 @@ export * from "./NFTScreen/NFTScreen" export * from "./NFTCollectionDetailScreen" export * from "./BlackListedCollectionsScreen" export * from "./SendNFTRecapScreen" +export * from "./SendNFTScreen" export * from "./NFTReportCollection" diff --git a/src/i18n/i18n-types.ts b/src/i18n/i18n-types.ts index e46f137d74..ac936a04df 100644 --- a/src/i18n/i18n-types.ts +++ b/src/i18n/i18n-types.ts @@ -4365,18 +4365,34 @@ type RootTranslation = { * N​o​ ​c​o​n​t​a​c​t​s​ ​a​d​d​e​d */ SEND_CONTACTS_EMPTY_STATE_TITLE: string + /** + * S​e​n​d​ ​c​o​l​l​e​c​t​i​b​l​e + */ + SEND_COLLECTIBLE: string /** * W​a​l​l​e​t​ ​a​d​d​r​e​s​s */ SEND_CREATE_CONTACT_ADDRESS: string + /** + * I​n​s​e​r​t​ ​w​a​l​l​e​t​ ​a​d​d​r​e​s​s + */ + SEND_CREATE_CONTACT_ADDRESS_PLACEHOLDER: string /** * C​R​E​A​T​E​ ​C​O​N​T​A​C​T */ SEND_CREATE_CONTACT_CREATE_BUTTON: string + /** + * A​d​d​ ​t​h​i​s​ ​w​a​l​l​e​t​ ​t​o​ ​M​y​ ​C​o​n​t​a​c​t​s + */ + SEND_CREATE_CONTACT_DESCRIPTION: string /** * N​a​m​e */ SEND_CREATE_CONTACT_NAME: string + /** + * I​n​s​e​r​t​ ​c​o​n​t​a​c​t​ ​n​a​m​e + */ + SEND_CREATE_CONTACT_NAME_PLACEHOLDER: string /** * P​R​O​C​E​E​D​ ​A​N​Y​W​A​Y */ @@ -4602,6 +4618,10 @@ type RootTranslation = { * 0​% */ SEND_RANGE_ZERO: string + /** + * R​e​c​e​i​v​e​r + */ + SEND_RECEIVER: string /** * C​l​e​a​r */ @@ -4664,6 +4684,16 @@ type RootTranslation = { * N​o​ ​r​e​c​e​n​t​ ​a​c​t​i​v​i​t​y */ SEND_RECENT_EMPTY_STATE_TITLE: string + /** + * R​e​v​i​e​w​ ​d​e​t​a​i​l​s + */ + SEND_REVIEW_DETAILS: string + /** + * {​c​u​r​r​e​n​t​S​t​e​p​}​ ​o​f​ ​{​t​o​t​a​l​S​t​e​p​s​} + * @param {string} currentStep + * @param {string} totalSteps + */ + SEND_STEP_OF: RequiredParams<'currentStep' | 'totalSteps'> /** * {​s​t​e​p​N​u​m​b​e​r​}​ ​o​f​ ​3 * @param {string} stepNumber @@ -5797,18 +5827,6 @@ type RootTranslation = { * Y​e​s​t​e​r​d​a​y */ YESTERDAY: string - /** - * A​d​d​ ​t​h​i​s​ ​w​a​l​l​e​t​ ​t​o​ ​M​y​ ​C​o​n​t​a​c​t​s - */ - SEND_CREATE_CONTACT_DESCRIPTION: string - /** - * I​n​s​e​r​t​ ​c​o​n​t​a​c​t​ ​n​a​m​e - */ - SEND_CREATE_CONTACT_NAME_PLACEHOLDER: string - /** - * I​n​s​e​r​t​ ​w​a​l​l​e​t​ ​a​d​d​r​e​s​s - */ - SEND_CREATE_CONTACT_ADDRESS_PLACEHOLDER: string } export type TranslationFunctions = { @@ -10091,18 +10109,34 @@ This action is irreversible. * No contacts added */ SEND_CONTACTS_EMPTY_STATE_TITLE: () => LocalizedString + /** + * Send collectible + */ + SEND_COLLECTIBLE: () => LocalizedString /** * Wallet address */ SEND_CREATE_CONTACT_ADDRESS: () => LocalizedString + /** + * Insert wallet address + */ + SEND_CREATE_CONTACT_ADDRESS_PLACEHOLDER: () => LocalizedString /** * CREATE CONTACT */ SEND_CREATE_CONTACT_CREATE_BUTTON: () => LocalizedString + /** + * Add this wallet to My Contacts + */ + SEND_CREATE_CONTACT_DESCRIPTION: () => LocalizedString /** * Name */ SEND_CREATE_CONTACT_NAME: () => LocalizedString + /** + * Insert contact name + */ + SEND_CREATE_CONTACT_NAME_PLACEHOLDER: () => LocalizedString /** * PROCEED ANYWAY */ @@ -10327,6 +10361,10 @@ This action is irreversible. * 0% */ SEND_RANGE_ZERO: () => LocalizedString + /** + * Receiver + */ + SEND_RECEIVER: () => LocalizedString /** * Clear */ @@ -10389,6 +10427,14 @@ This action is irreversible. * No recent activity */ SEND_RECENT_EMPTY_STATE_TITLE: () => LocalizedString + /** + * Review details + */ + SEND_REVIEW_DETAILS: () => LocalizedString + /** + * {currentStep} of {totalSteps} + */ + SEND_STEP_OF: (arg: { currentStep: string, totalSteps: string }) => LocalizedString /** * {stepNumber} of 3 */ @@ -11508,18 +11554,6 @@ VET can be used for staking on StarGate - VeChain’s native staking platform - * Yesterday */ YESTERDAY: () => LocalizedString - /** - * Add this wallet to My Contacts - */ - SEND_CREATE_CONTACT_DESCRIPTION: () => LocalizedString - /** - * Insert contact name - */ - SEND_CREATE_CONTACT_NAME_PLACEHOLDER: () => LocalizedString - /** - * Insert wallet address - */ - SEND_CREATE_CONTACT_ADDRESS_PLACEHOLDER: () => LocalizedString } export type Formatters = { diff --git a/src/i18n/translations/de.json b/src/i18n/translations/de.json index 08f1dc32b9..7cea99f17a 100644 --- a/src/i18n/translations/de.json +++ b/src/i18n/translations/de.json @@ -460,9 +460,9 @@ "COMMON_24H": "24 Std", "COMMON_24H_PRICE_RANGE": "24-Stunden-Bereich", "COMMON_24H_VOLUME": "24-Stunden-Volumen", - "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "Angezeigte Beträge wurden basierend auf dem neuesten Marktpreis aktualisiert.", + "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "Angezeigte Beträge wurden basierend auf dem aktuellen Marktpreis aktualisiert.", "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "Token-Betrag wurde für die Transaktionsgebühr angepasst.", - "COMMON_ALERT_TRANSACTION_FAILED": "Transaktion fehlgeschlagen. Bitte versuchen Sie es erneut.", + "COMMON_ALERT_TRANSACTION_FAILED": "Transaktion fehlgeschlagen. Bitte versuche es erneut.", "COMMON_ASSETS": "Vermögenswerte", "COMMON_BTN_ADD": "Hinzufügen", "COMMON_BTN_APPLY": "Anwenden", @@ -1062,6 +1062,7 @@ "SEND_AMOUNT": "Betrag", "SEND_AMOUNT_EXCEEDS_BALANCE": "Betrag überschreitet Guthaben", "SEND_BALANCE_PERCENTAGE": "Kontostand Prozentsatz: {percentage: string}", + "SEND_COLLECTIBLE": "Sammelobjekt senden", "SEND_CONTACTS_EMPTY_STATE_DESCRIPTION": "Füge deinen ersten Kontakt hinzu, um schneller senden zu können und Fehler zu vermeiden.", "SEND_CONTACTS_EMPTY_STATE_TITLE": "Keine Kontakte hinzugefügt", "SEND_CREATE_CONTACT_ADDRESS": "Wallet-Adresse", @@ -1126,6 +1127,7 @@ "SEND_PLEASE_TYPE_ADDRESS": "Geben Sie eine Adresse oder einen .vet-Domainnamen ein", "SEND_RANGE_MAX": "MAX", "SEND_RANGE_ZERO": "0%", + "SEND_RECEIVER": "Empfänger", "SEND_RECEIVER_ADDRESS_INPUT_CLEAR": "Löschen", "SEND_RECEIVER_ADDRESS_INPUT_ERROR": "Ungültige Wallet-Adresse, Benutzername oder Domain", "SEND_RECEIVER_ADDRESS_INPUT_LABEL": "Wallet-Adresse", @@ -1141,6 +1143,8 @@ "SEND_RECEIVE_TAB_SCAN": "Scannen", "SEND_RECENT_EMPTY_STATE_DESCRIPTION": "Sobald Sie an eine Adresse gesendet haben, erscheint sie hier für den Schnellzugriff.", "SEND_RECENT_EMPTY_STATE_TITLE": "Keine letzte Aktivität", + "SEND_REVIEW_DETAILS": "Details überprüfen", + "SEND_STEP_OF": "{currentStep: string} von {totalSteps: string}", "SEND_STEP_OF_3": "{stepNumber} von 3", "SEND_TO": "An", "SEND_TOKEN_AMOUNT": "Token-Betrag", diff --git a/src/i18n/translations/en.json b/src/i18n/translations/en.json index ae41afbdcc..e87ef1246d 100644 --- a/src/i18n/translations/en.json +++ b/src/i18n/translations/en.json @@ -1062,6 +1062,7 @@ "SEND_AMOUNT": "Amount", "SEND_AMOUNT_EXCEEDS_BALANCE": "Amount exceeds balance", "SEND_BALANCE_PERCENTAGE": "Balance percentage: {percentage: string}", + "SEND_COLLECTIBLE": "Send collectible", "SEND_CONTACTS_EMPTY_STATE_DESCRIPTION": "Add your first contact to send faster and avoid errors.", "SEND_CONTACTS_EMPTY_STATE_TITLE": "No contacts added", "SEND_CREATE_CONTACT_ADDRESS": "Wallet address", @@ -1126,6 +1127,7 @@ "SEND_PLEASE_TYPE_ADDRESS": "Type in an address or a .vet domain name", "SEND_RANGE_MAX": "MAX", "SEND_RANGE_ZERO": "0%", + "SEND_RECEIVER": "Receiver", "SEND_RECEIVER_ADDRESS_INPUT_CLEAR": "Clear", "SEND_RECEIVER_ADDRESS_INPUT_ERROR": "Invalid wallet address, username or domain", "SEND_RECEIVER_ADDRESS_INPUT_LABEL": "Wallet address", @@ -1141,6 +1143,8 @@ "SEND_RECEIVE_TAB_SCAN": "Scan", "SEND_RECENT_EMPTY_STATE_DESCRIPTION": "Once you send to an address, it’ll show up here for quick access.", "SEND_RECENT_EMPTY_STATE_TITLE": "No recent activity", + "SEND_REVIEW_DETAILS": "Review details", + "SEND_STEP_OF": "{currentStep: string} of {totalSteps: string}", "SEND_STEP_OF_3": "{stepNumber: string} of 3", "SEND_TO": "To", "SEND_TOKEN_AMOUNT": "Token amount", diff --git a/src/i18n/translations/es.json b/src/i18n/translations/es.json index 419f4a5c38..e04cfc44ff 100644 --- a/src/i18n/translations/es.json +++ b/src/i18n/translations/es.json @@ -460,9 +460,9 @@ "COMMON_24H": "24 h", "COMMON_24H_PRICE_RANGE": "Rango 24h", "COMMON_24H_VOLUME": "Volumen 24h", - "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "Las cantidades mostradas se han actualizado según el último precio de mercado.", - "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "La cantidad de tokens se ajustó por la comisión de transacción.", - "COMMON_ALERT_TRANSACTION_FAILED": "La transacción falló. Por favor, inténtalo de nuevo.", + "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "Los montos mostrados se han actualizado según el precio de mercado más reciente.", + "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "La cantidad del token se ajustó para la comisión de la transacción.", + "COMMON_ALERT_TRANSACTION_FAILED": "La transacción ha fallado. Por favor, inténtalo de nuevo.", "COMMON_ASSETS": "Activos", "COMMON_BTN_ADD": "Agregar", "COMMON_BTN_APPLY": "Aplicar", @@ -1062,6 +1062,7 @@ "SEND_AMOUNT": "Cantidad", "SEND_AMOUNT_EXCEEDS_BALANCE": "La cantidad excede el saldo", "SEND_BALANCE_PERCENTAGE": "Porcentaje de saldo: {percentage: string}", + "SEND_COLLECTIBLE": "Enviar coleccionable", "SEND_CONTACTS_EMPTY_STATE_DESCRIPTION": "Agrega tu primer contacto para enviar más rápido y evitar errores.", "SEND_CONTACTS_EMPTY_STATE_TITLE": "No se agregaron contactos", "SEND_CREATE_CONTACT_ADDRESS": "Dirección de billetera", @@ -1126,13 +1127,14 @@ "SEND_PLEASE_TYPE_ADDRESS": "Escriba una dirección o un nombre de dominio .vet", "SEND_RANGE_MAX": "MÁX", "SEND_RANGE_ZERO": "0%", + "SEND_RECEIVER": "Destinatario", "SEND_RECEIVER_ADDRESS_INPUT_CLEAR": "Borrar", "SEND_RECEIVER_ADDRESS_INPUT_ERROR": "Dirección de billetera, nombre de usuario o dominio inválido", "SEND_RECEIVER_ADDRESS_INPUT_LABEL": "Dirección de billetera", "SEND_RECEIVER_ADDRESS_INPUT_PASTE": "Pegar", "SEND_RECEIVER_ADDRESS_INPUT_PLACEHOLDER": "Billetera o dominio", "SEND_RECEIVER_ADD_CONTACT_BTN": "Agregar esta nueva dirección a mis contactos", - "SEND_RECEIVER_DETAILS": "Ver detalles", + "SEND_RECEIVER_DETAILS": "Revisar detalles", "SEND_RECEIVER_DETAILS_COUNT": "{current: number} de {total: number}", "SEND_RECEIVER_FILTER_ACCOUNTS": "Cuentas", "SEND_RECEIVER_FILTER_CONTACTS": "Contactos", @@ -1141,6 +1143,8 @@ "SEND_RECEIVE_TAB_SCAN": "Escanear", "SEND_RECENT_EMPTY_STATE_DESCRIPTION": "Una vez que envíes a una dirección, aparecerá aquí para un acceso rápido.", "SEND_RECENT_EMPTY_STATE_TITLE": "Sin actividad reciente", + "SEND_REVIEW_DETAILS": "Revisar detalles", + "SEND_STEP_OF": "{currentStep: string} de {totalSteps: string}", "SEND_STEP_OF_3": "{stepNumber: string} de 3", "SEND_TO": "Para", "SEND_TOKEN_AMOUNT": "Cantidad de tokens", diff --git a/src/i18n/translations/fr.json b/src/i18n/translations/fr.json index 77756e7eea..e0db5029cc 100644 --- a/src/i18n/translations/fr.json +++ b/src/i18n/translations/fr.json @@ -461,7 +461,7 @@ "COMMON_24H_PRICE_RANGE": "Plage sur 24h", "COMMON_24H_VOLUME": "Volume sur 24h", "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "Les montants affichés ont été mis à jour selon le dernier prix du marché.", - "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "Le montant du token a été ajusté pour les frais de transaction.", + "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "Le montant du jeton a été ajusté pour les frais de transaction.", "COMMON_ALERT_TRANSACTION_FAILED": "La transaction a échoué. Veuillez réessayer.", "COMMON_ASSETS": "Actifs", "COMMON_BTN_ADD": "Ajouter", @@ -1062,6 +1062,7 @@ "SEND_AMOUNT": "Montant", "SEND_AMOUNT_EXCEEDS_BALANCE": "Le montant dépasse le solde", "SEND_BALANCE_PERCENTAGE": "Pourcentage du solde : {percentage: string}", + "SEND_COLLECTIBLE": "Envoyer un objet de collection", "SEND_CONTACTS_EMPTY_STATE_DESCRIPTION": "Ajoutez votre premier contact pour envoyer plus rapidement et éviter les erreurs.", "SEND_CONTACTS_EMPTY_STATE_TITLE": "Aucun contact ajouté", "SEND_CREATE_CONTACT_ADDRESS": "Adresse du portefeuille", @@ -1126,6 +1127,7 @@ "SEND_PLEASE_TYPE_ADDRESS": "Tapez une adresse ou un nom de domaine .vet", "SEND_RANGE_MAX": "MAX", "SEND_RANGE_ZERO": "0 %", + "SEND_RECEIVER": "Destinataire", "SEND_RECEIVER_ADDRESS_INPUT_CLEAR": "Effacer", "SEND_RECEIVER_ADDRESS_INPUT_ERROR": "Adresse du portefeuille, nom d'utilisateur ou domaine invalide", "SEND_RECEIVER_ADDRESS_INPUT_LABEL": "Adresse du portefeuille", @@ -1141,6 +1143,8 @@ "SEND_RECEIVE_TAB_SCAN": "Scanner", "SEND_RECENT_EMPTY_STATE_DESCRIPTION": "Une fois que vous envoyez à une adresse, elle apparaîtra ici pour un accès rapide.", "SEND_RECENT_EMPTY_STATE_TITLE": "Aucune activité récente", + "SEND_REVIEW_DETAILS": "Vérifier les détails", + "SEND_STEP_OF": "{currentStep: string} sur {totalSteps: string}", "SEND_STEP_OF_3": "{stepNumber: string} sur 3", "SEND_TO": "À", "SEND_TOKEN_AMOUNT": "Montant du jeton", @@ -1308,7 +1312,7 @@ "TITLE_WELCOME_TO": "Bienvenue à ", "TO": "À", "TODAY": "Aujourd'hui", - "TOKEN": "Token", + "TOKEN": "Jeton", "TOKEN_BUY": "Acheter un jeton", "TOKEN_BUY_SUBTITLE": "Ajouter du solde en achetant avec de la monnaie fiduciaire", "TOKEN_CONVERSION": "Conversion de jetons", diff --git a/src/i18n/translations/hi.json b/src/i18n/translations/hi.json index 41191a5aa5..63e7072b57 100644 --- a/src/i18n/translations/hi.json +++ b/src/i18n/translations/hi.json @@ -460,9 +460,9 @@ "COMMON_24H": "24 घंटे", "COMMON_24H_PRICE_RANGE": "24 घंटे रेंज", "COMMON_24H_VOLUME": "24 घंटे वॉल्यूम", - "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "प्रदर्शित राशि नवीनतम बाजार मूल्य के अनुसार अपडेट कर दी गई है।", - "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "लेनदेन शुल्क के लिए टोकन राशि समायोजित की गई है।", - "COMMON_ALERT_TRANSACTION_FAILED": "लेनदेन विफल रहा। कृपया पुनः प्रयास करें।", + "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "प्रदर्शित राशि नवीनतम बाजार मूल्य के अनुसार अपडेट की गई है।", + "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "लेन-देन शुल्क के लिए टोकन राशि को समायोजित किया गया है।", + "COMMON_ALERT_TRANSACTION_FAILED": "लेन-देन असफल हुआ। कृपया पुनः प्रयास करें।", "COMMON_ASSETS": "संपत्ति", "COMMON_BTN_ADD": "जोड़ें", "COMMON_BTN_APPLY": "लागू करें", @@ -1062,6 +1062,7 @@ "SEND_AMOUNT": "राशि", "SEND_AMOUNT_EXCEEDS_BALANCE": "राशि शेष से अधिक है", "SEND_BALANCE_PERCENTAGE": "बैलेंस प्रतिशत: {percentage: string}", + "SEND_COLLECTIBLE": "कलेक्टिबल भेजें", "SEND_CONTACTS_EMPTY_STATE_DESCRIPTION": "तेज़ भेजने और गलतियों से बचने के लिए अपना पहला संपर्क जोड़ें।", "SEND_CONTACTS_EMPTY_STATE_TITLE": "कोई संपर्क नहीं जोड़ा गया", "SEND_CREATE_CONTACT_ADDRESS": "वॉलेट पता", @@ -1126,13 +1127,14 @@ "SEND_PLEASE_TYPE_ADDRESS": "एक पता या .vet डोमेन नाम टाइप करें", "SEND_RANGE_MAX": "अधिकतम", "SEND_RANGE_ZERO": "0%", + "SEND_RECEIVER": "प्राप्तकर्ता", "SEND_RECEIVER_ADDRESS_INPUT_CLEAR": "साफ करें", "SEND_RECEIVER_ADDRESS_INPUT_ERROR": "अमान्य वॉलेट पता, उपयोगकर्ता नाम या डोमेन", "SEND_RECEIVER_ADDRESS_INPUT_LABEL": "वॉलेट पता", "SEND_RECEIVER_ADDRESS_INPUT_PASTE": "पेस्ट करें", "SEND_RECEIVER_ADDRESS_INPUT_PLACEHOLDER": "वॉलेट या डोमेन", "SEND_RECEIVER_ADD_CONTACT_BTN": "इस नए पते को मेरे संपर्कों में जोड़ें", - "SEND_RECEIVER_DETAILS": "विवरण की समीक्षा करें", + "SEND_RECEIVER_DETAILS": "विवरण देखें", "SEND_RECEIVER_DETAILS_COUNT": "{current: number} में से {total: number}", "SEND_RECEIVER_FILTER_ACCOUNTS": "खाते", "SEND_RECEIVER_FILTER_CONTACTS": "संपर्क", @@ -1141,6 +1143,8 @@ "SEND_RECEIVE_TAB_SCAN": "स्कैन", "SEND_RECENT_EMPTY_STATE_DESCRIPTION": "एक बार जब आप किसी पते पर भेजेंगे, तो वह यहाँ त्वरित पहुँच के लिए दिखेगा।", "SEND_RECENT_EMPTY_STATE_TITLE": "कोई हालिया गतिविधि नहीं", + "SEND_REVIEW_DETAILS": "विवरण देखें", + "SEND_STEP_OF": "{currentStep: string} में से {totalSteps: string}", "SEND_STEP_OF_3": "3 में से {stepNumber: string}", "SEND_TO": "प्रति", "SEND_TOKEN_AMOUNT": "टोकन राशि", diff --git a/src/i18n/translations/it.json b/src/i18n/translations/it.json index 696d227321..355224e2ab 100644 --- a/src/i18n/translations/it.json +++ b/src/i18n/translations/it.json @@ -462,7 +462,7 @@ "COMMON_24H_VOLUME": "Volume 24h", "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "Gli importi visualizzati sono stati aggiornati in base al prezzo di mercato più recente.", "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "L'importo del token è stato adeguato per la commissione di transazione.", - "COMMON_ALERT_TRANSACTION_FAILED": "Transazione fallita. Per favore riprova.", + "COMMON_ALERT_TRANSACTION_FAILED": "Transazione non riuscita. Per favore riprova.", "COMMON_ASSETS": "Risorse", "COMMON_BTN_ADD": "Aggiungi", "COMMON_BTN_APPLY": "Applica", @@ -1062,6 +1062,7 @@ "SEND_AMOUNT": "Importo", "SEND_AMOUNT_EXCEEDS_BALANCE": "Importo superiore al saldo", "SEND_BALANCE_PERCENTAGE": "Percentuale del saldo: {percentage: string}", + "SEND_COLLECTIBLE": "Invia collezionabile", "SEND_CONTACTS_EMPTY_STATE_DESCRIPTION": "Aggiungi il tuo primo contatto per inviare più velocemente ed evitare errori.", "SEND_CONTACTS_EMPTY_STATE_TITLE": "Nessun contatto aggiunto", "SEND_CREATE_CONTACT_ADDRESS": "Indirizzo wallet", @@ -1126,6 +1127,7 @@ "SEND_PLEASE_TYPE_ADDRESS": "Digita un indirizzo o un nome di dominio .vet", "SEND_RANGE_MAX": "MAX", "SEND_RANGE_ZERO": "0%", + "SEND_RECEIVER": "Destinatario", "SEND_RECEIVER_ADDRESS_INPUT_CLEAR": "Cancella", "SEND_RECEIVER_ADDRESS_INPUT_ERROR": "Indirizzo wallet, username o dominio non valido", "SEND_RECEIVER_ADDRESS_INPUT_LABEL": "Indirizzo wallet", @@ -1141,6 +1143,8 @@ "SEND_RECEIVE_TAB_SCAN": "Scansiona", "SEND_RECENT_EMPTY_STATE_DESCRIPTION": "Quando invii a un indirizzo, apparirà qui per un accesso rapido.", "SEND_RECENT_EMPTY_STATE_TITLE": "Nessuna attività recente", + "SEND_REVIEW_DETAILS": "Rivedi i dettagli", + "SEND_STEP_OF": "{currentStep: string} di {totalSteps: string}", "SEND_STEP_OF_3": "{stepNumber: string} di 3", "SEND_TO": "A", "SEND_TOKEN_AMOUNT": "Importo del token", diff --git a/src/i18n/translations/ja.json b/src/i18n/translations/ja.json index 9312f6a88f..92869ddc50 100644 --- a/src/i18n/translations/ja.json +++ b/src/i18n/translations/ja.json @@ -461,8 +461,8 @@ "COMMON_24H_PRICE_RANGE": "24時間の範囲", "COMMON_24H_VOLUME": "24時間の取引量", "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "表示されている金額は最新の市場価格に基づき更新されました。", - "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "トークン数量が手数料に合わせて調整されました。", - "COMMON_ALERT_TRANSACTION_FAILED": "取引に失敗しました。もう一度お試しください。", + "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "取引手数料に合わせてトークン数が調整されました。", + "COMMON_ALERT_TRANSACTION_FAILED": "取引に失敗しました。再度お試しください。", "COMMON_ASSETS": "資産", "COMMON_BTN_ADD": "追加", "COMMON_BTN_APPLY": "適用", @@ -1062,6 +1062,7 @@ "SEND_AMOUNT": "金額", "SEND_AMOUNT_EXCEEDS_BALANCE": "金額が残高を超えています", "SEND_BALANCE_PERCENTAGE": "残高の割合: {percentage: string}", + "SEND_COLLECTIBLE": "コレクティブルを送る", "SEND_CONTACTS_EMPTY_STATE_DESCRIPTION": "最初の連絡先を追加して、より速く送信しエラーを防ぎましょう。", "SEND_CONTACTS_EMPTY_STATE_TITLE": "連絡先が追加されていません", "SEND_CREATE_CONTACT_ADDRESS": "ウォレットアドレス", @@ -1126,6 +1127,7 @@ "SEND_PLEASE_TYPE_ADDRESS": "住所または.vetドメイン名を入力してください", "SEND_RANGE_MAX": "最大", "SEND_RANGE_ZERO": "0%", + "SEND_RECEIVER": "受取人", "SEND_RECEIVER_ADDRESS_INPUT_CLEAR": "クリア", "SEND_RECEIVER_ADDRESS_INPUT_ERROR": "無効なウォレットアドレス、ユーザー名またはドメインです", "SEND_RECEIVER_ADDRESS_INPUT_LABEL": "ウォレットアドレス", @@ -1133,7 +1135,7 @@ "SEND_RECEIVER_ADDRESS_INPUT_PLACEHOLDER": "ウォレットまたはドメイン", "SEND_RECEIVER_ADD_CONTACT_BTN": "この新しいアドレスを連絡先に追加する", "SEND_RECEIVER_DETAILS": "詳細を確認", - "SEND_RECEIVER_DETAILS_COUNT": "{current} / {total}", + "SEND_RECEIVER_DETAILS_COUNT": "{current}/{total}", "SEND_RECEIVER_FILTER_ACCOUNTS": "アカウント", "SEND_RECEIVER_FILTER_CONTACTS": "連絡先", "SEND_RECEIVER_FILTER_RECENT": "最近", @@ -1141,6 +1143,8 @@ "SEND_RECEIVE_TAB_SCAN": "スキャン", "SEND_RECENT_EMPTY_STATE_DESCRIPTION": "一度アドレスに送信すると、ここに表示され素早くアクセスできます。", "SEND_RECENT_EMPTY_STATE_TITLE": "最近のアクティビティはありません", + "SEND_REVIEW_DETAILS": "詳細を確認", + "SEND_STEP_OF": "{currentStep}/{totalSteps}", "SEND_STEP_OF_3": "{stepNumber} / 3", "SEND_TO": "送り先", "SEND_TOKEN_AMOUNT": "トークン数量", diff --git a/src/i18n/translations/ko.json b/src/i18n/translations/ko.json index 8713aac68e..ece7e41854 100644 --- a/src/i18n/translations/ko.json +++ b/src/i18n/translations/ko.json @@ -460,9 +460,9 @@ "COMMON_24H": "24시간", "COMMON_24H_PRICE_RANGE": "24시간 범위", "COMMON_24H_VOLUME": "24시간 거래량", - "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "최신 시세를 반영하여 표시 금액이 업데이트되었습니다.", - "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "거래 수수료로 인해 토큰 수량이 조정되었습니다.", - "COMMON_ALERT_TRANSACTION_FAILED": "거래가 실패했습니다. 다시 시도해 주세요.", + "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "표시된 금액이 최신 시세 기준으로 업데이트되었습니다.", + "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "수수료에 맞게 토큰 금액이 조정되었습니다.", + "COMMON_ALERT_TRANSACTION_FAILED": "거래에 실패했습니다. 다시 시도해 주세요.", "COMMON_ASSETS": "자산", "COMMON_BTN_ADD": "추가", "COMMON_BTN_APPLY": "적용", @@ -1062,6 +1062,7 @@ "SEND_AMOUNT": "금액", "SEND_AMOUNT_EXCEEDS_BALANCE": "금액이 잔액을 초과합니다", "SEND_BALANCE_PERCENTAGE": "잔액 비율: {percentage: string}", + "SEND_COLLECTIBLE": "컬렉터블 보내기", "SEND_CONTACTS_EMPTY_STATE_DESCRIPTION": "첫 번째 연락처를 추가하여 더 빠르고 안전하게 전송하세요.", "SEND_CONTACTS_EMPTY_STATE_TITLE": "연락처가 없습니다", "SEND_CREATE_CONTACT_ADDRESS": "지갑 주소", @@ -1126,13 +1127,14 @@ "SEND_PLEASE_TYPE_ADDRESS": "주소나 .vet 도메인 이름을 입력하세요", "SEND_RANGE_MAX": "최대", "SEND_RANGE_ZERO": "0%", + "SEND_RECEIVER": "수신자", "SEND_RECEIVER_ADDRESS_INPUT_CLEAR": "지우기", "SEND_RECEIVER_ADDRESS_INPUT_ERROR": "유효하지 않은 지갑 주소, 사용자명 또는 도메인입니다", "SEND_RECEIVER_ADDRESS_INPUT_LABEL": "지갑 주소", "SEND_RECEIVER_ADDRESS_INPUT_PASTE": "붙여넣기", "SEND_RECEIVER_ADDRESS_INPUT_PLACEHOLDER": "지갑 주소 또는 도메인", "SEND_RECEIVER_ADD_CONTACT_BTN": "이 주소를 내 연락처에 추가하기", - "SEND_RECEIVER_DETAILS": "상세 정보 확인", + "SEND_RECEIVER_DETAILS": "세부 정보 검토", "SEND_RECEIVER_DETAILS_COUNT": "{current} / {total}", "SEND_RECEIVER_FILTER_ACCOUNTS": "계정", "SEND_RECEIVER_FILTER_CONTACTS": "연락처", @@ -1141,6 +1143,8 @@ "SEND_RECEIVE_TAB_SCAN": "스캔", "SEND_RECENT_EMPTY_STATE_DESCRIPTION": "주소로 송금하면, 빠른 접근을 위해 여기에 표시됩니다.", "SEND_RECENT_EMPTY_STATE_TITLE": "최근 활동 없음", + "SEND_REVIEW_DETAILS": "세부 정보 검토", + "SEND_STEP_OF": "{currentStep} / {totalSteps}", "SEND_STEP_OF_3": "3단계 중 {stepNumber}", "SEND_TO": "송신", "SEND_TOKEN_AMOUNT": "토큰 금액", diff --git a/src/i18n/translations/nl.json b/src/i18n/translations/nl.json index df3052027b..cfbd3d86d3 100644 --- a/src/i18n/translations/nl.json +++ b/src/i18n/translations/nl.json @@ -460,8 +460,8 @@ "COMMON_24H": "24 uur", "COMMON_24H_PRICE_RANGE": "24u bereik", "COMMON_24H_VOLUME": "24u volume", - "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "Weergavebedragen zijn bijgewerkt op basis van de laatste marktprijs.", - "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "Tokenhoeveelheid aangepast voor transactiekosten.", + "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "Weergegeven bedragen zijn bijgewerkt op basis van de laatste marktprijs.", + "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "Tokenbedrag aangepast voor transactiekosten.", "COMMON_ALERT_TRANSACTION_FAILED": "Transactie mislukt. Probeer het opnieuw.", "COMMON_ASSETS": "Activa", "COMMON_BTN_ADD": "Toevoegen", @@ -1062,6 +1062,7 @@ "SEND_AMOUNT": "Bedrag", "SEND_AMOUNT_EXCEEDS_BALANCE": "Bedrag overschrijdt het saldo", "SEND_BALANCE_PERCENTAGE": "Balanspercentage: {percentage: string}", + "SEND_COLLECTIBLE": "Verzamelobject verzenden", "SEND_CONTACTS_EMPTY_STATE_DESCRIPTION": "Voeg je eerste contact toe om sneller te verzenden en fouten te voorkomen.", "SEND_CONTACTS_EMPTY_STATE_TITLE": "Geen contacten toegevoegd", "SEND_CREATE_CONTACT_ADDRESS": "Walletadres", @@ -1126,13 +1127,14 @@ "SEND_PLEASE_TYPE_ADDRESS": "Typ een adres of een .vet domeinnaam in", "SEND_RANGE_MAX": "MAX", "SEND_RANGE_ZERO": "0%", + "SEND_RECEIVER": "Ontvanger", "SEND_RECEIVER_ADDRESS_INPUT_CLEAR": "Wissen", "SEND_RECEIVER_ADDRESS_INPUT_ERROR": "Ongeldig walletadres, gebruikersnaam of domein", "SEND_RECEIVER_ADDRESS_INPUT_LABEL": "Walletadres", "SEND_RECEIVER_ADDRESS_INPUT_PASTE": "Plakken", "SEND_RECEIVER_ADDRESS_INPUT_PLACEHOLDER": "Wallet of domein", "SEND_RECEIVER_ADD_CONTACT_BTN": "Dit nieuwe adres toevoegen aan mijn contacten", - "SEND_RECEIVER_DETAILS": "Details controleren", + "SEND_RECEIVER_DETAILS": "Gegevens controleren", "SEND_RECEIVER_DETAILS_COUNT": "{current: number} van {total: number}", "SEND_RECEIVER_FILTER_ACCOUNTS": "Accounts", "SEND_RECEIVER_FILTER_CONTACTS": "Contacten", @@ -1141,6 +1143,8 @@ "SEND_RECEIVE_TAB_SCAN": "Scannen", "SEND_RECENT_EMPTY_STATE_DESCRIPTION": "Zodra je naar een adres stuurt, verschijnt het hier voor snelle toegang.", "SEND_RECENT_EMPTY_STATE_TITLE": "Geen recente activiteit", + "SEND_REVIEW_DETAILS": "Gegevens controleren", + "SEND_STEP_OF": "{currentStep: string} van {totalSteps: string}", "SEND_STEP_OF_3": "{stepNumber: string} van 3", "SEND_TO": "Naar", "SEND_TOKEN_AMOUNT": "Tokenbedrag", diff --git a/src/i18n/translations/pl.json b/src/i18n/translations/pl.json index fee72cddc2..b8725a092c 100644 --- a/src/i18n/translations/pl.json +++ b/src/i18n/translations/pl.json @@ -1062,6 +1062,7 @@ "SEND_AMOUNT": "Kwota", "SEND_AMOUNT_EXCEEDS_BALANCE": "Kwota przekracza saldo", "SEND_BALANCE_PERCENTAGE": "Procent salda: {percentage: string}", + "SEND_COLLECTIBLE": "Wyślij kolekcjonowalny", "SEND_CONTACTS_EMPTY_STATE_DESCRIPTION": "Dodaj pierwszy kontakt, by wysyłać szybciej i unikać błędów.", "SEND_CONTACTS_EMPTY_STATE_TITLE": "Brak dodanych kontaktów", "SEND_CREATE_CONTACT_ADDRESS": "Adres portfela", @@ -1126,13 +1127,14 @@ "SEND_PLEASE_TYPE_ADDRESS": "Wpisz adres lub nazwę domeny .vet", "SEND_RANGE_MAX": "MAKS", "SEND_RANGE_ZERO": "0%", + "SEND_RECEIVER": "Odbiorca", "SEND_RECEIVER_ADDRESS_INPUT_CLEAR": "Wyczyść", "SEND_RECEIVER_ADDRESS_INPUT_ERROR": "Nieprawidłowy adres portfela, nazwa użytkownika lub domena", "SEND_RECEIVER_ADDRESS_INPUT_LABEL": "Adres portfela", "SEND_RECEIVER_ADDRESS_INPUT_PASTE": "Wklej", "SEND_RECEIVER_ADDRESS_INPUT_PLACEHOLDER": "Portfel lub domena", "SEND_RECEIVER_ADD_CONTACT_BTN": "Dodaj ten nowy adres do moich kontaktów", - "SEND_RECEIVER_DETAILS": "Sprawdź szczegóły", + "SEND_RECEIVER_DETAILS": "Przejrzyj szczegóły", "SEND_RECEIVER_DETAILS_COUNT": "{current: number} z {total: number}", "SEND_RECEIVER_FILTER_ACCOUNTS": "Konta", "SEND_RECEIVER_FILTER_CONTACTS": "Kontakty", @@ -1141,6 +1143,8 @@ "SEND_RECEIVE_TAB_SCAN": "Skanuj", "SEND_RECENT_EMPTY_STATE_DESCRIPTION": "Po wysłaniu na adres, pojawi się on tutaj, aby umożliwić szybki dostęp.", "SEND_RECENT_EMPTY_STATE_TITLE": "Brak ostatniej aktywności", + "SEND_REVIEW_DETAILS": "Przejrzyj szczegóły", + "SEND_STEP_OF": "{currentStep: string} z {totalSteps: string}", "SEND_STEP_OF_3": "{stepNumber: string} z 3", "SEND_TO": "Do", "SEND_TOKEN_AMOUNT": "Kwota tokena", diff --git a/src/i18n/translations/pt.json b/src/i18n/translations/pt.json index 1f673b7013..8abf86c8b0 100644 --- a/src/i18n/translations/pt.json +++ b/src/i18n/translations/pt.json @@ -461,8 +461,8 @@ "COMMON_24H_PRICE_RANGE": "Faixa de 24h", "COMMON_24H_VOLUME": "Volume de 24h", "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "Os valores exibidos foram atualizados com base no preço de mercado mais recente.", - "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "Quantidade de tokens ajustada para a taxa de transação.", - "COMMON_ALERT_TRANSACTION_FAILED": "Transação falhou. Por favor, tente novamente.", + "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "A quantidade de tokens foi ajustada para a taxa de transação.", + "COMMON_ALERT_TRANSACTION_FAILED": "A transação falhou. Por favor, tente novamente.", "COMMON_ASSETS": "Ativos", "COMMON_BTN_ADD": "Adicionar", "COMMON_BTN_APPLY": "Aplicar", @@ -1062,6 +1062,7 @@ "SEND_AMOUNT": "Quantidade", "SEND_AMOUNT_EXCEEDS_BALANCE": "O valor excede o saldo", "SEND_BALANCE_PERCENTAGE": "Percentagem do saldo: {percentage: string}", + "SEND_COLLECTIBLE": "Enviar colecionável", "SEND_CONTACTS_EMPTY_STATE_DESCRIPTION": "Adicione seu primeiro contato para enviar mais rápido e evitar erros.", "SEND_CONTACTS_EMPTY_STATE_TITLE": "Nenhum contato adicionado", "SEND_CREATE_CONTACT_ADDRESS": "Endereço da carteira", @@ -1126,6 +1127,7 @@ "SEND_PLEASE_TYPE_ADDRESS": "Digite um endereço ou um nome de domínio .vet", "SEND_RANGE_MAX": "MÁX", "SEND_RANGE_ZERO": "0%", + "SEND_RECEIVER": "Destinatário", "SEND_RECEIVER_ADDRESS_INPUT_CLEAR": "Limpar", "SEND_RECEIVER_ADDRESS_INPUT_ERROR": "Endereço de carteira, nome de usuário ou domínio inválido", "SEND_RECEIVER_ADDRESS_INPUT_LABEL": "Endereço da carteira", @@ -1141,6 +1143,8 @@ "SEND_RECEIVE_TAB_SCAN": "Scanear", "SEND_RECENT_EMPTY_STATE_DESCRIPTION": "Assim que você enviar para um endereço, ele aparecerá aqui para acesso rápido.", "SEND_RECENT_EMPTY_STATE_TITLE": "Nenhuma atividade recente", + "SEND_REVIEW_DETAILS": "Revisar detalhes", + "SEND_STEP_OF": "{currentStep: string} de {totalSteps: string}", "SEND_STEP_OF_3": "{stepNumber: string} de 3", "SEND_TO": "Para", "SEND_TOKEN_AMOUNT": "Quantidade de tokens", diff --git a/src/i18n/translations/ru.json b/src/i18n/translations/ru.json index 4d296d1184..0d86458e90 100644 --- a/src/i18n/translations/ru.json +++ b/src/i18n/translations/ru.json @@ -460,9 +460,9 @@ "COMMON_24H": "24 ч", "COMMON_24H_PRICE_RANGE": "Диапазон за 24 ч", "COMMON_24H_VOLUME": "Объем за 24 ч", - "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "Отображаемые суммы были обновлены на основе последних рыночных цен.", - "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "Сумма токенов скорректирована с учётом комиссии за транзакцию.", - "COMMON_ALERT_TRANSACTION_FAILED": "Транзакция не удалось выполнить. Пожалуйста, попробуйте ещё раз.", + "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "Отображаемые суммы были обновлены согласно последней рыночной цене.", + "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "Количество токенов скорректировано с учётом комиссии за транзакцию.", + "COMMON_ALERT_TRANSACTION_FAILED": "Транзакция не выполнена. Пожалуйста, попробуйте ещё раз.", "COMMON_ASSETS": "Активы", "COMMON_BTN_ADD": "Добавить", "COMMON_BTN_APPLY": "Применить", @@ -1062,6 +1062,7 @@ "SEND_AMOUNT": "Сумма", "SEND_AMOUNT_EXCEEDS_BALANCE": "Сумма превышает баланс", "SEND_BALANCE_PERCENTAGE": "Процент баланса: {percentage: string}", + "SEND_COLLECTIBLE": "Отправить коллекционный предмет", "SEND_CONTACTS_EMPTY_STATE_DESCRIPTION": "Добавьте первый контакт, чтобы отправлять быстрее и избежать ошибок.", "SEND_CONTACTS_EMPTY_STATE_TITLE": "Контакты не добавлены", "SEND_CREATE_CONTACT_ADDRESS": "Адрес кошелька", @@ -1126,13 +1127,14 @@ "SEND_PLEASE_TYPE_ADDRESS": "Введите адрес или доменное имя .vet", "SEND_RANGE_MAX": "МАКС", "SEND_RANGE_ZERO": "0%", + "SEND_RECEIVER": "Получатель", "SEND_RECEIVER_ADDRESS_INPUT_CLEAR": "Очистить", "SEND_RECEIVER_ADDRESS_INPUT_ERROR": "Недействительный адрес кошелька, имя пользователя или домен", "SEND_RECEIVER_ADDRESS_INPUT_LABEL": "Адрес кошелька", "SEND_RECEIVER_ADDRESS_INPUT_PASTE": "Вставить", "SEND_RECEIVER_ADDRESS_INPUT_PLACEHOLDER": "Кошелек или домен", "SEND_RECEIVER_ADD_CONTACT_BTN": "Добавить этот новый адрес в мои контакты", - "SEND_RECEIVER_DETAILS": "Просмотреть детали", + "SEND_RECEIVER_DETAILS": "Проверить детали", "SEND_RECEIVER_DETAILS_COUNT": "{current: number} из {total: number}", "SEND_RECEIVER_FILTER_ACCOUNTS": "Счета", "SEND_RECEIVER_FILTER_CONTACTS": "Контакты", @@ -1141,6 +1143,8 @@ "SEND_RECEIVE_TAB_SCAN": "Сканировать", "SEND_RECENT_EMPTY_STATE_DESCRIPTION": "После отправки на адрес он появится здесь для быстрого доступа.", "SEND_RECENT_EMPTY_STATE_TITLE": "Нет недавней активности", + "SEND_REVIEW_DETAILS": "Проверить детали", + "SEND_STEP_OF": "{currentStep: string} из {totalSteps: string}", "SEND_STEP_OF_3": "{stepNumber} из 3", "SEND_TO": "Кому", "SEND_TOKEN_AMOUNT": "Количество токенов", diff --git a/src/i18n/translations/sv.json b/src/i18n/translations/sv.json index bd6b819b57..268cb6071d 100644 --- a/src/i18n/translations/sv.json +++ b/src/i18n/translations/sv.json @@ -1062,6 +1062,7 @@ "SEND_AMOUNT": "Belopp", "SEND_AMOUNT_EXCEEDS_BALANCE": "Beloppet överskrider saldot", "SEND_BALANCE_PERCENTAGE": "Balansprocent: {percentage: string}", + "SEND_COLLECTIBLE": "Skicka samlarobjekt", "SEND_CONTACTS_EMPTY_STATE_DESCRIPTION": "Lägg till din första kontakt för att skicka snabbare och undvika fel.", "SEND_CONTACTS_EMPTY_STATE_TITLE": "Inga kontakter tillagda", "SEND_CREATE_CONTACT_ADDRESS": "Plånboksadress", @@ -1126,13 +1127,14 @@ "SEND_PLEASE_TYPE_ADDRESS": "Skriv in en adress eller ett .vet-domännamn", "SEND_RANGE_MAX": "MAX", "SEND_RANGE_ZERO": "0%", + "SEND_RECEIVER": "Mottagare", "SEND_RECEIVER_ADDRESS_INPUT_CLEAR": "Rensa", "SEND_RECEIVER_ADDRESS_INPUT_ERROR": "Ogiltig plånboksadress, användarnamn eller domän", "SEND_RECEIVER_ADDRESS_INPUT_LABEL": "Plånboksadress", "SEND_RECEIVER_ADDRESS_INPUT_PASTE": "Klistra in", "SEND_RECEIVER_ADDRESS_INPUT_PLACEHOLDER": "Plånbok eller domän", "SEND_RECEIVER_ADD_CONTACT_BTN": "Lägg till denna nya adress i mina kontakter", - "SEND_RECEIVER_DETAILS": "Granska uppgifter", + "SEND_RECEIVER_DETAILS": "Granska detaljer", "SEND_RECEIVER_DETAILS_COUNT": "{current: number} av {total: number}", "SEND_RECEIVER_FILTER_ACCOUNTS": "Konton", "SEND_RECEIVER_FILTER_CONTACTS": "Kontakter", @@ -1141,6 +1143,8 @@ "SEND_RECEIVE_TAB_SCAN": "Skanna", "SEND_RECENT_EMPTY_STATE_DESCRIPTION": "När du skickar till en adress kommer den att visas här för snabb åtkomst.", "SEND_RECENT_EMPTY_STATE_TITLE": "Ingen senaste aktivitet", + "SEND_REVIEW_DETAILS": "Granska detaljer", + "SEND_STEP_OF": "{currentStep: string} av {totalSteps: string}", "SEND_STEP_OF_3": "{stepNumber: string} av 3", "SEND_TO": "Till", "SEND_TOKEN_AMOUNT": "Token-belopp", diff --git a/src/i18n/translations/tr.json b/src/i18n/translations/tr.json index e06ee7fb68..f7669edcd6 100644 --- a/src/i18n/translations/tr.json +++ b/src/i18n/translations/tr.json @@ -460,8 +460,8 @@ "COMMON_24H": "24 Saat", "COMMON_24H_PRICE_RANGE": "24 Saat Aralığı", "COMMON_24H_VOLUME": "24 Saat Hacmi", - "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "Görüntülenen tutarlar, en güncel piyasa fiyatına göre güncellendi.", - "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "Token miktarı, işlem ücreti için ayarlandı.", + "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "Gösterilen tutarlar en son piyasa fiyatına göre güncellendi.", + "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "İşlem ücreti için token miktarı ayarlandı.", "COMMON_ALERT_TRANSACTION_FAILED": "İşlem başarısız oldu. Lütfen tekrar deneyin.", "COMMON_ASSETS": "Varlıklar", "COMMON_BTN_ADD": "Ekle", @@ -1062,6 +1062,7 @@ "SEND_AMOUNT": "Miktar", "SEND_AMOUNT_EXCEEDS_BALANCE": "Tutar, bakiyeyi aşıyor", "SEND_BALANCE_PERCENTAGE": "Bakiye yüzdesi: {percentage: string}", + "SEND_COLLECTIBLE": "Koleksiyon gönder", "SEND_CONTACTS_EMPTY_STATE_DESCRIPTION": "Daha hızlı göndermek ve hatalardan kaçınmak için ilk kişinizi ekleyin.", "SEND_CONTACTS_EMPTY_STATE_TITLE": "Kişi eklenmedi", "SEND_CREATE_CONTACT_ADDRESS": "Cüzdan adresi", @@ -1126,13 +1127,14 @@ "SEND_PLEASE_TYPE_ADDRESS": "Bir adres veya .vet alan adı yazın", "SEND_RANGE_MAX": "MAKS", "SEND_RANGE_ZERO": "%0", + "SEND_RECEIVER": "Alıcı", "SEND_RECEIVER_ADDRESS_INPUT_CLEAR": "Temizle", "SEND_RECEIVER_ADDRESS_INPUT_ERROR": "Geçersiz cüzdan adresi, kullanıcı adı veya alan adı", "SEND_RECEIVER_ADDRESS_INPUT_LABEL": "Cüzdan adresi", "SEND_RECEIVER_ADDRESS_INPUT_PASTE": "Yapıştır", "SEND_RECEIVER_ADDRESS_INPUT_PLACEHOLDER": "Cüzdan veya alan adı", "SEND_RECEIVER_ADD_CONTACT_BTN": "Bu yeni adresi kişilere ekle", - "SEND_RECEIVER_DETAILS": "Ayrıntıları gözden geçir", + "SEND_RECEIVER_DETAILS": "Detayları gözden geçir", "SEND_RECEIVER_DETAILS_COUNT": "{current: number} / {total: number}", "SEND_RECEIVER_FILTER_ACCOUNTS": "Hesaplar", "SEND_RECEIVER_FILTER_CONTACTS": "Kişiler", @@ -1141,6 +1143,8 @@ "SEND_RECEIVE_TAB_SCAN": "Tara", "SEND_RECENT_EMPTY_STATE_DESCRIPTION": "Bir adrese gönderim yaptığınızda, hızlı erişim için burada görünecek.", "SEND_RECENT_EMPTY_STATE_TITLE": "Son etkinlik yok", + "SEND_REVIEW_DETAILS": "Detayları gözden geçir", + "SEND_STEP_OF": "{currentStep: string} / {totalSteps: string}", "SEND_STEP_OF_3": "{stepNumber: string} / 3", "SEND_TO": "Alıcı", "SEND_TOKEN_AMOUNT": "Token tutarı", diff --git a/src/i18n/translations/tw.json b/src/i18n/translations/tw.json index 6d93c2f614..0257fb15d1 100644 --- a/src/i18n/translations/tw.json +++ b/src/i18n/translations/tw.json @@ -460,8 +460,8 @@ "COMMON_24H": "24 小時", "COMMON_24H_PRICE_RANGE": "24小時範圍", "COMMON_24H_VOLUME": "24小時交易量", - "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "顯示的金額已根據最新市場價格更新。", - "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "已根據交易手續費調整代幣數量。", + "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "顯示的金額已根據最新市價更新。", + "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "代幣數量已因交易手續費調整。", "COMMON_ALERT_TRANSACTION_FAILED": "交易失敗,請再試一次。", "COMMON_ASSETS": "資產", "COMMON_BTN_ADD": "新增", @@ -1062,6 +1062,7 @@ "SEND_AMOUNT": "金額", "SEND_AMOUNT_EXCEEDS_BALANCE": "金額超過餘額", "SEND_BALANCE_PERCENTAGE": "餘額百分比: {percentage: string}", + "SEND_COLLECTIBLE": "發送收藏品", "SEND_CONTACTS_EMPTY_STATE_DESCRIPTION": "新增第一個聯絡人以加快轉帳並避免錯誤。", "SEND_CONTACTS_EMPTY_STATE_TITLE": "尚未新增聯絡人", "SEND_CREATE_CONTACT_ADDRESS": "錢包地址", @@ -1126,13 +1127,14 @@ "SEND_PLEASE_TYPE_ADDRESS": "輸入地址或 .vet 域名", "SEND_RANGE_MAX": "最大", "SEND_RANGE_ZERO": "0%", + "SEND_RECEIVER": "收款人", "SEND_RECEIVER_ADDRESS_INPUT_CLEAR": "清除", "SEND_RECEIVER_ADDRESS_INPUT_ERROR": "無效的錢包地址、用戶名或域名", "SEND_RECEIVER_ADDRESS_INPUT_LABEL": "錢包地址", "SEND_RECEIVER_ADDRESS_INPUT_PASTE": "貼上", "SEND_RECEIVER_ADDRESS_INPUT_PLACEHOLDER": "錢包位址或網域", "SEND_RECEIVER_ADD_CONTACT_BTN": "將此新地址加入我的聯絡人", - "SEND_RECEIVER_DETAILS": "查看明細", + "SEND_RECEIVER_DETAILS": "檢視詳情", "SEND_RECEIVER_DETAILS_COUNT": "{current: number} / {total: number}", "SEND_RECEIVER_FILTER_ACCOUNTS": "帳戶", "SEND_RECEIVER_FILTER_CONTACTS": "聯絡人", @@ -1141,6 +1143,8 @@ "SEND_RECEIVE_TAB_SCAN": "掃描", "SEND_RECENT_EMPTY_STATE_DESCRIPTION": "當你傳送到一個地址後,該地址將顯示在這裡,方便快速存取。", "SEND_RECENT_EMPTY_STATE_TITLE": "沒有最近的活動", + "SEND_REVIEW_DETAILS": "檢視詳情", + "SEND_STEP_OF": "{currentStep: string} / {totalSteps: string}", "SEND_STEP_OF_3": "{stepNumber} / 3", "SEND_TO": "到", "SEND_TOKEN_AMOUNT": "代幣數量", diff --git a/src/i18n/translations/vi.json b/src/i18n/translations/vi.json index 838f2d8113..3f63ab5cd9 100644 --- a/src/i18n/translations/vi.json +++ b/src/i18n/translations/vi.json @@ -460,8 +460,8 @@ "COMMON_24H": "24 giờ", "COMMON_24H_PRICE_RANGE": "Biên độ 24 giờ", "COMMON_24H_VOLUME": "Khối lượng 24 giờ", - "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "Số lượng hiển thị đã được cập nhật dựa trên giá thị trường mới nhất.", - "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "Số lượng token đã được điều chỉnh cho phí giao dịch.", + "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "Các số tiền hiển thị đã được cập nhật dựa trên giá thị trường mới nhất.", + "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "Số lượng token đã được điều chỉnh theo phí giao dịch.", "COMMON_ALERT_TRANSACTION_FAILED": "Giao dịch thất bại. Vui lòng thử lại.", "COMMON_ASSETS": "Tài sản", "COMMON_BTN_ADD": "Thêm", @@ -1062,6 +1062,7 @@ "SEND_AMOUNT": "Số tiền", "SEND_AMOUNT_EXCEEDS_BALANCE": "Số lượng vượt quá số dư", "SEND_BALANCE_PERCENTAGE": "Phần trăm số dư: {percentage: string}", + "SEND_COLLECTIBLE": "Gửi bộ sưu tập", "SEND_CONTACTS_EMPTY_STATE_DESCRIPTION": "Thêm liên hệ đầu tiên của bạn để gửi nhanh hơn và tránh lỗi.", "SEND_CONTACTS_EMPTY_STATE_TITLE": "Chưa thêm liên hệ nào", "SEND_CREATE_CONTACT_ADDRESS": "Địa chỉ ví", @@ -1126,14 +1127,15 @@ "SEND_PLEASE_TYPE_ADDRESS": "Nhập địa chỉ hoặc tên miền .vet", "SEND_RANGE_MAX": "TỐI ĐA", "SEND_RANGE_ZERO": "0%", + "SEND_RECEIVER": "Người nhận", "SEND_RECEIVER_ADDRESS_INPUT_CLEAR": "Xóa", "SEND_RECEIVER_ADDRESS_INPUT_ERROR": "Địa chỉ ví, tên người dùng hoặc tên miền không hợp lệ", "SEND_RECEIVER_ADDRESS_INPUT_LABEL": "Địa chỉ ví", "SEND_RECEIVER_ADDRESS_INPUT_PASTE": "Dán", "SEND_RECEIVER_ADDRESS_INPUT_PLACEHOLDER": "Ví hoặc tên miền", "SEND_RECEIVER_ADD_CONTACT_BTN": "Thêm địa chỉ mới này vào danh bạ của tôi", - "SEND_RECEIVER_DETAILS": "Kiểm tra chi tiết", - "SEND_RECEIVER_DETAILS_COUNT": "{current: number} trên {total: number}", + "SEND_RECEIVER_DETAILS": "Xem lại chi tiết", + "SEND_RECEIVER_DETAILS_COUNT": "{current: number} của {total: number}", "SEND_RECEIVER_FILTER_ACCOUNTS": "Tài khoản", "SEND_RECEIVER_FILTER_CONTACTS": "Danh bạ", "SEND_RECEIVER_FILTER_RECENT": "Gần đây", @@ -1141,6 +1143,8 @@ "SEND_RECEIVE_TAB_SCAN": "Quét", "SEND_RECENT_EMPTY_STATE_DESCRIPTION": "Khi bạn gửi tới một địa chỉ, nó sẽ xuất hiện ở đây để truy cập nhanh.", "SEND_RECENT_EMPTY_STATE_TITLE": "Chưa có hoạt động gần đây", + "SEND_REVIEW_DETAILS": "Xem lại chi tiết", + "SEND_STEP_OF": "{currentStep: string} của {totalSteps: string}", "SEND_STEP_OF_3": "{stepNumber: string} trên 3", "SEND_TO": "Đến", "SEND_TOKEN_AMOUNT": "Số lượng token", diff --git a/src/i18n/translations/zh.json b/src/i18n/translations/zh.json index 4cccf6deaa..3b992e2934 100644 --- a/src/i18n/translations/zh.json +++ b/src/i18n/translations/zh.json @@ -460,8 +460,8 @@ "COMMON_24H": "24 小时", "COMMON_24H_PRICE_RANGE": "24小时范围", "COMMON_24H_VOLUME": "24小时交易量", - "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "显示的金额已根据最新市场价格更新。", - "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "代币数量已根据手续费进行调整。", + "COMMON_ALERT_DISPLAYED_AMOUNTS_UPDATED": "已根据最新市场价格更新显示金额。", + "COMMON_ALERT_TOKEN_AMOUNT_ADJUSTED_FOR_FEE": "代币数量已根据交易手续费进行调整。", "COMMON_ALERT_TRANSACTION_FAILED": "交易失败,请重试。", "COMMON_ASSETS": "资产", "COMMON_BTN_ADD": "添加", @@ -1062,6 +1062,7 @@ "SEND_AMOUNT": "金额", "SEND_AMOUNT_EXCEEDS_BALANCE": "金额超出余额", "SEND_BALANCE_PERCENTAGE": "余额百分比: {percentage: string}", + "SEND_COLLECTIBLE": "发送藏品", "SEND_CONTACTS_EMPTY_STATE_DESCRIPTION": "添加第一个联系人以加快转账并避免错误。", "SEND_CONTACTS_EMPTY_STATE_TITLE": "未添加联系人", "SEND_CREATE_CONTACT_ADDRESS": "钱包地址", @@ -1126,13 +1127,14 @@ "SEND_PLEASE_TYPE_ADDRESS": "请输入地址或 .vet 域名", "SEND_RANGE_MAX": "最大", "SEND_RANGE_ZERO": "0%", + "SEND_RECEIVER": "接收方", "SEND_RECEIVER_ADDRESS_INPUT_CLEAR": "清除", "SEND_RECEIVER_ADDRESS_INPUT_ERROR": "无效的钱包地址、用户名或域名", "SEND_RECEIVER_ADDRESS_INPUT_LABEL": "钱包地址", "SEND_RECEIVER_ADDRESS_INPUT_PASTE": "粘贴", "SEND_RECEIVER_ADDRESS_INPUT_PLACEHOLDER": "钱包地址或域名", "SEND_RECEIVER_ADD_CONTACT_BTN": "将此新地址添加到我的联系人", - "SEND_RECEIVER_DETAILS": "审核详情", + "SEND_RECEIVER_DETAILS": "查看详情", "SEND_RECEIVER_DETAILS_COUNT": "{current: number} / {total: number}", "SEND_RECEIVER_FILTER_ACCOUNTS": "账户", "SEND_RECEIVER_FILTER_CONTACTS": "联系人", @@ -1141,6 +1143,8 @@ "SEND_RECEIVE_TAB_SCAN": "扫描", "SEND_RECENT_EMPTY_STATE_DESCRIPTION": "当你向某个地址发送后,这里会显示该地址以便快速访问。", "SEND_RECENT_EMPTY_STATE_TITLE": "无最近活动", + "SEND_REVIEW_DETAILS": "查看详情", + "SEND_STEP_OF": "{currentStep: string} / {totalSteps: string}", "SEND_STEP_OF_3": "{stepNumber} / 3", "SEND_TO": "至", "SEND_TOKEN_AMOUNT": "代币数量",