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

503 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.

/**
* Traditional 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",
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: '新增',
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: "Already a member on another device? Use “Link device” instead — the bot can’t add a second key to the same account.",
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;