From 40d5c5e932c7aca8aaf4c1368d7cf9f2534558b1 Mon Sep 17 00:00:00 2001 From: nicholas ma Date: Fri, 12 Jul 2024 11:30:07 -0700 Subject: [PATCH 1/9] fix: added functionality to ask every time --- .../sign_data_item.background.ts | 14 +++-- src/routes/auth/connect.tsx | 57 +++++++++++++++++-- .../popup/settings/apps/[url]/index.tsx | 2 +- .../popup/settings/apps/[url]/permissions.tsx | 2 +- 4 files changed, 61 insertions(+), 14 deletions(-) diff --git a/src/api/modules/sign_data_item/sign_data_item.background.ts b/src/api/modules/sign_data_item/sign_data_item.background.ts index cca05116..b3b09943 100644 --- a/src/api/modules/sign_data_item/sign_data_item.background.ts +++ b/src/api/modules/sign_data_item/sign_data_item.background.ts @@ -27,13 +27,17 @@ const background: ModuleFunction = async ( throw new Error(err); } + const app = new Application(appData.appURL); + const allowance = await app.getAllowance(); + if ( - dataItem.tags?.some( + (dataItem.tags?.some( (tag) => tag.name === "Action" && tag.value === "Transfer" ) && - dataItem.tags?.some( - (tag) => tag.name === "Data-Protocol" && tag.value === "ao" - ) + dataItem.tags?.some( + (tag) => tag.name === "Data-Protocol" && tag.value === "ao" + )) || + allowance.enabled ) { try { const tags = dataItem?.tags || []; @@ -74,7 +78,6 @@ const background: ModuleFunction = async ( isLocalWallet(decryptedWallet); // create app - const app = new Application(appData.appURL); // create arweave client const arweave = new Arweave(await app.getGatewayConfig()); @@ -89,7 +92,6 @@ const background: ModuleFunction = async ( // check allowance // const price = await getPrice(dataEntry, await app.getBundler()); - const allowance = await app.getAllowance(); // allowance or sign auth try { diff --git a/src/routes/auth/connect.tsx b/src/routes/auth/connect.tsx index 1ee48614..cd71ecdb 100644 --- a/src/routes/auth/connect.tsx +++ b/src/routes/auth/connect.tsx @@ -7,6 +7,7 @@ import { Section, Spacer, Text, + TooltipV2, useInput, useToasts } from "@arconnect/components"; @@ -33,10 +34,14 @@ import Application from "~applications/application"; import { defaultGateway, type Gateway } from "~gateways/gateway"; import HeadV2 from "~components/popup/HeadV2"; import { CheckIcon, CloseIcon } from "@iconicicons/react"; -import { ToggleSwitch } from "~routes/popup/subscriptions/subscriptionDetails"; +import { + InfoCircle, + ToggleSwitch +} from "~routes/popup/subscriptions/subscriptionDetails"; import { defaultAllowance } from "~applications/allowance"; import Arweave from "arweave"; import Permissions from "../../components/auth/Permissions"; +import { Flex } from "~routes/popup/settings/apps/[url]"; export default function Connect() { // active address @@ -155,7 +160,7 @@ export default function Connect() { } // connect - async function connect() { + async function connect(alwaysAsk: boolean = false) { if (appUrl === "") return; // get existing permissions @@ -170,7 +175,7 @@ export default function Connect() { name: appData.name, logo: appData.logo, allowance: { - enabled: allowanceEnabled, + enabled: alwaysAsk ? false : allowanceEnabled, limit: allowanceEnabled && allowanceInput.state ? arweave.ar.arToWinston(allowanceInput.state) @@ -183,7 +188,26 @@ export default function Connect() { } else { // update existing permissions, if the app // has already been added - await app.updateSettings({ permissions }); + + const allowance = await app.getAllowance(); + await app.updateSettings({ + permissions, + allowance: { + // Always preserve the current spent amount + spent: allowance.spent.toString(), + + // Determine the new limit: + limit: alwaysAsk + ? allowance.limit.toString() // If 'Always Ask' is enabled, keep the existing limit + : allowanceEnabled && allowanceInput.state + ? arweave.ar.arToWinston(allowanceInput.state) // If allowance is enabled and a new limit is set, use the new limit + : defaultAllowance.limit, // Otherwise, use the default limit + + // If 'Always Ask' is true, disable allowance + // Otherwise, use the current allowance enabled state + enabled: alwaysAsk ? false : allowanceEnabled + } + }); } // send response @@ -324,7 +348,17 @@ export default function Connect() { ))} -
{browser.i18n.getMessage("allowance")}
+ +
{browser.i18n.getMessage("allowance")}
+ + + +
+ - + connect(true)} + > {browser.i18n.getMessage( page === "unlock" ? "cancel" : "always_ask_permission" )} @@ -397,6 +435,13 @@ export default function Connect() { ); } +const InfoText: React.ReactNode = ( +
+ Set the amount you want
+ ArConnect to automatically transfer +
+); + const WalletSelectWrapper = styled.div` position: relative; `; diff --git a/src/routes/popup/settings/apps/[url]/index.tsx b/src/routes/popup/settings/apps/[url]/index.tsx index c8c38a75..8d340421 100644 --- a/src/routes/popup/settings/apps/[url]/index.tsx +++ b/src/routes/popup/settings/apps/[url]/index.tsx @@ -424,7 +424,7 @@ const CenterText = styled(Text)` } `; -const Flex = styled.div<{ alignItems: string; justifyContent: string }>` +export const Flex = styled.div<{ alignItems: string; justifyContent: string }>` display: flex; align-items: ${(props) => props.alignItems}; justify-content: ${(props) => props.justifyContent}; diff --git a/src/routes/popup/settings/apps/[url]/permissions.tsx b/src/routes/popup/settings/apps/[url]/permissions.tsx index 2f9ea830..eae1015a 100644 --- a/src/routes/popup/settings/apps/[url]/permissions.tsx +++ b/src/routes/popup/settings/apps/[url]/permissions.tsx @@ -9,7 +9,7 @@ import { useLocation } from "wouter"; export default function AppPermissions({ url }: Props) { // app settings - const app = new Application(url); + const app = new Application(decodeURIComponent(url)); const [settings, updateSettings] = app.hook(); const [, setLocation] = useLocation(); From 36190f45fda1abb85604907fb91432588c87de5c Mon Sep 17 00:00:00 2001 From: nicholas ma Date: Fri, 12 Jul 2024 12:39:26 -0700 Subject: [PATCH 2/9] Revert "Revert "feat: updated permissions screen"" This reverts commit 1be6577b96735afa402ee1d7d027830e49979739. --- assets/_locales/en/messages.json | 34 +++- assets/_locales/zh_CN/messages.json | 34 +++- src/components/Checkbox.tsx | 27 +-- src/components/auth/App.tsx | 48 +++-- src/components/auth/Permissions.tsx | 134 +++++++++++++ src/routes/auth/connect.tsx | 292 ++++++++++++++++++++++------ 6 files changed, 480 insertions(+), 89 deletions(-) create mode 100644 src/components/auth/Permissions.tsx diff --git a/assets/_locales/en/messages.json b/assets/_locales/en/messages.json index 1a2d6798..2ff57639 100644 --- a/assets/_locales/en/messages.json +++ b/assets/_locales/en/messages.json @@ -49,6 +49,10 @@ "message": "Hide", "description": "Hide text" }, + "save": { + "message": "Save", + "description": "Save button text" + }, "add_wallet": { "message": "Add wallet", "description": "Add a wallet text" @@ -295,6 +299,14 @@ "message": "Permissions", "description": "Permissions title" }, + "edit_permissions": { + "message": "Edit permissions", + "description": "Edit permissions title" + }, + "app_permissions": { + "message": "App permissions", + "description": "App permissions title" + }, "allowance": { "message": "Allowance", "description": "Allowance title" @@ -929,9 +941,27 @@ "message": "Connect", "description": "Connect button text" }, + "always_allow": { + "message": "Always allow", + "description": "Always allow button" + }, + "always_ask_permission": { + "message": "Always ask permission", + "description": "Always allow button" + }, + "allow_selected_permissions": { + "message": "Allow selected permissions", + "description": "Always allow button" + }, "allow_these_permissions": { - "message": "Allow these permissions for the application:", - "description": "Auth permissions label" + "message": "$APPNAME$ wants to connect to your wallet with the following permissions", + "description": "Auth permissions label", + "placeholders": { + "appname": { + "content": "$1", + "example": "permafacts.arweave.dev" + } + } }, "reset_allowance": { "message": "Reset allowance", diff --git a/assets/_locales/zh_CN/messages.json b/assets/_locales/zh_CN/messages.json index a6988cad..a0f48189 100644 --- a/assets/_locales/zh_CN/messages.json +++ b/assets/_locales/zh_CN/messages.json @@ -49,6 +49,10 @@ "message": "隐藏", "description": "Hide text" }, + "save": { + "message": "节省", + "description": "Save button text" + }, "add_wallet": { "message": "添加钱包", "description": "Add a wallet text" @@ -295,6 +299,14 @@ "message": "权限", "description": "Permissions title" }, + "edit_permissions": { + "message": "编辑权限", + "description": "Edit permissions title" + }, + "app_permissions": { + "message": "应用权限", + "description": "App permissions title" + }, "allowance": { "message": "额度", "description": "Allowance title" @@ -925,9 +937,27 @@ "message": "连接", "description": "Connect button text" }, + "always_allow": { + "message": "始终允许", + "description": "Always allow button" + }, + "always_ask_permission": { + "message": "始终询问权限", + "description": "Always allow button" + }, + "allow_selected_permissions": { + "message": "允许选择的权限", + "description": "Always allow button" + }, "allow_these_permissions": { - "message": "允许这些权限给应用程序:", - "description": "Auth permissions label" + "message": "$APPNAME$ 想要使用以下权限连接到您的钱包", + "description": "Auth permissions label", + "placeholders": { + "appname": { + "content": "$1", + "example": "permafacts.arweave.dev" + } + } }, "reset_allowance": { "message": "重置额度", diff --git a/src/components/Checkbox.tsx b/src/components/Checkbox.tsx index 22fcbfbd..26a7336c 100644 --- a/src/components/Checkbox.tsx +++ b/src/components/Checkbox.tsx @@ -1,4 +1,10 @@ -import { useEffect, useMemo, useState, type HTMLProps } from "react"; +import { + useCallback, + useEffect, + useMemo, + useState, + type HTMLProps +} from "react"; import styled from "styled-components"; export const Checkbox = ({ @@ -10,18 +16,15 @@ export const Checkbox = ({ const [state, setState] = useState(checked); const effectiveId = useMemo(() => id || generateUniqueId(), []); - async function toggle() { - let newVal = state; - - setState((val) => { - newVal = !val; - return newVal; + const toggle = useCallback(async () => { + setState((prevState) => { + const newState = !prevState; + if (onChange) { + onChange(newState); + } + return newState; }); - - if (onChange) { - await onChange(newVal); - } - } + }, [onChange]); useEffect(() => setState(checked), [checked]); diff --git a/src/components/auth/App.tsx b/src/components/auth/App.tsx index 1facd10f..fd123ef0 100644 --- a/src/components/auth/App.tsx +++ b/src/components/auth/App.tsx @@ -2,7 +2,8 @@ import { type DisplayTheme, Section, Spacer, - Text + Text, + ListItem } from "@arconnect/components"; import { defaultGateway, type Gateway } from "~gateways/gateway"; import { useTheme as useDisplayTheme } from "~utils/theme"; @@ -22,7 +23,8 @@ export default function App({ appName, appUrl, gateway, - allowance + allowance, + showTitle = true }: Props) { // allowance spent in AR const spent = useMemo(() => { @@ -50,16 +52,28 @@ export default function App({ return ( <> - - - - + {showTitle && ( + <> + + + + + + )} - + + {/* {!appIcon && } @@ -91,7 +105,7 @@ export default function App({ {" AR"} )} - + */} ); @@ -103,12 +117,9 @@ const SidePaddingSection = styled(Section)` `; const Wrapper = styled.div<{ displayTheme: DisplayTheme }>` - background-color: rgb( - ${(props) => - props.displayTheme === "light" ? "0, 0, 0" : props.theme.cardBackground} - ); - border-radius: 27px; - padding: 1rem; + border-radius: 10px; + padding-top: 1rem; + padding-bottom: 1rem; display: flex; align-items: center; justify-content: space-between; @@ -164,4 +175,5 @@ interface Props { appUrl: string; gateway?: Gateway; allowance?: Allowance; + showTitle?: boolean; } diff --git a/src/components/auth/Permissions.tsx b/src/components/auth/Permissions.tsx new file mode 100644 index 00000000..ce640e4f --- /dev/null +++ b/src/components/auth/Permissions.tsx @@ -0,0 +1,134 @@ +import { ButtonV2, Section, Text } from "@arconnect/components"; +import browser from "webextension-polyfill"; +import styled from "styled-components"; +import { permissionData, type PermissionType } from "~applications/permissions"; +import Checkbox from "~components/Checkbox"; +import { useEffect, useState } from "react"; + +type PermissionsProps = { + requestedPermissions: PermissionType[]; + update: (updatedPermissions: PermissionType[]) => void; + closeEdit: (setEdit: boolean) => void; +}; + +export default function Permissions({ + requestedPermissions, + update, + closeEdit +}: PermissionsProps) { + const [permissions, setPermissions] = useState>( + new Map() + ); + + useEffect(() => { + setPermissions( + new Map(requestedPermissions.map((permission) => [permission, true])) + ); + }, []); + + return ( + +
+
+ {browser.i18n.getMessage("permissions")} + + {Object.keys(permissionData).map( + (permissionName: PermissionType, i) => { + let formattedPermissionName = permissionName + .split("_") + .map((word) => word.charAt(0) + word.slice(1).toLowerCase()) + .join(" "); + + if (permissionName === "SIGNATURE") { + formattedPermissionName = "Sign Data"; + } + + return ( +
+ + { + const updated = new Map(permissions); + updated.set(permissionName, checked); + setPermissions(updated); + }} + checked={requestedPermissions.includes(permissionName)} + /> +
+ + {formattedPermissionName} + + + {browser.i18n.getMessage( + permissionData[permissionName] + )} + +
+
+
+ ); + } + )} +
+
+
+
+ { + const updatedPermissions = Array.from(permissions.entries()) + .filter(([, value]) => value) + .map(([key]) => key); + update(updatedPermissions); + closeEdit(false); + }} + > + {browser.i18n.getMessage("save")} + +
+
+ ); +} + +const Wrapper = styled.div` + display: flex; + width: 100vw; + flex-direction: column; + height: calc(100vh - 163px); + justify-content: space-between; +`; + +const Title = styled(Text).attrs({ + heading: true +})` + margin-bottom: 0.75em; + font-size: 1.125rem; +`; + +const PermissionsWrapper = styled.div` + display: flex; + flex-direction: column; + gap: 10px; +`; + +const Permission = styled.div` + display: flex; + align-items: center; + gap: 8px; +`; + +export const PermissionDescription = styled(Text).attrs({ + noMargin: true +})` + font-size: 0.625rem; + font-weight: 500; +`; + +export const PermissionTitle = styled(Text).attrs({ + noMargin: true, + heading: true +})` + font-size: 0.875rem; + font-weight: 500; +`; diff --git a/src/routes/auth/connect.tsx b/src/routes/auth/connect.tsx index e513ee08..1ee48614 100644 --- a/src/routes/auth/connect.tsx +++ b/src/routes/auth/connect.tsx @@ -26,12 +26,17 @@ import WalletSwitcher from "~components/popup/WalletSwitcher"; import Wrapper from "~components/auth/Wrapper"; import browser from "webextension-polyfill"; import Label from "~components/auth/Label"; -import Head from "~components/popup/Head"; import App from "~components/auth/App"; import styled from "styled-components"; import { EventType, trackEvent } from "~utils/analytics"; import Application from "~applications/application"; import { defaultGateway, type Gateway } from "~gateways/gateway"; +import HeadV2 from "~components/popup/HeadV2"; +import { CheckIcon, CloseIcon } from "@iconicicons/react"; +import { ToggleSwitch } from "~routes/popup/subscriptions/subscriptionDetails"; +import { defaultAllowance } from "~applications/allowance"; +import Arweave from "arweave"; +import Permissions from "../../components/auth/Permissions"; export default function Connect() { // active address @@ -40,12 +45,16 @@ export default function Connect() { instance: ExtensionStorage }); + const arweave = new Arweave(defaultGateway); + // wallet switcher open const [switcherOpen, setSwitcherOpen] = useState(false); // page const [page, setPage] = useState<"unlock" | "permissions">("unlock"); + const allowanceInput = useInput(); + // connect params const params = useAuthParams<{ url: string; @@ -73,6 +82,12 @@ export default function Connect() { PermissionType[] >([]); + // allowance for permissions + const [allowanceEnabled, setAllowanceEnabled] = useState(true); + + // state management for edit + const [edit, setEdit] = useState(false); + useEffect(() => { (async () => { if (!params) return; @@ -93,9 +108,16 @@ export default function Connect() { setRequestedPermissions( requested.filter((p) => Object.keys(permissionData).includes(p)) ); + setRequetedPermCopy( + requested.filter((p) => Object.keys(permissionData).includes(p)) + ); })(); }, [params]); + const [requestedPermCopy, setRequetedPermCopy] = useState( + [] + ); + // permissions to add const [permissions, setPermissions] = useState([]); @@ -147,6 +169,14 @@ export default function Connect() { permissions, name: appData.name, logo: appData.logo, + allowance: { + enabled: allowanceEnabled, + limit: + allowanceEnabled && allowanceInput.state + ? arweave.ar.arToWinston(allowanceInput.state) + : defaultAllowance.limit, + spent: "0" // in winstons + }, // TODO: wayfinder gateway: params.gateway || defaultGateway }); @@ -169,23 +199,33 @@ export default function Connect() { closeWindow(); } + useEffect(() => { + allowanceInput.setState(arweave.ar.winstonToAr(defaultAllowance.limit)); + }, []); + + const removedPermissions = useMemo(() => { + return requestedPermCopy.filter( + (permission) => !requestedPermissions.includes(permission) + ); + }, [requestedPermCopy, requestedPermissions]); + return (
- setEdit(false) : cancel} /> - - + {page === "unlock" && ( @@ -231,62 +271,128 @@ export default function Connect() { )} {page === "permissions" && ( - -
- - {browser.i18n.getMessage("allow_these_permissions")} - - {requestedPermissions.map((permission, i) => ( -
- - setPermissions((val) => { - if (checked && val.includes(permission)) return val; - if (!checked && !val.includes(permission)) - return val; - if (checked && !val.includes(permission)) { - return [...val, permission]; - } - if (!checked && val.includes(permission)) { - return val.filter((p) => p !== permission); - } - }) - } - > + <> + {!edit ? ( + +
+ {browser.i18n.getMessage( - permissionData[permission.toUpperCase()] + "allow_these_permissions", + appData.name || appUrl )} - - {i !== requestedPermissions.length - 1 && ( - + + {params.url} + + + + {browser.i18n.getMessage("app_permissions")} + + { + setEdit(!edit); + }} + > + {browser.i18n.getMessage("edit_permissions")} + + + + {requestedPermissions.map((permission, i) => ( + + + + {browser.i18n.getMessage( + permissionData[permission.toUpperCase()] + )} + + + ))} + {requestedPermCopy + .filter( + (permission) => + !requestedPermissions.includes(permission) + ) + .map((permission, i) => ( + + + + {browser.i18n.getMessage( + permissionData[permission.toUpperCase()] + )} + + + ))} + + +
{browser.i18n.getMessage("allowance")}
+ +
+ {allowanceEnabled && ( + + AR} + type="number" + {...allowanceInput.bindings} + /> + )} -
- ))} -
-
+ + + ) : ( + <> + + + )} + )}
-
- { - if (page === "unlock") { - await unlock(); - } else { - await connect(); - } - }} - > - {browser.i18n.getMessage(page === "unlock" ? "sign_in" : "connect")} - - - - {browser.i18n.getMessage("cancel")} - -
+ {!edit && ( +
+ <> + { + if (page === "unlock") { + await unlock(); + } else { + await connect(); + } + }} + > + {browser.i18n.getMessage( + page === "unlock" + ? "sign_in" + : removedPermissions.length > 0 + ? "allow_selected_permissions" + : "always_allow" + )} + + + + {browser.i18n.getMessage( + page === "unlock" ? "cancel" : "always_ask_permission" + )} + + +
+ )}
); } @@ -295,6 +401,23 @@ const WalletSelectWrapper = styled.div` position: relative; `; +const StyledPermissions = styled.div` + padding-bottom: 1rem; +`; + +const Permission = styled.div` + margin: 0; + align-items: center; + display: flex; + gap: 8px; +`; + +const PermissionsTitle = styled.div` + display: flex; + width: 100%; + justify-content: space-between; +`; + const SelectIcon = styled(ChevronDownIcon)` font-size: 1rem; width: 1.375rem; @@ -303,6 +426,65 @@ const SelectIcon = styled(ChevronDownIcon)` transition: all 0.23s ease-in-out; `; +const Description = styled(Text)<{ alt?: boolean }>` + color: ${(props) => + props.alt ? `rgb(${props.theme.theme})` : props.theme.primaryTextv2}; + margin-bottom: 4px; + ${(props) => + props.alt && + ` + cursor: pointer; + `} +`; +const Url = styled(Text)` + color: ${(props) => props.theme.secondaryTextv2}; + font-size: 12px; +`; + +const StyledCheckIcon = styled(CheckIcon)` + width: 17px; + height: 17px; + min-width: 17px; + min-height: 17px; + flex-shrink: 0; + color: rgba(20, 209, 16, 1); +`; + +const StyledCloseIcon = styled(CloseIcon)` + width: 17px; + height: 17px; + min-width: 17px; + min-height: 17px; + flex-shrink: 0; + color: ${(props) => props.theme.fail}; +`; + +const AllowanceInput = styled(InputV2)` + &::-webkit-outer-spin-button, + &::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; + } +`; + +const PermissionItem = styled(Text)` + color: ${(props) => props.theme.primaryTextv2}; + margin: 0; + font-size: 14px; +`; + +const AllowanceSection = styled.div` + display: flex; + justify-content: space-between; + align-items: flex-end; + padding-top: 18px; + div { + color: ${(props) => props.theme.primaryTextv2}; + font-size: 18px; + font-weight: 00; + } +`; + const WalletSelect = styled(Card)<{ open: boolean }>` position: relative; display: flex; From 1a279db69a336b669e07e2180547cf58e01e5cfd Mon Sep 17 00:00:00 2001 From: nicholas ma Date: Mon, 15 Jul 2024 18:14:57 -0700 Subject: [PATCH 3/9] fix: added always ask option and functionality --- assets/_locales/en/messages.json | 4 + assets/_locales/zh_CN/messages.json | 4261 +++++++++-------- src/api/modules/dispatch/allowance.ts | 11 +- .../modules/dispatch/dispatch.background.ts | 6 +- src/api/modules/sign/sign.background.ts | 29 +- .../sign_data_item.background.ts | 14 +- src/applications/application.ts | 7 + src/components/auth/App.tsx | 2 +- .../dashboard/subsettings/AppSettings.tsx | 31 +- src/routes/auth/connect.tsx | 35 +- .../popup/settings/apps/[url]/index.tsx | 9 +- 11 files changed, 2225 insertions(+), 2184 deletions(-) diff --git a/assets/_locales/en/messages.json b/assets/_locales/en/messages.json index 2ff57639..22c25117 100644 --- a/assets/_locales/en/messages.json +++ b/assets/_locales/en/messages.json @@ -151,6 +151,10 @@ "message": "Invalid password", "description": "Invalid password error" }, + "invalid_qty_error": { + "message": "0.001 is the lowest amount. Please change your limit to a higher amount", + "description": "Warning message for setting a limit too low" + }, "testnetLive": { "message": "Testnet is live", "description": "Testnet live message" diff --git a/assets/_locales/zh_CN/messages.json b/assets/_locales/zh_CN/messages.json index a0f48189..0e8077a2 100644 --- a/assets/_locales/zh_CN/messages.json +++ b/assets/_locales/zh_CN/messages.json @@ -1,2137 +1,2142 @@ { - "extensionDescription": { - "message": "Arweave 的安全钱包管理", - "description": "Extension description" - }, - "clickToCopy": { - "message": "点击复制", - "description": "Text to indicate the ability to copy something" - }, - "switchedToWallet": { - "message": "已切换到 $ADDRESS$", - "description": "Notification on switching active wallet", - "placeholders": { - "address": { - "content": "$1", - "example": "ljvCPN31...-CS-6Iho8U" - } - } - }, - "yes": { - "message": "是", - "description": "The word \"yes\"" - }, - "no": { - "message": "否", - "description": "The word \"no\"" - }, - "accept": { - "message": "接受", - "description": "Accept terms" - }, - "search": { - "message": "搜索", - "description": "Search text" - }, - "general": { - "message": "普通", - "description": "General text" - }, - "advanced": { - "message": "高级", - "description": "Advanced text" - }, - "show": { - "message": "显示", - "description": "Show text" - }, - "hide": { - "message": "隐藏", - "description": "Hide text" - }, - "save": { - "message": "节省", - "description": "Save button text" - }, - "add_wallet": { - "message": "添加钱包", - "description": "Add a wallet text" - }, - "analytics_description": { - "message": "我们现在使用分析工具。", - "description": "Opting into Analytics text" - }, - "analytics_title": { - "message": "选择加入分析", - "description": "Analytics title" - }, - "edit": { - "message": "编辑", - "description": "Edit text" - }, - "appConnected": { - "message": "应用已连接", - "description": "Application connected text" - }, - "appNotConnected": { - "message": "应用未连接", - "description": "Application connected text" - }, - "forceConnect": { - "message": "强制连接", - "description": "Force connect button text" - }, - "decline": { - "message": "拒绝", - "description": "Decline terms" - }, - "devtools": { - "message": "开发者工具", - "description": "Devtools name" - }, - "gatewayNotTestnet": { - "message": "网关不是测试网网络", - "description": "Gateway not a testnet notification" - }, - "mint": { - "message": "铸造", - "description": "Mint button text" - }, - "mintAr": { - "message": "铸造 AR", - "description": "Mint AR tokens title" - }, - "arMinted": { - "message": "铸造了 $QTY$ AR 到 $ADDRESS$", - "description": "Message on arweave minted to an address", - "placeholders": { - "qty": { - "content": "$1", - "example": "10" - }, - "address": { - "content": "$2", - "example": "ljvCPN31...-CS-6Iho8U" - } - } - }, - "tokenMintFailed": { - "message": "铸造代币失败", - "description": "Message indicating minting failure" - }, - "mine": { - "message": "挖矿", - "description": "Mine button text" - }, - "mined": { - "message": "已挖矿", - "description": "Mine success message" - }, - "miningFailed": { - "message": "挖矿失败", - "description": "Mine failure message" - }, - "fillOutQtyField": { - "message": "请填写数量字段", - "description": "Fill out qty field error" - }, - "fillOutTargetField": { - "message": "请填写目标字段", - "description": "Fill out target field error" - }, - "addFileError": { - "message": "请添加文件", - "description": "Add file error" - }, - "couldNotReadTxData": { - "message": "无法读取交易数据文件", - "description": "File reading failure for tx data" - }, - "invalidPassword": { - "message": "密码无效", - "description": "Invalid password error" - }, - "testnetLive": { - "message": "测试网已上线", - "description": "Testnet live message" - }, - "testnetDown": { - "message": "测试网已离线", - "description": "Testnet offline message" - }, - "testnetGatewayUrlLabel": { - "message": "测试网网关网址", - "description": "Label indicating the input content to be the testnet gateway url" - }, - "arlocalCommandTutorial": { - "message": "没有安装 ArLocal?像这样运行它:", - "description": "Tutorial for the user on running ArLocal" - }, - "addTestnetTokensSubtitle": { - "message": "将测试网代币添加到您的钱包", - "description": "Subtitle indicating the ability to add testnet AR tokens to the active wallet" - }, - "analytics": { - "message": "分析", - "description": "Analytics text" - }, - "arQtyPlaceholder": { - "message": "AR 数量...", - "description": "Placeholder for AR amount input" - }, - "createTransaction": { - "message": "创建交易", - "description": "Create transaction title" - }, - "createTransactionSubtitle": { - "message": "发送带有标签和数据的交易", - "description": "Send transaction subtitle" - }, - "leaveEmptyForNone": { - "message": "留空表示无...", - "description": "Placeholder for inputs that take empty values as none" - }, - "target": { - "message": "目标", - "description": "Target label" - }, - "amount": { - "message": "金额", - "description": "Amount label" - }, - "tags": { - "message": "标签", - "description": "Tags label" - }, - "name": { - "message": "名称", - "description": "Name label" - }, - "tagNamePlaceholder": { - "message": "标签名称...", - "description": "Tag name placeholder" - }, - "value": { - "message": "值", - "description": "Value label" - }, - "tagValuePlaceholder": { - "message": "标签值...", - "description": "Tag value placeholder" - }, - "addTag": { - "message": "添加标签", - "description": "Add tag button" - }, - "data": { - "message": "数据", - "description": "Data label" - }, - "dragAndDropFile": { - "message": "拖放文件...", - "description": "File input label" - }, - "password": { - "message": "密码", - "description": "Password label" - }, - "new_password": { - "message": "新密码", - "description": "Password label" - }, - "confirm_new_password": { - "message": "重新输入新密码", - "description": "Password label" - }, - "enterPasswordToDecrypt": { - "message": "输入密码以解密钱包...", - "description": "Password request to decrypt wallet" - }, - "sendTransaction": { - "message": "发送交易", - "description": "Send transaction button" - }, - "permissionDescriptionAccessAddress": { - "message": "允许访问活动地址", - "description": "Description for the \"ACCESS_ADDRESS\" permission" - }, - "permissionDescriptionAccessPublicKey": { - "message": "允许访问活动地址的公钥", - "description": "Description for the \"ACCESS_PUBLIC_KEY\" permission" - }, - "permissionDescriptionAccessAllAddresses": { - "message": "允许访问所有活动和非活动钱包地址", - "description": "Description for the \"ACCESS_ALL_ADDRESSES\" permission" - }, - "permissionDescriptionSign": { - "message": "允许签署交易。", - "description": "Description for the \"SIGN_TRANSACTION\" permission" - }, - "permissionDescriptionEncrypt": { - "message": "允许使用钱包的密钥文件加密数据。这并不授予对密钥文件的访问权限", - "description": "Description for the \"ENCRYPT\" permission" - }, - "permissionDescriptionDecrypt": { - "message": "允许使用钱包的密钥文件解密数据。这并不授予对密钥文件的访问权限", - "description": "Description for the \"DECRYPT\" permission" - }, - "permissionDescriptionSignature": { - "message": "允许签署数据。", - "description": "Description for the \"SIGNATURE\" permission" - }, - "permissionDescriptionArweaveConfig": { - "message": "允许读取 ArConnect 配置文件", - "description": "Description for the \"ACCESS_ARWEAVE_CONFIG\" permission" - }, - "permissionDescriptionDispatch": { - "message": "允许使用调度交易。", - "description": "Description for the \"DISPATCH\" permission" - }, - "copyId": { - "message": "复制 ID", - "description": "Copy ID button text" - }, - "connectionFailure": { - "message": "无法连接到应用", - "description": "Notification about app connection failure in devtools" - }, - "permissions": { - "message": "权限", - "description": "Permissions title" - }, - "edit_permissions": { - "message": "编辑权限", - "description": "Edit permissions title" - }, - "app_permissions": { - "message": "应用权限", - "description": "App permissions title" - }, - "allowance": { - "message": "额度", - "description": "Allowance title" - }, - "allowanceTip": { - "message": "为此应用设置支出限制", - "description": "Tip explaining allowances for the user" - }, - "enabled": { - "message": "已启用", - "description": "Enabled label" - }, - "disabled": { - "message": "已禁用", - "description": "Disabled label" - }, - "u_token_disabled": { - "message": "目前无法转移 U-Token", - "description": "U-token Disabled label" - }, - "spent": { - "message": "已支出", - "description": "Spent text" - }, - "reset": { - "message": "重置", - "description": "Reset text" - }, - "resetSpentQty": { - "message": "重置已支出数量", - "description": "Reset tooltip text" - }, - "limit": { - "message": "限制", - "description": "Limit text" - }, - "gateway": { - "message": "网关", - "description": "Gateway title" - }, - "bundlrNode": { - "message": "Bundler 节点", - "description": "Bundler node title" - }, - "removeApp": { - "message": "移除应用", - "description": "Remove app button" - }, - "removeAppNote": { - "message": "移除所有权限并断开与 ArConnect 的应用连接。", - "description": "Remove app note paragraph" - }, - "remove": { - "message": "移除", - "description": "Remove button text" - }, - "block": { - "message": "阻止应用程序", - "description": "Block button" - }, - "unblock": { - "message": "解锁应用程序", - "description": "Unblock button" - }, - "setCustomGateway": { - "message": "设置自定义网关", - "description": "Notification about setting a custom gateway for an app" - }, - "settings": { - "message": "设置", - "description": "Settings title" - }, - "quick_settings": { - "message": "快速设置", - "description": "Quick Settings title" - }, - "setting_apps": { - "message": "应用程序", - "description": "Apps settings title" - }, - "setting_wallets": { - "message": "钱包", - "description": "Wallets settings title" - }, - "setting_config": { - "message": "下载配置", - "description": "Config settings title" - }, - "setting_about": { - "message": "关于", - "description": "About settings title" - }, - "setting_reset": { - "message": "重置", - "description": "Reset settings title" - }, - "setting_analytic": { - "message": "分析", - "description": "Analytics to help make ArConnect better" - }, - "setting_fee_multiplier": { - "message": "费用倍数", - "description": "Fee multiplier settings title" - }, - "setting_currency": { - "message": "货币", - "description": "Reset settings title" - }, - "setting_dre_node": { - "message": "Warp DRE 节点", - "description": "Warp DRE node setting title" - }, - "setting_arverify": { - "message": "ArVerify 阈值", - "description": "ArVerify settings title" - }, - "setting_arconfetti": { - "message": "ArConfetti 效果", - "description": "ArConfetti effect settings title" - }, - "setting_sign_notification": { - "message": "签署通知", - "description": "Sign notification settings title" - }, - "setting_sign_settings": { - "message": "签名设置", - "description": "Sign settings title" - }, - "setting_display_theme": { - "message": "主题", - "description": "Theme settings title" - }, - "setting_wayfinder": { - "message": "Wayfinder", - "description": "Wayfinder settings title" - }, - "setting_notifications": { - "message": "通知", - "description": "Notifications settings title" - }, - "setting_notifications_description": { - "message": "管理钱包活动警报", - "description": "Notifications settings description" - }, - "setting_all_settings": { - "message": "所有设置", - "description": "All settings description" - }, - "setting_all_settings_description": { - "message": "", - "description": "All settings description" - }, - "setting_apps_description": { - "message": "查看所有已连接的应用程序和设置", - "description": "App settings description" - }, - "setting_wallets_description": { - "message": "管理您的钱包", - "description": "Wallet settings description" - }, - "setting_config_description": { - "message": "下载 ArConnect 配置", - "description": "Config settings description" - }, - "setting_about_description": { - "message": "关于 ArConnect 的信息", - "description": "Config settings description" - }, - "setting_reset_description": { - "message": "移除所有钱包和数据", - "description": "Reset settings description" - }, - "setting_analytics_description": { - "message": "向 ArConnect 团队提供有用的匿名数据以改进项目", - "description": "ArConnect Analytics description" - }, - "setting_fee_multiplier_description": { - "message": "控制交易后的费用", - "description": "Fee multiplier settings description" - }, - "setting_setting_currency_description": { - "message": "法定货币显示", - "description": "Currency settings description" - }, - "setting_setting_dre_node_description": { - "message": "设置首选的 DRE 节点以进行合约评估", - "desription": "Preferred DRE node setting description" - }, - "setting_setting_arverify_description": { - "message": "设置使用的验证阈值", - "description": "Arverify settings description" - }, - "setting_setting_arconfetti_description": { - "message": "在使用钱包时显示动画", - "description": "ArConfetti settings description" - }, - "setting_sign_notification_description": { - "message": "签署交易时通知", - "description": "Sign notification settings description" - }, - "setting_display_theme_description": { - "message": "扩展 UI 的主题", - "description": "Display theme settings description" - }, - "setting_wayfinder_description": { - "message": "针对 ar.io 网关的实验性系统范围导航器", - "description": "Wayfinder settings description" - }, - "search_pick_option": { - "message": "搜索选项...", - "description": "Search input placeholder for the \"pick\" option component" - }, - "search_apps": { - "message": "搜索应用...", - "description": "Search input placeholder for apps" - }, - "search_wallets": { - "message": "搜索钱包...", - "description": "Search input placeholder for wallets" - }, - "search_tokens": { - "message": "搜索令牌...", - "description": "Search input placeholder for tokens" - }, - "export_keyfile": { - "message": "导出密钥文件", - "description": "Export keyfile button" - }, - "export_keyfile_description": { - "message": "输入密码导出钱包密钥文件", - "description": "Export keyfile description" - }, - "edit_wallet": { - "message": "编辑钱包", - "description": "Edit wallet button" - }, - "remove_wallet": { - "message": "移除钱包", - "description": "Remove wallet button" - }, - "edit_wallet_name": { - "message": "编辑名称", - "description": "Edit wallet name title in settings" - }, - "updated_wallet_name": { - "message": "已更新钱包名称", - "description": "Wallet name update notification content" - }, - "error_updating_wallet_name": { - "message": "更新钱包名称时出错", - "description": "Wallet name update error notification content" - }, - "copied_address": { - "message": "$NAME$ ($ADDRESS$) 地址已复制", - "description": "Address copy notification", - "placeholders": { - "name": { - "content": "$1", - "example": "Account 1" - }, - "address": { - "content": "$2", - "example": "ljvCPN31...-CS-6Iho8U" - } - } - }, - "copied_address_2": { - "message": "地址已复制", - "description": "Address copy notification 2" - }, - "cannot_edit_with_ans": { - "message": "无法编辑昵称。钱包已经有 ANS 标签。", - "description": "Explainer for disabled edits for wallets with ANS profiles" - }, - "add_wallet_subtitle": { - "message": "您可以添加任意数量", - "description": "Subtitle for add wallet section" - }, - "drag_and_drop_wallet": { - "message": "拖放钱包...", - "description": "Wallet input text" - }, - "enter_new_password": { - "message": "输入新密码...", - "description": "Password input placeholder" - }, - "reenter_new_password": { - "message": "重新输入新密码...", - "description": "Re-enter input placeholder" - }, - "enter_password": { - "message": "输入您的密码...", - "description": "Password input placeholder" - }, - "enter_password_again": { - "message": "重新输入您的密码...", - "description": "Re-enter password input placeholder" - }, - "passwords_match": { - "message": "密码匹配!", - "description": "Passwords are matching indicator text" - }, - "passwords_not_match": { - "message": "密码不匹配", - "description": "Invalid re-entered password error" - }, - "passwords_match_previous": { - "message": "新密码不能与旧密码相同", - "description": "Password must be different from old one" - }, - "invalid_mnemonic": { - "message": "无效的助记词", - "description": "Invalid mnemonic seedphrase error notification" - }, - "added_wallet": { - "message": "已添加钱包", - "description": "Added wallets notification" - }, - "error_adding_wallet": { - "message": "添加钱包出错。请检查您的密码", - "description": "Error on wallet adding notification" - }, - "no_apps_added": { - "message": "尚未添加应用...", - "description": "No apps added message" - }, - "remove_wallet_modal_title": { - "message": "移除钱包?", - "description": "Remove wallet modal title" - }, - "remove_wallet_modal_content": { - "message": "您确定要继续吗?此操作无法撤销。", - "description": "Remove wallet modal content" - }, - "confirm": { - "message": "确认", - "description": "Confirm button text" - }, - "confirm_transaction": { - "message": "确认交易", - "description": "Confirm Transaction Header" - }, - "subscription_payment": { - "message": "订阅付款", - "description": "Subscribtion payment header" - }, - "removed_wallet_notification": { - "message": "已移除钱包", - "description": "Notification for wallet removal" - }, - "remove_wallet_error_notification": { - "message": "移除钱包出错", - "description": "Notification for wallet removal error" - }, - "cancel": { - "message": "取消", - "description": "Cancel button text" - }, - "export": { - "message": "导出", - "description": "Export button text" - }, - "export_wallet_modal_title": { - "message": "导出钱包", - "description": "Export wallet modal title" - }, - "export_wallet_error": { - "message": "导出钱包出错", - "description": "Wallet export error notification" - }, - "development_version": { - "message": "开发版本", - "description": "Development version badge text" - }, - "permissions_used": { - "message": "我们使用了以下权限:", - "description": "Used permissions label" - }, - "reset_warning": { - "message": "重置 ArConnect 将删除您所有的数据。这包括您的钱包、设置和缓存数据。", - "description": "Warning about resetting ArConnect" - }, - "irreversible_action": { - "message": "此操作是不可逆的!", - "description": "Warning about an irreversible action" - }, - "reset_error": { - "message": "无法重置 ArConnect", - "description": "Error message on reset" - }, - "welcome_to": { - "message": "欢迎来到", - "description": "\"Welcome to\" text" - }, - "get_me_started": { - "message": "开始使用", - "description": "Get me started button text" - }, - "have_wallet": { - "message": "我有一个钱包", - "description": "Has wallet button text" - }, - "skip": { - "message": "跳过", - "description": "Skip label" - }, - "next": { - "message": "下一步", - "description": "Next button text" - }, - "what_is_arweave": { - "message": "什么是 Arweave?", - "description": "What is arweave title" - }, - "about_arweave": { - "message": "Arweave 是一个允许您永久、可持续地存储数据的协议,只需一次性支付。该协议将拥有多余硬盘空间的人与需要永久存储数据或托管内容的个人和组织连接起来。", - "description": "A short paragraph explaining Arweave" - }, - "what_is_the_permaweb": { - "message": "什么是永久网络?", - "description": "What is the permaweb title" - }, - "about_permaweb": { - "message": "Arweave 上的永久网络是网络的下一次进化,使开发者和用户能够共享一个在全球范围内大量复制的有韧性的知识库,永久存在。除了数据,Arweave 还托管许多完全去中心化的永久应用程序。", - "description": "A short paragraph explaining the permaweb" - }, - "what_is_arconnect": { - "message": "什么是 ArConnect?", - "description": "What is arconnect title" - }, - "about_arconnect": { - "message": "ArConnect 是一个加密钱包扩展,允许您安全地与永久网络应用程序互动。它还让您可以轻松存储和管理资金。使用 ArConnect,您可以简单无缝地进入 Arweave 生态系统。", - "description": "A short paragraph explaining arconnect" - }, - "read_more_arwiki": { - "message": "阅读更多在", - "description": "\"Read more at (ArWiki)\" text" - }, - "backup": { - "message": "备份", - "description": "Backup title" - }, - "backup_wallet_title": { - "message": "备份您的钱包", - "description": "Backup wallet title" - }, - "backup_wallet_content": { - "message": "将这 12 个字的助记词保存到密码管理器,或将其写在纸上。永远不要与任何人分享。", - "description": "Backup wallet paragraph" - }, - "copySeed": { - "message": "复制助记词", - "description": "Copy seedphrase text" - }, - "done": { - "message": "完成", - "description": "Done button text" - }, - "setup_complete_title": { - "message": "设置完成", - "description": "Setup complete title" - }, - "generated_wallet": { - "message": "您的 Arweave 钱包地址为 $ADDRESS$ 已生成。您现在可以开始浏览永久网络了!", - "description": "Generated wallet notification", - "placeholders": { - "address": { - "content": "$1", - "example": "ljvCPN31...-CS-6Iho8U" - } - } - }, - "error_generating_wallet": { - "message": "生成钱包出错", - "description": "Error generating wallet notification" - }, - "written_down_seed": { - "message": "我已写下我的助记词", - "description": "Label for written down seedphrase checkbox" - }, - "generating_wallet": { - "message": "生成钱包中...", - "description": "Generating wallet in progress text" - }, - "keyfile": { - "message": "密钥文件", - "description": "Keyfile text" - }, - "confirm_seed": { - "message": "确认您的助记词", - "description": "Confirm seedphrase title" - }, - "confirm_seed_paragraph": { - "message": "通过在以下部分中完成缺失的助记词单词来验证您的助记词。", - "description": "Confirm seedphrase explainer paragraph" - }, - "correct": { - "message": "正确", - "description": "Correct text" - }, - "invalid_seed": { - "message": "输入的单词无效。请再试一次", - "description": "Invalid seed order notification" - }, - "create_password": { - "message": "创建密码", - "description": "Create password title" - }, - "create_password_paragraph": { - "message": "输入一个密码以保护 ArConnect。我们将使用此密码加密您的钱包。", - "description": "Create password explainer paragraph" - }, - "password_not_strong": { - "message": "您的密码不够强", - "description": "Notification about bad password strength" - }, - "password_strength_1": { - "message": "弱密码", - "description": "Level 1 strength password text" - }, - "password_strength_2": { - "message": "弱密码", - "description": "Level 2 strength password text" - }, - "password_strength_3": { - "message": "还行的密码", - "description": "Level 3 strength password text" - }, - "password_strength_4": { - "message": "强密码", - "description": "Level 4 strength password text" - }, - "password_strength_5": { - "message": "非常强的密码", - "description": "Level 5 strength password text" - }, - "password_strength_checklist_case": { - "message": "使用小写和大写字母", - "description": "Password strength checklist lowercase and uppercase element" - }, - "password_strength_checklist_number": { - "message": "使用数字", - "description": "Password strength checklist number element" - }, - "password_strength_checklist_symbol": { - "message": "使用符号", - "description": "Password strength checklist symbol element" - }, - "password_strength_checklist_length": { - "message": "至少 $NUMBER$ 个字符长", - "description": "Password strength checklist length element", - "placeholders": { - "number": { - "content": "$1", - "example": "10" + "extensionDescription": { + "message": "Arweave 的安全钱包管理", + "description": "Extension description" + }, + "clickToCopy": { + "message": "点击复制", + "description": "Text to indicate the ability to copy something" + }, + "switchedToWallet": { + "message": "已切换到 $ADDRESS$", + "description": "Notification on switching active wallet", + "placeholders": { + "address": { + "content": "$1", + "example": "ljvCPN31...-CS-6Iho8U" + } } - } - }, - "no_wallets_added": { - "message": "未添加钱包", - "description": "No wallets added title (devtools)" - }, - "no_wallets_added_paragraph": { - "message": "访问设置页面以使用此功能。", - "description": "No wallets added text (devtools)" - }, - "setup": { - "message": "设置", - "description": "Setup button text" - }, - "or": { - "message": "或", - "description": "\"Or\" text" - }, - "enter_seedphrase": { - "message": "输入助记词...", - "description": "Enter seedphrase input placeholder" - }, - "generate_wallet": { - "message": "生成钱包", - "description": "Generate wallet button text" - }, - "enter_pw_gen_wallet": { - "message": "输入密码以生成钱包", - "description": "Request to enter password before generating a wallet in settings" - }, - "select_recipient": { - "message": "选择接收者", - "description": "Select recipient when sending currency" - }, - "send_to": { - "message": "发送到", - "description": "Send To for slider menu" - }, - "no_close_window": { - "message": "不要关闭窗口!", - "description": "Request to not close the window" - }, - "generated_wallet_dashboard": { - "message": "钱包已生成,您现在可以关闭窗口了", - "description": "Notification about wallet generation" - }, - "provide_seedphrase": { - "message": "提供助记词", - "description": "Provide seedphrase for title in load wallet setup" - }, - "provide_seedphrase_paragraph": { - "message": "拖放您的密钥文件或输入您生成钱包时保存的 12 个字的助记词。确保其顺序正确。", - "description": "Explainer about the seedphrase loading" - }, - "sign_in": { - "message": "登录", - "description": "Sign In title" - }, - "app_wants_to_connect": { - "message": "一个应用想要连接", - "description": "App wants to connect label" - }, - "wallet": { - "message": "钱包", - "description": "Wallet label" - }, - "enter_your_password": { - "message": "输入您的密码...", - "description": "Enter password placeholder" - }, - "connect": { - "message": "连接", - "description": "Connect button text" - }, - "always_allow": { - "message": "始终允许", - "description": "Always allow button" - }, - "always_ask_permission": { - "message": "始终询问权限", - "description": "Always allow button" - }, - "allow_selected_permissions": { - "message": "允许选择的权限", - "description": "Always allow button" - }, - "allow_these_permissions": { - "message": "$APPNAME$ 想要使用以下权限连接到您的钱包", - "description": "Auth permissions label", - "placeholders": { - "appname": { - "content": "$1", - "example": "permafacts.arweave.dev" + }, + "yes": { + "message": "是", + "description": "The word \"yes\"" + }, + "no": { + "message": "否", + "description": "The word \"no\"" + }, + "accept": { + "message": "接受", + "description": "Accept terms" + }, + "search": { + "message": "搜索", + "description": "Search text" + }, + "general": { + "message": "普通", + "description": "General text" + }, + "advanced": { + "message": "高级", + "description": "Advanced text" + }, + "show": { + "message": "显示", + "description": "Show text" + }, + "hide": { + "message": "隐藏", + "description": "Hide text" + }, + "save": { + "message": "节省", + "description": "Save button text" + }, + "add_wallet": { + "message": "添加钱包", + "description": "Add a wallet text" + }, + "analytics_description": { + "message": "我们现在使用分析工具。", + "description": "Opting into Analytics text" + }, + "analytics_title": { + "message": "选择加入分析", + "description": "Analytics title" + }, + "edit": { + "message": "编辑", + "description": "Edit text" + }, + "appConnected": { + "message": "应用已连接", + "description": "Application connected text" + }, + "appNotConnected": { + "message": "应用未连接", + "description": "Application connected text" + }, + "forceConnect": { + "message": "强制连接", + "description": "Force connect button text" + }, + "decline": { + "message": "拒绝", + "description": "Decline terms" + }, + "devtools": { + "message": "开发者工具", + "description": "Devtools name" + }, + "gatewayNotTestnet": { + "message": "网关不是测试网网络", + "description": "Gateway not a testnet notification" + }, + "mint": { + "message": "铸造", + "description": "Mint button text" + }, + "mintAr": { + "message": "铸造 AR", + "description": "Mint AR tokens title" + }, + "arMinted": { + "message": "铸造了 $QTY$ AR 到 $ADDRESS$", + "description": "Message on arweave minted to an address", + "placeholders": { + "qty": { + "content": "$1", + "example": "10" + }, + "address": { + "content": "$2", + "example": "ljvCPN31...-CS-6Iho8U" + } } - } - }, - "reset_allowance": { - "message": "重置额度", - "description": "Reset allowance title" - }, - "reset_spent": { - "message": "重置已支出", - "description": "Reset spent button" - }, - "allowance_limit_reached": { - "message": "此应用已达到其额度限制", - "description": "App allowance limit reached label" - }, - "unlock": { - "message": "解锁", - "description": "Unlock title" - }, - "unlock_wallet_to_use": { - "message": "您需要解锁钱包才能继续使用。", - "description": "Unlock wallet explanation" - }, - "reset_wallet_password_to_use": { - "message": "建议重置密码以增强安全性", - "description": "Reset wallet password explanation" - }, - "receive": { - "message": "接收", - "description": "Receive title" - }, - "share": { - "message": "分享", - "description": "Share button text" - }, - "send": { - "message": "发送", - "description": "Send title" - }, - "send_message_optional": { - "message": "消息(可选)", - "description": "Optional message field" - }, - "network_fee": { - "message": "网络费用", - "description": "Transaction network fee text" - }, - "estimated": { - "message": "预计", - "description": "estimated" - }, - "invalid_amount": { - "message": "金额必须大于 0", - "description": "Invalid tx amount message" - }, - "invalid_address": { - "message": "目标地址无效", - "description": "Invalid address message" - }, - "sent_tx": { - "message": "已发送交易", - "description": "Transaction sent successfully notification" - }, - "failed_tx": { - "message": "无法发送交易", - "description": "Transfer error notification" - }, - "assets": { - "message": "资产", - "description": "Assets title" - }, - "asset": { - "message": "资产", - "description": "Asset title" - }, - "view_all": { - "message": "查看全部", - "description": "View all link text" - }, - "setting_tokens": { - "message": "代币", - "description": "Tokens setting title" - }, - "setting_tokens_description": { - "message": "管理由去中心化应用程序或用户添加的代币", - "description": "Tokens setting description" - }, - "setting_contacts": { - "message": "联系人", - "description": "Contacts setting title" - }, - "setting_contact": { - "message": "接触", - "description": "Contact setting title" - }, - "setting_contacts_description": { - "message": "添加/编辑联系人", - "description": "Contacts setting description" - }, - "explore": { - "message": "探索", - "description": "Explore title" - }, - "explore_article_read_more": { - "message": "阅读更多", - "description": "Read more link text" - }, - "addToken": { - "message": "添加代币", - "description": "Add token title" - }, - "addTokenParagraph": { - "message": "$APP$ 想要向您的钱包添加一个代币。请查看以下详细信息。", - "description": "Add token explanation", - "placeholders": { - "app": { - "content": "$1", - "example": "ardrive.app" - } - } - }, - "recents": { - "message": "最近", - "description": "Recents for send modal" - }, - "all_set": { - "message": "一切就绪!", - "description": "All set title" - }, - "all_set_paragraph": { - "message": "ArConnect 已使用您的密码和钱包设置完成。您现在可以关闭窗口。", - "description": "Paragraph indicating setup" - }, - "token_add_failure": { - "message": "添加代币失败", - "description": "Failed to add token error message" - }, - "no_assets": { - "message": "未添加资产...", - "description": "No assets added note" - }, - "about_title": { - "message": "关于", - "description": "About title" - }, - "no_description": { - "message": "没有可用描述", - "description": "No token description note" - }, - "info_title": { - "message": "信息", - "description": "Token info section title" - }, - "no_price": { - "message": "没有价格数据...", - "description": "No price data available note" - }, - "collectibles": { - "message": "收藏品", - "description": "Collectibles title" - }, - "collectible": { - "message": "收藏品", - "description": "Collectible title" - }, - "no_collectibles": { - "message": "没有添加收藏品", - "description": "No collectibles added note" - }, - "custom_gateway_warning": { - "message": "此代币使用自定义网关。这可能会减慢评估速度。", - "description": "Warning about adding tokens with custom gateways" - }, - "custom_gateway_warning_simple": { - "message": "使用了自定义网关", - "description": "Custom gateway label for transaction details" - }, - "choose_theme": { - "message": "选择 UI 主题", - "description": "UI theme option title in setup" - }, - "light_theme": { - "message": "亮色", - "description": "Light theme" - }, - "dark_theme": { - "message": "暗色", - "description": "Dark theme" - }, - "system_theme": { - "message": "系统", - "description": "System theme" - }, - "migration_available": { - "message": "可用迁移", - "description": "Migration available title" - }, - "migration_available_paragraph": { - "message": "看来您之前已经使用过旧版本的 ArConnect。我们可以迁移您之前版本中的钱包供使用。您仍需完成设置过程。", - "description": "Migration available paragraph" - }, - "migrate": { - "message": "迁移", - "description": "Migrate button text" - }, - "migration_confirmation": { - "message": "完成设置后将迁移您的钱包", - "description": "Migration confirmation notification" - }, - "migrate_wallets_list": { - "message": "这些钱包将被迁移:", - "description": "Label for migrated wallets" - }, - "migrate_wallets_not_migrated": { - "message": "这些钱包不会被迁移:", - "description": "Label for wallets that won't be migrated" - }, - "migrate_anyway": { - "message": "还是迁移!", - "description": "Migrate anyway button text" - }, - "migration_available_welcome": { - "message": "您可以通过点击“我有一个钱包”来从旧的 ArConnect 迁移您的钱包。", - "description": "Migration available banner text" - }, - "click_and_drag": { - "message": "点击并拖动", - "description": "Hover text for drag icon" - }, - "token_type": { - "message": "代币类型", - "description": "Token type label" - }, - "token_type_asset": { - "message": "资产", - "description": "Asset token type" - }, - "token_type_collectible": { - "message": "收藏品", - "description": "Collectible token type (NFT, etc.)" - }, - "remove_token": { - "message": "移除代币", - "description": "Remove token button text" - }, - "refresh_token": { - "message": "刷新令牌", - "description": "Refresh token button text" - }, - "your_balance": { - "message": "您的余额", - "description": "Balance label for tokens" - }, - "history": { - "message": "历史", - "description": "History title" - }, - "no_interaction_history": { - "message": "没有与此资产的历史记录", - "description": "No interaction history text for an asset" - }, - "titles_transaction": { - "message": "交易", - "description": "Transaction title" - }, - "transaction_id": { - "message": "交易 ID", - "description": "Transaction ID label" - }, - "process_id": { - "message": "过程 ID", - "description": "Process ID label" - }, - "transaction_from": { - "message": "从", - "description": "Transaction \"from\" label" - }, - "transaction_to": { - "message": "到", - "description": "Transaction \"to\" label" - }, - "transaction_fee": { - "message": "网络费用", - "description": "Transaction \"fee\" label" - }, - "transaction_size": { - "message": "大小", - "description": "Transaction \"size\" label" - }, - "transaction_confirmations": { - "message": "确认", - "description": "Transaction \"confirmations\" label" - }, - "transaction_block_height": { - "message": "区块", - "description": "Transaction \"block height\" label" - }, - "transaction_block_timestamp": { - "message": "时间戳", - "description": "Transaction \"timestamp\" label" - }, - "transaction_tags": { - "message": "标签", - "description": "Transaction \"tags\" label" - }, - "transaction_input": { - "message": "输入", - "description": "Contract interaction input label" - }, - "transaction_data": { - "message": "数据", - "description": "Transaction \"data\" label" - }, - "transaction_data_binary_warning": { - "message": "无法显示二进制交易数据...", - "description": "Warning about ArConnect not being able to display a transaction's data" - }, - "transaction_not_on_viewblock": { - "message": "在 Viewblock 上不可用", - "description": "Disabled viewblock link btn text" - }, - "transaction_view_last": { - "message": "点击查看您最近签署的交易", - "description": "View last tx prompt content" - }, - "sign_item": { - "message": "签署项目", - "description": "Sign message popup title" - }, - "titles_signature": { - "message": "签署消息", - "description": "Sign message popup title" - }, - "sign_data_description": { - "message": "$APPNAME$ 想要签署一笔交易。请查看以下详细信息。", - "description": "Description for signing an item containing a transfer", - "placeholders": { - "appname": { - "content": "$1", - "example": "permafacts.arweave.dev" + }, + "tokenMintFailed": { + "message": "铸造代币失败", + "description": "Message indicating minting failure" + }, + "mine": { + "message": "挖矿", + "description": "Mine button text" + }, + "mined": { + "message": "已挖矿", + "description": "Mine success message" + }, + "miningFailed": { + "message": "挖矿失败", + "description": "Mine failure message" + }, + "fillOutQtyField": { + "message": "请填写数量字段", + "description": "Fill out qty field error" + }, + "fillOutTargetField": { + "message": "请填写目标字段", + "description": "Fill out target field error" + }, + "addFileError": { + "message": "请添加文件", + "description": "Add file error" + }, + "couldNotReadTxData": { + "message": "无法读取交易数据文件", + "description": "File reading failure for tx data" + }, + "invalidPassword": { + "message": "密码无效", + "description": "Invalid password error" + }, + "invalid_qty_error": { + "message": "0.001 是最低金额。请将您的限制更改为更高的金额。", + "description": "Warning message for setting a limit too low" + }, + "testnetLive": { + "message": "测试网已上线", + "description": "Testnet live message" + }, + "testnetDown": { + "message": "测试网已离线", + "description": "Testnet offline message" + }, + "testnetGatewayUrlLabel": { + "message": "测试网网关网址", + "description": "Label indicating the input content to be the testnet gateway url" + }, + "arlocalCommandTutorial": { + "message": "没有安装 ArLocal?像这样运行它:", + "description": "Tutorial for the user on running ArLocal" + }, + "addTestnetTokensSubtitle": { + "message": "将测试网代币添加到您的钱包", + "description": "Subtitle indicating the ability to add testnet AR tokens to the active wallet" + }, + "analytics": { + "message": "分析", + "description": "Analytics text" + }, + "arQtyPlaceholder": { + "message": "AR 数量...", + "description": "Placeholder for AR amount input" + }, + "createTransaction": { + "message": "创建交易", + "description": "Create transaction title" + }, + "createTransactionSubtitle": { + "message": "发送带有标签和数据的交易", + "description": "Send transaction subtitle" + }, + "leaveEmptyForNone": { + "message": "留空表示无...", + "description": "Placeholder for inputs that take empty values as none" + }, + "target": { + "message": "目标", + "description": "Target label" + }, + "amount": { + "message": "金额", + "description": "Amount label" + }, + "tags": { + "message": "标签", + "description": "Tags label" + }, + "name": { + "message": "名称", + "description": "Name label" + }, + "tagNamePlaceholder": { + "message": "标签名称...", + "description": "Tag name placeholder" + }, + "value": { + "message": "值", + "description": "Value label" + }, + "tagValuePlaceholder": { + "message": "标签值...", + "description": "Tag value placeholder" + }, + "addTag": { + "message": "添加标签", + "description": "Add tag button" + }, + "data": { + "message": "数据", + "description": "Data label" + }, + "dragAndDropFile": { + "message": "拖放文件...", + "description": "File input label" + }, + "password": { + "message": "密码", + "description": "Password label" + }, + "new_password": { + "message": "新密码", + "description": "Password label" + }, + "confirm_new_password": { + "message": "重新输入新密码", + "description": "Password label" + }, + "enterPasswordToDecrypt": { + "message": "输入密码以解密钱包...", + "description": "Password request to decrypt wallet" + }, + "sendTransaction": { + "message": "发送交易", + "description": "Send transaction button" + }, + "permissionDescriptionAccessAddress": { + "message": "允许访问活动地址", + "description": "Description for the \"ACCESS_ADDRESS\" permission" + }, + "permissionDescriptionAccessPublicKey": { + "message": "允许访问活动地址的公钥", + "description": "Description for the \"ACCESS_PUBLIC_KEY\" permission" + }, + "permissionDescriptionAccessAllAddresses": { + "message": "允许访问所有活动和非活动钱包地址", + "description": "Description for the \"ACCESS_ALL_ADDRESSES\" permission" + }, + "permissionDescriptionSign": { + "message": "允许签署交易。", + "description": "Description for the \"SIGN_TRANSACTION\" permission" + }, + "permissionDescriptionEncrypt": { + "message": "允许使用钱包的密钥文件加密数据。这并不授予对密钥文件的访问权限", + "description": "Description for the \"ENCRYPT\" permission" + }, + "permissionDescriptionDecrypt": { + "message": "允许使用钱包的密钥文件解密数据。这并不授予对密钥文件的访问权限", + "description": "Description for the \"DECRYPT\" permission" + }, + "permissionDescriptionSignature": { + "message": "允许签署数据。", + "description": "Description for the \"SIGNATURE\" permission" + }, + "permissionDescriptionArweaveConfig": { + "message": "允许读取 ArConnect 配置文件", + "description": "Description for the \"ACCESS_ARWEAVE_CONFIG\" permission" + }, + "permissionDescriptionDispatch": { + "message": "允许使用调度交易。", + "description": "Description for the \"DISPATCH\" permission" + }, + "copyId": { + "message": "复制 ID", + "description": "Copy ID button text" + }, + "connectionFailure": { + "message": "无法连接到应用", + "description": "Notification about app connection failure in devtools" + }, + "permissions": { + "message": "权限", + "description": "Permissions title" + }, + "edit_permissions": { + "message": "编辑权限", + "description": "Edit permissions title" + }, + "app_permissions": { + "message": "应用权限", + "description": "App permissions title" + }, + "allowance": { + "message": "额度", + "description": "Allowance title" + }, + "allowanceTip": { + "message": "为此应用设置支出限制", + "description": "Tip explaining allowances for the user" + }, + "enabled": { + "message": "已启用", + "description": "Enabled label" + }, + "disabled": { + "message": "已禁用", + "description": "Disabled label" + }, + "u_token_disabled": { + "message": "目前无法转移 U-Token", + "description": "U-token Disabled label" + }, + "spent": { + "message": "已支出", + "description": "Spent text" + }, + "reset": { + "message": "重置", + "description": "Reset text" + }, + "resetSpentQty": { + "message": "重置已支出数量", + "description": "Reset tooltip text" + }, + "limit": { + "message": "限制", + "description": "Limit text" + }, + "gateway": { + "message": "网关", + "description": "Gateway title" + }, + "bundlrNode": { + "message": "Bundler 节点", + "description": "Bundler node title" + }, + "removeApp": { + "message": "移除应用", + "description": "Remove app button" + }, + "removeAppNote": { + "message": "移除所有权限并断开与 ArConnect 的应用连接。", + "description": "Remove app note paragraph" + }, + "remove": { + "message": "移除", + "description": "Remove button text" + }, + "block": { + "message": "阻止应用程序", + "description": "Block button" + }, + "unblock": { + "message": "解锁应用程序", + "description": "Unblock button" + }, + "setCustomGateway": { + "message": "设置自定义网关", + "description": "Notification about setting a custom gateway for an app" + }, + "settings": { + "message": "设置", + "description": "Settings title" + }, + "quick_settings": { + "message": "快速设置", + "description": "Quick Settings title" + }, + "setting_apps": { + "message": "应用程序", + "description": "Apps settings title" + }, + "setting_wallets": { + "message": "钱包", + "description": "Wallets settings title" + }, + "setting_config": { + "message": "下载配置", + "description": "Config settings title" + }, + "setting_about": { + "message": "关于", + "description": "About settings title" + }, + "setting_reset": { + "message": "重置", + "description": "Reset settings title" + }, + "setting_analytic": { + "message": "分析", + "description": "Analytics to help make ArConnect better" + }, + "setting_fee_multiplier": { + "message": "费用倍数", + "description": "Fee multiplier settings title" + }, + "setting_currency": { + "message": "货币", + "description": "Reset settings title" + }, + "setting_dre_node": { + "message": "Warp DRE 节点", + "description": "Warp DRE node setting title" + }, + "setting_arverify": { + "message": "ArVerify 阈值", + "description": "ArVerify settings title" + }, + "setting_arconfetti": { + "message": "ArConfetti 效果", + "description": "ArConfetti effect settings title" + }, + "setting_sign_notification": { + "message": "签署通知", + "description": "Sign notification settings title" + }, + "setting_sign_settings": { + "message": "签名设置", + "description": "Sign settings title" + }, + "setting_display_theme": { + "message": "主题", + "description": "Theme settings title" + }, + "setting_wayfinder": { + "message": "Wayfinder", + "description": "Wayfinder settings title" + }, + "setting_notifications": { + "message": "通知", + "description": "Notifications settings title" + }, + "setting_notifications_description": { + "message": "管理钱包活动警报", + "description": "Notifications settings description" + }, + "setting_all_settings": { + "message": "所有设置", + "description": "All settings description" + }, + "setting_all_settings_description": { + "message": "", + "description": "All settings description" + }, + "setting_apps_description": { + "message": "查看所有已连接的应用程序和设置", + "description": "App settings description" + }, + "setting_wallets_description": { + "message": "管理您的钱包", + "description": "Wallet settings description" + }, + "setting_config_description": { + "message": "下载 ArConnect 配置", + "description": "Config settings description" + }, + "setting_about_description": { + "message": "关于 ArConnect 的信息", + "description": "Config settings description" + }, + "setting_reset_description": { + "message": "移除所有钱包和数据", + "description": "Reset settings description" + }, + "setting_analytics_description": { + "message": "向 ArConnect 团队提供有用的匿名数据以改进项目", + "description": "ArConnect Analytics description" + }, + "setting_fee_multiplier_description": { + "message": "控制交易后的费用", + "description": "Fee multiplier settings description" + }, + "setting_setting_currency_description": { + "message": "法定货币显示", + "description": "Currency settings description" + }, + "setting_setting_dre_node_description": { + "message": "设置首选的 DRE 节点以进行合约评估", + "desription": "Preferred DRE node setting description" + }, + "setting_setting_arverify_description": { + "message": "设置使用的验证阈值", + "description": "Arverify settings description" + }, + "setting_setting_arconfetti_description": { + "message": "在使用钱包时显示动画", + "description": "ArConfetti settings description" + }, + "setting_sign_notification_description": { + "message": "签署交易时通知", + "description": "Sign notification settings description" + }, + "setting_display_theme_description": { + "message": "扩展 UI 的主题", + "description": "Display theme settings description" + }, + "setting_wayfinder_description": { + "message": "针对 ar.io 网关的实验性系统范围导航器", + "description": "Wayfinder settings description" + }, + "search_pick_option": { + "message": "搜索选项...", + "description": "Search input placeholder for the \"pick\" option component" + }, + "search_apps": { + "message": "搜索应用...", + "description": "Search input placeholder for apps" + }, + "search_wallets": { + "message": "搜索钱包...", + "description": "Search input placeholder for wallets" + }, + "search_tokens": { + "message": "搜索令牌...", + "description": "Search input placeholder for tokens" + }, + "export_keyfile": { + "message": "导出密钥文件", + "description": "Export keyfile button" + }, + "export_keyfile_description": { + "message": "输入密码导出钱包密钥文件", + "description": "Export keyfile description" + }, + "edit_wallet": { + "message": "编辑钱包", + "description": "Edit wallet button" + }, + "remove_wallet": { + "message": "移除钱包", + "description": "Remove wallet button" + }, + "edit_wallet_name": { + "message": "编辑名称", + "description": "Edit wallet name title in settings" + }, + "updated_wallet_name": { + "message": "已更新钱包名称", + "description": "Wallet name update notification content" + }, + "error_updating_wallet_name": { + "message": "更新钱包名称时出错", + "description": "Wallet name update error notification content" + }, + "copied_address": { + "message": "$NAME$ ($ADDRESS$) 地址已复制", + "description": "Address copy notification", + "placeholders": { + "name": { + "content": "$1", + "example": "Account 1" + }, + "address": { + "content": "$2", + "example": "ljvCPN31...-CS-6Iho8U" + } + } + }, + "copied_address_2": { + "message": "地址已复制", + "description": "Address copy notification 2" + }, + "cannot_edit_with_ans": { + "message": "无法编辑昵称。钱包已经有 ANS 标签。", + "description": "Explainer for disabled edits for wallets with ANS profiles" + }, + "add_wallet_subtitle": { + "message": "您可以添加任意数量", + "description": "Subtitle for add wallet section" + }, + "drag_and_drop_wallet": { + "message": "拖放钱包...", + "description": "Wallet input text" + }, + "enter_new_password": { + "message": "输入新密码...", + "description": "Password input placeholder" + }, + "reenter_new_password": { + "message": "重新输入新密码...", + "description": "Re-enter input placeholder" + }, + "enter_password": { + "message": "输入您的密码...", + "description": "Password input placeholder" + }, + "enter_password_again": { + "message": "重新输入您的密码...", + "description": "Re-enter password input placeholder" + }, + "passwords_match": { + "message": "密码匹配!", + "description": "Passwords are matching indicator text" + }, + "passwords_not_match": { + "message": "密码不匹配", + "description": "Invalid re-entered password error" + }, + "passwords_match_previous": { + "message": "新密码不能与旧密码相同", + "description": "Password must be different from old one" + }, + "invalid_mnemonic": { + "message": "无效的助记词", + "description": "Invalid mnemonic seedphrase error notification" + }, + "added_wallet": { + "message": "已添加钱包", + "description": "Added wallets notification" + }, + "error_adding_wallet": { + "message": "添加钱包出错。请检查您的密码", + "description": "Error on wallet adding notification" + }, + "no_apps_added": { + "message": "尚未添加应用...", + "description": "No apps added message" + }, + "remove_wallet_modal_title": { + "message": "移除钱包?", + "description": "Remove wallet modal title" + }, + "remove_wallet_modal_content": { + "message": "您确定要继续吗?此操作无法撤销。", + "description": "Remove wallet modal content" + }, + "confirm": { + "message": "确认", + "description": "Confirm button text" + }, + "confirm_transaction": { + "message": "确认交易", + "description": "Confirm Transaction Header" + }, + "subscription_payment": { + "message": "订阅付款", + "description": "Subscribtion payment header" + }, + "removed_wallet_notification": { + "message": "已移除钱包", + "description": "Notification for wallet removal" + }, + "remove_wallet_error_notification": { + "message": "移除钱包出错", + "description": "Notification for wallet removal error" + }, + "cancel": { + "message": "取消", + "description": "Cancel button text" + }, + "export": { + "message": "导出", + "description": "Export button text" + }, + "export_wallet_modal_title": { + "message": "导出钱包", + "description": "Export wallet modal title" + }, + "export_wallet_error": { + "message": "导出钱包出错", + "description": "Wallet export error notification" + }, + "development_version": { + "message": "开发版本", + "description": "Development version badge text" + }, + "permissions_used": { + "message": "我们使用了以下权限:", + "description": "Used permissions label" + }, + "reset_warning": { + "message": "重置 ArConnect 将删除您所有的数据。这包括您的钱包、设置和缓存数据。", + "description": "Warning about resetting ArConnect" + }, + "irreversible_action": { + "message": "此操作是不可逆的!", + "description": "Warning about an irreversible action" + }, + "reset_error": { + "message": "无法重置 ArConnect", + "description": "Error message on reset" + }, + "welcome_to": { + "message": "欢迎来到", + "description": "\"Welcome to\" text" + }, + "get_me_started": { + "message": "开始使用", + "description": "Get me started button text" + }, + "have_wallet": { + "message": "我有一个钱包", + "description": "Has wallet button text" + }, + "skip": { + "message": "跳过", + "description": "Skip label" + }, + "next": { + "message": "下一步", + "description": "Next button text" + }, + "what_is_arweave": { + "message": "什么是 Arweave?", + "description": "What is arweave title" + }, + "about_arweave": { + "message": "Arweave 是一个允许您永久、可持续地存储数据的协议,只需一次性支付。该协议将拥有多余硬盘空间的人与需要永久存储数据或托管内容的个人和组织连接起来。", + "description": "A short paragraph explaining Arweave" + }, + "what_is_the_permaweb": { + "message": "什么是永久网络?", + "description": "What is the permaweb title" + }, + "about_permaweb": { + "message": "Arweave 上的永久网络是网络的下一次进化,使开发者和用户能够共享一个在全球范围内大量复制的有韧性的知识库,永久存在。除了数据,Arweave 还托管许多完全去中心化的永久应用程序。", + "description": "A short paragraph explaining the permaweb" + }, + "what_is_arconnect": { + "message": "什么是 ArConnect?", + "description": "What is arconnect title" + }, + "about_arconnect": { + "message": "ArConnect 是一个加密钱包扩展,允许您安全地与永久网络应用程序互动。它还让您可以轻松存储和管理资金。使用 ArConnect,您可以简单无缝地进入 Arweave 生态系统。", + "description": "A short paragraph explaining arconnect" + }, + "read_more_arwiki": { + "message": "阅读更多在", + "description": "\"Read more at (ArWiki)\" text" + }, + "backup": { + "message": "备份", + "description": "Backup title" + }, + "backup_wallet_title": { + "message": "备份您的钱包", + "description": "Backup wallet title" + }, + "backup_wallet_content": { + "message": "将这 12 个字的助记词保存到密码管理器,或将其写在纸上。永远不要与任何人分享。", + "description": "Backup wallet paragraph" + }, + "copySeed": { + "message": "复制助记词", + "description": "Copy seedphrase text" + }, + "done": { + "message": "完成", + "description": "Done button text" + }, + "setup_complete_title": { + "message": "设置完成", + "description": "Setup complete title" + }, + "generated_wallet": { + "message": "您的 Arweave 钱包地址为 $ADDRESS$ 已生成。您现在可以开始浏览永久网络了!", + "description": "Generated wallet notification", + "placeholders": { + "address": { + "content": "$1", + "example": "ljvCPN31...-CS-6Iho8U" + } + } + }, + "error_generating_wallet": { + "message": "生成钱包出错", + "description": "Error generating wallet notification" + }, + "written_down_seed": { + "message": "我已写下我的助记词", + "description": "Label for written down seedphrase checkbox" + }, + "generating_wallet": { + "message": "生成钱包中...", + "description": "Generating wallet in progress text" + }, + "keyfile": { + "message": "密钥文件", + "description": "Keyfile text" + }, + "confirm_seed": { + "message": "确认您的助记词", + "description": "Confirm seedphrase title" + }, + "confirm_seed_paragraph": { + "message": "通过在以下部分中完成缺失的助记词单词来验证您的助记词。", + "description": "Confirm seedphrase explainer paragraph" + }, + "correct": { + "message": "正确", + "description": "Correct text" + }, + "invalid_seed": { + "message": "输入的单词无效。请再试一次", + "description": "Invalid seed order notification" + }, + "create_password": { + "message": "创建密码", + "description": "Create password title" + }, + "create_password_paragraph": { + "message": "输入一个密码以保护 ArConnect。我们将使用此密码加密您的钱包。", + "description": "Create password explainer paragraph" + }, + "password_not_strong": { + "message": "您的密码不够强", + "description": "Notification about bad password strength" + }, + "password_strength_1": { + "message": "弱密码", + "description": "Level 1 strength password text" + }, + "password_strength_2": { + "message": "弱密码", + "description": "Level 2 strength password text" + }, + "password_strength_3": { + "message": "还行的密码", + "description": "Level 3 strength password text" + }, + "password_strength_4": { + "message": "强密码", + "description": "Level 4 strength password text" + }, + "password_strength_5": { + "message": "非常强的密码", + "description": "Level 5 strength password text" + }, + "password_strength_checklist_case": { + "message": "使用小写和大写字母", + "description": "Password strength checklist lowercase and uppercase element" + }, + "password_strength_checklist_number": { + "message": "使用数字", + "description": "Password strength checklist number element" + }, + "password_strength_checklist_symbol": { + "message": "使用符号", + "description": "Password strength checklist symbol element" + }, + "password_strength_checklist_length": { + "message": "至少 $NUMBER$ 个字符长", + "description": "Password strength checklist length element", + "placeholders": { + "number": { + "content": "$1", + "example": "10" } - } - }, - "signature_description": { - "message": "$APPNAME$ 想要签署一条消息。请查看以下消息。", - "description": "App signature request for data that cannot be decoded to string", - "placeholders": { + } + }, + "no_wallets_added": { + "message": "未添加钱包", + "description": "No wallets added title (devtools)" + }, + "no_wallets_added_paragraph": { + "message": "访问设置页面以使用此功能。", + "description": "No wallets added text (devtools)" + }, + "setup": { + "message": "设置", + "description": "Setup button text" + }, + "or": { + "message": "或", + "description": "\"Or\" text" + }, + "enter_seedphrase": { + "message": "输入助记词...", + "description": "Enter seedphrase input placeholder" + }, + "generate_wallet": { + "message": "生成钱包", + "description": "Generate wallet button text" + }, + "enter_pw_gen_wallet": { + "message": "输入密码以生成钱包", + "description": "Request to enter password before generating a wallet in settings" + }, + "select_recipient": { + "message": "选择接收者", + "description": "Select recipient when sending currency" + }, + "send_to": { + "message": "发送到", + "description": "Send To for slider menu" + }, + "no_close_window": { + "message": "不要关闭窗口!", + "description": "Request to not close the window" + }, + "generated_wallet_dashboard": { + "message": "钱包已生成,您现在可以关闭窗口了", + "description": "Notification about wallet generation" + }, + "provide_seedphrase": { + "message": "提供助记词", + "description": "Provide seedphrase for title in load wallet setup" + }, + "provide_seedphrase_paragraph": { + "message": "拖放您的密钥文件或输入您生成钱包时保存的 12 个字的助记词。确保其顺序正确。", + "description": "Explainer about the seedphrase loading" + }, + "sign_in": { + "message": "登录", + "description": "Sign In title" + }, + "app_wants_to_connect": { + "message": "一个应用想要连接", + "description": "App wants to connect label" + }, + "wallet": { + "message": "钱包", + "description": "Wallet label" + }, + "enter_your_password": { + "message": "输入您的密码...", + "description": "Enter password placeholder" + }, + "connect": { + "message": "连接", + "description": "Connect button text" + }, + "always_allow": { + "message": "始终允许", + "description": "Always allow button" + }, + "always_ask_permission": { + "message": "始终询问权限", + "description": "Always allow button" + }, + "allow_selected_permissions": { + "message": "允许选择的权限", + "description": "Always allow button" + }, + "allow_these_permissions": { + "message": "$APPNAME$ 想要使用以下权限连接到您的钱包", + "description": "Auth permissions label", + "placeholders": { "appname": { - "content": "$1", - "example": "permafacts.arweave.dev" + "content": "$1", + "example": "permafacts.arweave.dev" } - } - }, - "signature_message": { + } + }, + "reset_allowance": { + "message": "重置额度", + "description": "Reset allowance title" + }, + "reset_spent": { + "message": "重置已支出", + "description": "Reset spent button" + }, + "allowance_limit_reached": { + "message": "此应用已达到其额度限制", + "description": "App allowance limit reached label" + }, + "unlock": { + "message": "解锁", + "description": "Unlock title" + }, + "unlock_wallet_to_use": { + "message": "您需要解锁钱包才能继续使用。", + "description": "Unlock wallet explanation" + }, + "reset_wallet_password_to_use": { + "message": "建议重置密码以增强安全性", + "description": "Reset wallet password explanation" + }, + "receive": { + "message": "接收", + "description": "Receive title" + }, + "share": { + "message": "分享", + "description": "Share button text" + }, + "send": { + "message": "发送", + "description": "Send title" + }, + "send_message_optional": { + "message": "消息(可选)", + "description": "Optional message field" + }, + "network_fee": { + "message": "网络费用", + "description": "Transaction network fee text" + }, + "estimated": { + "message": "预计", + "description": "estimated" + }, + "invalid_amount": { + "message": "金额必须大于 0", + "description": "Invalid tx amount message" + }, + "invalid_address": { + "message": "目标地址无效", + "description": "Invalid address message" + }, + "sent_tx": { + "message": "已发送交易", + "description": "Transaction sent successfully notification" + }, + "failed_tx": { + "message": "无法发送交易", + "description": "Transfer error notification" + }, + "assets": { + "message": "资产", + "description": "Assets title" + }, + "asset": { + "message": "资产", + "description": "Asset title" + }, + "view_all": { + "message": "查看全部", + "description": "View all link text" + }, + "setting_tokens": { + "message": "代币", + "description": "Tokens setting title" + }, + "setting_tokens_description": { + "message": "管理由去中心化应用程序或用户添加的代币", + "description": "Tokens setting description" + }, + "setting_contacts": { + "message": "联系人", + "description": "Contacts setting title" + }, + "setting_contact": { + "message": "接触", + "description": "Contact setting title" + }, + "setting_contacts_description": { + "message": "添加/编辑联系人", + "description": "Contacts setting description" + }, + "explore": { + "message": "探索", + "description": "Explore title" + }, + "explore_article_read_more": { + "message": "阅读更多", + "description": "Read more link text" + }, + "addToken": { + "message": "添加代币", + "description": "Add token title" + }, + "addTokenParagraph": { + "message": "$APP$ 想要向您的钱包添加一个代币。请查看以下详细信息。", + "description": "Add token explanation", + "placeholders": { + "app": { + "content": "$1", + "example": "ardrive.app" + } + } + }, + "recents": { + "message": "最近", + "description": "Recents for send modal" + }, + "all_set": { + "message": "一切就绪!", + "description": "All set title" + }, + "all_set_paragraph": { + "message": "ArConnect 已使用您的密码和钱包设置完成。您现在可以关闭窗口。", + "description": "Paragraph indicating setup" + }, + "token_add_failure": { + "message": "添加代币失败", + "description": "Failed to add token error message" + }, + "no_assets": { + "message": "未添加资产...", + "description": "No assets added note" + }, + "about_title": { + "message": "关于", + "description": "About title" + }, + "no_description": { + "message": "没有可用描述", + "description": "No token description note" + }, + "info_title": { + "message": "信息", + "description": "Token info section title" + }, + "no_price": { + "message": "没有价格数据...", + "description": "No price data available note" + }, + "collectibles": { + "message": "收藏品", + "description": "Collectibles title" + }, + "collectible": { + "message": "收藏品", + "description": "Collectible title" + }, + "no_collectibles": { + "message": "没有添加收藏品", + "description": "No collectibles added note" + }, + "custom_gateway_warning": { + "message": "此代币使用自定义网关。这可能会减慢评估速度。", + "description": "Warning about adding tokens with custom gateways" + }, + "custom_gateway_warning_simple": { + "message": "使用了自定义网关", + "description": "Custom gateway label for transaction details" + }, + "choose_theme": { + "message": "选择 UI 主题", + "description": "UI theme option title in setup" + }, + "light_theme": { + "message": "亮色", + "description": "Light theme" + }, + "dark_theme": { + "message": "暗色", + "description": "Dark theme" + }, + "system_theme": { + "message": "系统", + "description": "System theme" + }, + "migration_available": { + "message": "可用迁移", + "description": "Migration available title" + }, + "migration_available_paragraph": { + "message": "看来您之前已经使用过旧版本的 ArConnect。我们可以迁移您之前版本中的钱包供使用。您仍需完成设置过程。", + "description": "Migration available paragraph" + }, + "migrate": { + "message": "迁移", + "description": "Migrate button text" + }, + "migration_confirmation": { + "message": "完成设置后将迁移您的钱包", + "description": "Migration confirmation notification" + }, + "migrate_wallets_list": { + "message": "这些钱包将被迁移:", + "description": "Label for migrated wallets" + }, + "migrate_wallets_not_migrated": { + "message": "这些钱包不会被迁移:", + "description": "Label for wallets that won't be migrated" + }, + "migrate_anyway": { + "message": "还是迁移!", + "description": "Migrate anyway button text" + }, + "migration_available_welcome": { + "message": "您可以通过点击“我有一个钱包”来从旧的 ArConnect 迁移您的钱包。", + "description": "Migration available banner text" + }, + "click_and_drag": { + "message": "点击并拖动", + "description": "Hover text for drag icon" + }, + "token_type": { + "message": "代币类型", + "description": "Token type label" + }, + "token_type_asset": { + "message": "资产", + "description": "Asset token type" + }, + "token_type_collectible": { + "message": "收藏品", + "description": "Collectible token type (NFT, etc.)" + }, + "remove_token": { + "message": "移除代币", + "description": "Remove token button text" + }, + "refresh_token": { + "message": "刷新令牌", + "description": "Refresh token button text" + }, + "your_balance": { + "message": "您的余额", + "description": "Balance label for tokens" + }, + "history": { + "message": "历史", + "description": "History title" + }, + "no_interaction_history": { + "message": "没有与此资产的历史记录", + "description": "No interaction history text for an asset" + }, + "titles_transaction": { + "message": "交易", + "description": "Transaction title" + }, + "transaction_id": { + "message": "交易 ID", + "description": "Transaction ID label" + }, + "process_id": { + "message": "过程 ID", + "description": "Process ID label" + }, + "transaction_from": { + "message": "从", + "description": "Transaction \"from\" label" + }, + "transaction_to": { + "message": "到", + "description": "Transaction \"to\" label" + }, + "transaction_fee": { + "message": "网络费用", + "description": "Transaction \"fee\" label" + }, + "transaction_size": { + "message": "大小", + "description": "Transaction \"size\" label" + }, + "transaction_confirmations": { + "message": "确认", + "description": "Transaction \"confirmations\" label" + }, + "transaction_block_height": { + "message": "区块", + "description": "Transaction \"block height\" label" + }, + "transaction_block_timestamp": { + "message": "时间戳", + "description": "Transaction \"timestamp\" label" + }, + "transaction_tags": { + "message": "标签", + "description": "Transaction \"tags\" label" + }, + "transaction_input": { + "message": "输入", + "description": "Contract interaction input label" + }, + "transaction_data": { + "message": "数据", + "description": "Transaction \"data\" label" + }, + "transaction_data_binary_warning": { + "message": "无法显示二进制交易数据...", + "description": "Warning about ArConnect not being able to display a transaction's data" + }, + "transaction_not_on_viewblock": { + "message": "在 Viewblock 上不可用", + "description": "Disabled viewblock link btn text" + }, + "transaction_view_last": { + "message": "点击查看您最近签署的交易", + "description": "View last tx prompt content" + }, + "sign_item": { + "message": "签署项目", + "description": "Sign message popup title" + }, + "titles_signature": { + "message": "签署消息", + "description": "Sign message popup title" + }, + "sign_data_description": { + "message": "$APPNAME$ 想要签署一笔交易。请查看以下详细信息。", + "description": "Description for signing an item containing a transfer", + "placeholders": { + "appname": { + "content": "$1", + "example": "permafacts.arweave.dev" + } + } + }, + "signature_description": { + "message": "$APPNAME$ 想要签署一条消息。请查看以下消息。", + "description": "App signature request for data that cannot be decoded to string", + "placeholders": { + "appname": { + "content": "$1", + "example": "permafacts.arweave.dev" + } + } + }, + "signature_message": { + "message": "消息", + "description": "Signature message label" + }, + "signature_authorize": { + "message": "签署", + "description": "Sign message authorize button" + }, + "titles_sign": { + "message": "签署交易", + "description": "Sign transaction popup title" + }, + "sign_authorize": { + "message": "授权", + "description": "Authorize button label" + }, + "sign_enter_password": { + "message": "输入密码以签署交易", + "description": "Request to enter password to sign transaction" + }, + "sign_scan_qr": { + "message": "使用您的硬件钱包扫描下面的二维码", + "description": "Request to scan signature QR" + }, + "generate_qr_code": { + "message": "生成二维码", + "description": "Generate QR code button" + }, + "viewblock": { + "message": "Viewblock", + "description": "view block" + }, + "keystone_connect_title": { + "message": "连接 Keystone", + "description": "Connect keystone hardware wallet button" + }, + + "keystone_scan": { + "message": "扫描响应", + "description": "Notification about a keystone scanning error" + }, + "keystone_scan_error": { + "message": "扫描二维码时出错", + "description": "Notification about a keystone scanning error" + }, + "keystone_invalid_result_type": { + "message": "检测到无效的二维码", + "description": "Notification about an invalid QR code while trying to scan a keystone wallet QR code" + }, + "keystone_scan_progress": { + "message": "进度:$PROGRESS$", + "description": "Progress label for QR code scanning", + "placeholders": { + "progress": { + "content": "$1", + "example": "10%" + } + } + }, + "keystone_loading_camera": { + "message": "加载扫描器...", + "description": "Loading hardware wallet QR scanner text" + }, + "keystone_disabled_camera": { + "message": "您的相机已禁用。启用它以扫描二维码!", + "description": "Request to enable the built-in camera" + }, + "keystone_allowed_camera": { + "message": "您已授予相机权限。请刷新页面!", + "description": "Request to refresh the page after granting camera permissions" + }, + "keystone_features_warning": { + "message": "Keystone 支持处于测试阶段。某些 API 功能可能不受支持。", + "description": "Warning about keystone support" + }, + "keystone_ao_description": { + "message": "Keystone 不支持发送 ao 代币。Keystone 只支持接收 ao 代币。发送支持即将到来。", + "description": "Description about keystone ao issue" + }, + "keystone_ao_title": { + "message": "检测到 Keystone 错误。", + "description": "Title about keystone ao issue" + }, + "keystone_ao_popup": { + "message": "Keystone 不支持发送 ao 代币。Keystone 只支持接收 ao 代币。发送支持即将到来。支持发送和接收 AR 代币。", + "description": "Popup description about keystone ao issue" + }, + "keystone_ao_popup_title": { + "message": "Keystone AO 代币支持通知", + "description": "Popup description about keystone ao issue" + }, + "token_price_estimate_warning": { + "message": "价格估算来自", + "description": "Price estimate warning text. Full text is displayed with a link to Redstone.finance" + }, + "wallet_hardware_added": { + "message": "已添加 $WALLETTYPE$ 钱包", + "description": "Notification on adding a hardware wallet", + "placeholders": { + "wallettype": { + "content": "$1", + "example": "Keystone" + } + } + }, + "wallet_hardware_not_added": { + "message": "无法添加 $WALLETTYPE$ 钱包", + "description": "Notification on error when adding a hardware wallet", + "placeholders": { + "wallettype": { + "content": "$1", + "example": "Keystone" + } + } + }, + "wallet_hardware_unsupported": { + "message": "此功能不支持硬件钱包", + "description": "Notification about a feature that does not support usage with a hardware wallet as an active/selected wallet" + }, + "notification_title_native_tx": { + "message": "交易已签署", + "description": "Notification title for signing a native tx" + }, + "notification_title_dispatched_tx": { + "message": "交易已发送", + "description": "Notification title for dispatching a tx" + }, + "notification_description_native_tx": { + "message": "总费用约为 $PRICE$ AR", + "description": "Notification body for native tx signing", + "placeholders": { + "price": { + "content": "$1", + "example": "10,234.15" + } + } + }, + "notification_description_dispatch_tx": { + "message": "已提交到 Bundlr 网络", + "description": "Notification body for dispatched tx" + }, + "transaction_send_add_target": { + "message": "添加接收者", + "description": "Add recipient title" + }, + "transaction_send_address_input_label": { + "message": "接收者", + "description": "Label for the address input" + }, + "transaction_send_address_input_placeholder": { + "message": "地址,ANS 或 ArNS...", + "description": "Placeholder for the address input" + }, + "transaction_send_scan_address": { + "message": "扫描地址", + "description": "Scan address tooltip content" + }, + "transaction_send_success": { + "message": "交易已发送", + "description": "Sent transaction successfully message" + }, + "transaction_send_error": { + "message": "无法发送交易", + "description": "Transaction failure" + }, + "transaction_auth_ur_fail": { + "message": "无法构建交易二维码", + "description": "Error notification about failed signing QR generation" + }, + "transaction_send_loading": { + "message": "发送交易中...", + "description": "Sending transaction loading text" + }, + "transaction_sending_token": { + "message": "发送中", + "description": "Sending token description in confirmation" + }, + "not_connected": { + "message": "未连接", + "description": "Not connected indicator" + }, + "not_connected_text": { + "message": "此应用尚未使用 ArConnect。找到页面上的“连接”按钮以连接。", + "description": "Not connected indicator explainer" + }, + "disconnect": { + "message": "断开连接", + "description": "Disconnect button text" + }, + "disconnected": { + "message": "已断开", + "description": "Disconnected tooltip" + }, + "account_connected": { + "message": "账户已连接", + "description": "Connected tooltip" + }, + "copy_address": { + "message": "复制地址", + "description": "Click to copy address tooltip" + }, + "expand_view": { + "message": "扩展视图", + "description": "Click to open extension in a browser tab" + }, + "allowance_edit": { + "message": "编辑额度", + "description": "Edit allowance tooltip" + }, + "balance_hide": { + "message": "隐藏余额", + "description": "Hide balance tooltip" + }, + "balance_show": { + "message": "显示余额", + "description": "Show balance tooltip" + }, + "lock_wallet": { + "message": "锁定钱包", + "description": "Lock wallet and terminate current session icon button" + }, + "home": { + "message": "首页", + "description": "Home Button" + }, + "home_no_balance": { + "message": "添加 $AR$ 以开始", + "description": "No balance message on homescreen", + "placeholders": { + "ar": { + "content": "$1", + "example": "$AR" + } + } + }, + "home_transfer_balance": { + "message": "转移 AR", + "description": "Transfer balance button text" + }, + "close_tab_generate_wallet_message": { + "message": "您确定要退出吗?您的新钱包正在生成中,将会丢失。", + "description": "Confirmation message for the user who tries to close a tab where a wallet is still being generated" + }, + "close_tab_load_wallet_message": { + "message": "您确定要退出吗?您的钱包正在加载中,关闭标签页将停止此过程。", + "description": "Confirmation message for the user who tries to close a tab where a wallet is still being loaded" + }, + "manage_assets_button": { + "message": "管理资产", + "description": "Manage assets button" + }, + "installation_complete": { + "message": "安装完成", + "description": "Installation complete title" + }, + "installation_complete_paragraph": { + "message": "将 ArConnect 固定到您的浏览器,使其易于访问并连接到您喜欢的 dApps。", + "description": "Installation complete paragraph" + }, + "enable_notifications_title": { + "message": "在 ArConnect 中启用通知", + "description": "Enable Notification title" + }, + "no_notifications": { + "message": "当前没有通知", + "description": "No notifications title" + }, + "no_notifications_get_started": { + "message": "发送交易以开始", + "description": "Send Transactions to get notifications" + }, + "introducing_notifications": { + "message": "介绍通知", + "description": "Alternative Enable Notification title" + }, + "enable_notifications_paragraph": { + "message": "保持更新,获取交易和 ao 消息的即时提醒。", + "description": "Enable notifications paragraph" + }, + "alternative_enable_notifications_paragraph": { + "message": "当交易处理时立即接收通知。", + "description": "Enable notifications paragraph" + }, + "toggle_notifications": { + "message": "切换通知", + "description": "Toggle notifications text" + }, + "toggle_notifications_decription": { + "message": "切换以接收钱包中新交易的提醒。", + "description": "Toggle notifications description text" + }, + "get_started": { + "message": "开始", + "description": "Get started title" + }, + "get_started_description": { + "message": "通过 ArConnect 探索 Arweave 和 aoComputer 的无限可能", + "description": "Get started description" + }, + "example_astro_description": { + "message": "Astro 是一个允许用户铸造 USDA 稳定币的平台。", + "description": "Placeholder for example get started" + }, + "example_protocolland_description": { + "message": "Protocol.Land 是一个去中心化、源代码控制的代码协作平台。", + "description": "Placeholder for example get started" + }, + "example_publish_description": { + "message": "一个旨在去中介化真相的证明中立出版平台。发布声明,并在事实市场中占据您的位置!", + "description": "Placeholder for example get started" + }, + "example_bark_description": { + "message": "Bark 是一个去中心化交易所,用于在 aoComputer 网络上交换资产。", + "description": "Placeholder for example get started" + }, + "connect_with_us_title": { + "message": "与我们联系", + "description": "Connect with us title" + }, + "connect_paragraph": { + "message": "在 X 上关注我们,了解团队正在工作的最新动态。", + "description": "Connect with us description" + }, + "connect_paragraph_2": { + "message": "有问题吗?加入 Discord 服务器与开发人员聊天。", + "description": "Connect with us description" + }, + "buy_ar_button": { + "message": "购买 AR", + "description": "Buy AR with Onramper button text" + }, + "buy_screen_title": { + "message": "购买", + "description": "Buy AR with Onramper button text" + }, + "buy_screen_pay": { + "message": "您支付", + "description": "Payment input label title" + }, + "buy_screen_receive": { + "message": "您接收", + "description": "Receive input label title" + }, + "buy_screen_switch": { + "message": "切换", + "description": "Switch button" + }, + "buy_screen_payment_method": { + "message": "支付方式", + "description": "Select payment method title" + }, + "buy_screen_enter": { + "message": "输入金额", + "description": "Enter fiat amount placeholder" + }, + "buy_screen_receive_x": { + "message": "xxxx.xxxx", + "description": "Receive quantity placeholder" + }, + "AR_button": { + "message": "AR", + "description": "Receive quantity button text" + }, + "credit_debit": { + "message": "信用卡/借记卡", + "description": "Buy screen payment method text" + }, + "conversion_error": { + "message": "获取报价失败:无效的法定金额。", + "description": "Buy screen conversion error text" + }, + "confirm_purchase_title": { + "message": "将 AR 添加到您的钱包", + "description": "Confirm purchase header text" + }, + "wallet_address": { + "message": "钱包地址", + "description": "Confirm purchase wallet address header" + }, + "order_details": { + "message": "订单详情", + "description": "Confirm purchase order details title" + }, + "confirm_rate": { + "message": "汇率", + "description": "Confirm purchase rate text" + }, + "confirm_vendor_fee": { + "message": "供应商费用", + "description": "Confirm purchase vendor fee text" + }, + "confirm_total": { + "message": "总计", + "description": "Confirm purchase total cost text" + }, + "close_purchase_pending": { + "message": "关闭", + "description": "Close button text on purchase in progress page" + }, + "congrats_purchase_pending": { + "message": "恭喜!", + "description": "Congrats text on purchase in progress page" + }, + "info_purchase_pending": { + "message": "您的购买正在进行中。这可能需要 30-60 分钟完成。", + "description": "Info message text on purchase in progress page" + }, + "order_id_purchase_pending": { + "message": "报价 ID:", + "description": "Order ID text on purchase in progress page" + }, + "choose_payment_method": { + "message": "选择支付方式", + "description": "Payment method input modal title text" + }, + "choose_fiat_currency": { + "message": "选择法定货币", + "description": "Fiat currency input modal title text" + }, + "search_currency_placeholder": { + "message": "输入货币名称", + "description": "Currency search placeholder text" + }, + "receive_AR_button": { + "message": "接收 AR", + "description": "Button text for the receive AR button" + }, + "search_contacts": { + "message": "搜索联系人...", + "description": "Search input placeholder for contacts" + }, + "add_contact": { + "message": "添加联系人", + "description": "Add a contact button text" + }, + "new": { + "message": "新的", + "description": "Add a new button text" + }, + "send_transaction": { + "message": "发送交易", + "description": "Active contact send button text" + }, + "contact_info": { + "message": "联系信息", + "description": "Contact settings title" + }, + "user_not_in_contacts": { + "message": "此用户不在您的联系人中。", + "description": "Small message title on transaction confirmation page" + }, + "create_contact": { + "message": "创建联系人?", + "description": "Create contact question" + }, + "new_contact": { + "message": "新联系人", + "description": "New contact title" + }, + "add_new_contact": { + "message": "添加新联系人", + "description": "Add a new contact title" + }, + "uploaded_avatar": { + "message": "已上传头像到 Arweave。", + "description": "Successful upload toast text" + }, + "ArNS_address": { + "message": "ArNS 地址", + "description": "Contact ArNS address subtitle" + }, + "select_ArNS_address": { + "message": "选择 ArNS 地址", + "description": "Select ArNS address text" + }, + "no_ArNS_address_found": { + "message": "未找到 ArNS 地址", + "description": "No ArNS address found text" + }, + "searching_ArNS_addresses": { + "message": "正在搜索 ArNS 地址...", + "description": "Search ArNS addressess text" + }, + "arweave_url": { + "message": "ar://", + "description": "Arweave address for ArNS names" + }, + "contact_avatar": { + "message": "头像", + "description": "Contact Avatar subtitle" + }, + "first_last_name": { + "message": "名字和姓氏", + "description": "Contact name input placeholder text" + }, + "arweave_account_address": { + "message": "Arweave 账户地址", + "description": "Contact arweave account address subtitle" + }, + "account_address": { + "message": "账户地址", + "description": "Contact account address input placeholder text" + }, + "notes": { + "message": "备注", + "description": "Contact notes subtitle" + }, + "type_message_here": { + "message": "在此输入消息...", + "description": "Contact notes input placeholder text" + }, + "save_changes": { + "message": "保存更改", + "description": "Save button text" + }, + "remove_contact": { + "message": "移除联系人", + "description": "Remove contact button text" + }, + "edit_contact": { + "message": "更改联系资料", + "description": "Edit contact button text" + }, + "remove_contact_question": { + "message": "您确定要移除此联系人吗?", + "description": "Remove contact modal text" + }, + "save_new_contact": { + "message": "保存新联系人", + "description": "Save new contact button text" + }, + "save_contact": { + "message": "保存联系方式", + "description": "Save contact button text" + }, + "address_in_use": { + "message": "地址已在使用中。", + "description": "Contacts error message if address is already in use" + }, + "password_allowance": { + "message": "需要密码额度", + "description": "Input title for the password allowance label" + }, + "add": { + "message": "添加", + "description": "Add button text" + }, + "your_contacts": { + "message": "您的联系人", + "description": "Your Contacts title in Send Modal" + }, + "check_address": { + "message": "请检查接收者地址", + "description": "Error message for invalid address/ArNS" + }, + "incorrect_address": { + "message": "接收者地址不正确", + "description": "Error message for invalid ANS" + }, + "arns_added": { + "message": "ar://$ADDRESS$ 已添加", + "description": "ArNS recipient added", + "placeholders": { + "address": { + "content": "$1", + "example": "Address" + } + } + }, + "ans_added": { + "message": "$ADDRESS$ 已添加", + "description": "ANS recipient added", + "placeholders": { + "address": { + "content": "$1", + "example": "Address" + } + } + }, + "setting_ao_support": { + "message": "ao 支持", + "description": "ao support settings title" + }, + "setting_ao_support_description": { + "message": "在您的钱包中显示 ao 代币(测试版)", + "description": "ao support settings description" + }, + "got_it": { + "message": "知道了", + "description": "Got it button text" + }, + "display_ao_tokens": { + "message": "在 ArConnect 中显示 AO 代币(测试版)", + "description": "Display AO tokens description" + }, + "ao_computer": { + "message": "ao.computer", + "description": "ao computer url" + }, + "ao_tokens": { + "message": "AO代币", + "description": "Ao Tokens" + }, + "ao_announcement_text": { + "message": "关注未来的 ao 更新。了解更多访问", + "description": "ao announcement description text" + }, + "ao_announcement_title": { + "message": "AO 测试网现已上线!", + "description": "ao announcement title text" + }, + "ao_token_announcement_title": { + "message": "恭喜您通过持有 AR 获得 AO 代币!🥳", + "description": "ao token announcement title text" + }, + "ao_token_send_popup": { + "message": "AO 代币在 2025 年 2 月 8 日之前不可转让,届时 AO 的 15% 已被铸造。", + "description": "Popup description about ao token transfer" + }, + "ao_token_send_popup_title": { + "message": "AO代币转账公告", + "description": "Popup description about ao token transfer" + }, + "ao_token_send_popup_learn_more": { + "message": "了解更多", + "description": "Popup description about ao token transfer learn more" + }, + "ao_degraded": { + "message": "AO 代币处理网络降级。", + "description": "ao degraded title text" + }, + "ao_degraded_description": { + "message": "网络问题解决后,AO 代币处理将可用。", + "description": "ao degraded description text" + }, + "network_issue": { + "message": "检测到网络问题。", + "description": "network issue title text" + }, + "network_issue_description": { + "message": "您的 ISP 或 VPN 阻止访问 AO。
请使用其他连接。", + "description": "network issue description text" + }, + "import_token": { + "message": "导入代币", + "description": "Import token button description" + }, + "token_already_added": { + "message": "代币已添加", + "description": "Token already imported" + }, + "token_already_removed": { + "message": "代币已移除", + "description": "Token already removed" + }, + "token_imported": { + "message": "代币成功添加", + "description": "Token added" + }, + "token_removed": { + "message": "代币成功移除", + "description": "Token removed" + }, + "transaction_complete": { + "message": "交易完成", + "description": "transaction complete header" + }, + "message": { "message": "消息", - "description": "Signature message label" - }, - "signature_authorize": { - "message": "签署", - "description": "Sign message authorize button" - }, - "titles_sign": { - "message": "签署交易", - "description": "Sign transaction popup title" - }, - "sign_authorize": { - "message": "授权", - "description": "Authorize button label" - }, - "sign_enter_password": { - "message": "输入密码以签署交易", - "description": "Request to enter password to sign transaction" - }, - "sign_scan_qr": { - "message": "使用您的硬件钱包扫描下面的二维码", - "description": "Request to scan signature QR" - }, - "generate_qr_code": { - "message": "生成二维码", - "description": "Generate QR code button" - }, - "viewblock": { - "message": "Viewblock", - "description": "view block" - }, - "keystone_connect_title": { - "message": "连接 Keystone", - "description": "Connect keystone hardware wallet button" - }, - - "keystone_scan": { - "message": "扫描响应", - "description": "Notification about a keystone scanning error" - }, - "keystone_scan_error": { - "message": "扫描二维码时出错", - "description": "Notification about a keystone scanning error" - }, - "keystone_invalid_result_type": { - "message": "检测到无效的二维码", - "description": "Notification about an invalid QR code while trying to scan a keystone wallet QR code" - }, - "keystone_scan_progress": { - "message": "进度:$PROGRESS$", - "description": "Progress label for QR code scanning", - "placeholders": { - "progress": { - "content": "$1", - "example": "10%" - } - } - }, - "keystone_loading_camera": { - "message": "加载扫描器...", - "description": "Loading hardware wallet QR scanner text" - }, - "keystone_disabled_camera": { - "message": "您的相机已禁用。启用它以扫描二维码!", - "description": "Request to enable the built-in camera" - }, - "keystone_allowed_camera": { - "message": "您已授予相机权限。请刷新页面!", - "description": "Request to refresh the page after granting camera permissions" - }, - "keystone_features_warning": { - "message": "Keystone 支持处于测试阶段。某些 API 功能可能不受支持。", - "description": "Warning about keystone support" - }, - "keystone_ao_description": { - "message": "Keystone 不支持发送 ao 代币。Keystone 只支持接收 ao 代币。发送支持即将到来。", - "description": "Description about keystone ao issue" - }, - "keystone_ao_title": { - "message": "检测到 Keystone 错误。", - "description": "Title about keystone ao issue" - }, - "keystone_ao_popup": { - "message": "Keystone 不支持发送 ao 代币。Keystone 只支持接收 ao 代币。发送支持即将到来。支持发送和接收 AR 代币。", - "description": "Popup description about keystone ao issue" - }, - "keystone_ao_popup_title": { - "message": "Keystone AO 代币支持通知", - "description": "Popup description about keystone ao issue" - }, - "token_price_estimate_warning": { - "message": "价格估算来自", - "description": "Price estimate warning text. Full text is displayed with a link to Redstone.finance" - }, - "wallet_hardware_added": { - "message": "已添加 $WALLETTYPE$ 钱包", - "description": "Notification on adding a hardware wallet", - "placeholders": { - "wallettype": { - "content": "$1", - "example": "Keystone" - } - } - }, - "wallet_hardware_not_added": { - "message": "无法添加 $WALLETTYPE$ 钱包", - "description": "Notification on error when adding a hardware wallet", - "placeholders": { - "wallettype": { - "content": "$1", - "example": "Keystone" - } - } - }, - "wallet_hardware_unsupported": { - "message": "此功能不支持硬件钱包", - "description": "Notification about a feature that does not support usage with a hardware wallet as an active/selected wallet" - }, - "notification_title_native_tx": { - "message": "交易已签署", - "description": "Notification title for signing a native tx" - }, - "notification_title_dispatched_tx": { - "message": "交易已发送", - "description": "Notification title for dispatching a tx" - }, - "notification_description_native_tx": { - "message": "总费用约为 $PRICE$ AR", - "description": "Notification body for native tx signing", - "placeholders": { - "price": { - "content": "$1", - "example": "10,234.15" - } - } - }, - "notification_description_dispatch_tx": { - "message": "已提交到 Bundlr 网络", - "description": "Notification body for dispatched tx" - }, - "transaction_send_add_target": { - "message": "添加接收者", - "description": "Add recipient title" - }, - "transaction_send_address_input_label": { - "message": "接收者", - "description": "Label for the address input" - }, - "transaction_send_address_input_placeholder": { - "message": "地址,ANS 或 ArNS...", - "description": "Placeholder for the address input" - }, - "transaction_send_scan_address": { - "message": "扫描地址", - "description": "Scan address tooltip content" - }, - "transaction_send_success": { - "message": "交易已发送", - "description": "Sent transaction successfully message" - }, - "transaction_send_error": { - "message": "无法发送交易", - "description": "Transaction failure" - }, - "transaction_auth_ur_fail": { - "message": "无法构建交易二维码", - "description": "Error notification about failed signing QR generation" - }, - "transaction_send_loading": { - "message": "发送交易中...", - "description": "Sending transaction loading text" - }, - "transaction_sending_token": { - "message": "发送中", - "description": "Sending token description in confirmation" - }, - "not_connected": { - "message": "未连接", - "description": "Not connected indicator" - }, - "not_connected_text": { - "message": "此应用尚未使用 ArConnect。找到页面上的“连接”按钮以连接。", - "description": "Not connected indicator explainer" - }, - "disconnect": { - "message": "断开连接", - "description": "Disconnect button text" - }, - "disconnected": { - "message": "已断开", - "description": "Disconnected tooltip" - }, - "account_connected": { - "message": "账户已连接", - "description": "Connected tooltip" - }, - "copy_address": { - "message": "复制地址", - "description": "Click to copy address tooltip" - }, - "expand_view": { - "message": "扩展视图", - "description": "Click to open extension in a browser tab" - }, - "allowance_edit": { - "message": "编辑额度", - "description": "Edit allowance tooltip" - }, - "balance_hide": { - "message": "隐藏余额", - "description": "Hide balance tooltip" - }, - "balance_show": { - "message": "显示余额", - "description": "Show balance tooltip" - }, - "lock_wallet": { - "message": "锁定钱包", - "description": "Lock wallet and terminate current session icon button" - }, - "home": { - "message": "首页", - "description": "Home Button" - }, - "home_no_balance": { - "message": "添加 $AR$ 以开始", - "description": "No balance message on homescreen", - "placeholders": { - "ar": { - "content": "$1", - "example": "$AR" - } - } - }, - "home_transfer_balance": { - "message": "转移 AR", - "description": "Transfer balance button text" - }, - "close_tab_generate_wallet_message": { - "message": "您确定要退出吗?您的新钱包正在生成中,将会丢失。", - "description": "Confirmation message for the user who tries to close a tab where a wallet is still being generated" - }, - "close_tab_load_wallet_message": { - "message": "您确定要退出吗?您的钱包正在加载中,关闭标签页将停止此过程。", - "description": "Confirmation message for the user who tries to close a tab where a wallet is still being loaded" - }, - "manage_assets_button": { - "message": "管理资产", - "description": "Manage assets button" - }, - "installation_complete": { - "message": "安装完成", - "description": "Installation complete title" - }, - "installation_complete_paragraph": { - "message": "将 ArConnect 固定到您的浏览器,使其易于访问并连接到您喜欢的 dApps。", - "description": "Installation complete paragraph" - }, - "enable_notifications_title": { - "message": "在 ArConnect 中启用通知", - "description": "Enable Notification title" - }, - "no_notifications": { - "message": "当前没有通知", - "description": "No notifications title" - }, - "no_notifications_get_started": { - "message": "发送交易以开始", - "description": "Send Transactions to get notifications" - }, - "introducing_notifications": { - "message": "介绍通知", - "description": "Alternative Enable Notification title" - }, - "enable_notifications_paragraph": { - "message": "保持更新,获取交易和 ao 消息的即时提醒。", - "description": "Enable notifications paragraph" - }, - "alternative_enable_notifications_paragraph": { - "message": "当交易处理时立即接收通知。", - "description": "Enable notifications paragraph" - }, - "toggle_notifications": { - "message": "切换通知", - "description": "Toggle notifications text" - }, - "toggle_notifications_decription": { - "message": "切换以接收钱包中新交易的提醒。", - "description": "Toggle notifications description text" - }, - "get_started": { + "description": "message header" + }, + "subscription_allowance": { + "message": "订阅额度", + "description": "Subscription settings title" + }, + "subscription_title": { + "message": "订阅", + "description": "Subscription title" + }, + "subscriptions": { + "message": "订阅", + "description": "Subscriptions title" + }, + "no_subscriptions": { + "message": "尚未订阅", + "description": "No subscriptions title" + }, + "no_subscriptions_description": { + "message": "您的未来订阅将显示在这里", + "description": "No subscriptions description" + }, + "subscribe_description": { + "message": "$APPNAME 请求设置一个定期付款的订阅", + "description": "Subscribe description" + }, + "subscription_description": { + "message": "管理自动提现额度", + "description": "Subscription setting description" + }, + "subscription_cancelled": { + "message": "订阅已取消", + "description": "The subscription has been successfully cancelled." + }, + "subscription_cancelled_error": { + "message": "订阅取消错误", + "description": "There was an error cancelling the subscription. Please try again." + }, + "subscription_deleted": { + "message": "订阅已删除", + "description": "The subscription has been successfully deleted." + }, + "subscription_delete_error": { + "message": "订阅删除错误", + "description": "There was an error deleting the subscription. Please try again." + }, + "subscription_add_failure": { + "message": "添加订阅失败", + "description": "Failed to add subscription error message" + }, + "transaction_history_title": { + "message": "交易历史", + "description": "Transaction History header" + }, + "subscription_application_address": { + "message": "应用地址", + "description": "付款地址" + }, + + "subscription_recurring_amount": { + "message": "定期付款金额", + "description": "Recurring payment amount" + }, + "auto_renewal": { + "message": "自动续订", + "description": "auto-renewal" + }, + "auto_pay": { + "message": "自动付款", + "description": "auto-pay" + }, + "confirm_subscription": { + "message": "确认订阅", + "description": "confirm subscription" + }, + "continue": { + "message": "继续", + "description": "Continue" + }, + + "end": { + "message": "结束", + "description": "end" + }, + "next_payment": { + "message": "下一次付款", + "description": "next payment" + }, + "start": { "message": "开始", - "description": "Get started title" - }, - "get_started_description": { - "message": "通过 ArConnect 探索 Arweave 和 aoComputer 的无限可能", - "description": "Get started description" - }, - "example_astro_description": { - "message": "Astro 是一个允许用户铸造 USDA 稳定币的平台。", - "description": "Placeholder for example get started" - }, - "example_protocolland_description": { - "message": "Protocol.Land 是一个去中心化、源代码控制的代码协作平台。", - "description": "Placeholder for example get started" - }, - "example_publish_description": { - "message": "一个旨在去中介化真相的证明中立出版平台。发布声明,并在事实市场中占据您的位置!", - "description": "Placeholder for example get started" - }, - "example_bark_description": { - "message": "Bark 是一个去中心化交易所,用于在 aoComputer 网络上交换资产。", - "description": "Placeholder for example get started" - }, - "connect_with_us_title": { - "message": "与我们联系", - "description": "Connect with us title" - }, - "connect_paragraph": { - "message": "在 X 上关注我们,了解团队正在工作的最新动态。", - "description": "Connect with us description" - }, - "connect_paragraph_2": { - "message": "有问题吗?加入 Discord 服务器与开发人员聊天。", - "description": "Connect with us description" - }, - "buy_ar_button": { - "message": "购买 AR", - "description": "Buy AR with Onramper button text" - }, - "buy_screen_title": { - "message": "购买", - "description": "Buy AR with Onramper button text" - }, - "buy_screen_pay": { - "message": "您支付", - "description": "Payment input label title" - }, - "buy_screen_receive": { - "message": "您接收", - "description": "Receive input label title" - }, - "buy_screen_switch": { - "message": "切换", - "description": "Switch button" - }, - "buy_screen_payment_method": { - "message": "支付方式", - "description": "Select payment method title" - }, - "buy_screen_enter": { - "message": "输入金额", - "description": "Enter fiat amount placeholder" - }, - "buy_screen_receive_x": { - "message": "xxxx.xxxx", - "description": "Receive quantity placeholder" - }, - "AR_button": { - "message": "AR", - "description": "Receive quantity button text" - }, - "credit_debit": { - "message": "信用卡/借记卡", - "description": "Buy screen payment method text" - }, - "conversion_error": { - "message": "获取报价失败:无效的法定金额。", - "description": "Buy screen conversion error text" - }, - "confirm_purchase_title": { - "message": "将 AR 添加到您的钱包", - "description": "Confirm purchase header text" - }, - "wallet_address": { - "message": "钱包地址", - "description": "Confirm purchase wallet address header" - }, - "order_details": { - "message": "订单详情", - "description": "Confirm purchase order details title" - }, - "confirm_rate": { - "message": "汇率", - "description": "Confirm purchase rate text" - }, - "confirm_vendor_fee": { - "message": "供应商费用", - "description": "Confirm purchase vendor fee text" - }, - "confirm_total": { - "message": "总计", - "description": "Confirm purchase total cost text" - }, - "close_purchase_pending": { - "message": "关闭", - "description": "Close button text on purchase in progress page" - }, - "congrats_purchase_pending": { - "message": "恭喜!", - "description": "Congrats text on purchase in progress page" - }, - "info_purchase_pending": { - "message": "您的购买正在进行中。这可能需要 30-60 分钟完成。", - "description": "Info message text on purchase in progress page" - }, - "order_id_purchase_pending": { - "message": "报价 ID:", - "description": "Order ID text on purchase in progress page" - }, - "choose_payment_method": { - "message": "选择支付方式", - "description": "Payment method input modal title text" - }, - "choose_fiat_currency": { - "message": "选择法定货币", - "description": "Fiat currency input modal title text" - }, - "search_currency_placeholder": { - "message": "输入货币名称", - "description": "Currency search placeholder text" - }, - "receive_AR_button": { - "message": "接收 AR", - "description": "Button text for the receive AR button" - }, - "search_contacts": { - "message": "搜索联系人...", - "description": "Search input placeholder for contacts" - }, - "add_contact": { - "message": "添加联系人", - "description": "Add a contact button text" - }, - "new": { - "message": "新的", - "description": "Add a new button text" - }, - "send_transaction": { - "message": "发送交易", - "description": "Active contact send button text" - }, - "contact_info": { - "message": "联系信息", - "description": "Contact settings title" - }, - "user_not_in_contacts": { - "message": "此用户不在您的联系人中。", - "description": "Small message title on transaction confirmation page" - }, - "create_contact": { - "message": "创建联系人?", - "description": "Create contact question" - }, - "new_contact": { - "message": "新联系人", - "description": "New contact title" - }, - "add_new_contact": { - "message": "添加新联系人", - "description": "Add a new contact title" - }, - "uploaded_avatar": { - "message": "已上传头像到 Arweave。", - "description": "Successful upload toast text" - }, - "ArNS_address": { - "message": "ArNS 地址", - "description": "Contact ArNS address subtitle" - }, - "select_ArNS_address": { - "message": "选择 ArNS 地址", - "description": "Select ArNS address text" - }, - "no_ArNS_address_found": { - "message": "未找到 ArNS 地址", - "description": "No ArNS address found text" - }, - "searching_ArNS_addresses": { - "message": "正在搜索 ArNS 地址...", - "description": "Search ArNS addressess text" - }, - "arweave_url": { - "message": "ar://", - "description": "Arweave address for ArNS names" - }, - "contact_avatar": { - "message": "头像", - "description": "Contact Avatar subtitle" - }, - "first_last_name": { - "message": "名字和姓氏", - "description": "Contact name input placeholder text" - }, - "arweave_account_address": { - "message": "Arweave 账户地址", - "description": "Contact arweave account address subtitle" - }, - "account_address": { - "message": "账户地址", - "description": "Contact account address input placeholder text" - }, - "notes": { - "message": "备注", - "description": "Contact notes subtitle" - }, - "type_message_here": { - "message": "在此输入消息...", - "description": "Contact notes input placeholder text" - }, - "save_changes": { - "message": "保存更改", - "description": "Save button text" - }, - "remove_contact": { - "message": "移除联系人", - "description": "Remove contact button text" - }, - "edit_contact": { - "message": "更改联系资料", - "description": "Edit contact button text" - }, - "remove_contact_question": { - "message": "您确定要移除此联系人吗?", - "description": "Remove contact modal text" - }, - "save_new_contact": { - "message": "保存新联系人", - "description": "Save new contact button text" - }, - "save_contact": { - "message": "保存联系方式", - "description": "Save contact button text" - }, - "address_in_use": { - "message": "地址已在使用中。", - "description": "Contacts error message if address is already in use" - }, - "password_allowance": { - "message": "需要密码额度", - "description": "Input title for the password allowance label" - }, - "add": { - "message": "添加", - "description": "Add button text" - }, - "your_contacts": { - "message": "您的联系人", - "description": "Your Contacts title in Send Modal" - }, - "check_address": { - "message": "请检查接收者地址", - "description": "Error message for invalid address/ArNS" - }, - "incorrect_address": { - "message": "接收者地址不正确", - "description": "Error message for invalid ANS" - }, - "arns_added": { - "message": "ar://$ADDRESS$ 已添加", - "description": "ArNS recipient added", - "placeholders": { - "address": { - "content": "$1", - "example": "Address" - } - } - }, - "ans_added": { - "message": "$ADDRESS$ 已添加", - "description": "ANS recipient added", - "placeholders": { - "address": { - "content": "$1", - "example": "Address" - } - } - }, - "setting_ao_support": { - "message": "ao 支持", - "description": "ao support settings title" - }, - "setting_ao_support_description": { - "message": "在您的钱包中显示 ao 代币(测试版)", - "description": "ao support settings description" - }, - "got_it": { - "message": "知道了", - "description": "Got it button text" - }, - "display_ao_tokens": { - "message": "在 ArConnect 中显示 AO 代币(测试版)", - "description": "Display AO tokens description" - }, - "ao_computer": { - "message": "ao.computer", - "description": "ao computer url" - }, - "ao_tokens": { - "message": "AO代币", - "description": "Ao Tokens" - }, - "ao_announcement_text": { - "message": "关注未来的 ao 更新。了解更多访问", - "description": "ao announcement description text" - }, - "ao_announcement_title": { - "message": "AO 测试网现已上线!", - "description": "ao announcement title text" - }, - "ao_token_announcement_title": { - "message": "恭喜您通过持有 AR 获得 AO 代币!🥳", - "description": "ao token announcement title text" - }, - "ao_token_send_popup": { - "message": "AO 代币在 2025 年 2 月 8 日之前不可转让,届时 AO 的 15% 已被铸造。", - "description": "Popup description about ao token transfer" - }, - "ao_token_send_popup_title": { - "message": "AO代币转账公告", - "description": "Popup description about ao token transfer" - }, - "ao_token_send_popup_learn_more": { - "message": "了解更多", - "description": "Popup description about ao token transfer learn more" - }, - "ao_degraded": { - "message": "AO 代币处理网络降级。", - "description": "ao degraded title text" - }, - "ao_degraded_description": { - "message": "网络问题解决后,AO 代币处理将可用。", - "description": "ao degraded description text" - }, - "network_issue": { - "message": "检测到网络问题。", - "description": "network issue title text" - }, - "network_issue_description": { - "message": "您的 ISP 或 VPN 阻止访问 AO。
请使用其他连接。", - "description": "network issue description text" - }, - "import_token": { - "message": "导入代币", - "description": "Import token button description" - }, - "token_already_added": { - "message": "代币已添加", - "description": "Token already imported" - }, - "token_already_removed": { - "message": "代币已移除", - "description": "Token already removed" - }, - "token_imported": { - "message": "代币成功添加", - "description": "Token added" - }, - "token_removed": { - "message": "代币成功移除", - "description": "Token removed" - }, - "transaction_complete": { - "message": "交易完成", - "description": "transaction complete header" - }, - "message": { - "message": "消息", - "description": "message header" - }, - "subscription_allowance": { - "message": "订阅额度", - "description": "Subscription settings title" - }, - "subscription_title": { - "message": "订阅", - "description": "Subscription title" - }, - "subscriptions": { - "message": "订阅", - "description": "Subscriptions title" - }, - "no_subscriptions": { - "message": "尚未订阅", - "description": "No subscriptions title" - }, - "no_subscriptions_description": { - "message": "您的未来订阅将显示在这里", - "description": "No subscriptions description" - }, - "subscribe_description": { - "message": "$APPNAME 请求设置一个定期付款的订阅", - "description": "Subscribe description" - }, - "subscription_description": { - "message": "管理自动提现额度", - "description": "Subscription setting description" - }, - "subscription_cancelled": { - "message": "订阅已取消", - "description": "The subscription has been successfully cancelled." - }, - "subscription_cancelled_error": { - "message": "订阅取消错误", - "description": "There was an error cancelling the subscription. Please try again." - }, - "subscription_deleted": { - "message": "订阅已删除", - "description": "The subscription has been successfully deleted." - }, - "subscription_delete_error": { - "message": "订阅删除错误", - "description": "There was an error deleting the subscription. Please try again." - }, - "subscription_add_failure": { - "message": "添加订阅失败", - "description": "Failed to add subscription error message" - }, - "transaction_history_title": { - "message": "交易历史", - "description": "Transaction History header" - }, - "subscription_application_address": { - "message": "应用地址", - "description": "付款地址" - }, - - "subscription_recurring_amount": { - "message": "定期付款金额", - "description": "Recurring payment amount" - }, - "auto_renewal": { - "message": "自动续订", - "description": "auto-renewal" - }, - "auto_pay": { - "message": "自动付款", - "description": "auto-pay" - }, - "confirm_subscription": { - "message": "确认订阅", - "description": "confirm subscription" - }, - "continue": { - "message": "继续", - "description": "Continue" - }, - - "end": { - "message": "结束", - "description": "end" - }, - "next_payment": { - "message": "下一次付款", - "description": "next payment" - }, - "start": { - "message": "开始", - "description": "start" - }, - "Quarterly": { - "message": "季度", - "description": "quarterly frequency" - }, - "Monthly": { - "message": "每月", - "description": "monthly frequency" - }, - "Weekly": { - "message": "每周", - "description": "weekly frequency" - }, - "Daily": { - "message": "每天", - "description": "daily frequency" - }, - "transactions": { - "message": "交易", - "descriptions": "Transactions title" - }, - "no_transactions": { - "message": "未找到交易", - "description": "No transactions message" - }, - "sent": { - "message": "已发送", - "description": "sent" - }, - "received": { - "message": "已收到", - "description": "received" - }, - "password_warning_title": { - "message": "密码强度警告", - "description": "Weak password warning title" - }, - "password_warning_description": { - "message": "您的密码目前较弱。您可以继续,但我们建议使用以下组合:", - "description": "Password warning description" - }, - "required": { - "message": "必需", - "description": "required" - }, - "recommended": { - "message": "推荐", - "description": "recommended" - }, - "add_wallet_error_message": { - "message": "请输入恢复短语或密钥文件,并输入 ArConnect 的密码后再继续。", - "description": "Error message if recovery section is left blank" - }, - "empty_password_error_message": { - "message": "请输入 ArConnect 的密码,而不是您正在导入的钱包密码。", - "description": "Error message if password section is left blank" - }, - "missing_recovery_error_message": { - "message": "请输入恢复短语或密钥文件后再继续。", - "description": "Error message if recovery phrase or key file is left blank" - }, - "incorrect_password_error_message": { - "message": "密码错误。请输入 ArConnect 的密码后再试,而不是您正在导入的钱包密码。", - "description": "Error message if password is incorrect" + "description": "start" + }, + "Quarterly": { + "message": "季度", + "description": "quarterly frequency" + }, + "Monthly": { + "message": "每月", + "description": "monthly frequency" + }, + "Weekly": { + "message": "每周", + "description": "weekly frequency" + }, + "Daily": { + "message": "每天", + "description": "daily frequency" + }, + "transactions": { + "message": "交易", + "descriptions": "Transactions title" + }, + "no_transactions": { + "message": "未找到交易", + "description": "No transactions message" + }, + "sent": { + "message": "已发送", + "description": "sent" + }, + "received": { + "message": "已收到", + "description": "received" + }, + "password_warning_title": { + "message": "密码强度警告", + "description": "Weak password warning title" + }, + "password_warning_description": { + "message": "您的密码目前较弱。您可以继续,但我们建议使用以下组合:", + "description": "Password warning description" + }, + "required": { + "message": "必需", + "description": "required" + }, + "recommended": { + "message": "推荐", + "description": "recommended" + }, + "add_wallet_error_message": { + "message": "请输入恢复短语或密钥文件,并输入 ArConnect 的密码后再继续。", + "description": "Error message if recovery section is left blank" + }, + "empty_password_error_message": { + "message": "请输入 ArConnect 的密码,而不是您正在导入的钱包密码。", + "description": "Error message if password section is left blank" + }, + "missing_recovery_error_message": { + "message": "请输入恢复短语或密钥文件后再继续。", + "description": "Error message if recovery phrase or key file is left blank" + }, + "incorrect_password_error_message": { + "message": "密码错误。请输入 ArConnect 的密码后再试,而不是您正在导入的钱包密码。", + "description": "Error message if password is incorrect" + } } -} + \ No newline at end of file diff --git a/src/api/modules/dispatch/allowance.ts b/src/api/modules/dispatch/allowance.ts index 2f984f11..f4f02754 100644 --- a/src/api/modules/dispatch/allowance.ts +++ b/src/api/modules/dispatch/allowance.ts @@ -18,16 +18,14 @@ export async function ensureAllowanceDispatch( appData: ModuleAppData, allowance: AllowanceBigNumber, keyfile: JWKInterface, - price: number | BigNumber + price: number | BigNumber, + alwaysAsk?: boolean ) { const arweave = new Arweave(defaultGateway); // allowance or sign auth try { - if (allowance.enabled) { - await allowanceAuth(allowance, appData.appURL, price); - } else { - // get address + if (alwaysAsk) { const address = await arweave.wallets.jwkToAddress(keyfile); await signAuth( @@ -36,9 +34,12 @@ export async function ensureAllowanceDispatch( dataEntry.toJSON(), address ); + } else if (allowance.enabled) { + await allowanceAuth(allowance, appData.appURL, price); } } catch (e) { freeDecryptedWallet(keyfile); throw new Error(e?.message || e); } + return; } diff --git a/src/api/modules/dispatch/dispatch.background.ts b/src/api/modules/dispatch/dispatch.background.ts index 6716b1d0..0c11357c 100644 --- a/src/api/modules/dispatch/dispatch.background.ts +++ b/src/api/modules/dispatch/dispatch.background.ts @@ -81,6 +81,9 @@ const background: ModuleFunction = async ( // get allowance const allowance = await app.getAllowance(); + // always ask + const alwaysAsk = await app.getAlwaysAsk(); + // attempt to create a bundle try { // create bundlr tx as a data entry @@ -95,7 +98,8 @@ const background: ModuleFunction = async ( appData, allowance, decryptedWallet.keyfile, - price + price, + alwaysAsk ); // sign and upload bundler tx diff --git a/src/api/modules/sign/sign.background.ts b/src/api/modules/sign/sign.background.ts index 23422593..626c7572 100644 --- a/src/api/modules/sign/sign.background.ts +++ b/src/api/modules/sign/sign.background.ts @@ -89,19 +89,13 @@ const background: ModuleFunction = async ( // get allowance const allowance = await getAllowance(appData.appURL); - // check if there is an allowance limit - // if there isn't, we need to ask the user - // to manually confirm the transaction - if (allowance.enabled && activeWallet.type === "local") { - // authenticate user if the allowance - // limit is reached - try { - await allowanceAuth(allowance, appData.appURL, price); - } catch (e) { - freeDecryptedWallet(keyfile); - throw new Error(e?.message || e); - } - } else { + // always ask + const alwaysAsk = await app.getAlwaysAsk(); + + // check if there is an allowance limit, if there is we need to check allowance + // if alwaysAsk is enabled, then we'll need to signAuth popup + // if allowance is disabled, proceed with signing + if (alwaysAsk) { // get address of keyfile const addr = activeWallet.type === "local" @@ -126,6 +120,15 @@ const background: ModuleFunction = async ( throw new Error("User failed to sign the transaction manually"); } + } else if (allowance.enabled && activeWallet.type === "local") { + // authenticate user if the allowance + // limit is reached + try { + await allowanceAuth(allowance, appData.appURL, price); + } catch (e) { + freeDecryptedWallet(keyfile); + throw new Error(e?.message || e); + } } // sign the transaction if local wallet diff --git a/src/api/modules/sign_data_item/sign_data_item.background.ts b/src/api/modules/sign_data_item/sign_data_item.background.ts index b3b09943..1714b916 100644 --- a/src/api/modules/sign_data_item/sign_data_item.background.ts +++ b/src/api/modules/sign_data_item/sign_data_item.background.ts @@ -28,16 +28,15 @@ const background: ModuleFunction = async ( } const app = new Application(appData.appURL); - const allowance = await app.getAllowance(); + const alwaysAsk = await app.getAlwaysAsk(); if ( - (dataItem.tags?.some( + dataItem.tags?.some( (tag) => tag.name === "Action" && tag.value === "Transfer" ) && - dataItem.tags?.some( - (tag) => tag.name === "Data-Protocol" && tag.value === "ao" - )) || - allowance.enabled + dataItem.tags?.some( + (tag) => tag.name === "Data-Protocol" && tag.value === "ao" + ) ) { try { const tags = dataItem?.tags || []; @@ -92,10 +91,11 @@ const background: ModuleFunction = async ( // check allowance // const price = await getPrice(dataEntry, await app.getBundler()); + // we are no longer checking for allowance on this page // allowance or sign auth try { - if (!allowance.enabled) { + if (alwaysAsk) { // get address const address = await arweave.wallets.jwkToAddress( decryptedWallet.keyfile diff --git a/src/applications/application.ts b/src/applications/application.ts index 107ddc03..f2984162 100644 --- a/src/applications/application.ts +++ b/src/applications/application.ts @@ -138,6 +138,12 @@ export default class Application { return settings.bundler || defaultBundler; } + async getAlwaysAsk(): Promise { + const settings = await this.#getSettings(); + + return !!settings.alwaysAsk; + } + /** * Allowance limit and spent qty */ @@ -201,6 +207,7 @@ export interface InitAppParams extends AppInfo { permissions: PermissionType[]; gateway?: Gateway; allowance?: Allowance; + alwaysAsk?: boolean; blocked?: boolean; bundler?: string; } diff --git a/src/components/auth/App.tsx b/src/components/auth/App.tsx index fd123ef0..9acee5c0 100644 --- a/src/components/auth/App.tsx +++ b/src/components/auth/App.tsx @@ -69,7 +69,7 @@ export default function App({ title={appName || appUrl} img={appIcon} description={`${browser.i18n.getMessage("gateway")}: ${ - gateway.host || "" + gateway?.host || "" }`} style={{ pointerEvents: "none" }} /> diff --git a/src/components/dashboard/subsettings/AppSettings.tsx b/src/components/dashboard/subsettings/AppSettings.tsx index 29784df4..eaa7c683 100644 --- a/src/components/dashboard/subsettings/AppSettings.tsx +++ b/src/components/dashboard/subsettings/AppSettings.tsx @@ -153,16 +153,17 @@ export default function AppSettings({ app, showTitle = false }: Props) { {browser.i18n.getMessage("allowance")} - updateSettings((val) => ({ + onChange={(checked) => { + setEditingLimit(false); + return updateSettings((val) => ({ ...val, allowance: { ...defaultAllowance, ...val.allowance, enabled: checked } - })) - } + })); + }} checked={settings.allowance?.enabled} > {browser.i18n.getMessage( @@ -203,9 +204,11 @@ export default function AppSettings({ app, showTitle = false }: Props) { {browser.i18n.getMessage("limit")} {": "} - {(editingLimit && ( + {editingLimit ? ( updateSettings((val) => ({ ...val, @@ -217,14 +220,18 @@ export default function AppSettings({ app, showTitle = false }: Props) { })) } /> - )) || - arweave.ar.winstonToAr(limit)} + ) : settings?.allowance?.enabled ? ( + arweave.ar.winstonToAr(limit) + ) : ( + "∞" + )} {" AR "} setEditingLimit((val) => !val)} /> @@ -403,19 +410,21 @@ const EmptyInput = styled.input.attrs({ color: rgb(${(props) => props.theme.secondaryText}); `; -const EditLimitButton = styled(EditIcon)` +const EditLimitButton = styled(EditIcon)<{ disabled?: boolean }>` font-size: 1em; width: 1em; height: 1em; - cursor: pointer; + cursor: ${(props) => (props.disabled ? "not-allowed" : "pointer")}; transition: all 0.23s ease-in-out; + opacity: ${(props) => (props.disabled ? "0.5" : "1")}; + pointer-events: ${(props) => (props.disabled ? "none" : "auto")}; &:hover { - opacity: 0.8; + opacity: ${(props) => (props.disabled ? "0.5" : "0.8")}; } &:active { - transform: scale(0.83); + transform: ${(props) => (props.disabled ? "none" : "scale(0.83)")}; } `; diff --git a/src/routes/auth/connect.tsx b/src/routes/auth/connect.tsx index cd71ecdb..35f0f489 100644 --- a/src/routes/auth/connect.tsx +++ b/src/routes/auth/connect.tsx @@ -163,6 +163,14 @@ export default function Connect() { async function connect(alwaysAsk: boolean = false) { if (appUrl === "") return; + if (allowanceEnabled && Number(allowanceInput.state) < 0.001) { + return setToast({ + type: "error", + content: browser.i18n.getMessage("invalid_qty_error"), + duration: 2200 + }); + } + // get existing permissions const app = new Application(appUrl); const existingPermissions = await app.getPermissions(); @@ -174,11 +182,12 @@ export default function Connect() { permissions, name: appData.name, logo: appData.logo, + alwaysAsk, allowance: { - enabled: alwaysAsk ? false : allowanceEnabled, + enabled: allowanceEnabled, limit: allowanceEnabled && allowanceInput.state - ? arweave.ar.arToWinston(allowanceInput.state) + ? arweave.ar.arToWinston(allowanceInput.state) // If allowance is enabled and a new limit is set, use the new limit : defaultAllowance.limit, spent: "0" // in winstons }, @@ -192,20 +201,14 @@ export default function Connect() { const allowance = await app.getAllowance(); await app.updateSettings({ permissions, + alwaysAsk, allowance: { - // Always preserve the current spent amount - spent: allowance.spent.toString(), - - // Determine the new limit: - limit: alwaysAsk - ? allowance.limit.toString() // If 'Always Ask' is enabled, keep the existing limit - : allowanceEnabled && allowanceInput.state - ? arweave.ar.arToWinston(allowanceInput.state) // If allowance is enabled and a new limit is set, use the new limit - : defaultAllowance.limit, // Otherwise, use the default limit - - // If 'Always Ask' is true, disable allowance - // Otherwise, use the current allowance enabled state - enabled: alwaysAsk ? false : allowanceEnabled + enabled: allowanceEnabled, + limit: + allowanceEnabled && allowanceInput.state + ? arweave.ar.arToWinston(allowanceInput.state) // If allowance is enabled and a new limit is set, use the new limit + : defaultAllowance.limit, + spent: "0" // in winstons } }); } @@ -354,7 +357,7 @@ export default function Connect() { style={{ gap: "4px" }} >
{browser.i18n.getMessage("allowance")}
- + diff --git a/src/routes/popup/settings/apps/[url]/index.tsx b/src/routes/popup/settings/apps/[url]/index.tsx index 8d340421..c635df56 100644 --- a/src/routes/popup/settings/apps/[url]/index.tsx +++ b/src/routes/popup/settings/apps/[url]/index.tsx @@ -160,10 +160,15 @@ export default function AppSettings({ url }: Props) { > updateSettings((val) => ({ From 3aa6c0295c63d4decbc4ebb264edebb49426170c Mon Sep 17 00:00:00 2001 From: nicholas ma Date: Mon, 15 Jul 2024 18:26:43 -0700 Subject: [PATCH 4/9] fix: added always allow toggle in quick settings --- assets/_locales/en/messages.json | 4 +++ assets/_locales/zh_CN/messages.json | 4 +++ .../popup/settings/apps/[url]/index.tsx | 28 +++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/assets/_locales/en/messages.json b/assets/_locales/en/messages.json index 22c25117..cf812e18 100644 --- a/assets/_locales/en/messages.json +++ b/assets/_locales/en/messages.json @@ -953,6 +953,10 @@ "message": "Always ask permission", "description": "Always allow button" }, + "always_ask_tooltip":{ + "message:": "Always ask for confirmation before any interaction", + "description": "Always allow tooltip" + }, "allow_selected_permissions": { "message": "Allow selected permissions", "description": "Always allow button" diff --git a/assets/_locales/zh_CN/messages.json b/assets/_locales/zh_CN/messages.json index 0e8077a2..a42cf5ce 100644 --- a/assets/_locales/zh_CN/messages.json +++ b/assets/_locales/zh_CN/messages.json @@ -945,6 +945,10 @@ "message": "始终允许", "description": "Always allow button" }, + "always_ask_tooltip":{ + "message:": "每次交互前始终要求确认", + "description": "Always allow tooltip" + }, "always_ask_permission": { "message": "始终询问权限", "description": "Always allow button" diff --git a/src/routes/popup/settings/apps/[url]/index.tsx b/src/routes/popup/settings/apps/[url]/index.tsx index c635df56..544ef7da 100644 --- a/src/routes/popup/settings/apps/[url]/index.tsx +++ b/src/routes/popup/settings/apps/[url]/index.tsx @@ -151,6 +151,34 @@ export default function AppSettings({ url }: Props) { /> + {/* Always Ask Popup */} + + + + {browser.i18n.getMessage("always_ask_permission")} + + + {browser.i18n.getMessage("always_ask_tooltip")} + + } + position="top" + > + + + + { + updateSettings((val) => ({ + ...val, + alwaysAsk: !val.alwaysAsk + })); + }} + /> + +
{browser.i18n.getMessage("limit")}
Date: Mon, 15 Jul 2024 20:31:04 -0700 Subject: [PATCH 5/9] fix: typo --- assets/_locales/en/messages.json | 2 +- assets/_locales/zh_CN/messages.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/_locales/en/messages.json b/assets/_locales/en/messages.json index cf812e18..7a9c479d 100644 --- a/assets/_locales/en/messages.json +++ b/assets/_locales/en/messages.json @@ -954,7 +954,7 @@ "description": "Always allow button" }, "always_ask_tooltip":{ - "message:": "Always ask for confirmation before any interaction", + "message": "Always ask for confirmation before any interaction", "description": "Always allow tooltip" }, "allow_selected_permissions": { diff --git a/assets/_locales/zh_CN/messages.json b/assets/_locales/zh_CN/messages.json index a42cf5ce..7aec6373 100644 --- a/assets/_locales/zh_CN/messages.json +++ b/assets/_locales/zh_CN/messages.json @@ -946,7 +946,7 @@ "description": "Always allow button" }, "always_ask_tooltip":{ - "message:": "每次交互前始终要求确认", + "message": "每次交互前始终要求确认", "description": "Always allow tooltip" }, "always_ask_permission": { From 8f5fe20f8054d6aac46e44a848164a83d5918430 Mon Sep 17 00:00:00 2001 From: nicholas ma Date: Mon, 15 Jul 2024 21:30:18 -0700 Subject: [PATCH 6/9] fix: updated is address format util fn to check for 43 length --- src/utils/format.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/format.ts b/src/utils/format.ts index aceb07cc..8216a1bd 100644 --- a/src/utils/format.ts +++ b/src/utils/format.ts @@ -51,7 +51,7 @@ export function formatAddress(address: string, count = 13) { * @param addr String to validate * @returns Valid address or not */ -export const isAddressFormat = (addr: string) => /[a-z0-9_-]{43}/i.test(addr); +export const isAddressFormat = (addr: string) => /^[a-z0-9_-]{43}$/i.test(addr); /** * Capitalizes first letters of settings name and replaces "_" with " " From 79283c1afd6cff4c978ab4232173d90e49bf8b8f Mon Sep 17 00:00:00 2001 From: nicholas ma Date: Tue, 16 Jul 2024 17:18:09 -0700 Subject: [PATCH 7/9] fix: updated allowance --- src/api/modules/dispatch/allowance.ts | 6 ++- .../modules/dispatch/dispatch.background.ts | 5 +- src/api/modules/sign/allowance.ts | 7 +-- src/api/modules/sign/sign.background.ts | 6 +-- .../sign_data_item.background.ts | 3 +- src/applications/application.ts | 7 --- src/routes/auth/connect.tsx | 32 +++++++----- .../popup/settings/apps/[url]/index.tsx | 49 +++++-------------- 8 files changed, 48 insertions(+), 67 deletions(-) diff --git a/src/api/modules/dispatch/allowance.ts b/src/api/modules/dispatch/allowance.ts index f4f02754..e9fa3803 100644 --- a/src/api/modules/dispatch/allowance.ts +++ b/src/api/modules/dispatch/allowance.ts @@ -34,8 +34,10 @@ export async function ensureAllowanceDispatch( dataEntry.toJSON(), address ); - } else if (allowance.enabled) { - await allowanceAuth(allowance, appData.appURL, price); + } + + if (allowance.enabled) { + await allowanceAuth(allowance, appData.appURL, price, alwaysAsk); } } catch (e) { freeDecryptedWallet(keyfile); diff --git a/src/api/modules/dispatch/dispatch.background.ts b/src/api/modules/dispatch/dispatch.background.ts index 0c11357c..a3d44df7 100644 --- a/src/api/modules/dispatch/dispatch.background.ts +++ b/src/api/modules/dispatch/dispatch.background.ts @@ -82,7 +82,7 @@ const background: ModuleFunction = async ( const allowance = await app.getAllowance(); // always ask - const alwaysAsk = await app.getAlwaysAsk(); + const alwaysAsk = allowance.enabled && allowance.limit.eq(BigNumber("0")); // attempt to create a bundle try { @@ -137,7 +137,8 @@ const background: ModuleFunction = async ( appData, allowance, decryptedWallet.keyfile, - price + price, + alwaysAsk ); // sign and upload diff --git a/src/api/modules/sign/allowance.ts b/src/api/modules/sign/allowance.ts index 1d1907d1..0cfa19d6 100644 --- a/src/api/modules/sign/allowance.ts +++ b/src/api/modules/sign/allowance.ts @@ -61,7 +61,8 @@ export async function updateAllowance( export async function allowanceAuth( allowance: AllowanceBigNumber, tabURL: string, - price: number | BigNumber + price: number | BigNumber, + override: boolean = false ) { // spent amount after this transaction const total = allowance.spent.plus(price); @@ -69,8 +70,8 @@ export async function allowanceAuth( // check if the price goes over the allowed total limit const hasEnoughAllowance = total.lte(allowance.limit); - // if the allowance is enough, return - if (hasEnoughAllowance) return; + // if the allowance is enough or override is true, return + if (hasEnoughAllowance || override) return; // try to authenticate to raise the allowance amount await authenticate({ diff --git a/src/api/modules/sign/sign.background.ts b/src/api/modules/sign/sign.background.ts index 626c7572..a52765c9 100644 --- a/src/api/modules/sign/sign.background.ts +++ b/src/api/modules/sign/sign.background.ts @@ -90,10 +90,10 @@ const background: ModuleFunction = async ( const allowance = await getAllowance(appData.appURL); // always ask - const alwaysAsk = await app.getAlwaysAsk(); + const alwaysAsk = allowance.enabled && allowance.limit.eq(BigNumber("0")); // check if there is an allowance limit, if there is we need to check allowance - // if alwaysAsk is enabled, then we'll need to signAuth popup + // if alwaysAsk is true, then we'll need to signAuth popup // if allowance is disabled, proceed with signing if (alwaysAsk) { // get address of keyfile @@ -124,7 +124,7 @@ const background: ModuleFunction = async ( // authenticate user if the allowance // limit is reached try { - await allowanceAuth(allowance, appData.appURL, price); + await allowanceAuth(allowance, appData.appURL, price, alwaysAsk); } catch (e) { freeDecryptedWallet(keyfile); throw new Error(e?.message || e); diff --git a/src/api/modules/sign_data_item/sign_data_item.background.ts b/src/api/modules/sign_data_item/sign_data_item.background.ts index d23af888..426a0376 100644 --- a/src/api/modules/sign_data_item/sign_data_item.background.ts +++ b/src/api/modules/sign_data_item/sign_data_item.background.ts @@ -34,7 +34,8 @@ const background: ModuleFunction = async ( } const app = new Application(appData.appURL); - const alwaysAsk = await app.getAlwaysAsk(); + const allowance = await app.getAllowance(); + const alwaysAsk = allowance.enabled && allowance.limit.eq(BigNumber("0")); if ( dataItem.tags?.some( diff --git a/src/applications/application.ts b/src/applications/application.ts index f2984162..107ddc03 100644 --- a/src/applications/application.ts +++ b/src/applications/application.ts @@ -138,12 +138,6 @@ export default class Application { return settings.bundler || defaultBundler; } - async getAlwaysAsk(): Promise { - const settings = await this.#getSettings(); - - return !!settings.alwaysAsk; - } - /** * Allowance limit and spent qty */ @@ -207,7 +201,6 @@ export interface InitAppParams extends AppInfo { permissions: PermissionType[]; gateway?: Gateway; allowance?: Allowance; - alwaysAsk?: boolean; blocked?: boolean; bundler?: string; } diff --git a/src/routes/auth/connect.tsx b/src/routes/auth/connect.tsx index 35f0f489..aeae0cdc 100644 --- a/src/routes/auth/connect.tsx +++ b/src/routes/auth/connect.tsx @@ -163,7 +163,11 @@ export default function Connect() { async function connect(alwaysAsk: boolean = false) { if (appUrl === "") return; - if (allowanceEnabled && Number(allowanceInput.state) < 0.001) { + if ( + allowanceEnabled && + Number(allowanceInput.state) < 0.001 && + !alwaysAsk + ) { return setToast({ type: "error", content: browser.i18n.getMessage("invalid_qty_error"), @@ -182,13 +186,14 @@ export default function Connect() { permissions, name: appData.name, logo: appData.logo, - alwaysAsk, + // alwaysAsk, allowance: { - enabled: allowanceEnabled, - limit: - allowanceEnabled && allowanceInput.state - ? arweave.ar.arToWinston(allowanceInput.state) // If allowance is enabled and a new limit is set, use the new limit - : defaultAllowance.limit, + enabled: alwaysAsk || allowanceEnabled, + limit: alwaysAsk // if it's always ask set the limit to 0 + ? "0" + : allowanceEnabled + ? arweave.ar.arToWinston(allowanceInput.state) // If allowance is enabled and a new limit is set, use the new limit + : Number.MAX_SAFE_INTEGER.toString(), // If allowance is disabled set it to max number spent: "0" // in winstons }, // TODO: wayfinder @@ -201,13 +206,14 @@ export default function Connect() { const allowance = await app.getAllowance(); await app.updateSettings({ permissions, - alwaysAsk, + // alwaysAsk, allowance: { - enabled: allowanceEnabled, - limit: - allowanceEnabled && allowanceInput.state - ? arweave.ar.arToWinston(allowanceInput.state) // If allowance is enabled and a new limit is set, use the new limit - : defaultAllowance.limit, + enabled: alwaysAsk ?? allowanceEnabled, + limit: alwaysAsk // if it's always ask set the limit to 0 + ? "0" + : allowanceEnabled + ? arweave.ar.arToWinston(allowanceInput.state) // If allowance is enabled and a new limit is set, use the new limit + : Number.MAX_SAFE_INTEGER.toString(), // If allowance is disabled set it to max number spent: "0" // in winstons } }); diff --git a/src/routes/popup/settings/apps/[url]/index.tsx b/src/routes/popup/settings/apps/[url]/index.tsx index 544ef7da..03cd9609 100644 --- a/src/routes/popup/settings/apps/[url]/index.tsx +++ b/src/routes/popup/settings/apps/[url]/index.tsx @@ -42,6 +42,10 @@ export default function AppSettings({ url }: Props) { return val.toString(); }, [settings]); + const isAllowanceDisabled = useMemo(() => { + return !settings?.allowance?.enabled; + }, [settings?.allowance?.enabled]); + // allowance limit const limit = useMemo(() => { const val = settings?.allowance?.limit; @@ -137,48 +141,23 @@ export default function AppSettings({ url }: Props) { { updateSettings((val) => ({ ...val, allowance: { ...defaultAllowance, ...val.allowance, - enabled: !val.allowance.enabled + enabled: enabled, + limit: enabled + ? val.allowance.limit + : Number.MAX_SAFE_INTEGER.toString() } })); }} /> - {/* Always Ask Popup */} - - - - {browser.i18n.getMessage("always_ask_permission")} - - - {browser.i18n.getMessage("always_ask_tooltip")} -
- } - position="top" - > - - - - { - updateSettings((val) => ({ - ...val, - alwaysAsk: !val.alwaysAsk - })); - }} - /> - -
{browser.i18n.getMessage("limit")}
From 76e10392624f2b0daa6017621221ef705a98ff96 Mon Sep 17 00:00:00 2001 From: nicholas ma Date: Tue, 16 Jul 2024 17:21:45 -0700 Subject: [PATCH 8/9] fix: cn messages.json --- assets/_locales/zh_CN/messages.json | 44 ++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/assets/_locales/zh_CN/messages.json b/assets/_locales/zh_CN/messages.json index 7aec6373..0fe42eea 100644 --- a/assets/_locales/zh_CN/messages.json +++ b/assets/_locales/zh_CN/messages.json @@ -49,6 +49,14 @@ "message": "隐藏", "description": "Hide text" }, + "close": { + "message": "关闭", + "description": "Close button text" + }, + "retry": { + "message": "重试", + "description": "Retry button text" + }, "save": { "message": "节省", "description": "Save button text" @@ -151,10 +159,6 @@ "message": "密码无效", "description": "Invalid password error" }, - "invalid_qty_error": { - "message": "0.001 是最低金额。请将您的限制更改为更高的金额。", - "description": "Warning message for setting a limit too low" - }, "testnetLive": { "message": "测试网已上线", "description": "Testnet live message" @@ -681,6 +685,18 @@ "message": "导出钱包出错", "description": "Wallet export error notification" }, + "import_wallet_key_length_short_error_title": { + "message": "密钥长度太短", + "description": "Key Length Too Short error" + }, + "import_wallet_key_length_short_error": { + "message": "您导入的钱包的密钥长度小于在 AO 网络上进行交易所需的长度。建议您创建一个新的ArConnect钱包,并将您的资产转移到新钱包中。", + "description": "Key Length Too Short error" + }, + "generate_wallet_in_progress": { + "message": "钱包创建过程可能需要 30-60 秒。", + "description": "Generate wallet in progresss text" + }, "development_version": { "message": "开发版本", "description": "Development version badge text" @@ -795,6 +811,10 @@ "message": "生成钱包中...", "description": "Generating wallet in progress text" }, + "longer_than_usual": { + "message": "请稍等,这比平常需要更长的时间...", + "description": "Longer than usual text" + }, "keyfile": { "message": "密钥文件", "description": "Keyfile text" @@ -945,10 +965,6 @@ "message": "始终允许", "description": "Always allow button" }, - "always_ask_tooltip":{ - "message": "每次交互前始终要求确认", - "description": "Always allow tooltip" - }, "always_ask_permission": { "message": "始终询问权限", "description": "Always allow button" @@ -1945,11 +1961,11 @@ "description": "Popup description about ao token transfer learn more" }, "ao_degraded": { - "message": "AO 代币处理网络降级。", + "message": "无法连接到 AO 令牌进程", "description": "ao degraded title text" }, "ao_degraded_description": { - "message": "网络问题解决后,AO 代币处理将可用。", + "message": "网络问题解决后,AO 余额将可用。", "description": "ao degraded description text" }, "network_issue": { @@ -2141,6 +2157,14 @@ "incorrect_password_error_message": { "message": "密码错误。请输入 ArConnect 的密码后再试,而不是您正在导入的钱包密码。", "description": "Error message if password is incorrect" + }, + "mismatch_warning_title": { + "message": "检测到钱包不匹配。", + "description": "Title for wallet mismatch warning on sda" + }, + "mismatch_warning": { + "message": "您的钱包存在不匹配的位长度。您可以继续操作,但可能会遇到错误。交易可能会失败或表现异常。", + "description": "warning for mismatch wallet" } } \ No newline at end of file From d4be9bf35963f74ff8e079e5c380c4f8a86dce08 Mon Sep 17 00:00:00 2001 From: nicholas ma Date: Tue, 16 Jul 2024 17:26:40 -0700 Subject: [PATCH 9/9] fix: messages --- assets/_locales/zh_CN/messages.json | 4321 +++++++++++++-------------- 1 file changed, 2160 insertions(+), 2161 deletions(-) diff --git a/assets/_locales/zh_CN/messages.json b/assets/_locales/zh_CN/messages.json index 0fe42eea..76aed103 100644 --- a/assets/_locales/zh_CN/messages.json +++ b/assets/_locales/zh_CN/messages.json @@ -1,2170 +1,2169 @@ { - "extensionDescription": { - "message": "Arweave 的安全钱包管理", - "description": "Extension description" - }, - "clickToCopy": { - "message": "点击复制", - "description": "Text to indicate the ability to copy something" - }, - "switchedToWallet": { - "message": "已切换到 $ADDRESS$", - "description": "Notification on switching active wallet", - "placeholders": { - "address": { - "content": "$1", - "example": "ljvCPN31...-CS-6Iho8U" - } - } - }, - "yes": { - "message": "是", - "description": "The word \"yes\"" - }, - "no": { - "message": "否", - "description": "The word \"no\"" - }, - "accept": { - "message": "接受", - "description": "Accept terms" - }, - "search": { - "message": "搜索", - "description": "Search text" - }, - "general": { - "message": "普通", - "description": "General text" - }, - "advanced": { - "message": "高级", - "description": "Advanced text" - }, - "show": { - "message": "显示", - "description": "Show text" - }, - "hide": { - "message": "隐藏", - "description": "Hide text" - }, - "close": { - "message": "关闭", - "description": "Close button text" - }, - "retry": { - "message": "重试", - "description": "Retry button text" - }, - "save": { - "message": "节省", - "description": "Save button text" - }, - "add_wallet": { - "message": "添加钱包", - "description": "Add a wallet text" - }, - "analytics_description": { - "message": "我们现在使用分析工具。", - "description": "Opting into Analytics text" - }, - "analytics_title": { - "message": "选择加入分析", - "description": "Analytics title" - }, - "edit": { - "message": "编辑", - "description": "Edit text" - }, - "appConnected": { - "message": "应用已连接", - "description": "Application connected text" - }, - "appNotConnected": { - "message": "应用未连接", - "description": "Application connected text" - }, - "forceConnect": { - "message": "强制连接", - "description": "Force connect button text" - }, - "decline": { - "message": "拒绝", - "description": "Decline terms" - }, - "devtools": { - "message": "开发者工具", - "description": "Devtools name" - }, - "gatewayNotTestnet": { - "message": "网关不是测试网网络", - "description": "Gateway not a testnet notification" - }, - "mint": { - "message": "铸造", - "description": "Mint button text" - }, - "mintAr": { - "message": "铸造 AR", - "description": "Mint AR tokens title" - }, - "arMinted": { - "message": "铸造了 $QTY$ AR 到 $ADDRESS$", - "description": "Message on arweave minted to an address", - "placeholders": { - "qty": { - "content": "$1", - "example": "10" - }, - "address": { - "content": "$2", - "example": "ljvCPN31...-CS-6Iho8U" - } - } - }, - "tokenMintFailed": { - "message": "铸造代币失败", - "description": "Message indicating minting failure" - }, - "mine": { - "message": "挖矿", - "description": "Mine button text" - }, - "mined": { - "message": "已挖矿", - "description": "Mine success message" - }, - "miningFailed": { - "message": "挖矿失败", - "description": "Mine failure message" - }, - "fillOutQtyField": { - "message": "请填写数量字段", - "description": "Fill out qty field error" - }, - "fillOutTargetField": { - "message": "请填写目标字段", - "description": "Fill out target field error" - }, - "addFileError": { - "message": "请添加文件", - "description": "Add file error" - }, - "couldNotReadTxData": { - "message": "无法读取交易数据文件", - "description": "File reading failure for tx data" - }, - "invalidPassword": { - "message": "密码无效", - "description": "Invalid password error" - }, - "testnetLive": { - "message": "测试网已上线", - "description": "Testnet live message" - }, - "testnetDown": { - "message": "测试网已离线", - "description": "Testnet offline message" - }, - "testnetGatewayUrlLabel": { - "message": "测试网网关网址", - "description": "Label indicating the input content to be the testnet gateway url" - }, - "arlocalCommandTutorial": { - "message": "没有安装 ArLocal?像这样运行它:", - "description": "Tutorial for the user on running ArLocal" - }, - "addTestnetTokensSubtitle": { - "message": "将测试网代币添加到您的钱包", - "description": "Subtitle indicating the ability to add testnet AR tokens to the active wallet" - }, - "analytics": { - "message": "分析", - "description": "Analytics text" - }, - "arQtyPlaceholder": { - "message": "AR 数量...", - "description": "Placeholder for AR amount input" - }, - "createTransaction": { - "message": "创建交易", - "description": "Create transaction title" - }, - "createTransactionSubtitle": { - "message": "发送带有标签和数据的交易", - "description": "Send transaction subtitle" - }, - "leaveEmptyForNone": { - "message": "留空表示无...", - "description": "Placeholder for inputs that take empty values as none" - }, - "target": { - "message": "目标", - "description": "Target label" - }, - "amount": { - "message": "金额", - "description": "Amount label" - }, - "tags": { - "message": "标签", - "description": "Tags label" - }, - "name": { - "message": "名称", - "description": "Name label" - }, - "tagNamePlaceholder": { - "message": "标签名称...", - "description": "Tag name placeholder" - }, - "value": { - "message": "值", - "description": "Value label" - }, - "tagValuePlaceholder": { - "message": "标签值...", - "description": "Tag value placeholder" - }, - "addTag": { - "message": "添加标签", - "description": "Add tag button" - }, - "data": { - "message": "数据", - "description": "Data label" - }, - "dragAndDropFile": { - "message": "拖放文件...", - "description": "File input label" - }, - "password": { - "message": "密码", - "description": "Password label" - }, - "new_password": { - "message": "新密码", - "description": "Password label" - }, - "confirm_new_password": { - "message": "重新输入新密码", - "description": "Password label" - }, - "enterPasswordToDecrypt": { - "message": "输入密码以解密钱包...", - "description": "Password request to decrypt wallet" - }, - "sendTransaction": { - "message": "发送交易", - "description": "Send transaction button" - }, - "permissionDescriptionAccessAddress": { - "message": "允许访问活动地址", - "description": "Description for the \"ACCESS_ADDRESS\" permission" - }, - "permissionDescriptionAccessPublicKey": { - "message": "允许访问活动地址的公钥", - "description": "Description for the \"ACCESS_PUBLIC_KEY\" permission" - }, - "permissionDescriptionAccessAllAddresses": { - "message": "允许访问所有活动和非活动钱包地址", - "description": "Description for the \"ACCESS_ALL_ADDRESSES\" permission" - }, - "permissionDescriptionSign": { - "message": "允许签署交易。", - "description": "Description for the \"SIGN_TRANSACTION\" permission" - }, - "permissionDescriptionEncrypt": { - "message": "允许使用钱包的密钥文件加密数据。这并不授予对密钥文件的访问权限", - "description": "Description for the \"ENCRYPT\" permission" - }, - "permissionDescriptionDecrypt": { - "message": "允许使用钱包的密钥文件解密数据。这并不授予对密钥文件的访问权限", - "description": "Description for the \"DECRYPT\" permission" - }, - "permissionDescriptionSignature": { - "message": "允许签署数据。", - "description": "Description for the \"SIGNATURE\" permission" - }, - "permissionDescriptionArweaveConfig": { - "message": "允许读取 ArConnect 配置文件", - "description": "Description for the \"ACCESS_ARWEAVE_CONFIG\" permission" - }, - "permissionDescriptionDispatch": { - "message": "允许使用调度交易。", - "description": "Description for the \"DISPATCH\" permission" - }, - "copyId": { - "message": "复制 ID", - "description": "Copy ID button text" - }, - "connectionFailure": { - "message": "无法连接到应用", - "description": "Notification about app connection failure in devtools" - }, - "permissions": { - "message": "权限", - "description": "Permissions title" - }, - "edit_permissions": { - "message": "编辑权限", - "description": "Edit permissions title" - }, - "app_permissions": { - "message": "应用权限", - "description": "App permissions title" - }, - "allowance": { - "message": "额度", - "description": "Allowance title" - }, - "allowanceTip": { - "message": "为此应用设置支出限制", - "description": "Tip explaining allowances for the user" - }, - "enabled": { - "message": "已启用", - "description": "Enabled label" - }, - "disabled": { - "message": "已禁用", - "description": "Disabled label" - }, - "u_token_disabled": { - "message": "目前无法转移 U-Token", - "description": "U-token Disabled label" - }, - "spent": { - "message": "已支出", - "description": "Spent text" - }, - "reset": { - "message": "重置", - "description": "Reset text" - }, - "resetSpentQty": { - "message": "重置已支出数量", - "description": "Reset tooltip text" - }, - "limit": { - "message": "限制", - "description": "Limit text" - }, - "gateway": { - "message": "网关", - "description": "Gateway title" - }, - "bundlrNode": { - "message": "Bundler 节点", - "description": "Bundler node title" - }, - "removeApp": { - "message": "移除应用", - "description": "Remove app button" - }, - "removeAppNote": { - "message": "移除所有权限并断开与 ArConnect 的应用连接。", - "description": "Remove app note paragraph" - }, - "remove": { - "message": "移除", - "description": "Remove button text" - }, - "block": { - "message": "阻止应用程序", - "description": "Block button" - }, - "unblock": { - "message": "解锁应用程序", - "description": "Unblock button" - }, - "setCustomGateway": { - "message": "设置自定义网关", - "description": "Notification about setting a custom gateway for an app" - }, - "settings": { - "message": "设置", - "description": "Settings title" - }, - "quick_settings": { - "message": "快速设置", - "description": "Quick Settings title" - }, - "setting_apps": { - "message": "应用程序", - "description": "Apps settings title" - }, - "setting_wallets": { - "message": "钱包", - "description": "Wallets settings title" - }, - "setting_config": { - "message": "下载配置", - "description": "Config settings title" - }, - "setting_about": { - "message": "关于", - "description": "About settings title" - }, - "setting_reset": { - "message": "重置", - "description": "Reset settings title" - }, - "setting_analytic": { - "message": "分析", - "description": "Analytics to help make ArConnect better" - }, - "setting_fee_multiplier": { - "message": "费用倍数", - "description": "Fee multiplier settings title" - }, - "setting_currency": { - "message": "货币", - "description": "Reset settings title" - }, - "setting_dre_node": { - "message": "Warp DRE 节点", - "description": "Warp DRE node setting title" - }, - "setting_arverify": { - "message": "ArVerify 阈值", - "description": "ArVerify settings title" - }, - "setting_arconfetti": { - "message": "ArConfetti 效果", - "description": "ArConfetti effect settings title" - }, - "setting_sign_notification": { - "message": "签署通知", - "description": "Sign notification settings title" - }, - "setting_sign_settings": { - "message": "签名设置", - "description": "Sign settings title" - }, - "setting_display_theme": { - "message": "主题", - "description": "Theme settings title" - }, - "setting_wayfinder": { - "message": "Wayfinder", - "description": "Wayfinder settings title" - }, - "setting_notifications": { - "message": "通知", - "description": "Notifications settings title" - }, - "setting_notifications_description": { - "message": "管理钱包活动警报", - "description": "Notifications settings description" - }, - "setting_all_settings": { - "message": "所有设置", - "description": "All settings description" - }, - "setting_all_settings_description": { - "message": "", - "description": "All settings description" - }, - "setting_apps_description": { - "message": "查看所有已连接的应用程序和设置", - "description": "App settings description" - }, - "setting_wallets_description": { - "message": "管理您的钱包", - "description": "Wallet settings description" - }, - "setting_config_description": { - "message": "下载 ArConnect 配置", - "description": "Config settings description" - }, - "setting_about_description": { - "message": "关于 ArConnect 的信息", - "description": "Config settings description" - }, - "setting_reset_description": { - "message": "移除所有钱包和数据", - "description": "Reset settings description" - }, - "setting_analytics_description": { - "message": "向 ArConnect 团队提供有用的匿名数据以改进项目", - "description": "ArConnect Analytics description" - }, - "setting_fee_multiplier_description": { - "message": "控制交易后的费用", - "description": "Fee multiplier settings description" - }, - "setting_setting_currency_description": { - "message": "法定货币显示", - "description": "Currency settings description" - }, - "setting_setting_dre_node_description": { - "message": "设置首选的 DRE 节点以进行合约评估", - "desription": "Preferred DRE node setting description" - }, - "setting_setting_arverify_description": { - "message": "设置使用的验证阈值", - "description": "Arverify settings description" - }, - "setting_setting_arconfetti_description": { - "message": "在使用钱包时显示动画", - "description": "ArConfetti settings description" - }, - "setting_sign_notification_description": { - "message": "签署交易时通知", - "description": "Sign notification settings description" - }, - "setting_display_theme_description": { - "message": "扩展 UI 的主题", - "description": "Display theme settings description" - }, - "setting_wayfinder_description": { - "message": "针对 ar.io 网关的实验性系统范围导航器", - "description": "Wayfinder settings description" - }, - "search_pick_option": { - "message": "搜索选项...", - "description": "Search input placeholder for the \"pick\" option component" - }, - "search_apps": { - "message": "搜索应用...", - "description": "Search input placeholder for apps" - }, - "search_wallets": { - "message": "搜索钱包...", - "description": "Search input placeholder for wallets" - }, - "search_tokens": { - "message": "搜索令牌...", - "description": "Search input placeholder for tokens" - }, - "export_keyfile": { - "message": "导出密钥文件", - "description": "Export keyfile button" - }, - "export_keyfile_description": { - "message": "输入密码导出钱包密钥文件", - "description": "Export keyfile description" - }, - "edit_wallet": { - "message": "编辑钱包", - "description": "Edit wallet button" - }, - "remove_wallet": { - "message": "移除钱包", - "description": "Remove wallet button" - }, - "edit_wallet_name": { - "message": "编辑名称", - "description": "Edit wallet name title in settings" - }, - "updated_wallet_name": { - "message": "已更新钱包名称", - "description": "Wallet name update notification content" - }, - "error_updating_wallet_name": { - "message": "更新钱包名称时出错", - "description": "Wallet name update error notification content" - }, - "copied_address": { - "message": "$NAME$ ($ADDRESS$) 地址已复制", - "description": "Address copy notification", - "placeholders": { - "name": { - "content": "$1", - "example": "Account 1" - }, - "address": { - "content": "$2", - "example": "ljvCPN31...-CS-6Iho8U" - } + "extensionDescription": { + "message": "Arweave 的安全钱包管理", + "description": "Extension description" + }, + "clickToCopy": { + "message": "点击复制", + "description": "Text to indicate the ability to copy something" + }, + "switchedToWallet": { + "message": "已切换到 $ADDRESS$", + "description": "Notification on switching active wallet", + "placeholders": { + "address": { + "content": "$1", + "example": "ljvCPN31...-CS-6Iho8U" + } + } + }, + "yes": { + "message": "是", + "description": "The word \"yes\"" + }, + "no": { + "message": "否", + "description": "The word \"no\"" + }, + "accept": { + "message": "接受", + "description": "Accept terms" + }, + "search": { + "message": "搜索", + "description": "Search text" + }, + "general": { + "message": "普通", + "description": "General text" + }, + "advanced": { + "message": "高级", + "description": "Advanced text" + }, + "show": { + "message": "显示", + "description": "Show text" + }, + "hide": { + "message": "隐藏", + "description": "Hide text" + }, + "close": { + "message": "关闭", + "description": "Close button text" + }, + "retry": { + "message": "重试", + "description": "Retry button text" + }, + "save": { + "message": "节省", + "description": "Save button text" + }, + "add_wallet": { + "message": "添加钱包", + "description": "Add a wallet text" + }, + "analytics_description": { + "message": "我们现在使用分析工具。", + "description": "Opting into Analytics text" + }, + "analytics_title": { + "message": "选择加入分析", + "description": "Analytics title" + }, + "edit": { + "message": "编辑", + "description": "Edit text" + }, + "appConnected": { + "message": "应用已连接", + "description": "Application connected text" + }, + "appNotConnected": { + "message": "应用未连接", + "description": "Application connected text" + }, + "forceConnect": { + "message": "强制连接", + "description": "Force connect button text" + }, + "decline": { + "message": "拒绝", + "description": "Decline terms" + }, + "devtools": { + "message": "开发者工具", + "description": "Devtools name" + }, + "gatewayNotTestnet": { + "message": "网关不是测试网网络", + "description": "Gateway not a testnet notification" + }, + "mint": { + "message": "铸造", + "description": "Mint button text" + }, + "mintAr": { + "message": "铸造 AR", + "description": "Mint AR tokens title" + }, + "arMinted": { + "message": "铸造了 $QTY$ AR 到 $ADDRESS$", + "description": "Message on arweave minted to an address", + "placeholders": { + "qty": { + "content": "$1", + "example": "10" + }, + "address": { + "content": "$2", + "example": "ljvCPN31...-CS-6Iho8U" + } + } + }, + "tokenMintFailed": { + "message": "铸造代币失败", + "description": "Message indicating minting failure" + }, + "mine": { + "message": "挖矿", + "description": "Mine button text" + }, + "mined": { + "message": "已挖矿", + "description": "Mine success message" + }, + "miningFailed": { + "message": "挖矿失败", + "description": "Mine failure message" + }, + "fillOutQtyField": { + "message": "请填写数量字段", + "description": "Fill out qty field error" + }, + "fillOutTargetField": { + "message": "请填写目标字段", + "description": "Fill out target field error" + }, + "addFileError": { + "message": "请添加文件", + "description": "Add file error" + }, + "couldNotReadTxData": { + "message": "无法读取交易数据文件", + "description": "File reading failure for tx data" + }, + "invalidPassword": { + "message": "密码无效", + "description": "Invalid password error" + }, + "testnetLive": { + "message": "测试网已上线", + "description": "Testnet live message" + }, + "testnetDown": { + "message": "测试网已离线", + "description": "Testnet offline message" + }, + "testnetGatewayUrlLabel": { + "message": "测试网网关网址", + "description": "Label indicating the input content to be the testnet gateway url" + }, + "arlocalCommandTutorial": { + "message": "没有安装 ArLocal?像这样运行它:", + "description": "Tutorial for the user on running ArLocal" + }, + "addTestnetTokensSubtitle": { + "message": "将测试网代币添加到您的钱包", + "description": "Subtitle indicating the ability to add testnet AR tokens to the active wallet" + }, + "analytics": { + "message": "分析", + "description": "Analytics text" + }, + "arQtyPlaceholder": { + "message": "AR 数量...", + "description": "Placeholder for AR amount input" + }, + "createTransaction": { + "message": "创建交易", + "description": "Create transaction title" + }, + "createTransactionSubtitle": { + "message": "发送带有标签和数据的交易", + "description": "Send transaction subtitle" + }, + "leaveEmptyForNone": { + "message": "留空表示无...", + "description": "Placeholder for inputs that take empty values as none" + }, + "target": { + "message": "目标", + "description": "Target label" + }, + "amount": { + "message": "金额", + "description": "Amount label" + }, + "tags": { + "message": "标签", + "description": "Tags label" + }, + "name": { + "message": "名称", + "description": "Name label" + }, + "tagNamePlaceholder": { + "message": "标签名称...", + "description": "Tag name placeholder" + }, + "value": { + "message": "值", + "description": "Value label" + }, + "tagValuePlaceholder": { + "message": "标签值...", + "description": "Tag value placeholder" + }, + "addTag": { + "message": "添加标签", + "description": "Add tag button" + }, + "data": { + "message": "数据", + "description": "Data label" + }, + "dragAndDropFile": { + "message": "拖放文件...", + "description": "File input label" + }, + "password": { + "message": "密码", + "description": "Password label" + }, + "new_password": { + "message": "新密码", + "description": "Password label" + }, + "confirm_new_password": { + "message": "重新输入新密码", + "description": "Password label" + }, + "enterPasswordToDecrypt": { + "message": "输入密码以解密钱包...", + "description": "Password request to decrypt wallet" + }, + "sendTransaction": { + "message": "发送交易", + "description": "Send transaction button" + }, + "permissionDescriptionAccessAddress": { + "message": "允许访问活动地址", + "description": "Description for the \"ACCESS_ADDRESS\" permission" + }, + "permissionDescriptionAccessPublicKey": { + "message": "允许访问活动地址的公钥", + "description": "Description for the \"ACCESS_PUBLIC_KEY\" permission" + }, + "permissionDescriptionAccessAllAddresses": { + "message": "允许访问所有活动和非活动钱包地址", + "description": "Description for the \"ACCESS_ALL_ADDRESSES\" permission" + }, + "permissionDescriptionSign": { + "message": "允许签署交易。", + "description": "Description for the \"SIGN_TRANSACTION\" permission" + }, + "permissionDescriptionEncrypt": { + "message": "允许使用钱包的密钥文件加密数据。这并不授予对密钥文件的访问权限", + "description": "Description for the \"ENCRYPT\" permission" + }, + "permissionDescriptionDecrypt": { + "message": "允许使用钱包的密钥文件解密数据。这并不授予对密钥文件的访问权限", + "description": "Description for the \"DECRYPT\" permission" + }, + "permissionDescriptionSignature": { + "message": "允许签署数据。", + "description": "Description for the \"SIGNATURE\" permission" + }, + "permissionDescriptionArweaveConfig": { + "message": "允许读取 ArConnect 配置文件", + "description": "Description for the \"ACCESS_ARWEAVE_CONFIG\" permission" + }, + "permissionDescriptionDispatch": { + "message": "允许使用调度交易。", + "description": "Description for the \"DISPATCH\" permission" + }, + "copyId": { + "message": "复制 ID", + "description": "Copy ID button text" + }, + "connectionFailure": { + "message": "无法连接到应用", + "description": "Notification about app connection failure in devtools" + }, + "permissions": { + "message": "权限", + "description": "Permissions title" + }, + "edit_permissions": { + "message": "编辑权限", + "description": "Edit permissions title" + }, + "app_permissions": { + "message": "应用权限", + "description": "App permissions title" + }, + "allowance": { + "message": "额度", + "description": "Allowance title" + }, + "allowanceTip": { + "message": "为此应用设置支出限制", + "description": "Tip explaining allowances for the user" + }, + "enabled": { + "message": "已启用", + "description": "Enabled label" + }, + "disabled": { + "message": "已禁用", + "description": "Disabled label" + }, + "u_token_disabled": { + "message": "目前无法转移 U-Token", + "description": "U-token Disabled label" + }, + "spent": { + "message": "已支出", + "description": "Spent text" + }, + "reset": { + "message": "重置", + "description": "Reset text" + }, + "resetSpentQty": { + "message": "重置已支出数量", + "description": "Reset tooltip text" + }, + "limit": { + "message": "限制", + "description": "Limit text" + }, + "gateway": { + "message": "网关", + "description": "Gateway title" + }, + "bundlrNode": { + "message": "Bundler 节点", + "description": "Bundler node title" + }, + "removeApp": { + "message": "移除应用", + "description": "Remove app button" + }, + "removeAppNote": { + "message": "移除所有权限并断开与 ArConnect 的应用连接。", + "description": "Remove app note paragraph" + }, + "remove": { + "message": "移除", + "description": "Remove button text" + }, + "block": { + "message": "阻止应用程序", + "description": "Block button" + }, + "unblock": { + "message": "解锁应用程序", + "description": "Unblock button" + }, + "setCustomGateway": { + "message": "设置自定义网关", + "description": "Notification about setting a custom gateway for an app" + }, + "settings": { + "message": "设置", + "description": "Settings title" + }, + "quick_settings": { + "message": "快速设置", + "description": "Quick Settings title" + }, + "setting_apps": { + "message": "应用程序", + "description": "Apps settings title" + }, + "setting_wallets": { + "message": "钱包", + "description": "Wallets settings title" + }, + "setting_config": { + "message": "下载配置", + "description": "Config settings title" + }, + "setting_about": { + "message": "关于", + "description": "About settings title" + }, + "setting_reset": { + "message": "重置", + "description": "Reset settings title" + }, + "setting_analytic": { + "message": "分析", + "description": "Analytics to help make ArConnect better" + }, + "setting_fee_multiplier": { + "message": "费用倍数", + "description": "Fee multiplier settings title" + }, + "setting_currency": { + "message": "货币", + "description": "Reset settings title" + }, + "setting_dre_node": { + "message": "Warp DRE 节点", + "description": "Warp DRE node setting title" + }, + "setting_arverify": { + "message": "ArVerify 阈值", + "description": "ArVerify settings title" + }, + "setting_arconfetti": { + "message": "ArConfetti 效果", + "description": "ArConfetti effect settings title" + }, + "setting_sign_notification": { + "message": "签署通知", + "description": "Sign notification settings title" + }, + "setting_sign_settings": { + "message": "签名设置", + "description": "Sign settings title" + }, + "setting_display_theme": { + "message": "主题", + "description": "Theme settings title" + }, + "setting_wayfinder": { + "message": "Wayfinder", + "description": "Wayfinder settings title" + }, + "setting_notifications": { + "message": "通知", + "description": "Notifications settings title" + }, + "setting_notifications_description": { + "message": "管理钱包活动警报", + "description": "Notifications settings description" + }, + "setting_all_settings": { + "message": "所有设置", + "description": "All settings description" + }, + "setting_all_settings_description": { + "message": "", + "description": "All settings description" + }, + "setting_apps_description": { + "message": "查看所有已连接的应用程序和设置", + "description": "App settings description" + }, + "setting_wallets_description": { + "message": "管理您的钱包", + "description": "Wallet settings description" + }, + "setting_config_description": { + "message": "下载 ArConnect 配置", + "description": "Config settings description" + }, + "setting_about_description": { + "message": "关于 ArConnect 的信息", + "description": "Config settings description" + }, + "setting_reset_description": { + "message": "移除所有钱包和数据", + "description": "Reset settings description" + }, + "setting_analytics_description": { + "message": "向 ArConnect 团队提供有用的匿名数据以改进项目", + "description": "ArConnect Analytics description" + }, + "setting_fee_multiplier_description": { + "message": "控制交易后的费用", + "description": "Fee multiplier settings description" + }, + "setting_setting_currency_description": { + "message": "法定货币显示", + "description": "Currency settings description" + }, + "setting_setting_dre_node_description": { + "message": "设置首选的 DRE 节点以进行合约评估", + "desription": "Preferred DRE node setting description" + }, + "setting_setting_arverify_description": { + "message": "设置使用的验证阈值", + "description": "Arverify settings description" + }, + "setting_setting_arconfetti_description": { + "message": "在使用钱包时显示动画", + "description": "ArConfetti settings description" + }, + "setting_sign_notification_description": { + "message": "签署交易时通知", + "description": "Sign notification settings description" + }, + "setting_display_theme_description": { + "message": "扩展 UI 的主题", + "description": "Display theme settings description" + }, + "setting_wayfinder_description": { + "message": "针对 ar.io 网关的实验性系统范围导航器", + "description": "Wayfinder settings description" + }, + "search_pick_option": { + "message": "搜索选项...", + "description": "Search input placeholder for the \"pick\" option component" + }, + "search_apps": { + "message": "搜索应用...", + "description": "Search input placeholder for apps" + }, + "search_wallets": { + "message": "搜索钱包...", + "description": "Search input placeholder for wallets" + }, + "search_tokens": { + "message": "搜索令牌...", + "description": "Search input placeholder for tokens" + }, + "export_keyfile": { + "message": "导出密钥文件", + "description": "Export keyfile button" + }, + "export_keyfile_description": { + "message": "输入密码导出钱包密钥文件", + "description": "Export keyfile description" + }, + "edit_wallet": { + "message": "编辑钱包", + "description": "Edit wallet button" + }, + "remove_wallet": { + "message": "移除钱包", + "description": "Remove wallet button" + }, + "edit_wallet_name": { + "message": "编辑名称", + "description": "Edit wallet name title in settings" + }, + "updated_wallet_name": { + "message": "已更新钱包名称", + "description": "Wallet name update notification content" + }, + "error_updating_wallet_name": { + "message": "更新钱包名称时出错", + "description": "Wallet name update error notification content" + }, + "copied_address": { + "message": "$NAME$ ($ADDRESS$) 地址已复制", + "description": "Address copy notification", + "placeholders": { + "name": { + "content": "$1", + "example": "Account 1" + }, + "address": { + "content": "$2", + "example": "ljvCPN31...-CS-6Iho8U" + } + } + }, + "copied_address_2": { + "message": "地址已复制", + "description": "Address copy notification 2" + }, + "cannot_edit_with_ans": { + "message": "无法编辑昵称。钱包已经有 ANS 标签。", + "description": "Explainer for disabled edits for wallets with ANS profiles" + }, + "add_wallet_subtitle": { + "message": "您可以添加任意数量", + "description": "Subtitle for add wallet section" + }, + "drag_and_drop_wallet": { + "message": "拖放钱包...", + "description": "Wallet input text" + }, + "enter_new_password": { + "message": "输入新密码...", + "description": "Password input placeholder" + }, + "reenter_new_password": { + "message": "重新输入新密码...", + "description": "Re-enter input placeholder" + }, + "enter_password": { + "message": "输入您的密码...", + "description": "Password input placeholder" + }, + "enter_password_again": { + "message": "重新输入您的密码...", + "description": "Re-enter password input placeholder" + }, + "passwords_match": { + "message": "密码匹配!", + "description": "Passwords are matching indicator text" + }, + "passwords_not_match": { + "message": "密码不匹配", + "description": "Invalid re-entered password error" + }, + "passwords_match_previous": { + "message": "新密码不能与旧密码相同", + "description": "Password must be different from old one" + }, + "invalid_mnemonic": { + "message": "无效的助记词", + "description": "Invalid mnemonic seedphrase error notification" + }, + "added_wallet": { + "message": "已添加钱包", + "description": "Added wallets notification" + }, + "error_adding_wallet": { + "message": "添加钱包出错。请检查您的密码", + "description": "Error on wallet adding notification" + }, + "no_apps_added": { + "message": "尚未添加应用...", + "description": "No apps added message" + }, + "remove_wallet_modal_title": { + "message": "移除钱包?", + "description": "Remove wallet modal title" + }, + "remove_wallet_modal_content": { + "message": "您确定要继续吗?此操作无法撤销。", + "description": "Remove wallet modal content" + }, + "confirm": { + "message": "确认", + "description": "Confirm button text" + }, + "confirm_transaction": { + "message": "确认交易", + "description": "Confirm Transaction Header" + }, + "subscription_payment": { + "message": "订阅付款", + "description": "Subscribtion payment header" + }, + "removed_wallet_notification": { + "message": "已移除钱包", + "description": "Notification for wallet removal" + }, + "remove_wallet_error_notification": { + "message": "移除钱包出错", + "description": "Notification for wallet removal error" + }, + "cancel": { + "message": "取消", + "description": "Cancel button text" + }, + "export": { + "message": "导出", + "description": "Export button text" + }, + "export_wallet_modal_title": { + "message": "导出钱包", + "description": "Export wallet modal title" + }, + "export_wallet_error": { + "message": "导出钱包出错", + "description": "Wallet export error notification" + }, + "import_wallet_key_length_short_error_title": { + "message": "密钥长度太短", + "description": "Key Length Too Short error" + }, + "import_wallet_key_length_short_error": { + "message": "您导入的钱包的密钥长度小于在 AO 网络上进行交易所需的长度。建议您创建一个新的ArConnect钱包,并将您的资产转移到新钱包中。", + "description": "Key Length Too Short error" + }, + "generate_wallet_in_progress": { + "message": "钱包创建过程可能需要 30-60 秒。", + "description": "Generate wallet in progresss text" + }, + "development_version": { + "message": "开发版本", + "description": "Development version badge text" + }, + "permissions_used": { + "message": "我们使用了以下权限:", + "description": "Used permissions label" + }, + "reset_warning": { + "message": "重置 ArConnect 将删除您所有的数据。这包括您的钱包、设置和缓存数据。", + "description": "Warning about resetting ArConnect" + }, + "irreversible_action": { + "message": "此操作是不可逆的!", + "description": "Warning about an irreversible action" + }, + "reset_error": { + "message": "无法重置 ArConnect", + "description": "Error message on reset" + }, + "welcome_to": { + "message": "欢迎来到", + "description": "\"Welcome to\" text" + }, + "get_me_started": { + "message": "开始使用", + "description": "Get me started button text" + }, + "have_wallet": { + "message": "我有一个钱包", + "description": "Has wallet button text" + }, + "skip": { + "message": "跳过", + "description": "Skip label" + }, + "next": { + "message": "下一步", + "description": "Next button text" + }, + "what_is_arweave": { + "message": "什么是 Arweave?", + "description": "What is arweave title" + }, + "about_arweave": { + "message": "Arweave 是一个允许您永久、可持续地存储数据的协议,只需一次性支付。该协议将拥有多余硬盘空间的人与需要永久存储数据或托管内容的个人和组织连接起来。", + "description": "A short paragraph explaining Arweave" + }, + "what_is_the_permaweb": { + "message": "什么是永久网络?", + "description": "What is the permaweb title" + }, + "about_permaweb": { + "message": "Arweave 上的永久网络是网络的下一次进化,使开发者和用户能够共享一个在全球范围内大量复制的有韧性的知识库,永久存在。除了数据,Arweave 还托管许多完全去中心化的永久应用程序。", + "description": "A short paragraph explaining the permaweb" + }, + "what_is_arconnect": { + "message": "什么是 ArConnect?", + "description": "What is arconnect title" + }, + "about_arconnect": { + "message": "ArConnect 是一个加密钱包扩展,允许您安全地与永久网络应用程序互动。它还让您可以轻松存储和管理资金。使用 ArConnect,您可以简单无缝地进入 Arweave 生态系统。", + "description": "A short paragraph explaining arconnect" + }, + "read_more_arwiki": { + "message": "阅读更多在", + "description": "\"Read more at (ArWiki)\" text" + }, + "backup": { + "message": "备份", + "description": "Backup title" + }, + "backup_wallet_title": { + "message": "备份您的钱包", + "description": "Backup wallet title" + }, + "backup_wallet_content": { + "message": "将这 12 个字的助记词保存到密码管理器,或将其写在纸上。永远不要与任何人分享。", + "description": "Backup wallet paragraph" + }, + "copySeed": { + "message": "复制助记词", + "description": "Copy seedphrase text" + }, + "done": { + "message": "完成", + "description": "Done button text" + }, + "setup_complete_title": { + "message": "设置完成", + "description": "Setup complete title" + }, + "generated_wallet": { + "message": "您的 Arweave 钱包地址为 $ADDRESS$ 已生成。您现在可以开始浏览永久网络了!", + "description": "Generated wallet notification", + "placeholders": { + "address": { + "content": "$1", + "example": "ljvCPN31...-CS-6Iho8U" + } + } + }, + "error_generating_wallet": { + "message": "生成钱包出错", + "description": "Error generating wallet notification" + }, + "written_down_seed": { + "message": "我已写下我的助记词", + "description": "Label for written down seedphrase checkbox" + }, + "generating_wallet": { + "message": "生成钱包中...", + "description": "Generating wallet in progress text" + }, + "longer_than_usual": { + "message": "请稍等,这比平常需要更长的时间...", + "description": "Longer than usual text" + }, + "keyfile": { + "message": "密钥文件", + "description": "Keyfile text" + }, + "confirm_seed": { + "message": "确认您的助记词", + "description": "Confirm seedphrase title" + }, + "confirm_seed_paragraph": { + "message": "通过在以下部分中完成缺失的助记词单词来验证您的助记词。", + "description": "Confirm seedphrase explainer paragraph" + }, + "correct": { + "message": "正确", + "description": "Correct text" + }, + "invalid_seed": { + "message": "输入的单词无效。请再试一次", + "description": "Invalid seed order notification" + }, + "create_password": { + "message": "创建密码", + "description": "Create password title" + }, + "create_password_paragraph": { + "message": "输入一个密码以保护 ArConnect。我们将使用此密码加密您的钱包。", + "description": "Create password explainer paragraph" + }, + "password_not_strong": { + "message": "您的密码不够强", + "description": "Notification about bad password strength" + }, + "password_strength_1": { + "message": "弱密码", + "description": "Level 1 strength password text" + }, + "password_strength_2": { + "message": "弱密码", + "description": "Level 2 strength password text" + }, + "password_strength_3": { + "message": "还行的密码", + "description": "Level 3 strength password text" + }, + "password_strength_4": { + "message": "强密码", + "description": "Level 4 strength password text" + }, + "password_strength_5": { + "message": "非常强的密码", + "description": "Level 5 strength password text" + }, + "password_strength_checklist_case": { + "message": "使用小写和大写字母", + "description": "Password strength checklist lowercase and uppercase element" + }, + "password_strength_checklist_number": { + "message": "使用数字", + "description": "Password strength checklist number element" + }, + "password_strength_checklist_symbol": { + "message": "使用符号", + "description": "Password strength checklist symbol element" + }, + "password_strength_checklist_length": { + "message": "至少 $NUMBER$ 个字符长", + "description": "Password strength checklist length element", + "placeholders": { + "number": { + "content": "$1", + "example": "10" } - }, - "copied_address_2": { - "message": "地址已复制", - "description": "Address copy notification 2" - }, - "cannot_edit_with_ans": { - "message": "无法编辑昵称。钱包已经有 ANS 标签。", - "description": "Explainer for disabled edits for wallets with ANS profiles" - }, - "add_wallet_subtitle": { - "message": "您可以添加任意数量", - "description": "Subtitle for add wallet section" - }, - "drag_and_drop_wallet": { - "message": "拖放钱包...", - "description": "Wallet input text" - }, - "enter_new_password": { - "message": "输入新密码...", - "description": "Password input placeholder" - }, - "reenter_new_password": { - "message": "重新输入新密码...", - "description": "Re-enter input placeholder" - }, - "enter_password": { - "message": "输入您的密码...", - "description": "Password input placeholder" - }, - "enter_password_again": { - "message": "重新输入您的密码...", - "description": "Re-enter password input placeholder" - }, - "passwords_match": { - "message": "密码匹配!", - "description": "Passwords are matching indicator text" - }, - "passwords_not_match": { - "message": "密码不匹配", - "description": "Invalid re-entered password error" - }, - "passwords_match_previous": { - "message": "新密码不能与旧密码相同", - "description": "Password must be different from old one" - }, - "invalid_mnemonic": { - "message": "无效的助记词", - "description": "Invalid mnemonic seedphrase error notification" - }, - "added_wallet": { - "message": "已添加钱包", - "description": "Added wallets notification" - }, - "error_adding_wallet": { - "message": "添加钱包出错。请检查您的密码", - "description": "Error on wallet adding notification" - }, - "no_apps_added": { - "message": "尚未添加应用...", - "description": "No apps added message" - }, - "remove_wallet_modal_title": { - "message": "移除钱包?", - "description": "Remove wallet modal title" - }, - "remove_wallet_modal_content": { - "message": "您确定要继续吗?此操作无法撤销。", - "description": "Remove wallet modal content" - }, - "confirm": { - "message": "确认", - "description": "Confirm button text" - }, - "confirm_transaction": { - "message": "确认交易", - "description": "Confirm Transaction Header" - }, - "subscription_payment": { - "message": "订阅付款", - "description": "Subscribtion payment header" - }, - "removed_wallet_notification": { - "message": "已移除钱包", - "description": "Notification for wallet removal" - }, - "remove_wallet_error_notification": { - "message": "移除钱包出错", - "description": "Notification for wallet removal error" - }, - "cancel": { - "message": "取消", - "description": "Cancel button text" - }, - "export": { - "message": "导出", - "description": "Export button text" - }, - "export_wallet_modal_title": { - "message": "导出钱包", - "description": "Export wallet modal title" - }, - "export_wallet_error": { - "message": "导出钱包出错", - "description": "Wallet export error notification" - }, - "import_wallet_key_length_short_error_title": { - "message": "密钥长度太短", - "description": "Key Length Too Short error" - }, - "import_wallet_key_length_short_error": { - "message": "您导入的钱包的密钥长度小于在 AO 网络上进行交易所需的长度。建议您创建一个新的ArConnect钱包,并将您的资产转移到新钱包中。", - "description": "Key Length Too Short error" - }, - "generate_wallet_in_progress": { - "message": "钱包创建过程可能需要 30-60 秒。", - "description": "Generate wallet in progresss text" - }, - "development_version": { - "message": "开发版本", - "description": "Development version badge text" - }, - "permissions_used": { - "message": "我们使用了以下权限:", - "description": "Used permissions label" - }, - "reset_warning": { - "message": "重置 ArConnect 将删除您所有的数据。这包括您的钱包、设置和缓存数据。", - "description": "Warning about resetting ArConnect" - }, - "irreversible_action": { - "message": "此操作是不可逆的!", - "description": "Warning about an irreversible action" - }, - "reset_error": { - "message": "无法重置 ArConnect", - "description": "Error message on reset" - }, - "welcome_to": { - "message": "欢迎来到", - "description": "\"Welcome to\" text" - }, - "get_me_started": { - "message": "开始使用", - "description": "Get me started button text" - }, - "have_wallet": { - "message": "我有一个钱包", - "description": "Has wallet button text" - }, - "skip": { - "message": "跳过", - "description": "Skip label" - }, - "next": { - "message": "下一步", - "description": "Next button text" - }, - "what_is_arweave": { - "message": "什么是 Arweave?", - "description": "What is arweave title" - }, - "about_arweave": { - "message": "Arweave 是一个允许您永久、可持续地存储数据的协议,只需一次性支付。该协议将拥有多余硬盘空间的人与需要永久存储数据或托管内容的个人和组织连接起来。", - "description": "A short paragraph explaining Arweave" - }, - "what_is_the_permaweb": { - "message": "什么是永久网络?", - "description": "What is the permaweb title" - }, - "about_permaweb": { - "message": "Arweave 上的永久网络是网络的下一次进化,使开发者和用户能够共享一个在全球范围内大量复制的有韧性的知识库,永久存在。除了数据,Arweave 还托管许多完全去中心化的永久应用程序。", - "description": "A short paragraph explaining the permaweb" - }, - "what_is_arconnect": { - "message": "什么是 ArConnect?", - "description": "What is arconnect title" - }, - "about_arconnect": { - "message": "ArConnect 是一个加密钱包扩展,允许您安全地与永久网络应用程序互动。它还让您可以轻松存储和管理资金。使用 ArConnect,您可以简单无缝地进入 Arweave 生态系统。", - "description": "A short paragraph explaining arconnect" - }, - "read_more_arwiki": { - "message": "阅读更多在", - "description": "\"Read more at (ArWiki)\" text" - }, - "backup": { - "message": "备份", - "description": "Backup title" - }, - "backup_wallet_title": { - "message": "备份您的钱包", - "description": "Backup wallet title" - }, - "backup_wallet_content": { - "message": "将这 12 个字的助记词保存到密码管理器,或将其写在纸上。永远不要与任何人分享。", - "description": "Backup wallet paragraph" - }, - "copySeed": { - "message": "复制助记词", - "description": "Copy seedphrase text" - }, - "done": { - "message": "完成", - "description": "Done button text" - }, - "setup_complete_title": { - "message": "设置完成", - "description": "Setup complete title" - }, - "generated_wallet": { - "message": "您的 Arweave 钱包地址为 $ADDRESS$ 已生成。您现在可以开始浏览永久网络了!", - "description": "Generated wallet notification", - "placeholders": { - "address": { - "content": "$1", - "example": "ljvCPN31...-CS-6Iho8U" - } + } + }, + "no_wallets_added": { + "message": "未添加钱包", + "description": "No wallets added title (devtools)" + }, + "no_wallets_added_paragraph": { + "message": "访问设置页面以使用此功能。", + "description": "No wallets added text (devtools)" + }, + "setup": { + "message": "设置", + "description": "Setup button text" + }, + "or": { + "message": "或", + "description": "\"Or\" text" + }, + "enter_seedphrase": { + "message": "输入助记词...", + "description": "Enter seedphrase input placeholder" + }, + "generate_wallet": { + "message": "生成钱包", + "description": "Generate wallet button text" + }, + "enter_pw_gen_wallet": { + "message": "输入密码以生成钱包", + "description": "Request to enter password before generating a wallet in settings" + }, + "select_recipient": { + "message": "选择接收者", + "description": "Select recipient when sending currency" + }, + "send_to": { + "message": "发送到", + "description": "Send To for slider menu" + }, + "no_close_window": { + "message": "不要关闭窗口!", + "description": "Request to not close the window" + }, + "generated_wallet_dashboard": { + "message": "钱包已生成,您现在可以关闭窗口了", + "description": "Notification about wallet generation" + }, + "provide_seedphrase": { + "message": "提供助记词", + "description": "Provide seedphrase for title in load wallet setup" + }, + "provide_seedphrase_paragraph": { + "message": "拖放您的密钥文件或输入您生成钱包时保存的 12 个字的助记词。确保其顺序正确。", + "description": "Explainer about the seedphrase loading" + }, + "sign_in": { + "message": "登录", + "description": "Sign In title" + }, + "app_wants_to_connect": { + "message": "一个应用想要连接", + "description": "App wants to connect label" + }, + "wallet": { + "message": "钱包", + "description": "Wallet label" + }, + "enter_your_password": { + "message": "输入您的密码...", + "description": "Enter password placeholder" + }, + "connect": { + "message": "连接", + "description": "Connect button text" + }, + "always_allow": { + "message": "始终允许", + "description": "Always allow button" + }, + "always_ask_permission": { + "message": "始终询问权限", + "description": "Always allow button" + }, + "allow_selected_permissions": { + "message": "允许选择的权限", + "description": "Always allow button" + }, + "allow_these_permissions": { + "message": "$APPNAME$ 想要使用以下权限连接到您的钱包", + "description": "Auth permissions label", + "placeholders": { + "appname": { + "content": "$1", + "example": "permafacts.arweave.dev" } - }, - "error_generating_wallet": { - "message": "生成钱包出错", - "description": "Error generating wallet notification" - }, - "written_down_seed": { - "message": "我已写下我的助记词", - "description": "Label for written down seedphrase checkbox" - }, - "generating_wallet": { - "message": "生成钱包中...", - "description": "Generating wallet in progress text" - }, - "longer_than_usual": { - "message": "请稍等,这比平常需要更长的时间...", - "description": "Longer than usual text" - }, - "keyfile": { - "message": "密钥文件", - "description": "Keyfile text" - }, - "confirm_seed": { - "message": "确认您的助记词", - "description": "Confirm seedphrase title" - }, - "confirm_seed_paragraph": { - "message": "通过在以下部分中完成缺失的助记词单词来验证您的助记词。", - "description": "Confirm seedphrase explainer paragraph" - }, - "correct": { - "message": "正确", - "description": "Correct text" - }, - "invalid_seed": { - "message": "输入的单词无效。请再试一次", - "description": "Invalid seed order notification" - }, - "create_password": { - "message": "创建密码", - "description": "Create password title" - }, - "create_password_paragraph": { - "message": "输入一个密码以保护 ArConnect。我们将使用此密码加密您的钱包。", - "description": "Create password explainer paragraph" - }, - "password_not_strong": { - "message": "您的密码不够强", - "description": "Notification about bad password strength" - }, - "password_strength_1": { - "message": "弱密码", - "description": "Level 1 strength password text" - }, - "password_strength_2": { - "message": "弱密码", - "description": "Level 2 strength password text" - }, - "password_strength_3": { - "message": "还行的密码", - "description": "Level 3 strength password text" - }, - "password_strength_4": { - "message": "强密码", - "description": "Level 4 strength password text" - }, - "password_strength_5": { - "message": "非常强的密码", - "description": "Level 5 strength password text" - }, - "password_strength_checklist_case": { - "message": "使用小写和大写字母", - "description": "Password strength checklist lowercase and uppercase element" - }, - "password_strength_checklist_number": { - "message": "使用数字", - "description": "Password strength checklist number element" - }, - "password_strength_checklist_symbol": { - "message": "使用符号", - "description": "Password strength checklist symbol element" - }, - "password_strength_checklist_length": { - "message": "至少 $NUMBER$ 个字符长", - "description": "Password strength checklist length element", - "placeholders": { - "number": { - "content": "$1", - "example": "10" + } + }, + "reset_allowance": { + "message": "重置额度", + "description": "Reset allowance title" + }, + "reset_spent": { + "message": "重置已支出", + "description": "Reset spent button" + }, + "allowance_limit_reached": { + "message": "此应用已达到其额度限制", + "description": "App allowance limit reached label" + }, + "unlock": { + "message": "解锁", + "description": "Unlock title" + }, + "unlock_wallet_to_use": { + "message": "您需要解锁钱包才能继续使用。", + "description": "Unlock wallet explanation" + }, + "reset_wallet_password_to_use": { + "message": "建议重置密码以增强安全性", + "description": "Reset wallet password explanation" + }, + "receive": { + "message": "接收", + "description": "Receive title" + }, + "share": { + "message": "分享", + "description": "Share button text" + }, + "send": { + "message": "发送", + "description": "Send title" + }, + "send_message_optional": { + "message": "消息(可选)", + "description": "Optional message field" + }, + "network_fee": { + "message": "网络费用", + "description": "Transaction network fee text" + }, + "estimated": { + "message": "预计", + "description": "estimated" + }, + "invalid_amount": { + "message": "金额必须大于 0", + "description": "Invalid tx amount message" + }, + "invalid_address": { + "message": "目标地址无效", + "description": "Invalid address message" + }, + "sent_tx": { + "message": "已发送交易", + "description": "Transaction sent successfully notification" + }, + "failed_tx": { + "message": "无法发送交易", + "description": "Transfer error notification" + }, + "assets": { + "message": "资产", + "description": "Assets title" + }, + "asset": { + "message": "资产", + "description": "Asset title" + }, + "view_all": { + "message": "查看全部", + "description": "View all link text" + }, + "setting_tokens": { + "message": "代币", + "description": "Tokens setting title" + }, + "setting_tokens_description": { + "message": "管理由去中心化应用程序或用户添加的代币", + "description": "Tokens setting description" + }, + "setting_contacts": { + "message": "联系人", + "description": "Contacts setting title" + }, + "setting_contact": { + "message": "接触", + "description": "Contact setting title" + }, + "setting_contacts_description": { + "message": "添加/编辑联系人", + "description": "Contacts setting description" + }, + "explore": { + "message": "探索", + "description": "Explore title" + }, + "explore_article_read_more": { + "message": "阅读更多", + "description": "Read more link text" + }, + "addToken": { + "message": "添加代币", + "description": "Add token title" + }, + "addTokenParagraph": { + "message": "$APP$ 想要向您的钱包添加一个代币。请查看以下详细信息。", + "description": "Add token explanation", + "placeholders": { + "app": { + "content": "$1", + "example": "ardrive.app" } - } - }, - "no_wallets_added": { - "message": "未添加钱包", - "description": "No wallets added title (devtools)" - }, - "no_wallets_added_paragraph": { - "message": "访问设置页面以使用此功能。", - "description": "No wallets added text (devtools)" - }, - "setup": { - "message": "设置", - "description": "Setup button text" - }, - "or": { - "message": "或", - "description": "\"Or\" text" - }, - "enter_seedphrase": { - "message": "输入助记词...", - "description": "Enter seedphrase input placeholder" - }, - "generate_wallet": { - "message": "生成钱包", - "description": "Generate wallet button text" - }, - "enter_pw_gen_wallet": { - "message": "输入密码以生成钱包", - "description": "Request to enter password before generating a wallet in settings" - }, - "select_recipient": { - "message": "选择接收者", - "description": "Select recipient when sending currency" - }, - "send_to": { - "message": "发送到", - "description": "Send To for slider menu" - }, - "no_close_window": { - "message": "不要关闭窗口!", - "description": "Request to not close the window" - }, - "generated_wallet_dashboard": { - "message": "钱包已生成,您现在可以关闭窗口了", - "description": "Notification about wallet generation" - }, - "provide_seedphrase": { - "message": "提供助记词", - "description": "Provide seedphrase for title in load wallet setup" - }, - "provide_seedphrase_paragraph": { - "message": "拖放您的密钥文件或输入您生成钱包时保存的 12 个字的助记词。确保其顺序正确。", - "description": "Explainer about the seedphrase loading" - }, - "sign_in": { - "message": "登录", - "description": "Sign In title" - }, - "app_wants_to_connect": { - "message": "一个应用想要连接", - "description": "App wants to connect label" - }, - "wallet": { - "message": "钱包", - "description": "Wallet label" - }, - "enter_your_password": { - "message": "输入您的密码...", - "description": "Enter password placeholder" - }, - "connect": { - "message": "连接", - "description": "Connect button text" - }, - "always_allow": { - "message": "始终允许", - "description": "Always allow button" - }, - "always_ask_permission": { - "message": "始终询问权限", - "description": "Always allow button" - }, - "allow_selected_permissions": { - "message": "允许选择的权限", - "description": "Always allow button" - }, - "allow_these_permissions": { - "message": "$APPNAME$ 想要使用以下权限连接到您的钱包", - "description": "Auth permissions label", - "placeholders": { + } + }, + "recents": { + "message": "最近", + "description": "Recents for send modal" + }, + "all_set": { + "message": "一切就绪!", + "description": "All set title" + }, + "all_set_paragraph": { + "message": "ArConnect 已使用您的密码和钱包设置完成。您现在可以关闭窗口。", + "description": "Paragraph indicating setup" + }, + "token_add_failure": { + "message": "添加代币失败", + "description": "Failed to add token error message" + }, + "no_assets": { + "message": "未添加资产...", + "description": "No assets added note" + }, + "about_title": { + "message": "关于", + "description": "About title" + }, + "no_description": { + "message": "没有可用描述", + "description": "No token description note" + }, + "info_title": { + "message": "信息", + "description": "Token info section title" + }, + "no_price": { + "message": "没有价格数据...", + "description": "No price data available note" + }, + "collectibles": { + "message": "收藏品", + "description": "Collectibles title" + }, + "collectible": { + "message": "收藏品", + "description": "Collectible title" + }, + "no_collectibles": { + "message": "没有添加收藏品", + "description": "No collectibles added note" + }, + "custom_gateway_warning": { + "message": "此代币使用自定义网关。这可能会减慢评估速度。", + "description": "Warning about adding tokens with custom gateways" + }, + "custom_gateway_warning_simple": { + "message": "使用了自定义网关", + "description": "Custom gateway label for transaction details" + }, + "choose_theme": { + "message": "选择 UI 主题", + "description": "UI theme option title in setup" + }, + "light_theme": { + "message": "亮色", + "description": "Light theme" + }, + "dark_theme": { + "message": "暗色", + "description": "Dark theme" + }, + "system_theme": { + "message": "系统", + "description": "System theme" + }, + "migration_available": { + "message": "可用迁移", + "description": "Migration available title" + }, + "migration_available_paragraph": { + "message": "看来您之前已经使用过旧版本的 ArConnect。我们可以迁移您之前版本中的钱包供使用。您仍需完成设置过程。", + "description": "Migration available paragraph" + }, + "migrate": { + "message": "迁移", + "description": "Migrate button text" + }, + "migration_confirmation": { + "message": "完成设置后将迁移您的钱包", + "description": "Migration confirmation notification" + }, + "migrate_wallets_list": { + "message": "这些钱包将被迁移:", + "description": "Label for migrated wallets" + }, + "migrate_wallets_not_migrated": { + "message": "这些钱包不会被迁移:", + "description": "Label for wallets that won't be migrated" + }, + "migrate_anyway": { + "message": "还是迁移!", + "description": "Migrate anyway button text" + }, + "migration_available_welcome": { + "message": "您可以通过点击“我有一个钱包”来从旧的 ArConnect 迁移您的钱包。", + "description": "Migration available banner text" + }, + "click_and_drag": { + "message": "点击并拖动", + "description": "Hover text for drag icon" + }, + "token_type": { + "message": "代币类型", + "description": "Token type label" + }, + "token_type_asset": { + "message": "资产", + "description": "Asset token type" + }, + "token_type_collectible": { + "message": "收藏品", + "description": "Collectible token type (NFT, etc.)" + }, + "remove_token": { + "message": "移除代币", + "description": "Remove token button text" + }, + "refresh_token": { + "message": "刷新令牌", + "description": "Refresh token button text" + }, + "your_balance": { + "message": "您的余额", + "description": "Balance label for tokens" + }, + "history": { + "message": "历史", + "description": "History title" + }, + "no_interaction_history": { + "message": "没有与此资产的历史记录", + "description": "No interaction history text for an asset" + }, + "titles_transaction": { + "message": "交易", + "description": "Transaction title" + }, + "transaction_id": { + "message": "交易 ID", + "description": "Transaction ID label" + }, + "process_id": { + "message": "过程 ID", + "description": "Process ID label" + }, + "transaction_from": { + "message": "从", + "description": "Transaction \"from\" label" + }, + "transaction_to": { + "message": "到", + "description": "Transaction \"to\" label" + }, + "transaction_fee": { + "message": "网络费用", + "description": "Transaction \"fee\" label" + }, + "transaction_size": { + "message": "大小", + "description": "Transaction \"size\" label" + }, + "transaction_confirmations": { + "message": "确认", + "description": "Transaction \"confirmations\" label" + }, + "transaction_block_height": { + "message": "区块", + "description": "Transaction \"block height\" label" + }, + "transaction_block_timestamp": { + "message": "时间戳", + "description": "Transaction \"timestamp\" label" + }, + "transaction_tags": { + "message": "标签", + "description": "Transaction \"tags\" label" + }, + "transaction_input": { + "message": "输入", + "description": "Contract interaction input label" + }, + "transaction_data": { + "message": "数据", + "description": "Transaction \"data\" label" + }, + "transaction_data_binary_warning": { + "message": "无法显示二进制交易数据...", + "description": "Warning about ArConnect not being able to display a transaction's data" + }, + "transaction_not_on_viewblock": { + "message": "在 Viewblock 上不可用", + "description": "Disabled viewblock link btn text" + }, + "transaction_view_last": { + "message": "点击查看您最近签署的交易", + "description": "View last tx prompt content" + }, + "sign_item": { + "message": "签署项目", + "description": "Sign message popup title" + }, + "titles_signature": { + "message": "签署消息", + "description": "Sign message popup title" + }, + "sign_data_description": { + "message": "$APPNAME$ 想要签署一笔交易。请查看以下详细信息。", + "description": "Description for signing an item containing a transfer", + "placeholders": { "appname": { - "content": "$1", - "example": "permafacts.arweave.dev" + "content": "$1", + "example": "permafacts.arweave.dev" } - } - }, - "reset_allowance": { - "message": "重置额度", - "description": "Reset allowance title" - }, - "reset_spent": { - "message": "重置已支出", - "description": "Reset spent button" - }, - "allowance_limit_reached": { - "message": "此应用已达到其额度限制", - "description": "App allowance limit reached label" - }, - "unlock": { - "message": "解锁", - "description": "Unlock title" - }, - "unlock_wallet_to_use": { - "message": "您需要解锁钱包才能继续使用。", - "description": "Unlock wallet explanation" - }, - "reset_wallet_password_to_use": { - "message": "建议重置密码以增强安全性", - "description": "Reset wallet password explanation" - }, - "receive": { - "message": "接收", - "description": "Receive title" - }, - "share": { - "message": "分享", - "description": "Share button text" - }, - "send": { - "message": "发送", - "description": "Send title" - }, - "send_message_optional": { - "message": "消息(可选)", - "description": "Optional message field" - }, - "network_fee": { - "message": "网络费用", - "description": "Transaction network fee text" - }, - "estimated": { - "message": "预计", - "description": "estimated" - }, - "invalid_amount": { - "message": "金额必须大于 0", - "description": "Invalid tx amount message" - }, - "invalid_address": { - "message": "目标地址无效", - "description": "Invalid address message" - }, - "sent_tx": { - "message": "已发送交易", - "description": "Transaction sent successfully notification" - }, - "failed_tx": { - "message": "无法发送交易", - "description": "Transfer error notification" - }, - "assets": { - "message": "资产", - "description": "Assets title" - }, - "asset": { - "message": "资产", - "description": "Asset title" - }, - "view_all": { - "message": "查看全部", - "description": "View all link text" - }, - "setting_tokens": { - "message": "代币", - "description": "Tokens setting title" - }, - "setting_tokens_description": { - "message": "管理由去中心化应用程序或用户添加的代币", - "description": "Tokens setting description" - }, - "setting_contacts": { - "message": "联系人", - "description": "Contacts setting title" - }, - "setting_contact": { - "message": "接触", - "description": "Contact setting title" - }, - "setting_contacts_description": { - "message": "添加/编辑联系人", - "description": "Contacts setting description" - }, - "explore": { - "message": "探索", - "description": "Explore title" - }, - "explore_article_read_more": { - "message": "阅读更多", - "description": "Read more link text" - }, - "addToken": { - "message": "添加代币", - "description": "Add token title" - }, - "addTokenParagraph": { - "message": "$APP$ 想要向您的钱包添加一个代币。请查看以下详细信息。", - "description": "Add token explanation", - "placeholders": { - "app": { - "content": "$1", - "example": "ardrive.app" - } - } - }, - "recents": { - "message": "最近", - "description": "Recents for send modal" - }, - "all_set": { - "message": "一切就绪!", - "description": "All set title" - }, - "all_set_paragraph": { - "message": "ArConnect 已使用您的密码和钱包设置完成。您现在可以关闭窗口。", - "description": "Paragraph indicating setup" - }, - "token_add_failure": { - "message": "添加代币失败", - "description": "Failed to add token error message" - }, - "no_assets": { - "message": "未添加资产...", - "description": "No assets added note" - }, - "about_title": { - "message": "关于", - "description": "About title" - }, - "no_description": { - "message": "没有可用描述", - "description": "No token description note" - }, - "info_title": { - "message": "信息", - "description": "Token info section title" - }, - "no_price": { - "message": "没有价格数据...", - "description": "No price data available note" - }, - "collectibles": { - "message": "收藏品", - "description": "Collectibles title" - }, - "collectible": { - "message": "收藏品", - "description": "Collectible title" - }, - "no_collectibles": { - "message": "没有添加收藏品", - "description": "No collectibles added note" - }, - "custom_gateway_warning": { - "message": "此代币使用自定义网关。这可能会减慢评估速度。", - "description": "Warning about adding tokens with custom gateways" - }, - "custom_gateway_warning_simple": { - "message": "使用了自定义网关", - "description": "Custom gateway label for transaction details" - }, - "choose_theme": { - "message": "选择 UI 主题", - "description": "UI theme option title in setup" - }, - "light_theme": { - "message": "亮色", - "description": "Light theme" - }, - "dark_theme": { - "message": "暗色", - "description": "Dark theme" - }, - "system_theme": { - "message": "系统", - "description": "System theme" - }, - "migration_available": { - "message": "可用迁移", - "description": "Migration available title" - }, - "migration_available_paragraph": { - "message": "看来您之前已经使用过旧版本的 ArConnect。我们可以迁移您之前版本中的钱包供使用。您仍需完成设置过程。", - "description": "Migration available paragraph" - }, - "migrate": { - "message": "迁移", - "description": "Migrate button text" - }, - "migration_confirmation": { - "message": "完成设置后将迁移您的钱包", - "description": "Migration confirmation notification" - }, - "migrate_wallets_list": { - "message": "这些钱包将被迁移:", - "description": "Label for migrated wallets" - }, - "migrate_wallets_not_migrated": { - "message": "这些钱包不会被迁移:", - "description": "Label for wallets that won't be migrated" - }, - "migrate_anyway": { - "message": "还是迁移!", - "description": "Migrate anyway button text" - }, - "migration_available_welcome": { - "message": "您可以通过点击“我有一个钱包”来从旧的 ArConnect 迁移您的钱包。", - "description": "Migration available banner text" - }, - "click_and_drag": { - "message": "点击并拖动", - "description": "Hover text for drag icon" - }, - "token_type": { - "message": "代币类型", - "description": "Token type label" - }, - "token_type_asset": { - "message": "资产", - "description": "Asset token type" - }, - "token_type_collectible": { - "message": "收藏品", - "description": "Collectible token type (NFT, etc.)" - }, - "remove_token": { - "message": "移除代币", - "description": "Remove token button text" - }, - "refresh_token": { - "message": "刷新令牌", - "description": "Refresh token button text" - }, - "your_balance": { - "message": "您的余额", - "description": "Balance label for tokens" - }, - "history": { - "message": "历史", - "description": "History title" - }, - "no_interaction_history": { - "message": "没有与此资产的历史记录", - "description": "No interaction history text for an asset" - }, - "titles_transaction": { - "message": "交易", - "description": "Transaction title" - }, - "transaction_id": { - "message": "交易 ID", - "description": "Transaction ID label" - }, - "process_id": { - "message": "过程 ID", - "description": "Process ID label" - }, - "transaction_from": { - "message": "从", - "description": "Transaction \"from\" label" - }, - "transaction_to": { - "message": "到", - "description": "Transaction \"to\" label" - }, - "transaction_fee": { - "message": "网络费用", - "description": "Transaction \"fee\" label" - }, - "transaction_size": { - "message": "大小", - "description": "Transaction \"size\" label" - }, - "transaction_confirmations": { - "message": "确认", - "description": "Transaction \"confirmations\" label" - }, - "transaction_block_height": { - "message": "区块", - "description": "Transaction \"block height\" label" - }, - "transaction_block_timestamp": { - "message": "时间戳", - "description": "Transaction \"timestamp\" label" - }, - "transaction_tags": { - "message": "标签", - "description": "Transaction \"tags\" label" - }, - "transaction_input": { - "message": "输入", - "description": "Contract interaction input label" - }, - "transaction_data": { - "message": "数据", - "description": "Transaction \"data\" label" - }, - "transaction_data_binary_warning": { - "message": "无法显示二进制交易数据...", - "description": "Warning about ArConnect not being able to display a transaction's data" - }, - "transaction_not_on_viewblock": { - "message": "在 Viewblock 上不可用", - "description": "Disabled viewblock link btn text" - }, - "transaction_view_last": { - "message": "点击查看您最近签署的交易", - "description": "View last tx prompt content" - }, - "sign_item": { - "message": "签署项目", - "description": "Sign message popup title" - }, - "titles_signature": { - "message": "签署消息", - "description": "Sign message popup title" - }, - "sign_data_description": { - "message": "$APPNAME$ 想要签署一笔交易。请查看以下详细信息。", - "description": "Description for signing an item containing a transfer", - "placeholders": { - "appname": { - "content": "$1", - "example": "permafacts.arweave.dev" - } - } - }, - "signature_description": { - "message": "$APPNAME$ 想要签署一条消息。请查看以下消息。", - "description": "App signature request for data that cannot be decoded to string", - "placeholders": { - "appname": { - "content": "$1", - "example": "permafacts.arweave.dev" - } - } - }, - "signature_message": { - "message": "消息", - "description": "Signature message label" - }, - "signature_authorize": { - "message": "签署", - "description": "Sign message authorize button" - }, - "titles_sign": { - "message": "签署交易", - "description": "Sign transaction popup title" - }, - "sign_authorize": { - "message": "授权", - "description": "Authorize button label" - }, - "sign_enter_password": { - "message": "输入密码以签署交易", - "description": "Request to enter password to sign transaction" - }, - "sign_scan_qr": { - "message": "使用您的硬件钱包扫描下面的二维码", - "description": "Request to scan signature QR" - }, - "generate_qr_code": { - "message": "生成二维码", - "description": "Generate QR code button" - }, - "viewblock": { - "message": "Viewblock", - "description": "view block" - }, - "keystone_connect_title": { - "message": "连接 Keystone", - "description": "Connect keystone hardware wallet button" - }, - - "keystone_scan": { - "message": "扫描响应", - "description": "Notification about a keystone scanning error" - }, - "keystone_scan_error": { - "message": "扫描二维码时出错", - "description": "Notification about a keystone scanning error" - }, - "keystone_invalid_result_type": { - "message": "检测到无效的二维码", - "description": "Notification about an invalid QR code while trying to scan a keystone wallet QR code" - }, - "keystone_scan_progress": { - "message": "进度:$PROGRESS$", - "description": "Progress label for QR code scanning", - "placeholders": { - "progress": { - "content": "$1", - "example": "10%" - } - } - }, - "keystone_loading_camera": { - "message": "加载扫描器...", - "description": "Loading hardware wallet QR scanner text" - }, - "keystone_disabled_camera": { - "message": "您的相机已禁用。启用它以扫描二维码!", - "description": "Request to enable the built-in camera" - }, - "keystone_allowed_camera": { - "message": "您已授予相机权限。请刷新页面!", - "description": "Request to refresh the page after granting camera permissions" - }, - "keystone_features_warning": { - "message": "Keystone 支持处于测试阶段。某些 API 功能可能不受支持。", - "description": "Warning about keystone support" - }, - "keystone_ao_description": { - "message": "Keystone 不支持发送 ao 代币。Keystone 只支持接收 ao 代币。发送支持即将到来。", - "description": "Description about keystone ao issue" - }, - "keystone_ao_title": { - "message": "检测到 Keystone 错误。", - "description": "Title about keystone ao issue" - }, - "keystone_ao_popup": { - "message": "Keystone 不支持发送 ao 代币。Keystone 只支持接收 ao 代币。发送支持即将到来。支持发送和接收 AR 代币。", - "description": "Popup description about keystone ao issue" - }, - "keystone_ao_popup_title": { - "message": "Keystone AO 代币支持通知", - "description": "Popup description about keystone ao issue" - }, - "token_price_estimate_warning": { - "message": "价格估算来自", - "description": "Price estimate warning text. Full text is displayed with a link to Redstone.finance" - }, - "wallet_hardware_added": { - "message": "已添加 $WALLETTYPE$ 钱包", - "description": "Notification on adding a hardware wallet", - "placeholders": { - "wallettype": { - "content": "$1", - "example": "Keystone" - } - } - }, - "wallet_hardware_not_added": { - "message": "无法添加 $WALLETTYPE$ 钱包", - "description": "Notification on error when adding a hardware wallet", - "placeholders": { - "wallettype": { - "content": "$1", - "example": "Keystone" - } - } - }, - "wallet_hardware_unsupported": { - "message": "此功能不支持硬件钱包", - "description": "Notification about a feature that does not support usage with a hardware wallet as an active/selected wallet" - }, - "notification_title_native_tx": { - "message": "交易已签署", - "description": "Notification title for signing a native tx" - }, - "notification_title_dispatched_tx": { - "message": "交易已发送", - "description": "Notification title for dispatching a tx" - }, - "notification_description_native_tx": { - "message": "总费用约为 $PRICE$ AR", - "description": "Notification body for native tx signing", - "placeholders": { - "price": { - "content": "$1", - "example": "10,234.15" - } - } - }, - "notification_description_dispatch_tx": { - "message": "已提交到 Bundlr 网络", - "description": "Notification body for dispatched tx" - }, - "transaction_send_add_target": { - "message": "添加接收者", - "description": "Add recipient title" - }, - "transaction_send_address_input_label": { - "message": "接收者", - "description": "Label for the address input" - }, - "transaction_send_address_input_placeholder": { - "message": "地址,ANS 或 ArNS...", - "description": "Placeholder for the address input" - }, - "transaction_send_scan_address": { - "message": "扫描地址", - "description": "Scan address tooltip content" - }, - "transaction_send_success": { - "message": "交易已发送", - "description": "Sent transaction successfully message" - }, - "transaction_send_error": { - "message": "无法发送交易", - "description": "Transaction failure" - }, - "transaction_auth_ur_fail": { - "message": "无法构建交易二维码", - "description": "Error notification about failed signing QR generation" - }, - "transaction_send_loading": { - "message": "发送交易中...", - "description": "Sending transaction loading text" - }, - "transaction_sending_token": { - "message": "发送中", - "description": "Sending token description in confirmation" - }, - "not_connected": { - "message": "未连接", - "description": "Not connected indicator" - }, - "not_connected_text": { - "message": "此应用尚未使用 ArConnect。找到页面上的“连接”按钮以连接。", - "description": "Not connected indicator explainer" - }, - "disconnect": { - "message": "断开连接", - "description": "Disconnect button text" - }, - "disconnected": { - "message": "已断开", - "description": "Disconnected tooltip" - }, - "account_connected": { - "message": "账户已连接", - "description": "Connected tooltip" - }, - "copy_address": { - "message": "复制地址", - "description": "Click to copy address tooltip" - }, - "expand_view": { - "message": "扩展视图", - "description": "Click to open extension in a browser tab" - }, - "allowance_edit": { - "message": "编辑额度", - "description": "Edit allowance tooltip" - }, - "balance_hide": { - "message": "隐藏余额", - "description": "Hide balance tooltip" - }, - "balance_show": { - "message": "显示余额", - "description": "Show balance tooltip" - }, - "lock_wallet": { - "message": "锁定钱包", - "description": "Lock wallet and terminate current session icon button" - }, - "home": { - "message": "首页", - "description": "Home Button" - }, - "home_no_balance": { - "message": "添加 $AR$ 以开始", - "description": "No balance message on homescreen", - "placeholders": { - "ar": { - "content": "$1", - "example": "$AR" - } - } - }, - "home_transfer_balance": { - "message": "转移 AR", - "description": "Transfer balance button text" - }, - "close_tab_generate_wallet_message": { - "message": "您确定要退出吗?您的新钱包正在生成中,将会丢失。", - "description": "Confirmation message for the user who tries to close a tab where a wallet is still being generated" - }, - "close_tab_load_wallet_message": { - "message": "您确定要退出吗?您的钱包正在加载中,关闭标签页将停止此过程。", - "description": "Confirmation message for the user who tries to close a tab where a wallet is still being loaded" - }, - "manage_assets_button": { - "message": "管理资产", - "description": "Manage assets button" - }, - "installation_complete": { - "message": "安装完成", - "description": "Installation complete title" - }, - "installation_complete_paragraph": { - "message": "将 ArConnect 固定到您的浏览器,使其易于访问并连接到您喜欢的 dApps。", - "description": "Installation complete paragraph" - }, - "enable_notifications_title": { - "message": "在 ArConnect 中启用通知", - "description": "Enable Notification title" - }, - "no_notifications": { - "message": "当前没有通知", - "description": "No notifications title" - }, - "no_notifications_get_started": { - "message": "发送交易以开始", - "description": "Send Transactions to get notifications" - }, - "introducing_notifications": { - "message": "介绍通知", - "description": "Alternative Enable Notification title" - }, - "enable_notifications_paragraph": { - "message": "保持更新,获取交易和 ao 消息的即时提醒。", - "description": "Enable notifications paragraph" - }, - "alternative_enable_notifications_paragraph": { - "message": "当交易处理时立即接收通知。", - "description": "Enable notifications paragraph" - }, - "toggle_notifications": { - "message": "切换通知", - "description": "Toggle notifications text" - }, - "toggle_notifications_decription": { - "message": "切换以接收钱包中新交易的提醒。", - "description": "Toggle notifications description text" - }, - "get_started": { - "message": "开始", - "description": "Get started title" - }, - "get_started_description": { - "message": "通过 ArConnect 探索 Arweave 和 aoComputer 的无限可能", - "description": "Get started description" - }, - "example_astro_description": { - "message": "Astro 是一个允许用户铸造 USDA 稳定币的平台。", - "description": "Placeholder for example get started" - }, - "example_protocolland_description": { - "message": "Protocol.Land 是一个去中心化、源代码控制的代码协作平台。", - "description": "Placeholder for example get started" - }, - "example_publish_description": { - "message": "一个旨在去中介化真相的证明中立出版平台。发布声明,并在事实市场中占据您的位置!", - "description": "Placeholder for example get started" - }, - "example_bark_description": { - "message": "Bark 是一个去中心化交易所,用于在 aoComputer 网络上交换资产。", - "description": "Placeholder for example get started" - }, - "connect_with_us_title": { - "message": "与我们联系", - "description": "Connect with us title" - }, - "connect_paragraph": { - "message": "在 X 上关注我们,了解团队正在工作的最新动态。", - "description": "Connect with us description" - }, - "connect_paragraph_2": { - "message": "有问题吗?加入 Discord 服务器与开发人员聊天。", - "description": "Connect with us description" - }, - "buy_ar_button": { - "message": "购买 AR", - "description": "Buy AR with Onramper button text" - }, - "buy_screen_title": { - "message": "购买", - "description": "Buy AR with Onramper button text" - }, - "buy_screen_pay": { - "message": "您支付", - "description": "Payment input label title" - }, - "buy_screen_receive": { - "message": "您接收", - "description": "Receive input label title" - }, - "buy_screen_switch": { - "message": "切换", - "description": "Switch button" - }, - "buy_screen_payment_method": { - "message": "支付方式", - "description": "Select payment method title" - }, - "buy_screen_enter": { - "message": "输入金额", - "description": "Enter fiat amount placeholder" - }, - "buy_screen_receive_x": { - "message": "xxxx.xxxx", - "description": "Receive quantity placeholder" - }, - "AR_button": { - "message": "AR", - "description": "Receive quantity button text" - }, - "credit_debit": { - "message": "信用卡/借记卡", - "description": "Buy screen payment method text" - }, - "conversion_error": { - "message": "获取报价失败:无效的法定金额。", - "description": "Buy screen conversion error text" - }, - "confirm_purchase_title": { - "message": "将 AR 添加到您的钱包", - "description": "Confirm purchase header text" - }, - "wallet_address": { - "message": "钱包地址", - "description": "Confirm purchase wallet address header" - }, - "order_details": { - "message": "订单详情", - "description": "Confirm purchase order details title" - }, - "confirm_rate": { - "message": "汇率", - "description": "Confirm purchase rate text" - }, - "confirm_vendor_fee": { - "message": "供应商费用", - "description": "Confirm purchase vendor fee text" - }, - "confirm_total": { - "message": "总计", - "description": "Confirm purchase total cost text" - }, - "close_purchase_pending": { - "message": "关闭", - "description": "Close button text on purchase in progress page" - }, - "congrats_purchase_pending": { - "message": "恭喜!", - "description": "Congrats text on purchase in progress page" - }, - "info_purchase_pending": { - "message": "您的购买正在进行中。这可能需要 30-60 分钟完成。", - "description": "Info message text on purchase in progress page" - }, - "order_id_purchase_pending": { - "message": "报价 ID:", - "description": "Order ID text on purchase in progress page" - }, - "choose_payment_method": { - "message": "选择支付方式", - "description": "Payment method input modal title text" - }, - "choose_fiat_currency": { - "message": "选择法定货币", - "description": "Fiat currency input modal title text" - }, - "search_currency_placeholder": { - "message": "输入货币名称", - "description": "Currency search placeholder text" - }, - "receive_AR_button": { - "message": "接收 AR", - "description": "Button text for the receive AR button" - }, - "search_contacts": { - "message": "搜索联系人...", - "description": "Search input placeholder for contacts" - }, - "add_contact": { - "message": "添加联系人", - "description": "Add a contact button text" - }, - "new": { - "message": "新的", - "description": "Add a new button text" - }, - "send_transaction": { - "message": "发送交易", - "description": "Active contact send button text" - }, - "contact_info": { - "message": "联系信息", - "description": "Contact settings title" - }, - "user_not_in_contacts": { - "message": "此用户不在您的联系人中。", - "description": "Small message title on transaction confirmation page" - }, - "create_contact": { - "message": "创建联系人?", - "description": "Create contact question" - }, - "new_contact": { - "message": "新联系人", - "description": "New contact title" - }, - "add_new_contact": { - "message": "添加新联系人", - "description": "Add a new contact title" - }, - "uploaded_avatar": { - "message": "已上传头像到 Arweave。", - "description": "Successful upload toast text" - }, - "ArNS_address": { - "message": "ArNS 地址", - "description": "Contact ArNS address subtitle" - }, - "select_ArNS_address": { - "message": "选择 ArNS 地址", - "description": "Select ArNS address text" - }, - "no_ArNS_address_found": { - "message": "未找到 ArNS 地址", - "description": "No ArNS address found text" - }, - "searching_ArNS_addresses": { - "message": "正在搜索 ArNS 地址...", - "description": "Search ArNS addressess text" - }, - "arweave_url": { - "message": "ar://", - "description": "Arweave address for ArNS names" - }, - "contact_avatar": { - "message": "头像", - "description": "Contact Avatar subtitle" - }, - "first_last_name": { - "message": "名字和姓氏", - "description": "Contact name input placeholder text" - }, - "arweave_account_address": { - "message": "Arweave 账户地址", - "description": "Contact arweave account address subtitle" - }, - "account_address": { - "message": "账户地址", - "description": "Contact account address input placeholder text" - }, - "notes": { - "message": "备注", - "description": "Contact notes subtitle" - }, - "type_message_here": { - "message": "在此输入消息...", - "description": "Contact notes input placeholder text" - }, - "save_changes": { - "message": "保存更改", - "description": "Save button text" - }, - "remove_contact": { - "message": "移除联系人", - "description": "Remove contact button text" - }, - "edit_contact": { - "message": "更改联系资料", - "description": "Edit contact button text" - }, - "remove_contact_question": { - "message": "您确定要移除此联系人吗?", - "description": "Remove contact modal text" - }, - "save_new_contact": { - "message": "保存新联系人", - "description": "Save new contact button text" - }, - "save_contact": { - "message": "保存联系方式", - "description": "Save contact button text" - }, - "address_in_use": { - "message": "地址已在使用中。", - "description": "Contacts error message if address is already in use" - }, - "password_allowance": { - "message": "需要密码额度", - "description": "Input title for the password allowance label" - }, - "add": { - "message": "添加", - "description": "Add button text" - }, - "your_contacts": { - "message": "您的联系人", - "description": "Your Contacts title in Send Modal" - }, - "check_address": { - "message": "请检查接收者地址", - "description": "Error message for invalid address/ArNS" - }, - "incorrect_address": { - "message": "接收者地址不正确", - "description": "Error message for invalid ANS" - }, - "arns_added": { - "message": "ar://$ADDRESS$ 已添加", - "description": "ArNS recipient added", - "placeholders": { - "address": { - "content": "$1", - "example": "Address" - } - } - }, - "ans_added": { - "message": "$ADDRESS$ 已添加", - "description": "ANS recipient added", - "placeholders": { - "address": { - "content": "$1", - "example": "Address" - } - } - }, - "setting_ao_support": { - "message": "ao 支持", - "description": "ao support settings title" - }, - "setting_ao_support_description": { - "message": "在您的钱包中显示 ao 代币(测试版)", - "description": "ao support settings description" - }, - "got_it": { - "message": "知道了", - "description": "Got it button text" - }, - "display_ao_tokens": { - "message": "在 ArConnect 中显示 AO 代币(测试版)", - "description": "Display AO tokens description" - }, - "ao_computer": { - "message": "ao.computer", - "description": "ao computer url" - }, - "ao_tokens": { - "message": "AO代币", - "description": "Ao Tokens" - }, - "ao_announcement_text": { - "message": "关注未来的 ao 更新。了解更多访问", - "description": "ao announcement description text" - }, - "ao_announcement_title": { - "message": "AO 测试网现已上线!", - "description": "ao announcement title text" - }, - "ao_token_announcement_title": { - "message": "恭喜您通过持有 AR 获得 AO 代币!🥳", - "description": "ao token announcement title text" - }, - "ao_token_send_popup": { - "message": "AO 代币在 2025 年 2 月 8 日之前不可转让,届时 AO 的 15% 已被铸造。", - "description": "Popup description about ao token transfer" - }, - "ao_token_send_popup_title": { - "message": "AO代币转账公告", - "description": "Popup description about ao token transfer" - }, - "ao_token_send_popup_learn_more": { - "message": "了解更多", - "description": "Popup description about ao token transfer learn more" - }, - "ao_degraded": { - "message": "无法连接到 AO 令牌进程", - "description": "ao degraded title text" - }, - "ao_degraded_description": { - "message": "网络问题解决后,AO 余额将可用。", - "description": "ao degraded description text" - }, - "network_issue": { - "message": "检测到网络问题。", - "description": "network issue title text" - }, - "network_issue_description": { - "message": "您的 ISP 或 VPN 阻止访问 AO。
请使用其他连接。", - "description": "network issue description text" - }, - "import_token": { - "message": "导入代币", - "description": "Import token button description" - }, - "token_already_added": { - "message": "代币已添加", - "description": "Token already imported" - }, - "token_already_removed": { - "message": "代币已移除", - "description": "Token already removed" - }, - "token_imported": { - "message": "代币成功添加", - "description": "Token added" - }, - "token_removed": { - "message": "代币成功移除", - "description": "Token removed" - }, - "transaction_complete": { - "message": "交易完成", - "description": "transaction complete header" - }, - "message": { + } + }, + "signature_description": { + "message": "$APPNAME$ 想要签署一条消息。请查看以下消息。", + "description": "App signature request for data that cannot be decoded to string", + "placeholders": { + "appname": { + "content": "$1", + "example": "permafacts.arweave.dev" + } + } + }, + "signature_message": { "message": "消息", - "description": "message header" - }, - "subscription_allowance": { - "message": "订阅额度", - "description": "Subscription settings title" - }, - "subscription_title": { - "message": "订阅", - "description": "Subscription title" - }, - "subscriptions": { - "message": "订阅", - "description": "Subscriptions title" - }, - "no_subscriptions": { - "message": "尚未订阅", - "description": "No subscriptions title" - }, - "no_subscriptions_description": { - "message": "您的未来订阅将显示在这里", - "description": "No subscriptions description" - }, - "subscribe_description": { - "message": "$APPNAME 请求设置一个定期付款的订阅", - "description": "Subscribe description" - }, - "subscription_description": { - "message": "管理自动提现额度", - "description": "Subscription setting description" - }, - "subscription_cancelled": { - "message": "订阅已取消", - "description": "The subscription has been successfully cancelled." - }, - "subscription_cancelled_error": { - "message": "订阅取消错误", - "description": "There was an error cancelling the subscription. Please try again." - }, - "subscription_deleted": { - "message": "订阅已删除", - "description": "The subscription has been successfully deleted." - }, - "subscription_delete_error": { - "message": "订阅删除错误", - "description": "There was an error deleting the subscription. Please try again." - }, - "subscription_add_failure": { - "message": "添加订阅失败", - "description": "Failed to add subscription error message" - }, - "transaction_history_title": { - "message": "交易历史", - "description": "Transaction History header" - }, - "subscription_application_address": { - "message": "应用地址", - "description": "付款地址" - }, - - "subscription_recurring_amount": { - "message": "定期付款金额", - "description": "Recurring payment amount" - }, - "auto_renewal": { - "message": "自动续订", - "description": "auto-renewal" - }, - "auto_pay": { - "message": "自动付款", - "description": "auto-pay" - }, - "confirm_subscription": { - "message": "确认订阅", - "description": "confirm subscription" - }, - "continue": { - "message": "继续", - "description": "Continue" - }, - - "end": { - "message": "结束", - "description": "end" - }, - "next_payment": { - "message": "下一次付款", - "description": "next payment" - }, - "start": { + "description": "Signature message label" + }, + "signature_authorize": { + "message": "签署", + "description": "Sign message authorize button" + }, + "titles_sign": { + "message": "签署交易", + "description": "Sign transaction popup title" + }, + "sign_authorize": { + "message": "授权", + "description": "Authorize button label" + }, + "sign_enter_password": { + "message": "输入密码以签署交易", + "description": "Request to enter password to sign transaction" + }, + "sign_scan_qr": { + "message": "使用您的硬件钱包扫描下面的二维码", + "description": "Request to scan signature QR" + }, + "generate_qr_code": { + "message": "生成二维码", + "description": "Generate QR code button" + }, + "viewblock": { + "message": "Viewblock", + "description": "view block" + }, + "keystone_connect_title": { + "message": "连接 Keystone", + "description": "Connect keystone hardware wallet button" + }, + + "keystone_scan": { + "message": "扫描响应", + "description": "Notification about a keystone scanning error" + }, + "keystone_scan_error": { + "message": "扫描二维码时出错", + "description": "Notification about a keystone scanning error" + }, + "keystone_invalid_result_type": { + "message": "检测到无效的二维码", + "description": "Notification about an invalid QR code while trying to scan a keystone wallet QR code" + }, + "keystone_scan_progress": { + "message": "进度:$PROGRESS$", + "description": "Progress label for QR code scanning", + "placeholders": { + "progress": { + "content": "$1", + "example": "10%" + } + } + }, + "keystone_loading_camera": { + "message": "加载扫描器...", + "description": "Loading hardware wallet QR scanner text" + }, + "keystone_disabled_camera": { + "message": "您的相机已禁用。启用它以扫描二维码!", + "description": "Request to enable the built-in camera" + }, + "keystone_allowed_camera": { + "message": "您已授予相机权限。请刷新页面!", + "description": "Request to refresh the page after granting camera permissions" + }, + "keystone_features_warning": { + "message": "Keystone 支持处于测试阶段。某些 API 功能可能不受支持。", + "description": "Warning about keystone support" + }, + "keystone_ao_description": { + "message": "Keystone 不支持发送 ao 代币。Keystone 只支持接收 ao 代币。发送支持即将到来。", + "description": "Description about keystone ao issue" + }, + "keystone_ao_title": { + "message": "检测到 Keystone 错误。", + "description": "Title about keystone ao issue" + }, + "keystone_ao_popup": { + "message": "Keystone 不支持发送 ao 代币。Keystone 只支持接收 ao 代币。发送支持即将到来。支持发送和接收 AR 代币。", + "description": "Popup description about keystone ao issue" + }, + "keystone_ao_popup_title": { + "message": "Keystone AO 代币支持通知", + "description": "Popup description about keystone ao issue" + }, + "token_price_estimate_warning": { + "message": "价格估算来自", + "description": "Price estimate warning text. Full text is displayed with a link to Redstone.finance" + }, + "wallet_hardware_added": { + "message": "已添加 $WALLETTYPE$ 钱包", + "description": "Notification on adding a hardware wallet", + "placeholders": { + "wallettype": { + "content": "$1", + "example": "Keystone" + } + } + }, + "wallet_hardware_not_added": { + "message": "无法添加 $WALLETTYPE$ 钱包", + "description": "Notification on error when adding a hardware wallet", + "placeholders": { + "wallettype": { + "content": "$1", + "example": "Keystone" + } + } + }, + "wallet_hardware_unsupported": { + "message": "此功能不支持硬件钱包", + "description": "Notification about a feature that does not support usage with a hardware wallet as an active/selected wallet" + }, + "notification_title_native_tx": { + "message": "交易已签署", + "description": "Notification title for signing a native tx" + }, + "notification_title_dispatched_tx": { + "message": "交易已发送", + "description": "Notification title for dispatching a tx" + }, + "notification_description_native_tx": { + "message": "总费用约为 $PRICE$ AR", + "description": "Notification body for native tx signing", + "placeholders": { + "price": { + "content": "$1", + "example": "10,234.15" + } + } + }, + "notification_description_dispatch_tx": { + "message": "已提交到 Bundlr 网络", + "description": "Notification body for dispatched tx" + }, + "transaction_send_add_target": { + "message": "添加接收者", + "description": "Add recipient title" + }, + "transaction_send_address_input_label": { + "message": "接收者", + "description": "Label for the address input" + }, + "transaction_send_address_input_placeholder": { + "message": "地址,ANS 或 ArNS...", + "description": "Placeholder for the address input" + }, + "transaction_send_scan_address": { + "message": "扫描地址", + "description": "Scan address tooltip content" + }, + "transaction_send_success": { + "message": "交易已发送", + "description": "Sent transaction successfully message" + }, + "transaction_send_error": { + "message": "无法发送交易", + "description": "Transaction failure" + }, + "transaction_auth_ur_fail": { + "message": "无法构建交易二维码", + "description": "Error notification about failed signing QR generation" + }, + "transaction_send_loading": { + "message": "发送交易中...", + "description": "Sending transaction loading text" + }, + "transaction_sending_token": { + "message": "发送中", + "description": "Sending token description in confirmation" + }, + "not_connected": { + "message": "未连接", + "description": "Not connected indicator" + }, + "not_connected_text": { + "message": "此应用尚未使用 ArConnect。找到页面上的“连接”按钮以连接。", + "description": "Not connected indicator explainer" + }, + "disconnect": { + "message": "断开连接", + "description": "Disconnect button text" + }, + "disconnected": { + "message": "已断开", + "description": "Disconnected tooltip" + }, + "account_connected": { + "message": "账户已连接", + "description": "Connected tooltip" + }, + "copy_address": { + "message": "复制地址", + "description": "Click to copy address tooltip" + }, + "expand_view": { + "message": "扩展视图", + "description": "Click to open extension in a browser tab" + }, + "allowance_edit": { + "message": "编辑额度", + "description": "Edit allowance tooltip" + }, + "balance_hide": { + "message": "隐藏余额", + "description": "Hide balance tooltip" + }, + "balance_show": { + "message": "显示余额", + "description": "Show balance tooltip" + }, + "lock_wallet": { + "message": "锁定钱包", + "description": "Lock wallet and terminate current session icon button" + }, + "home": { + "message": "首页", + "description": "Home Button" + }, + "home_no_balance": { + "message": "添加 $AR$ 以开始", + "description": "No balance message on homescreen", + "placeholders": { + "ar": { + "content": "$1", + "example": "$AR" + } + } + }, + "home_transfer_balance": { + "message": "转移 AR", + "description": "Transfer balance button text" + }, + "close_tab_generate_wallet_message": { + "message": "您确定要退出吗?您的新钱包正在生成中,将会丢失。", + "description": "Confirmation message for the user who tries to close a tab where a wallet is still being generated" + }, + "close_tab_load_wallet_message": { + "message": "您确定要退出吗?您的钱包正在加载中,关闭标签页将停止此过程。", + "description": "Confirmation message for the user who tries to close a tab where a wallet is still being loaded" + }, + "manage_assets_button": { + "message": "管理资产", + "description": "Manage assets button" + }, + "installation_complete": { + "message": "安装完成", + "description": "Installation complete title" + }, + "installation_complete_paragraph": { + "message": "将 ArConnect 固定到您的浏览器,使其易于访问并连接到您喜欢的 dApps。", + "description": "Installation complete paragraph" + }, + "enable_notifications_title": { + "message": "在 ArConnect 中启用通知", + "description": "Enable Notification title" + }, + "no_notifications": { + "message": "当前没有通知", + "description": "No notifications title" + }, + "no_notifications_get_started": { + "message": "发送交易以开始", + "description": "Send Transactions to get notifications" + }, + "introducing_notifications": { + "message": "介绍通知", + "description": "Alternative Enable Notification title" + }, + "enable_notifications_paragraph": { + "message": "保持更新,获取交易和 ao 消息的即时提醒。", + "description": "Enable notifications paragraph" + }, + "alternative_enable_notifications_paragraph": { + "message": "当交易处理时立即接收通知。", + "description": "Enable notifications paragraph" + }, + "toggle_notifications": { + "message": "切换通知", + "description": "Toggle notifications text" + }, + "toggle_notifications_decription": { + "message": "切换以接收钱包中新交易的提醒。", + "description": "Toggle notifications description text" + }, + "get_started": { "message": "开始", - "description": "start" - }, - "Quarterly": { - "message": "季度", - "description": "quarterly frequency" - }, - "Monthly": { - "message": "每月", - "description": "monthly frequency" - }, - "Weekly": { - "message": "每周", - "description": "weekly frequency" - }, - "Daily": { - "message": "每天", - "description": "daily frequency" - }, - "transactions": { - "message": "交易", - "descriptions": "Transactions title" - }, - "no_transactions": { - "message": "未找到交易", - "description": "No transactions message" - }, - "sent": { - "message": "已发送", - "description": "sent" - }, - "received": { - "message": "已收到", - "description": "received" - }, - "password_warning_title": { - "message": "密码强度警告", - "description": "Weak password warning title" - }, - "password_warning_description": { - "message": "您的密码目前较弱。您可以继续,但我们建议使用以下组合:", - "description": "Password warning description" - }, - "required": { - "message": "必需", - "description": "required" - }, - "recommended": { - "message": "推荐", - "description": "recommended" - }, - "add_wallet_error_message": { - "message": "请输入恢复短语或密钥文件,并输入 ArConnect 的密码后再继续。", - "description": "Error message if recovery section is left blank" - }, - "empty_password_error_message": { - "message": "请输入 ArConnect 的密码,而不是您正在导入的钱包密码。", - "description": "Error message if password section is left blank" - }, - "missing_recovery_error_message": { - "message": "请输入恢复短语或密钥文件后再继续。", - "description": "Error message if recovery phrase or key file is left blank" - }, - "incorrect_password_error_message": { - "message": "密码错误。请输入 ArConnect 的密码后再试,而不是您正在导入的钱包密码。", - "description": "Error message if password is incorrect" - }, - "mismatch_warning_title": { - "message": "检测到钱包不匹配。", - "description": "Title for wallet mismatch warning on sda" - }, - "mismatch_warning": { - "message": "您的钱包存在不匹配的位长度。您可以继续操作,但可能会遇到错误。交易可能会失败或表现异常。", - "description": "warning for mismatch wallet" - } + "description": "Get started title" + }, + "get_started_description": { + "message": "通过 ArConnect 探索 Arweave 和 aoComputer 的无限可能", + "description": "Get started description" + }, + "example_astro_description": { + "message": "Astro 是一个允许用户铸造 USDA 稳定币的平台。", + "description": "Placeholder for example get started" + }, + "example_protocolland_description": { + "message": "Protocol.Land 是一个去中心化、源代码控制的代码协作平台。", + "description": "Placeholder for example get started" + }, + "example_publish_description": { + "message": "一个旨在去中介化真相的证明中立出版平台。发布声明,并在事实市场中占据您的位置!", + "description": "Placeholder for example get started" + }, + "example_bark_description": { + "message": "Bark 是一个去中心化交易所,用于在 aoComputer 网络上交换资产。", + "description": "Placeholder for example get started" + }, + "connect_with_us_title": { + "message": "与我们联系", + "description": "Connect with us title" + }, + "connect_paragraph": { + "message": "在 X 上关注我们,了解团队正在工作的最新动态。", + "description": "Connect with us description" + }, + "connect_paragraph_2": { + "message": "有问题吗?加入 Discord 服务器与开发人员聊天。", + "description": "Connect with us description" + }, + "buy_ar_button": { + "message": "购买 AR", + "description": "Buy AR with Onramper button text" + }, + "buy_screen_title": { + "message": "购买", + "description": "Buy AR with Onramper button text" + }, + "buy_screen_pay": { + "message": "您支付", + "description": "Payment input label title" + }, + "buy_screen_receive": { + "message": "您接收", + "description": "Receive input label title" + }, + "buy_screen_switch": { + "message": "切换", + "description": "Switch button" + }, + "buy_screen_payment_method": { + "message": "支付方式", + "description": "Select payment method title" + }, + "buy_screen_enter": { + "message": "输入金额", + "description": "Enter fiat amount placeholder" + }, + "buy_screen_receive_x": { + "message": "xxxx.xxxx", + "description": "Receive quantity placeholder" + }, + "AR_button": { + "message": "AR", + "description": "Receive quantity button text" + }, + "credit_debit": { + "message": "信用卡/借记卡", + "description": "Buy screen payment method text" + }, + "conversion_error": { + "message": "获取报价失败:无效的法定金额。", + "description": "Buy screen conversion error text" + }, + "confirm_purchase_title": { + "message": "将 AR 添加到您的钱包", + "description": "Confirm purchase header text" + }, + "wallet_address": { + "message": "钱包地址", + "description": "Confirm purchase wallet address header" + }, + "order_details": { + "message": "订单详情", + "description": "Confirm purchase order details title" + }, + "confirm_rate": { + "message": "汇率", + "description": "Confirm purchase rate text" + }, + "confirm_vendor_fee": { + "message": "供应商费用", + "description": "Confirm purchase vendor fee text" + }, + "confirm_total": { + "message": "总计", + "description": "Confirm purchase total cost text" + }, + "close_purchase_pending": { + "message": "关闭", + "description": "Close button text on purchase in progress page" + }, + "congrats_purchase_pending": { + "message": "恭喜!", + "description": "Congrats text on purchase in progress page" + }, + "info_purchase_pending": { + "message": "您的购买正在进行中。这可能需要 30-60 分钟完成。", + "description": "Info message text on purchase in progress page" + }, + "order_id_purchase_pending": { + "message": "报价 ID:", + "description": "Order ID text on purchase in progress page" + }, + "choose_payment_method": { + "message": "选择支付方式", + "description": "Payment method input modal title text" + }, + "choose_fiat_currency": { + "message": "选择法定货币", + "description": "Fiat currency input modal title text" + }, + "search_currency_placeholder": { + "message": "输入货币名称", + "description": "Currency search placeholder text" + }, + "receive_AR_button": { + "message": "接收 AR", + "description": "Button text for the receive AR button" + }, + "search_contacts": { + "message": "搜索联系人...", + "description": "Search input placeholder for contacts" + }, + "add_contact": { + "message": "添加联系人", + "description": "Add a contact button text" + }, + "new": { + "message": "新的", + "description": "Add a new button text" + }, + "send_transaction": { + "message": "发送交易", + "description": "Active contact send button text" + }, + "contact_info": { + "message": "联系信息", + "description": "Contact settings title" + }, + "user_not_in_contacts": { + "message": "此用户不在您的联系人中。", + "description": "Small message title on transaction confirmation page" + }, + "create_contact": { + "message": "创建联系人?", + "description": "Create contact question" + }, + "new_contact": { + "message": "新联系人", + "description": "New contact title" + }, + "add_new_contact": { + "message": "添加新联系人", + "description": "Add a new contact title" + }, + "uploaded_avatar": { + "message": "已上传头像到 Arweave。", + "description": "Successful upload toast text" + }, + "ArNS_address": { + "message": "ArNS 地址", + "description": "Contact ArNS address subtitle" + }, + "select_ArNS_address": { + "message": "选择 ArNS 地址", + "description": "Select ArNS address text" + }, + "no_ArNS_address_found": { + "message": "未找到 ArNS 地址", + "description": "No ArNS address found text" + }, + "searching_ArNS_addresses": { + "message": "正在搜索 ArNS 地址...", + "description": "Search ArNS addressess text" + }, + "arweave_url": { + "message": "ar://", + "description": "Arweave address for ArNS names" + }, + "contact_avatar": { + "message": "头像", + "description": "Contact Avatar subtitle" + }, + "first_last_name": { + "message": "名字和姓氏", + "description": "Contact name input placeholder text" + }, + "arweave_account_address": { + "message": "Arweave 账户地址", + "description": "Contact arweave account address subtitle" + }, + "account_address": { + "message": "账户地址", + "description": "Contact account address input placeholder text" + }, + "notes": { + "message": "备注", + "description": "Contact notes subtitle" + }, + "type_message_here": { + "message": "在此输入消息...", + "description": "Contact notes input placeholder text" + }, + "save_changes": { + "message": "保存更改", + "description": "Save button text" + }, + "remove_contact": { + "message": "移除联系人", + "description": "Remove contact button text" + }, + "edit_contact": { + "message": "更改联系资料", + "description": "Edit contact button text" + }, + "remove_contact_question": { + "message": "您确定要移除此联系人吗?", + "description": "Remove contact modal text" + }, + "save_new_contact": { + "message": "保存新联系人", + "description": "Save new contact button text" + }, + "save_contact": { + "message": "保存联系方式", + "description": "Save contact button text" + }, + "address_in_use": { + "message": "地址已在使用中。", + "description": "Contacts error message if address is already in use" + }, + "password_allowance": { + "message": "需要密码额度", + "description": "Input title for the password allowance label" + }, + "add": { + "message": "添加", + "description": "Add button text" + }, + "your_contacts": { + "message": "您的联系人", + "description": "Your Contacts title in Send Modal" + }, + "check_address": { + "message": "请检查接收者地址", + "description": "Error message for invalid address/ArNS" + }, + "incorrect_address": { + "message": "接收者地址不正确", + "description": "Error message for invalid ANS" + }, + "arns_added": { + "message": "ar://$ADDRESS$ 已添加", + "description": "ArNS recipient added", + "placeholders": { + "address": { + "content": "$1", + "example": "Address" + } + } + }, + "ans_added": { + "message": "$ADDRESS$ 已添加", + "description": "ANS recipient added", + "placeholders": { + "address": { + "content": "$1", + "example": "Address" + } + } + }, + "setting_ao_support": { + "message": "ao 支持", + "description": "ao support settings title" + }, + "setting_ao_support_description": { + "message": "在您的钱包中显示 ao 代币(测试版)", + "description": "ao support settings description" + }, + "got_it": { + "message": "知道了", + "description": "Got it button text" + }, + "display_ao_tokens": { + "message": "在 ArConnect 中显示 AO 代币(测试版)", + "description": "Display AO tokens description" + }, + "ao_computer": { + "message": "ao.computer", + "description": "ao computer url" + }, + "ao_tokens": { + "message": "AO代币", + "description": "Ao Tokens" + }, + "ao_announcement_text": { + "message": "关注未来的 ao 更新。了解更多访问", + "description": "ao announcement description text" + }, + "ao_announcement_title": { + "message": "AO 测试网现已上线!", + "description": "ao announcement title text" + }, + "ao_token_announcement_title": { + "message": "恭喜您通过持有 AR 获得 AO 代币!🥳", + "description": "ao token announcement title text" + }, + "ao_token_send_popup": { + "message": "AO 代币在 2025 年 2 月 8 日之前不可转让,届时 AO 的 15% 已被铸造。", + "description": "Popup description about ao token transfer" + }, + "ao_token_send_popup_title": { + "message": "AO代币转账公告", + "description": "Popup description about ao token transfer" + }, + "ao_token_send_popup_learn_more": { + "message": "了解更多", + "description": "Popup description about ao token transfer learn more" + }, + "ao_degraded": { + "message": "无法连接到 AO 令牌进程", + "description": "ao degraded title text" + }, + "ao_degraded_description": { + "message": "网络问题解决后,AO 余额将可用。", + "description": "ao degraded description text" + }, + "network_issue": { + "message": "检测到网络问题。", + "description": "network issue title text" + }, + "network_issue_description": { + "message": "您的 ISP 或 VPN 阻止访问 AO。
请使用其他连接。", + "description": "network issue description text" + }, + "import_token": { + "message": "导入代币", + "description": "Import token button description" + }, + "token_already_added": { + "message": "代币已添加", + "description": "Token already imported" + }, + "token_already_removed": { + "message": "代币已移除", + "description": "Token already removed" + }, + "token_imported": { + "message": "代币成功添加", + "description": "Token added" + }, + "token_removed": { + "message": "代币成功移除", + "description": "Token removed" + }, + "transaction_complete": { + "message": "交易完成", + "description": "transaction complete header" + }, + "message": { + "message": "消息", + "description": "message header" + }, + "subscription_allowance": { + "message": "订阅额度", + "description": "Subscription settings title" + }, + "subscription_title": { + "message": "订阅", + "description": "Subscription title" + }, + "subscriptions": { + "message": "订阅", + "description": "Subscriptions title" + }, + "no_subscriptions": { + "message": "尚未订阅", + "description": "No subscriptions title" + }, + "no_subscriptions_description": { + "message": "您的未来订阅将显示在这里", + "description": "No subscriptions description" + }, + "subscribe_description": { + "message": "$APPNAME 请求设置一个定期付款的订阅", + "description": "Subscribe description" + }, + "subscription_description": { + "message": "管理自动提现额度", + "description": "Subscription setting description" + }, + "subscription_cancelled": { + "message": "订阅已取消", + "description": "The subscription has been successfully cancelled." + }, + "subscription_cancelled_error": { + "message": "订阅取消错误", + "description": "There was an error cancelling the subscription. Please try again." + }, + "subscription_deleted": { + "message": "订阅已删除", + "description": "The subscription has been successfully deleted." + }, + "subscription_delete_error": { + "message": "订阅删除错误", + "description": "There was an error deleting the subscription. Please try again." + }, + "subscription_add_failure": { + "message": "添加订阅失败", + "description": "Failed to add subscription error message" + }, + "transaction_history_title": { + "message": "交易历史", + "description": "Transaction History header" + }, + "subscription_application_address": { + "message": "应用地址", + "description": "付款地址" + }, + + "subscription_recurring_amount": { + "message": "定期付款金额", + "description": "Recurring payment amount" + }, + "auto_renewal": { + "message": "自动续订", + "description": "auto-renewal" + }, + "auto_pay": { + "message": "自动付款", + "description": "auto-pay" + }, + "confirm_subscription": { + "message": "确认订阅", + "description": "confirm subscription" + }, + "continue": { + "message": "继续", + "description": "Continue" + }, + + "end": { + "message": "结束", + "description": "end" + }, + "next_payment": { + "message": "下一次付款", + "description": "next payment" + }, + "start": { + "message": "开始", + "description": "start" + }, + "Quarterly": { + "message": "季度", + "description": "quarterly frequency" + }, + "Monthly": { + "message": "每月", + "description": "monthly frequency" + }, + "Weekly": { + "message": "每周", + "description": "weekly frequency" + }, + "Daily": { + "message": "每天", + "description": "daily frequency" + }, + "transactions": { + "message": "交易", + "descriptions": "Transactions title" + }, + "no_transactions": { + "message": "未找到交易", + "description": "No transactions message" + }, + "sent": { + "message": "已发送", + "description": "sent" + }, + "received": { + "message": "已收到", + "description": "received" + }, + "password_warning_title": { + "message": "密码强度警告", + "description": "Weak password warning title" + }, + "password_warning_description": { + "message": "您的密码目前较弱。您可以继续,但我们建议使用以下组合:", + "description": "Password warning description" + }, + "required": { + "message": "必需", + "description": "required" + }, + "recommended": { + "message": "推荐", + "description": "recommended" + }, + "add_wallet_error_message": { + "message": "请输入恢复短语或密钥文件,并输入 ArConnect 的密码后再继续。", + "description": "Error message if recovery section is left blank" + }, + "empty_password_error_message": { + "message": "请输入 ArConnect 的密码,而不是您正在导入的钱包密码。", + "description": "Error message if password section is left blank" + }, + "missing_recovery_error_message": { + "message": "请输入恢复短语或密钥文件后再继续。", + "description": "Error message if recovery phrase or key file is left blank" + }, + "incorrect_password_error_message": { + "message": "密码错误。请输入 ArConnect 的密码后再试,而不是您正在导入的钱包密码。", + "description": "Error message if password is incorrect" + }, + "mismatch_warning_title": { + "message": "检测到钱包不匹配。", + "description": "Title for wallet mismatch warning on sda" + }, + "mismatch_warning": { + "message": "您的钱包存在不匹配的位长度。您可以继续操作,但可能会遇到错误。交易可能会失败或表现异常。", + "description": "warning for mismatch wallet" } - \ No newline at end of file +}