diff --git a/messages/bg-BG.json b/messages/bg-BG.json index 74bf5d87..01af4db4 100644 --- a/messages/bg-BG.json +++ b/messages/bg-BG.json @@ -96,7 +96,7 @@ "siteWgDescription": "Use any WireGuard client to establish a tunnel. Manual NAT setup required. ONLY WORKS ON SELF HOSTED NODES", "siteWgDescriptionSaas": "Използвайте всеки WireGuard клиент за установяване на тунел. Ръчно нат задаване е необходимо. РАБОТИ САМО НА СОБСТВЕНИ УЗЛИ.", "siteLocalDescription": "Local resources only. No tunneling. ONLY WORKS ON SELF HOSTED NODES", - "siteLocalDescriptionSaas": "Само локални ресурси. Без тунелиране. РАБОТИ САМО НА СОБСТВЕНИ УЗЛИ.", + "siteLocalDescriptionSaas": "Local resources only. No tunneling. Only available on remote nodes.", "siteSeeAll": "Вижте всички сайтове", "siteTunnelDescription": "Определете как искате да се свържете с вашия сайт", "siteNewtCredentials": "Newt Удостоверения", @@ -468,7 +468,10 @@ "createdAt": "Създаден на", "proxyErrorInvalidHeader": "Невалидна стойност за заглавие на хоста. Използвайте формат на име на домейн, или оставете празно поле за да премахнете персонализирано заглавие на хост.", "proxyErrorTls": "Невалидно име на TLS сървър. Използвайте формат на име на домейн, или оставете празно за да премахнете името на TLS сървъра.", - "proxyEnableSSL": "Активиране на SSL (https)", + "proxyEnableSSL": "Активиране на SSL", + "proxyEnableSSLDescription": "Активиране на SSL/TLS криптиране за сигурни HTTPS връзки към вашите цели.", + "target": "Цел", + "configureTarget": "Конфигуриране на цели", "targetErrorFetch": "Неуспешно извличане на цели", "targetErrorFetchDescription": "Възникна грешка при извличане на целите", "siteErrorFetch": "Неуспешно извличане на ресурс", @@ -495,7 +498,7 @@ "targetTlsSettings": "Конфигурация на защитена връзка", "targetTlsSettingsDescription": "Конфигурирайте SSL/TLS настройките за вашия ресурс", "targetTlsSettingsAdvanced": "Разширени TLS настройки", - "targetTlsSni": "Име на TLS сървър (SNI)", + "targetTlsSni": "Имя на TLS сървър", "targetTlsSniDescription": "Името на TLS сървъра за използване за SNI. Оставете празно, за да използвате подразбиране.", "targetTlsSubmit": "Запазване на настройките", "targets": "Конфигурация на целите", @@ -504,9 +507,21 @@ "targetStickySessionsDescription": "Запазване на връзките със същото задно целево място за цялата сесия.", "methodSelect": "Изберете метод", "targetSubmit": "Добавяне на цел", - "targetNoOne": "Няма цели. Добавете цел чрез формата.", + "targetNoOne": "Този ресурс няма цели. Добавете цел, за да конфигурирате къде да изпращате заявки към вашия бекенд.", "targetNoOneDescription": "Добавянето на повече от една цел ще активира натоварването на баланса.", "targetsSubmit": "Запазване на целите", + "addTarget": "Добавете цел", + "targetErrorInvalidIp": "Невалиден IP адрес", + "targetErrorInvalidIpDescription": "Моля, въведете валиден IP адрес или име на хост", + "targetErrorInvalidPort": "Невалиден порт", + "targetErrorInvalidPortDescription": "Моля, въведете валиден номер на порт", + "targetErrorNoSite": "Няма избран сайт", + "targetErrorNoSiteDescription": "Моля, изберете сайт за целта", + "targetCreated": "Целта е създадена", + "targetCreatedDescription": "Целта беше успешно създадена", + "targetErrorCreate": "Неуспешно създаване на целта", + "targetErrorCreateDescription": "Възникна грешка при създаването на целта", + "save": "Запази", "proxyAdditional": "Допълнителни настройки на прокси", "proxyAdditionalDescription": "Конфигурирайте как вашият ресурс обработва прокси настройки", "proxyCustomHeader": "Персонализиран хост заглавие", @@ -715,6 +730,7 @@ "pangolinServerAdmin": "Администратор на сървър - Панголин", "licenseTierProfessional": "Професионален лиценз", "licenseTierEnterprise": "Предприятие лиценз", + "licenseTierPersonal": "Personal License", "licensed": "Лицензиран", "yes": "Да", "no": "Не", @@ -749,7 +765,7 @@ "idpDisplayName": "Име за показване за този доставчик на идентичност", "idpAutoProvisionUsers": "Автоматично потребителско създаване", "idpAutoProvisionUsersDescription": "Когато е активирано, потребителите ще бъдат автоматично създадени в системата при първо влизане с възможност за свързване на потребителите с роли и организации.", - "licenseBadge": "Професионален", + "licenseBadge": "EE", "idpType": "Тип доставчик", "idpTypeDescription": "Изберете типа доставчик на идентичност, който искате да конфигурирате", "idpOidcConfigure": "Конфигурация на OAuth2/OIDC", @@ -1138,7 +1154,7 @@ "sidebarAllUsers": "Всички потребители", "sidebarIdentityProviders": "Идентификационни доставчици", "sidebarLicense": "Лиценз", - "sidebarClients": "Клиенти (Бета)", + "sidebarClients": "Clients", "sidebarDomains": "Домейни", "enableDockerSocket": "Активиране на Docker Чернова", "enableDockerSocketDescription": "Активиране на Docker Socket маркировка за изтегляне на етикети на чернова. Пътят на гнездото трябва да бъде предоставен на Newt.", @@ -1331,7 +1347,6 @@ "twoFactorRequired": "Двуфакторното удостоверяване е необходимо за регистрация на ключ за защита.", "twoFactor": "Двуфакторно удостоверяване", "adminEnabled2FaOnYourAccount": "Вашият администратор е активирал двуфакторно удостоверяване за {email}. Моля, завършете процеса по настройка, за да продължите.", - "continueToApplication": "Продължете към приложението", "securityKeyAdd": "Добавяне на ключ за сигурност", "securityKeyRegisterTitle": "Регистриране на нов ключ за сигурност", "securityKeyRegisterDescription": "Свържете ключа за сигурност и въведете име, по което да го идентифицирате", @@ -1409,6 +1424,7 @@ "externalProxyEnabled": "Външен прокси разрешен", "addNewTarget": "Добави нова цел", "targetsList": "Списък с цели", + "advancedMode": "Разширен режим", "targetErrorDuplicateTargetFound": "Дублирана цел намерена", "healthCheckHealthy": "Здрав", "healthCheckUnhealthy": "Нездрав", @@ -1541,8 +1557,8 @@ "autoLoginError": "Грешка при автоматично влизане", "autoLoginErrorNoRedirectUrl": "Не е получен URL за пренасочване от доставчика на идентификационни данни.", "autoLoginErrorGeneratingUrl": "Неуспешно генериране на URL за удостоверяване.", - "remoteExitNodeManageRemoteExitNodes": "Управление на самостоятелно хоствани", - "remoteExitNodeDescription": "Управление на възли за разширяване на мрежовата ви свързаност", + "remoteExitNodeManageRemoteExitNodes": "Отдалечени възли", + "remoteExitNodeDescription": "Self-host one or more remote nodes to extend your network connectivity and reduce reliance on the cloud", "remoteExitNodes": "Възли", "searchRemoteExitNodes": "Търсене на възли...", "remoteExitNodeAdd": "Добавяне на възел", @@ -1552,7 +1568,7 @@ "remoteExitNodeMessageConfirm": "За потвърждение, моля въведете името на възела по-долу.", "remoteExitNodeConfirmDelete": "Потвърдете изтриването на възела (\"Confirm Delete Site\" match)", "remoteExitNodeDelete": "Изтрийте възела (\"Delete Site\" match)", - "sidebarRemoteExitNodes": "Възли (\"Local\" match)", + "sidebarRemoteExitNodes": "Отдалечени възли", "remoteExitNodeCreate": { "title": "Създаване на възел", "description": "Създайте нов възел, за да разширите мрежовата си свързаност", @@ -1721,5 +1737,161 @@ "authPageUpdated": "Страницата за удостоверяване е актуализирана успешно", "healthCheckNotAvailable": "Локална", "rewritePath": "Пренапиши път", - "rewritePathDescription": "По избор пренапиши пътя преди пренасочване към целта." + "rewritePathDescription": "По избор пренапиши пътя преди пренасочване към целта.", + "continueToApplication": "Продължете до приложението", + "checkingInvite": "Проверка на поканата", + "setResourceHeaderAuth": "setResourceHeaderAuth", + "resourceHeaderAuthRemove": "Премахване на автентикация в заглавката", + "resourceHeaderAuthRemoveDescription": "Автентикацията в заглавката беше премахната успешно.", + "resourceErrorHeaderAuthRemove": "Неуспешно премахване на автентикация в заглавката", + "resourceErrorHeaderAuthRemoveDescription": "Не беше възможно премахването на автентикацията в заглавката за ресурса.", + "resourceHeaderAuthProtectionEnabled": "Header Authentication Enabled", + "resourceHeaderAuthProtectionDisabled": "Header Authentication Disabled", + "headerAuthRemove": "Remove Header Auth", + "headerAuthAdd": "Add Header Auth", + "resourceErrorHeaderAuthSetup": "Неуспешно задаване на автентикация в заглавката", + "resourceErrorHeaderAuthSetupDescription": "Не беше възможно задаването на автентикация в заглавката за ресурса.", + "resourceHeaderAuthSetup": "Автентикацията в заглавката беше зададена успешно", + "resourceHeaderAuthSetupDescription": "Автентикацията в заглавката беше успешно зададена.", + "resourceHeaderAuthSetupTitle": "Задаване на автентикация в заглавката", + "resourceHeaderAuthSetupTitleDescription": "Set the basic auth credentials (username and password) to protect this resource with HTTP Header Authentication. Access it using the format https://username:password@resource.example.com", + "resourceHeaderAuthSubmit": "Задаване на автентикация в заглавката", + "actionSetResourceHeaderAuth": "Задаване на автентикация в заглавката", + "enterpriseEdition": "Enterprise Edition", + "unlicensed": "Unlicensed", + "beta": "Beta", + "manageClients": "Manage Clients", + "manageClientsDescription": "Clients are devices that can connect to your sites", + "licenseTableValidUntil": "Valid Until", + "saasLicenseKeysSettingsTitle": "Enterprise Licenses", + "saasLicenseKeysSettingsDescription": "Generate and manage Enterprise license keys for self-hosted Pangolin instances", + "sidebarEnterpriseLicenses": "Licenses", + "generateLicenseKey": "Generate License Key", + "generateLicenseKeyForm": { + "validation": { + "emailRequired": "Please enter a valid email address", + "useCaseTypeRequired": "Please select a use case type", + "firstNameRequired": "First name is required", + "lastNameRequired": "Last name is required", + "primaryUseRequired": "Please describe your primary use", + "jobTitleRequiredBusiness": "Job title is required for business use", + "industryRequiredBusiness": "Industry is required for business use", + "stateProvinceRegionRequired": "State/Province/Region is required", + "postalZipCodeRequired": "Postal/ZIP Code is required", + "companyNameRequiredBusiness": "Company name is required for business use", + "countryOfResidenceRequiredBusiness": "Country of residence is required for business use", + "countryRequiredPersonal": "Country is required for personal use", + "agreeToTermsRequired": "You must agree to the terms", + "complianceConfirmationRequired": "You must confirm compliance with the Fossorial Commercial License" + }, + "useCaseOptions": { + "personal": { + "title": "Personal Use", + "description": "For individual, non-commercial use such as learning, personal projects, or experimentation." + }, + "business": { + "title": "Business Use", + "description": "For use within organizations, companies, or commercial or revenue-generating activities." + } + }, + "steps": { + "emailLicenseType": { + "title": "Email & License Type", + "description": "Enter your email and choose your license type" + }, + "personalInformation": { + "title": "Personal Information", + "description": "Tell us about yourself" + }, + "contactInformation": { + "title": "Contact Information", + "description": "Your contact details" + }, + "termsGenerate": { + "title": "Terms & Generate", + "description": "Review and accept terms to generate your license" + } + }, + "alerts": { + "commercialUseDisclosure": { + "title": "Usage Disclosure", + "description": "Select the license tier that accurately reflects your intended use. The Personal License permits free use of the Software for individual, non-commercial or small-scale commercial activities with annual gross revenue under $100,000 USD. Any use beyond these limits — including use within a business, organization, or other revenue-generating environment — requires a valid Enterprise License and payment of the applicable licensing fee. All users, whether Personal or Enterprise, must comply with the Fossorial Commercial License Terms." + }, + "trialPeriodInformation": { + "title": "Trial Period Information", + "description": "This License Key enables Enterprise features for a 7-day evaluation period. Continued access to Paid Features beyond the evaluation period requires activation under a valid Personal or Enterprise License. For Enterprise licensing, contact sales@fossorial.io." + } + }, + "form": { + "useCaseQuestion": "Are you using Pangolin for personal or business use?", + "firstName": "First Name", + "lastName": "Last Name", + "jobTitle": "Job Title", + "primaryUseQuestion": "What do you primarily plan to use Pangolin for?", + "industryQuestion": "What is your industry?", + "prospectiveUsersQuestion": "How many prospective users do you expect to have?", + "prospectiveSitesQuestion": "How many prospective sites (tunnels) do you expect to have?", + "companyName": "Company name", + "countryOfResidence": "Country of residence", + "stateProvinceRegion": "State / Province / Region", + "postalZipCode": "Postal / ZIP Code", + "companyWebsite": "Company website", + "companyPhoneNumber": "Company phone number", + "country": "Country", + "phoneNumberOptional": "Phone number (optional)", + "complianceConfirmation": "I confirm that I am in compliance with the Fossorial Commercial License and that reporting inaccurate information or misidentifying use of the product is a violation of the license." + }, + "buttons": { + "close": "Close", + "previous": "Previous", + "next": "Next", + "generateLicenseKey": "Generate License Key" + }, + "toasts": { + "success": { + "title": "License key generated successfully", + "description": "Your license key has been generated and is ready to use." + }, + "error": { + "title": "Failed to generate license key", + "description": "An error occurred while generating the license key." + } + } + }, + "priority": "Приоритет", + "priorityDescription": "По-високите приоритетни маршрути се оценяват първи. Приоритет = 100 означава автоматично подреждане (системата решава). Използвайте друго число, за да наложите ръчен приоритет.", + "instanceName": "Instance Name", + "pathMatchModalTitle": "Configure Path Matching", + "pathMatchModalDescription": "Set up how incoming requests should be matched based on their path.", + "pathMatchType": "Match Type", + "pathMatchPrefix": "Prefix", + "pathMatchExact": "Exact", + "pathMatchRegex": "Regex", + "pathMatchValue": "Path Value", + "clear": "Clear", + "saveChanges": "Save Changes", + "pathMatchRegexPlaceholder": "^/api/.*", + "pathMatchDefaultPlaceholder": "/path", + "pathMatchPrefixHelp": "Example: /api matches /api, /api/users, etc.", + "pathMatchExactHelp": "Example: /api matches only /api", + "pathMatchRegexHelp": "Example: ^/api/.* matches /api/anything", + "pathRewriteModalTitle": "Configure Path Rewriting", + "pathRewriteModalDescription": "Transform the matched path before forwarding to the target.", + "pathRewriteType": "Rewrite Type", + "pathRewritePrefixOption": "Prefix - Replace prefix", + "pathRewriteExactOption": "Exact - Replace entire path", + "pathRewriteRegexOption": "Regex - Pattern replacement", + "pathRewriteStripPrefixOption": "Strip Prefix - Remove prefix", + "pathRewriteValue": "Rewrite Value", + "pathRewriteRegexPlaceholder": "/new/$1", + "pathRewriteDefaultPlaceholder": "/new-path", + "pathRewritePrefixHelp": "Replace the matched prefix with this value", + "pathRewriteExactHelp": "Replace the entire path with this value when the path matches exactly", + "pathRewriteRegexHelp": "Use capture groups like $1, $2 for replacement", + "pathRewriteStripPrefixHelp": "Leave empty to strip prefix or provide new prefix", + "pathRewritePrefix": "Prefix", + "pathRewriteExact": "Exact", + "pathRewriteRegex": "Regex", + "pathRewriteStrip": "Strip", + "pathRewriteStripLabel": "strip" } diff --git a/messages/cs-CZ.json b/messages/cs-CZ.json index 9d573022..2eddea2a 100644 --- a/messages/cs-CZ.json +++ b/messages/cs-CZ.json @@ -96,7 +96,7 @@ "siteWgDescription": "Použijte jakéhokoli klienta WireGuard abyste sestavili tunel. Vyžaduje se ruční nastavení NAT.", "siteWgDescriptionSaas": "Použijte jakéhokoli klienta WireGuard abyste sestavili tunel. Vyžaduje se ruční nastavení NAT. FUNGUJE POUZE NA SELF-HOSTED SERVERECH", "siteLocalDescription": "Pouze lokální zdroje. Žádný tunel.", - "siteLocalDescriptionSaas": "Pouze lokální zdroje. Žádný tunel. FUNGUJE POUZE NA SELF-HOSTED SERVERECH", + "siteLocalDescriptionSaas": "Local resources only. No tunneling. Only available on remote nodes.", "siteSeeAll": "Zobrazit všechny lokality", "siteTunnelDescription": "Určete jak se chcete připojit k vaší lokalitě", "siteNewtCredentials": "Přihlašovací údaje Newt", @@ -468,7 +468,10 @@ "createdAt": "Vytvořeno v", "proxyErrorInvalidHeader": "Neplatná hodnota hlavičky hostitele. Použijte formát názvu domény, nebo uložte prázdné pro zrušení vlastního hlavičky hostitele.", "proxyErrorTls": "Neplatné jméno TLS serveru. Použijte formát doménového jména nebo uložte prázdné pro odstranění názvu TLS serveru.", - "proxyEnableSSL": "Povolit SSL (https)", + "proxyEnableSSL": "Povolit SSL", + "proxyEnableSSLDescription": "Povolit šifrování SSL/TLS pro zabezpečená HTTPS připojení k vašim cílům.", + "target": "Target", + "configureTarget": "Konfigurace cílů", "targetErrorFetch": "Nepodařilo se načíst cíle", "targetErrorFetchDescription": "Při načítání cílů došlo k chybě", "siteErrorFetch": "Nepodařilo se načíst zdroj", @@ -495,7 +498,7 @@ "targetTlsSettings": "Nastavení bezpečného připojení", "targetTlsSettingsDescription": "Konfigurace nastavení SSL/TLS pro váš dokument", "targetTlsSettingsAdvanced": "Pokročilé nastavení TLS", - "targetTlsSni": "Název serveru TLS (SNI)", + "targetTlsSni": "Název serveru TLS", "targetTlsSniDescription": "Název serveru TLS pro použití v SNI. Ponechte prázdné pro použití výchozího nastavení.", "targetTlsSubmit": "Uložit nastavení", "targets": "Konfigurace cílů", @@ -504,9 +507,21 @@ "targetStickySessionsDescription": "Zachovat spojení na stejném cíli pro celou relaci.", "methodSelect": "Vyberte metodu", "targetSubmit": "Add Target", - "targetNoOne": "Žádné cíle. Přidejte cíl pomocí formuláře.", + "targetNoOne": "Tento zdroj nemá žádné cíle. Přidejte cíl pro konfiguraci kam poslat žádosti na vaši backend.", "targetNoOneDescription": "Přidáním více než jednoho cíle se umožní vyvážení zatížení.", "targetsSubmit": "Uložit cíle", + "addTarget": "Add Target", + "targetErrorInvalidIp": "Neplatná IP adresa", + "targetErrorInvalidIpDescription": "Zadejte prosím platnou IP adresu nebo název hostitele", + "targetErrorInvalidPort": "Neplatný port", + "targetErrorInvalidPortDescription": "Zadejte platné číslo portu", + "targetErrorNoSite": "Není vybrán žádný web", + "targetErrorNoSiteDescription": "Vyberte prosím web pro cíl", + "targetCreated": "Cíl byl vytvořen", + "targetCreatedDescription": "Cíl byl úspěšně vytvořen", + "targetErrorCreate": "Nepodařilo se vytvořit cíl", + "targetErrorCreateDescription": "Došlo k chybě při vytváření cíle", + "save": "Uložit", "proxyAdditional": "Další nastavení proxy", "proxyAdditionalDescription": "Konfigurovat nastavení proxy zpracování vašeho zdroje", "proxyCustomHeader": "Vlastní hlavička hostitele", @@ -715,6 +730,7 @@ "pangolinServerAdmin": "Správce serveru - Pangolin", "licenseTierProfessional": "Profesionální licence", "licenseTierEnterprise": "Podniková licence", + "licenseTierPersonal": "Personal License", "licensed": "Licencováno", "yes": "Ano", "no": "Ne", @@ -749,7 +765,7 @@ "idpDisplayName": "Zobrazované jméno tohoto poskytovatele identity", "idpAutoProvisionUsers": "Automatická úprava uživatelů", "idpAutoProvisionUsersDescription": "Pokud je povoleno, uživatelé budou automaticky vytvářeni v systému při prvním přihlášení, s možností namapovat uživatele na role a organizace.", - "licenseBadge": "Profesionální", + "licenseBadge": "EE", "idpType": "Typ poskytovatele", "idpTypeDescription": "Vyberte typ poskytovatele identity, který chcete nakonfigurovat", "idpOidcConfigure": "Nastavení OAuth2/OIDC", @@ -1138,7 +1154,7 @@ "sidebarAllUsers": "Všichni uživatelé", "sidebarIdentityProviders": "Poskytovatelé identity", "sidebarLicense": "Licence", - "sidebarClients": "Klienti (Beta)", + "sidebarClients": "Clients", "sidebarDomains": "Domény", "enableDockerSocket": "Povolit Docker plán", "enableDockerSocketDescription": "Povolte seškrábání štítků na Docker Socket pro popisky plánů. Nová cesta musí být k dispozici.", @@ -1331,7 +1347,6 @@ "twoFactorRequired": "Pro registraci bezpečnostního klíče je nutné dvoufaktorové ověření.", "twoFactor": "Dvoufaktorové ověření", "adminEnabled2FaOnYourAccount": "Váš správce povolil dvoufaktorové ověřování pro {email}. Chcete-li pokračovat, dokončete proces nastavení.", - "continueToApplication": "Pokračovat v aplikaci", "securityKeyAdd": "Přidat bezpečnostní klíč", "securityKeyRegisterTitle": "Registrovat nový bezpečnostní klíč", "securityKeyRegisterDescription": "Připojte svůj bezpečnostní klíč a zadejte jméno pro jeho identifikaci", @@ -1409,6 +1424,7 @@ "externalProxyEnabled": "Externí proxy povolen", "addNewTarget": "Add New Target", "targetsList": "Seznam cílů", + "advancedMode": "Pokročilý režim", "targetErrorDuplicateTargetFound": "Byl nalezen duplicitní cíl", "healthCheckHealthy": "Zdravé", "healthCheckUnhealthy": "Nezdravé", @@ -1541,8 +1557,8 @@ "autoLoginError": "Automatická chyba přihlášení", "autoLoginErrorNoRedirectUrl": "Od poskytovatele identity nebyla obdržena žádná adresa URL.", "autoLoginErrorGeneratingUrl": "Nepodařilo se vygenerovat ověřovací URL.", - "remoteExitNodeManageRemoteExitNodes": "Spravovat vlastní hostování", - "remoteExitNodeDescription": "Spravujte uzly pro rozšíření připojení k síti", + "remoteExitNodeManageRemoteExitNodes": "Vzdálené uzly", + "remoteExitNodeDescription": "Self-host one or more remote nodes to extend your network connectivity and reduce reliance on the cloud", "remoteExitNodes": "Uzly", "searchRemoteExitNodes": "Hledat uzly...", "remoteExitNodeAdd": "Přidat uzel", @@ -1552,7 +1568,7 @@ "remoteExitNodeMessageConfirm": "Pro potvrzení zadejte název uzlu níže.", "remoteExitNodeConfirmDelete": "Potvrdit odstranění uzlu", "remoteExitNodeDelete": "Odstranit uzel", - "sidebarRemoteExitNodes": "Uzly", + "sidebarRemoteExitNodes": "Vzdálené uzly", "remoteExitNodeCreate": { "title": "Vytvořit uzel", "description": "Vytvořit nový uzel pro rozšíření síťového připojení", @@ -1721,5 +1737,161 @@ "authPageUpdated": "Autentizační stránka byla úspěšně aktualizována", "healthCheckNotAvailable": "Místní", "rewritePath": "Přepsat cestu", - "rewritePathDescription": "Volitelně přepište cestu před odesláním na cíl." + "rewritePathDescription": "Volitelně přepište cestu před odesláním na cíl.", + "continueToApplication": "Pokračovat v aplikaci", + "checkingInvite": "Kontrola pozvánky", + "setResourceHeaderAuth": "setResourceHeaderAuth", + "resourceHeaderAuthRemove": "Odstranit Autentizaci Záhlaví", + "resourceHeaderAuthRemoveDescription": "Úspěšně odstraněna autentizace záhlaví.", + "resourceErrorHeaderAuthRemove": "Nepodařilo se odstranit Autentizaci Záhlaví", + "resourceErrorHeaderAuthRemoveDescription": "Nepodařilo se odstranit autentizaci záhlaví ze zdroje.", + "resourceHeaderAuthProtectionEnabled": "Header Authentication Enabled", + "resourceHeaderAuthProtectionDisabled": "Header Authentication Disabled", + "headerAuthRemove": "Remove Header Auth", + "headerAuthAdd": "Add Header Auth", + "resourceErrorHeaderAuthSetup": "Nepodařilo se nastavit Autentizaci Záhlaví", + "resourceErrorHeaderAuthSetupDescription": "Nepodařilo se nastavit autentizaci záhlaví ze zdroje.", + "resourceHeaderAuthSetup": "Úspěšně nastavena Autentizace Záhlaví", + "resourceHeaderAuthSetupDescription": "Autentizace záhlaví byla úspěšně nastavena.", + "resourceHeaderAuthSetupTitle": "Nastavit Autentizaci Záhlaví", + "resourceHeaderAuthSetupTitleDescription": "Set the basic auth credentials (username and password) to protect this resource with HTTP Header Authentication. Access it using the format https://username:password@resource.example.com", + "resourceHeaderAuthSubmit": "Nastavit Autentizaci Záhlaví", + "actionSetResourceHeaderAuth": "Nastavit Autentizaci Záhlaví", + "enterpriseEdition": "Enterprise Edition", + "unlicensed": "Unlicensed", + "beta": "Beta", + "manageClients": "Manage Clients", + "manageClientsDescription": "Clients are devices that can connect to your sites", + "licenseTableValidUntil": "Valid Until", + "saasLicenseKeysSettingsTitle": "Enterprise Licenses", + "saasLicenseKeysSettingsDescription": "Generate and manage Enterprise license keys for self-hosted Pangolin instances", + "sidebarEnterpriseLicenses": "Licenses", + "generateLicenseKey": "Generate License Key", + "generateLicenseKeyForm": { + "validation": { + "emailRequired": "Please enter a valid email address", + "useCaseTypeRequired": "Please select a use case type", + "firstNameRequired": "First name is required", + "lastNameRequired": "Last name is required", + "primaryUseRequired": "Please describe your primary use", + "jobTitleRequiredBusiness": "Job title is required for business use", + "industryRequiredBusiness": "Industry is required for business use", + "stateProvinceRegionRequired": "State/Province/Region is required", + "postalZipCodeRequired": "Postal/ZIP Code is required", + "companyNameRequiredBusiness": "Company name is required for business use", + "countryOfResidenceRequiredBusiness": "Country of residence is required for business use", + "countryRequiredPersonal": "Country is required for personal use", + "agreeToTermsRequired": "You must agree to the terms", + "complianceConfirmationRequired": "You must confirm compliance with the Fossorial Commercial License" + }, + "useCaseOptions": { + "personal": { + "title": "Personal Use", + "description": "For individual, non-commercial use such as learning, personal projects, or experimentation." + }, + "business": { + "title": "Business Use", + "description": "For use within organizations, companies, or commercial or revenue-generating activities." + } + }, + "steps": { + "emailLicenseType": { + "title": "Email & License Type", + "description": "Enter your email and choose your license type" + }, + "personalInformation": { + "title": "Personal Information", + "description": "Tell us about yourself" + }, + "contactInformation": { + "title": "Contact Information", + "description": "Your contact details" + }, + "termsGenerate": { + "title": "Terms & Generate", + "description": "Review and accept terms to generate your license" + } + }, + "alerts": { + "commercialUseDisclosure": { + "title": "Usage Disclosure", + "description": "Select the license tier that accurately reflects your intended use. The Personal License permits free use of the Software for individual, non-commercial or small-scale commercial activities with annual gross revenue under $100,000 USD. Any use beyond these limits — including use within a business, organization, or other revenue-generating environment — requires a valid Enterprise License and payment of the applicable licensing fee. All users, whether Personal or Enterprise, must comply with the Fossorial Commercial License Terms." + }, + "trialPeriodInformation": { + "title": "Trial Period Information", + "description": "This License Key enables Enterprise features for a 7-day evaluation period. Continued access to Paid Features beyond the evaluation period requires activation under a valid Personal or Enterprise License. For Enterprise licensing, contact sales@fossorial.io." + } + }, + "form": { + "useCaseQuestion": "Are you using Pangolin for personal or business use?", + "firstName": "First Name", + "lastName": "Last Name", + "jobTitle": "Job Title", + "primaryUseQuestion": "What do you primarily plan to use Pangolin for?", + "industryQuestion": "What is your industry?", + "prospectiveUsersQuestion": "How many prospective users do you expect to have?", + "prospectiveSitesQuestion": "How many prospective sites (tunnels) do you expect to have?", + "companyName": "Company name", + "countryOfResidence": "Country of residence", + "stateProvinceRegion": "State / Province / Region", + "postalZipCode": "Postal / ZIP Code", + "companyWebsite": "Company website", + "companyPhoneNumber": "Company phone number", + "country": "Country", + "phoneNumberOptional": "Phone number (optional)", + "complianceConfirmation": "I confirm that I am in compliance with the Fossorial Commercial License and that reporting inaccurate information or misidentifying use of the product is a violation of the license." + }, + "buttons": { + "close": "Close", + "previous": "Previous", + "next": "Next", + "generateLicenseKey": "Generate License Key" + }, + "toasts": { + "success": { + "title": "License key generated successfully", + "description": "Your license key has been generated and is ready to use." + }, + "error": { + "title": "Failed to generate license key", + "description": "An error occurred while generating the license key." + } + } + }, + "priority": "Priorita", + "priorityDescription": "Vyšší priorita je vyhodnocena jako první. Priorita = 100 znamená automatické řazení (rozhodnutí systému). Pro vynucení manuální priority použijte jiné číslo.", + "instanceName": "Instance Name", + "pathMatchModalTitle": "Configure Path Matching", + "pathMatchModalDescription": "Set up how incoming requests should be matched based on their path.", + "pathMatchType": "Match Type", + "pathMatchPrefix": "Prefix", + "pathMatchExact": "Exact", + "pathMatchRegex": "Regex", + "pathMatchValue": "Path Value", + "clear": "Clear", + "saveChanges": "Save Changes", + "pathMatchRegexPlaceholder": "^/api/.*", + "pathMatchDefaultPlaceholder": "/path", + "pathMatchPrefixHelp": "Example: /api matches /api, /api/users, etc.", + "pathMatchExactHelp": "Example: /api matches only /api", + "pathMatchRegexHelp": "Example: ^/api/.* matches /api/anything", + "pathRewriteModalTitle": "Configure Path Rewriting", + "pathRewriteModalDescription": "Transform the matched path before forwarding to the target.", + "pathRewriteType": "Rewrite Type", + "pathRewritePrefixOption": "Prefix - Replace prefix", + "pathRewriteExactOption": "Exact - Replace entire path", + "pathRewriteRegexOption": "Regex - Pattern replacement", + "pathRewriteStripPrefixOption": "Strip Prefix - Remove prefix", + "pathRewriteValue": "Rewrite Value", + "pathRewriteRegexPlaceholder": "/new/$1", + "pathRewriteDefaultPlaceholder": "/new-path", + "pathRewritePrefixHelp": "Replace the matched prefix with this value", + "pathRewriteExactHelp": "Replace the entire path with this value when the path matches exactly", + "pathRewriteRegexHelp": "Use capture groups like $1, $2 for replacement", + "pathRewriteStripPrefixHelp": "Leave empty to strip prefix or provide new prefix", + "pathRewritePrefix": "Prefix", + "pathRewriteExact": "Exact", + "pathRewriteRegex": "Regex", + "pathRewriteStrip": "Strip", + "pathRewriteStripLabel": "strip" } diff --git a/messages/de-DE.json b/messages/de-DE.json index eaca92bf..5195607f 100644 --- a/messages/de-DE.json +++ b/messages/de-DE.json @@ -96,7 +96,7 @@ "siteWgDescription": "Verwende jeden WireGuard-Client, um einen Tunnel einzurichten. Manuelles NAT-Setup erforderlich.", "siteWgDescriptionSaas": "Verwenden Sie jeden WireGuard-Client, um einen Tunnel zu erstellen. Manuelles NAT-Setup erforderlich. FUNKTIONIERT NUR BEI SELBSTGEHOSTETEN KNOTEN", "siteLocalDescription": "Nur lokale Ressourcen. Kein Tunneling.", - "siteLocalDescriptionSaas": "Nur lokale Ressourcen. Keine Tunneldurchführung. FUNKTIONIERT NUR BEI SELBSTGEHOSTETEN KNOTEN", + "siteLocalDescriptionSaas": "Local resources only. No tunneling. Only available on remote nodes.", "siteSeeAll": "Alle Standorte anzeigen", "siteTunnelDescription": "Lege fest, wie du dich mit deinem Standort verbinden möchtest", "siteNewtCredentials": "Neue Newt Zugangsdaten", @@ -468,7 +468,10 @@ "createdAt": "Erstellt am", "proxyErrorInvalidHeader": "Ungültiger benutzerdefinierter Host-Header-Wert. Verwenden Sie das Domänennamensformat oder speichern Sie leer, um den benutzerdefinierten Host-Header zu deaktivieren.", "proxyErrorTls": "Ungültiger TLS-Servername. Verwenden Sie das Domänennamensformat oder speichern Sie leer, um den TLS-Servernamen zu entfernen.", - "proxyEnableSSL": "SSL aktivieren (https)", + "proxyEnableSSL": "SSL aktivieren", + "proxyEnableSSLDescription": "Aktiviere SSL/TLS-Verschlüsselung für sichere HTTPS-Verbindungen zu deinen Zielen.", + "target": "Target", + "configureTarget": "Ziele konfigurieren", "targetErrorFetch": "Fehler beim Abrufen der Ziele", "targetErrorFetchDescription": "Beim Abrufen der Ziele ist ein Fehler aufgetreten", "siteErrorFetch": "Fehler beim Abrufen der Ressource", @@ -495,7 +498,7 @@ "targetTlsSettings": "Sicherheitskonfiguration", "targetTlsSettingsDescription": "Konfiguriere SSL/TLS Einstellungen für deine Ressource", "targetTlsSettingsAdvanced": "Erweiterte TLS-Einstellungen", - "targetTlsSni": "TLS-Servername (SNI)", + "targetTlsSni": "TLS Servername", "targetTlsSniDescription": "Der zu verwendende TLS-Servername für SNI. Leer lassen, um den Standard zu verwenden.", "targetTlsSubmit": "Einstellungen speichern", "targets": "Ziel-Konfiguration", @@ -504,9 +507,21 @@ "targetStickySessionsDescription": "Verbindungen für die gesamte Sitzung auf demselben Backend-Ziel halten.", "methodSelect": "Methode auswählen", "targetSubmit": "Ziel hinzufügen", - "targetNoOne": "Keine Ziele. Fügen Sie ein Ziel über das Formular hinzu.", + "targetNoOne": "Diese Ressource hat keine Ziele. Fügen Sie ein Ziel hinzu, um zu konfigurieren, wo Anfragen an Ihr Backend gesendet werden sollen.", "targetNoOneDescription": "Das Hinzufügen von mehr als einem Ziel aktiviert den Lastausgleich.", "targetsSubmit": "Ziele speichern", + "addTarget": "Ziel hinzufügen", + "targetErrorInvalidIp": "Ungültige IP-Adresse", + "targetErrorInvalidIpDescription": "Bitte geben Sie eine gültige IP-Adresse oder einen Hostnamen ein", + "targetErrorInvalidPort": "Ungültiger Port", + "targetErrorInvalidPortDescription": "Bitte geben Sie eine gültige Portnummer ein", + "targetErrorNoSite": "Keine Site ausgewählt", + "targetErrorNoSiteDescription": "Bitte wähle eine Seite für das Ziel aus", + "targetCreated": "Ziel erstellt", + "targetCreatedDescription": "Ziel wurde erfolgreich erstellt", + "targetErrorCreate": "Fehler beim Erstellen des Ziels", + "targetErrorCreateDescription": "Beim Erstellen des Ziels ist ein Fehler aufgetreten", + "save": "Speichern", "proxyAdditional": "Zusätzliche Proxy-Einstellungen", "proxyAdditionalDescription": "Konfigurieren Sie, wie Ihre Ressource mit Proxy-Einstellungen umgeht", "proxyCustomHeader": "Benutzerdefinierter Host-Header", @@ -715,6 +730,7 @@ "pangolinServerAdmin": "Server-Admin - Pangolin", "licenseTierProfessional": "Professional Lizenz", "licenseTierEnterprise": "Enterprise Lizenz", + "licenseTierPersonal": "Personal License", "licensed": "Lizenziert", "yes": "Ja", "no": "Nein", @@ -749,7 +765,7 @@ "idpDisplayName": "Ein Anzeigename für diesen Identitätsanbieter", "idpAutoProvisionUsers": "Automatische Benutzerbereitstellung", "idpAutoProvisionUsersDescription": "Wenn aktiviert, werden Benutzer beim ersten Login automatisch im System erstellt, mit der Möglichkeit, Benutzer Rollen und Organisationen zuzuordnen.", - "licenseBadge": "Profi", + "licenseBadge": "EE", "idpType": "Anbietertyp", "idpTypeDescription": "Wählen Sie den Typ des Identitätsanbieters, den Sie konfigurieren möchten", "idpOidcConfigure": "OAuth2/OIDC Konfiguration", @@ -1138,7 +1154,7 @@ "sidebarAllUsers": "Alle Benutzer", "sidebarIdentityProviders": "Identitätsanbieter", "sidebarLicense": "Lizenz", - "sidebarClients": "Kunden (Beta)", + "sidebarClients": "Clients", "sidebarDomains": "Domänen", "enableDockerSocket": "Docker Blaupause aktivieren", "enableDockerSocketDescription": "Aktiviere Docker-Socket-Label-Scraping für Blaupausenbeschriftungen. Der Socket-Pfad muss neu angegeben werden.", @@ -1331,7 +1347,6 @@ "twoFactorRequired": "Zur Registrierung eines Sicherheitsschlüssels ist eine Zwei-Faktor-Authentifizierung erforderlich.", "twoFactor": "Zwei-Faktor-Authentifizierung", "adminEnabled2FaOnYourAccount": "Ihr Administrator hat die Zwei-Faktor-Authentifizierung für {email} aktiviert. Bitte schließen Sie den Einrichtungsprozess ab, um fortzufahren.", - "continueToApplication": "Weiter zur Anwendung", "securityKeyAdd": "Sicherheitsschlüssel hinzufügen", "securityKeyRegisterTitle": "Neuen Sicherheitsschlüssel registrieren", "securityKeyRegisterDescription": "Verbinden Sie Ihren Sicherheitsschlüssel und geben Sie einen Namen ein, um ihn zu identifizieren", @@ -1409,6 +1424,7 @@ "externalProxyEnabled": "Externer Proxy aktiviert", "addNewTarget": "Neues Ziel hinzufügen", "targetsList": "Ziel-Liste", + "advancedMode": "Erweiterter Modus", "targetErrorDuplicateTargetFound": "Doppeltes Ziel gefunden", "healthCheckHealthy": "Gesund", "healthCheckUnhealthy": "Ungesund", @@ -1541,8 +1557,8 @@ "autoLoginError": "Fehler bei der automatischen Anmeldung", "autoLoginErrorNoRedirectUrl": "Keine Weiterleitungs-URL vom Identitätsanbieter erhalten.", "autoLoginErrorGeneratingUrl": "Fehler beim Generieren der Authentifizierungs-URL.", - "remoteExitNodeManageRemoteExitNodes": "Selbst-Hosted verwalten", - "remoteExitNodeDescription": "Knoten verwalten, um die Netzwerkverbindung zu erweitern", + "remoteExitNodeManageRemoteExitNodes": "Entfernte Knoten", + "remoteExitNodeDescription": "Self-host one or more remote nodes to extend your network connectivity and reduce reliance on the cloud", "remoteExitNodes": "Knoten", "searchRemoteExitNodes": "Knoten suchen...", "remoteExitNodeAdd": "Knoten hinzufügen", @@ -1552,7 +1568,7 @@ "remoteExitNodeMessageConfirm": "Um zu bestätigen, geben Sie bitte den Namen des Knotens unten ein.", "remoteExitNodeConfirmDelete": "Löschknoten bestätigen", "remoteExitNodeDelete": "Knoten löschen", - "sidebarRemoteExitNodes": "Knoten", + "sidebarRemoteExitNodes": "Entfernte Knoten", "remoteExitNodeCreate": { "title": "Knoten erstellen", "description": "Erstellen Sie einen neuen Knoten, um Ihre Netzwerkverbindung zu erweitern", @@ -1721,5 +1737,161 @@ "authPageUpdated": "Auth-Seite erfolgreich aktualisiert", "healthCheckNotAvailable": "Lokal", "rewritePath": "Pfad neu schreiben", - "rewritePathDescription": "Optional den Pfad umschreiben, bevor er an das Ziel weitergeleitet wird." + "rewritePathDescription": "Optional den Pfad umschreiben, bevor er an das Ziel weitergeleitet wird.", + "continueToApplication": "Weiter zur Anwendung", + "checkingInvite": "Einladung wird überprüft", + "setResourceHeaderAuth": "setResourceHeaderAuth", + "resourceHeaderAuthRemove": "Header-Auth entfernen", + "resourceHeaderAuthRemoveDescription": "Header-Authentifizierung erfolgreich entfernt.", + "resourceErrorHeaderAuthRemove": "Fehler beim Entfernen der Header-Authentifizierung", + "resourceErrorHeaderAuthRemoveDescription": "Die Headerauthentifizierung für die Ressource konnte nicht entfernt werden.", + "resourceHeaderAuthProtectionEnabled": "Header Authentication Enabled", + "resourceHeaderAuthProtectionDisabled": "Header Authentication Disabled", + "headerAuthRemove": "Remove Header Auth", + "headerAuthAdd": "Add Header Auth", + "resourceErrorHeaderAuthSetup": "Fehler beim Setzen der Header-Authentifizierung", + "resourceErrorHeaderAuthSetupDescription": "Konnte Header-Authentifizierung für die Ressource nicht festlegen.", + "resourceHeaderAuthSetup": "Header-Authentifizierung erfolgreich festgelegt", + "resourceHeaderAuthSetupDescription": "Header-Authentifizierung wurde erfolgreich festgelegt.", + "resourceHeaderAuthSetupTitle": "Header-Authentifizierung festlegen", + "resourceHeaderAuthSetupTitleDescription": "Set the basic auth credentials (username and password) to protect this resource with HTTP Header Authentication. Access it using the format https://username:password@resource.example.com", + "resourceHeaderAuthSubmit": "Header-Authentifizierung festlegen", + "actionSetResourceHeaderAuth": "Header-Authentifizierung festlegen", + "enterpriseEdition": "Enterprise Edition", + "unlicensed": "Unlicensed", + "beta": "Beta", + "manageClients": "Manage Clients", + "manageClientsDescription": "Clients are devices that can connect to your sites", + "licenseTableValidUntil": "Valid Until", + "saasLicenseKeysSettingsTitle": "Enterprise Licenses", + "saasLicenseKeysSettingsDescription": "Generate and manage Enterprise license keys for self-hosted Pangolin instances", + "sidebarEnterpriseLicenses": "Licenses", + "generateLicenseKey": "Generate License Key", + "generateLicenseKeyForm": { + "validation": { + "emailRequired": "Please enter a valid email address", + "useCaseTypeRequired": "Please select a use case type", + "firstNameRequired": "First name is required", + "lastNameRequired": "Last name is required", + "primaryUseRequired": "Please describe your primary use", + "jobTitleRequiredBusiness": "Job title is required for business use", + "industryRequiredBusiness": "Industry is required for business use", + "stateProvinceRegionRequired": "State/Province/Region is required", + "postalZipCodeRequired": "Postal/ZIP Code is required", + "companyNameRequiredBusiness": "Company name is required for business use", + "countryOfResidenceRequiredBusiness": "Country of residence is required for business use", + "countryRequiredPersonal": "Country is required for personal use", + "agreeToTermsRequired": "You must agree to the terms", + "complianceConfirmationRequired": "You must confirm compliance with the Fossorial Commercial License" + }, + "useCaseOptions": { + "personal": { + "title": "Personal Use", + "description": "For individual, non-commercial use such as learning, personal projects, or experimentation." + }, + "business": { + "title": "Business Use", + "description": "For use within organizations, companies, or commercial or revenue-generating activities." + } + }, + "steps": { + "emailLicenseType": { + "title": "Email & License Type", + "description": "Enter your email and choose your license type" + }, + "personalInformation": { + "title": "Personal Information", + "description": "Tell us about yourself" + }, + "contactInformation": { + "title": "Contact Information", + "description": "Your contact details" + }, + "termsGenerate": { + "title": "Terms & Generate", + "description": "Review and accept terms to generate your license" + } + }, + "alerts": { + "commercialUseDisclosure": { + "title": "Usage Disclosure", + "description": "Select the license tier that accurately reflects your intended use. The Personal License permits free use of the Software for individual, non-commercial or small-scale commercial activities with annual gross revenue under $100,000 USD. Any use beyond these limits — including use within a business, organization, or other revenue-generating environment — requires a valid Enterprise License and payment of the applicable licensing fee. All users, whether Personal or Enterprise, must comply with the Fossorial Commercial License Terms." + }, + "trialPeriodInformation": { + "title": "Trial Period Information", + "description": "This License Key enables Enterprise features for a 7-day evaluation period. Continued access to Paid Features beyond the evaluation period requires activation under a valid Personal or Enterprise License. For Enterprise licensing, contact sales@fossorial.io." + } + }, + "form": { + "useCaseQuestion": "Are you using Pangolin for personal or business use?", + "firstName": "First Name", + "lastName": "Last Name", + "jobTitle": "Job Title", + "primaryUseQuestion": "What do you primarily plan to use Pangolin for?", + "industryQuestion": "What is your industry?", + "prospectiveUsersQuestion": "How many prospective users do you expect to have?", + "prospectiveSitesQuestion": "How many prospective sites (tunnels) do you expect to have?", + "companyName": "Company name", + "countryOfResidence": "Country of residence", + "stateProvinceRegion": "State / Province / Region", + "postalZipCode": "Postal / ZIP Code", + "companyWebsite": "Company website", + "companyPhoneNumber": "Company phone number", + "country": "Country", + "phoneNumberOptional": "Phone number (optional)", + "complianceConfirmation": "I confirm that I am in compliance with the Fossorial Commercial License and that reporting inaccurate information or misidentifying use of the product is a violation of the license." + }, + "buttons": { + "close": "Close", + "previous": "Previous", + "next": "Next", + "generateLicenseKey": "Generate License Key" + }, + "toasts": { + "success": { + "title": "License key generated successfully", + "description": "Your license key has been generated and is ready to use." + }, + "error": { + "title": "Failed to generate license key", + "description": "An error occurred while generating the license key." + } + } + }, + "priority": "Priorität", + "priorityDescription": "Die Routen mit höherer Priorität werden zuerst ausgewertet. Priorität = 100 bedeutet automatische Bestellung (Systementscheidung). Verwenden Sie eine andere Nummer, um manuelle Priorität zu erzwingen.", + "instanceName": "Instance Name", + "pathMatchModalTitle": "Configure Path Matching", + "pathMatchModalDescription": "Set up how incoming requests should be matched based on their path.", + "pathMatchType": "Match Type", + "pathMatchPrefix": "Prefix", + "pathMatchExact": "Exact", + "pathMatchRegex": "Regex", + "pathMatchValue": "Path Value", + "clear": "Clear", + "saveChanges": "Save Changes", + "pathMatchRegexPlaceholder": "^/api/.*", + "pathMatchDefaultPlaceholder": "/path", + "pathMatchPrefixHelp": "Example: /api matches /api, /api/users, etc.", + "pathMatchExactHelp": "Example: /api matches only /api", + "pathMatchRegexHelp": "Example: ^/api/.* matches /api/anything", + "pathRewriteModalTitle": "Configure Path Rewriting", + "pathRewriteModalDescription": "Transform the matched path before forwarding to the target.", + "pathRewriteType": "Rewrite Type", + "pathRewritePrefixOption": "Prefix - Replace prefix", + "pathRewriteExactOption": "Exact - Replace entire path", + "pathRewriteRegexOption": "Regex - Pattern replacement", + "pathRewriteStripPrefixOption": "Strip Prefix - Remove prefix", + "pathRewriteValue": "Rewrite Value", + "pathRewriteRegexPlaceholder": "/new/$1", + "pathRewriteDefaultPlaceholder": "/new-path", + "pathRewritePrefixHelp": "Replace the matched prefix with this value", + "pathRewriteExactHelp": "Replace the entire path with this value when the path matches exactly", + "pathRewriteRegexHelp": "Use capture groups like $1, $2 for replacement", + "pathRewriteStripPrefixHelp": "Leave empty to strip prefix or provide new prefix", + "pathRewritePrefix": "Prefix", + "pathRewriteExact": "Exact", + "pathRewriteRegex": "Regex", + "pathRewriteStrip": "Strip", + "pathRewriteStripLabel": "strip" } diff --git a/messages/es-ES.json b/messages/es-ES.json index 2e7cf00a..17f9ad44 100644 --- a/messages/es-ES.json +++ b/messages/es-ES.json @@ -96,7 +96,7 @@ "siteWgDescription": "Utilice cualquier cliente Wirex Guard para establecer un túnel. Se requiere una configuración manual de NAT.", "siteWgDescriptionSaas": "Utilice cualquier cliente de WireGuard para establecer un túnel. Se requiere configuración manual de NAT. SOLO FUNCIONA EN NODOS AUTOGESTIONADOS", "siteLocalDescription": "Solo recursos locales. Sin túneles.", - "siteLocalDescriptionSaas": "Solo recursos locales. Sin túneles. SOLO FUNCIONA EN NODOS AUTOGESTIONADOS", + "siteLocalDescriptionSaas": "Local resources only. No tunneling. Only available on remote nodes.", "siteSeeAll": "Ver todos los sitios", "siteTunnelDescription": "Determina cómo quieres conectarte a tu sitio", "siteNewtCredentials": "Credenciales nuevas", @@ -468,7 +468,10 @@ "createdAt": "Creado el", "proxyErrorInvalidHeader": "Valor de cabecera de host personalizado no válido. Utilice el formato de nombre de dominio, o guarde en blanco para desestablecer cabecera de host personalizada.", "proxyErrorTls": "Nombre de servidor TLS inválido. Utilice el formato de nombre de dominio o guarde en blanco para eliminar el nombre de servidor TLS.", - "proxyEnableSSL": "Habilitar SSL (https)", + "proxyEnableSSL": "Activar SSL", + "proxyEnableSSLDescription": "Activa el cifrado SSL/TLS para conexiones seguras HTTPS a tus objetivos.", + "target": "Target", + "configureTarget": "Configurar objetivos", "targetErrorFetch": "Error al recuperar los objetivos", "targetErrorFetchDescription": "Se ha producido un error al recuperar los objetivos", "siteErrorFetch": "No se pudo obtener el recurso", @@ -495,7 +498,7 @@ "targetTlsSettings": "Configuración de conexión segura", "targetTlsSettingsDescription": "Configurar ajustes SSL/TLS para su recurso", "targetTlsSettingsAdvanced": "Ajustes avanzados de TLS", - "targetTlsSni": "Nombre del servidor TLS (SNI)", + "targetTlsSni": "Nombre del servidor TLS", "targetTlsSniDescription": "El nombre del servidor TLS a usar para SNI. Deje en blanco para usar el valor predeterminado.", "targetTlsSubmit": "Guardar ajustes", "targets": "Configuración de objetivos", @@ -504,9 +507,21 @@ "targetStickySessionsDescription": "Mantener conexiones en el mismo objetivo de backend para toda su sesión.", "methodSelect": "Seleccionar método", "targetSubmit": "Añadir destino", - "targetNoOne": "No hay objetivos. Agregue un objetivo usando el formulario.", + "targetNoOne": "Este recurso no tiene ningún objetivo. Agrega un objetivo para configurar dónde enviar peticiones al backend.", "targetNoOneDescription": "Si se añade más de un objetivo anterior se activará el balance de carga.", "targetsSubmit": "Guardar objetivos", + "addTarget": "Añadir destino", + "targetErrorInvalidIp": "Dirección IP inválida", + "targetErrorInvalidIpDescription": "Por favor, introduzca una dirección IP válida o nombre de host", + "targetErrorInvalidPort": "Puerto inválido", + "targetErrorInvalidPortDescription": "Por favor, introduzca un número de puerto válido", + "targetErrorNoSite": "Ningún sitio seleccionado", + "targetErrorNoSiteDescription": "Por favor, seleccione un sitio para el objetivo", + "targetCreated": "Objetivo creado", + "targetCreatedDescription": "El objetivo se ha creado correctamente", + "targetErrorCreate": "Error al crear el objetivo", + "targetErrorCreateDescription": "Se ha producido un error al crear el objetivo", + "save": "Guardar", "proxyAdditional": "Ajustes adicionales del proxy", "proxyAdditionalDescription": "Configura cómo tu recurso maneja la configuración del proxy", "proxyCustomHeader": "Cabecera de host personalizada", @@ -715,6 +730,7 @@ "pangolinServerAdmin": "Admin Servidor - Pangolin", "licenseTierProfessional": "Licencia profesional", "licenseTierEnterprise": "Licencia Enterprise", + "licenseTierPersonal": "Personal License", "licensed": "Licenciado", "yes": "Sí", "no": "Nu", @@ -749,7 +765,7 @@ "idpDisplayName": "Un nombre mostrado para este proveedor de identidad", "idpAutoProvisionUsers": "Auto-Provisión de Usuarios", "idpAutoProvisionUsersDescription": "Cuando está habilitado, los usuarios serán creados automáticamente en el sistema al iniciar sesión con la capacidad de asignar a los usuarios a roles y organizaciones.", - "licenseBadge": "Profesional", + "licenseBadge": "EE", "idpType": "Tipo de proveedor", "idpTypeDescription": "Seleccione el tipo de proveedor de identidad que desea configurar", "idpOidcConfigure": "Configuración OAuth2/OIDC", @@ -1138,7 +1154,7 @@ "sidebarAllUsers": "Todos los usuarios", "sidebarIdentityProviders": "Proveedores de identidad", "sidebarLicense": "Licencia", - "sidebarClients": "Clientes (Beta)", + "sidebarClients": "Clients", "sidebarDomains": "Dominios", "enableDockerSocket": "Habilitar Plano Docker", "enableDockerSocketDescription": "Activar el raspado de etiquetas de Socket Docker para etiquetas de planos. La ruta del Socket debe proporcionarse a Newt.", @@ -1331,7 +1347,6 @@ "twoFactorRequired": "Se requiere autenticación de dos factores para registrar una llave de seguridad.", "twoFactor": "Autenticación de dos factores", "adminEnabled2FaOnYourAccount": "Su administrador ha habilitado la autenticación de dos factores para {email}. Por favor, complete el proceso de configuración para continuar.", - "continueToApplication": "Continuar a la aplicación", "securityKeyAdd": "Agregar llave de seguridad", "securityKeyRegisterTitle": "Registrar nueva llave de seguridad", "securityKeyRegisterDescription": "Conecta tu llave de seguridad y escribe un nombre para identificarla", @@ -1409,6 +1424,7 @@ "externalProxyEnabled": "Proxy externo habilitado", "addNewTarget": "Agregar nuevo destino", "targetsList": "Lista de destinos", + "advancedMode": "Modo avanzado", "targetErrorDuplicateTargetFound": "Se encontró un destino duplicado", "healthCheckHealthy": "Saludable", "healthCheckUnhealthy": "No saludable", @@ -1541,8 +1557,8 @@ "autoLoginError": "Error de inicio de sesión automático", "autoLoginErrorNoRedirectUrl": "No se recibió URL de redirección del proveedor de identidad.", "autoLoginErrorGeneratingUrl": "Error al generar URL de autenticación.", - "remoteExitNodeManageRemoteExitNodes": "Administrar Nodos Autogestionados", - "remoteExitNodeDescription": "Administrar nodos para extender la conectividad de red", + "remoteExitNodeManageRemoteExitNodes": "Nodos remotos", + "remoteExitNodeDescription": "Self-host one or more remote nodes to extend your network connectivity and reduce reliance on the cloud", "remoteExitNodes": "Nodos", "searchRemoteExitNodes": "Buscar nodos...", "remoteExitNodeAdd": "Añadir Nodo", @@ -1552,7 +1568,7 @@ "remoteExitNodeMessageConfirm": "Para confirmar, por favor escriba el nombre del nodo a continuación.", "remoteExitNodeConfirmDelete": "Confirmar eliminar nodo", "remoteExitNodeDelete": "Eliminar Nodo", - "sidebarRemoteExitNodes": "Nodos", + "sidebarRemoteExitNodes": "Nodos remotos", "remoteExitNodeCreate": { "title": "Crear Nodo", "description": "Crear un nuevo nodo para extender la conectividad de red", @@ -1721,5 +1737,161 @@ "authPageUpdated": "Página auth actualizada correctamente", "healthCheckNotAvailable": "Local", "rewritePath": "Reescribir Ruta", - "rewritePathDescription": "Opcionalmente reescribe la ruta antes de reenviar al destino." + "rewritePathDescription": "Opcionalmente reescribe la ruta antes de reenviar al destino.", + "continueToApplication": "Continuar a la aplicación", + "checkingInvite": "Comprobando invitación", + "setResourceHeaderAuth": "set-Resource HeaderAuth", + "resourceHeaderAuthRemove": "Eliminar Auth del Encabezado", + "resourceHeaderAuthRemoveDescription": "Autenticación de cabecera eliminada correctamente.", + "resourceErrorHeaderAuthRemove": "Error al eliminar autenticación de cabecera", + "resourceErrorHeaderAuthRemoveDescription": "No se pudo eliminar la autenticación de cabecera del recurso.", + "resourceHeaderAuthProtectionEnabled": "Header Authentication Enabled", + "resourceHeaderAuthProtectionDisabled": "Header Authentication Disabled", + "headerAuthRemove": "Remove Header Auth", + "headerAuthAdd": "Add Header Auth", + "resourceErrorHeaderAuthSetup": "Error al establecer autenticación de cabecera", + "resourceErrorHeaderAuthSetupDescription": "No se pudo establecer autenticación de cabecera para el recurso.", + "resourceHeaderAuthSetup": "Autenticación de cabecera establecida correctamente", + "resourceHeaderAuthSetupDescription": "La autenticación de cabecera se ha establecido correctamente.", + "resourceHeaderAuthSetupTitle": "Establecer autenticación de cabecera", + "resourceHeaderAuthSetupTitleDescription": "Set the basic auth credentials (username and password) to protect this resource with HTTP Header Authentication. Access it using the format https://username:password@resource.example.com", + "resourceHeaderAuthSubmit": "Establecer autenticación de cabecera", + "actionSetResourceHeaderAuth": "Establecer autenticación de cabecera", + "enterpriseEdition": "Enterprise Edition", + "unlicensed": "Unlicensed", + "beta": "Beta", + "manageClients": "Manage Clients", + "manageClientsDescription": "Clients are devices that can connect to your sites", + "licenseTableValidUntil": "Valid Until", + "saasLicenseKeysSettingsTitle": "Enterprise Licenses", + "saasLicenseKeysSettingsDescription": "Generate and manage Enterprise license keys for self-hosted Pangolin instances", + "sidebarEnterpriseLicenses": "Licenses", + "generateLicenseKey": "Generate License Key", + "generateLicenseKeyForm": { + "validation": { + "emailRequired": "Please enter a valid email address", + "useCaseTypeRequired": "Please select a use case type", + "firstNameRequired": "First name is required", + "lastNameRequired": "Last name is required", + "primaryUseRequired": "Please describe your primary use", + "jobTitleRequiredBusiness": "Job title is required for business use", + "industryRequiredBusiness": "Industry is required for business use", + "stateProvinceRegionRequired": "State/Province/Region is required", + "postalZipCodeRequired": "Postal/ZIP Code is required", + "companyNameRequiredBusiness": "Company name is required for business use", + "countryOfResidenceRequiredBusiness": "Country of residence is required for business use", + "countryRequiredPersonal": "Country is required for personal use", + "agreeToTermsRequired": "You must agree to the terms", + "complianceConfirmationRequired": "You must confirm compliance with the Fossorial Commercial License" + }, + "useCaseOptions": { + "personal": { + "title": "Personal Use", + "description": "For individual, non-commercial use such as learning, personal projects, or experimentation." + }, + "business": { + "title": "Business Use", + "description": "For use within organizations, companies, or commercial or revenue-generating activities." + } + }, + "steps": { + "emailLicenseType": { + "title": "Email & License Type", + "description": "Enter your email and choose your license type" + }, + "personalInformation": { + "title": "Personal Information", + "description": "Tell us about yourself" + }, + "contactInformation": { + "title": "Contact Information", + "description": "Your contact details" + }, + "termsGenerate": { + "title": "Terms & Generate", + "description": "Review and accept terms to generate your license" + } + }, + "alerts": { + "commercialUseDisclosure": { + "title": "Usage Disclosure", + "description": "Select the license tier that accurately reflects your intended use. The Personal License permits free use of the Software for individual, non-commercial or small-scale commercial activities with annual gross revenue under $100,000 USD. Any use beyond these limits — including use within a business, organization, or other revenue-generating environment — requires a valid Enterprise License and payment of the applicable licensing fee. All users, whether Personal or Enterprise, must comply with the Fossorial Commercial License Terms." + }, + "trialPeriodInformation": { + "title": "Trial Period Information", + "description": "This License Key enables Enterprise features for a 7-day evaluation period. Continued access to Paid Features beyond the evaluation period requires activation under a valid Personal or Enterprise License. For Enterprise licensing, contact sales@fossorial.io." + } + }, + "form": { + "useCaseQuestion": "Are you using Pangolin for personal or business use?", + "firstName": "First Name", + "lastName": "Last Name", + "jobTitle": "Job Title", + "primaryUseQuestion": "What do you primarily plan to use Pangolin for?", + "industryQuestion": "What is your industry?", + "prospectiveUsersQuestion": "How many prospective users do you expect to have?", + "prospectiveSitesQuestion": "How many prospective sites (tunnels) do you expect to have?", + "companyName": "Company name", + "countryOfResidence": "Country of residence", + "stateProvinceRegion": "State / Province / Region", + "postalZipCode": "Postal / ZIP Code", + "companyWebsite": "Company website", + "companyPhoneNumber": "Company phone number", + "country": "Country", + "phoneNumberOptional": "Phone number (optional)", + "complianceConfirmation": "I confirm that I am in compliance with the Fossorial Commercial License and that reporting inaccurate information or misidentifying use of the product is a violation of the license." + }, + "buttons": { + "close": "Close", + "previous": "Previous", + "next": "Next", + "generateLicenseKey": "Generate License Key" + }, + "toasts": { + "success": { + "title": "License key generated successfully", + "description": "Your license key has been generated and is ready to use." + }, + "error": { + "title": "Failed to generate license key", + "description": "An error occurred while generating the license key." + } + } + }, + "priority": "Prioridad", + "priorityDescription": "Las rutas de prioridad más alta son evaluadas primero. Prioridad = 100 significa orden automático (decisiones del sistema). Utilice otro número para hacer cumplir la prioridad manual.", + "instanceName": "Instance Name", + "pathMatchModalTitle": "Configure Path Matching", + "pathMatchModalDescription": "Set up how incoming requests should be matched based on their path.", + "pathMatchType": "Match Type", + "pathMatchPrefix": "Prefix", + "pathMatchExact": "Exact", + "pathMatchRegex": "Regex", + "pathMatchValue": "Path Value", + "clear": "Clear", + "saveChanges": "Save Changes", + "pathMatchRegexPlaceholder": "^/api/.*", + "pathMatchDefaultPlaceholder": "/path", + "pathMatchPrefixHelp": "Example: /api matches /api, /api/users, etc.", + "pathMatchExactHelp": "Example: /api matches only /api", + "pathMatchRegexHelp": "Example: ^/api/.* matches /api/anything", + "pathRewriteModalTitle": "Configure Path Rewriting", + "pathRewriteModalDescription": "Transform the matched path before forwarding to the target.", + "pathRewriteType": "Rewrite Type", + "pathRewritePrefixOption": "Prefix - Replace prefix", + "pathRewriteExactOption": "Exact - Replace entire path", + "pathRewriteRegexOption": "Regex - Pattern replacement", + "pathRewriteStripPrefixOption": "Strip Prefix - Remove prefix", + "pathRewriteValue": "Rewrite Value", + "pathRewriteRegexPlaceholder": "/new/$1", + "pathRewriteDefaultPlaceholder": "/new-path", + "pathRewritePrefixHelp": "Replace the matched prefix with this value", + "pathRewriteExactHelp": "Replace the entire path with this value when the path matches exactly", + "pathRewriteRegexHelp": "Use capture groups like $1, $2 for replacement", + "pathRewriteStripPrefixHelp": "Leave empty to strip prefix or provide new prefix", + "pathRewritePrefix": "Prefix", + "pathRewriteExact": "Exact", + "pathRewriteRegex": "Regex", + "pathRewriteStrip": "Strip", + "pathRewriteStripLabel": "strip" } diff --git a/messages/fr-FR.json b/messages/fr-FR.json index 4a1670f3..91d69844 100644 --- a/messages/fr-FR.json +++ b/messages/fr-FR.json @@ -96,7 +96,7 @@ "siteWgDescription": "Utilisez n'importe quel client WireGuard pour établir un tunnel. Configuration NAT manuelle requise.", "siteWgDescriptionSaas": "Utilisez n'importe quel client WireGuard pour établir un tunnel. Configuration NAT manuelle requise. FONCTIONNE UNIQUEMENT SUR DES NŒUDS AUTONOMES", "siteLocalDescription": "Ressources locales seulement. Pas de tunneling.", - "siteLocalDescriptionSaas": "Ressources locales uniquement. Pas de tunneling. FONCTIONNE UNIQUEMENT SUR DES NŒUDS AUTONOMES", + "siteLocalDescriptionSaas": "Local resources only. No tunneling. Only available on remote nodes.", "siteSeeAll": "Voir tous les sites", "siteTunnelDescription": "Déterminez comment vous voulez vous connecter à votre site", "siteNewtCredentials": "Identifiants Newt", @@ -468,7 +468,10 @@ "createdAt": "Créé le", "proxyErrorInvalidHeader": "Valeur d'en-tête Host personnalisée invalide. Utilisez le format de nom de domaine, ou laissez vide pour désactiver l'en-tête Host personnalisé.", "proxyErrorTls": "Nom de serveur TLS invalide. Utilisez le format de nom de domaine, ou laissez vide pour supprimer le nom de serveur TLS.", - "proxyEnableSSL": "Activer SSL (https)", + "proxyEnableSSL": "Activer SSL", + "proxyEnableSSLDescription": "Activez le cryptage SSL/TLS pour des connexions HTTPS sécurisées vers vos cibles.", + "target": "Target", + "configureTarget": "Configurer les cibles", "targetErrorFetch": "Échec de la récupération des cibles", "targetErrorFetchDescription": "Une erreur s'est produite lors de la récupération des cibles", "siteErrorFetch": "Échec de la récupération de la ressource", @@ -495,7 +498,7 @@ "targetTlsSettings": "Configuration sécurisée de connexion", "targetTlsSettingsDescription": "Configurer les paramètres SSL/TLS pour votre ressource", "targetTlsSettingsAdvanced": "Paramètres TLS avancés", - "targetTlsSni": "Nom de serveur TLS (SNI)", + "targetTlsSni": "Nom du serveur TLS", "targetTlsSniDescription": "Le nom de serveur TLS à utiliser pour SNI. Laissez vide pour utiliser la valeur par défaut.", "targetTlsSubmit": "Enregistrer les paramètres", "targets": "Configuration des cibles", @@ -504,9 +507,21 @@ "targetStickySessionsDescription": "Maintenir les connexions sur la même cible backend pendant toute leur session.", "methodSelect": "Sélectionner la méthode", "targetSubmit": "Ajouter une cible", - "targetNoOne": "Aucune cible. Ajoutez une cible en utilisant le formulaire.", + "targetNoOne": "Cette ressource n'a aucune cible. Ajoutez une cible pour configurer où envoyer des requêtes à votre backend.", "targetNoOneDescription": "L'ajout de plus d'une cible ci-dessus activera l'équilibrage de charge.", "targetsSubmit": "Enregistrer les cibles", + "addTarget": "Ajouter une cible", + "targetErrorInvalidIp": "Adresse IP invalide", + "targetErrorInvalidIpDescription": "Veuillez entrer une adresse IP ou un nom d'hôte valide", + "targetErrorInvalidPort": "Port invalide", + "targetErrorInvalidPortDescription": "Veuillez entrer un numéro de port valide", + "targetErrorNoSite": "Aucun site sélectionné", + "targetErrorNoSiteDescription": "Veuillez sélectionner un site pour la cible", + "targetCreated": "Cible créée", + "targetCreatedDescription": "La cible a été créée avec succès", + "targetErrorCreate": "Impossible de créer la cible", + "targetErrorCreateDescription": "Une erreur s'est produite lors de la création de la cible", + "save": "Enregistrer", "proxyAdditional": "Paramètres de proxy supplémentaires", "proxyAdditionalDescription": "Configurer la façon dont votre ressource gère les paramètres de proxy", "proxyCustomHeader": "En-tête Host personnalisé", @@ -715,6 +730,7 @@ "pangolinServerAdmin": "Admin Serveur - Pangolin", "licenseTierProfessional": "Licence Professionnelle", "licenseTierEnterprise": "Licence Entreprise", + "licenseTierPersonal": "Personal License", "licensed": "Sous licence", "yes": "Oui", "no": "Non", @@ -749,7 +765,7 @@ "idpDisplayName": "Un nom d'affichage pour ce fournisseur d'identité", "idpAutoProvisionUsers": "Approvisionnement automatique des utilisateurs", "idpAutoProvisionUsersDescription": "Lorsque cette option est activée, les utilisateurs seront automatiquement créés dans le système lors de leur première connexion avec la possibilité de mapper les utilisateurs aux rôles et aux organisations.", - "licenseBadge": "Professionnel", + "licenseBadge": "EE", "idpType": "Type de fournisseur", "idpTypeDescription": "Sélectionnez le type de fournisseur d'identité que vous souhaitez configurer", "idpOidcConfigure": "Configuration OAuth2/OIDC", @@ -1138,7 +1154,7 @@ "sidebarAllUsers": "Tous les utilisateurs", "sidebarIdentityProviders": "Fournisseurs d'identité", "sidebarLicense": "Licence", - "sidebarClients": "Clients (Bêta)", + "sidebarClients": "Clients", "sidebarDomains": "Domaines", "enableDockerSocket": "Activer le Plan Docker", "enableDockerSocketDescription": "Activer le ramassage d'étiquettes de socket Docker pour les étiquettes de plan. Le chemin de socket doit être fourni à Newt.", @@ -1331,7 +1347,6 @@ "twoFactorRequired": "L'authentification à deux facteurs est requise pour enregistrer une clé de sécurité.", "twoFactor": "Authentification à deux facteurs", "adminEnabled2FaOnYourAccount": "Votre administrateur a activé l'authentification à deux facteurs pour {email}. Veuillez terminer le processus d'installation pour continuer.", - "continueToApplication": "Continuer vers l'application", "securityKeyAdd": "Ajouter une clé de sécurité", "securityKeyRegisterTitle": "Enregistrer une nouvelle clé de sécurité", "securityKeyRegisterDescription": "Connectez votre clé de sécurité et saisissez un nom pour l'identifier", @@ -1409,6 +1424,7 @@ "externalProxyEnabled": "Proxy externe activé", "addNewTarget": "Ajouter une nouvelle cible", "targetsList": "Liste des cibles", + "advancedMode": "Mode Avancé", "targetErrorDuplicateTargetFound": "Cible en double trouvée", "healthCheckHealthy": "Sain", "healthCheckUnhealthy": "En mauvaise santé", @@ -1541,8 +1557,8 @@ "autoLoginError": "Erreur de connexion automatique", "autoLoginErrorNoRedirectUrl": "Aucune URL de redirection reçue du fournisseur d'identité.", "autoLoginErrorGeneratingUrl": "Échec de la génération de l'URL d'authentification.", - "remoteExitNodeManageRemoteExitNodes": "Gérer auto-hébergé", - "remoteExitNodeDescription": "Gérer les nœuds pour étendre votre connectivité réseau", + "remoteExitNodeManageRemoteExitNodes": "Nœuds distants", + "remoteExitNodeDescription": "Self-host one or more remote nodes to extend your network connectivity and reduce reliance on the cloud", "remoteExitNodes": "Nœuds", "searchRemoteExitNodes": "Rechercher des nœuds...", "remoteExitNodeAdd": "Ajouter un noeud", @@ -1552,7 +1568,7 @@ "remoteExitNodeMessageConfirm": "Pour confirmer, veuillez saisir le nom du noeud ci-dessous.", "remoteExitNodeConfirmDelete": "Confirmer la suppression du noeud", "remoteExitNodeDelete": "Supprimer le noeud", - "sidebarRemoteExitNodes": "Nœuds", + "sidebarRemoteExitNodes": "Nœuds distants", "remoteExitNodeCreate": { "title": "Créer un noeud", "description": "Créer un nouveau nœud pour étendre votre connectivité réseau", @@ -1721,5 +1737,161 @@ "authPageUpdated": "Page d\u000027authentification mise à jour avec succès", "healthCheckNotAvailable": "Locale", "rewritePath": "Réécrire le chemin", - "rewritePathDescription": "Réécrivez éventuellement le chemin avant de le transmettre à la cible." + "rewritePathDescription": "Réécrivez éventuellement le chemin avant de le transmettre à la cible.", + "continueToApplication": "Continuer vers l'application", + "checkingInvite": "Vérification de l'invitation", + "setResourceHeaderAuth": "Définir l\\'authentification d\\'en-tête de la ressource", + "resourceHeaderAuthRemove": "Supprimer l'authentification de l'en-tête", + "resourceHeaderAuthRemoveDescription": "Authentification de l'en-tête supprimée avec succès.", + "resourceErrorHeaderAuthRemove": "Échec de la suppression de l'authentification de l'en-tête", + "resourceErrorHeaderAuthRemoveDescription": "Impossible de supprimer l'authentification de l'en-tête de la ressource.", + "resourceHeaderAuthProtectionEnabled": "Header Authentication Enabled", + "resourceHeaderAuthProtectionDisabled": "Header Authentication Disabled", + "headerAuthRemove": "Remove Header Auth", + "headerAuthAdd": "Add Header Auth", + "resourceErrorHeaderAuthSetup": "Impossible de définir l'authentification de l'en-tête", + "resourceErrorHeaderAuthSetupDescription": "Impossible de définir l'authentification de l'en-tête pour la ressource.", + "resourceHeaderAuthSetup": "Authentification de l'en-tête définie avec succès", + "resourceHeaderAuthSetupDescription": "L'authentification de l'en-tête a été définie avec succès.", + "resourceHeaderAuthSetupTitle": "Authentification de l'en-tête", + "resourceHeaderAuthSetupTitleDescription": "Set the basic auth credentials (username and password) to protect this resource with HTTP Header Authentication. Access it using the format https://username:password@resource.example.com", + "resourceHeaderAuthSubmit": "Authentification de l'en-tête", + "actionSetResourceHeaderAuth": "Authentification de l'en-tête", + "enterpriseEdition": "Enterprise Edition", + "unlicensed": "Unlicensed", + "beta": "Beta", + "manageClients": "Manage Clients", + "manageClientsDescription": "Clients are devices that can connect to your sites", + "licenseTableValidUntil": "Valid Until", + "saasLicenseKeysSettingsTitle": "Enterprise Licenses", + "saasLicenseKeysSettingsDescription": "Generate and manage Enterprise license keys for self-hosted Pangolin instances", + "sidebarEnterpriseLicenses": "Licenses", + "generateLicenseKey": "Generate License Key", + "generateLicenseKeyForm": { + "validation": { + "emailRequired": "Please enter a valid email address", + "useCaseTypeRequired": "Please select a use case type", + "firstNameRequired": "First name is required", + "lastNameRequired": "Last name is required", + "primaryUseRequired": "Please describe your primary use", + "jobTitleRequiredBusiness": "Job title is required for business use", + "industryRequiredBusiness": "Industry is required for business use", + "stateProvinceRegionRequired": "State/Province/Region is required", + "postalZipCodeRequired": "Postal/ZIP Code is required", + "companyNameRequiredBusiness": "Company name is required for business use", + "countryOfResidenceRequiredBusiness": "Country of residence is required for business use", + "countryRequiredPersonal": "Country is required for personal use", + "agreeToTermsRequired": "You must agree to the terms", + "complianceConfirmationRequired": "You must confirm compliance with the Fossorial Commercial License" + }, + "useCaseOptions": { + "personal": { + "title": "Personal Use", + "description": "For individual, non-commercial use such as learning, personal projects, or experimentation." + }, + "business": { + "title": "Business Use", + "description": "For use within organizations, companies, or commercial or revenue-generating activities." + } + }, + "steps": { + "emailLicenseType": { + "title": "Email & License Type", + "description": "Enter your email and choose your license type" + }, + "personalInformation": { + "title": "Personal Information", + "description": "Tell us about yourself" + }, + "contactInformation": { + "title": "Contact Information", + "description": "Your contact details" + }, + "termsGenerate": { + "title": "Terms & Generate", + "description": "Review and accept terms to generate your license" + } + }, + "alerts": { + "commercialUseDisclosure": { + "title": "Usage Disclosure", + "description": "Select the license tier that accurately reflects your intended use. The Personal License permits free use of the Software for individual, non-commercial or small-scale commercial activities with annual gross revenue under $100,000 USD. Any use beyond these limits — including use within a business, organization, or other revenue-generating environment — requires a valid Enterprise License and payment of the applicable licensing fee. All users, whether Personal or Enterprise, must comply with the Fossorial Commercial License Terms." + }, + "trialPeriodInformation": { + "title": "Trial Period Information", + "description": "This License Key enables Enterprise features for a 7-day evaluation period. Continued access to Paid Features beyond the evaluation period requires activation under a valid Personal or Enterprise License. For Enterprise licensing, contact sales@fossorial.io." + } + }, + "form": { + "useCaseQuestion": "Are you using Pangolin for personal or business use?", + "firstName": "First Name", + "lastName": "Last Name", + "jobTitle": "Job Title", + "primaryUseQuestion": "What do you primarily plan to use Pangolin for?", + "industryQuestion": "What is your industry?", + "prospectiveUsersQuestion": "How many prospective users do you expect to have?", + "prospectiveSitesQuestion": "How many prospective sites (tunnels) do you expect to have?", + "companyName": "Company name", + "countryOfResidence": "Country of residence", + "stateProvinceRegion": "State / Province / Region", + "postalZipCode": "Postal / ZIP Code", + "companyWebsite": "Company website", + "companyPhoneNumber": "Company phone number", + "country": "Country", + "phoneNumberOptional": "Phone number (optional)", + "complianceConfirmation": "I confirm that I am in compliance with the Fossorial Commercial License and that reporting inaccurate information or misidentifying use of the product is a violation of the license." + }, + "buttons": { + "close": "Close", + "previous": "Previous", + "next": "Next", + "generateLicenseKey": "Generate License Key" + }, + "toasts": { + "success": { + "title": "License key generated successfully", + "description": "Your license key has been generated and is ready to use." + }, + "error": { + "title": "Failed to generate license key", + "description": "An error occurred while generating the license key." + } + } + }, + "priority": "Priorité", + "priorityDescription": "Les routes de haute priorité sont évaluées en premier. La priorité = 100 signifie l'ordre automatique (décision du système). Utilisez un autre nombre pour imposer la priorité manuelle.", + "instanceName": "Instance Name", + "pathMatchModalTitle": "Configure Path Matching", + "pathMatchModalDescription": "Set up how incoming requests should be matched based on their path.", + "pathMatchType": "Match Type", + "pathMatchPrefix": "Prefix", + "pathMatchExact": "Exact", + "pathMatchRegex": "Regex", + "pathMatchValue": "Path Value", + "clear": "Clear", + "saveChanges": "Save Changes", + "pathMatchRegexPlaceholder": "^/api/.*", + "pathMatchDefaultPlaceholder": "/path", + "pathMatchPrefixHelp": "Example: /api matches /api, /api/users, etc.", + "pathMatchExactHelp": "Example: /api matches only /api", + "pathMatchRegexHelp": "Example: ^/api/.* matches /api/anything", + "pathRewriteModalTitle": "Configure Path Rewriting", + "pathRewriteModalDescription": "Transform the matched path before forwarding to the target.", + "pathRewriteType": "Rewrite Type", + "pathRewritePrefixOption": "Prefix - Replace prefix", + "pathRewriteExactOption": "Exact - Replace entire path", + "pathRewriteRegexOption": "Regex - Pattern replacement", + "pathRewriteStripPrefixOption": "Strip Prefix - Remove prefix", + "pathRewriteValue": "Rewrite Value", + "pathRewriteRegexPlaceholder": "/new/$1", + "pathRewriteDefaultPlaceholder": "/new-path", + "pathRewritePrefixHelp": "Replace the matched prefix with this value", + "pathRewriteExactHelp": "Replace the entire path with this value when the path matches exactly", + "pathRewriteRegexHelp": "Use capture groups like $1, $2 for replacement", + "pathRewriteStripPrefixHelp": "Leave empty to strip prefix or provide new prefix", + "pathRewritePrefix": "Prefix", + "pathRewriteExact": "Exact", + "pathRewriteRegex": "Regex", + "pathRewriteStrip": "Strip", + "pathRewriteStripLabel": "strip" } diff --git a/messages/it-IT.json b/messages/it-IT.json index 143da0c5..8031f60e 100644 --- a/messages/it-IT.json +++ b/messages/it-IT.json @@ -96,7 +96,7 @@ "siteWgDescription": "Usa qualsiasi client WireGuard per stabilire un tunnel. Impostazione NAT manuale richiesta.", "siteWgDescriptionSaas": "Usa qualsiasi client WireGuard per stabilire un tunnel. Impostazione NAT manuale richiesta. FUNZIONA SOLO SU NODI AUTO-OSPITATI", "siteLocalDescription": "Solo risorse locali. Nessun tunneling.", - "siteLocalDescriptionSaas": "Solo risorse locali. Nessun tunneling. FUNZIONA SOLO SU NODI AUTO-OSPITATI", + "siteLocalDescriptionSaas": "Local resources only. No tunneling. Only available on remote nodes.", "siteSeeAll": "Vedi Tutti I Siti", "siteTunnelDescription": "Determina come vuoi connetterti al tuo sito", "siteNewtCredentials": "Credenziali Newt", @@ -468,7 +468,10 @@ "createdAt": "Creato Il", "proxyErrorInvalidHeader": "Valore dell'intestazione Host personalizzata non valido. Usa il formato nome dominio o salva vuoto per rimuovere l'intestazione Host personalizzata.", "proxyErrorTls": "Nome Server TLS non valido. Usa il formato nome dominio o salva vuoto per rimuovere il Nome Server TLS.", - "proxyEnableSSL": "Abilita SSL (https)", + "proxyEnableSSL": "Abilita SSL", + "proxyEnableSSLDescription": "Abilita la crittografia SSL/TLS per connessioni HTTPS sicure ai tuoi obiettivi.", + "target": "Target", + "configureTarget": "Configura Obiettivi", "targetErrorFetch": "Impossibile recuperare i target", "targetErrorFetchDescription": "Si è verificato un errore durante il recupero dei target", "siteErrorFetch": "Impossibile recuperare la risorsa", @@ -495,7 +498,7 @@ "targetTlsSettings": "Configurazione Connessione Sicura", "targetTlsSettingsDescription": "Configura le impostazioni SSL/TLS per la tua risorsa", "targetTlsSettingsAdvanced": "Impostazioni TLS Avanzate", - "targetTlsSni": "Nome Server TLS (SNI)", + "targetTlsSni": "Nome Server Tls", "targetTlsSniDescription": "Il Nome Server TLS da usare per SNI. Lascia vuoto per usare quello predefinito.", "targetTlsSubmit": "Salva Impostazioni", "targets": "Configurazione Target", @@ -504,9 +507,21 @@ "targetStickySessionsDescription": "Mantieni le connessioni sullo stesso target backend per l'intera sessione.", "methodSelect": "Seleziona metodo", "targetSubmit": "Aggiungi Target", - "targetNoOne": "Nessun target. Aggiungi un target usando il modulo.", + "targetNoOne": "Questa risorsa non ha bersagli. Aggiungi un obiettivo per configurare dove inviare le richieste al tuo backend.", "targetNoOneDescription": "L'aggiunta di più di un target abiliterà il bilanciamento del carico.", "targetsSubmit": "Salva Target", + "addTarget": "Aggiungi Target", + "targetErrorInvalidIp": "Indirizzo IP non valido", + "targetErrorInvalidIpDescription": "Inserisci un indirizzo IP o un hostname valido", + "targetErrorInvalidPort": "Porta non valida", + "targetErrorInvalidPortDescription": "Inserisci un numero di porta valido", + "targetErrorNoSite": "Nessun sito selezionato", + "targetErrorNoSiteDescription": "Si prega di selezionare un sito per l'obiettivo", + "targetCreated": "Destinazione creata", + "targetCreatedDescription": "L'obiettivo è stato creato con successo", + "targetErrorCreate": "Impossibile creare l'obiettivo", + "targetErrorCreateDescription": "Si è verificato un errore durante la creazione del target", + "save": "Salva", "proxyAdditional": "Impostazioni Proxy Aggiuntive", "proxyAdditionalDescription": "Configura come la tua risorsa gestisce le impostazioni proxy", "proxyCustomHeader": "Intestazione Host Personalizzata", @@ -715,6 +730,7 @@ "pangolinServerAdmin": "Server Admin - Pangolina", "licenseTierProfessional": "Licenza Professional", "licenseTierEnterprise": "Licenza Enterprise", + "licenseTierPersonal": "Personal License", "licensed": "Con Licenza", "yes": "Sì", "no": "No", @@ -749,7 +765,7 @@ "idpDisplayName": "Un nome visualizzato per questo provider di identità", "idpAutoProvisionUsers": "Provisioning Automatico Utenti", "idpAutoProvisionUsersDescription": "Quando abilitato, gli utenti verranno creati automaticamente nel sistema al primo accesso con la possibilità di mappare gli utenti a ruoli e organizzazioni.", - "licenseBadge": "Professionista", + "licenseBadge": "EE", "idpType": "Tipo di Provider", "idpTypeDescription": "Seleziona il tipo di provider di identità che desideri configurare", "idpOidcConfigure": "Configurazione OAuth2/OIDC", @@ -1138,7 +1154,7 @@ "sidebarAllUsers": "Tutti Gli Utenti", "sidebarIdentityProviders": "Fornitori Di Identità", "sidebarLicense": "Licenza", - "sidebarClients": "Clienti (Beta)", + "sidebarClients": "Clients", "sidebarDomains": "Domini", "enableDockerSocket": "Abilita Progetto Docker", "enableDockerSocketDescription": "Abilita la raschiatura dell'etichetta Docker Socket per le etichette dei progetti. Il percorso del socket deve essere fornito a Newt.", @@ -1331,7 +1347,6 @@ "twoFactorRequired": "È richiesta l'autenticazione a due fattori per registrare una chiave di sicurezza.", "twoFactor": "Autenticazione a Due Fattori", "adminEnabled2FaOnYourAccount": "Il tuo amministratore ha abilitato l'autenticazione a due fattori per {email}. Completa il processo di configurazione per continuare.", - "continueToApplication": "Continua con l'applicazione", "securityKeyAdd": "Aggiungi Chiave di Sicurezza", "securityKeyRegisterTitle": "Registra Nuova Chiave di Sicurezza", "securityKeyRegisterDescription": "Collega la tua chiave di sicurezza e inserisci un nome per identificarla", @@ -1409,6 +1424,7 @@ "externalProxyEnabled": "Proxy Esterno Abilitato", "addNewTarget": "Aggiungi Nuovo Target", "targetsList": "Elenco dei Target", + "advancedMode": "Modalità Avanzata", "targetErrorDuplicateTargetFound": "Target duplicato trovato", "healthCheckHealthy": "Sano", "healthCheckUnhealthy": "Non Sano", @@ -1541,8 +1557,8 @@ "autoLoginError": "Errore di Accesso Automatico", "autoLoginErrorNoRedirectUrl": "Nessun URL di reindirizzamento ricevuto dal provider di identità.", "autoLoginErrorGeneratingUrl": "Impossibile generare l'URL di autenticazione.", - "remoteExitNodeManageRemoteExitNodes": "Gestisci Self-Hosted", - "remoteExitNodeDescription": "Gestisci i nodi per estendere la connettività di rete", + "remoteExitNodeManageRemoteExitNodes": "Nodi Remoti", + "remoteExitNodeDescription": "Self-host one or more remote nodes to extend your network connectivity and reduce reliance on the cloud", "remoteExitNodes": "Nodi", "searchRemoteExitNodes": "Cerca nodi...", "remoteExitNodeAdd": "Aggiungi Nodo", @@ -1552,7 +1568,7 @@ "remoteExitNodeMessageConfirm": "Per confermare, digita il nome del nodo qui sotto.", "remoteExitNodeConfirmDelete": "Conferma Eliminazione Nodo", "remoteExitNodeDelete": "Elimina Nodo", - "sidebarRemoteExitNodes": "Nodi", + "sidebarRemoteExitNodes": "Nodi Remoti", "remoteExitNodeCreate": { "title": "Crea Nodo", "description": "Crea un nuovo nodo per estendere la connettività di rete", @@ -1721,5 +1737,161 @@ "authPageUpdated": "Pagina di autenticazione aggiornata con successo", "healthCheckNotAvailable": "Locale", "rewritePath": "Riscrivi percorso", - "rewritePathDescription": "Riscrivi eventualmente il percorso prima di inoltrarlo al target." + "rewritePathDescription": "Riscrivi eventualmente il percorso prima di inoltrarlo al target.", + "continueToApplication": "Continua con l'applicazione", + "checkingInvite": "Controllo Invito", + "setResourceHeaderAuth": "setResourceHeaderAuth", + "resourceHeaderAuthRemove": "Rimuovi Autenticazione Intestazione", + "resourceHeaderAuthRemoveDescription": "Autenticazione intestazione rimossa con successo.", + "resourceErrorHeaderAuthRemove": "Impossibile rimuovere l'autenticazione dell'intestazione", + "resourceErrorHeaderAuthRemoveDescription": "Impossibile rimuovere l'autenticazione dell'intestazione per la risorsa.", + "resourceHeaderAuthProtectionEnabled": "Header Authentication Enabled", + "resourceHeaderAuthProtectionDisabled": "Header Authentication Disabled", + "headerAuthRemove": "Remove Header Auth", + "headerAuthAdd": "Add Header Auth", + "resourceErrorHeaderAuthSetup": "Impossibile impostare l'autenticazione dell'intestazione", + "resourceErrorHeaderAuthSetupDescription": "Impossibile impostare l'autenticazione dell'intestazione per la risorsa.", + "resourceHeaderAuthSetup": "Autenticazione intestazione impostata con successo", + "resourceHeaderAuthSetupDescription": "L'autenticazione dell'intestazione è stata impostata correttamente.", + "resourceHeaderAuthSetupTitle": "Imposta Autenticazione Intestazione", + "resourceHeaderAuthSetupTitleDescription": "Set the basic auth credentials (username and password) to protect this resource with HTTP Header Authentication. Access it using the format https://username:password@resource.example.com", + "resourceHeaderAuthSubmit": "Imposta Autenticazione Intestazione", + "actionSetResourceHeaderAuth": "Imposta Autenticazione Intestazione", + "enterpriseEdition": "Enterprise Edition", + "unlicensed": "Unlicensed", + "beta": "Beta", + "manageClients": "Manage Clients", + "manageClientsDescription": "Clients are devices that can connect to your sites", + "licenseTableValidUntil": "Valid Until", + "saasLicenseKeysSettingsTitle": "Enterprise Licenses", + "saasLicenseKeysSettingsDescription": "Generate and manage Enterprise license keys for self-hosted Pangolin instances", + "sidebarEnterpriseLicenses": "Licenses", + "generateLicenseKey": "Generate License Key", + "generateLicenseKeyForm": { + "validation": { + "emailRequired": "Please enter a valid email address", + "useCaseTypeRequired": "Please select a use case type", + "firstNameRequired": "First name is required", + "lastNameRequired": "Last name is required", + "primaryUseRequired": "Please describe your primary use", + "jobTitleRequiredBusiness": "Job title is required for business use", + "industryRequiredBusiness": "Industry is required for business use", + "stateProvinceRegionRequired": "State/Province/Region is required", + "postalZipCodeRequired": "Postal/ZIP Code is required", + "companyNameRequiredBusiness": "Company name is required for business use", + "countryOfResidenceRequiredBusiness": "Country of residence is required for business use", + "countryRequiredPersonal": "Country is required for personal use", + "agreeToTermsRequired": "You must agree to the terms", + "complianceConfirmationRequired": "You must confirm compliance with the Fossorial Commercial License" + }, + "useCaseOptions": { + "personal": { + "title": "Personal Use", + "description": "For individual, non-commercial use such as learning, personal projects, or experimentation." + }, + "business": { + "title": "Business Use", + "description": "For use within organizations, companies, or commercial or revenue-generating activities." + } + }, + "steps": { + "emailLicenseType": { + "title": "Email & License Type", + "description": "Enter your email and choose your license type" + }, + "personalInformation": { + "title": "Personal Information", + "description": "Tell us about yourself" + }, + "contactInformation": { + "title": "Contact Information", + "description": "Your contact details" + }, + "termsGenerate": { + "title": "Terms & Generate", + "description": "Review and accept terms to generate your license" + } + }, + "alerts": { + "commercialUseDisclosure": { + "title": "Usage Disclosure", + "description": "Select the license tier that accurately reflects your intended use. The Personal License permits free use of the Software for individual, non-commercial or small-scale commercial activities with annual gross revenue under $100,000 USD. Any use beyond these limits — including use within a business, organization, or other revenue-generating environment — requires a valid Enterprise License and payment of the applicable licensing fee. All users, whether Personal or Enterprise, must comply with the Fossorial Commercial License Terms." + }, + "trialPeriodInformation": { + "title": "Trial Period Information", + "description": "This License Key enables Enterprise features for a 7-day evaluation period. Continued access to Paid Features beyond the evaluation period requires activation under a valid Personal or Enterprise License. For Enterprise licensing, contact sales@fossorial.io." + } + }, + "form": { + "useCaseQuestion": "Are you using Pangolin for personal or business use?", + "firstName": "First Name", + "lastName": "Last Name", + "jobTitle": "Job Title", + "primaryUseQuestion": "What do you primarily plan to use Pangolin for?", + "industryQuestion": "What is your industry?", + "prospectiveUsersQuestion": "How many prospective users do you expect to have?", + "prospectiveSitesQuestion": "How many prospective sites (tunnels) do you expect to have?", + "companyName": "Company name", + "countryOfResidence": "Country of residence", + "stateProvinceRegion": "State / Province / Region", + "postalZipCode": "Postal / ZIP Code", + "companyWebsite": "Company website", + "companyPhoneNumber": "Company phone number", + "country": "Country", + "phoneNumberOptional": "Phone number (optional)", + "complianceConfirmation": "I confirm that I am in compliance with the Fossorial Commercial License and that reporting inaccurate information or misidentifying use of the product is a violation of the license." + }, + "buttons": { + "close": "Close", + "previous": "Previous", + "next": "Next", + "generateLicenseKey": "Generate License Key" + }, + "toasts": { + "success": { + "title": "License key generated successfully", + "description": "Your license key has been generated and is ready to use." + }, + "error": { + "title": "Failed to generate license key", + "description": "An error occurred while generating the license key." + } + } + }, + "priority": "Priorità", + "priorityDescription": "I percorsi prioritari più alti sono valutati prima. Priorità = 100 significa ordinamento automatico (decidi di sistema). Usa un altro numero per applicare la priorità manuale.", + "instanceName": "Instance Name", + "pathMatchModalTitle": "Configure Path Matching", + "pathMatchModalDescription": "Set up how incoming requests should be matched based on their path.", + "pathMatchType": "Match Type", + "pathMatchPrefix": "Prefix", + "pathMatchExact": "Exact", + "pathMatchRegex": "Regex", + "pathMatchValue": "Path Value", + "clear": "Clear", + "saveChanges": "Save Changes", + "pathMatchRegexPlaceholder": "^/api/.*", + "pathMatchDefaultPlaceholder": "/path", + "pathMatchPrefixHelp": "Example: /api matches /api, /api/users, etc.", + "pathMatchExactHelp": "Example: /api matches only /api", + "pathMatchRegexHelp": "Example: ^/api/.* matches /api/anything", + "pathRewriteModalTitle": "Configure Path Rewriting", + "pathRewriteModalDescription": "Transform the matched path before forwarding to the target.", + "pathRewriteType": "Rewrite Type", + "pathRewritePrefixOption": "Prefix - Replace prefix", + "pathRewriteExactOption": "Exact - Replace entire path", + "pathRewriteRegexOption": "Regex - Pattern replacement", + "pathRewriteStripPrefixOption": "Strip Prefix - Remove prefix", + "pathRewriteValue": "Rewrite Value", + "pathRewriteRegexPlaceholder": "/new/$1", + "pathRewriteDefaultPlaceholder": "/new-path", + "pathRewritePrefixHelp": "Replace the matched prefix with this value", + "pathRewriteExactHelp": "Replace the entire path with this value when the path matches exactly", + "pathRewriteRegexHelp": "Use capture groups like $1, $2 for replacement", + "pathRewriteStripPrefixHelp": "Leave empty to strip prefix or provide new prefix", + "pathRewritePrefix": "Prefix", + "pathRewriteExact": "Exact", + "pathRewriteRegex": "Regex", + "pathRewriteStrip": "Strip", + "pathRewriteStripLabel": "strip" } diff --git a/messages/ko-KR.json b/messages/ko-KR.json index 8ace81a5..a1f2d451 100644 --- a/messages/ko-KR.json +++ b/messages/ko-KR.json @@ -96,7 +96,7 @@ "siteWgDescription": "모든 WireGuard 클라이언트를 사용하여 터널을 설정하세요. 수동 NAT 설정이 필요합니다.", "siteWgDescriptionSaas": "모든 WireGuard 클라이언트를 사용하여 터널을 설정하세요. 수동 NAT 설정이 필요합니다. 자체 호스팅 노드에서만 작동합니다.", "siteLocalDescription": "로컬 리소스만 사용 가능합니다. 터널링이 없습니다.", - "siteLocalDescriptionSaas": "로컬 리소스만. 터널링 없음. 자체 호스팅 노드에서만 작동합니다.", + "siteLocalDescriptionSaas": "Local resources only. No tunneling. Only available on remote nodes.", "siteSeeAll": "모든 사이트 보기", "siteTunnelDescription": "사이트에 연결하는 방법을 결정하세요", "siteNewtCredentials": "Newt 자격 증명", @@ -468,7 +468,10 @@ "createdAt": "생성일", "proxyErrorInvalidHeader": "잘못된 사용자 정의 호스트 헤더 값입니다. 도메인 이름 형식을 사용하거나 사용자 정의 호스트 헤더를 해제하려면 비워 두십시오.", "proxyErrorTls": "유효하지 않은 TLS 서버 이름입니다. 도메인 이름 형식을 사용하거나 비워 두어 TLS 서버 이름을 제거하십시오.", - "proxyEnableSSL": "SSL 활성화 (https)", + "proxyEnableSSL": "SSL 활성화", + "proxyEnableSSLDescription": "대상에 대한 안전한 HTTPS 연결을 위해 SSL/TLS 암호화를 활성화하세요.", + "target": "대상", + "configureTarget": "대상 구성", "targetErrorFetch": "대상 가져오는 데 실패했습니다.", "targetErrorFetchDescription": "대상 가져오는 중 오류가 발생했습니다", "siteErrorFetch": "리소스를 가져오는 데 실패했습니다", @@ -495,7 +498,7 @@ "targetTlsSettings": "보안 연결 구성", "targetTlsSettingsDescription": "리소스에 대한 SSL/TLS 설정 구성", "targetTlsSettingsAdvanced": "고급 TLS 설정", - "targetTlsSni": "TLS 서버 이름 (SNI)", + "targetTlsSni": "TLS 서버 이름", "targetTlsSniDescription": "SNI에 사용할 TLS 서버 이름. 기본값을 사용하려면 비워 두십시오.", "targetTlsSubmit": "설정 저장", "targets": "대상 구성", @@ -504,9 +507,21 @@ "targetStickySessionsDescription": "세션 전체 동안 동일한 백엔드 대상을 유지합니다.", "methodSelect": "선택 방법", "targetSubmit": "대상 추가", - "targetNoOne": "대상이 없습니다. 양식을 사용하여 대상을 추가하세요.", + "targetNoOne": "이 리소스에는 대상이 없습니다. 백엔드로 요청을 보내려면 대상을 추가하세요.", "targetNoOneDescription": "위에 하나 이상의 대상을 추가하면 로드 밸런싱이 활성화됩니다.", "targetsSubmit": "대상 저장", + "addTarget": "대상 추가", + "targetErrorInvalidIp": "유효하지 않은 IP 주소", + "targetErrorInvalidIpDescription": "유효한 IP 주소 또는 호스트 이름을 입력하세요.", + "targetErrorInvalidPort": "유효하지 않은 포트", + "targetErrorInvalidPortDescription": "유효한 포트 번호를 입력하세요.", + "targetErrorNoSite": "선택된 사이트 없음", + "targetErrorNoSiteDescription": "대상을 위해 사이트를 선택하세요.", + "targetCreated": "대상 생성", + "targetCreatedDescription": "대상이 성공적으로 생성되었습니다.", + "targetErrorCreate": "대상 생성 실패", + "targetErrorCreateDescription": "대상 생성 중 오류가 발생했습니다.", + "save": "저장", "proxyAdditional": "추가 프록시 설정", "proxyAdditionalDescription": "리소스가 프록시 설정을 처리하는 방법 구성", "proxyCustomHeader": "사용자 정의 호스트 헤더", @@ -715,6 +730,7 @@ "pangolinServerAdmin": "서버 관리자 - 판골린", "licenseTierProfessional": "전문 라이센스", "licenseTierEnterprise": "기업 라이선스", + "licenseTierPersonal": "Personal License", "licensed": "라이센스", "yes": "예", "no": "아니요", @@ -749,7 +765,7 @@ "idpDisplayName": "이 신원 공급자를 위한 표시 이름", "idpAutoProvisionUsers": "사용자 자동 프로비저닝", "idpAutoProvisionUsersDescription": "활성화되면 사용자가 첫 로그인 시 시스템에 자동으로 생성되며, 사용자와 역할 및 조직을 매핑할 수 있습니다.", - "licenseBadge": "전문가", + "licenseBadge": "EE", "idpType": "제공자 유형", "idpTypeDescription": "구성할 ID 공급자의 유형을 선택하십시오.", "idpOidcConfigure": "OAuth2/OIDC 구성", @@ -1138,7 +1154,7 @@ "sidebarAllUsers": "모든 사용자", "sidebarIdentityProviders": "신원 공급자", "sidebarLicense": "라이선스", - "sidebarClients": "클라이언트 (Beta)", + "sidebarClients": "Clients", "sidebarDomains": "도메인", "enableDockerSocket": "Docker 청사진 활성화", "enableDockerSocketDescription": "블루프린트 레이블을 위한 Docker 소켓 레이블 수집을 활성화합니다. 소켓 경로는 Newt에 제공되어야 합니다.", @@ -1331,7 +1347,6 @@ "twoFactorRequired": "보안 키를 등록하려면 이중 인증이 필요합니다.", "twoFactor": "이중 인증", "adminEnabled2FaOnYourAccount": "관리자가 {email}에 대한 이중 인증을 활성화했습니다. 계속하려면 설정을 완료하세요.", - "continueToApplication": "응용 프로그램으로 계속", "securityKeyAdd": "보안 키 추가", "securityKeyRegisterTitle": "새 보안 키 등록", "securityKeyRegisterDescription": "보안 키를 연결하고 식별할 이름을 입력하세요.", @@ -1409,6 +1424,7 @@ "externalProxyEnabled": "외부 프록시 활성화됨", "addNewTarget": "새 대상 추가", "targetsList": "대상 목록", + "advancedMode": "고급 모드", "targetErrorDuplicateTargetFound": "중복 대상 발견", "healthCheckHealthy": "정상", "healthCheckUnhealthy": "비정상", @@ -1541,8 +1557,8 @@ "autoLoginError": "자동 로그인 오류", "autoLoginErrorNoRedirectUrl": "ID 공급자로부터 리디렉션 URL을 받지 못했습니다.", "autoLoginErrorGeneratingUrl": "인증 URL 생성 실패.", - "remoteExitNodeManageRemoteExitNodes": "관리 자체 호스팅", - "remoteExitNodeDescription": "네트워크 연결성을 확장하기 위해 노드를 관리하세요", + "remoteExitNodeManageRemoteExitNodes": "원격 노드", + "remoteExitNodeDescription": "Self-host one or more remote nodes to extend your network connectivity and reduce reliance on the cloud", "remoteExitNodes": "노드", "searchRemoteExitNodes": "노드 검색...", "remoteExitNodeAdd": "노드 추가", @@ -1552,7 +1568,7 @@ "remoteExitNodeMessageConfirm": "확인을 위해 아래에 노드 이름을 입력해 주세요.", "remoteExitNodeConfirmDelete": "노드 삭제 확인", "remoteExitNodeDelete": "노드 삭제", - "sidebarRemoteExitNodes": "노드", + "sidebarRemoteExitNodes": "원격 노드", "remoteExitNodeCreate": { "title": "노드 생성", "description": "네트워크 연결성을 확장하기 위해 새 노드를 생성하세요", @@ -1721,5 +1737,161 @@ "authPageUpdated": "인증 페이지가 성공적으로 업데이트되었습니다", "healthCheckNotAvailable": "로컬", "rewritePath": "경로 재작성", - "rewritePathDescription": "대상으로 전달하기 전에 경로를 선택적으로 재작성합니다." + "rewritePathDescription": "대상으로 전달하기 전에 경로를 선택적으로 재작성합니다.", + "continueToApplication": "응용 프로그램으로 계속", + "checkingInvite": "초대 확인 중", + "setResourceHeaderAuth": "setResourceHeaderAuth", + "resourceHeaderAuthRemove": "헤더 인증 제거", + "resourceHeaderAuthRemoveDescription": "헤더 인증이 성공적으로 제거되었습니다.", + "resourceErrorHeaderAuthRemove": "헤더 인증 제거 실패", + "resourceErrorHeaderAuthRemoveDescription": "리소스의 헤더 인증을 제거할 수 없습니다.", + "resourceHeaderAuthProtectionEnabled": "Header Authentication Enabled", + "resourceHeaderAuthProtectionDisabled": "Header Authentication Disabled", + "headerAuthRemove": "Remove Header Auth", + "headerAuthAdd": "Add Header Auth", + "resourceErrorHeaderAuthSetup": "헤더 인증 설정 실패", + "resourceErrorHeaderAuthSetupDescription": "리소스의 헤더 인증을 설정할 수 없습니다.", + "resourceHeaderAuthSetup": "헤더 인증이 성공적으로 설정되었습니다.", + "resourceHeaderAuthSetupDescription": "헤더 인증이 성공적으로 설정되었습니다.", + "resourceHeaderAuthSetupTitle": "헤더 인증 설정", + "resourceHeaderAuthSetupTitleDescription": "Set the basic auth credentials (username and password) to protect this resource with HTTP Header Authentication. Access it using the format https://username:password@resource.example.com", + "resourceHeaderAuthSubmit": "헤더 인증 설정", + "actionSetResourceHeaderAuth": "헤더 인증 설정", + "enterpriseEdition": "Enterprise Edition", + "unlicensed": "Unlicensed", + "beta": "Beta", + "manageClients": "Manage Clients", + "manageClientsDescription": "Clients are devices that can connect to your sites", + "licenseTableValidUntil": "Valid Until", + "saasLicenseKeysSettingsTitle": "Enterprise Licenses", + "saasLicenseKeysSettingsDescription": "Generate and manage Enterprise license keys for self-hosted Pangolin instances", + "sidebarEnterpriseLicenses": "Licenses", + "generateLicenseKey": "Generate License Key", + "generateLicenseKeyForm": { + "validation": { + "emailRequired": "Please enter a valid email address", + "useCaseTypeRequired": "Please select a use case type", + "firstNameRequired": "First name is required", + "lastNameRequired": "Last name is required", + "primaryUseRequired": "Please describe your primary use", + "jobTitleRequiredBusiness": "Job title is required for business use", + "industryRequiredBusiness": "Industry is required for business use", + "stateProvinceRegionRequired": "State/Province/Region is required", + "postalZipCodeRequired": "Postal/ZIP Code is required", + "companyNameRequiredBusiness": "Company name is required for business use", + "countryOfResidenceRequiredBusiness": "Country of residence is required for business use", + "countryRequiredPersonal": "Country is required for personal use", + "agreeToTermsRequired": "You must agree to the terms", + "complianceConfirmationRequired": "You must confirm compliance with the Fossorial Commercial License" + }, + "useCaseOptions": { + "personal": { + "title": "Personal Use", + "description": "For individual, non-commercial use such as learning, personal projects, or experimentation." + }, + "business": { + "title": "Business Use", + "description": "For use within organizations, companies, or commercial or revenue-generating activities." + } + }, + "steps": { + "emailLicenseType": { + "title": "Email & License Type", + "description": "Enter your email and choose your license type" + }, + "personalInformation": { + "title": "Personal Information", + "description": "Tell us about yourself" + }, + "contactInformation": { + "title": "Contact Information", + "description": "Your contact details" + }, + "termsGenerate": { + "title": "Terms & Generate", + "description": "Review and accept terms to generate your license" + } + }, + "alerts": { + "commercialUseDisclosure": { + "title": "Usage Disclosure", + "description": "Select the license tier that accurately reflects your intended use. The Personal License permits free use of the Software for individual, non-commercial or small-scale commercial activities with annual gross revenue under $100,000 USD. Any use beyond these limits — including use within a business, organization, or other revenue-generating environment — requires a valid Enterprise License and payment of the applicable licensing fee. All users, whether Personal or Enterprise, must comply with the Fossorial Commercial License Terms." + }, + "trialPeriodInformation": { + "title": "Trial Period Information", + "description": "This License Key enables Enterprise features for a 7-day evaluation period. Continued access to Paid Features beyond the evaluation period requires activation under a valid Personal or Enterprise License. For Enterprise licensing, contact sales@fossorial.io." + } + }, + "form": { + "useCaseQuestion": "Are you using Pangolin for personal or business use?", + "firstName": "First Name", + "lastName": "Last Name", + "jobTitle": "Job Title", + "primaryUseQuestion": "What do you primarily plan to use Pangolin for?", + "industryQuestion": "What is your industry?", + "prospectiveUsersQuestion": "How many prospective users do you expect to have?", + "prospectiveSitesQuestion": "How many prospective sites (tunnels) do you expect to have?", + "companyName": "Company name", + "countryOfResidence": "Country of residence", + "stateProvinceRegion": "State / Province / Region", + "postalZipCode": "Postal / ZIP Code", + "companyWebsite": "Company website", + "companyPhoneNumber": "Company phone number", + "country": "Country", + "phoneNumberOptional": "Phone number (optional)", + "complianceConfirmation": "I confirm that I am in compliance with the Fossorial Commercial License and that reporting inaccurate information or misidentifying use of the product is a violation of the license." + }, + "buttons": { + "close": "Close", + "previous": "Previous", + "next": "Next", + "generateLicenseKey": "Generate License Key" + }, + "toasts": { + "success": { + "title": "License key generated successfully", + "description": "Your license key has been generated and is ready to use." + }, + "error": { + "title": "Failed to generate license key", + "description": "An error occurred while generating the license key." + } + } + }, + "priority": "우선순위", + "priorityDescription": "우선 순위가 높은 경로가 먼저 평가됩니다. 우선 순위 = 100은 자동 정렬(시스템 결정)이 의미합니다. 수동 우선 순위를 적용하려면 다른 숫자를 사용하세요.", + "instanceName": "Instance Name", + "pathMatchModalTitle": "Configure Path Matching", + "pathMatchModalDescription": "Set up how incoming requests should be matched based on their path.", + "pathMatchType": "Match Type", + "pathMatchPrefix": "Prefix", + "pathMatchExact": "Exact", + "pathMatchRegex": "Regex", + "pathMatchValue": "Path Value", + "clear": "Clear", + "saveChanges": "Save Changes", + "pathMatchRegexPlaceholder": "^/api/.*", + "pathMatchDefaultPlaceholder": "/path", + "pathMatchPrefixHelp": "Example: /api matches /api, /api/users, etc.", + "pathMatchExactHelp": "Example: /api matches only /api", + "pathMatchRegexHelp": "Example: ^/api/.* matches /api/anything", + "pathRewriteModalTitle": "Configure Path Rewriting", + "pathRewriteModalDescription": "Transform the matched path before forwarding to the target.", + "pathRewriteType": "Rewrite Type", + "pathRewritePrefixOption": "Prefix - Replace prefix", + "pathRewriteExactOption": "Exact - Replace entire path", + "pathRewriteRegexOption": "Regex - Pattern replacement", + "pathRewriteStripPrefixOption": "Strip Prefix - Remove prefix", + "pathRewriteValue": "Rewrite Value", + "pathRewriteRegexPlaceholder": "/new/$1", + "pathRewriteDefaultPlaceholder": "/new-path", + "pathRewritePrefixHelp": "Replace the matched prefix with this value", + "pathRewriteExactHelp": "Replace the entire path with this value when the path matches exactly", + "pathRewriteRegexHelp": "Use capture groups like $1, $2 for replacement", + "pathRewriteStripPrefixHelp": "Leave empty to strip prefix or provide new prefix", + "pathRewritePrefix": "Prefix", + "pathRewriteExact": "Exact", + "pathRewriteRegex": "Regex", + "pathRewriteStrip": "Strip", + "pathRewriteStripLabel": "strip" } diff --git a/messages/nb-NO.json b/messages/nb-NO.json index f7f0d3ab..ad8eb643 100644 --- a/messages/nb-NO.json +++ b/messages/nb-NO.json @@ -96,7 +96,7 @@ "siteWgDescription": "Bruk hvilken som helst WireGuard-klient for å etablere en tunnel. Manuell NAT-oppsett kreves.", "siteWgDescriptionSaas": "Bruk hvilken som helst WireGuard-klient for å etablere en tunnel. Manuell NAT-oppsett er nødvendig. FUNGERER KUN PÅ SELVHOSTEDE NODER", "siteLocalDescription": "Kun lokale ressurser. Ingen tunnelering.", - "siteLocalDescriptionSaas": "Kun lokale ressurser. Ingen tunneling. FUNGERER KUN PÅ SELVHOSTEDE NODER", + "siteLocalDescriptionSaas": "Local resources only. No tunneling. Only available on remote nodes.", "siteSeeAll": "Se alle områder", "siteTunnelDescription": "Bestem hvordan du vil koble deg til ditt område", "siteNewtCredentials": "Newt påloggingsinformasjon", @@ -468,7 +468,10 @@ "createdAt": "Opprettet", "proxyErrorInvalidHeader": "Ugyldig verdi for egendefinert vertsoverskrift. Bruk domenenavnformat, eller lagre tomt for å fjerne den egendefinerte vertsoverskriften.", "proxyErrorTls": "Ugyldig TLS-servernavn. Bruk domenenavnformat, eller la stå tomt for å fjerne TLS-servernavnet.", - "proxyEnableSSL": "Aktiver SSL (https)", + "proxyEnableSSL": "Aktiver SSL", + "proxyEnableSSLDescription": "Aktiver SSL/TLS-kryptering for sikre HTTPS-tilkoblinger til dine mål.", + "target": "Target", + "configureTarget": "Konfigurer mål", "targetErrorFetch": "Kunne ikke hente mål", "targetErrorFetchDescription": "Det oppsto en feil under henting av mål", "siteErrorFetch": "Klarte ikke å hente ressurs", @@ -495,7 +498,7 @@ "targetTlsSettings": "Sikker tilkoblings-konfigurasjon", "targetTlsSettingsDescription": "Konfigurer SSL/TLS-innstillinger for ressursen din", "targetTlsSettingsAdvanced": "Avanserte TLS-innstillinger", - "targetTlsSni": "TLS Servernavn (SNI)", + "targetTlsSni": "TLS servernavn", "targetTlsSniDescription": "TLS-servernavnet som skal brukes for SNI. La stå tomt for å bruke standardverdien.", "targetTlsSubmit": "Lagre innstillinger", "targets": "Målkonfigurasjon", @@ -504,9 +507,21 @@ "targetStickySessionsDescription": "Behold tilkoblinger på samme bakend-mål gjennom hele sesjonen.", "methodSelect": "Velg metode", "targetSubmit": "Legg til mål", - "targetNoOne": "Ingen mål. Legg til et mål ved hjelp av skjemaet.", + "targetNoOne": "Denne ressursen har ikke noen mål. Legg til et mål for å konfigurere hvor du vil sende forespørsler til din backend.", "targetNoOneDescription": "Å legge til mer enn ett mål ovenfor vil aktivere lastbalansering.", "targetsSubmit": "Lagre mål", + "addTarget": "Legg til mål", + "targetErrorInvalidIp": "Ugyldig IP-adresse", + "targetErrorInvalidIpDescription": "Skriv inn en gyldig IP-adresse eller vertsnavn", + "targetErrorInvalidPort": "Ugyldig port", + "targetErrorInvalidPortDescription": "Vennligst skriv inn et gyldig portnummer", + "targetErrorNoSite": "Ingen nettsted valgt", + "targetErrorNoSiteDescription": "Velg et nettsted for målet", + "targetCreated": "Mål opprettet", + "targetCreatedDescription": "Målet har blitt opprettet", + "targetErrorCreate": "Kunne ikke opprette målet", + "targetErrorCreateDescription": "Det oppstod en feil under oppretting av målet", + "save": "Lagre", "proxyAdditional": "Ytterligere Proxy-innstillinger", "proxyAdditionalDescription": "Konfigurer hvordan ressursen din håndterer proxy-innstillinger", "proxyCustomHeader": "Tilpasset verts-header", @@ -715,6 +730,7 @@ "pangolinServerAdmin": "Server Admin - Pangolin", "licenseTierProfessional": "Profesjonell lisens", "licenseTierEnterprise": "Bedriftslisens", + "licenseTierPersonal": "Personal License", "licensed": "Lisensiert", "yes": "Ja", "no": "Nei", @@ -749,7 +765,7 @@ "idpDisplayName": "Et visningsnavn for denne identitetsleverandøren", "idpAutoProvisionUsers": "Automatisk brukerklargjøring", "idpAutoProvisionUsersDescription": "Når aktivert, opprettes brukere automatisk i systemet ved første innlogging, med mulighet til å tilordne brukere til roller og organisasjoner.", - "licenseBadge": "Profesjonell", + "licenseBadge": "EE", "idpType": "Leverandørtype", "idpTypeDescription": "Velg typen identitetsleverandør du ønsker å konfigurere", "idpOidcConfigure": "OAuth2/OIDC-konfigurasjon", @@ -1138,7 +1154,7 @@ "sidebarAllUsers": "Alle brukere", "sidebarIdentityProviders": "Identitetsleverandører", "sidebarLicense": "Lisens", - "sidebarClients": "Klienter (Beta)", + "sidebarClients": "Clients", "sidebarDomains": "Domener", "enableDockerSocket": "Aktiver Docker blåkopi", "enableDockerSocketDescription": "Aktiver skraping av Docker Socket for blueprint Etiketter. Socket bane må brukes for nye.", @@ -1331,7 +1347,6 @@ "twoFactorRequired": "Tofaktorautentisering er påkrevd for å registrere en sikkerhetsnøkkel.", "twoFactor": "Tofaktorautentisering", "adminEnabled2FaOnYourAccount": "Din administrator har aktivert tofaktorautentisering for {email}. Vennligst fullfør oppsettsprosessen for å fortsette.", - "continueToApplication": "Fortsett til applikasjonen", "securityKeyAdd": "Legg til sikkerhetsnøkkel", "securityKeyRegisterTitle": "Registrer ny sikkerhetsnøkkel", "securityKeyRegisterDescription": "Koble til sikkerhetsnøkkelen og skriv inn et navn for å identifisere den", @@ -1409,6 +1424,7 @@ "externalProxyEnabled": "Ekstern proxy aktivert", "addNewTarget": "Legg til nytt mål", "targetsList": "Liste over mål", + "advancedMode": "Avansert modus", "targetErrorDuplicateTargetFound": "Duplikat av mål funnet", "healthCheckHealthy": "Sunn", "healthCheckUnhealthy": "Usunn", @@ -1541,8 +1557,8 @@ "autoLoginError": "Feil ved automatisk innlogging", "autoLoginErrorNoRedirectUrl": "Ingen omdirigerings-URL mottatt fra identitetsleverandøren.", "autoLoginErrorGeneratingUrl": "Kunne ikke generere autentiserings-URL.", - "remoteExitNodeManageRemoteExitNodes": "Administrer Selv-Hostet", - "remoteExitNodeDescription": "Administrer noder for å forlenge nettverkstilkoblingen din", + "remoteExitNodeManageRemoteExitNodes": "Eksterne Noder", + "remoteExitNodeDescription": "Self-host one or more remote nodes to extend your network connectivity and reduce reliance on the cloud", "remoteExitNodes": "Noder", "searchRemoteExitNodes": "Søk noder...", "remoteExitNodeAdd": "Legg til Node", @@ -1552,7 +1568,7 @@ "remoteExitNodeMessageConfirm": "For å bekrefte, skriv inn navnet på noden nedenfor.", "remoteExitNodeConfirmDelete": "Bekreft sletting av Node", "remoteExitNodeDelete": "Slett Node", - "sidebarRemoteExitNodes": "Noder", + "sidebarRemoteExitNodes": "Eksterne Noder", "remoteExitNodeCreate": { "title": "Opprett node", "description": "Opprett en ny node for å utvide nettverkstilkoblingen din", @@ -1721,5 +1737,161 @@ "authPageUpdated": "Godkjenningsside oppdatert", "healthCheckNotAvailable": "Lokal", "rewritePath": "Omskriv sti", - "rewritePathDescription": "Valgfritt omskrive stien før videresending til målet." + "rewritePathDescription": "Valgfritt omskrive stien før videresending til målet.", + "continueToApplication": "Fortsett til applikasjonen", + "checkingInvite": "Sjekker invitasjon", + "setResourceHeaderAuth": "setResourceHeaderAuth", + "resourceHeaderAuthRemove": "Fjern topptekst Auth", + "resourceHeaderAuthRemoveDescription": "Topplinje autentisering fjernet.", + "resourceErrorHeaderAuthRemove": "Kunne ikke fjerne topptekst autentisering", + "resourceErrorHeaderAuthRemoveDescription": "Kunne ikke fjerne topptekst autentisering for ressursen.", + "resourceHeaderAuthProtectionEnabled": "Header Authentication Enabled", + "resourceHeaderAuthProtectionDisabled": "Header Authentication Disabled", + "headerAuthRemove": "Remove Header Auth", + "headerAuthAdd": "Add Header Auth", + "resourceErrorHeaderAuthSetup": "Kunne ikke sette topptekst autentisering", + "resourceErrorHeaderAuthSetupDescription": "Kunne ikke sette topplinje autentisering for ressursen.", + "resourceHeaderAuthSetup": "Header godkjenningssett var vellykket", + "resourceHeaderAuthSetupDescription": "Topplinje autentisering har blitt lagret.", + "resourceHeaderAuthSetupTitle": "Angi topptekst godkjenning", + "resourceHeaderAuthSetupTitleDescription": "Set the basic auth credentials (username and password) to protect this resource with HTTP Header Authentication. Access it using the format https://username:password@resource.example.com", + "resourceHeaderAuthSubmit": "Angi topptekst godkjenning", + "actionSetResourceHeaderAuth": "Angi topptekst godkjenning", + "enterpriseEdition": "Enterprise Edition", + "unlicensed": "Unlicensed", + "beta": "Beta", + "manageClients": "Manage Clients", + "manageClientsDescription": "Clients are devices that can connect to your sites", + "licenseTableValidUntil": "Valid Until", + "saasLicenseKeysSettingsTitle": "Enterprise Licenses", + "saasLicenseKeysSettingsDescription": "Generate and manage Enterprise license keys for self-hosted Pangolin instances", + "sidebarEnterpriseLicenses": "Licenses", + "generateLicenseKey": "Generate License Key", + "generateLicenseKeyForm": { + "validation": { + "emailRequired": "Please enter a valid email address", + "useCaseTypeRequired": "Please select a use case type", + "firstNameRequired": "First name is required", + "lastNameRequired": "Last name is required", + "primaryUseRequired": "Please describe your primary use", + "jobTitleRequiredBusiness": "Job title is required for business use", + "industryRequiredBusiness": "Industry is required for business use", + "stateProvinceRegionRequired": "State/Province/Region is required", + "postalZipCodeRequired": "Postal/ZIP Code is required", + "companyNameRequiredBusiness": "Company name is required for business use", + "countryOfResidenceRequiredBusiness": "Country of residence is required for business use", + "countryRequiredPersonal": "Country is required for personal use", + "agreeToTermsRequired": "You must agree to the terms", + "complianceConfirmationRequired": "You must confirm compliance with the Fossorial Commercial License" + }, + "useCaseOptions": { + "personal": { + "title": "Personal Use", + "description": "For individual, non-commercial use such as learning, personal projects, or experimentation." + }, + "business": { + "title": "Business Use", + "description": "For use within organizations, companies, or commercial or revenue-generating activities." + } + }, + "steps": { + "emailLicenseType": { + "title": "Email & License Type", + "description": "Enter your email and choose your license type" + }, + "personalInformation": { + "title": "Personal Information", + "description": "Tell us about yourself" + }, + "contactInformation": { + "title": "Contact Information", + "description": "Your contact details" + }, + "termsGenerate": { + "title": "Terms & Generate", + "description": "Review and accept terms to generate your license" + } + }, + "alerts": { + "commercialUseDisclosure": { + "title": "Usage Disclosure", + "description": "Select the license tier that accurately reflects your intended use. The Personal License permits free use of the Software for individual, non-commercial or small-scale commercial activities with annual gross revenue under $100,000 USD. Any use beyond these limits — including use within a business, organization, or other revenue-generating environment — requires a valid Enterprise License and payment of the applicable licensing fee. All users, whether Personal or Enterprise, must comply with the Fossorial Commercial License Terms." + }, + "trialPeriodInformation": { + "title": "Trial Period Information", + "description": "This License Key enables Enterprise features for a 7-day evaluation period. Continued access to Paid Features beyond the evaluation period requires activation under a valid Personal or Enterprise License. For Enterprise licensing, contact sales@fossorial.io." + } + }, + "form": { + "useCaseQuestion": "Are you using Pangolin for personal or business use?", + "firstName": "First Name", + "lastName": "Last Name", + "jobTitle": "Job Title", + "primaryUseQuestion": "What do you primarily plan to use Pangolin for?", + "industryQuestion": "What is your industry?", + "prospectiveUsersQuestion": "How many prospective users do you expect to have?", + "prospectiveSitesQuestion": "How many prospective sites (tunnels) do you expect to have?", + "companyName": "Company name", + "countryOfResidence": "Country of residence", + "stateProvinceRegion": "State / Province / Region", + "postalZipCode": "Postal / ZIP Code", + "companyWebsite": "Company website", + "companyPhoneNumber": "Company phone number", + "country": "Country", + "phoneNumberOptional": "Phone number (optional)", + "complianceConfirmation": "I confirm that I am in compliance with the Fossorial Commercial License and that reporting inaccurate information or misidentifying use of the product is a violation of the license." + }, + "buttons": { + "close": "Close", + "previous": "Previous", + "next": "Next", + "generateLicenseKey": "Generate License Key" + }, + "toasts": { + "success": { + "title": "License key generated successfully", + "description": "Your license key has been generated and is ready to use." + }, + "error": { + "title": "Failed to generate license key", + "description": "An error occurred while generating the license key." + } + } + }, + "priority": "Prioritet", + "priorityDescription": "Høyere prioriterte ruter evalueres først. Prioritet = 100 betyr automatisk bestilling (systembeslutninger). Bruk et annet nummer til å håndheve manuell prioritet.", + "instanceName": "Instance Name", + "pathMatchModalTitle": "Configure Path Matching", + "pathMatchModalDescription": "Set up how incoming requests should be matched based on their path.", + "pathMatchType": "Match Type", + "pathMatchPrefix": "Prefix", + "pathMatchExact": "Exact", + "pathMatchRegex": "Regex", + "pathMatchValue": "Path Value", + "clear": "Clear", + "saveChanges": "Save Changes", + "pathMatchRegexPlaceholder": "^/api/.*", + "pathMatchDefaultPlaceholder": "/path", + "pathMatchPrefixHelp": "Example: /api matches /api, /api/users, etc.", + "pathMatchExactHelp": "Example: /api matches only /api", + "pathMatchRegexHelp": "Example: ^/api/.* matches /api/anything", + "pathRewriteModalTitle": "Configure Path Rewriting", + "pathRewriteModalDescription": "Transform the matched path before forwarding to the target.", + "pathRewriteType": "Rewrite Type", + "pathRewritePrefixOption": "Prefix - Replace prefix", + "pathRewriteExactOption": "Exact - Replace entire path", + "pathRewriteRegexOption": "Regex - Pattern replacement", + "pathRewriteStripPrefixOption": "Strip Prefix - Remove prefix", + "pathRewriteValue": "Rewrite Value", + "pathRewriteRegexPlaceholder": "/new/$1", + "pathRewriteDefaultPlaceholder": "/new-path", + "pathRewritePrefixHelp": "Replace the matched prefix with this value", + "pathRewriteExactHelp": "Replace the entire path with this value when the path matches exactly", + "pathRewriteRegexHelp": "Use capture groups like $1, $2 for replacement", + "pathRewriteStripPrefixHelp": "Leave empty to strip prefix or provide new prefix", + "pathRewritePrefix": "Prefix", + "pathRewriteExact": "Exact", + "pathRewriteRegex": "Regex", + "pathRewriteStrip": "Strip", + "pathRewriteStripLabel": "strip" } diff --git a/messages/nl-NL.json b/messages/nl-NL.json index 34d1c811..25181569 100644 --- a/messages/nl-NL.json +++ b/messages/nl-NL.json @@ -96,7 +96,7 @@ "siteWgDescription": "Gebruik een WireGuard client om een tunnel te bouwen. Handmatige NAT installatie vereist.", "siteWgDescriptionSaas": "Gebruik elke WireGuard-client om een tunnel op te zetten. Handmatige NAT-instelling vereist. WERKT ALLEEN OP SELF HOSTED NODES", "siteLocalDescription": "Alleen lokale bronnen. Geen tunneling.", - "siteLocalDescriptionSaas": "Alleen lokale bronnen. Geen tunneling. WERKT ALLEEN OP SELF HOSTED NODES", + "siteLocalDescriptionSaas": "Local resources only. No tunneling. Only available on remote nodes.", "siteSeeAll": "Alle sites bekijken", "siteTunnelDescription": "Bepaal hoe u verbinding wilt maken met uw site", "siteNewtCredentials": "Nieuwste aanmeldgegevens", @@ -468,7 +468,10 @@ "createdAt": "Aangemaakt op", "proxyErrorInvalidHeader": "Ongeldige aangepaste Header waarde. Gebruik het domeinnaam formaat, of sla leeg op om de aangepaste Host header ongedaan te maken.", "proxyErrorTls": "Ongeldige TLS servernaam. Gebruik de domeinnaam of sla leeg op om de TLS servernaam te verwijderen.", - "proxyEnableSSL": "SSL (https) inschakelen", + "proxyEnableSSL": "SSL inschakelen", + "proxyEnableSSLDescription": "SSL/TLS-versleuteling inschakelen voor beveiligde HTTPS-verbindingen naar uw doelen.", + "target": "Target", + "configureTarget": "Doelstellingen configureren", "targetErrorFetch": "Ophalen van doelen mislukt", "targetErrorFetchDescription": "Er is een fout opgetreden bij het ophalen van de objecten", "siteErrorFetch": "Mislukt om resource op te halen", @@ -495,7 +498,7 @@ "targetTlsSettings": "HTTPS & TLS instellingen", "targetTlsSettingsDescription": "SSL/TLS-instellingen voor uw bron configureren", "targetTlsSettingsAdvanced": "Geavanceerde TLS instellingen", - "targetTlsSni": "TLS Server Naam (SNI)", + "targetTlsSni": "TLS servernaam", "targetTlsSniDescription": "De TLS servernaam om te gebruiken voor SNI. Laat leeg om de standaard te gebruiken.", "targetTlsSubmit": "Instellingen opslaan", "targets": "Doelstellingen configuratie", @@ -504,9 +507,21 @@ "targetStickySessionsDescription": "Behoud verbindingen op hetzelfde backend doel voor hun hele sessie.", "methodSelect": "Selecteer methode", "targetSubmit": "Doelwit toevoegen", - "targetNoOne": "Geen doel toegevoegd. Voeg deze toe via dit formulier.", + "targetNoOne": "Deze bron heeft geen doelen. Voeg een doel toe om te configureren waar verzoeken naar uw backend.", "targetNoOneDescription": "Het toevoegen van meer dan één doel hierboven zal de load balancering mogelijk maken.", "targetsSubmit": "Doelstellingen opslaan", + "addTarget": "Doelwit toevoegen", + "targetErrorInvalidIp": "Ongeldig IP-adres", + "targetErrorInvalidIpDescription": "Voer een geldig IP-adres of hostnaam in", + "targetErrorInvalidPort": "Ongeldige poort", + "targetErrorInvalidPortDescription": "Voer een geldig poortnummer in", + "targetErrorNoSite": "Geen site geselecteerd", + "targetErrorNoSiteDescription": "Selecteer een site voor het doel", + "targetCreated": "Doel aangemaakt", + "targetCreatedDescription": "Doel is succesvol aangemaakt", + "targetErrorCreate": "Kan doel niet aanmaken", + "targetErrorCreateDescription": "Fout opgetreden tijdens het aanmaken van het doel", + "save": "Opslaan", "proxyAdditional": "Extra Proxy-instellingen", "proxyAdditionalDescription": "Configureer hoe de proxy-instellingen van uw bron worden afgehandeld", "proxyCustomHeader": "Aangepaste Host-header", @@ -715,6 +730,7 @@ "pangolinServerAdmin": "Serverbeheer - Pangolin", "licenseTierProfessional": "Professionele licentie", "licenseTierEnterprise": "Enterprise Licentie", + "licenseTierPersonal": "Personal License", "licensed": "Gelicentieerd", "yes": "ja", "no": "Neen", @@ -749,7 +765,7 @@ "idpDisplayName": "Een weergavenaam voor deze identiteitsprovider", "idpAutoProvisionUsers": "Auto Provisie Gebruikers", "idpAutoProvisionUsersDescription": "Wanneer ingeschakeld, worden gebruikers automatisch in het systeem aangemaakt wanneer ze de eerste keer inloggen met de mogelijkheid om gebruikers toe te wijzen aan rollen en organisaties.", - "licenseBadge": "Professioneel", + "licenseBadge": "EE", "idpType": "Type provider", "idpTypeDescription": "Selecteer het type identiteitsprovider dat u wilt configureren", "idpOidcConfigure": "OAuth2/OIDC configuratie", @@ -1138,7 +1154,7 @@ "sidebarAllUsers": "Alle gebruikers", "sidebarIdentityProviders": "Identiteit aanbieders", "sidebarLicense": "Licentie", - "sidebarClients": "Clients (Bèta)", + "sidebarClients": "Clients", "sidebarDomains": "Domeinen", "enableDockerSocket": "Schakel Docker Blauwdruk in", "enableDockerSocketDescription": "Schakel Docker Socket label in voor blauwdruk labels. Pad naar Nieuw.", @@ -1331,7 +1347,6 @@ "twoFactorRequired": "Tweestapsverificatie is vereist om een beveiligingssleutel te registreren.", "twoFactor": "Tweestapsverificatie", "adminEnabled2FaOnYourAccount": "Je beheerder heeft tweestapsverificatie voor {email} ingeschakeld. Voltooi het instellingsproces om verder te gaan.", - "continueToApplication": "Doorgaan naar applicatie", "securityKeyAdd": "Beveiligingssleutel toevoegen", "securityKeyRegisterTitle": "Nieuwe beveiligingssleutel registreren", "securityKeyRegisterDescription": "Verbind je beveiligingssleutel en voer een naam in om deze te identificeren", @@ -1409,6 +1424,7 @@ "externalProxyEnabled": "Externe Proxy Ingeschakeld", "addNewTarget": "Voeg nieuw doelwit toe", "targetsList": "Lijst met doelen", + "advancedMode": "Geavanceerde modus", "targetErrorDuplicateTargetFound": "Dubbel doelwit gevonden", "healthCheckHealthy": "Gezond", "healthCheckUnhealthy": "Ongezond", @@ -1541,8 +1557,8 @@ "autoLoginError": "Auto Login Fout", "autoLoginErrorNoRedirectUrl": "Geen redirect URL ontvangen van de identity provider.", "autoLoginErrorGeneratingUrl": "Genereren van authenticatie-URL mislukt.", - "remoteExitNodeManageRemoteExitNodes": "Beheer Zelf-Gehoste", - "remoteExitNodeDescription": "Beheer knooppunten om uw netwerkverbinding uit te breiden", + "remoteExitNodeManageRemoteExitNodes": "Externe knooppunten", + "remoteExitNodeDescription": "Self-host one or more remote nodes to extend your network connectivity and reduce reliance on the cloud", "remoteExitNodes": "Nodes", "searchRemoteExitNodes": "Knooppunten zoeken...", "remoteExitNodeAdd": "Voeg node toe", @@ -1552,7 +1568,7 @@ "remoteExitNodeMessageConfirm": "Om te bevestigen, typ de naam van het knooppunt hieronder.", "remoteExitNodeConfirmDelete": "Bevestig verwijderen node", "remoteExitNodeDelete": "Knoop verwijderen", - "sidebarRemoteExitNodes": "Nodes", + "sidebarRemoteExitNodes": "Externe knooppunten", "remoteExitNodeCreate": { "title": "Maak node", "description": "Maak een nieuwe node aan om uw netwerkverbinding uit te breiden", @@ -1721,5 +1737,161 @@ "authPageUpdated": "Auth-pagina succesvol bijgewerkt", "healthCheckNotAvailable": "Lokaal", "rewritePath": "Herschrijf Pad", - "rewritePathDescription": "Optioneel het pad herschrijven voordat je het naar het doel doorstuurt." + "rewritePathDescription": "Optioneel het pad herschrijven voordat je het naar het doel doorstuurt.", + "continueToApplication": "Doorgaan naar applicatie", + "checkingInvite": "Uitnodiging controleren", + "setResourceHeaderAuth": "stelResourceHeaderAuth", + "resourceHeaderAuthRemove": "Auth koptekst verwijderen", + "resourceHeaderAuthRemoveDescription": "Koptekst authenticatie succesvol verwijderd.", + "resourceErrorHeaderAuthRemove": "Kan Header-authenticatie niet verwijderen", + "resourceErrorHeaderAuthRemoveDescription": "Kon header authenticatie niet verwijderen voor de bron.", + "resourceHeaderAuthProtectionEnabled": "Header Authentication Enabled", + "resourceHeaderAuthProtectionDisabled": "Header Authentication Disabled", + "headerAuthRemove": "Remove Header Auth", + "headerAuthAdd": "Add Header Auth", + "resourceErrorHeaderAuthSetup": "Kan Header Authenticatie niet instellen", + "resourceErrorHeaderAuthSetupDescription": "Kan geen header authenticatie instellen voor de bron.", + "resourceHeaderAuthSetup": "Header Authenticatie set succesvol", + "resourceHeaderAuthSetupDescription": "Header authenticatie is met succes ingesteld.", + "resourceHeaderAuthSetupTitle": "Header Authenticatie instellen", + "resourceHeaderAuthSetupTitleDescription": "Set the basic auth credentials (username and password) to protect this resource with HTTP Header Authentication. Access it using the format https://username:password@resource.example.com", + "resourceHeaderAuthSubmit": "Header Authenticatie instellen", + "actionSetResourceHeaderAuth": "Header Authenticatie instellen", + "enterpriseEdition": "Enterprise Edition", + "unlicensed": "Unlicensed", + "beta": "Beta", + "manageClients": "Manage Clients", + "manageClientsDescription": "Clients are devices that can connect to your sites", + "licenseTableValidUntil": "Valid Until", + "saasLicenseKeysSettingsTitle": "Enterprise Licenses", + "saasLicenseKeysSettingsDescription": "Generate and manage Enterprise license keys for self-hosted Pangolin instances", + "sidebarEnterpriseLicenses": "Licenses", + "generateLicenseKey": "Generate License Key", + "generateLicenseKeyForm": { + "validation": { + "emailRequired": "Please enter a valid email address", + "useCaseTypeRequired": "Please select a use case type", + "firstNameRequired": "First name is required", + "lastNameRequired": "Last name is required", + "primaryUseRequired": "Please describe your primary use", + "jobTitleRequiredBusiness": "Job title is required for business use", + "industryRequiredBusiness": "Industry is required for business use", + "stateProvinceRegionRequired": "State/Province/Region is required", + "postalZipCodeRequired": "Postal/ZIP Code is required", + "companyNameRequiredBusiness": "Company name is required for business use", + "countryOfResidenceRequiredBusiness": "Country of residence is required for business use", + "countryRequiredPersonal": "Country is required for personal use", + "agreeToTermsRequired": "You must agree to the terms", + "complianceConfirmationRequired": "You must confirm compliance with the Fossorial Commercial License" + }, + "useCaseOptions": { + "personal": { + "title": "Personal Use", + "description": "For individual, non-commercial use such as learning, personal projects, or experimentation." + }, + "business": { + "title": "Business Use", + "description": "For use within organizations, companies, or commercial or revenue-generating activities." + } + }, + "steps": { + "emailLicenseType": { + "title": "Email & License Type", + "description": "Enter your email and choose your license type" + }, + "personalInformation": { + "title": "Personal Information", + "description": "Tell us about yourself" + }, + "contactInformation": { + "title": "Contact Information", + "description": "Your contact details" + }, + "termsGenerate": { + "title": "Terms & Generate", + "description": "Review and accept terms to generate your license" + } + }, + "alerts": { + "commercialUseDisclosure": { + "title": "Usage Disclosure", + "description": "Select the license tier that accurately reflects your intended use. The Personal License permits free use of the Software for individual, non-commercial or small-scale commercial activities with annual gross revenue under $100,000 USD. Any use beyond these limits — including use within a business, organization, or other revenue-generating environment — requires a valid Enterprise License and payment of the applicable licensing fee. All users, whether Personal or Enterprise, must comply with the Fossorial Commercial License Terms." + }, + "trialPeriodInformation": { + "title": "Trial Period Information", + "description": "This License Key enables Enterprise features for a 7-day evaluation period. Continued access to Paid Features beyond the evaluation period requires activation under a valid Personal or Enterprise License. For Enterprise licensing, contact sales@fossorial.io." + } + }, + "form": { + "useCaseQuestion": "Are you using Pangolin for personal or business use?", + "firstName": "First Name", + "lastName": "Last Name", + "jobTitle": "Job Title", + "primaryUseQuestion": "What do you primarily plan to use Pangolin for?", + "industryQuestion": "What is your industry?", + "prospectiveUsersQuestion": "How many prospective users do you expect to have?", + "prospectiveSitesQuestion": "How many prospective sites (tunnels) do you expect to have?", + "companyName": "Company name", + "countryOfResidence": "Country of residence", + "stateProvinceRegion": "State / Province / Region", + "postalZipCode": "Postal / ZIP Code", + "companyWebsite": "Company website", + "companyPhoneNumber": "Company phone number", + "country": "Country", + "phoneNumberOptional": "Phone number (optional)", + "complianceConfirmation": "I confirm that I am in compliance with the Fossorial Commercial License and that reporting inaccurate information or misidentifying use of the product is a violation of the license." + }, + "buttons": { + "close": "Close", + "previous": "Previous", + "next": "Next", + "generateLicenseKey": "Generate License Key" + }, + "toasts": { + "success": { + "title": "License key generated successfully", + "description": "Your license key has been generated and is ready to use." + }, + "error": { + "title": "Failed to generate license key", + "description": "An error occurred while generating the license key." + } + } + }, + "priority": "Prioriteit", + "priorityDescription": "routes met hogere prioriteit worden eerst geëvalueerd. Prioriteit = 100 betekent automatisch bestellen (systeem beslist de). Gebruik een ander nummer om handmatige prioriteit af te dwingen.", + "instanceName": "Instance Name", + "pathMatchModalTitle": "Configure Path Matching", + "pathMatchModalDescription": "Set up how incoming requests should be matched based on their path.", + "pathMatchType": "Match Type", + "pathMatchPrefix": "Prefix", + "pathMatchExact": "Exact", + "pathMatchRegex": "Regex", + "pathMatchValue": "Path Value", + "clear": "Clear", + "saveChanges": "Save Changes", + "pathMatchRegexPlaceholder": "^/api/.*", + "pathMatchDefaultPlaceholder": "/path", + "pathMatchPrefixHelp": "Example: /api matches /api, /api/users, etc.", + "pathMatchExactHelp": "Example: /api matches only /api", + "pathMatchRegexHelp": "Example: ^/api/.* matches /api/anything", + "pathRewriteModalTitle": "Configure Path Rewriting", + "pathRewriteModalDescription": "Transform the matched path before forwarding to the target.", + "pathRewriteType": "Rewrite Type", + "pathRewritePrefixOption": "Prefix - Replace prefix", + "pathRewriteExactOption": "Exact - Replace entire path", + "pathRewriteRegexOption": "Regex - Pattern replacement", + "pathRewriteStripPrefixOption": "Strip Prefix - Remove prefix", + "pathRewriteValue": "Rewrite Value", + "pathRewriteRegexPlaceholder": "/new/$1", + "pathRewriteDefaultPlaceholder": "/new-path", + "pathRewritePrefixHelp": "Replace the matched prefix with this value", + "pathRewriteExactHelp": "Replace the entire path with this value when the path matches exactly", + "pathRewriteRegexHelp": "Use capture groups like $1, $2 for replacement", + "pathRewriteStripPrefixHelp": "Leave empty to strip prefix or provide new prefix", + "pathRewritePrefix": "Prefix", + "pathRewriteExact": "Exact", + "pathRewriteRegex": "Regex", + "pathRewriteStrip": "Strip", + "pathRewriteStripLabel": "strip" } diff --git a/messages/pl-PL.json b/messages/pl-PL.json index 08287ed9..834fd4be 100644 --- a/messages/pl-PL.json +++ b/messages/pl-PL.json @@ -96,7 +96,7 @@ "siteWgDescription": "Użyj dowolnego klienta WireGuard do utworzenia tunelu. Wymagana jest ręczna konfiguracja NAT.", "siteWgDescriptionSaas": "Użyj dowolnego klienta WireGuard do utworzenia tunelu. Wymagana ręczna konfiguracja NAT. DZIAŁA TYLKO NA SAMODZIELNIE HOSTOWANYCH WĘZŁACH", "siteLocalDescription": "Tylko lokalne zasoby. Brak tunelu.", - "siteLocalDescriptionSaas": "Tylko zasoby lokalne. Brak tunelowania. DZIAŁA TYLKO NA SAMODZIELNIE HOSTOWANYCH WĘZŁACH", + "siteLocalDescriptionSaas": "Local resources only. No tunneling. Only available on remote nodes.", "siteSeeAll": "Zobacz wszystkie witryny", "siteTunnelDescription": "Określ jak chcesz połączyć się ze swoją stroną", "siteNewtCredentials": "Aktualne dane logowania", @@ -468,7 +468,10 @@ "createdAt": "Utworzono", "proxyErrorInvalidHeader": "Nieprawidłowa wartość niestandardowego nagłówka hosta. Użyj formatu nazwy domeny lub zapisz pusty, aby usunąć niestandardowy nagłówek hosta.", "proxyErrorTls": "Nieprawidłowa nazwa serwera TLS. Użyj formatu nazwy domeny lub zapisz pusty, aby usunąć nazwę serwera TLS.", - "proxyEnableSSL": "Włącz SSL (https)", + "proxyEnableSSL": "Włącz SSL", + "proxyEnableSSLDescription": "Włącz szyfrowanie SSL/TLS dla bezpiecznych połączeń HTTPS z Twoimi celami.", + "target": "Target", + "configureTarget": "Konfiguruj Targety", "targetErrorFetch": "Nie udało się pobrać celów", "targetErrorFetchDescription": "Wystąpił błąd podczas pobierania celów", "siteErrorFetch": "Nie udało się pobrać zasobu", @@ -495,7 +498,7 @@ "targetTlsSettings": "Konfiguracja bezpiecznego połączenia", "targetTlsSettingsDescription": "Skonfiguruj ustawienia SSL/TLS dla twojego zasobu", "targetTlsSettingsAdvanced": "Zaawansowane ustawienia TLS", - "targetTlsSni": "Nazwa serwera TLS (SNI)", + "targetTlsSni": "Nazwa serwera TLS", "targetTlsSniDescription": "Nazwa serwera TLS do użycia dla SNI. Pozostaw puste, aby użyć domyślnej.", "targetTlsSubmit": "Zapisz ustawienia", "targets": "Konfiguracja celów", @@ -504,9 +507,21 @@ "targetStickySessionsDescription": "Utrzymuj połączenia na tym samym celu backendowym przez całą sesję.", "methodSelect": "Wybierz metodę", "targetSubmit": "Dodaj cel", - "targetNoOne": "Brak celów. Dodaj cel używając formularza.", + "targetNoOne": "Ten zasób nie ma żadnych celów. Dodaj cel, aby skonfigurować miejsce wysyłania żądań do twojego backendu.", "targetNoOneDescription": "Dodanie więcej niż jednego celu powyżej włączy równoważenie obciążenia.", "targetsSubmit": "Zapisz cele", + "addTarget": "Dodaj cel", + "targetErrorInvalidIp": "Nieprawidłowy adres IP", + "targetErrorInvalidIpDescription": "Wprowadź prawidłowy adres IP lub nazwę hosta", + "targetErrorInvalidPort": "Nieprawidłowy port", + "targetErrorInvalidPortDescription": "Wprowadź prawidłowy numer portu", + "targetErrorNoSite": "Nie wybrano witryny", + "targetErrorNoSiteDescription": "Wybierz witrynę docelową", + "targetCreated": "Cel utworzony", + "targetCreatedDescription": "Cel został utworzony pomyślnie", + "targetErrorCreate": "Nie udało się utworzyć celu", + "targetErrorCreateDescription": "Wystąpił błąd podczas tworzenia celu", + "save": "Zapisz", "proxyAdditional": "Dodatkowe ustawienia proxy", "proxyAdditionalDescription": "Skonfiguruj jak twój zasób obsługuje ustawienia proxy", "proxyCustomHeader": "Niestandardowy nagłówek hosta", @@ -715,6 +730,7 @@ "pangolinServerAdmin": "Administrator serwera - Pangolin", "licenseTierProfessional": "Licencja Professional", "licenseTierEnterprise": "Licencja Enterprise", + "licenseTierPersonal": "Personal License", "licensed": "Licencjonowany", "yes": "Tak", "no": "Nie", @@ -749,7 +765,7 @@ "idpDisplayName": "Nazwa wyświetlana dla tego dostawcy tożsamości", "idpAutoProvisionUsers": "Automatyczne tworzenie użytkowników", "idpAutoProvisionUsersDescription": "Gdy włączone, użytkownicy będą automatycznie tworzeni w systemie przy pierwszym logowaniu z możliwością mapowania użytkowników do ról i organizacji.", - "licenseBadge": "Profesjonalny", + "licenseBadge": "EE", "idpType": "Typ dostawcy", "idpTypeDescription": "Wybierz typ dostawcy tożsamości, który chcesz skonfigurować", "idpOidcConfigure": "Konfiguracja OAuth2/OIDC", @@ -1138,7 +1154,7 @@ "sidebarAllUsers": "Wszyscy użytkownicy", "sidebarIdentityProviders": "Dostawcy tożsamości", "sidebarLicense": "Licencja", - "sidebarClients": "Klienci (Beta)", + "sidebarClients": "Clients", "sidebarDomains": "Domeny", "enableDockerSocket": "Włącz schemat dokera", "enableDockerSocketDescription": "Włącz etykietowanie kieszeni dokującej dla etykiet schematów. Ścieżka do gniazda musi być dostarczona do Newt.", @@ -1331,7 +1347,6 @@ "twoFactorRequired": "Uwierzytelnianie dwuskładnikowe jest wymagane do zarejestrowania klucza bezpieczeństwa.", "twoFactor": "Uwierzytelnianie dwuskładnikowe", "adminEnabled2FaOnYourAccount": "Twój administrator włączył uwierzytelnianie dwuskładnikowe dla {email}. Proszę ukończyć proces konfiguracji, aby kontynuować.", - "continueToApplication": "Kontynuuj do aplikacji", "securityKeyAdd": "Dodaj klucz bezpieczeństwa", "securityKeyRegisterTitle": "Zarejestruj nowy klucz bezpieczeństwa", "securityKeyRegisterDescription": "Podłącz swój klucz bezpieczeństwa i wprowadź nazwę, aby go zidentyfikować", @@ -1409,6 +1424,7 @@ "externalProxyEnabled": "Zewnętrzny Proxy Włączony", "addNewTarget": "Dodaj nowy cel", "targetsList": "Lista celów", + "advancedMode": "Tryb zaawansowany", "targetErrorDuplicateTargetFound": "Znaleziono duplikat celu", "healthCheckHealthy": "Zdrowy", "healthCheckUnhealthy": "Niezdrowy", @@ -1541,8 +1557,8 @@ "autoLoginError": "Błąd automatycznego logowania", "autoLoginErrorNoRedirectUrl": "Nie otrzymano URL przekierowania od dostawcy tożsamości.", "autoLoginErrorGeneratingUrl": "Nie udało się wygenerować URL uwierzytelniania.", - "remoteExitNodeManageRemoteExitNodes": "Zarządzaj Samodzielnie-Hostingowane", - "remoteExitNodeDescription": "Zarządzaj węzłami w celu rozszerzenia połączenia z siecią", + "remoteExitNodeManageRemoteExitNodes": "Zdalne węzły", + "remoteExitNodeDescription": "Self-host one or more remote nodes to extend your network connectivity and reduce reliance on the cloud", "remoteExitNodes": "Węzły", "searchRemoteExitNodes": "Szukaj węzłów...", "remoteExitNodeAdd": "Dodaj węzeł", @@ -1552,7 +1568,7 @@ "remoteExitNodeMessageConfirm": "Aby potwierdzić, wpisz nazwę węzła poniżej.", "remoteExitNodeConfirmDelete": "Potwierdź usunięcie węzła", "remoteExitNodeDelete": "Usuń węzeł", - "sidebarRemoteExitNodes": "Węzły", + "sidebarRemoteExitNodes": "Zdalne węzły", "remoteExitNodeCreate": { "title": "Utwórz węzeł", "description": "Utwórz nowy węzeł, aby rozszerzyć połączenie z siecią", @@ -1721,5 +1737,161 @@ "authPageUpdated": "Strona uwierzytelniania została pomyślnie zaktualizowana", "healthCheckNotAvailable": "Lokalny", "rewritePath": "Przepis Ścieżki", - "rewritePathDescription": "Opcjonalnie przepisz ścieżkę przed przesłaniem do celu." + "rewritePathDescription": "Opcjonalnie przepisz ścieżkę przed przesłaniem do celu.", + "continueToApplication": "Kontynuuj do aplikacji", + "checkingInvite": "Sprawdzanie zaproszenia", + "setResourceHeaderAuth": "setResourceHeaderAuth", + "resourceHeaderAuthRemove": "Usuń autoryzację nagłówka", + "resourceHeaderAuthRemoveDescription": "Uwierzytelnianie nagłówka zostało pomyślnie usunięte.", + "resourceErrorHeaderAuthRemove": "Nie udało się usunąć uwierzytelniania nagłówka", + "resourceErrorHeaderAuthRemoveDescription": "Nie można usunąć uwierzytelniania nagłówka zasobu.", + "resourceHeaderAuthProtectionEnabled": "Header Authentication Enabled", + "resourceHeaderAuthProtectionDisabled": "Header Authentication Disabled", + "headerAuthRemove": "Remove Header Auth", + "headerAuthAdd": "Add Header Auth", + "resourceErrorHeaderAuthSetup": "Nie udało się ustawić uwierzytelniania nagłówka", + "resourceErrorHeaderAuthSetupDescription": "Nie można ustawić uwierzytelniania nagłówka dla zasobu.", + "resourceHeaderAuthSetup": "Uwierzytelnianie nagłówka ustawione pomyślnie", + "resourceHeaderAuthSetupDescription": "Uwierzytelnianie nagłówka zostało ustawione.", + "resourceHeaderAuthSetupTitle": "Ustaw uwierzytelnianie nagłówka", + "resourceHeaderAuthSetupTitleDescription": "Set the basic auth credentials (username and password) to protect this resource with HTTP Header Authentication. Access it using the format https://username:password@resource.example.com", + "resourceHeaderAuthSubmit": "Ustaw uwierzytelnianie nagłówka", + "actionSetResourceHeaderAuth": "Ustaw uwierzytelnianie nagłówka", + "enterpriseEdition": "Enterprise Edition", + "unlicensed": "Unlicensed", + "beta": "Beta", + "manageClients": "Manage Clients", + "manageClientsDescription": "Clients are devices that can connect to your sites", + "licenseTableValidUntil": "Valid Until", + "saasLicenseKeysSettingsTitle": "Enterprise Licenses", + "saasLicenseKeysSettingsDescription": "Generate and manage Enterprise license keys for self-hosted Pangolin instances", + "sidebarEnterpriseLicenses": "Licenses", + "generateLicenseKey": "Generate License Key", + "generateLicenseKeyForm": { + "validation": { + "emailRequired": "Please enter a valid email address", + "useCaseTypeRequired": "Please select a use case type", + "firstNameRequired": "First name is required", + "lastNameRequired": "Last name is required", + "primaryUseRequired": "Please describe your primary use", + "jobTitleRequiredBusiness": "Job title is required for business use", + "industryRequiredBusiness": "Industry is required for business use", + "stateProvinceRegionRequired": "State/Province/Region is required", + "postalZipCodeRequired": "Postal/ZIP Code is required", + "companyNameRequiredBusiness": "Company name is required for business use", + "countryOfResidenceRequiredBusiness": "Country of residence is required for business use", + "countryRequiredPersonal": "Country is required for personal use", + "agreeToTermsRequired": "You must agree to the terms", + "complianceConfirmationRequired": "You must confirm compliance with the Fossorial Commercial License" + }, + "useCaseOptions": { + "personal": { + "title": "Personal Use", + "description": "For individual, non-commercial use such as learning, personal projects, or experimentation." + }, + "business": { + "title": "Business Use", + "description": "For use within organizations, companies, or commercial or revenue-generating activities." + } + }, + "steps": { + "emailLicenseType": { + "title": "Email & License Type", + "description": "Enter your email and choose your license type" + }, + "personalInformation": { + "title": "Personal Information", + "description": "Tell us about yourself" + }, + "contactInformation": { + "title": "Contact Information", + "description": "Your contact details" + }, + "termsGenerate": { + "title": "Terms & Generate", + "description": "Review and accept terms to generate your license" + } + }, + "alerts": { + "commercialUseDisclosure": { + "title": "Usage Disclosure", + "description": "Select the license tier that accurately reflects your intended use. The Personal License permits free use of the Software for individual, non-commercial or small-scale commercial activities with annual gross revenue under $100,000 USD. Any use beyond these limits — including use within a business, organization, or other revenue-generating environment — requires a valid Enterprise License and payment of the applicable licensing fee. All users, whether Personal or Enterprise, must comply with the Fossorial Commercial License Terms." + }, + "trialPeriodInformation": { + "title": "Trial Period Information", + "description": "This License Key enables Enterprise features for a 7-day evaluation period. Continued access to Paid Features beyond the evaluation period requires activation under a valid Personal or Enterprise License. For Enterprise licensing, contact sales@fossorial.io." + } + }, + "form": { + "useCaseQuestion": "Are you using Pangolin for personal or business use?", + "firstName": "First Name", + "lastName": "Last Name", + "jobTitle": "Job Title", + "primaryUseQuestion": "What do you primarily plan to use Pangolin for?", + "industryQuestion": "What is your industry?", + "prospectiveUsersQuestion": "How many prospective users do you expect to have?", + "prospectiveSitesQuestion": "How many prospective sites (tunnels) do you expect to have?", + "companyName": "Company name", + "countryOfResidence": "Country of residence", + "stateProvinceRegion": "State / Province / Region", + "postalZipCode": "Postal / ZIP Code", + "companyWebsite": "Company website", + "companyPhoneNumber": "Company phone number", + "country": "Country", + "phoneNumberOptional": "Phone number (optional)", + "complianceConfirmation": "I confirm that I am in compliance with the Fossorial Commercial License and that reporting inaccurate information or misidentifying use of the product is a violation of the license." + }, + "buttons": { + "close": "Close", + "previous": "Previous", + "next": "Next", + "generateLicenseKey": "Generate License Key" + }, + "toasts": { + "success": { + "title": "License key generated successfully", + "description": "Your license key has been generated and is ready to use." + }, + "error": { + "title": "Failed to generate license key", + "description": "An error occurred while generating the license key." + } + } + }, + "priority": "Priorytet", + "priorityDescription": "Najpierw oceniane są trasy priorytetowe. Priorytet = 100 oznacza automatyczne zamawianie (decyzje systemowe). Użyj innego numeru, aby wyegzekwować ręczny priorytet.", + "instanceName": "Instance Name", + "pathMatchModalTitle": "Configure Path Matching", + "pathMatchModalDescription": "Set up how incoming requests should be matched based on their path.", + "pathMatchType": "Match Type", + "pathMatchPrefix": "Prefix", + "pathMatchExact": "Exact", + "pathMatchRegex": "Regex", + "pathMatchValue": "Path Value", + "clear": "Clear", + "saveChanges": "Save Changes", + "pathMatchRegexPlaceholder": "^/api/.*", + "pathMatchDefaultPlaceholder": "/path", + "pathMatchPrefixHelp": "Example: /api matches /api, /api/users, etc.", + "pathMatchExactHelp": "Example: /api matches only /api", + "pathMatchRegexHelp": "Example: ^/api/.* matches /api/anything", + "pathRewriteModalTitle": "Configure Path Rewriting", + "pathRewriteModalDescription": "Transform the matched path before forwarding to the target.", + "pathRewriteType": "Rewrite Type", + "pathRewritePrefixOption": "Prefix - Replace prefix", + "pathRewriteExactOption": "Exact - Replace entire path", + "pathRewriteRegexOption": "Regex - Pattern replacement", + "pathRewriteStripPrefixOption": "Strip Prefix - Remove prefix", + "pathRewriteValue": "Rewrite Value", + "pathRewriteRegexPlaceholder": "/new/$1", + "pathRewriteDefaultPlaceholder": "/new-path", + "pathRewritePrefixHelp": "Replace the matched prefix with this value", + "pathRewriteExactHelp": "Replace the entire path with this value when the path matches exactly", + "pathRewriteRegexHelp": "Use capture groups like $1, $2 for replacement", + "pathRewriteStripPrefixHelp": "Leave empty to strip prefix or provide new prefix", + "pathRewritePrefix": "Prefix", + "pathRewriteExact": "Exact", + "pathRewriteRegex": "Regex", + "pathRewriteStrip": "Strip", + "pathRewriteStripLabel": "strip" } diff --git a/messages/pt-PT.json b/messages/pt-PT.json index 5a45eedd..0a93a357 100644 --- a/messages/pt-PT.json +++ b/messages/pt-PT.json @@ -96,7 +96,7 @@ "siteWgDescription": "Use qualquer cliente do WireGuard para estabelecer um túnel. Configuração manual NAT é necessária.", "siteWgDescriptionSaas": "Use qualquer cliente WireGuard para estabelecer um túnel. Configuração manual NAT necessária. SOMENTE FUNCIONA EM NODES AUTO-HOSPEDADOS", "siteLocalDescription": "Recursos locais apenas. Sem túneis.", - "siteLocalDescriptionSaas": "Apenas recursos locais. Sem tunelamento. SOMENTE FUNCIONA EM NODES AUTO-HOSPEDADOS", + "siteLocalDescriptionSaas": "Local resources only. No tunneling. Only available on remote nodes.", "siteSeeAll": "Ver todos os sites", "siteTunnelDescription": "Determine como você deseja se conectar ao seu site", "siteNewtCredentials": "Credenciais Novas", @@ -468,7 +468,10 @@ "createdAt": "Criado Em", "proxyErrorInvalidHeader": "Valor do cabeçalho Host personalizado inválido. Use o formato de nome de domínio ou salve vazio para remover o cabeçalho Host personalizado.", "proxyErrorTls": "Nome do Servidor TLS inválido. Use o formato de nome de domínio ou salve vazio para remover o Nome do Servidor TLS.", - "proxyEnableSSL": "Habilitar SSL (https)", + "proxyEnableSSL": "Habilitar SSL", + "proxyEnableSSLDescription": "Habilitar criptografia SSL/TLS para conexões HTTPS seguras a seus alvos.", + "target": "Target", + "configureTarget": "Configurar Alvos", "targetErrorFetch": "Falha ao buscar alvos", "targetErrorFetchDescription": "Ocorreu um erro ao buscar alvos", "siteErrorFetch": "Falha ao buscar recurso", @@ -495,7 +498,7 @@ "targetTlsSettings": "Configuração de conexão segura", "targetTlsSettingsDescription": "Configurar configurações SSL/TLS para seu recurso", "targetTlsSettingsAdvanced": "Configurações TLS Avançadas", - "targetTlsSni": "Nome do Servidor TLS (SNI)", + "targetTlsSni": "Nome do Servidor TLS", "targetTlsSniDescription": "O Nome do Servidor TLS para usar para SNI. Deixe vazio para usar o padrão.", "targetTlsSubmit": "Guardar Configurações", "targets": "Configuração de Alvos", @@ -504,9 +507,21 @@ "targetStickySessionsDescription": "Manter conexões no mesmo alvo backend durante toda a sessão.", "methodSelect": "Selecionar método", "targetSubmit": "Adicionar Alvo", - "targetNoOne": "Sem alvos. Adicione um alvo usando o formulário.", + "targetNoOne": "Este recurso não tem nenhum alvo. Adicione um alvo para configurar para onde enviar solicitações para sua área de administração.", "targetNoOneDescription": "Adicionar mais de um alvo acima habilitará o balanceamento de carga.", "targetsSubmit": "Guardar Alvos", + "addTarget": "Adicionar Alvo", + "targetErrorInvalidIp": "Endereço IP inválido", + "targetErrorInvalidIpDescription": "Por favor, insira um endereço IP ou nome de host válido", + "targetErrorInvalidPort": "Porta inválida", + "targetErrorInvalidPortDescription": "Por favor, digite um número de porta válido", + "targetErrorNoSite": "Nenhum site selecionado", + "targetErrorNoSiteDescription": "Selecione um site para o destino", + "targetCreated": "Destino criado", + "targetCreatedDescription": "O alvo foi criado com sucesso", + "targetErrorCreate": "Falha ao criar destino", + "targetErrorCreateDescription": "Ocorreu um erro ao criar o destino", + "save": "Guardar", "proxyAdditional": "Configurações Adicionais de Proxy", "proxyAdditionalDescription": "Configure como seu recurso lida com configurações de proxy", "proxyCustomHeader": "Cabeçalho Host Personalizado", @@ -715,6 +730,7 @@ "pangolinServerAdmin": "Administrador do Servidor - Pangolin", "licenseTierProfessional": "Licença Profissional", "licenseTierEnterprise": "Licença Empresarial", + "licenseTierPersonal": "Personal License", "licensed": "Licenciado", "yes": "Sim", "no": "Não", @@ -749,7 +765,7 @@ "idpDisplayName": "Um nome de exibição para este provedor de identidade", "idpAutoProvisionUsers": "Provisionamento Automático de Utilizadores", "idpAutoProvisionUsersDescription": "Quando ativado, os utilizadores serão criados automaticamente no sistema no primeiro login com a capacidade de mapear utilizadores para funções e organizações.", - "licenseBadge": "Profissional", + "licenseBadge": "EE", "idpType": "Tipo de Provedor", "idpTypeDescription": "Selecione o tipo de provedor de identidade que deseja configurar", "idpOidcConfigure": "Configuração OAuth2/OIDC", @@ -1138,7 +1154,7 @@ "sidebarAllUsers": "Todos os utilizadores", "sidebarIdentityProviders": "Provedores de identidade", "sidebarLicense": "Tipo:", - "sidebarClients": "Clientes (Beta)", + "sidebarClients": "Clients", "sidebarDomains": "Domínios", "enableDockerSocket": "Habilitar o Diagrama Docker", "enableDockerSocketDescription": "Ativar a scraping de rótulo Docker para rótulos de diagramas. Caminho de Socket deve ser fornecido para Newt.", @@ -1331,7 +1347,6 @@ "twoFactorRequired": "A autenticação de dois fatores é necessária para registrar uma chave de segurança.", "twoFactor": "Autenticação de Dois Fatores", "adminEnabled2FaOnYourAccount": "Seu administrador ativou a autenticação de dois fatores para {email}. Complete o processo de configuração para continuar.", - "continueToApplication": "Continuar para o aplicativo", "securityKeyAdd": "Adicionar Chave de Segurança", "securityKeyRegisterTitle": "Registrar Nova Chave de Segurança", "securityKeyRegisterDescription": "Conecte sua chave de segurança e insira um nome para identificá-la", @@ -1409,6 +1424,7 @@ "externalProxyEnabled": "Proxy Externo Habilitado", "addNewTarget": "Adicionar Novo Alvo", "targetsList": "Lista de Alvos", + "advancedMode": "Modo Avançado", "targetErrorDuplicateTargetFound": "Alvo duplicado encontrado", "healthCheckHealthy": "Saudável", "healthCheckUnhealthy": "Não Saudável", @@ -1541,8 +1557,8 @@ "autoLoginError": "Erro de Login Automático", "autoLoginErrorNoRedirectUrl": "Nenhum URL de redirecionamento recebido do provedor de identidade.", "autoLoginErrorGeneratingUrl": "Falha ao gerar URL de autenticação.", - "remoteExitNodeManageRemoteExitNodes": "Gerenciar Auto-Hospedados", - "remoteExitNodeDescription": "Gerencie os nós para estender sua conectividade de rede", + "remoteExitNodeManageRemoteExitNodes": "Nós remotos", + "remoteExitNodeDescription": "Self-host one or more remote nodes to extend your network connectivity and reduce reliance on the cloud", "remoteExitNodes": "Nós", "searchRemoteExitNodes": "Buscar nós...", "remoteExitNodeAdd": "Adicionar node", @@ -1552,7 +1568,7 @@ "remoteExitNodeMessageConfirm": "Para confirmar, por favor, digite o nome do nó abaixo.", "remoteExitNodeConfirmDelete": "Confirmar exclusão do nó", "remoteExitNodeDelete": "Excluir nó", - "sidebarRemoteExitNodes": "Nós", + "sidebarRemoteExitNodes": "Nós remotos", "remoteExitNodeCreate": { "title": "Criar nó", "description": "Crie um novo nó para estender sua conectividade de rede", @@ -1721,5 +1737,161 @@ "authPageUpdated": "Página de autenticação atualizada com sucesso", "healthCheckNotAvailable": "Localização", "rewritePath": "Reescrever Caminho", - "rewritePathDescription": "Opcionalmente reescreva o caminho antes de encaminhar ao destino." + "rewritePathDescription": "Opcionalmente reescreva o caminho antes de encaminhar ao destino.", + "continueToApplication": "Continuar para o aplicativo", + "checkingInvite": "Checando convite", + "setResourceHeaderAuth": "setResourceHeaderAuth", + "resourceHeaderAuthRemove": "Remover autenticação de cabeçalho", + "resourceHeaderAuthRemoveDescription": "Autenticação de cabeçalho removida com sucesso.", + "resourceErrorHeaderAuthRemove": "Falha ao remover autenticação de cabeçalho", + "resourceErrorHeaderAuthRemoveDescription": "Não foi possível remover a autenticação do cabeçalho para o recurso.", + "resourceHeaderAuthProtectionEnabled": "Header Authentication Enabled", + "resourceHeaderAuthProtectionDisabled": "Header Authentication Disabled", + "headerAuthRemove": "Remove Header Auth", + "headerAuthAdd": "Add Header Auth", + "resourceErrorHeaderAuthSetup": "Falha ao definir autenticação de cabeçalho", + "resourceErrorHeaderAuthSetupDescription": "Não foi possível definir a autenticação do cabeçalho para o recurso.", + "resourceHeaderAuthSetup": "Autenticação de Cabeçalho definida com sucesso", + "resourceHeaderAuthSetupDescription": "Autenticação de cabeçalho foi definida com sucesso.", + "resourceHeaderAuthSetupTitle": "Definir autenticação de cabeçalho", + "resourceHeaderAuthSetupTitleDescription": "Set the basic auth credentials (username and password) to protect this resource with HTTP Header Authentication. Access it using the format https://username:password@resource.example.com", + "resourceHeaderAuthSubmit": "Definir autenticação de cabeçalho", + "actionSetResourceHeaderAuth": "Definir autenticação de cabeçalho", + "enterpriseEdition": "Enterprise Edition", + "unlicensed": "Unlicensed", + "beta": "Beta", + "manageClients": "Manage Clients", + "manageClientsDescription": "Clients are devices that can connect to your sites", + "licenseTableValidUntil": "Valid Until", + "saasLicenseKeysSettingsTitle": "Enterprise Licenses", + "saasLicenseKeysSettingsDescription": "Generate and manage Enterprise license keys for self-hosted Pangolin instances", + "sidebarEnterpriseLicenses": "Licenses", + "generateLicenseKey": "Generate License Key", + "generateLicenseKeyForm": { + "validation": { + "emailRequired": "Please enter a valid email address", + "useCaseTypeRequired": "Please select a use case type", + "firstNameRequired": "First name is required", + "lastNameRequired": "Last name is required", + "primaryUseRequired": "Please describe your primary use", + "jobTitleRequiredBusiness": "Job title is required for business use", + "industryRequiredBusiness": "Industry is required for business use", + "stateProvinceRegionRequired": "State/Province/Region is required", + "postalZipCodeRequired": "Postal/ZIP Code is required", + "companyNameRequiredBusiness": "Company name is required for business use", + "countryOfResidenceRequiredBusiness": "Country of residence is required for business use", + "countryRequiredPersonal": "Country is required for personal use", + "agreeToTermsRequired": "You must agree to the terms", + "complianceConfirmationRequired": "You must confirm compliance with the Fossorial Commercial License" + }, + "useCaseOptions": { + "personal": { + "title": "Personal Use", + "description": "For individual, non-commercial use such as learning, personal projects, or experimentation." + }, + "business": { + "title": "Business Use", + "description": "For use within organizations, companies, or commercial or revenue-generating activities." + } + }, + "steps": { + "emailLicenseType": { + "title": "Email & License Type", + "description": "Enter your email and choose your license type" + }, + "personalInformation": { + "title": "Personal Information", + "description": "Tell us about yourself" + }, + "contactInformation": { + "title": "Contact Information", + "description": "Your contact details" + }, + "termsGenerate": { + "title": "Terms & Generate", + "description": "Review and accept terms to generate your license" + } + }, + "alerts": { + "commercialUseDisclosure": { + "title": "Usage Disclosure", + "description": "Select the license tier that accurately reflects your intended use. The Personal License permits free use of the Software for individual, non-commercial or small-scale commercial activities with annual gross revenue under $100,000 USD. Any use beyond these limits — including use within a business, organization, or other revenue-generating environment — requires a valid Enterprise License and payment of the applicable licensing fee. All users, whether Personal or Enterprise, must comply with the Fossorial Commercial License Terms." + }, + "trialPeriodInformation": { + "title": "Trial Period Information", + "description": "This License Key enables Enterprise features for a 7-day evaluation period. Continued access to Paid Features beyond the evaluation period requires activation under a valid Personal or Enterprise License. For Enterprise licensing, contact sales@fossorial.io." + } + }, + "form": { + "useCaseQuestion": "Are you using Pangolin for personal or business use?", + "firstName": "First Name", + "lastName": "Last Name", + "jobTitle": "Job Title", + "primaryUseQuestion": "What do you primarily plan to use Pangolin for?", + "industryQuestion": "What is your industry?", + "prospectiveUsersQuestion": "How many prospective users do you expect to have?", + "prospectiveSitesQuestion": "How many prospective sites (tunnels) do you expect to have?", + "companyName": "Company name", + "countryOfResidence": "Country of residence", + "stateProvinceRegion": "State / Province / Region", + "postalZipCode": "Postal / ZIP Code", + "companyWebsite": "Company website", + "companyPhoneNumber": "Company phone number", + "country": "Country", + "phoneNumberOptional": "Phone number (optional)", + "complianceConfirmation": "I confirm that I am in compliance with the Fossorial Commercial License and that reporting inaccurate information or misidentifying use of the product is a violation of the license." + }, + "buttons": { + "close": "Close", + "previous": "Previous", + "next": "Next", + "generateLicenseKey": "Generate License Key" + }, + "toasts": { + "success": { + "title": "License key generated successfully", + "description": "Your license key has been generated and is ready to use." + }, + "error": { + "title": "Failed to generate license key", + "description": "An error occurred while generating the license key." + } + } + }, + "priority": "Prioridade", + "priorityDescription": "Rotas de alta prioridade são avaliadas primeiro. Prioridade = 100 significa ordem automática (decisões do sistema). Use outro número para aplicar prioridade manual.", + "instanceName": "Instance Name", + "pathMatchModalTitle": "Configure Path Matching", + "pathMatchModalDescription": "Set up how incoming requests should be matched based on their path.", + "pathMatchType": "Match Type", + "pathMatchPrefix": "Prefix", + "pathMatchExact": "Exact", + "pathMatchRegex": "Regex", + "pathMatchValue": "Path Value", + "clear": "Clear", + "saveChanges": "Save Changes", + "pathMatchRegexPlaceholder": "^/api/.*", + "pathMatchDefaultPlaceholder": "/path", + "pathMatchPrefixHelp": "Example: /api matches /api, /api/users, etc.", + "pathMatchExactHelp": "Example: /api matches only /api", + "pathMatchRegexHelp": "Example: ^/api/.* matches /api/anything", + "pathRewriteModalTitle": "Configure Path Rewriting", + "pathRewriteModalDescription": "Transform the matched path before forwarding to the target.", + "pathRewriteType": "Rewrite Type", + "pathRewritePrefixOption": "Prefix - Replace prefix", + "pathRewriteExactOption": "Exact - Replace entire path", + "pathRewriteRegexOption": "Regex - Pattern replacement", + "pathRewriteStripPrefixOption": "Strip Prefix - Remove prefix", + "pathRewriteValue": "Rewrite Value", + "pathRewriteRegexPlaceholder": "/new/$1", + "pathRewriteDefaultPlaceholder": "/new-path", + "pathRewritePrefixHelp": "Replace the matched prefix with this value", + "pathRewriteExactHelp": "Replace the entire path with this value when the path matches exactly", + "pathRewriteRegexHelp": "Use capture groups like $1, $2 for replacement", + "pathRewriteStripPrefixHelp": "Leave empty to strip prefix or provide new prefix", + "pathRewritePrefix": "Prefix", + "pathRewriteExact": "Exact", + "pathRewriteRegex": "Regex", + "pathRewriteStrip": "Strip", + "pathRewriteStripLabel": "strip" } diff --git a/messages/ru-RU.json b/messages/ru-RU.json index c41215d2..600725b6 100644 --- a/messages/ru-RU.json +++ b/messages/ru-RU.json @@ -96,7 +96,7 @@ "siteWgDescription": "Используйте любой клиент WireGuard для открытия туннеля. Требуется ручная настройка NAT.", "siteWgDescriptionSaas": "Используйте любой клиент WireGuard для создания туннеля. Требуется ручная настройка NAT. РАБОТАЕТ ТОЛЬКО НА САМОСТОЯТЕЛЬНО РАЗМЕЩЕННЫХ УЗЛАХ", "siteLocalDescription": "Только локальные ресурсы. Без туннелирования.", - "siteLocalDescriptionSaas": "Только локальные ресурсы. Без туннелирования. РАБОТАЕТ ТОЛЬКО НА САМОСТОЯТЕЛЬНО РАЗМЕЩЕННЫХ УЗЛАХ", + "siteLocalDescriptionSaas": "Local resources only. No tunneling. Only available on remote nodes.", "siteSeeAll": "Просмотреть все сайты", "siteTunnelDescription": "Выберите способ подключения к вашему сайту", "siteNewtCredentials": "Учётные данные Newt", @@ -468,7 +468,10 @@ "createdAt": "Создано в", "proxyErrorInvalidHeader": "Неверное значение пользовательского заголовка Host. Используйте формат доменного имени или оставьте пустым для сброса пользовательского заголовка Host.", "proxyErrorTls": "Неверное имя TLS сервера. Используйте формат доменного имени или оставьте пустым для удаления имени TLS сервера.", - "proxyEnableSSL": "Включить SSL (https)", + "proxyEnableSSL": "Включить SSL", + "proxyEnableSSLDescription": "Включить шифрование SSL/TLS для безопасных HTTPS подключений к вашим целям.", + "target": "Target", + "configureTarget": "Настроить адресаты", "targetErrorFetch": "Не удалось получить цели", "targetErrorFetchDescription": "Произошла ошибка при получении целей", "siteErrorFetch": "Не удалось получить ресурс", @@ -495,7 +498,7 @@ "targetTlsSettings": "Конфигурация безопасного соединения", "targetTlsSettingsDescription": "Настройте параметры SSL/TLS для вашего ресурса", "targetTlsSettingsAdvanced": "Расширенные настройки TLS", - "targetTlsSni": "Имя TLS сервера (SNI)", + "targetTlsSni": "Имя TLS сервера", "targetTlsSniDescription": "Имя TLS сервера для использования в SNI. Оставьте пустым для использования по умолчанию.", "targetTlsSubmit": "Сохранить настройки", "targets": "Конфигурация целей", @@ -504,9 +507,21 @@ "targetStickySessionsDescription": "Сохранять соединения на одной и той же целевой точке в течение всей сессии.", "methodSelect": "Выберите метод", "targetSubmit": "Добавить цель", - "targetNoOne": "Нет целей. Добавьте цель с помощью формы.", + "targetNoOne": "Этот ресурс не имеет никаких целей. Добавьте цель для настройки, где отправлять запросы к вашему бэкэнду.", "targetNoOneDescription": "Добавление более одной цели выше включит балансировку нагрузки.", "targetsSubmit": "Сохранить цели", + "addTarget": "Добавить цель", + "targetErrorInvalidIp": "Неверный IP-адрес", + "targetErrorInvalidIpDescription": "Пожалуйста, введите действительный IP адрес или имя хоста", + "targetErrorInvalidPort": "Неверный порт", + "targetErrorInvalidPortDescription": "Пожалуйста, введите правильный номер порта", + "targetErrorNoSite": "Сайт не выбран", + "targetErrorNoSiteDescription": "Пожалуйста, выберите сайт для цели", + "targetCreated": "Цель создана", + "targetCreatedDescription": "Цель была успешно создана", + "targetErrorCreate": "Не удалось создать цель", + "targetErrorCreateDescription": "Произошла ошибка при создании цели", + "save": "Сохранить", "proxyAdditional": "Дополнительные настройки прокси", "proxyAdditionalDescription": "Настройте, как ваш ресурс обрабатывает настройки прокси", "proxyCustomHeader": "Пользовательский заголовок Host", @@ -715,6 +730,7 @@ "pangolinServerAdmin": "Администратор сервера - Pangolin", "licenseTierProfessional": "Профессиональная лицензия", "licenseTierEnterprise": "Корпоративная лицензия", + "licenseTierPersonal": "Personal License", "licensed": "Лицензировано", "yes": "Да", "no": "Нет", @@ -749,7 +765,7 @@ "idpDisplayName": "Отображаемое имя для этого поставщика удостоверений", "idpAutoProvisionUsers": "Автоматическое создание пользователей", "idpAutoProvisionUsersDescription": "При включении пользователи будут автоматически создаваться в системе при первом входе с возможностью сопоставления пользователей с ролями и организациями.", - "licenseBadge": "Профессиональная", + "licenseBadge": "EE", "idpType": "Тип поставщика", "idpTypeDescription": "Выберите тип поставщика удостоверений, который вы хотите настроить", "idpOidcConfigure": "Конфигурация OAuth2/OIDC", @@ -1138,7 +1154,7 @@ "sidebarAllUsers": "Все пользователи", "sidebarIdentityProviders": "Поставщики удостоверений", "sidebarLicense": "Лицензия", - "sidebarClients": "Клиенты (бета)", + "sidebarClients": "Clients", "sidebarDomains": "Домены", "enableDockerSocket": "Включить чертёж Docker", "enableDockerSocketDescription": "Включить scraping ярлыка Docker Socket для ярлыков чертежей. Путь к сокету должен быть предоставлен в Newt.", @@ -1331,7 +1347,6 @@ "twoFactorRequired": "Для регистрации ключа безопасности требуется двухфакторная аутентификация.", "twoFactor": "Двухфакторная аутентификация", "adminEnabled2FaOnYourAccount": "Ваш администратор включил двухфакторную аутентификацию для {email}. Пожалуйста, завершите процесс настройки, чтобы продолжить.", - "continueToApplication": "Перейти к приложению", "securityKeyAdd": "Добавить ключ безопасности", "securityKeyRegisterTitle": "Регистрация нового ключа безопасности", "securityKeyRegisterDescription": "Подключите свой ключ безопасности и введите имя для его идентификации", @@ -1409,6 +1424,7 @@ "externalProxyEnabled": "Внешний прокси включен", "addNewTarget": "Добавить новую цель", "targetsList": "Список целей", + "advancedMode": "Расширенный режим", "targetErrorDuplicateTargetFound": "Обнаружена дублирующаяся цель", "healthCheckHealthy": "Здоровый", "healthCheckUnhealthy": "Нездоровый", @@ -1541,8 +1557,8 @@ "autoLoginError": "Ошибка автоматического входа", "autoLoginErrorNoRedirectUrl": "URL-адрес перенаправления не получен от провайдера удостоверения.", "autoLoginErrorGeneratingUrl": "Не удалось сгенерировать URL-адрес аутентификации.", - "remoteExitNodeManageRemoteExitNodes": "Управление самоуправляемым", - "remoteExitNodeDescription": "Управляйте узлами для расширения сетевого подключения", + "remoteExitNodeManageRemoteExitNodes": "Удаленные узлы", + "remoteExitNodeDescription": "Self-host one or more remote nodes to extend your network connectivity and reduce reliance on the cloud", "remoteExitNodes": "Узлы", "searchRemoteExitNodes": "Поиск узлов...", "remoteExitNodeAdd": "Добавить узел", @@ -1552,7 +1568,7 @@ "remoteExitNodeMessageConfirm": "Для подтверждения введите имя узла ниже.", "remoteExitNodeConfirmDelete": "Подтвердите удаление узла", "remoteExitNodeDelete": "Удалить узел", - "sidebarRemoteExitNodes": "Узлы", + "sidebarRemoteExitNodes": "Удаленные узлы", "remoteExitNodeCreate": { "title": "Создать узел", "description": "Создайте новый узел, чтобы расширить сетевое подключение", @@ -1721,5 +1737,161 @@ "authPageUpdated": "Страница авторизации успешно обновлена", "healthCheckNotAvailable": "Локальный", "rewritePath": "Переписать путь", - "rewritePathDescription": "При необходимости, измените путь перед пересылкой к целевому адресу." + "rewritePathDescription": "При необходимости, измените путь перед пересылкой к целевому адресу.", + "continueToApplication": "Перейти к приложению", + "checkingInvite": "Проверка приглашения", + "setResourceHeaderAuth": "установить заголовок ресурса", + "resourceHeaderAuthRemove": "Удалить проверку подлинности заголовка", + "resourceHeaderAuthRemoveDescription": "Проверка подлинности заголовка успешно удалена.", + "resourceErrorHeaderAuthRemove": "Не удалось удалить аутентификацию заголовка", + "resourceErrorHeaderAuthRemoveDescription": "Не удалось удалить проверку подлинности заголовка ресурса.", + "resourceHeaderAuthProtectionEnabled": "Header Authentication Enabled", + "resourceHeaderAuthProtectionDisabled": "Header Authentication Disabled", + "headerAuthRemove": "Remove Header Auth", + "headerAuthAdd": "Add Header Auth", + "resourceErrorHeaderAuthSetup": "Не удалось установить аутентификацию заголовка", + "resourceErrorHeaderAuthSetupDescription": "Не удалось установить проверку подлинности заголовка ресурса.", + "resourceHeaderAuthSetup": "Проверка подлинности заголовка успешно установлена", + "resourceHeaderAuthSetupDescription": "Проверка подлинности заголовка успешно установлена.", + "resourceHeaderAuthSetupTitle": "Установить проверку подлинности заголовка", + "resourceHeaderAuthSetupTitleDescription": "Set the basic auth credentials (username and password) to protect this resource with HTTP Header Authentication. Access it using the format https://username:password@resource.example.com", + "resourceHeaderAuthSubmit": "Установить проверку подлинности заголовка", + "actionSetResourceHeaderAuth": "Установить проверку подлинности заголовка", + "enterpriseEdition": "Enterprise Edition", + "unlicensed": "Unlicensed", + "beta": "Beta", + "manageClients": "Manage Clients", + "manageClientsDescription": "Clients are devices that can connect to your sites", + "licenseTableValidUntil": "Valid Until", + "saasLicenseKeysSettingsTitle": "Enterprise Licenses", + "saasLicenseKeysSettingsDescription": "Generate and manage Enterprise license keys for self-hosted Pangolin instances", + "sidebarEnterpriseLicenses": "Licenses", + "generateLicenseKey": "Generate License Key", + "generateLicenseKeyForm": { + "validation": { + "emailRequired": "Please enter a valid email address", + "useCaseTypeRequired": "Please select a use case type", + "firstNameRequired": "First name is required", + "lastNameRequired": "Last name is required", + "primaryUseRequired": "Please describe your primary use", + "jobTitleRequiredBusiness": "Job title is required for business use", + "industryRequiredBusiness": "Industry is required for business use", + "stateProvinceRegionRequired": "State/Province/Region is required", + "postalZipCodeRequired": "Postal/ZIP Code is required", + "companyNameRequiredBusiness": "Company name is required for business use", + "countryOfResidenceRequiredBusiness": "Country of residence is required for business use", + "countryRequiredPersonal": "Country is required for personal use", + "agreeToTermsRequired": "You must agree to the terms", + "complianceConfirmationRequired": "You must confirm compliance with the Fossorial Commercial License" + }, + "useCaseOptions": { + "personal": { + "title": "Personal Use", + "description": "For individual, non-commercial use such as learning, personal projects, or experimentation." + }, + "business": { + "title": "Business Use", + "description": "For use within organizations, companies, or commercial or revenue-generating activities." + } + }, + "steps": { + "emailLicenseType": { + "title": "Email & License Type", + "description": "Enter your email and choose your license type" + }, + "personalInformation": { + "title": "Personal Information", + "description": "Tell us about yourself" + }, + "contactInformation": { + "title": "Contact Information", + "description": "Your contact details" + }, + "termsGenerate": { + "title": "Terms & Generate", + "description": "Review and accept terms to generate your license" + } + }, + "alerts": { + "commercialUseDisclosure": { + "title": "Usage Disclosure", + "description": "Select the license tier that accurately reflects your intended use. The Personal License permits free use of the Software for individual, non-commercial or small-scale commercial activities with annual gross revenue under $100,000 USD. Any use beyond these limits — including use within a business, organization, or other revenue-generating environment — requires a valid Enterprise License and payment of the applicable licensing fee. All users, whether Personal or Enterprise, must comply with the Fossorial Commercial License Terms." + }, + "trialPeriodInformation": { + "title": "Trial Period Information", + "description": "This License Key enables Enterprise features for a 7-day evaluation period. Continued access to Paid Features beyond the evaluation period requires activation under a valid Personal or Enterprise License. For Enterprise licensing, contact sales@fossorial.io." + } + }, + "form": { + "useCaseQuestion": "Are you using Pangolin for personal or business use?", + "firstName": "First Name", + "lastName": "Last Name", + "jobTitle": "Job Title", + "primaryUseQuestion": "What do you primarily plan to use Pangolin for?", + "industryQuestion": "What is your industry?", + "prospectiveUsersQuestion": "How many prospective users do you expect to have?", + "prospectiveSitesQuestion": "How many prospective sites (tunnels) do you expect to have?", + "companyName": "Company name", + "countryOfResidence": "Country of residence", + "stateProvinceRegion": "State / Province / Region", + "postalZipCode": "Postal / ZIP Code", + "companyWebsite": "Company website", + "companyPhoneNumber": "Company phone number", + "country": "Country", + "phoneNumberOptional": "Phone number (optional)", + "complianceConfirmation": "I confirm that I am in compliance with the Fossorial Commercial License and that reporting inaccurate information or misidentifying use of the product is a violation of the license." + }, + "buttons": { + "close": "Close", + "previous": "Previous", + "next": "Next", + "generateLicenseKey": "Generate License Key" + }, + "toasts": { + "success": { + "title": "License key generated successfully", + "description": "Your license key has been generated and is ready to use." + }, + "error": { + "title": "Failed to generate license key", + "description": "An error occurred while generating the license key." + } + } + }, + "priority": "Приоритет", + "priorityDescription": "Маршруты с более высоким приоритетом оцениваются первым. Приоритет = 100 означает автоматическое упорядочение (решение системы). Используйте другой номер для обеспечения ручного приоритета.", + "instanceName": "Instance Name", + "pathMatchModalTitle": "Configure Path Matching", + "pathMatchModalDescription": "Set up how incoming requests should be matched based on their path.", + "pathMatchType": "Match Type", + "pathMatchPrefix": "Prefix", + "pathMatchExact": "Exact", + "pathMatchRegex": "Regex", + "pathMatchValue": "Path Value", + "clear": "Clear", + "saveChanges": "Save Changes", + "pathMatchRegexPlaceholder": "^/api/.*", + "pathMatchDefaultPlaceholder": "/path", + "pathMatchPrefixHelp": "Example: /api matches /api, /api/users, etc.", + "pathMatchExactHelp": "Example: /api matches only /api", + "pathMatchRegexHelp": "Example: ^/api/.* matches /api/anything", + "pathRewriteModalTitle": "Configure Path Rewriting", + "pathRewriteModalDescription": "Transform the matched path before forwarding to the target.", + "pathRewriteType": "Rewrite Type", + "pathRewritePrefixOption": "Prefix - Replace prefix", + "pathRewriteExactOption": "Exact - Replace entire path", + "pathRewriteRegexOption": "Regex - Pattern replacement", + "pathRewriteStripPrefixOption": "Strip Prefix - Remove prefix", + "pathRewriteValue": "Rewrite Value", + "pathRewriteRegexPlaceholder": "/new/$1", + "pathRewriteDefaultPlaceholder": "/new-path", + "pathRewritePrefixHelp": "Replace the matched prefix with this value", + "pathRewriteExactHelp": "Replace the entire path with this value when the path matches exactly", + "pathRewriteRegexHelp": "Use capture groups like $1, $2 for replacement", + "pathRewriteStripPrefixHelp": "Leave empty to strip prefix or provide new prefix", + "pathRewritePrefix": "Prefix", + "pathRewriteExact": "Exact", + "pathRewriteRegex": "Regex", + "pathRewriteStrip": "Strip", + "pathRewriteStripLabel": "strip" } diff --git a/messages/tr-TR.json b/messages/tr-TR.json index 6296b7fe..b5b99888 100644 --- a/messages/tr-TR.json +++ b/messages/tr-TR.json @@ -96,7 +96,7 @@ "siteWgDescription": "Bir tünel oluşturmak için herhangi bir WireGuard istemcisi kullanın. Manuel NAT kurulumu gereklidir.", "siteWgDescriptionSaas": "Bir tünel oluşturmak için herhangi bir WireGuard istemcisi kullanın. Manuel NAT kurulumu gereklidir. YALNIZCA SELF HOSTED DÜĞÜMLERDE ÇALIŞIR", "siteLocalDescription": "Yalnızca yerel kaynaklar. Tünelleme yok.", - "siteLocalDescriptionSaas": "Yalnızca yerel kaynaklar. Tünel yok. YALNIZCA SELF HOSTED DÜĞÜMLERDE ÇALIŞIR", + "siteLocalDescriptionSaas": "Local resources only. No tunneling. Only available on remote nodes.", "siteSeeAll": "Tüm Siteleri Gör", "siteTunnelDescription": "Sitenize nasıl bağlanmak istediğinizi belirleyin", "siteNewtCredentials": "Newt Kimlik Bilgileri", @@ -468,7 +468,10 @@ "createdAt": "Oluşturulma Tarihi", "proxyErrorInvalidHeader": "Geçersiz özel Ana Bilgisayar Başlığı değeri. Alan adı formatını kullanın veya özel Ana Bilgisayar Başlığını ayarlamak için boş bırakın.", "proxyErrorTls": "Geçersiz TLS Sunucu Adı. Alan adı formatını kullanın veya TLS Sunucu Adını kaldırmak için boş bırakılsın.", - "proxyEnableSSL": "SSL'yi Etkinleştir (https)", + "proxyEnableSSL": "SSL Etkinleştir", + "proxyEnableSSLDescription": "Hedeflerinize güvenli HTTPS bağlantıları için SSL/TLS şifrelemesi etkinleştirin.", + "target": "Hedef", + "configureTarget": "Hedefleri Yapılandır", "targetErrorFetch": "Hedefleri alamadı", "targetErrorFetchDescription": "Hedefler alınırken bir hata oluştu", "siteErrorFetch": "kaynağa ulaşılamadı", @@ -495,7 +498,7 @@ "targetTlsSettings": "HTTPS & TLS Settings", "targetTlsSettingsDescription": "Configure TLS settings for your resource", "targetTlsSettingsAdvanced": "Gelişmiş TLS Ayarları", - "targetTlsSni": "TLS Sunucu Adı (SNI)", + "targetTlsSni": "TLS Sunucu Adı", "targetTlsSniDescription": "SNI için kullanılacak TLS Sunucu Adı'", "targetTlsSubmit": "Ayarları Kaydet", "targets": "Hedefler Konfigürasyonu", @@ -504,9 +507,21 @@ "targetStickySessionsDescription": "Bağlantıları oturum süresince aynı arka uç hedef üzerinde tutun.", "methodSelect": "Yöntemi Seç", "targetSubmit": "Hedef Ekle", - "targetNoOne": "Hiçbir hedef yok. Formu kullanarak bir hedef ekleyin.", + "targetNoOne": "Bu kaynağın hedefi yok. Arka planınıza istek göndereceğiniz bir hedef yapılandırmak için hedef ekleyin.", "targetNoOneDescription": "Yukarıdaki birden fazla hedef ekleyerek yük dengeleme etkinleştirilecektir.", "targetsSubmit": "Hedefleri Kaydet", + "addTarget": "Hedef Ekle", + "targetErrorInvalidIp": "Geçersiz IP adresi", + "targetErrorInvalidIpDescription": "Lütfen geçerli bir IP adresi veya host adı girin", + "targetErrorInvalidPort": "Geçersiz port", + "targetErrorInvalidPortDescription": "Lütfen geçerli bir port numarası girin", + "targetErrorNoSite": "Hiçbir site seçili değil", + "targetErrorNoSiteDescription": "Lütfen hedef için bir site seçin", + "targetCreated": "Hedef oluşturuldu", + "targetCreatedDescription": "Hedef başarıyla oluşturuldu", + "targetErrorCreate": "Hedef oluşturma başarısız oldu", + "targetErrorCreateDescription": "Hedef oluşturulurken bir hata oluştu", + "save": "Kaydet", "proxyAdditional": "Ek Proxy Ayarları", "proxyAdditionalDescription": "Kaynağınızın proxy ayarlarını nasıl yöneteceğini yapılandırın", "proxyCustomHeader": "Özel Ana Bilgisayar Başlığı", @@ -715,6 +730,7 @@ "pangolinServerAdmin": "Sunucu Yöneticisi - Pangolin", "licenseTierProfessional": "Profesyonel Lisans", "licenseTierEnterprise": "Kurumsal Lisans", + "licenseTierPersonal": "Personal License", "licensed": "Lisanslı", "yes": "Evet", "no": "Hayır", @@ -749,7 +765,7 @@ "idpDisplayName": "Bu kimlik sağlayıcı için bir görüntü adı", "idpAutoProvisionUsers": "Kullanıcıları Otomatik Sağla", "idpAutoProvisionUsersDescription": "Etkinleştirildiğinde, kullanıcılar rol ve organizasyonlara eşleme yeteneğiyle birlikte sistemde otomatik olarak oluşturulacak.", - "licenseBadge": "Profesyonel", + "licenseBadge": "EE", "idpType": "Sağlayıcı Türü", "idpTypeDescription": "Yapılandırmak istediğiniz kimlik sağlayıcısı türünü seçin", "idpOidcConfigure": "OAuth2/OIDC Yapılandırması", @@ -1138,7 +1154,7 @@ "sidebarAllUsers": "Tüm Kullanıcılar", "sidebarIdentityProviders": "Kimlik Sağlayıcılar", "sidebarLicense": "Lisans", - "sidebarClients": "Müşteriler (Beta)", + "sidebarClients": "Clients", "sidebarDomains": "Alan Adları", "enableDockerSocket": "Docker Soketini Etkinleştir", "enableDockerSocketDescription": "Plan etiketleri için Docker Socket etiket toplamasını etkinleştirin. Newt'e soket yolu sağlanmalıdır.", @@ -1331,7 +1347,6 @@ "twoFactorRequired": "Güvenlik anahtarını kaydetmek için iki faktörlü kimlik doğrulama gereklidir.", "twoFactor": "İki Faktörlü Kimlik Doğrulama", "adminEnabled2FaOnYourAccount": "Yöneticiniz {email} için iki faktörlü kimlik doğrulamayı etkinleştirdi. Devam etmek için kurulum işlemini tamamlayın.", - "continueToApplication": "Uygulamaya Devam Et", "securityKeyAdd": "Güvenlik Anahtarı Ekle", "securityKeyRegisterTitle": "Yeni Güvenlik Anahtarı Kaydet", "securityKeyRegisterDescription": "Güvenlik anahtarınızı bağlayın ve tanımlamak için bir ad girin", @@ -1409,6 +1424,7 @@ "externalProxyEnabled": "Dış Proxy Etkinleştirildi", "addNewTarget": "Yeni Hedef Ekle", "targetsList": "Hedefler Listesi", + "advancedMode": "Gelişmiş Mod", "targetErrorDuplicateTargetFound": "Yinelenen hedef bulundu", "healthCheckHealthy": "Sağlıklı", "healthCheckUnhealthy": "Sağlıksız", @@ -1541,8 +1557,8 @@ "autoLoginError": "Otomatik Giriş Hatası", "autoLoginErrorNoRedirectUrl": "Kimlik sağlayıcıdan yönlendirme URL'si alınamadı.", "autoLoginErrorGeneratingUrl": "Kimlik doğrulama URL'si oluşturulamadı.", - "remoteExitNodeManageRemoteExitNodes": "Öz-Host Yönetim", - "remoteExitNodeDescription": "Ağ bağlantınızı genişletmek için düğümleri yönetin", + "remoteExitNodeManageRemoteExitNodes": "Uzak Düğümler", + "remoteExitNodeDescription": "Self-host one or more remote nodes to extend your network connectivity and reduce reliance on the cloud", "remoteExitNodes": "Düğümler", "searchRemoteExitNodes": "Düğüm ara...", "remoteExitNodeAdd": "Düğüm Ekle", @@ -1552,7 +1568,7 @@ "remoteExitNodeMessageConfirm": "Onaylamak için lütfen aşağıya düğümün adını yazın.", "remoteExitNodeConfirmDelete": "Düğüm Silmeyi Onayla", "remoteExitNodeDelete": "Düğümü Sil", - "sidebarRemoteExitNodes": "Düğümler", + "sidebarRemoteExitNodes": "Uzak Düğümler", "remoteExitNodeCreate": { "title": "Düğüm Oluştur", "description": "Ağ bağlantınızı genişletmek için yeni bir düğüm oluşturun", @@ -1721,5 +1737,161 @@ "authPageUpdated": "Kimlik doğrulama sayfası başarıyla güncellendi", "healthCheckNotAvailable": "Yerel", "rewritePath": "Yolu Yeniden Yaz", - "rewritePathDescription": "Seçenek olarak hedefe iletmeden önce yolu yeniden yazın." + "rewritePathDescription": "Seçenek olarak hedefe iletmeden önce yolu yeniden yazın.", + "continueToApplication": "Uygulamaya Devam Et", + "checkingInvite": "Davet Kontrol Ediliyor", + "setResourceHeaderAuth": "setResourceHeaderAuth", + "resourceHeaderAuthRemove": "Başlık Kimlik Doğrulama Kaldır", + "resourceHeaderAuthRemoveDescription": "Başlık kimlik doğrulama başarıyla kaldırıldı.", + "resourceErrorHeaderAuthRemove": "Başlık Kimlik Doğrulama kaldırılamadı", + "resourceErrorHeaderAuthRemoveDescription": "Kaynak için başlık kimlik doğrulaması kaldırılamadı.", + "resourceHeaderAuthProtectionEnabled": "Header Authentication Enabled", + "resourceHeaderAuthProtectionDisabled": "Header Authentication Disabled", + "headerAuthRemove": "Remove Header Auth", + "headerAuthAdd": "Add Header Auth", + "resourceErrorHeaderAuthSetup": "Başlık Kimlik Doğrulama ayarlanamadı", + "resourceErrorHeaderAuthSetupDescription": "Kaynak için başlık kimlik doğrulaması ayarlanamadı.", + "resourceHeaderAuthSetup": "Başlık Kimlik Doğrulama başarıyla ayarlandı", + "resourceHeaderAuthSetupDescription": "Başlık kimlik doğrulaması başarıyla ayarlandı.", + "resourceHeaderAuthSetupTitle": "Başlık Kimlik Doğrulama Ayarla", + "resourceHeaderAuthSetupTitleDescription": "Set the basic auth credentials (username and password) to protect this resource with HTTP Header Authentication. Access it using the format https://username:password@resource.example.com", + "resourceHeaderAuthSubmit": "Başlık Kimlik Doğrulama Ayarla", + "actionSetResourceHeaderAuth": "Başlık Kimlik Doğrulama Ayarla", + "enterpriseEdition": "Enterprise Edition", + "unlicensed": "Unlicensed", + "beta": "Beta", + "manageClients": "Manage Clients", + "manageClientsDescription": "Clients are devices that can connect to your sites", + "licenseTableValidUntil": "Valid Until", + "saasLicenseKeysSettingsTitle": "Enterprise Licenses", + "saasLicenseKeysSettingsDescription": "Generate and manage Enterprise license keys for self-hosted Pangolin instances", + "sidebarEnterpriseLicenses": "Licenses", + "generateLicenseKey": "Generate License Key", + "generateLicenseKeyForm": { + "validation": { + "emailRequired": "Please enter a valid email address", + "useCaseTypeRequired": "Please select a use case type", + "firstNameRequired": "First name is required", + "lastNameRequired": "Last name is required", + "primaryUseRequired": "Please describe your primary use", + "jobTitleRequiredBusiness": "Job title is required for business use", + "industryRequiredBusiness": "Industry is required for business use", + "stateProvinceRegionRequired": "State/Province/Region is required", + "postalZipCodeRequired": "Postal/ZIP Code is required", + "companyNameRequiredBusiness": "Company name is required for business use", + "countryOfResidenceRequiredBusiness": "Country of residence is required for business use", + "countryRequiredPersonal": "Country is required for personal use", + "agreeToTermsRequired": "You must agree to the terms", + "complianceConfirmationRequired": "You must confirm compliance with the Fossorial Commercial License" + }, + "useCaseOptions": { + "personal": { + "title": "Personal Use", + "description": "For individual, non-commercial use such as learning, personal projects, or experimentation." + }, + "business": { + "title": "Business Use", + "description": "For use within organizations, companies, or commercial or revenue-generating activities." + } + }, + "steps": { + "emailLicenseType": { + "title": "Email & License Type", + "description": "Enter your email and choose your license type" + }, + "personalInformation": { + "title": "Personal Information", + "description": "Tell us about yourself" + }, + "contactInformation": { + "title": "Contact Information", + "description": "Your contact details" + }, + "termsGenerate": { + "title": "Terms & Generate", + "description": "Review and accept terms to generate your license" + } + }, + "alerts": { + "commercialUseDisclosure": { + "title": "Usage Disclosure", + "description": "Select the license tier that accurately reflects your intended use. The Personal License permits free use of the Software for individual, non-commercial or small-scale commercial activities with annual gross revenue under $100,000 USD. Any use beyond these limits — including use within a business, organization, or other revenue-generating environment — requires a valid Enterprise License and payment of the applicable licensing fee. All users, whether Personal or Enterprise, must comply with the Fossorial Commercial License Terms." + }, + "trialPeriodInformation": { + "title": "Trial Period Information", + "description": "This License Key enables Enterprise features for a 7-day evaluation period. Continued access to Paid Features beyond the evaluation period requires activation under a valid Personal or Enterprise License. For Enterprise licensing, contact sales@fossorial.io." + } + }, + "form": { + "useCaseQuestion": "Are you using Pangolin for personal or business use?", + "firstName": "First Name", + "lastName": "Last Name", + "jobTitle": "Job Title", + "primaryUseQuestion": "What do you primarily plan to use Pangolin for?", + "industryQuestion": "What is your industry?", + "prospectiveUsersQuestion": "How many prospective users do you expect to have?", + "prospectiveSitesQuestion": "How many prospective sites (tunnels) do you expect to have?", + "companyName": "Company name", + "countryOfResidence": "Country of residence", + "stateProvinceRegion": "State / Province / Region", + "postalZipCode": "Postal / ZIP Code", + "companyWebsite": "Company website", + "companyPhoneNumber": "Company phone number", + "country": "Country", + "phoneNumberOptional": "Phone number (optional)", + "complianceConfirmation": "I confirm that I am in compliance with the Fossorial Commercial License and that reporting inaccurate information or misidentifying use of the product is a violation of the license." + }, + "buttons": { + "close": "Close", + "previous": "Previous", + "next": "Next", + "generateLicenseKey": "Generate License Key" + }, + "toasts": { + "success": { + "title": "License key generated successfully", + "description": "Your license key has been generated and is ready to use." + }, + "error": { + "title": "Failed to generate license key", + "description": "An error occurred while generating the license key." + } + } + }, + "priority": "Öncelik", + "priorityDescription": "Daha yüksek öncelikli rotalar önce değerlendirilir. Öncelik = 100, otomatik sıralama anlamına gelir (sistem karar verir). Manuel öncelik uygulamak için başka bir numara kullanın.", + "instanceName": "Instance Name", + "pathMatchModalTitle": "Configure Path Matching", + "pathMatchModalDescription": "Set up how incoming requests should be matched based on their path.", + "pathMatchType": "Match Type", + "pathMatchPrefix": "Prefix", + "pathMatchExact": "Exact", + "pathMatchRegex": "Regex", + "pathMatchValue": "Path Value", + "clear": "Clear", + "saveChanges": "Save Changes", + "pathMatchRegexPlaceholder": "^/api/.*", + "pathMatchDefaultPlaceholder": "/path", + "pathMatchPrefixHelp": "Example: /api matches /api, /api/users, etc.", + "pathMatchExactHelp": "Example: /api matches only /api", + "pathMatchRegexHelp": "Example: ^/api/.* matches /api/anything", + "pathRewriteModalTitle": "Configure Path Rewriting", + "pathRewriteModalDescription": "Transform the matched path before forwarding to the target.", + "pathRewriteType": "Rewrite Type", + "pathRewritePrefixOption": "Prefix - Replace prefix", + "pathRewriteExactOption": "Exact - Replace entire path", + "pathRewriteRegexOption": "Regex - Pattern replacement", + "pathRewriteStripPrefixOption": "Strip Prefix - Remove prefix", + "pathRewriteValue": "Rewrite Value", + "pathRewriteRegexPlaceholder": "/new/$1", + "pathRewriteDefaultPlaceholder": "/new-path", + "pathRewritePrefixHelp": "Replace the matched prefix with this value", + "pathRewriteExactHelp": "Replace the entire path with this value when the path matches exactly", + "pathRewriteRegexHelp": "Use capture groups like $1, $2 for replacement", + "pathRewriteStripPrefixHelp": "Leave empty to strip prefix or provide new prefix", + "pathRewritePrefix": "Prefix", + "pathRewriteExact": "Exact", + "pathRewriteRegex": "Regex", + "pathRewriteStrip": "Strip", + "pathRewriteStripLabel": "strip" } diff --git a/messages/zh-CN.json b/messages/zh-CN.json index a8f578db..508f3f18 100644 --- a/messages/zh-CN.json +++ b/messages/zh-CN.json @@ -96,7 +96,7 @@ "siteWgDescription": "使用任何 WireGuard 客户端来建立隧道。需要手动配置 NAT。", "siteWgDescriptionSaas": "使用任何WireGuard客户端建立隧道。需要手动配置NAT。仅适用于自托管节点。", "siteLocalDescription": "仅限本地资源。不需要隧道。", - "siteLocalDescriptionSaas": "仅本地资源。无需隧道。仅适用于自托管节点。", + "siteLocalDescriptionSaas": "Local resources only. No tunneling. Only available on remote nodes.", "siteSeeAll": "查看所有站点", "siteTunnelDescription": "确定如何连接到您的网站", "siteNewtCredentials": "Newt 凭据", @@ -468,7 +468,10 @@ "createdAt": "创建于", "proxyErrorInvalidHeader": "无效的自定义主机头值。使用域名格式,或将空保存为取消自定义主机头。", "proxyErrorTls": "无效的 TLS 服务器名称。使用域名格式,或保存空以删除 TLS 服务器名称。", - "proxyEnableSSL": "启用 SSL (https)", + "proxyEnableSSL": "启用 SSL", + "proxyEnableSSLDescription": "启用 SSL/TLS 加密以确保您目标的 HTTPS 连接。", + "target": "Target", + "configureTarget": "配置目标", "targetErrorFetch": "获取目标失败", "targetErrorFetchDescription": "获取目标时出错", "siteErrorFetch": "获取资源失败", @@ -495,7 +498,7 @@ "targetTlsSettings": "安全连接配置", "targetTlsSettingsDescription": "配置资源的 SSL/TLS 设置", "targetTlsSettingsAdvanced": "高级TLS设置", - "targetTlsSni": "TLS 服务器名称 (SNI)", + "targetTlsSni": "TLS 服务器名称", "targetTlsSniDescription": "SNI使用的 TLS 服务器名称。留空使用默认值。", "targetTlsSubmit": "保存设置", "targets": "目标配置", @@ -504,9 +507,21 @@ "targetStickySessionsDescription": "将连接保持在同一个后端目标的整个会话中。", "methodSelect": "选择方法", "targetSubmit": "添加目标", - "targetNoOne": "没有目标。使用表单添加目标。", + "targetNoOne": "此资源没有任何目标。添加目标来配置向您后端发送请求的位置。", "targetNoOneDescription": "在上面添加多个目标将启用负载平衡。", "targetsSubmit": "保存目标", + "addTarget": "添加目标", + "targetErrorInvalidIp": "无效的 IP 地址", + "targetErrorInvalidIpDescription": "请输入有效的IP地址或主机名", + "targetErrorInvalidPort": "无效的端口", + "targetErrorInvalidPortDescription": "请输入有效的端口号", + "targetErrorNoSite": "没有选择站点", + "targetErrorNoSiteDescription": "请选择目标站点", + "targetCreated": "目标已创建", + "targetCreatedDescription": "目标已成功创建", + "targetErrorCreate": "创建目标失败", + "targetErrorCreateDescription": "创建目标时出错", + "save": "保存", "proxyAdditional": "附加代理设置", "proxyAdditionalDescription": "配置你的资源如何处理代理设置", "proxyCustomHeader": "自定义主机标题", @@ -715,6 +730,7 @@ "pangolinServerAdmin": "服务器管理员 - Pangolin", "licenseTierProfessional": "专业许可证", "licenseTierEnterprise": "企业许可证", + "licenseTierPersonal": "Personal License", "licensed": "已授权", "yes": "是", "no": "否", @@ -749,7 +765,7 @@ "idpDisplayName": "此身份提供商的显示名称", "idpAutoProvisionUsers": "自动提供用户", "idpAutoProvisionUsersDescription": "如果启用,用户将在首次登录时自动在系统中创建,并且能够映射用户到角色和组织。", - "licenseBadge": "专业版", + "licenseBadge": "EE", "idpType": "提供者类型", "idpTypeDescription": "选择您想要配置的身份提供者类型", "idpOidcConfigure": "OAuth2/OIDC 配置", @@ -1138,7 +1154,7 @@ "sidebarAllUsers": "所有用户", "sidebarIdentityProviders": "身份提供商", "sidebarLicense": "证书", - "sidebarClients": "客户端(测试版)", + "sidebarClients": "Clients", "sidebarDomains": "域", "enableDockerSocket": "启用 Docker 蓝图", "enableDockerSocketDescription": "启用 Docker Socket 标签擦除蓝图标签。套接字路径必须提供给新的。", @@ -1331,7 +1347,6 @@ "twoFactorRequired": "注册安全密钥需要两步验证。", "twoFactor": "两步验证", "adminEnabled2FaOnYourAccount": "管理员已为{email}启用两步验证。请完成设置以继续。", - "continueToApplication": "继续应用", "securityKeyAdd": "添加安全密钥", "securityKeyRegisterTitle": "注册新安全密钥", "securityKeyRegisterDescription": "连接您的安全密钥并输入名称以便识别", @@ -1409,6 +1424,7 @@ "externalProxyEnabled": "外部代理已启用", "addNewTarget": "添加新目标", "targetsList": "目标列表", + "advancedMode": "高级模式", "targetErrorDuplicateTargetFound": "找到重复的目标", "healthCheckHealthy": "正常", "healthCheckUnhealthy": "不正常", @@ -1541,8 +1557,8 @@ "autoLoginError": "自动登录错误", "autoLoginErrorNoRedirectUrl": "未从身份提供商收到重定向URL。", "autoLoginErrorGeneratingUrl": "生成身份验证URL失败。", - "remoteExitNodeManageRemoteExitNodes": "管理自托管", - "remoteExitNodeDescription": "管理节点以扩展您的网络连接", + "remoteExitNodeManageRemoteExitNodes": "远程节点", + "remoteExitNodeDescription": "Self-host one or more remote nodes to extend your network connectivity and reduce reliance on the cloud", "remoteExitNodes": "节点", "searchRemoteExitNodes": "搜索节点...", "remoteExitNodeAdd": "添加节点", @@ -1552,7 +1568,7 @@ "remoteExitNodeMessageConfirm": "要确认,请输入以下节点的名称。", "remoteExitNodeConfirmDelete": "确认删除节点", "remoteExitNodeDelete": "删除节点", - "sidebarRemoteExitNodes": "节点", + "sidebarRemoteExitNodes": "远程节点", "remoteExitNodeCreate": { "title": "创建节点", "description": "创建一个新节点来扩展您的网络连接", @@ -1721,5 +1737,161 @@ "authPageUpdated": "身份验证页面更新成功", "healthCheckNotAvailable": "本地的", "rewritePath": "重写路径", - "rewritePathDescription": "在转发到目标之前,可以选择重写路径。" + "rewritePathDescription": "在转发到目标之前,可以选择重写路径。", + "continueToApplication": "继续应用", + "checkingInvite": "正在检查邀请", + "setResourceHeaderAuth": "设置 ResourceHeaderAuth", + "resourceHeaderAuthRemove": "删除头部认证", + "resourceHeaderAuthRemoveDescription": "已成功删除头部身份验证。", + "resourceErrorHeaderAuthRemove": "删除头部身份验证失败", + "resourceErrorHeaderAuthRemoveDescription": "无法删除资源的头部身份验证。", + "resourceHeaderAuthProtectionEnabled": "Header Authentication Enabled", + "resourceHeaderAuthProtectionDisabled": "Header Authentication Disabled", + "headerAuthRemove": "Remove Header Auth", + "headerAuthAdd": "Add Header Auth", + "resourceErrorHeaderAuthSetup": "设置页眉认证失败", + "resourceErrorHeaderAuthSetupDescription": "无法设置资源的头部身份验证。", + "resourceHeaderAuthSetup": "头部认证设置成功", + "resourceHeaderAuthSetupDescription": "头部认证已成功设置。", + "resourceHeaderAuthSetupTitle": "设置头部身份验证", + "resourceHeaderAuthSetupTitleDescription": "Set the basic auth credentials (username and password) to protect this resource with HTTP Header Authentication. Access it using the format https://username:password@resource.example.com", + "resourceHeaderAuthSubmit": "设置头部身份验证", + "actionSetResourceHeaderAuth": "设置头部身份验证", + "enterpriseEdition": "Enterprise Edition", + "unlicensed": "Unlicensed", + "beta": "Beta", + "manageClients": "Manage Clients", + "manageClientsDescription": "Clients are devices that can connect to your sites", + "licenseTableValidUntil": "Valid Until", + "saasLicenseKeysSettingsTitle": "Enterprise Licenses", + "saasLicenseKeysSettingsDescription": "Generate and manage Enterprise license keys for self-hosted Pangolin instances", + "sidebarEnterpriseLicenses": "Licenses", + "generateLicenseKey": "Generate License Key", + "generateLicenseKeyForm": { + "validation": { + "emailRequired": "Please enter a valid email address", + "useCaseTypeRequired": "Please select a use case type", + "firstNameRequired": "First name is required", + "lastNameRequired": "Last name is required", + "primaryUseRequired": "Please describe your primary use", + "jobTitleRequiredBusiness": "Job title is required for business use", + "industryRequiredBusiness": "Industry is required for business use", + "stateProvinceRegionRequired": "State/Province/Region is required", + "postalZipCodeRequired": "Postal/ZIP Code is required", + "companyNameRequiredBusiness": "Company name is required for business use", + "countryOfResidenceRequiredBusiness": "Country of residence is required for business use", + "countryRequiredPersonal": "Country is required for personal use", + "agreeToTermsRequired": "You must agree to the terms", + "complianceConfirmationRequired": "You must confirm compliance with the Fossorial Commercial License" + }, + "useCaseOptions": { + "personal": { + "title": "Personal Use", + "description": "For individual, non-commercial use such as learning, personal projects, or experimentation." + }, + "business": { + "title": "Business Use", + "description": "For use within organizations, companies, or commercial or revenue-generating activities." + } + }, + "steps": { + "emailLicenseType": { + "title": "Email & License Type", + "description": "Enter your email and choose your license type" + }, + "personalInformation": { + "title": "Personal Information", + "description": "Tell us about yourself" + }, + "contactInformation": { + "title": "Contact Information", + "description": "Your contact details" + }, + "termsGenerate": { + "title": "Terms & Generate", + "description": "Review and accept terms to generate your license" + } + }, + "alerts": { + "commercialUseDisclosure": { + "title": "Usage Disclosure", + "description": "Select the license tier that accurately reflects your intended use. The Personal License permits free use of the Software for individual, non-commercial or small-scale commercial activities with annual gross revenue under $100,000 USD. Any use beyond these limits — including use within a business, organization, or other revenue-generating environment — requires a valid Enterprise License and payment of the applicable licensing fee. All users, whether Personal or Enterprise, must comply with the Fossorial Commercial License Terms." + }, + "trialPeriodInformation": { + "title": "Trial Period Information", + "description": "This License Key enables Enterprise features for a 7-day evaluation period. Continued access to Paid Features beyond the evaluation period requires activation under a valid Personal or Enterprise License. For Enterprise licensing, contact sales@fossorial.io." + } + }, + "form": { + "useCaseQuestion": "Are you using Pangolin for personal or business use?", + "firstName": "First Name", + "lastName": "Last Name", + "jobTitle": "Job Title", + "primaryUseQuestion": "What do you primarily plan to use Pangolin for?", + "industryQuestion": "What is your industry?", + "prospectiveUsersQuestion": "How many prospective users do you expect to have?", + "prospectiveSitesQuestion": "How many prospective sites (tunnels) do you expect to have?", + "companyName": "Company name", + "countryOfResidence": "Country of residence", + "stateProvinceRegion": "State / Province / Region", + "postalZipCode": "Postal / ZIP Code", + "companyWebsite": "Company website", + "companyPhoneNumber": "Company phone number", + "country": "Country", + "phoneNumberOptional": "Phone number (optional)", + "complianceConfirmation": "I confirm that I am in compliance with the Fossorial Commercial License and that reporting inaccurate information or misidentifying use of the product is a violation of the license." + }, + "buttons": { + "close": "Close", + "previous": "Previous", + "next": "Next", + "generateLicenseKey": "Generate License Key" + }, + "toasts": { + "success": { + "title": "License key generated successfully", + "description": "Your license key has been generated and is ready to use." + }, + "error": { + "title": "Failed to generate license key", + "description": "An error occurred while generating the license key." + } + } + }, + "priority": "优先权", + "priorityDescription": "先评估更高优先级线路。优先级 = 100意味着自动排序(系统决定). 使用另一个数字强制执行手动优先级。", + "instanceName": "Instance Name", + "pathMatchModalTitle": "Configure Path Matching", + "pathMatchModalDescription": "Set up how incoming requests should be matched based on their path.", + "pathMatchType": "Match Type", + "pathMatchPrefix": "Prefix", + "pathMatchExact": "Exact", + "pathMatchRegex": "Regex", + "pathMatchValue": "Path Value", + "clear": "Clear", + "saveChanges": "Save Changes", + "pathMatchRegexPlaceholder": "^/api/.*", + "pathMatchDefaultPlaceholder": "/path", + "pathMatchPrefixHelp": "Example: /api matches /api, /api/users, etc.", + "pathMatchExactHelp": "Example: /api matches only /api", + "pathMatchRegexHelp": "Example: ^/api/.* matches /api/anything", + "pathRewriteModalTitle": "Configure Path Rewriting", + "pathRewriteModalDescription": "Transform the matched path before forwarding to the target.", + "pathRewriteType": "Rewrite Type", + "pathRewritePrefixOption": "Prefix - Replace prefix", + "pathRewriteExactOption": "Exact - Replace entire path", + "pathRewriteRegexOption": "Regex - Pattern replacement", + "pathRewriteStripPrefixOption": "Strip Prefix - Remove prefix", + "pathRewriteValue": "Rewrite Value", + "pathRewriteRegexPlaceholder": "/new/$1", + "pathRewriteDefaultPlaceholder": "/new-path", + "pathRewritePrefixHelp": "Replace the matched prefix with this value", + "pathRewriteExactHelp": "Replace the entire path with this value when the path matches exactly", + "pathRewriteRegexHelp": "Use capture groups like $1, $2 for replacement", + "pathRewriteStripPrefixHelp": "Leave empty to strip prefix or provide new prefix", + "pathRewritePrefix": "Prefix", + "pathRewriteExact": "Exact", + "pathRewriteRegex": "Regex", + "pathRewriteStrip": "Strip", + "pathRewriteStripLabel": "strip" }