diff --git a/apps/landing/public/locales/zh-Hant/blog.json b/apps/landing/public/locales/zh-Hant/blog.json new file mode 100644 index 000000000..1b3a4a776 --- /dev/null +++ b/apps/landing/public/locales/zh-Hant/blog.json @@ -0,0 +1,5 @@ +{ + "recentPosts": "最新貼文", + "blogTitle": "Rallly - 部落格", + "blogDescription": "關於 Rallly 的新聞、更新與公告。" +} diff --git a/apps/landing/public/locales/zh-Hant/common.json b/apps/landing/public/locales/zh-Hant/common.json new file mode 100644 index 000000000..2b23c9042 --- /dev/null +++ b/apps/landing/public/locales/zh-Hant/common.json @@ -0,0 +1,27 @@ +{ + "login": "登入", + "links": "一覽", + "blog": "部落格", + "discussions": "討論區", + "footerCredit": "由 @imlukevella 製作", + "footerSponsor": "此專案由用戶自治,請考慮透過 捐贈 支持本專案。", + "language": "語言", + "poweredBy": "技術支持", + "privacyPolicy": "隱私權政策", + "support": "技術支援", + "cookiePolicy": "Cookie政策", + "termsOfUse": "使用條款", + "volunteerTranslator": "協助我們翻譯這個網站", + "notFoundTitle": "404:頁面不存在", + "notFoundDescription": "我們無法找到您要查找的頁面。", + "goToHome": "回到首頁", + "goToApp": "前往APP", + "pricing": "定價", + "bestDoodleAlternative": "最好的 Doodle 替代品", + "freeSchedulingPoll": "免費的日程投票", + "findATime": "找個時間見面", + "getStarted": "開始使用", + "availabilityPoll": "日程投票", + "solutions": "解決方案", + "howItWorks": "Rallly的運作方式" +} diff --git a/apps/landing/public/locales/zh-Hant/home.json b/apps/landing/public/locales/zh-Hant/home.json new file mode 100644 index 000000000..4323c34cb --- /dev/null +++ b/apps/landing/public/locales/zh-Hant/home.json @@ -0,0 +1,40 @@ +{ + "createPageLikeThis": "僅需幾秒即可建立一個這樣的頁面!", + "noLoginRequired": "無需登入", + "headline": "捨棄繁瑣的郵件來回溝通", + "subheading": "簡化您的日程安排流程並節省時間", + "pcmagQuote": "「可在極短的時間內建立日程投票」", + "hubspotQuote": "「最適合大型組織的日程投票解決方案」", + "goodfirmsQuote": "「Rallly的獨特之處在於其簡潔性,且操作簡單。」", + "popsciQuote": "「如果您希望保持RSVP簡單,Rallly是完美的選擇。」", + "ericQuote": "「如果您主要使用電子郵件安排日程,我強烈鼓勵您試用Rallly簡化排程任務,使工作更加輕鬆、有條理。」", + "viaTrustpilot": "引述自 Trustpilot", + "ericJobTitle": "麻省理工學院行政助理", + "statsUsersRegistered": "超過 45,000 位用戶使用", + "statsPollsCreated": "已建立超過10萬個日程投票", + "statsLanguagesSupported": "支援10種以上語言", + "hint": "無需登入即可免費使用", + "doodleAlternative": "最好的 Doodle 替代品", + "doodleAlternativeDescription": "Rallly 是人人引頸盼望的 Doodle 替代品。成千上萬的用戶已改用 Rallly,享受專業、零廣告、直覺操作的使用者介面帶來的日程排程體驗。 ", + "availabilityPollCta": "建立日程投票", + "availabilityPollMetaTitle": "日程投票 | 以 Rallly 簡化日程安排流程", + "availabilityPollMetaDescription": "以 Rallly 簡化會議、活動的日程安排流程,並考慮每人的行程狀況,帶來流暢、高效率的日程安排體驗。", + "availabilityPollTitle": "日程投票", + "availabilityPollDescription": "很難找到每個人都滿意的會議時間?使用「日程投票」來簡化您的排程,這是一個強大的工具,旨在簡化和優化您的活動和會議規劃。", + "createAPoll": "建立日程投票", + "doodleAlternativeMetaTitle": "免費且最棒的 Doodle 替代品 | Rallly", + "doodleAlternativeMetaDescription": "正在尋找 Doodle 的替代品?試試 Rallly!免費、易用且不需要帳戶", + "findATimeMetaTitle": "找個時間見面 | Rallly", + "findATimeMetaDescription": "在幾秒鐘內建立會議投票,無需登入。", + "findATimeTitle": "找個時間見面", + "findATimeDescription": "建立日程投票,並讓您的參與者們投票決定最佳的會議時間。", + "createASchedulingPoll": "建立日程投票", + "freeSchedulingPollMetaTitle": "免費日程投票 | Rallly", + "freeSchedulingPollMetaDescription": "在幾秒鐘內建立日程投票。適合籌辦會議、活動、研討會、運動隊……等。", + "freeSchedulingPollTitle": "正在尋找免費的日程投票工具?", + "freeSchedulingPollDescription": "Rallly 可協助您建立美觀、易用的日程投票,以便您找到下次活動的最佳時間。", + "new": "新", + "metaTitle": "Rallly - 安排團體會議", + "metaDescription": "通過日程投票找出最合適的日期或時間。免費的 Doodle 替代品。", + "selfHostingBlog": "本地部署 Rallly 3.0" +} diff --git a/apps/landing/public/locales/zh-Hant/pricing.json b/apps/landing/public/locales/zh-Hant/pricing.json new file mode 100644 index 000000000..438974371 --- /dev/null +++ b/apps/landing/public/locales/zh-Hant/pricing.json @@ -0,0 +1,30 @@ +{ + "pricing": "定價", + "pricingDescription": "無需登入即可免費使用。", + "freeForever": "永久免費", + "planPro": "Pro版", + "annualBillingDescription": "每月,按年計費", + "monthlyBillingDescription": "每月", + "upgrade": "升級", + "faq": "常見問題", + "canUseFree": "我可以免費使用 Rallly 嗎?", + "whyUpgrade": "為什麼要升級?", + "howToUpgrade": "如何升級至付費方案?", + "howToUpgradeAnswer": "如需升級,請前往您的 帳單 並點擊 升級。", + "cancelSubscription": "如何取消訂閱?", + "cancelSubscriptionAnswer": "您可以隨時前往 帳單 取消訂閱。取消訂閱後,您仍可存取付費方案的功能直至計費週期結束。在那之後,您將降級為免費方案。", + "billingPeriodMonthly": "按月計費", + "billingPeriodYearly": "按年計費", + "planFreeDescription": "適合一般用戶", + "limitedAccess": "取得所有功能", + "pollsDeleted": "當投票轉為未啟用時,投票將自動被刪除", + "planProDescription": "適合專業用戶", + "accessAllFeatures": "取得所有功能", + "getEarlyAccess": "搶先使用新功能", + "canUseFreeAnswer2": "是的,Rallly的大部分功能都是免費的,且對多數用戶來說,可能永遠不需要支付任何費用。然而,有些功能僅開放付費用戶使用,這些付費功能旨在幫助您充分發揮 Rallly 的潛力。", + "whyUpgradeAnswer2": "如果您經常使用或工作需要 Rallly,請可考慮升級至Pro方案。目前的定價為早期支持者優惠且很快就會調整。現在升級,您將能取得高品質的日程安排工具並永久保有目前定價,不受未來定價調整影響。", + "upgradeNowSaveLater": "現在就升級,未來省一筆", + "earlyAdopterDescription": "作為早期支持者,您將保有現在的定價且不會被未來的定價調整影響。", + "planFree": "免費", + "keepPollsIndefinitely": "無限期保留投票" +} diff --git a/apps/web/public/locales/zh-Hant/app.json b/apps/web/public/locales/zh-Hant/app.json new file mode 100644 index 000000000..3ba1c8c77 --- /dev/null +++ b/apps/web/public/locales/zh-Hant/app.json @@ -0,0 +1,232 @@ +{ + "12h": "12小時制", + "24h": "24小時制", + "addTimeOption": "新增時間選項", + "alreadyRegistered": "已有帳戶? 立即登入", + "applyToAllDates": "套用至所有日期", + "areYouSure": "你確定嗎?", + "cancel": "取消", + "changeName": "重新命名", + "settings": "進階設定", + "changeNameDescription": "替該位參與者命名。", + "changeNameInfo": "這不會影響任何現有的投票。", + "comments": "留言", + "continue": "下一步", + "copied": "複製成功", + "createAnAccount": "建立帳戶", + "createdBy": "由 {name} 發起", + "createPoll": "建立投票", + "delete": "刪除", + "deleteDate": "刪除日期", + "deletedPoll": "已刪除投票", + "deletedPollInfo": "該投票不存在。", + "deleteParticipant": "刪除 {name}?", + "deleteParticipantDescription": "您確定要刪除此位參與者嗎?此操作無法復原。", + "deletePoll": "刪除投票", + "deletePollDescription": "與此投票相關的所有資料都將被刪除!此操作無法復原。", + "deletingOptionsWarning": "您正在刪除參與者已投票的選項,他們的投票也將被刪除!", + "description": "描述", + "descriptionPlaceholder": "嗨各位,請選擇你們方便的日期!", + "editDetails": "編輯投票詳情", + "editOptions": "編輯投票選項", + "editVotes": "編輯投票", + "email": "電子郵件", + "emailNotAllowed": "無法使用此電子郵件地址", + "emailPlaceholder": "jessie.smith@example.com", + "exportToCsv": "輸出至 CSV", + "forgetMe": "忘記我", + "guest": "訪客", + "ifNeedBe": "如果需要", + "location": "地點", + "locationPlaceholder": "Joe 的咖啡店", + "login": "登入", + "loginWith": "以 {provider} 登入", + "logout": "登出", + "manage": "管理", + "mixedOptionsDescription": "您無法在同個投票中同時使用日期及時間選項。您想保留哪一個?", + "mixedOptionsKeepDates": "保留日期選項", + "mixedOptionsKeepTimes": "保留時間選項", + "mixedOptionsTitle": "請稍候… 🤔", + "monthView": "月", + "name": "姓名", + "namePlaceholder": "杰西 · 史密斯", + "newParticipant": "新參與者", + "newParticipantFormDescription": "請填寫以下表格來送出您的投票。", + "newPoll": "新日程投票", + "nextMonth": "下個月", + "no": "否", + "noDatesSelected": "尚未選擇日期", + "noVotes": "沒有人投給此選項", + "optional": "選填", + "preferences": "偏好設定", + "previousMonth": "上個月", + "register": "註冊", + "requiredString": "“{name}” 為必填", + "response": "回覆", + "save": "儲存", + "saveInstruction": "選擇您有空的時間,並點擊 {action}", + "sendFeedback": "意見回饋", + "specifyTimes": "指定時間", + "specifyTimesDescription": "為每個選項設定開始和結束時間", + "stepSummary": "步驟 {current} / {total}", + "submit": "送出", + "timeFormat": "時間格式", + "timeZone": "時區", + "title": "標題", + "titlePlaceholder": "月度會議", + "today": "今天", + "userAlreadyExists": "使用該電子郵件地址的用戶已經存在", + "userNotFound": "使用該電子郵件地址的用戶不存在", + "validEmail": "請輸入有效的電子郵件地址", + "verificationCodeHelp": "沒有收到電子郵件?請檢查您的垃圾信箱。", + "verificationCodePlaceholder": "輸入6位驗證碼", + "verificationCodeSent": "驗證碼已發送至 {email} 更改電子郵件地址", + "verifyYourEmail": "驗證您的電子郵件地址", + "startOfWeek": "每週開始日", + "weekView": "週", + "wrongVerificationCode": "您的驗證碼不正確或已過期", + "yes": "有空", + "you": "您", + "yourName": "輸入您的姓名…", + "common_language": "語言", + "common_support": "技術支援", + "errors_notFoundTitle": "404:頁面不存在", + "errors_notFoundDescription": "我們無法找到您要查找的頁面。", + "errors_goToHome": "回到首頁", + "optionCount": "{count, plural, other {# 個選項}}", + "participantCount": "{count, plural, other {# 位參與者}}", + "addComment": "新增留言", + "profile": "個人資料", + "polls": "日程投票", + "showMore": "顯示更多…", + "timeZoneSelect__defaultValue": "選擇時區…", + "timeZoneSelect__noOption": "未找到選項", + "timeZoneSelect__inputPlaceholder": "搜尋…", + "poweredByRallly": "由 {name} 提供支持", + "participants": "參與者", + "language": "語言", + "languageDescription": "變更您的語言偏好", + "dateAndTime": "日期和時間", + "profileDescription": "設定您的個人資料", + "dates": "日期", + "menu": "選單", + "useLocaleDefaults": "使用本地預設值", + "inviteParticipantsDescription": "複製並分享此連結即可開始收集來自您的參與者的回覆。", + "inviteLink": "邀請連結", + "inviteParticipantLinkInfo": "任何收到此連結的人都可以參與你的投票。", + "support": "技術支援", + "billing": "帳單", + "guestPollAlertDescription": "<0>建立一個帳戶 或 <1>登入 來認領這個投票。", + "guestPollAlertTitle": "如果您清除 cookies,您將喪失管理此投票的權限!", + "attendeeCount": "{count, plural, other {# 位參與者}}", + "notificationsValue": "通知:{value}", + "notificationsOn": "啟用", + "notificationsOff": "關閉", + "pollStatusOpen": "啟用中", + "pollStatusPaused": "暫停中", + "pollStatusClosed": "已完成", + "reopenPoll": "重新打開投票", + "resumePoll": "繼續", + "pausePoll": "暫停", + "finishPoll": "作出最終決定", + "finalize": "最終決定", + "allDay": "全天", + "permissionDenied": "未授權", + "permissionDeniedDescription": "如果您是投票的建立者,請登入以存取您的投票", + "loginDifferent": "切換用戶", + "share": "分享", + "timeShownIn": "目前以 {timeZone} 時區顯示", + "editDetailsDescription": "更改活動詳情", + "finalizeDescription": "選擇一個最終日期", + "notificationsGuestTooltip": "建立一個帳戶或登入以開啟通知", + "planFree": "免費版", + "dateAndTimeDescription": "變更您的日期和時間偏好", + "createdTime": "建立於 {relativeTime}", + "permissionDeniedParticipant": "如果您不是投票的建立者,您應該前往邀請頁面。", + "goToInvite": "前往邀請頁面", + "planPro": "Pro版", + "Billing": "帳單", + "subscriptionUpdatePayment": "更新付款資訊", + "subscriptionCancel": "取消訂閱", + "billingStatus": "帳單狀態", + "billingStatusDescription": "管理您的訂閱和帳單詳情", + "freeForever": "永久免費", + "annualBillingDescription": "每月,按年計費", + "billingStatusState": "狀態", + "billingStatusActive": "啟用中", + "billingStatusPaused": "暫停中", + "billingStatusDeleted": "已取消", + "endDate": "結束日期", + "dueDate": "下次付款時間", + "billingStatusPlan": "方案", + "billingPeriod": "週期", + "billingPeriodMonthly": "按月計費", + "billingPeriodYearly": "按年計費", + "monthlyBillingDescription": "每月", + "plan_extendedPollLife": "無限期保留投票", + "becomeATranslator": "協助翻譯", + "noPolls": "沒有投票", + "noPollsDescription": "立即建立一個新日程投票!", + "event": "活動", + "describeYourEvent": "描述您的活動內容", + "calendar": "行事曆", + "selectPotentialDates": "為您的活動選擇日期或時間", + "optionalLabel": "(選填)", + "calendarHelp": "您的投票中必須包含至少一個選項", + "editSettings": "編輯進階設定", + "commentPlaceholder": "留言 (任何人都可看見此留言)", + "disableComments": "關閉留言區", + "clockPreferences": "時間偏好", + "clockPreferencesDescription": "設定您的偏好時區和時間格式", + "featureRequest": "提出新功能建議", + "bugReport": "回報問題", + "getSupport": "取得支援", + "feedback": "回饋", + "duplicate": "複製", + "duplicateDescription": "基於此投票建立一個新投票", + "duplicateTitleLabel": "標題", + "duplicateTitleDescription": "小提醒:為您的投票建立一個獨一無二的標題!", + "proFeature": "Pro 版功能", + "upgradeOverlaySubtitle2": "請升級至Pro版以使用此功能,這將幫助我們維持Rallly的營運 :)", + "upgrade": "升級", + "notToday": "下次再說", + "continueAsGuest": "以訪客身份繼續", + "scrollLeft": "向左滾動", + "scrollRight": "向右滾動", + "shrink": "收縮", + "expand": "展開", + "activeSubscription": "感謝您訂閱 Rallly Pro。您可從帳單頁面中管理您的訂閱與帳單詳情。", + "billingPortal": "帳單頁面", + "supportDescription": "需要任何幫助?", + "supportBilling": "如果您需要任何幫助,請聯絡我們。", + "contactSupport": "與客服聯繫", + "planFreeDescription": "適合一般用戶", + "currentPlan": "目前方案", + "limitedAccess": "取得所有功能", + "pollsDeleted": "當投票轉為未啟用時,投票將自動被刪除", + "planProDescription": "適合專業用戶", + "accessAllFeatures": "取得所有功能", + "earlyAccess": "搶先使用新功能", + "earlyAdopterDescription": "作為早期支持者,您將保有現在的定價且不會被未來的定價調整影響。", + "upgradeNowSaveLater": "現在就升級,未來省一筆", + "savePercent": "省下 {percent}%", + "priceIncreaseSoon": "定價很快就會調整。", + "lockPrice": "立即升級以便永久享有本定價。", + "features": "取得所有免費及付費版功能!", + "noAds": "零廣告", + "supportProject": "支持這個專案", + "pricing": "定價", + "pleaseUpgrade": "請升級至Pro版以使用本功能", + "pollSettingsDescription": "自訂您的日程投票的細節", + "requireParticipantEmailLabel": "要求參與者必填電子郵件地址", + "hideParticipantsLabel": "向參與者隱藏其他參與者名單", + "hideScoresLabel": "在參與者完成投票前隱藏結果", + "authErrorTitle": "登入失敗", + "authErrorDescription": "登入時發生錯誤,請再試一次。", + "authErrorCta": "前往登入", + "continueAs": "以下列身份繼續", + "finalizeFeature": "作出最終決定", + "duplicateFeature": "複製", + "pageMovedDescription": "重新導向至 {newUrl}", + "notRegistered": "沒有帳戶? 立即註冊" +} diff --git a/apps/web/public/locales/zh/app.json b/apps/web/public/locales/zh/app.json index c311eae64..9ee8cf67a 100644 --- a/apps/web/public/locales/zh/app.json +++ b/apps/web/public/locales/zh/app.json @@ -32,7 +32,7 @@ "editVotes": "編輯投票", "email": "電子郵件", "emailNotAllowed": "無法使用此電子郵件地址", - "emailPlaceholder": "jessie.smith@example.com", + "emailPlaceholder": "jessi.smith@example.com", "exportToCsv": "輸出至 CSV", "forgetMe": "忘記我", "guest": "訪客", diff --git a/apps/web/src/utils/dayjs.tsx b/apps/web/src/utils/dayjs.tsx index 986968506..43b48c85d 100644 --- a/apps/web/src/utils/dayjs.tsx +++ b/apps/web/src/utils/dayjs.tsx @@ -138,6 +138,11 @@ const dayjsLocales: Record< timeFormat: "hours24", import: () => import("dayjs/locale/zh"), }, + "zh-Hant": { + weekStart: 0, + timeFormat: "hours24", + import: () => import("dayjs/locale/zh-tw"), + }, vi: { weekStart: 1, timeFormat: "hours24", diff --git a/packages/languages/languages.json b/packages/languages/languages.json index c66f925fd..098b3c9f3 100644 --- a/packages/languages/languages.json +++ b/packages/languages/languages.json @@ -19,5 +19,6 @@ "fi": "Suomi", "sv": "Svenska", "tr": "Türkçe", - "zh": "汉语" + "zh": "简体中文", + "zh-Hant": "繁體中文" }