SkateSpots/src/i18n/zh-CN/drift.ts

507 lines
23 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Simplified Chinese (简体中文) — drift fragment: the keys added after the main batches.
*
* These were the last keys missing from this locale (nav search, the first-run
* checklist, marketplace states/escrow copy, the clothing craft, the trust UI,
* the marketplace guidelines, the weather legend and the native Cordn/MLS chat).
* The default export is the nested dictionary; `index.ts` deep-merges it over
* the composed batch fragments (a shallow spread would replace a whole namespace
* and drop its sibling keys).
*
* Skate/brand vocabulary stays English or transliterated (Spot, Park, Crew,
* Stash, The Lab, Nostr, Lightning, sats, Cashu, MLS, Cordn, Staircase), matching
* the other batches.
*/
type Dict = { [key: string]: string | Dict };
const drift: Dict = {
nav: {
searchLanguages: '搜索语言…',
noLanguages: '未找到语言',
},
mapPage: {
searchSuggestPlaces: '地点',
},
mapUi: {
firstRunTitle: '开始使用',
firstRunTip: '点击任意标记即可探索。无需设置——附近滑板点一触即达。',
firstRunAddSpot: '添加你的第一个滑板点',
firstRunJoinCrew: '加入一个 Crew',
firstRunStartCrew: '创建你的 Crew',
firstRunWallet: '设置你的钱包',
forecastDays: '{{count}} 天预报',
},
spotUi: {
forecastDays: '{{count}} 天预报',
},
marketUi: {
trades: {
stateRevoked: '已撤销',
stateVerifying: '验证中',
},
loadFailed: '无法连接中继。请检查你的网络连接并重试。',
statusPending: '待处理',
offers: {
closeDeal: '完成交易',
loadFailed: '无法加载报价。请检查你的网络连接并重试。',
},
pay: {
nonSats: '此报价以 {{currency}} 计价。应用内支付仅支持 sats。请直接与卖家结算。',
unsupported: '此支付码(Cashu 请求)尚不支持。请向卖家索要 Lightning 发票或地址。',
},
escrowRequest: {
lockedNotSent: '资金已锁定在托管中并保存在此设备上,但请求未发送。重新打开该商品重试。请勿再次支付。',
mintLabel: 'Mint(资金锁定处)',
sellerMintHint: '卖家偏好此 Mint;锁在这里的资金对他们最易领取。',
mintHint: '托管存放在此 Mint。卖家在此领取,因此请选择双方都信任的一个。',
noMints: '没有可用的 Mint',
p2pkUnsupported: '此 Mint 未声明支持 P2PK(NUT-11),因此无法在此锁定托管。请选择其他 Mint。',
},
},
labUi: {
offerClothing: '提供服装',
tabClothing: '服装',
empty: {
clothingTitle: '还没有服装设计师',
clothingBody: '成为第一个为这个圈子提供定制服装、团队套装和服饰的人。',
},
craftFields: {
sizing: '尺码范围',
samples: '样品 / 打样',
customization: '定制',
},
},
socialUi: {
coordinator: {
ourDefaultTitle: 'SkateSpots 协调器',
ourDefaultDesc: 'SkateSpots 在 relay.skate-spots.org 运行一个协调器。默认使用它,或运行你自己的——协调器只能看到密文和元数据,永远看不到你的消息。',
useOurs: '使用 SkateSpots 协调器',
},
crewCoordinator: {
encryptedChat: '加密聊天',
privateChatName: '私密聊天',
privateChatDesc: '通过协调器的前向保密群聊(MLS)。',
privateChatDescFull: '私密聊天由管理员创建一次,然后成员加入。',
chatRowDesc: 'Crew 中的每个人——封存到每位成员的密钥(NIP-17)。',
openChat: '打开',
setUpChat: '设置',
joinChat: '加入',
checking: '检查中…',
openInAnotherApp: '在其他应用中打开',
openInCordnWeb: 'Cordn(网页)',
openCordnGroup: '打开 Crew 聊天',
copyForStaircase: '复制给 Staircase',
},
dms: {
refresh: '刷新',
crews: 'Crew',
crewFounder: '创始人',
crewMember: '成员',
crewOpen: '打开',
crewSetUp: '设置',
},
form: {
cordnGroup: 'Cordn 群组',
cordnGroupHint: '可选:粘贴来自 Staircase 或 Cordn 网页的群组链接。你的 Crew 随后将获得真正的端到端 MLS 聊天,托管在我们的协调器上。',
},
bell: {
dmsUnread: '{{count}} 条新的加密消息',
messagesAndCrews: '消息和 Crew 聊天',
},
},
settingsUi: {
loginDialog: {
welcomeSubtitleBrowse: "注册或登录 — 或继续浏览。",
extensionCard: "浏览器扩展",
signerCard: "签名应用",
secretKeyLink: "改用私钥",
whereBunker: "在哪里获取 bunker?",
},
settingsPage: {
trust: '信任',
trustSub: '来源与显示',
},
},
walletUi: {
trust: {
mute: '屏蔽',
muted: '已屏蔽',
mutedDesc: '你将不会看到他们的内容。',
unmute: '取消屏蔽',
unmuted: '已取消屏蔽',
unmutedDesc: '他们的内容将重新显示。',
unmuteFailed: '无法取消屏蔽。请重试。',
muteFailed: '无法屏蔽。请重试。',
loginToMute: '登录以屏蔽。',
attributedNetwork: '来自你网络中的人',
attributedProviderHouse: '来自社区信任提供方',
attributedProviderCustom: '来自你选择的提供方',
howItWorks: '信任如何运作',
flaggedNoticeTitle: '被可信滑手举报',
flaggedNoticeDesc: '请小心。网络中的可信人员举报了此账号。',
flaggedReporterFollow: '你关注的 {{count}} 人',
flaggedReporterNetwork: '你网络中的 {{count}} 人',
flaggedReporterOther: '其他 {{count}} 个账号',
flaggedReport: '举报',
flaggedDismiss: '忽略',
bucketVerified: '已验证',
bucketUnknown: '未知',
bucketFlagged: '已标记',
bucketVerifiedDesc: '你网络中的某人为此账号担保。',
bucketUnknownDesc: '你网络中还没有人为这个账号担保。',
bucketFlaggedDesc: '可信人员举报了此账号。',
reportedByTrusted: '被 {{count}} 位可信人员举报',
},
},
trustUi: {
alertsTitle: '网络警报',
alertsDesc: '你关注的、被可信人员举报或屏蔽的账号。',
alertsEmpty: '没有警报。我们会检查你关注的账号是否有可信举报。',
alertsReported: '被 {{count}} 位可信人员举报',
alertsMuted: '被 {{count}} 位可信人员屏蔽',
alertsIgnore: '忽略',
alertsUnfollow: '取消关注',
alertsLogin: '登录以查看你关注账号的警报。',
providerTitle: '提供方',
providerDesc: '分数来自你选择的提供方。社区提供方是默认值。',
useCommunity: '使用社区提供方',
setProvider: '设置提供方',
customPubkeyPlaceholder: '提供方 npub 或十六进制 pubkey',
customRelayPlaceholder: 'wss://relay.example.com',
invalidProvider: '请输入有效的 npub 或 64 位十六进制 pubkey,以及一个 wss:// 中继。',
publishFailed: '无法发布提供方。请重试。',
providerSaved: '提供方已更新。',
loggedOutProvider: '登录以选择提供方。',
showMarks: '显示信任标记',
showMarksDesc: '已验证和未知标记。举报始终显示。',
sourceLabel: '来源',
sourceHouse: '社区信任提供方',
sourceCustom: '你的提供方',
loggedOut: '登录以选择你自己的信任提供方。',
seoTitle: '信任如何运作',
seoDescription: 'SkateSpots 如何显示信任:三种状态、分数从何而来,以及为什么缺席不是不信任。',
title: '信任如何运作',
intro: '这里的信任是一种信号,不是判决。它来自你认识的人,或来自你选择的提供方。我们不会在全球范围内给人排名。',
statesTitle: '三种状态',
verifiedTitle: '已验证',
verifiedDesc: '你网络中的某人为这个账号担保:朋友的朋友,或你选择的提供方。',
unknownTitle: '未知',
unknownDesc: '还没有人担保。每个新账号都从这里开始。',
flaggedTitle: '已标记',
flaggedDesc: '可信人员举报了这个账号。这是提醒你仔细查看的警告,不是任何事情的证据。',
absenceTitle: '没有徽章不代表不信任',
absenceDesc: '大多数账号什么都不显示。这意味着你网络中还没有人为他们担保,而不是出了问题。绝不要把缺失的标记理解为负面。',
sourceTitle: '谁来计算',
sourceDesc: '默认情况下我们使用你自己的网络。你也可以选择一个通过 Nostr(NIP-85)发布签名分数的信任提供方,或关闭显示。已标记始终显示,因为它是安全信号。',
endorsementTitle: '存在不等于背书',
endorsementDesc: '已验证标记意味着有人担保,并不意味着这个人是好人。标记意味着可信人员举报了他们,并不意味着他们有罪。决定前请查看详情。',
povTitle: '这取决于视角',
povDesc: '分数是相对于观察者的。来自一个提供方或一个人的排名无法与另一个相比,我们也绝不把它当作客观事实来呈现。',
settingsCta: '在设置中管理',
},
marketTerms: {
link: '市场准则',
seoTitle: '市场准则',
seoDescription: 'SkateSpots 装备刊登如何运作:点对点、买家自负,以及规则。',
title: '市场准则',
intro: 'SkateSpots 是一个点对点的装备板。你直接与对方交易:我们不保管资金、不发货、也不处理纠纷。',
howTitle: '如何运作',
howBody: '刊登装备,通过私信联系卖家,然后直接结算(现金、Lightning 或换物)。没有购物车或结账。',
rulesTitle: '不允许的内容',
rulesBody: '禁止非法、危险或成人内容;禁止毒品、武器、假货或赃物。刊登内容请保持在滑板装备及相关物品上。',
respectTitle: '保持尊重',
respectBody: '禁止辱骂、骚扰、威胁或仇恨。版主可以隐藏刊登或账号。',
trustTitle: '信任是参考,不是保证',
trustBody: '验证标记和交易信誉是来自网络的信号,不是承诺。交易前请自行核查。',
trustLink: '信任如何运作',
privacyLink: '什么会离开你的设备',
safetyTitle: '安全交易',
safetyBody: '当面交接请约在公共场所,邮寄交易请使用托管或诚意定金,绝不要在应用外转账。',
moderationTitle: '管理是温和且可逆的',
moderationBody: '被隐藏的内容仍留在中继上,可以恢复;人与人之间的纠纷由你们自己解决。',
},
labOptions: {
clothing: {
service: {
tees: 'T 恤',
hoodies: '连帽衫 & 卫衣',
pants: '长裤 & 短裤',
jackets: '夹克 & 外套',
kits: '队服 & 球衣',
caps: '帽子 & 毛线帽',
socks: '袜子',
accessories: '包袋 & 配饰',
footwear: '鞋类 & 鞋子',
patches: '布贴 & 贴花',
griptape: '砂纸 & 板面服饰',
onepiece: '独一无二 / 升级再造',
},
serviceDesc: {
tees: '定制 T 恤和上衣',
hoodies: '连帽衫、圆领衫和运动裤',
pants: '工装裤、工装短裤和短裤',
jackets: '教练夹克、防风外套和工作夹克',
kits: '队服、球衣和制服',
caps: '帽子、毛线帽和头饰',
socks: '中筒袜和针织品',
accessories: '包袋、腰带和小物',
footwear: '定制鞋和鞋类',
patches: '刺绣布贴和贴花',
griptape: '砂纸艺术和板面服饰',
onepiece: '单件和升级再造服装',
},
method: {
screenprint: '丝网印刷',
dtg: 'DTG / 数码直喷',
embroidery: '刺绣',
cutsew: '裁剪缝制',
sublimation: '热升华',
heattransfer: '热转印 / 烫画',
garmentdye: '成衣染色',
knit: '针织',
patchwork: '拼布',
allover: '满版印花',
},
material: {
cotton: '棉',
heavyweight: '重磅',
organic: '有机 / 可持续',
fleece: '抓绒',
denim: '牛仔',
canvas: '帆布',
nylon: '尼龙 / 功能性',
wool: '美利奴 / 羊毛',
leather: '皮革',
recycled: '再生 / 库存布',
},
},
},
becomeRolesUi: {
clothing: {
seoTitle: '成为服装设计师 - SkateSpots',
seoDescription: '为这个圈子提供定制服装、团队套装和服饰。',
heading: '服装设计师',
tagline: '为这个圈子提供定制服装、团队套装和服饰',
noun: '服装设计师',
rateLabel: '费率',
portfolioLabel: '店铺 / 作品集链接',
sectionWhatYouMake: '你做什么',
sectionHowYouMake: '你怎么做',
sectionMaterials: '材料',
minimumPlaceholder: '例如 10 件',
turnaroundPlaceholder: '例如 2-3 周',
sizingPlaceholder: '例如 XS-3XL / 量身定制',
samplesHelper: '在正式生产前你提供样品或打样吗?',
customizationPlaceholder: '例如名字、号码、图案',
},
},
weatherUi: {
updated: '已更新',
refresh: '刷新',
unavailable: '天气不可用。',
retry: '重试',
sunrise: '日出',
sunset: '日落',
legendTitle: '天气评分',
legendWeatherOnly: '仅天气',
},
cordnUi: {
shareInvite: '邀请',
shareInviteText: '加入 {{crew}} — 团队私密聊天',
inviteCopied: '邀请链接已复制',
title: '私密聊天',
subtitle: 'Crew 成员之间的端到端加密(MLS)。协调器只路由密文和元数据——它永远看不到消息内容。',
notLoggedIn: '登录以使用 Crew 的私密聊天。',
membersOnly: '只有 Crew 成员才能打开私密聊天。',
connecting: '连接中…',
noCoordinator: '此 Crew 尚未配置协调器。',
noGroupAdmin: '此 Crew 的私密聊天尚未创建。',
noGroupMember: '你还没有加入此 Crew 的私密聊天。',
create: '创建私密聊天',
requestJoin: '请求加入',
requestAgain: "Request again",
requestHandled: "Request handled",
copyCordnLink: "Copy Cordn link",
cordnWebCaveat: "Cordn web may stall after sign-in; the in-app join is more reliable.",
checkInvite: '检查邀请',
requested: '请求已发送——Crew 管理员会批准。',
noInvite: '还没有等待中的邀请。请管理员批准你的请求。',
placeholder: '给 Crew 发消息…',
send: '发送',
refresh: '刷新',
requests: '加入请求',
checkRequests: '检查请求',
approve: '添加',
approveTitle: "批准此设备?",
approveDesc: "将 {{name}} 添加到此加密房间?该设备将能读取新消息。",
noRequests: '没有待处理的加入请求。',
inviteHint: '目前只有你在这个聊天中——Crew 成员可以点击“请求加入”,然后你在这里批准他们。',
memberCount: '群组中有 {{count}} 人',
you: '你',
groupRef: '群组链接',
copyRef: '复制',
copied: '已复制',
attachImage: '附加图片',
uploading: '上传中…',
uploadFailed: '无法上传图片。',
bannerTitle: '此 Crew 还没有私密聊天',
bannerBody: '为你的 Crew 设置端到端加密(MLS)聊天——成员从标签页加入。',
bannerCta: '设置',
ready: '已连接 · MLS',
errorPrefix: '无法连接协调器',
interactiveHint: '你的签名器会为每个操作请求批准——按需使用刷新和发送。',
setupDevice: "设置此设备",
setupDeviceBody: "为此设备分配私密聊天专用的密钥。创始人批准一次即可。",
waitingApproval: "正在等待创始人批准…",
waitingApprovalManual: "正在等待创始人。批准后请点击“检查邀请”。",
onboardingFounder1: "开始私密聊天。",
onboardingFounder2: "批准请求加入的成员。",
onboardingFounder3: "与你的 Crew 私密聊天。",
onboardingMember1: '请求加入',
onboardingMember2: "创始人会批准你的设备。",
onboardingMember3: "你已加入——消息已加密。",
encryptedNote: "只有 Crew 成员可以阅读;协调器只转发加密消息。",
advanced: "高级",
coordinator: "协调器",
keyPackage: "密钥包",
keyPackageReady: "已在此设备上就绪",
keyPackageMissing: "尚未在此设备上设置",
members: "成员",
roleFounder: "创始人",
roleAdmin: "管理员",
makeAdmin: "设为管理员",
removeAdmin: "取消管理员",
adminAdded: "成员已提升为管理员。",
adminRemoved: "已移除管理员角色。",
roleUpdateFailed: "无法更新角色,请重试。",
addReaction: "添加回应",
deleteMessage: "删除消息",
deleteMessageConfirm: "为所有人删除这条消息?",
readBy: "{{count}} 人已读",
joinRequestTitle: "私聊请求",
joinRequestFor: "加入 {{crew}} 的新请求",
joinRequestReview: "查看请求",
joinRequestDismiss: "忽略请求",
roleMember: "成员",
qrTitle: "扫描加入私密聊天",
qrHint: "Crew 成员用手机摄像头扫描。链接会打开“私密聊天”标签页。",
sendFailed: "发送失败——点击重试。",
sending: "发送中…",
sent: "已发送",
retry: "重试",
errorUnreachable: "无法连接私密聊天。请检查网络连接。",
errorDetails: "详情",
unreachable: "无法连接",
dismiss: "关闭",
linkDevice: "关联此设备",
linkDeviceTitle: "关联另一台设备",
linkDeviceHint: "请在已在房间中的设备上扫描此代码。",
linkDeviceNote: "此代码包含公钥包。你的私钥会留在新设备上。",
waitingDevice: "正在等待另一台设备…",
addDevice: "添加设备",
deviceLinked: "设备已添加。",
deviceLinkFailed: "无法添加该设备。",
removeMemberConfirm: "要将 {{name}} 移出私密聊天吗?该设备将失去访问权限。",
removeMemberFailed: "无法移除该成员。",
reply: "回复",
},
communityUi: {
link: "社区",
title: "社区聊天",
subtitle: "提问、分享反馈,与 SkateSpots 社区交流 — 端到端加密。",
heading: "SkateSpots 社区",
eyebrow: "问题与反馈",
seoTitle: "SkateSpots 社区聊天",
seoDescription: "问题、反馈与社区交流 — 端到端加密。",
notLoggedIn: "登录后即可加入社区聊天。",
noGroupAdmin: "社区房间尚未创建。",
noGroupMember: "你还没有加入社区房间。",
waitingApproval: "正在等待社区机器人或管理员批准…",
waitingApprovalManual: "手动模式。批准后请点按“检查邀请”。",
noInvite: "还没有邀请。机器人通常在一分钟内批准——之后请点按“检查邀请”。",
pendingRequests: "{{count}} 个加入请求正在等待",
pendingRequestsDesc: "机器人通常会自动批准。如果卡住了,请打开下面的房间并点按“检查请求”。",
botMissing: "The community bot isn’t in this room right now, so an admin will review join requests.",
secondDeviceHint: "已在其他设备上加入?使用“关联此设备”直接交接,或用此设备再次申请加入。",
create: "创建社区房间",
setupDeviceBody: "这会为此设备提供社区房间的密钥,管理员或机器人会批准一次。",
onboardingFounder1: "创建社区房间。",
onboardingFounder2: "批准社区机器人和新成员。",
onboardingFounder3: "回答问题并收集反馈。",
onboardingMember1: "申请加入社区房间。",
onboardingMember2: "管理员或社区机器人批准你的设备。",
onboardingMember3: "提问、分享反馈,或者只是打个招呼。",
encryptedNote: "只有房间成员可以阅读;协调器只转发加密消息。",
shareInviteText: "加入 SkateSpots 社区聊天",
qrTitle: "扫描加入社区聊天",
qrHint: "用手机相机扫描,打开社区聊天并申请加入。",
owner: "所有者",
botName: "社区机器人",
howItWorks: "新设备会由管理员或社区机器人批准一次。你加入之前发送的消息对你不可见。",
feedbackNote: "欢迎提问和反馈。请保持友善 — 这是共享房间。",
},
translateUi: {
title: '消息翻译',
translate: '翻译',
translating: '正在翻译…',
showOriginal: '显示原文',
showTranslation: '显示译文',
translatedFrom: '译自 {{language}}',
failed: '翻译失败,请重试。',
unsupported: '该语言对暂不可用。',
pilotNote: '试点:仅限英语 ↔ 西班牙语。',
autoTranslate: '自动翻译消息',
autoTranslateDesc: '将收到的消息翻译成你的语言。在此设备上运行,不会发送任何内容。',
privacy: '翻译在此设备上运行。你的消息永远不会离开设备。首次使用时会下载语言模型。',
},
newsletterDraftUi: {
weeklyDraftReady: '每周草稿已就绪',
loadDraft: '加载草稿',
hidePreview: '隐藏预览',
untitled: '未命名',
},
signerPromptUi: {
title: "Amber 提示预算",
body: "Amber 会在每次签名操作时请求批准。读取和后台解密都在本地进行,不会弹出提示。发送群组私信时每位收件人会请求一次(加密 + 签名),Cordn 可能针对每个协调者请求询问。对于频繁的私聊或车队聊天,用 bunker 或本地密钥会更安静。",
bunker: "把 Amber 留给高价值签名,或者在预计会长聊时改用 bunker。",
},
globalSearchUi: {
open: "搜索",
placeholder: "搜索 Spot、Crew、活动、装备…",
hint: "⌘K / Ctrl+K",
recent: "最近",
pages: "页面",
spots: "Spot",
shops: "商店",
crews: "Crews",
events: "活动",
gear: "装备",
skaters: "滑手",
signers: "签名器",
trust: "信任",
noResults: "未找到“{{query}}”的结果。",
},
marketplaceExtrasUi: {
savedSearches: "已保存的搜索",
saveSearch: "保存搜索",
searchName: "为此搜索命名…",
deleteSearch: "删除已保存的搜索",
safetyTitle: "安全买卖",
safetyMeet: "在公共场所见面,付款前先检查装备。",
safetyKeys: "切勿分享助记词或私钥。交易请留在应用内聊天中。",
safetyEscrow: "寄送交易请先阅读托管条款:Cashu 托管仅限原生应用,且尚未验证。",
safetyMore: "阅读市场指南",
offerTemplates: "快捷留言",
offerDiscount: "能优惠 10% 吗?",
offerSwap: "可以考虑交换吗?",
offerPickup: "我这周可以自取。",
offerShipping: "可以合并运费吗?",
},
placesUi: {
eventDetail: {
eventPass: "活动通行证"
},
},
};
export default drift;