diff --git a/package-lock.json b/package-lock.json index b219a3d2391..63e106f92aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,9 +22,9 @@ "devDependencies": { "@angular-devkit/build-angular": "^18.1.4", "@angular-eslint/builder": "^18.3.0", - "@angular-eslint/eslint-plugin": "^18.0.1", + "@angular-eslint/eslint-plugin": "^18.3.1", "@angular-eslint/eslint-plugin-template": "^18.0.1", - "@angular-eslint/schematics": "^18.3.0", + "@angular-eslint/schematics": "^18.3.1", "@angular-eslint/template-parser": "^18.0.1", "@angular/animations": "^18.1.4", "@angular/cdk": "^18.1.4", @@ -124,7 +124,7 @@ "stacktrace-js": "^2.0.1", "start-server-and-test": "^1.14.0", "ts-node": "~10.9.1", - "tslib": "^2.4.1", + "tslib": "^2.7.0", "typescript": "~5.4.5", "utils-decorators": "^2.0.8", "webdav": "~4.11.3", @@ -517,6 +517,12 @@ "tslib": "^2.1.0" } }, + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true + }, "node_modules/@angular-devkit/build-webpack": { "version": "0.1801.4", "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1801.4.tgz", @@ -666,13 +672,13 @@ "license": "MIT" }, "node_modules/@angular-eslint/eslint-plugin": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-18.3.0.tgz", - "integrity": "sha512-Vl7gfPMXxvtHTjYdlzR161aj5xrqW6T57wd8ToQ7Gqzm0qHGfY6kE4SQobUa2LCYckTNSlv+zXe48C4ah/dSjw==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-18.3.1.tgz", + "integrity": "sha512-MP4Nm+SHboF8KdnN0KpPEGAaTTzDLPm3+S/4W3Mg8onqWCyadyd4mActh9mK/pvCj8TVlb/SW1zeTtdMYhwonw==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.3.0", - "@angular-eslint/utils": "18.3.0" + "@angular-eslint/bundled-angular-compiler": "18.3.1", + "@angular-eslint/utils": "18.3.1" }, "peerDependencies": { "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", @@ -681,13 +687,13 @@ } }, "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-18.3.0.tgz", - "integrity": "sha512-ddR/qwYbUeq9IpyVKrPbfZyRBTy6V8uc5I0JcBKttQ4CZ4joXhqsVgWFsI+JAMi8E66uNj1VC7NuKCOjDINv2Q==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-18.3.1.tgz", + "integrity": "sha512-hBJ3+f7VSidvrtYaXH7Vp0sWvblA9jLK2c6uQzhYGWdEDUcTg7g7VI9ThW39WvMbHqkyzNE4PPOynK69cBEDGg==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.3.0", - "@angular-eslint/utils": "18.3.0", + "@angular-eslint/bundled-angular-compiler": "18.3.1", + "@angular-eslint/utils": "18.3.1", "aria-query": "5.3.0", "axobject-query": "4.1.0" }, @@ -698,25 +704,39 @@ } }, "node_modules/@angular-eslint/eslint-plugin-template/node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.3.0.tgz", - "integrity": "sha512-v/59FxUKnMzymVce99gV43huxoqXWMb85aKvzlNvLN+ScDu6ZE4YMiTQNpfapVL2lkxhs0uwB3jH17EYd5TcsA==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.3.1.tgz", + "integrity": "sha512-sikmkjfsXPpPTku1aQkQ1MNNEKGBgGGRvUN/WeNS9dhCJ4dxU3O7dZctt1aQWj+W3nbuUtDiimAWF5fZHGFE2Q==", "dev": true }, "node_modules/@angular-eslint/eslint-plugin/node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.3.0.tgz", - "integrity": "sha512-v/59FxUKnMzymVce99gV43huxoqXWMb85aKvzlNvLN+ScDu6ZE4YMiTQNpfapVL2lkxhs0uwB3jH17EYd5TcsA==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.3.1.tgz", + "integrity": "sha512-sikmkjfsXPpPTku1aQkQ1MNNEKGBgGGRvUN/WeNS9dhCJ4dxU3O7dZctt1aQWj+W3nbuUtDiimAWF5fZHGFE2Q==", "dev": true }, + "node_modules/@angular-eslint/eslint-plugin/node_modules/@angular-eslint/utils": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.3.1.tgz", + "integrity": "sha512-sd9niZI7h9H2FQ7OLiQsLFBhjhRQTASh+Q0+4+hyjv9idbSHBJli8Gsi2fqj9zhtMKpAZFTrWzuLUpubJ9UYbA==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "18.3.1" + }, + "peerDependencies": { + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" + } + }, "node_modules/@angular-eslint/schematics": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-18.3.0.tgz", - "integrity": "sha512-rQ4DEWwf3f5n096GAK6JvXD0SRzRJ52WRaIyKg8MMkk6qvUDfZI8seOkcbjDtZoIe6Ds7DfqSfJgNVte75qvPQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-18.3.1.tgz", + "integrity": "sha512-BTsQHDu7LjvXannJTb5BqMPCFIHRNN94eRyb60VfjJxB/ZFtsbAQDFFOi5lEZsRsd4mBeUMuL9mW4IMcPtUQ9Q==", "dev": true, "dependencies": { - "@angular-eslint/eslint-plugin": "18.3.0", - "@angular-eslint/eslint-plugin-template": "18.3.0", + "@angular-eslint/eslint-plugin": "18.3.1", + "@angular-eslint/eslint-plugin-template": "18.3.1", "ignore": "5.3.2", "semver": "7.6.3", "strip-json-comments": "3.1.1" @@ -726,6 +746,27 @@ "@angular-devkit/schematics": ">= 18.0.0 < 19.0.0" } }, + "node_modules/@angular-eslint/schematics/node_modules/@angular-eslint/bundled-angular-compiler": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.3.0.tgz", + "integrity": "sha512-v/59FxUKnMzymVce99gV43huxoqXWMb85aKvzlNvLN+ScDu6ZE4YMiTQNpfapVL2lkxhs0uwB3jH17EYd5TcsA==", + "dev": true + }, + "node_modules/@angular-eslint/schematics/node_modules/@angular-eslint/eslint-plugin": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-18.3.0.tgz", + "integrity": "sha512-Vl7gfPMXxvtHTjYdlzR161aj5xrqW6T57wd8ToQ7Gqzm0qHGfY6kE4SQobUa2LCYckTNSlv+zXe48C4ah/dSjw==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "18.3.0", + "@angular-eslint/utils": "18.3.0" + }, + "peerDependencies": { + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" + } + }, "node_modules/@angular-eslint/schematics/node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", @@ -775,12 +816,12 @@ } }, "node_modules/@angular-eslint/utils": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.3.0.tgz", - "integrity": "sha512-sCrkHkpxBJZLuCikdboZoawCfc2UgbJv+T14tu2uQCv+Vwzeadnu04vkeY2vTkA8GeBdBij/G9/N/nvwmwVw3g==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.3.1.tgz", + "integrity": "sha512-sd9niZI7h9H2FQ7OLiQsLFBhjhRQTASh+Q0+4+hyjv9idbSHBJli8Gsi2fqj9zhtMKpAZFTrWzuLUpubJ9UYbA==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.3.0" + "@angular-eslint/bundled-angular-compiler": "18.3.1" }, "peerDependencies": { "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", @@ -789,9 +830,9 @@ } }, "node_modules/@angular-eslint/utils/node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.3.0.tgz", - "integrity": "sha512-v/59FxUKnMzymVce99gV43huxoqXWMb85aKvzlNvLN+ScDu6ZE4YMiTQNpfapVL2lkxhs0uwB3jH17EYd5TcsA==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.3.1.tgz", + "integrity": "sha512-sikmkjfsXPpPTku1aQkQ1MNNEKGBgGGRvUN/WeNS9dhCJ4dxU3O7dZctt1aQWj+W3nbuUtDiimAWF5fZHGFE2Q==", "dev": true }, "node_modules/@angular/animations": { @@ -23869,9 +23910,10 @@ } }, "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "dev": true }, "node_modules/tuf-js": { "version": "2.2.1", diff --git a/package.json b/package.json index 544d49043e9..792fdf3daec 100644 --- a/package.json +++ b/package.json @@ -118,9 +118,9 @@ "devDependencies": { "@angular-devkit/build-angular": "^18.1.4", "@angular-eslint/builder": "^18.3.0", - "@angular-eslint/eslint-plugin": "^18.0.1", + "@angular-eslint/eslint-plugin": "^18.3.1", "@angular-eslint/eslint-plugin-template": "^18.0.1", - "@angular-eslint/schematics": "^18.3.0", + "@angular-eslint/schematics": "^18.3.1", "@angular-eslint/template-parser": "^18.0.1", "@angular/animations": "^18.1.4", "@angular/cdk": "^18.1.4", @@ -220,7 +220,7 @@ "stacktrace-js": "^2.0.1", "start-server-and-test": "^1.14.0", "ts-node": "~10.9.1", - "tslib": "^2.4.1", + "tslib": "^2.7.0", "typescript": "~5.4.5", "utils-decorators": "^2.0.8", "webdav": "~4.11.3", diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 5ec781a179d..f13539a8f6b 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -1428,7 +1428,7 @@ "NL": "Nederlands", "PL": "Polish", "PT": "Português", - "RU": "Русский", + "RU": "Russian", "SK": "Slovak", "TITLE": "Language", "TR": "Türkçe", diff --git a/src/assets/i18n/ru.json b/src/assets/i18n/ru.json index 987b06ee63d..b5f61be2440 100644 --- a/src/assets/i18n/ru.json +++ b/src/assets/i18n/ru.json @@ -289,8 +289,11 @@ "TITLE": "Настройка GitLab для проекта" }, "DIALOG_SUBMIT_WORKLOG": { + "PAST_DAY_INFO": "Предварительно заполненная длительность содержит неотслеживаемые данные за прошлые дни.", + "TITLE": "Отправляйте время, затраченное на решение проблем, в GitLab", "T_ALREADY_TRACKED": "Уже отслеживается", - "T_TITLE": "Заголовок" + "T_TITLE": "Заголовок", + "T_TO_BE_SUBMITTED": "Подлежащий подтверждению" }, "FORM": { "FILTER_USER": "Имя пользователя (чтобы отфильтровать изменения самостоятельно)", @@ -782,7 +785,9 @@ "S_REMINDER_ERR": "Ошибка интерфейса напоминания", "COUNTDOWN_BANNER": { "START_NOW": "Начать сейчас", - "HIDE": "Скрыть" + "HIDE": "Скрыть", + "TXT": "{{title}} начало в {{start}}!", + "TXT_MULTIPLE": "{{title}} начало в {{start}}!
(и {{nrOfOtherBanners}} предстоят другие задачи)" } }, "SEARCH_BAR": { @@ -818,6 +823,10 @@ } }, "SYNC": { + "A": { + "ARCHIVE_ONLY_UPLOADED": "Ваши данные были загружены только частично. Пожалуйста, повторите попытку позже! В противном случае вы не сможете синхронизировать свои данные с другими устройствами.", + "POSSIBLE_LEGACY_DATA": "В Super Productivity улучшена синхронизация, теперь используются два отдельных файла, а не один, что позволяет передавать гораздо меньше данных. Рекомендуется обновить все экземпляры Super Productivity и сначала синхронизировать данные из того экземпляра приложения, в котором данные являются самыми свежими. Если это данные с вашего локального устройства, то, пожалуйста, проигнорируйте это предупреждение и просто загрузите их, подтвердив в следующем диалоговом окне." + }, "C": { "EMPTY_SYNC": "Вы пытаетесь синхронизировать пустой объект данных. Если вы пытаетесь настроить синхронизацию из нового экземпляра приложения, просто нажмите ОК, чтобы загрузить данные с сервера. В противном случае, проверьте свои данные.", "FORCE_IMPORT": "Все равно импортировать удаленные данные?", @@ -825,7 +834,8 @@ "FORCE_UPLOAD_AFTER_ERROR": "Произошла ошибка при загрузке ваших локальных данных. Пробовать принудительно обновить?", "MIGRATE_LEGACY": "При импорте обнаружены устаревшие данные. Вы хотите попробовать их перенести?", "NO_REMOTE_DATA": "Удаленных данных не найдено. Загрузить локальный на удаленный?", - "TRY_LOAD_REMOTE_AGAIN": "Попробовать еще раз загрузить данные из удаленного источника?" + "TRY_LOAD_REMOTE_AGAIN": "Попробовать еще раз загрузить данные из удаленного источника?", + "UNABLE_TO_LOAD_REMOTE_DATA": "Не удается загрузить данные с удаленного компьютера. Вы хотите попробовать перезаписать удаленные данные своими локальными данными? При этом все удаленные данные будут потеряны." }, "D_AUTH_CODE": { "FOLLOW_LINK": "Откройте следующую ссылку и скопируйте предоставленный там код авторизации в поле ввода ниже.", @@ -848,10 +858,18 @@ "T1": "Последняя синхронизация не завершена!", "T2": "Ваши архивные данные не были должным образом загружены во время последней синхронизации:", "T3": "У вас есть 2 варианта:", - "BTN_CLOSE_APP": "Закрыть приложение" + "T4": "1. Перейдите на другое устройство и завершите синхронизацию на нем.", + "T5": "2. Или же вы можете перезаписать удаленные данные своими локальными. Все удаленные изменения будут\nпотеряны!", + "T6": "Рекомендуется создать резервную копию данных, которые вы перезаписываете!!!", + "BTN_CLOSE_APP": "Закрыть приложение", + "BTN_DOWNLOAD_BACKUP": "Загрузить локальную резервную копию", + "BTN_FORCE_UPLOAD": "Принудительная локальная загрузка" }, "D_PERMISSION": { - "DISABLE_SYNC": "Отключить синхронизацию" + "DISABLE_SYNC": "Отключить синхронизацию", + "PERM_FILE": "Предоставить разрешение", + "TEXT": "

