From ef6d44d1121e71c65018ac3b14697d7187d06462 Mon Sep 17 00:00:00 2001 From: codytseng Date: Mon, 22 Dec 2025 18:13:17 +0800 Subject: [PATCH] feat: add Traditional Chinese language support --- AGENTS.md | 2 +- src/i18n/index.ts | 9 +- src/i18n/locales/zh-TW.ts | 580 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 589 insertions(+), 2 deletions(-) create mode 100644 src/i18n/locales/zh-TW.ts diff --git a/AGENTS.md b/AGENTS.md index 1e2a67a..2767e39 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -151,7 +151,7 @@ Jumble is a multi-language application. When you add new text content, please en - Translation files located in `src/i18n/locales/` - Using `react-i18next` for internationalization -- Supported languages: ar, de, en, es, fa, fr, hi, hu, it, ja, ko, pl, pt-BR, pt-PT, ru, th, zh +- Supported languages: ar, de, en, es, fa, fr, hi, hu, it, ja, ko, pl, pt-BR, pt-PT, ru, th, zh, zh-TW #### Adding New Language diff --git a/src/i18n/index.ts b/src/i18n/index.ts index e6fceaa..57b97d7 100644 --- a/src/i18n/index.ts +++ b/src/i18n/index.ts @@ -19,6 +19,7 @@ import pt_PT from './locales/pt-PT' import ru from './locales/ru' import th from './locales/th' import zh from './locales/zh' +import zh_TW from './locales/zh-TW' const languages = { ar: { resource: ar, name: 'العربية' }, @@ -37,7 +38,8 @@ const languages = { 'pt-PT': { resource: pt_PT, name: 'Português (Portugal)' }, ru: { resource: ru, name: 'Русский' }, th: { resource: th, name: 'ไทย' }, - zh: { resource: zh, name: '简体中文' } + zh: { resource: zh, name: '简体中文' }, + 'zh-TW': { resource: zh_TW, name: '繁體中文' } } as const export type TLanguage = keyof typeof languages @@ -62,6 +64,10 @@ i18n }, detection: { convertDetectedLanguage: (lng) => { + console.log('Detected language:', lng) + if (lng.startsWith('zh')) { + return ['zh', 'zh-CN', 'zh-SG'].includes(lng) ? 'zh' : 'zh-TW' + } const supported = supportedLanguages.find((supported) => lng.startsWith(supported)) return supported || 'en' } @@ -71,6 +77,7 @@ i18n i18n.services.formatter?.add('date', (timestamp, lng) => { switch (lng) { case 'zh': + case 'zh-TW': case 'ja': return dayjs(timestamp).format('YYYY年MM月DD日') case 'pl': diff --git a/src/i18n/locales/zh-TW.ts b/src/i18n/locales/zh-TW.ts new file mode 100644 index 0000000..ebc3eae --- /dev/null +++ b/src/i18n/locales/zh-TW.ts @@ -0,0 +1,580 @@ +export default { + translation: { + 'Welcome! 🥳': '來都來了', + About: '關於', + 'New Note': '發布新筆記', + Post: '發布筆記', + Home: '主頁', + 'Relay settings': '伺服器設定', + Settings: '設定', + SidebarRelays: '伺服器', + Refresh: '刷新列表', + Profile: '個人資料', + Logout: '登出', + Following: '關注', + followings: '關注', + reposted: '轉發', + 'just now': '剛剛', + 'minute ago_one': '{{count}} 分鐘前', + 'minute ago_other': '{{count}} 分鐘前', + 'n m': '{{n}}分', + 'hour ago_one': '{{count}} 小時前', + 'hour ago_other': '{{count}} 小時前', + 'n h': '{{n}}時', + 'day ago_one': '{{count}} 天前', + 'day ago_other': '{{count}} 天前', + 'n d': '{{n}}天', + date: '{{timestamp, date}}', + Follow: '關注', + Unfollow: '取消關注', + 'Follow failed': '關注失敗', + 'Unfollow failed': '取消關注失敗', + 'show new notes': '顯示新筆記', + 'loading...': '載入中...', + 'Loading...': '載入中...', + 'no more notes': '到底了', + 'reply to': '回覆', + reply: '回覆', + Reply: '回覆', + 'load more older replies': '載入更多早期回覆', + 'Write something...': '寫點什麼...', + Cancel: '取消', + Mentions: '提及', + 'Failed to post': '發布失敗', + 'Post successful': '發布成功', + 'Your post has been published': '您的筆記已發布', + Repost: '轉發', + Quote: '引用', + 'Copy event ID': '複製事件 ID', + 'Copy user ID': '複製使用者 ID', + 'View raw event': '檢視原始事件', + Like: '按讚', + 'switch to light theme': '切換到淺色主題', + 'switch to dark theme': '切換到深色主題', + 'switch to system theme': '切換到系統主題', + Note: '筆記', + note: '筆記', + "username's following": '{{username}} 的關注', + "username's used relays": '{{username}} 使用的伺服器', + "username's muted": '{{username}} 封鎖的使用者', + Login: '登入', + 'Follows you': '關注了你', + 'Relay Settings': '伺服器設定', + 'Relay set name': '伺服器組名', + 'Add a new relay set': '新增新的伺服器組', + Add: '新增', + 'n relays': '{{n}} 個伺服器', + Rename: '重新命名', + 'Copy share link': '複製分享連結', + Delete: '刪除', + 'Relay already exists': '伺服器已存在', + 'invalid relay URL': '無效的伺服器位址', + 'Add a new relay': '新增新的伺服器', + back: '返回', + 'Lost in the void': '迷失在虛空中', + 'Carry me home': '帶我回家', + 'no replies': '暫無回覆', + 'Reply to': '回覆', + Search: '搜尋', + 'The relays you are connected to do not support search': '您連接的伺服器不支援搜尋', + 'Show more...': '檢視更多...', + 'All users': '所有使用者', + 'Display replies': '顯示回覆', + Notes: '筆記', + Replies: '回覆', + Notifications: '通知', + 'no more notifications': '到底了', + 'Using private key login is insecure. It is recommended to use a browser extension for login, such as alby, nostr-keyx or nos2x. If you must use a private key, please set a password for encryption at minimum.': + '使用私鑰登入不安全。建議使用瀏覽器擴充功能登入,如 alby、nostr-keyx 或 nos2x。如果必須使用私鑰,請至少設定一個密碼進行加密。', + 'Login with Browser Extension': '瀏覽器擴充功能登入', + 'Login with Bunker': 'Bunker 登入', + 'Login with Private Key': '私鑰登入', + 'reload notes': '重新載入筆記', + 'Logged in Accounts': '已登入帳戶', + 'Add an Account': '新增帳戶', + 'More options': '更多選項', + 'Add client tag': '新增客戶端標籤', + 'Show others this was sent via Jumble': '告訴別人這是透過 Jumble 發送的', + 'Are you sure you want to logout?': '確定要登出嗎?', + 'relay sets': '伺服器組', + edit: '編輯', + Languages: '語言', + Theme: '主題', + System: '系統', + Light: '淺色', + Dark: '深色', + Temporary: '臨時', + 'Choose a relay set': '選擇一個伺服器組', + 'Switch account': '切換帳戶', + Pictures: '圖片', + 'Picture note': '圖片筆記', + 'A special note for picture-first clients like Olas': + '一種可以在圖片優先客戶端(如 Olas)中顯示的特殊筆記', + 'Picture note requires images': '圖片筆記需要有圖片', + Relays: '伺服器', + Image: '圖片', + Normal: '普通', + 'R & W': '讀寫', + Read: '唯讀', + Write: '只寫', + 'Pull relay sets': '拉取伺服器組', + 'Select the relay sets you want to pull': '選擇要拉取的伺服器組', + 'No relay sets found': '未找到伺服器組', + 'Pull n relay sets': '拉取 {{n}} 個伺服器組', + Pull: '拉取', + 'Select all': '全選', + 'Relay Sets': '伺服器組', + Mailbox: '信箱', + 'Read & Write Relays': '讀寫伺服器', + 'read relays description': + '讀取伺服器用於尋找與您有關的事件。其他使用者會將想要您看到的事件發布到您的讀取伺服器,例如回覆、按讚轉發……', + 'write relays description': + '寫入伺服器用於發布您的事件。其他使用者會從您的寫入伺服器尋找您發布的事件。', + 'read & write relays notice': '讀取伺服器和寫入伺服器的數量都應盡量保持在 2 到 4 個之間。', + "Don't have an account yet?": '還沒有帳戶?', + 'or simply generate a private key': '或者簡單產生一個私鑰', + 'This is a private key. Do not share it with anyone. Keep it safe and secure. You will not be able to recover it if you lose it.': + '這是私鑰,請勿與他人分享。請妥善保管,否則將無法找回。', + Edit: '編輯', + Save: '儲存', + 'Display Name': '暱稱', + Bio: '簡介', + 'Nostr Address (NIP-05)': 'Nostr 位址 (NIP-05)', + 'Invalid NIP-05 address': '無效的 NIP-05 位址', + 'Copy private key': '複製私鑰', + 'Enter the password to decrypt your ncryptsec': '輸入密碼以解密您的 ncryptsec', + Back: '返回', + 'password (optional): encrypt nsec': '密碼(可選):加密 nsec', + 'optional: encrypt nsec': '可選:加密 nsec', + password: '密碼', + 'Sign up': '註冊', + 'Save to': '儲存到', + 'Enter a name for the new relay set': '輸入新伺服器組的名稱', + 'Save to a new relay set': '儲存到新伺服器組', + Mute: '封鎖', + Muted: '已封鎖', + Unmute: '取消封鎖', + 'Unmute user': '取消封鎖使用者', + 'Append n relays': '追加 {{n}} 個伺服器', + Append: '追加', + 'Select relays to append': '選擇要追加的伺服器', + 'calculating...': '計算中...', + 'Calculate optimal read relays': '計算最佳讀取伺服器', + 'Login to set': '登入後設定', + 'Please login to view following feed': '請登入以檢視關注動態', + 'Send only to r': '只發送到 {{r}}', + 'Send only to these relays': '只發送到這些伺服器', + Explore: '探索', + 'Search relays': '搜尋伺服器', + relayInfoBadgeAuth: '需登入', + relayInfoBadgeSearch: '支援搜尋', + relayInfoBadgePayment: '需付費', + Operator: '管理員', + Contact: '聯絡方式', + Software: '軟體', + Version: '版本', + 'Random Relays': '隨機伺服器', + randomRelaysRefresh: '換一批', + 'Explore more': '探索更多', + 'Payment page': '付款頁面', + 'Supported NIPs': '支援的 NIP', + 'Open in a': '在 {{a}} 中開啟', + 'Cannot handle event of kind k': '無法處理類型為 {{k}} 的事件', + 'Sorry! The note cannot be found 😔': '抱歉!找不到該筆記 😔', + 'This user has been muted': '該使用者已被封鎖', + Wallet: '錢包', + Sats: '聰', + sats: '聰', + 'Zap to': '打閃給', + 'Zap n sats': '打閃 {{n}} 聰', + zapComment: '附言', + 'Default zap amount': '預設打閃金額', + 'Default zap comment': '預設打閃附言', + 'Lightning Address (or LNURL)': '閃電位址(或 LNURL)', + 'Quick zap': '快速打閃', + 'If enabled, you can zap with a single click. Click and hold for custom amounts': + '如果啟用,您單擊即可打閃。長按以設定自訂金額', + All: '全部', + Reactions: '互動', + Zaps: '打閃', + 'Enjoying Jumble?': '喜歡 Jumble 嗎?', + 'Your donation helps me maintain Jumble and make it better! 😊': + '您的捐贈幫助我維護 Jumble 並使其更好!😊', + 'Earlier notifications': '更早的通知', + 'Temporarily display this note': '臨時顯示此筆記', + buttonFollowing: '已關注', + 'Are you sure you want to unfollow this user?': '確定要取消關注此使用者嗎?', + 'Recent Supporters': '最近的支持者', + 'Seen on': '來自', + 'Temporarily display this reply': '臨時顯示此回覆', + 'Note not found': '未找到該筆記', + 'no more replies': '沒有更多回覆了', + 'Relay sets': '伺服器組', + 'Favorite Relays': '收藏的伺服器', + "Following's Favorites": '關注人的收藏', + 'no more relays': '沒有更多伺服器了', + 'Favorited by': '收藏自', + 'Post settings': '發布設定', + 'Media upload service': '媒體上傳服務', + 'Choose a relay': '選擇一個伺服器', + 'no relays found': '未找到伺服器', + video: '影片', + 'Show n new notes': '顯示 {{n}} 條新筆記', + YouTabName: '與你', + Bookmark: '收藏', + 'Remove bookmark': '取消收藏', + 'no bookmarks found': '暫無收藏', + 'no more bookmarks': '到底了', + Bookmarks: '收藏', + 'Show more': '顯示更多', + General: '常規', + Autoplay: '自動播放', + 'Enable video autoplay on this device': '在此裝置上啟用影片自動播放', + 'Paste or drop media files to upload': '支援貼上或拖放媒體檔案進行上傳', + Preview: '預覽', + 'You are about to publish an event signed by [{{eventAuthorName}}]. You are currently logged in as [{{currentUsername}}]. Are you sure?': + '您即將發布一條由 [{{eventAuthorName}}] 簽名的事件。您目前以 [{{currentUsername}}] 登入。確定嗎?', + 'Platinum Sponsors': '白金贊助商', + From: '來自', + 'Comment on': '評論於', + 'View on njump.me': '在 njump.me 上檢視', + 'Hide content from untrusted users': '隱藏不受信任使用者的內容', + 'Only show content from your followed users and the users they follow': + '僅顯示您關注的使用者及其關注的使用者的內容', + 'Followed by': '關注者', + 'Mute user privately': '悄悄封鎖', + 'Mute user publicly': '公開封鎖', + Quotes: '引用', + 'Lightning Invoice': '閃電發票', + 'Bookmark failed': '收藏失敗', + 'Remove bookmark failed': '取消收藏失敗', + Translation: '翻譯', + Balance: '餘額', + characters: '字元', + jumbleTranslateApiKeyDescription: + '您可以在任何支援 LibreTranslate 的地方使用此 API key。服務位址是 {{serviceUrl}}', + 'Top up': '充值', + 'Will receive: {n} characters': '將獲得:{{n}} 字元', + 'Top up {n} sats': '充值 {{n}} 聰', + 'Minimum top up is {n} sats': '最低充值金額為 {{n}} 聰', + Service: '服務', + 'Reset API key': '重設 API key', + 'Are you sure you want to reset your API key? This action cannot be undone.': + '您確定要重設您的 API key?此操作無法復原。', + Warning: '警告', + 'Your current API key will become invalid immediately, and any applications using it will stop working until you update them with the new key.': + '您目前的 API key 將立即失效,任何使用它的應用程式將停止工作,直到您用新 key 更新它們。', + 'Service address': '服務位址', + Pay: '支付', + interactions: '互動', + notifications: '通知', + 'Show untrusted {type}': '顯示不受信任的{{type}}', + 'Hide untrusted {type}': '隱藏不受信任的{{type}}', + 'Currently hiding {type} from untrusted users.': '目前隱藏來自不受信任使用者的{{type}}。', + 'Currently showing all {type}.': '目前顯示所有{{type}}。', + 'Click continue to show all {type}.': '點擊繼續顯示所有{{type}}。', + 'Click continue to hide {type} from untrusted users.': + '點擊繼續隱藏來自不受信任使用者的{{type}}。', + 'Trusted users include people you follow and people they follow.': + '受信任的使用者包括您關注的人和他們關注的人。', + Continue: '繼續', + 'Successfully updated mute list': '成功更新封鎖列表', + 'No pubkeys found from {url}': '在 {{url}} 中未找到 pubkeys', + 'Translating...': '翻譯中...', + Translate: '翻譯', + 'Show original': '顯示原文', + Website: '網站', + 'Hide untrusted notes': '隱藏不受信任的筆記', + 'Open in another client': '在其他客戶端開啟', + Community: '社群', + Group: '群組', + 'Live event': '直播', + Article: '文章', + Unfavorite: '取消收藏', + 'Recommended relays': '推薦伺服器', + 'Blossom server URLs': 'Blossom 伺服器位址', + 'You need to add at least one blossom server in order to upload media files.': + '您需要新增至少一個 Blossom 伺服器才能上傳媒體檔案。', + 'Recommended blossom servers': '推薦的 Blossom 伺服器', + 'Enter Blossom server URL': '輸入 Blossom 伺服器 URL', + Preferred: '首選', + 'Multiple choice (select one or more)': '多選(選擇一個或多個)', + Vote: '投票', + '{{number}} votes': '{{number}} 次投票', + 'Total votes': '總票數', + 'Poll has ended': '投票已結束', + 'Poll ends at {{time}}': '投票結束時間:{{time}}', + 'Load results': '載入結果', + 'This is a poll note.': '這是一個投票帖子。', + 'Unlike regular notes, polls are not widely supported and may not display on other clients.': + '與普通帖子不同,投票功能暫時沒有得到廣泛的支援,可能無法在其他客戶端中顯示。', + 'Option {{number}}': '選項 {{number}}', + 'Add Option': '新增選項', + 'Allow multiple choices': '允許多選', + 'End Date (optional)': '結束日期(可選)', + 'Clear end date': '清除結束日期', + 'Relay URLs (optional, comma-separated)': '中繼伺服器 URL(可選,逗號分隔)', + 'Remove poll': '移除投票', + 'Refresh results': '刷新結果', + Poll: '投票', + Media: '媒體', + 'Republish to ...': '重新發布到 ...', + 'Successfully republish to your write relays': '成功重新發布到您的寫入伺服器', + 'Failed to republish to your write relays: {{error}}': '重新發布到您的寫入伺服器失敗:{{error}}', + 'Successfully republish to relay set: {{name}}': '成功重新發布到伺服器組:{{name}}', + 'Failed to republish to relay set: {{name}}. Error: {{error}}': + '重新發布到伺服器組:{{name}} 失敗。錯誤:{{error}}', + 'Successfully republish to relay: {{url}}': '成功重新發布到伺服器:{{url}}', + 'Failed to republish to relay: {{url}}. Error: {{error}}': + '重新發布到伺服器:{{url}} 失敗。錯誤:{{error}}', + 'Write relays': '寫入伺服器', + 'No more reactions': '沒有更多互動了', + 'No reactions yet': '暫無互動', + 'No more zaps': '沒有更多打閃了', + 'No zaps yet': '暫無打閃', + 'No more reposts': '沒有更多轉發了', + 'No reposts yet': '暫無轉發', + Reposts: '轉發', + FollowListNotFoundConfirmation: + '未找到關注列表。你想建立一個新的嗎?如果你之前已經關注了使用者,請不要確認,因為此操作會導致你遺失之前的關注列表。', + MuteListNotFoundConfirmation: + '未找到封鎖列表。你想建立一個新的嗎?如果你之前已經封鎖了使用者,請不要確認,因為此操作會導致你遺失之前的封鎖列表。', + 'Show NSFW content by default': '預設顯示 NSFW 內容', + 'Custom emoji management': '自訂表情符號管理', + 'After changing emojis, you may need to refresh the page': '更改表情符號後,您可能需要刷新頁面', + 'Too many read relays': '讀取中繼過多', + 'Too many write relays': '寫入中繼過多', + 'You have {{count}} read relays. Most clients only use 2-4 relays, setting more is unnecessary.': + '您有 {{count}} 個讀取中繼。大多數客戶端只使用 2-4 個中繼,設定更多是不必要的。', + 'You have {{count}} write relays. Most clients only use 2-4 relays, setting more is unnecessary.': + '您有 {{count}} 個寫入中繼。大多數客戶端只使用 2-4 個中繼,設定更多是不必要的。', + 'Optimize Relay Settings': '最佳化中繼設定', + 'Your current relay configuration may not be optimal. This could make it difficult for others to find your posts and may result in incomplete notifications.': + '您目前的中繼配置可能不是最佳的。這可能導致其他人難以找到您發布的內容,也可能導致您無法獲取完整的通知列表。', + 'Optimize Now': '立即最佳化', + 'Maybe Later': '稍後處理', + "Don't remind me again": '不再提醒', + Posts: '帖子', + Articles: '文章', + Highlights: '精選', + Polls: '投票', + 'Voice Posts': '語音帖子', + 'Photo Posts': '圖片帖子', + 'Video Posts': '影片帖子', + 'Select All': '全選', + 'Clear All': '清空', + 'Set as default filter': '設為預設過濾器', + Apply: '套用', + Reset: '重設', + 'Share something on this Relay': '在此伺服器上分享點什麼', + 'Try deleting this note': '嘗試刪除此筆記', + 'Deletion request sent to {{count}} relays': '刪除請求已發送到 {{count}} 個伺服器', + 'Suitable Relays': '適合的伺服器', + 'People, keywords, or relays': '使用者、關鍵詞或伺服器', + 'Hide content mentioning muted users': '隱藏提及已封鎖使用者的內容', + 'This note mentions a user you muted': '此筆記提及了您已封鎖的使用者', + Filter: '過濾器', + 'mentioned you in a note': '在筆記中提及了您', + 'quoted your note': '引用了您的筆記', + 'voted in your poll': '在您的投票中投票', + 'reacted to your note': '對您的筆記做出了反應', + 'reposted your note': '轉發了您的筆記', + 'zapped your note': '打閃了您的筆記', + 'zapped you': '給您打閃', + 'Mark as read': '標記為已讀', + Report: '檢舉', + 'Successfully report': '檢舉成功', + 'Failed to report': '檢舉失敗', + nudity: '色情內容', + malware: '惡意軟體', + profanity: '褻瀆言論', + illegal: '違法內容', + spam: '垃圾訊息', + other: '其他', + 'Notification list style': '通知列表樣式', + 'See extra info for each notification': '檢視每條通知的詳細資訊', + 'See more notifications at a glance': '一目了然地檢視更多通知', + Detailed: '詳細', + Compact: '緊湊', + 'Submit Relay': '提交伺服器', + Homepage: '主頁', + 'Proof of Work (difficulty {{minPow}})': '工作量證明(難度 {{minPow}})', + 'via {{client}}': '來自 {{client}}', + 'Auto-load media': '自動載入媒體檔案', + Always: '始終', + 'Wi-Fi only': '僅WiFi', + Never: '從不', + 'Click to load image': '點擊載入圖片', + 'Click to load media': '點擊載入音視訊', + 'Click to load YouTube video': '點擊載入 YouTube 影片', + '{{count}} reviews': '{{count}} 條評價', + 'Write a review': '寫評價', + 'No reviews yet. Be the first to write one!': '還沒有評價,成為第一個評價的人吧!', + 'View more reviews': '檢視更多評價', + 'Failed to review': '評價失敗', + 'Write a review and pick a star rating': '寫下評價並選擇星級評分', + Submit: '提交', + 'Reviews for {{relay}}': '關於 {{relay}} 的評價', + 'No relays selected': '未選擇伺服器', + 'Post to': '發布到', + 'Write relays and {{count}} other relays': '寫入伺服器和其他 {{count}} 個伺服器', + '{{count}} relays': '{{count}} 個伺服器', + 'Republishing...': '正在重新發布...', + 'Trending Notes': '熱門筆記', + 'Connected to': '已連接到', + 'Disconnect Wallet': '中斷錢包連接', + 'Are you absolutely sure?': '您確定嗎?', + 'You will not be able to send zaps to others.': '您將無法向他人發送打閃。', + Disconnect: '中斷連接', + 'Start with a Rizful Vault': '從 Rizful 錢包開始', + 'or other wallets': '或其他錢包', + 'Rizful Vault': 'Rizful 錢包', + 'Rizful Vault connected!': 'Rizful 錢包已連接!', + 'You can now use your Rizful Vault to zap your favorite notes and creators.': + '您現在可以使用您的 Rizful 錢包為您喜歡的筆記和創作者打閃。', + 'Your Lightning Address': '您的閃電位址', + 'New to Rizful?': '第一次使用 Rizful?', + 'Sign up for Rizful': '註冊 Rizful', + 'If you already have a Rizful account, you can skip this step.': + '如果您已經有一個 Rizful 帳戶,可以跳過此步驟。', + 'Get your one-time code': '獲取一次性代碼', + 'Get code': '獲取代碼', + 'Connect to your Rizful Vault': '連接到您的 Rizful 錢包', + 'Paste your one-time code here': '將您的一次性代碼貼上到此處', + Connect: '連接', + 'Set up your wallet to send and receive sats!': '設定你的錢包以發送和接收 sats!', + 'Set up': '去設定', + Pinned: '已置頂', + Unpin: '取消置頂', + Unpinning: '取消置頂中', + 'Pinning...': '置頂中...', + 'Pinned!': '已置頂!', + 'Failed to pin: {{error}}': '置頂失敗:{{error}}', + 'Unpinning...': '取消置頂中...', + 'Unpinned!': '已取消置頂!', + 'Failed to unpin: {{error}}': '取消置頂失敗:{{error}}', + 'Unpin from profile': '從個人資料取消置頂', + 'Pin to profile': '置頂到個人資料', + Appearance: '外觀', + 'Pure Black': '純黑', + Default: '預設', + Red: '紅色', + Orange: '橙色', + Amber: '琥珀色', + Yellow: '黃色', + Lime: '青檸色', + Green: '綠色', + Emerald: '翡翠色', + Teal: '藍綠色', + Cyan: '青色', + Sky: '天空色', + Blue: '藍色', + Indigo: '靛藍色', + Violet: '紫羅蘭色', + Purple: '紫色', + Fuchsia: '紫紅色', + Pink: '粉色', + Rose: '玫瑰色', + 'Primary color': '主色調', + Layout: '版面配置', + 'Two-column': '雙欄', + 'Single-column': '單欄', + Reviews: '評價', + Extension: '擴充功能', + Remote: '遠端', + 'Encrypted Key': '加密私鑰', + 'Private Key': '私鑰', + 'Welcome to Jumble': '歡迎來到 Jumble', + 'Jumble is a client focused on browsing relays. Get started by exploring interesting relays or login to view your following feed.': + 'Jumble 是一個專注於瀏覽伺服器的客戶端。從探索有趣的伺服器開始,或者登入檢視你的關注動態。', + 'Explore Relays': '探索伺服器', + 'Choose a feed': '選擇一個動態', + 'and {{x}} others': '和其他 {{x}} 人', + selfZapWarning: 'Jumble 對您給自己打賞所發生的事情概不負責。風險自負。😉⚡', + 'Emoji Pack': '表情包', + 'Emoji pack added': '表情包已新增', + 'Add emoji pack failed': '新增表情包失敗', + 'Emoji pack removed': '表情包已移除', + 'Remove emoji pack failed': '移除表情包失敗', + Added: '已新增', + 'Emoji Packs': '表情包', + 'My Packs': '我的表情包', + 'Adding...': '新增中...', + 'Removing...': '移除中...', + Reload: '重新載入', + 'Request to Join Relay': '申請加入中繼器', + 'Leave Relay': '離開中繼器', + Leave: '離開', + 'Are you sure you want to leave this relay?': '您確定要離開此中繼器嗎?', + 'Join request sent successfully': '加入請求已成功發送', + 'Failed to send join request': '發送加入請求失敗', + 'Leave request sent successfully': '離開請求已成功發送', + 'Failed to send leave request': '發送離開請求失敗', + 'Enter an invite code if you have one. Otherwise, leave it blank to send a request.': + '如果您有邀請碼,請輸入。否則,留空以發送請求。', + 'Invite Code (Optional)': '邀請碼(可選)', + 'Enter invite code': '輸入邀請碼', + 'Sending...': '發送中...', + 'Send Request': '發送請求', + 'You can get an invite code from a relay member.': '您可以從中繼器成員獲取邀請碼。', + 'Enter the invite code you received from a relay member.': '輸入您從中繼器成員處獲得的邀請碼。', + 'Get Invite Code': '獲取邀請碼', + 'Share this invite code with others to invite them to join this relay.': + '將此邀請碼分享給他人以邀請他們加入此中繼器。', + 'Invite Code': '邀請碼', + Copy: '複製', + 'This invite code can be used by others to join the relay.': '此邀請碼可供他人用於加入中繼器。', + 'No invite code available from this relay.': '此中繼器沒有可用的邀請碼。', + Close: '關閉', + 'Failed to get invite code from relay': '從中繼器獲取邀請碼失敗', + 'Failed to get invite code': '獲取邀請碼失敗', + 'Invite code copied to clipboard': '邀請碼已複製到剪貼簿', + 'Favicon URL': '網站圖示 URL', + 'Filter out onion relays': '過濾洋蔥中繼', + 'Click to load X post': '點擊載入 X 帖子', + 'View Nostr comments': '檢視 Nostr 評論', + 'Search for notes': '搜尋筆記', + 'Search for hashtag': '搜尋話題標籤', + 'Go to note': '跳轉到筆記', + 'Go to relay': '跳轉到中繼器', + 'View discussions about this': '檢視關於此內容的討論', + 'Open link': '開啟連結', + 'View Nostr discussions': '檢視 Nostr 討論', + 'Optimal relays': '最佳中繼器', + "Successfully republish to optimal relays (your write relays and mentioned users' read relays)": + '成功重新發布到最佳中繼器(你的寫入中繼器和被提及使用者的讀取中繼器)', + 'Failed to republish to optimal relays: {{error}}': '重新發布到最佳中繼器失敗:{{error}}', + 'External Content': '外部內容', + Highlight: '精選', + 'Optimal relays and {{count}} other relays': '最佳中繼器和其他 {{count}} 個中繼器', + 'Likely spam account (Trust score: {{percentile}}%)': + '疑似垃圾帳號(信任分數:{{percentile}}%)', + 'Suspicious account (Trust score: {{percentile}}%)': '可疑帳號(信任分數:{{percentile}}%)', + 'n users': '{{count}} 位使用者', + 'View Details': '檢視詳情', + 'Follow Pack Not Found': '未找到關注包', + 'Follow pack not found': '未找到關注包', + Users: '使用者', + Feed: '動態', + 'Follow Pack': '關注包', + '24h Pulse': '24h 動態', + 'Load earlier': '載入更早', + 'Last 24 hours': '最近 24 小時', + 'Last {{count}} days': '最近 {{count}} 天', + notes: '筆記', + 'Quick reaction': '快速按讚', + 'If enabled, you can react with a single click. Click and hold for more options': + '啟用後,您可以透過單擊進行按讚。長按以獲取更多選項', + 'Quick reaction emoji': '快速按讚表情', + 'Select emoji': '選擇表情', + 'NSFW content display': 'NSFW 內容顯示', + 'Hide completely': '完全隱藏', + 'Show but hide content': '顯示但隱藏內容', + 'Show directly': '直接顯示', + 'Click to view': '點擊檢視', + 'Special Follow': '特別關注', + 'Unfollow Special': '取消特別關注', + 'Personal Feeds': '個人訂閱', + 'Relay Feeds': '中繼訂閱' + } +}