diff --git a/package-lock.json b/package-lock.json index ed00e0f..86817e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3936,7 +3936,8 @@ "ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true }, "interpret": { "version": "1.2.0", diff --git a/package.json b/package.json index c7938c4..bf18b60 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "backgroundColor": "transparent", "languages": [ "zh-CN", + "zh-TW", "en-US", "fr-FR", "es", diff --git a/src/components/settings/app.tsx b/src/components/settings/app.tsx index e70bc7c..d84f5cd 100644 --- a/src/components/settings/app.tsx +++ b/src/components/settings/app.tsx @@ -109,6 +109,7 @@ class AppTab extends React.Component { { key: "fr-FR", text: "Français" }, { key: "tr", text: "Türkçe" }, { key: "zh-CN", text: "中文(简体)" }, + { key: "zh-TW", text: "中文(繁體)" }, ] toggleStatus = () => { diff --git a/src/scripts/i18n/_locales.ts b/src/scripts/i18n/_locales.ts index 01a820c..63bc907 100644 --- a/src/scripts/i18n/_locales.ts +++ b/src/scripts/i18n/_locales.ts @@ -1,5 +1,6 @@ import en_US from "./en-US.json" import zh_CN from "./zh-CN.json" +import zh_TW from "./zh-TW.json" import fr_FR from "./fr-FR.json" import de from "./de.json" import es from "./es.json" @@ -8,6 +9,7 @@ import tr from "./tr.json" const locales = { "en-US": en_US, "zh-CN": zh_CN, + "zh-TW": zh_TW, "fr-FR": fr_FR, "de": de, "es": es, diff --git a/src/scripts/i18n/zh-TW.json b/src/scripts/i18n/zh-TW.json new file mode 100644 index 0000000..eee0834 --- /dev/null +++ b/src/scripts/i18n/zh-TW.json @@ -0,0 +1,231 @@ +{ + "allArticles": "全部文章", + "add": "新增", + "create": "新建", + "icon": "圖示", + "name": "名稱", + "openExternal": "在瀏覽器中開啟", + "emptyName": "名稱不得為空", + "emptyField": "此項不得為空", + "edit": "編輯", + "delete": "刪除", + "followSystem": "跟隨系統", + "more": "更多", + "close": "關閉", + "search": "搜尋", + "loadMore": "載入更多", + "dangerButton": "確認{action}?", + "confirmMarkAll": "確認將本頁所有文章標為已讀?", + "confirm": "確認", + "cancel": "取消", + "time": { + "now": "now", + "m": "m", + "h": "h", + "d": "d", + "minute": "{m}分鐘", + "hour": "{h}小時", + "day": "{d}天" + }, + "log": { + "empty": "無訊息", + "fetchFailure": "無法載入訂閱源“{name}”", + "fetchSuccess": "成功載入 {count} 篇文章", + "networkError": "連線訂閱源時出錯", + "parseError": "解析XML資訊流時出錯", + "syncFailure": "無法與服務同步" + }, + "nav": { + "menu": "選單", + "refresh": "重新整理", + "markAllRead": "全部標為已讀", + "notifications": "訊息", + "view": "檢視", + "settings": "選項", + "minimize": "最小化", + "maximize": "最大化" + }, + "menu": { + "close": "關閉選單", + "subscriptions": "訂閱源" + }, + "article": { + "error": "文章載入失敗", + "reload": "重新載入", + "empty": "無文章", + "untitled": "(無標題)", + "hide": "隱藏文章", + "unhide": "取消隱藏", + "markRead": "標為已讀", + "markUnread": "標為未讀", + "markAbove": "將以上標為已讀", + "markBelow": "將以下標為已讀", + "star": "標為星標", + "unstar": "取消星標", + "fontSize": "字型大小", + "loadWebpage": "載入網頁", + "loadFull": "抓取全文", + "notify": "後臺抓取時傳送通知", + "dontNotify": "不傳送通知" + }, + "context": { + "share": "分享", + "read": "閱讀", + "copyTitle": "複製標題", + "copyURL": "複製連結", + "copy": "複製", + "search": "使用 {engine} 搜尋“{text}”", + "view": "檢視", + "cardView": "卡片檢視", + "listView": "列表檢視", + "magazineView": "雜誌檢視", + "compactView": "緊湊檢視", + "filter": "篩選", + "unreadOnly": "僅未讀文章", + "starredOnly": "僅星標文章", + "fullSearch": "在正文中搜尋", + "showHidden": "顯示隱藏文章", + "manageSources": "管理訂閱源", + "saveImageAs": "將影象另存為", + "copyImage": "複製影象", + "copyImageURL": "複製影象連結", + "caseSensitive": "區分大小寫", + "showCover": "顯示封面", + "showSnippet": "顯示摘要", + "fadeRead": "淡化已讀文章" + }, + "searchEngine": { + "name": "搜尋引擎", + "bing": "必應", + "baidu": "百度" + }, + "settings": { + "writeError": "寫入檔案時發生錯誤", + "name": "選項", + "fetching": "正在更新訂閱源,請稍候…", + "exit": "退出選項", + "sources": "訂閱源", + "grouping": "分組與排序", + "rules": "規則", + "service": "服務", + "app": "應用偏好", + "about": "關於", + "version": "版本", + "shortcuts": "快捷鍵", + "openSource": "開源項目", + "feedback": "反饋" + }, + "sources": { + "serviceWarning": "此處匯入或新增的訂閱源將不會與服務端同步", + "serviceManaged": "該訂閱源由服務端管理", + "untitled": "訂閱源", + "errorAdd": "新增訂閱源時出錯", + "errorParse": "解析OPML檔案時出錯", + "errorParseHint": "請確保OPML檔案完整且使用UTF-8編碼。", + "errorImport": "匯入{count}項訂閱源時出錯", + "exist": "該訂閱源已存在", + "opmlFile": "OPML檔案", + "name": "訂閱源名稱", + "editName": "修改名稱", + "fetchFrequency": "抓取頻率限制", + "unlimited": "無限制", + "openTarget": "訂閱源文章開啟方式", + "delete": "刪除訂閱源", + "add": "新增訂閱源", + "import": "匯入檔案", + "export": "匯出檔案", + "rssText": "RSS正文", + "loadWebpage": "載入網頁", + "inputUrl": "輸入URL", + "badIcon": "圖示不存在或非圖片", + "badUrl": "請正確輸入URL", + "deleteWarning": "這將移除訂閱源與所有已儲存的文章", + "selected": "選中訂閱源", + "selectedMulti": "選中多個訂閱源" + }, + "groups": { + "exist": "該分組已存在", + "type": "類型", + "group": "分組", + "source": "訂閱源", + "capacity": "容量", + "exitGroup": "退出分組", + "deleteSource": "從分組刪除訂閱源", + "sourceHint": "拖拽訂閱源以排序", + "create": "新建分組", + "selectedGroup": "選中分組", + "selectedSource": "選中訂閱源", + "enterName": "輸入名稱", + "editName": "修改名稱", + "deleteGroup": "刪除分組", + "chooseGroup": "選擇分組", + "addToGroup": "新增至分組", + "groupHint": "雙擊分組以修改訂閱源,可通過拖拽排序" + }, + "rules": { + "intro": "通過正規表示式自動標記文章或推送通知", + "help": "瞭解更多", + "source": "訂閱源", + "selectSource": "選擇一個訂閱源", + "new": "新建規則", + "if": "若", + "then": "則", + "title": "標題", + "content": "正文", + "fullSearch": "標題或正文", + "creator": "作者", + "match": "匹配", + "notMatch": "不匹配", + "regex": "正規表示式", + "badRegex": "正規表示式非法", + "action": "行為", + "selectAction": "選擇行為", + "hint": "規則將按順序執行,拖拽以排序", + "test": "測試規則" + }, + "service": { + "intro": "通過 RSS 服務跨裝置保持同步", + "select": "選擇服務", + "suggest": "建議一項新服務", + "overwriteWarning": "若本地與服務端存在URL相同的訂閱源,則本地訂閱源將被刪除", + "groupsWarning": "分組不會自動與服務端保持同步", + "rateLimitWarning": "若反覆出現錯誤,則原因可能是應用被服務限流", + "endpoint": "端點", + "username": "使用者名稱", + "password": "密碼", + "unchanged": "未更改", + "fetchLimit": "同步數量", + "fetchLimitNum": "最近 {count} 篇文章", + "importGroups": "匯入分組", + "failure": "連線到服務時出錯", + "failureHint": "請檢查服務配置或網路連線", + "fetchUnlimited": "無限制(不建議)" + }, + "app": { + "cleanup": "清理", + "cache": "清空快取", + "cacheSize": "已快取{size}資料", + "deleteChoices": "刪除 … 天前的文章", + "confirmDelete": "刪除文章", + "daysAgo": "{days}天前", + "deleteAll": "刪除全部文章", + "calculatingSize": "正在計算佔用空間…", + "itemSize": "本地文章約佔用{size}空間", + "confirmImport": "確認要從備份檔案匯入資料嗎?這將清除所有應用資料。", + "data": "應用資料", + "backup": "備份", + "restore": "還原", + "frData": "Fluent Reader資料", + "language": "介面語言", + "theme": "應用主題", + "lightTheme": "淺色模式", + "darkTheme": "深色模式", + "enableProxy": "啟用代理", + "badUrl": "請正確輸入URL", + "pac": "PAC地址", + "setPac": "設定PAC", + "pacHint": "對於Socks代理建議PAC返回“SOCKS5”以啟用代理端解析。關閉代理需重啟應用後生效。", + "fetchInterval": "自動抓取頻率", + "never": "從不" + } +} \ No newline at end of file