@oxy.so/core 7.9.1 → 7.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/api/storeInstaller.js +46 -0
- package/dist/cjs/i18n/compactLocale.js +36 -0
- package/dist/cjs/i18n/compactLocaleValues.generated.js +4 -0
- package/dist/cjs/i18n/index.js +15 -15
- package/dist/cjs/i18n/locales/compact/ar-SA.generated.js +5 -0
- package/dist/cjs/i18n/locales/compact/bn-BD.generated.js +5 -0
- package/dist/cjs/i18n/locales/compact/ca-ES.generated.js +5 -0
- package/dist/cjs/i18n/locales/compact/de-DE.generated.js +5 -0
- package/dist/cjs/i18n/locales/compact/es-ES.generated.js +5 -0
- package/dist/cjs/i18n/locales/compact/fr-FR.generated.js +5 -0
- package/dist/cjs/i18n/locales/compact/hi-IN.generated.js +5 -0
- package/dist/cjs/i18n/locales/compact/id-ID.generated.js +5 -0
- package/dist/cjs/i18n/locales/compact/it-IT.generated.js +5 -0
- package/dist/cjs/i18n/locales/compact/ja-JP.generated.js +5 -0
- package/dist/cjs/i18n/locales/compact/ko-KR.generated.js +5 -0
- package/dist/cjs/i18n/locales/compact/pt-PT.generated.js +5 -0
- package/dist/cjs/i18n/locales/compact/ru-RU.generated.js +5 -0
- package/dist/cjs/i18n/locales/compact/tr-TR.generated.js +5 -0
- package/dist/cjs/i18n/locales/compact/zh-CN.generated.js +5 -0
- package/dist/cjs/index.js +10 -4
- package/dist/esm/api/storeInstaller.js +40 -0
- package/dist/esm/i18n/compactLocale.js +30 -0
- package/dist/esm/i18n/compactLocaleValues.generated.js +2 -0
- package/dist/esm/i18n/index.js +15 -15
- package/dist/esm/i18n/locales/compact/ar-SA.generated.js +3 -0
- package/dist/esm/i18n/locales/compact/bn-BD.generated.js +3 -0
- package/dist/esm/i18n/locales/compact/ca-ES.generated.js +3 -0
- package/dist/esm/i18n/locales/compact/de-DE.generated.js +3 -0
- package/dist/esm/i18n/locales/compact/es-ES.generated.js +3 -0
- package/dist/esm/i18n/locales/compact/fr-FR.generated.js +3 -0
- package/dist/esm/i18n/locales/compact/hi-IN.generated.js +3 -0
- package/dist/esm/i18n/locales/compact/id-ID.generated.js +3 -0
- package/dist/esm/i18n/locales/compact/it-IT.generated.js +3 -0
- package/dist/esm/i18n/locales/compact/ja-JP.generated.js +3 -0
- package/dist/esm/i18n/locales/compact/ko-KR.generated.js +3 -0
- package/dist/esm/i18n/locales/compact/pt-PT.generated.js +3 -0
- package/dist/esm/i18n/locales/compact/ru-RU.generated.js +3 -0
- package/dist/esm/i18n/locales/compact/tr-TR.generated.js +3 -0
- package/dist/esm/i18n/locales/compact/zh-CN.generated.js +3 -0
- package/dist/esm/index.js +3 -0
- package/dist/types/api/storeInstaller.d.ts +155 -0
- package/dist/types/i18n/compactLocale.d.ts +2 -0
- package/dist/types/i18n/compactLocaleValues.generated.d.ts +2 -0
- package/dist/types/i18n/locales/compact/ar-SA.generated.d.ts +3 -0
- package/dist/types/i18n/locales/compact/bn-BD.generated.d.ts +3 -0
- package/dist/types/i18n/locales/compact/ca-ES.generated.d.ts +3 -0
- package/dist/types/i18n/locales/compact/de-DE.generated.d.ts +3 -0
- package/dist/types/i18n/locales/compact/es-ES.generated.d.ts +3 -0
- package/dist/types/i18n/locales/compact/fr-FR.generated.d.ts +3 -0
- package/dist/types/i18n/locales/compact/hi-IN.generated.d.ts +3 -0
- package/dist/types/i18n/locales/compact/id-ID.generated.d.ts +3 -0
- package/dist/types/i18n/locales/compact/it-IT.generated.d.ts +3 -0
- package/dist/types/i18n/locales/compact/ja-JP.generated.d.ts +3 -0
- package/dist/types/i18n/locales/compact/ko-KR.generated.d.ts +3 -0
- package/dist/types/i18n/locales/compact/pt-PT.generated.d.ts +3 -0
- package/dist/types/i18n/locales/compact/ru-RU.generated.d.ts +3 -0
- package/dist/types/i18n/locales/compact/tr-TR.generated.d.ts +3 -0
- package/dist/types/i18n/locales/compact/zh-CN.generated.d.ts +3 -0
- package/dist/types/index.d.ts +2 -0
- package/package.json +5 -3
- package/src/api/storeInstaller.ts +158 -0
- package/src/i18n/README.md +11 -0
- package/src/i18n/compactLocale.ts +32 -0
- package/src/i18n/compactLocaleValues.generated.ts +2 -0
- package/src/i18n/index.ts +15 -15
- package/src/i18n/locales/compact/ar-SA.generated.ts +4 -0
- package/src/i18n/locales/compact/bn-BD.generated.ts +4 -0
- package/src/i18n/locales/compact/ca-ES.generated.ts +4 -0
- package/src/i18n/locales/compact/de-DE.generated.ts +4 -0
- package/src/i18n/locales/compact/es-ES.generated.ts +4 -0
- package/src/i18n/locales/compact/fr-FR.generated.ts +4 -0
- package/src/i18n/locales/compact/hi-IN.generated.ts +4 -0
- package/src/i18n/locales/compact/id-ID.generated.ts +4 -0
- package/src/i18n/locales/compact/it-IT.generated.ts +4 -0
- package/src/i18n/locales/compact/ja-JP.generated.ts +4 -0
- package/src/i18n/locales/compact/ko-KR.generated.ts +4 -0
- package/src/i18n/locales/compact/pt-PT.generated.ts +4 -0
- package/src/i18n/locales/compact/ru-RU.generated.ts +4 -0
- package/src/i18n/locales/compact/tr-TR.generated.ts +4 -0
- package/src/i18n/locales/compact/zh-CN.generated.ts +4 -0
- package/src/index.ts +15 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
// Generated by scripts/generateCompactLocales.ts; do not edit.
|
|
2
|
+
import { restoreCompactLocale } from '../../compactLocale.js';
|
|
3
|
+
export default restoreCompactLocale({ "signin": { "title": "Вход", "subtitle": "Используйте аккаунт Oxy", "addAccountTitle": "Добавить аккаунт", "addAccountSubtitle": "Войдите в другой аккаунт", "actions": { "continue": "Продолжить", "back": "Назад" }, "createAccountLink": "Впервые в Oxy? Создайте аккаунт", "status": { "signingIn": "Выполняется вход…" }, "subtitleToApp": "чтобы перейти в {{app}}", "orContinueWith": "или продолжите через", "qr": { "caption": "Отсканируйте в Commons, чтобы войти", "renew": "Показать новый код" }, "device": { "codeHint": "Убедитесь, что на телефоне тот же код" }, "errors": { "rateLimited": "Слишком много попыток. Повторите через {{seconds}} с.", "invalidCredentials": "Неверное имя пользователя, адрес почты или пароль. Если с этим адресом связано несколько аккаунтов, войдите по имени пользователя.", "emailAccountsFull": "К этому адресу уже привязано максимальное число аккаунтов.", "codeInvalid": "Код неверный, или срок его действия истёк.", "requestExpired": "Срок действия входа истёк. Отправьте новое письмо.", "secondFactorInvalid": "Код неверный. Введите текущий.", "originNotAllowed": "Здесь вход недоступен.", "generic": "Что-то пошло не так. Повторите попытку.", "notConfigured": "Вход недоступен", "notConfiguredDescription": "В {{app}} ещё не настроен вход. Обратитесь к разработчику приложения.", "failed": "Не удалось начать вход", "failedDescription": "Что-то пошло не так. Повторите попытку." }, "emailAccounts": { "title": "Выберите аккаунт", "description": "С адресом {{identifier}} связано несколько аккаунтов. Выберите, в какой войти." }, "chooser": { "subtitleToApp": "чтобы перейти в {{app}}", "title": "Выберите аккаунт", "subtitle": "Продолжите с одним из аккаунтов ниже или используйте другой.", "useAnother": "Использовать другой аккаунт", "continueAs": "Продолжить как {{name}}" }, "terms": { "before": "Продолжая, вы принимаете наши", "termsLink": "Условия использования", "and": "и", "privacyLink": "Политику конфиденциальности" }, "noAccount": "Нет аккаунта?", "createAccount": "Создать аккаунт", "identifier": { "label": "Эл. почта или имя пользователя", "placeholder": [2], "required": "Введите адрес эл. почты или имя пользователя." }, "checkEmail": { "title": "Проверьте почту", "description": "Если есть аккаунт, соответствующий {{identifier}}, мы отправили на него код и ссылку для входа.", "codeLabel": "Код", "codeHint": "Введите код из письма или откройте ссылку из него в этом браузере.", "codeHasLetters": "В вашем коде есть буквы?", "codeDigitsOnly": "Ваш код состоит только из цифр?", "resend": "Отправить новое письмо", "resendIn": "Отправить новое письмо через {{seconds}} с", "resent": "Мы отправили новое письмо.", "retryLater": "Мы уже отправили несколько писем. Подождите несколько минут и повторите попытку.", "usePassword": "Войти с паролем", "differentAccount": "Использовать другой аккаунт" }, "password": { "title": "Введите пароль", "label": "Пароль", "required": "Введите пароль.", "forgot": "Забыли пароль? Получите код по почте" }, "secondFactor": { "title": "Двухэтапная проверка", "description": "Введите код из приложения-аутентификатора.", "backupDescription": "Введите один из резервных кодов. Каждый код действует один раз.", "label": "Код аутентификатора", "backupLabel": "Резервный код", "useBackup": "Использовать резервный код", "useAuthenticator": "Использовать приложение-аутентификатор" }, "link": { "approvedTitle": "Вы вошли", "approvedDescription": "Вернитесь в приложение, где вы запросили вход: оно продолжит само. Эту вкладку можно закрыть.", "otherDeviceTitle": "Откройте ссылку в том же браузере", "otherDeviceDescription": "Эта ссылка работает только в браузере, где вы запросили вход. Откройте её там или введите код из письма в приложении.", "invalidTitle": "Эту ссылку нельзя использовать", "invalidDescription": "Срок её действия истёк, или она уже использована. Запросите новое письмо в приложении или введите код из последнего письма." } }, "signup": { "title": "Создайте аккаунт", "subtitle": "Выберите имя пользователя. Затем мы подтвердим вашу почту.", "createInCommons": "Создать в Commons", "backToSignInLink": "Уже есть аккаунт? Войти", "username": { "label": "Имя пользователя", "placeholder": [43], "required": "Выберите имя пользователя.", "taken": "Это имя пользователя уже занято." }, "email": { "title": "Какая у вас почта?", "subtitle": "Она нужна для входа: каждый раз мы присылаем на неё код. Её никто больше не увидит.", "label": "Эл. почта", "placeholder": [2], "invalid": "Введите корректный адрес эл. почты." }, "commonsSubtitle": "Или создайте свою личность в Commons и храните ключ сами.", "laterNote": "Пароль или приложение-аутентификатор можно добавить позже в настройках безопасности аккаунта." }, "accountSwitcher": { "loading": "Загрузка аккаунтов...", "qrHeadline": "Войдите с помощью Oxy ID", "signInWithOxy": "Войти через Oxy", "signUpWithOxy": "Зарегистрироваться через Oxy", "getCommons": "Скачать Commons", "commonsNotInstalled": "Нет Commons? Установите приложение, чтобы войти с Oxy ID.", "showQrAnyway": "У меня есть Commons на другом устройстве", "switchWhileSignedInAs": "Сменить аккаунт (вы вошли как {{name}})", "manageOnDevice": "Управление аккаунтами на этом устройстве", "continueWithOxy": "Продолжить с Oxy", "havingTrouble": "Возникли проблемы?", "progress": { "preparing": "Подготовка запроса", "awaitingApproval": "Ожидание подтверждения", "scanWithCommons": "Отсканируйте в Commons на телефоне", "continueInCommons": "Продолжите в Commons", "checkCommons": "Проверьте Commons на телефоне", "openedInCommons": "Открыто в Commons", "confirming": "Подтверждение личности", "confirmed": "Личность подтверждена" }, "signInFailures": { "denied": "Вход отклонён в Commons.", "expired": "Срок действия запроса на вход истёк. Повторите попытку.", "network": "Не удалось связаться с Oxy. Проверьте подключение и повторите попытку.", "notConfigured": "В этом приложении ещё не настроен вход.", "unsupportedFlow": "Этот вход нельзя завершить здесь.", "claimFailed": "Вход подтверждён, но завершить его не удалось. Повторите попытку.", "generic": "Не удалось войти. Повторите попытку." }, "linkOpenFailed": "Не удалось открыть ссылку. Повторите попытку." }, "common": { "stepOf": "Шаг {{step}} из {{total}}", "actions": { "back": "Назад", "continue": "Продолжить", "next": "Далее", "getStarted": "Начать", "createAccount": "Создать аккаунт", "signIn": "Войти", "verify": "Подтвердить", "resetPassword": "Сбросить пароль", "signedOut": "Вы вышли", "close": "Закрыть", "tryAgain": "Повторить" }, "links": { "recoverAccount": "Восстановить аккаунт", "signUp": "Зарегистрироваться" }, "labels": { "username": "Имя пользователя", "email": "Эл. почта", "password": "Пароль", "confirmPassword": "Подтвердите пароль" }, "revoke": "Отозвать", "errors": { "signOutAllFailed": "Не удалось выйти из всех аккаунтов. Повторите попытку." } }, "notifications": { "title": "Уведомления", "subtitle": "Push-уведомления, письма и оповещения безопасности", "updateError": "Не удалось обновить настройки уведомлений", "sections": { "channels": "Каналы", "alerts": "Оповещения", "marketing": "Маркетинг" }, "items": { "push": { "title": "Push-уведомления", "subtitle": "Оповещения на ваших устройствах в реальном времени" }, "emailDigest": { "title": "Сводка по почте", "subtitle": "Регулярная сводка активности в аккаунте" }, "securityAlerts": { "title": "Оповещения безопасности", "subtitle": "Входы, коды восстановления и смена ключей" }, "marketingEmails": { "title": "Рекламные письма", "subtitle": "Новости продуктов и иногда специальные предложения" } } }, "preferences": { "title": "Параметры", "subtitle": "Тема, анимация и региональные настройки", "sections": { "appearance": "Оформление", "language": "Язык", "region": "Регион" }, "theme": { "light": "Светлая", "dark": "Тёмная", "system": "Как в системе" }, "items": { "theme": { "title": "Тема" }, "reduceMotion": { "title": "Уменьшить движение", "subtitle": "Меньше анимации во всех приложениях Oxy", "systemOn": "Как в системе: уменьшение движения включено" }, "language": { "title": "Язык" }, "timezone": { "title": "Часовой пояс", "unknown": "Не удалось определить часовой пояс" }, "about": { "title": "О параметрах", "subtitle": "Параметры синхронизируются во всех приложениях Oxy, в которые вы входите" } } }, "connectedApps": { "title": "Подключённые приложения", "subtitle": "Управление доступом сторонних приложений", "empty": { "title": "Нет подключённых приложений", "subtitle": "Здесь появятся приложения, которым вы разрешили вход через аккаунт Oxy" }, "item": { "granted": "Доступ выдан {{relative}}", "lastUsed": "Последнее использование: {{relative}}" }, "confirm": { "title": "Отозвать доступ", "message": "Отозвать у {{name}} доступ к вашему аккаунту Oxy?" }, "toasts": { "revoked": "Доступ для {{name}} отозван", "revokeFailed": "Не удалось отозвать доступ" } }, "accountMenu": { "label": "Меню аккаунта", "manage": "Управление аккаунтом Oxy", "viewProfile": "Открыть профиль", "addAnother": "Добавить аккаунт", "signOutAll": "Выйти из всех аккаунтов", "open": "Меню аккаунта", "openHint": "Открывает меню аккаунта", "openWithUser": "Меню аккаунта {{name}}", "switching": "Смена аккаунта…", "signOutAccount": "Выйти из аккаунта {{name}}", "greeting": "Привет, {{name}}!", "switchAccount": "Сменить аккаунт", "storage": { "title": "Хранилище Oxy", "usage": "Использовано {{used}} из {{total}}", "used": "Занято", "free": "Свободно", "unavailable": "Сведения об использовании недоступны", "upgrade": "Улучшить тариф", "manage": "Управление хранилищем" }, "data": "Ваши данные в Oxy", "settings": "Настройки Oxy", "help": "Справка и отзывы", "signOut": "Выйти", "privacy": "Политика конфиденциальности", "terms": "Условия использования" }, "emailCode": { "title": "Проверьте почту", "sentTo": "Мы отправили 6-значный код на {{email}}.", "label": "Код", "resend": "Отправить новый код", "resent": "Мы отправили новый код.", "changeEmail": "Указать другой адрес", "errors": { "codeInvalid": "Код неверный, или срок его действия истёк.", "tooManyAttempts": "Слишком много неверных кодов. Запросите новый.", "expired": "Время ожидания истекло. Начните заново.", "unavailable": "Oxy сейчас не может отправить письмо. Повторите попытку позже.", "rateLimited": "Слишком много кодов. Повторите попытку позже." } }, "deleteAccount": { "keyless": { "subtitle": "@{{username}} и всё его содержимое будут удалены навсегда. Введите имя пользователя, затем подтвердите кодом, который мы пришлём на почту.", "action": "Удалить аккаунт", "done": "Ваш аккаунт удалён.", "doneDescription": "Вы вышли из аккаунта.", "keyed": "Этот аккаунт использует Commons: удалите его в Oxy Commons с помощью ключа (Настройки > Удалить аккаунт)." }, "handoff": { "elsewhereMessage": "Для удаления аккаунта нужен ключ вашей личности, а на этом устройстве его нет. Откройте Oxy Commons на устройстве, где он хранится, и перейдите в Настройки > Удалить аккаунт." } }, "linkCommons": { "title": "Привязать Commons", "subtitle": "Храните ключ сами: привяжите Commons, и этот аккаунт будет принадлежать только вам. Его адрес почты будет удалён, а вернуться в аккаунт можно будет с помощью фразы восстановления в Commons.", "scan": "На телефоне откройте Commons, выберите «У меня есть аккаунт Oxy в интернете» и отсканируйте этот код.", "waiting": "Ожидание Commons…", "compareTitle": "Сверьте код", "compare": "В Commons должен быть такой же код. Если он отличается, отмените.", "confirm": "Да, привязать Commons", "cancel": "Отмена", "doneTitle": "Commons привязан", "done": "Теперь вы сами храните ключ от этого аккаунта. Его адрес почты удалён: вернуться в аккаунт можно с помощью фразы восстановления в Commons.", "already": "Этот аккаунт уже использует Commons.", "expired": "Срок действия кода истёк.", "renew": "Показать новый код", "failed": "Не удалось привязать Commons. Повторите попытку.", "confirmTitle": "Подтвердите привязку", "confirmDescription": "Чтобы завершить, подтвердите, что это вы, кодом, который мы пришлём на почту.", "confirmPasswordDescription": "Чтобы завершить, подтвердите, что это вы, паролем.", "row": "Храните ключ сами с Commons" }, "reauth": { "title": "Подтвердите, что это вы", "emailDescription": "Мы отправим код на вашу почту, чтобы подтвердить это изменение.", "sendCode": "Отправить код", "codeSent": "Мы отправили 6-значный код на вашу почту.", "codeLabel": "Код из письма", "passwordLabel": "Текущий пароль", "usePassword": "Использовать пароль", "useEmail": "Получить код по почте", "errors": { "invalid": "Не получилось. Проверьте введённые данные и повторите попытку.", "totpRequired": "Также введите код из приложения-аутентификатора." } }, "signInSecurity": { "title": "Вход и безопасность", "subtitle": "Почта, пароль, приложение-аутентификатор и активные сеансы", "methodsTitle": "Способы входа", "notPersonal": "Входить по почте, паролю или через приложение-аутентификатор можно только в личный аккаунт.", "loadFailed": "Не удалось загрузить способы входа в этот аккаунт.", "retry": "Повторить", "noEmailWarning": "У этого аккаунта нет адреса почты. Вы входите только по паролю, и если забудете его, восстановить аккаунт будет невозможно.", "status": { "on": "Вкл.", "off": "Выкл." }, "commons": { "title": [1] }, "errors": { "lastSignInMethod": "Это ваш единственный способ входа. Сначала добавьте другой.", "passwordRequired": "Сначала задайте пароль и подтвердите им.", "emailUnchanged": "Это уже ваш адрес почты." }, "email": { "title": "Эл. почта", "none": "Нет почты", "description": "На этот адрес приходят коды и ссылки для входа, а также уведомления безопасности.", "noneDescription": "Добавьте адрес почты, чтобы входить по коду или ссылке и восстановить аккаунт, если забудете пароль.", "change": "Изменить адрес", "add": "Добавить адрес", "remove": "Удалить адрес", "removeNeedsPassword": "Чтобы удалить адрес почты, сначала задайте пароль: он станет вашим единственным способом входа.", "newLabel": "Новый адрес эл. почты", "newDescription": "Мы отправим код на новый адрес, чтобы убедиться, что он ваш.", "invalid": "Введите корректный адрес эл. почты.", "sendCode": "Отправить код", "confirmTitle": "Подтвердите новый адрес", "confirmDescription": "Введите код, отправленный на {{email}}, затем подтвердите, что это вы.", "codeLabel": "Код, отправленный на новый адрес", "save": "Сохранить адрес", "saved": "Адрес почты обновлён. На других устройствах выполнен выход.", "removeTitle": "Удаление адреса почты", "removeDescription": "Вы сможете входить только по паролю. Если вы его забудете, восстановить аккаунт будет невозможно. Подтвердите паролем.", "removed": "Адрес почты удалён. На других устройствах выполнен выход." }, "password": { "title": "Пароль", "setTitle": "Задайте пароль", "changeTitle": "Смена пароля", "description": "Входите по паролю вместо кода из письма. Используйте не менее {{min}} символов.", "newLabel": "Новый пароль", "repeatLabel": "Повторите пароль", "tooShort": "Используйте не менее {{min}} символов.", "mismatch": "Пароли не совпадают.", "signOutOthers": "Выйти на всех других устройствах", "save": "Сохранить пароль", "saved": "Пароль сохранён.", "row": "Необязательно: вход по паролю", "remove": "Удалить пароль", "removeTitle": "Удаление пароля", "removeDescription": "Вы будете входить по коду или ссылке из письма.", "removed": "Пароль удалён. На других устройствах выполнен выход." }, "totp": { "title": "Приложение-аутентификатор", "description": "После кода из письма или пароля Oxy также запросит код из приложения, например Google Authenticator или 1Password.", "setUp": "Настроить", "scan": "Отсканируйте этот QR-код в приложении-аутентификаторе или введите ключ настройки.", "secretLabel": "Ключ настройки", "codeLabel": "Код из приложения", "enable": "Включить", "enabled": "Приложение-аутентификатор включено.", "disable": "Отключить приложение-аутентификатор", "disabled": "Приложение-аутентификатор отключено.", "on": "Вкл.", "off": "Выкл.", "backupTitle": "Сохраните резервные коды", "backupDescription": "Если вы потеряете телефон, каждый код позволит войти один раз. Храните их в надёжном месте: повторно они не будут показаны.", "copy": "Копировать коды", "copied": "Резервные коды скопированы.", "savedThem": "Коды сохранены", "regenerate": "Получить новые резервные коды", "regenerateDescription": "Старые резервные коды перестанут работать.", "remaining": "Осталось резервных кодов: {{count}}", "row": "Дополнительный шаг при входе", "onWithCodes": "Вкл. · осталось резервных кодов: {{count}}" } }, "fileManagement": { "deleteFile": "Удалить файл", "confirm": "Подтвердить", "retry": "Повторить", "loadError": { "description": "Что-то пошло не так. Проверьте подключение и повторите попытку." }, "moveToTrash": "Переместить в корзину", "moveToTrashCount": "Переместить в корзину ({{count}})", "appAccess": { "title": "Приложения с доступом", "description": "Эти приложения могут открывать файл самостоятельно. Отзовите доступ, чтобы запретить это.", "empty": "Ни одно приложение не может открывать этот файл самостоятельно.", "loadError": "Не удалось загрузить приложения, которые могут открывать этот файл", "via": { "upload": "Сохранило этот файл для вас", "link": "Вы поделились им" }, "revoke": "Отозвать", "confirm": { "title": "Отозвать доступ у {{name}}?", "message": "{{name}} больше не сможет открывать этот файл, а начатое им воспроизведение сразу остановится." }, "toasts": { "revoked": "{{name}} больше не может открывать этот файл", "revokeFailed": "Не удалось отозвать доступ у {{name}}" }, "a11y": { "revoke": "Отозвать у {{name}} доступ к этому файлу" } }, "trashView": { "title": "Корзина", "subtitle": "Восстановите файлы или удалите их навсегда", "notice": "Файлы остаются в корзине, пока вы их не восстановите или не удалите, и по-прежнему занимают место в хранилище.", "emptyTitle": "Корзина пуста", "emptyDescription": "Здесь появятся файлы, перемещённые в корзину. Их можно восстановить или удалить навсегда.", "trashedOn": "Перемещено в корзину {{date}}", "deleteForever": "Удалить навсегда", "loadError": "Не удалось загрузить корзину", "a11y": { "restore": "Восстановить {{name}}", "deleteForever": "Удалить {{name}} навсегда" } }, "a11y": { "moveToTrash": "Переместить {{name}} в корзину", "deleteFile": "Удалить {{name}}", "openTrash": "Открыть корзину" }, "toasts": { "movedToTrash": "Перемещено в корзину. Файл можно восстановить из корзины.", "bulkMovedToTrash": "Перемещено в корзину файлов: {{count}}", "moveToTrashFailed": "Не удалось переместить файл в корзину", "restored": "Файл восстановлен", "notInTrash": "Этого файла больше нет в корзине.", "restoreFailed": "Не удалось восстановить файл", "deletedForever": "Файл удалён навсегда", "deleteSuccess": "Файл удалён", "deleteFailed": "Не удалось удалить файл", "fileNotFound": "Файл не найден. Возможно, он уже удалён.", "noPermission": "У вас нет прав на удаление этого файла.", "bulkDeleteSuccess": "Удалено файлов: {{count}}", "bulkDeleteFailed": "Не удалось удалить файлов: {{count}}", "bulkDeleteError": "Не удалось удалить файлы" }, "confirms": { "deleteFile": "Удалить «{{filename}}»? Это действие нельзя отменить.", "moveToTrash": "Переместить «{{filename}}» в корзину? Файл больше нигде не будет показываться, но его можно восстановить из корзины.", "moveFilesToTrash": "Переместить в корзину файлы ({{count}})? Они больше нигде не будут показываться, но их можно восстановить из корзины.", "deleteForever": "Удалить «{{filename}}» навсегда? Это действие нельзя отменить.", "deleteForeverInUse": "«{{filename}}» всё ещё используется в ваших приложениях (мест: {{count}}). При удалении файл исчезнет и оттуда. Удалить навсегда?" } }, "follow": { "pending": "Запрос отправлен", "disabled": "Здесь отключено", "named": "{{label}} {{name}}", "verbs": { "follow": { "idle": "Подписаться", "active": "Вы подписаны", "everywhere": "Отписаться везде", "undo": "Отменяет подписку на этот аккаунт", "undoNamed": "Отменяет подписку на {{name}}", "checking": "Проверка подписки", "checkingNamed": "Проверка, подписаны ли вы на {{name}}" }, "subscribe": { "idle": "Подписаться", "active": "Подписка оформлена", "everywhere": "Отменить подписку везде", "undo": "Отменяет подписку", "undoNamed": "Отменяет подписку на {{name}}", "checking": "Проверка статуса подписки", "checkingNamed": "Проверка, оформлена ли подписка на {{name}}" }, "join": { "idle": "Вступить", "active": "Вы участник", "everywhere": "Выйти везде", "undo": "Отменяет участие", "undoNamed": "Отменяет участие в {{name}}", "checking": "Проверка участия", "checkingNamed": "Проверка, состоите ли вы в {{name}}" }, "watch": { "idle": "Отслеживать", "active": "Отслеживается", "everywhere": "Перестать отслеживать везде", "undo": "Прекращает отслеживание", "undoNamed": "Прекращает отслеживание {{name}}", "checking": "Проверка отслеживания", "checkingNamed": "Проверка, отслеживаете ли вы {{name}}" } }, "all": { "idle": "Подписаться на всех", "hint": "Подписывает на все аккаунты ({{count}})", "hintOne": "Подписывает на {{count}} аккаунт", "undoHint": "Отменяет подписку на все аккаунты ({{count}})", "undoHintOne": "Отменяет подписку на {{count}} аккаунт" }, "menu": { "forDuration": "{{label}} на {{duration}}", "showIn": "Показывать в {{app}}", "hideIn": "Не показывать в {{app}}", "thisApp": "этом приложении", "options": "{{label}}: параметры", "optionsHint": "Открывает дополнительные параметры" }, "durations": { "day": "24 часа", "threeDays": "72 часа", "week": "неделю" }, "errors": { "update": "Не удалось обновить подписку", "read": "Не удалось проверить подписку", "mode": "Не удалось изменить настройку этого приложения для подписки", "offline": "Нет подключения к интернету. Проверьте соединение и повторите попытку.", "signedOut": "Войдите снова, чтобы продолжить", "forbidden": "Этому приложению это не разрешено", "notFound": "Это больше недоступно", "rateLimited": "Слишком много попыток. Повторите чуть позже." } }, "accounts": { "accountCategory": { "news": "Новости", "politics": "Политика и общество", "business": "Бизнес", "startup": "Стартапы и предпринимательство", "finance": "Финансы и инвестиции", "crypto": "Криптовалюты и Web3", "marketplace": "Маркетплейсы и объявления", "retail": "Ритейл и онлайн-торговля", "real_estate": "Недвижимость", "agency": "Агентство недвижимости", "landlord": "Аренда и управление недвижимостью", "cooperative": "Жилищный кооператив", "architecture": "Архитектура и строительство", "technology": "Технологии", "software": "ПО и разработка", "ai": "ИИ и машинное обучение", "security": "Безопасность и конфиденциальность", "automation": "Автоматизация и инструменты", "science": "Наука и исследования", "education": "Образование и обучение", "books": "Книги и литература", "health": "Здоровье и медицина", "fitness": "Фитнес и благополучие", "sports": "Спорт", "gaming": "Игры и киберспорт", "music": "Музыка", "film": "Кино и ТВ", "podcast": "Подкасты и аудио", "art": "Искусство и дизайн", "photography": "Фотография", "comedy": "Юмор", "food": "Еда и напитки", "travel": "Путешествия и места", "fashion": "Мода и красота", "home_garden": "Дом и сад", "diy": "Своими руками", "automotive": "Автомобили", "animals": "Животные и питомцы", "family": "Семья и дети", "nonprofit": "НКО и благотворительность", "government": "Госорганы и госсектор", "community": "Местное сообщество", "activism": "Активизм и защита интересов", "environment": "Экология и устойчивое развитие", "religion": "Религия и духовность", "other": "Другое" }, "members": { "title": "Участники" }, "settings": { "title": "Настройки аккаунта", "subtitle": "Управляйте профилем, участниками и доступом этого аккаунта.", "save": "Сохранить изменения", "displayName": { "label": "Отображаемое имя", "invalidChars": "Используйте только буквы, пробелы, апострофы и разделители имени", "invalidTitle": "Используйте обычный текст без < и > (до 300 символов)" }, "bio": { "label": "О себе (необязательно)" }, "picture": { "change": "Изменить фото" }, "categories": { "title": "Категории", "footer": "Первая категория — основная, она показывается в профиле. Не более {{max}}.", "primary": "Основная", "makePrimary": "Сделать основной", "remove": "Удалить {{category}}", "add": "Добавить категорию", "atCap": "Не более {{max}}. Удалите одну, чтобы добавить другую.", "unavailable": "Недоступная категория" }, "sections": { "access": "Доступ", "dangerZone": "Опасная зона" }, "members": { "subtitle": "Приглашайте людей и управляйте ролями" }, "archive": { "title": "Архивировать аккаунт", "subtitle": "Деактивировать этот аккаунт", "confirmTitle": "Архивировать аккаунт", "confirmDescription": "Архивировать этот аккаунт? Он будет деактивирован, а его участники потеряют доступ." }, "errors": { "missingAccount": "Аккаунт не выбран." }, "toasts": { "saved": "Аккаунт обновлён", "saveFailed": "Не удалось обновить аккаунт", "archived": "Аккаунт архивирован", "archiveFailed": "Не удалось архивировать аккаунт" } } } });
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
// Generated by scripts/generateCompactLocales.ts; do not edit.
|
|
2
|
+
import { restoreCompactLocale } from '../../compactLocale.js';
|
|
3
|
+
export default restoreCompactLocale({ "signin": { "title": "Giriş yap", "subtitle": "Oxy hesabınızı kullanın", "addAccountTitle": "Başka bir hesap ekle", "addAccountSubtitle": "Başka bir hesapla giriş yapın", "actions": { "continue": "Devam", "back": "Geri" }, "createAccountLink": "Oxy'de yeni misiniz? Hesap oluşturun", "status": { "signingIn": "Giriş yapılıyor…" }, "subtitleToApp": "{{app}} uygulamasına devam etmek için", "orContinueWith": "veya şununla devam edin", "qr": { "caption": "Giriş yapmak için Commons ile tarayın", "renew": "Yeni kod göster" }, "device": { "codeHint": "Telefonunda bu kodun göründüğünü kontrol et" }, "errors": { "rateLimited": "Çok fazla deneme yapıldı. {{seconds}} sn sonra tekrar deneyin.", "invalidCredentials": "Kullanıcı adı, e-posta veya şifre yanlış. Bu e-postayı birden fazla hesap kullanıyorsa kullanıcı adıyla giriş yapın.", "emailAccountsFull": "Bu e-postaya bağlanabilecek hesap sayısı doldu.", "codeInvalid": "Kod yanlış veya süresi dolmuş.", "requestExpired": "Bu girişin süresi doldu. Yeni bir e-posta gönderin.", "secondFactorInvalid": "Kod yanlış. Güncel kodu deneyin.", "originNotAllowed": "Burada giriş yapılamıyor.", "generic": "Bir sorun oluştu. Lütfen tekrar deneyin.", "notConfigured": "Giriş kullanılamıyor", "notConfiguredDescription": "{{app}} henüz giriş için ayarlanmadı. Uygulamanın geliştiricisiyle iletişime geçin.", "failed": "Giriş başlatılamadı", "failedDescription": "Bir sorun oluştu. Lütfen tekrar deneyin." }, "emailAccounts": { "title": "Bir hesap seçin", "description": "{{identifier}} için birden fazla hesap var. Giriş yapmak istediğiniz hesabı seçin." }, "chooser": { "subtitleToApp": "{{app}} uygulamasına devam etmek için", "title": "Bir hesap seçin", "subtitle": "Aşağıdaki hesaplardan biriyle devam edin veya başka bir hesap kullanın.", "useAnother": "Başka bir hesap kullan", "continueAs": "{{name}} olarak devam et" }, "terms": { "before": "Devam ederek şunları kabul etmiş olursunuz:", "termsLink": "Hizmet Şartları", "and": "ve", "privacyLink": "Gizlilik Politikası" }, "noAccount": "Hesabınız yok mu?", "createAccount": "Hesap oluştur", "identifier": { "label": "E-posta veya kullanıcı adı", "placeholder": "ornek@example.com", "required": "E-postanızı veya kullanıcı adınızı girin." }, "checkEmail": { "title": "E-postanızı kontrol edin", "description": "{{identifier}} ile eşleşen bir hesap varsa ona bir kod ve giriş bağlantısı gönderdik.", "codeLabel": "Kod", "codeHint": "E-postadaki kodu yazın veya e-postadaki bağlantıyı bu tarayıcıda açın.", "codeHasLetters": "Kodunuzda harf var mı?", "codeDigitsOnly": "Kodunuz yalnızca rakamlardan mı oluşuyor?", "resend": "Yeni e-posta gönder", "resendIn": "{{seconds}} sn sonra yeni e-posta gönder", "resent": "Yeni bir e-posta gönderdik.", "retryLater": "Zaten birkaç e-posta gönderdik. Birkaç dakika bekleyip tekrar deneyin.", "usePassword": "Bunun yerine şifrenizi kullanın", "differentAccount": "Farklı bir hesap kullan" }, "password": { "title": "Şifrenizi girin", "label": "Şifre", "required": "Şifrenizi girin.", "forgot": "Unuttunuz mu? E-postayla kod alın" }, "secondFactor": { "title": "İki adımlı doğrulama", "description": "Kimlik doğrulama uygulamanızdaki kodu girin.", "backupDescription": "Yedek kodlarınızdan birini girin. Her kod yalnızca bir kez çalışır.", "label": "Doğrulama kodu", "backupLabel": "Yedek kod", "useBackup": "Yedek kod kullan", "useAuthenticator": "Kimlik doğrulama uygulamanızı kullanın" }, "link": { "approvedTitle": "Giriş yaptınız", "approvedDescription": "Giriş isteğinde bulunduğunuz uygulamaya dönün: işlem kendiliğinden devam eder. Bu sekmeyi kapatabilirsiniz.", "otherDeviceTitle": "Bağlantıyı aynı tarayıcıda açın", "otherDeviceDescription": "Bu bağlantı yalnızca giriş isteğinde bulunduğunuz tarayıcıda çalışır. Bağlantıyı orada açın veya e-postadaki kodu uygulamaya yazın.", "invalidTitle": "Bu bağlantı kullanılamıyor", "invalidDescription": "Süresi dolmuş veya zaten kullanılmış. Uygulamadan yeni bir e-posta isteyin veya en son e-postadaki kodu yazın." } }, "signup": { "title": "Hesabınızı oluşturun", "subtitle": "Kullanıcı adınızı seçin. Ardından e-postanızı doğrulayalım.", "createInCommons": "Bunun yerine Commons'ta oluşturun", "backToSignInLink": "Zaten hesabınız var mı? Giriş yapın", "username": { "label": "Kullanıcı adı", "placeholder": "adiniz", "required": "Bir kullanıcı adı seçin.", "taken": "Bu kullanıcı adı alınmış." }, "email": { "title": "E-postanız nedir?", "subtitle": "Onunla giriş yaparsınız: her seferinde size bir kod göndeririz. Başka kimse göremez.", "label": "E-posta", "placeholder": "ornek@example.com", "invalid": "Geçerli bir e-posta adresi girin." }, "commonsSubtitle": "Ya da kimliğinizi Commons'ta oluşturun ve anahtarınızı kendiniz saklayın.", "laterNote": "Daha sonra hesabınızın güvenlik ayarlarından şifre veya kimlik doğrulama uygulaması ekleyebilirsiniz." }, "accountSwitcher": { "loading": "Hesaplar yükleniyor...", "qrHeadline": "Oxy kimliğinizle giriş yapın", "signInWithOxy": "Oxy ile giriş yap", "signUpWithOxy": "Oxy ile kaydol", "getCommons": "Commons'ı indir", "commonsNotInstalled": "Commons yok mu? Oxy kimliğinizle giriş yapmak için uygulamayı indirin.", "showQrAnyway": "Commons başka bir cihazımda var", "switchWhileSignedInAs": "Hesap değiştir, {{name}} olarak giriş yapıldı", "manageOnDevice": "Bu cihazdaki hesapları yönet", "continueWithOxy": "Oxy ile devam et", "havingTrouble": "Sorun mu yaşıyorsunuz?", "progress": { "preparing": "İstek hazırlanıyor", "awaitingApproval": "Onay bekleniyor", "scanWithCommons": "Telefonunuzdaki Commons ile tarayın", "continueInCommons": "Commons'ta devam edin", "checkCommons": "Telefonunuzdaki Commons'ı kontrol edin", "openedInCommons": "Commons'ta açıldı", "confirming": "Kimlik doğrulanıyor", "confirmed": "Kimlik doğrulandı" }, "signInFailures": { "denied": "Giriş Commons'ta reddedildi.", "expired": "Bu giriş isteğinin süresi doldu. Lütfen tekrar deneyin.", "network": "Oxy'ye ulaşılamadı. Bağlantınızı kontrol edip tekrar deneyin.", "notConfigured": "Bu uygulama henüz giriş için ayarlanmadı.", "unsupportedFlow": "Bu giriş burada tamamlanamıyor.", "claimFailed": "Giriş onaylandı ancak tamamlanamadı. Lütfen tekrar deneyin.", "generic": "Giriş başarısız oldu. Lütfen tekrar deneyin." }, "linkOpenFailed": "Bağlantı açılamadı. Lütfen tekrar deneyin." }, "common": { "stepOf": "Adım {{step}}/{{total}}", "actions": { "back": "Geri", "continue": "Devam", "next": "İleri", "getStarted": "Başlayın", "createAccount": "Hesap Oluştur", "signIn": "Giriş Yap", "verify": "Doğrula", "resetPassword": "Şifreyi Sıfırla", "signedOut": "Çıkış yapıldı", "close": "Kapat", "tryAgain": "Tekrar dene" }, "links": { "recoverAccount": "Hesabınızı kurtarın", "signUp": "Kaydol" }, "labels": { "username": "Kullanıcı Adı", "email": "E-posta", "password": "Şifre", "confirmPassword": "Şifreyi Onayla" }, "revoke": "İptal et", "errors": { "signOutAllFailed": "Tüm hesaplardan çıkış yapılırken bir sorun oluştu. Lütfen tekrar deneyin." } }, "notifications": { "title": "Bildirimler", "subtitle": "Anlık, e-posta ve güvenlik bildirimlerini yönetin", "updateError": "Bildirim tercihleri güncellenemedi", "sections": { "channels": "Kanallar", "alerts": "Uyarılar", "marketing": "Pazarlama" }, "items": { "push": { "title": "Anlık bildirimler", "subtitle": "Cihazlarınızda gerçek zamanlı uyarılar" }, "emailDigest": { "title": "E-posta özeti", "subtitle": "Hesap etkinliğinizin dönemsel özeti" }, "securityAlerts": { "title": "Güvenlik uyarıları", "subtitle": "Girişler, kurtarma kodları ve anahtar değişiklikleri" }, "marketingEmails": { "title": "Pazarlama e-postaları", "subtitle": "Ürün haberleri ve ara sıra kampanyalar" } } }, "preferences": { "title": "Tercihler", "subtitle": "Tema, hareket ve bölge ayarları", "sections": { "appearance": "Görünüm", "language": "Dil", "region": "Bölge" }, "theme": { "light": "Açık", "dark": "Koyu", "system": "Sistem varsayılanı" }, "items": { "theme": { "title": "Tema" }, "reduceMotion": { "title": "Hareketi azalt", "subtitle": "Oxy uygulamalarında animasyonları en aza indirin", "systemOn": "Sistem ayarı uygulanıyor: hareketi azaltma açık" }, "language": { "title": "Dil" }, "timezone": { "title": "Saat dilimi", "unknown": "Saat dilimi algılanamadı" }, "about": { "title": "Tercihler hakkında", "subtitle": "Tercihler, giriş yaptığınız tüm Oxy uygulamalarında eşitlenir" } } }, "connectedApps": { "title": "Bağlı uygulamalar", "subtitle": "Üçüncü taraf uygulama erişimini yönetin", "empty": { "title": "Bağlı uygulama yok", "subtitle": "Oxy hesabınızla giriş yapmasına izin verdiğiniz uygulamalar burada görünür" }, "item": { "granted": "{{relative}} izin verildi", "lastUsed": "Son kullanım: {{relative}}" }, "confirm": { "title": "Erişimi iptal et", "message": "{{name}} uygulamasının Oxy hesabınıza erişimi iptal edilsin mi?" }, "toasts": { "revoked": "{{name}} uygulamasının erişimi iptal edildi", "revokeFailed": "Erişim iptal edilemedi" } }, "accountMenu": { "label": "Hesap menüsü", "manage": "Oxy hesabınızı yönetin", "viewProfile": "Profili görüntüle", "addAnother": "Başka bir hesap ekle", "signOutAll": "Tüm hesaplardan çıkış yap", "open": "Hesap menüsü", "openHint": "Hesap menüsünü açar", "openWithUser": "{{name}} için hesap menüsü", "switching": "Hesap değiştiriliyor…", "signOutAccount": "{{name}} hesabından çıkış yap", "greeting": "Merhaba {{name}}!", "switchAccount": "Hesap değiştir", "storage": { "title": "Oxy depolama alanı", "usage": "{{used}} / {{total}} kullanıldı", "used": "Kullanılan", "free": "Boş", "unavailable": "Kullanım ayrıntıları alınamıyor", "upgrade": "Planı yükselt", "manage": "Depolama alanını yönet" }, "data": "Oxy'deki verileriniz", "settings": "Oxy ayarları", "help": "Yardım ve geri bildirim", "signOut": "Çıkış yap", "privacy": "Gizlilik Politikası", "terms": "Hizmet Şartları" }, "emailCode": { "title": "E-postanızı kontrol edin", "sentTo": "{{email}} adresine 6 haneli bir kod gönderdik.", "label": "Kod", "resend": "Yeni kod gönder", "resent": "Yeni bir kod gönderdik.", "changeEmail": "Başka bir e-posta kullan", "errors": { "codeInvalid": "Kod yanlış veya süresi dolmuş.", "tooManyAttempts": "Çok fazla yanlış kod girildi. Yeni bir kod isteyin.", "expired": "Bu işlem çok uzun sürdü. Baştan başlayın.", "unavailable": "Oxy şu anda e-posta gönderemiyor. Daha sonra tekrar deneyin.", "rateLimited": "Çok fazla kod istendi. Daha sonra tekrar deneyin." } }, "deleteAccount": { "keyless": { "subtitle": "@{{username}} ve içindeki her şey kalıcı olarak silinir. Kullanıcı adınızı yazın, ardından size e-postayla göndereceğimiz kodla onaylayın.", "action": "Hesabı sil", "done": "Hesabınız silindi.", "doneDescription": "Oturumunuz kapatıldı.", "keyed": "Bu hesap Commons kullanıyor: hesabın anahtarıyla Oxy Commons'ta Ayarlar > Hesabı sil bölümünden silin." }, "handoff": { "elsewhereMessage": "Hesabınızı silmek için kimlik anahtarınız gerekiyor ve bu anahtar bu cihazda değil. Anahtarın bulunduğu cihazda Oxy Commons'ı açın ve Ayarlar > Hesabı sil bölümüne gidin." } }, "linkCommons": { "title": "Commons'ı bağla", "subtitle": "Anahtarınızı kendiniz saklayın: Commons'ı bağladığınızda bu hesap yalnızca size ait olur. Hesabın e-postası silinir ve hesaba yeniden erişmenin yolu Commons'taki kurtarma ifadeniz olur.", "scan": "Telefonunuzda Commons'ı açın, “Web'de bir Oxy hesabım var” seçeneğini seçin ve bu kodu tarayın.", "waiting": "Commons bekleniyor…", "compareTitle": "Kodu kontrol edin", "compare": "Commons aynı kodu gösterir. Göstermiyorsa iptal edin.", "confirm": "Evet, Commons'ı bağla", "cancel": "İptal", "doneTitle": "Commons bağlandı", "done": "Bu hesabın anahtarı artık sizde. E-postası silindi: hesaba yeniden erişmenin yolu Commons'taki kurtarma ifadeniz.", "already": "Bu hesap zaten Commons kullanıyor.", "expired": "Bu kodun süresi doldu.", "renew": "Yeni kod göster", "failed": "Commons bağlanamadı. Tekrar deneyin.", "confirmTitle": "Bağlantıyı onaylayın", "confirmDescription": "Bitirmek için size e-postayla gönderdiğimiz kodla siz olduğunuzu onaylayın.", "confirmPasswordDescription": "Bitirmek için şifrenizle siz olduğunuzu onaylayın.", "row": "Commons ile anahtarınızı kendiniz saklayın" }, "reauth": { "title": "Siz olduğunuzu onaylayın", "emailDescription": "Bu değişikliği onaylamak için e-postanıza bir kod göndereceğiz.", "sendCode": "Kod gönder", "codeSent": "E-postanıza 6 haneli bir kod gönderdik.", "codeLabel": "E-postadaki kod", "passwordLabel": "Mevcut şifre", "usePassword": "Bunun yerine şifrenizi kullanın", "useEmail": "Bunun yerine e-postayla kod alın", "errors": { "invalid": "Olmadı. Yazdığınızı kontrol edip tekrar deneyin.", "totpRequired": "Kimlik doğrulama uygulamanızdaki kodu da girin." } }, "signInSecurity": { "title": "Giriş ve güvenlik", "subtitle": "E-posta, şifre, kimlik doğrulama uygulaması ve oturum açtığınız yerler", "methodsTitle": "Giriş yöntemleri", "notPersonal": "Yalnızca kişisel hesaplar e-posta, şifre veya kimlik doğrulama uygulamasıyla giriş yapabilir.", "loadFailed": "Bu hesabın giriş yöntemleri yüklenemedi.", "retry": "Tekrar dene", "noEmailWarning": "Bu hesapta e-posta yok. Yalnızca şifrenizle giriş yaparsınız; şifrenizi unutursanız hesabı geri almanın bir yolu yoktur.", "status": { "on": "Açık", "off": "Kapalı" }, "commons": { "title": [1] }, "errors": { "lastSignInMethod": "Bu, tek giriş yönteminiz. Önce başka bir yöntem ekleyin.", "passwordRequired": "Önce bir şifre belirleyin ve onunla onaylayın.", "emailUnchanged": "Bu zaten sizin e-postanız." }, "email": { "title": "E-posta", "none": "E-posta yok", "description": "Giriş kodları, giriş bağlantıları ve güvenlik bildirimleri bu adrese gönderilir.", "noneDescription": "Kod veya bağlantıyla giriş yapmak ve şifrenizi unutursanız hesabınızı geri almak için bir e-posta ekleyin.", "change": "E-postayı değiştir", "add": "E-posta ekle", "remove": "E-postayı kaldır", "removeNeedsPassword": "E-postanızı kaldırmak için önce bir şifre belirleyin: tek giriş yönteminiz o olacak.", "newLabel": "Yeni e-posta adresi", "newDescription": "Size ait olduğunu doğrulamak için yeni adrese bir kod göndereceğiz.", "invalid": "Geçerli bir e-posta adresi girin.", "sendCode": "Kod gönder", "confirmTitle": "Yeni e-postayı onaylayın", "confirmDescription": "{{email}} adresine gönderdiğimiz kodu girin, ardından siz olduğunuzu onaylayın.", "codeLabel": "Yeni e-postaya gönderilen kod", "save": "E-postayı kaydet", "saved": "E-postanız güncellendi. Diğer cihazlarda oturum kapatıldı.", "removeTitle": "E-postanızı kaldırın", "removeDescription": "Yalnızca şifrenizle giriş yapacaksınız. Şifrenizi unutursanız hesabı geri almanın bir yolu yok. Şifrenizle onaylayın.", "removed": "E-postanız kaldırıldı. Diğer cihazlarda oturum kapatıldı." }, "password": { "title": "Şifre", "setTitle": "Şifre belirleyin", "changeTitle": "Şifrenizi değiştirin", "description": "E-postayla gelen kod yerine şifrenizle giriş yapın. En az {{min}} karakter kullanın.", "newLabel": "Yeni şifre", "repeatLabel": "Şifreyi tekrarlayın", "tooShort": "En az {{min}} karakter kullanın.", "mismatch": "Şifreler eşleşmiyor.", "signOutOthers": "Diğer tüm cihazlarda oturumu kapat", "save": "Şifreyi kaydet", "saved": "Şifreniz kaydedildi.", "row": "İsteğe bağlı: şifreyle giriş yapın", "remove": "Şifreyi kaldır", "removeTitle": "Şifrenizi kaldırın", "removeDescription": "E-postanıza gönderilen kod veya bağlantıyla giriş yapacaksınız.", "removed": "Şifreniz kaldırıldı. Diğer cihazlarda oturum kapatıldı." }, "totp": { "title": "Kimlik doğrulama uygulaması", "description": "Oxy, e-posta kodunuzdan veya şifrenizden sonra Google Authenticator ya da 1Password gibi bir uygulamadan da kod ister.", "setUp": "Kur", "scan": "Bu QR kodunu kimlik doğrulama uygulamanızla tarayın veya kurulum anahtarını girin.", "secretLabel": "Kurulum anahtarı", "codeLabel": "Uygulamadaki kod", "enable": "Aç", "enabled": "Kimlik doğrulama uygulaması açık.", "disable": "Kimlik doğrulama uygulamasını kapat", "disabled": "Kimlik doğrulama uygulaması kapalı.", "on": "Açık", "off": "Kapalı", "backupTitle": "Yedek kodlarınızı kaydedin", "backupDescription": "Telefonunuzu kaybederseniz her kodla bir kez giriş yapabilirsiniz. Kodları güvenli bir yerde saklayın: tekrar gösterilmeyecekler.", "copy": "Kodları kopyala", "copied": "Yedek kodlar kopyalandı.", "savedThem": "Kaydettim", "regenerate": "Yeni yedek kodlar al", "regenerateDescription": "Eski yedek kodlarınız artık çalışmaz.", "remaining": "{{count}} yedek kod kaldı", "row": "Giriş yaparken ikinci bir adım", "onWithCodes": "Açık · {{count}} yedek kod kaldı" } }, "fileManagement": { "deleteFile": "Dosyayı Sil", "confirm": "Onayla", "retry": "Tekrar dene", "loadError": { "description": "Bir sorun oluştu. Bağlantınızı kontrol edip tekrar deneyin." }, "moveToTrash": "Çöp kutusuna taşı", "moveToTrashCount": "Çöp kutusuna taşı ({{count}})", "appAccess": { "title": "Erişimi olan uygulamalar", "description": "Bu uygulamalar bu dosyayı kendi başlarına açabilir. Bu erişimi kaldırmak için uygulamanın iznini iptal edin.", "empty": "Hiçbir uygulama bu dosyayı kendi başına açamıyor.", "loadError": "Bu dosyayı açabilen uygulamalar yüklenemedi", "via": { "upload": "Bu dosyayı sizin için depoladı", "link": "Siz paylaştınız" }, "revoke": "İptal et", "confirm": { "title": "{{name}} için erişim iptal edilsin mi?", "message": "{{name}} artık bu dosyayı açamayacak ve başlattığı oynatmalar hemen duracak." }, "toasts": { "revoked": "{{name}} artık bu dosyayı açamaz", "revokeFailed": "{{name}} için erişim iptal edilemedi" }, "a11y": { "revoke": "{{name}} için bu dosyaya erişimi iptal et" } }, "trashView": { "title": "Çöp kutusu", "subtitle": "Dosyaları geri yükleyin veya kalıcı olarak silin", "notice": "Dosyalar siz geri yükleyene veya silene kadar Çöp kutusunda kalır ve depolama alanınızda yer kaplamaya devam eder.", "emptyTitle": "Çöp kutusu boş", "emptyDescription": "Çöp kutusuna taşıdığınız dosyalar burada görünür. Bunları geri yükleyebilir veya kalıcı olarak silebilirsiniz.", "trashedOn": "{{date}} tarihinde çöp kutusuna taşındı", "deleteForever": "Kalıcı olarak sil", "loadError": "Çöp kutunuz yüklenemedi", "a11y": { "restore": "{{name}} öğesini geri yükle", "deleteForever": "{{name}} öğesini kalıcı olarak sil" } }, "a11y": { "moveToTrash": "{{name}} öğesini çöp kutusuna taşı", "deleteFile": "{{name}} öğesini sil", "openTrash": "Çöp kutusunu aç" }, "toasts": { "movedToTrash": "Çöp kutusuna taşındı. Çöp kutusundan geri yükleyebilirsiniz.", "bulkMovedToTrash": "{{count}} dosya çöp kutusuna taşındı", "moveToTrashFailed": "Dosya çöp kutusuna taşınamadı", "restored": "Dosya geri yüklendi", "notInTrash": "Bu dosya artık çöp kutusunda değil.", "restoreFailed": "Dosya geri yüklenemedi", "deletedForever": "Dosya kalıcı olarak silindi", "deleteSuccess": "Dosya başarıyla silindi", "deleteFailed": "Dosya silinemedi", "fileNotFound": "Dosya bulunamadı. Zaten silinmiş olabilir.", "noPermission": "Bu dosyayı silme izniniz yok.", "bulkDeleteSuccess": "{{count}} dosya başarıyla silindi", "bulkDeleteFailed": "{{count}} dosya silinemedi", "bulkDeleteError": "Dosyalar silinemedi" }, "confirms": { "deleteFile": "\"{{filename}}\" dosyasını silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", "moveToTrash": "\"{{filename}}\" çöp kutusuna taşınsın mı? Artık hiçbir yerde gösterilmez ve Çöp kutusundan geri yükleyebilirsiniz.", "moveFilesToTrash": "{{count}} dosya çöp kutusuna taşınsın mı? Artık hiçbir yerde gösterilmezler ve Çöp kutusundan geri yükleyebilirsiniz.", "deleteForever": "\"{{filename}}\" kalıcı olarak silinsin mi? Bu işlem geri alınamaz.", "deleteForeverInUse": "\"{{filename}}\" uygulamalarınızda hâlâ {{count}} yerde kullanılıyor. Silerseniz oradan da kaldırılır. Kalıcı olarak silinsin mi?" } }, "follow": { "pending": "İstek gönderildi", "disabled": "Burada kapalı", "named": "{{label}}: {{name}}", "verbs": { "follow": { "idle": "Takip et", "active": "Takip ediliyor", "everywhere": "Her yerde takibi bırak", "undo": "Bu hesabı takip etmeyi bırakır", "undoNamed": "{{name}} için takibi bırakır", "checking": "Takip durumu kontrol ediliyor", "checkingNamed": "{{name}} için takip durumu kontrol ediliyor" }, "subscribe": { "idle": "Abone ol", "active": "Abone olundu", "everywhere": "Her yerde aboneliği iptal et", "undo": "Aboneliği iptal eder", "undoNamed": "{{name}} aboneliğini iptal eder", "checking": "Abonelik durumu kontrol ediliyor", "checkingNamed": "{{name}} için abonelik durumu kontrol ediliyor" }, "join": { "idle": "Katıl", "active": "Katıldınız", "everywhere": "Her yerde ayrıl", "undo": "Ayrılır", "undoNamed": "{{name}} üyeliğini bırakır", "checking": "Üyelik kontrol ediliyor", "checkingNamed": "{{name}} için üyelik durumu kontrol ediliyor" }, "watch": { "idle": "İzle", "active": "İzleniyor", "everywhere": "Her yerde izlemeyi bırak", "undo": "İzlemeyi bırakır", "undoNamed": "{{name}} için izlemeyi bırakır", "checking": "İzleme durumu kontrol ediliyor", "checkingNamed": "{{name}} için izleme durumu kontrol ediliyor" } }, "all": { "idle": "Tümünü takip et", "hint": "{{count}} hesabın tümünü takip eder", "hintOne": "{{count}} hesabı takip eder", "undoHint": "{{count}} hesabın tümünü takip etmeyi bırakır", "undoHintOne": "{{count}} hesabı takip etmeyi bırakır" }, "menu": { "forDuration": "{{duration}} boyunca {{label}}", "showIn": "{{app}} içinde göster", "hideIn": "{{app}} içinde gösterme", "thisApp": "bu uygulama", "options": "{{label}} seçenekleri", "optionsHint": "Daha fazla seçenek açar" }, "durations": { "day": "24 saat", "threeDays": "72 saat", "week": "bir hafta" }, "errors": { "update": "Takip durumu güncellenemedi", "read": "Takip durumu kontrol edilemedi", "mode": "Bu takip için uygulamanın ayarı değiştirilemedi", "offline": "Çevrimdışısınız. Bağlantınızı kontrol edip tekrar deneyin.", "signedOut": "Devam etmek için tekrar giriş yapın", "forbidden": "Bu uygulamanın bunu yapma izni yok", "notFound": "Bu artık kullanılamıyor", "rateLimited": "Çok fazla deneme yapıldı. Biraz sonra tekrar deneyin." } }, "accounts": { "accountCategory": { "news": "Haberler", "politics": "Siyaset ve politika", "business": "İş dünyası", "startup": "Girişimler ve girişimcilik", "finance": "Finans ve yatırım", "crypto": "Kripto ve web3", "marketplace": "Pazar yeri ve ilanlar", "retail": "Perakende ve e-ticaret", "real_estate": "Gayrimenkul", "agency": "Emlak ofisi", "landlord": "Ev sahipliği ve mülk yönetimi", "cooperative": "Konut kooperatifi", "architecture": "Mimarlık ve inşaat", "technology": "Teknoloji", "software": "Yazılım ve geliştirme", "ai": "Yapay zekâ ve makine öğrenimi", "security": "Güvenlik ve gizlilik", "automation": "Otomasyon ve araçlar", "science": "Bilim ve araştırma", "education": "Eğitim ve öğretim", "books": "Kitaplar ve yazarlık", "health": "Sağlık ve tıp", "fitness": "Fitness ve sağlıklı yaşam", "sports": "Spor", "gaming": "Oyun ve e-spor", "music": "Müzik", "film": "Film ve TV", "podcast": "Podcast ve ses", "art": "Sanat ve tasarım", "photography": "Fotoğrafçılık", "comedy": "Komedi", "food": "Yeme ve içme", "travel": "Seyahat ve mekânlar", "fashion": "Moda ve güzellik", "home_garden": "Ev ve bahçe", "diy": "Kendin yap ve üretim", "automotive": "Otomobil ve sürüş", "animals": "Hayvanlar ve evcil hayvanlar", "family": "Aile ve ebeveynlik", "nonprofit": "Kâr amacı gütmeyen ve yardım kuruluşları", "government": "Devlet ve kamu sektörü", "community": "Yerel topluluk", "activism": "Aktivizm ve savunuculuk", "environment": "Çevre ve sürdürülebilirlik", "religion": "Din ve maneviyat", "other": "Diğer" }, "members": { "title": "Üyeler" }, "settings": { "title": "Hesap ayarları", "subtitle": "Bu hesabın profilini, üyelerini ve erişimini yönetin.", "save": "Değişiklikleri kaydet", "displayName": { "label": "Görünen ad", "invalidChars": "Yalnızca harf, boşluk, kesme işareti ve ad ayırıcıları kullanın", "invalidTitle": "< veya > içermeyen düz metin kullanın (en fazla 300 karakter)" }, "bio": { "label": "Biyografi (isteğe bağlı)" }, "picture": { "change": "Resmi değiştir" }, "categories": { "title": "Kategoriler", "footer": "İlk kategori, profilde gösterilen ana kategoridir. En fazla {{max}}.", "primary": "Ana", "makePrimary": "Ana yap", "remove": "Kaldır: {{category}}", "add": "Kategori ekle", "atCap": "En fazla {{max}}. Başka bir tane eklemek için birini kaldırın.", "unavailable": "Kullanılamayan kategori" }, "sections": { "access": "Erişim", "dangerZone": "Tehlikeli bölge" }, "members": { "subtitle": "Kişileri davet edin ve rolleri yönetin" }, "archive": { "title": "Hesabı arşivle", "subtitle": "Bu hesabı devre dışı bırakın", "confirmTitle": "Hesabı arşivle", "confirmDescription": "Bu hesap arşivlensin mi? Hesap devre dışı bırakılacak ve üyeleri erişimini kaybedecek." }, "errors": { "missingAccount": "Hesap seçilmedi." }, "toasts": { "saved": "Hesap güncellendi", "saveFailed": "Hesap güncellenemedi", "archived": "Hesap arşivlendi", "archiveFailed": "Hesap arşivlenemedi" } } } });
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
// Generated by scripts/generateCompactLocales.ts; do not edit.
|
|
2
|
+
import { restoreCompactLocale } from '../../compactLocale.js';
|
|
3
|
+
export default restoreCompactLocale({ "signin": { "title": "登录", "subtitle": "使用你的 Oxy 账号", "addAccountTitle": "添加其他账号", "addAccountSubtitle": "使用另一个账户登录", "actions": { "continue": "继续", "back": "返回" }, "createAccountLink": "初次使用 Oxy?创建账户", "status": { "signingIn": "正在登录…" }, "subtitleToApp": "以继续前往 {{app}}", "orContinueWith": "或使用以下方式继续", "qr": { "caption": "使用 Commons 扫码登录", "renew": "显示新的二维码" }, "device": { "codeHint": "请确认手机上显示的是这个代码" }, "errors": { "rateLimited": "尝试次数过多。请在 {{seconds}} 秒后重试。", "invalidCredentials": "用户名、邮箱或密码不正确。 如果多个账号使用此邮箱,请用用户名登录。", "emailAccountsFull": "此邮箱的账号数量已达上限。", "codeInvalid": "验证码不正确或已过期。", "requestExpired": "此次登录已过期。请重新发送邮件。", "secondFactorInvalid": "验证码不正确。请使用当前的验证码。", "originNotAllowed": "此处无法登录。", "generic": "出了点问题,请重试。", "notConfigured": "无法登录", "notConfiguredDescription": "{{app}} 尚未配置登录功能。请联系该应用的开发者。", "failed": "无法开始登录", "failedDescription": "出了点问题,请重试。" }, "emailAccounts": { "title": "选择账号", "description": "{{identifier}} 有多个账号。请选择要登录的账号。" }, "chooser": { "subtitleToApp": "以继续前往 {{app}}", "title": "选择账户", "subtitle": "使用下方的账户继续,或使用其他账户。", "useAnother": "使用其他账户", "continueAs": "以 {{name}} 的身份继续" }, "terms": { "before": "继续即表示你同意我们的", "termsLink": "服务条款", "and": "和", "privacyLink": "隐私政策" }, "noAccount": "还没有账号?", "createAccount": "创建账号", "identifier": { "label": "邮箱或用户名", "placeholder": [2], "required": "请输入你的邮箱或用户名。" }, "checkEmail": { "title": "查看你的邮箱", "description": "如果有与 {{identifier}} 匹配的账户,我们已向其发送验证码和登录链接。", "codeLabel": "验证码", "codeHint": "输入邮件中的验证码,或在此浏览器中打开邮件里的链接。", "codeHasLetters": "验证码里有字母吗?", "codeDigitsOnly": "验证码只有数字吗?", "resend": "重新发送邮件", "resendIn": "{{seconds}} 秒后可重新发送邮件", "resent": "我们已发送新邮件。", "retryLater": "我们已发送了多封邮件。请等几分钟后再试。", "usePassword": "改用密码", "differentAccount": "使用其他账户" }, "password": { "title": "输入你的密码", "label": "密码", "required": "请输入你的密码。", "forgot": "忘记密码?通过邮件获取验证码" }, "secondFactor": { "title": "两步验证", "description": "输入身份验证器应用中的验证码。", "backupDescription": "输入一个备用验证码。每个只能使用一次。", "label": "身份验证器验证码", "backupLabel": "备用验证码", "useBackup": "使用备用验证码", "useAuthenticator": "使用身份验证器应用" }, "link": { "approvedTitle": "你已登录", "approvedDescription": "返回你请求登录的应用,它会自动继续。你可以关闭此标签页。", "otherDeviceTitle": "请在同一浏览器中打开链接", "otherDeviceDescription": "此链接只能在你请求登录的浏览器中使用。请在那里打开,或在应用中输入邮件里的验证码。", "invalidTitle": "此链接无法使用", "invalidDescription": "链接已过期或已被使用。请在应用中重新获取邮件,或输入最新一封邮件中的验证码。" } }, "signup": { "title": "创建你的账户", "subtitle": "选择你的用户名,然后我们确认你的邮箱。", "createInCommons": "改为在 Commons 中创建", "backToSignInLink": "已有账户?登录", "username": { "label": "用户名", "placeholder": [43], "required": "请选择用户名。", "taken": "该用户名已被占用。" }, "email": { "title": "你的邮箱是什么?", "subtitle": "你将用它登录:每次我们都会发送一个验证码。其他人看不到它。", "label": "邮箱", "placeholder": [2], "invalid": "请输入有效的邮箱地址。" }, "commonsSubtitle": "或者在 Commons 中创建你的身份,自己保管密钥。", "laterNote": "你之后可以在账户的安全设置中添加密码或身份验证器应用。" }, "accountSwitcher": { "loading": "正在加载账户...", "qrHeadline": "使用您的 Oxy 身份登录", "signInWithOxy": "使用 Oxy 登录", "signUpWithOxy": "使用 Oxy 注册", "getCommons": "获取 Commons", "commonsNotInstalled": "没有 Commons?获取应用以使用您的 Oxy ID 登录。", "showQrAnyway": "我在另一台设备上有 Commons", "switchWhileSignedInAs": "切换账号,当前登录为 {{name}}", "manageOnDevice": "管理此设备上的账号", "continueWithOxy": "使用 Oxy 继续", "havingTrouble": "遇到问题?", "progress": { "preparing": "正在准备请求", "awaitingApproval": "正在等待批准", "scanWithCommons": "请用手机上的 Commons 扫描", "continueInCommons": "请在 Commons 中继续", "checkCommons": "请查看手机上的 Commons", "openedInCommons": "已在 Commons 中打开", "confirming": "正在确认身份", "confirmed": "身份已确认" }, "signInFailures": { "denied": "登录请求已在 Commons 中被拒绝。", "expired": "登录请求已过期,请重试。", "network": "无法连接到 Oxy。请检查网络连接后重试。", "notConfigured": "此应用尚未设置登录。", "unsupportedFlow": "此登录无法在这里完成。", "claimFailed": "登录已获批准,但未能完成。请重试。", "generic": "登录失败,请重试。" }, "linkOpenFailed": "无法打开链接,请重试。" }, "common": { "stepOf": "第 {{step}} 步,共 {{total}} 步", "actions": { "back": "返回", "continue": "继续", "next": "下一步", "getStarted": "开始", "createAccount": "创建账户", "signIn": "登录", "verify": "验证", "resetPassword": "重置密码", "signedOut": "已退出", "close": "关闭", "tryAgain": "重试" }, "links": { "recoverAccount": "恢复您的账户", "signUp": "注册" }, "labels": { "username": "用户名", "email": "电子邮件", "password": "密码", "confirmPassword": "确认密码" }, "revoke": [32], "errors": { "signOutAllFailed": "退出所有账户时出现问题。请重试。" } }, "notifications": { "title": [23], "subtitle": [18], "updateError": [14], "sections": { "channels": [9], "alerts": [6], "marketing": [4] }, "items": { "push": { "title": [28], "subtitle": [29] }, "emailDigest": { "title": [12], "subtitle": [24] }, "securityAlerts": { "title": [36], "subtitle": [37] }, "marketingEmails": { "title": [20], "subtitle": [27] } } }, "preferences": { "title": [25], "subtitle": [40], "sections": { "appearance": [7], "language": [0], "region": [31] }, "theme": { "light": [17], "dark": [11], "system": [38] }, "items": { "theme": { "title": [39] }, "reduceMotion": { "title": [30], "subtitle": [21], "systemOn": [15] }, "language": { "title": [0] }, "timezone": { "title": [41], "unknown": [42] }, "about": { "title": [5], "subtitle": [26] } } }, "connectedApps": { "title": [10], "subtitle": [19], "empty": { "title": [22], "subtitle": [8] }, "item": { "granted": "已于 {{relative}} 授权", "lastUsed": [16] }, "confirm": { "title": [33], "message": [34] }, "toasts": { "revoked": [35], "revokeFailed": [13] } }, "accountMenu": { "label": "账户菜单", "manage": "管理您的 Oxy 账户", "viewProfile": "查看个人资料", "addAnother": "添加其他账户", "signOutAll": "退出所有账户", "open": "账户菜单", "openHint": "打开账户菜单", "openWithUser": "{{name}} 的账户菜单", "switching": "正在切换账户…", "signOutAccount": "退出 {{name}}", "greeting": "你好,{{name}}!", "switchAccount": "切换账号", "storage": { "title": "Oxy 存储", "usage": "已使用 {{used}} / {{total}}", "used": "已用", "free": "可用", "unavailable": "无法获取用量详情", "upgrade": "升级方案", "manage": "管理存储" }, "data": "你在 Oxy 中的数据", "settings": "Oxy 设置", "help": "帮助与反馈", "signOut": "退出登录", "privacy": "隐私政策", "terms": "服务条款" }, "emailCode": { "title": "查看你的邮箱", "sentTo": "我们已向 {{email}} 发送了 6 位验证码。", "label": "验证码", "resend": "发送新验证码", "resent": "我们已发送新验证码。", "changeEmail": "使用其他邮箱", "errors": { "codeInvalid": "验证码不正确或已过期。", "tooManyAttempts": "错误次数过多,请重新获取验证码。", "expired": "耗时过长,请重新开始。", "unavailable": "Oxy 暂时无法发送邮件,请稍后再试。", "rateLimited": "验证码请求过多,请稍后再试。" } }, "deleteAccount": { "keyless": { "subtitle": "@{{username}} 及其中的一切将被永久删除。请输入你的用户名,然后用我们发到你邮箱的验证码确认。", "action": "删除账户", "done": "你的账户已删除。", "doneDescription": "你已退出登录。", "keyed": "此账户使用 Commons:请在 Oxy Commons 的“设置 > 删除账户”中用其密钥删除。" }, "handoff": { "elsewhereMessage": "删除账户需要你的身份密钥,而它不在此设备上。请在保存密钥的设备上打开 Oxy Commons,前往“设置 > 删除账户”。" } }, "linkCommons": { "title": "关联 Commons", "subtitle": "自己保管密钥:关联 Commons 后,此账户只属于你。它的邮箱会被删除,今后用 Commons 中的恢复短语找回账户。", "scan": "在手机上打开 Commons,选择“我在网页上有 Oxy 账户”,然后扫描此码。", "waiting": "正在等待 Commons…", "compareTitle": "核对代码", "compare": "Commons 会显示相同的代码。如果不同,请取消。", "confirm": "是的,关联 Commons", "cancel": "取消", "doneTitle": "Commons 已关联", "done": "此账户现在由你自己保管。它的邮箱已删除:今后用 Commons 中的恢复短语找回账户。", "already": "此账户已在使用 Commons。", "expired": "此代码已过期。", "renew": "显示新代码", "failed": "无法关联 Commons,请重试。", "confirmTitle": "确认关联", "confirmDescription": "最后,请用我们发到你邮箱的验证码确认是你本人。", "confirmPasswordDescription": "最后,请用你的密码确认是你本人。", "row": "用 Commons 自己保管密钥" }, "reauth": { "title": "确认是你本人", "emailDescription": "我们会向你的邮箱发送验证码,以确认此项更改。", "sendCode": "发送验证码", "codeSent": "我们已向你的邮箱发送了 6 位验证码。", "codeLabel": "邮件中的验证码", "passwordLabel": "当前密码", "usePassword": "改用密码", "useEmail": "改为通过邮件获取验证码", "errors": { "invalid": "验证失败。请检查输入内容后重试。", "totpRequired": "还需输入身份验证器应用中的验证码。" } }, "signInSecurity": { "title": "登录与安全", "subtitle": "邮箱、密码、身份验证器应用以及你的登录位置", "methodsTitle": "登录方式", "notPersonal": "只有个人账户可以使用邮箱、密码或身份验证器应用登录。", "loadFailed": "无法加载此账户的登录方式。", "retry": "重试", "noEmailWarning": "此账户没有邮箱。你只能用密码登录,如果忘记密码,将无法找回账户。", "status": { "on": "已开启", "off": "已关闭" }, "commons": { "title": [1] }, "errors": { "lastSignInMethod": "这是你唯一的登录方式。请先添加另一种方式。", "passwordRequired": "请先设置密码,并用它进行确认。", "emailUnchanged": "这已经是你的邮箱。" }, "email": { "title": "邮箱", "none": "没有邮箱", "description": "登录验证码、登录链接和安全通知都会发送到此地址。", "noneDescription": "添加邮箱后,你可以用验证码或链接登录,并在忘记密码时找回账户。", "change": "更改邮箱", "add": "添加邮箱", "remove": "移除邮箱", "removeNeedsPassword": "要移除邮箱,请先设置密码:它将成为你唯一的登录方式。", "newLabel": "新邮箱地址", "newDescription": "我们会向新地址发送验证码,以确认它属于你。", "invalid": "请输入有效的邮箱地址。", "sendCode": "发送验证码", "confirmTitle": "确认新邮箱", "confirmDescription": "输入我们发送到 {{email}} 的验证码,然后确认是你本人。", "codeLabel": "发送到新邮箱的验证码", "save": "保存邮箱", "saved": "你的邮箱已更新。其他设备已退出登录。", "removeTitle": "移除你的邮箱", "removeDescription": "你将只能用密码登录。如果忘记密码,将无法找回账户。请用密码确认。", "removed": "你的邮箱已移除。其他设备已退出登录。" }, "password": { "title": "密码", "setTitle": "设置密码", "changeTitle": "更改密码", "description": "用密码登录,而不是通过邮件验证码。至少使用 {{min}} 个字符。", "newLabel": "新密码", "repeatLabel": "再次输入密码", "tooShort": "至少使用 {{min}} 个字符。", "mismatch": "两次输入的密码不一致。", "signOutOthers": "在其他所有地方退出登录", "save": "保存密码", "saved": "你的密码已保存。", "row": "可选:使用密码登录", "remove": "移除密码", "removeTitle": "移除你的密码", "removeDescription": "你将使用发送到邮箱的验证码或链接登录。", "removed": "你的密码已移除。其他设备已退出登录。" }, "totp": { "title": "身份验证器应用", "description": "在邮件验证码或密码之后,Oxy 还会要求输入来自 Google Authenticator 或 1Password 等应用的验证码。", "setUp": "设置", "scan": "用你的身份验证器应用扫描此二维码,或输入设置密钥。", "secretLabel": "设置密钥", "codeLabel": "应用中的验证码", "enable": "开启", "enabled": "身份验证器应用已开启。", "disable": "关闭身份验证器应用", "disabled": "身份验证器应用已关闭。", "on": "已开启", "off": "已关闭", "backupTitle": "保存你的备用验证码", "backupDescription": "如果你丢失了手机,每个验证码可让你登录一次。请妥善保管:它们不会再次显示。", "copy": "复制验证码", "copied": "备用验证码已复制。", "savedThem": "我已保存", "regenerate": "获取新的备用验证码", "regenerateDescription": "你以前的备用验证码将失效。", "remaining": "剩余 {{count}} 个备用验证码", "row": "登录时的第二步验证", "onWithCodes": "已开启 · 剩余 {{count}} 个备用验证码" } }, "fileManagement": { "deleteFile": "删除文件", "confirm": "确认", "retry": "重试", "loadError": { "description": "出了点问题。请检查网络连接后重试。" }, "moveToTrash": "移到回收站", "moveToTrashCount": "移到回收站({{count}})", "appAccess": { "title": "有访问权限的应用", "description": "这些应用可以自行打开此文件。撤销某个应用的访问权限即可收回。", "empty": "没有应用可以自行打开此文件。", "loadError": "无法加载可以打开此文件的应用", "via": { "upload": "为你保存了此文件", "link": "由你分享" }, "revoke": "撤销", "confirm": { "title": "撤销 {{name}} 的访问权限?", "message": "{{name}} 将无法再打开此文件,它启动的任何播放也会立即停止。" }, "toasts": { "revoked": "{{name}} 已无法打开此文件", "revokeFailed": "无法撤销 {{name}} 的访问权限" }, "a11y": { "revoke": "撤销 {{name}} 对此文件的访问权限" } }, "trashView": { "title": "回收站", "subtitle": "恢复文件或将其永久删除", "notice": "文件会一直留在回收站中,直到你恢复或删除它们,并且仍会占用你的存储空间。", "emptyTitle": "回收站是空的", "emptyDescription": "你移到回收站的文件会显示在这里。你可以恢复它们,或将其永久删除。", "trashedOn": "于 {{date}} 移到回收站", "deleteForever": "永久删除", "loadError": "无法加载回收站", "a11y": { "restore": "恢复 {{name}}", "deleteForever": "永久删除 {{name}}" } }, "a11y": { "moveToTrash": "将 {{name}} 移到回收站", "deleteFile": "删除 {{name}}", "openTrash": "打开回收站" }, "toasts": { "movedToTrash": "已移到回收站。你可以从回收站恢复它。", "bulkMovedToTrash": "已将 {{count}} 个文件移到回收站", "moveToTrashFailed": "无法将文件移到回收站", "restored": "文件已恢复", "notInTrash": "此文件已不在回收站中。", "restoreFailed": "无法恢复文件", "deletedForever": "文件已永久删除", "deleteSuccess": "文件已删除", "deleteFailed": "无法删除文件", "fileNotFound": "找不到文件。它可能已被删除。", "noPermission": "你没有删除此文件的权限。", "bulkDeleteSuccess": "已删除 {{count}} 个文件", "bulkDeleteFailed": "{{count}} 个文件删除失败", "bulkDeleteError": "无法删除文件" }, "confirms": { "deleteFile": "确定要删除“{{filename}}”吗?此操作无法撤销。", "moveToTrash": "将“{{filename}}”移到回收站?它将不再在任何地方显示,你可以从回收站恢复它。", "moveFilesToTrash": "将 {{count}} 个文件移到回收站?它们将不再在任何地方显示,你可以从回收站恢复它们。", "deleteForever": "永久删除“{{filename}}”?此操作无法撤销。", "deleteForeverInUse": "“{{filename}}”仍在你的应用中的 {{count}} 处使用。删除后,它也会从那里消失。要永久删除吗?" } }, "follow": { "pending": "已请求", "disabled": "此处已关闭", "named": "{{label}}:{{name}}", "verbs": { "follow": { "idle": "关注", "active": "已关注", "everywhere": "在所有地方取消关注", "undo": "取消关注此账号", "undoNamed": "取消关注 {{name}}", "checking": "正在检查关注状态", "checkingNamed": "正在检查你是否关注了 {{name}}" }, "subscribe": { "idle": "订阅", "active": "已订阅", "everywhere": "在所有地方取消订阅", "undo": "取消订阅", "undoNamed": "取消订阅 {{name}}", "checking": "正在检查订阅状态", "checkingNamed": "正在检查你是否订阅了 {{name}}" }, "join": { "idle": "加入", "active": "已加入", "everywhere": "在所有地方退出", "undo": "退出", "undoNamed": "退出 {{name}}", "checking": "正在检查成员身份", "checkingNamed": "正在检查你是否是 {{name}} 的成员" }, "watch": { "idle": "追踪", "active": "追踪中", "everywhere": "在所有地方停止追踪", "undo": "停止追踪", "undoNamed": "停止追踪 {{name}}", "checking": "正在检查追踪状态", "checkingNamed": "正在检查你是否追踪了 {{name}}" } }, "all": { "idle": "全部关注", "hint": "关注全部 {{count}} 个账号", "hintOne": "关注 {{count}} 个账号", "undoHint": "取消关注全部 {{count}} 个账号", "undoHintOne": "取消关注 {{count}} 个账号" }, "menu": { "forDuration": "{{label}} {{duration}}", "showIn": "在{{app}}中显示", "hideIn": "不在{{app}}中显示", "thisApp": "此应用", "options": "{{label}}选项", "optionsHint": "打开更多选项" }, "durations": { "day": "24 小时", "threeDays": "72 小时", "week": "一周" }, "errors": { "update": "无法更新状态", "read": "无法检查状态", "mode": "无法更改此应用的设置", "offline": "你已离线。请检查网络连接后重试。", "signedOut": "请重新登录以继续", "forbidden": "此应用无权执行此操作", "notFound": "此内容已不可用", "rateLimited": "尝试次数过多,请稍后再试。" } }, "accounts": { "accountCategory": { "news": "新闻", "politics": "政治与政策", "business": "商业", "startup": "创业", "finance": "金融与投资", "crypto": "加密货币与 Web3", "marketplace": "市集与分类信息", "retail": "零售与电商", "real_estate": "房地产", "agency": "房产中介", "landlord": "房东与物业管理", "cooperative": "住房合作社", "architecture": "建筑与施工", "technology": "科技", "software": "软件与开发", "ai": "AI 与机器学习", "security": "安全与隐私", "automation": "自动化与工具", "science": "科学与研究", "education": "教育与培训", "books": "图书与写作", "health": "健康与医疗", "fitness": "健身与身心健康", "sports": "体育", "gaming": "游戏与电竞", "music": "音乐", "film": "影视", "podcast": "播客与音频", "art": "艺术与设计", "photography": "摄影", "comedy": "喜剧", "food": "美食与饮品", "travel": "旅行与地点", "fashion": "时尚与美妆", "home_garden": "家居与园艺", "diy": "DIY 与手作", "automotive": "汽车", "animals": "动物与宠物", "family": "家庭与育儿", "nonprofit": "非营利与慈善", "government": "政府与公共部门", "community": "本地社区", "activism": "行动主义与倡导", "environment": "环境与可持续发展", "religion": "宗教与灵性", "other": "其他" }, "members": { "title": "成员" }, "settings": { "title": "账户设置", "subtitle": "管理此账户的资料、成员和访问权限。", "save": "保存更改", "displayName": { "label": "显示名称", "invalidChars": "只能使用字母、空格、撇号和名称分隔符", "invalidTitle": "请使用不含 < 或 > 的纯文本(最多 300 个字符)" }, "bio": { "label": "简介(可选)" }, "picture": { "change": "更换图片" }, "categories": { "title": "类别", "footer": "第一个类别是资料中显示的主要类别。最多 {{max}} 个。", "primary": "主要", "makePrimary": "设为主要", "remove": "移除{{category}}", "add": "添加类别", "atCap": "最多 {{max}} 个。移除一个后才能添加其他类别。", "unavailable": "类别不可用" }, "sections": { "access": "访问", "dangerZone": "危险区域" }, "members": { "subtitle": "邀请成员并管理角色" }, "archive": { "title": "归档账户", "subtitle": "停用此账户", "confirmTitle": "归档账户", "confirmDescription": "要归档此账户吗?账户将被停用,其成员将失去访问权限。" }, "errors": { "missingAccount": "未选择账户。" }, "toasts": { "saved": "账户已更新", "saveFailed": "无法更新账户", "archived": "账户已归档", "archiveFailed": "无法归档账户" } } } });
|
package/dist/esm/index.js
CHANGED
|
@@ -34,6 +34,9 @@ export { ASSET_MULTIPART_UPLOAD_MAX_BYTES, assetUrlCacheTTL, MAX_UPLOAD_BYTES }
|
|
|
34
34
|
export { DirectUploadInterruptedError } from './api/directUpload.js';
|
|
35
35
|
export { buildUserDid } from './api/identity.js';
|
|
36
36
|
export { ACCOUNT_CATEGORY_IDS, MAX_ACCOUNT_CATEGORIES, SELECTABLE_ACCOUNT_CATEGORY_IDS, isSelectableAccountCategoryId, kindAcceptsAccountCategories, } from './api/accounts.js';
|
|
37
|
+
// The store's installer (ADR 0053): what a runtime that installs applications registers beside
|
|
38
|
+
// `oxy.store`, and what a store asks it.
|
|
39
|
+
export { getStoreInstaller, setStoreInstaller, StoreInstallerError, } from './api/storeInstaller.js';
|
|
37
40
|
export { REPUTATION_CACHE_PREFIX } from './api/reputation.js';
|
|
38
41
|
export { AccountNotOnDeviceError } from './api/devices.js';
|
|
39
42
|
export { OxyAppDataIdentifierError } from './api/appData.js';
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The store's installer: how a store installs, opens and updates an application on a machine
|
|
3
|
+
* that installs applications, beside `oxy.store`, which reads the catalogue.
|
|
4
|
+
*
|
|
5
|
+
* `oxy.store` says what the store lists; an installer says what the machine can do with a
|
|
6
|
+
* listing. A runtime that installs applications registers one (OxyOS's Bloom host registers one
|
|
7
|
+
* backed by the system's install service before the application's code runs, OxyOS ADR 0030
|
|
8
|
+
* decision 9; ADR 0053 here). Where none is registered — the web, iOS, Android — there is
|
|
9
|
+
* nothing to install, and a store shows what it shows without one. An application never asks
|
|
10
|
+
* which platform it runs on: it asks whether there is an installer.
|
|
11
|
+
*
|
|
12
|
+
* The installer is the store's hands, never its judge. It is given a listing's slug and nothing
|
|
13
|
+
* else: the machine resolves slug → package → release from the store's signed metadata, verifies
|
|
14
|
+
* it, and asks the person in a sheet of its own that no application can draw or press. The store
|
|
15
|
+
* learns the outcome and nothing of the sheet. Its errors say whether the machine already told the
|
|
16
|
+
* person (`told`), so a store never repeats what the system said.
|
|
17
|
+
*
|
|
18
|
+
* React-free and dependency-free, as everything in `@oxy.so/core`.
|
|
19
|
+
*/
|
|
20
|
+
/** Where a listing stands on this machine, for the action a store's page shows. */
|
|
21
|
+
export type StoreInstallState =
|
|
22
|
+
/** The store has a release this machine can run, and it is not installed: *Get*. */
|
|
23
|
+
{
|
|
24
|
+
state: 'notInstalled';
|
|
25
|
+
}
|
|
26
|
+
/** Being installed or updated: a progress ring. `fraction` is null while it cannot be told. */
|
|
27
|
+
| {
|
|
28
|
+
state: 'installing';
|
|
29
|
+
fraction: number | null;
|
|
30
|
+
}
|
|
31
|
+
/** Installed and current: *Open*. */
|
|
32
|
+
| {
|
|
33
|
+
state: 'installed';
|
|
34
|
+
version: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Installed, with a newer release: *Update*. `needsConsent` when the newer release asks for
|
|
38
|
+
* more than the installed one, which the machine asks the person for in its own sheet.
|
|
39
|
+
*/
|
|
40
|
+
| {
|
|
41
|
+
state: 'updateAvailable';
|
|
42
|
+
version: string;
|
|
43
|
+
newVersion: string;
|
|
44
|
+
needsConsent: boolean;
|
|
45
|
+
}
|
|
46
|
+
/** The store has no release this machine can run: *Not available for this computer*. */
|
|
47
|
+
| {
|
|
48
|
+
state: 'unavailable';
|
|
49
|
+
};
|
|
50
|
+
/** Why the machine could not do what the store asked. */
|
|
51
|
+
export type StoreInstallerFailure =
|
|
52
|
+
/** The machine's install service is not running. */
|
|
53
|
+
'serviceUnavailable'
|
|
54
|
+
/** The store has no release of it this machine can run. */
|
|
55
|
+
| 'notAvailable'
|
|
56
|
+
/** It is not installed (opening or updating it). */
|
|
57
|
+
| 'notInstalled'
|
|
58
|
+
/** The installer refused the request (it lacks the right to install, or it was not a person's press). */
|
|
59
|
+
| 'refused'
|
|
60
|
+
/** The install or update itself failed (a download, a verification, a compile). */
|
|
61
|
+
| 'failed';
|
|
62
|
+
/** A failure of an installer's request. */
|
|
63
|
+
export declare class StoreInstallerError extends Error {
|
|
64
|
+
readonly reason: StoreInstallerFailure;
|
|
65
|
+
/**
|
|
66
|
+
* Whether the machine already told the person, in its own sheet. A store says nothing more
|
|
67
|
+
* when it did: the system's word is the one the person reads.
|
|
68
|
+
*/
|
|
69
|
+
readonly told: boolean;
|
|
70
|
+
constructor(reason: StoreInstallerFailure, options?: {
|
|
71
|
+
told?: boolean;
|
|
72
|
+
message?: string;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/** An update the machine has for an installed application. */
|
|
76
|
+
export interface StoreUpdate {
|
|
77
|
+
/** The installer's own id for the application; what `apply` takes. Never a slug. */
|
|
78
|
+
id: string;
|
|
79
|
+
/** Its name in the person's language, from the store's signed metadata. */
|
|
80
|
+
name: string;
|
|
81
|
+
/** The version installed, and the one the update brings. */
|
|
82
|
+
version: string;
|
|
83
|
+
newVersion: string;
|
|
84
|
+
/** Bytes the machine would fetch: only what it does not have already. */
|
|
85
|
+
downloadSize: number;
|
|
86
|
+
/** What is new, in the person's language, or null when the release says nothing. */
|
|
87
|
+
releaseNotes: string | null;
|
|
88
|
+
/** The update asks for more than the installed version: the machine asks the person first. */
|
|
89
|
+
needsConsent: boolean;
|
|
90
|
+
/** Applied, waiting for the running copy to quit: it runs at its next launch. */
|
|
91
|
+
atNextLaunch: boolean;
|
|
92
|
+
}
|
|
93
|
+
/** The machine's updates for this account: one state, which every page that shows updates reads. */
|
|
94
|
+
export interface StoreUpdates {
|
|
95
|
+
updates: StoreUpdate[];
|
|
96
|
+
/** A check of the store is running. */
|
|
97
|
+
checking: boolean;
|
|
98
|
+
/** When the store was last read (ISO 8601), or null. */
|
|
99
|
+
lastChecked: string | null;
|
|
100
|
+
/** The last check failed. */
|
|
101
|
+
checkFailed: boolean;
|
|
102
|
+
}
|
|
103
|
+
/** The machine's updates, as one state that changes by itself. */
|
|
104
|
+
export interface StoreUpdatesSource {
|
|
105
|
+
/** The state last told, or null before the machine has said. */
|
|
106
|
+
current(): StoreUpdates | null;
|
|
107
|
+
/**
|
|
108
|
+
* The state as it is now, asked of the machine without reading the store. Rejects with a
|
|
109
|
+
* `StoreInstallerError` when the machine cannot say (its install service is not running).
|
|
110
|
+
*/
|
|
111
|
+
read(): Promise<StoreUpdates>;
|
|
112
|
+
/** Reads the store now. A check asked while one runs joins it. */
|
|
113
|
+
check(): Promise<StoreUpdates>;
|
|
114
|
+
/** Applies these updates; one that needs consent is asked in the machine's sheet first. */
|
|
115
|
+
apply(ids: readonly string[]): Promise<void>;
|
|
116
|
+
/** Applies every update, asking for consent in turn after the rest. */
|
|
117
|
+
applyAll(): Promise<void>;
|
|
118
|
+
/** Told each change; returns the unsubscribe. */
|
|
119
|
+
subscribe(listener: (updates: StoreUpdates) => void): () => void;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* What a runtime that installs applications gives a store. Every action that changes anything is
|
|
123
|
+
* asked from a person's press: the machine refuses what the person did not ask for.
|
|
124
|
+
*/
|
|
125
|
+
export interface StoreInstaller {
|
|
126
|
+
/**
|
|
127
|
+
* Where each listing stands. Rejects with a `StoreInstallerError` when the machine cannot say
|
|
128
|
+
* (its install service is not running): a store then shows its usual action and lets the
|
|
129
|
+
* machine say why when it is pressed.
|
|
130
|
+
*/
|
|
131
|
+
status(slugs: readonly string[]): Promise<Record<string, StoreInstallState>>;
|
|
132
|
+
/**
|
|
133
|
+
* Installs a listing's application: the machine's sheet, then the install. Resolves when the
|
|
134
|
+
* person declined in the sheet or the install is done; the progress in between is told to
|
|
135
|
+
* `subscribe`'s listeners as `installing`.
|
|
136
|
+
*/
|
|
137
|
+
install(slug: string): Promise<'installed' | 'declined'>;
|
|
138
|
+
/** Updates it, asking in the machine's sheet when the update needs the person's consent. */
|
|
139
|
+
update(slug: string): Promise<'updated' | 'declined'>;
|
|
140
|
+
/** Removes it and its data, after the machine's sheet. */
|
|
141
|
+
uninstall(slug: string): Promise<'removed' | 'declined'>;
|
|
142
|
+
/** Opens the installed application. */
|
|
143
|
+
open(slug: string): Promise<void>;
|
|
144
|
+
/** Told each listing whose state changed; returns the unsubscribe. */
|
|
145
|
+
subscribe(listener: (slug: string, state: StoreInstallState) => void): () => void;
|
|
146
|
+
/** The account's updates (a store's *Updates* page). */
|
|
147
|
+
readonly updates: StoreUpdatesSource;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Registers the machine's installer, or removes it with null. A runtime calls it once, before
|
|
151
|
+
* the application's code runs; nothing else should.
|
|
152
|
+
*/
|
|
153
|
+
export declare function setStoreInstaller(next: StoreInstaller | null): void;
|
|
154
|
+
/** The machine's installer, or null where nothing installs applications. */
|
|
155
|
+
export declare function getStoreInstaller(): StoreInstaller | null;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: readonly ["Language", "Commons", "you@example.com", "Email", "Marketing", "About preferences", "Alerts", "Appearance", "Apps you authorize to sign in with your Oxy account will appear here", "Channels", "Connected apps", "Dark", "Email digest", "Failed to revoke access", "Failed to update notification preferences", "Following system: reduce motion is on", "Last used {{relative}}", "Light", "Manage push, email, and security alerts", "Manage third-party app access", "Marketing emails", "Minimise animations across Oxy apps", "No connected apps", "Notifications", "Periodic summary of your account activity", "Preferences", "Preferences sync across every Oxy app you sign into", "Product news and occasional offers", "Push notifications", "Real-time alerts on your devices", "Reduce motion", "Region", "Revoke", "Revoke access", "Revoke {{name}}'s access to your Oxy account?", "Revoked access for {{name}}", "Security alerts", "Sign-ins, recovery codes, and key changes", "System default", "Theme", "Theme, motion, and regional settings", "Timezone", "Unable to detect timezone", "yourname"];
|
|
2
|
+
export default _default;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -45,6 +45,8 @@ export type { AppsApi, AppAssertionsApi, Application, ApplicationType, Applicati
|
|
|
45
45
|
export type { LinkedAccountsApi } from './api/linkedAccounts';
|
|
46
46
|
export type { AgencyApi, AccountCapabilityPolicy, AvailableCapabilityCatalog, CapabilityExecutionAuthorization, CreateDelegationGrantInput, DelegationCatalogBinding, DelegationGrantView, PutAccountCapabilityPolicyInput, UpdateDelegationGrantInput, } from './api/agency';
|
|
47
47
|
export type { StoreApi, StoreCategory, StoreRating, StoreListingSummary, StoreListingDetail, StoreScreenshot, StoreScreenshotPlatform, StoreReview, StoreOwnReview, WriteStoreReviewInput, StoreListingStatus, PublisherListing, WriteListingInput, AddScreenshotInput, UpdateScreenshotInput, StorePage, StorePageOptions, StoreReviewsOptions, } from './api/store';
|
|
48
|
+
export { getStoreInstaller, setStoreInstaller, StoreInstallerError, } from './api/storeInstaller';
|
|
49
|
+
export type { StoreInstallState, StoreInstaller, StoreInstallerFailure, StoreUpdate, StoreUpdates, StoreUpdatesSource, } from './api/storeInstaller';
|
|
48
50
|
export type { BillingApi, SubscriptionPlan, SubscriptionStatus, SubscriptionFeatures, Subscription, Payment, WalletTransactionType, WalletTransactionStatus, WalletTransaction, WalletPagination, WalletTransactionsPage, } from './api/billing';
|
|
49
51
|
export { REPUTATION_CACHE_PREFIX } from './api/reputation';
|
|
50
52
|
export type { ReputationApi, ReputationPage } from './api/reputation';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oxy.so/core",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.10.0",
|
|
4
4
|
"description": "OxyHQ SDK Foundation — API client, authentication, cryptographic identity, and shared utilities",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -163,16 +163,18 @@
|
|
|
163
163
|
"node": ">=20.0.0"
|
|
164
164
|
},
|
|
165
165
|
"scripts": {
|
|
166
|
-
"build": "node scripts/build-workspace-deps.mjs @oxy.so/telemetry && bun run build:cjs && bun run build:esm && bun run build:types && node scripts/mark-module-formats.mjs && node -e \"const p='../app-preset/metro/source-stamp.js';require('node:fs').existsSync(p)&&require(p).writeStamp(process.cwd())\"",
|
|
166
|
+
"build": "bun run check:compact-locales && node scripts/build-workspace-deps.mjs @oxy.so/telemetry && bun run build:cjs && bun run build:esm && bun run build:types && node scripts/mark-module-formats.mjs && node -e \"const p='../app-preset/metro/source-stamp.js';require('node:fs').existsSync(p)&&require(p).writeStamp(process.cwd())\"",
|
|
167
167
|
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
168
168
|
"build:esm": "tsc -p tsconfig.esm.json && node scripts/fix-esm-imports.mjs",
|
|
169
169
|
"build:types": "tsc -p tsconfig.types.json",
|
|
170
170
|
"clean": "rm -rf dist",
|
|
171
171
|
"typescript": "tsc --noEmit",
|
|
172
|
-
"test": "jest --passWithNoTests",
|
|
172
|
+
"test": "bun run check:compact-locales && jest --passWithNoTests",
|
|
173
173
|
"postbuild": "node scripts/verify-package-formats.mjs",
|
|
174
174
|
"verify:package": "node scripts/verify-package-formats.mjs",
|
|
175
175
|
"lint": "biome lint --error-on-warnings ./src",
|
|
176
|
+
"check:compact-locales": "bun scripts/generateCompactLocales.ts --check",
|
|
177
|
+
"generate:compact-locales": "bun scripts/generateCompactLocales.ts",
|
|
176
178
|
"generate:display-name-policy": "node scripts/generateDisplayNamePolicyRanges.mjs",
|
|
177
179
|
"test:bun": "cd bun-tests && bun test"
|
|
178
180
|
},
|