diff --git a/Xcodes.xcodeproj/project.pbxproj b/Xcodes.xcodeproj/project.pbxproj index 333da06..5967b75 100644 --- a/Xcodes.xcodeproj/project.pbxproj +++ b/Xcodes.xcodeproj/project.pbxproj @@ -166,6 +166,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 4A5AAA1D28118FAD00528958 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; 536CFDD1263C94DE00026CE0 /* SignedInView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignedInView.swift; sourceTree = ""; }; 536CFDD3263C9A8000026CE0 /* XcodesSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XcodesSheet.swift; sourceTree = ""; }; 53CBAB2B263DCC9100410495 /* XcodesAlert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XcodesAlert.swift; sourceTree = ""; }; @@ -689,6 +690,7 @@ knownRegions = ( en, Base, + ru, ); mainGroup = CAD2E7952449574E00113D76; packageReferences = ( @@ -887,6 +889,7 @@ isa = PBXVariantGroup; children = ( E872EE4F2808D4F100D3DD8B /* en */, + 4A5AAA1D28118FAD00528958 /* ru */, ); name = Localizable.strings; sourceTree = ""; @@ -898,6 +901,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -1083,6 +1087,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -1145,6 +1150,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; diff --git a/Xcodes.xcodeproj/xcshareddata/xcschemes/Xcodes.xcscheme b/Xcodes.xcodeproj/xcshareddata/xcschemes/Xcodes.xcscheme index b181a5b..71c4833 100644 --- a/Xcodes.xcodeproj/xcshareddata/xcschemes/Xcodes.xcscheme +++ b/Xcodes.xcodeproj/xcshareddata/xcschemes/Xcodes.xcscheme @@ -44,6 +44,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "ru" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/Xcodes/Resources/Licenses.rtf b/Xcodes/Resources/Licenses.rtf index 4800d6a..f2290ab 100644 --- a/Xcodes/Resources/Licenses.rtf +++ b/Xcodes/Resources/Licenses.rtf @@ -1,4 +1,4 @@ -{\rtf1\ansi\ansicpg1252\cocoartf2638 +{\rtf1\ansi\ansicpg1252\cocoartf2580 \cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fnil\fcharset0 .SFNS-Regular;} {\colortbl;\red255\green255\blue255;} {\*\expandedcolortbl;;} diff --git a/Xcodes/Resources/ru.lproj/Localizable.strings b/Xcodes/Resources/ru.lproj/Localizable.strings new file mode 100644 index 0000000..4c1db6b --- /dev/null +++ b/Xcodes/Resources/ru.lproj/Localizable.strings @@ -0,0 +1,215 @@ +// Menu +"Menu.About" = "О Xcodes"; +"Menu.CheckForUpdates" = "Проверить наличие обновлений..."; +"Menu.Acknowledgements" = "Благодарности Xcodes"; +"Menu.GitHubRepo" = "Репозиторий Xcodes GitHub"; +"Menu.ReportABug" = "Сообщить об ошибке"; +"Menu.RequestNewFeature" = "Запросить новую функцию"; + +// Common +"Install" = "Установить"; +"InstallDescription" = "Установить эту версию"; +"RevealInFinder" = "Показать в Finder"; +"Active" = "Активный"; +"MakeActive" = "Сделать активным"; +"Open" = "Открытым"; +"OpenDescription" = "Открыть эту версию"; +"CopyPath" = "Копировать путь"; +"CreateSymLink" = "Создать символическую ссылку как Xcode.app"; +"Uninstall" = "Удалить"; +"Selected" = "Выбрано"; +"Select" = "Выбирать"; +"Cancel" = "Отмена"; +"Next" = "Следующий"; +"Continue" = "Продолжать"; +"Close" = "Закрывать"; + +// Info Pane +"IdenticalBuilds" = "Идентичные сборки"; +"IdenticalBuilds.help" = "Иногда предварительная и релизная версии представляют собой одну и ту же сборку. Xcodes автоматически отображает эти версии вместе."; + +"ReleaseDate" = "Дата выпуска"; +"ReleaseNotes" = "Примечания к выпуску"; +"ReleaseNotes.help" = "Просмотреть примечания к выпуску"; +"Compatibility" = "Совместимость"; +"MacOSRequirement" = "Требуется macOS %@ или новее"; +"SDKs" = "SDK"; +"Compilers" = "Компиляторы"; +"DownloadSize" = "Размер загрузки"; +"NoXcodeSelected" = "Xcode не выбран"; + +// Installation Steps +"InstallationStepDescription" = "Шаг %@ из %@: %@"; +"DownloadingPercentDescription" = "Скачивание: %@% завершено"; +"StopInstallation" = "Остановить установку"; +"DownloadingError" = "Информация о загрузке не найдена"; + +// About +"VersionWithBuild" = "Версия %@ (%@)"; +"GithubRepo" = "Репозиторий GitHub"; +"Acknowledgements" = "Благодарности"; +"UnxipExperiment" = "Распаковать эксперимент"; +"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" = "Автоматически создавать символическую ссылку на Xcodes.app"; +"AutomaticallyCreateSymbolicLinkDescription" = "Когда вы делаете версию Xcode активной/выбранной, попробуйте создать символическую ссылку с именем Xcode.app в каталоге установки"; +"DataSource" = "Источник данных"; +"DataSourceDescription" = "Источник данных Apple очищает веб-сайт Apple Developer. Он всегда показывает последние доступные выпуски, но является более уязвимым.\n\nВыпуски Xcode — это неофициальный список выпусков Xcode. Он предоставляется в виде правильно сформированных данных, содержит дополнительные информация, которую Apple не всегда может получить от Apple и которая с меньшей вероятностью будет повреждена, если Apple изменит дизайн своего веб-сайта для разработчиков."; +"Downloader" = "Загрузчик"; +"DownloaderDescription" = "aria2 использует до 16 подключений для загрузки Xcode в 3-5 раз быстрее, чем URLSession. Он поставляется в виде исполняемого файла вместе с исходным кодом в Xcodes, чтобы соответствовать лицензии GPLv2.\n\nURLSession — это API Apple по умолчанию для выполнения запросов URL. "; +"PrivilegedHelper" = "Привилегированный помощник"; +"PrivilegedHelperDescription" = "Xcodes использует отдельный привилегированный помощник для выполнения задач от имени пользователя root. Это вещи, которые потребуют sudo в командной строке, включая шаги после установки и переключение версий Xcode с помощью xcode-select.\n\nВам будет предложено указать вашу macOS пароль учетной записи для его установки."; +"HelperInstalled" = "Помощник установлен"; +"HelperNotInstalled" = "Помощник не установлен"; +"InstallHelper" = "Установить помощник"; + +// Experiment Preference Pane +"Experiments" = "Эксперименты"; +"FasterUnxip" = "Быстрее разархивировать"; +"UseUnxipExperiment" = "При распаковке используйте эксперимент"; +"FasterUnxipDescription" = "Благодаря @_saagarjha этот эксперимент может увеличить скорость распаковки до 70% для некоторых систем.\n\nДополнительную информацию о том, как это достигается, можно увидеть в репозитории unxip — 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" = "Введите %@ цифровой код с одного из ваших доверенных устройств:"; +"SendSMS" = "Отправить смс"; +"EnterDigitCodeDescription" = "Введите %@ цифровой код, отправленный на %@: "; +"SelectTrustedPhone" = "Выберите доверенный номер телефона для получения %@ цифрового кода по SMS:"; +"NoTrustedPhones" = "В вашей учетной записи нет доверенных телефонных номеров, но они необходимы для двухфакторной аутентификации.\n\nСм. https://support.apple.com/en-ca/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 с помощью xcode-select.\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" = "Невозможно создать символическую ссылку"; +"Alert.SymLink.Message" = "Xcode.app существует и не является символической ссылкой"; + +// Post install +"Alert.PostInstall.Title" = "Невозможно выполнить шаги после установки"; + +// InstallationErrors +"InstallationError.DamagedXIP" = "Архив \"%@\" поврежден и не может быть расширен."; +"InstallationError.NotEnoughFreeSpaceToExpandArchive" = "Архив \"%@\" не может быть расширен, поскольку в текущем томе недостаточно свободного места.\n\nОсвободите больше места для расширения архива, а затем снова установите Xcode %@, чтобы начать установку с того места, где он остановился."; +"InstallationError.FailedToMoveXcodeToApplications" = "Не удалось переместить Xcode в каталог %@."; +"InstallationError.FailedSecurityAssessment" = "Xcode %@ не прошел оценку безопасности со следующим выводом:\n%@\nОн остается установленным в %@, если вы все равно хотите его использовать."; +"InstallationError.CodesignVerifyFailed" = "Загруженный Xcode не прошел проверку подписи кода со следующим выводом:\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 доступны для скачивания."; diff --git a/Xcodes/XcodesApp.swift b/Xcodes/XcodesApp.swift index cfdb3af..7340ea2 100644 --- a/Xcodes/XcodesApp.swift +++ b/Xcodes/XcodesApp.swift @@ -123,10 +123,10 @@ class AppDelegate: NSObject, NSApplicationDelegate { } func localizeString(_ key: String, comment: String = "") -> String { - if #available(macOS 12, *) { - return String(localized: String.LocalizationValue(key)) - } else { +// if #available(macOS 12, *) { +// return String(localized: String.LocalizationValue(key)) +// } else { return NSLocalizedString(key, comment: comment) - } +// } }