From cce440cf49889569ffc9e9705e135ff80a72e339 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Wed, 16 Jul 2025 22:00:26 -0700 Subject: [PATCH 01/12] New translations en-us.json (Russian) --- messages/ru-RU.json | 1276 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1276 insertions(+) create mode 100644 messages/ru-RU.json diff --git a/messages/ru-RU.json b/messages/ru-RU.json new file mode 100644 index 00000000..6614b8a6 --- /dev/null +++ b/messages/ru-RU.json @@ -0,0 +1,1276 @@ +{ + "setupCreate": "Создайте свою организацию, сайт и ресурсы", + "setupNewOrg": "Новая организация", + "setupCreateOrg": "Создать организацию", + "setupCreateResources": "Создать ресурсы", + "setupOrgName": "Название организации", + "orgDisplayName": "Это отображаемое имя вашей организации.", + "orgId": "ID организации", + "setupIdentifierMessage": "Это уникальный идентификатор вашей организации. Он отличается от отображаемого имени.", + "setupErrorIdentifier": "ID организации уже занят. Выберите другой.", + "componentsErrorNoMemberCreate": "Вы пока не состоите ни в одной организации. Создайте организацию для начала работы.", + "componentsErrorNoMember": "Вы пока не состоите ни в одной организации.", + "welcome": "Welcome!", + "welcomeTo": "Welcome to", + "componentsCreateOrg": "Создать организацию", + "componentsMember": "Вы состоите в {count, plural, =0 {0 организациях} one {# организации} few {# организациях} many {# организациях} other {# организациях}}.", + "componentsInvalidKey": "Обнаружены недействительные или просроченные лицензионные ключи. Соблюдайте условия лицензии для использования всех функций.", + "dismiss": "Отменить", + "componentsLicenseViolation": "Нарушение лицензии: Сервер использует {usedSites} сайтов, что превышает лицензионный лимит в {maxSites} сайтов. Соблюдайте условия лицензии для использования всех функций.", + "componentsSupporterMessage": "Спасибо за поддержку Pangolin в качестве {tier}!", + "inviteErrorNotValid": "Извините, но это приглашение не было принято или срок его действия истёк.", + "inviteErrorUser": "Извините, но приглашение, к которому вы пытаетесь получить доступ, предназначено не для этого пользователя.", + "inviteLoginUser": "Убедитесь, что вы вошли под правильным пользователем.", + "inviteErrorNoUser": "Извините, но похоже, что приглашение, к которому вы пытаетесь получить доступ, предназначено для несуществующего пользователя.", + "inviteCreateUser": "Сначала создайте аккаунт.", + "goHome": "На главную", + "inviteLogInOtherUser": "Войти под другим пользователем", + "createAnAccount": "Создать учётную запись", + "inviteNotAccepted": "Приглашение не принято", + "authCreateAccount": "Создайте учётную запись для начала работы", + "authNoAccount": "Нет учётной записи?", + "email": "Email", + "password": "Пароль", + "confirmPassword": "Подтвердите пароль", + "createAccount": "Создать учётную запись", + "viewSettings": "Посмотреть настройки", + "delete": "Удалить", + "name": "Имя", + "online": "Онлайн", + "offline": "Офлайн", + "site": "Сайт", + "dataIn": "Входящий трафик", + "dataOut": "Исходящий трафик", + "connectionType": "Тип соединения", + "tunnelType": "Тип туннеля", + "local": "Локальный", + "edit": "Редактировать", + "siteConfirmDelete": "Подтвердить удаление сайта", + "siteDelete": "Удалить сайт", + "siteMessageRemove": "После удаления сайт больше не будет доступен. Все ресурсы и целевые узлы, связанные с сайтом, также будут удалены.", + "siteMessageConfirm": "Для подтверждения введите название сайта ниже.", + "siteQuestionRemove": "Вы уверены, что хотите удалить сайт {selectedSite} из организации?", + "siteManageSites": "Управление сайтами", + "siteDescription": "Обеспечьте подключение к вашей сети через защищённые туннели", + "siteCreate": "Создать сайт", + "siteCreateDescription2": "Следуйте инструкциям ниже для создания и подключения нового сайта", + "siteCreateDescription": "Создайте новый сайт для подключения ваших ресурсов", + "close": "Закрыть", + "siteErrorCreate": "Ошибка при создании сайта", + "siteErrorCreateKeyPair": "Пара ключей или настройки сайта по умолчанию не найдены", + "siteErrorCreateDefaults": "Настройки сайта по умолчанию не найдены", + "siteNameDescription": "Отображаемое имя сайта.", + "method": "Метод", + "siteMethodDescription": "Это способ, которым вы будете открывать соединения.", + "siteLearnNewt": "Узнайте, как установить Newt в вашей системе", + "siteSeeConfigOnce": "Вы сможете увидеть конфигурацию только один раз.", + "siteLoadWGConfig": "Загрузка конфигурации WireGuard...", + "siteDocker": "Развернуть для просмотра деталей развертывания Docker", + "toggle": "Переключить", + "dockerCompose": "Docker Compose", + "dockerRun": "Docker Run", + "siteLearnLocal": "Локальные сайты не создают туннели, узнать больше", + "siteConfirmCopy": "Я скопировал(а) конфигурацию", + "searchSitesProgress": "Поиск сайтов...", + "siteAdd": "Добавить сайт", + "siteInstallNewt": "Установить Newt", + "siteInstallNewtDescription": "Запустите Newt в вашей системе", + "WgConfiguration": "Конфигурация WireGuard", + "WgConfigurationDescription": "Используйте следующую конфигурацию для подключения к вашей сети", + "operatingSystem": "Операционная система", + "commands": "Команды", + "recommended": "Рекомендуется", + "siteNewtDescription": "Для лучшего пользовательского опыта используйте Newt. Он использует WireGuard под капотом и позволяет обращаться к вашим приватным ресурсам по их LAN-адресу в вашей частной сети прямо из панели управления Pangolin.", + "siteRunsInDocker": "Работает в Docker", + "siteRunsInShell": "Работает в оболочке на macOS, Linux и Windows", + "siteErrorDelete": "Ошибка при удалении сайта", + "siteErrorUpdate": "Не удалось обновить сайт", + "siteErrorUpdateDescription": "Произошла ошибка при обновлении сайта.", + "siteUpdated": "Сайт обновлён", + "siteUpdatedDescription": "Сайт был успешно обновлён.", + "siteGeneralDescription": "Настройте общие параметры для этого сайта", + "siteSettingDescription": "Настройте параметры вашего сайта", + "siteSetting": "Настройки {siteName}", + "siteNewtTunnel": "Туннель Newt (Рекомендуется)", + "siteNewtTunnelDescription": "Простейший способ создать точку входа в вашу сеть. Дополнительная настройка не требуется.", + "siteWg": "Базовый WireGuard", + "siteWgDescription": "Используйте любой клиент WireGuard для открытия туннеля. Требуется ручная настройка NAT.", + "siteLocalDescription": "Только локальные ресурсы. Без туннелирования.", + "siteSeeAll": "Просмотреть все сайты", + "siteTunnelDescription": "Выберите способ подключения к вашему сайту", + "siteNewtCredentials": "Учётные данные Newt", + "siteNewtCredentialsDescription": "Так Newt будет выполнять аутентификацию на сервере", + "siteCredentialsSave": "Сохраните ваши учётные данные", + "siteCredentialsSaveDescription": "Вы сможете увидеть эти данные только один раз. Обязательно скопируйте их в безопасное место.", + "siteInfo": "Информация о сайте", + "status": "Статус", + "shareTitle": "Управление общими ссылками", + "shareDescription": "Создавайте общие ссылки для предоставления временного или постоянного доступа к вашим ресурсам", + "shareSearch": "Поиск общих ссылок...", + "shareCreate": "Создать общую ссылку", + "shareErrorDelete": "Не удалось удалить ссылку", + "shareErrorDeleteMessage": "Произошла ошибка при удалении ссылки", + "shareDeleted": "Ссылка удалена", + "shareDeletedDescription": "Ссылка была успешно удалена", + "shareTokenDescription": "Ваш токен доступа может быть передан двумя способами: как параметр запроса или в заголовках запроса. Он должен передаваться клиентом при каждом запросе для аутентификации.", + "accessToken": "Токен доступа", + "usageExamples": "Примеры использования", + "tokenId": "ID токена", + "requestHeades": "Заголовки запроса", + "queryParameter": "Параметр запроса", + "importantNote": "Важное примечание", + "shareImportantDescription": "Из соображений безопасности рекомендуется использовать заголовки вместо параметров запроса, когда это возможно, так как параметры запроса могут сохраняться в логах сервера или истории браузера.", + "token": "Токен", + "shareTokenSecurety": "Храните ваш токен доступа в безопасности. Не делитесь им в общедоступных местах или клиентском коде.", + "shareErrorFetchResource": "Не удалось получить ресурсы", + "shareErrorFetchResourceDescription": "Произошла ошибка при получении ресурсов", + "shareErrorCreate": "Не удалось создать общую ссылку", + "shareErrorCreateDescription": "Произошла ошибка при создании общей ссылки", + "shareCreateDescription": "Любой, у кого есть эта ссылка, может получить доступ к ресурсу", + "shareTitleOptional": "Заголовок (необязательно)", + "expireIn": "Срок действия", + "neverExpire": "Бессрочный доступ", + "shareExpireDescription": "Срок действия - это период, в течение которого ссылка будет работать и предоставлять доступ к ресурсу. После этого времени ссылка перестанет работать, и пользователи, использовавшие эту ссылку, потеряют доступ к ресурсу.", + "shareSeeOnce": "Вы сможете увидеть эту ссылку только один раз. Обязательно скопируйте её.", + "shareAccessHint": "Любой, у кого есть эта ссылка, может получить доступ к ресурсу. Делитесь ею с осторожностью.", + "shareTokenUsage": "Посмотреть использование токена доступа", + "createLink": "Создать ссылку", + "resourcesNotFound": "Ресурсы не найдены", + "resourceSearch": "Поиск ресурсов", + "openMenu": "Открыть меню", + "resource": "Ресурс", + "title": "Заголовок", + "created": "Создан", + "expires": "Истекает", + "never": "Никогда", + "shareErrorSelectResource": "Пожалуйста, выберите ресурс", + "resourceTitle": "Управление ресурсами", + "resourceDescription": "Создавайте защищённые прокси к вашим приватным приложениям", + "resourcesSearch": "Поиск ресурсов...", + "resourceAdd": "Добавить ресурс", + "resourceErrorDelte": "Ошибка при удалении ресурса", + "authentication": "Аутентификация", + "protected": "Защищён", + "notProtected": "Не защищён", + "resourceMessageRemove": "После удаления ресурс больше не будет доступен. Все целевые узлы, связанные с ресурсом, также будут удалены.", + "resourceMessageConfirm": "Для подтверждения введите название ресурса ниже.", + "resourceQuestionRemove": "Вы действительно хотите удалить ресурс {selectedResource} из организации?", + "resourceHTTP": "HTTPS-ресурс", + "resourceHTTPDescription": "Проксирование запросов к вашему приложению через HTTPS с использованием поддомена или базового домена.", + "resourceRaw": "Сырой TCP/UDP-ресурс", + "resourceRawDescription": "Проксирование запросов к вашему приложению через TCP/UDP с использованием по номеру порта.", + "resourceCreate": "Создание ресурса", + "resourceCreateDescription": "Следуйте инструкциям ниже для создания нового ресурса", + "resourceSeeAll": "Посмотреть все ресурсы", + "resourceInfo": "Информация о ресурсе", + "resourceNameDescription": "Отображаемое имя ресурса.", + "siteSelect": "Выберите сайт", + "siteSearch": "Поиск сайта", + "siteNotFound": "Сайт не найден.", + "siteSelectionDescription": "Этот сайт обеспечит подключение к ресурсу.", + "resourceType": "Тип ресурса", + "resourceTypeDescription": "Определите, как вы хотите получать доступ к вашему ресурсу", + "resourceHTTPSSettings": "Настройки HTTPS", + "resourceHTTPSSettingsDescription": "Настройте, как будет осуществляться доступ к вашему ресурсу через HTTPS", + "domainType": "Тип домена", + "subdomain": "Поддомен", + "baseDomain": "Базовый домен", + "subdomnainDescription": "Поддомен, на котором будет доступен ресурс.", + "resourceRawSettings": "Настройки TCP/UDP", + "resourceRawSettingsDescription": "Настройте, как будет осуществляться доступ к вашему ресурсу через TCP/UDP", + "protocol": "Протокол", + "protocolSelect": "Выберите протокол", + "resourcePortNumber": "Номер порта", + "resourcePortNumberDescription": "Внешний номер порта для проксирования запросов.", + "cancel": "Отмена", + "resourceConfig": "Фрагменты конфигурации", + "resourceConfigDescription": "Скопируйте и вставьте эти фрагменты конфигурации для настройки вашего TCP/UDP-ресурса", + "resourceAddEntrypoints": "Traefik: Добавить точки входа", + "resourceExposePorts": "Gerbil: Открыть порты в Docker Compose", + "resourceLearnRaw": "Узнайте, как настроить TCP/UDP-ресурсы", + "resourceBack": "Назад к ресурсам", + "resourceGoTo": "Перейти к ресурсу", + "resourceDelete": "Удалить ресурс", + "resourceDeleteConfirm": "Подтвердить удаление", + "visibility": "Видимость", + "enabled": "Включено", + "disabled": "Отключено", + "general": "Общие", + "generalSettings": "Общие настройки", + "proxy": "Прокси", + "rules": "Правила", + "resourceSettingDescription": "Настройте параметры вашего ресурса", + "resourceSetting": "Настройки {resourceName}", + "alwaysAllow": "Всегда разрешать", + "alwaysDeny": "Всегда запрещать", + "orgSettingsDescription": "Настройте общие параметры вашей организации", + "orgGeneralSettings": "Настройки организации", + "orgGeneralSettingsDescription": "Управляйте данными и конфигурацией вашей организации", + "saveGeneralSettings": "Сохранить общие настройки", + "saveSettings": "Save Settings", + "orgDangerZone": "Опасная зона", + "orgDangerZoneDescription": "Будьте осторожны: удалив организацию, вы не сможете восстановить её.", + "orgDelete": "Удалить организацию", + "orgDeleteConfirm": "Подтвердить удаление", + "orgMessageRemove": "Это действие необратимо и удалит все связанные данные.", + "orgMessageConfirm": "Для подтверждения введите название организации ниже.", + "orgQuestionRemove": "Вы действительно хотите удалить организацию {selectedOrg}?", + "orgUpdated": "Организация обновлена", + "orgUpdatedDescription": "Организация была успешно обновлена.", + "orgErrorUpdate": "Не удалось обновить организацию", + "orgErrorUpdateMessage": "Произошла ошибка при обновлении организации.", + "orgErrorFetch": "Не удалось получить организации", + "orgErrorFetchMessage": "Произошла ошибка при получении списка ваших организаций", + "orgErrorDelete": "Не удалось удалить организацию", + "orgErrorDeleteMessage": "Произошла ошибка при удалении организации.", + "orgDeleted": "Организация удалена", + "orgDeletedMessage": "Организация и её данные были удалены.", + "orgMissing": "Отсутствует ID организации", + "orgMissingMessage": "Невозможно восстановить приглашение без ID организации.", + "accessUsersManage": "Управление пользователями", + "accessUsersDescription": "Приглашайте пользователей и назначайте им роли для управления доступом к вашей организации", + "accessUsersSearch": "Поиск пользователей...", + "accessUserCreate": "Создать пользователя", + "accessUserRemove": "Удалить пользователя", + "username": "Имя пользователя", + "identityProvider": "Identity Provider", + "role": "Роль", + "nameRequired": "Имя обязательно", + "accessRolesManage": "Управление ролями", + "accessRolesDescription": "Настройте роли для управления доступом к вашей организации", + "accessRolesSearch": "Поиск ролей...", + "accessRolesAdd": "Добавить роль", + "accessRoleDelete": "Удалить роль", + "description": "Описание", + "inviteTitle": "Открытые приглашения", + "inviteDescription": "Управляйте вашими приглашениями для других пользователей", + "inviteSearch": "Поиск приглашений...", + "minutes": "мин.", + "hours": "ч.", + "days": "д.", + "weeks": "нед.", + "months": "мес.", + "years": "г.", + "day": "{count, plural, one {# день} few {# дня} many {# дней} other {# дней}}", + "apiKeysTitle": "Информация о ключе API", + "apiKeysConfirmCopy2": "Подтверидте, что вы скопировали ключ API.", + "apiKeysErrorCreate": "Ошибка при создании ключа API", + "apiKeysErrorSetPermission": "Ошибка при установке разрешений", + "apiKeysCreate": "Сгенерировать ключ API", + "apiKeysCreateDescription": "Сгенерируйте новый ключ API для вашей организации", + "apiKeysGeneralSettings": "Разрешения", + "apiKeysGeneralSettingsDescription": "Определите, что может делать этот ключ API", + "apiKeysList": "Ваш ключ API", + "apiKeysSave": "Сохраните ваш ключ API", + "apiKeysSaveDescription": "Вы сможете увидеть этот ключ только один раз. Обязательно скопируйте его в безопасное место.", + "apiKeysInfo": "Ваш ключ API:", + "apiKeysConfirmCopy": "Я скопировал(а) ключ API", + "generate": "Сгенерировать", + "done": "Готово", + "apiKeysSeeAll": "Посмотреть все ключи API", + "apiKeysPermissionsErrorLoadingActions": "Ошибка загрузки действий ключа API", + "apiKeysPermissionsErrorUpdate": "Ошибка установки разрешений", + "apiKeysPermissionsUpdated": "Разрешения обновлены", + "apiKeysPermissionsUpdatedDescription": "Разрешения были успешно обновлены.", + "apiKeysPermissionsGeneralSettings": "Разрешения", + "apiKeysPermissionsGeneralSettingsDescription": "Определите, что может делать этот ключ API", + "apiKeysPermissionsSave": "Сохранить разрешения", + "apiKeysPermissionsTitle": "Разрешения", + "apiKeys": "Ключи API", + "searchApiKeys": "Поиск ключей API...", + "apiKeysAdd": "Сгенерировать ключ API", + "apiKeysErrorDelete": "Ошибка при удалении ключа API", + "apiKeysErrorDeleteMessage": "Не удалось удалить ключ API", + "apiKeysQuestionRemove": "Вы действительно хотите удалить ключ API {selectedApiKey} из организации?", + "apiKeysMessageRemove": "После удаления ключ API больше сможет быть использован.", + "apiKeysMessageConfirm": "Для подтверждения введите название ключа API ниже.", + "apiKeysDeleteConfirm": "Подтвердить удаление", + "apiKeysDelete": "Удаление ключа API", + "apiKeysManage": "Управление ключами API", + "apiKeysDescription": "Ключи API используются для аутентификации в интеграционном API", + "apiKeysSettings": "Настройки {apiKeyName}", + "userTitle": "Управление всеми пользователями", + "userDescription": "Просмотр и управление всеми пользователями в системе", + "userAbount": "Об управлении пользователями", + "userAbountDescription": "В этой таблице отображаются все корневые объекты пользователей в системе. Каждый пользователь может принадлежать нескольким организациям. Удаление пользователя из организации не удаляет его корневой объект - он останется в системе. Чтобы полностью удалить пользователя из системы, вы должны удалить его корневой объект, используя действие удаления в этой таблице.", + "userServer": "Пользователи сервера", + "userSearch": "Поиск пользователей сервера...", + "userErrorDelete": "Ошибка при удалении пользователя", + "userDeleteConfirm": "Подтвердить удаление", + "userDeleteServer": "Удаление пользователя с сервера", + "userMessageRemove": "Пользователь будет удалён из всех организаций и полностью удалён с сервера.", + "userMessageConfirm": "Для подтверждения введите имя пользователя ниже.", + "userQuestionRemove": "Вы действительно хотите навсегда удалить {selectedUser} с сервера?", + "licenseKey": "Лицензионный ключ", + "valid": "Действителен", + "numberOfSites": "Количество сайтов", + "licenseKeySearch": "Поиск лицензионных ключей...", + "licenseKeyAdd": "Добавить лицензионный ключ", + "type": "Тип", + "licenseKeyRequired": "Лицензионный ключ обязателен", + "licenseTermsAgree": "Вы должны согласиться с условиями лицензии", + "licenseErrorKeyLoad": "Не удалось загрузить лицензионные ключи", + "licenseErrorKeyLoadDescription": "Произошла ошибка при загрузке лицензионных ключей.", + "licenseErrorKeyDelete": "Не удалось удалить лицензионный ключ", + "licenseErrorKeyDeleteDescription": "Произошла ошибка при удалении лицензионного ключа.", + "licenseKeyDeleted": "Лицензионный ключ удалён", + "licenseKeyDeletedDescription": "Лицензионный ключ был удалён.", + "licenseErrorKeyActivate": "Не удалось активировать лицензионный ключ", + "licenseErrorKeyActivateDescription": "Произошла ошибка при активации лицензионного ключа.", + "licenseAbout": "О лицензировании", + "communityEdition": "Community Edition", + "licenseAboutDescription": "Это для бизнес и корпоративных пользователей, использующих Pangolin в коммерческой среде. Если вы используете Pangolin для личного использования, вы можете игнорировать этот раздел.", + "licenseKeyActivated": "Лицензионный ключ активирован", + "licenseKeyActivatedDescription": "Лицензионный ключ был успешно активирован.", + "licenseErrorKeyRecheck": "Не удалось перепроверить лицензионные ключи", + "licenseErrorKeyRecheckDescription": "Произошла ошибка при перепроверке лицензионных ключей.", + "licenseErrorKeyRechecked": "Лицензионные ключи перепроверены", + "licenseErrorKeyRecheckedDescription": "Все лицензионные ключи были перепроверены", + "licenseActivateKey": "Активировать лицензионный ключ", + "licenseActivateKeyDescription": "Введите лицензионный ключ для его активации.", + "licenseActivate": "Активировать лицензию", + "licenseAgreement": "Установив этот флажок, вы подтверждаете, что прочитали и согласны с условиями лицензии, соответствующими уровню, связанному с вашим лицензионным ключом.", + "fossorialLicense": "Просмотреть коммерческую лицензию Fossorial и условия подписки", + "licenseMessageRemove": "Это удалит лицензионный ключ и все связанные с ним разрешения.", + "licenseMessageConfirm": "Для подтверждения введите лицензионный ключ ниже.", + "licenseQuestionRemove": "Вы уверены, что хотите удалить лицензионный ключ {selectedKey}?", + "licenseKeyDelete": "Удалить лицензионный ключ", + "licenseKeyDeleteConfirm": "Подтвердить удаление лицензионного ключа", + "licenseTitle": "Управление статусом лицензии", + "licenseTitleDescription": "Просмотр и управление лицензионными ключами в системе", + "licenseHost": "Лицензия хоста", + "licenseHostDescription": "Управление основным лицензионным ключом для хоста.", + "licensedNot": "Не лицензировано", + "hostId": "ID хоста", + "licenseReckeckAll": "Перепроверить все ключи", + "licenseSiteUsage": "Использование сайтов", + "licenseSiteUsageDecsription": "Просмотр количества сайтов, использующих эту лицензию.", + "licenseNoSiteLimit": "Нет ограничения на количество сайтов при использовании нелицензированного хоста.", + "licensePurchase": "Приобрести лицензию", + "licensePurchaseSites": "Приобрести дополнительные сайты", + "licenseSitesUsedMax": "Использовано сайтов: {usedSites} из {maxSites}", + "licenseSitesUsed": "{count, plural, =0 {0 сайтов} one {# сайт} few {# сайта} many {# сайтов} other {# сайтов}} в системе.", + "licensePurchaseDescription": "Выберите, для скольких сайтов вы хотите {selectedMode, select, license {приобрести лицензию. Вы всегда можете добавить больше сайтов позже.} other {добавить к существующей лицензии.}}", + "licenseFee": "Лицензионный сбор", + "licensePriceSite": "Цена за сайт", + "total": "Итого", + "licenseContinuePayment": "Перейти к оплате", + "pricingPage": "страница цен", + "pricingPortal": "Посмотреть портал покупок", + "licensePricingPage": "Для актуальных цен и скидок посетите ", + "invite": "Приглашения", + "inviteRegenerate": "Пересоздать приглашение", + "inviteRegenerateDescription": "Отозвать предыдущее приглашение и создать новое", + "inviteRemove": "Удалить приглашение", + "inviteRemoveError": "Не удалось удалить приглашение", + "inviteRemoveErrorDescription": "Произошла ошибка при удалении приглашения.", + "inviteRemoved": "Приглашение удалено", + "inviteRemovedDescription": "Приглашение для {email} было удалено.", + "inviteQuestionRemove": "Вы уверены, что хотите удалить приглашение {email}?", + "inviteMessageRemove": "После удаления это приглашение больше не будет действительным. Вы всегда можете пригласить пользователя заново.", + "inviteMessageConfirm": "Для подтверждения введите email адрес приглашения ниже.", + "inviteQuestionRegenerate": "Вы уверены, что хотите пересоздать приглашение для {email}? Это отзовёт предыдущее приглашение.", + "inviteRemoveConfirm": "Подтвердить удаление приглашения", + "inviteRegenerated": "Приглашение пересоздано", + "inviteSent": "Новое приглашение отправлено {email}.", + "inviteSentEmail": "Отправить email уведомление пользователю", + "inviteGenerate": "Новое приглашение создано для {email}.", + "inviteDuplicateError": "Дублирующее приглашение", + "inviteDuplicateErrorDescription": "Приглашение для этого пользователя уже существует.", + "inviteRateLimitError": "Превышен лимит запросов", + "inviteRateLimitErrorDescription": "Вы превысили лимит в 3 пересоздания в час. Попробуйте позже.", + "inviteRegenerateError": "Не удалось пересоздать приглашение", + "inviteRegenerateErrorDescription": "Произошла ошибка при пересоздании приглашения.", + "inviteValidityPeriod": "Период действия", + "inviteValidityPeriodSelect": "Выберите период действия", + "inviteRegenerateMessage": "Приглашение было пересоздано. Пользователь должен перейти по ссылке ниже для принятия приглашения.", + "inviteRegenerateButton": "Пересоздать", + "expiresAt": "Истекает", + "accessRoleUnknown": "Неизвестная роль", + "placeholder": "Заполнитель", + "userErrorOrgRemove": "Не удалось удалить пользователя", + "userErrorOrgRemoveDescription": "Произошла ошибка при удалении пользователя.", + "userOrgRemoved": "Пользователь удалён", + "userOrgRemovedDescription": "Пользователь {email} был удалён из организации.", + "userQuestionOrgRemove": "Вы уверены, что хотите удалить {email} из организации?", + "userMessageOrgRemove": "После удаления этот пользователь больше не будет иметь доступ к организации. Вы всегда можете пригласить его заново, но ему нужно будет снова принять приглашение.", + "userMessageOrgConfirm": "Для подтверждения введите имя пользователя ниже.", + "userRemoveOrgConfirm": "Подтвердить удаление пользователя", + "userRemoveOrg": "Удалить пользователя из организации", + "users": "Пользователи", + "accessRoleMember": "Участник", + "accessRoleOwner": "Владелец", + "userConfirmed": "Подтверждён", + "idpNameInternal": "Внутренний", + "emailInvalid": "Неверный адрес Email", + "inviteValidityDuration": "Пожалуйста, выберите продолжительность", + "accessRoleSelectPlease": "Пожалуйста, выберите роль", + "usernameRequired": "Имя пользователя обязательно", + "idpSelectPlease": "Пожалуйста, выберите Identity Provider", + "idpGenericOidc": "Обычный OAuth2/OIDC provider.", + "accessRoleErrorFetch": "Не удалось получить роли", + "accessRoleErrorFetchDescription": "Произошла ошибка при получении ролей", + "idpErrorFetch": "Не удалось получить идентификатор провайдера", + "idpErrorFetchDescription": "Произошла ошибка при получении поставщиков удостоверений", + "userErrorExists": "Пользователь уже существует", + "userErrorExistsDescription": "Этот пользователь уже является участником организации.", + "inviteError": "Не удалось пригласить пользователя", + "inviteErrorDescription": "Произошла ошибка при приглашении пользователя", + "userInvited": "Пользователь приглашён", + "userInvitedDescription": "Пользователь был успешно приглашён.", + "userErrorCreate": "Не удалось создать пользователя", + "userErrorCreateDescription": "Произошла ошибка при создании пользователя", + "userCreated": "Пользователь создан", + "userCreatedDescription": "Пользователь был успешно создан.", + "userTypeInternal": "Внутренний пользователь", + "userTypeInternalDescription": "Пригласите пользователя напрямую в вашу организацию.", + "userTypeExternal": "Внешний пользователь", + "userTypeExternalDescription": "Создайте пользователя через внешний Identity Provider.", + "accessUserCreateDescription": "Следуйте инструкциям ниже для создания нового пользователя", + "userSeeAll": "Просмотр всех пользователей", + "userTypeTitle": "Тип пользователя", + "userTypeDescription": "Выберите способ создание пользователя", + "userSettings": "Информация о пользователе", + "userSettingsDescription": "Введите сведения о новом пользователе", + "inviteEmailSent": "Отправить приглашение по Email", + "inviteValid": "Действительно", + "selectDuration": "Укажите срок действия", + "accessRoleSelect": "Выберите роль", + "inviteEmailSentDescription": "Email был отправлен пользователю со ссылкой доступа ниже. Он должен перейти по ссылке для принятия приглашения.", + "inviteSentDescription": "Пользователь был приглашён. Он должен перейти по ссылке ниже для принятия приглашения.", + "inviteExpiresIn": "Приглашение истечёт через {days, plural, one {# день} few {# дня} many {# дней} other {# дней}}.", + "idpTitle": "Поставщик удостоверений", + "idpSelect": "Выберите поставщика удостоверений для внешнего пользователя", + "idpNotConfigured": "Поставщики удостоверений не настроены. Пожалуйста, настройте поставщика удостоверений перед созданием внешних пользователей.", + "usernameUniq": "Это должно соответствовать уникальному имени пользователя, существующему в выбранном поставщике удостоверений.", + "emailOptional": "Email (необязательно)", + "nameOptional": "Имя (необязательно)", + "accessControls": "Контроль доступа", + "userDescription2": "Управление настройками этого пользователя", + "accessRoleErrorAdd": "Не удалось добавить пользователя в роль", + "accessRoleErrorAddDescription": "Произошла ошибка при добавлении пользователя в роль.", + "userSaved": "Пользователь сохранён", + "userSavedDescription": "Пользователь был обновлён.", + "accessControlsDescription": "Управляйте тем, к чему этот пользователь может получить доступ и что делать в организации", + "accessControlsSubmit": "Сохранить контроль доступа", + "roles": "Роли", + "accessUsersRoles": "Управление пользователями и ролями", + "accessUsersRolesDescription": "Приглашайте пользователей и добавляйте их в роли для управления доступом к вашей организации", + "key": "Ключ", + "createdAt": "Создано в", + "proxyErrorInvalidHeader": "Неверное значение пользовательского заголовка Host. Используйте формат доменного имени или оставьте пустым для сброса пользовательского заголовка Host.", + "proxyErrorTls": "Неверное имя TLS сервера. Используйте формат доменного имени или оставьте пустым для удаления имени TLS сервера.", + "proxyEnableSSL": "Включить SSL (https)", + "targetErrorFetch": "Не удалось получить цели", + "targetErrorFetchDescription": "Произошла ошибка при получении целей", + "siteErrorFetch": "Не удалось получить ресурс", + "siteErrorFetchDescription": "Произошла ошибка при получении ресурса", + "targetErrorDuplicate": "Дублирующая цель", + "targetErrorDuplicateDescription": "Цель с такими настройками уже существует", + "targetWireGuardErrorInvalidIp": "Неверный IP цели", + "targetWireGuardErrorInvalidIpDescription": "IP цели должен быть в пределах подсети сайта", + "targetsUpdated": "Цели обновлены", + "targetsUpdatedDescription": "Цели и настройки успешно обновлены", + "targetsErrorUpdate": "Не удалось обновить цели", + "targetsErrorUpdateDescription": "Произошла ошибка при обновлении целей", + "targetTlsUpdate": "Настройки TLS обновлены", + "targetTlsUpdateDescription": "Ваши настройки TLS были успешно обновлены", + "targetErrorTlsUpdate": "Не удалось обновить настройки TLS", + "targetErrorTlsUpdateDescription": "Произошла ошибка при обновлении настроек TLS", + "proxyUpdated": "Настройки прокси обновлены", + "proxyUpdatedDescription": "Ваши настройки прокси были успешно обновлены", + "proxyErrorUpdate": "Не удалось обновить настройки прокси", + "proxyErrorUpdateDescription": "Произошла ошибка при обновлении настроек прокси", + "targetAddr": "IP / Имя хоста", + "targetPort": "Порт", + "targetProtocol": "Протокол", + "targetTlsSettings": "Конфигурация безопасного соединения", + "targetTlsSettingsDescription": "Настройте параметры SSL/TLS для вашего ресурса", + "targetTlsSettingsAdvanced": "Расширенные настройки TLS", + "targetTlsSni": "Имя TLS сервера (SNI)", + "targetTlsSniDescription": "Имя TLS сервера для использования в SNI. Оставьте пустым для использования по умолчанию.", + "targetTlsSubmit": "Сохранить настройки", + "targets": "Конфигурация целей", + "targetsDescription": "Настройте цели для маршрутизации трафика к вашим сервисам", + "targetStickySessions": "Включить фиксированные сессии", + "targetStickySessionsDescription": "Сохранять соединения на одной и той же целевой точке в течение всей сессии.", + "methodSelect": "Выберите метод", + "targetSubmit": "Добавить цель", + "targetNoOne": "Нет целей. Добавьте цель с помощью формы.", + "targetNoOneDescription": "Добавление более одной цели выше включит балансировку нагрузки.", + "targetsSubmit": "Сохранить цели", + "proxyAdditional": "Дополнительные настройки прокси", + "proxyAdditionalDescription": "Настройте, как ваш ресурс обрабатывает настройки прокси", + "proxyCustomHeader": "Пользовательский заголовок Host", + "proxyCustomHeaderDescription": "Заголовок host для установки при проксировании запросов. Оставьте пустым для использования по умолчанию.", + "proxyAdditionalSubmit": "Сохранить настройки прокси", + "subnetMaskErrorInvalid": "Неверная маска подсети. Должна быть между 0 и 32.", + "ipAddressErrorInvalidFormat": "Неверный формат IP адреса", + "ipAddressErrorInvalidOctet": "Неверный октет IP адреса", + "path": "Путь", + "ipAddressRange": "Диапазон IP", + "rulesErrorFetch": "Не удалось получить правила", + "rulesErrorFetchDescription": "Произошла ошибка при получении правил", + "rulesErrorDuplicate": "Дублирующее правило", + "rulesErrorDuplicateDescription": "Правило с такими настройками уже существует", + "rulesErrorInvalidIpAddressRange": "Неверный CIDR", + "rulesErrorInvalidIpAddressRangeDescription": "Пожалуйста, введите корректное значение CIDR", + "rulesErrorInvalidUrl": "Неверный URL путь", + "rulesErrorInvalidUrlDescription": "Пожалуйста, введите корректное значение URL пути", + "rulesErrorInvalidIpAddress": "Неверный IP", + "rulesErrorInvalidIpAddressDescription": "Пожалуйста, введите корректный IP адрес", + "rulesErrorUpdate": "Не удалось обновить правила", + "rulesErrorUpdateDescription": "Произошла ошибка при обновлении правил", + "rulesUpdated": "Включить правила", + "rulesUpdatedDescription": "Оценка правил была обновлена", + "rulesMatchIpAddressRangeDescription": "Введите адрес в формате CIDR (например, 103.21.244.0/22)", + "rulesMatchIpAddress": "Введите IP адрес (например, 103.21.244.12)", + "rulesMatchUrl": "Введите URL путь или шаблон (например, /api/v1/todos или /api/v1/*)", + "rulesErrorInvalidPriority": "Неверный приоритет", + "rulesErrorInvalidPriorityDescription": "Пожалуйста, введите корректный приоритет", + "rulesErrorDuplicatePriority": "Дублирующие приоритеты", + "rulesErrorDuplicatePriorityDescription": "Пожалуйста, введите уникальные приоритеты", + "ruleUpdated": "Правила обновлены", + "ruleUpdatedDescription": "Правила успешно обновлены", + "ruleErrorUpdate": "Операция не удалась", + "ruleErrorUpdateDescription": "Произошла ошибка во время операции сохранения", + "rulesPriority": "Приоритет", + "rulesAction": "Действие", + "rulesMatchType": "Тип совпадения", + "value": "Значение", + "rulesAbout": "О правилах", + "rulesAboutDescription": "Правила позволяют контролировать доступ к вашему ресурсу на основе набора критериев. Вы можете создавать правила для разрешения или запрета доступа на основе IP адреса или URL пути.", + "rulesActions": "Действия", + "rulesActionAlwaysAllow": "Всегда разрешать: Обойти все методы аутентификации", + "rulesActionAlwaysDeny": "Всегда запрещать: Блокировать все запросы; аутентификация не может быть выполнена", + "rulesMatchCriteria": "Критерии совпадения", + "rulesMatchCriteriaIpAddress": "Совпадение с конкретным IP адресом", + "rulesMatchCriteriaIpAddressRange": "Совпадение с диапазоном IP адресов в нотации CIDR", + "rulesMatchCriteriaUrl": "Совпадение с URL путём или шаблоном", + "rulesEnable": "Включить правила", + "rulesEnableDescription": "Включить или отключить проверку правил для этого ресурса", + "rulesResource": "Конфигурация правил ресурса", + "rulesResourceDescription": "Настройте правила для контроля доступа к вашему ресурсу", + "ruleSubmit": "Добавить правило", + "rulesNoOne": "Нет правил. Добавьте правило с помощью формы.", + "rulesOrder": "Правила оцениваются по приоритету в возрастающем порядке.", + "rulesSubmit": "Сохранить правила", + "resourceErrorCreate": "Ошибка при создании ресурса", + "resourceErrorCreateDescription": "Произошла ошибка при создании ресурса", + "resourceErrorCreateMessage": "Ошибка создания ресурса:", + "resourceErrorCreateMessageDescription": "Произошла неизвестная ошибка.", + "sitesErrorFetch": "Ошибка при получении сайтов", + "sitesErrorFetchDescription": "Произошла ошибка при получении сайтов", + "domainsErrorFetch": "Ошибка при получении доменов", + "domainsErrorFetchDescription": "Произошла ошибка при получении доменов", + "none": "Нет", + "unknown": "Неизвестно", + "resources": "Ресурсы", + "resourcesDescription": "Ресурсы - это прокси к приложениям, работающим в вашей частной сети. Создайте ресурс для любого HTTP/HTTPS или сырого TCP/UDP сервиса в вашей частной сети. Каждый ресурс должен быть подключен к сайту для обеспечения приватного, безопасного соединения через зашифрованный туннель WireGuard.", + "resourcesWireGuardConnect": "Безопасное соединение с шифрованием WireGuard", + "resourcesMultipleAuthenticationMethods": "Настройка нескольких методов аутентификации", + "resourcesUsersRolesAccess": "Контроль доступа на основе пользователей и ролей", + "resourcesErrorUpdate": "Не удалось переключить ресурс", + "resourcesErrorUpdateDescription": "Произошла ошибка при обновлении ресурса", + "access": "Доступ", + "shareLink": "Общая ссылка {resource}", + "resourceSelect": "Выберите ресурс", + "shareLinks": "Общие ссылки", + "share": "Общие ссылки", + "shareDescription2": "Создавайте общие ссылки к вашим ресурсам. Ссылки предоставляют временный или неограниченный доступ к вашему ресурсу. Вы можете настроить время истечения ссылки при её создании.", + "shareEasyCreate": "Легко создавать и делиться", + "shareConfigurableExpirationDuration": "Настраиваемая продолжительность истечения", + "shareSecureAndRevocable": "Безопасные и отзываемые", + "nameMin": "Имя должно быть не менее {len} символов.", + "nameMax": "Имя не должно быть длиннее {len} символов.", + "sitesConfirmCopy": "Пожалуйста, подтвердите, что вы скопировали конфигурацию.", + "unknownCommand": "Неизвестная команда", + "newtErrorFetchReleases": "Не удалось получить информацию о релизе: {err}", + "newtErrorFetchLatest": "Ошибка при получении последнего релиза: {err}", + "newtEndpoint": "Конечная точка Newt", + "newtId": "Newt ID", + "newtSecretKey": "Секретный ключ Newt", + "architecture": "Архитектура", + "sites": "Сайты", + "siteWgAnyClients": "Используйте любой клиент WireGuard для подключения. Вам придётся обращаться к вашим внутренним ресурсам, используя IP узла.", + "siteWgCompatibleAllClients": "Совместим со всеми клиентами WireGuard", + "siteWgManualConfigurationRequired": "Требуется ручная настройка", + "userErrorNotAdminOrOwner": "Пользователь не является администратором или владельцем", + "pangolinSettings": "Настройки - Pangolin", + "accessRoleYour": "Ваша роль:", + "accessRoleSelect2": "Выберите роль", + "accessUserSelect": "Выберите пользователя", + "otpEmailEnter": "Введите email", + "otpEmailEnterDescription": "Нажмите enter для добавления email после ввода в поле.", + "otpEmailErrorInvalid": "Неверный email адрес. Подстановочный знак (*) должен быть всей локальной частью.", + "otpEmailSmtpRequired": "Требуется SMTP", + "otpEmailSmtpRequiredDescription": "SMTP должен быть включён на сервере для использования аутентификации с одноразовым паролем.", + "otpEmailTitle": "Одноразовые пароли", + "otpEmailTitleDescription": "Требовать аутентификацию на основе email для доступа к ресурсу", + "otpEmailWhitelist": "Белый список email", + "otpEmailWhitelistList": "Email адреса в белом списке", + "otpEmailWhitelistListDescription": "Только пользователи с этими email адресами смогут получить доступ к этому ресурсу. Им будет предложено ввести одноразовый пароль, отправленный на их email. Можно использовать подстановочные знаки (*@example.com) для разрешения любого email адреса с домена.", + "otpEmailWhitelistSave": "Сохранить белый список", + "passwordAdd": "Добавить пароль", + "passwordRemove": "Удалить пароль", + "pincodeAdd": "Добавить PIN-код", + "pincodeRemove": "Удалить PIN-код", + "resourceAuthMethods": "Методы аутентификации", + "resourceAuthMethodsDescriptions": "Разрешить доступ к ресурсу через дополнительные методы аутентификации", + "resourceAuthSettingsSave": "Успешно сохранено", + "resourceAuthSettingsSaveDescription": "Настройки аутентификации сохранены", + "resourceErrorAuthFetch": "Не удалось получить данные", + "resourceErrorAuthFetchDescription": "Произошла ошибка при получении данных", + "resourceErrorPasswordRemove": "Ошибка при удалении пароля ресурса", + "resourceErrorPasswordRemoveDescription": "Произошла ошибка при удалении пароля ресурса", + "resourceErrorPasswordSetup": "Ошибка при установке пароля ресурса", + "resourceErrorPasswordSetupDescription": "Произошла ошибка при установке пароля ресурса", + "resourceErrorPincodeRemove": "Ошибка при удалении PIN-кода ресурса", + "resourceErrorPincodeRemoveDescription": "Произошла ошибка при удалении PIN-кода ресурса", + "resourceErrorPincodeSetup": "Ошибка при установке PIN-кода ресурса", + "resourceErrorPincodeSetupDescription": "Произошла ошибка при установке PIN-кода ресурса", + "resourceErrorUsersRolesSave": "Не удалось установить роли", + "resourceErrorUsersRolesSaveDescription": "Произошла ошибка при установке ролей", + "resourceErrorWhitelistSave": "Не удалось сохранить белый список", + "resourceErrorWhitelistSaveDescription": "Произошла ошибка при сохранении белого списка", + "resourcePasswordSubmit": "Включить защиту паролем", + "resourcePasswordProtection": "Защита паролем {status}", + "resourcePasswordRemove": "Пароль ресурса удалён", + "resourcePasswordRemoveDescription": "Пароль ресурса был успешно удалён", + "resourcePasswordSetup": "Пароль ресурса установлен", + "resourcePasswordSetupDescription": "Пароль ресурса был успешно установлен", + "resourcePasswordSetupTitle": "Установить пароль", + "resourcePasswordSetupTitleDescription": "Установите пароль для защиты этого ресурса", + "resourcePincode": "PIN-код", + "resourcePincodeSubmit": "Включить защиту PIN-кодом", + "resourcePincodeProtection": "Защита PIN-кодом {status}", + "resourcePincodeRemove": "PIN-код ресурса удалён", + "resourcePincodeRemoveDescription": "PIN-код ресурса был успешно удалён", + "resourcePincodeSetup": "Resource PIN code set", + "resourcePincodeSetupDescription": "The resource pincode has been set successfully", + "resourcePincodeSetupTitle": "Set Pincode", + "resourcePincodeSetupTitleDescription": "Set a pincode to protect this resource", + "resourceRoleDescription": "Admins can always access this resource.", + "resourceUsersRoles": "Users & Roles", + "resourceUsersRolesDescription": "Configure which users and roles can visit this resource", + "resourceUsersRolesSubmit": "Save Users & Roles", + "resourceWhitelistSave": "Saved successfully", + "resourceWhitelistSaveDescription": "Whitelist settings have been saved", + "ssoUse": "Use Platform SSO", + "ssoUseDescription": "Существующим пользователям нужно будет войти только один раз для всех ресурсов с включенной этой опцией.", + "proxyErrorInvalidPort": "Invalid port number", + "subdomainErrorInvalid": "Invalid subdomain", + "domainErrorFetch": "Error fetching domains", + "domainErrorFetchDescription": "An error occurred when fetching the domains", + "resourceErrorUpdate": "Failed to update resource", + "resourceErrorUpdateDescription": "An error occurred while updating the resource", + "resourceUpdated": "Resource updated", + "resourceUpdatedDescription": "The resource has been updated successfully", + "resourceErrorTransfer": "Failed to transfer resource", + "resourceErrorTransferDescription": "An error occurred while transferring the resource", + "resourceTransferred": "Resource transferred", + "resourceTransferredDescription": "The resource has been transferred successfully", + "resourceErrorToggle": "Failed to toggle resource", + "resourceErrorToggleDescription": "An error occurred while updating the resource", + "resourceVisibilityTitle": "Visibility", + "resourceVisibilityTitleDescription": "Completely enable or disable resource visibility", + "resourceGeneral": "General Settings", + "resourceGeneralDescription": "Configure the general settings for this resource", + "resourceEnable": "Enable Resource", + "resourceTransfer": "Transfer Resource", + "resourceTransferDescription": "Transfer this resource to a different site", + "resourceTransferSubmit": "Transfer Resource", + "siteDestination": "Destination Site", + "searchSites": "Search sites", + "accessRoleCreate": "Create Role", + "accessRoleCreateDescription": "Create a new role to group users and manage their permissions.", + "accessRoleCreateSubmit": "Create Role", + "accessRoleCreated": "Role created", + "accessRoleCreatedDescription": "The role has been successfully created.", + "accessRoleErrorCreate": "Failed to create role", + "accessRoleErrorCreateDescription": "An error occurred while creating the role.", + "accessRoleErrorNewRequired": "New role is required", + "accessRoleErrorRemove": "Failed to remove role", + "accessRoleErrorRemoveDescription": "An error occurred while removing the role.", + "accessRoleName": "Role Name", + "accessRoleQuestionRemove": "Вы собираетесь удалить роль {name}. Это действие нельзя отменить.", + "accessRoleRemove": "Удалить роль", + "accessRoleRemoveDescription": "Удалить роль из организации", + "accessRoleRemoveSubmit": "Удалить роль", + "accessRoleRemoved": "Роль удалена", + "accessRoleRemovedDescription": "Роль была успешно удалена.", + "accessRoleRequiredRemove": "Перед удалением этой роли выберите новую роль для переноса существующих участников.", + "manage": "Управление", + "sitesNotFound": "Сайты не найдены.", + "pangolinServerAdmin": "Администратор сервера - Pangolin", + "licenseTierProfessional": "Профессиональная лицензия", + "licenseTierEnterprise": "Корпоративная лицензия", + "licenseTierCommercial": "Коммерческая лицензия", + "licensed": "Лицензировано", + "yes": "Да", + "no": "Нет", + "sitesAdditional": "Дополнительные сайты", + "licenseKeys": "Лицензионные ключи", + "sitestCountDecrease": "Уменьшить количество сайтов", + "sitestCountIncrease": "Увеличить количество сайтов", + "idpManage": "Управление поставщиками удостоверений", + "idpManageDescription": "Просмотр и управление поставщиками удостоверений в системе", + "idpDeletedDescription": "Поставщик удостоверений успешно удалён", + "idpOidc": "OAuth2/OIDC", + "idpQuestionRemove": "Вы уверены, что хотите навсегда удалить поставщика удостоверений {name}?", + "idpMessageRemove": "Это удалит поставщика удостоверений и все связанные конфигурации. Пользователи, которые аутентифицируются через этого поставщика, больше не смогут войти.", + "idpMessageConfirm": "Для подтверждения введите имя поставщика удостоверений ниже.", + "idpConfirmDelete": "Подтвердить удаление поставщика удостоверений", + "idpDelete": "Удалить поставщика удостоверений", + "idp": "Поставщики удостоверений", + "idpSearch": "Поиск поставщиков удостоверений...", + "idpAdd": "Добавить поставщика удостоверений", + "idpClientIdRequired": "ID клиента обязателен.", + "idpClientSecretRequired": "Client Secret is required.", + "idpErrorAuthUrlInvalid": "Auth URL must be a valid URL.", + "idpErrorTokenUrlInvalid": "Token URL must be a valid URL.", + "idpPathRequired": "Identifier Path is required.", + "idpScopeRequired": "Scopes are required.", + "idpOidcDescription": "Configure an OpenID Connect identity provider", + "idpCreatedDescription": "Identity provider created successfully", + "idpCreate": "Create Identity Provider", + "idpCreateDescription": "Configure a new identity provider for user authentication", + "idpSeeAll": "See All Identity Providers", + "idpSettingsDescription": "Configure the basic information for your identity provider", + "idpDisplayName": "A display name for this identity provider", + "idpAutoProvisionUsers": "Auto Provision Users", + "idpAutoProvisionUsersDescription": "При включении пользователи будут автоматически создаваться в системе при первом входе с возможностью сопоставления пользователей с ролями и организациями.", + "licenseBadge": "Professional", + "idpType": "Provider Type", + "idpTypeDescription": "Select the type of identity provider you want to configure", + "idpOidcConfigure": "OAuth2/OIDC Configuration", + "idpOidcConfigureDescription": "Настройте конечные точки и учётные данные поставщика OAuth2/OIDC", + "idpClientId": "Client ID", + "idpClientIdDescription": "The OAuth2 client ID from your identity provider", + "idpClientSecret": "Client Secret", + "idpClientSecretDescription": "The OAuth2 client secret from your identity provider", + "idpAuthUrl": "Authorization URL", + "idpAuthUrlDescription": "The OAuth2 authorization endpoint URL", + "idpTokenUrl": "Token URL", + "idpTokenUrlDescription": "The OAuth2 token endpoint URL", + "idpOidcConfigureAlert": "Important Information", + "idpOidcConfigureAlertDescription": "После создания поставщика удостоверений вам нужно будет настроить URL обратного вызова в настройках вашего поставщика удостоверений. URL обратного вызова будет предоставлен после успешного создания.", + "idpToken": "Token Configuration", + "idpTokenDescription": "Configure how to extract user information from the ID token", + "idpJmespathAbout": "About JMESPath", + "idpJmespathAboutDescription": "The paths below use JMESPath syntax to extract values from the ID token.", + "idpJmespathAboutDescriptionLink": "Learn more about JMESPath", + "idpJmespathLabel": "Identifier Path", + "idpJmespathLabelDescription": "The path to the user identifier in the ID token", + "idpJmespathEmailPathOptional": "Email Path (Optional)", + "idpJmespathEmailPathOptionalDescription": "The path to the user's email in the ID token", + "idpJmespathNamePathOptional": "Name Path (Optional)", + "idpJmespathNamePathOptionalDescription": "The path to the user's name in the ID token", + "idpOidcConfigureScopes": "Scopes", + "idpOidcConfigureScopesDescription": "Space-separated list of OAuth2 scopes to request", + "idpSubmit": "Create Identity Provider", + "orgPolicies": "Organization Policies", + "idpSettings": "Настройки {idpName}", + "idpCreateSettingsDescription": "Configure the settings for your identity provider", + "roleMapping": "Role Mapping", + "orgMapping": "Organization Mapping", + "orgPoliciesSearch": "Search organization policies...", + "orgPoliciesAdd": "Add Organization Policy", + "orgRequired": "Organization is required", + "error": "Error", + "success": "Success", + "orgPolicyAddedDescription": "Policy added successfully", + "orgPolicyUpdatedDescription": "Policy updated successfully", + "orgPolicyDeletedDescription": "Policy deleted successfully", + "defaultMappingsUpdatedDescription": "Default mappings updated successfully", + "orgPoliciesAbout": "About Organization Policies", + "orgPoliciesAboutDescription": "Политики организации используются для контроля доступа к организациям на основе ID токена пользователя. Вы можете указать выражения JMESPath для извлечения информации о роли и организации из ID токена.", + "orgPoliciesAboutDescriptionLink": "See documentation, for more information.", + "defaultMappingsOptional": "Default Mappings (Optional)", + "defaultMappingsOptionalDescription": "Сопоставления по умолчанию используются, когда для организации не определена политика организации. Здесь вы можете указать сопоставления ролей и организаций по умолчанию.", + "defaultMappingsRole": "Default Role Mapping", + "defaultMappingsRoleDescription": "Результат этого выражения должен возвращать имя роли, как определено в организации, в виде строки.", + "defaultMappingsOrg": "Default Organization Mapping", + "defaultMappingsOrgDescription": "Это выражение должно возвращать ID организации или true для разрешения доступа пользователя к организации.", + "defaultMappingsSubmit": "Save Default Mappings", + "orgPoliciesEdit": "Edit Organization Policy", + "org": "Organization", + "orgSelect": "Select organization", + "orgSearch": "Search org", + "orgNotFound": "No org found.", + "roleMappingPathOptional": "Role Mapping Path (Optional)", + "orgMappingPathOptional": "Organization Mapping Path (Optional)", + "orgPolicyUpdate": "Update Policy", + "orgPolicyAdd": "Add Policy", + "orgPolicyConfig": "Configure access for an organization", + "idpUpdatedDescription": "Identity provider updated successfully", + "redirectUrl": "Redirect URL", + "redirectUrlAbout": "About Redirect URL", + "redirectUrlAboutDescription": "Это URL, на который пользователи будут перенаправлены после аутентификации. Вам нужно настроить этот URL в настройках вашего поставщика удостоверений.", + "pangolinAuth": "Аутентификация - Pangolin", + "verificationCodeLengthRequirements": "Ваш код подтверждения должен состоять из 8 символов.", + "errorOccurred": "Произошла ошибка", + "emailErrorVerify": "Не удалось подтвердить email:", + "emailVerified": "Email успешно подтверждён! Перенаправляем вас...", + "verificationCodeErrorResend": "Не удалось повторно отправить код подтверждения:", + "verificationCodeResend": "Код подтверждения отправлен повторно", + "verificationCodeResendDescription": "Мы повторно отправили код подтверждения на ваш email адрес. Пожалуйста, проверьте вашу почту.", + "emailVerify": "Подтвердить email", + "emailVerifyDescription": "Введите код подтверждения, отправленный на ваш email адрес.", + "verificationCode": "Код подтверждения", + "verificationCodeEmailSent": "Мы отправили код подтверждения на ваш email адрес.", + "submit": "Отправить", + "emailVerifyResendProgress": "Отправка повторно...", + "emailVerifyResend": "Не получили код? Нажмите здесь для повторной отправки", + "passwordNotMatch": "Пароли не совпадают", + "signupError": "Произошла ошибка при регистрации", + "pangolinLogoAlt": "Логотип Pangolin", + "inviteAlready": "Похоже, вы были приглашены!", + "inviteAlreadyDescription": "Чтобы принять приглашение, вы должны войти или создать учётную запись.", + "signupQuestion": "Уже есть учётная запись?", + "login": "Войти", + "resourceNotFound": "Ресурс не найден", + "resourceNotFoundDescription": "Ресурс, к которому вы пытаетесь получить доступ, не существует.", + "pincodeRequirementsLength": "PIN должен состоять ровно из 6 цифр", + "pincodeRequirementsChars": "PIN должен содержать только цифры", + "passwordRequirementsLength": "Пароль должен быть не менее 1 символа", + "otpEmailRequirementsLength": "OTP должен быть не менее 1 символа", + "otpEmailSent": "OTP отправлен", + "otpEmailSentDescription": "OTP был отправлен на ваш email", + "otpEmailErrorAuthenticate": "Не удалось аутентифицироваться с email", + "pincodeErrorAuthenticate": "Не удалось аутентифицироваться с PIN-кодом", + "passwordErrorAuthenticate": "Не удалось аутентифицироваться с паролем", + "poweredBy": "Разработано", + "authenticationRequired": "Требуется аутентификация", + "authenticationMethodChoose": "Выберите предпочтительный метод для доступа к {name}", + "authenticationRequest": "Вы должны аутентифицироваться для доступа к {name}", + "user": "Пользователь", + "pincodeInput": "6-значный PIN-код", + "pincodeSubmit": "Войти с PIN-кодом", + "passwordSubmit": "Войти с паролем", + "otpEmailDescription": "Одноразовый код будет отправлен на этот email.", + "otpEmailSend": "Отправить одноразовый код", + "otpEmail": "Одноразовый пароль (OTP)", + "otpEmailSubmit": "Отправить OTP", + "backToEmail": "Назад к email", + "noSupportKey": "Сервер работает без ключа поддержки. Подумайте о поддержке проекта!", + "accessDenied": "Доступ запрещён", + "accessDeniedDescription": "Вам не разрешён доступ к этому ресурсу. Если это ошибка, пожалуйста, свяжитесь с администратором.", + "accessTokenError": "Ошибка проверки токена доступа", + "accessGranted": "Доступ предоставлен", + "accessUrlInvalid": "Неверный URL доступа", + "accessGrantedDescription": "You have been granted access to this resource. Redirecting you...", + "accessUrlInvalidDescription": "This shared access URL is invalid. Please contact the resource owner for a new URL.", + "tokenInvalid": "Invalid token", + "pincodeInvalid": "Invalid code", + "passwordErrorRequestReset": "Failed to request reset:", + "passwordErrorReset": "Failed to reset password:", + "passwordResetSuccess": "Password reset successfully! Back to log in...", + "passwordReset": "Reset Password", + "passwordResetDescription": "Follow the steps to reset your password", + "passwordResetSent": "We'll send a password reset code to this email address.", + "passwordResetCode": "Reset Code", + "passwordResetCodeDescription": "Check your email for the reset code.", + "passwordNew": "New Password", + "passwordNewConfirm": "Confirm New Password", + "pincodeAuth": "Authenticator Code", + "pincodeSubmit2": "Submit Code", + "passwordResetSubmit": "Request Reset", + "passwordBack": "Back to Password", + "loginBack": "Go back to log in", + "signup": "Sign up", + "loginStart": "Log in to get started", + "idpOidcTokenValidating": "Validating OIDC token", + "idpOidcTokenResponse": "Validate OIDC token response", + "idpErrorOidcTokenValidating": "Error validating OIDC token", + "idpConnectingTo": "Подключение к {name}", + "idpConnectingToDescription": "Validating your identity", + "idpConnectingToProcess": "Connecting...", + "idpConnectingToFinished": "Connected", + "idpErrorConnectingTo": "Возникла проблема при подключении к {name}. Пожалуйста, свяжитесь с вашим администратором.", + "idpErrorNotFound": "IdP not found", + "inviteInvalid": "Invalid Invite", + "inviteInvalidDescription": "The invite link is invalid.", + "inviteErrorWrongUser": "Invite is not for this user", + "inviteErrorUserNotExists": "User does not exist. Please create an account first.", + "inviteErrorLoginRequired": "You must be logged in to accept an invite", + "inviteErrorExpired": "The invite may have expired", + "inviteErrorRevoked": "The invite might have been revoked", + "inviteErrorTypo": "There could be a typo in the invite link", + "pangolinSetup": "Setup - Pangolin", + "orgNameRequired": "Organization name is required", + "orgIdRequired": "Organization ID is required", + "orgErrorCreate": "An error occurred while creating org", + "pageNotFound": "Page Not Found", + "pageNotFoundDescription": "Oops! The page you're looking for doesn't exist.", + "overview": "Overview", + "home": "Home", + "accessControl": "Access Control", + "settings": "Settings", + "usersAll": "All Users", + "license": "License", + "pangolinDashboard": "Dashboard - Pangolin", + "noResults": "No results found.", + "terabytes": "{count} ТБ", + "gigabytes": "{count} ГБ", + "megabytes": "{count} МБ", + "tagsEntered": "Entered Tags", + "tagsEnteredDescription": "These are the tags you`ve entered.", + "tagsWarnCannotBeLessThanZero": "maxTags and minTags cannot be less than 0", + "tagsWarnNotAllowedAutocompleteOptions": "Tag not allowed as per autocomplete options", + "tagsWarnInvalid": "Invalid tag as per validateTag", + "tagWarnTooShort": "Tag {tagText} is too short", + "tagWarnTooLong": "Tag {tagText} is too long", + "tagsWarnReachedMaxNumber": "Reached the maximum number of tags allowed", + "tagWarnDuplicate": "Duplicate tag {tagText} not added", + "supportKeyInvalid": "Invalid Key", + "supportKeyInvalidDescription": "Your supporter key is invalid.", + "supportKeyValid": "Valid Key", + "supportKeyValidDescription": "Your supporter key has been validated. Thank you for your support!", + "supportKeyErrorValidationDescription": "Failed to validate supporter key.", + "supportKey": "Support Development and Adopt a Pangolin!", + "supportKeyDescription": "Приобретите ключ поддержки, чтобы помочь нам продолжать разработку Pangolin для сообщества. Ваш вклад позволяет нам уделять больше времени поддержке и добавлению новых функций в приложение для всех. Мы никогда не будем использовать это для платного доступа к функциям. Это отдельно от любой коммерческой версии.", + "supportKeyPet": "You will also get to adopt and meet your very own pet Pangolin!", + "supportKeyPurchase": "Payments are processed via GitHub. Afterward, you can retrieve your key on", + "supportKeyPurchaseLink": "our website", + "supportKeyPurchase2": "and redeem it here.", + "supportKeyLearnMore": "Learn more.", + "supportKeyOptions": "Please select the option that best suits you.", + "supportKetOptionFull": "Full Supporter", + "forWholeServer": "For the whole server", + "lifetimePurchase": "Lifetime purchase", + "supporterStatus": "Supporter status", + "buy": "Buy", + "supportKeyOptionLimited": "Limited Supporter", + "forFiveUsers": "For 5 or less users", + "supportKeyRedeem": "Redeem Supporter Key", + "supportKeyHideSevenDays": "Hide for 7 days", + "supportKeyEnter": "Enter Supporter Key", + "supportKeyEnterDescription": "Meet your very own pet Pangolin!", + "githubUsername": "GitHub Username", + "supportKeyInput": "Supporter Key", + "supportKeyBuy": "Buy Supporter Key", + "logoutError": "Error logging out", + "signingAs": "Signed in as", + "serverAdmin": "Server Admin", + "otpEnable": "Enable Two-factor", + "otpDisable": "Disable Two-factor", + "logout": "Log Out", + "licenseTierProfessionalRequired": "Professional Edition Required", + "licenseTierProfessionalRequiredDescription": "Эта функция доступна только в профессиональной версии.", + "actionGetOrg": "Get Organization", + "actionUpdateOrg": "Update Organization", + "actionUpdateUser": "Update User", + "actionGetUser": "Get User", + "actionGetOrgUser": "Get Organization User", + "actionListOrgDomains": "List Organization Domains", + "actionCreateSite": "Create Site", + "actionDeleteSite": "Delete Site", + "actionGetSite": "Get Site", + "actionListSites": "List Sites", + "actionUpdateSite": "Update Site", + "actionListSiteRoles": "List Allowed Site Roles", + "actionCreateResource": "Create Resource", + "actionDeleteResource": "Delete Resource", + "actionGetResource": "Get Resource", + "actionListResource": "List Resources", + "actionUpdateResource": "Update Resource", + "actionListResourceUsers": "List Resource Users", + "actionSetResourceUsers": "Set Resource Users", + "actionSetAllowedResourceRoles": "Set Allowed Resource Roles", + "actionListAllowedResourceRoles": "List Allowed Resource Roles", + "actionSetResourcePassword": "Set Resource Password", + "actionSetResourcePincode": "Set Resource Pincode", + "actionSetResourceEmailWhitelist": "Set Resource Email Whitelist", + "actionGetResourceEmailWhitelist": "Get Resource Email Whitelist", + "actionCreateTarget": "Create Target", + "actionDeleteTarget": "Delete Target", + "actionGetTarget": "Get Target", + "actionListTargets": "List Targets", + "actionUpdateTarget": "Update Target", + "actionCreateRole": "Create Role", + "actionDeleteRole": "Delete Role", + "actionGetRole": "Get Role", + "actionListRole": "List Roles", + "actionUpdateRole": "Update Role", + "actionListAllowedRoleResources": "List Allowed Role Resources", + "actionInviteUser": "Invite User", + "actionRemoveUser": "Remove User", + "actionListUsers": "List Users", + "actionAddUserRole": "Add User Role", + "actionGenerateAccessToken": "Generate Access Token", + "actionDeleteAccessToken": "Delete Access Token", + "actionListAccessTokens": "List Access Tokens", + "actionCreateResourceRule": "Create Resource Rule", + "actionDeleteResourceRule": "Delete Resource Rule", + "actionListResourceRules": "List Resource Rules", + "actionUpdateResourceRule": "Update Resource Rule", + "actionListOrgs": "List Organizations", + "actionCheckOrgId": "Check ID", + "actionCreateOrg": "Create Organization", + "actionDeleteOrg": "Delete Organization", + "actionListApiKeys": "List API Keys", + "actionListApiKeyActions": "List API Key Actions", + "actionSetApiKeyActions": "Set API Key Allowed Actions", + "actionCreateApiKey": "Create API Key", + "actionDeleteApiKey": "Delete API Key", + "actionCreateIdp": "Create IDP", + "actionUpdateIdp": "Обновить IDP", + "actionDeleteIdp": "Удалить IDP", + "actionListIdps": "Список IDP", + "actionGetIdp": "Получить IDP", + "actionCreateIdpOrg": "Создать политику IDP организации", + "actionDeleteIdpOrg": "Удалить политику IDP организации", + "actionListIdpOrgs": "Список организаций IDP", + "actionUpdateIdpOrg": "Обновить организацию IDP", + "noneSelected": "Ничего не выбрано", + "orgNotFound2": "Организации не найдены.", + "searchProgress": "Поиск...", + "create": "Создать", + "orgs": "Организации", + "loginError": "Произошла ошибка при входе", + "passwordForgot": "Забыли пароль?", + "otpAuth": "Двухфакторная аутентификация", + "otpAuthDescription": "Введите код из вашего приложения-аутентификатора или один из ваших одноразовых резервных кодов.", + "otpAuthSubmit": "Отправить код", + "idpContinue": "Или продолжить с", + "otpAuthBack": "Вернуться к входу", + "navbar": "Навигационное меню", + "navbarDescription": "Главное навигационное меню приложения", + "navbarDocsLink": "Документация", + "commercialEdition": "Коммерческая версия", + "otpErrorEnable": "Невозможно включить 2FA", + "otpErrorEnableDescription": "Произошла ошибка при включении 2FA", + "otpSetupCheckCode": "Пожалуйста, введите 6-значный код", + "otpSetupCheckCodeRetry": "Неверный код. Попробуйте снова.", + "otpSetup": "Включить двухфакторную аутентификацию", + "otpSetupDescription": "Защитите свою учётную запись дополнительным уровнем защиты", + "otpSetupScanQr": "Отсканируйте этот QR-код с помощью вашего приложения-аутентификатора или введите секретный ключ вручную:", + "otpSetupSecretCode": "Код аутентификатора", + "otpSetupSuccess": "Двухфакторная аутентификация включена", + "otpSetupSuccessStoreBackupCodes": "Ваша учётная запись теперь более защищена. Не забудьте сохранить резервные коды.", + "otpErrorDisable": "Невозможно отключить 2FA", + "otpErrorDisableDescription": "Произошла ошибка при отключении 2FA", + "otpRemove": "Отключить двухфакторную аутентификацию", + "otpRemoveDescription": "Отключить двухфакторную аутентификацию для вашей учётной записи", + "otpRemoveSuccess": "Two-Factor Authentication Disabled", + "otpRemoveSuccessMessage": "Двухфакторная аутентификация была отключена для вашей учётной записи. Вы можете включить её снова в любое время.", + "otpRemoveSubmit": "Disable 2FA", + "paginator": "Page {current} of {last}", + "paginatorToFirst": "Go to first page", + "paginatorToPrevious": "Go to previous page", + "paginatorToNext": "Go to next page", + "paginatorToLast": "Go to last page", + "copyText": "Copy text", + "copyTextFailed": "Failed to copy text: ", + "copyTextClipboard": "Copy to clipboard", + "inviteErrorInvalidConfirmation": "Invalid confirmation", + "passwordRequired": "Password is required", + "allowAll": "Разрешить всё", + "permissionsAllowAll": "Разрешить все разрешения", + "githubUsernameRequired": "Имя пользователя GitHub обязательно", + "supportKeyRequired": "Ключ поддержки обязателен", + "passwordRequirementsChars": "Пароль должен быть не менее 8 символов", + "language": "Язык", + "verificationCodeRequired": "Код обязателен", + "userErrorNoUpdate": "Нет пользователя для обновления", + "siteErrorNoUpdate": "Нет сайта для обновления", + "resourceErrorNoUpdate": "Нет ресурса для обновления", + "authErrorNoUpdate": "Нет информации об аутентификации для обновления", + "orgErrorNoUpdate": "Нет организации для обновления", + "orgErrorNoProvided": "Организация не предоставлена", + "apiKeysErrorNoUpdate": "Нет API ключа для обновления", + "sidebarOverview": "Обзор", + "sidebarHome": "Главная", + "sidebarSites": "Сайты", + "sidebarResources": "Ресурсы", + "sidebarAccessControl": "Контроль доступа", + "sidebarUsers": "Пользователи", + "sidebarInvitations": "Приглашения", + "sidebarRoles": "Роли", + "sidebarShareableLinks": "Общие ссылки", + "sidebarApiKeys": "API ключи", + "sidebarSettings": "Настройки", + "sidebarAllUsers": "Все пользователи", + "sidebarIdentityProviders": "Поставщики удостоверений", + "sidebarLicense": "Лицензия", + "sidebarClients": "Clients", + "sidebarDomains": "Domains", + "enableDockerSocket": "Включить Docker Socket", + "enableDockerSocketDescription": "Включить обнаружение Docker Socket для заполнения информации о контейнерах. Путь к сокету должен быть предоставлен Newt.", + "enableDockerSocketLink": "Узнать больше", + "viewDockerContainers": "Просмотр контейнеров Docker", + "containersIn": "Контейнеры в {siteName}", + "selectContainerDescription": "Выберите любой контейнер для использования в качестве имени хоста для этой цели. Нажмите на порт, чтобы использовать порт.", + "containerName": "Имя", + "containerImage": "Образ", + "containerState": "Состояние", + "containerNetworks": "Сети", + "containerHostnameIp": "Имя хоста/IP", + "containerLabels": "Метки", + "containerLabelsCount": "{count, plural, one {# метка} few {# метки} many {# меток} other {# меток}}", + "containerLabelsTitle": "Метки контейнера", + "containerLabelEmpty": "", + "containerPorts": "Порты", + "containerPortsMore": "+{count} ещё", + "containerActions": "Действия", + "select": "Выбрать", + "noContainersMatchingFilters": "Контейнеры, соответствующие текущим фильтрам, не найдены.", + "showContainersWithoutPorts": "Показать контейнеры без портов", + "showStoppedContainers": "Показать остановленные контейнеры", + "noContainersFound": "Контейнеры не найдены. Убедитесь, что контейнеры Docker запущены.", + "searchContainersPlaceholder": "Поиск среди {count} {count, plural, one {контейнера} few {контейнеров} many {контейнеров} other {контейнеров}}...", + "searchResultsCount": "{count, plural, one {# результат} few {# результата} many {# результатов} other {# результатов}}", + "filters": "Фильтры", + "filterOptions": "Параметры фильтрации", + "filterPorts": "Порты", + "filterStopped": "Остановлены", + "clearAllFilters": "Очистить все фильтры", + "columns": "Колонки", + "toggleColumns": "Переключить колонки", + "refreshContainersList": "Обновить список контейнеров", + "searching": "Поиск...", + "noContainersFoundMatching": "Контейнеры, соответствующие \"{filter}\", не найдены.", + "light": "светлая", + "dark": "тёмная", + "system": "системная", + "theme": "Тема", + "subnetRequired": "Subnet is required", + "initialSetupTitle": "Начальная настройка сервера", + "initialSetupDescription": "Создайте первоначальную учётную запись администратора сервера. Может существовать только один администратор сервера. Вы всегда можете изменить эти учётные данные позже.", + "createAdminAccount": "Создать учётную запись администратора", + "setupErrorCreateAdmin": "Произошла ошибка при создании учётной записи администратора сервера.", + "certificateStatus": "Certificate Status", + "loading": "Loading", + "restart": "Restart", + "domains": "Domains", + "domainsDescription": "Manage domains for your organization", + "domainsSearch": "Search domains...", + "domainAdd": "Add Domain", + "domainAddDescription": "Register a new domain with your organization", + "domainCreate": "Create Domain", + "domainCreatedDescription": "Domain created successfully", + "domainDeletedDescription": "Domain deleted successfully", + "domainQuestionRemove": "Are you sure you want to remove the domain {domain} from your account?", + "domainMessageRemove": "Once removed, the domain will no longer be associated with your account.", + "domainMessageConfirm": "To confirm, please type the domain name below.", + "domainConfirmDelete": "Confirm Delete Domain", + "domainDelete": "Delete Domain", + "domain": "Domain", + "selectDomainTypeNsName": "Domain Delegation (NS)", + "selectDomainTypeNsDescription": "This domain and all its subdomains. Use this when you want to control an entire domain zone.", + "selectDomainTypeCnameName": "Single Domain (CNAME)", + "selectDomainTypeCnameDescription": "Just this specific domain. Use this for individual subdomains or specific domain entries.", + "selectDomainTypeWildcardName": "Wildcard Domain", + "selectDomainTypeWildcardDescription": "This domain and its first level of subdomains.", + "domainDelegation": "Single Domain", + "selectType": "Select a type", + "actions": "Actions", + "refresh": "Refresh", + "refreshError": "Failed to refresh data", + "verified": "Verified", + "pending": "Pending", + "sidebarBilling": "Billing", + "billing": "Billing", + "orgBillingDescription": "Manage your billing information and subscriptions", + "github": "GitHub", + "pangolinHosted": "Pangolin Hosted", + "fossorial": "Fossorial", + "completeAccountSetup": "Complete Account Setup", + "completeAccountSetupDescription": "Set your password to get started", + "accountSetupSent": "We'll send an account setup code to this email address.", + "accountSetupCode": "Setup Code", + "accountSetupCodeDescription": "Check your email for the setup code.", + "passwordCreate": "Create Password", + "passwordCreateConfirm": "Confirm Password", + "accountSetupSubmit": "Send Setup Code", + "completeSetup": "Complete Setup", + "accountSetupSuccess": "Account setup completed! Welcome to Pangolin!", + "documentation": "Documentation", + "saveAllSettings": "Save All Settings", + "settingsUpdated": "Settings updated", + "settingsUpdatedDescription": "All settings have been updated successfully", + "settingsErrorUpdate": "Failed to update settings", + "settingsErrorUpdateDescription": "An error occurred while updating settings", + "sidebarCollapse": "Collapse", + "sidebarExpand": "Expand", + "newtUpdateAvailable": "Update Available", + "newtUpdateAvailableInfo": "A new version of Newt is available. Please update to the latest version for the best experience.", + "domainPickerEnterDomain": "Enter your domain", + "domainPickerPlaceholder": "myapp.example.com, api.v1.mydomain.com, or just myapp", + "domainPickerDescription": "Enter a full domain, subdomain, or just a name to see available options", + "domainPickerTabAll": "All", + "domainPickerTabOrganization": "Organization", + "domainPickerTabProvided": "Provided", + "domainPickerSortAsc": "A-Z", + "domainPickerSortDesc": "Z-A", + "domainPickerCheckingAvailability": "Checking availability...", + "domainPickerNoMatchingDomains": "No matching domains found for \"{userInput}\". Try a different domain or check your organization's domain settings.", + "domainPickerOrganizationDomains": "Organization Domains", + "domainPickerProvidedDomains": "Provided Domains", + "domainPickerSubdomain": "Subdomain: {subdomain}", + "domainPickerNamespace": "Namespace: {namespace}", + "domainPickerShowMore": "Show More", + "domainNotFound": "Domain Not Found", + "domainNotFoundDescription": "This resource is disabled because the domain no longer exists our system. Please set a new domain for this resource.", + "failed": "Failed", + "createNewOrgDescription": "Create a new organization", + "organization": "Organization", + "port": "Port", + "securityKeyManage": "Manage Security Keys", + "securityKeyDescription": "Add or remove security keys for passwordless authentication", + "securityKeyRegister": "Register New Security Key", + "securityKeyList": "Your Security Keys", + "securityKeyNone": "No security keys registered yet", + "securityKeyNameRequired": "Name is required", + "securityKeyRemove": "Remove", + "securityKeyLastUsed": "Last used: {date}", + "securityKeyNameLabel": "Security Key Name", + "securityKeyRegisterSuccess": "Security key registered successfully", + "securityKeyRegisterError": "Failed to register security key", + "securityKeyRemoveSuccess": "Security key removed successfully", + "securityKeyRemoveError": "Failed to remove security key", + "securityKeyLoadError": "Failed to load security keys", + "securityKeyLogin": "Sign in with security key", + "securityKeyAuthError": "Failed to authenticate with security key", + "securityKeyRecommendation": "Register a backup security key on another device to ensure you always have access to your account.", + "registering": "Registering...", + "securityKeyPrompt": "Please verify your identity using your security key. Make sure your security key is connected and ready.", + "securityKeyBrowserNotSupported": "Your browser doesn't support security keys. Please use a modern browser like Chrome, Firefox, or Safari.", + "securityKeyPermissionDenied": "Please allow access to your security key to continue signing in.", + "securityKeyRemovedTooQuickly": "Please keep your security key connected until the sign-in process completes.", + "securityKeyNotSupported": "Your security key may not be compatible. Please try a different security key.", + "securityKeyUnknownError": "There was a problem using your security key. Please try again.", + "twoFactorRequired": "Two-factor authentication is required to register a security key.", + "twoFactor": "Two-Factor Authentication", + "adminEnabled2FaOnYourAccount": "Your administrator has enabled two-factor authentication for {email}. Please complete the setup process to continue.", + "continueToApplication": "Continue to Application", + "securityKeyAdd": "Add Security Key", + "securityKeyRegisterTitle": "Register New Security Key", + "securityKeyRegisterDescription": "Connect your security key and enter a name to identify it", + "securityKeyTwoFactorRequired": "Two-Factor Authentication Required", + "securityKeyTwoFactorDescription": "Please enter your two-factor authentication code to register the security key", + "securityKeyTwoFactorRemoveDescription": "Please enter your two-factor authentication code to remove the security key", + "securityKeyTwoFactorCode": "Two-Factor Code", + "securityKeyRemoveTitle": "Remove Security Key", + "securityKeyRemoveDescription": "Enter your password to remove the security key \"{name}\"", + "securityKeyNoKeysRegistered": "No security keys registered", + "securityKeyNoKeysDescription": "Add a security key to enhance your account security", + "createDomainRequired": "Domain is required", + "createDomainAddDnsRecords": "Add DNS Records", + "createDomainAddDnsRecordsDescription": "Add the following DNS records to your domain provider to complete the setup.", + "createDomainNsRecords": "NS Records", + "createDomainRecord": "Record", + "createDomainType": "Type:", + "createDomainName": "Name:", + "createDomainValue": "Value:", + "createDomainCnameRecords": "CNAME Records", + "createDomainRecordNumber": "Record {number}", + "createDomainTxtRecords": "TXT Records", + "createDomainSaveTheseRecords": "Save These Records", + "createDomainSaveTheseRecordsDescription": "Make sure to save these DNS records as you will not see them again.", + "createDomainDnsPropagation": "DNS Propagation", + "createDomainDnsPropagationDescription": "DNS changes may take some time to propagate across the internet. This can take anywhere from a few minutes to 48 hours, depending on your DNS provider and TTL settings.", + "resourcePortRequired": "Port number is required for non-HTTP resources", + "resourcePortNotAllowed": "Port number should not be set for HTTP resources" +} From afde49304060401f0021a7cfb026df2247b4d5c8 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Wed, 16 Jul 2025 22:00:27 -0700 Subject: [PATCH 02/12] New translations en-us.json (Polish) --- messages/pl-PL.json | 144 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 133 insertions(+), 11 deletions(-) diff --git a/messages/pl-PL.json b/messages/pl-PL.json index e21902ea..c5f5297e 100644 --- a/messages/pl-PL.json +++ b/messages/pl-PL.json @@ -11,8 +11,9 @@ "componentsErrorNoMemberCreate": "Nie jesteś obecnie członkiem żadnej organizacji. Aby rozpocząć, utwórz organizację.", "componentsErrorNoMember": "Nie jesteś obecnie członkiem żadnej organizacji.", "welcome": "Witaj w Pangolinie", + "welcomeTo": "Witaj w", "componentsCreateOrg": "Utwórz organizację", - "componentsMember": "Jesteś członkiem {count, plural, =0 {Żadna organizacja} =1 {Jedna organizacja} other {# organizacji}}.", + "componentsMember": "Jesteś członkiem {count, plural, =0 {żadna organizacja} one {jedna organizacja} few {# organizacje} many {# organizacji} other {# organizacji}}.", "componentsInvalidKey": "Wykryto nieprawidłowe lub wygasłe klucze licencyjne. Postępuj zgodnie z warunkami licencji, aby kontynuować korzystanie ze wszystkich funkcji.", "dismiss": "Odrzuć", "componentsLicenseViolation": "Naruszenie licencji: Ten serwer używa stron {usedSites} , które przekraczają limit licencyjny stron {maxSites} . Postępuj zgodnie z warunkami licencji, aby kontynuować korzystanie ze wszystkich funkcji.", @@ -34,7 +35,7 @@ "createAccount": "Utwórz konto", "viewSettings": "Pokaż ustawienia", "delete": "Usuń", - "name": "Nazwisko", + "name": "Nazwa", "online": "Dostępny", "offline": "Offline", "site": "Witryna", @@ -138,7 +139,7 @@ "resourceSearch": "Szukaj zasobów", "openMenu": "Otwórz menu", "resource": "Zasoby", - "title": "Rozporządzenie Rady (EWG) nr 2658/87 z dnia 23 lipca 1987 r. w sprawie nomenklatury taryfowej i statystycznej oraz w sprawie Wspólnej Taryfy Celnej (Dz.U. L 256 z 7.9.1987, s. 1).", + "title": "Tytuł", "created": "Utworzono", "expires": "Wygasa", "never": "Nigdy", @@ -206,6 +207,7 @@ "orgGeneralSettings": "Ustawienia organizacji", "orgGeneralSettingsDescription": "Zarządzaj szczegółami swojej organizacji i konfiguracją", "saveGeneralSettings": "Zapisz ustawienia ogólne", + "saveSettings": "Zapisz ustawienia", "orgDangerZone": "Strefa zagrożenia", "orgDangerZoneDescription": "Po usunięciu tego organa nie ma odwrotu. Upewnij się.", "orgDelete": "Usuń organizację", @@ -249,7 +251,7 @@ "weeks": "Tygodnie", "months": "Miesiące", "years": "Lata", - "day": "{count, plural, =1 {# dzień} other {# dni}}", + "day": "{count, plural, one {# dzień} few {# dni} many {# dni} other {# dni}}", "apiKeysTitle": "Informacje o kluczu API", "apiKeysConfirmCopy2": "Musisz potwierdzić, że skopiowałeś klucz API.", "apiKeysErrorCreate": "Błąd podczas tworzenia klucza API", @@ -347,7 +349,7 @@ "licensePurchase": "Kup licencję", "licensePurchaseSites": "Kup dodatkowe witryny", "licenseSitesUsedMax": "Użyte strony {usedSites} z {maxSites}", - "licenseSitesUsed": "{count, plural, =0 {# witryn} =1 {# witryn} other {# witryn}} w systemie.", + "licenseSitesUsed": "{count, plural, =0 {# witryn} one {# witryna} few {# witryny} many {# witryn} other {# witryn}} w systemie.", "licensePurchaseDescription": "Wybierz ile witryn chcesz {selectedMode, select, license {kupić licencję. Zawsze możesz dodać więcej witryn później.} other {dodaj do swojej istniejącej licencji.}}", "licenseFee": "Opłata licencyjna", "licensePriceSite": "Cena za witrynę", @@ -436,7 +438,7 @@ "accessRoleSelect": "Wybierz rolę", "inviteEmailSentDescription": "Email został wysłany do użytkownika z linkiem dostępu poniżej. Musi on uzyskać dostęp do linku, aby zaakceptować zaproszenie.", "inviteSentDescription": "Użytkownik został zaproszony. Musi uzyskać dostęp do poniższego linku, aby zaakceptować zaproszenie.", - "inviteExpiresIn": "Zaproszenie wygaśnie za {days, plural, =1 {# dzień} other {# dni}}.", + "inviteExpiresIn": "Zaproszenie wygaśnie za {days, plural, one {# dzień} few {# dni} many {# dni} other {# dni}}.", "idpTitle": "Informacje ogólne", "idpSelect": "Wybierz dostawcę tożsamości dla użytkownika zewnętrznego", "idpNotConfigured": "Nie skonfigurowano żadnych dostawców tożsamości. Skonfiguruj dostawcę tożsamości przed utworzeniem użytkowników zewnętrznych.", @@ -958,6 +960,8 @@ "licenseTierProfessionalRequiredDescription": "Ta funkcja jest dostępna tylko w edycji Professional.", "actionGetOrg": "Pobierz organizację", "actionUpdateOrg": "Aktualizuj organizację", + "actionUpdateUser": "Zaktualizuj użytkownika", + "actionGetUser": "Pobierz użytkownika", "actionGetOrgUser": "Pobierz użytkownika organizacji", "actionListOrgDomains": "Lista domen organizacji", "actionCreateSite": "Utwórz witrynę", @@ -1090,19 +1094,21 @@ "sidebarAllUsers": "Wszyscy użytkownicy", "sidebarIdentityProviders": "Dostawcy tożsamości", "sidebarLicense": "Licencja", + "sidebarClients": "Klienci", + "sidebarDomains": "Domeny", "enableDockerSocket": "Włącz gniazdo dokera", "enableDockerSocketDescription": "Włącz wykrywanie Docker Socket w celu wypełnienia informacji o kontenerach. Ścieżka gniazda musi być dostarczona do Newt.", "enableDockerSocketLink": "Dowiedz się więcej", "viewDockerContainers": "Zobacz kontenery dokujące", "containersIn": "Pojemniki w {siteName}", "selectContainerDescription": "Wybierz dowolny kontener do użycia jako nazwa hosta dla tego celu. Kliknij port, aby użyć portu.", - "containerName": "Nazwisko", + "containerName": "Nazwa", "containerImage": "Obraz", "containerState": "Stan", "containerNetworks": "Sieci", "containerHostnameIp": "Nazwa hosta/IP", "containerLabels": "Etykiety", - "containerLabelsCount": "{count} etykieta{s,plural,one{} other{s}}", + "containerLabelsCount": "{count, plural, one {# etykieta} few {# etykiety} many {# etykiet} other {# etykiet}}", "containerLabelsTitle": "Etykiety kontenera", "containerLabelEmpty": "", "containerPorts": "Porty", @@ -1114,7 +1120,7 @@ "showStoppedContainers": "Pokaż zatrzymane kontenery", "noContainersFound": "Nie znaleziono kontenerów. Upewnij się, że kontenery dokujące są uruchomione.", "searchContainersPlaceholder": "Szukaj w {count} kontenerach...", - "searchResultsCount": "{count} wynik{s,plural,one{} other{s}}", + "searchResultsCount": "{count, plural, one {# wynik} few {# wyniki} many {# wyników} other {# wyników}}", "filters": "Filtry", "filterOptions": "Opcje filtru", "filterPorts": "Porty", @@ -1129,10 +1135,88 @@ "dark": "ciemny", "system": "System", "theme": "Motyw", + "subnetRequired": "Podsieć jest wymagana", "initialSetupTitle": "Wstępna konfiguracja serwera", "initialSetupDescription": "Utwórz początkowe konto administratora serwera. Może istnieć tylko jeden administrator serwera. Zawsze można zmienić te dane uwierzytelniające.", "createAdminAccount": "Utwórz konto administratora", "setupErrorCreateAdmin": "Wystąpił błąd podczas tworzenia konta administratora serwera.", + "certificateStatus": "Status certyfikatu", + "loading": "Ładowanie", + "restart": "Uruchom ponownie", + "domains": "Domeny", + "domainsDescription": "Zarządzaj domenami swojej organizacji", + "domainsSearch": "Szukaj domen...", + "domainAdd": "Dodaj domenę", + "domainAddDescription": "Zarejestruj nową domenę w swojej organizacji", + "domainCreate": "Utwórz domenę", + "domainCreatedDescription": "Domena utworzona pomyślnie", + "domainDeletedDescription": "Domena usunięta pomyślnie", + "domainQuestionRemove": "Czy na pewno chcesz usunąć domenę {domain} ze swojego konta?", + "domainMessageRemove": "Po usunięciu domena nie będzie już powiązana z twoim kontem.", + "domainMessageConfirm": "Aby potwierdzić, wpisz nazwę domeny poniżej.", + "domainConfirmDelete": "Potwierdź usunięcie domeny", + "domainDelete": "Usuń domenę", + "domain": "Domena", + "selectDomainTypeNsName": "Delegacja domeny (NS)", + "selectDomainTypeNsDescription": "Ta domena i wszystkie jej subdomeny. Użyj tego, gdy chcesz kontrolować całą strefę domeny.", + "selectDomainTypeCnameName": "Pojedyncza domena (CNAME)", + "selectDomainTypeCnameDescription": "Tylko ta pojedyncza domena. Użyj tego dla poszczególnych subdomen lub wpisów specyficznych dla domeny.", + "selectDomainTypeWildcardName": "Domena wieloznaczna", + "selectDomainTypeWildcardDescription": "Ta domena i jej pierwsza warstwa subdomen.", + "domainDelegation": "Pojedyncza domena", + "selectType": "Wybierz typ", + "actions": "Akcje", + "refresh": "Odśwież", + "refreshError": "Nie udało się odświeżyć danych", + "verified": "Zatwierdzony", + "pending": "Oczekuje", + "sidebarBilling": "Fakturowanie", + "billing": "Fakturowanie", + "orgBillingDescription": "Zarządzaj swoimi informacjami rozliczeniowymi i subskrypcjami", + "github": "GitHub", + "pangolinHosted": "Pangolin Hosted", + "fossorial": "Fossorial", + "completeAccountSetup": "Zakończ konfigurację konta", + "completeAccountSetupDescription": "Ustaw swoje hasło, aby rozpocząć", + "accountSetupSent": "Wyślemy kod konfiguracji konta na ten adres e-mail.", + "accountSetupCode": "Kod konfiguracji", + "accountSetupCodeDescription": "Sprawdź swój e-mail, aby znaleźć kod konfiguracji.", + "passwordCreate": "Utwórz hasło", + "passwordCreateConfirm": "Potwierdź hasło", + "accountSetupSubmit": "Wyślij kod konfiguracji", + "completeSetup": "Zakończ konfigurację", + "accountSetupSuccess": "Konfiguracja konta zakończona! Witaj w Pangolin!", + "documentation": "Dokumentacja", + "saveAllSettings": "Zapisz wszystkie ustawienia", + "settingsUpdated": "Ustawienia zaktualizowane", + "settingsUpdatedDescription": "Wszystkie ustawienia zostały pomyślnie zaktualizowane", + "settingsErrorUpdate": "Nie udało się zaktualizować ustawień", + "settingsErrorUpdateDescription": "Wystąpił błąd podczas aktualizacji ustawień", + "sidebarCollapse": "Zwiń", + "sidebarExpand": "Rozwiń", + "newtUpdateAvailable": "Dostępna aktualizacja", + "newtUpdateAvailableInfo": "Nowa wersja Newt jest dostępna. Prosimy o aktualizację do najnowszej wersji dla najlepszej pracy.", + "domainPickerEnterDomain": "Wprowadź swoją domenę", + "domainPickerPlaceholder": "myapp.example.com, api.v1.mydomain.com lub po prostu myapp", + "domainPickerDescription": "Wprowadź pełną domenę, subdomenę, lub po prostu nazwę, aby zobaczyć dostępne opcje", + "domainPickerTabAll": "Wszystko", + "domainPickerTabOrganization": "Organizacja", + "domainPickerTabProvided": "Dostarczona", + "domainPickerSortAsc": "A-Z", + "domainPickerSortDesc": "Z-A", + "domainPickerCheckingAvailability": "Sprawdzanie dostępności...", + "domainPickerNoMatchingDomains": "Nie znaleziono żadnych pasujących domen dla \"{userInput}\". Spróbuj innej domeny lub sprawdź ustawienia domeny swojej organizacji.", + "domainPickerOrganizationDomains": "Domeny organizacji", + "domainPickerProvidedDomains": "Dostarczone domeny", + "domainPickerSubdomain": "Subdomena: {subdomain}", + "domainPickerNamespace": "Przestrzeń nazw: {namespace}", + "domainPickerShowMore": "Pokaż więcej", + "domainNotFound": "Nie znaleziono domeny", + "domainNotFoundDescription": "Zasób jest wyłączony, ponieważ domena nie istnieje już w naszym systemie. Proszę ustawić nową domenę dla tego zasobu.", + "failed": "Niepowodzenie", + "createNewOrgDescription": "Utwórz nową organizację", + "organization": "Organizacja", + "port": "Port", "securityKeyManage": "Zarządzaj kluczami bezpieczeństwa", "securityKeyDescription": "Dodaj lub usuń klucze bezpieczeństwa do uwierzytelniania bez hasła", "securityKeyRegister": "Zarejestruj nowy klucz bezpieczeństwa", @@ -1142,7 +1226,6 @@ "securityKeyRemove": "Usuń", "securityKeyLastUsed": "Ostatnio używany: {date}", "securityKeyNameLabel": "Nazwa", - "securityKeyNamePlaceholder": "Wprowadź nazwę dla tego klucza bezpieczeństwa", "securityKeyRegisterSuccess": "Klucz bezpieczeństwa został pomyślnie zarejestrowany", "securityKeyRegisterError": "Błąd podczas rejestracji klucza bezpieczeństwa", "securityKeyRemoveSuccess": "Klucz bezpieczeństwa został pomyślnie usunięty", @@ -1150,5 +1233,44 @@ "securityKeyLoadError": "Błąd podczas ładowania kluczy bezpieczeństwa", "securityKeyLogin": "Zaloguj się kluczem bezpieczeństwa", "securityKeyAuthError": "Błąd podczas uwierzytelniania kluczem bezpieczeństwa", - "securityKeyRecommendation": "Rozważ zarejestrowanie innego klucza bezpieczeństwa na innym urządzeniu, aby upewnić się, że nie zostaniesz zablokowany z dostępu do swojego konta." + "securityKeyRecommendation": "Rozważ zarejestrowanie innego klucza bezpieczeństwa na innym urządzeniu, aby upewnić się, że nie zostaniesz zablokowany z dostępu do swojego konta.", + "registering": "Rejestracja...", + "securityKeyPrompt": "Proszę zweryfikować swoją tożsamość, używając klucza bezpieczeństwa. Upewnij się, że twój klucz bezpieczeństwa jest podłączony i gotowy.", + "securityKeyBrowserNotSupported": "Twoja przeglądarka nie obsługuje kluczy bezpieczeństwa. Proszę użyć nowoczesnej przeglądarki, takiej jak Chrome, Firefox lub Safari.", + "securityKeyPermissionDenied": "Proszę umożliwić dostęp do klucza bezpieczeństwa, aby kontynuować logowanie.", + "securityKeyRemovedTooQuickly": "Proszę utrzymać klucz bezpieczeństwa podłączony, dopóki proces logowania się nie zakończy.", + "securityKeyNotSupported": "Twój klucz bezpieczeństwa może być niekompatybilny. Proszę spróbować innego klucza bezpieczeństwa.", + "securityKeyUnknownError": "Wystąpił problem z używaniem klucza bezpieczeństwa. Proszę spróbować ponownie.", + "twoFactorRequired": "Uwierzytelnianie dwuskładnikowe jest wymagane do zarejestrowania klucza bezpieczeństwa.", + "twoFactor": "Uwierzytelnianie dwuskładnikowe", + "adminEnabled2FaOnYourAccount": "Twój administrator włączył uwierzytelnianie dwuskładnikowe dla {email}. Proszę ukończyć proces konfiguracji, aby kontynuować.", + "continueToApplication": "Kontynuuj do aplikacji", + "securityKeyAdd": "Dodaj klucz bezpieczeństwa", + "securityKeyRegisterTitle": "Zarejestruj nowy klucz bezpieczeństwa", + "securityKeyRegisterDescription": "Podłącz swój klucz bezpieczeństwa i wprowadź nazwę, aby go zidentyfikować", + "securityKeyTwoFactorRequired": "Wymagane uwierzytelnianie dwuskładnikowe", + "securityKeyTwoFactorDescription": "Proszę wprowadzić kod uwierzytelnienia dwuskładnikowego, aby zarejestrować klucz bezpieczeństwa", + "securityKeyTwoFactorRemoveDescription": "Proszę wprowadzić kod uwierzytelnienia dwuskładnikowego, aby usunąć klucz bezpieczeństwa", + "securityKeyTwoFactorCode": "Kod dwuskładnikowy", + "securityKeyRemoveTitle": "Usuń klucz bezpieczeństwa", + "securityKeyRemoveDescription": "Wprowadź hasło, aby usunąć klucz bezpieczeństwa \"{name}\"", + "securityKeyNoKeysRegistered": "Nie zarejestrowano kluczy bezpieczeństwa", + "securityKeyNoKeysDescription": "Dodaj klucz bezpieczeństwa, aby zwiększyć swoje zabezpieczenia konta", + "createDomainRequired": "Domena jest wymagana", + "createDomainAddDnsRecords": "Dodaj rekordy DNS", + "createDomainAddDnsRecordsDescription": "Dodaj poniższe rekordy DNS do swojego dostawcy domeny, aby zakończyć konfigurację.", + "createDomainNsRecords": "Rekordy NS", + "createDomainRecord": "Rekord", + "createDomainType": "Typ:", + "createDomainName": "Nazwa:", + "createDomainValue": "Wartość:", + "createDomainCnameRecords": "Rekordy CNAME", + "createDomainRecordNumber": "Record {number}", + "createDomainTxtRecords": "Rekordy TXT", + "createDomainSaveTheseRecords": "Zapisz te rekordy", + "createDomainSaveTheseRecordsDescription": "Upewnij się, że zapiszesz te rekordy DNS, ponieważ nie będziesz mieć ich ponownie na ekranie.", + "createDomainDnsPropagation": "Propagacja DNS", + "createDomainDnsPropagationDescription": "Zmiany DNS mogą zająć trochę czasu na rozpropagowanie się w Internecie. Może to potrwać od kilku minut do 48 godzin, w zależności od dostawcy DNS i ustawień TTL.", + "resourcePortRequired": "Numer portu jest wymagany dla zasobów non-HTTP", + "resourcePortNotAllowed": "Numer portu nie powinien być ustawiony dla zasobów HTTP" } From de96b722d58d500570efcbad37839cd333166692 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Wed, 16 Jul 2025 22:00:28 -0700 Subject: [PATCH 03/12] New translations en-us.json (French) --- messages/fr-FR.json | 138 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 130 insertions(+), 8 deletions(-) diff --git a/messages/fr-FR.json b/messages/fr-FR.json index 4681f0cc..6eed64ce 100644 --- a/messages/fr-FR.json +++ b/messages/fr-FR.json @@ -11,8 +11,9 @@ "componentsErrorNoMemberCreate": "Vous n'êtes actuellement membre d'aucune organisation. Créez une organisation pour commencer.", "componentsErrorNoMember": "Vous n'êtes actuellement membre d'aucune organisation.", "welcome": "Bienvenue à Pangolin", + "welcomeTo": "Bienvenue chez", "componentsCreateOrg": "Créer une organisation", - "componentsMember": "Vous êtes membre de {count, plural, =0 {aucune organisation} =1 {Une organisation} other {# organisations}}.", + "componentsMember": "Vous êtes membre de {count, plural, =0 {aucune organisation} one {une organisation} other {# organisations}}.", "componentsInvalidKey": "Clés de licence invalides ou expirées détectées. Suivez les conditions de licence pour continuer à utiliser toutes les fonctionnalités.", "dismiss": "Refuser", "componentsLicenseViolation": "Violation de licence : Ce serveur utilise des sites {usedSites} qui dépassent la limite autorisée des sites {maxSites} . Suivez les conditions de licence pour continuer à utiliser toutes les fonctionnalités.", @@ -206,6 +207,7 @@ "orgGeneralSettings": "Paramètres de l'organisation", "orgGeneralSettingsDescription": "Gérer les détails et la configuration de votre organisation", "saveGeneralSettings": "Enregistrer les paramètres généraux", + "saveSettings": "Enregistrer les paramètres", "orgDangerZone": "Zone de danger", "orgDangerZoneDescription": "Une fois que vous supprimez cette organisation, il n'y a pas de retour en arrière. Soyez certain.", "orgDelete": "Supprimer l'organisation", @@ -249,7 +251,7 @@ "weeks": "Semaines", "months": "Mois", "years": "Années", - "day": "{count, plural, =1 {# jour} other {# jours}}", + "day": "{count, plural, one {# jour} other {# jours}}", "apiKeysTitle": "Informations sur la clé API", "apiKeysConfirmCopy2": "Vous devez confirmer que vous avez copié la clé API.", "apiKeysErrorCreate": "Erreur lors de la création de la clé API", @@ -347,7 +349,7 @@ "licensePurchase": "Acheter une licence", "licensePurchaseSites": "Acheter des sites supplémentaires", "licenseSitesUsedMax": "{usedSites} des sites {maxSites} utilisés", - "licenseSitesUsed": "{count, plural, =0 {# sites} =1 {# site} other {# sites}} dans le système.", + "licenseSitesUsed": "{count, plural, =0 {# sites} one {# site} other {# sites}} dans le système.", "licensePurchaseDescription": "Choisissez le nombre de sites que vous voulez {selectedMode, select, license {achetez une licence. Vous pouvez toujours ajouter plus de sites plus tard.} other {ajouter à votre licence existante.}}", "licenseFee": "Frais de licence", "licensePriceSite": "Prix par site", @@ -436,7 +438,7 @@ "accessRoleSelect": "Sélectionner un rôle", "inviteEmailSentDescription": "Un e-mail a été envoyé à l'utilisateur avec le lien d'accès ci-dessous. Ils doivent accéder au lien pour accepter l'invitation.", "inviteSentDescription": "L'utilisateur a été invité. Ils doivent accéder au lien ci-dessous pour accepter l'invitation.", - "inviteExpiresIn": "L'invitation expirera dans {days, plural, =1 {# jour} other {# jours}}.", + "inviteExpiresIn": "L'invitation expirera dans {days, plural, one {# jour} other {# jours}}.", "idpTitle": "Informations générales", "idpSelect": "Sélectionnez le fournisseur d'identité pour l'utilisateur externe", "idpNotConfigured": "Aucun fournisseur d'identité n'est configuré. Veuillez configurer un fournisseur d'identité avant de créer des utilisateurs externes.", @@ -958,6 +960,8 @@ "licenseTierProfessionalRequiredDescription": "Cette fonctionnalité n'est disponible que dans l'Édition Professionnelle.", "actionGetOrg": "Obtenir l'organisation", "actionUpdateOrg": "Mettre à jour l'organisation", + "actionUpdateUser": "Mettre à jour l'utilisateur", + "actionGetUser": "Obtenir l'utilisateur", "actionGetOrgUser": "Obtenir l'utilisateur de l'organisation", "actionListOrgDomains": "Lister les domaines de l'organisation", "actionCreateSite": "Créer un site", @@ -1090,6 +1094,8 @@ "sidebarAllUsers": "Tous les utilisateurs", "sidebarIdentityProviders": "Fournisseurs d'identité", "sidebarLicense": "Licence", + "sidebarClients": "Clients", + "sidebarDomains": "Domaines", "enableDockerSocket": "Activer Docker Socket", "enableDockerSocketDescription": "Activer la découverte Docker Socket pour remplir les informations du conteneur. Le chemin du socket doit être fourni à Newt.", "enableDockerSocketLink": "En savoir plus", @@ -1102,7 +1108,7 @@ "containerNetworks": "Réseaux", "containerHostnameIp": "Nom d'hôte/IP", "containerLabels": "Étiquettes", - "containerLabelsCount": "{count} étiquette{s,plural,one{} other{s}}", + "containerLabelsCount": "{count, plural, one {# étiquette} other {# étiquettes}}", "containerLabelsTitle": "Étiquettes de conteneur", "containerLabelEmpty": "", "containerPorts": "Ports", @@ -1114,7 +1120,7 @@ "showStoppedContainers": "Afficher les conteneurs arrêtés", "noContainersFound": "Aucun conteneur trouvé. Assurez-vous que les conteneurs Docker sont en cours d'exécution.", "searchContainersPlaceholder": "Rechercher dans les conteneurs {count}...", - "searchResultsCount": "{count} résultat{s,plural,one{} other{s}}", + "searchResultsCount": "{count, plural, one {# résultat} other {# résultats}}", "filters": "Filtres", "filterOptions": "Options de filtre", "filterPorts": "Ports", @@ -1129,10 +1135,88 @@ "dark": "sombre", "system": "système", "theme": "Thème", + "subnetRequired": "Le sous-réseau est requis", "initialSetupTitle": "Configuration initiale du serveur", "initialSetupDescription": "Créer le compte administrateur du serveur initial. Un seul administrateur serveur peut exister. Vous pouvez toujours changer ces informations d'identification plus tard.", "createAdminAccount": "Créer un compte administrateur", "setupErrorCreateAdmin": "Une erreur s'est produite lors de la création du compte administrateur du serveur.", + "certificateStatus": "Statut du certificat", + "loading": "Chargement", + "restart": "Redémarrer", + "domains": "Domaines", + "domainsDescription": "Gérer les domaines de votre organisation", + "domainsSearch": "Rechercher des domaines...", + "domainAdd": "Ajouter un domaine", + "domainAddDescription": "Enregistrez un nouveau domaine avec votre organisation", + "domainCreate": "Créer un domaine", + "domainCreatedDescription": "Domaine créé avec succès", + "domainDeletedDescription": "Domaine supprimé avec succès", + "domainQuestionRemove": "Êtes-vous sûr de vouloir supprimer le domaine {domain} de votre compte ?", + "domainMessageRemove": "Une fois supprimé, le domaine ne sera plus associé à votre compte.", + "domainMessageConfirm": "Pour confirmer, veuillez taper le nom du domaine ci-dessous.", + "domainConfirmDelete": "Confirmer la suppression du domaine", + "domainDelete": "Supprimer le domaine", + "domain": "Domaine", + "selectDomainTypeNsName": "Délégation de domaine (NS)", + "selectDomainTypeNsDescription": "Ce domaine et tous ses sous-domaines. Utilisez cela lorsque vous souhaitez contrôler une zone de domaine entière.", + "selectDomainTypeCnameName": "Domaine unique (CNAME)", + "selectDomainTypeCnameDescription": "Juste ce domaine spécifique. Utilisez ce paramètre pour des sous-domaines individuels ou des entrées de domaine spécifiques.", + "selectDomainTypeWildcardName": "Domaine Générique", + "selectDomainTypeWildcardDescription": "Ce domaine et son premier niveau de sous-domaines.", + "domainDelegation": "Domaine Unique", + "selectType": "Sélectionnez un type", + "actions": "Actions", + "refresh": "Actualiser", + "refreshError": "Échec de l'actualisation des données", + "verified": "Vérifié", + "pending": "En attente", + "sidebarBilling": "Facturation", + "billing": "Facturation", + "orgBillingDescription": "Gérez vos informations de facturation et vos abonnements", + "github": "GitHub", + "pangolinHosted": "Pangolin Hébergement", + "fossorial": "Fossorial", + "completeAccountSetup": "Complétez la configuration du compte", + "completeAccountSetupDescription": "Définissez votre mot de passe pour commencer", + "accountSetupSent": "Nous enverrons un code de configuration de compte à cette adresse e-mail.", + "accountSetupCode": "Code de configuration", + "accountSetupCodeDescription": "Vérifiez votre e-mail pour le code de configuration.", + "passwordCreate": "Créer un mot de passe", + "passwordCreateConfirm": "Confirmer le mot de passe", + "accountSetupSubmit": "Envoyer le code de configuration", + "completeSetup": "Configuration complète", + "accountSetupSuccess": "Configuration du compte terminée! Bienvenue chez Pangolin !", + "documentation": "Documentation", + "saveAllSettings": "Enregistrer tous les paramètres", + "settingsUpdated": "Paramètres mis à jour", + "settingsUpdatedDescription": "Tous les paramètres ont été mis à jour avec succès", + "settingsErrorUpdate": "Échec de la mise à jour des paramètres", + "settingsErrorUpdateDescription": "Une erreur s'est produite lors de la mise à jour des paramètres", + "sidebarCollapse": "Réduire", + "sidebarExpand": "Développer", + "newtUpdateAvailable": "Mise à jour disponible", + "newtUpdateAvailableInfo": "Une nouvelle version de Newt est disponible. Veuillez mettre à jour vers la dernière version pour une meilleure expérience.", + "domainPickerEnterDomain": "Entrez votre domaine", + "domainPickerPlaceholder": "myapp.example.com, api.v1.mydomain.com, ou simplement myapp", + "domainPickerDescription": "Entrez un domaine complet, un sous-domaine, ou simplement un nom pour voir les options disponibles", + "domainPickerTabAll": "Tous", + "domainPickerTabOrganization": "Organisation", + "domainPickerTabProvided": "Fournis", + "domainPickerSortAsc": "A-Z", + "domainPickerSortDesc": "Z-A", + "domainPickerCheckingAvailability": "Vérification de la disponibilité...", + "domainPickerNoMatchingDomains": "Aucun domaine correspondant trouvé pour \"{userInput}\". Essayez un autre domaine ou vérifiez les paramètres de domaine de votre organisation.", + "domainPickerOrganizationDomains": "Domaines de l'organisation", + "domainPickerProvidedDomains": "Domaines fournis", + "domainPickerSubdomain": "Sous-domaine : {subdomain}", + "domainPickerNamespace": "Espace de noms : {namespace}", + "domainPickerShowMore": "Afficher plus", + "domainNotFound": "Domaine introuvable", + "domainNotFoundDescription": "Cette ressource est désactivée car le domaine n'existe plus dans notre système. Veuillez définir un nouveau domaine pour cette ressource.", + "failed": "Échec", + "createNewOrgDescription": "Créer une nouvelle organisation", + "organization": "Organisation", + "port": "Port", "securityKeyManage": "Gérer les clés de sécurité", "securityKeyDescription": "Ajouter ou supprimer des clés de sécurité pour l'authentification sans mot de passe", "securityKeyRegister": "Enregistrer une nouvelle clé de sécurité", @@ -1142,7 +1226,6 @@ "securityKeyRemove": "Supprimer", "securityKeyLastUsed": "Dernière utilisation : {date}", "securityKeyNameLabel": "Nom", - "securityKeyNamePlaceholder": "Entrez un nom pour cette clé de sécurité", "securityKeyRegisterSuccess": "Clé de sécurité enregistrée avec succès", "securityKeyRegisterError": "Échec de l'enregistrement de la clé de sécurité", "securityKeyRemoveSuccess": "Clé de sécurité supprimée avec succès", @@ -1150,5 +1233,44 @@ "securityKeyLoadError": "Échec du chargement des clés de sécurité", "securityKeyLogin": "Se connecter avec une clé de sécurité", "securityKeyAuthError": "Échec de l'authentification avec la clé de sécurité", - "securityKeyRecommendation": "Envisagez d'enregistrer une autre clé de sécurité sur un appareil différent pour vous assurer de ne pas être bloqué de votre compte." + "securityKeyRecommendation": "Envisagez d'enregistrer une autre clé de sécurité sur un appareil différent pour vous assurer de ne pas être bloqué de votre compte.", + "registering": "Enregistrement...", + "securityKeyPrompt": "Veuillez vérifier votre identité à l'aide de votre clé de sécurité. Assurez-vous que votre clé de sécurité est connectée et prête.", + "securityKeyBrowserNotSupported": "Votre navigateur ne prend pas en charge les clés de sécurité. Veuillez utiliser un navigateur moderne comme Chrome, Firefox ou Safari.", + "securityKeyPermissionDenied": "Veuillez autoriser l'accès à votre clé de sécurité pour continuer la connexion.", + "securityKeyRemovedTooQuickly": "Veuillez garder votre clé de sécurité connectée jusqu'à ce que le processus de connexion soit terminé.", + "securityKeyNotSupported": "Votre clé de sécurité peut ne pas être compatible. Veuillez essayer une clé de sécurité différente.", + "securityKeyUnknownError": "Un problème est survenu avec votre clé de sécurité. Veuillez réessayer.", + "twoFactorRequired": "L'authentification à deux facteurs est requise pour enregistrer une clé de sécurité.", + "twoFactor": "Authentification à deux facteurs", + "adminEnabled2FaOnYourAccount": "Votre administrateur a activé l'authentification à deux facteurs pour {email}. Veuillez terminer le processus d'installation pour continuer.", + "continueToApplication": "Continuer vers l'application", + "securityKeyAdd": "Ajouter une clé de sécurité", + "securityKeyRegisterTitle": "Enregistrer une nouvelle clé de sécurité", + "securityKeyRegisterDescription": "Connectez votre clé de sécurité et saisissez un nom pour l'identifier", + "securityKeyTwoFactorRequired": "Authentification à deux facteurs requise", + "securityKeyTwoFactorDescription": "Veuillez entrer votre code d'authentification à deux facteurs pour enregistrer la clé de sécurité", + "securityKeyTwoFactorRemoveDescription": "Veuillez entrer votre code d'authentification à deux facteurs pour supprimer la clé de sécurité", + "securityKeyTwoFactorCode": "Code à deux facteurs", + "securityKeyRemoveTitle": "Supprimer la clé de sécurité", + "securityKeyRemoveDescription": "Saisissez votre mot de passe pour supprimer la clé de sécurité \"{name}\"", + "securityKeyNoKeysRegistered": "Aucune clé de sécurité enregistrée", + "securityKeyNoKeysDescription": "Ajoutez une clé de sécurité pour améliorer la sécurité de votre compte", + "createDomainRequired": "Le domaine est requis", + "createDomainAddDnsRecords": "Ajouter des enregistrements DNS", + "createDomainAddDnsRecordsDescription": "Ajouter les enregistrements DNS suivants à votre fournisseur de domaine pour compléter la configuration.", + "createDomainNsRecords": "Enregistrements NS", + "createDomainRecord": "Enregistrement", + "createDomainType": "Type :", + "createDomainName": "Nom :", + "createDomainValue": "Valeur :", + "createDomainCnameRecords": "Enregistrements CNAME", + "createDomainRecordNumber": "Enregistrement {number}", + "createDomainTxtRecords": "Enregistrements TXT", + "createDomainSaveTheseRecords": "Enregistrez ces enregistrements", + "createDomainSaveTheseRecordsDescription": "Assurez-vous de sauvegarder ces enregistrements DNS car vous ne les reverrez pas.", + "createDomainDnsPropagation": "Propagation DNS", + "createDomainDnsPropagationDescription": "Les modifications DNS peuvent mettre du temps à se propager sur internet. Cela peut prendre de quelques minutes à 48 heures selon votre fournisseur DNS et les réglages TTL.", + "resourcePortRequired": "Le numéro de port est requis pour les ressources non-HTTP", + "resourcePortNotAllowed": "Le numéro de port ne doit pas être défini pour les ressources HTTP" } From 05ba2c0103f909e8e6f2048dc8f70ce8f1828dc6 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Wed, 16 Jul 2025 22:00:29 -0700 Subject: [PATCH 04/12] New translations en-us.json (Spanish) --- messages/es-ES.json | 138 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 130 insertions(+), 8 deletions(-) diff --git a/messages/es-ES.json b/messages/es-ES.json index 226c02b6..36d0051f 100644 --- a/messages/es-ES.json +++ b/messages/es-ES.json @@ -11,8 +11,9 @@ "componentsErrorNoMemberCreate": "Actualmente no eres miembro de ninguna organización. Crea una organización para empezar.", "componentsErrorNoMember": "Actualmente no eres miembro de ninguna organización.", "welcome": "Bienvenido a Pangolin", + "welcomeTo": "Bienvenido a", "componentsCreateOrg": "Crear una organización", - "componentsMember": "¡Eres un miembro de {count, plural, =0 {¡Ninguna organización} =1 {¡una organización} other {# organizaciones}}.", + "componentsMember": "You're a member of {count, plural, =0 {no organization} one {one organization} other {# organizations}}.", "componentsInvalidKey": "Se han detectado claves de licencia inválidas o caducadas. Siga los términos de licencia para seguir usando todas las características.", "dismiss": "Descartar", "componentsLicenseViolation": "Violación de la Licencia: Este servidor está usando sitios {usedSites} que exceden su límite de licencias de sitios {maxSites} . Siga los términos de licencia para seguir usando todas las características.", @@ -206,6 +207,7 @@ "orgGeneralSettings": "Configuración de la organización", "orgGeneralSettingsDescription": "Administra los detalles y la configuración de tu organización", "saveGeneralSettings": "Guardar ajustes generales", + "saveSettings": "Guardar ajustes", "orgDangerZone": "Zona de peligro", "orgDangerZoneDescription": "Una vez que elimines este órgano, no hay vuelta atrás. Por favor, asegúrate de ello.", "orgDelete": "Eliminar organización", @@ -249,7 +251,7 @@ "weeks": "Semanas", "months": "Meses", "years": "Años", - "day": "{count, plural, =1 {# día} other {# días}}", + "day": "{count, plural, one {# día} other {# días}}", "apiKeysTitle": "Información de Clave API", "apiKeysConfirmCopy2": "Debes confirmar que has copiado la clave API.", "apiKeysErrorCreate": "Error al crear la clave API", @@ -347,7 +349,7 @@ "licensePurchase": "Comprar Licencia", "licensePurchaseSites": "Comprar sitios adicionales", "licenseSitesUsedMax": "{usedSites} de {maxSites} sitios usados", - "licenseSitesUsed": "{count, plural, =0 {# sitios} =1 {# sitio} other {# sitios}} en el sistema.", + "licenseSitesUsed": "{count, plural, =0 {# sites} one {# site} other {# sites}} in system.", "licensePurchaseDescription": "Elige cuántos sitios quieres {selectedMode, select, license {compra una licencia para. Siempre puedes añadir más sitios más tarde.} other {añadir a tu licencia existente.}}", "licenseFee": "Tarifa de licencia", "licensePriceSite": "Precio por sitio", @@ -436,7 +438,7 @@ "accessRoleSelect": "Seleccionar rol", "inviteEmailSentDescription": "Se ha enviado un correo electrónico al usuario con el siguiente enlace de acceso. Debe acceder al enlace para aceptar la invitación.", "inviteSentDescription": "El usuario ha sido invitado. Debe acceder al enlace de abajo para aceptar la invitación.", - "inviteExpiresIn": "La invitación expirará en {days, plural, =1 {# día} other {# días}}.", + "inviteExpiresIn": "La invitación expirará en {days, plural, one {# día} other {# días}}.", "idpTitle": "Proveedor de identidad", "idpSelect": "Seleccione el proveedor de identidad para el usuario externo", "idpNotConfigured": "No hay proveedores de identidad configurados. Por favor, configure un proveedor de identidad antes de crear usuarios externos.", @@ -958,6 +960,8 @@ "licenseTierProfessionalRequiredDescription": "Esta característica sólo está disponible en la Edición Profesional.", "actionGetOrg": "Obtener organización", "actionUpdateOrg": "Actualizar organización", + "actionUpdateUser": "Actualizar usuario", + "actionGetUser": "Obtener usuario", "actionGetOrgUser": "Obtener usuario de la organización", "actionListOrgDomains": "Listar dominios de la organización", "actionCreateSite": "Crear sitio", @@ -1090,6 +1094,8 @@ "sidebarAllUsers": "Todos los usuarios", "sidebarIdentityProviders": "Proveedores de identidad", "sidebarLicense": "Licencia", + "sidebarClients": "Clientes", + "sidebarDomains": "Dominios", "enableDockerSocket": "Habilitar conector Docker", "enableDockerSocketDescription": "Habilitar el descubrimiento de Docker Socket para completar la información del contenedor. La ruta del socket debe proporcionarse a Newt.", "enableDockerSocketLink": "Saber más", @@ -1102,7 +1108,7 @@ "containerNetworks": "Redes", "containerHostnameIp": "Nombre del host/IP", "containerLabels": "Etiquetas", - "containerLabelsCount": "{count} etiqueta{s,plural,one{} other{s}}", + "containerLabelsCount": "{count, plural, one {# etiqueta} other {# etiquetas}}", "containerLabelsTitle": "Etiquetas de contenedor", "containerLabelEmpty": "", "containerPorts": "Puertos", @@ -1114,7 +1120,7 @@ "showStoppedContainers": "Mostrar contenedores parados", "noContainersFound": "No se han encontrado contenedores. Asegúrate de que los contenedores Docker se estén ejecutando.", "searchContainersPlaceholder": "Buscar a través de contenedores {count}...", - "searchResultsCount": "{count} resultado{s,plural,one{} other{s}}", + "searchResultsCount": "{count, plural, one {# resultado} other {# resultados}}", "filters": "Filtros", "filterOptions": "Opciones de filtro", "filterPorts": "Puertos", @@ -1129,10 +1135,88 @@ "dark": "oscuro", "system": "sistema", "theme": "Tema", + "subnetRequired": "Se requiere subred", "initialSetupTitle": "Configuración inicial del servidor", "initialSetupDescription": "Cree la cuenta de administrador del servidor inicial. Solo puede existir un administrador del servidor. Siempre puede cambiar estas credenciales más tarde.", "createAdminAccount": "Crear cuenta de administrador", "setupErrorCreateAdmin": "Se produjo un error al crear la cuenta de administrador del servidor.", + "certificateStatus": "Estado del certificado", + "loading": "Cargando", + "restart": "Reiniciar", + "domains": "Dominios", + "domainsDescription": "Administrar dominios de tu organización", + "domainsSearch": "Buscar dominios...", + "domainAdd": "Agregar dominio", + "domainAddDescription": "Registrar un nuevo dominio con tu organización", + "domainCreate": "Crear dominio", + "domainCreatedDescription": "Dominio creado con éxito", + "domainDeletedDescription": "Dominio eliminado exitosamente", + "domainQuestionRemove": "¿Está seguro de que desea eliminar el dominio {domain} de su cuenta?", + "domainMessageRemove": "Una vez eliminado, el dominio ya no estará asociado con su cuenta.", + "domainMessageConfirm": "Para confirmar, por favor escriba el nombre del dominio abajo.", + "domainConfirmDelete": "Confirmar eliminación del dominio", + "domainDelete": "Eliminar dominio", + "domain": "Dominio", + "selectDomainTypeNsName": "Delegación de dominio (NS)", + "selectDomainTypeNsDescription": "Este dominio y todos sus subdominios. Usa esto cuando quieras controlar una zona de dominio completa.", + "selectDomainTypeCnameName": "Dominio único (CNAME)", + "selectDomainTypeCnameDescription": "Solo este dominio específico. Úsalo para subdominios individuales o entradas específicas de dominio.", + "selectDomainTypeWildcardName": "Dominio comodín", + "selectDomainTypeWildcardDescription": "Este dominio y su primer nivel de subdominios.", + "domainDelegation": "Dominio único", + "selectType": "Selecciona un tipo", + "actions": "Acciones", + "refresh": "Actualizar", + "refreshError": "Error al actualizar datos", + "verified": "Verificado", + "pending": "Pendiente", + "sidebarBilling": "Facturación", + "billing": "Facturación", + "orgBillingDescription": "Gestiona tu información de facturación y suscripciones", + "github": "GitHub", + "pangolinHosted": "Pangolin Hosted", + "fossorial": "Fossorial", + "completeAccountSetup": "Completar configuración de cuenta", + "completeAccountSetupDescription": "Establece tu contraseña para comenzar", + "accountSetupSent": "Enviaremos un código de configuración de cuenta a esta dirección de correo electrónico.", + "accountSetupCode": "Código de configuración", + "accountSetupCodeDescription": "Revisa tu correo para el código de configuración.", + "passwordCreate": "Crear contraseña", + "passwordCreateConfirm": "Confirmar contraseña", + "accountSetupSubmit": "Enviar código de configuración", + "completeSetup": "Completar configuración", + "accountSetupSuccess": "¡Configuración de cuenta completada! ¡Bienvenido a Pangolin!", + "documentation": "Documentación", + "saveAllSettings": "Guardar todos los ajustes", + "settingsUpdated": "Ajustes actualizados", + "settingsUpdatedDescription": "Todos los ajustes han sido actualizados exitosamente", + "settingsErrorUpdate": "Error al actualizar ajustes", + "settingsErrorUpdateDescription": "Ocurrió un error al actualizar ajustes", + "sidebarCollapse": "Colapsar", + "sidebarExpand": "Expandir", + "newtUpdateAvailable": "Nueva actualización disponible", + "newtUpdateAvailableInfo": "Hay una nueva versión de Newt disponible. Actualice a la última versión para la mejor experiencia.", + "domainPickerEnterDomain": "Ingresa tu dominio", + "domainPickerPlaceholder": "myapp.example.com, api.v1.miDominio.com, o solo myapp", + "domainPickerDescription": "Ingresa un dominio completo, subdominio, o solo un nombre para ver las opciones disponibles", + "domainPickerTabAll": "Todo", + "domainPickerTabOrganization": "Organización", + "domainPickerTabProvided": "Proporcionado", + "domainPickerSortAsc": "A-Z", + "domainPickerSortDesc": "Z-A", + "domainPickerCheckingAvailability": "Comprobando disponibilidad...", + "domainPickerNoMatchingDomains": "No se encontraron dominios coincidentes para \"{userInput}\". Prueba con un dominio diferente o revisa la configuración de dominio de tu organización.", + "domainPickerOrganizationDomains": "Dominios de la organización", + "domainPickerProvidedDomains": "Dominios proporcionados", + "domainPickerSubdomain": "Subdominio: {subdomain}", + "domainPickerNamespace": "Espacio de nombres: {namespace}", + "domainPickerShowMore": "Mostrar más", + "domainNotFound": "Dominio no encontrado", + "domainNotFoundDescription": "Este recurso está deshabilitado porque el dominio ya no existe en nuestro sistema. Por favor, establece un nuevo dominio para este recurso.", + "failed": "Fallido", + "createNewOrgDescription": "Crear una nueva organización", + "organization": "Organización", + "port": "Puerto", "securityKeyManage": "Gestionar llaves de seguridad", "securityKeyDescription": "Agregar o eliminar llaves de seguridad para autenticación sin contraseña", "securityKeyRegister": "Registrar nueva llave de seguridad", @@ -1142,7 +1226,6 @@ "securityKeyRemove": "Eliminar", "securityKeyLastUsed": "Último uso: {date}", "securityKeyNameLabel": "Nombre", - "securityKeyNamePlaceholder": "Ingrese un nombre para esta llave de seguridad", "securityKeyRegisterSuccess": "Llave de seguridad registrada exitosamente", "securityKeyRegisterError": "Error al registrar la llave de seguridad", "securityKeyRemoveSuccess": "Llave de seguridad eliminada exitosamente", @@ -1150,5 +1233,44 @@ "securityKeyLoadError": "Error al cargar las llaves de seguridad", "securityKeyLogin": "Iniciar sesión con llave de seguridad", "securityKeyAuthError": "Error al autenticar con llave de seguridad", - "securityKeyRecommendation": "Considere registrar otra llave de seguridad en un dispositivo diferente para asegurarse de no quedar bloqueado de su cuenta." + "securityKeyRecommendation": "Considere registrar otra llave de seguridad en un dispositivo diferente para asegurarse de no quedar bloqueado de su cuenta.", + "registering": "Registrando...", + "securityKeyPrompt": "Por favor, verifica tu identidad usando tu llave de seguridad. Asegúrate de que tu llave de seguridad esté conectada y lista.", + "securityKeyBrowserNotSupported": "Tu navegador no admite llaves de seguridad. Por favor, usa un navegador moderno como Chrome, Firefox o Safari.", + "securityKeyPermissionDenied": "Por favor, permite el acceso a tu llave de seguridad para continuar iniciando sesión.", + "securityKeyRemovedTooQuickly": "Por favor, mantén tu llave de seguridad conectada hasta que el proceso de inicio de sesión se complete.", + "securityKeyNotSupported": "Tu llave de seguridad puede no ser compatible. Por favor, prueba con una llave de seguridad diferente.", + "securityKeyUnknownError": "Hubo un problema al usar tu llave de seguridad. Por favor, inténtalo de nuevo.", + "twoFactorRequired": "Se requiere autenticación de dos factores para registrar una llave de seguridad.", + "twoFactor": "Autenticación de dos factores", + "adminEnabled2FaOnYourAccount": "Su administrador ha habilitado la autenticación de dos factores para {email}. Por favor, complete el proceso de configuración para continuar.", + "continueToApplication": "Continuar a la aplicación", + "securityKeyAdd": "Agregar llave de seguridad", + "securityKeyRegisterTitle": "Registrar nueva llave de seguridad", + "securityKeyRegisterDescription": "Conecta tu llave de seguridad y escribe un nombre para identificarla", + "securityKeyTwoFactorRequired": "Se requiere autenticación de dos factores", + "securityKeyTwoFactorDescription": "Por favor, ingresa tu código de autenticación de dos factores para registrar la llave de seguridad", + "securityKeyTwoFactorRemoveDescription": "Por favor, ingresa tu código de autenticación de dos factores para eliminar la llave de seguridad", + "securityKeyTwoFactorCode": "Código de autenticación de dos factores", + "securityKeyRemoveTitle": "Eliminar llave de seguridad", + "securityKeyRemoveDescription": "Ingresa tu contraseña para eliminar la llave de seguridad \"{name}\"", + "securityKeyNoKeysRegistered": "No hay llaves de seguridad registradas", + "securityKeyNoKeysDescription": "Agrega una llave de seguridad para mejorar la seguridad de tu cuenta", + "createDomainRequired": "Se requiere dominio", + "createDomainAddDnsRecords": "Agregar registros DNS", + "createDomainAddDnsRecordsDescription": "Agrega los siguientes registros DNS a tu proveedor de dominios para completar la configuración.", + "createDomainNsRecords": "Registros NS", + "createDomainRecord": "Registro", + "createDomainType": "Tipo:", + "createDomainName": "Nombre:", + "createDomainValue": "Valor:", + "createDomainCnameRecords": "Registros CNAME", + "createDomainRecordNumber": "Registro {number}", + "createDomainTxtRecords": "Registros TXT", + "createDomainSaveTheseRecords": "Guardar estos registros", + "createDomainSaveTheseRecordsDescription": "Asegúrate de guardar estos registros DNS ya que no los verás de nuevo.", + "createDomainDnsPropagation": "Propagación DNS", + "createDomainDnsPropagationDescription": "Los cambios de DNS pueden tardar un tiempo en propagarse a través de internet. Esto puede tardar desde unos pocos minutos hasta 48 horas, dependiendo de tu proveedor de DNS y la configuración de TTL.", + "resourcePortRequired": "Se requiere número de puerto para recursos no HTTP", + "resourcePortNotAllowed": "El número de puerto no debe establecerse para recursos HTTP" } From da9d555168aa997a5a642ae229d90e52e5a11060 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Wed, 16 Jul 2025 22:00:31 -0700 Subject: [PATCH 05/12] New translations en-us.json (German) --- messages/de-DE.json | 138 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 130 insertions(+), 8 deletions(-) diff --git a/messages/de-DE.json b/messages/de-DE.json index 377ec94b..a15b9dad 100644 --- a/messages/de-DE.json +++ b/messages/de-DE.json @@ -11,8 +11,9 @@ "componentsErrorNoMemberCreate": "Du bist derzeit kein Mitglied einer Organisation. Erstelle eine Organisation, um zu starten.", "componentsErrorNoMember": "Du bist aktuell kein Mitglied einer Organisation.", "welcome": "Willkommen zu Pangolin", + "welcomeTo": "Willkommen bei", "componentsCreateOrg": "Erstelle eine Organisation", - "componentsMember": "Du bist Mitglied von {count, plural, =0 {keiner Organisation} =1 {einer Organisation} other {# Organisationen}}.", + "componentsMember": "You're a member of {count, plural, =0 {no organization} one {one organization} other {# organizations}}.", "componentsInvalidKey": "Ungültige oder abgelaufene Lizenzschlüssel erkannt. Beachte die Lizenzbedingungen, um alle Funktionen weiterhin zu nutzen.", "dismiss": "Verwerfen", "componentsLicenseViolation": "Lizenzverstoß: Dieser Server benutzt {usedSites} Sites, die das Lizenzlimit der {maxSites} Sites überschreiten. Beachte die Lizenzbedingungen, um alle Funktionen weiterhin zu nutzen.", @@ -206,6 +207,7 @@ "orgGeneralSettings": "Organisations-Einstellungen", "orgGeneralSettingsDescription": "Organisationsdetails und Konfiguration verwalten", "saveGeneralSettings": "Allgemeine Einstellungen speichern", + "saveSettings": "Einstellungen speichern", "orgDangerZone": "Gefahrenzone", "orgDangerZoneDescription": "Sobald Sie diesen Org löschen, gibt es kein Zurück mehr. Bitte seien Sie vorsichtig.", "orgDelete": "Organisation löschen", @@ -249,7 +251,7 @@ "weeks": "Wochen", "months": "Monate", "years": "Jahre", - "day": "{count, plural, =1 {# Tag} other {# Tage}}", + "day": "{count, plural, one {# Tag} other {# Tage}}", "apiKeysTitle": "API-Schlüssel Information", "apiKeysConfirmCopy2": "Sie müssen bestätigen, dass Sie den API-Schlüssel kopiert haben.", "apiKeysErrorCreate": "Fehler beim Erstellen des API-Schlüssels", @@ -347,7 +349,7 @@ "licensePurchase": "Lizenz kaufen", "licensePurchaseSites": "Zusätzliche Seiten kaufen", "licenseSitesUsedMax": "{usedSites} der {maxSites} Seiten verwendet", - "licenseSitesUsed": "{count, plural, =0 {# Seiten} =1 {# Seite} other {# Seiten}} im System.", + "licenseSitesUsed": "{count, plural, =0 {# sites} one {# site} other {# sites}} in system.", "licensePurchaseDescription": "Wähle aus, für wieviele Seiten du möchtest {selectedMode, select, license {kaufe eine Lizenz. Du kannst später immer weitere Seiten hinzufügen.} other {Füge zu deiner bestehenden Lizenz hinzu.}}", "licenseFee": "Lizenzgebühr", "licensePriceSite": "Preis pro Seite", @@ -436,7 +438,7 @@ "accessRoleSelect": "Rolle auswählen", "inviteEmailSentDescription": "Eine E-Mail mit dem Zugangslink wurde an den Benutzer gesendet. Er muss den Link aufrufen, um die Einladung anzunehmen.", "inviteSentDescription": "Der Benutzer wurde eingeladen. Er muss den unten stehenden Link aufrufen, um die Einladung anzunehmen.", - "inviteExpiresIn": "Die Einladung läuft in {days, plural, =1 {einem Tag} other {# Tagen}} ab.", + "inviteExpiresIn": "Die Einladung läuft in {days, plural, one {einem Tag} other {# Tagen}} ab.", "idpTitle": "Allgemeine Informationen", "idpSelect": "Wählen Sie den Identitätsanbieter für den externen Benutzer", "idpNotConfigured": "Es sind keine Identitätsanbieter konfiguriert. Bitte konfigurieren Sie einen Identitätsanbieter, bevor Sie externe Benutzer erstellen.", @@ -958,6 +960,8 @@ "licenseTierProfessionalRequiredDescription": "Diese Funktion ist nur in der Professional Edition verfügbar.", "actionGetOrg": "Organisation abrufen", "actionUpdateOrg": "Organisation aktualisieren", + "actionUpdateUser": "Benutzer aktualisieren", + "actionGetUser": "Benutzer abrufen", "actionGetOrgUser": "Organisationsbenutzer abrufen", "actionListOrgDomains": "Organisationsdomänen auflisten", "actionCreateSite": "Site erstellen", @@ -1090,6 +1094,8 @@ "sidebarAllUsers": "Alle Benutzer", "sidebarIdentityProviders": "Identitätsanbieter", "sidebarLicense": "Lizenz", + "sidebarClients": "Kunden", + "sidebarDomains": "Domains", "enableDockerSocket": "Docker Socket aktivieren", "enableDockerSocketDescription": "Docker Socket-Erkennung aktivieren, um Container-Informationen zu befüllen. Socket-Pfad muss Newt bereitgestellt werden.", "enableDockerSocketLink": "Mehr erfahren", @@ -1102,7 +1108,7 @@ "containerNetworks": "Netzwerke", "containerHostnameIp": "Hostname/IP", "containerLabels": "Etiketten", - "containerLabelsCount": "{count} Label{s,plural,one{} other{s}}", + "containerLabelsCount": "{count, plural, one {# Etikett} other {# Etiketten}}", "containerLabelsTitle": "Container-Labels", "containerLabelEmpty": "", "containerPorts": "Häfen", @@ -1114,7 +1120,7 @@ "showStoppedContainers": "Stoppte Container anzeigen", "noContainersFound": "Keine Container gefunden. Stellen Sie sicher, dass Docker Container laufen.", "searchContainersPlaceholder": "Durchsuche {count} Container...", - "searchResultsCount": "{count} Ergebnis{s,plural,one{} other{s}}", + "searchResultsCount": "{count, plural, one {# Ergebnis} other {# Ergebnisse}}", "filters": "Filter", "filterOptions": "Filteroptionen", "filterPorts": "Häfen", @@ -1129,10 +1135,88 @@ "dark": "dunkel", "system": "System", "theme": "Design", + "subnetRequired": "Subnetz ist erforderlich", "initialSetupTitle": "Initial Einrichtung des Servers", "initialSetupDescription": "Erstellen Sie das initiale Server-Admin-Konto. Es kann nur einen Server-Admin geben. Sie können diese Anmeldedaten später immer ändern.", "createAdminAccount": "Admin-Konto erstellen", "setupErrorCreateAdmin": "Beim Erstellen des Server-Admin-Kontos ist ein Fehler aufgetreten.", + "certificateStatus": "Zertifikatsstatus", + "loading": "Laden", + "restart": "Neustart", + "domains": "Domains", + "domainsDescription": "Domains für Ihre Organisation verwalten", + "domainsSearch": "Domains durchsuchen...", + "domainAdd": "Domain hinzufügen", + "domainAddDescription": "Eine neue Domain in Ihrer Organisation registrieren", + "domainCreate": "Domain erstellen", + "domainCreatedDescription": "Domain erfolgreich erstellt", + "domainDeletedDescription": "Domain erfolgreich gelöscht", + "domainQuestionRemove": "Möchten Sie die Domain {domain} wirklich aus Ihrem Konto entfernen?", + "domainMessageRemove": "Nach dem Entfernen wird die Domain nicht mehr mit Ihrem Konto verknüpft.", + "domainMessageConfirm": "Um zu bestätigen, geben Sie bitte den Domainnamen unten ein.", + "domainConfirmDelete": "Domain-Löschung bestätigen", + "domainDelete": "Domain löschen", + "domain": "Domain", + "selectDomainTypeNsName": "Domain-Delegation (NS)", + "selectDomainTypeNsDescription": "Diese Domain und alle ihre Subdomains. Verwenden Sie dies, wenn Sie eine gesamte Domainzone kontrollieren möchten.", + "selectDomainTypeCnameName": "Einzelne Domain (CNAME)", + "selectDomainTypeCnameDescription": "Nur diese spezifische Domain. Verwenden Sie dies für einzelne Subdomains oder spezifische Domaineinträge.", + "selectDomainTypeWildcardName": "Wildcard-Domain", + "selectDomainTypeWildcardDescription": "Diese Domain und ihre erste Ebene der Subdomains.", + "domainDelegation": "Einzelne Domain", + "selectType": "Typ auswählen", + "actions": "Aktionen", + "refresh": "Aktualisieren", + "refreshError": "Datenaktualisierung fehlgeschlagen", + "verified": "Verifiziert", + "pending": "Ausstehend", + "sidebarBilling": "Abrechnung", + "billing": "Abrechnung", + "orgBillingDescription": "Verwalten Sie Ihre Rechnungsinformationen und Abonnements", + "github": "GitHub", + "pangolinHosted": "Pangolin Hosted", + "fossorial": "Fossorial", + "completeAccountSetup": "Kontoeinrichtung abschließen", + "completeAccountSetupDescription": "Legen Sie Ihr Passwort fest, um zu beginnen", + "accountSetupSent": "Wir senden einen Code für die Kontoeinrichtung an diese E-Mail-Adresse.", + "accountSetupCode": "Einrichtungscode", + "accountSetupCodeDescription": "Prüfen Sie Ihre E-Mail auf den Einrichtungscode.", + "passwordCreate": "Passwort erstellen", + "passwordCreateConfirm": "Passwort bestätigen", + "accountSetupSubmit": "Einrichtungscode senden", + "completeSetup": "Einrichtung abschließen", + "accountSetupSuccess": "Kontoeinrichtung abgeschlossen! Willkommen bei Pangolin!", + "documentation": "Dokumentation", + "saveAllSettings": "Alle Einstellungen speichern", + "settingsUpdated": "Einstellungen aktualisiert", + "settingsUpdatedDescription": "Alle Einstellungen wurden erfolgreich aktualisiert", + "settingsErrorUpdate": "Einstellungen konnten nicht aktualisiert werden", + "settingsErrorUpdateDescription": "Beim Aktualisieren der Einstellungen ist ein Fehler aufgetreten", + "sidebarCollapse": "Zusammenklappen", + "sidebarExpand": "Erweitern", + "newtUpdateAvailable": "Update verfügbar", + "newtUpdateAvailableInfo": "Eine neue Version von Newt ist verfügbar. Bitte aktualisieren Sie auf die neueste Version für das beste Erlebnis.", + "domainPickerEnterDomain": "Geben Sie Ihre Domain ein", + "domainPickerPlaceholder": "myapp.example.com, api.v1.mydomain.com, oder einfach myapp", + "domainPickerDescription": "Geben Sie eine vollständige Domain, Subdomain oder einfach einen Namen ein, um verfügbare Optionen zu sehen", + "domainPickerTabAll": "Alle", + "domainPickerTabOrganization": "Organisation", + "domainPickerTabProvided": "Bereitgestellt", + "domainPickerSortAsc": "A-Z", + "domainPickerSortDesc": "Z-A", + "domainPickerCheckingAvailability": "Verfügbarkeit prüfen...", + "domainPickerNoMatchingDomains": "Keine passenden Domains für \"{userInput}\" gefunden. Versuchen Sie es mit einer anderen Domain oder überprüfen Sie die Domain-Einstellungen Ihrer Organisation.", + "domainPickerOrganizationDomains": "Organisations-Domains", + "domainPickerProvidedDomains": "Bereitgestellte Domains", + "domainPickerSubdomain": "Subdomain: {subdomain}", + "domainPickerNamespace": "Namespace: {namespace}", + "domainPickerShowMore": "Mehr anzeigen", + "domainNotFound": "Domain nicht gefunden", + "domainNotFoundDescription": "Diese Ressource ist deaktiviert, weil die Domain nicht mehr in unserem System existiert. Bitte setzen Sie eine neue Domain für diese Ressource.", + "failed": "Fehlgeschlagen", + "createNewOrgDescription": "Eine neue Organisation erstellen", + "organization": "Organisation", + "port": "Port", "securityKeyManage": "Sicherheitsschlüssel verwalten", "securityKeyDescription": "Sicherheitsschlüssel für passwortlose Authentifizierung hinzufügen oder entfernen", "securityKeyRegister": "Neuen Sicherheitsschlüssel registrieren", @@ -1142,7 +1226,6 @@ "securityKeyRemove": "Entfernen", "securityKeyLastUsed": "Zuletzt verwendet: {date}", "securityKeyNameLabel": "Name", - "securityKeyNamePlaceholder": "Geben Sie einen Namen für diesen Sicherheitsschlüssel ein", "securityKeyRegisterSuccess": "Sicherheitsschlüssel erfolgreich registriert", "securityKeyRegisterError": "Fehler beim Registrieren des Sicherheitsschlüssels", "securityKeyRemoveSuccess": "Sicherheitsschlüssel erfolgreich entfernt", @@ -1150,5 +1233,44 @@ "securityKeyLoadError": "Fehler beim Laden der Sicherheitsschlüssel", "securityKeyLogin": "Mit Sicherheitsschlüssel anmelden", "securityKeyAuthError": "Fehler bei der Authentifizierung mit Sicherheitsschlüssel", - "securityKeyRecommendation": "Erwägen Sie die Registrierung eines weiteren Sicherheitsschlüssels auf einem anderen Gerät, um sicherzustellen, dass Sie sich nicht aus Ihrem Konto aussperren." + "securityKeyRecommendation": "Erwägen Sie die Registrierung eines weiteren Sicherheitsschlüssels auf einem anderen Gerät, um sicherzustellen, dass Sie sich nicht aus Ihrem Konto aussperren.", + "registering": "Registrierung...", + "securityKeyPrompt": "Bitte bestätigen Sie Ihre Identität mit Ihrem Sicherheitsschlüssel. Stellen Sie sicher, dass Ihr Sicherheitsschlüssel verbunden und einsatzbereit ist.", + "securityKeyBrowserNotSupported": "Ihr Browser unterstützt Sicherheitsschlüssel nicht. Bitte verwenden Sie einen modernen Browser wie Chrome, Firefox oder Safari.", + "securityKeyPermissionDenied": "Bitte erlauben Sie den Zugriff auf Ihren Sicherheitsschlüssel, um sich weiter anzumelden.", + "securityKeyRemovedTooQuickly": "Lassen Sie Ihren Sicherheitsschlüssel verbunden, bis der Anmeldeprozess abgeschlossen ist.", + "securityKeyNotSupported": "Ihr Sicherheitsschlüssel ist möglicherweise nicht kompatibel. Bitte versuchen Sie einen anderen Sicherheitsschlüssel.", + "securityKeyUnknownError": "Es gab ein Problem mit Ihrem Sicherheitsschlüssel. Bitte versuchen Sie es erneut.", + "twoFactorRequired": "Zur Registrierung eines Sicherheitsschlüssels ist eine Zwei-Faktor-Authentifizierung erforderlich.", + "twoFactor": "Zwei-Faktor-Authentifizierung", + "adminEnabled2FaOnYourAccount": "Ihr Administrator hat die Zwei-Faktor-Authentifizierung für {email} aktiviert. Bitte schließen Sie den Einrichtungsprozess ab, um fortzufahren.", + "continueToApplication": "Weiter zur Anwendung", + "securityKeyAdd": "Sicherheitsschlüssel hinzufügen", + "securityKeyRegisterTitle": "Neuen Sicherheitsschlüssel registrieren", + "securityKeyRegisterDescription": "Verbinden Sie Ihren Sicherheitsschlüssel und geben Sie einen Namen ein, um ihn zu identifizieren", + "securityKeyTwoFactorRequired": "Zwei-Faktor-Authentifizierung erforderlich", + "securityKeyTwoFactorDescription": "Bitte geben Sie Ihren Zwei-Faktor-Authentifizierungscode ein, um den Sicherheitsschlüssel zu registrieren", + "securityKeyTwoFactorRemoveDescription": "Bitte geben Sie Ihren Zwei-Faktor-Authentifizierungscode ein, um den Sicherheitsschlüssel zu entfernen", + "securityKeyTwoFactorCode": "Zwei-Faktor-Code", + "securityKeyRemoveTitle": "Sicherheitsschlüssel entfernen", + "securityKeyRemoveDescription": "Geben Sie Ihr Passwort ein, um den Sicherheitsschlüssel \"{name}\" zu entfernen", + "securityKeyNoKeysRegistered": "Keine Sicherheitsschlüssel registriert", + "securityKeyNoKeysDescription": "Fügen Sie einen Sicherheitsschlüssel hinzu, um die Sicherheit Ihres Kontos zu erhöhen", + "createDomainRequired": "Domain ist erforderlich", + "createDomainAddDnsRecords": "DNS-Einträge hinzufügen", + "createDomainAddDnsRecordsDescription": "Fügen Sie die folgenden DNS-Einträge zu Ihrem Domain-Provider hinzu, um die Einrichtung abzuschließen.", + "createDomainNsRecords": "NS-Einträge", + "createDomainRecord": "Eintrag", + "createDomainType": "Typ:", + "createDomainName": "Name:", + "createDomainValue": "Wert:", + "createDomainCnameRecords": "CNAME-Einträge", + "createDomainRecordNumber": "Eintrag {number}", + "createDomainTxtRecords": "TXT-Einträge", + "createDomainSaveTheseRecords": "Diese Einträge speichern", + "createDomainSaveTheseRecordsDescription": "Achten Sie darauf, diese DNS-Einträge zu speichern, da Sie sie nicht erneut sehen werden.", + "createDomainDnsPropagation": "DNS-Verbreitung", + "createDomainDnsPropagationDescription": "Es kann einige Zeit dauern, bis DNS-Änderungen im Internet verbreitet werden. Dies kann je nach Ihrem DNS-Provider und den TTL-Einstellungen von einigen Minuten bis zu 48 Stunden dauern.", + "resourcePortRequired": "Portnummer ist für nicht-HTTP-Ressourcen erforderlich", + "resourcePortNotAllowed": "Portnummer sollte für HTTP-Ressourcen nicht gesetzt werden" } From 807ddaa0bbf0de3eec13377d67facd6024c51466 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Wed, 16 Jul 2025 22:00:32 -0700 Subject: [PATCH 06/12] New translations en-us.json (Italian) --- messages/it-IT.json | 138 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 130 insertions(+), 8 deletions(-) diff --git a/messages/it-IT.json b/messages/it-IT.json index 0af5e8e4..35728eb7 100644 --- a/messages/it-IT.json +++ b/messages/it-IT.json @@ -11,8 +11,9 @@ "componentsErrorNoMemberCreate": "Al momento non sei un membro di nessuna organizzazione. Crea un'organizzazione per iniziare.", "componentsErrorNoMember": "Attualmente non sei membro di nessuna organizzazione.", "welcome": "Benvenuti a Pangolin", + "welcomeTo": "Benvenuto a", "componentsCreateOrg": "Crea un'organizzazione", - "componentsMember": "Sei un membro di {count, plural, =0 {nessuna organizzazione} =1 {una organizzazione} other {# organizzazioni}}.", + "componentsMember": "Sei un membro di {count, plural, =0 {nessuna organizzazione} one {un'organizzazione} other {# organizzazioni}}.", "componentsInvalidKey": "Rilevata chiave di licenza non valida o scaduta. Segui i termini di licenza per continuare a utilizzare tutte le funzionalità.", "dismiss": "Ignora", "componentsLicenseViolation": "Violazione della licenza: Questo server sta usando i siti {usedSites} che superano il suo limite concesso in licenza per i siti {maxSites} . Segui i termini di licenza per continuare a usare tutte le funzionalità.", @@ -206,6 +207,7 @@ "orgGeneralSettings": "Impostazioni Organizzazione", "orgGeneralSettingsDescription": "Gestisci i dettagli dell'organizzazione e la configurazione", "saveGeneralSettings": "Salva Impostazioni Generali", + "saveSettings": "Salva Impostazioni", "orgDangerZone": "Zona Pericolosa", "orgDangerZoneDescription": "Una volta che si elimina questo org, non c'è ritorno. Si prega di essere certi.", "orgDelete": "Elimina Organizzazione", @@ -249,7 +251,7 @@ "weeks": "Settimane", "months": "Mesi", "years": "Anni", - "day": "{count, plural, =1 {# giorno} other {# giorni}}", + "day": "{count, plural, one {# giorno} other {# giorni}}", "apiKeysTitle": "Informazioni Chiave API", "apiKeysConfirmCopy2": "Devi confermare di aver copiato la chiave API.", "apiKeysErrorCreate": "Errore nella creazione della chiave API", @@ -347,7 +349,7 @@ "licensePurchase": "Acquista Licenza", "licensePurchaseSites": "Acquista Siti Aggiuntivi", "licenseSitesUsedMax": "{usedSites} di {maxSites} siti utilizzati", - "licenseSitesUsed": "{count, plural, =0 {# siti} =1 {# sito} other {# siti}} nel sistema.", + "licenseSitesUsed": "{count, plural, =0 {# siti} one {# sito} other {# siti}} nel sistema.", "licensePurchaseDescription": "Scegli quanti siti vuoi {selectedMode, select, license {acquista una licenza. Puoi sempre aggiungere altri siti più tardi.} other {aggiungi alla tua licenza esistente.}}", "licenseFee": "Costo della licenza", "licensePriceSite": "Prezzo per sito", @@ -436,7 +438,7 @@ "accessRoleSelect": "Seleziona ruolo", "inviteEmailSentDescription": "È stata inviata un'email all'utente con il link di accesso qui sotto. Devono accedere al link per accettare l'invito.", "inviteSentDescription": "L'utente è stato invitato. Deve accedere al link qui sotto per accettare l'invito.", - "inviteExpiresIn": "L'invito scadrà tra {days, plural, =1 {# giorno} other {# giorni}}.", + "inviteExpiresIn": "L'invito scadrà tra {days, plural, one {# giorno} other {# giorni}}.", "idpTitle": "Informazioni Generali", "idpSelect": "Seleziona il provider di identità per l'utente esterno", "idpNotConfigured": "Nessun provider di identità configurato. Configura un provider di identità prima di creare utenti esterni.", @@ -958,6 +960,8 @@ "licenseTierProfessionalRequiredDescription": "Questa funzionalità è disponibile solo nell'Edizione Professional.", "actionGetOrg": "Ottieni Organizzazione", "actionUpdateOrg": "Aggiorna Organizzazione", + "actionUpdateUser": "Aggiorna Utente", + "actionGetUser": "Ottieni Utente", "actionGetOrgUser": "Ottieni Utente Organizzazione", "actionListOrgDomains": "Elenca Domini Organizzazione", "actionCreateSite": "Crea Sito", @@ -1090,6 +1094,8 @@ "sidebarAllUsers": "Tutti Gli Utenti", "sidebarIdentityProviders": "Fornitori Di Identità", "sidebarLicense": "Licenza", + "sidebarClients": "Clienti", + "sidebarDomains": "Domini", "enableDockerSocket": "Abilita Docker Socket", "enableDockerSocketDescription": "Abilita il rilevamento Docker Socket per popolare le informazioni del contenitore. Il percorso del socket deve essere fornito a Newt.", "enableDockerSocketLink": "Scopri di più", @@ -1102,7 +1108,7 @@ "containerNetworks": "Reti", "containerHostnameIp": "Hostname/IP", "containerLabels": "Etichette", - "containerLabelsCount": "{count} etichetta{s,plural,one{} other{s}}", + "containerLabelsCount": "{count, plural, one {# etichetta} other {# etichette}}", "containerLabelsTitle": "Etichette Del Contenitore", "containerLabelEmpty": "", "containerPorts": "Porte", @@ -1114,7 +1120,7 @@ "showStoppedContainers": "Mostra contenitori fermati", "noContainersFound": "Nessun contenitore trovato. Assicurarsi che i contenitori Docker siano in esecuzione.", "searchContainersPlaceholder": "Cerca tra i contenitori {count}...", - "searchResultsCount": "{count} risultato{s,plural,one{} other{s}}", + "searchResultsCount": "{count, plural, one {# risultato} other {# risultati}}", "filters": "Filtri", "filterOptions": "Opzioni Filtro", "filterPorts": "Porte", @@ -1129,10 +1135,88 @@ "dark": "scuro", "system": "sistema", "theme": "Tema", + "subnetRequired": "Sottorete richiesta", "initialSetupTitle": "Impostazione Iniziale del Server", "initialSetupDescription": "Crea l'account amministratore del server iniziale. Può esistere solo un amministratore del server. È sempre possibile modificare queste credenziali in seguito.", "createAdminAccount": "Crea Account Admin", "setupErrorCreateAdmin": "Si è verificato un errore durante la creazione dell'account amministratore del server.", + "certificateStatus": "Stato del Certificato", + "loading": "Caricamento", + "restart": "Riavvia", + "domains": "Domini", + "domainsDescription": "Gestisci domini per la tua organizzazione", + "domainsSearch": "Cerca domini...", + "domainAdd": "Aggiungi Dominio", + "domainAddDescription": "Registra un nuovo dominio con la tua organizzazione", + "domainCreate": "Crea Dominio", + "domainCreatedDescription": "Dominio creato con successo", + "domainDeletedDescription": "Dominio eliminato con successo", + "domainQuestionRemove": "Sei sicuro di voler rimuovere il dominio {domain} dal tuo account?", + "domainMessageRemove": "Una volta rimosso, il dominio non sarà più associato al tuo account.", + "domainMessageConfirm": "Per confermare, digita il nome del dominio qui sotto.", + "domainConfirmDelete": "Conferma Eliminazione Dominio", + "domainDelete": "Elimina Dominio", + "domain": "Dominio", + "selectDomainTypeNsName": "Delega Dominio (NS)", + "selectDomainTypeNsDescription": "Questo dominio e tutti i suoi sottodomini. Usa questo quando desideri controllare un'intera zona di dominio.", + "selectDomainTypeCnameName": "Dominio Singolo (CNAME)", + "selectDomainTypeCnameDescription": "Solo questo dominio specifico. Usa questo per sottodomini individuali o specifiche voci di dominio.", + "selectDomainTypeWildcardName": "Dominio Jolly", + "selectDomainTypeWildcardDescription": "Questo dominio e il suo primo livello di sottodomini.", + "domainDelegation": "Dominio Singolo", + "selectType": "Seleziona un tipo", + "actions": "Azioni", + "refresh": "Aggiorna", + "refreshError": "Impossibile aggiornare i dati", + "verified": "Verificato", + "pending": "In attesa", + "sidebarBilling": "Fatturazione", + "billing": "Fatturazione", + "orgBillingDescription": "Gestisci le tue informazioni di fatturazione e abbonamenti", + "github": "GitHub", + "pangolinHosted": "Pangolin Hosted", + "fossorial": "Fossorial", + "completeAccountSetup": "Completa la Configurazione dell'Account", + "completeAccountSetupDescription": "Imposta la tua password per iniziare", + "accountSetupSent": "Invieremo un codice di configurazione dell'account a questo indirizzo email.", + "accountSetupCode": "Codice di Configurazione", + "accountSetupCodeDescription": "Controlla la tua email per il codice di configurazione.", + "passwordCreate": "Crea Password", + "passwordCreateConfirm": "Conferma Password", + "accountSetupSubmit": "Invia Codice di Configurazione", + "completeSetup": "Completa la Configurazione", + "accountSetupSuccess": "Configurazione dell'account completata! Benvenuto su Pangolin!", + "documentation": "Documentazione", + "saveAllSettings": "Salva Tutte le Impostazioni", + "settingsUpdated": "Impostazioni aggiornate", + "settingsUpdatedDescription": "Tutte le impostazioni sono state aggiornate con successo", + "settingsErrorUpdate": "Impossibile aggiornare le impostazioni", + "settingsErrorUpdateDescription": "Si è verificato un errore durante l'aggiornamento delle impostazioni", + "sidebarCollapse": "Comprimi", + "sidebarExpand": "Espandi", + "newtUpdateAvailable": "Aggiornamento Disponibile", + "newtUpdateAvailableInfo": "È disponibile una nuova versione di Newt. Si prega di aggiornare all'ultima versione per la migliore esperienza.", + "domainPickerEnterDomain": "Inserisci il tuo dominio", + "domainPickerPlaceholder": "myapp.example.com, api.v1.mydomain.com, o semplicemente myapp", + "domainPickerDescription": "Inserisci un dominio completo, sottodominio o solo un nome per vedere le opzioni disponibili", + "domainPickerTabAll": "Tutti", + "domainPickerTabOrganization": "Organizzazione", + "domainPickerTabProvided": "Fornito", + "domainPickerSortAsc": "A-Z", + "domainPickerSortDesc": "Z-A", + "domainPickerCheckingAvailability": "Controllando la disponibilità...", + "domainPickerNoMatchingDomains": "Nessun dominio corrispondente trovato per \"{userInput}\". Prova un altro dominio o controlla le impostazioni del dominio della tua organizzazione.", + "domainPickerOrganizationDomains": "Domini dell'Organizzazione", + "domainPickerProvidedDomains": "Domini Forniti", + "domainPickerSubdomain": "Sottodominio: {subdomain}", + "domainPickerNamespace": "Namespace: {namespace}", + "domainPickerShowMore": "Mostra Altro", + "domainNotFound": "Domini Non Trovati", + "domainNotFoundDescription": "Questa risorsa è disabilitata perché il dominio non esiste più nel nostro sistema. Si prega di impostare un nuovo dominio per questa risorsa.", + "failed": "Fallito", + "createNewOrgDescription": "Crea una nuova organizzazione", + "organization": "Organizzazione", + "port": "Porta", "securityKeyManage": "Gestisci chiavi di sicurezza", "securityKeyDescription": "Aggiungi o rimuovi chiavi di sicurezza per l'autenticazione senza password", "securityKeyRegister": "Registra nuova chiave di sicurezza", @@ -1142,7 +1226,6 @@ "securityKeyRemove": "Rimuovi", "securityKeyLastUsed": "Ultimo utilizzo: {date}", "securityKeyNameLabel": "Nome", - "securityKeyNamePlaceholder": "Inserisci un nome per questa chiave di sicurezza", "securityKeyRegisterSuccess": "Chiave di sicurezza registrata con successo", "securityKeyRegisterError": "Errore durante la registrazione della chiave di sicurezza", "securityKeyRemoveSuccess": "Chiave di sicurezza rimossa con successo", @@ -1150,5 +1233,44 @@ "securityKeyLoadError": "Errore durante il caricamento delle chiavi di sicurezza", "securityKeyLogin": "Accedi con chiave di sicurezza", "securityKeyAuthError": "Errore durante l'autenticazione con chiave di sicurezza", - "securityKeyRecommendation": "Considera di registrare un'altra chiave di sicurezza su un dispositivo diverso per assicurarti di non rimanere bloccato fuori dal tuo account." + "securityKeyRecommendation": "Considera di registrare un'altra chiave di sicurezza su un dispositivo diverso per assicurarti di non rimanere bloccato fuori dal tuo account.", + "registering": "Registrazione in corso...", + "securityKeyPrompt": "Verifica la tua identità usando la chiave di sicurezza. Assicurati che sia connessa e pronta.", + "securityKeyBrowserNotSupported": "Il tuo browser non supporta le chiavi di sicurezza. Per favore, usa un browser moderno come Chrome, Firefox o Safari.", + "securityKeyPermissionDenied": "Consenti accesso alla tua chiave di sicurezza per continuare ad accedere.", + "securityKeyRemovedTooQuickly": "Mantieni la chiave di sicurezza connessa fino a quando il processo di accesso non è completato.", + "securityKeyNotSupported": "La tua chiave di sicurezza potrebbe non essere compatibile. Prova un'altra chiave di sicurezza.", + "securityKeyUnknownError": "Si è verificato un problema con la tua chiave di sicurezza. Riprova.", + "twoFactorRequired": "È richiesta l'autenticazione a due fattori per registrare una chiave di sicurezza.", + "twoFactor": "Autenticazione a Due Fattori", + "adminEnabled2FaOnYourAccount": "Il tuo amministratore ha abilitato l'autenticazione a due fattori per {email}. Completa il processo di configurazione per continuare.", + "continueToApplication": "Continua all'Applicazione", + "securityKeyAdd": "Aggiungi Chiave di Sicurezza", + "securityKeyRegisterTitle": "Registra Nuova Chiave di Sicurezza", + "securityKeyRegisterDescription": "Collega la tua chiave di sicurezza e inserisci un nome per identificarla", + "securityKeyTwoFactorRequired": "Autenticazione a Due Fattori Richiesta", + "securityKeyTwoFactorDescription": "Inserisci il codice di autenticazione a due fattori per registrare la chiave di sicurezza", + "securityKeyTwoFactorRemoveDescription": "Inserisci il codice di autenticazione a due fattori per rimuovere la chiave di sicurezza", + "securityKeyTwoFactorCode": "Codice a Due Fattori", + "securityKeyRemoveTitle": "Rimuovi Chiave di Sicurezza", + "securityKeyRemoveDescription": "Inserisci la tua password per rimuovere la chiave di sicurezza \"{name}\"", + "securityKeyNoKeysRegistered": "Nessuna chiave di sicurezza registrata", + "securityKeyNoKeysDescription": "Aggiungi una chiave di sicurezza per migliorare la sicurezza del tuo account", + "createDomainRequired": "Dominio richiesto", + "createDomainAddDnsRecords": "Aggiungi Record DNS", + "createDomainAddDnsRecordsDescription": "Aggiungi i seguenti record DNS al tuo provider di domini per completare la configurazione.", + "createDomainNsRecords": "Record NS", + "createDomainRecord": "Record", + "createDomainType": "Tipo:", + "createDomainName": "Nome:", + "createDomainValue": "Valore:", + "createDomainCnameRecords": "Record CNAME", + "createDomainRecordNumber": "Record {number}", + "createDomainTxtRecords": "Record TXT", + "createDomainSaveTheseRecords": "Salva Questi Record", + "createDomainSaveTheseRecordsDescription": "Assicurati di salvare questi record DNS poiché non li vedrai più.", + "createDomainDnsPropagation": "Propagazione DNS", + "createDomainDnsPropagationDescription": "Le modifiche DNS possono richiedere del tempo per propagarsi in Internet. Questo può richiedere da pochi minuti a 48 ore, a seconda del tuo provider DNS e delle impostazioni TTL.", + "resourcePortRequired": "Numero di porta richiesto per risorse non-HTTP", + "resourcePortNotAllowed": "Il numero di porta non deve essere impostato per risorse HTTP" } From 03b883c320c1c651a98cad4549aca7ebdf377cd0 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Wed, 16 Jul 2025 22:00:33 -0700 Subject: [PATCH 07/12] New translations en-us.json (Dutch) --- messages/nl-NL.json | 138 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 130 insertions(+), 8 deletions(-) diff --git a/messages/nl-NL.json b/messages/nl-NL.json index 39aaa9b6..fdaeff47 100644 --- a/messages/nl-NL.json +++ b/messages/nl-NL.json @@ -11,8 +11,9 @@ "componentsErrorNoMemberCreate": "U bent momenteel geen lid van een organisatie. Maak een organisatie aan om aan de slag te gaan.", "componentsErrorNoMember": "U bent momenteel geen lid van een organisatie.", "welcome": "Welkom bij Pangolin", + "welcomeTo": "Welkom bij", "componentsCreateOrg": "Maak een Organisatie", - "componentsMember": "Je bent lid van {count, plural, =0 {geen organisatie} =1 {één organisatie} other {# organisaties}}.", + "componentsMember": "Je bent lid van {count, plural, =0 {geen organisatie} one {één organisatie} other {# organisaties}}.", "componentsInvalidKey": "Ongeldige of verlopen licentiesleutels gedetecteerd. Volg de licentievoorwaarden om alle functies te blijven gebruiken.", "dismiss": "Uitschakelen", "componentsLicenseViolation": "Licentie overtreding: Deze server gebruikt {usedSites} sites die de gelicentieerde limiet van {maxSites} sites overschrijden. Volg de licentievoorwaarden om door te gaan met het gebruik van alle functies.", @@ -206,6 +207,7 @@ "orgGeneralSettings": "Organisatie Instellingen", "orgGeneralSettingsDescription": "Beheer de details en configuratie van uw organisatie", "saveGeneralSettings": "Algemene instellingen opslaan", + "saveSettings": "Instellingen opslaan", "orgDangerZone": "Gevaarlijke zone", "orgDangerZoneDescription": "Als u deze instantie verwijdert, is er geen weg terug. Wees het alstublieft zeker.", "orgDelete": "Verwijder organisatie", @@ -249,7 +251,7 @@ "weeks": "Weken", "months": "maanden", "years": "Jaar", - "day": "{count, plural, =1 {# dag} other {# dagen}}", + "day": "{count, plural, one {# dag} other {# dagen}}", "apiKeysTitle": "API Key Informatie", "apiKeysConfirmCopy2": "Bevestig dat u de API-sleutel hebt gekopieerd.", "apiKeysErrorCreate": "Fout bij maken API-sleutel", @@ -347,7 +349,7 @@ "licensePurchase": "Licentie kopen", "licensePurchaseSites": "Extra sites kopen", "licenseSitesUsedMax": "{usedSites} van {maxSites} sites gebruikt", - "licenseSitesUsed": "{count, plural, =0 {# sites} =1 {# site} other {# sites}} in het systeem.", + "licenseSitesUsed": "{count, plural, =0 {# locaties} one {# locatie} other {# locaties}} in het systeem.", "licensePurchaseDescription": "Kies hoeveel sites je wilt {selectedMode, select, license {Koop een licentie. Je kunt later altijd meer sites toevoegen.} other {Voeg je bestaande licentie toe}}", "licenseFee": "Licentie vergoeding", "licensePriceSite": "Prijs per site", @@ -436,7 +438,7 @@ "accessRoleSelect": "Selecteer rol", "inviteEmailSentDescription": "Een e-mail is verstuurd naar de gebruiker met de link hieronder. Ze moeten toegang krijgen tot de link om de uitnodiging te accepteren.", "inviteSentDescription": "De gebruiker is uitgenodigd. Ze moeten toegang krijgen tot de link hieronder om de uitnodiging te accepteren.", - "inviteExpiresIn": "De uitnodiging vervalt in {days, plural, =1 {# dag} other {# dagen}}.", + "inviteExpiresIn": "De uitnodiging vervalt over {days, plural, one {# dag} other {# dagen}}.", "idpTitle": "Identiteit Provider", "idpSelect": "Identiteitsprovider voor de externe gebruiker selecteren", "idpNotConfigured": "Er zijn geen identiteitsproviders geconfigureerd. Configureer een identiteitsprovider voordat u externe gebruikers aanmaakt.", @@ -958,6 +960,8 @@ "licenseTierProfessionalRequiredDescription": "Deze functie is alleen beschikbaar in de Professional Edition.", "actionGetOrg": "Krijg Organisatie", "actionUpdateOrg": "Organisatie bijwerken", + "actionUpdateUser": "Gebruiker bijwerken", + "actionGetUser": "Gebruiker ophalen", "actionGetOrgUser": "Krijg organisatie-gebruiker", "actionListOrgDomains": "Lijst organisatie domeinen", "actionCreateSite": "Site maken", @@ -1090,6 +1094,8 @@ "sidebarAllUsers": "Alle gebruikers", "sidebarIdentityProviders": "Identiteit aanbieders", "sidebarLicense": "Licentie", + "sidebarClients": "Cliënten", + "sidebarDomains": "Domeinen", "enableDockerSocket": "Docker Socket inschakelen", "enableDockerSocketDescription": "Docker Socket-ontdekking inschakelen voor het invullen van containerinformatie. Socket-pad moet aan Newt worden verstrekt.", "enableDockerSocketLink": "Meer informatie", @@ -1102,7 +1108,7 @@ "containerNetworks": "Netwerken", "containerHostnameIp": "Hostnaam/IP", "containerLabels": "Labels", - "containerLabelsCount": "{count} label{s,plural,one{} other{s}}", + "containerLabelsCount": "{count, plural, one {# label} other {# labels}}", "containerLabelsTitle": "Container labels", "containerLabelEmpty": "", "containerPorts": "Poorten", @@ -1114,7 +1120,7 @@ "showStoppedContainers": "Toon gestopte containers", "noContainersFound": "Geen containers gevonden. Zorg ervoor dat Docker containers draaien.", "searchContainersPlaceholder": "Zoek tussen {count} containers...", - "searchResultsCount": "{count} resultaat{s,plural,one{} other{s}}", + "searchResultsCount": "{count, plural, one {# resultaat} other {# resultaten}}", "filters": "Filters", "filterOptions": "Filter opties", "filterPorts": "Poorten", @@ -1129,10 +1135,88 @@ "dark": "donker", "system": "systeem", "theme": "Thema", + "subnetRequired": "Subnet is vereist", "initialSetupTitle": "Initiële serverconfiguratie", "initialSetupDescription": "Maak het eerste serverbeheeraccount aan. Er kan slechts één serverbeheerder bestaan. U kunt deze inloggegevens later altijd wijzigen.", "createAdminAccount": "Maak een beheeraccount aan", "setupErrorCreateAdmin": "Er is een fout opgetreden bij het maken van het serverbeheerdersaccount.", + "certificateStatus": "Certificaatstatus", + "loading": "Bezig met laden", + "restart": "Herstarten", + "domains": "Domeinen", + "domainsDescription": "Beheer domeinen voor je organisatie", + "domainsSearch": "Zoek domeinen...", + "domainAdd": "Domein toevoegen", + "domainAddDescription": "Registreer een nieuw domein bij je organisatie", + "domainCreate": "Domein aanmaken", + "domainCreatedDescription": "Domein succesvol aangemaakt", + "domainDeletedDescription": "Domein succesvol verwijderd", + "domainQuestionRemove": "Weet je zeker dat je het domein {domain} uit je account wilt verwijderen?", + "domainMessageRemove": "Na verwijdering zal het domein niet langer aan je account gekoppeld zijn.", + "domainMessageConfirm": "Om te bevestigen, typ hieronder de domeinnaam.", + "domainConfirmDelete": "Bevestig verwijdering van domein", + "domainDelete": "Domein verwijderen", + "domain": "Domein", + "selectDomainTypeNsName": "Domeindelegatie (NS)", + "selectDomainTypeNsDescription": "Dit domein en al zijn subdomeinen. Gebruik dit wanneer je een volledige domeinzone wilt beheersen.", + "selectDomainTypeCnameName": "Enkel domein (CNAME)", + "selectDomainTypeCnameDescription": "Alleen dit specifieke domein. Gebruik dit voor individuele subdomeinen of specifieke domeinvermeldingen.", + "selectDomainTypeWildcardName": "Wildcard Domein", + "selectDomainTypeWildcardDescription": "Dit domein en zijn eerste niveau van subdomeinen.", + "domainDelegation": "Enkel domein", + "selectType": "Selecteer een type", + "actions": "acties", + "refresh": "Vernieuwen", + "refreshError": "Het vernieuwen van gegevens is mislukt", + "verified": "Gecontroleerd", + "pending": "In afwachting", + "sidebarBilling": "Facturering", + "billing": "Facturering", + "orgBillingDescription": "Beheer je factureringsgegevens en abonnementen", + "github": "GitHub", + "pangolinHosted": "Pangolin gehost", + "fossorial": "Fossorial", + "completeAccountSetup": "Voltooi accountinstelling", + "completeAccountSetupDescription": "Stel je wachtwoord in om te beginnen", + "accountSetupSent": "We sturen een accountinstellingscode naar dit e-mailadres.", + "accountSetupCode": "Instellingscode", + "accountSetupCodeDescription": "Controleer je e-mail voor de instellingscode.", + "passwordCreate": "Wachtwoord aanmaken", + "passwordCreateConfirm": "Bevestig wachtwoord", + "accountSetupSubmit": "Instellingscode verzenden", + "completeSetup": "Voltooi instellen", + "accountSetupSuccess": "Accountinstelling voltooid! Welkom bij Pangolin!", + "documentation": "Documentatie", + "saveAllSettings": "Alle instellingen opslaan", + "settingsUpdated": "Instellingen bijgewerkt", + "settingsUpdatedDescription": "Alle instellingen zijn succesvol bijgewerkt", + "settingsErrorUpdate": "Bijwerken van instellingen mislukt", + "settingsErrorUpdateDescription": "Er is een fout opgetreden bij het bijwerken van instellingen", + "sidebarCollapse": "Inklappen", + "sidebarExpand": "Uitklappen", + "newtUpdateAvailable": "Update beschikbaar", + "newtUpdateAvailableInfo": "Er is een nieuwe versie van Newt beschikbaar. Update naar de nieuwste versie voor de beste ervaring.", + "domainPickerEnterDomain": "Voer je domein in", + "domainPickerPlaceholder": "mijnapp.voorbeeld.com, api.v1.mijndomein.com, of gewoon mijnapp", + "domainPickerDescription": "Voer een volledig domein, subdomein of alleen een naam in om beschikbare opties te zien", + "domainPickerTabAll": "Alles", + "domainPickerTabOrganization": "Organisatie", + "domainPickerTabProvided": "Aangeboden", + "domainPickerSortAsc": "A-Z", + "domainPickerSortDesc": "Z-A", + "domainPickerCheckingAvailability": "Beschikbaarheid controleren...", + "domainPickerNoMatchingDomains": "Geen overeenkomende domeinen gevonden voor \"{userInput}\". Probeer een ander domein of controleer de domeininstellingen van je organisatie.", + "domainPickerOrganizationDomains": "Organisatiedomeinen", + "domainPickerProvidedDomains": "Aangeboden domeinen", + "domainPickerSubdomain": "Subdomein: {subdomain}", + "domainPickerNamespace": "Namespace: {namespace}", + "domainPickerShowMore": "Meer weergeven", + "domainNotFound": "Domein niet gevonden", + "domainNotFoundDescription": "Deze bron is uitgeschakeld omdat het domein niet langer in ons systeem bestaat. Stel een nieuw domein in voor deze bron.", + "failed": "Mislukt", + "createNewOrgDescription": "Maak een nieuwe organisatie", + "organization": "Organisatie", + "port": "Poort", "securityKeyManage": "Beveiligingssleutels beheren", "securityKeyDescription": "Voeg beveiligingssleutels toe of verwijder ze voor wachtwoordloze authenticatie", "securityKeyRegister": "Nieuwe beveiligingssleutel registreren", @@ -1142,7 +1226,6 @@ "securityKeyRemove": "Verwijderen", "securityKeyLastUsed": "Laatst gebruikt: {date}", "securityKeyNameLabel": "Naam", - "securityKeyNamePlaceholder": "Voer een naam in voor deze beveiligingssleutel", "securityKeyRegisterSuccess": "Beveiligingssleutel succesvol geregistreerd", "securityKeyRegisterError": "Fout bij registreren van beveiligingssleutel", "securityKeyRemoveSuccess": "Beveiligingssleutel succesvol verwijderd", @@ -1150,5 +1233,44 @@ "securityKeyLoadError": "Fout bij laden van beveiligingssleutels", "securityKeyLogin": "Inloggen met beveiligingssleutel", "securityKeyAuthError": "Fout bij authenticatie met beveiligingssleutel", - "securityKeyRecommendation": "Overweeg om een andere beveiligingssleutel te registreren op een ander apparaat om ervoor te zorgen dat u niet buitengesloten raakt van uw account." + "securityKeyRecommendation": "Overweeg om een andere beveiligingssleutel te registreren op een ander apparaat om ervoor te zorgen dat u niet buitengesloten raakt van uw account.", + "registering": "Registreren...", + "securityKeyPrompt": "Verifieer je identiteit met je beveiligingssleutel. Zorg ervoor dat je beveiligingssleutel verbonden en klaar is.", + "securityKeyBrowserNotSupported": "Je browser ondersteunt geen beveiligingssleutels. Gebruik een moderne browser zoals Chrome, Firefox of Safari.", + "securityKeyPermissionDenied": "Verleen toegang tot je beveiligingssleutel om door te gaan met inloggen.", + "securityKeyRemovedTooQuickly": "Houd je beveiligingssleutel verbonden totdat het inlogproces is voltooid.", + "securityKeyNotSupported": "Je beveiligingssleutel is mogelijk niet compatibel. Probeer een andere beveiligingssleutel.", + "securityKeyUnknownError": "Er was een probleem met het gebruik van je beveiligingssleutel. Probeer het opnieuw.", + "twoFactorRequired": "Tweestapsverificatie is vereist om een beveiligingssleutel te registreren.", + "twoFactor": "Tweestapsverificatie", + "adminEnabled2FaOnYourAccount": "Je beheerder heeft tweestapsverificatie voor {email} ingeschakeld. Voltooi het instellingsproces om verder te gaan.", + "continueToApplication": "Doorgaan naar de applicatie", + "securityKeyAdd": "Beveiligingssleutel toevoegen", + "securityKeyRegisterTitle": "Nieuwe beveiligingssleutel registreren", + "securityKeyRegisterDescription": "Verbind je beveiligingssleutel en voer een naam in om deze te identificeren", + "securityKeyTwoFactorRequired": "Tweestapsverificatie vereist", + "securityKeyTwoFactorDescription": "Voer je tweestapsverificatiecode in om de beveiligingssleutel te registreren", + "securityKeyTwoFactorRemoveDescription": "Voer je tweestapsverificatiecode in om de beveiligingssleutel te verwijderen", + "securityKeyTwoFactorCode": "Tweestapsverificatiecode", + "securityKeyRemoveTitle": "Beveiligingssleutel verwijderen", + "securityKeyRemoveDescription": "Voer je wachtwoord in om de beveiligingssleutel \"{name}\" te verwijderen", + "securityKeyNoKeysRegistered": "Geen beveiligingssleutels geregistreerd", + "securityKeyNoKeysDescription": "Voeg een beveiligingssleutel toe om je accountbeveiliging te verbeteren", + "createDomainRequired": "Domein is vereist", + "createDomainAddDnsRecords": "DNS-records toevoegen", + "createDomainAddDnsRecordsDescription": "Voeg de volgende DNS-records toe aan je domeinprovider om het instellen te voltooien.", + "createDomainNsRecords": "NS-records", + "createDomainRecord": "Record", + "createDomainType": "Type:", + "createDomainName": "Naam:", + "createDomainValue": "Waarde:", + "createDomainCnameRecords": "CNAME-records", + "createDomainRecordNumber": "Record {number}", + "createDomainTxtRecords": "TXT-records", + "createDomainSaveTheseRecords": "Deze records opslaan", + "createDomainSaveTheseRecordsDescription": "Zorg ervoor dat je deze DNS-records opslaat, want je zult ze niet opnieuw zien.", + "createDomainDnsPropagation": "DNS-propagatie", + "createDomainDnsPropagationDescription": "DNS-wijzigingen kunnen enige tijd duren om over het internet te worden verspreid. Dit kan enkele minuten tot 48 uur duren, afhankelijk van je DNS-provider en TTL-instellingen.", + "resourcePortRequired": "Poortnummer is vereist voor niet-HTTP-bronnen", + "resourcePortNotAllowed": "Poortnummer mag niet worden ingesteld voor HTTP-bronnen" } From 74c768e2fbb4cd4b4bb3b8694555b235119266a8 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Wed, 16 Jul 2025 22:00:34 -0700 Subject: [PATCH 08/12] New translations en-us.json (Portuguese) --- messages/pt-PT.json | 138 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 130 insertions(+), 8 deletions(-) diff --git a/messages/pt-PT.json b/messages/pt-PT.json index 1d1b9ba1..cb3a1144 100644 --- a/messages/pt-PT.json +++ b/messages/pt-PT.json @@ -11,8 +11,9 @@ "componentsErrorNoMemberCreate": "Você não é atualmente um membro de nenhuma organização. Crie uma organização para começar.", "componentsErrorNoMember": "Você não é atualmente um membro de nenhuma organização.", "welcome": "Bem-vindo ao Pangolin", + "welcomeTo": "Bem-vindo ao", "componentsCreateOrg": "Criar uma organização", - "componentsMember": "Você é membro de {count, plural, =0 {Nenhuma organização} =1 {Uma organização} other {# organizações}}", + "componentsMember": "Você é membro de {count, plural, =0 {nenhuma organização} one {uma organização} other {# organizações}}.", "componentsInvalidKey": "Chaves de licença inválidas ou expiradas detectadas. Siga os termos da licença para continuar usando todos os recursos.", "dismiss": "Descartar", "componentsLicenseViolation": "Violação de Licença: Este servidor está usando sites {usedSites} que excedem o limite licenciado de sites {maxSites} . Siga os termos da licença para continuar usando todos os recursos.", @@ -206,6 +207,7 @@ "orgGeneralSettings": "Configurações da organização", "orgGeneralSettingsDescription": "Gerencie os detalhes e a configuração da sua organização", "saveGeneralSettings": "Salvar configurações gerais", + "saveSettings": "Salvar Configurações", "orgDangerZone": "Zona de Perigo", "orgDangerZoneDescription": "Uma vez que você exclui esta organização, não há volta. Por favor, tenha certeza.", "orgDelete": "Excluir Organização", @@ -249,7 +251,7 @@ "weeks": "semanas", "months": "Meses", "years": "anos", - "day": "{count, plural, =1 {# dia} other {# dias}}", + "day": "{count, plural, one {# dia} other {# dias}}", "apiKeysTitle": "Informações da Chave API", "apiKeysConfirmCopy2": "Você deve confirmar que copiou a chave API.", "apiKeysErrorCreate": "Erro ao criar chave API", @@ -347,7 +349,7 @@ "licensePurchase": "Comprar Licença", "licensePurchaseSites": "Comprar Sites Adicionais", "licenseSitesUsedMax": "{usedSites} de {maxSites} utilizados", - "licenseSitesUsed": "{count, plural, =0 {# sites} =1 {# site} other {# sites}} no sistema.", + "licenseSitesUsed": "{count, plural, =0 {# sites} one {# site} other {# sites}} no sistema.", "licensePurchaseDescription": "Escolha quantos sites você quer {selectedMode, select, license {Compre uma licença. Você sempre pode adicionar mais sites depois.} other {adicione à sua licença existente.}}", "licenseFee": "Taxa de licença", "licensePriceSite": "Preço por site", @@ -436,7 +438,7 @@ "accessRoleSelect": "Selecionar função", "inviteEmailSentDescription": "Um e-mail foi enviado ao usuário com o link de acesso abaixo. Eles devem acessar o link para aceitar o convite.", "inviteSentDescription": "O usuário foi convidado. Eles devem acessar o link abaixo para aceitar o convite.", - "inviteExpiresIn": "O convite expirará em {days, plural, =1 {# dia} other {# dias}}.", + "inviteExpiresIn": "O convite expirará em {days, plural, one {# dia} other {# dias}}.", "idpTitle": "Informações Gerais", "idpSelect": "Selecione o provedor de identidade para o usuário externo", "idpNotConfigured": "Nenhum provedor de identidade está configurado. Configure um provedor de identidade antes de criar usuários externos.", @@ -958,6 +960,8 @@ "licenseTierProfessionalRequiredDescription": "Esta funcionalidade só está disponível na Edição Profissional.", "actionGetOrg": "Obter Organização", "actionUpdateOrg": "Atualizar Organização", + "actionUpdateUser": "Atualizar Usuário", + "actionGetUser": "Obter Usuário", "actionGetOrgUser": "Obter Utilizador da Organização", "actionListOrgDomains": "Listar Domínios da Organização", "actionCreateSite": "Criar Site", @@ -1090,6 +1094,8 @@ "sidebarAllUsers": "Todos os usuários", "sidebarIdentityProviders": "Provedores de identidade", "sidebarLicense": "Tipo:", + "sidebarClients": "Clientes", + "sidebarDomains": "Domínios", "enableDockerSocket": "Habilitar Docker Socket", "enableDockerSocketDescription": "Ativar a descoberta do Docker Socket para preencher informações do contêiner. O caminho do socket deve ser fornecido ao Newt.", "enableDockerSocketLink": "Saiba mais", @@ -1102,7 +1108,7 @@ "containerNetworks": "Redes", "containerHostnameIp": "Hostname/IP", "containerLabels": "Marcadores", - "containerLabelsCount": "{count} rótulo{s,plural,one{} other{s}}", + "containerLabelsCount": "{count, plural, one {# rótulo} other {# rótulos}}", "containerLabelsTitle": "Etiquetas do Contêiner", "containerLabelEmpty": "", "containerPorts": "Portas", @@ -1114,7 +1120,7 @@ "showStoppedContainers": "Mostrar contêineres parados", "noContainersFound": "Nenhum contêiner encontrado. Certifique-se de que os contêineres Docker estão em execução.", "searchContainersPlaceholder": "Pesquisar entre os contêineres {count}...", - "searchResultsCount": "{count} resultado{s,plural,one{} other{s}}", + "searchResultsCount": "{count, plural, one {# resultado} other {# resultados}}", "filters": "Filtros", "filterOptions": "Opções de Filtro", "filterPorts": "Portas", @@ -1129,10 +1135,88 @@ "dark": "escuro", "system": "sistema", "theme": "Tema", + "subnetRequired": "Sub-rede é obrigatória", "initialSetupTitle": "Configuração Inicial do Servidor", "initialSetupDescription": "Crie a conta de administrador inicial do servidor. Apenas um administrador do servidor pode existir. Você sempre pode alterar essas credenciais posteriormente.", "createAdminAccount": "Criar Conta de Administrador", "setupErrorCreateAdmin": "Ocorreu um erro ao criar a conta de administrador do servidor.", + "certificateStatus": "Status do Certificado", + "loading": "Carregando", + "restart": "Reiniciar", + "domains": "Domínios", + "domainsDescription": "Gerencie domínios para sua organização", + "domainsSearch": "Pesquisar domínios...", + "domainAdd": "Adicionar Domínio", + "domainAddDescription": "Registre um novo domínio com sua organização", + "domainCreate": "Criar Domínio", + "domainCreatedDescription": "Domínio criado com sucesso", + "domainDeletedDescription": "Domínio deletado com sucesso", + "domainQuestionRemove": "Tem certeza de que deseja remover o domínio {domain} da sua conta?", + "domainMessageRemove": "Uma vez removido, o domínio não estará mais associado à sua conta.", + "domainMessageConfirm": "Para confirmar, digite o nome do domínio abaixo.", + "domainConfirmDelete": "Confirmar Exclusão de Domínio", + "domainDelete": "Excluir Domínio", + "domain": "Domínio", + "selectDomainTypeNsName": "Delegação de Domínio (NS)", + "selectDomainTypeNsDescription": "Este domínio e todos os seus subdomínios. Use isso quando quiser controlar uma zona de domínio inteira.", + "selectDomainTypeCnameName": "Domínio Único (CNAME)", + "selectDomainTypeCnameDescription": "Apenas este domínio específico. Use isso para subdomínios individuais ou entradas de domínio específicas.", + "selectDomainTypeWildcardName": "Domínio Coringa", + "selectDomainTypeWildcardDescription": "Este domínio e seu primeiro nível de subdomínios.", + "domainDelegation": "Domínio Único", + "selectType": "Selecione um tipo", + "actions": "Ações", + "refresh": "Atualizar", + "refreshError": "Falha ao atualizar dados", + "verified": "Verificado", + "pending": "Pendente", + "sidebarBilling": "Faturamento", + "billing": "Faturamento", + "orgBillingDescription": "Gerencie suas informações de faturamento e assinaturas", + "github": "GitHub", + "pangolinHosted": "Hospedagem Pangolin", + "fossorial": "Fossorial", + "completeAccountSetup": "Completar Configuração da Conta", + "completeAccountSetupDescription": "Defina sua senha para começar", + "accountSetupSent": "Enviaremos um código de ativação da conta para este endereço de e-mail.", + "accountSetupCode": "Código de Ativação", + "accountSetupCodeDescription": "Verifique seu e-mail para obter o código de ativação.", + "passwordCreate": "Criar Senha", + "passwordCreateConfirm": "Confirmar Senha", + "accountSetupSubmit": "Enviar Código de Ativação", + "completeSetup": "Configuração Completa", + "accountSetupSuccess": "Configuração da conta concluída! Bem-vindo ao Pangolin!", + "documentation": "Documentação", + "saveAllSettings": "Salvar Todas as Configurações", + "settingsUpdated": "Configurações atualizadas", + "settingsUpdatedDescription": "Todas as configurações foram atualizadas com sucesso", + "settingsErrorUpdate": "Falha ao atualizar configurações", + "settingsErrorUpdateDescription": "Ocorreu um erro ao atualizar configurações", + "sidebarCollapse": "Recolher", + "sidebarExpand": "Expandir", + "newtUpdateAvailable": "Nova Atualização Disponível", + "newtUpdateAvailableInfo": "Uma nova versão do Newt está disponível. Atualize para a versão mais recente para uma melhor experiência.", + "domainPickerEnterDomain": "Insira seu domínio", + "domainPickerPlaceholder": "meuapp.exemplo.com, api.v1.meudominio.com, ou apenas meuapp", + "domainPickerDescription": "Digite um domínio completo, subdomínio, ou apenas um nome para ver opções disponíveis", + "domainPickerTabAll": "Todos", + "domainPickerTabOrganization": "Organização", + "domainPickerTabProvided": "Fornecido", + "domainPickerSortAsc": "A-Z", + "domainPickerSortDesc": "Z-A", + "domainPickerCheckingAvailability": "Verificando disponibilidade...", + "domainPickerNoMatchingDomains": "Nenhum domínio correspondente encontrado para \"{userInput}\". Tente um domínio diferente ou verifique as configurações de domínio da sua organização.", + "domainPickerOrganizationDomains": "Domínios da Organização", + "domainPickerProvidedDomains": "Domínios Fornecidos", + "domainPickerSubdomain": "Subdomínio: {subdomain}", + "domainPickerNamespace": "Namespace: {namespace}", + "domainPickerShowMore": "Mostrar Mais", + "domainNotFound": "Domínio Não Encontrado", + "domainNotFoundDescription": "Este recurso está desativado porque o domínio não existe mais em nosso sistema. Defina um novo domínio para este recurso.", + "failed": "Falhou", + "createNewOrgDescription": "Crie uma nova organização", + "organization": "Organização", + "port": "Porta", "securityKeyManage": "Gerenciar chaves de segurança", "securityKeyDescription": "Adicionar ou remover chaves de segurança para autenticação sem senha", "securityKeyRegister": "Registrar nova chave de segurança", @@ -1142,7 +1226,6 @@ "securityKeyRemove": "Remover", "securityKeyLastUsed": "Último uso: {date}", "securityKeyNameLabel": "Nome", - "securityKeyNamePlaceholder": "Digite um nome para esta chave de segurança", "securityKeyRegisterSuccess": "Chave de segurança registrada com sucesso", "securityKeyRegisterError": "Erro ao registrar chave de segurança", "securityKeyRemoveSuccess": "Chave de segurança removida com sucesso", @@ -1150,5 +1233,44 @@ "securityKeyLoadError": "Erro ao carregar chaves de segurança", "securityKeyLogin": "Entrar com chave de segurança", "securityKeyAuthError": "Erro ao autenticar com chave de segurança", - "securityKeyRecommendation": "Considere registrar outra chave de segurança em um dispositivo diferente para garantir que você não fique bloqueado da sua conta." + "securityKeyRecommendation": "Considere registrar outra chave de segurança em um dispositivo diferente para garantir que você não fique bloqueado da sua conta.", + "registering": "Registrando...", + "securityKeyPrompt": "Verifique sua identidade usando sua chave de segurança. Certifique-se de que sua chave de segurança está conectada e pronta.", + "securityKeyBrowserNotSupported": "Seu navegador não suporta chaves de segurança. Use um navegador moderno como Chrome, Firefox ou Safari.", + "securityKeyPermissionDenied": "Permita o acesso à sua chave de segurança para continuar o login.", + "securityKeyRemovedTooQuickly": "Mantenha sua chave de segurança conectada até que o processo de login seja concluído.", + "securityKeyNotSupported": "Sua chave de segurança pode não ser compatível. Tente uma chave de segurança diferente.", + "securityKeyUnknownError": "Houve um problema ao usar sua chave de segurança. Tente novamente.", + "twoFactorRequired": "A autenticação de dois fatores é necessária para registrar uma chave de segurança.", + "twoFactor": "Autenticação de Dois Fatores", + "adminEnabled2FaOnYourAccount": "Seu administrador ativou a autenticação de dois fatores para {email}. Complete o processo de configuração para continuar.", + "continueToApplication": "Continuar para Aplicativo", + "securityKeyAdd": "Adicionar Chave de Segurança", + "securityKeyRegisterTitle": "Registrar Nova Chave de Segurança", + "securityKeyRegisterDescription": "Conecte sua chave de segurança e insira um nome para identificá-la", + "securityKeyTwoFactorRequired": "Autenticação de Dois Fatores Obrigatória", + "securityKeyTwoFactorDescription": "Insira seu código de autenticação de dois fatores para registrar a chave de segurança", + "securityKeyTwoFactorRemoveDescription": "Insira seu código de autenticação de dois fatores para remover a chave de segurança", + "securityKeyTwoFactorCode": "Código de Dois Fatores", + "securityKeyRemoveTitle": "Remover Chave de Segurança", + "securityKeyRemoveDescription": "Insira sua senha para remover a chave de segurança \"{name}\"", + "securityKeyNoKeysRegistered": "Nenhuma chave de segurança registrada", + "securityKeyNoKeysDescription": "Adicione uma chave de segurança para melhorar a segurança da sua conta", + "createDomainRequired": "Domínio é obrigatório", + "createDomainAddDnsRecords": "Adicionar Registros DNS", + "createDomainAddDnsRecordsDescription": "Adicione os seguintes registros DNS ao seu provedor de domínio para completar a configuração.", + "createDomainNsRecords": "Registros NS", + "createDomainRecord": "Registrar", + "createDomainType": "Tipo:", + "createDomainName": "Nome:", + "createDomainValue": "Valor:", + "createDomainCnameRecords": "Registros CNAME", + "createDomainRecordNumber": "Registrar {number}", + "createDomainTxtRecords": "Registros TXT", + "createDomainSaveTheseRecords": "Salvar Esses Registros", + "createDomainSaveTheseRecordsDescription": "Certifique-se de salvar esses registros DNS, pois você não os verá novamente.", + "createDomainDnsPropagation": "Propagação DNS", + "createDomainDnsPropagationDescription": "Alterações no DNS podem levar algum tempo para se propagar pela internet. Pode levar de alguns minutos a 48 horas, dependendo do seu provedor de DNS e das configurações de TTL.", + "resourcePortRequired": "Número da porta é obrigatório para recursos não-HTTP", + "resourcePortNotAllowed": "Número da porta não deve ser definido para recursos HTTP" } From 4008767e1b951a6af4d4d15ed014feb94954e938 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Wed, 16 Jul 2025 22:00:35 -0700 Subject: [PATCH 09/12] New translations en-us.json (Turkish) --- messages/tr-TR.json | 138 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 130 insertions(+), 8 deletions(-) diff --git a/messages/tr-TR.json b/messages/tr-TR.json index 085505b4..12e5929d 100644 --- a/messages/tr-TR.json +++ b/messages/tr-TR.json @@ -11,8 +11,9 @@ "componentsErrorNoMemberCreate": "Şu anda herhangi bir organizasyona üye değilsiniz. Başlamak için bir organizasyon oluşturun.", "componentsErrorNoMember": "Şu anda herhangi bir organizasyona üye değilsiniz.", "welcome": "Pangolin'e hoş geldiniz", + "welcomeTo": "Hoş geldiniz", "componentsCreateOrg": "Bir Organizasyon Oluşturun", - "componentsMember": "You're a member of {count, plural, =0 {no organization} =1 {one organization} other {# organizations}}.", + "componentsMember": "{count, plural, =0 {hiçbir organizasyon} one {bir organizasyon} other {# organizasyon}} üyesisiniz.", "componentsInvalidKey": "Geçersiz veya süresi dolmuş lisans anahtarları tespit edildi. Tüm özellikleri kullanmaya devam etmek için lisans koşullarına uyun.", "dismiss": "Kapat", "componentsLicenseViolation": "Lisans İhlali: Bu sunucu, lisanslı sınırı olan {maxSites} sitesini aşarak {usedSites} site kullanmaktadır. Tüm özellikleri kullanmaya devam etmek için lisans koşullarına uyun.", @@ -206,6 +207,7 @@ "orgGeneralSettings": "Organizasyon Ayarları", "orgGeneralSettingsDescription": "Organizasyon detaylarınızı ve yapılandırmanızı yönetin", "saveGeneralSettings": "Genel Ayarları Kaydet", + "saveSettings": "Ayarları Kaydet", "orgDangerZone": "Tehlike Alanı", "orgDangerZoneDescription": "Bu organizasyonu sildikten sonra geri dönüş yoktur. Emin olun.", "orgDelete": "Organizasyonu Sil", @@ -249,7 +251,7 @@ "weeks": "Hafta", "months": "Ay", "years": "Yıl", - "day": "{count, plural, =1 {# day} other {# days}}", + "day": "{count, plural, one {# gün} other {# gün}}", "apiKeysTitle": "API Anahtar Bilgilendirmesi", "apiKeysConfirmCopy2": "API anahtarını kopyaladığınızı onaylamanız gerekmektedir.", "apiKeysErrorCreate": "API anahtarı oluşturulurken hata", @@ -347,7 +349,7 @@ "licensePurchase": "Lisans Satın Al", "licensePurchaseSites": "Ek Siteler Satın Al", "licenseSitesUsedMax": "{usedSites} / {maxSites} siteleri kullanıldı", - "licenseSitesUsed": "{count, plural, =0 {# site} =1 {# site} other {# site}} sistemde bulunmaktadır.", + "licenseSitesUsed": "{count, plural, =0 {# site} one {# site} other {# site}} sistemde bulunmaktadır.", "licensePurchaseDescription": "{selectedMode, select, license {Lisans satın almak için kaç site istediğinizi seçin. Daha sonra daha fazla site ekleyebilirsiniz.} other {mevcut lisansınıza kaç site ekleneceğini seçin.}}", "licenseFee": "Lisans ücreti", "licensePriceSite": "Site başına fiyat", @@ -436,7 +438,7 @@ "accessRoleSelect": "Rol seçin", "inviteEmailSentDescription": "Kullanıcıya erişim bağlantısı ile bir e-posta gönderildi. Daveti kabul etmek için bağlantıya erişmelidirler.", "inviteSentDescription": "Kullanıcı davet edilmiştir. Daveti kabul etmek için aşağıdaki bağlantıya erişmelidirler.", - "inviteExpiresIn": "The invite will expire in {days, plural, =1 {# day} other {# days}}.", + "inviteExpiresIn": "Davetiye {days, plural, one {# gün} other {# gün}} içinde sona erecektir.", "idpTitle": "General Information", "idpSelect": "Dış kullanıcı için kimlik sağlayıcıyı seçin", "idpNotConfigured": "Herhangi bir kimlik sağlayıcı yapılandırılmamış. Harici kullanıcılar oluşturulmadan önce lütfen bir kimlik sağlayıcı yapılandırın.", @@ -958,6 +960,8 @@ "licenseTierProfessionalRequiredDescription": "Bu özellik yalnızca Professional Edition'da kullanılabilir.", "actionGetOrg": "Kuruluşu Al", "actionUpdateOrg": "Kuruluşu Güncelle", + "actionUpdateUser": "Kullanıcıyı Güncelle", + "actionGetUser": "Kullanıcıyı Getir", "actionGetOrgUser": "Kuruluş Kullanıcısını Al", "actionListOrgDomains": "Kuruluş Alan Adlarını Listele", "actionCreateSite": "Site Oluştur", @@ -1090,6 +1094,8 @@ "sidebarAllUsers": "Tüm Kullanıcılar", "sidebarIdentityProviders": "Kimlik Sağlayıcılar", "sidebarLicense": "Lisans", + "sidebarClients": "Müşteriler", + "sidebarDomains": "Alan Adları", "enableDockerSocket": "Docker Soketi Etkinleştir", "enableDockerSocketDescription": "Konteyner bilgilerini doldurmak için Docker Socket keşfini etkinleştirin. Socket yolu Newt'e sağlanmalıdır.", "enableDockerSocketLink": "Daha fazla bilgi", @@ -1102,7 +1108,7 @@ "containerNetworks": "Ağlar", "containerHostnameIp": "Ana Makine/IP", "containerLabels": "Etiketler", - "containerLabelsCount": "{count} etiket{s,plural,one{} other{ler}}", + "containerLabelsCount": "{count, plural, one {# etiket} other {# etiketler}}", "containerLabelsTitle": "Konteyner Etiketleri", "containerLabelEmpty": "", "containerPorts": "Bağlantı Noktaları", @@ -1114,7 +1120,7 @@ "showStoppedContainers": "Durdurulmuş konteynerleri göster", "noContainersFound": "Konteyner bulunamadı. Docker konteynerlerinin çalıştığından emin olun.", "searchContainersPlaceholder": "{count} konteyner arasında arama yapın...", - "searchResultsCount": "{count} sonuç{s,plural,one{} other{lar}}", + "searchResultsCount": "{count, plural, one {# sonuç} other {# sonuçlar}}", "filters": "Filtreler", "filterOptions": "Filtre Seçenekleri", "filterPorts": "Bağlantı Noktaları", @@ -1129,10 +1135,88 @@ "dark": "koyu", "system": "sistem", "theme": "Tema", + "subnetRequired": "Alt ağ gereklidir", "initialSetupTitle": "İlk Sunucu Kurulumu", "initialSetupDescription": "İlk sunucu yönetici hesabını oluşturun. Yalnızca bir sunucu yöneticisi olabilir. Bu kimlik bilgilerini daha sonra her zaman değiştirebilirsiniz.", "createAdminAccount": "Yönetici Hesabı Oluştur", "setupErrorCreateAdmin": "Sunucu yönetici hesabı oluşturulurken bir hata oluştu.", + "certificateStatus": "Sertifika Durumu", + "loading": "Yükleniyor", + "restart": "Yeniden Başlat", + "domains": "Alan Adları", + "domainsDescription": "Organizasyonunuz için alan adlarını yönetin", + "domainsSearch": "Alan adlarını ara...", + "domainAdd": "Alan Adı Ekle", + "domainAddDescription": "Organizasyonunuz için yeni bir alan adı kaydedin", + "domainCreate": "Alan Adı Oluştur", + "domainCreatedDescription": "Alan adı başarıyla oluşturuldu", + "domainDeletedDescription": "Alan adı başarıyla silindi", + "domainQuestionRemove": "{domain} alan adını hesabınızdan kaldırmak istediğinizden emin misiniz?", + "domainMessageRemove": "Kaldırıldığında, alan adı hesabınızla ilişkilendirilmeyecek.", + "domainMessageConfirm": "Onaylamak için lütfen aşağıya alan adını yazın.", + "domainConfirmDelete": "Alan Adı Silinmesini Onayla", + "domainDelete": "Alan Adını Sil", + "domain": "Alan Adı", + "selectDomainTypeNsName": "Alan Adı Delege Etme (NS)", + "selectDomainTypeNsDescription": "Bu alan adı ve tüm alt alan adları. Tüm bir alan adı bölgesini kontrol etmek istediğinizde bunu kullanın.", + "selectDomainTypeCnameName": "Tekil Alan Adı (CNAME)", + "selectDomainTypeCnameDescription": "Sadece bu belirli alan adı. Bireysel alt alan adları veya belirli alan adı girişleri için bunu kullanın.", + "selectDomainTypeWildcardName": "Wildcard Alan Adı", + "selectDomainTypeWildcardDescription": "Bu alan adı ve onun ilk alt alan düzeyi.", + "domainDelegation": "Tekil Alan Adı", + "selectType": "Bir tür seçin", + "actions": "İşlemler", + "refresh": "Yenile", + "refreshError": "Veriler yenilenemedi", + "verified": "Doğrulandı", + "pending": "Beklemede", + "sidebarBilling": "Faturalama", + "billing": "Faturalama", + "orgBillingDescription": "Fatura bilgilerinizi ve aboneliklerinizi yönetin", + "github": "GitHub", + "pangolinHosted": "Pangolin Barındırılan", + "fossorial": "Fossorial", + "completeAccountSetup": "Hesap Kurulumunu Tamamla", + "completeAccountSetupDescription": "Başlamak için şifrenizi ayarlayın", + "accountSetupSent": "Bu e-posta adresine bir hesap kurulum kodu göndereceğiz.", + "accountSetupCode": "Kurulum Kodu", + "accountSetupCodeDescription": "Kurulum kodu için e-posta gelen kutunuzu kontrol edin.", + "passwordCreate": "Parola Oluştur", + "passwordCreateConfirm": "Şifreyi Onayla", + "accountSetupSubmit": "Kurulum Kodunu Gönder", + "completeSetup": "Kurulumu Tamamla", + "accountSetupSuccess": "Hesap kurulumu tamamlandı! Pangolin'e hoş geldiniz!", + "documentation": "Dokümantasyon", + "saveAllSettings": "Tüm Ayarları Kaydet", + "settingsUpdated": "Ayarlar güncellendi", + "settingsUpdatedDescription": "Tüm ayarlar başarıyla güncellendi", + "settingsErrorUpdate": "Ayarlar güncellenemedi", + "settingsErrorUpdateDescription": "Ayarları güncellerken bir hata oluştu", + "sidebarCollapse": "Daralt", + "sidebarExpand": "Genişlet", + "newtUpdateAvailable": "Güncelleme Mevcut", + "newtUpdateAvailableInfo": "Newt'in yeni bir versiyonu mevcut. En iyi deneyim için lütfen en son sürüme güncelleyin.", + "domainPickerEnterDomain": "Alan adınızı girin", + "domainPickerPlaceholder": "myapp.example.com, api.v1.mydomain.com veya sadece myapp", + "domainPickerDescription": "Mevcut seçenekleri görmek için tam bir alan adı, alt alan adı veya sadece bir isim girin.", + "domainPickerTabAll": "Tümü", + "domainPickerTabOrganization": "Organizasyon", + "domainPickerTabProvided": "Sağlanan", + "domainPickerSortAsc": "A-Z", + "domainPickerSortDesc": "Z-A", + "domainPickerCheckingAvailability": "Kullanılabilirlik kontrol ediliyor...", + "domainPickerNoMatchingDomains": "\"{userInput}\" için uygun alan adı bulunamadı. Farklı bir alan adı deneyin veya organizasyonunuzun alan adı ayarlarını kontrol edin.", + "domainPickerOrganizationDomains": "Organizasyon Alan Adları", + "domainPickerProvidedDomains": "Sağlanan Alan Adları", + "domainPickerSubdomain": "Alt Alan: {subdomain}", + "domainPickerNamespace": "Ad Alanı: {namespace}", + "domainPickerShowMore": "Daha Fazla Göster", + "domainNotFound": "Alan Adı Bulunamadı", + "domainNotFoundDescription": "Bu kaynak devre dışıdır çünkü alan adı sistemimizde artık mevcut değil. Bu kaynak için yeni bir alan adı belirleyin.", + "failed": "Başarısız", + "createNewOrgDescription": "Yeni bir organizasyon oluşturun", + "organization": "Kuruluş", + "port": "Bağlantı Noktası", "securityKeyManage": "Güvenlik Anahtarlarını Yönet", "securityKeyDescription": "Şifresiz kimlik doğrulama için güvenlik anahtarları ekleyin veya kaldırın", "securityKeyRegister": "Yeni Güvenlik Anahtarı Kaydet", @@ -1142,7 +1226,6 @@ "securityKeyRemove": "Kaldır", "securityKeyLastUsed": "Son kullanım: {date}", "securityKeyNameLabel": "İsim", - "securityKeyNamePlaceholder": "Bu güvenlik anahtarı için bir isim girin", "securityKeyRegisterSuccess": "Güvenlik anahtarı başarıyla kaydedildi", "securityKeyRegisterError": "Güvenlik anahtarı kaydedilirken hata oluştu", "securityKeyRemoveSuccess": "Güvenlik anahtarı başarıyla kaldırıldı", @@ -1150,5 +1233,44 @@ "securityKeyLoadError": "Güvenlik anahtarları yüklenirken hata oluştu", "securityKeyLogin": "Güvenlik anahtarı ile giriş yap", "securityKeyAuthError": "Güvenlik anahtarı ile kimlik doğrulama başarısız oldu", - "securityKeyRecommendation": "Hesabınızdan kilitlenmediğinizden emin olmak için farklı bir cihazda başka bir güvenlik anahtarı kaydetmeyi düşünün." + "securityKeyRecommendation": "Hesabınızdan kilitlenmediğinizden emin olmak için farklı bir cihazda başka bir güvenlik anahtarı kaydetmeyi düşünün.", + "registering": "Kaydediliyor...", + "securityKeyPrompt": "Lütfen güvenlik anahtarınızı kullanarak kimliğinizi doğrulayın. Güvenlik anahtarınızın bağlı ve hazır olduğundan emin olun.", + "securityKeyBrowserNotSupported": "Tarayıcınız güvenlik anahtarlarını desteklemiyor. Lütfen Chrome, Firefox veya Safari gibi modern bir tarayıcı kullanın.", + "securityKeyPermissionDenied": "Giriş yapmaya devam etmek için lütfen güvenlik anahtarınıza erişime izin verin.", + "securityKeyRemovedTooQuickly": "Güvenlik anahtarınızın bağlantısını kesmeden önce oturum açma işlemi tamamlanana kadar bağlı kalmasını sağlayın.", + "securityKeyNotSupported": "Güvenlik anahtarınız uyumlu olmayabilir. Lütfen farklı bir güvenlik anahtarı deneyin.", + "securityKeyUnknownError": "Güvenlik anahtarınızı kullanırken bir sorun oluştu. Lütfen tekrar deneyin.", + "twoFactorRequired": "Güvenlik anahtarını kaydetmek için iki faktörlü kimlik doğrulama gereklidir.", + "twoFactor": "İki Faktörlü Kimlik Doğrulama", + "adminEnabled2FaOnYourAccount": "Yöneticiniz {email} için iki faktörlü kimlik doğrulamayı etkinleştirdi. Devam etmek için kurulum işlemini tamamlayın.", + "continueToApplication": "Uygulamaya Devam Et", + "securityKeyAdd": "Güvenlik Anahtarı Ekle", + "securityKeyRegisterTitle": "Yeni Güvenlik Anahtarı Kaydet", + "securityKeyRegisterDescription": "Güvenlik anahtarınızı bağlayın ve tanımlamak için bir ad girin", + "securityKeyTwoFactorRequired": "İki Faktörlü Kimlik Doğrulama Gereklidir", + "securityKeyTwoFactorDescription": "Güvenlik anahtarını kaydetmek için lütfen iki faktörlü kimlik doğrulama kodunuzu girin", + "securityKeyTwoFactorRemoveDescription": "Güvenlik anahtarını kaldırmak için lütfen iki faktörlü kimlik doğrulama kodunuzu girin", + "securityKeyTwoFactorCode": "İki Faktörlü Kod", + "securityKeyRemoveTitle": "Güvenlik Anahtarını Kaldır", + "securityKeyRemoveDescription": "Güvenlik anahtarını \"{name}\" kaldırmak için şifrenizi girin", + "securityKeyNoKeysRegistered": "Kayıtlı güvenlik anahtarı yok", + "securityKeyNoKeysDescription": "Hesabınızın güvenliğini artırmak için bir güvenlik anahtarı ekleyin", + "createDomainRequired": "Alan adı gereklidir", + "createDomainAddDnsRecords": "DNS Kayıtlarını Ekle", + "createDomainAddDnsRecordsDescription": "Kurulumu tamamlamak için alan sağlayıcınıza şu DNS kayıtlarını ekleyin.", + "createDomainNsRecords": "NS Kayıtları", + "createDomainRecord": "Kayıt", + "createDomainType": "Tür:", + "createDomainName": "Ad:", + "createDomainValue": "Değer:", + "createDomainCnameRecords": "CNAME Kayıtları", + "createDomainRecordNumber": "Kayıt {number}", + "createDomainTxtRecords": "TXT Kayıtları", + "createDomainSaveTheseRecords": "Bu Kayıtları Kaydet", + "createDomainSaveTheseRecordsDescription": "Bu DNS kayıtlarını kaydettiğinizden emin olun çünkü tekrar görmeyeceksiniz.", + "createDomainDnsPropagation": "DNS Yayılması", + "createDomainDnsPropagationDescription": "DNS değişikliklerinin internet genelinde yayılması zaman alabilir. DNS sağlayıcınız ve TTL ayarlarına bağlı olarak bu birkaç dakika ile 48 saat arasında değişebilir.", + "resourcePortRequired": "HTTP dışı kaynaklar için bağlantı noktası numarası gereklidir", + "resourcePortNotAllowed": "HTTP kaynakları için bağlantı noktası numarası ayarlanmamalı" } From c682b037369e5ec5ae791b3d640abf4e9e99bbb2 Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Wed, 16 Jul 2025 22:00:36 -0700 Subject: [PATCH 10/12] New translations en-us.json (Chinese Simplified) --- messages/zh-CN.json | 138 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 130 insertions(+), 8 deletions(-) diff --git a/messages/zh-CN.json b/messages/zh-CN.json index 8076ebda..ca8b344b 100644 --- a/messages/zh-CN.json +++ b/messages/zh-CN.json @@ -11,8 +11,9 @@ "componentsErrorNoMemberCreate": "您目前不是任何组织的成员。创建组织以开始操作。", "componentsErrorNoMember": "您目前不是任何组织的成员。", "welcome": "欢迎使用 Pangolin", + "welcomeTo": "欢迎来到", "componentsCreateOrg": "创建组织", - "componentsMember": "您属于 {count, plural, =0 {无组织} =1 {一个组织} other {# 个组织}}。", + "componentsMember": "You're a member of {count, plural, =0 {no organization} one {one organization} other {# organizations}}.", "componentsInvalidKey": "检测到无效或过期的许可证密钥。按照许可证条款操作以继续使用所有功能。", "dismiss": "忽略", "componentsLicenseViolation": "许可证超限:该服务器使用了 {usedSites} 个站点,已超过授权的 {maxSites} 个。请遵守许可证条款以继续使用全部功能。", @@ -206,6 +207,7 @@ "orgGeneralSettings": "组织设置", "orgGeneralSettingsDescription": "管理您的机构详细信息和配置", "saveGeneralSettings": "保存常规设置", + "saveSettings": "保存设置", "orgDangerZone": "危险区域", "orgDangerZoneDescription": "一旦删除该组织,将无法恢复,请务必确认。", "orgDelete": "删除组织", @@ -249,7 +251,7 @@ "weeks": "周", "months": "月", "years": "年", - "day": "{count, plural, =1 {# 天} other {# 天}}", + "day": "{count, plural, other {# 天}}", "apiKeysTitle": "API 密钥", "apiKeysConfirmCopy2": "您必须确认您已复制 API 密钥。", "apiKeysErrorCreate": "创建 API 密钥出错", @@ -347,7 +349,7 @@ "licensePurchase": "购买许可证", "licensePurchaseSites": "购买更多站点", "licenseSitesUsedMax": "使用了 {usedSites}/{maxSites} 个站点", - "licenseSitesUsed": "{count, plural, =0 {# 站点} =1 {# 站点} other {# 站点}}", + "licenseSitesUsed": "{count, plural, =0 {# sites} one {# site} other {# sites}} in system.", "licensePurchaseDescription": "请选择您希望 {selectedMode, select, license {直接购买许可证,您可以随时增加更多站点。} other {为现有许可证购买更多站点}}", "licenseFee": "许可证费用", "licensePriceSite": "每个站点的价格", @@ -436,7 +438,7 @@ "accessRoleSelect": "选择角色", "inviteEmailSentDescription": "一封电子邮件已经发送给用户,带有下面的访问链接。他们必须访问该链接才能接受邀请。", "inviteSentDescription": "用户已被邀请。他们必须访问下面的链接才能接受邀请。", - "inviteExpiresIn": "邀请将于 {days, plural, =1 {# 天} other {# 天}}", + "inviteExpiresIn": "邀请将在{days, plural, other {# 天}}后过期。", "idpTitle": "身份提供商", "idpSelect": "为外部用户选择身份提供商", "idpNotConfigured": "没有配置身份提供者。请在创建外部用户之前配置身份提供者。", @@ -958,6 +960,8 @@ "licenseTierProfessionalRequiredDescription": "此功能仅在专业版可用。", "actionGetOrg": "获取组织", "actionUpdateOrg": "更新组织", + "actionUpdateUser": "更新用户", + "actionGetUser": "获取用户", "actionGetOrgUser": "获取组织用户", "actionListOrgDomains": "列出组织域", "actionCreateSite": "创建站点", @@ -1090,6 +1094,8 @@ "sidebarAllUsers": "所有用户", "sidebarIdentityProviders": "身份提供商", "sidebarLicense": "证书", + "sidebarClients": "客户", + "sidebarDomains": "域", "enableDockerSocket": "启用停靠套接字", "enableDockerSocketDescription": "启用 Docker Socket 发现以填充容器信息。必须向 Newt 提供 Socket 路径。", "enableDockerSocketLink": "了解更多", @@ -1102,7 +1108,7 @@ "containerNetworks": "网络", "containerHostnameIp": "主机名/IP", "containerLabels": "标签", - "containerLabelsCount": "{count} label{s,plural,one{} other{s}}", + "containerLabelsCount": "{count, plural, other {# 标签}}", "containerLabelsTitle": "容器标签", "containerLabelEmpty": "", "containerPorts": "端口", @@ -1114,7 +1120,7 @@ "showStoppedContainers": "显示已停止的容器", "noContainersFound": "未找到容器。请确保Docker容器正在运行。", "searchContainersPlaceholder": "在 {count} 个容器中搜索...", - "searchResultsCount": "{count} result{s,plural,one{} other{s}}", + "searchResultsCount": "{count, plural, other {# 个结果}}", "filters": "筛选器", "filterOptions": "过滤器选项", "filterPorts": "端口", @@ -1129,10 +1135,88 @@ "dark": "深色", "system": "系统", "theme": "主题", + "subnetRequired": "子网是必填项", "initialSetupTitle": "初始服务器设置", "initialSetupDescription": "创建初始服务器管理员帐户。 只能存在一个服务器管理员。 您可以随时更改这些凭据。", "createAdminAccount": "创建管理员帐户", "setupErrorCreateAdmin": "创建服务器管理员账户时发生错误。", + "certificateStatus": "证书状态", + "loading": "加载中", + "restart": "重启", + "domains": "域", + "domainsDescription": "管理您的组织域", + "domainsSearch": "搜索域...", + "domainAdd": "添加域", + "domainAddDescription": "在您的组织中注册新域", + "domainCreate": "创建域", + "domainCreatedDescription": "域创建成功", + "domainDeletedDescription": "成功删除域", + "domainQuestionRemove": "您确定要从您的账户中移除域{domain}吗?", + "domainMessageRemove": "移除后,该域将不再与您的账户关联。", + "domainMessageConfirm": "要确认,请在下方输入域名。", + "domainConfirmDelete": "确认删除域", + "domainDelete": "删除域", + "domain": "域", + "selectDomainTypeNsName": "域委派(NS)", + "selectDomainTypeNsDescription": "此域及其所有子域。当您希望控制整个域区域时使用此选项。", + "selectDomainTypeCnameName": "单个域(CNAME)", + "selectDomainTypeCnameDescription": "仅此特定域。用于单个子域或特定域条目。", + "selectDomainTypeWildcardName": "通配符域", + "selectDomainTypeWildcardDescription": "此域及其第一级子域。", + "domainDelegation": "单个域", + "selectType": "选择一个类型", + "actions": "操作", + "refresh": "刷新", + "refreshError": "刷新数据失败", + "verified": "已验证", + "pending": "待定", + "sidebarBilling": "计费", + "billing": "计费", + "orgBillingDescription": "管理您的账单信息和订阅", + "github": "GitHub", + "pangolinHosted": "Pangolin 托管", + "fossorial": "Fossorial", + "completeAccountSetup": "完成账户设置", + "completeAccountSetupDescription": "设置您的密码以开始", + "accountSetupSent": "我们将发送账号设置代码到该电子邮件地址。", + "accountSetupCode": "设置代码", + "accountSetupCodeDescription": "请检查您的邮箱以获取设置代码。", + "passwordCreate": "创建密码", + "passwordCreateConfirm": "确认密码", + "accountSetupSubmit": "发送设置代码", + "completeSetup": "完成设置", + "accountSetupSuccess": "账号设置完成!欢迎来到 Pangolin!", + "documentation": "文档", + "saveAllSettings": "保存所有设置", + "settingsUpdated": "设置已更新", + "settingsUpdatedDescription": "所有设置已成功更新", + "settingsErrorUpdate": "设置更新失败", + "settingsErrorUpdateDescription": "更新设置时发生错误", + "sidebarCollapse": "折叠", + "sidebarExpand": "展开", + "newtUpdateAvailable": "更新可用", + "newtUpdateAvailableInfo": "新版本的 Newt 已可用。请更新到最新版本以获得最佳体验。", + "domainPickerEnterDomain": "输入您的域", + "domainPickerPlaceholder": "myapp.example.com、api.v1.mydomain.com 或仅 myapp", + "domainPickerDescription": "输入完整域名、子域或仅输入名称以查看可用选项", + "domainPickerTabAll": "所有", + "domainPickerTabOrganization": "组织", + "domainPickerTabProvided": "提供的", + "domainPickerSortAsc": "A-Z", + "domainPickerSortDesc": "Z-A", + "domainPickerCheckingAvailability": "检查可用性...", + "domainPickerNoMatchingDomains": "未找到 \"{userInput}\" 的匹配域。尝试其他域或检查您组织的域设置。", + "domainPickerOrganizationDomains": "组织域", + "domainPickerProvidedDomains": "提供的域", + "domainPickerSubdomain": "子域:{subdomain}", + "domainPickerNamespace": "命名空间:{namespace}", + "domainPickerShowMore": "显示更多", + "domainNotFound": "域未找到", + "domainNotFoundDescription": "此资源已禁用,因为该域不再在我们的系统中存在。请为此资源设置一个新域。", + "failed": "失败", + "createNewOrgDescription": "创建一个新组织", + "organization": "组织", + "port": "端口", "securityKeyManage": "管理安全密钥", "securityKeyDescription": "添加或删除用于无密码认证的安全密钥", "securityKeyRegister": "注册新的安全密钥", @@ -1142,7 +1226,6 @@ "securityKeyRemove": "删除", "securityKeyLastUsed": "上次使用:{date}", "securityKeyNameLabel": "名称", - "securityKeyNamePlaceholder": "为此安全密钥输入名称", "securityKeyRegisterSuccess": "安全密钥注册成功", "securityKeyRegisterError": "注册安全密钥失败", "securityKeyRemoveSuccess": "安全密钥删除成功", @@ -1150,5 +1233,44 @@ "securityKeyLoadError": "加载安全密钥失败", "securityKeyLogin": "使用安全密钥登录", "securityKeyAuthError": "使用安全密钥认证失败", - "securityKeyRecommendation": "考虑在其他设备上注册另一个安全密钥,以确保不会被锁定在您的账户之外。" + "securityKeyRecommendation": "考虑在其他设备上注册另一个安全密钥,以确保不会被锁定在您的账户之外。", + "registering": "注册中...", + "securityKeyPrompt": "请使用您的安全密钥验证身份。确保您的安全密钥已连接并准备好。", + "securityKeyBrowserNotSupported": "您的浏览器不支持安全密钥。请使用像 Chrome、Firefox 或 Safari 这样的现代浏览器。", + "securityKeyPermissionDenied": "请允许访问您的安全密钥以继续登录。", + "securityKeyRemovedTooQuickly": "请保持您的安全密钥连接,直到登录过程完成。", + "securityKeyNotSupported": "您的安全密钥可能不兼容。请尝试不同的安全密钥。", + "securityKeyUnknownError": "使用安全密钥时出现问题。请再试一次。", + "twoFactorRequired": "注册安全密钥需要两步验证。", + "twoFactor": "两步验证", + "adminEnabled2FaOnYourAccount": "管理员已为{email}启用两步验证。请完成设置以继续。", + "continueToApplication": "继续到应用程序", + "securityKeyAdd": "添加安全密钥", + "securityKeyRegisterTitle": "注册新安全密钥", + "securityKeyRegisterDescription": "连接您的安全密钥并输入名称以便识别", + "securityKeyTwoFactorRequired": "要求两步验证", + "securityKeyTwoFactorDescription": "请输入你的两步验证代码以注册安全密钥", + "securityKeyTwoFactorRemoveDescription": "请输入你的两步验证代码以移除安全密钥", + "securityKeyTwoFactorCode": "双因素代码", + "securityKeyRemoveTitle": "移除安全密钥", + "securityKeyRemoveDescription": "输入您的密码以移除安全密钥 \"{name}\"", + "securityKeyNoKeysRegistered": "没有注册安全密钥", + "securityKeyNoKeysDescription": "添加安全密钥以加强您的账户安全", + "createDomainRequired": "必须输入域", + "createDomainAddDnsRecords": "添加 DNS 记录", + "createDomainAddDnsRecordsDescription": "将以下 DNS 记录添加到您的域名提供商以完成设置。", + "createDomainNsRecords": "NS 记录", + "createDomainRecord": "记录", + "createDomainType": "类型:", + "createDomainName": "名称:", + "createDomainValue": "值:", + "createDomainCnameRecords": "CNAME 记录", + "createDomainRecordNumber": "记录 {number}", + "createDomainTxtRecords": "TXT 记录", + "createDomainSaveTheseRecords": "保存这些记录", + "createDomainSaveTheseRecordsDescription": "务必保存这些 DNS 记录,因为您将无法再次查看它们。", + "createDomainDnsPropagation": "DNS 传播", + "createDomainDnsPropagationDescription": "DNS 更改可能需要一些时间才能在互联网上传播。这可能需要从几分钟到 48 小时,具体取决于您的 DNS 提供商和 TTL 设置。", + "resourcePortRequired": "非 HTTP 资源必须输入端口号", + "resourcePortNotAllowed": "HTTP 资源不应设置端口号" } From 5fddd71fc2210da2a6be4c3a53286c50524a81fd Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Wed, 16 Jul 2025 22:00:37 -0700 Subject: [PATCH 11/12] New translations en-us.json (Czech) --- messages/cs-CZ.json | 1276 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1276 insertions(+) create mode 100644 messages/cs-CZ.json diff --git a/messages/cs-CZ.json b/messages/cs-CZ.json new file mode 100644 index 00000000..80269103 --- /dev/null +++ b/messages/cs-CZ.json @@ -0,0 +1,1276 @@ +{ + "setupCreate": "Vytvořte si organizaci, lokalitu a služby", + "setupNewOrg": "Nová organizace", + "setupCreateOrg": "Vytvořit organizaci", + "setupCreateResources": "Vytvořit zdroje", + "setupOrgName": "Název organizace", + "orgDisplayName": "Toto je zobrazovaný název vaší organizace.", + "orgId": "ID organizace", + "setupIdentifierMessage": "Toto je jedinečný identifikátor vaší organizace. Nemusí odpovídat názvu organizace.", + "setupErrorIdentifier": "ID organizace je již použito. Zvolte prosím jiné.", + "componentsErrorNoMemberCreate": "Zatím nejste členem žádné organizace. Abyste mohli začít, vytvořte si organizaci.", + "componentsErrorNoMember": "Zatím nejste členem žádných organizací.", + "welcome": "Welcome!", + "welcomeTo": "Welcome to", + "componentsCreateOrg": "Vytvořte organizaci", + "componentsMember": "Jste členem {count, plural, =0 {0 organizací} one {1 organizace} other {# organizací}}.", + "componentsInvalidKey": "Byly nalezeny neplatné nebo propadlé licenční klíče. Pokud chcete nadále používat všechny funkce, postupujte podle licenčních podmínek.", + "dismiss": "Zavřít", + "componentsLicenseViolation": "Porušení licenčních podmínek: Tento server používá {usedSites} stránek, což překračuje limit {maxSites} licencovaných stránek. Pokud chcete nadále používat všechny funkce, postupujte podle licenčních podmínek.", + "componentsSupporterMessage": "Děkujeme, že podporujete Pangolin jako {tier}!", + "inviteErrorNotValid": "Je nám líto, ale vypadá to, že pozvánka, ke které se snažíte získat přístup, nebyla přijata nebo již není platná.", + "inviteErrorUser": "Je nám líto, ale vypadá to, že pozvánka, ke které se snažíte získat přístup, není pro tohoto uživatele.", + "inviteLoginUser": "Prosím ujistěte se, že jste přihlášeni jako správný uživatel.", + "inviteErrorNoUser": "Je nám líto, ale vypadá to, že pozvánka, ke které se snažíte získat přístup, není pro existujícího uživatele.", + "inviteCreateUser": "Nejprve si prosím vytvořte účet.", + "goHome": "Přejít na hlavní stránku", + "inviteLogInOtherUser": "Přihlásit se jako jiný uživatel", + "createAnAccount": "Vytvořit účet", + "inviteNotAccepted": "Pozvánka nebyla přijata", + "authCreateAccount": "Vytvořte si účet, abyste mohli začít", + "authNoAccount": "Nemáte účet?", + "email": "Email", + "password": "Heslo", + "confirmPassword": "Potvrďte heslo", + "createAccount": "Vytvořit účet", + "viewSettings": "Zobrazit nastavení", + "delete": "Odstranit", + "name": "Jméno", + "online": "Online", + "offline": "Offline", + "site": "Lokalita", + "dataIn": "Přijatá data", + "dataOut": "Odeslaná data", + "connectionType": "Typ připojení", + "tunnelType": "Typ tunelu", + "local": "Místní", + "edit": "Upravit", + "siteConfirmDelete": "Potvrdit odstranění lokality", + "siteDelete": "Odstranění lokality", + "siteMessageRemove": "Jakmile lokalitu odstraníte, nebude dostupná. Všechny související služby a cíle budou také odstraněny.", + "siteMessageConfirm": "Pro potvrzení zadejte prosím název lokality.", + "siteQuestionRemove": "Opravdu chcete odstranit lokalitu {selectedSite} z organizace?", + "siteManageSites": "Správa lokalit", + "siteDescription": "Umožní připojení k vaší síti prostřednictvím zabezpečených tunelů", + "siteCreate": "Vytvořit lokalitu", + "siteCreateDescription2": "Postupujte podle níže uvedených kroků, abyste vytvořili a připojili novou lokalitu", + "siteCreateDescription": "Vytvořte novou lokalitu, abyste mohli začít připojovat služby", + "close": "Zavřít", + "siteErrorCreate": "Chyba při vytváření lokality", + "siteErrorCreateKeyPair": "Nebyly nalezeny klíče nebo výchozí nastavení lokality", + "siteErrorCreateDefaults": "Výchozí nastavení lokality nenalezeno", + "siteNameDescription": "Toto je zobrazovaný název lokality.", + "method": "Způsob", + "siteMethodDescription": "Tímto způsobem budete vystavovat spojení.", + "siteLearnNewt": "Naučte se, jak nainstalovat Newt na svůj systém", + "siteSeeConfigOnce": "You will only be able to see the configuration once.", + "siteLoadWGConfig": "Loading WireGuard configuration...", + "siteDocker": "Expand for Docker Deployment Details", + "toggle": "Toggle", + "dockerCompose": "Docker Compose", + "dockerRun": "Docker Run", + "siteLearnLocal": "Local sites do not tunnel, learn more", + "siteConfirmCopy": "I have copied the config", + "searchSitesProgress": "Search sites...", + "siteAdd": "Add Site", + "siteInstallNewt": "Install Newt", + "siteInstallNewtDescription": "Get Newt running on your system", + "WgConfiguration": "WireGuard Configuration", + "WgConfigurationDescription": "Use the following configuration to connect to your network", + "operatingSystem": "Operating System", + "commands": "Commands", + "recommended": "Recommended", + "siteNewtDescription": "For the best user experience, use Newt. It uses WireGuard under the hood and allows you to address your private resources by their LAN address on your private network from within the Pangolin dashboard.", + "siteRunsInDocker": "Runs in Docker", + "siteRunsInShell": "Runs in shell on macOS, Linux, and Windows", + "siteErrorDelete": "Error deleting site", + "siteErrorUpdate": "Failed to update site", + "siteErrorUpdateDescription": "An error occurred while updating the site.", + "siteUpdated": "Site updated", + "siteUpdatedDescription": "The site has been updated.", + "siteGeneralDescription": "Configure the general settings for this site", + "siteSettingDescription": "Configure the settings on your site", + "siteSetting": "{siteName} Settings", + "siteNewtTunnel": "Newt Tunnel (Recommended)", + "siteNewtTunnelDescription": "Easiest way to create an entrypoint into your network. No extra setup.", + "siteWg": "Basic WireGuard", + "siteWgDescription": "Use any WireGuard client to establish a tunnel. Manual NAT setup required.", + "siteLocalDescription": "Local resources only. No tunneling.", + "siteSeeAll": "See All Sites", + "siteTunnelDescription": "Determine how you want to connect to your site", + "siteNewtCredentials": "Newt Credentials", + "siteNewtCredentialsDescription": "This is how Newt will authenticate with the server", + "siteCredentialsSave": "Save Your Credentials", + "siteCredentialsSaveDescription": "You will only be able to see this once. Make sure to copy it to a secure place.", + "siteInfo": "Site Information", + "status": "Status", + "shareTitle": "Manage Share Links", + "shareDescription": "Create shareable links to grant temporary or permanent access to your resources", + "shareSearch": "Search share links...", + "shareCreate": "Create Share Link", + "shareErrorDelete": "Failed to delete link", + "shareErrorDeleteMessage": "An error occurred deleting link", + "shareDeleted": "Link deleted", + "shareDeletedDescription": "The link has been deleted", + "shareTokenDescription": "Your access token can be passed in two ways: as a query parameter or in the request headers. These must be passed from the client on every request for authenticated access.", + "accessToken": "Access Token", + "usageExamples": "Usage Examples", + "tokenId": "Token ID", + "requestHeades": "Request Headers", + "queryParameter": "Query Parameter", + "importantNote": "Important Note", + "shareImportantDescription": "For security reasons, using headers is recommended over query parameters when possible, as query parameters may be logged in server logs or browser history.", + "token": "Token", + "shareTokenSecurety": "Keep your access token secure. Do not share it in publicly accessible areas or client-side code.", + "shareErrorFetchResource": "Failed to fetch resources", + "shareErrorFetchResourceDescription": "An error occurred while fetching the resources", + "shareErrorCreate": "Failed to create share link", + "shareErrorCreateDescription": "An error occurred while creating the share link", + "shareCreateDescription": "Anyone with this link can access the resource", + "shareTitleOptional": "Title (optional)", + "expireIn": "Expire In", + "neverExpire": "Never expire", + "shareExpireDescription": "Expiration time is how long the link will be usable and provide access to the resource. After this time, the link will no longer work, and users who used this link will lose access to the resource.", + "shareSeeOnce": "You will only be able to see this linkonce. Make sure to copy it.", + "shareAccessHint": "Anyone with this link can access the resource. Share it with care.", + "shareTokenUsage": "See Access Token Usage", + "createLink": "Create Link", + "resourcesNotFound": "No resources found", + "resourceSearch": "Search resources", + "openMenu": "Open menu", + "resource": "Resource", + "title": "Title", + "created": "Created", + "expires": "Expires", + "never": "Never", + "shareErrorSelectResource": "Please select a resource", + "resourceTitle": "Manage Resources", + "resourceDescription": "Create secure proxies to your private applications", + "resourcesSearch": "Search resources...", + "resourceAdd": "Add Resource", + "resourceErrorDelte": "Error deleting resource", + "authentication": "Authentication", + "protected": "Protected", + "notProtected": "Not Protected", + "resourceMessageRemove": "Once removed, the resource will no longer be accessible. All targets associated with the resource will also be removed.", + "resourceMessageConfirm": "To confirm, please type the name of the resource below.", + "resourceQuestionRemove": "Are you sure you want to remove the resource {selectedResource} from the organization?", + "resourceHTTP": "HTTPS Resource", + "resourceHTTPDescription": "Proxy requests to your app over HTTPS using a subdomain or base domain.", + "resourceRaw": "Raw TCP/UDP Resource", + "resourceRawDescription": "Proxy requests to your app over TCP/UDP using a port number.", + "resourceCreate": "Create Resource", + "resourceCreateDescription": "Follow the steps below to create a new resource", + "resourceSeeAll": "See All Resources", + "resourceInfo": "Resource Information", + "resourceNameDescription": "This is the display name for the resource.", + "siteSelect": "Select site", + "siteSearch": "Search site", + "siteNotFound": "No site found.", + "siteSelectionDescription": "This site will provide connectivity to the resource.", + "resourceType": "Resource Type", + "resourceTypeDescription": "Determine how you want to access your resource", + "resourceHTTPSSettings": "HTTPS Settings", + "resourceHTTPSSettingsDescription": "Configure how your resource will be accessed over HTTPS", + "domainType": "Domain Type", + "subdomain": "Subdomain", + "baseDomain": "Base Domain", + "subdomnainDescription": "The subdomain where your resource will be accessible.", + "resourceRawSettings": "TCP/UDP Settings", + "resourceRawSettingsDescription": "Configure how your resource will be accessed over TCP/UDP", + "protocol": "Protocol", + "protocolSelect": "Select a protocol", + "resourcePortNumber": "Port Number", + "resourcePortNumberDescription": "The external port number to proxy requests.", + "cancel": "Cancel", + "resourceConfig": "Configuration Snippets", + "resourceConfigDescription": "Copy and paste these configuration snippets to set up your TCP/UDP resource", + "resourceAddEntrypoints": "Traefik: Add Entrypoints", + "resourceExposePorts": "Gerbil: Expose Ports in Docker Compose", + "resourceLearnRaw": "Learn how to configure TCP/UDP resources", + "resourceBack": "Back to Resources", + "resourceGoTo": "Go to Resource", + "resourceDelete": "Delete Resource", + "resourceDeleteConfirm": "Confirm Delete Resource", + "visibility": "Visibility", + "enabled": "Enabled", + "disabled": "Disabled", + "general": "General", + "generalSettings": "General Settings", + "proxy": "Proxy", + "rules": "Rules", + "resourceSettingDescription": "Configure the settings on your resource", + "resourceSetting": "{resourceName} Settings", + "alwaysAllow": "Always Allow", + "alwaysDeny": "Always Deny", + "orgSettingsDescription": "Configure your organization's general settings", + "orgGeneralSettings": "Organization Settings", + "orgGeneralSettingsDescription": "Manage your organization details and configuration", + "saveGeneralSettings": "Save General Settings", + "saveSettings": "Save Settings", + "orgDangerZone": "Danger Zone", + "orgDangerZoneDescription": "Once you delete this org, there is no going back. Please be certain.", + "orgDelete": "Delete Organization", + "orgDeleteConfirm": "Confirm Delete Organization", + "orgMessageRemove": "This action is irreversible and will delete all associated data.", + "orgMessageConfirm": "To confirm, please type the name of the organization below.", + "orgQuestionRemove": "Are you sure you want to remove the organization {selectedOrg}?", + "orgUpdated": "Organization updated", + "orgUpdatedDescription": "The organization has been updated.", + "orgErrorUpdate": "Failed to update organization", + "orgErrorUpdateMessage": "An error occurred while updating the organization.", + "orgErrorFetch": "Failed to fetch organizations", + "orgErrorFetchMessage": "An error occurred while listing your organizations", + "orgErrorDelete": "Failed to delete organization", + "orgErrorDeleteMessage": "An error occurred while deleting the organization.", + "orgDeleted": "Organization deleted", + "orgDeletedMessage": "The organization and its data has been deleted.", + "orgMissing": "Organization ID Missing", + "orgMissingMessage": "Unable to regenerate invitation without an organization ID.", + "accessUsersManage": "Manage Users", + "accessUsersDescription": "Invite users and add them to roles to manage access to your organization", + "accessUsersSearch": "Search users...", + "accessUserCreate": "Create User", + "accessUserRemove": "Remove User", + "username": "Username", + "identityProvider": "Identity Provider", + "role": "Role", + "nameRequired": "Name is required", + "accessRolesManage": "Manage Roles", + "accessRolesDescription": "Configure roles to manage access to your organization", + "accessRolesSearch": "Search roles...", + "accessRolesAdd": "Add Role", + "accessRoleDelete": "Delete Role", + "description": "Description", + "inviteTitle": "Open Invitations", + "inviteDescription": "Manage your invitations to other users", + "inviteSearch": "Search invitations...", + "minutes": "Minutes", + "hours": "Hours", + "days": "Days", + "weeks": "Weeks", + "months": "Months", + "years": "Years", + "day": "{count, plural, one {# day} other {# days}}", + "apiKeysTitle": "API Key Information", + "apiKeysConfirmCopy2": "You must confirm that you have copied the API key.", + "apiKeysErrorCreate": "Error creating API key", + "apiKeysErrorSetPermission": "Error setting permissions", + "apiKeysCreate": "Generate API Key", + "apiKeysCreateDescription": "Generate a new API key for your organization", + "apiKeysGeneralSettings": "Permissions", + "apiKeysGeneralSettingsDescription": "Determine what this API key can do", + "apiKeysList": "Your API Key", + "apiKeysSave": "Save Your API Key", + "apiKeysSaveDescription": "You will only be able to see this once. Make sure to copy it to a secure place.", + "apiKeysInfo": "Your API key is:", + "apiKeysConfirmCopy": "I have copied the API key", + "generate": "Generate", + "done": "Done", + "apiKeysSeeAll": "See All API Keys", + "apiKeysPermissionsErrorLoadingActions": "Error loading API key actions", + "apiKeysPermissionsErrorUpdate": "Error setting permissions", + "apiKeysPermissionsUpdated": "Permissions updated", + "apiKeysPermissionsUpdatedDescription": "The permissions have been updated.", + "apiKeysPermissionsGeneralSettings": "Permissions", + "apiKeysPermissionsGeneralSettingsDescription": "Determine what this API key can do", + "apiKeysPermissionsSave": "Save Permissions", + "apiKeysPermissionsTitle": "Permissions", + "apiKeys": "API Keys", + "searchApiKeys": "Search API keys...", + "apiKeysAdd": "Generate API Key", + "apiKeysErrorDelete": "Error deleting API key", + "apiKeysErrorDeleteMessage": "Error deleting API key", + "apiKeysQuestionRemove": "Are you sure you want to remove the API key {selectedApiKey} from the organization?", + "apiKeysMessageRemove": "Once removed, the API key will no longer be able to be used.", + "apiKeysMessageConfirm": "To confirm, please type the name of the API key below.", + "apiKeysDeleteConfirm": "Confirm Delete API Key", + "apiKeysDelete": "Delete API Key", + "apiKeysManage": "Manage API Keys", + "apiKeysDescription": "API keys are used to authenticate with the integration API", + "apiKeysSettings": "{apiKeyName} Settings", + "userTitle": "Manage All Users", + "userDescription": "View and manage all users in the system", + "userAbount": "About User Management", + "userAbountDescription": "This table displays all root user objects in the system. Each user may belong to multiple organizations. Removing a user from an organization does not delete their root user object - they will remain in the system. To completely remove a user from the system, you must delete their root user object using the delete action in this table.", + "userServer": "Server Users", + "userSearch": "Search server users...", + "userErrorDelete": "Error deleting user", + "userDeleteConfirm": "Confirm Delete User", + "userDeleteServer": "Delete User from Server", + "userMessageRemove": "The user will be removed from all organizations and be completely removed from the server.", + "userMessageConfirm": "To confirm, please type the name of the user below.", + "userQuestionRemove": "Are you sure you want to permanently delete {selectedUser} from the server?", + "licenseKey": "License Key", + "valid": "Valid", + "numberOfSites": "Number of Sites", + "licenseKeySearch": "Search license keys...", + "licenseKeyAdd": "Add License Key", + "type": "Type", + "licenseKeyRequired": "License key is required", + "licenseTermsAgree": "You must agree to the license terms", + "licenseErrorKeyLoad": "Failed to load license keys", + "licenseErrorKeyLoadDescription": "An error occurred loading license keys.", + "licenseErrorKeyDelete": "Failed to delete license key", + "licenseErrorKeyDeleteDescription": "An error occurred deleting license key.", + "licenseKeyDeleted": "License key deleted", + "licenseKeyDeletedDescription": "The license key has been deleted.", + "licenseErrorKeyActivate": "Failed to activate license key", + "licenseErrorKeyActivateDescription": "An error occurred while activating the license key.", + "licenseAbout": "About Licensing", + "communityEdition": "Community Edition", + "licenseAboutDescription": "This is for business and enterprise users who are using Pangolin in a commercial environment. If you are using Pangolin for personal use, you can ignore this section.", + "licenseKeyActivated": "License key activated", + "licenseKeyActivatedDescription": "The license key has been successfully activated.", + "licenseErrorKeyRecheck": "Failed to recheck license keys", + "licenseErrorKeyRecheckDescription": "An error occurred rechecking license keys.", + "licenseErrorKeyRechecked": "License keys rechecked", + "licenseErrorKeyRecheckedDescription": "All license keys have been rechecked", + "licenseActivateKey": "Activate License Key", + "licenseActivateKeyDescription": "Enter a license key to activate it.", + "licenseActivate": "Activate License", + "licenseAgreement": "By checking this box, you confirm that you have read and agree to the license terms corresponding to the tier associated with your license key.", + "fossorialLicense": "View Fossorial Commercial License & Subscription Terms", + "licenseMessageRemove": "This will remove the license key and all associated permissions granted by it.", + "licenseMessageConfirm": "To confirm, please type the license key below.", + "licenseQuestionRemove": "Are you sure you want to delete the license key {selectedKey} ?", + "licenseKeyDelete": "Delete License Key", + "licenseKeyDeleteConfirm": "Confirm Delete License Key", + "licenseTitle": "Manage License Status", + "licenseTitleDescription": "View and manage license keys in the system", + "licenseHost": "Host License", + "licenseHostDescription": "Manage the main license key for the host.", + "licensedNot": "Not Licensed", + "hostId": "Host ID", + "licenseReckeckAll": "Recheck All Keys", + "licenseSiteUsage": "Sites Usage", + "licenseSiteUsageDecsription": "View the number of sites using this license.", + "licenseNoSiteLimit": "There is no limit on the number of sites using an unlicensed host.", + "licensePurchase": "Purchase License", + "licensePurchaseSites": "Purchase Additional Sites", + "licenseSitesUsedMax": "{usedSites} of {maxSites} sites used", + "licenseSitesUsed": "{count, plural, =0 {# sites} one {# site} other {# sites}} in system.", + "licensePurchaseDescription": "Choose how many sites you want to {selectedMode, select, license {purchase a license for. You can always add more sites later.} other {add to your existing license.}}", + "licenseFee": "License fee", + "licensePriceSite": "Price per site", + "total": "Total", + "licenseContinuePayment": "Continue to Payment", + "pricingPage": "pricing page", + "pricingPortal": "See Purchase Portal", + "licensePricingPage": "For the most up-to-date pricing and discounts, please visit the ", + "invite": "Invitations", + "inviteRegenerate": "Regenerate Invitation", + "inviteRegenerateDescription": "Revoke previous invitation and create a new one", + "inviteRemove": "Remove Invitation", + "inviteRemoveError": "Failed to remove invitation", + "inviteRemoveErrorDescription": "An error occurred while removing the invitation.", + "inviteRemoved": "Invitation removed", + "inviteRemovedDescription": "The invitation for {email} has been removed.", + "inviteQuestionRemove": "Are you sure you want to remove the invitation {email}?", + "inviteMessageRemove": "Once removed, this invitation will no longer be valid. You can always re-invite the user later.", + "inviteMessageConfirm": "To confirm, please type the email address of the invitation below.", + "inviteQuestionRegenerate": "Are you sure you want to regenerate the invitation for {email}? This will revoke the previous invitation.", + "inviteRemoveConfirm": "Confirm Remove Invitation", + "inviteRegenerated": "Invitation Regenerated", + "inviteSent": "A new invitation has been sent to {email}.", + "inviteSentEmail": "Send email notification to the user", + "inviteGenerate": "A new invitation has been generated for {email}.", + "inviteDuplicateError": "Duplicate Invite", + "inviteDuplicateErrorDescription": "An invitation for this user already exists.", + "inviteRateLimitError": "Rate Limit Exceeded", + "inviteRateLimitErrorDescription": "You have exceeded the limit of 3 regenerations per hour. Please try again later.", + "inviteRegenerateError": "Failed to Regenerate Invitation", + "inviteRegenerateErrorDescription": "An error occurred while regenerating the invitation.", + "inviteValidityPeriod": "Validity Period", + "inviteValidityPeriodSelect": "Select validity period", + "inviteRegenerateMessage": "The invitation has been regenerated. The user must access the link below to accept the invitation.", + "inviteRegenerateButton": "Regenerate", + "expiresAt": "Expires At", + "accessRoleUnknown": "Unknown Role", + "placeholder": "Placeholder", + "userErrorOrgRemove": "Failed to remove user", + "userErrorOrgRemoveDescription": "An error occurred while removing the user.", + "userOrgRemoved": "User removed", + "userOrgRemovedDescription": "The user {email} has been removed from the organization.", + "userQuestionOrgRemove": "Are you sure you want to remove {email} from the organization?", + "userMessageOrgRemove": "Once removed, this user will no longer have access to the organization. You can always re-invite them later, but they will need to accept the invitation again.", + "userMessageOrgConfirm": "To confirm, please type the name of the of the user below.", + "userRemoveOrgConfirm": "Confirm Remove User", + "userRemoveOrg": "Remove User from Organization", + "users": "Users", + "accessRoleMember": "Member", + "accessRoleOwner": "Owner", + "userConfirmed": "Confirmed", + "idpNameInternal": "Internal", + "emailInvalid": "Invalid email address", + "inviteValidityDuration": "Please select a duration", + "accessRoleSelectPlease": "Please select a role", + "usernameRequired": "Username is required", + "idpSelectPlease": "Please select an identity provider", + "idpGenericOidc": "Generic OAuth2/OIDC provider.", + "accessRoleErrorFetch": "Failed to fetch roles", + "accessRoleErrorFetchDescription": "An error occurred while fetching the roles", + "idpErrorFetch": "Failed to fetch identity providers", + "idpErrorFetchDescription": "An error occurred while fetching identity providers", + "userErrorExists": "User Already Exists", + "userErrorExistsDescription": "This user is already a member of the organization.", + "inviteError": "Failed to invite user", + "inviteErrorDescription": "An error occurred while inviting the user", + "userInvited": "User invited", + "userInvitedDescription": "The user has been successfully invited.", + "userErrorCreate": "Failed to create user", + "userErrorCreateDescription": "An error occurred while creating the user", + "userCreated": "User created", + "userCreatedDescription": "The user has been successfully created.", + "userTypeInternal": "Internal User", + "userTypeInternalDescription": "Invite a user to join your organization directly.", + "userTypeExternal": "External User", + "userTypeExternalDescription": "Create a user with an external identity provider.", + "accessUserCreateDescription": "Follow the steps below to create a new user", + "userSeeAll": "See All Users", + "userTypeTitle": "User Type", + "userTypeDescription": "Determine how you want to create the user", + "userSettings": "User Information", + "userSettingsDescription": "Enter the details for the new user", + "inviteEmailSent": "Send invite email to user", + "inviteValid": "Valid For", + "selectDuration": "Select duration", + "accessRoleSelect": "Select role", + "inviteEmailSentDescription": "An email has been sent to the user with the access link below. They must access the link to accept the invitation.", + "inviteSentDescription": "The user has been invited. They must access the link below to accept the invitation.", + "inviteExpiresIn": "The invite will expire in {days, plural, one {# day} other {# days}}.", + "idpTitle": "Identity Provider", + "idpSelect": "Select the identity provider for the external user", + "idpNotConfigured": "No identity providers are configured. Please configure an identity provider before creating external users.", + "usernameUniq": "This must match the unique username that exists in the selected identity provider.", + "emailOptional": "Email (Optional)", + "nameOptional": "Name (Optional)", + "accessControls": "Access Controls", + "userDescription2": "Manage the settings on this user", + "accessRoleErrorAdd": "Failed to add user to role", + "accessRoleErrorAddDescription": "An error occurred while adding user to the role.", + "userSaved": "User saved", + "userSavedDescription": "The user has been updated.", + "accessControlsDescription": "Manage what this user can access and do in the organization", + "accessControlsSubmit": "Save Access Controls", + "roles": "Roles", + "accessUsersRoles": "Manage Users & Roles", + "accessUsersRolesDescription": "Invite users and add them to roles to manage access to your organization", + "key": "Key", + "createdAt": "Created At", + "proxyErrorInvalidHeader": "Invalid custom Host Header value. Use domain name format, or save empty to unset custom Host Header.", + "proxyErrorTls": "Invalid TLS Server Name. Use domain name format, or save empty to remove the TLS Server Name.", + "proxyEnableSSL": "Enable SSL (https)", + "targetErrorFetch": "Failed to fetch targets", + "targetErrorFetchDescription": "An error occurred while fetching targets", + "siteErrorFetch": "Failed to fetch resource", + "siteErrorFetchDescription": "An error occurred while fetching resource", + "targetErrorDuplicate": "Duplicate target", + "targetErrorDuplicateDescription": "A target with these settings already exists", + "targetWireGuardErrorInvalidIp": "Invalid target IP", + "targetWireGuardErrorInvalidIpDescription": "Target IP must be within the site subnet", + "targetsUpdated": "Targets updated", + "targetsUpdatedDescription": "Targets and settings updated successfully", + "targetsErrorUpdate": "Failed to update targets", + "targetsErrorUpdateDescription": "An error occurred while updating targets", + "targetTlsUpdate": "TLS settings updated", + "targetTlsUpdateDescription": "Your TLS settings have been updated successfully", + "targetErrorTlsUpdate": "Failed to update TLS settings", + "targetErrorTlsUpdateDescription": "An error occurred while updating TLS settings", + "proxyUpdated": "Proxy settings updated", + "proxyUpdatedDescription": "Your proxy settings have been updated successfully", + "proxyErrorUpdate": "Failed to update proxy settings", + "proxyErrorUpdateDescription": "An error occurred while updating proxy settings", + "targetAddr": "IP / Hostname", + "targetPort": "Port", + "targetProtocol": "Protocol", + "targetTlsSettings": "Secure Connection Configuration", + "targetTlsSettingsDescription": "Configure SSL/TLS settings for your resource", + "targetTlsSettingsAdvanced": "Advanced TLS Settings", + "targetTlsSni": "TLS Server Name (SNI)", + "targetTlsSniDescription": "The TLS Server Name to use for SNI. Leave empty to use the default.", + "targetTlsSubmit": "Save Settings", + "targets": "Targets Configuration", + "targetsDescription": "Set up targets to route traffic to your services", + "targetStickySessions": "Enable Sticky Sessions", + "targetStickySessionsDescription": "Keep connections on the same backend target for their entire session.", + "methodSelect": "Select method", + "targetSubmit": "Add Target", + "targetNoOne": "No targets. Add a target using the form.", + "targetNoOneDescription": "Adding more than one target above will enable load balancing.", + "targetsSubmit": "Save Targets", + "proxyAdditional": "Additional Proxy Settings", + "proxyAdditionalDescription": "Configure how your resource handles proxy settings", + "proxyCustomHeader": "Custom Host Header", + "proxyCustomHeaderDescription": "The host header to set when proxying requests. Leave empty to use the default.", + "proxyAdditionalSubmit": "Save Proxy Settings", + "subnetMaskErrorInvalid": "Invalid subnet mask. Must be between 0 and 32.", + "ipAddressErrorInvalidFormat": "Invalid IP address format", + "ipAddressErrorInvalidOctet": "Invalid IP address octet", + "path": "Path", + "ipAddressRange": "IP Range", + "rulesErrorFetch": "Failed to fetch rules", + "rulesErrorFetchDescription": "An error occurred while fetching rules", + "rulesErrorDuplicate": "Duplicate rule", + "rulesErrorDuplicateDescription": "A rule with these settings already exists", + "rulesErrorInvalidIpAddressRange": "Invalid CIDR", + "rulesErrorInvalidIpAddressRangeDescription": "Please enter a valid CIDR value", + "rulesErrorInvalidUrl": "Invalid URL path", + "rulesErrorInvalidUrlDescription": "Please enter a valid URL path value", + "rulesErrorInvalidIpAddress": "Invalid IP", + "rulesErrorInvalidIpAddressDescription": "Please enter a valid IP address", + "rulesErrorUpdate": "Failed to update rules", + "rulesErrorUpdateDescription": "An error occurred while updating rules", + "rulesUpdated": "Enable Rules", + "rulesUpdatedDescription": "Rule evaluation has been updated", + "rulesMatchIpAddressRangeDescription": "Enter an address in CIDR format (e.g., 103.21.244.0/22)", + "rulesMatchIpAddress": "Enter an IP address (e.g., 103.21.244.12)", + "rulesMatchUrl": "Enter a URL path or pattern (e.g., /api/v1/todos or /api/v1/*)", + "rulesErrorInvalidPriority": "Invalid Priority", + "rulesErrorInvalidPriorityDescription": "Please enter a valid priority", + "rulesErrorDuplicatePriority": "Duplicate Priorities", + "rulesErrorDuplicatePriorityDescription": "Please enter unique priorities", + "ruleUpdated": "Rules updated", + "ruleUpdatedDescription": "Rules updated successfully", + "ruleErrorUpdate": "Operation failed", + "ruleErrorUpdateDescription": "An error occurred during the save operation", + "rulesPriority": "Priority", + "rulesAction": "Action", + "rulesMatchType": "Match Type", + "value": "Value", + "rulesAbout": "About Rules", + "rulesAboutDescription": "Rules allow you to control access to your resource based on a set of criteria. You can create rules to allow or deny access based on IP address or URL path.", + "rulesActions": "Actions", + "rulesActionAlwaysAllow": "Always Allow: Bypass all authentication methods", + "rulesActionAlwaysDeny": "Always Deny: Block all requests; no authentication can be attempted", + "rulesMatchCriteria": "Matching Criteria", + "rulesMatchCriteriaIpAddress": "Match a specific IP address", + "rulesMatchCriteriaIpAddressRange": "Match a range of IP addresses in CIDR notation", + "rulesMatchCriteriaUrl": "Match a URL path or pattern", + "rulesEnable": "Enable Rules", + "rulesEnableDescription": "Enable or disable rule evaluation for this resource", + "rulesResource": "Resource Rules Configuration", + "rulesResourceDescription": "Configure rules to control access to your resource", + "ruleSubmit": "Add Rule", + "rulesNoOne": "No rules. Add a rule using the form.", + "rulesOrder": "Rules are evaluated by priority in ascending order.", + "rulesSubmit": "Save Rules", + "resourceErrorCreate": "Error creating resource", + "resourceErrorCreateDescription": "An error occurred when creating the resource", + "resourceErrorCreateMessage": "Error creating resource:", + "resourceErrorCreateMessageDescription": "An unexpected error occurred", + "sitesErrorFetch": "Error fetching sites", + "sitesErrorFetchDescription": "An error occurred when fetching the sites", + "domainsErrorFetch": "Error fetching domains", + "domainsErrorFetchDescription": "An error occurred when fetching the domains", + "none": "None", + "unknown": "Unknown", + "resources": "Resources", + "resourcesDescription": "Resources are proxies to applications running on your private network. Create a resource for any HTTP/HTTPS or raw TCP/UDP service on your private network. Each resource must be connected to a site to enable private, secure connectivity through an encrypted WireGuard tunnel.", + "resourcesWireGuardConnect": "Secure connectivity with WireGuard encryption", + "resourcesMultipleAuthenticationMethods": "Configure multiple authentication methods", + "resourcesUsersRolesAccess": "User and role-based access control", + "resourcesErrorUpdate": "Failed to toggle resource", + "resourcesErrorUpdateDescription": "An error occurred while updating the resource", + "access": "Access", + "shareLink": "{resource} Share Link", + "resourceSelect": "Select resource", + "shareLinks": "Share Links", + "share": "Shareable Links", + "shareDescription2": "Create shareable links to your resources. Links provide temporary or unlimited access to your resource. You can configure the expiration duration of the link when you create one.", + "shareEasyCreate": "Easy to create and share", + "shareConfigurableExpirationDuration": "Configurable expiration duration", + "shareSecureAndRevocable": "Secure and revocable", + "nameMin": "Name must be at least {len} characters.", + "nameMax": "Name must not be longer than {len} characters.", + "sitesConfirmCopy": "Please confirm that you have copied the config.", + "unknownCommand": "Unknown command", + "newtErrorFetchReleases": "Failed to fetch release info: {err}", + "newtErrorFetchLatest": "Error fetching latest release: {err}", + "newtEndpoint": "Newt Endpoint", + "newtId": "Newt ID", + "newtSecretKey": "Newt Secret Key", + "architecture": "Architecture", + "sites": "Sites", + "siteWgAnyClients": "Use any WireGuard client to connect. You will have to address your internal resources using the peer IP.", + "siteWgCompatibleAllClients": "Compatible with all WireGuard clients", + "siteWgManualConfigurationRequired": "Manual configuration required", + "userErrorNotAdminOrOwner": "User is not an admin or owner", + "pangolinSettings": "Settings - Pangolin", + "accessRoleYour": "Your role:", + "accessRoleSelect2": "Select a role", + "accessUserSelect": "Select a user", + "otpEmailEnter": "Enter an email", + "otpEmailEnterDescription": "Press enter to add an email after typing it in the input field.", + "otpEmailErrorInvalid": "Invalid email address. Wildcard (*) must be the entire local part.", + "otpEmailSmtpRequired": "SMTP Required", + "otpEmailSmtpRequiredDescription": "SMTP must be enabled on the server to use one-time password authentication.", + "otpEmailTitle": "One-time Passwords", + "otpEmailTitleDescription": "Require email-based authentication for resource access", + "otpEmailWhitelist": "Email Whitelist", + "otpEmailWhitelistList": "Whitelisted Emails", + "otpEmailWhitelistListDescription": "Only users with these email addresses will be able to access this resource. They will be prompted to enter a one-time password sent to their email. Wildcards (*@example.com) can be used to allow any email address from a domain.", + "otpEmailWhitelistSave": "Save Whitelist", + "passwordAdd": "Add Password", + "passwordRemove": "Remove Password", + "pincodeAdd": "Add PIN Code", + "pincodeRemove": "Remove PIN Code", + "resourceAuthMethods": "Authentication Methods", + "resourceAuthMethodsDescriptions": "Allow access to the resource via additional auth methods", + "resourceAuthSettingsSave": "Saved successfully", + "resourceAuthSettingsSaveDescription": "Authentication settings have been saved", + "resourceErrorAuthFetch": "Failed to fetch data", + "resourceErrorAuthFetchDescription": "An error occurred while fetching the data", + "resourceErrorPasswordRemove": "Error removing resource password", + "resourceErrorPasswordRemoveDescription": "An error occurred while removing the resource password", + "resourceErrorPasswordSetup": "Error setting resource password", + "resourceErrorPasswordSetupDescription": "An error occurred while setting the resource password", + "resourceErrorPincodeRemove": "Error removing resource pincode", + "resourceErrorPincodeRemoveDescription": "An error occurred while removing the resource pincode", + "resourceErrorPincodeSetup": "Error setting resource PIN code", + "resourceErrorPincodeSetupDescription": "An error occurred while setting the resource PIN code", + "resourceErrorUsersRolesSave": "Failed to set roles", + "resourceErrorUsersRolesSaveDescription": "An error occurred while setting the roles", + "resourceErrorWhitelistSave": "Failed to save whitelist", + "resourceErrorWhitelistSaveDescription": "An error occurred while saving the whitelist", + "resourcePasswordSubmit": "Enable Password Protection", + "resourcePasswordProtection": "Password Protection {status}", + "resourcePasswordRemove": "Resource password removed", + "resourcePasswordRemoveDescription": "The resource password has been removed successfully", + "resourcePasswordSetup": "Resource password set", + "resourcePasswordSetupDescription": "The resource password has been set successfully", + "resourcePasswordSetupTitle": "Set Password", + "resourcePasswordSetupTitleDescription": "Set a password to protect this resource", + "resourcePincode": "PIN Code", + "resourcePincodeSubmit": "Enable PIN Code Protection", + "resourcePincodeProtection": "PIN Code Protection {status}", + "resourcePincodeRemove": "Resource pincode removed", + "resourcePincodeRemoveDescription": "The resource password has been removed successfully", + "resourcePincodeSetup": "Resource PIN code set", + "resourcePincodeSetupDescription": "The resource pincode has been set successfully", + "resourcePincodeSetupTitle": "Set Pincode", + "resourcePincodeSetupTitleDescription": "Set a pincode to protect this resource", + "resourceRoleDescription": "Admins can always access this resource.", + "resourceUsersRoles": "Users & Roles", + "resourceUsersRolesDescription": "Configure which users and roles can visit this resource", + "resourceUsersRolesSubmit": "Save Users & Roles", + "resourceWhitelistSave": "Saved successfully", + "resourceWhitelistSaveDescription": "Whitelist settings have been saved", + "ssoUse": "Use Platform SSO", + "ssoUseDescription": "Existing users will only have to log in once for all resources that have this enabled.", + "proxyErrorInvalidPort": "Invalid port number", + "subdomainErrorInvalid": "Invalid subdomain", + "domainErrorFetch": "Error fetching domains", + "domainErrorFetchDescription": "An error occurred when fetching the domains", + "resourceErrorUpdate": "Failed to update resource", + "resourceErrorUpdateDescription": "An error occurred while updating the resource", + "resourceUpdated": "Resource updated", + "resourceUpdatedDescription": "The resource has been updated successfully", + "resourceErrorTransfer": "Failed to transfer resource", + "resourceErrorTransferDescription": "An error occurred while transferring the resource", + "resourceTransferred": "Resource transferred", + "resourceTransferredDescription": "The resource has been transferred successfully", + "resourceErrorToggle": "Failed to toggle resource", + "resourceErrorToggleDescription": "An error occurred while updating the resource", + "resourceVisibilityTitle": "Visibility", + "resourceVisibilityTitleDescription": "Completely enable or disable resource visibility", + "resourceGeneral": "General Settings", + "resourceGeneralDescription": "Configure the general settings for this resource", + "resourceEnable": "Enable Resource", + "resourceTransfer": "Transfer Resource", + "resourceTransferDescription": "Transfer this resource to a different site", + "resourceTransferSubmit": "Transfer Resource", + "siteDestination": "Destination Site", + "searchSites": "Search sites", + "accessRoleCreate": "Create Role", + "accessRoleCreateDescription": "Create a new role to group users and manage their permissions.", + "accessRoleCreateSubmit": "Create Role", + "accessRoleCreated": "Role created", + "accessRoleCreatedDescription": "The role has been successfully created.", + "accessRoleErrorCreate": "Failed to create role", + "accessRoleErrorCreateDescription": "An error occurred while creating the role.", + "accessRoleErrorNewRequired": "New role is required", + "accessRoleErrorRemove": "Failed to remove role", + "accessRoleErrorRemoveDescription": "An error occurred while removing the role.", + "accessRoleName": "Role Name", + "accessRoleQuestionRemove": "You're about to delete the {name} role. You cannot undo this action.", + "accessRoleRemove": "Remove Role", + "accessRoleRemoveDescription": "Remove a role from the organization", + "accessRoleRemoveSubmit": "Remove Role", + "accessRoleRemoved": "Role removed", + "accessRoleRemovedDescription": "The role has been successfully removed.", + "accessRoleRequiredRemove": "Before deleting this role, please select a new role to transfer existing members to.", + "manage": "Manage", + "sitesNotFound": "No sites found.", + "pangolinServerAdmin": "Server Admin - Pangolin", + "licenseTierProfessional": "Professional License", + "licenseTierEnterprise": "Enterprise License", + "licenseTierCommercial": "Commercial License", + "licensed": "Licensed", + "yes": "Yes", + "no": "No", + "sitesAdditional": "Additional Sites", + "licenseKeys": "License Keys", + "sitestCountDecrease": "Decrease site count", + "sitestCountIncrease": "Increase site count", + "idpManage": "Manage Identity Providers", + "idpManageDescription": "View and manage identity providers in the system", + "idpDeletedDescription": "Identity provider deleted successfully", + "idpOidc": "OAuth2/OIDC", + "idpQuestionRemove": "Are you sure you want to permanently delete the identity provider {name}?", + "idpMessageRemove": "This will remove the identity provider and all associated configurations. Users who authenticate through this provider will no longer be able to log in.", + "idpMessageConfirm": "To confirm, please type the name of the identity provider below.", + "idpConfirmDelete": "Confirm Delete Identity Provider", + "idpDelete": "Delete Identity Provider", + "idp": "Identity Providers", + "idpSearch": "Search identity providers...", + "idpAdd": "Add Identity Provider", + "idpClientIdRequired": "Client ID is required.", + "idpClientSecretRequired": "Client Secret is required.", + "idpErrorAuthUrlInvalid": "Auth URL must be a valid URL.", + "idpErrorTokenUrlInvalid": "Token URL must be a valid URL.", + "idpPathRequired": "Identifier Path is required.", + "idpScopeRequired": "Scopes are required.", + "idpOidcDescription": "Configure an OpenID Connect identity provider", + "idpCreatedDescription": "Identity provider created successfully", + "idpCreate": "Create Identity Provider", + "idpCreateDescription": "Configure a new identity provider for user authentication", + "idpSeeAll": "See All Identity Providers", + "idpSettingsDescription": "Configure the basic information for your identity provider", + "idpDisplayName": "A display name for this identity provider", + "idpAutoProvisionUsers": "Auto Provision Users", + "idpAutoProvisionUsersDescription": "When enabled, users will be automatically created in the system upon first login with the ability to map users to roles and organizations.", + "licenseBadge": "Professional", + "idpType": "Provider Type", + "idpTypeDescription": "Select the type of identity provider you want to configure", + "idpOidcConfigure": "OAuth2/OIDC Configuration", + "idpOidcConfigureDescription": "Configure the OAuth2/OIDC provider endpoints and credentials", + "idpClientId": "Client ID", + "idpClientIdDescription": "The OAuth2 client ID from your identity provider", + "idpClientSecret": "Client Secret", + "idpClientSecretDescription": "The OAuth2 client secret from your identity provider", + "idpAuthUrl": "Authorization URL", + "idpAuthUrlDescription": "The OAuth2 authorization endpoint URL", + "idpTokenUrl": "Token URL", + "idpTokenUrlDescription": "The OAuth2 token endpoint URL", + "idpOidcConfigureAlert": "Important Information", + "idpOidcConfigureAlertDescription": "After creating the identity provider, you will need to configure the callback URL in your identity provider's settings. The callback URL will be provided after successful creation.", + "idpToken": "Token Configuration", + "idpTokenDescription": "Configure how to extract user information from the ID token", + "idpJmespathAbout": "About JMESPath", + "idpJmespathAboutDescription": "The paths below use JMESPath syntax to extract values from the ID token.", + "idpJmespathAboutDescriptionLink": "Learn more about JMESPath", + "idpJmespathLabel": "Identifier Path", + "idpJmespathLabelDescription": "The path to the user identifier in the ID token", + "idpJmespathEmailPathOptional": "Email Path (Optional)", + "idpJmespathEmailPathOptionalDescription": "The path to the user's email in the ID token", + "idpJmespathNamePathOptional": "Name Path (Optional)", + "idpJmespathNamePathOptionalDescription": "The path to the user's name in the ID token", + "idpOidcConfigureScopes": "Scopes", + "idpOidcConfigureScopesDescription": "Space-separated list of OAuth2 scopes to request", + "idpSubmit": "Create Identity Provider", + "orgPolicies": "Organization Policies", + "idpSettings": "{idpName} Settings", + "idpCreateSettingsDescription": "Configure the settings for your identity provider", + "roleMapping": "Role Mapping", + "orgMapping": "Organization Mapping", + "orgPoliciesSearch": "Search organization policies...", + "orgPoliciesAdd": "Add Organization Policy", + "orgRequired": "Organization is required", + "error": "Error", + "success": "Success", + "orgPolicyAddedDescription": "Policy added successfully", + "orgPolicyUpdatedDescription": "Policy updated successfully", + "orgPolicyDeletedDescription": "Policy deleted successfully", + "defaultMappingsUpdatedDescription": "Default mappings updated successfully", + "orgPoliciesAbout": "About Organization Policies", + "orgPoliciesAboutDescription": "Organization policies are used to control access to organizations based on the user's ID token. You can specify JMESPath expressions to extract role and organization information from the ID token.", + "orgPoliciesAboutDescriptionLink": "See documentation, for more information.", + "defaultMappingsOptional": "Default Mappings (Optional)", + "defaultMappingsOptionalDescription": "The default mappings are used when when there is not an organization policy defined for an organization. You can specify the default role and organization mappings to fall back to here.", + "defaultMappingsRole": "Default Role Mapping", + "defaultMappingsRoleDescription": "The result of this expression must return the role name as defined in the organization as a string.", + "defaultMappingsOrg": "Default Organization Mapping", + "defaultMappingsOrgDescription": "This expression must return the org ID or true for the user to be allowed to access the organization.", + "defaultMappingsSubmit": "Save Default Mappings", + "orgPoliciesEdit": "Edit Organization Policy", + "org": "Organization", + "orgSelect": "Select organization", + "orgSearch": "Search org", + "orgNotFound": "No org found.", + "roleMappingPathOptional": "Role Mapping Path (Optional)", + "orgMappingPathOptional": "Organization Mapping Path (Optional)", + "orgPolicyUpdate": "Update Policy", + "orgPolicyAdd": "Add Policy", + "orgPolicyConfig": "Configure access for an organization", + "idpUpdatedDescription": "Identity provider updated successfully", + "redirectUrl": "Redirect URL", + "redirectUrlAbout": "About Redirect URL", + "redirectUrlAboutDescription": "This is the URL to which users will be redirected after authentication. You need to configure this URL in your identity provider settings.", + "pangolinAuth": "Auth - Pangolin", + "verificationCodeLengthRequirements": "Your verification code must be 8 characters.", + "errorOccurred": "An error occurred", + "emailErrorVerify": "Failed to verify email:", + "emailVerified": "Email successfully verified! Redirecting you...", + "verificationCodeErrorResend": "Failed to resend verification code:", + "verificationCodeResend": "Verification code resent", + "verificationCodeResendDescription": "We've resent a verification code to your email address. Please check your inbox.", + "emailVerify": "Verify Email", + "emailVerifyDescription": "Enter the verification code sent to your email address.", + "verificationCode": "Verification Code", + "verificationCodeEmailSent": "We sent a verification code to your email address.", + "submit": "Submit", + "emailVerifyResendProgress": "Resending...", + "emailVerifyResend": "Didn't receive a code? Click here to resend", + "passwordNotMatch": "Passwords do not match", + "signupError": "An error occurred while signing up", + "pangolinLogoAlt": "Pangolin Logo", + "inviteAlready": "Looks like you've been invited!", + "inviteAlreadyDescription": "To accept the invite, you must log in or create an account.", + "signupQuestion": "Already have an account?", + "login": "Log in", + "resourceNotFound": "Resource Not Found", + "resourceNotFoundDescription": "The resource you're trying to access does not exist.", + "pincodeRequirementsLength": "PIN must be exactly 6 digits", + "pincodeRequirementsChars": "PIN must only contain numbers", + "passwordRequirementsLength": "Password must be at least 1 character long", + "otpEmailRequirementsLength": "OTP must be at least 1 character long", + "otpEmailSent": "OTP Sent", + "otpEmailSentDescription": "An OTP has been sent to your email", + "otpEmailErrorAuthenticate": "Failed to authenticate with email", + "pincodeErrorAuthenticate": "Failed to authenticate with pincode", + "passwordErrorAuthenticate": "Failed to authenticate with password", + "poweredBy": "Powered by", + "authenticationRequired": "Authentication Required", + "authenticationMethodChoose": "Choose your preferred method to access {name}", + "authenticationRequest": "You must authenticate to access {name}", + "user": "User", + "pincodeInput": "6-digit PIN Code", + "pincodeSubmit": "Log in with PIN", + "passwordSubmit": "Log In with Password", + "otpEmailDescription": "A one-time code will be sent to this email.", + "otpEmailSend": "Send One-time Code", + "otpEmail": "One-Time Password (OTP)", + "otpEmailSubmit": "Submit OTP", + "backToEmail": "Back to Email", + "noSupportKey": "Server is running without a supporter key. Consider supporting the project!", + "accessDenied": "Access Denied", + "accessDeniedDescription": "You're not allowed to access this resource. If this is a mistake, please contact the administrator.", + "accessTokenError": "Error checking access token", + "accessGranted": "Access Granted", + "accessUrlInvalid": "Access URL Invalid", + "accessGrantedDescription": "You have been granted access to this resource. Redirecting you...", + "accessUrlInvalidDescription": "This shared access URL is invalid. Please contact the resource owner for a new URL.", + "tokenInvalid": "Invalid token", + "pincodeInvalid": "Invalid code", + "passwordErrorRequestReset": "Failed to request reset:", + "passwordErrorReset": "Failed to reset password:", + "passwordResetSuccess": "Password reset successfully! Back to log in...", + "passwordReset": "Reset Password", + "passwordResetDescription": "Follow the steps to reset your password", + "passwordResetSent": "We'll send a password reset code to this email address.", + "passwordResetCode": "Reset Code", + "passwordResetCodeDescription": "Check your email for the reset code.", + "passwordNew": "New Password", + "passwordNewConfirm": "Confirm New Password", + "pincodeAuth": "Authenticator Code", + "pincodeSubmit2": "Submit Code", + "passwordResetSubmit": "Request Reset", + "passwordBack": "Back to Password", + "loginBack": "Go back to log in", + "signup": "Sign up", + "loginStart": "Log in to get started", + "idpOidcTokenValidating": "Validating OIDC token", + "idpOidcTokenResponse": "Validate OIDC token response", + "idpErrorOidcTokenValidating": "Error validating OIDC token", + "idpConnectingTo": "Connecting to {name}", + "idpConnectingToDescription": "Validating your identity", + "idpConnectingToProcess": "Connecting...", + "idpConnectingToFinished": "Connected", + "idpErrorConnectingTo": "There was a problem connecting to {name}. Please contact your administrator.", + "idpErrorNotFound": "IdP not found", + "inviteInvalid": "Invalid Invite", + "inviteInvalidDescription": "The invite link is invalid.", + "inviteErrorWrongUser": "Invite is not for this user", + "inviteErrorUserNotExists": "User does not exist. Please create an account first.", + "inviteErrorLoginRequired": "You must be logged in to accept an invite", + "inviteErrorExpired": "The invite may have expired", + "inviteErrorRevoked": "The invite might have been revoked", + "inviteErrorTypo": "There could be a typo in the invite link", + "pangolinSetup": "Setup - Pangolin", + "orgNameRequired": "Organization name is required", + "orgIdRequired": "Organization ID is required", + "orgErrorCreate": "An error occurred while creating org", + "pageNotFound": "Page Not Found", + "pageNotFoundDescription": "Oops! The page you're looking for doesn't exist.", + "overview": "Overview", + "home": "Home", + "accessControl": "Access Control", + "settings": "Settings", + "usersAll": "All Users", + "license": "License", + "pangolinDashboard": "Dashboard - Pangolin", + "noResults": "No results found.", + "terabytes": "{count} TB", + "gigabytes": "{count} GB", + "megabytes": "{count} MB", + "tagsEntered": "Entered Tags", + "tagsEnteredDescription": "These are the tags you`ve entered.", + "tagsWarnCannotBeLessThanZero": "maxTags and minTags cannot be less than 0", + "tagsWarnNotAllowedAutocompleteOptions": "Tag not allowed as per autocomplete options", + "tagsWarnInvalid": "Invalid tag as per validateTag", + "tagWarnTooShort": "Tag {tagText} is too short", + "tagWarnTooLong": "Tag {tagText} is too long", + "tagsWarnReachedMaxNumber": "Reached the maximum number of tags allowed", + "tagWarnDuplicate": "Duplicate tag {tagText} not added", + "supportKeyInvalid": "Invalid Key", + "supportKeyInvalidDescription": "Your supporter key is invalid.", + "supportKeyValid": "Valid Key", + "supportKeyValidDescription": "Your supporter key has been validated. Thank you for your support!", + "supportKeyErrorValidationDescription": "Failed to validate supporter key.", + "supportKey": "Support Development and Adopt a Pangolin!", + "supportKeyDescription": "Purchase a supporter key to help us continue developing Pangolin for the community. Your contribution allows us to commit more time to maintain and add new features to the application for everyone. We will never use this to paywall features. This is separate from any Commercial Edition.", + "supportKeyPet": "You will also get to adopt and meet your very own pet Pangolin!", + "supportKeyPurchase": "Payments are processed via GitHub. Afterward, you can retrieve your key on", + "supportKeyPurchaseLink": "our website", + "supportKeyPurchase2": "and redeem it here.", + "supportKeyLearnMore": "Learn more.", + "supportKeyOptions": "Please select the option that best suits you.", + "supportKetOptionFull": "Full Supporter", + "forWholeServer": "For the whole server", + "lifetimePurchase": "Lifetime purchase", + "supporterStatus": "Supporter status", + "buy": "Buy", + "supportKeyOptionLimited": "Limited Supporter", + "forFiveUsers": "For 5 or less users", + "supportKeyRedeem": "Redeem Supporter Key", + "supportKeyHideSevenDays": "Hide for 7 days", + "supportKeyEnter": "Enter Supporter Key", + "supportKeyEnterDescription": "Meet your very own pet Pangolin!", + "githubUsername": "GitHub Username", + "supportKeyInput": "Supporter Key", + "supportKeyBuy": "Buy Supporter Key", + "logoutError": "Error logging out", + "signingAs": "Signed in as", + "serverAdmin": "Server Admin", + "otpEnable": "Enable Two-factor", + "otpDisable": "Disable Two-factor", + "logout": "Log Out", + "licenseTierProfessionalRequired": "Professional Edition Required", + "licenseTierProfessionalRequiredDescription": "This feature is only available in the Professional Edition.", + "actionGetOrg": "Get Organization", + "actionUpdateOrg": "Update Organization", + "actionUpdateUser": "Update User", + "actionGetUser": "Get User", + "actionGetOrgUser": "Get Organization User", + "actionListOrgDomains": "List Organization Domains", + "actionCreateSite": "Create Site", + "actionDeleteSite": "Delete Site", + "actionGetSite": "Get Site", + "actionListSites": "List Sites", + "actionUpdateSite": "Update Site", + "actionListSiteRoles": "List Allowed Site Roles", + "actionCreateResource": "Create Resource", + "actionDeleteResource": "Delete Resource", + "actionGetResource": "Get Resource", + "actionListResource": "List Resources", + "actionUpdateResource": "Update Resource", + "actionListResourceUsers": "List Resource Users", + "actionSetResourceUsers": "Set Resource Users", + "actionSetAllowedResourceRoles": "Set Allowed Resource Roles", + "actionListAllowedResourceRoles": "List Allowed Resource Roles", + "actionSetResourcePassword": "Set Resource Password", + "actionSetResourcePincode": "Set Resource Pincode", + "actionSetResourceEmailWhitelist": "Set Resource Email Whitelist", + "actionGetResourceEmailWhitelist": "Get Resource Email Whitelist", + "actionCreateTarget": "Create Target", + "actionDeleteTarget": "Delete Target", + "actionGetTarget": "Get Target", + "actionListTargets": "List Targets", + "actionUpdateTarget": "Update Target", + "actionCreateRole": "Create Role", + "actionDeleteRole": "Delete Role", + "actionGetRole": "Get Role", + "actionListRole": "List Roles", + "actionUpdateRole": "Update Role", + "actionListAllowedRoleResources": "List Allowed Role Resources", + "actionInviteUser": "Invite User", + "actionRemoveUser": "Remove User", + "actionListUsers": "List Users", + "actionAddUserRole": "Add User Role", + "actionGenerateAccessToken": "Generate Access Token", + "actionDeleteAccessToken": "Delete Access Token", + "actionListAccessTokens": "List Access Tokens", + "actionCreateResourceRule": "Create Resource Rule", + "actionDeleteResourceRule": "Delete Resource Rule", + "actionListResourceRules": "List Resource Rules", + "actionUpdateResourceRule": "Update Resource Rule", + "actionListOrgs": "List Organizations", + "actionCheckOrgId": "Check ID", + "actionCreateOrg": "Create Organization", + "actionDeleteOrg": "Delete Organization", + "actionListApiKeys": "List API Keys", + "actionListApiKeyActions": "List API Key Actions", + "actionSetApiKeyActions": "Set API Key Allowed Actions", + "actionCreateApiKey": "Create API Key", + "actionDeleteApiKey": "Delete API Key", + "actionCreateIdp": "Create IDP", + "actionUpdateIdp": "Update IDP", + "actionDeleteIdp": "Delete IDP", + "actionListIdps": "List IDP", + "actionGetIdp": "Get IDP", + "actionCreateIdpOrg": "Create IDP Org Policy", + "actionDeleteIdpOrg": "Delete IDP Org Policy", + "actionListIdpOrgs": "List IDP Orgs", + "actionUpdateIdpOrg": "Update IDP Org", + "noneSelected": "None selected", + "orgNotFound2": "No organizations found.", + "searchProgress": "Search...", + "create": "Create", + "orgs": "Organizations", + "loginError": "An error occurred while logging in", + "passwordForgot": "Forgot your password?", + "otpAuth": "Two-Factor Authentication", + "otpAuthDescription": "Enter the code from your authenticator app or one of your single-use backup codes.", + "otpAuthSubmit": "Submit Code", + "idpContinue": "Or continue with", + "otpAuthBack": "Back to Log In", + "navbar": "Navigation Menu", + "navbarDescription": "Main navigation menu for the application", + "navbarDocsLink": "Documentation", + "commercialEdition": "Commercial Edition", + "otpErrorEnable": "Unable to enable 2FA", + "otpErrorEnableDescription": "An error occurred while enabling 2FA", + "otpSetupCheckCode": "Please enter a 6-digit code", + "otpSetupCheckCodeRetry": "Invalid code. Please try again.", + "otpSetup": "Enable Two-factor Authentication", + "otpSetupDescription": "Secure your account with an extra layer of protection", + "otpSetupScanQr": "Scan this QR code with your authenticator app or enter the secret key manually:", + "otpSetupSecretCode": "Authenticator Code", + "otpSetupSuccess": "Two-Factor Authentication Enabled", + "otpSetupSuccessStoreBackupCodes": "Your account is now more secure. Don't forget to save your backup codes.", + "otpErrorDisable": "Unable to disable 2FA", + "otpErrorDisableDescription": "An error occurred while disabling 2FA", + "otpRemove": "Disable Two-factor Authentication", + "otpRemoveDescription": "Disable two-factor authentication for your account", + "otpRemoveSuccess": "Two-Factor Authentication Disabled", + "otpRemoveSuccessMessage": "Two-factor authentication has been disabled for your account. You can enable it again at any time.", + "otpRemoveSubmit": "Disable 2FA", + "paginator": "Page {current} of {last}", + "paginatorToFirst": "Go to first page", + "paginatorToPrevious": "Go to previous page", + "paginatorToNext": "Go to next page", + "paginatorToLast": "Go to last page", + "copyText": "Copy text", + "copyTextFailed": "Failed to copy text: ", + "copyTextClipboard": "Copy to clipboard", + "inviteErrorInvalidConfirmation": "Invalid confirmation", + "passwordRequired": "Password is required", + "allowAll": "Allow All", + "permissionsAllowAll": "Allow All Permissions", + "githubUsernameRequired": "GitHub username is required", + "supportKeyRequired": "Supporter key is required", + "passwordRequirementsChars": "Password must be at least 8 characters", + "language": "Language", + "verificationCodeRequired": "Code is required", + "userErrorNoUpdate": "No user to update", + "siteErrorNoUpdate": "No site to update", + "resourceErrorNoUpdate": "No resource to update", + "authErrorNoUpdate": "No auth info to update", + "orgErrorNoUpdate": "No org to update", + "orgErrorNoProvided": "No org provided", + "apiKeysErrorNoUpdate": "No API key to update", + "sidebarOverview": "Overview", + "sidebarHome": "Home", + "sidebarSites": "Sites", + "sidebarResources": "Resources", + "sidebarAccessControl": "Access Control", + "sidebarUsers": "Users", + "sidebarInvitations": "Invitations", + "sidebarRoles": "Roles", + "sidebarShareableLinks": "Shareable Links", + "sidebarApiKeys": "API Keys", + "sidebarSettings": "Settings", + "sidebarAllUsers": "All Users", + "sidebarIdentityProviders": "Identity Providers", + "sidebarLicense": "License", + "sidebarClients": "Clients", + "sidebarDomains": "Domains", + "enableDockerSocket": "Enable Docker Socket", + "enableDockerSocketDescription": "Enable Docker Socket discovery for populating container information. Socket path must be provided to Newt.", + "enableDockerSocketLink": "Learn More", + "viewDockerContainers": "View Docker Containers", + "containersIn": "Containers in {siteName}", + "selectContainerDescription": "Select any container to use as a hostname for this target. Click a port to use a port.", + "containerName": "Name", + "containerImage": "Image", + "containerState": "State", + "containerNetworks": "Networks", + "containerHostnameIp": "Hostname/IP", + "containerLabels": "Labels", + "containerLabelsCount": "{count, plural, one {# label} other {# labels}}", + "containerLabelsTitle": "Container Labels", + "containerLabelEmpty": "", + "containerPorts": "Ports", + "containerPortsMore": "+{count} more", + "containerActions": "Actions", + "select": "Select", + "noContainersMatchingFilters": "No containers found matching the current filters.", + "showContainersWithoutPorts": "Show containers without ports", + "showStoppedContainers": "Show stopped containers", + "noContainersFound": "No containers found. Make sure Docker containers are running.", + "searchContainersPlaceholder": "Search across {count} containers...", + "searchResultsCount": "{count, plural, one {# result} other {# results}}", + "filters": "Filters", + "filterOptions": "Filter Options", + "filterPorts": "Ports", + "filterStopped": "Stopped", + "clearAllFilters": "Clear all filters", + "columns": "Columns", + "toggleColumns": "Toggle Columns", + "refreshContainersList": "Refresh containers list", + "searching": "Searching...", + "noContainersFoundMatching": "No containers found matching \"{filter}\".", + "light": "light", + "dark": "dark", + "system": "system", + "theme": "Theme", + "subnetRequired": "Subnet is required", + "initialSetupTitle": "Initial Server Setup", + "initialSetupDescription": "Create the intial server admin account. Only one server admin can exist. You can always change these credentials later.", + "createAdminAccount": "Create Admin Account", + "setupErrorCreateAdmin": "An error occurred while creating the server admin account.", + "certificateStatus": "Certificate Status", + "loading": "Loading", + "restart": "Restart", + "domains": "Domains", + "domainsDescription": "Manage domains for your organization", + "domainsSearch": "Search domains...", + "domainAdd": "Add Domain", + "domainAddDescription": "Register a new domain with your organization", + "domainCreate": "Create Domain", + "domainCreatedDescription": "Domain created successfully", + "domainDeletedDescription": "Domain deleted successfully", + "domainQuestionRemove": "Are you sure you want to remove the domain {domain} from your account?", + "domainMessageRemove": "Once removed, the domain will no longer be associated with your account.", + "domainMessageConfirm": "To confirm, please type the domain name below.", + "domainConfirmDelete": "Confirm Delete Domain", + "domainDelete": "Delete Domain", + "domain": "Domain", + "selectDomainTypeNsName": "Domain Delegation (NS)", + "selectDomainTypeNsDescription": "This domain and all its subdomains. Use this when you want to control an entire domain zone.", + "selectDomainTypeCnameName": "Single Domain (CNAME)", + "selectDomainTypeCnameDescription": "Just this specific domain. Use this for individual subdomains or specific domain entries.", + "selectDomainTypeWildcardName": "Wildcard Domain", + "selectDomainTypeWildcardDescription": "This domain and its first level of subdomains.", + "domainDelegation": "Single Domain", + "selectType": "Select a type", + "actions": "Actions", + "refresh": "Refresh", + "refreshError": "Failed to refresh data", + "verified": "Verified", + "pending": "Pending", + "sidebarBilling": "Billing", + "billing": "Billing", + "orgBillingDescription": "Manage your billing information and subscriptions", + "github": "GitHub", + "pangolinHosted": "Pangolin Hosted", + "fossorial": "Fossorial", + "completeAccountSetup": "Complete Account Setup", + "completeAccountSetupDescription": "Set your password to get started", + "accountSetupSent": "We'll send an account setup code to this email address.", + "accountSetupCode": "Setup Code", + "accountSetupCodeDescription": "Check your email for the setup code.", + "passwordCreate": "Create Password", + "passwordCreateConfirm": "Confirm Password", + "accountSetupSubmit": "Send Setup Code", + "completeSetup": "Complete Setup", + "accountSetupSuccess": "Account setup completed! Welcome to Pangolin!", + "documentation": "Documentation", + "saveAllSettings": "Save All Settings", + "settingsUpdated": "Settings updated", + "settingsUpdatedDescription": "All settings have been updated successfully", + "settingsErrorUpdate": "Failed to update settings", + "settingsErrorUpdateDescription": "An error occurred while updating settings", + "sidebarCollapse": "Collapse", + "sidebarExpand": "Expand", + "newtUpdateAvailable": "Update Available", + "newtUpdateAvailableInfo": "A new version of Newt is available. Please update to the latest version for the best experience.", + "domainPickerEnterDomain": "Enter your domain", + "domainPickerPlaceholder": "myapp.example.com, api.v1.mydomain.com, or just myapp", + "domainPickerDescription": "Enter a full domain, subdomain, or just a name to see available options", + "domainPickerTabAll": "All", + "domainPickerTabOrganization": "Organization", + "domainPickerTabProvided": "Provided", + "domainPickerSortAsc": "A-Z", + "domainPickerSortDesc": "Z-A", + "domainPickerCheckingAvailability": "Checking availability...", + "domainPickerNoMatchingDomains": "No matching domains found for \"{userInput}\". Try a different domain or check your organization's domain settings.", + "domainPickerOrganizationDomains": "Organization Domains", + "domainPickerProvidedDomains": "Provided Domains", + "domainPickerSubdomain": "Subdomain: {subdomain}", + "domainPickerNamespace": "Namespace: {namespace}", + "domainPickerShowMore": "Show More", + "domainNotFound": "Domain Not Found", + "domainNotFoundDescription": "This resource is disabled because the domain no longer exists our system. Please set a new domain for this resource.", + "failed": "Failed", + "createNewOrgDescription": "Create a new organization", + "organization": "Organization", + "port": "Port", + "securityKeyManage": "Manage Security Keys", + "securityKeyDescription": "Add or remove security keys for passwordless authentication", + "securityKeyRegister": "Register New Security Key", + "securityKeyList": "Your Security Keys", + "securityKeyNone": "No security keys registered yet", + "securityKeyNameRequired": "Name is required", + "securityKeyRemove": "Remove", + "securityKeyLastUsed": "Last used: {date}", + "securityKeyNameLabel": "Security Key Name", + "securityKeyRegisterSuccess": "Security key registered successfully", + "securityKeyRegisterError": "Failed to register security key", + "securityKeyRemoveSuccess": "Security key removed successfully", + "securityKeyRemoveError": "Failed to remove security key", + "securityKeyLoadError": "Failed to load security keys", + "securityKeyLogin": "Sign in with security key", + "securityKeyAuthError": "Failed to authenticate with security key", + "securityKeyRecommendation": "Register a backup security key on another device to ensure you always have access to your account.", + "registering": "Registering...", + "securityKeyPrompt": "Please verify your identity using your security key. Make sure your security key is connected and ready.", + "securityKeyBrowserNotSupported": "Your browser doesn't support security keys. Please use a modern browser like Chrome, Firefox, or Safari.", + "securityKeyPermissionDenied": "Please allow access to your security key to continue signing in.", + "securityKeyRemovedTooQuickly": "Please keep your security key connected until the sign-in process completes.", + "securityKeyNotSupported": "Your security key may not be compatible. Please try a different security key.", + "securityKeyUnknownError": "There was a problem using your security key. Please try again.", + "twoFactorRequired": "Two-factor authentication is required to register a security key.", + "twoFactor": "Two-Factor Authentication", + "adminEnabled2FaOnYourAccount": "Your administrator has enabled two-factor authentication for {email}. Please complete the setup process to continue.", + "continueToApplication": "Continue to Application", + "securityKeyAdd": "Add Security Key", + "securityKeyRegisterTitle": "Register New Security Key", + "securityKeyRegisterDescription": "Connect your security key and enter a name to identify it", + "securityKeyTwoFactorRequired": "Two-Factor Authentication Required", + "securityKeyTwoFactorDescription": "Please enter your two-factor authentication code to register the security key", + "securityKeyTwoFactorRemoveDescription": "Please enter your two-factor authentication code to remove the security key", + "securityKeyTwoFactorCode": "Two-Factor Code", + "securityKeyRemoveTitle": "Remove Security Key", + "securityKeyRemoveDescription": "Enter your password to remove the security key \"{name}\"", + "securityKeyNoKeysRegistered": "No security keys registered", + "securityKeyNoKeysDescription": "Add a security key to enhance your account security", + "createDomainRequired": "Domain is required", + "createDomainAddDnsRecords": "Add DNS Records", + "createDomainAddDnsRecordsDescription": "Add the following DNS records to your domain provider to complete the setup.", + "createDomainNsRecords": "NS Records", + "createDomainRecord": "Record", + "createDomainType": "Type:", + "createDomainName": "Name:", + "createDomainValue": "Value:", + "createDomainCnameRecords": "CNAME Records", + "createDomainRecordNumber": "Record {number}", + "createDomainTxtRecords": "TXT Records", + "createDomainSaveTheseRecords": "Save These Records", + "createDomainSaveTheseRecordsDescription": "Make sure to save these DNS records as you will not see them again.", + "createDomainDnsPropagation": "DNS Propagation", + "createDomainDnsPropagationDescription": "DNS changes may take some time to propagate across the internet. This can take anywhere from a few minutes to 48 hours, depending on your DNS provider and TTL settings.", + "resourcePortRequired": "Port number is required for non-HTTP resources", + "resourcePortNotAllowed": "Port number should not be set for HTTP resources" +} From e99eb04e2ff8d94544ab4ec3e7b2e528b9baad0c Mon Sep 17 00:00:00 2001 From: Owen Schwartz Date: Wed, 16 Jul 2025 22:00:38 -0700 Subject: [PATCH 12/12] New translations en-us.json (Korean) --- messages/ko-KR.json | 262 +++++++++++++++++++++++++++++++++----------- 1 file changed, 201 insertions(+), 61 deletions(-) diff --git a/messages/ko-KR.json b/messages/ko-KR.json index 62b1dfc1..40f99f19 100644 --- a/messages/ko-KR.json +++ b/messages/ko-KR.json @@ -1,19 +1,34 @@ { "setupCreate": "조직, 사이트 및 리소스를 생성하십시오.", + "setupNewOrg": "새 조직", + "setupCreateOrg": "조직 생성", + "setupCreateResources": "리소스 생성", + "setupOrgName": "조직 이름", "orgDisplayName": "이것은 귀하의 조직의 표시 이름입니다.", - "setupIdentifierMessage": "이것은 귀하의 조직에 대한 고유 식별자입니다. 표시 이름과는 별개입니다.", - "componentsErrorNoMemberCreate": "현재 어떤 조직의 구성원도 아닙니다. 시작하려면 조직을 생성하세요.", - "componentsInvalidKey": "유효하지 않거나 만료된 라이센스 키가 감지되었습니다. 모든 기능을 계속 사용하려면 라이센스 조건을 따르십시오.", "orgId": "조직 ID", - "siteQuestionRemove": "조직에서 사이트 {selectedSite}를 제거하시겠습니까?", - "siteCreateDescription2": "아래 단계를 따라 새 사이트를 생성하고 연결하십시오", + "setupIdentifierMessage": "이것은 귀하의 조직에 대한 고유 식별자입니다. 표시 이름과는 별개입니다.", + "setupErrorIdentifier": "조직 ID가 이미 사용 중입니다. 다른 것을 선택해 주세요.", + "componentsErrorNoMemberCreate": "현재 어떤 조직의 구성원도 아닙니다. 시작하려면 조직을 생성하세요.", + "componentsErrorNoMember": "현재 어떤 조직의 구성원도 아닙니다.", + "welcome": "판골린에 오신 것을 환영합니다.", + "welcomeTo": "환영합니다", + "componentsCreateOrg": "조직 생성", + "componentsMember": "당신은 {count, plural, =0 {조직이 없습니다} one {하나의 조직} other {# 개의 조직}}의 구성원입니다.", + "componentsInvalidKey": "유효하지 않거나 만료된 라이센스 키가 감지되었습니다. 모든 기능을 계속 사용하려면 라이센스 조건을 따르십시오.", + "dismiss": "해제", "componentsLicenseViolation": "라이센스 위반: 이 서버는 {usedSites} 사이트를 사용하고 있으며, 이는 {maxSites} 사이트의 라이센스 한도를 초과합니다. 모든 기능을 계속 사용하려면 라이센스 조건을 따르십시오.", - "years": "연도", - "hours": "시간", - "days": "일", - "weeks": "주", - "months": "개월", + "componentsSupporterMessage": "{tier}로 판골린을 지원해 주셔서 감사합니다!", + "inviteErrorNotValid": "죄송하지만, 접근하려는 초대가 수락되지 않았거나 더 이상 유효하지 않은 것 같습니다.", + "inviteErrorUser": "죄송하지만, 접근하려는 초대가 이 사용자에게 해당되지 않는 것 같습니다.", + "inviteLoginUser": "올바른 사용자로 로그인했는지 확인하십시오.", + "inviteErrorNoUser": "죄송하지만, 접근하려는 초대가 존재하지 않는 사용자에 대한 것인 것 같습니다.", + "inviteCreateUser": "먼저 계정을 생성해 주세요.", + "goHome": "홈으로 가기", + "inviteLogInOtherUser": "다른 사용자로 로그인", + "createAnAccount": "계정 만들기", + "inviteNotAccepted": "초대가 수락되지 않음", "authCreateAccount": "시작하려면 계정을 생성하세요.", + "authNoAccount": "계정이 없으신가요?", "email": "이메일", "password": "비밀번호", "confirmPassword": "비밀번호 확인", @@ -34,31 +49,12 @@ "siteDelete": "사이트 삭제", "siteMessageRemove": "제거되면 사이트에 더 이상 접근할 수 없습니다. 사이트와 관련된 모든 리소스와 대상도 제거됩니다.", "siteMessageConfirm": "확인을 위해 아래에 사이트 이름을 입력해 주세요.", - "setupNewOrg": "새 조직", - "setupCreateOrg": "조직 생성", - "setupCreateResources": "리소스 생성", - "setupOrgName": "조직 이름", - "setupErrorIdentifier": "조직 ID가 이미 사용 중입니다. 다른 것을 선택해 주세요.", - "componentsErrorNoMember": "현재 어떤 조직의 구성원도 아닙니다.", - "welcome": "판골린에 오신 것을 환영합니다.", - "componentsCreateOrg": "조직 생성", - "componentsMember": "당신은 {count, plural, =0 {조직이 없습니다} one {하나의 조직} other {# 개의 조직}}의 구성원입니다.", - "componentsSupporterMessage": "{tier}로 판골린을 지원해 주셔서 감사합니다!", - "inviteErrorNotValid": "죄송하지만, 접근하려는 초대가 수락되지 않았거나 더 이상 유효하지 않은 것 같습니다.", - "inviteErrorUser": "죄송하지만, 접근하려는 초대가 이 사용자에게 해당되지 않는 것 같습니다.", - "inviteLoginUser": "올바른 사용자로 로그인했는지 확인하십시오.", - "inviteErrorNoUser": "죄송하지만, 접근하려는 초대가 존재하지 않는 사용자에 대한 것인 것 같습니다.", - "inviteCreateUser": "먼저 계정을 생성해 주세요.", - "goHome": "홈으로 가기", - "inviteLogInOtherUser": "다른 사용자로 로그인", - "createAnAccount": "계정 만들기", + "siteQuestionRemove": "조직에서 사이트 {selectedSite}를 제거하시겠습니까?", "siteManageSites": "사이트 관리", "siteDescription": "안전한 터널을 통해 네트워크에 연결할 수 있도록 허용", "siteCreate": "사이트 생성", - "inviteNotAccepted": "초대가 수락되지 않음", - "authNoAccount": "계정이 없으신가요?", + "siteCreateDescription2": "아래 단계를 따라 새 사이트를 생성하고 연결하십시오", "siteCreateDescription": "리소스를 연결하기 위해 새 사이트를 생성하십시오.", - "dismiss": "해제", "close": "닫기", "siteErrorCreate": "사이트 생성 오류", "siteErrorCreateKeyPair": "키 쌍 또는 사이트 기본값을 찾을 수 없습니다", @@ -104,15 +100,6 @@ "siteTunnelDescription": "사이트에 연결하는 방법을 결정하세요", "siteNewtCredentials": "Newt 자격 증명", "siteNewtCredentialsDescription": "이것이 Newt가 서버와 인증하는 방법입니다", - "orgPolicyDeletedDescription": "정책이 성공적으로 삭제되었습니다", - "actionCreateResourceRule": "리소스 규칙 생성", - "defaultMappingsUpdatedDescription": "기본 매핑이 성공적으로 업데이트되었습니다.", - "orgPoliciesAbout": "조직 정책에 대하여", - "orgPoliciesAboutDescription": "조직 정책은 사용자의 ID 토큰에 따라 조직에 대한 액세스를 제어하는 데 사용됩니다. ID 토큰에서 역할 및 조직 정보를 추출하기 위해 JMESPath 표현식을 지정할 수 있습니다.", - "orgPoliciesAboutDescriptionLink": "자세한 내용은 문서를 참조하십시오.", - "actionDeleteResourceRule": "리소스 규칙 삭제", - "defaultMappingsOptional": "기본 매핑(선택 사항)", - "signupError": "가입하는 동안 오류가 발생했습니다.", "siteCredentialsSave": "자격 증명 저장", "siteCredentialsSaveDescription": "이것은 한 번만 볼 수 있습니다. 안전한 장소에 복사해 두세요.", "siteInfo": "사이트 정보", @@ -144,7 +131,6 @@ "expireIn": "만료됨", "neverExpire": "만료되지 않음", "shareExpireDescription": "만료 시간은 링크가 사용 가능하고 리소스에 접근할 수 있는 기간입니다. 이 시간이 지나면 링크는 더 이상 작동하지 않으며, 이 링크를 사용한 사용자는 리소스에 대한 접근 권한을 잃게 됩니다.", - "pangolinLogoAlt": "판골린 로고", "shareSeeOnce": "이 링크는 한 번만 볼 수 있습니다. 반드시 복사해 두세요.", "shareAccessHint": "이 링크가 있는 누구나 리소스에 접근할 수 있습니다. 주의해서 공유하세요.", "shareTokenUsage": "액세스 토큰 사용 보기", @@ -166,10 +152,8 @@ "authentication": "인증", "protected": "보호됨", "notProtected": "보호되지 않음", - "inviteAlready": "초대받은 것 같습니다!", "resourceMessageRemove": "제거되면 리소스에 더 이상 접근할 수 없습니다. 리소스와 연결된 모든 대상도 제거됩니다.", "resourceMessageConfirm": "확인을 위해 아래에 리소스의 이름을 입력하세요.", - "tagsEnteredDescription": "입력한 태그는 다음과 같습니다.", "resourceQuestionRemove": "조직에서 리소스 {selectedResource}를 제거하시겠습니까?", "resourceHTTP": "HTTPS 리소스", "resourceHTTPDescription": "서브도메인 또는 기본 도메인을 사용하여 HTTPS를 통해 앱에 대한 요청을 프록시합니다.", @@ -183,7 +167,6 @@ "siteSelect": "사이트 선택", "siteSearch": "사이트 검색", "siteNotFound": "사이트를 찾을 수 없습니다.", - "otpEnable": "이중 인증 활성화", "siteSelectionDescription": "이 사이트는 리소스에 대한 연결을 제공합니다.", "resourceType": "리소스 유형", "resourceTypeDescription": "리소스에 접근하는 방법을 결정하세요", @@ -194,16 +177,13 @@ "baseDomain": "기본 도메인", "subdomnainDescription": "리소스에 접근할 수 있는 하위 도메인입니다.", "resourceRawSettings": "TCP/UDP 설정", - "otpDisable": "이중 인증 비활성화", "resourceRawSettingsDescription": "TCP/UDP를 통해 리소스에 접근하는 방법을 구성하세요.", "protocol": "프로토콜", "protocolSelect": "프로토콜 선택", "resourcePortNumber": "포트 번호", - "logout": "로그 아웃", "resourcePortNumberDescription": "요청을 프록시하기 위한 외부 포트 번호입니다.", "cancel": "취소", "resourceConfig": "구성 스니펫", - "inviteAlreadyDescription": "초대를 수락하려면 로그인하거나 계정을 생성해야 합니다.", "resourceConfigDescription": "TCP/UDP 리소스를 설정하기 위해 이 구성 스니펫을 복사하여 붙여넣으십시오.", "resourceAddEntrypoints": "Traefik: 엔트리포인트 추가", "resourceExposePorts": "Gerbil: Docker Compose에서 포트 노출", @@ -220,7 +200,6 @@ "proxy": "프록시", "rules": "규칙", "resourceSettingDescription": "리소스의 설정을 구성하세요.", - "sidebarApiKeys": "API 키", "resourceSetting": "{resourceName} 설정", "alwaysAllow": "항상 허용", "alwaysDeny": "항상 거부", @@ -228,6 +207,7 @@ "orgGeneralSettings": "조직 설정", "orgGeneralSettingsDescription": "조직 세부정보 및 구성을 관리하세요.", "saveGeneralSettings": "일반 설정 저장", + "saveSettings": "설정 저장", "orgDangerZone": "위험 구역", "orgDangerZoneDescription": "이 조직을 삭제하면 되돌릴 수 없습니다. 확실히 하세요.", "orgDelete": "조직 삭제", @@ -239,7 +219,6 @@ "orgUpdatedDescription": "조직이 업데이트되었습니다.", "orgErrorUpdate": "조직 업데이트에 실패했습니다.", "orgErrorUpdateMessage": "조직을 업데이트하는 동안 오류가 발생했습니다.", - "sidebarSettings": "설정", "orgErrorFetch": "조직을 가져오는 데 실패했습니다.", "orgErrorFetchMessage": "조직을 나열하는 동안 오류가 발생했습니다", "orgErrorDelete": "조직 삭제에 실패했습니다.", @@ -267,9 +246,13 @@ "inviteDescription": "다른 사용자에 대한 초대를 관리하세요", "inviteSearch": "초대 검색...", "minutes": "분", + "hours": "시간", + "days": "일", + "weeks": "주", + "months": "개월", + "years": "연도", "day": "{count, plural, one {#일} other {#일}}", "apiKeysTitle": "API 키 정보", - "signupQuestion": "이미 계정이 있습니까?", "apiKeysConfirmCopy2": "API 키를 복사했음을 확인해야 합니다.", "apiKeysErrorCreate": "API 키 생성 오류", "apiKeysErrorSetPermission": "권한 설정 오류", @@ -288,7 +271,6 @@ "apiKeysPermissionsErrorLoadingActions": "API 키 작업 로드 오류", "apiKeysPermissionsErrorUpdate": "권한 설정 오류", "apiKeysPermissionsUpdated": "권한이 업데이트되었습니다", - "login": "로그인", "apiKeysPermissionsUpdatedDescription": "권한이 업데이트되었습니다.", "apiKeysPermissionsGeneralSettings": "권한", "apiKeysPermissionsGeneralSettingsDescription": "이 API 키가 수행할 수 있는 작업 결정", @@ -330,7 +312,6 @@ "licenseErrorKeyLoad": "라이센스 키를 로드하는 데 실패했습니다.", "licenseErrorKeyLoadDescription": "라이센스 키 로드 중 오류가 발생했습니다.", "licenseErrorKeyDelete": "라이센스 키 삭제에 실패했습니다.", - "resourceNotFound": "리소스를 찾을 수 없습니다", "licenseErrorKeyDeleteDescription": "라이센스 키 삭제 중 오류가 발생했습니다.", "licenseKeyDeleted": "라이센스 키가 삭제되었습니다.", "licenseKeyDeletedDescription": "라이센스 키가 삭제되었습니다.", @@ -351,7 +332,6 @@ "licenseAgreement": "이 상자를 체크함으로써, 귀하는 귀하의 라이선스 키와 관련된 계층에 해당하는 라이선스 조건을 읽고 동의했음을 확인합니다.", "fossorialLicense": "Fossorial 상업 라이선스 및 구독 약관 보기", "licenseMessageRemove": "이 작업은 라이센스 키와 그에 의해 부여된 모든 관련 권한을 제거합니다.", - "sidebarAllUsers": "모든 사용자", "licenseMessageConfirm": "확인을 위해 아래에 라이센스 키를 입력하세요.", "licenseQuestionRemove": "라이센스 키 {selectedKey}를 삭제하시겠습니까?", "licenseKeyDelete": "라이센스 키 삭제", @@ -365,7 +345,6 @@ "licenseReckeckAll": "모든 키 재확인", "licenseSiteUsage": "사이트 사용량", "licenseSiteUsageDecsription": "이 라이센스를 사용하는 사이트 수를 확인하세요.", - "noResults": "결과를 찾을 수 없습니다.", "licenseNoSiteLimit": "라이선스가 없는 호스트를 사용하는 사이트 수에 제한이 없습니다.", "licensePurchase": "라이센스 구매", "licensePurchaseSites": "추가 사이트 구매", @@ -434,7 +413,6 @@ "idpErrorFetch": "신원 제공자를 가져오는 데 실패했습니다", "idpErrorFetchDescription": "신원 공급자를 가져오는 중 오류가 발생했습니다.", "userErrorExists": "사용자가 이미 존재합니다.", - "terabytes": "{count} TB", "userErrorExistsDescription": "이 사용자는 이미 조직의 구성원입니다.", "inviteError": "사용자 초대에 실패했습니다", "inviteErrorDescription": "사용자를 초대하는 동안 오류가 발생했습니다.", @@ -692,7 +670,6 @@ "resourceErrorTransferDescription": "리소스를 전송하는 동안 오류가 발생했습니다", "resourceTransferred": "리소스가 전송되었습니다.", "resourceTransferredDescription": "리소스가 성공적으로 전송되었습니다.", - "gigabytes": "{count} GB", "resourceErrorToggle": "리소스를 전환하는 데 실패했습니다.", "resourceErrorToggleDescription": "리소스를 업데이트하는 동안 오류가 발생했습니다.", "resourceVisibilityTitle": "가시성", @@ -794,8 +771,6 @@ "idpSubmit": "아이덴티티 공급자 생성", "orgPolicies": "조직 정책", "idpSettings": "{idpName} 설정", - "megabytes": "{count} MB", - "actionCheckOrgId": "ID 확인", "idpCreateSettingsDescription": "아이덴티티 공급자의 설정을 구성하십시오", "roleMapping": "역할 매핑", "orgMapping": "조직 매핑", @@ -806,7 +781,12 @@ "success": "성공", "orgPolicyAddedDescription": "정책이 성공적으로 추가되었습니다", "orgPolicyUpdatedDescription": "정책이 성공적으로 업데이트되었습니다.", - "tagsEntered": "입력된 태그", + "orgPolicyDeletedDescription": "정책이 성공적으로 삭제되었습니다", + "defaultMappingsUpdatedDescription": "기본 매핑이 성공적으로 업데이트되었습니다.", + "orgPoliciesAbout": "조직 정책에 대하여", + "orgPoliciesAboutDescription": "조직 정책은 사용자의 ID 토큰에 따라 조직에 대한 액세스를 제어하는 데 사용됩니다. ID 토큰에서 역할 및 조직 정보를 추출하기 위해 JMESPath 표현식을 지정할 수 있습니다.", + "orgPoliciesAboutDescriptionLink": "자세한 내용은 문서를 참조하십시오.", + "defaultMappingsOptional": "기본 매핑(선택 사항)", "defaultMappingsOptionalDescription": "조직에 대해 정의된 정책이 없을 때 기본 매핑이 사용됩니다. 여기에서 기본 역할 및 조직 매핑을 지정하여 대체할 수 있습니다.", "defaultMappingsRole": "기본 역할 매핑", "defaultMappingsRoleDescription": "이 표현식의 결과는 조직에서 정의된 역할 이름을 문자열로 반환해야 합니다.", @@ -843,6 +823,13 @@ "emailVerifyResendProgress": "재전송 중...", "emailVerifyResend": "코드를 받지 못하셨나요? 여기 클릭하여 재전송하세요", "passwordNotMatch": "비밀번호가 일치하지 않습니다.", + "signupError": "가입하는 동안 오류가 발생했습니다.", + "pangolinLogoAlt": "판골린 로고", + "inviteAlready": "초대받은 것 같습니다!", + "inviteAlreadyDescription": "초대를 수락하려면 로그인하거나 계정을 생성해야 합니다.", + "signupQuestion": "이미 계정이 있습니까?", + "login": "로그인", + "resourceNotFound": "리소스를 찾을 수 없습니다", "resourceNotFoundDescription": "접근하려는 리소스가 존재하지 않습니다.", "pincodeRequirementsLength": "PIN은 정확히 6자리여야 합니다", "pincodeRequirementsChars": "PIN은 숫자만 포함해야 합니다.", @@ -923,6 +910,12 @@ "usersAll": "모든 사용자", "license": "라이선스", "pangolinDashboard": "대시보드 - 판골린", + "noResults": "결과를 찾을 수 없습니다.", + "terabytes": "{count} TB", + "gigabytes": "{count} GB", + "megabytes": "{count} MB", + "tagsEntered": "입력된 태그", + "tagsEnteredDescription": "입력한 태그는 다음과 같습니다.", "tagsWarnCannotBeLessThanZero": "maxTags와 minTags는 0보다 작을 수 없습니다", "tagsWarnNotAllowedAutocompleteOptions": "자동 완성 옵션에 따라 태그가 허용되지 않습니다", "tagsWarnInvalid": "validateTag에 따라 유효하지 않은 태그입니다", @@ -960,10 +953,15 @@ "logoutError": "로그아웃 중 오류 발생", "signingAs": "로그인한 사용자", "serverAdmin": "서버 관리자", + "otpEnable": "이중 인증 활성화", + "otpDisable": "이중 인증 비활성화", + "logout": "로그 아웃", "licenseTierProfessionalRequired": "전문 에디션이 필요합니다.", "licenseTierProfessionalRequiredDescription": "이 기능은 Professional Edition에서만 사용할 수 있습니다.", "actionGetOrg": "조직 가져오기", "actionUpdateOrg": "조직 업데이트", + "actionUpdateUser": "사용자 업데이트", + "actionGetUser": "사용자 조회", "actionGetOrgUser": "조직 사용자 가져오기", "actionListOrgDomains": "조직 도메인 목록", "actionCreateSite": "사이트 생성", @@ -1000,13 +998,15 @@ "actionRemoveUser": "사용자 제거", "actionListUsers": "사용자 목록", "actionAddUserRole": "사용자 역할 추가", - "containersIn": "{siteName}의 컨테이너", "actionGenerateAccessToken": "액세스 토큰 생성", "actionDeleteAccessToken": "액세스 토큰 삭제", "actionListAccessTokens": "액세스 토큰 목록", + "actionCreateResourceRule": "리소스 규칙 생성", + "actionDeleteResourceRule": "리소스 규칙 삭제", "actionListResourceRules": "리소스 규칙 목록", "actionUpdateResourceRule": "리소스 규칙 업데이트", "actionListOrgs": "조직 목록", + "actionCheckOrgId": "ID 확인", "actionCreateOrg": "조직 생성", "actionDeleteOrg": "조직 삭제", "actionListApiKeys": "API 키 목록", @@ -1089,12 +1089,18 @@ "sidebarInvitations": "초대", "sidebarRoles": "역할", "sidebarShareableLinks": "공유 가능한 링크", + "sidebarApiKeys": "API 키", + "sidebarSettings": "설정", + "sidebarAllUsers": "모든 사용자", "sidebarIdentityProviders": "신원 공급자", "sidebarLicense": "라이선스", + "sidebarClients": "클라이언트", + "sidebarDomains": "도메인", "enableDockerSocket": "Docker 소켓 활성화", "enableDockerSocketDescription": "컨테이너 정보를 채우기 위해 Docker 소켓 검색을 활성화합니다. 소켓 경로는 Newt에 제공되어야 합니다.", "enableDockerSocketLink": "자세히 알아보기", "viewDockerContainers": "도커 컨테이너 보기", + "containersIn": "{siteName}의 컨테이너", "selectContainerDescription": "이 대상을 위한 호스트 이름으로 사용할 컨테이너를 선택하세요. 포트를 사용하려면 포트를 클릭하세요.", "containerName": "이름", "containerImage": "이미지", @@ -1129,8 +1135,142 @@ "dark": "어두운", "system": "시스템", "theme": "테마", + "subnetRequired": "서브넷은 필수입니다", "initialSetupTitle": "초기 서버 설정", "initialSetupDescription": "초기 서버 관리자 계정을 생성하세요. 서버 관리자 계정은 하나만 존재할 수 있습니다. 이러한 자격 증명은 나중에 언제든지 변경할 수 있습니다.", "createAdminAccount": "관리자 계정 생성", - "setupErrorCreateAdmin": "서버 관리자 계정을 생성하는 동안 오류가 발생했습니다." + "setupErrorCreateAdmin": "서버 관리자 계정을 생성하는 동안 오류가 발생했습니다.", + "certificateStatus": "인증서 상태", + "loading": "로딩 중", + "restart": "재시작", + "domains": "도메인", + "domainsDescription": "조직의 도메인을 관리합니다", + "domainsSearch": "도메인 검색...", + "domainAdd": "도메인 추가", + "domainAddDescription": "조직에 새로운 도메인을 등록하세요", + "domainCreate": "도메인 생성", + "domainCreatedDescription": "도메인이 성공적으로 생성되었습니다", + "domainDeletedDescription": "도메인이 성공적으로 삭제되었습니다", + "domainQuestionRemove": "도메인 {domain}을(를) 계정에서 제거하시겠습니까?", + "domainMessageRemove": "제거되면 도메인이 더 이상 계정과 연관되지 않습니다.", + "domainMessageConfirm": "확인하려면 아래에 도메인명을 입력하세요.", + "domainConfirmDelete": "도메인 삭제 확인", + "domainDelete": "도메인 삭제", + "domain": "도메인", + "selectDomainTypeNsName": "도메인 위임 (NS)", + "selectDomainTypeNsDescription": "이 도메인과 모든 하위 도메인입니다. 전체 도메인 영역을 제어하려면 이를 사용하세요.", + "selectDomainTypeCnameName": "단일 도메인 (CNAME)", + "selectDomainTypeCnameDescription": "단일 하위 도메인 또는 특정 도메인 항목에 사용됩니다.", + "selectDomainTypeWildcardName": "와일드카드 도메인", + "selectDomainTypeWildcardDescription": "이 도메인과 그 첫 번째 레벨의 하위 도메인입니다.", + "domainDelegation": "단일 도메인", + "selectType": "유형 선택", + "actions": "작업", + "refresh": "새로 고침", + "refreshError": "데이터 새로고침 실패", + "verified": "검증됨", + "pending": "대기 중", + "sidebarBilling": "청구", + "billing": "청구", + "orgBillingDescription": "청구 정보 및 구독을 관리하세요", + "github": "GitHub", + "pangolinHosted": "판골린 호스팅", + "fossorial": "지하 서식", + "completeAccountSetup": "계정 설정 완료", + "completeAccountSetupDescription": "시작하려면 비밀번호를 설정하세요", + "accountSetupSent": "이 이메일 주소로 계정 설정 코드를 보내드리겠습니다.", + "accountSetupCode": "설정 코드", + "accountSetupCodeDescription": "설정 코드를 확인하기 위해 이메일을 확인하세요.", + "passwordCreate": "비밀번호 생성", + "passwordCreateConfirm": "비밀번호 확인", + "accountSetupSubmit": "설정 코드 전송", + "completeSetup": "설정 완료", + "accountSetupSuccess": "계정 설정이 완료되었습니다! 판골린에 오신 것을 환영합니다!", + "documentation": "문서", + "saveAllSettings": "모든 설정 저장", + "settingsUpdated": "설정이 업데이트되었습니다", + "settingsUpdatedDescription": "모든 설정이 성공적으로 업데이트되었습니다", + "settingsErrorUpdate": "설정 업데이트 실패", + "settingsErrorUpdateDescription": "설정을 업데이트하는 동안 오류가 발생했습니다", + "sidebarCollapse": "줄이기", + "sidebarExpand": "확장하기", + "newtUpdateAvailable": "업데이트 가능", + "newtUpdateAvailableInfo": "뉴트의 새 버전이 출시되었습니다. 최상의 경험을 위해 최신 버전으로 업데이트하세요.", + "domainPickerEnterDomain": "도메인 입력", + "domainPickerPlaceholder": "myapp.example.com, api.v1.mydomain.com, 또는 그냥 myapp", + "domainPickerDescription": "도메인, 서브도메인, 또는 이름을 입력하여 사용 가능한 옵션을 확인하세요", + "domainPickerTabAll": "모두", + "domainPickerTabOrganization": "조직", + "domainPickerTabProvided": "제공 됨", + "domainPickerSortAsc": "A-Z", + "domainPickerSortDesc": "Z-A", + "domainPickerCheckingAvailability": "가용성을 확인 중...", + "domainPickerNoMatchingDomains": "\"{userInput}\"에 해당하는 도메인을 찾을 수 없습니다. 다른 도메인을 시도하거나 조직의 도메인 설정을 확인하세요.", + "domainPickerOrganizationDomains": "조직 도메인", + "domainPickerProvidedDomains": "제공된 도메인", + "domainPickerSubdomain": "서브도메인: {subdomain}", + "domainPickerNamespace": "이름 공간: {namespace}", + "domainPickerShowMore": "더보기", + "domainNotFound": "도메인을 찾을 수 없습니다", + "domainNotFoundDescription": "이 리소스는 도메인이 더 이상 시스템에 존재하지 않아 비활성화되었습니다. 이 리소스에 대한 새 도메인을 설정하세요.", + "failed": "실패", + "createNewOrgDescription": "새 조직 생성", + "organization": "조직", + "port": "포트", + "securityKeyManage": "보안 키 관리", + "securityKeyDescription": "비밀번호 없는 인증을 위해 보안 키를 추가하거나 제거합니다.", + "securityKeyRegister": "새 보안 키 등록", + "securityKeyList": "귀하의 보안 키", + "securityKeyNone": "등록된 보안 키가 아직 없습니다", + "securityKeyNameRequired": "이름은 필수입니다", + "securityKeyRemove": "제거", + "securityKeyLastUsed": "마지막 사용: {date}", + "securityKeyNameLabel": "보안 키 이름", + "securityKeyRegisterSuccess": "보안 키가 성공적으로 등록되었습니다", + "securityKeyRegisterError": "보안 키 등록 실패", + "securityKeyRemoveSuccess": "보안 키가 성공적으로 제거되었습니다", + "securityKeyRemoveError": "보안 키 제거 실패", + "securityKeyLoadError": "보안 키를 불러오는 데 실패했습니다", + "securityKeyLogin": "보안 키로 로그인", + "securityKeyAuthError": "보안 키를 사용한 인증 실패", + "securityKeyRecommendation": "항상 계정에 액세스할 수 있도록 다른 장치에 백업 보안 키를 등록하세요.", + "registering": "등록 중...", + "securityKeyPrompt": "보안 키를 사용하여 본인 확인을 진행하세요. 보안 키가 연결되어 사용 준비가 되었는지 확인하세요.", + "securityKeyBrowserNotSupported": "귀하의 브라우저는 보안 키를 지원하지 않습니다. Chrome, Firefox, 또는 Safari와 같은 최신 브라우저를 사용하세요.", + "securityKeyPermissionDenied": "로그인을 계속하려면 보안 키에 대한 액세스를 허용하세요.", + "securityKeyRemovedTooQuickly": "로그인 프로세스가 완료될 때까지 보안 키를 연결 상태로 유지하세요.", + "securityKeyNotSupported": "보안 키가 호환되지 않을 수 있습니다. 다른 보안 키를 사용해보세요.", + "securityKeyUnknownError": "보안 키를 사용하는 데 문제가 발생했습니다. 다시 시도하세요.", + "twoFactorRequired": "보안 키를 등록하려면 이중 인증이 필요합니다.", + "twoFactor": "이중 인증", + "adminEnabled2FaOnYourAccount": "관리자가 {email}에 대한 이중 인증을 활성화했습니다. 계속하려면 설정을 완료하세요.", + "continueToApplication": "응용 프로그램으로 계속", + "securityKeyAdd": "보안 키 추가", + "securityKeyRegisterTitle": "새 보안 키 등록", + "securityKeyRegisterDescription": "보안 키를 연결하고 식별할 이름을 입력하세요.", + "securityKeyTwoFactorRequired": "이중 인증 필요", + "securityKeyTwoFactorDescription": "보안 키를 등록하려면 이중 인증 코드를 입력하세요.", + "securityKeyTwoFactorRemoveDescription": "보안 키를 제거하려면 이중 인증 코드를 입력하세요.", + "securityKeyTwoFactorCode": "이중 인증 코드", + "securityKeyRemoveTitle": "보안 키 삭제", + "securityKeyRemoveDescription": "보안 키 \"{name}\"를 제거하려면 비밀번호를 입력하세요", + "securityKeyNoKeysRegistered": "등록된 보안 키가 없습니다", + "securityKeyNoKeysDescription": "계정 보안을 강화하려면 보안 키를 추가하세요.", + "createDomainRequired": "도메인은 필수입니다", + "createDomainAddDnsRecords": "DNS 레코드 추가", + "createDomainAddDnsRecordsDescription": "설정을 완료하려면 도메인 제공자에게 다음 DNS 레코드를 추가하세요.", + "createDomainNsRecords": "NS 레코드", + "createDomainRecord": "레코드", + "createDomainType": "유형:", + "createDomainName": "이름:", + "createDomainValue": "값:", + "createDomainCnameRecords": "CNAME 레코드", + "createDomainRecordNumber": "레코드 {number}", + "createDomainTxtRecords": "TXT 레코드", + "createDomainSaveTheseRecords": "이 레코드 저장", + "createDomainSaveTheseRecordsDescription": "이 DNS 레코드를 저장하여 이후에 다시 볼 수 없습니다.", + "createDomainDnsPropagation": "DNS 전파", + "createDomainDnsPropagationDescription": "DNS 변경 사항은 인터넷 전체에 전파되는 데 시간이 걸립니다. DNS 제공자와 TTL 설정에 따라 몇 분에서 48시간까지 걸릴 수 있습니다.", + "resourcePortRequired": "HTTP 리소스가 아닌 경우 포트 번호가 필요합니다", + "resourcePortNotAllowed": "HTTP 리소스에 대해 포트 번호를 설정하지 마세요" }