Ваше разрешение на локальную синхронизацию файлов было отозвано.

", + "TITLE": "Синхронизация: отказано в разрешении доступа к локальному файлу" }, "FORM": { "DROPBOX": { @@ -860,7 +878,15 @@ "GOOGLE": { "L_SYNC_FILE_NAME": "Синхронизировать имя файла" }, + "LOCAL_FILE": { + "L_SYNC_FOLDER_PATH": "Путь к папке синхронизации", + "L_SYNC_FILE_PATH_PERMISSION_VALIDATION": "Требуется разрешение на доступ к файлам" + }, + "L_ENABLE_COMPRESSION": "Включить сжатие (более быстрая передача данных)", + "L_ENABLE_ENCRYPTION": "Включите сквозное шифрование (экспериментальное) - сделайте ваши данные недоступными для вашего поставщика синхронизации.", "L_ENABLE_SYNCING": "Включить синхронизацию", + "L_ENCRYPTION_NOTES": "ВАЖНЫЕ ЗАМЕЧАНИЯ: Чтобы все заработало, вам нужно будет установить тот же пароль на других ваших устройствах перед следующей синхронизацией. Пожалуйста, выберите надежный пароль. Пожалуйста, также обратите внимание, что вы не сможете получить доступ к своим данным, если забудете этот пароль. Восстановление невозможно, поскольку ключ есть только у вас. Вероятно, шифрование будет достаточно надежным, чтобы противостоять большинству злоумышленников, но гарантии нет.", + "L_ENCRYPTION_PASSWORD": "Пароль для шифрования (НЕ ЗАБУДЬТЕ)", "L_SYNC_INTERVAL": "Интервал синхронизации", "L_SYNC_PROVIDER": "Провайдер синхронизации", "TITLE": "Синхронизация", @@ -868,12 +894,17 @@ "CORS_INFO": "Экспериментальный!! Для работы, вам необходимо отключить или ограничить CORS для вашего экземпляра Nextcloud, что может негативно повлиять на безопасность! Пожалуйста, обратитесь к этой теме для получения дополнительной информации. Используйте на свой риск!", "L_BASE_URL": "Базовый URL", "L_PASSWORD": "Пароль", + "L_SYNC_FOLDER_PATH": "Путь к папке синхронизации", "L_USER_NAME": "Имя пользователя" } }, "S": { + "ALREADY_IN_SYNC": "Уже синхронизированы", + "ALREADY_IN_SYNC_NO_LOCAL_CHANGES": "Никаких локальных изменений – уже синхронизировано", "ERROR_FALLBACK_TO_BACKUP": "Что-то пошло не так при импорте данных. Откат к локальной резервной копии.", "ERROR_INVALID_DATA": "Ошибка при синхронизации. Неверные данные", + "ERROR_NO_REV": "Нет допустимого значения rev для удаленного файла", + "ERROR_UNABLE_TO_READ_REMOTE_DATA": "Ошибка при синхронизации. Не удается прочитать удаленные данные. Возможно, вы включили шифрование, и ваш локальный пароль не совпадает с тем, который использовался для шифрования удаленных данных?", "IMPORTING": "Импорт данных", "INCOMPLETE_CFG": "Ошибка аутентификации для синхронизации. Пожалуйста, проверьте свою конфигурацию!", "INITIAL_SYNC_ERROR": "Не удалось выполнить первоначальную синхронизацию", @@ -915,6 +946,7 @@ "LOCAL_ATTACHMENTS": "Локальные вложения", "NOTES": "Заметки", "PARENT": "Родитель", + "SCHEDULED_AT": "Запланировано на", "REMINDER": "Напоминание", "REPEAT": "Повторение", "SCHEDULE_TASK": "Расписание задачи", @@ -932,7 +964,9 @@ "ADD_TASK_TO_TOP_OF_TODAY": "Добавить задачу в начало списка", "CREATE_TASK": "Создать новую задачу", "EXAMPLE": "Пример: \"Название задачи +проект #тег1 #тег2 10m/3h\"", - "START": "Нажмите Enter еще раз, чтобы начать" + "START": "Нажмите Enter еще раз, чтобы начать", + "TOGGLE_ADD_TO_BACKLOG_TODAY": "Переключить добавление задачи в список бэклог / на сегодня", + "TOGGLE_ADD_TOP_OR_BOTTOM": "Переключатель добавления задачи в начало или конец списка" }, "B": { "ADD_HALF_HOUR": "Добавить полчаса", @@ -949,6 +983,7 @@ "EDIT_SCHEDULED": "Изменить напоминание", "EDIT_TAGS": "Редактировать теги", "EDIT_TASK_TITLE": "Изменить заголовок", + "FOCUS_SESSION": "Начать фокус-сессию", "MARK_DONE": "Отметить как выполненное", "MARK_UNDONE": "Отметить как отмененное", "MOVE_TO_BACKLOG": "Переместить в бэклог", @@ -981,6 +1016,10 @@ "D_SCHEDULE_TASK": { "MOVE_TO_BACKLOG": "Переместить задачу в список задач до запланированного времени", "REMIND_AT": "Напомнить", + "QA_NEXT_MONTH": "На след. месяц", + "QA_NEXT_WEEK": "На след. неделю", + "QA_TODAY": "На сегодня", + "QA_TOMORROW": "На завтра", "RO_10M": "За 10 минут до начала", "RO_15M": "За 15 минут до начала", "RO_1H": "За 1 час до начала", @@ -1034,14 +1073,16 @@ "ESTIMATE_EXCEEDED_BODY": "Вы превысили оценочное время для \"{{title}}\"." }, "S": { - "DELETED": "Удаленное задание \"{{title}}\"", + "CANNOT_ASSIGN_PROJECT_FOR_REPEATABLE_TASK": "Невозможно назначить проект с помощью краткого синтаксиса для повторяющихся задач!", + "DELETED": "Удалена задача \"{{title}}\"", "FOUND_MOVE_FROM_BACKLOG": "Существующее задание {{title}} перемещено в текущий список заданий", "FOUND_MOVE_FROM_OTHER_LIST": "Задача {{title}} из {{contextTitle}} добавлена в текущий список", "FOUND_RESTORE_FROM_ARCHIVE": "Задача {{title}} связана с задачей из архива восстановлена", "LAST_TAG_DELETION_WARNING": "Вы пытаетесь удалить последний тег непроектной задачи. Это не разрешено!", - "REMINDER_ADDED": "Запланированное задание \"{{title}}\"", + "MOVE_TO_PROJECT_NOT_ALLOWED_FOR_ISSUE_TASK": "Перенос проблемных задач в другой проект не допускается", + "REMINDER_ADDED": "Запланирована задача \"{{title}}\"", "REMINDER_DELETED": "Удалено напоминание для задания", - "REMINDER_UPDATED": "Обновленное напоминание для задачи \"{{title}}\"", + "REMINDER_UPDATED": "Обновлено напоминание для задачи \"{{title}}\"", "TASK_CREATED": "Создано задание \"{{title}}\"" }, "SELECT_OR_CREATE": "Выберите или создайте задачу", @@ -1050,12 +1091,13 @@ "SPENT_TODAY": "Потрачено сегодня", "SPENT_TOTAL": "Потрачено всего", "TASK": "Задача", - "TOGGLE_DONE": "Пометить как выполненное" + "TOGGLE_DONE": "Пометить как выполненное / отменить" } }, "TASK_REPEAT": { "ADD_INFO_PANEL": { "CUSTOM": "Выборочная настройка", + "CUSTOM_AND_TIME": "Пользовательский, {{timeStr}}", "CUSTOM_WEEKLY": "{{daysStr}}", "CUSTOM_WEEKLY_AND_TIME": "{{daysStr}}, {{timeStr}}", "DAILY": "Каждый день", @@ -1079,8 +1121,18 @@ "MSG": "Удаление повторяющейся конфигурации преобразует все предыдущие экземпляры этой задачи в обычные задачи. Вы уверены, что хотите продолжить", "OK": "Удалить полностью" }, + "D_CONFIRM_UPDATE_INSTANCES": { + "MSG": "Для этой повторяющейся задачи созданы экземпляры {{tasksNr}}. Вы хотите обновить все из них, установив новые значения по умолчанию, или только будущие задачи?", + "CANCEL": "Только будущие задачи", + "OK": "Обновите все экземпляры" + }, + "D_CONFIRM_MOVE_TO_PROJECT": { + "MSG": "Для этой повторяемой задачи созданы экземпляры {{tasksNr}}. Вы хотите переместить их все в проект \"{{projectName}}\"?", + "OK": "Обновите все экземпляры" + }, "D_EDIT": { "ADD": "Добавить повторную настройку задачи", + "ADVANCED_CFG": "Расширенная конфигурация", "EDIT": "Изменить повторную задачу", "HELP1": "Повторяющиеся задачи предназначены для ежедневной рутинной работы, например: «Организация», «Ежедневное собрание», «Проверка кода», «Проверка писем» или аналогичные задачи, которые могут возникать снова и снова.", "HELP2": "После настройки повторяющаяся задача будет воссоздана каждый день, выбранный ниже, как только вы откроете свой проект, и будет автоматически помечена как выполненная в конце дня. Они будут обрабатываться как разные экземпляры. Таким образом, вы можете свободно добавлять подзадачи и т.д.", @@ -1241,6 +1293,7 @@ "DELETE": "Удалить", "DISMISS": "Отклонить", "DURATION_DESCRIPTION": "например \"5h 23m\", что равно 5 часам и 23 минутам", + "TRACKING_INTERVAL_DESCRIPTION": "Отслеживайте время, используя этот интервал в миллисекундах. Возможно, вы захотите изменить это значение, чтобы сократить количество операций записи на диск. Смотрите проблему #2355.", "DO_IT": "Сделать это!", "EDIT": "Редактировать", "ENABLED": "Включено", @@ -1274,9 +1327,11 @@ "TITLE": "Автоматическое резервное копирование" }, "CALENDARS": { + "BROWSER_WARNING": "Скорее всего, это НЕ будет работать с браузерной версией Super Productivity.
Пожалуйста, загрузите настольную версию, чтобы использовать эту функцию!
", "CAL_PATH": "Url-адрес iCal", "CAL_PROVIDERS": "Поставщик календаря (экспериментально и опционально)", "CAL_PROVIDERS_ADD": "Добавить календарь iCal", + "CAL_PROVIDERS_INFO": "Вы можете загрузить данные календаря в формате iCal (например, Google Calendar, Outlook 365). Данные будут интегрированы в расписание, и вам будет предложено создать задачи для событий календаря, если они должны состояться.", "CHECK_UPDATES": "Проверять обновления каждые Х", "DEFAULT_PROJECT": "Проект по умолчанию для добавленных задач", "HELP": "Вы можете интегрировать календари для напоминаний и добавлять их задачи в Super Productivity. Интеграция осуществляется в формате iCal. Для этого ваши календари должны быть доступны либо через Интернет, либо через файловую систему.", @@ -1289,6 +1344,8 @@ "TITLE": "Оценка и Метрики" }, "FOCUS_MODE": { + "HELP": "Режим фокусировки открывает экран, свободный от отвлекающих факторов, который поможет вам сосредоточиться на текущей задаче.", + "L_ALWAYS_OPEN_FOCUS_MODE": "Всегда открывайте режим фокусировки при отслеживании", "L_SKIP_PREPARATION_SCREEN": "Пропустить подготовительный экран (н-р растяжку)", "TITLE": "Режим фокуса" }, @@ -1322,6 +1379,7 @@ "HELP": "

Здесь вы можете настроить все сочетания клавиш.

Нажмите на ввод текста и введите нужную комбинацию клавиш. Нажмите Enter, чтобы сохранить, и Escape, чтобы прервать.

Существует три типа сочетаний клавиш:

", "MOVE_TASK_DOWN": "Переместить задачу вниз в списке", "MOVE_TASK_UP": "Переместить задачу вверх в списке", + "MOVE_TASK_TO_BOTTOM": "Переместите задачу в конец списка", "MOVE_TASK_TO_TOP": "Переместить задачу в начало списка", "MOVE_TO_BACKLOG": "Переместить задачу в список задач", "MOVE_TO_TODAYS_TASKS": "Переместить задачу в список задач на сегодня", @@ -1350,6 +1408,7 @@ "TOGGLE_BOOKMARKS": "Показать/Скрыть панель закладок", "TOGGLE_PLAY": "Запустить/Остановить задачу", "TOGGLE_SIDE_NAV": "Показать и сфокусировать / Скрыть боковую навигацию", + "TRIGGER_SYNC": "Синхронизация запуска (если настроена)", "ZOOM_DEFAULT": "Масштаб по умолчанию (только для ПК)", "ZOOM_IN": "Увеличить (только для ПК)", "ZOOM_OUT": "Уменьшить (только для ПК)" @@ -1395,6 +1454,7 @@ "IS_MINIMIZE_TO_TRAY": "Сворачивать в трей (только для ПК)", "IS_TRAY_SHOW_CURRENT_TASK": "Показать текущую задачу в трее / меню состояния (только на рабочем столе)", "IS_TURN_OFF_MARKDOWN": "Отключить Markdown для заметок", + "IS_USE_MINIMAL_SIDE_NAV": "Использовать минимальную панель навигации (отображаются только значки).", "TASK_NOTES_TPL": "Шаблон описания задачи", "TITLE": "Разные настройки", "IS_AUTO_START_NEXT_TASK": "Начать отслеживать следующее задание, когда текущее помечено как выполненное", @@ -1407,6 +1467,7 @@ "HELP": "

Таймер Pomodoro можно настроить с помощью нескольких настроек. Продолжительность каждого рабочего сеанса, продолжительность обычных перерывов, количество рабочих сессий, которые должны быть выполнены до запуска более длительного перерыва, и продолжительность этого более длительного перерыва.

Вы также можете установить, хотите ли вы отображать ваши отвлекающие моменты во время перерывов на помодоро.

Параметр «Отслеживание времени паузы при pomodoro break» также будет отслеживать ваши перерывы как рабочее время, затраченное на задачу.

Включение «Приостановить сессию pomodoro, когда нет активной задачи» также приостановит сессию pomodoro, когда вы приостановите задачу.

", "IS_ENABLED": "Включить таймер Pomodoro", "IS_MANUAL_CONTINUE": "Вручную подтвердить начало следующей сессии Pomodoro", + "IS_MANUAL_CONTINUE_BREAK": "Вручную подтвердить начало следующего перерыва", "IS_PLAY_SOUND": "Воспроизвести звук, когда сессия завершена", "IS_PLAY_SOUND_AFTER_BREAK": "Воспроизводить звуковое уведомление, когда перерыв сделан", "IS_PLAY_TICK": "Слушать звук часов каждую секунду", @@ -1415,9 +1476,12 @@ "TITLE": "Таймер Pomodoro" }, "REMINDER": { + "IS_COUNTDOWN_BANNER_ENABLED": "Показывать баннер обратного отсчета до того, как появятся напоминания", + "COUNTDOWN_DURATION": "Показывать баннер X перед фактическим напоминанием", "TITLE": "Напоминания" }, "SOUND": { + "BREAK_REMINDER_SOUND": "Звук напоминания о перерыве", "DONE_SOUND": "Звук выполненной задачи", "IS_INCREASE_DONE_PITCH": "Увеличивать высоту звука для каждой выполненной задачи", "TITLE": "Звук", @@ -1444,7 +1508,23 @@ "L_WORK_END": "Конец рабочего дня", "L_WORK_START": "Начало рабочего дня", "TITLE": "Временная шкала", - "WORK_START_END_DESCRIPTION": "например 17:00" + "WORK_START_END_DESCRIPTION": "например 17:00", + "L_IS_LUNCH_BREAK_ENABLED": "Разрешить перерыв на обед", + "L_LUNCH_BREAK_END": "Окончание обеда", + "L_LUNCH_BREAK_START": "Начало обеда", + "LUNCH_BREAK_START_END_DESCRIPTION": "н-р 13:00" + }, + "TIME_TRACKING": { + "HELP": "Напоминание об отслеживании времени - это баннер, который появляется на случай, если вы забыли начать отслеживать время.", + "L_TRACKING_INTERVAL": "Интервал отслеживания времени (ЭКСПЕРИМЕНТАЛЬНЫЙ)", + "L_DEFAULT_ESTIMATE": "Оценка времени по умолчанию для новых задач", + "L_DEFAULT_ESTIMATE_SUB_TASKS": "Оценка времени по умолчанию для новых подзадач", + "L_IS_AUTO_START_NEXT_TASK": "Начать отслеживать следующую задачу, пометив текущую как выполненную", + "L_IS_NOTIFY_WHEN_TIME_ESTIMATE_EXCEEDED": "Уведомлять о превышении расчетного времени", + "L_IS_TRACKING_REMINDER_ENABLED": "Включить напоминание об отслеживании", + "L_IS_TRACKING_REMINDER_SHOW_ON_MOBILE": "Показывать напоминание об отслеживании в мобильном приложении", + "L_TRACKING_REMINDER_MIN_TIME": "Время ожидания перед показом баннера с напоминанием об отслеживании", + "TITLE": "Отслеживание времени" }, "TRACKING_REMINDER": { "HELP": "Настройте баннер, который будет отображаться на случай, если вы забыли включить отслеживание времени.", @@ -1459,6 +1539,7 @@ "ERR_COMPRESSION": "Ошибка для интерфейса сжатия", "FILE_DOWNLOADED": "{{fileName}} скачано", "FILE_DOWNLOADED_BTN": "Открыть папку", + "NAVIGATE_TO_TASK_ERR": "Не удалось сосредоточиться на задаче. Удалить?", "PERSISTENCE_DISALLOWED": "Данные не будут сохранены постоянно. Имейте в виду, что это может привести к потере данных!!", "PERSISTENCE_ERROR": "Ошибка при запросе на сохранение данных: {{err}}", "RUNNING_X": "Запуск \"{{str}}\".", @@ -1472,6 +1553,7 @@ "DBX_UPLOAD": "Dropbox: Загрузка файла...", "GITHUB_LOAD_ISSUE": "GitHub: Загрузка данных о проблеме ...", "JIRA_LOAD_ISSUE": "Jira: Загрузка данных о проблеме...", + "SYNC": "Синхронизация данных...", "UNKNOWN": "Загрузка удаленных данных", "WEB_DAV_DOWNLOAD": "WebDAV: Скачивание данных...", "WEB_DAV_UPLOAD": "WebDAV: Загрузка данных..." @@ -1480,16 +1562,31 @@ "ADD_NEW_TASK": "Добавить новую задачу", "CREATE_PROJECT": "Создать проект", "CREATE_TAG": "Создать тег", + "DELETE_PROJECT": "Удалить проект", "DELETE_TAG": "Удалить тег", "GO_TO_TASK_LIST": "Перейти к списку задач", + "HM": { + "CALENDARS": "Как подключить календари", + "GET_HELP_ONLINE": "Получить помощь онлайн", + "KEYBOARD": "Инструкция: Продвинутая клавиатура", + "REPORT_A_PROBLEM": "Сообщить о проблеме", + "START_WELCOME": "Начать приветственный тур", + "SYNC": "Как настроить синхронизацию", + "REDDIT_COMMUNITY": "Сообщество Reddit" + }, + "NO_TAG_INFO": "В настоящее время тегов нет. Вы можете добавить теги, введя \"#НазваниеТега\" при добавлении или редактировании задач.", + "HELP": "Помощь", "METRICS": "Метрика", "NOTES": "Заметки", + "NOTES_PANEL_INFO": "Заметки могут быть показаны только в режиме просмотра расписания и обычного списка задач.", "PLANNER": "Планировщик", "PROCRASTINATE": "Прокрастинировать", "PROJECTS": "Проекты", "PROJECT_MENU": "Меню проекта", "PROJECT_SETTINGS": "Настройки проекта", "QUICK_HISTORY": "Быстрая история", + "REPEAT_SCHEDULED": "Повтор-ся/заплан-ые", + "SCHEDULE": "Расписание", "SETTINGS": "Настройки", "SHOW_SEARCH_BAR": "Показать панель поиска", "TAGS": "Теги", @@ -1514,8 +1611,11 @@ "OK": "Да, да! Выключай!" }, "ESTIMATE_TOTAL": "Общая оценка:", + "EVALUATE_DAY": "Оценить", "EXPORT_TASK_LIST": "Экспорт списка задач", "NO_TASKS": "На этот день нет задач", + "PLAN_TOMORROW": "План", + "REVIEW_TASKS": "Обзор", "ROUND_15M": "Округлить все задачи до 15 минут", "ROUND_30M": "Округлить все задачи до 30 минут", "ROUND_5M": "Округлить все задачи до 5 минут", @@ -1606,7 +1706,9 @@ "RESET_BREAK_TIMER": "Сброс таймера без перерыва", "TIME_ESTIMATED": "Расчетное время:", "WITHOUT_BREAK": "Без перерыва:", - "WORKING_TODAY": "Работаю сегодня:" + "WORKING_TODAY": "Работаю сегодня:", + "WORKING_TODAY_ARCHIVED": "Время, потраченное сегодня на выполнение архивных задач", + "TODAY_REMAINING": "Оставшиеся на сегодня:" }, "PP": { "ARCHIVED_PROJECTS": "Архивные проекты", diff --git a/src/assets/i18n/zh.json b/src/assets/i18n/zh.json index 361c0042cc4..303ce6c5c3a 100644 --- a/src/assets/i18n/zh.json +++ b/src/assets/i18n/zh.json @@ -765,8 +765,8 @@ "INITIAL_SYNC_ERROR": "初始同步失败", "SUCCESS_IMPORT": "数据已导入", "SUCCESS_VIA_BUTTON": "数据同步成功", - "UNKNOWN_ERROR": "同步时发生未知错误。请检查控制台。", - "UPLOAD_ERROR": "未知的上载错误(设置正确吗?): {{err}}" + "UNKNOWN_ERROR": "同步时发生未知错误: {{err}}", + "UPLOAD_ERROR": "未知的上传错误(设置正确吗?): {{err}}" } }, "TAG": {