diff --git a/.github/workflows/appcast.yml b/.github/workflows/appcast.yml index f87f007..e8ebf51 100644 --- a/.github/workflows/appcast.yml +++ b/.github/workflows/appcast.yml @@ -15,7 +15,7 @@ jobs: persist-credentials: false - name: Cache 📦 - uses: actions/cache@v3.0.3 + uses: actions/cache@v3.0.4 with: path: AppCast/vendor/bundle key: ${{ runner.os }}-gems-v1.0-${{ hashFiles('AppCast/Gemfile') }} diff --git a/Xcodes.xcodeproj/project.pbxproj b/Xcodes.xcodeproj/project.pbxproj index 7871d60..375e0fc 100644 --- a/Xcodes.xcodeproj/project.pbxproj +++ b/Xcodes.xcodeproj/project.pbxproj @@ -175,6 +175,7 @@ 53CBAB2B263DCC9100410495 /* XcodesAlert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XcodesAlert.swift; sourceTree = ""; }; 58F743C02810A34900EEC0F3 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; }; 63EAA4EA259944450046AB8F /* ProgressButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProgressButton.swift; sourceTree = ""; }; + 6CA3A090282EBE72005A6E35 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = ""; }; 9D3C3AF7282EBE3300CB0D37 /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = ""; }; AAB037D32839BD4700017680 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = ""; }; B648F22B2810C1130096781B /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; }; @@ -708,6 +709,7 @@ tr, ko, it, + "zh-Hant", ); mainGroup = CAD2E7952449574E00113D76; packageReferences = ( @@ -915,6 +917,7 @@ 9D3C3AF7282EBE3300CB0D37 /* tr */, AAB037D32839BD4700017680 /* ko */, 25E2FA26284769A00014A318 /* it */, + 6CA3A090282EBE72005A6E35 /* zh-Hant */, ); name = Localizable.strings; sourceTree = ""; diff --git a/Xcodes/Backend/AppState.swift b/Xcodes/Backend/AppState.swift index 8cc87c5..664f355 100644 --- a/Xcodes/Backend/AppState.swift +++ b/Xcodes/Backend/AppState.swift @@ -102,7 +102,7 @@ class AppState: ObservableObject { let finishDate = formatter.date(from: "11/06/2022") if Date().compare(finishDate!) == .orderedAscending { - return "👨🏻‍💻👩🏼‍💻 Happy WWDC 2022! 👨🏽‍💻🧑🏻‍💻" + return String(format: localizeString("WWDC.Message"), "2022") } return "" } diff --git a/Xcodes/Frontend/About/AboutView.swift b/Xcodes/Frontend/About/AboutView.swift index 2858b5f..4967e2e 100644 --- a/Xcodes/Frontend/About/AboutView.swift +++ b/Xcodes/Frontend/About/AboutView.swift @@ -18,7 +18,7 @@ struct AboutView: View { Button(action: { openURL(URL(string: "https://github.com/RobotsAndPencils/XcodesApp/")!) }) { - Label("GitHubRepo", systemImage: "link") + Label("GithubRepo", systemImage: "link") } .buttonStyle(LinkButtonStyle()) diff --git a/Xcodes/Resources/en.lproj/Localizable.strings b/Xcodes/Resources/en.lproj/Localizable.strings index 6030e0c..1290573 100644 --- a/Xcodes/Resources/en.lproj/Localizable.strings +++ b/Xcodes/Resources/en.lproj/Localizable.strings @@ -216,3 +216,6 @@ // Notifications "Notification.NewXcodeVersion.Title" = "New Xcode versions"; "Notification.NewXcodeVersion.Body" = "New Xcode versions are available to download."; + +// WWDC +"WWDC.Message" = "👨🏻‍💻👩🏼‍💻 Happy WWDC %@! 👨🏽‍💻🧑🏻‍💻"; diff --git a/Xcodes/Resources/es.lproj/Localizable.strings b/Xcodes/Resources/es.lproj/Localizable.strings index 3b99cdd..8c260ec 100644 --- a/Xcodes/Resources/es.lproj/Localizable.strings +++ b/Xcodes/Resources/es.lproj/Localizable.strings @@ -216,3 +216,6 @@ // Notifications "Notification.NewXcodeVersion.Title" = "Nuevas versiones de Xcode"; "Notification.NewXcodeVersion.Body" = "Nuevas versiones de Xcode están disponibles para descargar."; + +// WWDC +"WWDC.Message" = "👨🏻‍💻👩🏼‍💻 Happy WWDC %@! 👨🏽‍💻🧑🏻‍💻"; diff --git a/Xcodes/Resources/fr.lproj/Localizable.strings b/Xcodes/Resources/fr.lproj/Localizable.strings index d09e546..253d074 100644 --- a/Xcodes/Resources/fr.lproj/Localizable.strings +++ b/Xcodes/Resources/fr.lproj/Localizable.strings @@ -216,3 +216,6 @@ // Notifications "Notification.NewXcodeVersion.Title" = "Nouvelles versions de Xcode"; "Notification.NewXcodeVersion.Body" = "De nouvelles versions de Xcode sont disponibles au téléchargement."; + +// WWDC +"WWDC.Message" = "👨🏻‍💻👩🏼‍💻 Happy WWDC %@! 👨🏽‍💻🧑🏻‍💻"; diff --git a/Xcodes/Resources/hi.lproj/Localizable.strings b/Xcodes/Resources/hi.lproj/Localizable.strings index ca587d5..6fa1fcf 100644 --- a/Xcodes/Resources/hi.lproj/Localizable.strings +++ b/Xcodes/Resources/hi.lproj/Localizable.strings @@ -215,3 +215,6 @@ // Notifications "Notification.NewXcodeVersion.Title" = "नए Xcode संस्करण"; "Notification.NewXcodeVersion.Body" = "नए Xcode संस्करण डाउनलोड करने के लिए उपलब्ध हैं।"; + +// WWDC +"WWDC.Message" = "👨🏻‍💻👩🏼‍💻 Happy WWDC %@! 👨🏽‍💻🧑🏻‍💻"; diff --git a/Xcodes/Resources/it.lproj/Localizable.strings b/Xcodes/Resources/it.lproj/Localizable.strings index 7336969..c6b9c21 100644 --- a/Xcodes/Resources/it.lproj/Localizable.strings +++ b/Xcodes/Resources/it.lproj/Localizable.strings @@ -216,3 +216,6 @@ // Notifications "Notification.NewXcodeVersion.Title" = "Nuove versioni di Xcode"; "Notification.NewXcodeVersion.Body" = "Nuove versioni di Xcode disponibili per il download."; + +// WWDC +"WWDC.Message" = "👨🏻‍💻👩🏼‍💻 Happy WWDC %@! 👨🏽‍💻🧑🏻‍💻"; diff --git a/Xcodes/Resources/ko.lproj/Localizable.strings b/Xcodes/Resources/ko.lproj/Localizable.strings index 3c22f61..4237712 100644 --- a/Xcodes/Resources/ko.lproj/Localizable.strings +++ b/Xcodes/Resources/ko.lproj/Localizable.strings @@ -216,3 +216,6 @@ // Notifications "Notification.NewXcodeVersion.Title" = "새 Xcode 버전"; "Notification.NewXcodeVersion.Body" = "새로운 Xcode 버전을 다운로드 할 수 있습니다."; + +// WWDC +"WWDC.Message" = "👨🏻‍💻👩🏼‍💻 Happy WWDC %@! 👨🏽‍💻🧑🏻‍💻"; diff --git a/Xcodes/Resources/ru.lproj/Localizable.strings b/Xcodes/Resources/ru.lproj/Localizable.strings index cbe41d3..e8d68ac 100644 --- a/Xcodes/Resources/ru.lproj/Localizable.strings +++ b/Xcodes/Resources/ru.lproj/Localizable.strings @@ -215,3 +215,6 @@ // Notifications "Notification.NewXcodeVersion.Title" = "Новые версии Xcode"; "Notification.NewXcodeVersion.Body" = "Новые версии Xcode доступны для скачивания."; + +// WWDC +"WWDC.Message" = "👨🏻‍💻👩🏼‍💻 Happy WWDC %@! 👨🏽‍💻🧑🏻‍💻"; diff --git a/Xcodes/Resources/tr.lproj/Localizable.strings b/Xcodes/Resources/tr.lproj/Localizable.strings index a20ec0d..ac4c6cc 100644 --- a/Xcodes/Resources/tr.lproj/Localizable.strings +++ b/Xcodes/Resources/tr.lproj/Localizable.strings @@ -37,7 +37,7 @@ "SDKs" = "SDKler"; "Compilers" = "Derleyiciler"; "DownloadSize" = "İndirme Boyutu"; -"NoXcodeSelected" = "Bir Xcode Seçilmedi"; +"NoXcodeSelected" = "Xcode Sürümü Seçilmedi"; // Installation Steps // When localizing. Items will be replaced in order. ie "Step 1 of 6: Downloading" @@ -64,7 +64,7 @@ "Updates" = "Güncellemeler"; "Versions" = "Sürümler"; "AutomaticInstallNewVersion" = "Xcode'un yeni versiyonlarını otomatik yükle"; -"IncludePreRelease" = "prerelease/beta sürümlerini dahil et"; +"IncludePreRelease" = "Prerelease/beta sürümlerini dahil et"; "AppUpdates" = "Xcodes.app Güncellemeleri"; "CheckForAppUpdates" = "Uygulama güncellemelerini otomatik kontrol et"; "CheckNow" = "Kontrol Et"; @@ -116,11 +116,11 @@ "NoTrustedPhones" = "Hesabına tanımlı güvenli bir telefon numarası yok, fakat iki aşamalı doğrulama için gerekmektedir.\n\nDaha fazlası için https://support.apple.com/tr-tr/HT204915 adresine bakın."; // MainWindow -"UpdatedAt" = "Güncellenme Zamanı"; +"UpdatedAt" = "Güncellenme Zamanı:"; // ToolBar "Login" = "Giriş"; -"LoginDescription" = "Girişi Aç"; +"LoginDescription" = "Giriş Yap"; "Refresh" = "Yenile"; "RefreshDescription" = "Xcode Listesini Yenile"; "All" = "Tümü"; @@ -189,8 +189,8 @@ "InstallationError.UnsupportedFileFormat" = "Xcodes henüz Xcodu %@ dosya formatında yüklemeye (henüz) izin vermiyor."; "InstallationError.MissingSudoerPassword" = "Eksik şifre. Lütfen tekrar deneyin"; "InstallationError.UnavailableVersion" = "%@ sürümü bulunamadı."; -"InstallationError.NoNonPrereleaseVersionAvailable" = "prerelease olmayan sürümler yok."; -"InstallationError.NoPrereleaseVersionAvailable" = "prerelease sürümleri yok."; +"InstallationError.NoNonPrereleaseVersionAvailable" = "Prerelease olmayan sürümler yok."; +"InstallationError.NoPrereleaseVersionAvailable" = "Prerelease sürümleri yok."; "InstallationError.MissingUsernameOrPassword" = "Eksik kullanıcı adı veya şifre. Lütfen tekrar deneyin."; "InstallationError.VersionAlreadyInstalled" = "%@ zaten %@ konumunda yüklü."; "InstallationError.InvalidVersion" = "%@ geçerli bir sürüm numarası değil."; @@ -216,3 +216,6 @@ // Notifications "Notification.NewXcodeVersion.Title" = "Yeni Xcode sürümü"; "Notification.NewXcodeVersion.Body" = "Yeni Xcode sürümleri indirmek için mevcut."; + +// WWDC +"WWDC.Message" = "👨🏻‍💻👩🏼‍💻 WWDC %@ haftanız kutlu olsun! 👨🏽‍💻🧑🏻‍💻"; diff --git a/Xcodes/Resources/zh-Hans.lproj/Localizable.strings b/Xcodes/Resources/zh-Hans.lproj/Localizable.strings index 9bd86a6..a8487d3 100644 --- a/Xcodes/Resources/zh-Hans.lproj/Localizable.strings +++ b/Xcodes/Resources/zh-Hans.lproj/Localizable.strings @@ -216,3 +216,6 @@ // Notifications "Notification.NewXcodeVersion.Title" = "新Xcode版本可用"; "Notification.NewXcodeVersion.Body" = "新的Xcode版本已经可以下载。"; + +// WWDC +"WWDC.Message" = "👨🏻‍💻👩🏼‍💻 Happy WWDC %@! 👨🏽‍💻🧑🏻‍💻"; diff --git a/Xcodes/Resources/zh-Hant.lproj/Localizable.strings b/Xcodes/Resources/zh-Hant.lproj/Localizable.strings new file mode 100644 index 0000000..c3a3dd0 --- /dev/null +++ b/Xcodes/Resources/zh-Hant.lproj/Localizable.strings @@ -0,0 +1,218 @@ +// Menu +"Menu.About" = "關於 Xcodes"; +"Menu.CheckForUpdates" = "檢查更新版本⋯"; +"Menu.Acknowledgements" = "Xcodes 版權宣告"; +"Menu.GitHubRepo" = "Xcodes GitHub Repo"; +"Menu.ReportABug" = "回報錯誤"; +"Menu.RequestNewFeature" = "請求新功能"; + +// Common +"Install" = "安裝"; +"InstallDescription" = "安裝這個版本"; +"RevealInFinder" = "顯示於 Finder"; +"Active" = "啟用中"; +"MakeActive" = "啟用"; +"Open" = "打開"; +"OpenDescription" = "打開這個版本"; +"CopyPath" = "拷貝路徑"; +"CreateSymLink" = "製作 Xcode.app 的 Symlink"; +"Uninstall" = "解除安裝"; +"Selected" = "已選取"; +"Select" = "選取"; +"Cancel" = "取消"; +"Next" = "下一步"; +"Continue" = "繼續"; +"Close" = "關閉"; +"OK" = "好"; + +// Info Pane +"IdenticalBuilds" = "相同的建置版本"; +"IdenticalBuilds.help" = "有時候預先發行版與正式版的建制版本號會相同,Xcodes 會自動將這些版本整理在一起。"; + +"ReleaseDate" = "發行日期"; +"ReleaseNotes" = "版本附註"; +"ReleaseNotes.help" = "檢視版本附註"; +"Compatibility" = "相容性"; +"MacOSRequirement" = "需要 macOS %@ 或以上版本"; +"SDKs" = "SDKs"; +"Compilers" = "編譯器"; +"DownloadSize" = "下載大小"; +"NoXcodeSelected" = "沒有已選取的 Xcode"; + +// Installation Steps +// When localizing. Items will be replaced in order. ie "Step 1 of 6: Downloading" +// So if changing order, make sure the positional specficier is retained. ex: "%3$@: Step %1$d of %2$d" +"InstallationStepDescription" = "步驟 %1$d 之 %2$d:%3$@"; +"DownloadingPercentDescription" = "下載中:已完成 %d%%"; +"StopInstallation" = "停止安裝"; +"DownloadingError" = "找不到下載相關資訊"; + +// About +"VersionWithBuild" = "版本 %@ (%@)"; +"GithubRepo" = "GitHub Repo"; +"Acknowledgements" = "版權宣告"; +"UnxipExperiment" = "Unxip 試驗"; +"License" = "軟體許可證"; + +// General Preference Pane +"General" = "一般"; +"AppleID" = "Apple ID"; +"SignIn" = "登入"; +"Notifications" = "通知"; + +// Updates Preference Pane +"Updates" = "更新"; +"Versions" = "版本"; +"AutomaticInstallNewVersion" = "自動安裝新版本的 Xcode"; +"IncludePreRelease" = "包含預先發行及測試版"; +"AppUpdates" = "Xcodes.app 更新"; +"CheckForAppUpdates" = "自動檢查更新項目"; +"CheckNow" = "立即檢查"; +"LastChecked" = "上一次檢查: %@"; +"Never" = "從未使用"; + +// Advanced Preference Pane +"Advanced" = "進階"; +"LocalCachePath" = "本機快取路徑"; +"LocalCachePathDescription" = "Xcodes 會快取可用的 Xcode 版本並將新版本暫存下載至這個目錄"; +"Change" = "變更"; +"Active/Select" = "啟用/選取"; +"AutomaticallyCreateSymbolicLink" = "自動建立 Symlink 至 Xcode.app"; +"AutomaticallyCreateSymbolicLinkDescription" = "當你選擇/啟用一個 Xcode 版本,自動建立一個名為 Xcode.app 的 Symlink 到該版本的安裝目錄"; +"DataSource" = "資料來源"; +"DataSourceDescription" = "Apple 資料來源是擷取 Apple 開發者網站而來,永遠會顯示最新的可用版本,但比較容易出錯。\n\nXcode Releases 是一個非官方的 Xcodes 發行版本列表。這個來源提供格式良好的資料,包含了 Apple 開發者網站上未列出的額外資訊並且即使 Apple 決定重新設計他們的開發者網站也比較不容易出錯。"; +"Downloader" = "下載器"; +"DownloaderDescription" = "aria2 相較 URLSession 可以同時使用最多 16 條連線以 3 ~ 5 倍的速度下載 Xcode。Xcodes 包含了執行檔與其原始碼以遵循他的 GPLv2 授權合約。\n\nURLSession 是系統內建用來發送 URL 連線請求的 Apple API。"; +"PrivilegedHelper" = "權限輔助程式"; +"PrivilegedHelperDescription" = "Xcodes 使用一個分開的權限輔助程式以使用 root 身份執行特定工作。這些工作包含了通常需要在命令列使用 sudo 的指令,包含安裝後步驟以及使用 xcode-select 選擇 Xcode 版本。\n\n安裝時,你將會被詢問你的 macOS 帳號密碼。"; +"HelperInstalled" = "輔助程式已安裝"; +"HelperNotInstalled" = "輔助程式尚未安裝"; +"InstallHelper" = "安裝輔助程式"; + +// Experiment Preference Pane +"Experiments" = "實驗"; +"FasterUnxip" = "更快的 Unxip"; +"UseUnxipExperiment" = "解壓縮 (Unxip) 時,使用這個試驗版本"; +"FasterUnxipDescription" = "感謝 @_saagarjha 的努力,這個試驗版本可以在某些系統上加快 70% 的解壓縮速度。\n\n更多關於這項成就是如何達成的資訊,請參閱 unxip 的 repo - https://github.com/saagarjha/unxip"; + +// Notifications +"AccessGranted" = "通知已啟用。你將會開始收到來自 Xcodes 的通知。"; +"AccessDenied" = "⚠️ 通知已停用 ⚠️\n\n如果你想要啟用通知,請打開你的通知設定並選擇 Xcodes。"; +"NotificationSettings" = "通知偏好設定"; +"EnableNotifications" = "啟用通知"; + +// SignIn +"SignInWithApple" = "登入您的Apple ID"; +"AppleID" = "Apple ID:"; +"Password" = "密碼:"; +"Required" = "必要"; +"SignOut" = "登出"; + +// SMS/2FA +"DigitCodeDescription" = "請輸入顯示在你其中一個信任裝置中的 %d 位數密碼:"; +"SendSMS" = "傳送簡訊"; +"EnterDigitCodeDescription" = "請輸入 %d 位數密碼,已傳送至 %@: "; +"SelectTrustedPhone" = "請輸入一個你想用來接收 %d 位數密碼簡訊的電話號碼:"; +"NoTrustedPhones" = "你的帳號沒有任何已信任的手機號碼,但兩階段認證需要信任的手機號碼。\n\n請參閱 https://support.apple.com/zh-tw/HT204915."; + +// MainWindow +"UpdatedAt" = "上一次檢查:"; + +// ToolBar +"Login" = "登入"; +"LoginDescription" = "打開登入"; +"Refresh" = "更新"; +"RefreshDescription" = "更新 Xcode 版本列表"; +"All" = "全部"; +"Release" = "正式版"; +"ReleaseOnly" = "只看正式版"; +"Beta" = "測試版"; +"BetaOnly" = "只看測試版"; +"Filter" = "過濾"; +"FilterAvailableDescription" = "顯示可用的版本"; +"FilterInstalledDescription" = "顯示已安裝的版本"; +"Info" = "資訊"; +"InfoDescription" = "顯示或隱藏資訊面板"; +"Preferences" = "偏好設定"; +"PreferencesDescription" = "打開偏好設定"; +"Search" = "搜尋⋯"; +"SearchDescription" = "搜尋列表"; + +// List +"ActiveVersionDescription" = "這是啟用中版本"; +"MakeActiveVersionDescription" = "啟用這個版本"; + +// Alerts +// Uninstall +"Alert.Uninstall.Title" = "解除安裝 Xcode %@?"; +"Alert.Uninstall.Message" = "它將會被移到垃圾桶,但不會被清除。"; +"Alert.Uninstall.Error.Title" = "無法解除安裝 Xcode"; + +// Cancel Install +"Alert.CancelInstall.Title" = "你確定你想要停止安裝 Xcode %@?"; +"Alert.CancelInstall.Message" = "所有已進行的安裝步驟將被放棄。"; +"Alert.CancelInstall.PrimaryButton" = "停止安裝"; + +// Privileged Helper +"Alert.PrivilegedHelper.Title" = "權限輔助程式"; +"Alert.PrivilegedHelper.Message" = "Xcodes 使用一個分開的權限輔助程式以使用 root 身份執行特定工作。這些工作包含了通常需要在命令列使用 sudo 的指令,包含安裝後步驟以及使用 xcode-select 選擇 Xcode 版本。\n\n安裝時,你將會被詢問你的 macOS 帳號密碼。"; +"Alert.PrivilegedHelper.Error.Title" = "無法安裝輔助程式"; + +// Min MacOS Supported +"Alert.MinSupported.Title" = "未達最低版本要求"; +"Alert.MinSupported.Message" = "Xcode %@ 需要 MacOS %@,但你正在使用 MacOS %@,你確定還要繼續安裝嗎?"; + +// Install +"Alert.Install.Error.Title" = "無法安裝 Xcode"; +"Alert.InstallArchive.Error.Title" = "無法安裝已封存的 Xcode"; + +// Update +"Alert.Update.Error.Title" = "無法更新已選擇的 Xcode"; + +// Active/Select +"Alert.Select.Error.Title" = "無法選擇 Xcode"; + +// Symbolic Links +"Alert.SymLink.Title" = "無法建立 Symlink"; +"Alert.SymLink.Message" = "Xcode.app 已經存在,但並不是一個 Symlink"; + +// Post install +"Alert.PostInstall.Title" = "無法進行安裝後步驟"; + +// InstallationErrors +"InstallationError.DamagedXIP" = "壓縮檔 \"%@\" 已經損壞並無法解壓縮。"; +"InstallationError.NotEnoughFreeSpaceToExpandArchive" = "壓縮檔 \"%@\" 由於缺乏足夠的磁碟空間,無法解壓縮。\n\n請清空更多磁碟空間以確保可以解壓縮該檔案,然後再重新安裝 Xcode %@ 一次。安裝步驟將會從上次停住的地方繼續。"; +"InstallationError.FailedToMoveXcodeToApplications" = "無法將 Xcode 移動至 %@ 目錄。"; +"InstallationError.FailedSecurityAssessment" = "由於以下原因無法安全驗證 Xcode %@:\n%@\n如果你執意使用,該版本仍然安裝於 %@。"; +"InstallationError.CodesignVerifyFailed" = "下載的 Xcode 由於以下原因無法驗證 Codesign 簽章\n%@"; +"InstallationError.UnexpectedCodeSigningIdentity" = "下載的 Xcode 含有未預期的簽章。\n簽章人:\n%@\n%@\n預期的簽章人:\n%@\n%@"; +"InstallationError.UnsupportedFileFormat" = "Xcodes 目前尚未支援由 %@ 檔案格式安裝 Xcode。"; +"InstallationError.MissingSudoerPassword" = "找不到密碼,請再試一次。"; +"InstallationError.UnavailableVersion" = "找不到版本 %@。"; +"InstallationError.NoNonPrereleaseVersionAvailable" = "目前沒有可用的非預先發行版本。"; +"InstallationError.NoPrereleaseVersionAvailable" = "目前沒有可用的預先發行版本。"; +"InstallationError.MissingUsernameOrPassword" = "找不到使用者名稱或是密碼,請再試一次。"; +"InstallationError.VersionAlreadyInstalled" = "%@ 已經安裝於 %@"; +"InstallationError.InvalidVersion" = "%@ 不是個正確的版本號碼。"; +"InstallationError.VersionNotInstalled" = "%@ 沒有被安裝。"; +"InstallationError.PostInstallStepsNotPerformed.Installed" = "安裝已經完成,但有些安裝後步驟沒有自動執行。這些步驟在你第一次啟動 Xcode %@ 的時候會自動執行。"; +"InstallationError.PostInstallStepsNotPerformed.NotInstalled" = "安裝已經完成,但有些安裝後步驟沒有自動執行。 Xcodes 需要權限輔助程式來執行這些步驟,但該程式尚未被安裝。你可以在 偏好設定 > 進階中安裝它。\n\n這些步驟在你第一次啟動 Xcode %@ 的時候會自動執行。"; + +// Installation Steps +"Downloading" = "下載中"; +"Unarchiving" = "解壓縮中 (可能需要一點時間)"; +"Moving" = "移動至 %@"; +"TrashingArchive" = "移動封存檔到垃圾桶"; +"CheckingSecurity" = "安全驗證中"; +"Finishing" = "收尾中"; + +// Notifications +"Notification.NewVersionAvailable" = "有新的版本可用"; +"Notification.FinishedInstalling" = "已經完成安裝"; + + +"HelperClient.error" = "無法與權限輔助程式溝通。"; +///++ +// Notifications +"Notification.NewXcodeVersion.Title" = "新的 Xcode 版本"; +"Notification.NewXcodeVersion.Body" = "新的 Xcode 版本已經可以下載了";