From a33d01950e86edefa030074eabac264cfe87cf45 Mon Sep 17 00:00:00 2001 From: Still Hsu Date: Tue, 6 Oct 2020 21:38:18 +0800 Subject: [PATCH] Add zh-tw localization Signed-off-by: Still Hsu --- src/lang/index.js | 4 +- src/lang/zh-tw.js | 372 +++++++++++++++++++++++++++++++++++++++++++++ src/utils/flags.js | 4 +- 3 files changed, 378 insertions(+), 2 deletions(-) create mode 100644 src/lang/zh-tw.js diff --git a/src/lang/index.js b/src/lang/index.js index 14a2fa0..2f66a77 100644 --- a/src/lang/index.js +++ b/src/lang/index.js @@ -13,6 +13,7 @@ import hr from '@/lang/hr' import ar from '@/lang/ar' import ko from '@/lang/ko' import ph from '@/lang/ph' +import zh_tw from '@/lang/zh-tw' export const locales = { it, @@ -29,5 +30,6 @@ export const locales = { hr, ar, ko, - ph + ph, + zh_tw } diff --git a/src/lang/zh-tw.js b/src/lang/zh-tw.js new file mode 100644 index 0000000..27e17a6 --- /dev/null +++ b/src/lang/zh-tw.js @@ -0,0 +1,372 @@ +const zh_tw = { + globals: { + welcome: '歡迎使用 deemix', + back: '返回', + loading: '載入中', + download: '下載 {thing}', + by: '{artist}', + in: '於 {album}', + download_hint: '下載', + play_hint: '播放', + toggle_download_tab_hint: '展開/折疊', + clean_queue_hint: '清除完成', + cancel_queue_hint: '取消全部', + open_downloads_folder: '開啟下載資料夾', + cut: '剪下', + copy: '複製', + copyLink: '複製連結', + copyImageLink: '複製圖片連結', + copyDeezerLink: '複製 deezer 連結', + paste: '貼上', + listTabs: { + empty: '', + all: '所有', + top_result: '最佳結果', + album: '專輯|專輯', + artist: '藝人|藝人', + single: '單曲', + title: '標題|標題', + track: '歌曲|歌曲', + trackN: '0 首歌曲| {n} 首歌曲| {n} 首歌曲', + releaseN: '0 發行| {n} 發行| {n} 發行', + playlist: '播放清單|播放清單', + compile: '合輯|合輯', + ep: '迷你專輯 | 迷你專輯', + bundle: 'bundle | bundles', + more: '更多專輯', + featured: '出現於', + spotifyPlaylist: 'Spotify 播放清單 | Spotify 播放清單', + releaseDate: '發布日期', + error: '錯誤' + } + }, + about: { + updates: { + currentVersion: '目前版本', + versionNotAvailable: 'N/A', + updateAvailable: `您尚未更新至最新版本:{version}`, + deemixVersion: 'deemix 函示庫版本' + }, + titles: { + usefulLinks: '實用連結', + bugReports: '錯誤報告', + contributing: '貢獻', + donations: '贊助', + license: '使用許可' + }, + subtitles: { + bugReports: "使用 deemix 時,遇到了什麼問題嗎?歡迎回報錯誤!", + contributing: '您想替這個專案提出貢獻嗎?您可以透過許多不同的方式來幫忙!', + donations: '您想要捐款嗎?可以贊助我們!' + }, + usesLibrary: '本程式基於 deemix 函示庫。您可以使用該函示庫來製作自己的前端。', + thanks: `感謝 rtonnouhwotlollilol 對於本專案的貢獻,另外也感謝 BasCurtizscarvimane 幫忙製作本專案的圖示`, + upToDate: `您可於 Telegram 上關注最新消息頻道以取得最新動態。`, + officialWebsite: '官方網站', + officialRepo: '官方函示版本庫', + officialWebuiRepo: '官方 WebUI 版本庫', + officialSubreddit: '官方 Subreddit', + newsChannel: '最新消息頻道', + questions: `如果您對本程式有疑問或問題,請先在 subreddit 上搜尋解決方案。如果找不到任何解決方法,則可以在我們的 subreddit 上發布與您問題相關的文章。`, + beforeReporting: `在報告錯誤之前,請確保您正在運行最新版本的程式,並且要報告的內容真的是一個錯誤,而不僅是您自己遇到的問題。`, + beSure: `請確保您所想回報的錯誤可在其他台裝置上再現的,並且請勿回報已知錯誤。`, + duplicateReports: '請注意,重複的錯誤報告將被移除。', + dontOpenIssues: `請勿透過本版本庫的 Issues 問問題,我們開 subreddit 是有原因的。`, + newUI: `如果您精通 Python,則可以嘗試使用我們的函示庫來建立新的 UI,或者透過我們的版本庫提出錯誤相關的 PR。`, + acceptFeatures: `我也歡迎你提交新的功能-但前提是這個功能不能過於複雜-過於複雜的功能,應被新增至程式內而非函示庫內。`, + otherLanguages: `如果您精通其他程式語言,你也可以嘗試將 deemix 移植到其他程式語言中!`, + understandingCode: `你需要幫助了解本專案的程式碼嗎?只需在 Telegram 或 Reddit 上按一下 RemixDev。`, + contributeWebUI: `如果你熟悉 Vue.js(JavaScript)、HTML 或 CSS,你也可以參與 WebUI 前端的貢獻。`, + itsFree: `記得,這是一個免費的專案在支持開發人員之前,應該先支持你喜歡的歌手或藝人。`, + notObligated: `別認為你有義務捐款,無論如何我們都感謝您!`, + lincensedUnder: `本作品使用 + GNU General Public License 3.0 許可授權。` + }, + charts: { + title: '排行榜', + changeCountry: '改變國家', + download: '下載排行榜' + }, + errors: { + title: '{name} 的錯誤', + ids: { + invalidURL: '無法識別網址', + unsupportedURL: '尚不支持此網址', + ISRCnotOnDeezer: '無法在 Deezer 上使用單曲 ISRC', + notYourPrivatePlaylist: "您無法下載他人的私人播放清單。", + spotifyDisabled: 'Spotify 功能未正確設定。', + trackNotOnDeezer: '在 Deezer 上找不到此歌曲!', + albumNotOnDeezer: '在 Deezer 上找不到此專輯!', + notOnDeezer: '無法在 Deezer 上載入此歌曲!', + notEncoded: '本歌曲尚未編碼!', + notEncodedNoAlternative: '本歌曲尚未編碼,且無法找到其他替代歌曲!', + wrongBitrate: '找不到符合所設位元率的歌曲。', + wrongBitrateNoAlternative: '找不到符合所設位元率的歌曲,且無法找到其他替代歌曲!', + no360RA: '本歌曲並不支援 Reality Audio 360。', + notAvailable: "無法在 Deezer 伺服器載入此歌曲!", + notAvailableNoAlternative: "無法在 Deezer 伺服器載入此歌曲,且無法找到其他替代歌曲!", + noSpaceLeft: "本裝置可用空間已用盡!", + albumDoesntExists: "本歌曲的專輯不存在,無法取得資訊" + } + }, + favorites: { + title: '收藏', + noPlaylists: '尚未收藏任何播放清單', + noAlbums: '尚未收藏任何專輯', + noArtists: '尚未收藏任何藝人', + noTracks: '尚未收藏任何歌曲' + }, + home: { + needTologin: '您需要先登入 Deezer 帳戶,然後才能開始下載。', + openSettings: '開啟設定', + sections: { + popularPlaylists: '熱門播放清單', + popularAlbums: '熱門專輯' + } + }, + linkAnalyzer: { + info: '您可以透過此工具取得您所想下載的連結的相關資訊。', + useful: "比如,當您所想下載的歌曲無法在您的國家播放,且您想知道哪些國家可以播放此歌曲時,您可使用此工具。", + linkNotSupported: '尚未支援此連結', + linkNotSupportedYet: '我們似乎尚未支援此連結,請改用其他連結。', + table: { + id: 'ID', + isrc: 'ISRC', + upc: 'UPC', + duration: '長度', + diskNumber: '光碟編號', + trackNumber: '歌曲編號', + releaseDate: '發布日期', + bpm: 'BPM', + label: '標籤', + recordType: '媒體類型', + genres: '類型', + tracklist: '歌曲清單' + } + }, + search: { + startSearching: '開始搜尋!', + description: '您可以搜索歌曲名稱、專輯、藝人、播放清單...等等。您也可以直接貼上 Deezer 網址。', + fans: '{n} 個粉絲', + noResults: '無搜尋結果', + noResultsTrack: '找不到歌曲', + noResultsAlbum: '找不到專輯', + noResultsArtist: '找不到藝人', + noResultsPlaylist: '找不到播放清單' + }, + searchbar: '搜尋任何關鍵字(或貼上連結)', + downloads: '下載', + toasts: { + restoringQueue: '正在恢復下載清單...', + queueRestored: '下載清單已恢復!', + addedToQueue: '已新增 {item} 到下載清單中', + addedMoreToQueue: '已新增 {n} 個項目到下載清單中', + alreadyInQueue: '{item} 已在下載清單中!', + finishDownload: '{item} 已完成下載。', + allDownloaded: '全部下載完成!', + refreshFavs: '刷新完成!', + loggingIn: '登入中...', + loggedIn: '登入', + alreadyLogged: '已登入', + loginFailed: "無法登入", + loggedOut: '登出', + cancellingCurrentItem: '取消當前項目。', + currentItemCancelled: '當前項目已取消。', + startAddingArtist: '已新增 {artist} 個專輯到下載清單中', + finishAddingArtist: '已新增 {artist} 個專輯到下載清單中', + startConvertingSpotifyPlaylist: '將 Spotify 歌曲轉換為 Deezer 歌曲中', + finishConvertingSpotifyPlaylist: '已轉換 Spotify 播放清單', + loginNeededToDownload: '您需要登入才能下載歌曲!', + deezerNotAvailable: 'Deezer 在您所在的國家/地區無法使用。請您使用 VPN。' + }, + settings: { + title: '設定', + languages: '語言', + login: { + title: '登入', + loggedIn: '目前以 {username} 的身份登入', + arl: { + question: '如何取得自己的 ARL?', + update: '更新 ARL' + }, + logout: '登出', + login: '透過 deezer.com 登入' + }, + appearance: { + title: '外觀', + slimDownloadTab: '薄型下載分頁' + }, + downloadPath: { + title: '下載目錄' + }, + templates: { + title: '檔案名稱格式', + tracknameTemplate: '單曲名稱格式', + albumTracknameTemplate: '專輯單曲名稱格式', + playlistTracknameTemplate: '播放清單單曲名稱格式' + }, + folders: { + title: '資料夾', + createPlaylistFolder: '替播放清單建立資料夾', + playlistNameTemplate: '播放清單資料夾名稱格式', + createArtistFolder: '替藝人建立資料夾', + artistNameTemplate: '藝人資料夾名稱格式', + createAlbumFolder: '替專輯建立資料夾', + albumNameTemplate: '專輯資料夾名稱格式', + createCDFolder: '替 CD 建立資料夾', + createStructurePlaylist: '建立播放清單資料夾結構', + createSingleFolder: '建立單曲資料夾結構' + }, + trackTitles: { + title: '單曲名稱', + padTracks: '歌曲數目字串填充', + paddingSize: '覆蓋數目字串填充長度', + illegalCharacterReplacer: '替換非法字元' + }, + downloads: { + title: '下載', + queueConcurrency: '並行下載', + maxBitrate: { + title: '偏好位元率', + 9: 'FLAC 1411kbps', + 3: 'MP3 320kbps', + 1: 'MP3 128kbps' + }, + overwriteFile: { + title: '是否要覆蓋檔案?', + y: '是,覆蓋檔案', + n: "否,請勿覆蓋檔案", + t: '僅覆蓋標籤', + b: '否,保留兩個檔案並在重複的檔名中加入一個數字', + e: "否,不顧慮附檔名" + }, + fallbackBitrate: '當偏好位元率無法下載時,下載其他版本', + fallbackSearch: '當搜尋結果無法使用時,使用其他搜尋結果', + logErrors: '記錄錯誤至日誌', + logSearched: '記錄搜尋歌曲至日誌', + createM3U8File: '建立播放清單檔案', + syncedLyrics: '建立 .lyr 檔案(同步歌詞)', + playlistFilenameTemplate: '播放清單檔名格式', + saveDownloadQueue: '關閉應用程式時,保存下載清單' + }, + covers: { + title: '專輯封面', + saveArtwork: '保存封面', + coverImageTemplate: '封面檔名格式', + saveArtworkArtist: '保存藝人照片', + artistImageTemplate: '藝人照片檔名格式', + localArtworkSize: '本地圖片大小', + embeddedArtworkSize: '嵌入圖片大小', + localArtworkFormat: { + title: '您希望本地圖片採用哪種格式?', + jpg: 'JPEG', + png: 'PNG', + both: 'JPEG 及 PNG' + }, + jpegImageQuality: 'JPEG 影像品質', + embeddedArtworkPNG: '將嵌入式圖片存為 PNG', + embeddedPNGWarning: 'Deezer 官方並不支援 PNG,結果可能有誤', + imageSizeWarning: 'Deezer 官方並不使用高於 x1200 的圖片,您可能會遇到問題', + coverDescriptionUTF8: '使用 UTF8 保存封面敘述(修正 iTunes 專輯封面)' + }, + tags: { + head: '要保存哪些標籤', + title: '標題', + artist: '藝人', + album: '專輯', + cover: '專輯封面', + trackNumber: '單曲編號', + trackTotal: '總計歌曲', + discNumber: '光碟編號', + discTotal: '光碟總數', + albumArtist: '專輯藝人', + genre: '類型', + year: '年', + date: '日期', + explicit: '不良歌詞', + isrc: 'ISRC', + length: '單曲長度', + barcode: '專輯條碼(UPC)', + bpm: 'BPM', + replayGain: '重播增益(Replay Gain)', + label: '專輯標籤', + lyrics: '不同步的歌詞', + syncedLyrics: '同步歌詞', + copyright: '版權', + composer: '作曲家', + involvedPeople: '相關藝人' + }, + other: { + title: '其他', + savePlaylistAsCompilation: '將播放清單儲存為合輯', + useNullSeparator: '使用空分隔符', + saveID3v1: '保存 ID3v1 標籤', + multiArtistSeparator: { + title: '如何隔開作者名稱?', + nothing: '僅保留主作者', + default: '使用標準規格', + andFeat: '使用 & 及 feat.', + using: '使用 "{separator}"' + }, + singleAlbumArtist: '僅儲存專輯主作者名稱', + albumVariousArtists: '於專輯作者欄位中保留「多位藝人 (Various Artists)」字樣', + removeAlbumVersion: '於單曲名稱中移除「專輯版本 (Album Version)」字樣', + removeDuplicateArtists: '移除重複的作者名稱', + dateFormat: { + title: 'FLAC 檔案日期格式', + year: 'YYYY', + month: 'MM', + day: 'DD' + }, + featuredToTitle: { + title: '如何處理客串藝人名稱 (如 feat. 等字樣) ?', + 0: '什麼都不做', + 1: '從標題中刪除', + 3: '從標題和專輯標題中刪除', + 2: '將其移至標題' + }, + titleCasing: '歌曲名稱大小寫', + artistCasing: '藝人名稱大小寫', + casing: { + nothing: '保持不變', + lower: '小寫', + upper: '大寫', + start: '字詞開頭大寫', + sentence: '句子大寫' + }, + previewVolume: '預覽音量', + executeCommand: { + title: '下載後執行指令', + description: '留空則不執行' + } + }, + spotify: { + title: 'Spotify 功能', + clientID: 'Spotify 客戶端 ID', + clientSecret: 'Spotify 客戶端密碼', + username: 'Spotify 用戶名', + question: '如何啟用 Spotify 功能?' + }, + reset: '重設至預設', + save: '儲存', + toasts: { + init: '已載入設定!', + update: '已更新設定!', + ARLcopied: '已複製 ARL 到剪貼簿中' + } + }, + sidebar: { + home: '首頁', + search: '搜尋', + charts: '排行榜', + favorites: '收藏', + linkAnalyzer: '連結分析', + settings: '設定', + about: '關於' + }, + tracklist: { + downloadSelection: '下載所選' + } +} + +export default zh_tw \ No newline at end of file diff --git a/src/utils/flags.js b/src/utils/flags.js index e5272a0..2861f3e 100644 --- a/src/utils/flags.js +++ b/src/utils/flags.js @@ -13,6 +13,7 @@ import hr from 'flag-icon-css/flags/4x3/hr.svg' import ar from '@/assets/ar.svg' import ko from 'flag-icon-css/flags/4x3/kr.svg' import ph from 'flag-icon-css/flags/4x3/ph.svg' +import tw from 'flag-icon-css/flags/4x3/tw.svg' export const flags = { it, @@ -29,5 +30,6 @@ export const flags = { hr, ar, ko, - ph + ph, + zh_tw: tw }