diff --git a/.changeset/ripe-wombats-warn.md b/.changeset/ripe-wombats-warn.md new file mode 100644 index 00000000000..ecbc181d84e --- /dev/null +++ b/.changeset/ripe-wombats-warn.md @@ -0,0 +1,5 @@ +--- +"thirdweb": patch +--- + +Add chinese locale support diff --git a/apps/playground-web/src/app/wallets/sign-in/components/LocaleFormControl.tsx b/apps/playground-web/src/app/wallets/sign-in/components/LocaleFormControl.tsx index 1fda6537dac..cbbfae34c85 100644 --- a/apps/playground-web/src/app/wallets/sign-in/components/LocaleFormControl.tsx +++ b/apps/playground-web/src/app/wallets/sign-in/components/LocaleFormControl.tsx @@ -47,6 +47,10 @@ const locales: { id: "fr_FR", name: "French", }, + { + id: "zh_CN", + name: "Chinese (Simplified)", + }, ]; export function LocaleFormControl(props: { diff --git a/packages/thirdweb/src/react/web/ui/ConnectWallet/locale/getConnectLocale.ts b/packages/thirdweb/src/react/web/ui/ConnectWallet/locale/getConnectLocale.ts index 8c6f2802104..b0eb9df8dd6 100644 --- a/packages/thirdweb/src/react/web/ui/ConnectWallet/locale/getConnectLocale.ts +++ b/packages/thirdweb/src/react/web/ui/ConnectWallet/locale/getConnectLocale.ts @@ -30,6 +30,9 @@ export async function getConnectLocale(localeId: LocaleId) { case "pt_BR": { return (await import("./br.js")).default; } + case "zh_CN": { + return (await import("./zh.js")).default; + } default: { return (await import("./en.js")).default; } diff --git a/packages/thirdweb/src/react/web/ui/ConnectWallet/locale/zh.ts b/packages/thirdweb/src/react/web/ui/ConnectWallet/locale/zh.ts new file mode 100644 index 00000000000..064daf9932e --- /dev/null +++ b/packages/thirdweb/src/react/web/ui/ConnectWallet/locale/zh.ts @@ -0,0 +1,121 @@ +import type { ConnectLocale } from "./types.js"; + +const connectLocaleZh: ConnectLocale = { + agreement: { + and: "和", + prefix: "连接即表示您同意", + privacyPolicy: "隐私政策", + termsOfService: "服务条款", + }, + backupWallet: "备份钱包", + buy: "购买", + confirmInWallet: "在钱包中确认", + connectAWallet: "连接钱包", + connectedToSmartWallet: "智能钱包", + connecting: "连接中", + continueAsGuest: "以访客身份继续", + copyAddress: "复制地址", + currentNetwork: "当前网络", + defaultButtonTitle: "连接", + defaultModalTitle: "登录", + disconnectWallet: "断开钱包连接", + getStarted: "开始使用", + goBackButton: "返回", + guest: "访客", + guestWalletWarning: + "这是一个临时访客钱包。如果您不想失去访问权限,请备份钱包", + id: "zh_CN", + installed: "已安装", + manageWallet: { + connectAnApp: "连接应用", + exportPrivateKey: "导出私钥", + linkedProfiles: "已关联配置文件", + linkProfile: "关联配置文件", + title: "管理钱包", + }, + networkSelector: { + addCustomNetwork: "添加自定义网络", + allNetworks: "全部", + categoryLabel: { + others: "所有网络", + popular: "热门", + recentlyUsed: "最近使用", + }, + failedToSwitch: "网络切换失败", + inputPlaceholder: "搜索网络或链 ID", + loading: "加载中", + mainnets: "主网", + testnets: "测试网", + title: "选择网络", + }, + newToWallets: "刚接触钱包?", + or: "或", + passkeys: { + linkPasskey: "添加通行密钥", + title: "通行密钥", + }, + payTransactions: "法币交易", + personalWallet: "个人钱包", + receive: "接收", + receiveFundsScreen: { + instruction: "复制地址以向此钱包发送资金", + title: "接收资金", + }, + recommended: "推荐", + requestTestnetFunds: "申请测试网资金", + send: "发送", + sendFundsScreen: { + amount: "金额", + insufficientFunds: "余额不足", + invalidAddress: "地址无效", + noTokensFound: "未找到代币", + searchToken: "搜索或粘贴代币地址", + selectTokenTitle: "选择代币", + sending: "发送中", + sendTo: "发送到", + submitButton: "发送", + successMessage: "交易成功", + title: "发送资金", + token: "代币", + transactionFailed: "交易失败", + transactionRejected: "交易被拒绝", + }, + signatureScreen: { + instructionScreen: { + disconnectWallet: "断开钱包连接", + instruction: "请在您的钱包中签署消息请求以继续", + signInButton: "登录", + title: "登录", + }, + signingScreen: { + approveTransactionInSafe: "在 Safe 中批准交易", + failedToSignIn: "登录失败", + inProgress: "等待确认", + prompt: "在您的钱包中签署签名请求", + promptForSafe: "在您的钱包中签署签名请求并在 Safe 中批准交易", + title: "登录中", + tryAgain: "重试", + }, + }, + signIn: "登录", + smartWallet: "智能钱包", + switchAccount: "切换账户", + switchingNetwork: "网络切换中", + switchNetwork: "切换网络", + switchTo: "切换到", + transactions: "交易", + viewAllTransactions: "查看所有交易", + viewFunds: { + title: "查看资产", + viewAssets: "查看资产", + viewNFTs: "查看NFT资产", + viewTokens: "查看代币", + }, + walletTransactions: "钱包交易", + welcomeScreen: { + defaultSubtitle: "连接钱包以开始使用", + defaultTitle: "您通往去中心化世界的门户", + }, +}; + +export default connectLocaleZh; diff --git a/packages/thirdweb/src/react/web/ui/types.ts b/packages/thirdweb/src/react/web/ui/types.ts index 99ef9963fbb..81aa2076c2a 100644 --- a/packages/thirdweb/src/react/web/ui/types.ts +++ b/packages/thirdweb/src/react/web/ui/types.ts @@ -9,4 +9,5 @@ export type LocaleId = | "de_DE" | "fr_FR" | "ru_RU" - | "pt_BR"; + | "pt_BR" + | "zh_CN"; diff --git a/packages/thirdweb/src/react/web/wallets/injected/locale/getInjectedWalletLocale.ts b/packages/thirdweb/src/react/web/wallets/injected/locale/getInjectedWalletLocale.ts index 1d265713d77..2a9f4fd37ad 100644 --- a/packages/thirdweb/src/react/web/wallets/injected/locale/getInjectedWalletLocale.ts +++ b/packages/thirdweb/src/react/web/wallets/injected/locale/getInjectedWalletLocale.ts @@ -27,6 +27,8 @@ export async function getInjectedWalletLocale( case "pt_BR": { return (await import("./br.js")).default; } + case "zh_CN": + return (await import("./zh.js")).default; default: return (await import("./en.js")).default; } diff --git a/packages/thirdweb/src/react/web/wallets/injected/locale/zh.ts b/packages/thirdweb/src/react/web/wallets/injected/locale/zh.ts new file mode 100644 index 00000000000..9bd457fde0f --- /dev/null +++ b/packages/thirdweb/src/react/web/wallets/injected/locale/zh.ts @@ -0,0 +1,27 @@ +import type { InjectedWalletLocale } from "./types.js"; + +/** + * @internal + */ +const injectedWalletLocaleZh = (wallet: string): InjectedWalletLocale => ({ + connectionScreen: { + failed: "连接失败", + inProgress: "等待用户确认", + instruction: `请在 ${wallet} 中接受连接请求`, + retry: "重试", + }, + download: { + android: "从 Google Play 下载", + chrome: "下载 Chrome 扩展", + iOS: "从 App Store 下载", + }, + getStartedLink: `没有 ${wallet}?`, + getStartedScreen: { + instruction: `扫描二维码下载 ${wallet} 应用`, + }, + scanScreen: { + instruction: `用 ${wallet} 扫描二维码连接`, + }, +}); + +export default injectedWalletLocaleZh; diff --git a/packages/thirdweb/src/react/web/wallets/shared/locale/getConnectLocale.ts b/packages/thirdweb/src/react/web/wallets/shared/locale/getConnectLocale.ts index 184235597d5..2ba3fefc981 100644 --- a/packages/thirdweb/src/react/web/wallets/shared/locale/getConnectLocale.ts +++ b/packages/thirdweb/src/react/web/wallets/shared/locale/getConnectLocale.ts @@ -27,6 +27,8 @@ export async function getInAppWalletLocale( case "pt_BR": { return (await import("./br.js")).default; } + case "zh_CN": + return (await import("./zh.js")).default; default: return (await import("./en.js")).default; } diff --git a/packages/thirdweb/src/react/web/wallets/shared/locale/zh.ts b/packages/thirdweb/src/react/web/wallets/shared/locale/zh.ts new file mode 100644 index 00000000000..28bbc9174b5 --- /dev/null +++ b/packages/thirdweb/src/react/web/wallets/shared/locale/zh.ts @@ -0,0 +1,58 @@ +import type { InAppWalletLocale } from "./types.js"; + +export default { + createPassword: { + confirmation: "我已保存密码", + failedToSetPassword: "设置密码失败", + inputPlaceholder: "输入密码", + instruction: "为账户设置密码。使用新设备登录时需要此密码。", + saveInstruction: "请妥善保存密码", + submitButton: "设置密码", + title: "创建密码", + }, + emailLoginScreen: { + enterCodeSendTo: "输入发送至您邮箱的验证码", + enterRecoveryCode: "输入您首次注册时邮箱收到的恢复码", + failedToSendCode: "发送验证码失败", + invalidCode: "验证码无效", + invalidCodeOrRecoveryCode: "验证码或恢复码无效", + newDeviceDetected: "检测到新设备", + resendCode: "重新发送验证码", + sendingCode: "正在发送验证码", + title: "登录", + verify: "验证", + }, + emailPlaceholder: "邮箱地址", + emailRequired: "请输入邮箱地址", + enterPassword: { + inputPlaceholder: "输入您的密码", + instruction: "输入您账户的密码", + submitButton: "验证", + title: "输入密码", + wrongPassword: "密码错误", + }, + invalidEmail: "邮箱地址无效", + invalidPhone: "手机号码无效", + linkWallet: "连接钱包", + loginAsGuest: "以访客身份继续", + maxAccountsExceeded: "账户数量已达上限。请联系应用开发者。", + or: "或", + passkey: "通行密钥", + phonePlaceholder: "手机号码", + phoneRequired: "手机号码为必填项", + signIn: "登录", + signInWithApple: "Apple", + signInWithDiscord: "Discord", + signInWithEmail: "邮箱登录", + signInWithFacebook: "Facebook", + signInWithGoogle: "Google", + signInWithPhone: "使用手机号登录", + signInWithWallet: "使用钱包登录", + socialLoginScreen: { + failed: "登录失败", + instruction: "请在弹窗中登录账户", + retry: "重试", + title: "登录", + }, + submitEmail: "继续", +} satisfies InAppWalletLocale; diff --git a/packages/thirdweb/src/react/web/wallets/smartWallet/locale/getSmartWalletLocale.ts b/packages/thirdweb/src/react/web/wallets/smartWallet/locale/getSmartWalletLocale.ts index 3231d821d6f..77b32b1099a 100644 --- a/packages/thirdweb/src/react/web/wallets/smartWallet/locale/getSmartWalletLocale.ts +++ b/packages/thirdweb/src/react/web/wallets/smartWallet/locale/getSmartWalletLocale.ts @@ -27,6 +27,8 @@ export async function getSmartWalletLocale( case "pt_BR": { return (await import("./br.js")).default; } + case "zh_CN": + return (await import("./zh.js")).default; default: return (await import("./en.js")).default; } diff --git a/packages/thirdweb/src/react/web/wallets/smartWallet/locale/zh.ts b/packages/thirdweb/src/react/web/wallets/smartWallet/locale/zh.ts new file mode 100644 index 00000000000..9285efc6de2 --- /dev/null +++ b/packages/thirdweb/src/react/web/wallets/smartWallet/locale/zh.ts @@ -0,0 +1,13 @@ +import type { SmartWalletLocale } from "./types.js"; + +const smartWalletLocalZh: SmartWalletLocale = { + connecting: "正在连接智能账户", + failedToConnect: "连接智能账户失败", + wrongNetworkScreen: { + failedToSwitch: "网络切换失败", + subtitle: "钱包未连接至所需网络", + title: "网络错误", + }, +}; + +export default smartWalletLocalZh;