mirror of
https://github.com/fosrl/pangolin.git
synced 2026-06-07 16:09:52 +00:00
Compare commits
11 Commits
crowdin_de
...
1.19.0-rc.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7fa1180d10 | ||
|
|
769d36e289 | ||
|
|
a7a41b820e | ||
|
|
8b50f1fb65 | ||
|
|
2d78a4b628 | ||
|
|
527d4cc777 | ||
|
|
01361884eb | ||
|
|
6c4cbcab5d | ||
|
|
aac25f0a53 | ||
|
|
f617f93a94 | ||
|
|
51629247a5 |
@@ -38,7 +38,5 @@ flags:
|
||||
disable_user_create_org: false
|
||||
allow_raw_resources: true
|
||||
|
||||
{{if .IsPostgreSQL}}
|
||||
postgres:
|
||||
connection_string: postgresql://pangolin:{{.IsPostgreSQLPass}}@postgres:5432/pangolin
|
||||
{{end}}
|
||||
{{if .IsPostgreSQL}}postgres:
|
||||
connection_string: postgresql://pangolin:{{.IsPostgreSQLPass}}@postgres:5432/pangolin{{end}}
|
||||
|
||||
@@ -7,23 +7,17 @@ services:
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 1g
|
||||
memory: 2g
|
||||
reservations:
|
||||
memory: 256m
|
||||
{{if or .IsPostgreSQL .IsRedis}}
|
||||
depends_on:
|
||||
{{if .IsPostgreSQL}}
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
{{end}}
|
||||
{{if .IsRedis}}
|
||||
redis:
|
||||
condition: service_healthy
|
||||
{{end}}
|
||||
memory: 512m
|
||||
{{if or .IsPostgreSQL .IsRedis}}depends_on:
|
||||
{{if .IsPostgreSQL}}postgres:
|
||||
condition: service_healthy{{end}}
|
||||
{{if .IsRedis}}redis:
|
||||
condition: service_healthy{{end}}
|
||||
networks:
|
||||
- default
|
||||
- backend
|
||||
{{end}}
|
||||
- backend{{end}}
|
||||
volumes:
|
||||
- ./config:/app/config
|
||||
healthcheck:
|
||||
@@ -31,8 +25,8 @@ services:
|
||||
interval: "10s"
|
||||
timeout: "10s"
|
||||
retries: 15
|
||||
{{if .InstallGerbil}}
|
||||
gerbil:
|
||||
|
||||
{{if .InstallGerbil}}gerbil:
|
||||
image: docker.io/fosrl/gerbil:{{.GerbilVersion}}
|
||||
container_name: gerbil
|
||||
restart: unless-stopped
|
||||
@@ -53,17 +47,16 @@ services:
|
||||
- 21820:21820/udp
|
||||
- 443:443
|
||||
- 443:443/udp # For http3 QUIC if desired
|
||||
- 80:80
|
||||
{{end}}
|
||||
- 80:80{{end}}
|
||||
|
||||
traefik:
|
||||
image: docker.io/traefik:v3.6
|
||||
container_name: traefik
|
||||
restart: unless-stopped
|
||||
{{if .InstallGerbil}} network_mode: service:gerbil # Ports appear on the gerbil service{{end}}{{if not .InstallGerbil}}
|
||||
{{if .InstallGerbil}}network_mode: service:gerbil # Ports appear on the gerbil service{{end}}{{if not .InstallGerbil}}
|
||||
ports:
|
||||
- 443:443
|
||||
- 80:80
|
||||
{{end}}
|
||||
- 80:80{{end}}
|
||||
depends_on:
|
||||
pangolin:
|
||||
condition: service_healthy
|
||||
@@ -74,8 +67,7 @@ services:
|
||||
- ./config/letsencrypt:/letsencrypt # Volume to store the Let's Encrypt certificates
|
||||
- ./config/traefik/logs:/var/log/traefik # Volume to store Traefik logs
|
||||
|
||||
{{if .IsPostgreSQL}}
|
||||
postgres:
|
||||
{{if .IsPostgreSQL}}postgres:
|
||||
image: postgres:18
|
||||
container_name: postgres
|
||||
restart: unless-stopped
|
||||
@@ -91,11 +83,9 @@ services:
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
networks:
|
||||
- backend
|
||||
{{end}}
|
||||
- backend{{end}}
|
||||
|
||||
{{if .IsRedis}}
|
||||
redis:
|
||||
{{if .IsRedis}}redis:
|
||||
image: redis:8-trixie
|
||||
container_name: redis
|
||||
restart: unless-stopped
|
||||
@@ -113,17 +103,14 @@ services:
|
||||
retries: 3
|
||||
start_period: 10s
|
||||
networks:
|
||||
- backend
|
||||
{{end}}
|
||||
- backend{{end}}
|
||||
|
||||
networks:
|
||||
default:
|
||||
driver: bridge
|
||||
name: pangolin_frontend
|
||||
{{if .EnableIPv6}} enable_ipv6: true{{end}}
|
||||
{{if or .IsPostgreSQL .IsRedis}}
|
||||
backend:
|
||||
{{if or .IsPostgreSQL .IsRedis}} backend:
|
||||
driver: bridge
|
||||
name: pangolin_backend
|
||||
internal: true
|
||||
{{end}}
|
||||
internal: true{{end}}
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
{{if .IsRedis}}
|
||||
redis:
|
||||
{{if .IsRedis}}redis:
|
||||
host: "redis"
|
||||
port: 6379
|
||||
password: "{{.IsRedisPass}}"
|
||||
{{end}}
|
||||
password: "{{.IsRedisPass}}"{{end}}
|
||||
|
||||
@@ -71,9 +71,12 @@ const (
|
||||
Undefined SupportedContainer = "undefined"
|
||||
)
|
||||
|
||||
var redisFlag *bool
|
||||
|
||||
func main() {
|
||||
|
||||
crowdsecFlag := flag.Bool("crowdsec", false, "Enable the CrowdSec installation prompt")
|
||||
redisFlag = flag.Bool("redis", false, "Install Redis as cacheing solution. Required for HA. Not required for the Enterprise version.")
|
||||
flag.Parse()
|
||||
|
||||
// print a banner about prerequisites - opening port 80, 443, 51820, and 21820 on the VPS and firewall and pointing your domain to the VPS IP with a records. Docs are at http://localhost:3000/Getting%20Started/dns-networking
|
||||
@@ -491,13 +494,13 @@ func collectUserInput() Config {
|
||||
|
||||
config.IsEnterprise = readBoolNoDefault("Do you want to install the Enterprise version of Pangolin? The EE is free for personal use or for businesses making less than 100k USD annually.")
|
||||
if config.IsEnterprise {
|
||||
config.IsRedis = readBool("Do you want to run the Redis containers locally? Required for HA.")
|
||||
if config.IsRedis {
|
||||
if *redisFlag {
|
||||
config.IsRedis = true
|
||||
config.IsRedisPass = readPassword("Enter a unique password for the Redis service.")
|
||||
}
|
||||
}
|
||||
|
||||
config.IsPostgreSQL = readBool("Do you want to run the PostgreSQL containers locally? Otherwise, default to the local SQLite database only.", false)
|
||||
config.IsPostgreSQL = readBool("Do you want to use PostgreSQL (not recommended for most users)?", false)
|
||||
if config.IsPostgreSQL {
|
||||
config.IsPostgreSQLPass = readPassword("Enter a unique password for the PostgreSQL pangolin user.")
|
||||
}
|
||||
@@ -544,7 +547,7 @@ func collectUserInput() Config {
|
||||
fmt.Println("\n=== Advanced Configuration ===")
|
||||
|
||||
config.EnableIPv6 = readBool("Is your server IPv6 capable?", true)
|
||||
config.EnableMaxMind = readBool("Do you want to download the MaxMind GeoLite2 Country and ADN databases for blocking functionality?", true)
|
||||
config.EnableMaxMind = readBool("Do you want to download the MaxMind GeoLite2 Country and ASN databases for blocking functionality?", true)
|
||||
|
||||
if config.DashboardDomain == "" {
|
||||
fmt.Println("Error: Dashboard Domain name is required")
|
||||
|
||||
@@ -101,8 +101,6 @@
|
||||
"sitesTableViewPrivateResources": "Вижте частни ресурси",
|
||||
"siteInstallNewt": "Инсталирайте Newt",
|
||||
"siteInstallNewtDescription": "Пуснете Newt на вашата система",
|
||||
"siteInstallKubernetesDocsDescription": "For more and up to date Kubernetes installation information, see <docsLink>docs.pangolin.net/manage/sites/install-kubernetes</docsLink>.",
|
||||
"siteInstallAdvantechDocsDescription": "For Advantech modem installation instructions, see <docsLink>docs.pangolin.net/manage/sites/install-advantech</docsLink>.",
|
||||
"WgConfiguration": "WireGuard конфигурация",
|
||||
"WgConfigurationDescription": "Използвайте следната конфигурация, за да се свържете с мрежата",
|
||||
"operatingSystem": "Операционна система",
|
||||
@@ -202,8 +200,8 @@
|
||||
"shareErrorSelectResource": "Моля, изберете ресурс",
|
||||
"proxyResourceTitle": "Управление на обществени ресурси",
|
||||
"proxyResourceDescription": "Създайте и управлявайте ресурси, които са общодостъпни чрез уеб браузър.",
|
||||
"publicResourcesBannerTitle": "Web-based Public Access",
|
||||
"publicResourcesBannerDescription": "Public resources are HTTPS proxies accessible to anyone on the internet through a web browser. Unlike private resources, they do not require client-side software and can include identity and context-aware access policies.",
|
||||
"proxyResourcesBannerTitle": "Публичен достъп чрез уеб.",
|
||||
"proxyResourcesBannerDescription": "Публичните ресурси са HTTPS или TCP/UDP проксита, достъпни за всеки в интернет чрез уеб браузър. За разлика от частните ресурси, те не изискват софтуер от страна на клиента и могат да включват издентити и контексто-осъзнати политики за достъп.",
|
||||
"clientResourceTitle": "Управление на частни ресурси",
|
||||
"clientResourceDescription": "Създайте и управлявайте ресурси, които са достъпни само чрез свързан клиент.",
|
||||
"privateResourcesBannerTitle": "Достъп до частни ресурси с нулево доверие.",
|
||||
@@ -211,16 +209,15 @@
|
||||
"resourcesSearch": "Търсене на ресурси...",
|
||||
"resourceAdd": "Добавете ресурс",
|
||||
"resourceErrorDelte": "Грешка при изтриване на ресурс",
|
||||
"resourcePoliciesTitle": "Manage Public Resource Policies",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Resources",
|
||||
"resourcePoliciesTitle": "Управление на политики за ресурси",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Свързани ресурси",
|
||||
"resourcePoliciesAttachedResources": "{count} ресурс(а)",
|
||||
"resourcePoliciesAttachedResourcesCount": "{count, plural, one {# resource} other {# resources}}",
|
||||
"resourcePoliciesAttachedResourcesEmpty": "няма ресурси",
|
||||
"resourcePoliciesDescription": "Create and manage authentication policies to control access to your public resources",
|
||||
"resourcePoliciesDescription": "Създавай и управлявай политики за автентикация, за да контролирате достъпа до вашите ресурси",
|
||||
"resourcePoliciesSearch": "Търсене на политики...",
|
||||
"resourcePoliciesAdd": "Добавяне на политика",
|
||||
"resourcePoliciesDefaultBadgeText": "Стандартна политика",
|
||||
"resourcePoliciesCreate": "Create Public Resource Policy",
|
||||
"resourcePoliciesCreate": "Създаване на политика за ресурс",
|
||||
"resourcePoliciesCreateDescription": "Следвайте стъпките по-долу, за да създадете нова политика",
|
||||
"resourcePolicyName": "Име на политика",
|
||||
"resourcePolicyNameDescription": "Дайте на тази политика име, за да я идентифицирате в цялото ви ресурси",
|
||||
@@ -314,7 +311,7 @@
|
||||
"rules": "Правила",
|
||||
"resourceSettingDescription": "Конфигурирайте настройките на ресурса",
|
||||
"resourceSetting": "Настройки на {resourceName}",
|
||||
"resourcePolicySettingDescription": "Configure the settings on this public resource policy",
|
||||
"resourcePolicySettingDescription": "Конфигурирайте настройките на политиката за ресурс",
|
||||
"resourcePolicySetting": "Настройки за {policyName}",
|
||||
"alwaysAllow": "Заобикаляне на Ауторизацията",
|
||||
"alwaysDeny": "Блокиране на Достъпа",
|
||||
@@ -756,11 +753,11 @@
|
||||
"rulesErrorDuplicate": "Дубликат на правило",
|
||||
"rulesErrorDuplicateDescription": "Правило с тези настройки вече съществува",
|
||||
"rulesErrorInvalidIpAddressRange": "Невалиден CIDR",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Enter a valid CIDR range (e.g., 10.0.0.0/8).",
|
||||
"rulesErrorInvalidUrl": "Invalid path",
|
||||
"rulesErrorInvalidUrlDescription": "Enter a valid URL path or pattern (e.g., /api/*).",
|
||||
"rulesErrorInvalidIpAddress": "Invalid IP address",
|
||||
"rulesErrorInvalidIpAddressDescription": "Enter a valid IPv4 or IPv6 address.",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Моля, въведете валидна стойност на CIDR",
|
||||
"rulesErrorInvalidUrl": "Невалиден URL път",
|
||||
"rulesErrorInvalidUrlDescription": "Моля, въведете валидна стойност за URL път",
|
||||
"rulesErrorInvalidIpAddress": "Невалиден IP",
|
||||
"rulesErrorInvalidIpAddressDescription": "Моля, въведете валиден IP адрес",
|
||||
"rulesErrorUpdate": "Неуспешно актуализиране на правилата",
|
||||
"rulesErrorUpdateDescription": "Възникна грешка при актуализиране на правилата",
|
||||
"rulesUpdated": "Активиране на правилата",
|
||||
@@ -768,23 +765,15 @@
|
||||
"rulesMatchIpAddressRangeDescription": "Въведете адрес във формат CIDR (напр. 103.21.244.0/22)",
|
||||
"rulesMatchIpAddress": "Въведете IP адрес (напр. 103.21.244.12)",
|
||||
"rulesMatchUrl": "Въведете URL път или модел (напр. /api/v1/todos или /api/v1/*)",
|
||||
"rulesErrorInvalidPriority": "Invalid priority",
|
||||
"rulesErrorInvalidPriorityDescription": "Enter a whole number of 1 or higher.",
|
||||
"rulesErrorDuplicatePriority": "Duplicate priorities",
|
||||
"rulesErrorDuplicatePriorityDescription": "Each rule must have a unique priority number.",
|
||||
"rulesErrorValidation": "Invalid rules",
|
||||
"rulesErrorValidationRuleDescription": "Rule {ruleNumber}: {message}",
|
||||
"rulesErrorValueRequired": "Enter a value for this rule.",
|
||||
"rulesErrorInvalidCountry": "Invalid country",
|
||||
"rulesErrorInvalidCountryDescription": "Select a valid country.",
|
||||
"rulesErrorInvalidAsn": "Invalid ASN",
|
||||
"rulesErrorInvalidAsnDescription": "Enter a valid ASN (e.g., AS15169).",
|
||||
"rulesErrorInvalidPriority": "Невалиден приоритет",
|
||||
"rulesErrorInvalidPriorityDescription": "Моля, въведете валиден приоритет",
|
||||
"rulesErrorDuplicatePriority": "Дублирани приоритети",
|
||||
"rulesErrorDuplicatePriorityDescription": "Моля, въведете уникални приоритети",
|
||||
"ruleUpdated": "Правилата са актуализирани",
|
||||
"ruleUpdatedDescription": "Правилата бяха успешно актуализирани",
|
||||
"ruleErrorUpdate": "Операцията не бе успешна",
|
||||
"ruleErrorUpdateDescription": "Възникна грешка по време на операцията за запис",
|
||||
"rulesPriority": "Приоритет",
|
||||
"rulesReorderDragHandle": "Drag to reorder rule priority",
|
||||
"rulesAction": "Действие",
|
||||
"rulesMatchType": "Тип на съвпадение",
|
||||
"value": "Стойност",
|
||||
@@ -803,7 +792,7 @@
|
||||
"rulesResource": "Конфигурация на правилата за ресурси",
|
||||
"rulesResourceDescription": "Конфигурирайте правила за контролиране на достъпа до ресурса",
|
||||
"ruleSubmit": "Добави правило",
|
||||
"rulesNoOne": "No rules yet.",
|
||||
"rulesNoOne": "Няма правила. Добавете правило чрез формуляра.",
|
||||
"rulesOrder": "Правилата се оценяват по приоритет в нарастващ ред.",
|
||||
"rulesSubmit": "Запазване на правилата",
|
||||
"policyErrorCreate": "Грешка при създаване на политика",
|
||||
@@ -814,44 +803,7 @@
|
||||
"policyErrorUpdateMessageDescription": "Възникна неочаквана грешка",
|
||||
"policyCreatedSuccess": "Политиката за ресурс е създадена успешно",
|
||||
"policyUpdatedSuccess": "Политиката за ресурс е актуализирана успешно",
|
||||
"authMethodsSave": "Save Settings",
|
||||
"policyAuthStackTitle": "Authentication",
|
||||
"policyAuthStackDescription": "Control which authentication methods are required to access this resource",
|
||||
"policyAuthOrLogicTitle": "Multiple authentication methods active",
|
||||
"policyAuthOrLogicBanner": "Visitors may authenticate using any one of the active methods below. They do not need to complete all of them.",
|
||||
"policyAuthMethodActive": "Active",
|
||||
"policyAuthMethodOff": "Off",
|
||||
"policyAuthSsoTitle": "Platform SSO",
|
||||
"policyAuthSsoDescription": "Require sign-in through your organization's identity provider",
|
||||
"policyAuthSsoSummary": "{idp} · {users} users, {roles} roles",
|
||||
"policyAuthSsoDefaultIdp": "Default provider",
|
||||
"policyAuthAddDefaultIdentityProvider": "Add Default Identity Provider",
|
||||
"policyAuthOtherMethodsTitle": "Other Methods",
|
||||
"policyAuthOtherMethodsDescription": "Optional methods visitors can use instead of or alongside platform SSO",
|
||||
"policyAuthPasscodeTitle": "Passcode",
|
||||
"policyAuthPasscodeDescription": "Require a shared alphanumeric passcode to access the resource",
|
||||
"policyAuthPasscodeSummary": "Passcode set",
|
||||
"policyAuthPincodeTitle": "PIN Code",
|
||||
"policyAuthPincodeDescription": "A short numeric code required to access the resource",
|
||||
"policyAuthPincodeSummary": "6-digit PIN set",
|
||||
"policyAuthEmailTitle": "Email Whitelist",
|
||||
"policyAuthEmailDescription": "Allow listed email addresses with one-time passwords",
|
||||
"policyAuthEmailSummary": "{count} addresses allowed",
|
||||
"policyAuthEmailOtpCallout": "Enabling email whitelist sends a one-time password to the visitor's email on login.",
|
||||
"policyAuthHeaderAuthTitle": "Basic Header Auth",
|
||||
"policyAuthHeaderAuthDescription": "Validate a custom HTTP header name and value on each request",
|
||||
"policyAuthHeaderAuthSummary": "Header configured",
|
||||
"policyAuthHeaderName": "Header name",
|
||||
"policyAuthHeaderValue": "Expected value",
|
||||
"policyAccessRulesTitle": "Access Rules",
|
||||
"policyAccessRulesEnableDescription": "When enabled, rules are evaluated in descending order until one evaluates as true.",
|
||||
"policyAccessRulesFirstMatch": "Rules are evaluated top to bottom. The first matching rule decides the outcome.",
|
||||
"policyAccessRulesHowItWorks": "Rules match requests by path, IP address, location, or other criteria. Each rule applies an action: bypass authentication, block access, or pass to authentication. If no rule matches, traffic continues to authentication.",
|
||||
"policyAccessRulesFallthroughOff": "When rules are disabled, all traffic passes through to authentication.",
|
||||
"policyAccessRulesFallthroughOn": "When no rule matches, traffic passes through to authentication.",
|
||||
"rulesPlaceholderCidr": "10.0.0.0/8",
|
||||
"rulesPlaceholderPath": "/admin/*",
|
||||
"rulesPlaceholderGeo": "RU, KP",
|
||||
"authMethodsSave": "Запазете методите за идентификация",
|
||||
"rulesSave": "Запазете правилата",
|
||||
"resourceErrorCreate": "Грешка при създаване на ресурс",
|
||||
"resourceErrorCreateDescription": "Възникна грешка при създаването на ресурса",
|
||||
@@ -1268,10 +1220,8 @@
|
||||
"addLabels": "Добавяне на етикети",
|
||||
"siteLabelsTab": "Етикети",
|
||||
"siteLabelsDescription": "Управление на етикети, свързани с този сайт.",
|
||||
"labelsNotFound": "No labels found.",
|
||||
"labelsEmptyCreateHint": "Start typing above to create a label.",
|
||||
"labelsNotFound": "Етикети не са намерени",
|
||||
"labelSearch": "Търсене на етикети",
|
||||
"labelSearchOrCreate": "Search or create a label",
|
||||
"accessLabelFilterCount": "{count, plural, one {# етикет} other {# етикети}}",
|
||||
"labelOverflowCount": "+{count, plural, one {# етикет} other {# етикети}}",
|
||||
"accessLabelFilterClear": "Изчисти филтрите за етикети",
|
||||
@@ -1512,7 +1462,7 @@
|
||||
"sidebarProxyResources": "Публично",
|
||||
"sidebarClientResources": "Частно",
|
||||
"sidebarPolicies": "Политики",
|
||||
"sidebarResourcePolicies": "Public Resources",
|
||||
"sidebarResourcePolicies": "Ресурси",
|
||||
"sidebarAccessControl": "Контрол на достъпа",
|
||||
"sidebarLogsAndAnalytics": "Дневници и анализи",
|
||||
"sidebarTeam": "Екип",
|
||||
@@ -1520,7 +1470,7 @@
|
||||
"sidebarAdmin": "Администратор",
|
||||
"sidebarInvitations": "Покани",
|
||||
"sidebarRoles": "Роли",
|
||||
"sidebarShareableLinks": "Share Links",
|
||||
"sidebarShareableLinks": "Връзки",
|
||||
"sidebarApiKeys": "API ключове",
|
||||
"sidebarProvisioning": "Осигуряване",
|
||||
"sidebarSettings": "Настройки",
|
||||
@@ -1697,7 +1647,7 @@
|
||||
"standaloneHcFilterResourceIdFallback": "Ресурс {id}",
|
||||
"blueprints": "Чертежи",
|
||||
"blueprintsLog": "Регистър на скицописи",
|
||||
"blueprintsDescription": "View past blueprint applications and their results or apply a new blueprint",
|
||||
"blueprintsDescription": "Вижте предишни приложения и техните резултати",
|
||||
"blueprintAdd": "Добави Чертеж",
|
||||
"blueprintGoBack": "Виж всички Чертежи",
|
||||
"blueprintCreate": "Създай Чертеж",
|
||||
@@ -2077,13 +2027,13 @@
|
||||
"healthCheckUnknown": "Неизвестен",
|
||||
"healthCheck": "Проверка на здравето",
|
||||
"configureHealthCheck": "Конфигуриране на проверка на здравето",
|
||||
"configureHealthCheckDescription": "Set up monitoring for your resource to ensure it is always available",
|
||||
"configureHealthCheckDescription": "Настройте мониторинг на здравето за {target}",
|
||||
"enableHealthChecks": "Разрешаване на проверки на здравето",
|
||||
"healthCheckDisabledStateDescription": "Когато е деактивиран, сайтът не изпълнява проверки и състоянието се счита за неизвестно.",
|
||||
"enableHealthChecksDescription": "Мониторинг на здравето на тази цел. Можете да наблюдавате различен краен пункт от целта, ако е необходимо.",
|
||||
"healthScheme": "Метод",
|
||||
"healthSelectScheme": "Избор на метод",
|
||||
"healthCheckPortInvalid": "Port must be between 1 and 65535",
|
||||
"healthCheckPortInvalid": "Портът за проверка на състоянието трябва да е между 1 и 65535",
|
||||
"healthCheckPath": "Път",
|
||||
"healthHostname": "IP / Хост",
|
||||
"healthPort": "Порт",
|
||||
@@ -2096,7 +2046,6 @@
|
||||
"requireDeviceApproval": "Изискват одобрение на устройства",
|
||||
"requireDeviceApprovalDescription": "Потребители с тази роля трябва да имат нови устройства одобрени от администратор преди да могат да се свържат и да имат достъп до ресурси.",
|
||||
"sshSettings": "Настройки за SSH",
|
||||
"sshAccess": "SSH Access",
|
||||
"rdpSettings": "Настройки за RDP",
|
||||
"vncSettings": "Настройки за VNC",
|
||||
"sshServer": "SSH сървър",
|
||||
@@ -2123,13 +2072,8 @@
|
||||
"sshDaemonDisclaimer": "Уверете се, че вашата целева хост машина е правилно конфигурирана за изпълнение на демона за идентификация преди завършване на тази настройка, в противен случай осигуряването ще се провали.",
|
||||
"sshDaemonPort": "Порт на демона",
|
||||
"sshServerDestination": "Дестинация на сървъра",
|
||||
"sshServerDestinationDescription": "Configure the destination of the SSH server",
|
||||
"sshServerDestinationDescription": "Конфигуриране на дестинацията и порта на SSH сървъра",
|
||||
"destination": "Дестинация",
|
||||
"destinationRequired": "Destination is required.",
|
||||
"domainRequired": "Domain is required.",
|
||||
"proxyPortRequired": "Port is required.",
|
||||
"invalidPathConfiguration": "Invalid path configuration.",
|
||||
"invalidRewritePathConfiguration": "Invalid rewrite path configuration.",
|
||||
"bgTargetMultiSiteDisclaimer": "Избиране на множество сайтове позволява устойчиво маршрутизиране и сокетно превключване за висока наличност.",
|
||||
"roleAllowSsh": "Разреши SSH",
|
||||
"roleAllowSshAllow": "Разреши",
|
||||
@@ -3090,7 +3034,7 @@
|
||||
"enterConfirmation": "Въведете потвърждение.",
|
||||
"blueprintViewDetails": "Подробности.",
|
||||
"defaultIdentityProvider": "По подразбиране доставчик на идентичност.",
|
||||
"defaultIdentityProviderDescription": "The user will be automatically redirected to this identity provider for authentication.",
|
||||
"defaultIdentityProviderDescription": "Когато е избран основен доставчик на идентичност, потребителят ще бъде автоматично пренасочен към доставчика за удостоверяване.",
|
||||
"editInternalResourceDialogNetworkSettings": "Мрежови настройки.",
|
||||
"editInternalResourceDialogAccessPolicy": "Политика за достъп.",
|
||||
"editInternalResourceDialogAddRoles": "Добавяне на роли.",
|
||||
@@ -3402,8 +3346,6 @@
|
||||
"idpUnassociateQuestion": "Сигурни ли сте, че искате да отвържете този доставчик на самоличност от тази организация?",
|
||||
"idpUnassociateDescription": "Всички потребители, свързани с този доставчик на самоличност, ще бъдат премахнати от тази организация, но доставчика на самоличност ще продължи да съществува за други свързани организации.",
|
||||
"idpUnassociateConfirm": "Потвърдете отвързване на доставчика на самоличност",
|
||||
"idpConfirmDeleteAndRemoveMeFromOrg": "DELETE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateAndRemoveMeFromOrg": "UNASSOCIATE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateWarning": "Това не може да бъде отменено за тази организация.",
|
||||
"idpUnassociatedDescription": "Доставчика на самоличност е успешно отвързан от тази организация",
|
||||
"idpUnassociateMenu": "Отвързване",
|
||||
@@ -3510,43 +3452,5 @@
|
||||
"sshErrorNoTarget": "Няма посочена цел",
|
||||
"sshErrorWebSocket": "Неуспешно създаване на WebSocket връзка",
|
||||
"sshErrorAuthFailed": "Неуспешна идентификация",
|
||||
"sshErrorConnectionClosed": "Връзката е затворена преди завършване на идентификацията",
|
||||
"sitePangolinSshDescription": "Allow SSH access to resources on this site. This can be changed later.",
|
||||
"browserGatewayNoResourceForDomain": "No resource found for this domain",
|
||||
"browserGatewayNoTarget": "No target",
|
||||
"browserGatewayConnect": "Connect",
|
||||
"browserGatewayCtrlAltDel": "Ctrl+Alt+Del",
|
||||
"sshErrorSignKeyFailed": "Failed to sign SSH key for PAM push authentication. Did you sign in as a user?",
|
||||
"sshTerminalError": "Error: {error}",
|
||||
"sshConnectionClosedCode": "Connection closed (code {code})",
|
||||
"sshPrivateKeyPlaceholder": "-----BEGIN OPENSSH PRIVATE KEY-----",
|
||||
"sshPrivateKeyRequired": "Private key is required",
|
||||
"vncTitle": "VNC",
|
||||
"vncSignInDescription": "Enter your VNC password to connect",
|
||||
"vncPasswordOptional": "Password (optional)",
|
||||
"vncNoResourceTarget": "No resource target is available",
|
||||
"vncFailedToLoadNovnc": "Failed to load noVNC",
|
||||
"vncAuthFailedStatus": "Status {status}",
|
||||
"vncPasteClipboard": "Paste clipboard",
|
||||
"rdpTitle": "RDP",
|
||||
"rdpSignInTitle": "Sign in to Remote Desktop",
|
||||
"rdpSignInDescription": "Enter Windows credentials to connect",
|
||||
"rdpLoadingModule": "Loading module...",
|
||||
"rdpFailedToLoadModule": "Failed to load RDP module",
|
||||
"rdpNotReady": "Not ready",
|
||||
"rdpModuleInitializing": "RDP module is still initializing",
|
||||
"rdpDownloadingFiles": "Downloading {count} file(s) from remote…",
|
||||
"rdpDownloadFailed": "Download failed: {fileName}",
|
||||
"rdpUploaded": "Uploaded: {fileName}",
|
||||
"rdpNoConnectionTarget": "No connection target available",
|
||||
"rdpConnectionFailed": "Connection failed",
|
||||
"rdpFit": "Fit",
|
||||
"rdpFull": "Full",
|
||||
"rdpReal": "Real",
|
||||
"rdpMeta": "Meta",
|
||||
"rdpUploadFiles": "Upload files",
|
||||
"rdpFilesReadyToPaste": "Files ready to paste",
|
||||
"rdpFilesReadyToPasteDescription": "{count} file(s) copied to remote clipboard — press Ctrl+V on the remote desktop to paste.",
|
||||
"rdpUploadFailed": "Upload failed",
|
||||
"rdpUnicodeKeyboardMode": "Unicode keyboard mode"
|
||||
"sshErrorConnectionClosed": "Връзката е затворена преди завършване на идентификацията"
|
||||
}
|
||||
|
||||
@@ -101,8 +101,6 @@
|
||||
"sitesTableViewPrivateResources": "Zobrazit soukromé zdroje",
|
||||
"siteInstallNewt": "Nainstalovat Newt",
|
||||
"siteInstallNewtDescription": "Spustit Newt na vašem systému",
|
||||
"siteInstallKubernetesDocsDescription": "For more and up to date Kubernetes installation information, see <docsLink>docs.pangolin.net/manage/sites/install-kubernetes</docsLink>.",
|
||||
"siteInstallAdvantechDocsDescription": "For Advantech modem installation instructions, see <docsLink>docs.pangolin.net/manage/sites/install-advantech</docsLink>.",
|
||||
"WgConfiguration": "Konfigurace WireGuard",
|
||||
"WgConfigurationDescription": "K připojení k síti použijte následující konfiguraci",
|
||||
"operatingSystem": "Operační systém",
|
||||
@@ -202,8 +200,8 @@
|
||||
"shareErrorSelectResource": "Zvolte prosím zdroj",
|
||||
"proxyResourceTitle": "Spravovat veřejné zdroje",
|
||||
"proxyResourceDescription": "Vytváření a správa zdrojů, které jsou veřejně přístupné prostřednictvím webového prohlížeče",
|
||||
"publicResourcesBannerTitle": "Web-based Public Access",
|
||||
"publicResourcesBannerDescription": "Public resources are HTTPS proxies accessible to anyone on the internet through a web browser. Unlike private resources, they do not require client-side software and can include identity and context-aware access policies.",
|
||||
"proxyResourcesBannerTitle": "Veřejný přístup založený na webu",
|
||||
"proxyResourcesBannerDescription": "Veřejné prostředky jsou HTTPS nebo TCP/UDP proxy, které jsou přístupné každému na internetu prostřednictvím webového prohlížeče. Na rozdíl od soukromých prostředků nevyžadují software na straně klienta a mohou zahrnovat politiky přístupu orientované na identitu a kontext.",
|
||||
"clientResourceTitle": "Spravovat soukromé zdroje",
|
||||
"clientResourceDescription": "Vytváření a správa zdrojů, které jsou přístupné pouze prostřednictvím připojeného klienta",
|
||||
"privateResourcesBannerTitle": "Zero-Trust soukromý přístup",
|
||||
@@ -211,16 +209,15 @@
|
||||
"resourcesSearch": "Prohledat zdroje...",
|
||||
"resourceAdd": "Přidat zdroj",
|
||||
"resourceErrorDelte": "Chyba při odstraňování zdroje",
|
||||
"resourcePoliciesTitle": "Manage Public Resource Policies",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Resources",
|
||||
"resourcePoliciesTitle": "Spravovat zásady zdrojů",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Připojené zdroje",
|
||||
"resourcePoliciesAttachedResources": "{count} zdroj(e/ů)",
|
||||
"resourcePoliciesAttachedResourcesCount": "{count, plural, one {# resource} other {# resources}}",
|
||||
"resourcePoliciesAttachedResourcesEmpty": "žádné zdroje",
|
||||
"resourcePoliciesDescription": "Create and manage authentication policies to control access to your public resources",
|
||||
"resourcePoliciesDescription": "Vytvářejte a spravujte zásady ověřování k řízení přístupu ke svým zdrojům",
|
||||
"resourcePoliciesSearch": "Hledat zásady...",
|
||||
"resourcePoliciesAdd": "Přidat zásadu",
|
||||
"resourcePoliciesDefaultBadgeText": "Výchozí zásada",
|
||||
"resourcePoliciesCreate": "Create Public Resource Policy",
|
||||
"resourcePoliciesCreate": "Vytvořit zásadu zdroje",
|
||||
"resourcePoliciesCreateDescription": "Postupujte podle následujících kroků k vytvoření nové zásady",
|
||||
"resourcePolicyName": "Název zásady",
|
||||
"resourcePolicyNameDescription": "Pojmenujte tuto zásadu, aby byla rozpoznatelná napříč vašimi zdroji",
|
||||
@@ -314,7 +311,7 @@
|
||||
"rules": "Pravidla",
|
||||
"resourceSettingDescription": "Konfigurace nastavení na zdroji",
|
||||
"resourceSetting": "Nastavení {resourceName}",
|
||||
"resourcePolicySettingDescription": "Configure the settings on this public resource policy",
|
||||
"resourcePolicySettingDescription": "Nakonfigurujte nastavení na zásadě zdroje",
|
||||
"resourcePolicySetting": "Nastavení {policyName}",
|
||||
"alwaysAllow": "Obejít Auth",
|
||||
"alwaysDeny": "Blokovat přístup",
|
||||
@@ -756,11 +753,11 @@
|
||||
"rulesErrorDuplicate": "Duplikovat pravidlo",
|
||||
"rulesErrorDuplicateDescription": "Pravidlo s těmito nastaveními již existuje",
|
||||
"rulesErrorInvalidIpAddressRange": "Neplatný CIDR",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Enter a valid CIDR range (e.g., 10.0.0.0/8).",
|
||||
"rulesErrorInvalidUrl": "Invalid path",
|
||||
"rulesErrorInvalidUrlDescription": "Enter a valid URL path or pattern (e.g., /api/*).",
|
||||
"rulesErrorInvalidIpAddress": "Invalid IP address",
|
||||
"rulesErrorInvalidIpAddressDescription": "Enter a valid IPv4 or IPv6 address.",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Zadejte prosím platnou hodnotu CIDR",
|
||||
"rulesErrorInvalidUrl": "Neplatná URL cesta",
|
||||
"rulesErrorInvalidUrlDescription": "Zadejte platnou hodnotu URL cesty",
|
||||
"rulesErrorInvalidIpAddress": "Neplatná IP adresa",
|
||||
"rulesErrorInvalidIpAddressDescription": "Zadejte prosím platnou IP adresu",
|
||||
"rulesErrorUpdate": "Aktualizace pravidel se nezdařila",
|
||||
"rulesErrorUpdateDescription": "Při aktualizaci pravidel došlo k chybě",
|
||||
"rulesUpdated": "Povolit pravidla",
|
||||
@@ -768,23 +765,15 @@
|
||||
"rulesMatchIpAddressRangeDescription": "Zadejte adresu ve formátu CIDR (např. 103.21.244.0/22)",
|
||||
"rulesMatchIpAddress": "Zadejte IP adresu (např. 103.21.244.12)",
|
||||
"rulesMatchUrl": "Zadejte URL cestu nebo vzor (např. /api/v1/todos nebo /api/v1/*)",
|
||||
"rulesErrorInvalidPriority": "Invalid priority",
|
||||
"rulesErrorInvalidPriorityDescription": "Enter a whole number of 1 or higher.",
|
||||
"rulesErrorDuplicatePriority": "Duplicate priorities",
|
||||
"rulesErrorDuplicatePriorityDescription": "Each rule must have a unique priority number.",
|
||||
"rulesErrorValidation": "Invalid rules",
|
||||
"rulesErrorValidationRuleDescription": "Rule {ruleNumber}: {message}",
|
||||
"rulesErrorValueRequired": "Enter a value for this rule.",
|
||||
"rulesErrorInvalidCountry": "Invalid country",
|
||||
"rulesErrorInvalidCountryDescription": "Select a valid country.",
|
||||
"rulesErrorInvalidAsn": "Invalid ASN",
|
||||
"rulesErrorInvalidAsnDescription": "Enter a valid ASN (e.g., AS15169).",
|
||||
"rulesErrorInvalidPriority": "Neplatná Priorita",
|
||||
"rulesErrorInvalidPriorityDescription": "Zadejte prosím platnou prioritu",
|
||||
"rulesErrorDuplicatePriority": "Duplikovat priority",
|
||||
"rulesErrorDuplicatePriorityDescription": "Zadejte prosím unikátní priority",
|
||||
"ruleUpdated": "Pravidla byla aktualizována",
|
||||
"ruleUpdatedDescription": "Pravidla byla úspěšně aktualizována",
|
||||
"ruleErrorUpdate": "Operace selhala",
|
||||
"ruleErrorUpdateDescription": "Při ukládání došlo k chybě",
|
||||
"rulesPriority": "Priorita",
|
||||
"rulesReorderDragHandle": "Drag to reorder rule priority",
|
||||
"rulesAction": "Akce",
|
||||
"rulesMatchType": "Typ shody",
|
||||
"value": "Hodnota",
|
||||
@@ -803,7 +792,7 @@
|
||||
"rulesResource": "Konfigurace pravidel zdroje",
|
||||
"rulesResourceDescription": "Nastavit pravidla pro kontrolu přístupu ke zdroji",
|
||||
"ruleSubmit": "Přidat pravidlo",
|
||||
"rulesNoOne": "No rules yet.",
|
||||
"rulesNoOne": "Žádná pravidla. Přidejte pravidlo pomocí formuláře.",
|
||||
"rulesOrder": "Pravidla jsou hodnocena podle priority vzestupně.",
|
||||
"rulesSubmit": "Uložit pravidla",
|
||||
"policyErrorCreate": "Chyba při vytváření zásady",
|
||||
@@ -814,44 +803,7 @@
|
||||
"policyErrorUpdateMessageDescription": "Došlo k neočekávané chybě",
|
||||
"policyCreatedSuccess": "Zásada zdroje byla úspěšně vytvořena",
|
||||
"policyUpdatedSuccess": "Zásada zdroje byla úspěšně aktualizována",
|
||||
"authMethodsSave": "Save Settings",
|
||||
"policyAuthStackTitle": "Authentication",
|
||||
"policyAuthStackDescription": "Control which authentication methods are required to access this resource",
|
||||
"policyAuthOrLogicTitle": "Multiple authentication methods active",
|
||||
"policyAuthOrLogicBanner": "Visitors may authenticate using any one of the active methods below. They do not need to complete all of them.",
|
||||
"policyAuthMethodActive": "Active",
|
||||
"policyAuthMethodOff": "Off",
|
||||
"policyAuthSsoTitle": "Platform SSO",
|
||||
"policyAuthSsoDescription": "Require sign-in through your organization's identity provider",
|
||||
"policyAuthSsoSummary": "{idp} · {users} users, {roles} roles",
|
||||
"policyAuthSsoDefaultIdp": "Default provider",
|
||||
"policyAuthAddDefaultIdentityProvider": "Add Default Identity Provider",
|
||||
"policyAuthOtherMethodsTitle": "Other Methods",
|
||||
"policyAuthOtherMethodsDescription": "Optional methods visitors can use instead of or alongside platform SSO",
|
||||
"policyAuthPasscodeTitle": "Passcode",
|
||||
"policyAuthPasscodeDescription": "Require a shared alphanumeric passcode to access the resource",
|
||||
"policyAuthPasscodeSummary": "Passcode set",
|
||||
"policyAuthPincodeTitle": "PIN Code",
|
||||
"policyAuthPincodeDescription": "A short numeric code required to access the resource",
|
||||
"policyAuthPincodeSummary": "6-digit PIN set",
|
||||
"policyAuthEmailTitle": "Email Whitelist",
|
||||
"policyAuthEmailDescription": "Allow listed email addresses with one-time passwords",
|
||||
"policyAuthEmailSummary": "{count} addresses allowed",
|
||||
"policyAuthEmailOtpCallout": "Enabling email whitelist sends a one-time password to the visitor's email on login.",
|
||||
"policyAuthHeaderAuthTitle": "Basic Header Auth",
|
||||
"policyAuthHeaderAuthDescription": "Validate a custom HTTP header name and value on each request",
|
||||
"policyAuthHeaderAuthSummary": "Header configured",
|
||||
"policyAuthHeaderName": "Header name",
|
||||
"policyAuthHeaderValue": "Expected value",
|
||||
"policyAccessRulesTitle": "Access Rules",
|
||||
"policyAccessRulesEnableDescription": "When enabled, rules are evaluated in descending order until one evaluates as true.",
|
||||
"policyAccessRulesFirstMatch": "Rules are evaluated top to bottom. The first matching rule decides the outcome.",
|
||||
"policyAccessRulesHowItWorks": "Rules match requests by path, IP address, location, or other criteria. Each rule applies an action: bypass authentication, block access, or pass to authentication. If no rule matches, traffic continues to authentication.",
|
||||
"policyAccessRulesFallthroughOff": "When rules are disabled, all traffic passes through to authentication.",
|
||||
"policyAccessRulesFallthroughOn": "When no rule matches, traffic passes through to authentication.",
|
||||
"rulesPlaceholderCidr": "10.0.0.0/8",
|
||||
"rulesPlaceholderPath": "/admin/*",
|
||||
"rulesPlaceholderGeo": "RU, KP",
|
||||
"authMethodsSave": "Uložit metody ověřování",
|
||||
"rulesSave": "Uložit pravidla",
|
||||
"resourceErrorCreate": "Chyba při vytváření zdroje",
|
||||
"resourceErrorCreateDescription": "Při vytváření zdroje došlo k chybě",
|
||||
@@ -1268,10 +1220,8 @@
|
||||
"addLabels": "Přidat štítky",
|
||||
"siteLabelsTab": "Štítky",
|
||||
"siteLabelsDescription": "Spravujte štítky přiřazené k této lokalitě.",
|
||||
"labelsNotFound": "No labels found.",
|
||||
"labelsEmptyCreateHint": "Start typing above to create a label.",
|
||||
"labelsNotFound": "Štítky nenalezeny",
|
||||
"labelSearch": "Hledat štítky",
|
||||
"labelSearchOrCreate": "Search or create a label",
|
||||
"accessLabelFilterCount": "{count, plural, one {# štítek} few {# štítky} other {# štítků}}",
|
||||
"labelOverflowCount": "+{count, plural, one {# štítek} few {# štítky} other {# štítků}}",
|
||||
"accessLabelFilterClear": "Vymazat filtry štítků",
|
||||
@@ -1512,7 +1462,7 @@
|
||||
"sidebarProxyResources": "Veřejnost",
|
||||
"sidebarClientResources": "Soukromé",
|
||||
"sidebarPolicies": "Zásady",
|
||||
"sidebarResourcePolicies": "Public Resources",
|
||||
"sidebarResourcePolicies": "Zdroje",
|
||||
"sidebarAccessControl": "Kontrola přístupu",
|
||||
"sidebarLogsAndAnalytics": "Logy & Analytika",
|
||||
"sidebarTeam": "Tým",
|
||||
@@ -1520,7 +1470,7 @@
|
||||
"sidebarAdmin": "Admin",
|
||||
"sidebarInvitations": "Pozvánky",
|
||||
"sidebarRoles": "Role",
|
||||
"sidebarShareableLinks": "Share Links",
|
||||
"sidebarShareableLinks": "Odkazy",
|
||||
"sidebarApiKeys": "API klíče",
|
||||
"sidebarProvisioning": "Zajištění",
|
||||
"sidebarSettings": "Nastavení",
|
||||
@@ -1697,7 +1647,7 @@
|
||||
"standaloneHcFilterResourceIdFallback": "Zdroj {id}",
|
||||
"blueprints": "Plány",
|
||||
"blueprintsLog": "Protokol plánů",
|
||||
"blueprintsDescription": "View past blueprint applications and their results or apply a new blueprint",
|
||||
"blueprintsDescription": "Prohlédněte si aplikace předchozích plánů a jejich výsledky",
|
||||
"blueprintAdd": "Přidat plán",
|
||||
"blueprintGoBack": "Zobrazit všechny plány",
|
||||
"blueprintCreate": "Vytvořit plán",
|
||||
@@ -2077,13 +2027,13 @@
|
||||
"healthCheckUnknown": "Neznámý",
|
||||
"healthCheck": "Kontrola stavu",
|
||||
"configureHealthCheck": "Konfigurace kontroly stavu",
|
||||
"configureHealthCheckDescription": "Set up monitoring for your resource to ensure it is always available",
|
||||
"configureHealthCheckDescription": "Nastavit sledování zdravotního stavu pro {target}",
|
||||
"enableHealthChecks": "Povolit kontrolu stavu",
|
||||
"healthCheckDisabledStateDescription": "Pokud je zakázáno, web nebude provádět zdravotní kontroly a stav bude považován za neznámý.",
|
||||
"enableHealthChecksDescription": "Sledujte zdraví tohoto cíle. V případě potřeby můžete sledovat jiný cílový bod, než je cíl.",
|
||||
"healthScheme": "Způsob",
|
||||
"healthSelectScheme": "Vybrat metodu",
|
||||
"healthCheckPortInvalid": "Port must be between 1 and 65535",
|
||||
"healthCheckPortInvalid": "Přístav kontroly stavu musí být mezi 1 a 65535",
|
||||
"healthCheckPath": "Cesta",
|
||||
"healthHostname": "IP / Hostitel",
|
||||
"healthPort": "Přístav",
|
||||
@@ -2096,7 +2046,6 @@
|
||||
"requireDeviceApproval": "Vyžadovat schválení zařízení",
|
||||
"requireDeviceApprovalDescription": "Uživatelé s touto rolí potřebují nová zařízení schválená správcem, než se mohou připojit a přistupovat ke zdrojům.",
|
||||
"sshSettings": "Nastavení SSH",
|
||||
"sshAccess": "SSH Access",
|
||||
"rdpSettings": "Nastavení RDP",
|
||||
"vncSettings": "Nastavení VNC",
|
||||
"sshServer": "SSH server",
|
||||
@@ -2123,13 +2072,8 @@
|
||||
"sshDaemonDisclaimer": "Ujistěte se, že váš cílový hostitel je správně nakonfigurován k přímu spuštění ověřovacího démona, jinak zřizování selže.",
|
||||
"sshDaemonPort": "Port démona",
|
||||
"sshServerDestination": "Cíl serveru",
|
||||
"sshServerDestinationDescription": "Configure the destination of the SSH server",
|
||||
"sshServerDestinationDescription": "Nakonfigurujte cíl a port SSH serveru",
|
||||
"destination": "Cíl",
|
||||
"destinationRequired": "Destination is required.",
|
||||
"domainRequired": "Domain is required.",
|
||||
"proxyPortRequired": "Port is required.",
|
||||
"invalidPathConfiguration": "Invalid path configuration.",
|
||||
"invalidRewritePathConfiguration": "Invalid rewrite path configuration.",
|
||||
"bgTargetMultiSiteDisclaimer": "Výběr více lokalit umožňuje odolné směrování a převzetí služeb při selhání pro vysokou dostupnost.",
|
||||
"roleAllowSsh": "Povolit SSH",
|
||||
"roleAllowSshAllow": "Povolit",
|
||||
@@ -3090,7 +3034,7 @@
|
||||
"enterConfirmation": "Zadejte potvrzení",
|
||||
"blueprintViewDetails": "Detaily",
|
||||
"defaultIdentityProvider": "Výchozí poskytovatel identity",
|
||||
"defaultIdentityProviderDescription": "The user will be automatically redirected to this identity provider for authentication.",
|
||||
"defaultIdentityProviderDescription": "Pokud je vybrán výchozí poskytovatel identity, uživatel bude automaticky přesměrován na poskytovatele pro ověření.",
|
||||
"editInternalResourceDialogNetworkSettings": "Nastavení sítě",
|
||||
"editInternalResourceDialogAccessPolicy": "Přístupová politika",
|
||||
"editInternalResourceDialogAddRoles": "Přidat role",
|
||||
@@ -3402,8 +3346,6 @@
|
||||
"idpUnassociateQuestion": "Opravdu chcete odpojit tohoto poskytovatele identity od této organizace?",
|
||||
"idpUnassociateDescription": "Všichni uživatelé spojení s tímto poskytovatelem identity budou odstraněni z této organizace, ale poskytovatel identity zůstane nadále existovat pro ostatní přidružené organizace.",
|
||||
"idpUnassociateConfirm": "Potvrdit odpojení poskytovatele identity",
|
||||
"idpConfirmDeleteAndRemoveMeFromOrg": "DELETE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateAndRemoveMeFromOrg": "UNASSOCIATE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateWarning": "Toto nelze pro tuto organizaci vrátit.",
|
||||
"idpUnassociatedDescription": "Poskytovatel identity byl úspěšně odpojen od této organizace",
|
||||
"idpUnassociateMenu": "Odpojit",
|
||||
@@ -3510,43 +3452,5 @@
|
||||
"sshErrorNoTarget": "Cíl nebyl určen",
|
||||
"sshErrorWebSocket": "Chyba připojení WebSocketu",
|
||||
"sshErrorAuthFailed": "Ověření selhalo",
|
||||
"sshErrorConnectionClosed": "Připojení bylo uzavřeno před dokončením ověřování",
|
||||
"sitePangolinSshDescription": "Allow SSH access to resources on this site. This can be changed later.",
|
||||
"browserGatewayNoResourceForDomain": "No resource found for this domain",
|
||||
"browserGatewayNoTarget": "No target",
|
||||
"browserGatewayConnect": "Connect",
|
||||
"browserGatewayCtrlAltDel": "Ctrl+Alt+Del",
|
||||
"sshErrorSignKeyFailed": "Failed to sign SSH key for PAM push authentication. Did you sign in as a user?",
|
||||
"sshTerminalError": "Error: {error}",
|
||||
"sshConnectionClosedCode": "Connection closed (code {code})",
|
||||
"sshPrivateKeyPlaceholder": "-----BEGIN OPENSSH PRIVATE KEY-----",
|
||||
"sshPrivateKeyRequired": "Private key is required",
|
||||
"vncTitle": "VNC",
|
||||
"vncSignInDescription": "Enter your VNC password to connect",
|
||||
"vncPasswordOptional": "Password (optional)",
|
||||
"vncNoResourceTarget": "No resource target is available",
|
||||
"vncFailedToLoadNovnc": "Failed to load noVNC",
|
||||
"vncAuthFailedStatus": "Status {status}",
|
||||
"vncPasteClipboard": "Paste clipboard",
|
||||
"rdpTitle": "RDP",
|
||||
"rdpSignInTitle": "Sign in to Remote Desktop",
|
||||
"rdpSignInDescription": "Enter Windows credentials to connect",
|
||||
"rdpLoadingModule": "Loading module...",
|
||||
"rdpFailedToLoadModule": "Failed to load RDP module",
|
||||
"rdpNotReady": "Not ready",
|
||||
"rdpModuleInitializing": "RDP module is still initializing",
|
||||
"rdpDownloadingFiles": "Downloading {count} file(s) from remote…",
|
||||
"rdpDownloadFailed": "Download failed: {fileName}",
|
||||
"rdpUploaded": "Uploaded: {fileName}",
|
||||
"rdpNoConnectionTarget": "No connection target available",
|
||||
"rdpConnectionFailed": "Connection failed",
|
||||
"rdpFit": "Fit",
|
||||
"rdpFull": "Full",
|
||||
"rdpReal": "Real",
|
||||
"rdpMeta": "Meta",
|
||||
"rdpUploadFiles": "Upload files",
|
||||
"rdpFilesReadyToPaste": "Files ready to paste",
|
||||
"rdpFilesReadyToPasteDescription": "{count} file(s) copied to remote clipboard — press Ctrl+V on the remote desktop to paste.",
|
||||
"rdpUploadFailed": "Upload failed",
|
||||
"rdpUnicodeKeyboardMode": "Unicode keyboard mode"
|
||||
"sshErrorConnectionClosed": "Připojení bylo uzavřeno před dokončením ověřování"
|
||||
}
|
||||
|
||||
@@ -101,8 +101,6 @@
|
||||
"sitesTableViewPrivateResources": "Private Ressourcen anzeigen",
|
||||
"siteInstallNewt": "Newt installieren",
|
||||
"siteInstallNewtDescription": "Installiere Newt auf deinem System.",
|
||||
"siteInstallKubernetesDocsDescription": "For more and up to date Kubernetes installation information, see <docsLink>docs.pangolin.net/manage/sites/install-kubernetes</docsLink>.",
|
||||
"siteInstallAdvantechDocsDescription": "For Advantech modem installation instructions, see <docsLink>docs.pangolin.net/manage/sites/install-advantech</docsLink>.",
|
||||
"WgConfiguration": "WireGuard Konfiguration",
|
||||
"WgConfigurationDescription": "Verwenden Sie folgende Konfiguration, um sich mit dem Netzwerk zu verbinden",
|
||||
"operatingSystem": "Betriebssystem",
|
||||
@@ -202,8 +200,8 @@
|
||||
"shareErrorSelectResource": "Bitte wählen Sie eine Ressource",
|
||||
"proxyResourceTitle": "Öffentliche Ressourcen verwalten",
|
||||
"proxyResourceDescription": "Erstelle und verwalte Ressourcen, die über einen Webbrowser öffentlich zugänglich sind",
|
||||
"publicResourcesBannerTitle": "Web-based Public Access",
|
||||
"publicResourcesBannerDescription": "Public resources are HTTPS proxies accessible to anyone on the internet through a web browser. Unlike private resources, they do not require client-side software and can include identity and context-aware access policies.",
|
||||
"proxyResourcesBannerTitle": "Web-basierter öffentlicher Zugang",
|
||||
"proxyResourcesBannerDescription": "Öffentliche Ressourcen sind HTTPS oder TCP/UDP-Proxys, die über einen Webbrowser für jeden zugänglich sind. Im Gegensatz zu privaten Ressourcen benötigen sie keine Client-seitige Software und können Identitäts- und kontextbezogene Zugriffsrichtlinien beinhalten.",
|
||||
"clientResourceTitle": "Private Ressourcen verwalten",
|
||||
"clientResourceDescription": "Erstelle und verwalte Ressourcen, die nur über einen verbundenen Client zugänglich sind",
|
||||
"privateResourcesBannerTitle": "Zero-Trust-Zugriff auf private Ressourcen",
|
||||
@@ -211,16 +209,15 @@
|
||||
"resourcesSearch": "Suche Ressourcen...",
|
||||
"resourceAdd": "Ressource hinzufügen",
|
||||
"resourceErrorDelte": "Fehler beim Löschen der Ressource",
|
||||
"resourcePoliciesTitle": "Manage Public Resource Policies",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Resources",
|
||||
"resourcePoliciesTitle": "Ressourcenrichtlinien verwalten",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Angehängte Ressourcen",
|
||||
"resourcePoliciesAttachedResources": "{count} Ressource(n)",
|
||||
"resourcePoliciesAttachedResourcesCount": "{count, plural, one {# resource} other {# resources}}",
|
||||
"resourcePoliciesAttachedResourcesEmpty": "keine Ressourcen",
|
||||
"resourcePoliciesDescription": "Create and manage authentication policies to control access to your public resources",
|
||||
"resourcePoliciesDescription": "Erstellen und verwalten Sie Authentifizierungsrichtlinien, um den Zugang zu Ihren Ressourcen zu steuern",
|
||||
"resourcePoliciesSearch": "Richtlinien suchen...",
|
||||
"resourcePoliciesAdd": "Richtlinie hinzufügen",
|
||||
"resourcePoliciesDefaultBadgeText": "Standardrichtlinie",
|
||||
"resourcePoliciesCreate": "Create Public Resource Policy",
|
||||
"resourcePoliciesCreate": "Ressourcenrichtlinie erstellen",
|
||||
"resourcePoliciesCreateDescription": "Befolgen Sie die unten stehenden Schritte, um eine neue Richtlinie zu erstellen",
|
||||
"resourcePolicyName": "Richtlinienname",
|
||||
"resourcePolicyNameDescription": "Geben Sie dieser Richtlinie einen Namen, um sie für Ihre Ressourcen zu identifizieren",
|
||||
@@ -314,7 +311,7 @@
|
||||
"rules": "Regeln",
|
||||
"resourceSettingDescription": "Einstellungen für die Ressource konfigurieren",
|
||||
"resourceSetting": "{resourceName} Einstellungen",
|
||||
"resourcePolicySettingDescription": "Configure the settings on this public resource policy",
|
||||
"resourcePolicySettingDescription": "Konfigurieren Sie die Einstellungen der Ressourcenrichtlinie",
|
||||
"resourcePolicySetting": "{policyName} Einstellungen",
|
||||
"alwaysAllow": "Authentifizierung umgehen",
|
||||
"alwaysDeny": "Zugriff blockieren",
|
||||
@@ -756,11 +753,11 @@
|
||||
"rulesErrorDuplicate": "Doppelte Regel",
|
||||
"rulesErrorDuplicateDescription": "Eine Regel mit diesen Einstellungen existiert bereits",
|
||||
"rulesErrorInvalidIpAddressRange": "Ungültiger CIDR",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Enter a valid CIDR range (e.g., 10.0.0.0/8).",
|
||||
"rulesErrorInvalidUrl": "Invalid path",
|
||||
"rulesErrorInvalidUrlDescription": "Enter a valid URL path or pattern (e.g., /api/*).",
|
||||
"rulesErrorInvalidIpAddress": "Invalid IP address",
|
||||
"rulesErrorInvalidIpAddressDescription": "Enter a valid IPv4 or IPv6 address.",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Bitte geben Sie einen gültigen CIDR-Wert ein",
|
||||
"rulesErrorInvalidUrl": "Ungültiger URL-Pfad",
|
||||
"rulesErrorInvalidUrlDescription": "Bitte geben Sie einen gültigen URL-Pfad-Wert ein",
|
||||
"rulesErrorInvalidIpAddress": "Ungültige IP",
|
||||
"rulesErrorInvalidIpAddressDescription": "Bitte geben Sie eine gültige IP-Adresse ein",
|
||||
"rulesErrorUpdate": "Fehler beim Aktualisieren der Regeln",
|
||||
"rulesErrorUpdateDescription": "Beim Aktualisieren der Regeln ist ein Fehler aufgetreten",
|
||||
"rulesUpdated": "Regeln aktivieren",
|
||||
@@ -768,23 +765,15 @@
|
||||
"rulesMatchIpAddressRangeDescription": "Geben Sie eine Adresse im CIDR-Format ein (z.B. 103.21.244.0/22)",
|
||||
"rulesMatchIpAddress": "Geben Sie eine IP-Adresse ein (z.B. 103.21.244.12)",
|
||||
"rulesMatchUrl": "Geben Sie einen URL-Pfad oder -Muster ein (z.B. /api/v1/todos oder /api/v1/*)",
|
||||
"rulesErrorInvalidPriority": "Invalid priority",
|
||||
"rulesErrorInvalidPriorityDescription": "Enter a whole number of 1 or higher.",
|
||||
"rulesErrorDuplicatePriority": "Duplicate priorities",
|
||||
"rulesErrorDuplicatePriorityDescription": "Each rule must have a unique priority number.",
|
||||
"rulesErrorValidation": "Invalid rules",
|
||||
"rulesErrorValidationRuleDescription": "Rule {ruleNumber}: {message}",
|
||||
"rulesErrorValueRequired": "Enter a value for this rule.",
|
||||
"rulesErrorInvalidCountry": "Invalid country",
|
||||
"rulesErrorInvalidCountryDescription": "Select a valid country.",
|
||||
"rulesErrorInvalidAsn": "Invalid ASN",
|
||||
"rulesErrorInvalidAsnDescription": "Enter a valid ASN (e.g., AS15169).",
|
||||
"rulesErrorInvalidPriority": "Ungültige Priorität",
|
||||
"rulesErrorInvalidPriorityDescription": "Bitte geben Sie eine gültige Priorität ein",
|
||||
"rulesErrorDuplicatePriority": "Doppelte Prioritäten",
|
||||
"rulesErrorDuplicatePriorityDescription": "Bitte geben Sie eindeutige Prioritäten ein",
|
||||
"ruleUpdated": "Regeln aktualisiert",
|
||||
"ruleUpdatedDescription": "Regeln erfolgreich aktualisiert",
|
||||
"ruleErrorUpdate": "Operation fehlgeschlagen",
|
||||
"ruleErrorUpdateDescription": "Während des Speichervorgangs ist ein Fehler aufgetreten",
|
||||
"rulesPriority": "Priorität",
|
||||
"rulesReorderDragHandle": "Drag to reorder rule priority",
|
||||
"rulesAction": "Aktion",
|
||||
"rulesMatchType": "Übereinstimmungstyp",
|
||||
"value": "Wert",
|
||||
@@ -803,7 +792,7 @@
|
||||
"rulesResource": "Ressourcen-Regelkonfiguration",
|
||||
"rulesResourceDescription": "Regeln konfigurieren, um den Zugriff auf die Ressource zu steuern",
|
||||
"ruleSubmit": "Regel hinzufügen",
|
||||
"rulesNoOne": "No rules yet.",
|
||||
"rulesNoOne": "Keine Regeln. Fügen Sie eine Regel über das Formular hinzu.",
|
||||
"rulesOrder": "Regeln werden nach aufsteigender Priorität ausgewertet.",
|
||||
"rulesSubmit": "Regeln speichern",
|
||||
"policyErrorCreate": "Fehler beim Erstellen der Richtlinie",
|
||||
@@ -814,44 +803,7 @@
|
||||
"policyErrorUpdateMessageDescription": "Ein unerwarteter Fehler ist aufgetreten",
|
||||
"policyCreatedSuccess": "Ressourcenrichtlinie erfolgreich erstellt",
|
||||
"policyUpdatedSuccess": "Ressourcenrichtlinie erfolgreich aktualisiert",
|
||||
"authMethodsSave": "Save Settings",
|
||||
"policyAuthStackTitle": "Authentication",
|
||||
"policyAuthStackDescription": "Control which authentication methods are required to access this resource",
|
||||
"policyAuthOrLogicTitle": "Multiple authentication methods active",
|
||||
"policyAuthOrLogicBanner": "Visitors may authenticate using any one of the active methods below. They do not need to complete all of them.",
|
||||
"policyAuthMethodActive": "Active",
|
||||
"policyAuthMethodOff": "Off",
|
||||
"policyAuthSsoTitle": "Platform SSO",
|
||||
"policyAuthSsoDescription": "Require sign-in through your organization's identity provider",
|
||||
"policyAuthSsoSummary": "{idp} · {users} users, {roles} roles",
|
||||
"policyAuthSsoDefaultIdp": "Default provider",
|
||||
"policyAuthAddDefaultIdentityProvider": "Add Default Identity Provider",
|
||||
"policyAuthOtherMethodsTitle": "Other Methods",
|
||||
"policyAuthOtherMethodsDescription": "Optional methods visitors can use instead of or alongside platform SSO",
|
||||
"policyAuthPasscodeTitle": "Passcode",
|
||||
"policyAuthPasscodeDescription": "Require a shared alphanumeric passcode to access the resource",
|
||||
"policyAuthPasscodeSummary": "Passcode set",
|
||||
"policyAuthPincodeTitle": "PIN Code",
|
||||
"policyAuthPincodeDescription": "A short numeric code required to access the resource",
|
||||
"policyAuthPincodeSummary": "6-digit PIN set",
|
||||
"policyAuthEmailTitle": "Email Whitelist",
|
||||
"policyAuthEmailDescription": "Allow listed email addresses with one-time passwords",
|
||||
"policyAuthEmailSummary": "{count} addresses allowed",
|
||||
"policyAuthEmailOtpCallout": "Enabling email whitelist sends a one-time password to the visitor's email on login.",
|
||||
"policyAuthHeaderAuthTitle": "Basic Header Auth",
|
||||
"policyAuthHeaderAuthDescription": "Validate a custom HTTP header name and value on each request",
|
||||
"policyAuthHeaderAuthSummary": "Header configured",
|
||||
"policyAuthHeaderName": "Header name",
|
||||
"policyAuthHeaderValue": "Expected value",
|
||||
"policyAccessRulesTitle": "Access Rules",
|
||||
"policyAccessRulesEnableDescription": "When enabled, rules are evaluated in descending order until one evaluates as true.",
|
||||
"policyAccessRulesFirstMatch": "Rules are evaluated top to bottom. The first matching rule decides the outcome.",
|
||||
"policyAccessRulesHowItWorks": "Rules match requests by path, IP address, location, or other criteria. Each rule applies an action: bypass authentication, block access, or pass to authentication. If no rule matches, traffic continues to authentication.",
|
||||
"policyAccessRulesFallthroughOff": "When rules are disabled, all traffic passes through to authentication.",
|
||||
"policyAccessRulesFallthroughOn": "When no rule matches, traffic passes through to authentication.",
|
||||
"rulesPlaceholderCidr": "10.0.0.0/8",
|
||||
"rulesPlaceholderPath": "/admin/*",
|
||||
"rulesPlaceholderGeo": "RU, KP",
|
||||
"authMethodsSave": "Authentifizierungsmethoden speichern",
|
||||
"rulesSave": "Regeln speichern",
|
||||
"resourceErrorCreate": "Fehler beim Erstellen der Ressource",
|
||||
"resourceErrorCreateDescription": "Beim Erstellen der Ressource ist ein Fehler aufgetreten",
|
||||
@@ -1268,10 +1220,8 @@
|
||||
"addLabels": "Etiketten hinzufügen",
|
||||
"siteLabelsTab": "Etiketten",
|
||||
"siteLabelsDescription": "Verwalten Sie die mit diesem Standort verbundenen Etiketten.",
|
||||
"labelsNotFound": "No labels found.",
|
||||
"labelsEmptyCreateHint": "Start typing above to create a label.",
|
||||
"labelsNotFound": "Etiketten nicht gefunden",
|
||||
"labelSearch": "Etiketten suchen",
|
||||
"labelSearchOrCreate": "Search or create a label",
|
||||
"accessLabelFilterCount": "{count, plural, one {# Etikett} other {# Etiketten}}",
|
||||
"labelOverflowCount": "+{count, plural, one {# Etikett} other {# Etiketten}}",
|
||||
"accessLabelFilterClear": "Etikettenfilter löschen",
|
||||
@@ -1512,7 +1462,7 @@
|
||||
"sidebarProxyResources": "Öffentlich",
|
||||
"sidebarClientResources": "Privat",
|
||||
"sidebarPolicies": "Richtlinien",
|
||||
"sidebarResourcePolicies": "Public Resources",
|
||||
"sidebarResourcePolicies": "Ressourcen",
|
||||
"sidebarAccessControl": "Zugriffskontrolle",
|
||||
"sidebarLogsAndAnalytics": "Protokolle & Analysen",
|
||||
"sidebarTeam": "Team",
|
||||
@@ -1520,7 +1470,7 @@
|
||||
"sidebarAdmin": "Admin",
|
||||
"sidebarInvitations": "Einladungen",
|
||||
"sidebarRoles": "Rollen",
|
||||
"sidebarShareableLinks": "Share Links",
|
||||
"sidebarShareableLinks": "Links",
|
||||
"sidebarApiKeys": "API-Schlüssel",
|
||||
"sidebarProvisioning": "Bereitstellung",
|
||||
"sidebarSettings": "Einstellungen",
|
||||
@@ -1697,7 +1647,7 @@
|
||||
"standaloneHcFilterResourceIdFallback": "Ressource {id}",
|
||||
"blueprints": "Blaupausen",
|
||||
"blueprintsLog": "Blaupausen-Protokoll",
|
||||
"blueprintsDescription": "View past blueprint applications and their results or apply a new blueprint",
|
||||
"blueprintsDescription": "Frühere Blaupausen-Anwendungen und deren Ergebnisse ansehen",
|
||||
"blueprintAdd": "Blueprint hinzufügen",
|
||||
"blueprintGoBack": "Alle Blueprints ansehen",
|
||||
"blueprintCreate": "Blueprint erstellen",
|
||||
@@ -2077,13 +2027,13 @@
|
||||
"healthCheckUnknown": "Unbekannt",
|
||||
"healthCheck": "Gesundheits-Check",
|
||||
"configureHealthCheck": "Gesundheits-Check konfigurieren",
|
||||
"configureHealthCheckDescription": "Set up monitoring for your resource to ensure it is always available",
|
||||
"configureHealthCheckDescription": "Richten Sie die Gesundheitsüberwachung für {target} ein",
|
||||
"enableHealthChecks": "Gesundheits-Checks aktivieren",
|
||||
"healthCheckDisabledStateDescription": "Wenn deaktiviert, führt der Standort keine Gesundheitsprüfungen durch und der Zustand wird als unbekannt betrachtet.",
|
||||
"enableHealthChecksDescription": "Überwachen Sie die Gesundheit dieses Ziels. Bei Bedarf können Sie einen anderen Endpunkt als das Ziel überwachen.",
|
||||
"healthScheme": "Methode",
|
||||
"healthSelectScheme": "Methode auswählen",
|
||||
"healthCheckPortInvalid": "Port must be between 1 and 65535",
|
||||
"healthCheckPortInvalid": "Der Gesundheitskontroll-Port muss zwischen 1 und 65535 liegen",
|
||||
"healthCheckPath": "Pfad",
|
||||
"healthHostname": "IP / Host",
|
||||
"healthPort": "Port",
|
||||
@@ -2096,7 +2046,6 @@
|
||||
"requireDeviceApproval": "Gerätegenehmigungen erforderlich",
|
||||
"requireDeviceApprovalDescription": "Benutzer mit dieser Rolle benötigen neue Geräte, die von einem Administrator genehmigt wurden, bevor sie sich verbinden und auf Ressourcen zugreifen können.",
|
||||
"sshSettings": "SSH-Einstellungen",
|
||||
"sshAccess": "SSH Access",
|
||||
"rdpSettings": "RDP-Einstellungen",
|
||||
"vncSettings": "VNC-Einstellungen",
|
||||
"sshServer": "SSH-Server",
|
||||
@@ -2123,13 +2072,8 @@
|
||||
"sshDaemonDisclaimer": "Stellen Sie sicher, dass Ihr Zielhost korrekt konfiguriert ist, um den Auth-Daemon auszuführen, bevor Sie dieses Setup abschließen, andernfalls wird die Bereitstellung fehlschlagen.",
|
||||
"sshDaemonPort": "Daemon-Port",
|
||||
"sshServerDestination": "Serverziel",
|
||||
"sshServerDestinationDescription": "Configure the destination of the SSH server",
|
||||
"sshServerDestinationDescription": "Konfigurieren Sie das Ziel und den Port des SSH-Servers",
|
||||
"destination": "Ziel",
|
||||
"destinationRequired": "Destination is required.",
|
||||
"domainRequired": "Domain is required.",
|
||||
"proxyPortRequired": "Port is required.",
|
||||
"invalidPathConfiguration": "Invalid path configuration.",
|
||||
"invalidRewritePathConfiguration": "Invalid rewrite path configuration.",
|
||||
"bgTargetMultiSiteDisclaimer": "Die Auswahl mehrerer Standorte ermöglicht eine widerstandsfähige Weiterleitung und einen Failover für hohe Verfügbarkeit.",
|
||||
"roleAllowSsh": "SSH erlauben",
|
||||
"roleAllowSshAllow": "Erlauben",
|
||||
@@ -3090,7 +3034,7 @@
|
||||
"enterConfirmation": "Bestätigung eingeben",
|
||||
"blueprintViewDetails": "Details",
|
||||
"defaultIdentityProvider": "Standard Identitätsanbieter",
|
||||
"defaultIdentityProviderDescription": "The user will be automatically redirected to this identity provider for authentication.",
|
||||
"defaultIdentityProviderDescription": "Wenn ein Standard-Identity Provider ausgewählt ist, wird der Benutzer zur Authentifizierung automatisch an den Anbieter weitergeleitet.",
|
||||
"editInternalResourceDialogNetworkSettings": "Netzwerkeinstellungen",
|
||||
"editInternalResourceDialogAccessPolicy": "Zugriffsrichtlinie",
|
||||
"editInternalResourceDialogAddRoles": "Rollen hinzufügen",
|
||||
@@ -3402,8 +3346,6 @@
|
||||
"idpUnassociateQuestion": "Sind Sie sicher, dass Sie die Verknüpfung dieses Identitätsanbieters mit dieser Organisation aufheben möchten?",
|
||||
"idpUnassociateDescription": "Alle Benutzer, die mit diesem Identitätsanbieter verbunden sind, werden aus dieser Organisation entfernt, aber der Identitätsanbieter bleibt für andere verbundene Organisationen weiterhin bestehen.",
|
||||
"idpUnassociateConfirm": "Verknüpfung des Identitätsanbieters aufheben bestätigen",
|
||||
"idpConfirmDeleteAndRemoveMeFromOrg": "DELETE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateAndRemoveMeFromOrg": "UNASSOCIATE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateWarning": "Dies kann für diese Organisation nicht rückgängig gemacht werden.",
|
||||
"idpUnassociatedDescription": "Identitätsanbieter erfolgreich von dieser Organisation gelöst",
|
||||
"idpUnassociateMenu": "Verknüpfung aufheben",
|
||||
@@ -3510,43 +3452,5 @@
|
||||
"sshErrorNoTarget": "Kein Ziel angegeben",
|
||||
"sshErrorWebSocket": "WebSocket-Verbindung fehlgeschlagen",
|
||||
"sshErrorAuthFailed": "Authentifizierung fehlgeschlagen",
|
||||
"sshErrorConnectionClosed": "Verbindung geschlossen, bevor die Authentifizierung abgeschlossen wurde",
|
||||
"sitePangolinSshDescription": "Allow SSH access to resources on this site. This can be changed later.",
|
||||
"browserGatewayNoResourceForDomain": "No resource found for this domain",
|
||||
"browserGatewayNoTarget": "No target",
|
||||
"browserGatewayConnect": "Connect",
|
||||
"browserGatewayCtrlAltDel": "Ctrl+Alt+Del",
|
||||
"sshErrorSignKeyFailed": "Failed to sign SSH key for PAM push authentication. Did you sign in as a user?",
|
||||
"sshTerminalError": "Error: {error}",
|
||||
"sshConnectionClosedCode": "Connection closed (code {code})",
|
||||
"sshPrivateKeyPlaceholder": "-----BEGIN OPENSSH PRIVATE KEY-----",
|
||||
"sshPrivateKeyRequired": "Private key is required",
|
||||
"vncTitle": "VNC",
|
||||
"vncSignInDescription": "Enter your VNC password to connect",
|
||||
"vncPasswordOptional": "Password (optional)",
|
||||
"vncNoResourceTarget": "No resource target is available",
|
||||
"vncFailedToLoadNovnc": "Failed to load noVNC",
|
||||
"vncAuthFailedStatus": "Status {status}",
|
||||
"vncPasteClipboard": "Paste clipboard",
|
||||
"rdpTitle": "RDP",
|
||||
"rdpSignInTitle": "Sign in to Remote Desktop",
|
||||
"rdpSignInDescription": "Enter Windows credentials to connect",
|
||||
"rdpLoadingModule": "Loading module...",
|
||||
"rdpFailedToLoadModule": "Failed to load RDP module",
|
||||
"rdpNotReady": "Not ready",
|
||||
"rdpModuleInitializing": "RDP module is still initializing",
|
||||
"rdpDownloadingFiles": "Downloading {count} file(s) from remote…",
|
||||
"rdpDownloadFailed": "Download failed: {fileName}",
|
||||
"rdpUploaded": "Uploaded: {fileName}",
|
||||
"rdpNoConnectionTarget": "No connection target available",
|
||||
"rdpConnectionFailed": "Connection failed",
|
||||
"rdpFit": "Fit",
|
||||
"rdpFull": "Full",
|
||||
"rdpReal": "Real",
|
||||
"rdpMeta": "Meta",
|
||||
"rdpUploadFiles": "Upload files",
|
||||
"rdpFilesReadyToPaste": "Files ready to paste",
|
||||
"rdpFilesReadyToPasteDescription": "{count} file(s) copied to remote clipboard — press Ctrl+V on the remote desktop to paste.",
|
||||
"rdpUploadFailed": "Upload failed",
|
||||
"rdpUnicodeKeyboardMode": "Unicode keyboard mode"
|
||||
"sshErrorConnectionClosed": "Verbindung geschlossen, bevor die Authentifizierung abgeschlossen wurde"
|
||||
}
|
||||
|
||||
@@ -2046,6 +2046,7 @@
|
||||
"requireDeviceApproval": "Require Device Approvals",
|
||||
"requireDeviceApprovalDescription": "Users with this role need new devices approved by an admin before they can connect and access resources.",
|
||||
"sshSettings": "SSH Settings",
|
||||
"sshAccess": "SSH Access",
|
||||
"rdpSettings": "RDP Settings",
|
||||
"vncSettings": "VNC Settings",
|
||||
"sshServer": "SSH Server",
|
||||
|
||||
@@ -101,8 +101,6 @@
|
||||
"sitesTableViewPrivateResources": "Ver Recursos Privados",
|
||||
"siteInstallNewt": "Instalar Newt",
|
||||
"siteInstallNewtDescription": "Recibe Newt corriendo en tu sistema",
|
||||
"siteInstallKubernetesDocsDescription": "For more and up to date Kubernetes installation information, see <docsLink>docs.pangolin.net/manage/sites/install-kubernetes</docsLink>.",
|
||||
"siteInstallAdvantechDocsDescription": "For Advantech modem installation instructions, see <docsLink>docs.pangolin.net/manage/sites/install-advantech</docsLink>.",
|
||||
"WgConfiguration": "Configuración de Wirex Guard",
|
||||
"WgConfigurationDescription": "Utilice la siguiente configuración para conectarse a la red",
|
||||
"operatingSystem": "Sistema operativo",
|
||||
@@ -202,8 +200,8 @@
|
||||
"shareErrorSelectResource": "Por favor, seleccione un recurso",
|
||||
"proxyResourceTitle": "Administrar recursos públicos",
|
||||
"proxyResourceDescription": "Crear y administrar recursos que sean accesibles públicamente a través de un navegador web",
|
||||
"publicResourcesBannerTitle": "Web-based Public Access",
|
||||
"publicResourcesBannerDescription": "Public resources are HTTPS proxies accessible to anyone on the internet through a web browser. Unlike private resources, they do not require client-side software and can include identity and context-aware access policies.",
|
||||
"proxyResourcesBannerTitle": "Acceso público basado en web",
|
||||
"proxyResourcesBannerDescription": "Los recursos públicos son proxies HTTPS o TCP/UDP accesibles a cualquiera en Internet a través de un navegador web. A diferencia de los recursos privados, no requieren software del lado del cliente e incluye políticas de acceso basadas en identidad y contexto.",
|
||||
"clientResourceTitle": "Administrar recursos privados",
|
||||
"clientResourceDescription": "Crear y administrar recursos que sólo son accesibles a través de un cliente conectado",
|
||||
"privateResourcesBannerTitle": "Acceso privado de confianza cero",
|
||||
@@ -211,16 +209,15 @@
|
||||
"resourcesSearch": "Buscar recursos...",
|
||||
"resourceAdd": "Añadir Recurso",
|
||||
"resourceErrorDelte": "Error al eliminar el recurso",
|
||||
"resourcePoliciesTitle": "Manage Public Resource Policies",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Resources",
|
||||
"resourcePoliciesTitle": "Administrar Políticas de Recursos",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Recursos Adjuntos",
|
||||
"resourcePoliciesAttachedResources": "{count} recurso/s",
|
||||
"resourcePoliciesAttachedResourcesCount": "{count, plural, one {# resource} other {# resources}}",
|
||||
"resourcePoliciesAttachedResourcesEmpty": "sin recursos",
|
||||
"resourcePoliciesDescription": "Create and manage authentication policies to control access to your public resources",
|
||||
"resourcePoliciesDescription": "Cree y administre políticas de autenticación para controlar el acceso a sus recursos",
|
||||
"resourcePoliciesSearch": "Buscar políticas...",
|
||||
"resourcePoliciesAdd": "Agregar Política",
|
||||
"resourcePoliciesDefaultBadgeText": "Política predeterminada",
|
||||
"resourcePoliciesCreate": "Create Public Resource Policy",
|
||||
"resourcePoliciesCreate": "Crear Política de Recursos",
|
||||
"resourcePoliciesCreateDescription": "Siga los pasos a continuación para crear una nueva política",
|
||||
"resourcePolicyName": "Nombre de la política",
|
||||
"resourcePolicyNameDescription": "Déle a esta política un nombre para identificarla en sus recursos",
|
||||
@@ -314,7 +311,7 @@
|
||||
"rules": "Reglas",
|
||||
"resourceSettingDescription": "Configurar la configuración del recurso",
|
||||
"resourceSetting": "Ajustes {resourceName}",
|
||||
"resourcePolicySettingDescription": "Configure the settings on this public resource policy",
|
||||
"resourcePolicySettingDescription": "Configure la configuración en la política de recursos",
|
||||
"resourcePolicySetting": "Configuración {policyName}",
|
||||
"alwaysAllow": "Autorización Bypass",
|
||||
"alwaysDeny": "Bloquear acceso",
|
||||
@@ -756,11 +753,11 @@
|
||||
"rulesErrorDuplicate": "Duplicar regla",
|
||||
"rulesErrorDuplicateDescription": "Ya existe una regla con estos ajustes",
|
||||
"rulesErrorInvalidIpAddressRange": "CIDR inválido",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Enter a valid CIDR range (e.g., 10.0.0.0/8).",
|
||||
"rulesErrorInvalidUrl": "Invalid path",
|
||||
"rulesErrorInvalidUrlDescription": "Enter a valid URL path or pattern (e.g., /api/*).",
|
||||
"rulesErrorInvalidIpAddress": "Invalid IP address",
|
||||
"rulesErrorInvalidIpAddressDescription": "Enter a valid IPv4 or IPv6 address.",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Por favor, introduzca un valor CIDR válido",
|
||||
"rulesErrorInvalidUrl": "Ruta URL inválida",
|
||||
"rulesErrorInvalidUrlDescription": "Por favor, introduzca un valor de ruta de URL válido",
|
||||
"rulesErrorInvalidIpAddress": "IP inválida",
|
||||
"rulesErrorInvalidIpAddressDescription": "Por favor, introduzca una dirección IP válida",
|
||||
"rulesErrorUpdate": "Error al actualizar las reglas",
|
||||
"rulesErrorUpdateDescription": "Se ha producido un error al actualizar las reglas",
|
||||
"rulesUpdated": "Activar Reglas",
|
||||
@@ -768,23 +765,15 @@
|
||||
"rulesMatchIpAddressRangeDescription": "Introduzca una dirección en formato CIDR (por ejemplo, 103.21.244.0/22)",
|
||||
"rulesMatchIpAddress": "Introduzca una dirección IP (por ejemplo, 103.21.244.12)",
|
||||
"rulesMatchUrl": "Introduzca una ruta URL o patrón (por ej., /api/v1/todos o /api/v1/*)",
|
||||
"rulesErrorInvalidPriority": "Invalid priority",
|
||||
"rulesErrorInvalidPriorityDescription": "Enter a whole number of 1 or higher.",
|
||||
"rulesErrorDuplicatePriority": "Duplicate priorities",
|
||||
"rulesErrorDuplicatePriorityDescription": "Each rule must have a unique priority number.",
|
||||
"rulesErrorValidation": "Invalid rules",
|
||||
"rulesErrorValidationRuleDescription": "Rule {ruleNumber}: {message}",
|
||||
"rulesErrorValueRequired": "Enter a value for this rule.",
|
||||
"rulesErrorInvalidCountry": "Invalid country",
|
||||
"rulesErrorInvalidCountryDescription": "Select a valid country.",
|
||||
"rulesErrorInvalidAsn": "Invalid ASN",
|
||||
"rulesErrorInvalidAsnDescription": "Enter a valid ASN (e.g., AS15169).",
|
||||
"rulesErrorInvalidPriority": "Prioridad inválida",
|
||||
"rulesErrorInvalidPriorityDescription": "Por favor, introduzca una prioridad válida",
|
||||
"rulesErrorDuplicatePriority": "Prioridades duplicadas",
|
||||
"rulesErrorDuplicatePriorityDescription": "Por favor, introduzca prioridades únicas",
|
||||
"ruleUpdated": "Reglas actualizadas",
|
||||
"ruleUpdatedDescription": "Reglas actualizadas correctamente",
|
||||
"ruleErrorUpdate": "Operación fallida",
|
||||
"ruleErrorUpdateDescription": "Se ha producido un error durante la operación de guardado",
|
||||
"rulesPriority": "Prioridad",
|
||||
"rulesReorderDragHandle": "Drag to reorder rule priority",
|
||||
"rulesAction": "Accin",
|
||||
"rulesMatchType": "Tipo de partida",
|
||||
"value": "Valor",
|
||||
@@ -803,7 +792,7 @@
|
||||
"rulesResource": "Configuración de reglas de recursos",
|
||||
"rulesResourceDescription": "Configurar reglas para controlar el acceso al recurso",
|
||||
"ruleSubmit": "Añadir Regla",
|
||||
"rulesNoOne": "No rules yet.",
|
||||
"rulesNoOne": "No hay reglas. Agregue una regla usando el formulario.",
|
||||
"rulesOrder": "Las reglas son evaluadas por prioridad en orden ascendente.",
|
||||
"rulesSubmit": "Guardar Reglas",
|
||||
"policyErrorCreate": "Error al crear la política",
|
||||
@@ -814,44 +803,7 @@
|
||||
"policyErrorUpdateMessageDescription": "Se ha producido un error inesperado",
|
||||
"policyCreatedSuccess": "Política de recursos creada con éxito",
|
||||
"policyUpdatedSuccess": "Política de recursos actualizada con éxito",
|
||||
"authMethodsSave": "Save Settings",
|
||||
"policyAuthStackTitle": "Authentication",
|
||||
"policyAuthStackDescription": "Control which authentication methods are required to access this resource",
|
||||
"policyAuthOrLogicTitle": "Multiple authentication methods active",
|
||||
"policyAuthOrLogicBanner": "Visitors may authenticate using any one of the active methods below. They do not need to complete all of them.",
|
||||
"policyAuthMethodActive": "Active",
|
||||
"policyAuthMethodOff": "Off",
|
||||
"policyAuthSsoTitle": "Platform SSO",
|
||||
"policyAuthSsoDescription": "Require sign-in through your organization's identity provider",
|
||||
"policyAuthSsoSummary": "{idp} · {users} users, {roles} roles",
|
||||
"policyAuthSsoDefaultIdp": "Default provider",
|
||||
"policyAuthAddDefaultIdentityProvider": "Add Default Identity Provider",
|
||||
"policyAuthOtherMethodsTitle": "Other Methods",
|
||||
"policyAuthOtherMethodsDescription": "Optional methods visitors can use instead of or alongside platform SSO",
|
||||
"policyAuthPasscodeTitle": "Passcode",
|
||||
"policyAuthPasscodeDescription": "Require a shared alphanumeric passcode to access the resource",
|
||||
"policyAuthPasscodeSummary": "Passcode set",
|
||||
"policyAuthPincodeTitle": "PIN Code",
|
||||
"policyAuthPincodeDescription": "A short numeric code required to access the resource",
|
||||
"policyAuthPincodeSummary": "6-digit PIN set",
|
||||
"policyAuthEmailTitle": "Email Whitelist",
|
||||
"policyAuthEmailDescription": "Allow listed email addresses with one-time passwords",
|
||||
"policyAuthEmailSummary": "{count} addresses allowed",
|
||||
"policyAuthEmailOtpCallout": "Enabling email whitelist sends a one-time password to the visitor's email on login.",
|
||||
"policyAuthHeaderAuthTitle": "Basic Header Auth",
|
||||
"policyAuthHeaderAuthDescription": "Validate a custom HTTP header name and value on each request",
|
||||
"policyAuthHeaderAuthSummary": "Header configured",
|
||||
"policyAuthHeaderName": "Header name",
|
||||
"policyAuthHeaderValue": "Expected value",
|
||||
"policyAccessRulesTitle": "Access Rules",
|
||||
"policyAccessRulesEnableDescription": "When enabled, rules are evaluated in descending order until one evaluates as true.",
|
||||
"policyAccessRulesFirstMatch": "Rules are evaluated top to bottom. The first matching rule decides the outcome.",
|
||||
"policyAccessRulesHowItWorks": "Rules match requests by path, IP address, location, or other criteria. Each rule applies an action: bypass authentication, block access, or pass to authentication. If no rule matches, traffic continues to authentication.",
|
||||
"policyAccessRulesFallthroughOff": "When rules are disabled, all traffic passes through to authentication.",
|
||||
"policyAccessRulesFallthroughOn": "When no rule matches, traffic passes through to authentication.",
|
||||
"rulesPlaceholderCidr": "10.0.0.0/8",
|
||||
"rulesPlaceholderPath": "/admin/*",
|
||||
"rulesPlaceholderGeo": "RU, KP",
|
||||
"authMethodsSave": "Guardar métodos de autenticación",
|
||||
"rulesSave": "Guardar reglas",
|
||||
"resourceErrorCreate": "Error al crear recurso",
|
||||
"resourceErrorCreateDescription": "Se ha producido un error al crear el recurso",
|
||||
@@ -1268,10 +1220,8 @@
|
||||
"addLabels": "Agregar etiquetas",
|
||||
"siteLabelsTab": "Etiquetas",
|
||||
"siteLabelsDescription": "Administrar las etiquetas asociadas con este sitio.",
|
||||
"labelsNotFound": "No labels found.",
|
||||
"labelsEmptyCreateHint": "Start typing above to create a label.",
|
||||
"labelsNotFound": "Etiquetas no encontradas",
|
||||
"labelSearch": "Buscar etiquetas",
|
||||
"labelSearchOrCreate": "Search or create a label",
|
||||
"accessLabelFilterCount": "{count, plural, one {# etiqueta} other {# etiquetas}}",
|
||||
"labelOverflowCount": "+{count, plural, one {# etiqueta} other {# etiquetas}}",
|
||||
"accessLabelFilterClear": "Borrar filtros de etiquetas",
|
||||
@@ -1512,7 +1462,7 @@
|
||||
"sidebarProxyResources": "Público",
|
||||
"sidebarClientResources": "Privado",
|
||||
"sidebarPolicies": "Políticas",
|
||||
"sidebarResourcePolicies": "Public Resources",
|
||||
"sidebarResourcePolicies": "Recursos",
|
||||
"sidebarAccessControl": "Control de acceso",
|
||||
"sidebarLogsAndAnalytics": "Registros y análisis",
|
||||
"sidebarTeam": "Equipo",
|
||||
@@ -1520,7 +1470,7 @@
|
||||
"sidebarAdmin": "Admin",
|
||||
"sidebarInvitations": "Invitaciones",
|
||||
"sidebarRoles": "Roles",
|
||||
"sidebarShareableLinks": "Share Links",
|
||||
"sidebarShareableLinks": "Enlaces",
|
||||
"sidebarApiKeys": "Claves API",
|
||||
"sidebarProvisioning": "Aprovisionamiento",
|
||||
"sidebarSettings": "Ajustes",
|
||||
@@ -1697,7 +1647,7 @@
|
||||
"standaloneHcFilterResourceIdFallback": "Recurso {id}",
|
||||
"blueprints": "Planos",
|
||||
"blueprintsLog": "Registro de planos",
|
||||
"blueprintsDescription": "View past blueprint applications and their results or apply a new blueprint",
|
||||
"blueprintsDescription": "Ver aplicaciones de plano anteriores y sus resultados",
|
||||
"blueprintAdd": "Añadir plano",
|
||||
"blueprintGoBack": "Ver todos los Planos",
|
||||
"blueprintCreate": "Crear Plano",
|
||||
@@ -2077,13 +2027,13 @@
|
||||
"healthCheckUnknown": "Desconocido",
|
||||
"healthCheck": "Chequeo de salud",
|
||||
"configureHealthCheck": "Configurar Chequeo de Salud",
|
||||
"configureHealthCheckDescription": "Set up monitoring for your resource to ensure it is always available",
|
||||
"configureHealthCheckDescription": "Configura la monitorización de salud para {target}",
|
||||
"enableHealthChecks": "Activar Chequeos de Salud",
|
||||
"healthCheckDisabledStateDescription": "Cuando está deshabilitado, el sitio no realizará comprobaciones de salud y el estado se considerará desconocido.",
|
||||
"enableHealthChecksDescription": "Controlar la salud de este objetivo. Puedes supervisar un punto final diferente al objetivo si es necesario.",
|
||||
"healthScheme": "Método",
|
||||
"healthSelectScheme": "Seleccionar método",
|
||||
"healthCheckPortInvalid": "Port must be between 1 and 65535",
|
||||
"healthCheckPortInvalid": "El puerto de chequeo de salud debe estar entre 1 y 65535",
|
||||
"healthCheckPath": "Ruta",
|
||||
"healthHostname": "IP / Nombre del host",
|
||||
"healthPort": "Puerto",
|
||||
@@ -2096,7 +2046,6 @@
|
||||
"requireDeviceApproval": "Requiere aprobaciones del dispositivo",
|
||||
"requireDeviceApprovalDescription": "Los usuarios con este rol necesitan nuevos dispositivos aprobados por un administrador antes de poder conectarse y acceder a los recursos.",
|
||||
"sshSettings": "Configuración SSH",
|
||||
"sshAccess": "SSH Access",
|
||||
"rdpSettings": "Configuración RDP",
|
||||
"vncSettings": "Configuración VNC",
|
||||
"sshServer": "Servidor SSH",
|
||||
@@ -2123,13 +2072,8 @@
|
||||
"sshDaemonDisclaimer": "Asegúrese de que su host objetivo esté correctamente configurado para ejecutar el daemon de autenticación antes de completar esta configuración, o la provisión fallará.",
|
||||
"sshDaemonPort": "Puerto del Daemon",
|
||||
"sshServerDestination": "Destino del Servidor",
|
||||
"sshServerDestinationDescription": "Configure the destination of the SSH server",
|
||||
"sshServerDestinationDescription": "Configure el destino y el puerto del servidor SSH",
|
||||
"destination": "Destino",
|
||||
"destinationRequired": "Destination is required.",
|
||||
"domainRequired": "Domain is required.",
|
||||
"proxyPortRequired": "Port is required.",
|
||||
"invalidPathConfiguration": "Invalid path configuration.",
|
||||
"invalidRewritePathConfiguration": "Invalid rewrite path configuration.",
|
||||
"bgTargetMultiSiteDisclaimer": "Seleccionar múltiples sitios permite el enrutamiento resiliente y el failover para alta disponibilidad.",
|
||||
"roleAllowSsh": "Permitir SSH",
|
||||
"roleAllowSshAllow": "Permitir",
|
||||
@@ -3090,7 +3034,7 @@
|
||||
"enterConfirmation": "Ingresar confirmación",
|
||||
"blueprintViewDetails": "Detalles",
|
||||
"defaultIdentityProvider": "Proveedor de identidad predeterminado",
|
||||
"defaultIdentityProviderDescription": "The user will be automatically redirected to this identity provider for authentication.",
|
||||
"defaultIdentityProviderDescription": "Cuando se selecciona un proveedor de identidad por defecto, el usuario será redirigido automáticamente al proveedor de autenticación.",
|
||||
"editInternalResourceDialogNetworkSettings": "Configuración de red",
|
||||
"editInternalResourceDialogAccessPolicy": "Política de acceso",
|
||||
"editInternalResourceDialogAddRoles": "Agregar roles",
|
||||
@@ -3402,8 +3346,6 @@
|
||||
"idpUnassociateQuestion": "¿Está seguro de que desea desasociar este proveedor de identidad de esta organización?",
|
||||
"idpUnassociateDescription": "Todos los usuarios asociados con este proveedor de identidad serán eliminados de esta organización, pero el proveedor de identidad continuará existiendo para otras organizaciones asociadas.",
|
||||
"idpUnassociateConfirm": "Confirme Desasociar Proveedor de Identidad",
|
||||
"idpConfirmDeleteAndRemoveMeFromOrg": "DELETE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateAndRemoveMeFromOrg": "UNASSOCIATE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateWarning": "Esto no se puede deshacer para esta organización.",
|
||||
"idpUnassociatedDescription": "Proveedor de identidad desasociado de esta organización con éxito",
|
||||
"idpUnassociateMenu": "Desasociar",
|
||||
@@ -3510,43 +3452,5 @@
|
||||
"sshErrorNoTarget": "No se especificó el objetivo",
|
||||
"sshErrorWebSocket": "Conexión WebSocket fallida",
|
||||
"sshErrorAuthFailed": "Falló la autenticación",
|
||||
"sshErrorConnectionClosed": "La conexión se cerró antes de completar la autenticación",
|
||||
"sitePangolinSshDescription": "Allow SSH access to resources on this site. This can be changed later.",
|
||||
"browserGatewayNoResourceForDomain": "No resource found for this domain",
|
||||
"browserGatewayNoTarget": "No target",
|
||||
"browserGatewayConnect": "Connect",
|
||||
"browserGatewayCtrlAltDel": "Ctrl+Alt+Del",
|
||||
"sshErrorSignKeyFailed": "Failed to sign SSH key for PAM push authentication. Did you sign in as a user?",
|
||||
"sshTerminalError": "Error: {error}",
|
||||
"sshConnectionClosedCode": "Connection closed (code {code})",
|
||||
"sshPrivateKeyPlaceholder": "-----BEGIN OPENSSH PRIVATE KEY-----",
|
||||
"sshPrivateKeyRequired": "Private key is required",
|
||||
"vncTitle": "VNC",
|
||||
"vncSignInDescription": "Enter your VNC password to connect",
|
||||
"vncPasswordOptional": "Password (optional)",
|
||||
"vncNoResourceTarget": "No resource target is available",
|
||||
"vncFailedToLoadNovnc": "Failed to load noVNC",
|
||||
"vncAuthFailedStatus": "Status {status}",
|
||||
"vncPasteClipboard": "Paste clipboard",
|
||||
"rdpTitle": "RDP",
|
||||
"rdpSignInTitle": "Sign in to Remote Desktop",
|
||||
"rdpSignInDescription": "Enter Windows credentials to connect",
|
||||
"rdpLoadingModule": "Loading module...",
|
||||
"rdpFailedToLoadModule": "Failed to load RDP module",
|
||||
"rdpNotReady": "Not ready",
|
||||
"rdpModuleInitializing": "RDP module is still initializing",
|
||||
"rdpDownloadingFiles": "Downloading {count} file(s) from remote…",
|
||||
"rdpDownloadFailed": "Download failed: {fileName}",
|
||||
"rdpUploaded": "Uploaded: {fileName}",
|
||||
"rdpNoConnectionTarget": "No connection target available",
|
||||
"rdpConnectionFailed": "Connection failed",
|
||||
"rdpFit": "Fit",
|
||||
"rdpFull": "Full",
|
||||
"rdpReal": "Real",
|
||||
"rdpMeta": "Meta",
|
||||
"rdpUploadFiles": "Upload files",
|
||||
"rdpFilesReadyToPaste": "Files ready to paste",
|
||||
"rdpFilesReadyToPasteDescription": "{count} file(s) copied to remote clipboard — press Ctrl+V on the remote desktop to paste.",
|
||||
"rdpUploadFailed": "Upload failed",
|
||||
"rdpUnicodeKeyboardMode": "Unicode keyboard mode"
|
||||
"sshErrorConnectionClosed": "La conexión se cerró antes de completar la autenticación"
|
||||
}
|
||||
|
||||
@@ -101,8 +101,6 @@
|
||||
"sitesTableViewPrivateResources": "Voir les ressources privées",
|
||||
"siteInstallNewt": "Installer Newt",
|
||||
"siteInstallNewtDescription": "Faites fonctionner Newt sur votre système",
|
||||
"siteInstallKubernetesDocsDescription": "For more and up to date Kubernetes installation information, see <docsLink>docs.pangolin.net/manage/sites/install-kubernetes</docsLink>.",
|
||||
"siteInstallAdvantechDocsDescription": "For Advantech modem installation instructions, see <docsLink>docs.pangolin.net/manage/sites/install-advantech</docsLink>.",
|
||||
"WgConfiguration": "Configuration WireGuard",
|
||||
"WgConfigurationDescription": "Utilisez la configuration suivante pour vous connecter au réseau",
|
||||
"operatingSystem": "Système d'exploitation",
|
||||
@@ -202,8 +200,8 @@
|
||||
"shareErrorSelectResource": "Veuillez sélectionner une ressource",
|
||||
"proxyResourceTitle": "Gérer les ressources publiques",
|
||||
"proxyResourceDescription": "Créer et gérer des ressources accessibles au public via un navigateur web",
|
||||
"publicResourcesBannerTitle": "Web-based Public Access",
|
||||
"publicResourcesBannerDescription": "Public resources are HTTPS proxies accessible to anyone on the internet through a web browser. Unlike private resources, they do not require client-side software and can include identity and context-aware access policies.",
|
||||
"proxyResourcesBannerTitle": "Accès public basé sur le Web",
|
||||
"proxyResourcesBannerDescription": "Les ressources publiques sont des proxys HTTPS ou TCP/UDP accessibles par tout le monde sur Internet via un navigateur Web. Contrairement aux ressources privées, elles n'exigent pas de logiciel côté client et peuvent inclure des politiques d'accès basées sur l'identité et le contexte.",
|
||||
"clientResourceTitle": "Gérer les ressources privées",
|
||||
"clientResourceDescription": "Créer et gérer des ressources qui ne sont accessibles que via un client connecté",
|
||||
"privateResourcesBannerTitle": "Accès privé sans confiance",
|
||||
@@ -211,16 +209,15 @@
|
||||
"resourcesSearch": "Chercher des ressources...",
|
||||
"resourceAdd": "Ajouter une ressource",
|
||||
"resourceErrorDelte": "Erreur lors de la de suppression de la ressource",
|
||||
"resourcePoliciesTitle": "Manage Public Resource Policies",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Resources",
|
||||
"resourcePoliciesTitle": "Gérer les politiques de ressource",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Ressources attachées",
|
||||
"resourcePoliciesAttachedResources": "{count} ressource(s)",
|
||||
"resourcePoliciesAttachedResourcesCount": "{count, plural, one {# resource} other {# resources}}",
|
||||
"resourcePoliciesAttachedResourcesEmpty": "pas de ressources",
|
||||
"resourcePoliciesDescription": "Create and manage authentication policies to control access to your public resources",
|
||||
"resourcePoliciesDescription": "Créer et gérer des politiques d'authentification pour contrôler l'accès à vos ressources",
|
||||
"resourcePoliciesSearch": "Chercher des politiques...",
|
||||
"resourcePoliciesAdd": "Ajouter une politique",
|
||||
"resourcePoliciesDefaultBadgeText": "Politique par défaut",
|
||||
"resourcePoliciesCreate": "Create Public Resource Policy",
|
||||
"resourcePoliciesCreate": "Créer une politique de ressource",
|
||||
"resourcePoliciesCreateDescription": "Suivez les étapes ci-dessous pour créer une nouvelle politique",
|
||||
"resourcePolicyName": "Nom de la politique",
|
||||
"resourcePolicyNameDescription": "Donnez à cette politique un nom pour l'identifier parmi vos ressources",
|
||||
@@ -314,7 +311,7 @@
|
||||
"rules": "Règles",
|
||||
"resourceSettingDescription": "Configurer les paramètres de la ressource",
|
||||
"resourceSetting": "Réglages de {resourceName}",
|
||||
"resourcePolicySettingDescription": "Configure the settings on this public resource policy",
|
||||
"resourcePolicySettingDescription": "Configurer les paramètres de la politique de ressource",
|
||||
"resourcePolicySetting": "Paramètres de {policyName}",
|
||||
"alwaysAllow": "Outrepasser l'authentification",
|
||||
"alwaysDeny": "Bloquer l'accès",
|
||||
@@ -756,11 +753,11 @@
|
||||
"rulesErrorDuplicate": "Règle en double",
|
||||
"rulesErrorDuplicateDescription": "Une règle avec ces paramètres existe déjà",
|
||||
"rulesErrorInvalidIpAddressRange": "CIDR invalide",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Enter a valid CIDR range (e.g., 10.0.0.0/8).",
|
||||
"rulesErrorInvalidUrl": "Invalid path",
|
||||
"rulesErrorInvalidUrlDescription": "Enter a valid URL path or pattern (e.g., /api/*).",
|
||||
"rulesErrorInvalidIpAddress": "Invalid IP address",
|
||||
"rulesErrorInvalidIpAddressDescription": "Enter a valid IPv4 or IPv6 address.",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Veuillez entrer une valeur CIDR valide",
|
||||
"rulesErrorInvalidUrl": "Chemin URL invalide",
|
||||
"rulesErrorInvalidUrlDescription": "Veuillez entrer un chemin URL valide",
|
||||
"rulesErrorInvalidIpAddress": "IP invalide",
|
||||
"rulesErrorInvalidIpAddressDescription": "Veuillez entrer une adresse IP valide",
|
||||
"rulesErrorUpdate": "Échec de la mise à jour des règles",
|
||||
"rulesErrorUpdateDescription": "Une erreur s'est produite lors de la mise à jour des règles",
|
||||
"rulesUpdated": "Activer les règles",
|
||||
@@ -768,23 +765,15 @@
|
||||
"rulesMatchIpAddressRangeDescription": "Entrez une adresse au format CIDR (ex: 103.21.244.0/22)",
|
||||
"rulesMatchIpAddress": "Entrez une adresse IP (ex: 103.21.244.12)",
|
||||
"rulesMatchUrl": "Entrez un chemin URL ou un motif (ex: /api/v1/todos ou /api/v1/*)",
|
||||
"rulesErrorInvalidPriority": "Invalid priority",
|
||||
"rulesErrorInvalidPriorityDescription": "Enter a whole number of 1 or higher.",
|
||||
"rulesErrorDuplicatePriority": "Duplicate priorities",
|
||||
"rulesErrorDuplicatePriorityDescription": "Each rule must have a unique priority number.",
|
||||
"rulesErrorValidation": "Invalid rules",
|
||||
"rulesErrorValidationRuleDescription": "Rule {ruleNumber}: {message}",
|
||||
"rulesErrorValueRequired": "Enter a value for this rule.",
|
||||
"rulesErrorInvalidCountry": "Invalid country",
|
||||
"rulesErrorInvalidCountryDescription": "Select a valid country.",
|
||||
"rulesErrorInvalidAsn": "Invalid ASN",
|
||||
"rulesErrorInvalidAsnDescription": "Enter a valid ASN (e.g., AS15169).",
|
||||
"rulesErrorInvalidPriority": "Priorité invalide",
|
||||
"rulesErrorInvalidPriorityDescription": "Veuillez entrer une priorité valide",
|
||||
"rulesErrorDuplicatePriority": "Priorités en double",
|
||||
"rulesErrorDuplicatePriorityDescription": "Veuillez entrer des priorités uniques",
|
||||
"ruleUpdated": "Règles mises à jour",
|
||||
"ruleUpdatedDescription": "Règles mises à jour avec succès",
|
||||
"ruleErrorUpdate": "L'opération a échoué",
|
||||
"ruleErrorUpdateDescription": "Une erreur s'est produite lors de l'enregistrement",
|
||||
"rulesPriority": "Priorité",
|
||||
"rulesReorderDragHandle": "Drag to reorder rule priority",
|
||||
"rulesAction": "Action",
|
||||
"rulesMatchType": "Type de correspondance",
|
||||
"value": "Valeur",
|
||||
@@ -803,7 +792,7 @@
|
||||
"rulesResource": "Configuration des règles de ressource",
|
||||
"rulesResourceDescription": "Configurer les règles pour contrôler l'accès à la ressource",
|
||||
"ruleSubmit": "Ajouter une règle",
|
||||
"rulesNoOne": "No rules yet.",
|
||||
"rulesNoOne": "Aucune règle. Ajoutez une règle en utilisant le formulaire.",
|
||||
"rulesOrder": "Les règles sont évaluées par priorité dans l'ordre croissant.",
|
||||
"rulesSubmit": "Enregistrer les règles",
|
||||
"policyErrorCreate": "Erreur lors de la création de la politique",
|
||||
@@ -814,44 +803,7 @@
|
||||
"policyErrorUpdateMessageDescription": "Une erreur inattendue s'est produite",
|
||||
"policyCreatedSuccess": "Politique de ressource créée avec succès",
|
||||
"policyUpdatedSuccess": "Politique de ressource mise à jour avec succès",
|
||||
"authMethodsSave": "Save Settings",
|
||||
"policyAuthStackTitle": "Authentication",
|
||||
"policyAuthStackDescription": "Control which authentication methods are required to access this resource",
|
||||
"policyAuthOrLogicTitle": "Multiple authentication methods active",
|
||||
"policyAuthOrLogicBanner": "Visitors may authenticate using any one of the active methods below. They do not need to complete all of them.",
|
||||
"policyAuthMethodActive": "Active",
|
||||
"policyAuthMethodOff": "Off",
|
||||
"policyAuthSsoTitle": "Platform SSO",
|
||||
"policyAuthSsoDescription": "Require sign-in through your organization's identity provider",
|
||||
"policyAuthSsoSummary": "{idp} · {users} users, {roles} roles",
|
||||
"policyAuthSsoDefaultIdp": "Default provider",
|
||||
"policyAuthAddDefaultIdentityProvider": "Add Default Identity Provider",
|
||||
"policyAuthOtherMethodsTitle": "Other Methods",
|
||||
"policyAuthOtherMethodsDescription": "Optional methods visitors can use instead of or alongside platform SSO",
|
||||
"policyAuthPasscodeTitle": "Passcode",
|
||||
"policyAuthPasscodeDescription": "Require a shared alphanumeric passcode to access the resource",
|
||||
"policyAuthPasscodeSummary": "Passcode set",
|
||||
"policyAuthPincodeTitle": "PIN Code",
|
||||
"policyAuthPincodeDescription": "A short numeric code required to access the resource",
|
||||
"policyAuthPincodeSummary": "6-digit PIN set",
|
||||
"policyAuthEmailTitle": "Email Whitelist",
|
||||
"policyAuthEmailDescription": "Allow listed email addresses with one-time passwords",
|
||||
"policyAuthEmailSummary": "{count} addresses allowed",
|
||||
"policyAuthEmailOtpCallout": "Enabling email whitelist sends a one-time password to the visitor's email on login.",
|
||||
"policyAuthHeaderAuthTitle": "Basic Header Auth",
|
||||
"policyAuthHeaderAuthDescription": "Validate a custom HTTP header name and value on each request",
|
||||
"policyAuthHeaderAuthSummary": "Header configured",
|
||||
"policyAuthHeaderName": "Header name",
|
||||
"policyAuthHeaderValue": "Expected value",
|
||||
"policyAccessRulesTitle": "Access Rules",
|
||||
"policyAccessRulesEnableDescription": "When enabled, rules are evaluated in descending order until one evaluates as true.",
|
||||
"policyAccessRulesFirstMatch": "Rules are evaluated top to bottom. The first matching rule decides the outcome.",
|
||||
"policyAccessRulesHowItWorks": "Rules match requests by path, IP address, location, or other criteria. Each rule applies an action: bypass authentication, block access, or pass to authentication. If no rule matches, traffic continues to authentication.",
|
||||
"policyAccessRulesFallthroughOff": "When rules are disabled, all traffic passes through to authentication.",
|
||||
"policyAccessRulesFallthroughOn": "When no rule matches, traffic passes through to authentication.",
|
||||
"rulesPlaceholderCidr": "10.0.0.0/8",
|
||||
"rulesPlaceholderPath": "/admin/*",
|
||||
"rulesPlaceholderGeo": "RU, KP",
|
||||
"authMethodsSave": "Enregistrer les méthodes d'authentification",
|
||||
"rulesSave": "Enregistrer les règles",
|
||||
"resourceErrorCreate": "Erreur lors de la création de la ressource",
|
||||
"resourceErrorCreateDescription": "Une erreur s'est produite lors de la création de la ressource",
|
||||
@@ -1268,10 +1220,8 @@
|
||||
"addLabels": "Ajouter des étiquettes",
|
||||
"siteLabelsTab": "Étiquettes",
|
||||
"siteLabelsDescription": "Gérer les étiquettes associées à ce site.",
|
||||
"labelsNotFound": "No labels found.",
|
||||
"labelsEmptyCreateHint": "Start typing above to create a label.",
|
||||
"labelsNotFound": "Étiquettes introuvables",
|
||||
"labelSearch": "Chercher des étiquettes",
|
||||
"labelSearchOrCreate": "Search or create a label",
|
||||
"accessLabelFilterCount": "{count, plural, one {# étiquette} other {# étiquettes}}",
|
||||
"labelOverflowCount": "+{count, plural, one {# étiquette} other {# étiquettes}}",
|
||||
"accessLabelFilterClear": "Effacer les filtres d'étiquette",
|
||||
@@ -1512,7 +1462,7 @@
|
||||
"sidebarProxyResources": "Publique",
|
||||
"sidebarClientResources": "Privé",
|
||||
"sidebarPolicies": "Politiques",
|
||||
"sidebarResourcePolicies": "Public Resources",
|
||||
"sidebarResourcePolicies": "Ressources",
|
||||
"sidebarAccessControl": "Contrôle d'accès",
|
||||
"sidebarLogsAndAnalytics": "Journaux & Analytiques",
|
||||
"sidebarTeam": "Equipe",
|
||||
@@ -1520,7 +1470,7 @@
|
||||
"sidebarAdmin": "Administrateur",
|
||||
"sidebarInvitations": "Invitations",
|
||||
"sidebarRoles": "Rôles",
|
||||
"sidebarShareableLinks": "Share Links",
|
||||
"sidebarShareableLinks": "Liens",
|
||||
"sidebarApiKeys": "Clés API",
|
||||
"sidebarProvisioning": "Mise en place",
|
||||
"sidebarSettings": "Réglages",
|
||||
@@ -1697,7 +1647,7 @@
|
||||
"standaloneHcFilterResourceIdFallback": "Ressource {id}",
|
||||
"blueprints": "Configs",
|
||||
"blueprintsLog": "Journal des plans",
|
||||
"blueprintsDescription": "View past blueprint applications and their results or apply a new blueprint",
|
||||
"blueprintsDescription": "Voir les applications passées des plans et leurs résultats",
|
||||
"blueprintAdd": "Ajouter une Config",
|
||||
"blueprintGoBack": "Voir toutes les Configs",
|
||||
"blueprintCreate": "Créer une Config",
|
||||
@@ -2077,13 +2027,13 @@
|
||||
"healthCheckUnknown": "Inconnu",
|
||||
"healthCheck": "Vérification de l'état de santé",
|
||||
"configureHealthCheck": "Configurer la vérification de l'état de santé",
|
||||
"configureHealthCheckDescription": "Set up monitoring for your resource to ensure it is always available",
|
||||
"configureHealthCheckDescription": "Configurer la surveillance de la santé pour {target}",
|
||||
"enableHealthChecks": "Activer les vérifications de santé",
|
||||
"healthCheckDisabledStateDescription": "Lorsqu'il est désactivé, le site ne procédera pas aux vérifications de santé et l'état sera considéré comme inconnu.",
|
||||
"enableHealthChecksDescription": "Surveiller la vie de cette cible. Vous pouvez surveiller un point de terminaison différent de la cible si nécessaire.",
|
||||
"healthScheme": "Méthode",
|
||||
"healthSelectScheme": "Sélectionnez la méthode",
|
||||
"healthCheckPortInvalid": "Port must be between 1 and 65535",
|
||||
"healthCheckPortInvalid": "Le port du bilan de santé doit être compris entre 1 et 65535",
|
||||
"healthCheckPath": "Chemin d'accès",
|
||||
"healthHostname": "IP / Hôte",
|
||||
"healthPort": "Port",
|
||||
@@ -2096,7 +2046,6 @@
|
||||
"requireDeviceApproval": "Exiger les autorisations de l'appareil",
|
||||
"requireDeviceApprovalDescription": "Les utilisateurs ayant ce rôle ont besoin de nouveaux périphériques approuvés par un administrateur avant de pouvoir se connecter et accéder aux ressources.",
|
||||
"sshSettings": "Paramètres SSH",
|
||||
"sshAccess": "SSH Access",
|
||||
"rdpSettings": "Paramètres RDP",
|
||||
"vncSettings": "Paramètres VNC",
|
||||
"sshServer": "Serveur SSH",
|
||||
@@ -2123,13 +2072,8 @@
|
||||
"sshDaemonDisclaimer": "Assurez-vous que votre hôte cible est correctement configuré pour exécuter le daemon auth avant de terminer cette configuration, ou l'approvisionnement échouera.",
|
||||
"sshDaemonPort": "Port du Démon",
|
||||
"sshServerDestination": "Destination du Serveur",
|
||||
"sshServerDestinationDescription": "Configure the destination of the SSH server",
|
||||
"sshServerDestinationDescription": "Configurer la destination et le port du serveur SSH",
|
||||
"destination": "Destination",
|
||||
"destinationRequired": "Destination is required.",
|
||||
"domainRequired": "Domain is required.",
|
||||
"proxyPortRequired": "Port is required.",
|
||||
"invalidPathConfiguration": "Invalid path configuration.",
|
||||
"invalidRewritePathConfiguration": "Invalid rewrite path configuration.",
|
||||
"bgTargetMultiSiteDisclaimer": "La sélection de plusieurs sites permet un routage résilient et une bascule pour une haute disponibilité.",
|
||||
"roleAllowSsh": "Autoriser SSH",
|
||||
"roleAllowSshAllow": "Autoriser",
|
||||
@@ -3090,7 +3034,7 @@
|
||||
"enterConfirmation": "Entrez la confirmation",
|
||||
"blueprintViewDetails": "Détails",
|
||||
"defaultIdentityProvider": "Fournisseur d'identité par défaut",
|
||||
"defaultIdentityProviderDescription": "The user will be automatically redirected to this identity provider for authentication.",
|
||||
"defaultIdentityProviderDescription": "Lorsqu'un fournisseur d'identité par défaut est sélectionné, l'utilisateur sera automatiquement redirigé vers le fournisseur pour authentification.",
|
||||
"editInternalResourceDialogNetworkSettings": "Paramètres réseau",
|
||||
"editInternalResourceDialogAccessPolicy": "Politique d'accès",
|
||||
"editInternalResourceDialogAddRoles": "Ajouter des rôles",
|
||||
@@ -3402,8 +3346,6 @@
|
||||
"idpUnassociateQuestion": "Êtes-vous sûr de vouloir dissocier ce fournisseur d'identités de cette organisation?",
|
||||
"idpUnassociateDescription": "Tous les utilisateurs associés à ce fournisseur d'identités seront retirés de cette organisation, mais le fournisseur d'identités continuera d'exister pour d'autres organisations associées.",
|
||||
"idpUnassociateConfirm": "Confirmer la dissociation du fournisseur d'identités",
|
||||
"idpConfirmDeleteAndRemoveMeFromOrg": "DELETE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateAndRemoveMeFromOrg": "UNASSOCIATE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateWarning": "Cela ne peut pas être annulé pour cette organisation.",
|
||||
"idpUnassociatedDescription": "Fournisseur d'identités dissocié de cette organisation avec succès",
|
||||
"idpUnassociateMenu": "Dissocier",
|
||||
@@ -3510,43 +3452,5 @@
|
||||
"sshErrorNoTarget": "Aucune cible spécifiée",
|
||||
"sshErrorWebSocket": "Échec de la connexion WebSocket",
|
||||
"sshErrorAuthFailed": "Échec de l'authentification",
|
||||
"sshErrorConnectionClosed": "Connexion fermée avant que l'authentification soit terminée",
|
||||
"sitePangolinSshDescription": "Allow SSH access to resources on this site. This can be changed later.",
|
||||
"browserGatewayNoResourceForDomain": "No resource found for this domain",
|
||||
"browserGatewayNoTarget": "No target",
|
||||
"browserGatewayConnect": "Connect",
|
||||
"browserGatewayCtrlAltDel": "Ctrl+Alt+Del",
|
||||
"sshErrorSignKeyFailed": "Failed to sign SSH key for PAM push authentication. Did you sign in as a user?",
|
||||
"sshTerminalError": "Error: {error}",
|
||||
"sshConnectionClosedCode": "Connection closed (code {code})",
|
||||
"sshPrivateKeyPlaceholder": "-----BEGIN OPENSSH PRIVATE KEY-----",
|
||||
"sshPrivateKeyRequired": "Private key is required",
|
||||
"vncTitle": "VNC",
|
||||
"vncSignInDescription": "Enter your VNC password to connect",
|
||||
"vncPasswordOptional": "Password (optional)",
|
||||
"vncNoResourceTarget": "No resource target is available",
|
||||
"vncFailedToLoadNovnc": "Failed to load noVNC",
|
||||
"vncAuthFailedStatus": "Status {status}",
|
||||
"vncPasteClipboard": "Paste clipboard",
|
||||
"rdpTitle": "RDP",
|
||||
"rdpSignInTitle": "Sign in to Remote Desktop",
|
||||
"rdpSignInDescription": "Enter Windows credentials to connect",
|
||||
"rdpLoadingModule": "Loading module...",
|
||||
"rdpFailedToLoadModule": "Failed to load RDP module",
|
||||
"rdpNotReady": "Not ready",
|
||||
"rdpModuleInitializing": "RDP module is still initializing",
|
||||
"rdpDownloadingFiles": "Downloading {count} file(s) from remote…",
|
||||
"rdpDownloadFailed": "Download failed: {fileName}",
|
||||
"rdpUploaded": "Uploaded: {fileName}",
|
||||
"rdpNoConnectionTarget": "No connection target available",
|
||||
"rdpConnectionFailed": "Connection failed",
|
||||
"rdpFit": "Fit",
|
||||
"rdpFull": "Full",
|
||||
"rdpReal": "Real",
|
||||
"rdpMeta": "Meta",
|
||||
"rdpUploadFiles": "Upload files",
|
||||
"rdpFilesReadyToPaste": "Files ready to paste",
|
||||
"rdpFilesReadyToPasteDescription": "{count} file(s) copied to remote clipboard — press Ctrl+V on the remote desktop to paste.",
|
||||
"rdpUploadFailed": "Upload failed",
|
||||
"rdpUnicodeKeyboardMode": "Unicode keyboard mode"
|
||||
"sshErrorConnectionClosed": "Connexion fermée avant que l'authentification soit terminée"
|
||||
}
|
||||
|
||||
@@ -101,8 +101,6 @@
|
||||
"sitesTableViewPrivateResources": "Visualizza Risorse Private",
|
||||
"siteInstallNewt": "Installa Newt",
|
||||
"siteInstallNewtDescription": "Esegui Newt sul tuo sistema",
|
||||
"siteInstallKubernetesDocsDescription": "For more and up to date Kubernetes installation information, see <docsLink>docs.pangolin.net/manage/sites/install-kubernetes</docsLink>.",
|
||||
"siteInstallAdvantechDocsDescription": "For Advantech modem installation instructions, see <docsLink>docs.pangolin.net/manage/sites/install-advantech</docsLink>.",
|
||||
"WgConfiguration": "Configurazione WireGuard",
|
||||
"WgConfigurationDescription": "Utilizzare la seguente configurazione per connettersi alla rete",
|
||||
"operatingSystem": "Sistema Operativo",
|
||||
@@ -202,8 +200,8 @@
|
||||
"shareErrorSelectResource": "Seleziona una risorsa",
|
||||
"proxyResourceTitle": "Gestisci Risorse Pubbliche",
|
||||
"proxyResourceDescription": "Creare e gestire risorse pubbliche accessibili tramite un browser web",
|
||||
"publicResourcesBannerTitle": "Web-based Public Access",
|
||||
"publicResourcesBannerDescription": "Public resources are HTTPS proxies accessible to anyone on the internet through a web browser. Unlike private resources, they do not require client-side software and can include identity and context-aware access policies.",
|
||||
"proxyResourcesBannerTitle": "Accesso Pubblico Basato sul Web",
|
||||
"proxyResourcesBannerDescription": "Le risorse pubbliche sono proxy HTTPS o TCP/UDP accessibili da chiunque tramite Internet da un browser web. A differenza delle risorse private non richiedono software lato client e possono includere politiche di accesso basate su identità e contesto.",
|
||||
"clientResourceTitle": "Gestisci Risorse Private",
|
||||
"clientResourceDescription": "Crea e gestisci risorse accessibili solo tramite un client connesso",
|
||||
"privateResourcesBannerTitle": "Accesso Privato Zero-Trust",
|
||||
@@ -211,16 +209,15 @@
|
||||
"resourcesSearch": "Cerca risorse...",
|
||||
"resourceAdd": "Aggiungi Risorsa",
|
||||
"resourceErrorDelte": "Errore nell'eliminare la risorsa",
|
||||
"resourcePoliciesTitle": "Manage Public Resource Policies",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Resources",
|
||||
"resourcePoliciesTitle": "Gestisci Politiche sulle Risorse",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Risorse collegate",
|
||||
"resourcePoliciesAttachedResources": "{count} risorsa(e)",
|
||||
"resourcePoliciesAttachedResourcesCount": "{count, plural, one {# resource} other {# resources}}",
|
||||
"resourcePoliciesAttachedResourcesEmpty": "nessuna risorsa",
|
||||
"resourcePoliciesDescription": "Create and manage authentication policies to control access to your public resources",
|
||||
"resourcePoliciesDescription": "Crea e gestisci le politiche di autenticazione per controllare l'accesso alle tue risorse",
|
||||
"resourcePoliciesSearch": "Cerca politiche...",
|
||||
"resourcePoliciesAdd": "Aggiungi Politica",
|
||||
"resourcePoliciesDefaultBadgeText": "Politica Predefinita",
|
||||
"resourcePoliciesCreate": "Create Public Resource Policy",
|
||||
"resourcePoliciesCreate": "Crea Politica Risorse",
|
||||
"resourcePoliciesCreateDescription": "Segui i passaggi seguenti per creare una nuova politica",
|
||||
"resourcePolicyName": "Nome Politica",
|
||||
"resourcePolicyNameDescription": "Dai un nome a questa politica per identificarla tra le tue risorse",
|
||||
@@ -314,7 +311,7 @@
|
||||
"rules": "Regole",
|
||||
"resourceSettingDescription": "Configura le impostazioni sulla risorsa",
|
||||
"resourceSetting": "Impostazioni {resourceName}",
|
||||
"resourcePolicySettingDescription": "Configure the settings on this public resource policy",
|
||||
"resourcePolicySettingDescription": "Configura le impostazioni sulla politica delle risorse",
|
||||
"resourcePolicySetting": "Impostazioni del sito {policyName}",
|
||||
"alwaysAllow": "Bypass Autenticazione",
|
||||
"alwaysDeny": "Blocca Accesso",
|
||||
@@ -756,11 +753,11 @@
|
||||
"rulesErrorDuplicate": "Regola duplicata",
|
||||
"rulesErrorDuplicateDescription": "Esiste già una regola con queste impostazioni",
|
||||
"rulesErrorInvalidIpAddressRange": "CIDR non valido",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Enter a valid CIDR range (e.g., 10.0.0.0/8).",
|
||||
"rulesErrorInvalidUrl": "Invalid path",
|
||||
"rulesErrorInvalidUrlDescription": "Enter a valid URL path or pattern (e.g., /api/*).",
|
||||
"rulesErrorInvalidIpAddress": "Invalid IP address",
|
||||
"rulesErrorInvalidIpAddressDescription": "Enter a valid IPv4 or IPv6 address.",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Inserisci un valore CIDR valido",
|
||||
"rulesErrorInvalidUrl": "Percorso URL non valido",
|
||||
"rulesErrorInvalidUrlDescription": "Inserisci un valore di percorso URL valido",
|
||||
"rulesErrorInvalidIpAddress": "IP non valido",
|
||||
"rulesErrorInvalidIpAddressDescription": "Inserisci un indirizzo IP valido",
|
||||
"rulesErrorUpdate": "Impossibile aggiornare le regole",
|
||||
"rulesErrorUpdateDescription": "Si è verificato un errore durante l'aggiornamento delle regole",
|
||||
"rulesUpdated": "Abilita Regole",
|
||||
@@ -768,23 +765,15 @@
|
||||
"rulesMatchIpAddressRangeDescription": "Inserisci un indirizzo in formato CIDR (es. 103.21.244.0/22)",
|
||||
"rulesMatchIpAddress": "Inserisci un indirizzo IP (es. 103.21.244.12)",
|
||||
"rulesMatchUrl": "Inserisci un percorso URL o pattern (es. /api/v1/todos o /api/v1/*)",
|
||||
"rulesErrorInvalidPriority": "Invalid priority",
|
||||
"rulesErrorInvalidPriorityDescription": "Enter a whole number of 1 or higher.",
|
||||
"rulesErrorDuplicatePriority": "Duplicate priorities",
|
||||
"rulesErrorDuplicatePriorityDescription": "Each rule must have a unique priority number.",
|
||||
"rulesErrorValidation": "Invalid rules",
|
||||
"rulesErrorValidationRuleDescription": "Rule {ruleNumber}: {message}",
|
||||
"rulesErrorValueRequired": "Enter a value for this rule.",
|
||||
"rulesErrorInvalidCountry": "Invalid country",
|
||||
"rulesErrorInvalidCountryDescription": "Select a valid country.",
|
||||
"rulesErrorInvalidAsn": "Invalid ASN",
|
||||
"rulesErrorInvalidAsnDescription": "Enter a valid ASN (e.g., AS15169).",
|
||||
"rulesErrorInvalidPriority": "Priorità Non Valida",
|
||||
"rulesErrorInvalidPriorityDescription": "Inserisci una priorità valida",
|
||||
"rulesErrorDuplicatePriority": "Priorità Duplicate",
|
||||
"rulesErrorDuplicatePriorityDescription": "Inserisci priorità uniche",
|
||||
"ruleUpdated": "Regole aggiornate",
|
||||
"ruleUpdatedDescription": "Regole aggiornate con successo",
|
||||
"ruleErrorUpdate": "Operazione fallita",
|
||||
"ruleErrorUpdateDescription": "Si è verificato un errore durante il salvataggio",
|
||||
"rulesPriority": "Priorità",
|
||||
"rulesReorderDragHandle": "Drag to reorder rule priority",
|
||||
"rulesAction": "Azione",
|
||||
"rulesMatchType": "Tipo di Corrispondenza",
|
||||
"value": "Valore",
|
||||
@@ -803,7 +792,7 @@
|
||||
"rulesResource": "Configurazione Regole Risorsa",
|
||||
"rulesResourceDescription": "Configura le regole per controllare l'accesso alla risorsa",
|
||||
"ruleSubmit": "Aggiungi Regola",
|
||||
"rulesNoOne": "No rules yet.",
|
||||
"rulesNoOne": "Nessuna regola. Aggiungi una regola usando il modulo.",
|
||||
"rulesOrder": "Le regole sono valutate per priorità in ordine crescente.",
|
||||
"rulesSubmit": "Salva Regole",
|
||||
"policyErrorCreate": "Errore nella creazione della politica",
|
||||
@@ -814,44 +803,7 @@
|
||||
"policyErrorUpdateMessageDescription": "Si è verificato un errore imprevisto",
|
||||
"policyCreatedSuccess": "Politica risorse creata con successo",
|
||||
"policyUpdatedSuccess": "Politica risorse aggiornata con successo",
|
||||
"authMethodsSave": "Save Settings",
|
||||
"policyAuthStackTitle": "Authentication",
|
||||
"policyAuthStackDescription": "Control which authentication methods are required to access this resource",
|
||||
"policyAuthOrLogicTitle": "Multiple authentication methods active",
|
||||
"policyAuthOrLogicBanner": "Visitors may authenticate using any one of the active methods below. They do not need to complete all of them.",
|
||||
"policyAuthMethodActive": "Active",
|
||||
"policyAuthMethodOff": "Off",
|
||||
"policyAuthSsoTitle": "Platform SSO",
|
||||
"policyAuthSsoDescription": "Require sign-in through your organization's identity provider",
|
||||
"policyAuthSsoSummary": "{idp} · {users} users, {roles} roles",
|
||||
"policyAuthSsoDefaultIdp": "Default provider",
|
||||
"policyAuthAddDefaultIdentityProvider": "Add Default Identity Provider",
|
||||
"policyAuthOtherMethodsTitle": "Other Methods",
|
||||
"policyAuthOtherMethodsDescription": "Optional methods visitors can use instead of or alongside platform SSO",
|
||||
"policyAuthPasscodeTitle": "Passcode",
|
||||
"policyAuthPasscodeDescription": "Require a shared alphanumeric passcode to access the resource",
|
||||
"policyAuthPasscodeSummary": "Passcode set",
|
||||
"policyAuthPincodeTitle": "PIN Code",
|
||||
"policyAuthPincodeDescription": "A short numeric code required to access the resource",
|
||||
"policyAuthPincodeSummary": "6-digit PIN set",
|
||||
"policyAuthEmailTitle": "Email Whitelist",
|
||||
"policyAuthEmailDescription": "Allow listed email addresses with one-time passwords",
|
||||
"policyAuthEmailSummary": "{count} addresses allowed",
|
||||
"policyAuthEmailOtpCallout": "Enabling email whitelist sends a one-time password to the visitor's email on login.",
|
||||
"policyAuthHeaderAuthTitle": "Basic Header Auth",
|
||||
"policyAuthHeaderAuthDescription": "Validate a custom HTTP header name and value on each request",
|
||||
"policyAuthHeaderAuthSummary": "Header configured",
|
||||
"policyAuthHeaderName": "Header name",
|
||||
"policyAuthHeaderValue": "Expected value",
|
||||
"policyAccessRulesTitle": "Access Rules",
|
||||
"policyAccessRulesEnableDescription": "When enabled, rules are evaluated in descending order until one evaluates as true.",
|
||||
"policyAccessRulesFirstMatch": "Rules are evaluated top to bottom. The first matching rule decides the outcome.",
|
||||
"policyAccessRulesHowItWorks": "Rules match requests by path, IP address, location, or other criteria. Each rule applies an action: bypass authentication, block access, or pass to authentication. If no rule matches, traffic continues to authentication.",
|
||||
"policyAccessRulesFallthroughOff": "When rules are disabled, all traffic passes through to authentication.",
|
||||
"policyAccessRulesFallthroughOn": "When no rule matches, traffic passes through to authentication.",
|
||||
"rulesPlaceholderCidr": "10.0.0.0/8",
|
||||
"rulesPlaceholderPath": "/admin/*",
|
||||
"rulesPlaceholderGeo": "RU, KP",
|
||||
"authMethodsSave": "Salva metodi di autenticazione",
|
||||
"rulesSave": "Salva Regole",
|
||||
"resourceErrorCreate": "Errore nella creazione della risorsa",
|
||||
"resourceErrorCreateDescription": "Si è verificato un errore durante la creazione della risorsa",
|
||||
@@ -1268,10 +1220,8 @@
|
||||
"addLabels": "Aggiungi etichette",
|
||||
"siteLabelsTab": "Etichette",
|
||||
"siteLabelsDescription": "Gestisci le etichette associate a questo sito.",
|
||||
"labelsNotFound": "No labels found.",
|
||||
"labelsEmptyCreateHint": "Start typing above to create a label.",
|
||||
"labelsNotFound": "Etichette non trovate",
|
||||
"labelSearch": "Cerca etichette",
|
||||
"labelSearchOrCreate": "Search or create a label",
|
||||
"accessLabelFilterCount": "{count, plural, one {# etichetta} other {# etichette}}",
|
||||
"labelOverflowCount": "+{count, plural, one {# etichetta} other {# etichette}}",
|
||||
"accessLabelFilterClear": "Cancella filtri etichette",
|
||||
@@ -1512,7 +1462,7 @@
|
||||
"sidebarProxyResources": "Pubblico",
|
||||
"sidebarClientResources": "Privato",
|
||||
"sidebarPolicies": "Politiche",
|
||||
"sidebarResourcePolicies": "Public Resources",
|
||||
"sidebarResourcePolicies": "Risorse",
|
||||
"sidebarAccessControl": "Controllo Accesso",
|
||||
"sidebarLogsAndAnalytics": "Registri E Analisi",
|
||||
"sidebarTeam": "Squadra",
|
||||
@@ -1520,7 +1470,7 @@
|
||||
"sidebarAdmin": "Amministratore",
|
||||
"sidebarInvitations": "Inviti",
|
||||
"sidebarRoles": "Ruoli",
|
||||
"sidebarShareableLinks": "Share Links",
|
||||
"sidebarShareableLinks": "Collegamenti",
|
||||
"sidebarApiKeys": "Chiavi API",
|
||||
"sidebarProvisioning": "Accantonamento",
|
||||
"sidebarSettings": "Impostazioni",
|
||||
@@ -1697,7 +1647,7 @@
|
||||
"standaloneHcFilterResourceIdFallback": "Risorsa {id}",
|
||||
"blueprints": "Progetti",
|
||||
"blueprintsLog": "Registro Progetti",
|
||||
"blueprintsDescription": "View past blueprint applications and their results or apply a new blueprint",
|
||||
"blueprintsDescription": "Visualizza le applicazioni passate dei progetti e i loro risultati",
|
||||
"blueprintAdd": "Aggiungi Progetto",
|
||||
"blueprintGoBack": "Vedi tutti i progetti",
|
||||
"blueprintCreate": "Crea Progetto",
|
||||
@@ -2077,13 +2027,13 @@
|
||||
"healthCheckUnknown": "Sconosciuto",
|
||||
"healthCheck": "Controllo Salute",
|
||||
"configureHealthCheck": "Configura Controllo Salute",
|
||||
"configureHealthCheckDescription": "Set up monitoring for your resource to ensure it is always available",
|
||||
"configureHealthCheckDescription": "Imposta il monitoraggio della salute per {target}",
|
||||
"enableHealthChecks": "Abilita i Controlli di Salute",
|
||||
"healthCheckDisabledStateDescription": "Quando disabilitato, il sito non eseguirà controlli di integrità e lo stato sarà considerato sconosciuto.",
|
||||
"enableHealthChecksDescription": "Monitorare lo stato di salute di questo obiettivo. Se necessario, è possibile monitorare un endpoint diverso da quello del bersaglio.",
|
||||
"healthScheme": "Metodo",
|
||||
"healthSelectScheme": "Seleziona Metodo",
|
||||
"healthCheckPortInvalid": "Port must be between 1 and 65535",
|
||||
"healthCheckPortInvalid": "La porta di controllo dello stato di salute deve essere compresa tra 1 e 65535",
|
||||
"healthCheckPath": "Percorso",
|
||||
"healthHostname": "IP / Nome host",
|
||||
"healthPort": "Porta",
|
||||
@@ -2096,7 +2046,6 @@
|
||||
"requireDeviceApproval": "Richiede Approvazioni Dispositivo",
|
||||
"requireDeviceApprovalDescription": "Gli utenti con questo ruolo hanno bisogno di nuovi dispositivi approvati da un amministratore prima di poter connettersi e accedere alle risorse.",
|
||||
"sshSettings": "Impostazioni SSH",
|
||||
"sshAccess": "SSH Access",
|
||||
"rdpSettings": "Impostazioni RDP",
|
||||
"vncSettings": "Impostazioni VNC",
|
||||
"sshServer": "Server SSH",
|
||||
@@ -2123,13 +2072,8 @@
|
||||
"sshDaemonDisclaimer": "Assicurati che l'host target sia correttamente configurato per eseguire il demone di autenticazione prima di completare questa configurazione, altrimenti il provisioning fallirà.",
|
||||
"sshDaemonPort": "Porta Daemon",
|
||||
"sshServerDestination": "Destinazione Server",
|
||||
"sshServerDestinationDescription": "Configure the destination of the SSH server",
|
||||
"sshServerDestinationDescription": "Configura la destinazione e la porta del server SSH",
|
||||
"destination": "Destinazione",
|
||||
"destinationRequired": "Destination is required.",
|
||||
"domainRequired": "Domain is required.",
|
||||
"proxyPortRequired": "Port is required.",
|
||||
"invalidPathConfiguration": "Invalid path configuration.",
|
||||
"invalidRewritePathConfiguration": "Invalid rewrite path configuration.",
|
||||
"bgTargetMultiSiteDisclaimer": "Selezionare più siti abilita instradamento resiliente e failover per alta disponibilità.",
|
||||
"roleAllowSsh": "Consenti SSH",
|
||||
"roleAllowSshAllow": "Consenti",
|
||||
@@ -3090,7 +3034,7 @@
|
||||
"enterConfirmation": "Inserisci conferma",
|
||||
"blueprintViewDetails": "Dettagli",
|
||||
"defaultIdentityProvider": "Provider di Identità Predefinito",
|
||||
"defaultIdentityProviderDescription": "The user will be automatically redirected to this identity provider for authentication.",
|
||||
"defaultIdentityProviderDescription": "Quando viene selezionato un provider di identità predefinito, l'utente verrà automaticamente reindirizzato al provider per l'autenticazione.",
|
||||
"editInternalResourceDialogNetworkSettings": "Impostazioni di Rete",
|
||||
"editInternalResourceDialogAccessPolicy": "Politica di Accesso",
|
||||
"editInternalResourceDialogAddRoles": "Aggiungi Ruoli",
|
||||
@@ -3402,8 +3346,6 @@
|
||||
"idpUnassociateQuestion": "Sei sicuro di voler disassociare questo provider di identità da questa organizzazione?",
|
||||
"idpUnassociateDescription": "Tutti gli utenti associati a questo provider di identità verranno rimossi da questa organizzazione, ma il provider di identità continuerà ad esistere per altre organizzazioni associate.",
|
||||
"idpUnassociateConfirm": "Conferma Disassociazione Provider di Identità",
|
||||
"idpConfirmDeleteAndRemoveMeFromOrg": "DELETE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateAndRemoveMeFromOrg": "UNASSOCIATE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateWarning": "Questo non può essere annullato per questa organizzazione.",
|
||||
"idpUnassociatedDescription": "Provider di identità disassociato con successo da questa organizzazione",
|
||||
"idpUnassociateMenu": "Disassocia",
|
||||
@@ -3510,43 +3452,5 @@
|
||||
"sshErrorNoTarget": "Nessun obiettivo specificato",
|
||||
"sshErrorWebSocket": "Connessione WebSocket fallita",
|
||||
"sshErrorAuthFailed": "Autenticazione fallita",
|
||||
"sshErrorConnectionClosed": "Connessione chiusa prima del completamento dell'autenticazione",
|
||||
"sitePangolinSshDescription": "Allow SSH access to resources on this site. This can be changed later.",
|
||||
"browserGatewayNoResourceForDomain": "No resource found for this domain",
|
||||
"browserGatewayNoTarget": "No target",
|
||||
"browserGatewayConnect": "Connect",
|
||||
"browserGatewayCtrlAltDel": "Ctrl+Alt+Del",
|
||||
"sshErrorSignKeyFailed": "Failed to sign SSH key for PAM push authentication. Did you sign in as a user?",
|
||||
"sshTerminalError": "Error: {error}",
|
||||
"sshConnectionClosedCode": "Connection closed (code {code})",
|
||||
"sshPrivateKeyPlaceholder": "-----BEGIN OPENSSH PRIVATE KEY-----",
|
||||
"sshPrivateKeyRequired": "Private key is required",
|
||||
"vncTitle": "VNC",
|
||||
"vncSignInDescription": "Enter your VNC password to connect",
|
||||
"vncPasswordOptional": "Password (optional)",
|
||||
"vncNoResourceTarget": "No resource target is available",
|
||||
"vncFailedToLoadNovnc": "Failed to load noVNC",
|
||||
"vncAuthFailedStatus": "Status {status}",
|
||||
"vncPasteClipboard": "Paste clipboard",
|
||||
"rdpTitle": "RDP",
|
||||
"rdpSignInTitle": "Sign in to Remote Desktop",
|
||||
"rdpSignInDescription": "Enter Windows credentials to connect",
|
||||
"rdpLoadingModule": "Loading module...",
|
||||
"rdpFailedToLoadModule": "Failed to load RDP module",
|
||||
"rdpNotReady": "Not ready",
|
||||
"rdpModuleInitializing": "RDP module is still initializing",
|
||||
"rdpDownloadingFiles": "Downloading {count} file(s) from remote…",
|
||||
"rdpDownloadFailed": "Download failed: {fileName}",
|
||||
"rdpUploaded": "Uploaded: {fileName}",
|
||||
"rdpNoConnectionTarget": "No connection target available",
|
||||
"rdpConnectionFailed": "Connection failed",
|
||||
"rdpFit": "Fit",
|
||||
"rdpFull": "Full",
|
||||
"rdpReal": "Real",
|
||||
"rdpMeta": "Meta",
|
||||
"rdpUploadFiles": "Upload files",
|
||||
"rdpFilesReadyToPaste": "Files ready to paste",
|
||||
"rdpFilesReadyToPasteDescription": "{count} file(s) copied to remote clipboard — press Ctrl+V on the remote desktop to paste.",
|
||||
"rdpUploadFailed": "Upload failed",
|
||||
"rdpUnicodeKeyboardMode": "Unicode keyboard mode"
|
||||
"sshErrorConnectionClosed": "Connessione chiusa prima del completamento dell'autenticazione"
|
||||
}
|
||||
|
||||
@@ -101,8 +101,6 @@
|
||||
"sitesTableViewPrivateResources": "개인 리소스 보기",
|
||||
"siteInstallNewt": "Newt 설치",
|
||||
"siteInstallNewtDescription": "시스템에서 Newt 실행하기",
|
||||
"siteInstallKubernetesDocsDescription": "For more and up to date Kubernetes installation information, see <docsLink>docs.pangolin.net/manage/sites/install-kubernetes</docsLink>.",
|
||||
"siteInstallAdvantechDocsDescription": "For Advantech modem installation instructions, see <docsLink>docs.pangolin.net/manage/sites/install-advantech</docsLink>.",
|
||||
"WgConfiguration": "WireGuard 구성",
|
||||
"WgConfigurationDescription": "네트워크에 연결하기 위한 다음 구성을 사용하세요.",
|
||||
"operatingSystem": "운영 체제",
|
||||
@@ -202,8 +200,8 @@
|
||||
"shareErrorSelectResource": "리소스를 선택하세요",
|
||||
"proxyResourceTitle": "공개 리소스 관리",
|
||||
"proxyResourceDescription": "웹 브라우저를 통해 공용으로 접근할 수 있는 리소스를 생성하고 관리하세요.",
|
||||
"publicResourcesBannerTitle": "Web-based Public Access",
|
||||
"publicResourcesBannerDescription": "Public resources are HTTPS proxies accessible to anyone on the internet through a web browser. Unlike private resources, they do not require client-side software and can include identity and context-aware access policies.",
|
||||
"proxyResourcesBannerTitle": "웹 기반 공공 접근",
|
||||
"proxyResourcesBannerDescription": "공공 자원은 누구나 웹 브라우저를 통해 접근 가능한 HTTPS 또는 TCP/UDP 프록시입니다. 개인 자원과 달리 클라이언트 측 소프트웨어가 필요하지 않으며, 아이덴티티 및 컨텍스트 인지 접근 정책을 포함할 수 있습니다.",
|
||||
"clientResourceTitle": "개인 리소스 관리",
|
||||
"clientResourceDescription": "연결된 클라이언트를 통해서만 접근할 수 있는 리소스를 생성하고 관리하세요.",
|
||||
"privateResourcesBannerTitle": "제로 트러스트 개인 접근",
|
||||
@@ -211,16 +209,15 @@
|
||||
"resourcesSearch": "리소스 검색...",
|
||||
"resourceAdd": "리소스 추가",
|
||||
"resourceErrorDelte": "리소스 삭제 중 오류 발생",
|
||||
"resourcePoliciesTitle": "Manage Public Resource Policies",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Resources",
|
||||
"resourcePoliciesTitle": "리소스 정책 관리",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "첨부 리소스",
|
||||
"resourcePoliciesAttachedResources": "{count} 리소스",
|
||||
"resourcePoliciesAttachedResourcesCount": "{count, plural, one {# resource} other {# resources}}",
|
||||
"resourcePoliciesAttachedResourcesEmpty": "리소스 없음",
|
||||
"resourcePoliciesDescription": "Create and manage authentication policies to control access to your public resources",
|
||||
"resourcePoliciesDescription": "리소스에 대한 접근을 제어할 인증 정책을 생성 및 관리합니다",
|
||||
"resourcePoliciesSearch": "정책 검색...",
|
||||
"resourcePoliciesAdd": "정책 추가",
|
||||
"resourcePoliciesDefaultBadgeText": "기본 정책",
|
||||
"resourcePoliciesCreate": "Create Public Resource Policy",
|
||||
"resourcePoliciesCreate": "리소스 정책 생성",
|
||||
"resourcePoliciesCreateDescription": "새로운 정책을 생성하려면 아래 단계들을 따르세요",
|
||||
"resourcePolicyName": "정책 이름",
|
||||
"resourcePolicyNameDescription": "이 정책에 리소스 간에 식별할 이름을 지정합니다",
|
||||
@@ -314,7 +311,7 @@
|
||||
"rules": "규칙",
|
||||
"resourceSettingDescription": "리소스의 설정을 구성하세요.",
|
||||
"resourceSetting": "{resourceName} 설정",
|
||||
"resourcePolicySettingDescription": "Configure the settings on this public resource policy",
|
||||
"resourcePolicySettingDescription": "리소스 정책에 대한 설정을 구성합니다",
|
||||
"resourcePolicySetting": "{policyName} 설정",
|
||||
"alwaysAllow": "인증 우회",
|
||||
"alwaysDeny": "접근 차단",
|
||||
@@ -756,11 +753,11 @@
|
||||
"rulesErrorDuplicate": "중복 규칙",
|
||||
"rulesErrorDuplicateDescription": "이 설정을 가진 규칙이 이미 존재합니다.",
|
||||
"rulesErrorInvalidIpAddressRange": "유효하지 않은 CIDR",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Enter a valid CIDR range (e.g., 10.0.0.0/8).",
|
||||
"rulesErrorInvalidUrl": "Invalid path",
|
||||
"rulesErrorInvalidUrlDescription": "Enter a valid URL path or pattern (e.g., /api/*).",
|
||||
"rulesErrorInvalidIpAddress": "Invalid IP address",
|
||||
"rulesErrorInvalidIpAddressDescription": "Enter a valid IPv4 or IPv6 address.",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "유효한 CIDR 값을 입력하십시오.",
|
||||
"rulesErrorInvalidUrl": "유효하지 않은 URL 경로",
|
||||
"rulesErrorInvalidUrlDescription": "유효한 URL 경로 값을 입력해 주세요.",
|
||||
"rulesErrorInvalidIpAddress": "유효하지 않은 IP",
|
||||
"rulesErrorInvalidIpAddressDescription": "유효한 IP 주소를 입력하세요",
|
||||
"rulesErrorUpdate": "규칙 업데이트에 실패했습니다.",
|
||||
"rulesErrorUpdateDescription": "규칙 업데이트 중 오류가 발생했습니다.",
|
||||
"rulesUpdated": "규칙 활성화",
|
||||
@@ -768,23 +765,15 @@
|
||||
"rulesMatchIpAddressRangeDescription": "CIDR 형식으로 주소를 입력하세요 (예: 103.21.244.0/22)",
|
||||
"rulesMatchIpAddress": "IP 주소를 입력하세요 (예: 103.21.244.12)",
|
||||
"rulesMatchUrl": "URL 경로 또는 패턴을 입력하세요 (예: /api/v1/todos 또는 /api/v1/*)",
|
||||
"rulesErrorInvalidPriority": "Invalid priority",
|
||||
"rulesErrorInvalidPriorityDescription": "Enter a whole number of 1 or higher.",
|
||||
"rulesErrorDuplicatePriority": "Duplicate priorities",
|
||||
"rulesErrorDuplicatePriorityDescription": "Each rule must have a unique priority number.",
|
||||
"rulesErrorValidation": "Invalid rules",
|
||||
"rulesErrorValidationRuleDescription": "Rule {ruleNumber}: {message}",
|
||||
"rulesErrorValueRequired": "Enter a value for this rule.",
|
||||
"rulesErrorInvalidCountry": "Invalid country",
|
||||
"rulesErrorInvalidCountryDescription": "Select a valid country.",
|
||||
"rulesErrorInvalidAsn": "Invalid ASN",
|
||||
"rulesErrorInvalidAsnDescription": "Enter a valid ASN (e.g., AS15169).",
|
||||
"rulesErrorInvalidPriority": "유효하지 않은 우선순위",
|
||||
"rulesErrorInvalidPriorityDescription": "유효한 우선 순위를 입력하세요.",
|
||||
"rulesErrorDuplicatePriority": "중복 우선순위",
|
||||
"rulesErrorDuplicatePriorityDescription": "고유한 우선 순위를 입력하십시오.",
|
||||
"ruleUpdated": "규칙이 업데이트되었습니다",
|
||||
"ruleUpdatedDescription": "규칙이 성공적으로 업데이트되었습니다",
|
||||
"ruleErrorUpdate": "작업 실패",
|
||||
"ruleErrorUpdateDescription": "저장 작업 중 오류가 발생했습니다.",
|
||||
"rulesPriority": "우선순위",
|
||||
"rulesReorderDragHandle": "Drag to reorder rule priority",
|
||||
"rulesAction": "작업",
|
||||
"rulesMatchType": "일치 유형",
|
||||
"value": "값",
|
||||
@@ -803,7 +792,7 @@
|
||||
"rulesResource": "리소스 규칙 구성",
|
||||
"rulesResourceDescription": "리소스에 대한 접근을 제어하는 규칙 구성",
|
||||
"ruleSubmit": "규칙 추가",
|
||||
"rulesNoOne": "No rules yet.",
|
||||
"rulesNoOne": "규칙이 없습니다. 양식을 사용하여 규칙을 추가하십시오.",
|
||||
"rulesOrder": "규칙은 우선 순위에 따라 오름차순으로 평가됩니다.",
|
||||
"rulesSubmit": "규칙 저장",
|
||||
"policyErrorCreate": "정책 생성 오류",
|
||||
@@ -814,44 +803,7 @@
|
||||
"policyErrorUpdateMessageDescription": "예기치 않은 오류가 발생했습니다",
|
||||
"policyCreatedSuccess": "리소스 정책이 성공적으로 생성되었습니다",
|
||||
"policyUpdatedSuccess": "리소스 정책이 성공적으로 업데이트되었습니다",
|
||||
"authMethodsSave": "Save Settings",
|
||||
"policyAuthStackTitle": "Authentication",
|
||||
"policyAuthStackDescription": "Control which authentication methods are required to access this resource",
|
||||
"policyAuthOrLogicTitle": "Multiple authentication methods active",
|
||||
"policyAuthOrLogicBanner": "Visitors may authenticate using any one of the active methods below. They do not need to complete all of them.",
|
||||
"policyAuthMethodActive": "Active",
|
||||
"policyAuthMethodOff": "Off",
|
||||
"policyAuthSsoTitle": "Platform SSO",
|
||||
"policyAuthSsoDescription": "Require sign-in through your organization's identity provider",
|
||||
"policyAuthSsoSummary": "{idp} · {users} users, {roles} roles",
|
||||
"policyAuthSsoDefaultIdp": "Default provider",
|
||||
"policyAuthAddDefaultIdentityProvider": "Add Default Identity Provider",
|
||||
"policyAuthOtherMethodsTitle": "Other Methods",
|
||||
"policyAuthOtherMethodsDescription": "Optional methods visitors can use instead of or alongside platform SSO",
|
||||
"policyAuthPasscodeTitle": "Passcode",
|
||||
"policyAuthPasscodeDescription": "Require a shared alphanumeric passcode to access the resource",
|
||||
"policyAuthPasscodeSummary": "Passcode set",
|
||||
"policyAuthPincodeTitle": "PIN Code",
|
||||
"policyAuthPincodeDescription": "A short numeric code required to access the resource",
|
||||
"policyAuthPincodeSummary": "6-digit PIN set",
|
||||
"policyAuthEmailTitle": "Email Whitelist",
|
||||
"policyAuthEmailDescription": "Allow listed email addresses with one-time passwords",
|
||||
"policyAuthEmailSummary": "{count} addresses allowed",
|
||||
"policyAuthEmailOtpCallout": "Enabling email whitelist sends a one-time password to the visitor's email on login.",
|
||||
"policyAuthHeaderAuthTitle": "Basic Header Auth",
|
||||
"policyAuthHeaderAuthDescription": "Validate a custom HTTP header name and value on each request",
|
||||
"policyAuthHeaderAuthSummary": "Header configured",
|
||||
"policyAuthHeaderName": "Header name",
|
||||
"policyAuthHeaderValue": "Expected value",
|
||||
"policyAccessRulesTitle": "Access Rules",
|
||||
"policyAccessRulesEnableDescription": "When enabled, rules are evaluated in descending order until one evaluates as true.",
|
||||
"policyAccessRulesFirstMatch": "Rules are evaluated top to bottom. The first matching rule decides the outcome.",
|
||||
"policyAccessRulesHowItWorks": "Rules match requests by path, IP address, location, or other criteria. Each rule applies an action: bypass authentication, block access, or pass to authentication. If no rule matches, traffic continues to authentication.",
|
||||
"policyAccessRulesFallthroughOff": "When rules are disabled, all traffic passes through to authentication.",
|
||||
"policyAccessRulesFallthroughOn": "When no rule matches, traffic passes through to authentication.",
|
||||
"rulesPlaceholderCidr": "10.0.0.0/8",
|
||||
"rulesPlaceholderPath": "/admin/*",
|
||||
"rulesPlaceholderGeo": "RU, KP",
|
||||
"authMethodsSave": "인증 방법 저장",
|
||||
"rulesSave": "규칙 저장",
|
||||
"resourceErrorCreate": "리소스 생성 오류",
|
||||
"resourceErrorCreateDescription": "리소스를 생성하는 중 오류가 발생했습니다.",
|
||||
@@ -1268,10 +1220,8 @@
|
||||
"addLabels": "레이블 추가",
|
||||
"siteLabelsTab": "레이블",
|
||||
"siteLabelsDescription": "이 사이트와 연결된 레이블을 관리합니다.",
|
||||
"labelsNotFound": "No labels found.",
|
||||
"labelsEmptyCreateHint": "Start typing above to create a label.",
|
||||
"labelsNotFound": "레이블을 찾을 수 없습니다",
|
||||
"labelSearch": "레이블 검색",
|
||||
"labelSearchOrCreate": "Search or create a label",
|
||||
"accessLabelFilterCount": "{count, plural, other {# 레이블}}",
|
||||
"labelOverflowCount": " +{count, plural, other {# 레이블}}",
|
||||
"accessLabelFilterClear": "레이블 필터 초기화",
|
||||
@@ -1512,7 +1462,7 @@
|
||||
"sidebarProxyResources": "공유",
|
||||
"sidebarClientResources": "비공개",
|
||||
"sidebarPolicies": "정책",
|
||||
"sidebarResourcePolicies": "Public Resources",
|
||||
"sidebarResourcePolicies": "리소스",
|
||||
"sidebarAccessControl": "액세스 제어",
|
||||
"sidebarLogsAndAnalytics": "로그 및 분석",
|
||||
"sidebarTeam": "팀",
|
||||
@@ -1520,7 +1470,7 @@
|
||||
"sidebarAdmin": "관리자",
|
||||
"sidebarInvitations": "초대",
|
||||
"sidebarRoles": "역할",
|
||||
"sidebarShareableLinks": "Share Links",
|
||||
"sidebarShareableLinks": "링크",
|
||||
"sidebarApiKeys": "API 키",
|
||||
"sidebarProvisioning": "프로비저닝",
|
||||
"sidebarSettings": "설정",
|
||||
@@ -1697,7 +1647,7 @@
|
||||
"standaloneHcFilterResourceIdFallback": "리소스 {id}",
|
||||
"blueprints": "청사진",
|
||||
"blueprintsLog": "블루프린트 로그",
|
||||
"blueprintsDescription": "View past blueprint applications and their results or apply a new blueprint",
|
||||
"blueprintsDescription": "과거 블루프린트 적용 및 결과 보기",
|
||||
"blueprintAdd": "청사진 추가",
|
||||
"blueprintGoBack": "모든 청사진 보기",
|
||||
"blueprintCreate": "청사진 생성",
|
||||
@@ -2077,13 +2027,13 @@
|
||||
"healthCheckUnknown": "알 수 없음",
|
||||
"healthCheck": "상태 확인",
|
||||
"configureHealthCheck": "상태 확인 설정",
|
||||
"configureHealthCheckDescription": "Set up monitoring for your resource to ensure it is always available",
|
||||
"configureHealthCheckDescription": "{target}에 대한 상태 모니터링 설정",
|
||||
"enableHealthChecks": "상태 확인 활성화",
|
||||
"healthCheckDisabledStateDescription": "비활성화되면 이 사이트가 상태 확인을 수행하지 않으며 상태가 알 수 없는 것으로 간주됩니다.",
|
||||
"enableHealthChecksDescription": "이 대상을 모니터링하여 건강 상태를 확인하세요. 필요에 따라 대상과 다른 엔드포인트를 모니터링할 수 있습니다.",
|
||||
"healthScheme": "방법",
|
||||
"healthSelectScheme": "방법 선택",
|
||||
"healthCheckPortInvalid": "Port must be between 1 and 65535",
|
||||
"healthCheckPortInvalid": "올바르지 않은 서브넷 마스크입니다. 1에서 65535 사이여야 합니다",
|
||||
"healthCheckPath": "경로",
|
||||
"healthHostname": "IP / 호스트",
|
||||
"healthPort": "포트",
|
||||
@@ -2096,7 +2046,6 @@
|
||||
"requireDeviceApproval": "장치 승인 요구",
|
||||
"requireDeviceApprovalDescription": "이 역할을 가진 사용자는 장치가 연결되기 전에 관리자의 승인이 필요합니다.",
|
||||
"sshSettings": "SSH 설정",
|
||||
"sshAccess": "SSH Access",
|
||||
"rdpSettings": "RDP 설정",
|
||||
"vncSettings": "VNC 설정",
|
||||
"sshServer": "SSH 서버",
|
||||
@@ -2123,13 +2072,8 @@
|
||||
"sshDaemonDisclaimer": "이 설정을 완료하기 전에 인증 데몬을 실행할 대상 호스트가 적절히 구성되었는지 확인하십시오. 그렇지 않으면 프로비저닝이 실패할 수 있습니다.",
|
||||
"sshDaemonPort": "데몬 포트",
|
||||
"sshServerDestination": "서버 목적지",
|
||||
"sshServerDestinationDescription": "Configure the destination of the SSH server",
|
||||
"sshServerDestinationDescription": "SSH 서버의 목적지 및 포트를 구성합니다",
|
||||
"destination": "대상지",
|
||||
"destinationRequired": "Destination is required.",
|
||||
"domainRequired": "Domain is required.",
|
||||
"proxyPortRequired": "Port is required.",
|
||||
"invalidPathConfiguration": "Invalid path configuration.",
|
||||
"invalidRewritePathConfiguration": "Invalid rewrite path configuration.",
|
||||
"bgTargetMultiSiteDisclaimer": "여러 사이트를 선택하면 고가용성을 위한 내구성 있는 라우팅 및 장애 조치를 활성화합니다.",
|
||||
"roleAllowSsh": "SSH 허용",
|
||||
"roleAllowSshAllow": "허용",
|
||||
@@ -3090,7 +3034,7 @@
|
||||
"enterConfirmation": "확인 입력",
|
||||
"blueprintViewDetails": "세부 정보",
|
||||
"defaultIdentityProvider": "기본 아이덴티티 공급자",
|
||||
"defaultIdentityProviderDescription": "The user will be automatically redirected to this identity provider for authentication.",
|
||||
"defaultIdentityProviderDescription": "기본 ID 공급자가 선택되면, 사용자는 인증을 위해 자동으로 해당 공급자로 리디렉션됩니다.",
|
||||
"editInternalResourceDialogNetworkSettings": "네트워크 설정",
|
||||
"editInternalResourceDialogAccessPolicy": "액세스 정책",
|
||||
"editInternalResourceDialogAddRoles": "역할 추가",
|
||||
@@ -3402,8 +3346,6 @@
|
||||
"idpUnassociateQuestion": "정말로 이 조직에서 이 아이덴티티 공급자의 연관을 해제하시겠습니까?",
|
||||
"idpUnassociateDescription": "이 아이덴티티 공급자와 연관된 모든 사용자는 이 조직에서 제거될 것이지만, 아이덴티티 공급자는 다른 연관된 조직에 계속해서 존재할 것입니다.",
|
||||
"idpUnassociateConfirm": "아이덴티티 공급자 연관 해제 확인",
|
||||
"idpConfirmDeleteAndRemoveMeFromOrg": "DELETE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateAndRemoveMeFromOrg": "UNASSOCIATE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateWarning": "이 조직에서 이것은 되돌릴 수 없습니다.",
|
||||
"idpUnassociatedDescription": "아이덴티티 공급자가 이 조직에서 성공적으로 연관 해제되었습니다",
|
||||
"idpUnassociateMenu": "연관 해제",
|
||||
@@ -3510,43 +3452,5 @@
|
||||
"sshErrorNoTarget": "지정된 대상이 없습니다",
|
||||
"sshErrorWebSocket": "WebSocket 연결 실패",
|
||||
"sshErrorAuthFailed": "인증 실패",
|
||||
"sshErrorConnectionClosed": "인증이 완료되기 전에 연결이 닫혔습니다",
|
||||
"sitePangolinSshDescription": "Allow SSH access to resources on this site. This can be changed later.",
|
||||
"browserGatewayNoResourceForDomain": "No resource found for this domain",
|
||||
"browserGatewayNoTarget": "No target",
|
||||
"browserGatewayConnect": "Connect",
|
||||
"browserGatewayCtrlAltDel": "Ctrl+Alt+Del",
|
||||
"sshErrorSignKeyFailed": "Failed to sign SSH key for PAM push authentication. Did you sign in as a user?",
|
||||
"sshTerminalError": "Error: {error}",
|
||||
"sshConnectionClosedCode": "Connection closed (code {code})",
|
||||
"sshPrivateKeyPlaceholder": "-----BEGIN OPENSSH PRIVATE KEY-----",
|
||||
"sshPrivateKeyRequired": "Private key is required",
|
||||
"vncTitle": "VNC",
|
||||
"vncSignInDescription": "Enter your VNC password to connect",
|
||||
"vncPasswordOptional": "Password (optional)",
|
||||
"vncNoResourceTarget": "No resource target is available",
|
||||
"vncFailedToLoadNovnc": "Failed to load noVNC",
|
||||
"vncAuthFailedStatus": "Status {status}",
|
||||
"vncPasteClipboard": "Paste clipboard",
|
||||
"rdpTitle": "RDP",
|
||||
"rdpSignInTitle": "Sign in to Remote Desktop",
|
||||
"rdpSignInDescription": "Enter Windows credentials to connect",
|
||||
"rdpLoadingModule": "Loading module...",
|
||||
"rdpFailedToLoadModule": "Failed to load RDP module",
|
||||
"rdpNotReady": "Not ready",
|
||||
"rdpModuleInitializing": "RDP module is still initializing",
|
||||
"rdpDownloadingFiles": "Downloading {count} file(s) from remote…",
|
||||
"rdpDownloadFailed": "Download failed: {fileName}",
|
||||
"rdpUploaded": "Uploaded: {fileName}",
|
||||
"rdpNoConnectionTarget": "No connection target available",
|
||||
"rdpConnectionFailed": "Connection failed",
|
||||
"rdpFit": "Fit",
|
||||
"rdpFull": "Full",
|
||||
"rdpReal": "Real",
|
||||
"rdpMeta": "Meta",
|
||||
"rdpUploadFiles": "Upload files",
|
||||
"rdpFilesReadyToPaste": "Files ready to paste",
|
||||
"rdpFilesReadyToPasteDescription": "{count} file(s) copied to remote clipboard — press Ctrl+V on the remote desktop to paste.",
|
||||
"rdpUploadFailed": "Upload failed",
|
||||
"rdpUnicodeKeyboardMode": "Unicode keyboard mode"
|
||||
"sshErrorConnectionClosed": "인증이 완료되기 전에 연결이 닫혔습니다"
|
||||
}
|
||||
|
||||
@@ -101,8 +101,6 @@
|
||||
"sitesTableViewPrivateResources": "Vis private ressurser",
|
||||
"siteInstallNewt": "Installer Newt",
|
||||
"siteInstallNewtDescription": "Få Newt til å kjøre på systemet ditt",
|
||||
"siteInstallKubernetesDocsDescription": "For more and up to date Kubernetes installation information, see <docsLink>docs.pangolin.net/manage/sites/install-kubernetes</docsLink>.",
|
||||
"siteInstallAdvantechDocsDescription": "For Advantech modem installation instructions, see <docsLink>docs.pangolin.net/manage/sites/install-advantech</docsLink>.",
|
||||
"WgConfiguration": "WireGuard Konfigurasjon",
|
||||
"WgConfigurationDescription": "Bruk følgende konfigurasjon for å koble til nettverket",
|
||||
"operatingSystem": "Operativsystem",
|
||||
@@ -202,8 +200,8 @@
|
||||
"shareErrorSelectResource": "Vennligst velg en ressurs",
|
||||
"proxyResourceTitle": "Administrere offentlige ressurser",
|
||||
"proxyResourceDescription": "Opprett og administrer ressurser som er offentlig tilgjengelige via en nettleser",
|
||||
"publicResourcesBannerTitle": "Web-based Public Access",
|
||||
"publicResourcesBannerDescription": "Public resources are HTTPS proxies accessible to anyone on the internet through a web browser. Unlike private resources, they do not require client-side software and can include identity and context-aware access policies.",
|
||||
"proxyResourcesBannerTitle": "Nettbasert offentlig tilgang",
|
||||
"proxyResourcesBannerDescription": "Offentlige ressurser er HTTPS- eller TCP/UDP-proxyer tilgjengelige for alle på internett via en nettleser. I motsetning til private ressurser, krever de ikke klient-basert programvare og kan inkludere identitets- og kontekstbevisste tilgangspolicyer.",
|
||||
"clientResourceTitle": "Administrer private ressurser",
|
||||
"clientResourceDescription": "Opprette og administrere ressurser som bare er tilgjengelige via en tilkoblet klient",
|
||||
"privateResourcesBannerTitle": "Zero-Trust privat tilgang",
|
||||
@@ -211,16 +209,15 @@
|
||||
"resourcesSearch": "Søk i ressurser...",
|
||||
"resourceAdd": "Legg til ressurs",
|
||||
"resourceErrorDelte": "Feil ved sletting av ressurs",
|
||||
"resourcePoliciesTitle": "Manage Public Resource Policies",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Resources",
|
||||
"resourcePoliciesTitle": "Administrer Ressurspolitikk",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Vedlagte ressurser",
|
||||
"resourcePoliciesAttachedResources": "{count} ressurs(er)",
|
||||
"resourcePoliciesAttachedResourcesCount": "{count, plural, one {# resource} other {# resources}}",
|
||||
"resourcePoliciesAttachedResourcesEmpty": "ingen ressurser",
|
||||
"resourcePoliciesDescription": "Create and manage authentication policies to control access to your public resources",
|
||||
"resourcePoliciesDescription": "Opprett og administrer autentiseringsregler for å kontrollere tilgang til dine ressurser",
|
||||
"resourcePoliciesSearch": "Søk etter regler...",
|
||||
"resourcePoliciesAdd": "Legg til policy",
|
||||
"resourcePoliciesDefaultBadgeText": "Standard politisk",
|
||||
"resourcePoliciesCreate": "Create Public Resource Policy",
|
||||
"resourcePoliciesCreate": "Opprett Ressurspolitikk",
|
||||
"resourcePoliciesCreateDescription": "Følg trinnene nedenfor for å lage en ny policy",
|
||||
"resourcePolicyName": "Polisnavn",
|
||||
"resourcePolicyNameDescription": "Gi denne policynavnet for å identifisere den på tvers av dine ressurser",
|
||||
@@ -314,7 +311,7 @@
|
||||
"rules": "Regler",
|
||||
"resourceSettingDescription": "Konfigurere innstillingene på ressursen",
|
||||
"resourceSetting": "{resourceName} Innstillinger",
|
||||
"resourcePolicySettingDescription": "Configure the settings on this public resource policy",
|
||||
"resourcePolicySettingDescription": "Konfigurer innstillingene på ressurspolitikken",
|
||||
"resourcePolicySetting": "{policyName} Innstillinger",
|
||||
"alwaysAllow": "Omgå Auth",
|
||||
"alwaysDeny": "Blokker tilgang",
|
||||
@@ -756,11 +753,11 @@
|
||||
"rulesErrorDuplicate": "Duplisert regel",
|
||||
"rulesErrorDuplicateDescription": "En regel med disse innstillingene finnes allerede",
|
||||
"rulesErrorInvalidIpAddressRange": "Ugyldig CIDR",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Enter a valid CIDR range (e.g., 10.0.0.0/8).",
|
||||
"rulesErrorInvalidUrl": "Invalid path",
|
||||
"rulesErrorInvalidUrlDescription": "Enter a valid URL path or pattern (e.g., /api/*).",
|
||||
"rulesErrorInvalidIpAddress": "Invalid IP address",
|
||||
"rulesErrorInvalidIpAddressDescription": "Enter a valid IPv4 or IPv6 address.",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Vennligst skriv inn en gyldig CIDR-verdi",
|
||||
"rulesErrorInvalidUrl": "Ugyldig URL-sti",
|
||||
"rulesErrorInvalidUrlDescription": "Skriv inn en gyldig verdi for URL-sti",
|
||||
"rulesErrorInvalidIpAddress": "Ugyldig IP",
|
||||
"rulesErrorInvalidIpAddressDescription": "Skriv inn en gyldig IP-adresse",
|
||||
"rulesErrorUpdate": "Kunne ikke oppdatere regler",
|
||||
"rulesErrorUpdateDescription": "Det oppsto en feil under oppdatering av regler",
|
||||
"rulesUpdated": "Aktiver Regler",
|
||||
@@ -768,23 +765,15 @@
|
||||
"rulesMatchIpAddressRangeDescription": "Angi en adresse i CIDR-format (f.eks., 103.21.244.0/22)",
|
||||
"rulesMatchIpAddress": "Angi en IP-adresse (f.eks. 103.21.244.12)",
|
||||
"rulesMatchUrl": "Skriv inn en URL-sti eller et mønster (f.eks. /api/v1/todos eller /api/v1/*)",
|
||||
"rulesErrorInvalidPriority": "Invalid priority",
|
||||
"rulesErrorInvalidPriorityDescription": "Enter a whole number of 1 or higher.",
|
||||
"rulesErrorDuplicatePriority": "Duplicate priorities",
|
||||
"rulesErrorDuplicatePriorityDescription": "Each rule must have a unique priority number.",
|
||||
"rulesErrorValidation": "Invalid rules",
|
||||
"rulesErrorValidationRuleDescription": "Rule {ruleNumber}: {message}",
|
||||
"rulesErrorValueRequired": "Enter a value for this rule.",
|
||||
"rulesErrorInvalidCountry": "Invalid country",
|
||||
"rulesErrorInvalidCountryDescription": "Select a valid country.",
|
||||
"rulesErrorInvalidAsn": "Invalid ASN",
|
||||
"rulesErrorInvalidAsnDescription": "Enter a valid ASN (e.g., AS15169).",
|
||||
"rulesErrorInvalidPriority": "Ugyldig prioritet",
|
||||
"rulesErrorInvalidPriorityDescription": "Vennligst skriv inn en gyldig prioritet",
|
||||
"rulesErrorDuplicatePriority": "Dupliserte prioriteringer",
|
||||
"rulesErrorDuplicatePriorityDescription": "Vennligst angi unike prioriteringer",
|
||||
"ruleUpdated": "Regler oppdatert",
|
||||
"ruleUpdatedDescription": "Reglene er oppdatert",
|
||||
"ruleErrorUpdate": "Operasjon mislyktes",
|
||||
"ruleErrorUpdateDescription": "En feil oppsto under lagringsoperasjonen",
|
||||
"rulesPriority": "Prioritet",
|
||||
"rulesReorderDragHandle": "Drag to reorder rule priority",
|
||||
"rulesAction": "Handling",
|
||||
"rulesMatchType": "Trefftype",
|
||||
"value": "Verdi",
|
||||
@@ -803,7 +792,7 @@
|
||||
"rulesResource": "Konfigurasjon av ressursregler",
|
||||
"rulesResourceDescription": "Konfigurer regler for å kontrollere tilgang til ressursen",
|
||||
"ruleSubmit": "Legg til regel",
|
||||
"rulesNoOne": "No rules yet.",
|
||||
"rulesNoOne": "Ingen regler. Legg til en regel ved å bruke skjemaet.",
|
||||
"rulesOrder": "Regler evalueres etter prioritet i stigende rekkefølge.",
|
||||
"rulesSubmit": "Lagre regler",
|
||||
"policyErrorCreate": "Feil ved opprettelse av policy",
|
||||
@@ -814,44 +803,7 @@
|
||||
"policyErrorUpdateMessageDescription": "En uventet feil oppstod",
|
||||
"policyCreatedSuccess": "Ressurspolitikken ble opprettet vellykket",
|
||||
"policyUpdatedSuccess": "Ressurspolitikken ble oppdatert vellykket",
|
||||
"authMethodsSave": "Save Settings",
|
||||
"policyAuthStackTitle": "Authentication",
|
||||
"policyAuthStackDescription": "Control which authentication methods are required to access this resource",
|
||||
"policyAuthOrLogicTitle": "Multiple authentication methods active",
|
||||
"policyAuthOrLogicBanner": "Visitors may authenticate using any one of the active methods below. They do not need to complete all of them.",
|
||||
"policyAuthMethodActive": "Active",
|
||||
"policyAuthMethodOff": "Off",
|
||||
"policyAuthSsoTitle": "Platform SSO",
|
||||
"policyAuthSsoDescription": "Require sign-in through your organization's identity provider",
|
||||
"policyAuthSsoSummary": "{idp} · {users} users, {roles} roles",
|
||||
"policyAuthSsoDefaultIdp": "Default provider",
|
||||
"policyAuthAddDefaultIdentityProvider": "Add Default Identity Provider",
|
||||
"policyAuthOtherMethodsTitle": "Other Methods",
|
||||
"policyAuthOtherMethodsDescription": "Optional methods visitors can use instead of or alongside platform SSO",
|
||||
"policyAuthPasscodeTitle": "Passcode",
|
||||
"policyAuthPasscodeDescription": "Require a shared alphanumeric passcode to access the resource",
|
||||
"policyAuthPasscodeSummary": "Passcode set",
|
||||
"policyAuthPincodeTitle": "PIN Code",
|
||||
"policyAuthPincodeDescription": "A short numeric code required to access the resource",
|
||||
"policyAuthPincodeSummary": "6-digit PIN set",
|
||||
"policyAuthEmailTitle": "Email Whitelist",
|
||||
"policyAuthEmailDescription": "Allow listed email addresses with one-time passwords",
|
||||
"policyAuthEmailSummary": "{count} addresses allowed",
|
||||
"policyAuthEmailOtpCallout": "Enabling email whitelist sends a one-time password to the visitor's email on login.",
|
||||
"policyAuthHeaderAuthTitle": "Basic Header Auth",
|
||||
"policyAuthHeaderAuthDescription": "Validate a custom HTTP header name and value on each request",
|
||||
"policyAuthHeaderAuthSummary": "Header configured",
|
||||
"policyAuthHeaderName": "Header name",
|
||||
"policyAuthHeaderValue": "Expected value",
|
||||
"policyAccessRulesTitle": "Access Rules",
|
||||
"policyAccessRulesEnableDescription": "When enabled, rules are evaluated in descending order until one evaluates as true.",
|
||||
"policyAccessRulesFirstMatch": "Rules are evaluated top to bottom. The first matching rule decides the outcome.",
|
||||
"policyAccessRulesHowItWorks": "Rules match requests by path, IP address, location, or other criteria. Each rule applies an action: bypass authentication, block access, or pass to authentication. If no rule matches, traffic continues to authentication.",
|
||||
"policyAccessRulesFallthroughOff": "When rules are disabled, all traffic passes through to authentication.",
|
||||
"policyAccessRulesFallthroughOn": "When no rule matches, traffic passes through to authentication.",
|
||||
"rulesPlaceholderCidr": "10.0.0.0/8",
|
||||
"rulesPlaceholderPath": "/admin/*",
|
||||
"rulesPlaceholderGeo": "RU, KP",
|
||||
"authMethodsSave": "Lagre autentiseringsmetoder",
|
||||
"rulesSave": "Lagre Regler",
|
||||
"resourceErrorCreate": "Feil under oppretting av ressurs",
|
||||
"resourceErrorCreateDescription": "Det oppstod en feil under oppretting av ressursen",
|
||||
@@ -1268,10 +1220,8 @@
|
||||
"addLabels": "Legg til etiketter",
|
||||
"siteLabelsTab": "Etiketter",
|
||||
"siteLabelsDescription": "Administrer etiketter knyttet til dette nettstedet.",
|
||||
"labelsNotFound": "No labels found.",
|
||||
"labelsEmptyCreateHint": "Start typing above to create a label.",
|
||||
"labelsNotFound": "Etiketter ikke funnet",
|
||||
"labelSearch": "Søk etter etiketter",
|
||||
"labelSearchOrCreate": "Search or create a label",
|
||||
"accessLabelFilterCount": "{count, plural, one {en etikett} other {# etiketter}}",
|
||||
"labelOverflowCount": "+{count, plural, one {en etikett} other {# etiketter}}",
|
||||
"accessLabelFilterClear": "Fjern etikettfiltre",
|
||||
@@ -1512,7 +1462,7 @@
|
||||
"sidebarProxyResources": "Offentlig",
|
||||
"sidebarClientResources": "Privat",
|
||||
"sidebarPolicies": "Retningslinjer",
|
||||
"sidebarResourcePolicies": "Public Resources",
|
||||
"sidebarResourcePolicies": "Ressurser",
|
||||
"sidebarAccessControl": "Tilgangskontroll",
|
||||
"sidebarLogsAndAnalytics": "Logger og analyser",
|
||||
"sidebarTeam": "Lag",
|
||||
@@ -1520,7 +1470,7 @@
|
||||
"sidebarAdmin": "Administrator",
|
||||
"sidebarInvitations": "Invitasjoner",
|
||||
"sidebarRoles": "Roller",
|
||||
"sidebarShareableLinks": "Share Links",
|
||||
"sidebarShareableLinks": "Lenker",
|
||||
"sidebarApiKeys": "API-nøkler",
|
||||
"sidebarProvisioning": "Levering",
|
||||
"sidebarSettings": "Innstillinger",
|
||||
@@ -1697,7 +1647,7 @@
|
||||
"standaloneHcFilterResourceIdFallback": "Ressurs {id}",
|
||||
"blueprints": "Tegninger",
|
||||
"blueprintsLog": "Blåkopieringslogg",
|
||||
"blueprintsDescription": "View past blueprint applications and their results or apply a new blueprint",
|
||||
"blueprintsDescription": "Vis tidligere applikasjoner av blåkopier og deres resultater",
|
||||
"blueprintAdd": "Legg til blåkopi",
|
||||
"blueprintGoBack": "Se alle blåkopier",
|
||||
"blueprintCreate": "Opprette mal",
|
||||
@@ -2077,13 +2027,13 @@
|
||||
"healthCheckUnknown": "Ukjent",
|
||||
"healthCheck": "Helsekontroll",
|
||||
"configureHealthCheck": "Konfigurer Helsekontroll",
|
||||
"configureHealthCheckDescription": "Set up monitoring for your resource to ensure it is always available",
|
||||
"configureHealthCheckDescription": "Sett opp helsekontroll for {target}",
|
||||
"enableHealthChecks": "Aktiver Helsekontroller",
|
||||
"healthCheckDisabledStateDescription": "Når deaktivert, vil ikke nettstedet utføre helsekontroller, og tilstanden vil anses som ukjent.",
|
||||
"enableHealthChecksDescription": "Overvåk helsen til dette målet. Du kan overvåke et annet endepunkt enn målet hvis nødvendig.",
|
||||
"healthScheme": "Metode",
|
||||
"healthSelectScheme": "Velg metode",
|
||||
"healthCheckPortInvalid": "Port must be between 1 and 65535",
|
||||
"healthCheckPortInvalid": "Helsekontrollporten må være mellom 1 og 65535",
|
||||
"healthCheckPath": "Sti",
|
||||
"healthHostname": "IP / Vert",
|
||||
"healthPort": "Port",
|
||||
@@ -2096,7 +2046,6 @@
|
||||
"requireDeviceApproval": "Krev enhetsgodkjenning",
|
||||
"requireDeviceApprovalDescription": "Brukere med denne rollen trenger nye enheter godkjent av en admin før de kan koble seg og få tilgang til ressurser.",
|
||||
"sshSettings": "SSH Innstillinger",
|
||||
"sshAccess": "SSH Access",
|
||||
"rdpSettings": "RDP Innstillinger",
|
||||
"vncSettings": "VNC Innstillinger",
|
||||
"sshServer": "SSH-server",
|
||||
@@ -2123,13 +2072,8 @@
|
||||
"sshDaemonDisclaimer": "Sørg for at målenheten din er riktig konfigurert for å kjøre autentiseringsdaemon før du fullfører denne oppsettet, eller klargjøring vil mislykkes.",
|
||||
"sshDaemonPort": "Daemon-port",
|
||||
"sshServerDestination": "Serverens Destinasjon",
|
||||
"sshServerDestinationDescription": "Configure the destination of the SSH server",
|
||||
"sshServerDestinationDescription": "Konfigurer destinasjonen og porten til SSH-serveren",
|
||||
"destination": "Destinasjon",
|
||||
"destinationRequired": "Destination is required.",
|
||||
"domainRequired": "Domain is required.",
|
||||
"proxyPortRequired": "Port is required.",
|
||||
"invalidPathConfiguration": "Invalid path configuration.",
|
||||
"invalidRewritePathConfiguration": "Invalid rewrite path configuration.",
|
||||
"bgTargetMultiSiteDisclaimer": "Ved å velge flere nettsteder aktiveres robust ruting og feilaktig avbrudd for høy tilgjengelighet.",
|
||||
"roleAllowSsh": "Tillat SSH",
|
||||
"roleAllowSshAllow": "Tillat",
|
||||
@@ -3090,7 +3034,7 @@
|
||||
"enterConfirmation": "Skriv inn bekreftelse",
|
||||
"blueprintViewDetails": "Detaljer",
|
||||
"defaultIdentityProvider": "Standard identitetsleverandør",
|
||||
"defaultIdentityProviderDescription": "The user will be automatically redirected to this identity provider for authentication.",
|
||||
"defaultIdentityProviderDescription": "Når en standard identitetsleverandør er valgt, vil brukeren automatisk bli omdirigert til leverandøren for autentisering.",
|
||||
"editInternalResourceDialogNetworkSettings": "Nettverksinnstillinger",
|
||||
"editInternalResourceDialogAccessPolicy": "Tilgangsregler for tilgang",
|
||||
"editInternalResourceDialogAddRoles": "Legg til roller",
|
||||
@@ -3402,8 +3346,6 @@
|
||||
"idpUnassociateQuestion": "Er du sikker på at du vil frakoble denne identitetsleverandøren fra denne organisasjonen?",
|
||||
"idpUnassociateDescription": "Alle brukere knyttet til denne identitetsleverandøren vil bli fjernet fra denne organisasjonen, men identitetsleverandøren vil fortsatt eksistere for andre tilknyttede organisasjoner.",
|
||||
"idpUnassociateConfirm": "Bekreft frakobling av identitetsleverandør",
|
||||
"idpConfirmDeleteAndRemoveMeFromOrg": "DELETE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateAndRemoveMeFromOrg": "UNASSOCIATE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateWarning": "Dette kan ikke angres for denne organisasjonen.",
|
||||
"idpUnassociatedDescription": "Identitetsleverandør er vellykket frakoblet fra denne organisasjonen",
|
||||
"idpUnassociateMenu": "Frakoble",
|
||||
@@ -3510,43 +3452,5 @@
|
||||
"sshErrorNoTarget": "Ingen mål spesifisert",
|
||||
"sshErrorWebSocket": "WebSocket-tilkobling mislyktes",
|
||||
"sshErrorAuthFailed": "Autentisering mislyktes",
|
||||
"sshErrorConnectionClosed": "Tilkobling avsluttet før autentisering ble fullført",
|
||||
"sitePangolinSshDescription": "Allow SSH access to resources on this site. This can be changed later.",
|
||||
"browserGatewayNoResourceForDomain": "No resource found for this domain",
|
||||
"browserGatewayNoTarget": "No target",
|
||||
"browserGatewayConnect": "Connect",
|
||||
"browserGatewayCtrlAltDel": "Ctrl+Alt+Del",
|
||||
"sshErrorSignKeyFailed": "Failed to sign SSH key for PAM push authentication. Did you sign in as a user?",
|
||||
"sshTerminalError": "Error: {error}",
|
||||
"sshConnectionClosedCode": "Connection closed (code {code})",
|
||||
"sshPrivateKeyPlaceholder": "-----BEGIN OPENSSH PRIVATE KEY-----",
|
||||
"sshPrivateKeyRequired": "Private key is required",
|
||||
"vncTitle": "VNC",
|
||||
"vncSignInDescription": "Enter your VNC password to connect",
|
||||
"vncPasswordOptional": "Password (optional)",
|
||||
"vncNoResourceTarget": "No resource target is available",
|
||||
"vncFailedToLoadNovnc": "Failed to load noVNC",
|
||||
"vncAuthFailedStatus": "Status {status}",
|
||||
"vncPasteClipboard": "Paste clipboard",
|
||||
"rdpTitle": "RDP",
|
||||
"rdpSignInTitle": "Sign in to Remote Desktop",
|
||||
"rdpSignInDescription": "Enter Windows credentials to connect",
|
||||
"rdpLoadingModule": "Loading module...",
|
||||
"rdpFailedToLoadModule": "Failed to load RDP module",
|
||||
"rdpNotReady": "Not ready",
|
||||
"rdpModuleInitializing": "RDP module is still initializing",
|
||||
"rdpDownloadingFiles": "Downloading {count} file(s) from remote…",
|
||||
"rdpDownloadFailed": "Download failed: {fileName}",
|
||||
"rdpUploaded": "Uploaded: {fileName}",
|
||||
"rdpNoConnectionTarget": "No connection target available",
|
||||
"rdpConnectionFailed": "Connection failed",
|
||||
"rdpFit": "Fit",
|
||||
"rdpFull": "Full",
|
||||
"rdpReal": "Real",
|
||||
"rdpMeta": "Meta",
|
||||
"rdpUploadFiles": "Upload files",
|
||||
"rdpFilesReadyToPaste": "Files ready to paste",
|
||||
"rdpFilesReadyToPasteDescription": "{count} file(s) copied to remote clipboard — press Ctrl+V on the remote desktop to paste.",
|
||||
"rdpUploadFailed": "Upload failed",
|
||||
"rdpUnicodeKeyboardMode": "Unicode keyboard mode"
|
||||
"sshErrorConnectionClosed": "Tilkobling avsluttet før autentisering ble fullført"
|
||||
}
|
||||
|
||||
@@ -101,8 +101,6 @@
|
||||
"sitesTableViewPrivateResources": "Privébronnen bekijken",
|
||||
"siteInstallNewt": "Installeer Newt",
|
||||
"siteInstallNewtDescription": "Laat Newt draaien op uw systeem",
|
||||
"siteInstallKubernetesDocsDescription": "For more and up to date Kubernetes installation information, see <docsLink>docs.pangolin.net/manage/sites/install-kubernetes</docsLink>.",
|
||||
"siteInstallAdvantechDocsDescription": "For Advantech modem installation instructions, see <docsLink>docs.pangolin.net/manage/sites/install-advantech</docsLink>.",
|
||||
"WgConfiguration": "WireGuard Configuratie",
|
||||
"WgConfigurationDescription": "Gebruik de volgende configuratie om verbinding te maken met het netwerk",
|
||||
"operatingSystem": "Operating systeem",
|
||||
@@ -202,8 +200,8 @@
|
||||
"shareErrorSelectResource": "Selecteer een bron",
|
||||
"proxyResourceTitle": "Openbare bronnen beheren",
|
||||
"proxyResourceDescription": "Creëer en beheer bronnen die openbaar toegankelijk zijn via een webbrowser",
|
||||
"publicResourcesBannerTitle": "Web-based Public Access",
|
||||
"publicResourcesBannerDescription": "Public resources are HTTPS proxies accessible to anyone on the internet through a web browser. Unlike private resources, they do not require client-side software and can include identity and context-aware access policies.",
|
||||
"proxyResourcesBannerTitle": "Webgebaseerde openbare toegang",
|
||||
"proxyResourcesBannerDescription": "Openbare bronnen zijn HTTPS of TCP/UDP-proxies die toegankelijk zijn voor iedereen op het internet via een webbrowser. In tegenstelling tot priv<69><76>bronnen vereisen ze geen client-side software maar kunnen ze identiteits- en context-bewuste toegangsrichtlijnen bevatten.",
|
||||
"clientResourceTitle": "Privébronnen beheren",
|
||||
"clientResourceDescription": "Creëer en beheer bronnen die alleen toegankelijk zijn via een verbonden client",
|
||||
"privateResourcesBannerTitle": "Zero-Trust Private Access",
|
||||
@@ -211,16 +209,15 @@
|
||||
"resourcesSearch": "Zoek bronnen...",
|
||||
"resourceAdd": "Bron toevoegen",
|
||||
"resourceErrorDelte": "Fout bij verwijderen document",
|
||||
"resourcePoliciesTitle": "Manage Public Resource Policies",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Resources",
|
||||
"resourcePoliciesTitle": "Beheer Bron Beleid",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Bijgevoegde bronnen",
|
||||
"resourcePoliciesAttachedResources": "{count} bron(nen)",
|
||||
"resourcePoliciesAttachedResourcesCount": "{count, plural, one {# resource} other {# resources}}",
|
||||
"resourcePoliciesAttachedResourcesEmpty": "geen bronnen",
|
||||
"resourcePoliciesDescription": "Create and manage authentication policies to control access to your public resources",
|
||||
"resourcePoliciesDescription": "Maak en beheer authenticatiebeleid om toegang tot uw bronnen te controleren",
|
||||
"resourcePoliciesSearch": "Beleidsregels zoeken...",
|
||||
"resourcePoliciesAdd": "Beleid toevoegen",
|
||||
"resourcePoliciesDefaultBadgeText": "Standaard beleidsregel",
|
||||
"resourcePoliciesCreate": "Create Public Resource Policy",
|
||||
"resourcePoliciesCreate": "Creëer Bronbeleid",
|
||||
"resourcePoliciesCreateDescription": "Volg de onderstaande stappen om een nieuw beleid aan te maken",
|
||||
"resourcePolicyName": "Beleidsregelnaam",
|
||||
"resourcePolicyNameDescription": "Geef deze beleidsregel een naam om deze te identificeren in uw bronnen",
|
||||
@@ -314,7 +311,7 @@
|
||||
"rules": "Regels",
|
||||
"resourceSettingDescription": "Configureer de instellingen in de bron",
|
||||
"resourceSetting": "{resourceName} instellingen",
|
||||
"resourcePolicySettingDescription": "Configure the settings on this public resource policy",
|
||||
"resourcePolicySettingDescription": "Configureer de instellingen op het bronbeleid",
|
||||
"resourcePolicySetting": "{policyName} instellingen",
|
||||
"alwaysAllow": "Authenticatie omzeilen",
|
||||
"alwaysDeny": "Blokkeer toegang",
|
||||
@@ -756,11 +753,11 @@
|
||||
"rulesErrorDuplicate": "Dupliceer regel",
|
||||
"rulesErrorDuplicateDescription": "Een regel met deze instellingen bestaat al",
|
||||
"rulesErrorInvalidIpAddressRange": "Ongeldige CIDR",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Enter a valid CIDR range (e.g., 10.0.0.0/8).",
|
||||
"rulesErrorInvalidUrl": "Invalid path",
|
||||
"rulesErrorInvalidUrlDescription": "Enter a valid URL path or pattern (e.g., /api/*).",
|
||||
"rulesErrorInvalidIpAddress": "Invalid IP address",
|
||||
"rulesErrorInvalidIpAddressDescription": "Enter a valid IPv4 or IPv6 address.",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Voer een geldige CIDR waarde in",
|
||||
"rulesErrorInvalidUrl": "Ongeldige URL pad",
|
||||
"rulesErrorInvalidUrlDescription": "Voer een geldige URL padwaarde in",
|
||||
"rulesErrorInvalidIpAddress": "Ongeldig IP",
|
||||
"rulesErrorInvalidIpAddressDescription": "Voer een geldig IP-adres in",
|
||||
"rulesErrorUpdate": "Regels bijwerken mislukt",
|
||||
"rulesErrorUpdateDescription": "Fout opgetreden tijdens het bijwerken van de regels",
|
||||
"rulesUpdated": "Regels inschakelen",
|
||||
@@ -768,23 +765,15 @@
|
||||
"rulesMatchIpAddressRangeDescription": "Voer een adres in in het CIDR-formaat (bijv. 103.21.244.0/22)",
|
||||
"rulesMatchIpAddress": "Voer een IP-adres in (bijv. 103.21.244.12)",
|
||||
"rulesMatchUrl": "Voer een URL-pad of patroon in (bijv. /api/v1/todos of /api/v1/*)",
|
||||
"rulesErrorInvalidPriority": "Invalid priority",
|
||||
"rulesErrorInvalidPriorityDescription": "Enter a whole number of 1 or higher.",
|
||||
"rulesErrorDuplicatePriority": "Duplicate priorities",
|
||||
"rulesErrorDuplicatePriorityDescription": "Each rule must have a unique priority number.",
|
||||
"rulesErrorValidation": "Invalid rules",
|
||||
"rulesErrorValidationRuleDescription": "Rule {ruleNumber}: {message}",
|
||||
"rulesErrorValueRequired": "Enter a value for this rule.",
|
||||
"rulesErrorInvalidCountry": "Invalid country",
|
||||
"rulesErrorInvalidCountryDescription": "Select a valid country.",
|
||||
"rulesErrorInvalidAsn": "Invalid ASN",
|
||||
"rulesErrorInvalidAsnDescription": "Enter a valid ASN (e.g., AS15169).",
|
||||
"rulesErrorInvalidPriority": "Ongeldige prioriteit",
|
||||
"rulesErrorInvalidPriorityDescription": "Voer een geldige prioriteit in",
|
||||
"rulesErrorDuplicatePriority": "Dubbele prioriteiten",
|
||||
"rulesErrorDuplicatePriorityDescription": "Voer unieke prioriteiten in",
|
||||
"ruleUpdated": "Regels bijgewerkt",
|
||||
"ruleUpdatedDescription": "Regels met succes bijgewerkt",
|
||||
"ruleErrorUpdate": "Bewerking mislukt",
|
||||
"ruleErrorUpdateDescription": "Er is een fout opgetreden tijdens het opslaan",
|
||||
"rulesPriority": "Prioriteit",
|
||||
"rulesReorderDragHandle": "Drag to reorder rule priority",
|
||||
"rulesAction": "actie",
|
||||
"rulesMatchType": "Wedstrijd Type",
|
||||
"value": "Waarde",
|
||||
@@ -803,7 +792,7 @@
|
||||
"rulesResource": "Configuratie Resource Regels",
|
||||
"rulesResourceDescription": "Regels instellen om toegang tot de bron te beheren",
|
||||
"ruleSubmit": "Regel toevoegen",
|
||||
"rulesNoOne": "No rules yet.",
|
||||
"rulesNoOne": "Geen regels. Voeg een regel toe via het formulier.",
|
||||
"rulesOrder": "Regels worden in oplopende volgorde volgens prioriteit beoordeeld.",
|
||||
"rulesSubmit": "Regels opslaan",
|
||||
"policyErrorCreate": "Fout bij het maken van beleid",
|
||||
@@ -814,44 +803,7 @@
|
||||
"policyErrorUpdateMessageDescription": "Er is een onverwachte fout opgetreden",
|
||||
"policyCreatedSuccess": "Bronbeleid met succes aangemaakt",
|
||||
"policyUpdatedSuccess": "Bronbeleid succesvol bijgewerkt",
|
||||
"authMethodsSave": "Save Settings",
|
||||
"policyAuthStackTitle": "Authentication",
|
||||
"policyAuthStackDescription": "Control which authentication methods are required to access this resource",
|
||||
"policyAuthOrLogicTitle": "Multiple authentication methods active",
|
||||
"policyAuthOrLogicBanner": "Visitors may authenticate using any one of the active methods below. They do not need to complete all of them.",
|
||||
"policyAuthMethodActive": "Active",
|
||||
"policyAuthMethodOff": "Off",
|
||||
"policyAuthSsoTitle": "Platform SSO",
|
||||
"policyAuthSsoDescription": "Require sign-in through your organization's identity provider",
|
||||
"policyAuthSsoSummary": "{idp} · {users} users, {roles} roles",
|
||||
"policyAuthSsoDefaultIdp": "Default provider",
|
||||
"policyAuthAddDefaultIdentityProvider": "Add Default Identity Provider",
|
||||
"policyAuthOtherMethodsTitle": "Other Methods",
|
||||
"policyAuthOtherMethodsDescription": "Optional methods visitors can use instead of or alongside platform SSO",
|
||||
"policyAuthPasscodeTitle": "Passcode",
|
||||
"policyAuthPasscodeDescription": "Require a shared alphanumeric passcode to access the resource",
|
||||
"policyAuthPasscodeSummary": "Passcode set",
|
||||
"policyAuthPincodeTitle": "PIN Code",
|
||||
"policyAuthPincodeDescription": "A short numeric code required to access the resource",
|
||||
"policyAuthPincodeSummary": "6-digit PIN set",
|
||||
"policyAuthEmailTitle": "Email Whitelist",
|
||||
"policyAuthEmailDescription": "Allow listed email addresses with one-time passwords",
|
||||
"policyAuthEmailSummary": "{count} addresses allowed",
|
||||
"policyAuthEmailOtpCallout": "Enabling email whitelist sends a one-time password to the visitor's email on login.",
|
||||
"policyAuthHeaderAuthTitle": "Basic Header Auth",
|
||||
"policyAuthHeaderAuthDescription": "Validate a custom HTTP header name and value on each request",
|
||||
"policyAuthHeaderAuthSummary": "Header configured",
|
||||
"policyAuthHeaderName": "Header name",
|
||||
"policyAuthHeaderValue": "Expected value",
|
||||
"policyAccessRulesTitle": "Access Rules",
|
||||
"policyAccessRulesEnableDescription": "When enabled, rules are evaluated in descending order until one evaluates as true.",
|
||||
"policyAccessRulesFirstMatch": "Rules are evaluated top to bottom. The first matching rule decides the outcome.",
|
||||
"policyAccessRulesHowItWorks": "Rules match requests by path, IP address, location, or other criteria. Each rule applies an action: bypass authentication, block access, or pass to authentication. If no rule matches, traffic continues to authentication.",
|
||||
"policyAccessRulesFallthroughOff": "When rules are disabled, all traffic passes through to authentication.",
|
||||
"policyAccessRulesFallthroughOn": "When no rule matches, traffic passes through to authentication.",
|
||||
"rulesPlaceholderCidr": "10.0.0.0/8",
|
||||
"rulesPlaceholderPath": "/admin/*",
|
||||
"rulesPlaceholderGeo": "RU, KP",
|
||||
"authMethodsSave": "Bewaar authenticatiemethoden",
|
||||
"rulesSave": "Regels opslaan",
|
||||
"resourceErrorCreate": "Fout bij maken document",
|
||||
"resourceErrorCreateDescription": "Er is een fout opgetreden bij het maken van het document",
|
||||
@@ -1268,10 +1220,8 @@
|
||||
"addLabels": "Labels toevoegen",
|
||||
"siteLabelsTab": "Labels",
|
||||
"siteLabelsDescription": "Beheer labels geassocieerd met deze site.",
|
||||
"labelsNotFound": "No labels found.",
|
||||
"labelsEmptyCreateHint": "Start typing above to create a label.",
|
||||
"labelsNotFound": "Labels niet gevonden",
|
||||
"labelSearch": "Labels zoeken",
|
||||
"labelSearchOrCreate": "Search or create a label",
|
||||
"accessLabelFilterCount": "{count, plural, one {# label} other {# labels}}",
|
||||
"labelOverflowCount": "+{count, plural, one {# label} other {# labels}}",
|
||||
"accessLabelFilterClear": "Labelfilters wissen",
|
||||
@@ -1512,7 +1462,7 @@
|
||||
"sidebarProxyResources": "Openbaar",
|
||||
"sidebarClientResources": "Privé",
|
||||
"sidebarPolicies": "Beleid",
|
||||
"sidebarResourcePolicies": "Public Resources",
|
||||
"sidebarResourcePolicies": "Bronnen",
|
||||
"sidebarAccessControl": "Toegangs controle",
|
||||
"sidebarLogsAndAnalytics": "Logs & Analytics",
|
||||
"sidebarTeam": "Team",
|
||||
@@ -1520,7 +1470,7 @@
|
||||
"sidebarAdmin": "Beheerder",
|
||||
"sidebarInvitations": "Uitnodigingen",
|
||||
"sidebarRoles": "Rollen",
|
||||
"sidebarShareableLinks": "Share Links",
|
||||
"sidebarShareableLinks": "Koppelingen",
|
||||
"sidebarApiKeys": "API sleutels",
|
||||
"sidebarProvisioning": "Provisie",
|
||||
"sidebarSettings": "Instellingen",
|
||||
@@ -1697,7 +1647,7 @@
|
||||
"standaloneHcFilterResourceIdFallback": "Bron {id}",
|
||||
"blueprints": "Blauwdrukken",
|
||||
"blueprintsLog": "Log Blueprints",
|
||||
"blueprintsDescription": "View past blueprint applications and their results or apply a new blueprint",
|
||||
"blueprintsDescription": "Bekijk eerdere blueprint-toepassingen en hun resultaten",
|
||||
"blueprintAdd": "Blauwdruk toevoegen",
|
||||
"blueprintGoBack": "Bekijk alle Blauwdrukken",
|
||||
"blueprintCreate": "Creëer blauwdruk",
|
||||
@@ -2077,13 +2027,13 @@
|
||||
"healthCheckUnknown": "Onbekend",
|
||||
"healthCheck": "Gezondheidscontrole",
|
||||
"configureHealthCheck": "Configureer Gezondheidscontrole",
|
||||
"configureHealthCheckDescription": "Set up monitoring for your resource to ensure it is always available",
|
||||
"configureHealthCheckDescription": "Stel gezondheid monitor voor {target} in",
|
||||
"enableHealthChecks": "Inschakelen Gezondheidscontroles",
|
||||
"healthCheckDisabledStateDescription": "Wanneer uitgeschakeld, zal de site geen gezondheidscontroles uitvoeren en wordt de staat als onbekend beschouwd.",
|
||||
"enableHealthChecksDescription": "Controleer de gezondheid van dit doel. U kunt een ander eindpunt monitoren dan het doel indien vereist.",
|
||||
"healthScheme": "Methode",
|
||||
"healthSelectScheme": "Selecteer methode",
|
||||
"healthCheckPortInvalid": "Port must be between 1 and 65535",
|
||||
"healthCheckPortInvalid": "Health check poort moet tussen 1 en 65535 zijn",
|
||||
"healthCheckPath": "Pad",
|
||||
"healthHostname": "IP / Hostnaam",
|
||||
"healthPort": "Poort",
|
||||
@@ -2096,7 +2046,6 @@
|
||||
"requireDeviceApproval": "Vereist goedkeuring van apparaat",
|
||||
"requireDeviceApprovalDescription": "Gebruikers met deze rol hebben nieuwe apparaten nodig die door een beheerder zijn goedgekeurd voordat ze verbinding kunnen maken met bronnen en deze kunnen gebruiken.",
|
||||
"sshSettings": "SSH-instellingen",
|
||||
"sshAccess": "SSH Access",
|
||||
"rdpSettings": "RDP-instellingen",
|
||||
"vncSettings": "VNC-instellingen",
|
||||
"sshServer": "SSH-server",
|
||||
@@ -2123,13 +2072,8 @@
|
||||
"sshDaemonDisclaimer": "Zorg ervoor dat uw doelhost goed is geconfigureerd om de auth daemon uit te voeren voordat u deze configuratie voltooit, anders zal de voorziening mislukken.",
|
||||
"sshDaemonPort": "Demonpoort",
|
||||
"sshServerDestination": "Serverbestemming",
|
||||
"sshServerDestinationDescription": "Configure the destination of the SSH server",
|
||||
"sshServerDestinationDescription": "Configureer de bestemming en poort van de SSH-server",
|
||||
"destination": "Bestemming",
|
||||
"destinationRequired": "Destination is required.",
|
||||
"domainRequired": "Domain is required.",
|
||||
"proxyPortRequired": "Port is required.",
|
||||
"invalidPathConfiguration": "Invalid path configuration.",
|
||||
"invalidRewritePathConfiguration": "Invalid rewrite path configuration.",
|
||||
"bgTargetMultiSiteDisclaimer": "Het selecteren van meerdere sites maakt veerkrachtige routering mogelijk en failover voor hoge beschikbaarheid.",
|
||||
"roleAllowSsh": "SSH toestaan",
|
||||
"roleAllowSshAllow": "Toestaan",
|
||||
@@ -3090,7 +3034,7 @@
|
||||
"enterConfirmation": "Bevestiging invoeren",
|
||||
"blueprintViewDetails": "Details",
|
||||
"defaultIdentityProvider": "Standaard Identiteitsprovider",
|
||||
"defaultIdentityProviderDescription": "The user will be automatically redirected to this identity provider for authentication.",
|
||||
"defaultIdentityProviderDescription": "Wanneer een standaard identity provider is geselecteerd, zal de gebruiker automatisch worden doorgestuurd naar de provider voor authenticatie.",
|
||||
"editInternalResourceDialogNetworkSettings": "Netwerkinstellingen",
|
||||
"editInternalResourceDialogAccessPolicy": "Toegangsbeleid",
|
||||
"editInternalResourceDialogAddRoles": "Rollen toevoegen",
|
||||
@@ -3402,8 +3346,6 @@
|
||||
"idpUnassociateQuestion": "Weet u zeker dat u deze identiteitsprovider van deze organisatie wilt loskoppelen?",
|
||||
"idpUnassociateDescription": "Alle gebruikers die aan deze identiteitsprovider zijn gekoppeld, worden uit deze organisatie verwijderd, maar de identiteitsprovider blijft bestaan voor andere gerelateerde organisaties.",
|
||||
"idpUnassociateConfirm": "Bevestig ontkoppelen identiteitsprovider",
|
||||
"idpConfirmDeleteAndRemoveMeFromOrg": "DELETE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateAndRemoveMeFromOrg": "UNASSOCIATE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateWarning": "Dit kan niet ongedaan worden gemaakt voor deze organisatie.",
|
||||
"idpUnassociatedDescription": "Identiteitsprovider succesvol losgekoppeld van deze organisatie",
|
||||
"idpUnassociateMenu": "Ontkoppelen",
|
||||
@@ -3510,43 +3452,5 @@
|
||||
"sshErrorNoTarget": "Geen doelwit gespecificeerd",
|
||||
"sshErrorWebSocket": "WebSocket-verbinding is mislukt",
|
||||
"sshErrorAuthFailed": "Authenticatie mislukt",
|
||||
"sshErrorConnectionClosed": "Verbinding gesloten voordat authenticatie was voltooid",
|
||||
"sitePangolinSshDescription": "Allow SSH access to resources on this site. This can be changed later.",
|
||||
"browserGatewayNoResourceForDomain": "No resource found for this domain",
|
||||
"browserGatewayNoTarget": "No target",
|
||||
"browserGatewayConnect": "Connect",
|
||||
"browserGatewayCtrlAltDel": "Ctrl+Alt+Del",
|
||||
"sshErrorSignKeyFailed": "Failed to sign SSH key for PAM push authentication. Did you sign in as a user?",
|
||||
"sshTerminalError": "Error: {error}",
|
||||
"sshConnectionClosedCode": "Connection closed (code {code})",
|
||||
"sshPrivateKeyPlaceholder": "-----BEGIN OPENSSH PRIVATE KEY-----",
|
||||
"sshPrivateKeyRequired": "Private key is required",
|
||||
"vncTitle": "VNC",
|
||||
"vncSignInDescription": "Enter your VNC password to connect",
|
||||
"vncPasswordOptional": "Password (optional)",
|
||||
"vncNoResourceTarget": "No resource target is available",
|
||||
"vncFailedToLoadNovnc": "Failed to load noVNC",
|
||||
"vncAuthFailedStatus": "Status {status}",
|
||||
"vncPasteClipboard": "Paste clipboard",
|
||||
"rdpTitle": "RDP",
|
||||
"rdpSignInTitle": "Sign in to Remote Desktop",
|
||||
"rdpSignInDescription": "Enter Windows credentials to connect",
|
||||
"rdpLoadingModule": "Loading module...",
|
||||
"rdpFailedToLoadModule": "Failed to load RDP module",
|
||||
"rdpNotReady": "Not ready",
|
||||
"rdpModuleInitializing": "RDP module is still initializing",
|
||||
"rdpDownloadingFiles": "Downloading {count} file(s) from remote…",
|
||||
"rdpDownloadFailed": "Download failed: {fileName}",
|
||||
"rdpUploaded": "Uploaded: {fileName}",
|
||||
"rdpNoConnectionTarget": "No connection target available",
|
||||
"rdpConnectionFailed": "Connection failed",
|
||||
"rdpFit": "Fit",
|
||||
"rdpFull": "Full",
|
||||
"rdpReal": "Real",
|
||||
"rdpMeta": "Meta",
|
||||
"rdpUploadFiles": "Upload files",
|
||||
"rdpFilesReadyToPaste": "Files ready to paste",
|
||||
"rdpFilesReadyToPasteDescription": "{count} file(s) copied to remote clipboard — press Ctrl+V on the remote desktop to paste.",
|
||||
"rdpUploadFailed": "Upload failed",
|
||||
"rdpUnicodeKeyboardMode": "Unicode keyboard mode"
|
||||
"sshErrorConnectionClosed": "Verbinding gesloten voordat authenticatie was voltooid"
|
||||
}
|
||||
|
||||
@@ -101,8 +101,6 @@
|
||||
"sitesTableViewPrivateResources": "Zobacz zasoby prywatne",
|
||||
"siteInstallNewt": "Zainstaluj Newt",
|
||||
"siteInstallNewtDescription": "Uruchom Newt w swoim systemie",
|
||||
"siteInstallKubernetesDocsDescription": "For more and up to date Kubernetes installation information, see <docsLink>docs.pangolin.net/manage/sites/install-kubernetes</docsLink>.",
|
||||
"siteInstallAdvantechDocsDescription": "For Advantech modem installation instructions, see <docsLink>docs.pangolin.net/manage/sites/install-advantech</docsLink>.",
|
||||
"WgConfiguration": "Konfiguracja WireGuard",
|
||||
"WgConfigurationDescription": "Użyj następującej konfiguracji, aby połączyć się z siecią",
|
||||
"operatingSystem": "System operacyjny",
|
||||
@@ -202,8 +200,8 @@
|
||||
"shareErrorSelectResource": "Wybierz zasób",
|
||||
"proxyResourceTitle": "Zarządzaj zasobami publicznymi",
|
||||
"proxyResourceDescription": "Twórz i zarządzaj zasobami, które są publicznie dostępne w przeglądarce internetowej",
|
||||
"publicResourcesBannerTitle": "Web-based Public Access",
|
||||
"publicResourcesBannerDescription": "Public resources are HTTPS proxies accessible to anyone on the internet through a web browser. Unlike private resources, they do not require client-side software and can include identity and context-aware access policies.",
|
||||
"proxyResourcesBannerTitle": "Publiczny dostęp za pośrednictwem sieci Web",
|
||||
"proxyResourcesBannerDescription": "Zasoby publiczne to proxy HTTPS lub TCP/UDP dostępne dla każdego w internecie za pośrednictwem przeglądarki internetowej. W przeciwieństwie do zasobów prywatnych, nie wymagają oprogramowania po stronie klienta i mogą obejmować polityki dostępu świadome tożsamości i kontekstu.",
|
||||
"clientResourceTitle": "Zarządzaj zasobami prywatnymi",
|
||||
"clientResourceDescription": "Twórz i zarządzaj zasobami, które są dostępne tylko za pośrednictwem połączonego klienta",
|
||||
"privateResourcesBannerTitle": "Zero zaufania do prywatnego dostępu",
|
||||
@@ -211,16 +209,15 @@
|
||||
"resourcesSearch": "Szukaj zasobów...",
|
||||
"resourceAdd": "Dodaj zasób",
|
||||
"resourceErrorDelte": "Błąd podczas usuwania zasobu",
|
||||
"resourcePoliciesTitle": "Manage Public Resource Policies",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Resources",
|
||||
"resourcePoliciesTitle": "Zarządzaj politykami zasobów",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Dołączone zasoby",
|
||||
"resourcePoliciesAttachedResources": "{count} zasób(y)",
|
||||
"resourcePoliciesAttachedResourcesCount": "{count, plural, one {# resource} other {# resources}}",
|
||||
"resourcePoliciesAttachedResourcesEmpty": "brak zasobów",
|
||||
"resourcePoliciesDescription": "Create and manage authentication policies to control access to your public resources",
|
||||
"resourcePoliciesDescription": "Twórz i zarządzaj politykami uwierzytelniania, aby kontrolować dostęp do swoich zasobów",
|
||||
"resourcePoliciesSearch": "Szukaj polityk...",
|
||||
"resourcePoliciesAdd": "Dodaj politykę",
|
||||
"resourcePoliciesDefaultBadgeText": "Domyślna polityka",
|
||||
"resourcePoliciesCreate": "Create Public Resource Policy",
|
||||
"resourcePoliciesCreate": "Utwórz politykę zasobu",
|
||||
"resourcePoliciesCreateDescription": "Wykonaj poniższe kroki, aby utworzyć nową politykę",
|
||||
"resourcePolicyName": "Nazwa polityki",
|
||||
"resourcePolicyNameDescription": "Nadaj tej polityce nazwę, aby można ją było zidentyfikować w całych zasobach",
|
||||
@@ -314,7 +311,7 @@
|
||||
"rules": "Regulamin",
|
||||
"resourceSettingDescription": "Skonfiguruj ustawienia zasobu",
|
||||
"resourceSetting": "Ustawienia {resourceName}",
|
||||
"resourcePolicySettingDescription": "Configure the settings on this public resource policy",
|
||||
"resourcePolicySettingDescription": "Skonfiguruj ustawienia w polityce zasobów",
|
||||
"resourcePolicySetting": "Ustawienia {policyName}",
|
||||
"alwaysAllow": "Omijanie uwierzytelniania",
|
||||
"alwaysDeny": "Blokuj dostęp",
|
||||
@@ -756,11 +753,11 @@
|
||||
"rulesErrorDuplicate": "Duplikat reguły",
|
||||
"rulesErrorDuplicateDescription": "Reguła o tych ustawieniach już istnieje",
|
||||
"rulesErrorInvalidIpAddressRange": "Nieprawidłowy CIDR",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Enter a valid CIDR range (e.g., 10.0.0.0/8).",
|
||||
"rulesErrorInvalidUrl": "Invalid path",
|
||||
"rulesErrorInvalidUrlDescription": "Enter a valid URL path or pattern (e.g., /api/*).",
|
||||
"rulesErrorInvalidIpAddress": "Invalid IP address",
|
||||
"rulesErrorInvalidIpAddressDescription": "Enter a valid IPv4 or IPv6 address.",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Wprowadź prawidłową wartość CIDR",
|
||||
"rulesErrorInvalidUrl": "Nieprawidłowa ścieżka URL",
|
||||
"rulesErrorInvalidUrlDescription": "Wprowadź prawidłową wartość ścieżki URL",
|
||||
"rulesErrorInvalidIpAddress": "Nieprawidłowe IP",
|
||||
"rulesErrorInvalidIpAddressDescription": "Wprowadź prawidłowy adres IP",
|
||||
"rulesErrorUpdate": "Nie udało się zaktualizować reguł",
|
||||
"rulesErrorUpdateDescription": "Wystąpił błąd podczas aktualizacji reguł",
|
||||
"rulesUpdated": "Włącz reguły",
|
||||
@@ -768,23 +765,15 @@
|
||||
"rulesMatchIpAddressRangeDescription": "Wprowadź adres w formacie CIDR (np. 103.21.244.0/22)",
|
||||
"rulesMatchIpAddress": "Wprowadź adres IP (np. 103.21.244.12)",
|
||||
"rulesMatchUrl": "Wprowadź ścieżkę URL lub wzorzec (np. /api/v1/todos lub /api/v1/*)",
|
||||
"rulesErrorInvalidPriority": "Invalid priority",
|
||||
"rulesErrorInvalidPriorityDescription": "Enter a whole number of 1 or higher.",
|
||||
"rulesErrorDuplicatePriority": "Duplicate priorities",
|
||||
"rulesErrorDuplicatePriorityDescription": "Each rule must have a unique priority number.",
|
||||
"rulesErrorValidation": "Invalid rules",
|
||||
"rulesErrorValidationRuleDescription": "Rule {ruleNumber}: {message}",
|
||||
"rulesErrorValueRequired": "Enter a value for this rule.",
|
||||
"rulesErrorInvalidCountry": "Invalid country",
|
||||
"rulesErrorInvalidCountryDescription": "Select a valid country.",
|
||||
"rulesErrorInvalidAsn": "Invalid ASN",
|
||||
"rulesErrorInvalidAsnDescription": "Enter a valid ASN (e.g., AS15169).",
|
||||
"rulesErrorInvalidPriority": "Nieprawidłowy priorytet",
|
||||
"rulesErrorInvalidPriorityDescription": "Wprowadź prawidłowy priorytet",
|
||||
"rulesErrorDuplicatePriority": "Zduplikowane priorytety",
|
||||
"rulesErrorDuplicatePriorityDescription": "Wprowadź unikalne priorytety",
|
||||
"ruleUpdated": "Reguły zaktualizowane",
|
||||
"ruleUpdatedDescription": "Reguły zostały pomyślnie zaktualizowane",
|
||||
"ruleErrorUpdate": "Operacja nie powiodła się",
|
||||
"ruleErrorUpdateDescription": "Wystąpił błąd podczas operacji zapisu",
|
||||
"rulesPriority": "Priorytet",
|
||||
"rulesReorderDragHandle": "Drag to reorder rule priority",
|
||||
"rulesAction": "Akcja",
|
||||
"rulesMatchType": "Typ dopasowania",
|
||||
"value": "Wartość",
|
||||
@@ -803,7 +792,7 @@
|
||||
"rulesResource": "Konfiguracja reguł zasobu",
|
||||
"rulesResourceDescription": "Skonfiguruj reguły, aby kontrolować dostęp do zasobu",
|
||||
"ruleSubmit": "Dodaj regułę",
|
||||
"rulesNoOne": "No rules yet.",
|
||||
"rulesNoOne": "Brak reguł. Dodaj regułę używając formularza.",
|
||||
"rulesOrder": "Reguły są oceniane według priorytetu w kolejności rosnącej.",
|
||||
"rulesSubmit": "Zapisz reguły",
|
||||
"policyErrorCreate": "Błąd przy tworzeniu polityki",
|
||||
@@ -814,44 +803,7 @@
|
||||
"policyErrorUpdateMessageDescription": "Wystąpił nieoczekiwany błąd",
|
||||
"policyCreatedSuccess": "Polityka zasobów została pomyślnie utworzona",
|
||||
"policyUpdatedSuccess": "Polityka zasobów została pomyślnie zaktualizowana",
|
||||
"authMethodsSave": "Save Settings",
|
||||
"policyAuthStackTitle": "Authentication",
|
||||
"policyAuthStackDescription": "Control which authentication methods are required to access this resource",
|
||||
"policyAuthOrLogicTitle": "Multiple authentication methods active",
|
||||
"policyAuthOrLogicBanner": "Visitors may authenticate using any one of the active methods below. They do not need to complete all of them.",
|
||||
"policyAuthMethodActive": "Active",
|
||||
"policyAuthMethodOff": "Off",
|
||||
"policyAuthSsoTitle": "Platform SSO",
|
||||
"policyAuthSsoDescription": "Require sign-in through your organization's identity provider",
|
||||
"policyAuthSsoSummary": "{idp} · {users} users, {roles} roles",
|
||||
"policyAuthSsoDefaultIdp": "Default provider",
|
||||
"policyAuthAddDefaultIdentityProvider": "Add Default Identity Provider",
|
||||
"policyAuthOtherMethodsTitle": "Other Methods",
|
||||
"policyAuthOtherMethodsDescription": "Optional methods visitors can use instead of or alongside platform SSO",
|
||||
"policyAuthPasscodeTitle": "Passcode",
|
||||
"policyAuthPasscodeDescription": "Require a shared alphanumeric passcode to access the resource",
|
||||
"policyAuthPasscodeSummary": "Passcode set",
|
||||
"policyAuthPincodeTitle": "PIN Code",
|
||||
"policyAuthPincodeDescription": "A short numeric code required to access the resource",
|
||||
"policyAuthPincodeSummary": "6-digit PIN set",
|
||||
"policyAuthEmailTitle": "Email Whitelist",
|
||||
"policyAuthEmailDescription": "Allow listed email addresses with one-time passwords",
|
||||
"policyAuthEmailSummary": "{count} addresses allowed",
|
||||
"policyAuthEmailOtpCallout": "Enabling email whitelist sends a one-time password to the visitor's email on login.",
|
||||
"policyAuthHeaderAuthTitle": "Basic Header Auth",
|
||||
"policyAuthHeaderAuthDescription": "Validate a custom HTTP header name and value on each request",
|
||||
"policyAuthHeaderAuthSummary": "Header configured",
|
||||
"policyAuthHeaderName": "Header name",
|
||||
"policyAuthHeaderValue": "Expected value",
|
||||
"policyAccessRulesTitle": "Access Rules",
|
||||
"policyAccessRulesEnableDescription": "When enabled, rules are evaluated in descending order until one evaluates as true.",
|
||||
"policyAccessRulesFirstMatch": "Rules are evaluated top to bottom. The first matching rule decides the outcome.",
|
||||
"policyAccessRulesHowItWorks": "Rules match requests by path, IP address, location, or other criteria. Each rule applies an action: bypass authentication, block access, or pass to authentication. If no rule matches, traffic continues to authentication.",
|
||||
"policyAccessRulesFallthroughOff": "When rules are disabled, all traffic passes through to authentication.",
|
||||
"policyAccessRulesFallthroughOn": "When no rule matches, traffic passes through to authentication.",
|
||||
"rulesPlaceholderCidr": "10.0.0.0/8",
|
||||
"rulesPlaceholderPath": "/admin/*",
|
||||
"rulesPlaceholderGeo": "RU, KP",
|
||||
"authMethodsSave": "Zapisz metody uwierzytelniania",
|
||||
"rulesSave": "Zapisz zasady",
|
||||
"resourceErrorCreate": "Błąd podczas tworzenia zasobu",
|
||||
"resourceErrorCreateDescription": "Wystąpił błąd podczas tworzenia zasobu",
|
||||
@@ -1268,10 +1220,8 @@
|
||||
"addLabels": "Dodaj etykiety",
|
||||
"siteLabelsTab": "Etykiety",
|
||||
"siteLabelsDescription": "Zarządzaj etykietami powiązanymi z tą stroną.",
|
||||
"labelsNotFound": "No labels found.",
|
||||
"labelsEmptyCreateHint": "Start typing above to create a label.",
|
||||
"labelsNotFound": "Nie znaleziono etykiet",
|
||||
"labelSearch": "Szukaj etykiet",
|
||||
"labelSearchOrCreate": "Search or create a label",
|
||||
"accessLabelFilterCount": "{count, plural, one {# etykieta} few {# etykiety} many {# etykiet} other {# etykiet}}",
|
||||
"labelOverflowCount": "+{count, plural, one {# etykieta} few {# etykiety} many {# etykiet} other {# etykiet}}",
|
||||
"accessLabelFilterClear": "Wyczyść filtry etykiet",
|
||||
@@ -1512,7 +1462,7 @@
|
||||
"sidebarProxyResources": "Publiczne",
|
||||
"sidebarClientResources": "Prywatny",
|
||||
"sidebarPolicies": "Polityki",
|
||||
"sidebarResourcePolicies": "Public Resources",
|
||||
"sidebarResourcePolicies": "Zasoby",
|
||||
"sidebarAccessControl": "Kontrola dostępu",
|
||||
"sidebarLogsAndAnalytics": "Logi i Analityki",
|
||||
"sidebarTeam": "Drużyna",
|
||||
@@ -1520,7 +1470,7 @@
|
||||
"sidebarAdmin": "Administrator",
|
||||
"sidebarInvitations": "Zaproszenia",
|
||||
"sidebarRoles": "Role",
|
||||
"sidebarShareableLinks": "Share Links",
|
||||
"sidebarShareableLinks": "Linki",
|
||||
"sidebarApiKeys": "Klucze API",
|
||||
"sidebarProvisioning": "Dostarczanie",
|
||||
"sidebarSettings": "Ustawienia",
|
||||
@@ -1697,7 +1647,7 @@
|
||||
"standaloneHcFilterResourceIdFallback": "Zasób {id}",
|
||||
"blueprints": "Schematy",
|
||||
"blueprintsLog": "Dziennik szablonów",
|
||||
"blueprintsDescription": "View past blueprint applications and their results or apply a new blueprint",
|
||||
"blueprintsDescription": "Zobacz wcześniejsze zastosowania szablonów i ich wyniki",
|
||||
"blueprintAdd": "Dodaj schemat",
|
||||
"blueprintGoBack": "Zobacz wszystkie schematy",
|
||||
"blueprintCreate": "Utwórz schemat",
|
||||
@@ -2077,13 +2027,13 @@
|
||||
"healthCheckUnknown": "Nieznany",
|
||||
"healthCheck": "Kontrola Zdrowia",
|
||||
"configureHealthCheck": "Skonfiguruj Kontrolę Zdrowia",
|
||||
"configureHealthCheckDescription": "Set up monitoring for your resource to ensure it is always available",
|
||||
"configureHealthCheckDescription": "Skonfiguruj monitorowanie zdrowia dla {target}",
|
||||
"enableHealthChecks": "Włącz Kontrole Zdrowia",
|
||||
"healthCheckDisabledStateDescription": "Gdy wyłączone, strona nie będzie wykonywać kontroli zdrowia, a stan zostanie uznany za nieznany.",
|
||||
"enableHealthChecksDescription": "Monitoruj zdrowie tego celu. Możesz monitorować inny punkt końcowy niż docelowy w razie potrzeby.",
|
||||
"healthScheme": "Metoda",
|
||||
"healthSelectScheme": "Wybierz metodę",
|
||||
"healthCheckPortInvalid": "Port must be between 1 and 65535",
|
||||
"healthCheckPortInvalid": "Port oceny stanu musi znajdować się między 1 a 65535",
|
||||
"healthCheckPath": "Ścieżka",
|
||||
"healthHostname": "IP / Nazwa hosta",
|
||||
"healthPort": "Port",
|
||||
@@ -2096,7 +2046,6 @@
|
||||
"requireDeviceApproval": "Wymagaj zatwierdzenia urządzenia",
|
||||
"requireDeviceApprovalDescription": "Użytkownicy o tej roli potrzebują nowych urządzeń zatwierdzonych przez administratora, zanim będą mogli połączyć się i uzyskać dostęp do zasobów.",
|
||||
"sshSettings": "Ustawienia SSH",
|
||||
"sshAccess": "SSH Access",
|
||||
"rdpSettings": "Ustawienia RDP",
|
||||
"vncSettings": "Ustawienia VNC",
|
||||
"sshServer": "Serwer SSH",
|
||||
@@ -2123,13 +2072,8 @@
|
||||
"sshDaemonDisclaimer": "Upewnij się, że Twoja maszyna docelowa jest poprawnie skonfigurowana do uruchamiania demona uwierzytelniania zanim ukończysz tę konfigurację, w przeciwnym razie provisioning zakończy się niepowodzeniem.",
|
||||
"sshDaemonPort": "Port Demona",
|
||||
"sshServerDestination": "Miejsce docelowe serwera",
|
||||
"sshServerDestinationDescription": "Configure the destination of the SSH server",
|
||||
"sshServerDestinationDescription": "Skonfiguruj miejsce docelowe i port serwera SSH",
|
||||
"destination": "Miejsce docelowe",
|
||||
"destinationRequired": "Destination is required.",
|
||||
"domainRequired": "Domain is required.",
|
||||
"proxyPortRequired": "Port is required.",
|
||||
"invalidPathConfiguration": "Invalid path configuration.",
|
||||
"invalidRewritePathConfiguration": "Invalid rewrite path configuration.",
|
||||
"bgTargetMultiSiteDisclaimer": "Wybór wielu stron umożliwia odporność trasowania i zmienioność dla wysokiej dostępności.",
|
||||
"roleAllowSsh": "Zezwalaj na SSH",
|
||||
"roleAllowSshAllow": "Zezwól",
|
||||
@@ -3090,7 +3034,7 @@
|
||||
"enterConfirmation": "Wprowadź potwierdzenie",
|
||||
"blueprintViewDetails": "Szczegóły",
|
||||
"defaultIdentityProvider": "Domyślny dostawca tożsamości",
|
||||
"defaultIdentityProviderDescription": "The user will be automatically redirected to this identity provider for authentication.",
|
||||
"defaultIdentityProviderDescription": "Gdy zostanie wybrany domyślny dostawca tożsamości, użytkownik zostanie automatycznie przekierowany do dostawcy w celu uwierzytelnienia.",
|
||||
"editInternalResourceDialogNetworkSettings": "Ustawienia sieci",
|
||||
"editInternalResourceDialogAccessPolicy": "Polityka dostępowa",
|
||||
"editInternalResourceDialogAddRoles": "Dodaj role",
|
||||
@@ -3402,8 +3346,6 @@
|
||||
"idpUnassociateQuestion": "Czy na pewno chcesz odłączyć tego dostawcę tożsamości od tej organizacji?",
|
||||
"idpUnassociateDescription": "Wszystkie użytkownicy powiązani z tym dostawcą tożsamości zostaną usunięci z tej organizacji, ale dostawca tożsamości będzie nadal istniał dla innych powiązanych organizacji.",
|
||||
"idpUnassociateConfirm": "Potwierdź odłączenie dostawcy tożsamości",
|
||||
"idpConfirmDeleteAndRemoveMeFromOrg": "DELETE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateAndRemoveMeFromOrg": "UNASSOCIATE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateWarning": "Tego nie można cofnąć dla tej organizacji.",
|
||||
"idpUnassociatedDescription": "Dostawca tożsamości pomyślnie odłączony od tej organizacji",
|
||||
"idpUnassociateMenu": "Odłącz",
|
||||
@@ -3510,43 +3452,5 @@
|
||||
"sshErrorNoTarget": "Nie określono celu",
|
||||
"sshErrorWebSocket": "Połączenie WebSocket nie powiodło się",
|
||||
"sshErrorAuthFailed": "Uwierzytelnianie nie powiodło się",
|
||||
"sshErrorConnectionClosed": "Połączenie zamknięte przed ukończeniem uwierzytelniania",
|
||||
"sitePangolinSshDescription": "Allow SSH access to resources on this site. This can be changed later.",
|
||||
"browserGatewayNoResourceForDomain": "No resource found for this domain",
|
||||
"browserGatewayNoTarget": "No target",
|
||||
"browserGatewayConnect": "Connect",
|
||||
"browserGatewayCtrlAltDel": "Ctrl+Alt+Del",
|
||||
"sshErrorSignKeyFailed": "Failed to sign SSH key for PAM push authentication. Did you sign in as a user?",
|
||||
"sshTerminalError": "Error: {error}",
|
||||
"sshConnectionClosedCode": "Connection closed (code {code})",
|
||||
"sshPrivateKeyPlaceholder": "-----BEGIN OPENSSH PRIVATE KEY-----",
|
||||
"sshPrivateKeyRequired": "Private key is required",
|
||||
"vncTitle": "VNC",
|
||||
"vncSignInDescription": "Enter your VNC password to connect",
|
||||
"vncPasswordOptional": "Password (optional)",
|
||||
"vncNoResourceTarget": "No resource target is available",
|
||||
"vncFailedToLoadNovnc": "Failed to load noVNC",
|
||||
"vncAuthFailedStatus": "Status {status}",
|
||||
"vncPasteClipboard": "Paste clipboard",
|
||||
"rdpTitle": "RDP",
|
||||
"rdpSignInTitle": "Sign in to Remote Desktop",
|
||||
"rdpSignInDescription": "Enter Windows credentials to connect",
|
||||
"rdpLoadingModule": "Loading module...",
|
||||
"rdpFailedToLoadModule": "Failed to load RDP module",
|
||||
"rdpNotReady": "Not ready",
|
||||
"rdpModuleInitializing": "RDP module is still initializing",
|
||||
"rdpDownloadingFiles": "Downloading {count} file(s) from remote…",
|
||||
"rdpDownloadFailed": "Download failed: {fileName}",
|
||||
"rdpUploaded": "Uploaded: {fileName}",
|
||||
"rdpNoConnectionTarget": "No connection target available",
|
||||
"rdpConnectionFailed": "Connection failed",
|
||||
"rdpFit": "Fit",
|
||||
"rdpFull": "Full",
|
||||
"rdpReal": "Real",
|
||||
"rdpMeta": "Meta",
|
||||
"rdpUploadFiles": "Upload files",
|
||||
"rdpFilesReadyToPaste": "Files ready to paste",
|
||||
"rdpFilesReadyToPasteDescription": "{count} file(s) copied to remote clipboard — press Ctrl+V on the remote desktop to paste.",
|
||||
"rdpUploadFailed": "Upload failed",
|
||||
"rdpUnicodeKeyboardMode": "Unicode keyboard mode"
|
||||
"sshErrorConnectionClosed": "Połączenie zamknięte przed ukończeniem uwierzytelniania"
|
||||
}
|
||||
|
||||
@@ -101,8 +101,6 @@
|
||||
"sitesTableViewPrivateResources": "Visualizar Recursos Privados",
|
||||
"siteInstallNewt": "Instalar Novo",
|
||||
"siteInstallNewtDescription": "Novo item em execução no seu sistema",
|
||||
"siteInstallKubernetesDocsDescription": "For more and up to date Kubernetes installation information, see <docsLink>docs.pangolin.net/manage/sites/install-kubernetes</docsLink>.",
|
||||
"siteInstallAdvantechDocsDescription": "For Advantech modem installation instructions, see <docsLink>docs.pangolin.net/manage/sites/install-advantech</docsLink>.",
|
||||
"WgConfiguration": "Configuração do WireGuard",
|
||||
"WgConfigurationDescription": "Use a seguinte configuração para conectar-se à rede",
|
||||
"operatingSystem": "Sistema operacional",
|
||||
@@ -202,8 +200,8 @@
|
||||
"shareErrorSelectResource": "Por favor, selecione um recurso",
|
||||
"proxyResourceTitle": "Gerenciar Recursos Públicos",
|
||||
"proxyResourceDescription": "Criar e gerenciar recursos que são acessíveis publicamente por meio de um navegador da web",
|
||||
"publicResourcesBannerTitle": "Web-based Public Access",
|
||||
"publicResourcesBannerDescription": "Public resources are HTTPS proxies accessible to anyone on the internet through a web browser. Unlike private resources, they do not require client-side software and can include identity and context-aware access policies.",
|
||||
"proxyResourcesBannerTitle": "Acesso Público via Web",
|
||||
"proxyResourcesBannerDescription": "Os recursos públicos são proxies HTTPS ou TCP/UDP acessíveis a qualquer pessoa na internet por meio de um navegador web. Ao contrário dos recursos privados, eles não requerem software do lado do cliente e podem incluir políticas de acesso conscientes de identidade e contexto.",
|
||||
"clientResourceTitle": "Gerenciar recursos privados",
|
||||
"clientResourceDescription": "Criar e gerenciar recursos que só são acessíveis por meio de um cliente conectado",
|
||||
"privateResourcesBannerTitle": "Acesso Privado com Confiança Zero",
|
||||
@@ -211,16 +209,15 @@
|
||||
"resourcesSearch": "Procurar recursos...",
|
||||
"resourceAdd": "Adicionar Recurso",
|
||||
"resourceErrorDelte": "Erro ao apagar recurso",
|
||||
"resourcePoliciesTitle": "Manage Public Resource Policies",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Resources",
|
||||
"resourcePoliciesTitle": "Gerenciar Políticas de Recurso",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Recursos Anexados",
|
||||
"resourcePoliciesAttachedResources": "{count} recurso(s)",
|
||||
"resourcePoliciesAttachedResourcesCount": "{count, plural, one {# resource} other {# resources}}",
|
||||
"resourcePoliciesAttachedResourcesEmpty": "sem recursos",
|
||||
"resourcePoliciesDescription": "Create and manage authentication policies to control access to your public resources",
|
||||
"resourcePoliciesDescription": "Crie e gerencie políticas de autenticação para controlar o acesso aos seus recursos",
|
||||
"resourcePoliciesSearch": "Pesquisar políticas...",
|
||||
"resourcePoliciesAdd": "Adicionar Política",
|
||||
"resourcePoliciesDefaultBadgeText": "Política Padrão",
|
||||
"resourcePoliciesCreate": "Create Public Resource Policy",
|
||||
"resourcePoliciesCreate": "Criar Política de Recurso",
|
||||
"resourcePoliciesCreateDescription": "Siga os passos abaixo para criar uma nova política",
|
||||
"resourcePolicyName": "Nome da Política",
|
||||
"resourcePolicyNameDescription": "Dê um nome a esta política para identificá-la em seus recursos",
|
||||
@@ -314,7 +311,7 @@
|
||||
"rules": "Regras",
|
||||
"resourceSettingDescription": "Configure as configurações do recurso",
|
||||
"resourceSetting": "Configurações do {resourceName}",
|
||||
"resourcePolicySettingDescription": "Configure the settings on this public resource policy",
|
||||
"resourcePolicySettingDescription": "Configure as configurações na política de recurso",
|
||||
"resourcePolicySetting": "Configurações de {policyName}",
|
||||
"alwaysAllow": "Autenticação de bypass",
|
||||
"alwaysDeny": "Bloquear Acesso",
|
||||
@@ -756,11 +753,11 @@
|
||||
"rulesErrorDuplicate": "Regra duplicada",
|
||||
"rulesErrorDuplicateDescription": "Uma regra com estas configurações já existe",
|
||||
"rulesErrorInvalidIpAddressRange": "CIDR inválido",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Enter a valid CIDR range (e.g., 10.0.0.0/8).",
|
||||
"rulesErrorInvalidUrl": "Invalid path",
|
||||
"rulesErrorInvalidUrlDescription": "Enter a valid URL path or pattern (e.g., /api/*).",
|
||||
"rulesErrorInvalidIpAddress": "Invalid IP address",
|
||||
"rulesErrorInvalidIpAddressDescription": "Enter a valid IPv4 or IPv6 address.",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Por favor, insira um valor CIDR válido",
|
||||
"rulesErrorInvalidUrl": "Caminho URL inválido",
|
||||
"rulesErrorInvalidUrlDescription": "Por favor, insira um valor de caminho URL válido",
|
||||
"rulesErrorInvalidIpAddress": "IP inválido",
|
||||
"rulesErrorInvalidIpAddressDescription": "Por favor, insira um endereço IP válido",
|
||||
"rulesErrorUpdate": "Falha ao atualizar regras",
|
||||
"rulesErrorUpdateDescription": "Ocorreu um erro ao atualizar regras",
|
||||
"rulesUpdated": "Ativar Regras",
|
||||
@@ -768,23 +765,15 @@
|
||||
"rulesMatchIpAddressRangeDescription": "Insira um endereço no formato CIDR (ex: 103.21.244.0/22)",
|
||||
"rulesMatchIpAddress": "Insira um endereço IP (ex: 103.21.244.12)",
|
||||
"rulesMatchUrl": "Insira um caminho URL ou padrão (ex: /api/v1/todos ou /api/v1/*)",
|
||||
"rulesErrorInvalidPriority": "Invalid priority",
|
||||
"rulesErrorInvalidPriorityDescription": "Enter a whole number of 1 or higher.",
|
||||
"rulesErrorDuplicatePriority": "Duplicate priorities",
|
||||
"rulesErrorDuplicatePriorityDescription": "Each rule must have a unique priority number.",
|
||||
"rulesErrorValidation": "Invalid rules",
|
||||
"rulesErrorValidationRuleDescription": "Rule {ruleNumber}: {message}",
|
||||
"rulesErrorValueRequired": "Enter a value for this rule.",
|
||||
"rulesErrorInvalidCountry": "Invalid country",
|
||||
"rulesErrorInvalidCountryDescription": "Select a valid country.",
|
||||
"rulesErrorInvalidAsn": "Invalid ASN",
|
||||
"rulesErrorInvalidAsnDescription": "Enter a valid ASN (e.g., AS15169).",
|
||||
"rulesErrorInvalidPriority": "Prioridade Inválida",
|
||||
"rulesErrorInvalidPriorityDescription": "Por favor, insira uma prioridade válida",
|
||||
"rulesErrorDuplicatePriority": "Prioridades Duplicadas",
|
||||
"rulesErrorDuplicatePriorityDescription": "Por favor, insira prioridades únicas",
|
||||
"ruleUpdated": "Regras atualizadas",
|
||||
"ruleUpdatedDescription": "Regras atualizadas com sucesso",
|
||||
"ruleErrorUpdate": "Operação falhou",
|
||||
"ruleErrorUpdateDescription": "Ocorreu um erro durante a operação de salvamento",
|
||||
"rulesPriority": "Prioridade",
|
||||
"rulesReorderDragHandle": "Drag to reorder rule priority",
|
||||
"rulesAction": "Ação",
|
||||
"rulesMatchType": "Tipo de Correspondência",
|
||||
"value": "Valor",
|
||||
@@ -803,7 +792,7 @@
|
||||
"rulesResource": "Configuração de Regras do Recurso",
|
||||
"rulesResourceDescription": "Configurar regras para controlar o acesso ao recurso",
|
||||
"ruleSubmit": "Adicionar Regra",
|
||||
"rulesNoOne": "No rules yet.",
|
||||
"rulesNoOne": "Sem regras. Adicione uma regra usando o formulário.",
|
||||
"rulesOrder": "As regras são avaliadas por prioridade em ordem ascendente.",
|
||||
"rulesSubmit": "Guardar Regras",
|
||||
"policyErrorCreate": "Erro ao criar política",
|
||||
@@ -814,44 +803,7 @@
|
||||
"policyErrorUpdateMessageDescription": "Ocorreu um erro inesperado",
|
||||
"policyCreatedSuccess": "Política de recurso criada com sucesso",
|
||||
"policyUpdatedSuccess": "Política de recurso atualizada com sucesso",
|
||||
"authMethodsSave": "Save Settings",
|
||||
"policyAuthStackTitle": "Authentication",
|
||||
"policyAuthStackDescription": "Control which authentication methods are required to access this resource",
|
||||
"policyAuthOrLogicTitle": "Multiple authentication methods active",
|
||||
"policyAuthOrLogicBanner": "Visitors may authenticate using any one of the active methods below. They do not need to complete all of them.",
|
||||
"policyAuthMethodActive": "Active",
|
||||
"policyAuthMethodOff": "Off",
|
||||
"policyAuthSsoTitle": "Platform SSO",
|
||||
"policyAuthSsoDescription": "Require sign-in through your organization's identity provider",
|
||||
"policyAuthSsoSummary": "{idp} · {users} users, {roles} roles",
|
||||
"policyAuthSsoDefaultIdp": "Default provider",
|
||||
"policyAuthAddDefaultIdentityProvider": "Add Default Identity Provider",
|
||||
"policyAuthOtherMethodsTitle": "Other Methods",
|
||||
"policyAuthOtherMethodsDescription": "Optional methods visitors can use instead of or alongside platform SSO",
|
||||
"policyAuthPasscodeTitle": "Passcode",
|
||||
"policyAuthPasscodeDescription": "Require a shared alphanumeric passcode to access the resource",
|
||||
"policyAuthPasscodeSummary": "Passcode set",
|
||||
"policyAuthPincodeTitle": "PIN Code",
|
||||
"policyAuthPincodeDescription": "A short numeric code required to access the resource",
|
||||
"policyAuthPincodeSummary": "6-digit PIN set",
|
||||
"policyAuthEmailTitle": "Email Whitelist",
|
||||
"policyAuthEmailDescription": "Allow listed email addresses with one-time passwords",
|
||||
"policyAuthEmailSummary": "{count} addresses allowed",
|
||||
"policyAuthEmailOtpCallout": "Enabling email whitelist sends a one-time password to the visitor's email on login.",
|
||||
"policyAuthHeaderAuthTitle": "Basic Header Auth",
|
||||
"policyAuthHeaderAuthDescription": "Validate a custom HTTP header name and value on each request",
|
||||
"policyAuthHeaderAuthSummary": "Header configured",
|
||||
"policyAuthHeaderName": "Header name",
|
||||
"policyAuthHeaderValue": "Expected value",
|
||||
"policyAccessRulesTitle": "Access Rules",
|
||||
"policyAccessRulesEnableDescription": "When enabled, rules are evaluated in descending order until one evaluates as true.",
|
||||
"policyAccessRulesFirstMatch": "Rules are evaluated top to bottom. The first matching rule decides the outcome.",
|
||||
"policyAccessRulesHowItWorks": "Rules match requests by path, IP address, location, or other criteria. Each rule applies an action: bypass authentication, block access, or pass to authentication. If no rule matches, traffic continues to authentication.",
|
||||
"policyAccessRulesFallthroughOff": "When rules are disabled, all traffic passes through to authentication.",
|
||||
"policyAccessRulesFallthroughOn": "When no rule matches, traffic passes through to authentication.",
|
||||
"rulesPlaceholderCidr": "10.0.0.0/8",
|
||||
"rulesPlaceholderPath": "/admin/*",
|
||||
"rulesPlaceholderGeo": "RU, KP",
|
||||
"authMethodsSave": "Salvar métodos de autenticação",
|
||||
"rulesSave": "Guardar Regras",
|
||||
"resourceErrorCreate": "Erro ao criar recurso",
|
||||
"resourceErrorCreateDescription": "Ocorreu um erro ao criar o recurso",
|
||||
@@ -1268,10 +1220,8 @@
|
||||
"addLabels": "Adicionar etiquetas",
|
||||
"siteLabelsTab": "Etiquetas",
|
||||
"siteLabelsDescription": "Gerencie etiquetas associadas a este site.",
|
||||
"labelsNotFound": "No labels found.",
|
||||
"labelsEmptyCreateHint": "Start typing above to create a label.",
|
||||
"labelsNotFound": "Etiquetas não encontradas",
|
||||
"labelSearch": "Pesquisar etiquetas",
|
||||
"labelSearchOrCreate": "Search or create a label",
|
||||
"accessLabelFilterCount": "{count, plural, one {# etiqueta} other {# etiquetas}}",
|
||||
"labelOverflowCount": "+{count, plural, one {# etiqueta} other {# etiquetas}}",
|
||||
"accessLabelFilterClear": "Limpar filtros de etiquetas",
|
||||
@@ -1512,7 +1462,7 @@
|
||||
"sidebarProxyResources": "Público",
|
||||
"sidebarClientResources": "Privado",
|
||||
"sidebarPolicies": "Políticas",
|
||||
"sidebarResourcePolicies": "Public Resources",
|
||||
"sidebarResourcePolicies": "Recursos",
|
||||
"sidebarAccessControl": "Controle de Acesso",
|
||||
"sidebarLogsAndAnalytics": "Registros e Análises",
|
||||
"sidebarTeam": "Equipe",
|
||||
@@ -1520,7 +1470,7 @@
|
||||
"sidebarAdmin": "Administrador",
|
||||
"sidebarInvitations": "Convites",
|
||||
"sidebarRoles": "Papéis",
|
||||
"sidebarShareableLinks": "Share Links",
|
||||
"sidebarShareableLinks": "Links",
|
||||
"sidebarApiKeys": "Chaves API",
|
||||
"sidebarProvisioning": "Provisionamento",
|
||||
"sidebarSettings": "Configurações",
|
||||
@@ -1697,7 +1647,7 @@
|
||||
"standaloneHcFilterResourceIdFallback": "Recurso {id}",
|
||||
"blueprints": "Diagramas",
|
||||
"blueprintsLog": "Registo dos Blueprint",
|
||||
"blueprintsDescription": "View past blueprint applications and their results or apply a new blueprint",
|
||||
"blueprintsDescription": "Ver aplicações de blueprint passadas e seus resultados",
|
||||
"blueprintAdd": "Adicionar Diagrama",
|
||||
"blueprintGoBack": "Ver todos os Diagramas",
|
||||
"blueprintCreate": "Criar Diagrama",
|
||||
@@ -2077,13 +2027,13 @@
|
||||
"healthCheckUnknown": "Desconhecido",
|
||||
"healthCheck": "Verificação de Saúde",
|
||||
"configureHealthCheck": "Configurar Verificação de Saúde",
|
||||
"configureHealthCheckDescription": "Set up monitoring for your resource to ensure it is always available",
|
||||
"configureHealthCheckDescription": "Configure a monitorização de saúde para {target}",
|
||||
"enableHealthChecks": "Ativar Verificações de Saúde",
|
||||
"healthCheckDisabledStateDescription": "Quando desativado, o site não realizará verificações de saúde e o estado será considerado desconhecido.",
|
||||
"enableHealthChecksDescription": "Monitore a saúde deste alvo. Você pode monitorar um ponto de extremidade diferente do alvo, se necessário.",
|
||||
"healthScheme": "Método",
|
||||
"healthSelectScheme": "Selecione o Método",
|
||||
"healthCheckPortInvalid": "Port must be between 1 and 65535",
|
||||
"healthCheckPortInvalid": "A porta do exame de saúde deve estar entre 1 e 65535",
|
||||
"healthCheckPath": "Caminho",
|
||||
"healthHostname": "IP / Nome do Host",
|
||||
"healthPort": "Porta",
|
||||
@@ -2096,7 +2046,6 @@
|
||||
"requireDeviceApproval": "Exigir aprovação do dispositivo",
|
||||
"requireDeviceApprovalDescription": "Usuários com esta função precisam de novos dispositivos aprovados por um administrador antes que eles possam se conectar e acessar recursos.",
|
||||
"sshSettings": "Configurações SSH",
|
||||
"sshAccess": "SSH Access",
|
||||
"rdpSettings": "Configurações RDP",
|
||||
"vncSettings": "Configurações VNC",
|
||||
"sshServer": "Servidor SSH",
|
||||
@@ -2123,13 +2072,8 @@
|
||||
"sshDaemonDisclaimer": "Certifique-se de que seu host de destino está devidamente configurado para executar o daemon de autenticação antes de concluir esta configuração, ou o provisionamento falhará.",
|
||||
"sshDaemonPort": "Porta do Daemon",
|
||||
"sshServerDestination": "Destino do Servidor",
|
||||
"sshServerDestinationDescription": "Configure the destination of the SSH server",
|
||||
"sshServerDestinationDescription": "Configure o destino e a porta do servidor SSH",
|
||||
"destination": "Destino",
|
||||
"destinationRequired": "Destination is required.",
|
||||
"domainRequired": "Domain is required.",
|
||||
"proxyPortRequired": "Port is required.",
|
||||
"invalidPathConfiguration": "Invalid path configuration.",
|
||||
"invalidRewritePathConfiguration": "Invalid rewrite path configuration.",
|
||||
"bgTargetMultiSiteDisclaimer": "Selecionar vários sites permite roteamento resiliente e failover para alta disponibilidade.",
|
||||
"roleAllowSsh": "Permitir SSH",
|
||||
"roleAllowSshAllow": "Autorizar",
|
||||
@@ -3090,7 +3034,7 @@
|
||||
"enterConfirmation": "Inserir confirmação",
|
||||
"blueprintViewDetails": "Detalhes",
|
||||
"defaultIdentityProvider": "Provedor de Identidade Padrão",
|
||||
"defaultIdentityProviderDescription": "The user will be automatically redirected to this identity provider for authentication.",
|
||||
"defaultIdentityProviderDescription": "Quando um provedor de identidade padrão for selecionado, o usuário será automaticamente redirecionado para o provedor de autenticação.",
|
||||
"editInternalResourceDialogNetworkSettings": "Configurações de Rede",
|
||||
"editInternalResourceDialogAccessPolicy": "Política de Acesso",
|
||||
"editInternalResourceDialogAddRoles": "Adicionar Funções",
|
||||
@@ -3402,8 +3346,6 @@
|
||||
"idpUnassociateQuestion": "Tem certeza de que deseja desassociar este provedor de identidade desta organização?",
|
||||
"idpUnassociateDescription": "Todos os usuários associados a este provedor de identidade serão removidos desta organização, mas o provedor de identidade continuará a existir para outras organizações associadas.",
|
||||
"idpUnassociateConfirm": "Confirmar Desassociação do Provedor de Identidade",
|
||||
"idpConfirmDeleteAndRemoveMeFromOrg": "DELETE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateAndRemoveMeFromOrg": "UNASSOCIATE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateWarning": "Isso não pode ser desfeito para esta organização.",
|
||||
"idpUnassociatedDescription": "Provedor de identidade desassociado desta organização com sucesso",
|
||||
"idpUnassociateMenu": "Desassociar",
|
||||
@@ -3510,43 +3452,5 @@
|
||||
"sshErrorNoTarget": "Nenhum alvo especificado",
|
||||
"sshErrorWebSocket": "Falha na conexão WebSocket",
|
||||
"sshErrorAuthFailed": "Falha na autenticação",
|
||||
"sshErrorConnectionClosed": "Conexão encerrada antes de concluir a autenticação",
|
||||
"sitePangolinSshDescription": "Allow SSH access to resources on this site. This can be changed later.",
|
||||
"browserGatewayNoResourceForDomain": "No resource found for this domain",
|
||||
"browserGatewayNoTarget": "No target",
|
||||
"browserGatewayConnect": "Connect",
|
||||
"browserGatewayCtrlAltDel": "Ctrl+Alt+Del",
|
||||
"sshErrorSignKeyFailed": "Failed to sign SSH key for PAM push authentication. Did you sign in as a user?",
|
||||
"sshTerminalError": "Error: {error}",
|
||||
"sshConnectionClosedCode": "Connection closed (code {code})",
|
||||
"sshPrivateKeyPlaceholder": "-----BEGIN OPENSSH PRIVATE KEY-----",
|
||||
"sshPrivateKeyRequired": "Private key is required",
|
||||
"vncTitle": "VNC",
|
||||
"vncSignInDescription": "Enter your VNC password to connect",
|
||||
"vncPasswordOptional": "Password (optional)",
|
||||
"vncNoResourceTarget": "No resource target is available",
|
||||
"vncFailedToLoadNovnc": "Failed to load noVNC",
|
||||
"vncAuthFailedStatus": "Status {status}",
|
||||
"vncPasteClipboard": "Paste clipboard",
|
||||
"rdpTitle": "RDP",
|
||||
"rdpSignInTitle": "Sign in to Remote Desktop",
|
||||
"rdpSignInDescription": "Enter Windows credentials to connect",
|
||||
"rdpLoadingModule": "Loading module...",
|
||||
"rdpFailedToLoadModule": "Failed to load RDP module",
|
||||
"rdpNotReady": "Not ready",
|
||||
"rdpModuleInitializing": "RDP module is still initializing",
|
||||
"rdpDownloadingFiles": "Downloading {count} file(s) from remote…",
|
||||
"rdpDownloadFailed": "Download failed: {fileName}",
|
||||
"rdpUploaded": "Uploaded: {fileName}",
|
||||
"rdpNoConnectionTarget": "No connection target available",
|
||||
"rdpConnectionFailed": "Connection failed",
|
||||
"rdpFit": "Fit",
|
||||
"rdpFull": "Full",
|
||||
"rdpReal": "Real",
|
||||
"rdpMeta": "Meta",
|
||||
"rdpUploadFiles": "Upload files",
|
||||
"rdpFilesReadyToPaste": "Files ready to paste",
|
||||
"rdpFilesReadyToPasteDescription": "{count} file(s) copied to remote clipboard — press Ctrl+V on the remote desktop to paste.",
|
||||
"rdpUploadFailed": "Upload failed",
|
||||
"rdpUnicodeKeyboardMode": "Unicode keyboard mode"
|
||||
"sshErrorConnectionClosed": "Conexão encerrada antes de concluir a autenticação"
|
||||
}
|
||||
|
||||
@@ -101,8 +101,6 @@
|
||||
"sitesTableViewPrivateResources": "Просмотр частных ресурсов",
|
||||
"siteInstallNewt": "Установить Newt",
|
||||
"siteInstallNewtDescription": "Запустите Newt в вашей системе",
|
||||
"siteInstallKubernetesDocsDescription": "For more and up to date Kubernetes installation information, see <docsLink>docs.pangolin.net/manage/sites/install-kubernetes</docsLink>.",
|
||||
"siteInstallAdvantechDocsDescription": "For Advantech modem installation instructions, see <docsLink>docs.pangolin.net/manage/sites/install-advantech</docsLink>.",
|
||||
"WgConfiguration": "Конфигурация WireGuard",
|
||||
"WgConfigurationDescription": "Используйте следующую конфигурацию для подключения к сети",
|
||||
"operatingSystem": "Операционная система",
|
||||
@@ -202,8 +200,8 @@
|
||||
"shareErrorSelectResource": "Пожалуйста, выберите ресурс",
|
||||
"proxyResourceTitle": "Управление публичными ресурсами",
|
||||
"proxyResourceDescription": "Создание и управление ресурсами, которые доступны через веб-браузер",
|
||||
"publicResourcesBannerTitle": "Web-based Public Access",
|
||||
"publicResourcesBannerDescription": "Public resources are HTTPS proxies accessible to anyone on the internet through a web browser. Unlike private resources, they do not require client-side software and can include identity and context-aware access policies.",
|
||||
"proxyResourcesBannerTitle": "Общедоступный доступ через веб",
|
||||
"proxyResourcesBannerDescription": "Общедоступные ресурсы - это прокси-по HTTPS или TCP/UDP, доступные любому пользователю в Интернете через веб-браузер. В отличие от частных ресурсов, они не требуют программного обеспечения на стороне клиента и могут включать политики доступа на основе идентификации и контекста.",
|
||||
"clientResourceTitle": "Управление приватными ресурсами",
|
||||
"clientResourceDescription": "Создание и управление ресурсами, которые доступны только через подключенный клиент",
|
||||
"privateResourcesBannerTitle": "Частный доступ с нулевым доверием",
|
||||
@@ -211,16 +209,15 @@
|
||||
"resourcesSearch": "Поиск ресурсов...",
|
||||
"resourceAdd": "Добавить ресурс",
|
||||
"resourceErrorDelte": "Ошибка при удалении ресурса",
|
||||
"resourcePoliciesTitle": "Manage Public Resource Policies",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Resources",
|
||||
"resourcePoliciesTitle": "Управление политиками ресурсов",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Прикрепленные ресурсы",
|
||||
"resourcePoliciesAttachedResources": "{count} ресурс(ов)",
|
||||
"resourcePoliciesAttachedResourcesCount": "{count, plural, one {# resource} other {# resources}}",
|
||||
"resourcePoliciesAttachedResourcesEmpty": "нет ресурсов",
|
||||
"resourcePoliciesDescription": "Create and manage authentication policies to control access to your public resources",
|
||||
"resourcePoliciesDescription": "Создавайте и управляйте политиками аутентификации для контроля доступа к вашим ресурсам",
|
||||
"resourcePoliciesSearch": "Поиск политик...",
|
||||
"resourcePoliciesAdd": "Добавить политику",
|
||||
"resourcePoliciesDefaultBadgeText": "Политика по умолчанию",
|
||||
"resourcePoliciesCreate": "Create Public Resource Policy",
|
||||
"resourcePoliciesCreate": "Создать политику ресурса",
|
||||
"resourcePoliciesCreateDescription": "Следуйте шагам ниже, чтобы создать новую политику",
|
||||
"resourcePolicyName": "Имя политики",
|
||||
"resourcePolicyNameDescription": "Дайте этой политике имя для идентификации ее в ваших ресурсах",
|
||||
@@ -314,7 +311,7 @@
|
||||
"rules": "Правила",
|
||||
"resourceSettingDescription": "Настройка параметров ресурса",
|
||||
"resourceSetting": "Настройки {resourceName}",
|
||||
"resourcePolicySettingDescription": "Configure the settings on this public resource policy",
|
||||
"resourcePolicySettingDescription": "Настройка параметров политики ресурса",
|
||||
"resourcePolicySetting": "Настройки {policyName}",
|
||||
"alwaysAllow": "Авторизация байпасса",
|
||||
"alwaysDeny": "Блокировать доступ",
|
||||
@@ -756,11 +753,11 @@
|
||||
"rulesErrorDuplicate": "Дублирующее правило",
|
||||
"rulesErrorDuplicateDescription": "Правило с такими настройками уже существует",
|
||||
"rulesErrorInvalidIpAddressRange": "Неверный CIDR",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Enter a valid CIDR range (e.g., 10.0.0.0/8).",
|
||||
"rulesErrorInvalidUrl": "Invalid path",
|
||||
"rulesErrorInvalidUrlDescription": "Enter a valid URL path or pattern (e.g., /api/*).",
|
||||
"rulesErrorInvalidIpAddress": "Invalid IP address",
|
||||
"rulesErrorInvalidIpAddressDescription": "Enter a valid IPv4 or IPv6 address.",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Пожалуйста, введите корректное значение CIDR",
|
||||
"rulesErrorInvalidUrl": "Неверный URL путь",
|
||||
"rulesErrorInvalidUrlDescription": "Пожалуйста, введите корректное значение URL пути",
|
||||
"rulesErrorInvalidIpAddress": "Неверный IP",
|
||||
"rulesErrorInvalidIpAddressDescription": "Пожалуйста, введите корректный IP адрес",
|
||||
"rulesErrorUpdate": "Не удалось обновить правила",
|
||||
"rulesErrorUpdateDescription": "Произошла ошибка при обновлении правил",
|
||||
"rulesUpdated": "Включить правила",
|
||||
@@ -768,23 +765,15 @@
|
||||
"rulesMatchIpAddressRangeDescription": "Введите адрес в формате CIDR (например, 103.21.244.0/22)",
|
||||
"rulesMatchIpAddress": "Введите IP адрес (например, 103.21.244.12)",
|
||||
"rulesMatchUrl": "Введите URL путь или шаблон (например, /api/v1/todos или /api/v1/*)",
|
||||
"rulesErrorInvalidPriority": "Invalid priority",
|
||||
"rulesErrorInvalidPriorityDescription": "Enter a whole number of 1 or higher.",
|
||||
"rulesErrorDuplicatePriority": "Duplicate priorities",
|
||||
"rulesErrorDuplicatePriorityDescription": "Each rule must have a unique priority number.",
|
||||
"rulesErrorValidation": "Invalid rules",
|
||||
"rulesErrorValidationRuleDescription": "Rule {ruleNumber}: {message}",
|
||||
"rulesErrorValueRequired": "Enter a value for this rule.",
|
||||
"rulesErrorInvalidCountry": "Invalid country",
|
||||
"rulesErrorInvalidCountryDescription": "Select a valid country.",
|
||||
"rulesErrorInvalidAsn": "Invalid ASN",
|
||||
"rulesErrorInvalidAsnDescription": "Enter a valid ASN (e.g., AS15169).",
|
||||
"rulesErrorInvalidPriority": "Неверный приоритет",
|
||||
"rulesErrorInvalidPriorityDescription": "Пожалуйста, введите корректный приоритет",
|
||||
"rulesErrorDuplicatePriority": "Дублирующие приоритеты",
|
||||
"rulesErrorDuplicatePriorityDescription": "Пожалуйста, введите уникальные приоритеты",
|
||||
"ruleUpdated": "Правила обновлены",
|
||||
"ruleUpdatedDescription": "Правила успешно обновлены",
|
||||
"ruleErrorUpdate": "Операция не удалась",
|
||||
"ruleErrorUpdateDescription": "Произошла ошибка во время операции сохранения",
|
||||
"rulesPriority": "Приоритет",
|
||||
"rulesReorderDragHandle": "Drag to reorder rule priority",
|
||||
"rulesAction": "Действие",
|
||||
"rulesMatchType": "Тип совпадения",
|
||||
"value": "Значение",
|
||||
@@ -803,7 +792,7 @@
|
||||
"rulesResource": "Конфигурация правил ресурса",
|
||||
"rulesResourceDescription": "Настройка правил для контроля доступа к ресурсу",
|
||||
"ruleSubmit": "Добавить правило",
|
||||
"rulesNoOne": "No rules yet.",
|
||||
"rulesNoOne": "Нет правил. Добавьте правило с помощью формы.",
|
||||
"rulesOrder": "Правила оцениваются по приоритету в возрастающем порядке.",
|
||||
"rulesSubmit": "Сохранить правила",
|
||||
"policyErrorCreate": "Ошибка создания политики",
|
||||
@@ -814,44 +803,7 @@
|
||||
"policyErrorUpdateMessageDescription": "Произошла неожиданная ошибка",
|
||||
"policyCreatedSuccess": "Политика ресурса успешно создана",
|
||||
"policyUpdatedSuccess": "Политика ресурса успешно обновлена",
|
||||
"authMethodsSave": "Save Settings",
|
||||
"policyAuthStackTitle": "Authentication",
|
||||
"policyAuthStackDescription": "Control which authentication methods are required to access this resource",
|
||||
"policyAuthOrLogicTitle": "Multiple authentication methods active",
|
||||
"policyAuthOrLogicBanner": "Visitors may authenticate using any one of the active methods below. They do not need to complete all of them.",
|
||||
"policyAuthMethodActive": "Active",
|
||||
"policyAuthMethodOff": "Off",
|
||||
"policyAuthSsoTitle": "Platform SSO",
|
||||
"policyAuthSsoDescription": "Require sign-in through your organization's identity provider",
|
||||
"policyAuthSsoSummary": "{idp} · {users} users, {roles} roles",
|
||||
"policyAuthSsoDefaultIdp": "Default provider",
|
||||
"policyAuthAddDefaultIdentityProvider": "Add Default Identity Provider",
|
||||
"policyAuthOtherMethodsTitle": "Other Methods",
|
||||
"policyAuthOtherMethodsDescription": "Optional methods visitors can use instead of or alongside platform SSO",
|
||||
"policyAuthPasscodeTitle": "Passcode",
|
||||
"policyAuthPasscodeDescription": "Require a shared alphanumeric passcode to access the resource",
|
||||
"policyAuthPasscodeSummary": "Passcode set",
|
||||
"policyAuthPincodeTitle": "PIN Code",
|
||||
"policyAuthPincodeDescription": "A short numeric code required to access the resource",
|
||||
"policyAuthPincodeSummary": "6-digit PIN set",
|
||||
"policyAuthEmailTitle": "Email Whitelist",
|
||||
"policyAuthEmailDescription": "Allow listed email addresses with one-time passwords",
|
||||
"policyAuthEmailSummary": "{count} addresses allowed",
|
||||
"policyAuthEmailOtpCallout": "Enabling email whitelist sends a one-time password to the visitor's email on login.",
|
||||
"policyAuthHeaderAuthTitle": "Basic Header Auth",
|
||||
"policyAuthHeaderAuthDescription": "Validate a custom HTTP header name and value on each request",
|
||||
"policyAuthHeaderAuthSummary": "Header configured",
|
||||
"policyAuthHeaderName": "Header name",
|
||||
"policyAuthHeaderValue": "Expected value",
|
||||
"policyAccessRulesTitle": "Access Rules",
|
||||
"policyAccessRulesEnableDescription": "When enabled, rules are evaluated in descending order until one evaluates as true.",
|
||||
"policyAccessRulesFirstMatch": "Rules are evaluated top to bottom. The first matching rule decides the outcome.",
|
||||
"policyAccessRulesHowItWorks": "Rules match requests by path, IP address, location, or other criteria. Each rule applies an action: bypass authentication, block access, or pass to authentication. If no rule matches, traffic continues to authentication.",
|
||||
"policyAccessRulesFallthroughOff": "When rules are disabled, all traffic passes through to authentication.",
|
||||
"policyAccessRulesFallthroughOn": "When no rule matches, traffic passes through to authentication.",
|
||||
"rulesPlaceholderCidr": "10.0.0.0/8",
|
||||
"rulesPlaceholderPath": "/admin/*",
|
||||
"rulesPlaceholderGeo": "RU, KP",
|
||||
"authMethodsSave": "Сохранить методы аутентификации",
|
||||
"rulesSave": "Сохранить правила",
|
||||
"resourceErrorCreate": "Ошибка при создании ресурса",
|
||||
"resourceErrorCreateDescription": "Произошла ошибка при создании ресурса",
|
||||
@@ -1268,10 +1220,8 @@
|
||||
"addLabels": "Добавить метки",
|
||||
"siteLabelsTab": "Метки",
|
||||
"siteLabelsDescription": "Управляйте метками, связанными с этим сайтом.",
|
||||
"labelsNotFound": "No labels found.",
|
||||
"labelsEmptyCreateHint": "Start typing above to create a label.",
|
||||
"labelsNotFound": "Метки не найдены",
|
||||
"labelSearch": "Поиск меток",
|
||||
"labelSearchOrCreate": "Search or create a label",
|
||||
"accessLabelFilterCount": "{count, plural, one {# метка} few {# метки} many {# меток} other {# меток}}",
|
||||
"labelOverflowCount": "+{count, plural, one {# метка} few {# метки} many {# меток} other {# меток}}",
|
||||
"accessLabelFilterClear": "Очистить фильтры меток",
|
||||
@@ -1512,7 +1462,7 @@
|
||||
"sidebarProxyResources": "Публичный",
|
||||
"sidebarClientResources": "Приватный",
|
||||
"sidebarPolicies": "Политики",
|
||||
"sidebarResourcePolicies": "Public Resources",
|
||||
"sidebarResourcePolicies": "Ресурсы",
|
||||
"sidebarAccessControl": "Контроль доступа",
|
||||
"sidebarLogsAndAnalytics": "Журналы и аналитика",
|
||||
"sidebarTeam": "Команда",
|
||||
@@ -1520,7 +1470,7 @@
|
||||
"sidebarAdmin": "Админ",
|
||||
"sidebarInvitations": "Приглашения",
|
||||
"sidebarRoles": "Роли",
|
||||
"sidebarShareableLinks": "Share Links",
|
||||
"sidebarShareableLinks": "Ссылки",
|
||||
"sidebarApiKeys": "API ключи",
|
||||
"sidebarProvisioning": "Подготовка",
|
||||
"sidebarSettings": "Настройки",
|
||||
@@ -1697,7 +1647,7 @@
|
||||
"standaloneHcFilterResourceIdFallback": "Ресурс {id}",
|
||||
"blueprints": "Чертежи",
|
||||
"blueprintsLog": "Журнал чертежей",
|
||||
"blueprintsDescription": "View past blueprint applications and their results or apply a new blueprint",
|
||||
"blueprintsDescription": "Просмотр прошлых применений чертежа и их результатов",
|
||||
"blueprintAdd": "Добавить чертёж",
|
||||
"blueprintGoBack": "Посмотреть все чертежи",
|
||||
"blueprintCreate": "Создать чертёж",
|
||||
@@ -2077,13 +2027,13 @@
|
||||
"healthCheckUnknown": "Неизвестно",
|
||||
"healthCheck": "Проверка здоровья",
|
||||
"configureHealthCheck": "Настроить проверку здоровья",
|
||||
"configureHealthCheckDescription": "Set up monitoring for your resource to ensure it is always available",
|
||||
"configureHealthCheckDescription": "Настройте мониторинг состояния для {target}",
|
||||
"enableHealthChecks": "Включить проверки здоровья",
|
||||
"healthCheckDisabledStateDescription": "Когда отключен, сайт не будет выполнять проверки состояния и состояние будет считаться неизвестным.",
|
||||
"enableHealthChecksDescription": "Мониторинг здоровья этой цели. При необходимости можно контролировать другую конечную точку.",
|
||||
"healthScheme": "Метод",
|
||||
"healthSelectScheme": "Выберите метод",
|
||||
"healthCheckPortInvalid": "Port must be between 1 and 65535",
|
||||
"healthCheckPortInvalid": "Порт проверки здоровья должен быть от 1 до 65535",
|
||||
"healthCheckPath": "Путь",
|
||||
"healthHostname": "IP / хост",
|
||||
"healthPort": "Порт",
|
||||
@@ -2096,7 +2046,6 @@
|
||||
"requireDeviceApproval": "Требовать подтверждения устройства",
|
||||
"requireDeviceApprovalDescription": "Пользователям с этой ролью нужны новые устройства, одобренные администратором, прежде чем они смогут подключаться и получать доступ к ресурсам.",
|
||||
"sshSettings": "Настройки SSH",
|
||||
"sshAccess": "SSH Access",
|
||||
"rdpSettings": "Настройки RDP",
|
||||
"vncSettings": "Настройки VNC",
|
||||
"sshServer": "SSH сервер",
|
||||
@@ -2123,13 +2072,8 @@
|
||||
"sshDaemonDisclaimer": "Убедитесь, что целевой хост правильно настроен для запуска демона аутентификации перед завершением этой настройки, иначе предоставление не удастся.",
|
||||
"sshDaemonPort": "Порт демона",
|
||||
"sshServerDestination": "Пункт назначения сервера",
|
||||
"sshServerDestinationDescription": "Configure the destination of the SSH server",
|
||||
"sshServerDestinationDescription": "Настройте пункт назначения и порт SSH-сервера",
|
||||
"destination": "Пункт назначения",
|
||||
"destinationRequired": "Destination is required.",
|
||||
"domainRequired": "Domain is required.",
|
||||
"proxyPortRequired": "Port is required.",
|
||||
"invalidPathConfiguration": "Invalid path configuration.",
|
||||
"invalidRewritePathConfiguration": "Invalid rewrite path configuration.",
|
||||
"bgTargetMultiSiteDisclaimer": "Выбор нескольких сайтов включает в себя устойчивую маршрутизацию и автоматический отказ для обеспечения высокой доступности.",
|
||||
"roleAllowSsh": "Разрешить SSH",
|
||||
"roleAllowSshAllow": "Разрешить",
|
||||
@@ -3090,7 +3034,7 @@
|
||||
"enterConfirmation": "Введите подтверждение",
|
||||
"blueprintViewDetails": "Подробности",
|
||||
"defaultIdentityProvider": "Поставщик удостоверений по умолчанию",
|
||||
"defaultIdentityProviderDescription": "The user will be automatically redirected to this identity provider for authentication.",
|
||||
"defaultIdentityProviderDescription": "Когда выбран поставщик идентификации по умолчанию, пользователь будет автоматически перенаправлен на провайдер для аутентификации.",
|
||||
"editInternalResourceDialogNetworkSettings": "Настройки сети",
|
||||
"editInternalResourceDialogAccessPolicy": "Политика доступа",
|
||||
"editInternalResourceDialogAddRoles": "Добавить роли",
|
||||
@@ -3402,8 +3346,6 @@
|
||||
"idpUnassociateQuestion": "Вы уверены, что хотите рассоединить этого поставщика удостоверений с этой организацией?",
|
||||
"idpUnassociateDescription": "Все пользователи, связанные с этим поставщиком удостоверений, будут удалены из этой организации, но поставщик удостоверений будет продолжать существовать для других связанных организаций.",
|
||||
"idpUnassociateConfirm": "Подтвердите рассоединение поставщика удостоверений",
|
||||
"idpConfirmDeleteAndRemoveMeFromOrg": "DELETE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateAndRemoveMeFromOrg": "UNASSOCIATE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateWarning": "Это не может быть отменено для этой организации.",
|
||||
"idpUnassociatedDescription": "Поставщик удостоверений успешно рассоединен с этой организацией",
|
||||
"idpUnassociateMenu": "Рассоединить",
|
||||
@@ -3510,43 +3452,5 @@
|
||||
"sshErrorNoTarget": "Цель не указана",
|
||||
"sshErrorWebSocket": "Подключение WebSocket не удалось",
|
||||
"sshErrorAuthFailed": "Ошибка аутентификации",
|
||||
"sshErrorConnectionClosed": "Подключение закрыто до завершения аутентификации",
|
||||
"sitePangolinSshDescription": "Allow SSH access to resources on this site. This can be changed later.",
|
||||
"browserGatewayNoResourceForDomain": "No resource found for this domain",
|
||||
"browserGatewayNoTarget": "No target",
|
||||
"browserGatewayConnect": "Connect",
|
||||
"browserGatewayCtrlAltDel": "Ctrl+Alt+Del",
|
||||
"sshErrorSignKeyFailed": "Failed to sign SSH key for PAM push authentication. Did you sign in as a user?",
|
||||
"sshTerminalError": "Error: {error}",
|
||||
"sshConnectionClosedCode": "Connection closed (code {code})",
|
||||
"sshPrivateKeyPlaceholder": "-----BEGIN OPENSSH PRIVATE KEY-----",
|
||||
"sshPrivateKeyRequired": "Private key is required",
|
||||
"vncTitle": "VNC",
|
||||
"vncSignInDescription": "Enter your VNC password to connect",
|
||||
"vncPasswordOptional": "Password (optional)",
|
||||
"vncNoResourceTarget": "No resource target is available",
|
||||
"vncFailedToLoadNovnc": "Failed to load noVNC",
|
||||
"vncAuthFailedStatus": "Status {status}",
|
||||
"vncPasteClipboard": "Paste clipboard",
|
||||
"rdpTitle": "RDP",
|
||||
"rdpSignInTitle": "Sign in to Remote Desktop",
|
||||
"rdpSignInDescription": "Enter Windows credentials to connect",
|
||||
"rdpLoadingModule": "Loading module...",
|
||||
"rdpFailedToLoadModule": "Failed to load RDP module",
|
||||
"rdpNotReady": "Not ready",
|
||||
"rdpModuleInitializing": "RDP module is still initializing",
|
||||
"rdpDownloadingFiles": "Downloading {count} file(s) from remote…",
|
||||
"rdpDownloadFailed": "Download failed: {fileName}",
|
||||
"rdpUploaded": "Uploaded: {fileName}",
|
||||
"rdpNoConnectionTarget": "No connection target available",
|
||||
"rdpConnectionFailed": "Connection failed",
|
||||
"rdpFit": "Fit",
|
||||
"rdpFull": "Full",
|
||||
"rdpReal": "Real",
|
||||
"rdpMeta": "Meta",
|
||||
"rdpUploadFiles": "Upload files",
|
||||
"rdpFilesReadyToPaste": "Files ready to paste",
|
||||
"rdpFilesReadyToPasteDescription": "{count} file(s) copied to remote clipboard — press Ctrl+V on the remote desktop to paste.",
|
||||
"rdpUploadFailed": "Upload failed",
|
||||
"rdpUnicodeKeyboardMode": "Unicode keyboard mode"
|
||||
"sshErrorConnectionClosed": "Подключение закрыто до завершения аутентификации"
|
||||
}
|
||||
|
||||
@@ -101,8 +101,6 @@
|
||||
"sitesTableViewPrivateResources": "Özel Kaynakları Görüntüle",
|
||||
"siteInstallNewt": "Newt Yükle",
|
||||
"siteInstallNewtDescription": "Newt'i sisteminizde çalıştırma",
|
||||
"siteInstallKubernetesDocsDescription": "For more and up to date Kubernetes installation information, see <docsLink>docs.pangolin.net/manage/sites/install-kubernetes</docsLink>.",
|
||||
"siteInstallAdvantechDocsDescription": "For Advantech modem installation instructions, see <docsLink>docs.pangolin.net/manage/sites/install-advantech</docsLink>.",
|
||||
"WgConfiguration": "WireGuard Yapılandırması",
|
||||
"WgConfigurationDescription": "Ağınıza bağlanmak için aşağıdaki yapılandırmayı kullanın",
|
||||
"operatingSystem": "İşletim Sistemi",
|
||||
@@ -202,8 +200,8 @@
|
||||
"shareErrorSelectResource": "Lütfen bir kaynak seçin",
|
||||
"proxyResourceTitle": "Herkese Açık Kaynakları Yönet",
|
||||
"proxyResourceDescription": "Bir web tarayıcısı aracılığıyla kamuya açık kaynaklar oluşturun ve yönetin",
|
||||
"publicResourcesBannerTitle": "Web-based Public Access",
|
||||
"publicResourcesBannerDescription": "Public resources are HTTPS proxies accessible to anyone on the internet through a web browser. Unlike private resources, they do not require client-side software and can include identity and context-aware access policies.",
|
||||
"proxyResourcesBannerTitle": "Web Tabanlı Genel Erişim",
|
||||
"proxyResourcesBannerDescription": "Genel kaynaklar, web tarayıcısı aracılığıyla herkesin internette erişebileceği HTTPS veya TCP/UDP proxy'leridir. Özel kaynakların aksine, istemci tarafı yazılıma ihtiyaç duymazlar ve kimlik ve bağlam farkındalığı erişim politikalarını içerebilirler.",
|
||||
"clientResourceTitle": "Özel Kaynakları Yönet",
|
||||
"clientResourceDescription": "Sadece bağlı bir istemci aracılığıyla erişilebilen kaynakları oluşturun ve yönetin",
|
||||
"privateResourcesBannerTitle": "Sıfır Güven Özel Erişim",
|
||||
@@ -211,16 +209,15 @@
|
||||
"resourcesSearch": "Kaynakları ara...",
|
||||
"resourceAdd": "Kaynak Ekle",
|
||||
"resourceErrorDelte": "Kaynak silinirken hata",
|
||||
"resourcePoliciesTitle": "Manage Public Resource Policies",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Resources",
|
||||
"resourcePoliciesTitle": "Kaynak Politikalarını Yönet",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Ekteki kaynaklar",
|
||||
"resourcePoliciesAttachedResources": "{count} kaynak",
|
||||
"resourcePoliciesAttachedResourcesCount": "{count, plural, one {# resource} other {# resources}}",
|
||||
"resourcePoliciesAttachedResourcesEmpty": "hiçbir kaynak",
|
||||
"resourcePoliciesDescription": "Create and manage authentication policies to control access to your public resources",
|
||||
"resourcePoliciesDescription": "Kaynaklarınıza erişimi kontrol etmek için kimlik doğrulama politikaları oluşturun ve yönetin",
|
||||
"resourcePoliciesSearch": "Politikaları ara...",
|
||||
"resourcePoliciesAdd": "Politika Ekle",
|
||||
"resourcePoliciesDefaultBadgeText": "Varsayılan politika",
|
||||
"resourcePoliciesCreate": "Create Public Resource Policy",
|
||||
"resourcePoliciesCreate": "Kaynak Politikası Oluştur",
|
||||
"resourcePoliciesCreateDescription": "Yeni bir politika oluşturmak için aşağıdaki adımları izleyin",
|
||||
"resourcePolicyName": "Politika Adı",
|
||||
"resourcePolicyNameDescription": "Bu politikaya kaynaklarınız arasında kolayca tanımlayabilmek için bir ad verin",
|
||||
@@ -314,7 +311,7 @@
|
||||
"rules": "Kurallar",
|
||||
"resourceSettingDescription": "Kaynağınızdaki ayarları yapılandırın",
|
||||
"resourceSetting": "{resourceName} Ayarları",
|
||||
"resourcePolicySettingDescription": "Configure the settings on this public resource policy",
|
||||
"resourcePolicySettingDescription": "Kaynak politikası üzerindeki ayarları yapılandır",
|
||||
"resourcePolicySetting": "{policyName} Ayarları",
|
||||
"alwaysAllow": "Kimlik Doğrulamayı Atla",
|
||||
"alwaysDeny": "Erişimi Engelle",
|
||||
@@ -756,11 +753,11 @@
|
||||
"rulesErrorDuplicate": "Yinelenen kural",
|
||||
"rulesErrorDuplicateDescription": "Bu ayarlara sahip bir kural zaten mevcut",
|
||||
"rulesErrorInvalidIpAddressRange": "Geçersiz CIDR",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Enter a valid CIDR range (e.g., 10.0.0.0/8).",
|
||||
"rulesErrorInvalidUrl": "Invalid path",
|
||||
"rulesErrorInvalidUrlDescription": "Enter a valid URL path or pattern (e.g., /api/*).",
|
||||
"rulesErrorInvalidIpAddress": "Invalid IP address",
|
||||
"rulesErrorInvalidIpAddressDescription": "Enter a valid IPv4 or IPv6 address.",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Lütfen geçerli bir CIDR değeri girin",
|
||||
"rulesErrorInvalidUrl": "Geçersiz URL yolu",
|
||||
"rulesErrorInvalidUrlDescription": "Lütfen geçerli bir URL yolu değeri girin",
|
||||
"rulesErrorInvalidIpAddress": "Geçersiz IP",
|
||||
"rulesErrorInvalidIpAddressDescription": "Lütfen geçerli bir IP adresi girin",
|
||||
"rulesErrorUpdate": "Kurallar güncellenemedi",
|
||||
"rulesErrorUpdateDescription": "Kurallar güncellenirken bir hata oluştu",
|
||||
"rulesUpdated": "Kuralları Etkinleştir",
|
||||
@@ -768,23 +765,15 @@
|
||||
"rulesMatchIpAddressRangeDescription": "CIDR formatında bir adres girin (örneğin, 103.21.244.0/22)",
|
||||
"rulesMatchIpAddress": "Bir IP adresi girin (örneğin, 103.21.244.12)",
|
||||
"rulesMatchUrl": "Bir URL yolu veya deseni girin (örneğin, /api/v1/todos veya /api/v1/*)",
|
||||
"rulesErrorInvalidPriority": "Invalid priority",
|
||||
"rulesErrorInvalidPriorityDescription": "Enter a whole number of 1 or higher.",
|
||||
"rulesErrorDuplicatePriority": "Duplicate priorities",
|
||||
"rulesErrorDuplicatePriorityDescription": "Each rule must have a unique priority number.",
|
||||
"rulesErrorValidation": "Invalid rules",
|
||||
"rulesErrorValidationRuleDescription": "Rule {ruleNumber}: {message}",
|
||||
"rulesErrorValueRequired": "Enter a value for this rule.",
|
||||
"rulesErrorInvalidCountry": "Invalid country",
|
||||
"rulesErrorInvalidCountryDescription": "Select a valid country.",
|
||||
"rulesErrorInvalidAsn": "Invalid ASN",
|
||||
"rulesErrorInvalidAsnDescription": "Enter a valid ASN (e.g., AS15169).",
|
||||
"rulesErrorInvalidPriority": "Geçersiz Öncelik",
|
||||
"rulesErrorInvalidPriorityDescription": "Lütfen geçerli bir öncelik girin",
|
||||
"rulesErrorDuplicatePriority": "Yinelenen Öncelikler",
|
||||
"rulesErrorDuplicatePriorityDescription": "Lütfen benzersiz öncelikler girin",
|
||||
"ruleUpdated": "Kurallar güncellendi",
|
||||
"ruleUpdatedDescription": "Kurallar başarıyla güncellendi",
|
||||
"ruleErrorUpdate": "Operasyon başarısız oldu",
|
||||
"ruleErrorUpdateDescription": "Kaydetme operasyonu sırasında bir hata oluştu",
|
||||
"rulesPriority": "Öncelik",
|
||||
"rulesReorderDragHandle": "Drag to reorder rule priority",
|
||||
"rulesAction": "Aksiyon",
|
||||
"rulesMatchType": "Eşleşme Türü",
|
||||
"value": "Değer",
|
||||
@@ -803,7 +792,7 @@
|
||||
"rulesResource": "Kaynak Kuralları Yapılandırması",
|
||||
"rulesResourceDescription": "Kaynağa erişimi kontrol etmek için kuralları yapılandırın",
|
||||
"ruleSubmit": "Kural Ekle",
|
||||
"rulesNoOne": "No rules yet.",
|
||||
"rulesNoOne": "Kural yok. Formu kullanarak bir kural ekleyin.",
|
||||
"rulesOrder": "Kurallar, artan öncelik sırasına göre değerlendirilir.",
|
||||
"rulesSubmit": "Kuralları Kaydet",
|
||||
"policyErrorCreate": "Politika oluşturulurken hata oluştu",
|
||||
@@ -814,44 +803,7 @@
|
||||
"policyErrorUpdateMessageDescription": "Beklenmeyen bir hata oluştu",
|
||||
"policyCreatedSuccess": "Kaynak politikası başarıyla oluşturuldu",
|
||||
"policyUpdatedSuccess": "Kaynak politikası başarıyla güncellendi",
|
||||
"authMethodsSave": "Save Settings",
|
||||
"policyAuthStackTitle": "Authentication",
|
||||
"policyAuthStackDescription": "Control which authentication methods are required to access this resource",
|
||||
"policyAuthOrLogicTitle": "Multiple authentication methods active",
|
||||
"policyAuthOrLogicBanner": "Visitors may authenticate using any one of the active methods below. They do not need to complete all of them.",
|
||||
"policyAuthMethodActive": "Active",
|
||||
"policyAuthMethodOff": "Off",
|
||||
"policyAuthSsoTitle": "Platform SSO",
|
||||
"policyAuthSsoDescription": "Require sign-in through your organization's identity provider",
|
||||
"policyAuthSsoSummary": "{idp} · {users} users, {roles} roles",
|
||||
"policyAuthSsoDefaultIdp": "Default provider",
|
||||
"policyAuthAddDefaultIdentityProvider": "Add Default Identity Provider",
|
||||
"policyAuthOtherMethodsTitle": "Other Methods",
|
||||
"policyAuthOtherMethodsDescription": "Optional methods visitors can use instead of or alongside platform SSO",
|
||||
"policyAuthPasscodeTitle": "Passcode",
|
||||
"policyAuthPasscodeDescription": "Require a shared alphanumeric passcode to access the resource",
|
||||
"policyAuthPasscodeSummary": "Passcode set",
|
||||
"policyAuthPincodeTitle": "PIN Code",
|
||||
"policyAuthPincodeDescription": "A short numeric code required to access the resource",
|
||||
"policyAuthPincodeSummary": "6-digit PIN set",
|
||||
"policyAuthEmailTitle": "Email Whitelist",
|
||||
"policyAuthEmailDescription": "Allow listed email addresses with one-time passwords",
|
||||
"policyAuthEmailSummary": "{count} addresses allowed",
|
||||
"policyAuthEmailOtpCallout": "Enabling email whitelist sends a one-time password to the visitor's email on login.",
|
||||
"policyAuthHeaderAuthTitle": "Basic Header Auth",
|
||||
"policyAuthHeaderAuthDescription": "Validate a custom HTTP header name and value on each request",
|
||||
"policyAuthHeaderAuthSummary": "Header configured",
|
||||
"policyAuthHeaderName": "Header name",
|
||||
"policyAuthHeaderValue": "Expected value",
|
||||
"policyAccessRulesTitle": "Access Rules",
|
||||
"policyAccessRulesEnableDescription": "When enabled, rules are evaluated in descending order until one evaluates as true.",
|
||||
"policyAccessRulesFirstMatch": "Rules are evaluated top to bottom. The first matching rule decides the outcome.",
|
||||
"policyAccessRulesHowItWorks": "Rules match requests by path, IP address, location, or other criteria. Each rule applies an action: bypass authentication, block access, or pass to authentication. If no rule matches, traffic continues to authentication.",
|
||||
"policyAccessRulesFallthroughOff": "When rules are disabled, all traffic passes through to authentication.",
|
||||
"policyAccessRulesFallthroughOn": "When no rule matches, traffic passes through to authentication.",
|
||||
"rulesPlaceholderCidr": "10.0.0.0/8",
|
||||
"rulesPlaceholderPath": "/admin/*",
|
||||
"rulesPlaceholderGeo": "RU, KP",
|
||||
"authMethodsSave": "Kimlik doğrulama yöntemlerini kaydet",
|
||||
"rulesSave": "Kuralları Kaydet",
|
||||
"resourceErrorCreate": "Kaynak oluşturma hatası",
|
||||
"resourceErrorCreateDescription": "Kaynak oluşturulurken bir hata oluştu",
|
||||
@@ -1268,10 +1220,8 @@
|
||||
"addLabels": "Etiketler ekle",
|
||||
"siteLabelsTab": "Etiketler",
|
||||
"siteLabelsDescription": "Bu siteyle ilişkili etiketleri yönetin.",
|
||||
"labelsNotFound": "No labels found.",
|
||||
"labelsEmptyCreateHint": "Start typing above to create a label.",
|
||||
"labelsNotFound": "Etiketler bulunamadı",
|
||||
"labelSearch": "Etiket ara",
|
||||
"labelSearchOrCreate": "Search or create a label",
|
||||
"accessLabelFilterCount": "{count, plural, one {# etiket} other {# etiketler}}",
|
||||
"labelOverflowCount": "+{count, plural, one {# etiket} other {# etiketler}}",
|
||||
"accessLabelFilterClear": "Etiket filtrelerini temizle",
|
||||
@@ -1512,7 +1462,7 @@
|
||||
"sidebarProxyResources": "Herkese Açık",
|
||||
"sidebarClientResources": "Özel",
|
||||
"sidebarPolicies": "Politikalar",
|
||||
"sidebarResourcePolicies": "Public Resources",
|
||||
"sidebarResourcePolicies": "Kaynaklar",
|
||||
"sidebarAccessControl": "Erişim Kontrolü",
|
||||
"sidebarLogsAndAnalytics": "Kayıtlar & Analitik",
|
||||
"sidebarTeam": "Ekip",
|
||||
@@ -1520,7 +1470,7 @@
|
||||
"sidebarAdmin": "Yönetici",
|
||||
"sidebarInvitations": "Davetiye",
|
||||
"sidebarRoles": "Roller",
|
||||
"sidebarShareableLinks": "Share Links",
|
||||
"sidebarShareableLinks": "Bağlantılar",
|
||||
"sidebarApiKeys": "API Anahtarları",
|
||||
"sidebarProvisioning": "Tedarik",
|
||||
"sidebarSettings": "Ayarlar",
|
||||
@@ -1697,7 +1647,7 @@
|
||||
"standaloneHcFilterResourceIdFallback": "Kaynak {id}",
|
||||
"blueprints": "Planlar",
|
||||
"blueprintsLog": "Şablonlar Günlüğü",
|
||||
"blueprintsDescription": "View past blueprint applications and their results or apply a new blueprint",
|
||||
"blueprintsDescription": "Geçmiş şablon uygulamalarını ve sonuçlarını görüntüleyin",
|
||||
"blueprintAdd": "Plan Ekle",
|
||||
"blueprintGoBack": "Tüm Planları Gör",
|
||||
"blueprintCreate": "Plan Oluştur",
|
||||
@@ -2077,13 +2027,13 @@
|
||||
"healthCheckUnknown": "Bilinmiyor",
|
||||
"healthCheck": "Sağlık Kontrolü",
|
||||
"configureHealthCheck": "Sağlık Kontrolünü Yapılandır",
|
||||
"configureHealthCheckDescription": "Set up monitoring for your resource to ensure it is always available",
|
||||
"configureHealthCheckDescription": "{hedef} için sağlık izleme kurun",
|
||||
"enableHealthChecks": "Sağlık Kontrollerini Etkinleştir",
|
||||
"healthCheckDisabledStateDescription": "Devre dışı bırakıldığında, site sağlık kontrolleri yapmaz ve durum bilinmeyen olarak kabul edilecektir.",
|
||||
"enableHealthChecksDescription": "Bu hedefin sağlığını izleyin. Gerekirse hedef dışındaki bir son noktayı izleyebilirsiniz.",
|
||||
"healthScheme": "Yöntem",
|
||||
"healthSelectScheme": "Yöntem Seç",
|
||||
"healthCheckPortInvalid": "Port must be between 1 and 65535",
|
||||
"healthCheckPortInvalid": "Sağlık Kontrolü portu 1 ile 65535 arasında olmalıdır",
|
||||
"healthCheckPath": "Yol",
|
||||
"healthHostname": "IP / Hostname",
|
||||
"healthPort": "Bağlantı Noktası",
|
||||
@@ -2096,7 +2046,6 @@
|
||||
"requireDeviceApproval": "Cihaz Onaylarını Gerektir",
|
||||
"requireDeviceApprovalDescription": "Bu role sahip kullanıcıların yeni cihazlarının bağlanabilmesi ve kaynaklara erişebilmesi için bir yönetici tarafından onaylanması gerekiyor.",
|
||||
"sshSettings": "SSH Ayarları",
|
||||
"sshAccess": "SSH Access",
|
||||
"rdpSettings": "RDP Ayarları",
|
||||
"vncSettings": "VNC Ayarları",
|
||||
"sshServer": "SSH Sunucusu",
|
||||
@@ -2123,13 +2072,8 @@
|
||||
"sshDaemonDisclaimer": "Bu kurulumu tamamlamadan önce hedef ana bilgisayarınızın kimlik doğrulama daemonunu çalıştıracak şekilde düzgün yapılandırıldığından emin olun, aksi takdirde sağlama başarısız olur.",
|
||||
"sshDaemonPort": "Daemon Bağlantı Noktası",
|
||||
"sshServerDestination": "Sunucu Hedefi",
|
||||
"sshServerDestinationDescription": "Configure the destination of the SSH server",
|
||||
"sshServerDestinationDescription": "SSH sunucusunun hedefini ve bağlantı noktasını yapılandırın",
|
||||
"destination": "Hedef",
|
||||
"destinationRequired": "Destination is required.",
|
||||
"domainRequired": "Domain is required.",
|
||||
"proxyPortRequired": "Port is required.",
|
||||
"invalidPathConfiguration": "Invalid path configuration.",
|
||||
"invalidRewritePathConfiguration": "Invalid rewrite path configuration.",
|
||||
"bgTargetMultiSiteDisclaimer": "Birden fazla site seçmek, yüksek erişilebilirlik için dayanıklı yönlendirme ve failover sağlar.",
|
||||
"roleAllowSsh": "SSH'a İzin Ver",
|
||||
"roleAllowSshAllow": "İzin Ver",
|
||||
@@ -3090,7 +3034,7 @@
|
||||
"enterConfirmation": "Onayı girin",
|
||||
"blueprintViewDetails": "Detaylar",
|
||||
"defaultIdentityProvider": "Varsayılan Kimlik Sağlayıcı",
|
||||
"defaultIdentityProviderDescription": "The user will be automatically redirected to this identity provider for authentication.",
|
||||
"defaultIdentityProviderDescription": "Varsayılan bir kimlik sağlayıcı seçildiğinde, kullanıcı kimlik doğrulaması için otomatik olarak sağlayıcıya yönlendirilecektir.",
|
||||
"editInternalResourceDialogNetworkSettings": "Ağ Ayarları",
|
||||
"editInternalResourceDialogAccessPolicy": "Erişim Politikası",
|
||||
"editInternalResourceDialogAddRoles": "Roller Ekle",
|
||||
@@ -3402,8 +3346,6 @@
|
||||
"idpUnassociateQuestion": "Bu kimlik sağlayıcının bu kuruluştan ilişiğini kesmek istediğinizden emin misiniz?",
|
||||
"idpUnassociateDescription": "Bu kimlik sağlayıcı ile ilişkilendirilen tüm kullanıcılar bu kuruluştan kaldırılacaktır, ancak kimlik sağlayıcı diğer ilişkilendirilen kuruluşlar için var olmaya devam edecektir.",
|
||||
"idpUnassociateConfirm": "Kimlik Sağlayıcının İlişkisinin Kesilmesini Onayla",
|
||||
"idpConfirmDeleteAndRemoveMeFromOrg": "DELETE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateAndRemoveMeFromOrg": "UNASSOCIATE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateWarning": "Bu işlem bu kuruluş için geri alınamaz.",
|
||||
"idpUnassociatedDescription": "Kimlik sağlayıcı bu kuruluştan başarıyla ayrıldı",
|
||||
"idpUnassociateMenu": "İlişkiyi Kes",
|
||||
@@ -3510,43 +3452,5 @@
|
||||
"sshErrorNoTarget": "Belirtilen hedef yok",
|
||||
"sshErrorWebSocket": "WebSocket bağlantısı başarısız oldu",
|
||||
"sshErrorAuthFailed": "Kimlik doğrulama başarısız",
|
||||
"sshErrorConnectionClosed": "Kimlik doğrulama tamamlanmadan bağlantı kapandı",
|
||||
"sitePangolinSshDescription": "Allow SSH access to resources on this site. This can be changed later.",
|
||||
"browserGatewayNoResourceForDomain": "No resource found for this domain",
|
||||
"browserGatewayNoTarget": "No target",
|
||||
"browserGatewayConnect": "Connect",
|
||||
"browserGatewayCtrlAltDel": "Ctrl+Alt+Del",
|
||||
"sshErrorSignKeyFailed": "Failed to sign SSH key for PAM push authentication. Did you sign in as a user?",
|
||||
"sshTerminalError": "Error: {error}",
|
||||
"sshConnectionClosedCode": "Connection closed (code {code})",
|
||||
"sshPrivateKeyPlaceholder": "-----BEGIN OPENSSH PRIVATE KEY-----",
|
||||
"sshPrivateKeyRequired": "Private key is required",
|
||||
"vncTitle": "VNC",
|
||||
"vncSignInDescription": "Enter your VNC password to connect",
|
||||
"vncPasswordOptional": "Password (optional)",
|
||||
"vncNoResourceTarget": "No resource target is available",
|
||||
"vncFailedToLoadNovnc": "Failed to load noVNC",
|
||||
"vncAuthFailedStatus": "Status {status}",
|
||||
"vncPasteClipboard": "Paste clipboard",
|
||||
"rdpTitle": "RDP",
|
||||
"rdpSignInTitle": "Sign in to Remote Desktop",
|
||||
"rdpSignInDescription": "Enter Windows credentials to connect",
|
||||
"rdpLoadingModule": "Loading module...",
|
||||
"rdpFailedToLoadModule": "Failed to load RDP module",
|
||||
"rdpNotReady": "Not ready",
|
||||
"rdpModuleInitializing": "RDP module is still initializing",
|
||||
"rdpDownloadingFiles": "Downloading {count} file(s) from remote…",
|
||||
"rdpDownloadFailed": "Download failed: {fileName}",
|
||||
"rdpUploaded": "Uploaded: {fileName}",
|
||||
"rdpNoConnectionTarget": "No connection target available",
|
||||
"rdpConnectionFailed": "Connection failed",
|
||||
"rdpFit": "Fit",
|
||||
"rdpFull": "Full",
|
||||
"rdpReal": "Real",
|
||||
"rdpMeta": "Meta",
|
||||
"rdpUploadFiles": "Upload files",
|
||||
"rdpFilesReadyToPaste": "Files ready to paste",
|
||||
"rdpFilesReadyToPasteDescription": "{count} file(s) copied to remote clipboard — press Ctrl+V on the remote desktop to paste.",
|
||||
"rdpUploadFailed": "Upload failed",
|
||||
"rdpUnicodeKeyboardMode": "Unicode keyboard mode"
|
||||
"sshErrorConnectionClosed": "Kimlik doğrulama tamamlanmadan bağlantı kapandı"
|
||||
}
|
||||
|
||||
@@ -101,8 +101,6 @@
|
||||
"sitesTableViewPrivateResources": "查看私有资源",
|
||||
"siteInstallNewt": "安装 Newt",
|
||||
"siteInstallNewtDescription": "在您的系统中运行 Newt",
|
||||
"siteInstallKubernetesDocsDescription": "For more and up to date Kubernetes installation information, see <docsLink>docs.pangolin.net/manage/sites/install-kubernetes</docsLink>.",
|
||||
"siteInstallAdvantechDocsDescription": "For Advantech modem installation instructions, see <docsLink>docs.pangolin.net/manage/sites/install-advantech</docsLink>.",
|
||||
"WgConfiguration": "WireGuard 配置",
|
||||
"WgConfigurationDescription": "使用以下配置连接到网络",
|
||||
"operatingSystem": "操作系统",
|
||||
@@ -202,8 +200,8 @@
|
||||
"shareErrorSelectResource": "请选择一个资源",
|
||||
"proxyResourceTitle": "管理公共资源",
|
||||
"proxyResourceDescription": "创建和管理可通过 Web 浏览器公开访问的资源",
|
||||
"publicResourcesBannerTitle": "Web-based Public Access",
|
||||
"publicResourcesBannerDescription": "Public resources are HTTPS proxies accessible to anyone on the internet through a web browser. Unlike private resources, they do not require client-side software and can include identity and context-aware access policies.",
|
||||
"proxyResourcesBannerTitle": "基于Web的公共访问",
|
||||
"proxyResourcesBannerDescription": "公共资源是可以通过网络浏览器在互联网上任何人访问的HTTPS或TCP/UDP代理。与私人资源不同,它们不需要客户端软件,并且可以包含身份和上下文感知访问策略。",
|
||||
"clientResourceTitle": "管理私有资源",
|
||||
"clientResourceDescription": "创建和管理只能通过连接客户端访问的资源",
|
||||
"privateResourcesBannerTitle": "零信任的私人访问",
|
||||
@@ -211,16 +209,15 @@
|
||||
"resourcesSearch": "搜索资源...",
|
||||
"resourceAdd": "添加资源",
|
||||
"resourceErrorDelte": "删除资源时出错",
|
||||
"resourcePoliciesTitle": "Manage Public Resource Policies",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "Resources",
|
||||
"resourcePoliciesTitle": "管理资源策略",
|
||||
"resourcePoliciesAttachedResourcesColumnTitle": "附加资源",
|
||||
"resourcePoliciesAttachedResources": "{count} 个资源",
|
||||
"resourcePoliciesAttachedResourcesCount": "{count, plural, one {# resource} other {# resources}}",
|
||||
"resourcePoliciesAttachedResourcesEmpty": "没有资源",
|
||||
"resourcePoliciesDescription": "Create and manage authentication policies to control access to your public resources",
|
||||
"resourcePoliciesDescription": "创建和管理身份验证策略以控制对资源的访问",
|
||||
"resourcePoliciesSearch": "搜索策略……",
|
||||
"resourcePoliciesAdd": "添加策略",
|
||||
"resourcePoliciesDefaultBadgeText": "默认策略",
|
||||
"resourcePoliciesCreate": "Create Public Resource Policy",
|
||||
"resourcePoliciesCreate": "创建资源策略",
|
||||
"resourcePoliciesCreateDescription": "按照以下步骤创建新策略",
|
||||
"resourcePolicyName": "策略名称",
|
||||
"resourcePolicyNameDescription": "给此策略命名,以便在您的资源中识别它",
|
||||
@@ -314,7 +311,7 @@
|
||||
"rules": "规则",
|
||||
"resourceSettingDescription": "配置资源上的设置",
|
||||
"resourceSetting": "{resourceName} 设置",
|
||||
"resourcePolicySettingDescription": "Configure the settings on this public resource policy",
|
||||
"resourcePolicySettingDescription": "配置资源策略上的设置",
|
||||
"resourcePolicySetting": "{policyName} 设置",
|
||||
"alwaysAllow": "旁路认证",
|
||||
"alwaysDeny": "屏蔽访问",
|
||||
@@ -756,11 +753,11 @@
|
||||
"rulesErrorDuplicate": "复制规则",
|
||||
"rulesErrorDuplicateDescription": "带有这些设置的规则已存在",
|
||||
"rulesErrorInvalidIpAddressRange": "无效的 CIDR",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "Enter a valid CIDR range (e.g., 10.0.0.0/8).",
|
||||
"rulesErrorInvalidUrl": "Invalid path",
|
||||
"rulesErrorInvalidUrlDescription": "Enter a valid URL path or pattern (e.g., /api/*).",
|
||||
"rulesErrorInvalidIpAddress": "Invalid IP address",
|
||||
"rulesErrorInvalidIpAddressDescription": "Enter a valid IPv4 or IPv6 address.",
|
||||
"rulesErrorInvalidIpAddressRangeDescription": "请输入一个有效的 CIDR 值",
|
||||
"rulesErrorInvalidUrl": "无效的 URL 路径",
|
||||
"rulesErrorInvalidUrlDescription": "请输入一个有效的 URL 路径值",
|
||||
"rulesErrorInvalidIpAddress": "无效的 IP",
|
||||
"rulesErrorInvalidIpAddressDescription": "请输入一个有效的IP地址",
|
||||
"rulesErrorUpdate": "更新规则失败",
|
||||
"rulesErrorUpdateDescription": "更新规则时出错",
|
||||
"rulesUpdated": "启用规则",
|
||||
@@ -768,23 +765,15 @@
|
||||
"rulesMatchIpAddressRangeDescription": "以 CIDR 格式输入地址(如:103.21.244.0/22)",
|
||||
"rulesMatchIpAddress": "输入IP地址(例如,103.21.244.12)",
|
||||
"rulesMatchUrl": "输入一个 URL 路径或模式(例如/api/v1/todos 或 /api/v1/*)",
|
||||
"rulesErrorInvalidPriority": "Invalid priority",
|
||||
"rulesErrorInvalidPriorityDescription": "Enter a whole number of 1 or higher.",
|
||||
"rulesErrorDuplicatePriority": "Duplicate priorities",
|
||||
"rulesErrorDuplicatePriorityDescription": "Each rule must have a unique priority number.",
|
||||
"rulesErrorValidation": "Invalid rules",
|
||||
"rulesErrorValidationRuleDescription": "Rule {ruleNumber}: {message}",
|
||||
"rulesErrorValueRequired": "Enter a value for this rule.",
|
||||
"rulesErrorInvalidCountry": "Invalid country",
|
||||
"rulesErrorInvalidCountryDescription": "Select a valid country.",
|
||||
"rulesErrorInvalidAsn": "Invalid ASN",
|
||||
"rulesErrorInvalidAsnDescription": "Enter a valid ASN (e.g., AS15169).",
|
||||
"rulesErrorInvalidPriority": "无效的优先级",
|
||||
"rulesErrorInvalidPriorityDescription": "请输入一个有效的优先级",
|
||||
"rulesErrorDuplicatePriority": "重复的优先级",
|
||||
"rulesErrorDuplicatePriorityDescription": "请输入唯一的优先级",
|
||||
"ruleUpdated": "规则已更新",
|
||||
"ruleUpdatedDescription": "规则更新成功",
|
||||
"ruleErrorUpdate": "操作失败",
|
||||
"ruleErrorUpdateDescription": "保存过程中发生错误",
|
||||
"rulesPriority": "优先权",
|
||||
"rulesReorderDragHandle": "Drag to reorder rule priority",
|
||||
"rulesAction": "行为",
|
||||
"rulesMatchType": "匹配类型",
|
||||
"value": "值",
|
||||
@@ -803,7 +792,7 @@
|
||||
"rulesResource": "资源规则配置",
|
||||
"rulesResourceDescription": "配置规则来控制对资源的访问",
|
||||
"ruleSubmit": "添加规则",
|
||||
"rulesNoOne": "No rules yet.",
|
||||
"rulesNoOne": "没有规则。使用表单添加规则。",
|
||||
"rulesOrder": "规则按优先顺序评定。",
|
||||
"rulesSubmit": "保存规则",
|
||||
"policyErrorCreate": "创建策略时出错",
|
||||
@@ -814,44 +803,7 @@
|
||||
"policyErrorUpdateMessageDescription": "发生意外错误",
|
||||
"policyCreatedSuccess": "资源策略创建成功",
|
||||
"policyUpdatedSuccess": "资源策略更新成功",
|
||||
"authMethodsSave": "Save Settings",
|
||||
"policyAuthStackTitle": "Authentication",
|
||||
"policyAuthStackDescription": "Control which authentication methods are required to access this resource",
|
||||
"policyAuthOrLogicTitle": "Multiple authentication methods active",
|
||||
"policyAuthOrLogicBanner": "Visitors may authenticate using any one of the active methods below. They do not need to complete all of them.",
|
||||
"policyAuthMethodActive": "Active",
|
||||
"policyAuthMethodOff": "Off",
|
||||
"policyAuthSsoTitle": "Platform SSO",
|
||||
"policyAuthSsoDescription": "Require sign-in through your organization's identity provider",
|
||||
"policyAuthSsoSummary": "{idp} · {users} users, {roles} roles",
|
||||
"policyAuthSsoDefaultIdp": "Default provider",
|
||||
"policyAuthAddDefaultIdentityProvider": "Add Default Identity Provider",
|
||||
"policyAuthOtherMethodsTitle": "Other Methods",
|
||||
"policyAuthOtherMethodsDescription": "Optional methods visitors can use instead of or alongside platform SSO",
|
||||
"policyAuthPasscodeTitle": "Passcode",
|
||||
"policyAuthPasscodeDescription": "Require a shared alphanumeric passcode to access the resource",
|
||||
"policyAuthPasscodeSummary": "Passcode set",
|
||||
"policyAuthPincodeTitle": "PIN Code",
|
||||
"policyAuthPincodeDescription": "A short numeric code required to access the resource",
|
||||
"policyAuthPincodeSummary": "6-digit PIN set",
|
||||
"policyAuthEmailTitle": "Email Whitelist",
|
||||
"policyAuthEmailDescription": "Allow listed email addresses with one-time passwords",
|
||||
"policyAuthEmailSummary": "{count} addresses allowed",
|
||||
"policyAuthEmailOtpCallout": "Enabling email whitelist sends a one-time password to the visitor's email on login.",
|
||||
"policyAuthHeaderAuthTitle": "Basic Header Auth",
|
||||
"policyAuthHeaderAuthDescription": "Validate a custom HTTP header name and value on each request",
|
||||
"policyAuthHeaderAuthSummary": "Header configured",
|
||||
"policyAuthHeaderName": "Header name",
|
||||
"policyAuthHeaderValue": "Expected value",
|
||||
"policyAccessRulesTitle": "Access Rules",
|
||||
"policyAccessRulesEnableDescription": "When enabled, rules are evaluated in descending order until one evaluates as true.",
|
||||
"policyAccessRulesFirstMatch": "Rules are evaluated top to bottom. The first matching rule decides the outcome.",
|
||||
"policyAccessRulesHowItWorks": "Rules match requests by path, IP address, location, or other criteria. Each rule applies an action: bypass authentication, block access, or pass to authentication. If no rule matches, traffic continues to authentication.",
|
||||
"policyAccessRulesFallthroughOff": "When rules are disabled, all traffic passes through to authentication.",
|
||||
"policyAccessRulesFallthroughOn": "When no rule matches, traffic passes through to authentication.",
|
||||
"rulesPlaceholderCidr": "10.0.0.0/8",
|
||||
"rulesPlaceholderPath": "/admin/*",
|
||||
"rulesPlaceholderGeo": "RU, KP",
|
||||
"authMethodsSave": "保存身份验证方法",
|
||||
"rulesSave": "保存规则",
|
||||
"resourceErrorCreate": "创建资源时出错",
|
||||
"resourceErrorCreateDescription": "创建资源时出错",
|
||||
@@ -1268,10 +1220,8 @@
|
||||
"addLabels": "添加标签",
|
||||
"siteLabelsTab": "标签",
|
||||
"siteLabelsDescription": "管理与此网站相关的标签。",
|
||||
"labelsNotFound": "No labels found.",
|
||||
"labelsEmptyCreateHint": "Start typing above to create a label.",
|
||||
"labelsNotFound": "找不到标签",
|
||||
"labelSearch": "搜索标签",
|
||||
"labelSearchOrCreate": "Search or create a label",
|
||||
"accessLabelFilterCount": "{count, plural, other {# 标签}}",
|
||||
"labelOverflowCount": "+{count, plural, other {# 标签}}",
|
||||
"accessLabelFilterClear": "清除标签过滤器",
|
||||
@@ -1512,7 +1462,7 @@
|
||||
"sidebarProxyResources": "公开的",
|
||||
"sidebarClientResources": "非公开的",
|
||||
"sidebarPolicies": "策略",
|
||||
"sidebarResourcePolicies": "Public Resources",
|
||||
"sidebarResourcePolicies": "资源",
|
||||
"sidebarAccessControl": "访问控制",
|
||||
"sidebarLogsAndAnalytics": "日志与分析",
|
||||
"sidebarTeam": "团队",
|
||||
@@ -1520,7 +1470,7 @@
|
||||
"sidebarAdmin": "管理员",
|
||||
"sidebarInvitations": "邀请",
|
||||
"sidebarRoles": "角色",
|
||||
"sidebarShareableLinks": "Share Links",
|
||||
"sidebarShareableLinks": "链接",
|
||||
"sidebarApiKeys": "API密钥",
|
||||
"sidebarProvisioning": "置备中",
|
||||
"sidebarSettings": "设置",
|
||||
@@ -1697,7 +1647,7 @@
|
||||
"standaloneHcFilterResourceIdFallback": "资源 {id}",
|
||||
"blueprints": "蓝图",
|
||||
"blueprintsLog": "蓝图日志",
|
||||
"blueprintsDescription": "View past blueprint applications and their results or apply a new blueprint",
|
||||
"blueprintsDescription": "查看过去的蓝图应用及其结果",
|
||||
"blueprintAdd": "添加蓝图",
|
||||
"blueprintGoBack": "查看所有蓝图",
|
||||
"blueprintCreate": "创建蓝图",
|
||||
@@ -2077,13 +2027,13 @@
|
||||
"healthCheckUnknown": "未知",
|
||||
"healthCheck": "健康检查",
|
||||
"configureHealthCheck": "配置健康检查",
|
||||
"configureHealthCheckDescription": "Set up monitoring for your resource to ensure it is always available",
|
||||
"configureHealthCheckDescription": "为 {target} 设置健康监控",
|
||||
"enableHealthChecks": "启用健康检查",
|
||||
"healthCheckDisabledStateDescription": "禁用后,站点不会进行健康检查,状态将被视为未知。",
|
||||
"enableHealthChecksDescription": "监视此目标的健康状况。如果需要,您可以监视一个不同的终点。",
|
||||
"healthScheme": "方法",
|
||||
"healthSelectScheme": "选择方法",
|
||||
"healthCheckPortInvalid": "Port must be between 1 and 65535",
|
||||
"healthCheckPortInvalid": "健康检查端口必须介于 1 到 65535 之间",
|
||||
"healthCheckPath": "路径",
|
||||
"healthHostname": "IP / 主机",
|
||||
"healthPort": "端口",
|
||||
@@ -2096,7 +2046,6 @@
|
||||
"requireDeviceApproval": "需要设备批准",
|
||||
"requireDeviceApprovalDescription": "具有此角色的用户需要管理员批准的新设备才能连接和访问资源。",
|
||||
"sshSettings": "SSH 设置",
|
||||
"sshAccess": "SSH Access",
|
||||
"rdpSettings": "RDP 设置",
|
||||
"vncSettings": "VNC 设置",
|
||||
"sshServer": "SSH 服务器",
|
||||
@@ -2123,13 +2072,8 @@
|
||||
"sshDaemonDisclaimer": "在完成本设置之前,请确保您的目标主机已经正确配置以运行身份验证守护程序,否则配置将失败。",
|
||||
"sshDaemonPort": "守护程序端口",
|
||||
"sshServerDestination": "服务器目标",
|
||||
"sshServerDestinationDescription": "Configure the destination of the SSH server",
|
||||
"sshServerDestinationDescription": "配置 SSH 服务器的目标和端口",
|
||||
"destination": "目标",
|
||||
"destinationRequired": "Destination is required.",
|
||||
"domainRequired": "Domain is required.",
|
||||
"proxyPortRequired": "Port is required.",
|
||||
"invalidPathConfiguration": "Invalid path configuration.",
|
||||
"invalidRewritePathConfiguration": "Invalid rewrite path configuration.",
|
||||
"bgTargetMultiSiteDisclaimer": "选择多个站点可实现高可用性的弹性路由和故障转移。",
|
||||
"roleAllowSsh": "允许 SSH",
|
||||
"roleAllowSshAllow": "允许",
|
||||
@@ -3090,7 +3034,7 @@
|
||||
"enterConfirmation": "输入确认",
|
||||
"blueprintViewDetails": "详细信息",
|
||||
"defaultIdentityProvider": "默认身份提供商",
|
||||
"defaultIdentityProviderDescription": "The user will be automatically redirected to this identity provider for authentication.",
|
||||
"defaultIdentityProviderDescription": "当选择默认身份提供商时,用户将自动重定向到提供商进行身份验证。",
|
||||
"editInternalResourceDialogNetworkSettings": "网络设置",
|
||||
"editInternalResourceDialogAccessPolicy": "访问策略",
|
||||
"editInternalResourceDialogAddRoles": "添加角色",
|
||||
@@ -3402,8 +3346,6 @@
|
||||
"idpUnassociateQuestion": "您确定要将此身份提供者从此组织中取消关联吗?",
|
||||
"idpUnassociateDescription": "与此身份提供者关联的所有用户将从该组织中移除,但身份提供者仍会继续存在于关联的其他组织中。",
|
||||
"idpUnassociateConfirm": "确认取消关联身份提供者",
|
||||
"idpConfirmDeleteAndRemoveMeFromOrg": "DELETE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateAndRemoveMeFromOrg": "UNASSOCIATE AND REMOVE ME FROM ORG",
|
||||
"idpUnassociateWarning": "此操作无法对该组织撤销。",
|
||||
"idpUnassociatedDescription": "身份提供者已成功从该组织中取消关联",
|
||||
"idpUnassociateMenu": "取消关联",
|
||||
@@ -3510,43 +3452,5 @@
|
||||
"sshErrorNoTarget": "未指定目标",
|
||||
"sshErrorWebSocket": "WebSocket 连接失败",
|
||||
"sshErrorAuthFailed": "身份验证失败",
|
||||
"sshErrorConnectionClosed": "认证完成前连接已关闭",
|
||||
"sitePangolinSshDescription": "Allow SSH access to resources on this site. This can be changed later.",
|
||||
"browserGatewayNoResourceForDomain": "No resource found for this domain",
|
||||
"browserGatewayNoTarget": "No target",
|
||||
"browserGatewayConnect": "Connect",
|
||||
"browserGatewayCtrlAltDel": "Ctrl+Alt+Del",
|
||||
"sshErrorSignKeyFailed": "Failed to sign SSH key for PAM push authentication. Did you sign in as a user?",
|
||||
"sshTerminalError": "Error: {error}",
|
||||
"sshConnectionClosedCode": "Connection closed (code {code})",
|
||||
"sshPrivateKeyPlaceholder": "-----BEGIN OPENSSH PRIVATE KEY-----",
|
||||
"sshPrivateKeyRequired": "Private key is required",
|
||||
"vncTitle": "VNC",
|
||||
"vncSignInDescription": "Enter your VNC password to connect",
|
||||
"vncPasswordOptional": "Password (optional)",
|
||||
"vncNoResourceTarget": "No resource target is available",
|
||||
"vncFailedToLoadNovnc": "Failed to load noVNC",
|
||||
"vncAuthFailedStatus": "Status {status}",
|
||||
"vncPasteClipboard": "Paste clipboard",
|
||||
"rdpTitle": "RDP",
|
||||
"rdpSignInTitle": "Sign in to Remote Desktop",
|
||||
"rdpSignInDescription": "Enter Windows credentials to connect",
|
||||
"rdpLoadingModule": "Loading module...",
|
||||
"rdpFailedToLoadModule": "Failed to load RDP module",
|
||||
"rdpNotReady": "Not ready",
|
||||
"rdpModuleInitializing": "RDP module is still initializing",
|
||||
"rdpDownloadingFiles": "Downloading {count} file(s) from remote…",
|
||||
"rdpDownloadFailed": "Download failed: {fileName}",
|
||||
"rdpUploaded": "Uploaded: {fileName}",
|
||||
"rdpNoConnectionTarget": "No connection target available",
|
||||
"rdpConnectionFailed": "Connection failed",
|
||||
"rdpFit": "Fit",
|
||||
"rdpFull": "Full",
|
||||
"rdpReal": "Real",
|
||||
"rdpMeta": "Meta",
|
||||
"rdpUploadFiles": "Upload files",
|
||||
"rdpFilesReadyToPaste": "Files ready to paste",
|
||||
"rdpFilesReadyToPasteDescription": "{count} file(s) copied to remote clipboard — press Ctrl+V on the remote desktop to paste.",
|
||||
"rdpUploadFailed": "Upload failed",
|
||||
"rdpUnicodeKeyboardMode": "Unicode keyboard mode"
|
||||
"sshErrorConnectionClosed": "认证完成前连接已关闭"
|
||||
}
|
||||
|
||||
@@ -665,7 +665,7 @@ export async function generateSubnetProxyTargetV2(
|
||||
return;
|
||||
}
|
||||
|
||||
let targets: SubnetProxyTargetV2[] = [];
|
||||
const targets: SubnetProxyTargetV2[] = [];
|
||||
|
||||
const portRange = [
|
||||
...parsePortRangeString(siteResource.tcpPortRangeString, "tcp"),
|
||||
|
||||
@@ -44,7 +44,8 @@ export async function getTraefikConfig(
|
||||
filterOutNamespaceDomains = false, // UNUSED BUT USED IN PRIVATE
|
||||
generateLoginPageRouters = false, // UNUSED BUT USED IN PRIVATE
|
||||
allowRawResources = true,
|
||||
allowMaintenancePage = true // UNUSED BUT USED IN PRIVATE
|
||||
allowMaintenancePage = true, // UNUSED BUT USED IN PRIVATE
|
||||
allowBrowserGatewayResources = true
|
||||
): Promise<any> {
|
||||
// Get resources with their targets and sites in a single optimized query
|
||||
// Start from sites on this exit node, then join to targets and resources
|
||||
@@ -240,7 +241,7 @@ export async function getTraefikConfig(
|
||||
continue;
|
||||
}
|
||||
|
||||
if (resource.http) {
|
||||
if (resource.mode === "http") {
|
||||
if (!resource.domainId || !resource.fullDomain) {
|
||||
continue;
|
||||
}
|
||||
@@ -572,7 +573,7 @@ export async function getTraefikConfig(
|
||||
serviceName
|
||||
].loadBalancer.serversTransport = transportName;
|
||||
}
|
||||
} else {
|
||||
} else if (resource.mode === "tcp" || resource.mode === "udp") {
|
||||
// Non-HTTP (TCP/UDP) configuration
|
||||
if (!resource.enableProxy || !resource.proxyPort) {
|
||||
continue;
|
||||
|
||||
322
server/middlewares/verifySiteAccess.test.ts
Normal file
322
server/middlewares/verifySiteAccess.test.ts
Normal file
@@ -0,0 +1,322 @@
|
||||
import { assertEquals } from "@test/assert";
|
||||
|
||||
/**
|
||||
* Tests for the cross-organization site binding prevention in verifySiteAccess.
|
||||
*
|
||||
* verifySiteAccess now includes a check: if req.userOrgId is already set by a
|
||||
* previous middleware (e.g. verifyResourceAccess or verifyTargetAccess), and the
|
||||
* loaded site's orgId differs from req.userOrgId, the request is rejected with
|
||||
* 403 Forbidden.
|
||||
*
|
||||
* Route stacks after fix:
|
||||
* PUT /resource/:resourceId/target
|
||||
* → verifyResourceAccess → verifySiteAccess → verifyLimits → ...
|
||||
* POST /target/:targetId
|
||||
* → verifyTargetAccess → verifySiteAccess → verifyLimits → ...
|
||||
*
|
||||
* verifyResourceAccess sets req.userOrgId to the resource's org.
|
||||
* verifyTargetAccess sets req.userOrgId to the target's resource org.
|
||||
* verifySiteAccess then checks site.orgId against req.userOrgId before
|
||||
* overwriting it with the site's org.
|
||||
*/
|
||||
|
||||
// --- Core org-matching logic (mirrors the check in verifySiteAccess) ---
|
||||
function siteOrgMatchesExpectedOrg(
|
||||
siteOrgId: string | null | undefined,
|
||||
expectedOrgId: string | null | undefined
|
||||
): boolean {
|
||||
if (!siteOrgId || !expectedOrgId) {
|
||||
return false;
|
||||
}
|
||||
return siteOrgId === expectedOrgId;
|
||||
}
|
||||
|
||||
// Simulates the condition check in verifySiteAccess:
|
||||
// if (req.userOrgId && site.orgId !== req.userOrgId) { reject }
|
||||
function shouldRejectCrossOrgSite(
|
||||
siteOrgId: string,
|
||||
reqUserOrgId: string | undefined
|
||||
): boolean {
|
||||
// The actual check in verifySiteAccess is:
|
||||
// if (req.userOrgId && site.orgId !== req.userOrgId) { reject }
|
||||
return !!(reqUserOrgId && siteOrgId !== reqUserOrgId);
|
||||
}
|
||||
|
||||
// --- Tests ---
|
||||
|
||||
function testSiteOrgMatchLogic() {
|
||||
console.log("Running verifySiteAccess org-match logic tests...");
|
||||
|
||||
// Test 1: Same org — should match
|
||||
{
|
||||
const result = siteOrgMatchesExpectedOrg(
|
||||
"org-attacker",
|
||||
"org-attacker"
|
||||
);
|
||||
assertEquals(result, true, "Same org should match");
|
||||
}
|
||||
|
||||
// Test 2: Different org — should NOT match (cross-org bypass scenario)
|
||||
{
|
||||
const result = siteOrgMatchesExpectedOrg("org-victim", "org-attacker");
|
||||
assertEquals(
|
||||
result,
|
||||
false,
|
||||
"Cross-org site should NOT match expected org"
|
||||
);
|
||||
}
|
||||
|
||||
// Test 3: Site orgId is null — should NOT match
|
||||
{
|
||||
const result = siteOrgMatchesExpectedOrg(null, "org-attacker");
|
||||
assertEquals(result, false, "Null site orgId should NOT match");
|
||||
}
|
||||
|
||||
// Test 4: Expected orgId is null — should NOT match
|
||||
{
|
||||
const result = siteOrgMatchesExpectedOrg("org-attacker", null);
|
||||
assertEquals(result, false, "Null expected orgId should NOT match");
|
||||
}
|
||||
|
||||
// Test 5: Both null — should NOT match
|
||||
{
|
||||
const result = siteOrgMatchesExpectedOrg(null, null);
|
||||
assertEquals(result, false, "Both null should NOT match");
|
||||
}
|
||||
|
||||
// Test 6: Empty string orgIds — should NOT match (empty string is falsy)
|
||||
{
|
||||
const result = siteOrgMatchesExpectedOrg("", "org-attacker");
|
||||
assertEquals(result, false, "Empty site orgId should NOT match");
|
||||
}
|
||||
|
||||
// Test 7: Undefined orgIds — should NOT match
|
||||
{
|
||||
const result = siteOrgMatchesExpectedOrg(undefined, "org-attacker");
|
||||
assertEquals(result, false, "Undefined site orgId should NOT match");
|
||||
}
|
||||
|
||||
console.log("All verifySiteAccess org-match logic tests passed.");
|
||||
}
|
||||
|
||||
function testShouldRejectCrossOrgSite() {
|
||||
console.log(
|
||||
"Running shouldRejectCrossOrgSite tests (mirrors verifySiteAccess check)..."
|
||||
);
|
||||
|
||||
// Test: No prior org context (undefined) — should NOT reject
|
||||
// This is the normal case for site-only routes (e.g. PUT /site/:siteId)
|
||||
// where verifySiteAccess runs without a prior verifyResourceAccess.
|
||||
{
|
||||
const shouldReject = shouldRejectCrossOrgSite("org-victim", undefined);
|
||||
assertEquals(
|
||||
shouldReject,
|
||||
false,
|
||||
"No prior org context should NOT reject (normal site routes)"
|
||||
);
|
||||
}
|
||||
|
||||
// Test: Same org — should NOT reject
|
||||
{
|
||||
const shouldReject = shouldRejectCrossOrgSite(
|
||||
"org-attacker",
|
||||
"org-attacker"
|
||||
);
|
||||
assertEquals(shouldReject, false, "Same org should NOT reject");
|
||||
}
|
||||
|
||||
// Test: Different org — should reject
|
||||
{
|
||||
const shouldReject = shouldRejectCrossOrgSite(
|
||||
"org-victim",
|
||||
"org-attacker"
|
||||
);
|
||||
assertEquals(shouldReject, true, "Cross-org site should be rejected");
|
||||
}
|
||||
|
||||
// Test: Empty string userOrgId — should NOT reject (falsy, check is skipped)
|
||||
{
|
||||
const shouldReject = shouldRejectCrossOrgSite("org-victim", "");
|
||||
assertEquals(
|
||||
shouldReject,
|
||||
false,
|
||||
"Empty string userOrgId should NOT reject (check is skipped)"
|
||||
);
|
||||
}
|
||||
|
||||
console.log("All shouldRejectCrossOrgSite tests passed.");
|
||||
}
|
||||
|
||||
// --- Route stack validation tests ---
|
||||
|
||||
function testRouteStackOrdering() {
|
||||
console.log("Running route stack ordering tests...");
|
||||
|
||||
const createTargetStack = [
|
||||
"verifyResourceAccess",
|
||||
"verifySiteAccess",
|
||||
"verifyLimits",
|
||||
"verifyUserHasAction",
|
||||
"logActionAudit",
|
||||
"createTarget"
|
||||
];
|
||||
|
||||
const updateTargetStack = [
|
||||
"verifyTargetAccess",
|
||||
"verifySiteAccess",
|
||||
"verifyLimits",
|
||||
"verifyUserHasAction",
|
||||
"logActionAudit",
|
||||
"updateTarget"
|
||||
];
|
||||
|
||||
// Verify verifySiteAccess comes after resource/target access middleware
|
||||
{
|
||||
const siteAccessIndex = createTargetStack.indexOf("verifySiteAccess");
|
||||
const resourceAccessIndex = createTargetStack.indexOf(
|
||||
"verifyResourceAccess"
|
||||
);
|
||||
assertEquals(
|
||||
siteAccessIndex > resourceAccessIndex,
|
||||
true,
|
||||
"verifySiteAccess must come after verifyResourceAccess in create target stack"
|
||||
);
|
||||
}
|
||||
|
||||
{
|
||||
const siteAccessIndex = updateTargetStack.indexOf("verifySiteAccess");
|
||||
const targetAccessIndex =
|
||||
updateTargetStack.indexOf("verifyTargetAccess");
|
||||
assertEquals(
|
||||
siteAccessIndex > targetAccessIndex,
|
||||
true,
|
||||
"verifySiteAccess must come after verifyTargetAccess in update target stack"
|
||||
);
|
||||
}
|
||||
|
||||
// Verify verifySiteAccess comes before the handler
|
||||
{
|
||||
const siteAccessIndex = createTargetStack.indexOf("verifySiteAccess");
|
||||
const handlerIndex = createTargetStack.indexOf("createTarget");
|
||||
assertEquals(
|
||||
siteAccessIndex < handlerIndex,
|
||||
true,
|
||||
"verifySiteAccess must come before createTarget handler"
|
||||
);
|
||||
}
|
||||
|
||||
{
|
||||
const siteAccessIndex = updateTargetStack.indexOf("verifySiteAccess");
|
||||
const handlerIndex = updateTargetStack.indexOf("updateTarget");
|
||||
assertEquals(
|
||||
siteAccessIndex < handlerIndex,
|
||||
true,
|
||||
"verifySiteAccess must come before updateTarget handler"
|
||||
);
|
||||
}
|
||||
|
||||
console.log("All route stack ordering tests passed.");
|
||||
}
|
||||
|
||||
// --- Security scenario tests ---
|
||||
|
||||
function testSecurityScenarios() {
|
||||
console.log("Running security scenario tests...");
|
||||
|
||||
// Scenario 1: Attacker has resource access in org_attacker, but tries to
|
||||
// bind target to a site in org_victim.
|
||||
// verifyResourceAccess passes (sets req.userOrgId = "org_attacker").
|
||||
// verifySiteAccess loads site (org_victim), checks site.orgId !== req.userOrgId.
|
||||
// Expected: 403 Forbidden.
|
||||
{
|
||||
const shouldReject = shouldRejectCrossOrgSite(
|
||||
"org_victim",
|
||||
"org_attacker"
|
||||
);
|
||||
assertEquals(
|
||||
shouldReject,
|
||||
true,
|
||||
"Scenario 1: Cross-org site binding must be rejected"
|
||||
);
|
||||
}
|
||||
|
||||
// Scenario 2: Attacker has resource access AND site access in another org.
|
||||
// Even though the user has site access, verifySiteAccess rejects because
|
||||
// the org-match check runs before the site access check.
|
||||
// Expected: 403 Forbidden (org mismatch caught before site access check).
|
||||
{
|
||||
const shouldReject = shouldRejectCrossOrgSite(
|
||||
"org_victim",
|
||||
"org_attacker"
|
||||
);
|
||||
assertEquals(
|
||||
shouldReject,
|
||||
true,
|
||||
"Scenario 2: Cross-org site must be rejected even if user has site access"
|
||||
);
|
||||
}
|
||||
|
||||
// Scenario 3: Legitimate user creates target with site in same org.
|
||||
// verifyResourceAccess passes, verifySiteAccess org-match passes (same org),
|
||||
// verifySiteAccess site access passes.
|
||||
// Expected: 201 Created.
|
||||
{
|
||||
const shouldReject = shouldRejectCrossOrgSite(
|
||||
"org_attacker",
|
||||
"org_attacker"
|
||||
);
|
||||
assertEquals(
|
||||
shouldReject,
|
||||
false,
|
||||
"Scenario 3: Same-org site must be allowed"
|
||||
);
|
||||
}
|
||||
|
||||
// Scenario 4: WireGuard site in victim org — org mismatch is caught before
|
||||
// any DB write, pickPort, addPeer, or addTargets side effect.
|
||||
{
|
||||
const shouldReject = shouldRejectCrossOrgSite(
|
||||
"org_victim",
|
||||
"org_attacker"
|
||||
);
|
||||
assertEquals(
|
||||
shouldReject,
|
||||
true,
|
||||
"Scenario 4: WireGuard cross-org site must be rejected before addPeer"
|
||||
);
|
||||
}
|
||||
|
||||
// Scenario 5: Newt site in victim org — same as scenario 4 but for newt.
|
||||
{
|
||||
const shouldReject = shouldRejectCrossOrgSite(
|
||||
"org_victim",
|
||||
"org_attacker"
|
||||
);
|
||||
assertEquals(
|
||||
shouldReject,
|
||||
true,
|
||||
"Scenario 5: Newt cross-org site must be rejected before addTargets"
|
||||
);
|
||||
}
|
||||
|
||||
// Scenario 6: Normal site-only route (e.g. PUT /site/:siteId) where
|
||||
// verifySiteAccess runs without a prior verifyResourceAccess.
|
||||
// req.userOrgId is undefined, so the org-match check is skipped.
|
||||
// Normal site access verification proceeds.
|
||||
{
|
||||
const shouldReject = shouldRejectCrossOrgSite("org_victim", undefined);
|
||||
assertEquals(
|
||||
shouldReject,
|
||||
false,
|
||||
"Scenario 6: Site-only routes should skip org-match check"
|
||||
);
|
||||
}
|
||||
|
||||
console.log("All security scenario tests passed.");
|
||||
}
|
||||
|
||||
// Run all tests
|
||||
testSiteOrgMatchLogic();
|
||||
testShouldRejectCrossOrgSite();
|
||||
testRouteStackOrdering();
|
||||
testSecurityScenarios();
|
||||
@@ -71,6 +71,15 @@ export async function verifySiteAccess(
|
||||
);
|
||||
}
|
||||
|
||||
if (req.userOrgId && site.orgId !== req.userOrgId) {
|
||||
return next(
|
||||
createHttpError(
|
||||
HttpCode.FORBIDDEN,
|
||||
"User does not have access to this site"
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
if (!req.userOrg) {
|
||||
// Get user's role ID in the organization
|
||||
const userOrgRole = await db
|
||||
@@ -128,10 +137,7 @@ export async function verifySiteAccess(
|
||||
.where(
|
||||
and(
|
||||
eq(roleSites.siteId, site.siteId),
|
||||
inArray(
|
||||
roleSites.roleId,
|
||||
req.userOrgRoleIds!
|
||||
)
|
||||
inArray(roleSites.roleId, req.userOrgRoleIds!)
|
||||
)
|
||||
)
|
||||
.limit(1)
|
||||
|
||||
@@ -493,16 +493,29 @@ export async function getTraefikConfig(
|
||||
const transportName = `${key}-transport`;
|
||||
const headersMiddlewareName = `${key}-headers-middleware`;
|
||||
|
||||
logger.debug(
|
||||
`Processing resource ${resource.name} with domain ${fullDomain} and ${targets.length} targets`
|
||||
);
|
||||
|
||||
if (!resource.enabled) {
|
||||
logger.debug(
|
||||
`Resource ${resource.name} is disabled, skipping Traefik config`
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (resource.http) {
|
||||
if (resource.mode == "http") {
|
||||
if (!resource.domainId) {
|
||||
logger.debug(
|
||||
`Resource ${resource.name} does not have a domainId, skipping Traefik config`
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!resource.fullDomain) {
|
||||
logger.debug(
|
||||
`Resource ${resource.name} does not have a fullDomain, skipping Traefik config`
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -958,7 +971,7 @@ export async function getTraefikConfig(
|
||||
serviceName
|
||||
].loadBalancer.serversTransport = transportName;
|
||||
}
|
||||
} else {
|
||||
} else if (resource.mode == "tcp" || resource.mode == "udp") {
|
||||
// Non-HTTP (TCP/UDP) configuration
|
||||
if (!resource.enableProxy) {
|
||||
continue;
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
*/
|
||||
|
||||
import { Request, Response, NextFunction } from "express";
|
||||
import { randomInt } from "crypto";
|
||||
import { z } from "zod";
|
||||
import {
|
||||
actionAuditLog,
|
||||
@@ -392,7 +393,7 @@ export async function signSshKey(
|
||||
if (existingUserWithSameName) {
|
||||
let foundUniqueUsername = false;
|
||||
for (let attempt = 0; attempt < 20; attempt++) {
|
||||
const randomNum = Math.floor(Math.random() * 101); // 0 to 100
|
||||
const randomNum = randomInt(0, 101); // 0 to 100
|
||||
const candidateUsername = `${usernameToUse}${randomNum}`;
|
||||
|
||||
const [existingUser] = await db
|
||||
|
||||
@@ -561,6 +561,7 @@ authenticated.delete(
|
||||
authenticated.put(
|
||||
"/resource/:resourceId/target",
|
||||
verifyResourceAccess,
|
||||
verifySiteAccess,
|
||||
verifyLimits,
|
||||
verifyUserHasAction(ActionsEnum.createTarget),
|
||||
logActionAudit(ActionsEnum.createTarget),
|
||||
@@ -612,6 +613,7 @@ authenticated.get(
|
||||
authenticated.post(
|
||||
"/target/:targetId",
|
||||
verifyTargetAccess,
|
||||
verifySiteAccess,
|
||||
verifyLimits,
|
||||
verifyUserHasAction(ActionsEnum.updateTarget),
|
||||
logActionAudit(ActionsEnum.updateTarget),
|
||||
@@ -1234,7 +1236,8 @@ export const authRouter = Router();
|
||||
unauthenticated.use("/auth", authRouter);
|
||||
authRouter.use(
|
||||
rateLimit({
|
||||
windowMs: config.getRawConfig().rate_limits.auth.window_minutes * 60 * 1000,
|
||||
windowMs:
|
||||
config.getRawConfig().rate_limits.auth.window_minutes * 60 * 1000,
|
||||
max: config.getRawConfig().rate_limits.auth.max_requests,
|
||||
keyGenerator: (req) =>
|
||||
`authRouterGlobal:${ipKeyGenerator(req.ip || "")}:${req.path}`,
|
||||
|
||||
@@ -103,7 +103,7 @@ export function ProxyResourceTargetsForm({
|
||||
// Notify parent of changes (create mode)
|
||||
useEffect(() => {
|
||||
onChange?.(targets);
|
||||
}, [targets]); // eslint-disable-line react-hooks/exhaustive-deps
|
||||
}, [targets]);
|
||||
|
||||
// Poll health status only in edit mode
|
||||
const { data: polledTargets } = useQuery({
|
||||
|
||||
@@ -86,7 +86,7 @@ export default async function Page(props: {
|
||||
targetOrgId = lastOrgCookie;
|
||||
} else {
|
||||
let ownedOrg = orgs.find((org) => org.isOwner);
|
||||
let primaryOrg = orgs.find((org) => org.isPrimaryOrg);
|
||||
const primaryOrg = orgs.find((org) => org.isPrimaryOrg);
|
||||
if (!ownedOrg) {
|
||||
if (primaryOrg) {
|
||||
ownedOrg = primaryOrg;
|
||||
|
||||
@@ -16,9 +16,9 @@ export const metadata: Metadata = {
|
||||
export default async function MaintenanceScreen() {
|
||||
const t = await getTranslations();
|
||||
|
||||
let title = t("privateMaintenanceScreenTitle");
|
||||
let message = t("privateMaintenanceScreenMessage");
|
||||
let steps = t("privateMaintenanceScreenSteps");
|
||||
const title = t("privateMaintenanceScreenTitle");
|
||||
const message = t("privateMaintenanceScreenMessage");
|
||||
const steps = t("privateMaintenanceScreenSteps");
|
||||
|
||||
return (
|
||||
<div className="min-h-screen flex items-center justify-center p-4">
|
||||
|
||||
@@ -17,7 +17,7 @@ export default async function RdpPage() {
|
||||
const hostname = host.split(":")[0];
|
||||
|
||||
let target: GetBrowserTargetResponse | null = null;
|
||||
let error: string | null = null;
|
||||
const error: string | null = null;
|
||||
|
||||
try {
|
||||
const res = await priv.get<AxiosResponse<GetBrowserTargetResponse>>(
|
||||
|
||||
@@ -180,7 +180,6 @@ export default function SshClient({
|
||||
certificate: signedKeyData.certificate
|
||||
});
|
||||
}
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, []);
|
||||
|
||||
function connect(override?: ConnectCredentials) {
|
||||
|
||||
@@ -39,7 +39,6 @@ export default function VncClient({
|
||||
});
|
||||
|
||||
const [connected, setConnected] = useState(false);
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const rfbRef = useRef<any>(null);
|
||||
const screenRef = useRef<HTMLDivElement>(null);
|
||||
|
||||
@@ -59,7 +58,7 @@ export default function VncClient({
|
||||
// Clean up on unmount.
|
||||
useEffect(() => {
|
||||
return () => disconnect();
|
||||
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
||||
}, []);
|
||||
|
||||
const connect = async () => {
|
||||
if (!target) {
|
||||
@@ -115,7 +114,6 @@ export default function VncClient({
|
||||
options.credentials = { password: form.password };
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const rfb: any = new RFB(screenRef.current, wsUrl, options);
|
||||
|
||||
rfb.scaleViewport = true;
|
||||
|
||||
@@ -17,7 +17,7 @@ export default async function VncPage() {
|
||||
const hostname = host.split(":")[0];
|
||||
|
||||
let target: GetBrowserTargetResponse | null = null;
|
||||
let error: string | null = null;
|
||||
const error: string | null = null;
|
||||
|
||||
try {
|
||||
const res = await priv.get<AxiosResponse<GetBrowserTargetResponse>>(
|
||||
|
||||
Reference in New Issue
Block a user