From 03b0513a24c02f445d2a852854c56cd2e63f4bda Mon Sep 17 00:00:00 2001 From: abinas <144870133+abinas-hdb@users.noreply.github.com> Date: Sat, 22 Nov 2025 00:12:33 +0900 Subject: [PATCH 01/14] Add Korean translation --- frontend/src/locale/src/ko.json | 683 +++++++++++++++++++++++++ frontend/src/locale/src/lang-list.json | 3 + 2 files changed, 686 insertions(+) create mode 100644 frontend/src/locale/src/ko.json diff --git a/frontend/src/locale/src/ko.json b/frontend/src/locale/src/ko.json new file mode 100644 index 00000000..f9d82d85 --- /dev/null +++ b/frontend/src/locale/src/ko.json @@ -0,0 +1,683 @@ +{ + "access-list": { + "defaultMessage": "접근 정책" + }, + "access-list.access-count": { + "defaultMessage": "{count}개의 정책" + }, + "access-list.auth-count": { + "defaultMessage": "{count}명의 사용자" + }, + "access-list.help-rules-last": { + "defaultMessage": "규칙이 하나라도 있으면 아래 ‘전체 거부’ 규칙이 마지막에 추가됩니다." + }, + "access-list.help.rules-order": { + "defaultMessage": "허용/거부 규칙은 정의된 순서대로 적용됩니다." + }, + "access-list.pass-auth": { + "defaultMessage": "인증 정보를 원본 서버로 전달" + }, + "access-list.public": { + "defaultMessage": "누구나 접근 가능" + }, + "access-list.public.subtitle": { + "defaultMessage": "기본 인증 필요 없음" + }, + "access-list.rule-source.placeholder": { + "defaultMessage": "192.168.1.100 / 192.168.1.0/24 / IPv6" + }, + "access-list.satisfy-any": { + "defaultMessage": "조건 중 하나라도 충족" + }, + "access-list.subtitle": { + "defaultMessage": "{users}명 {users, plural, one {사용자} other {사용자}}, {rules}개 {rules, plural, one {규칙} other {규칙}} - 생성일: {date}" + }, + "access-lists": { + "defaultMessage": "접근 정책" + }, + "action.add": { + "defaultMessage": "추가" + }, + "action.add-location": { + "defaultMessage": "경로 추가" + }, + "action.allow": { + "defaultMessage": "허용" + }, + "action.close": { + "defaultMessage": "닫기" + }, + "action.delete": { + "defaultMessage": "삭제" + }, + "action.deny": { + "defaultMessage": "거부" + }, + "action.disable": { + "defaultMessage": "비활성화" + }, + "action.download": { + "defaultMessage": "다운로드" + }, + "action.edit": { + "defaultMessage": "편집" + }, + "action.enable": { + "defaultMessage": "활성화" + }, + "action.permissions": { + "defaultMessage": "권한" + }, + "action.renew": { + "defaultMessage": "갱신" + }, + "action.view-details": { + "defaultMessage": "자세히 보기" + }, + "auditlogs": { + "defaultMessage": "감사 로그" + }, + "auto": { + "defaultMessage": "자동" + }, + "cancel": { + "defaultMessage": "취소" + }, + "certificate": { + "defaultMessage": "인증서" + }, + "certificate.custom-certificate": { + "defaultMessage": "인증서" + }, + "certificate.custom-certificate-key": { + "defaultMessage": "인증서 키" + }, + "certificate.custom-intermediate": { + "defaultMessage": "중간 인증서" + }, + "certificate.in-use": { + "defaultMessage": "사용 중" + }, + "certificate.none.subtitle": { + "defaultMessage": "지정된 인증서 없음" + }, + "certificate.none.subtitle.for-http": { + "defaultMessage": "이 호스트는 HTTPS를 사용하지 않습니다." + }, + "certificate.none.title": { + "defaultMessage": "없음" + }, + "certificate.not-in-use": { + "defaultMessage": "사용 안 함" + }, + "certificate.renew": { + "defaultMessage": "인증서 갱신" + }, + "certificates": { + "defaultMessage": "인증서" + }, + "certificates.custom": { + "defaultMessage": "사용자 지정 인증서" + }, + "certificates.custom.warning": { + "defaultMessage": "비밀번호로 보호된 키 파일은 지원되지 않습니다." + }, + "certificates.dns.credentials": { + "defaultMessage": "DNS 자격 증명 입력" + }, + "certificates.dns.credentials-note": { + "defaultMessage": "이 플러그인은 API 토큰 등이 포함된 설정 파일이 필요합니다." + }, + "certificates.dns.credentials-warning": { + "defaultMessage": "입력한 정보는 데이터베이스와 파일에 평문으로 저장됩니다." + }, + "certificates.dns.propagation-seconds": { + "defaultMessage": "DNS 전파 시간" + }, + "certificates.dns.propagation-seconds-note": { + "defaultMessage": "비워두면 기본값을 사용합니다. DNS 전파를 기다리는 시간(초)입니다." + }, + "certificates.dns.provider": { + "defaultMessage": "DNS 공급자" + }, + "certificates.dns.provider.placeholder": { + "defaultMessage": "공급자를 선택하세요..." + }, + "certificates.dns.warning": { + "defaultMessage": "이 기능을 사용하려면 Certbot과 DNS 플러그인에 대한 기본적인 이해가 필요합니다. 자세한 내용은 관련 문서를 참고해 주세요." + }, + "certificates.http.reachability-404": { + "defaultMessage": "해당 도메인에서 서버가 탐지되었지만 Nginx Proxy Manager가 아닌 것으로 보입니다. 도메인이 NPM이 실행 중인 IP를 가리키는지 확인하세요." + }, + "certificates.http.reachability-failed-to-check": { + "defaultMessage": "site24x7.com과의 통신 오류로 인해 도달 가능 여부를 확인할 수 없습니다." + }, + "certificates.http.reachability-not-resolved": { + "defaultMessage": "해당 도메인에 접근 가능한 서버가 없습니다. 도메인이 존재하며 NPM이 실행되는 IP를 가리키고, 필요하면 라우터에서 80포트가 포워딩되어 있는지 확인하세요." + }, + "certificates.http.reachability-ok": { + "defaultMessage": "서버에 정상적으로 접근할 수 있으며 인증서 발급이 가능합니다." + }, + "certificates.http.reachability-other": { + "defaultMessage": "해당 도메인에서 서버가 발견되었지만 예상치 못한 상태 코드 {code}를 반환했습니다. NPM 서버가 맞는지 확인하세요." + }, + "certificates.http.reachability-wrong-data": { + "defaultMessage": "서버가 응답했지만 예상치 못한 데이터를 반환했습니다. NPM 서버가 맞는지 확인하세요." + }, + "certificates.http.test-results": { + "defaultMessage": "테스트 결과" + }, + "certificates.http.warning": { + "defaultMessage": "도메인이 이 서버를 가리키도록 설정되어 있어야 합니다." + }, + "certificates.request.subtitle": { + "defaultMessage": "Let's Encrypt 사용" + }, + "certificates.request.title": { + "defaultMessage": "새 인증서 요청" + }, + "column.access": { + "defaultMessage": "접근 정책" + }, + "column.authorization": { + "defaultMessage": "인증 사용자" + }, + "column.authorizations": { + "defaultMessage": "인증 사용자" + }, + "column.custom-locations": { + "defaultMessage": "사용자 지정 경로" + }, + "column.destination": { + "defaultMessage": "전달 대상" + }, + "column.details": { + "defaultMessage": "기본 설정" + }, + "column.email": { + "defaultMessage": "이메일" + }, + "column.event": { + "defaultMessage": "이벤트" + }, + "column.expires": { + "defaultMessage": "만료일" + }, + "column.http-code": { + "defaultMessage": "HTTP 코드" + }, + "column.incoming-port": { + "defaultMessage": "수신 포트" + }, + "column.name": { + "defaultMessage": "이름" + }, + "column.protocol": { + "defaultMessage": "프로토콜" + }, + "column.provider": { + "defaultMessage": "공급자" + }, + "column.roles": { + "defaultMessage": "권한" + }, + "column.rules": { + "defaultMessage": "IP 정책" + }, + "column.satisfy": { + "defaultMessage": "조건 방식" + }, + "column.satisfy-all": { + "defaultMessage": "모두 충족" + }, + "column.satisfy-any": { + "defaultMessage": "하나라도 충족" + }, + "column.scheme": { + "defaultMessage": "프로토콜" + }, + "column.source": { + "defaultMessage": "도메인" + }, + "column.ssl": { + "defaultMessage": "SSL" + }, + "column.status": { + "defaultMessage": "상태" + }, + "created-on": { + "defaultMessage": "생성일: {date}" + }, + "dashboard": { + "defaultMessage": "대시보드" + }, + "dead-host": { + "defaultMessage": "404 호스트" + }, + "dead-hosts": { + "defaultMessage": "404 호스트" + }, + "dead-hosts.count": { + "defaultMessage": "{count}개의 404 호스트" + }, + "disabled": { + "defaultMessage": "비활성화" + }, + "domain-names": { + "defaultMessage": "도메인 이름" + }, + "domain-names.max": { + "defaultMessage": "최대 {count}개의 도메인 이름" + }, + "domain-names.placeholder": { + "defaultMessage": "도메인을 입력해주세요." + }, + "domain-names.wildcards-not-permitted": { + "defaultMessage": "HTTP 방식으로는 와일드카드 인증서를 발급할 수 없습니다." + }, + "domain-names.wildcards-not-supported": { + "defaultMessage": "이 인증 기관(CA)은 와일드카드를 지원하지 않습니다." + }, + "domains.force-ssl": { + "defaultMessage": "SSL 강제 적용" + }, + "domains.hsts-enabled": { + "defaultMessage": "HSTS 활성화" + }, + "domains.hsts-subdomains": { + "defaultMessage": "HSTS 서브도메인 포함" + }, + "domains.http2-support": { + "defaultMessage": "HTTP/2 지원" + }, + "domains.use-dns": { + "defaultMessage": "DNS 챌린지 사용" + }, + "email-address": { + "defaultMessage": "이메일 주소" + }, + "empty-search": { + "defaultMessage": "검색 결과 없음" + }, + "empty-subtitle": { + "defaultMessage": "하나 만들어 보는 건 어떨까요?" + }, + "enabled": { + "defaultMessage": "활성화" + }, + "error.access.at-least-one": { + "defaultMessage": "인증 또는 접근 규칙 중 하나는 반드시 필요합니다." + }, + "error.access.duplicate-usernames": { + "defaultMessage": "인증 사용자 이름은 중복될 수 없습니다." + }, + "error.invalid-auth": { + "defaultMessage": "이메일 또는 비밀번호가 잘못되었습니다." + }, + "error.invalid-domain": { + "defaultMessage": "잘못된 도메인: {domain}" + }, + "error.invalid-email": { + "defaultMessage": "잘못된 이메일 주소입니다." + }, + "error.max-character-length": { + "defaultMessage": "최대 길이는 {max}자입니다." + }, + "error.max-domains": { + "defaultMessage": "도메인이 너무 많습니다. 최대 {max}개까지 가능합니다." + }, + "error.maximum": { + "defaultMessage": "최댓값은 {max}입니다." + }, + "error.min-character-length": { + "defaultMessage": "최소 길이는 {min}자입니다." + }, + "error.minimum": { + "defaultMessage": "최솟값은 {min}입니다." + }, + "error.passwords-must-match": { + "defaultMessage": "비밀번호가 일치해야 합니다." + }, + "error.required": { + "defaultMessage": "필수 항목입니다." + }, + "expires.on": { + "defaultMessage": "만료일: {date}" + }, + "footer.github-fork": { + "defaultMessage": "GitHub에서 포크하기" + }, + "host.flags.block-exploits": { + "defaultMessage": "일반적인 공격 차단" + }, + "host.flags.cache-assets": { + "defaultMessage": "정적 에셋 캐싱" + }, + "host.flags.preserve-path": { + "defaultMessage": "요청 경로 유지" + }, + "host.flags.protocols": { + "defaultMessage": "프로토콜" + }, + "host.flags.websockets-upgrade": { + "defaultMessage": "웹소켓 지원" + }, + "host.forward-port": { + "defaultMessage": "전달할 포트" + }, + "host.forward-scheme": { + "defaultMessage": "프로토콜" + }, + "hosts": { + "defaultMessage": "호스트 목록" + }, + "http-only": { + "defaultMessage": "HTTP 전용" + }, + "lets-encrypt": { + "defaultMessage": "Let's Encrypt" + }, + "lets-encrypt-via-dns": { + "defaultMessage": "Let's Encrypt (DNS 방식)" + }, + "lets-encrypt-via-http": { + "defaultMessage": "Let's Encrypt (HTTP 방식)" + }, + "loading": { + "defaultMessage": "불러오는 중…" + }, + "login.title": { + "defaultMessage": "로그인" + }, + "nginx-config.label": { + "defaultMessage": "사용자 지정 Nginx 설정" + }, + "nginx-config.placeholder": { + "defaultMessage": "# 위험을 감수하고 여기에 사용자 지정 Nginx 설정을 입력하세요!" + }, + "no-permission-error": { + "defaultMessage": "이 내용을 볼 권한이 없습니다." + }, + "notfound.action": { + "defaultMessage": "홈으로 이동" + }, + "notfound.content": { + "defaultMessage": "죄송합니다. 찾으시는 페이지를 찾을 수 없습니다." + }, + "notfound.title": { + "defaultMessage": "이런… 오류 페이지에 도착했습니다." + }, + "notification.error": { + "defaultMessage": "오류" + }, + "notification.object-deleted": { + "defaultMessage": "{object}이(가) 삭제되었습니다." + }, + "notification.object-disabled": { + "defaultMessage": "{object}이(가) 비활성화되었습니다." + }, + "notification.object-enabled": { + "defaultMessage": "{object}이(가) 활성화되었습니다." + }, + "notification.object-renewed": { + "defaultMessage": "{object}이(가) 갱신되었습니다." + }, + "notification.object-saved": { + "defaultMessage": "{object}이(가) 저장되었습니다." + }, + "notification.success": { + "defaultMessage": "성공" + }, + "object.actions-title": { + "defaultMessage": "{object} #{id}" + }, + "object.add": { + "defaultMessage": "{object} 추가" + }, + "object.delete": { + "defaultMessage": "{object} 삭제" + }, + "object.delete.content": { + "defaultMessage": "이 {object}을(를) 정말 삭제하시겠습니까?" + }, + "object.edit": { + "defaultMessage": "{object} 편집" + }, + "object.empty": { + "defaultMessage": "{objects}이(가) 없습니다." + }, + "object.event.created": { + "defaultMessage": "{object}이(가) 생성됨" + }, + "object.event.deleted": { + "defaultMessage": "{object}이(가) 삭제됨" + }, + "object.event.disabled": { + "defaultMessage": "{object}이(가) 비활성화됨" + }, + "object.event.enabled": { + "defaultMessage": "{object}이(가) 활성화됨" + }, + "object.event.renewed": { + "defaultMessage": "{object}이(가) 갱신됨" + }, + "object.event.updated": { + "defaultMessage": "{object}이(가) 업데이트됨" + }, + "offline": { + "defaultMessage": "비활성화" + }, + "online": { + "defaultMessage": "활성화" + }, + "options": { + "defaultMessage": "옵션" + }, + "password": { + "defaultMessage": "비밀번호" + }, + "password.generate": { + "defaultMessage": "무작위 비밀번호 생성" + }, + "password.hide": { + "defaultMessage": "비밀번호 숨기기" + }, + "password.show": { + "defaultMessage": "비밀번호 표시" + }, + "permissions.hidden": { + "defaultMessage": "숨김" + }, + "permissions.manage": { + "defaultMessage": "관리" + }, + "permissions.view": { + "defaultMessage": "보기 전용" + }, + "permissions.visibility.all": { + "defaultMessage": "모든 항목" + }, + "permissions.visibility.title": { + "defaultMessage": "항목 표시 설정" + }, + "permissions.visibility.user": { + "defaultMessage": "내가 만든 항목만" + }, + "proxy-host": { + "defaultMessage": "프록시 호스트" + }, + "proxy-host.forward-host": { + "defaultMessage": "전달할 호스트명 / IP" + }, + "proxy-hosts": { + "defaultMessage": "프록시 호스트" + }, + "proxy-hosts.count": { + "defaultMessage": "{count}개의 프록시 호스트" + }, + "public": { + "defaultMessage": "공개" + }, + "redirection-host": { + "defaultMessage": "리다이렉션 호스트" + }, + "redirection-host.forward-domain": { + "defaultMessage": "전달할 도메인" + }, + "redirection-host.forward-http-code": { + "defaultMessage": "HTTP 코드" + }, + "redirection-hosts": { + "defaultMessage": "리다이렉션 호스트" + }, + "redirection-hosts.count": { + "defaultMessage": "{count}개의 리다이렉션 호스트" + }, + "redirection-hosts.http-code.300": { + "defaultMessage": "300 Multiple Choices" + }, + "redirection-hosts.http-code.301": { + "defaultMessage": "301 Moved permanently" + }, + "redirection-hosts.http-code.302": { + "defaultMessage": "302 Moved temporarily" + }, + "redirection-hosts.http-code.303": { + "defaultMessage": "303 See other" + }, + "redirection-hosts.http-code.307": { + "defaultMessage": "307 Temporary redirect" + }, + "redirection-hosts.http-code.308": { + "defaultMessage": "308 Permanent redirect" + }, + "role.admin": { + "defaultMessage": "관리자" + }, + "role.standard-user": { + "defaultMessage": "일반 사용자" + }, + "save": { + "defaultMessage": "저장" + }, + "setting": { + "defaultMessage": "설정" + }, + "settings": { + "defaultMessage": "설정" + }, + "settings.default-site": { + "defaultMessage": "기본 사이트" + }, + "settings.default-site.404": { + "defaultMessage": "404 페이지" + }, + "settings.default-site.444": { + "defaultMessage": "응답 없음 (444)" + }, + "settings.default-site.congratulations": { + "defaultMessage": "축하 페이지" + }, + "settings.default-site.description": { + "defaultMessage": "알 수 없는 호스트로 요청이 들어왔을 때 표시할 내용" + }, + "settings.default-site.html": { + "defaultMessage": "사용자 지정 HTML" + }, + "settings.default-site.html.placeholder": { + "defaultMessage": "" + }, + "settings.default-site.redirect": { + "defaultMessage": "리다이렉트" + }, + "setup.preamble": { + "defaultMessage": "관리자 계정을 만들어 시작하세요." + }, + "setup.title": { + "defaultMessage": "환영합니다!" + }, + "sign-in": { + "defaultMessage": "로그인" + }, + "ssl-certificate": { + "defaultMessage": "SSL 인증서" + }, + "stream": { + "defaultMessage": "호스트 스트림" + }, + "stream.forward-host": { + "defaultMessage": "전달할 호스트" + }, + "stream.forward-host.placeholder": { + "defaultMessage": "example.com / 10.0.0.1 / IPv6" + }, + "stream.incoming-port": { + "defaultMessage": "수신 포트" + }, + "streams": { + "defaultMessage": "호스트 스트림" + }, + "streams.count": { + "defaultMessage": "{count}개의 호스트 스트림" + }, + "streams.tcp": { + "defaultMessage": "TCP" + }, + "streams.udp": { + "defaultMessage": "UDP" + }, + "test": { + "defaultMessage": "테스트" + }, + "update-available": { + "defaultMessage": "업데이트 가능: {latestVersion}" + }, + "user": { + "defaultMessage": "사용자" + }, + "user.change-password": { + "defaultMessage": "비밀번호 변경" + }, + "user.confirm-password": { + "defaultMessage": "비밀번호 확인" + }, + "user.current-password": { + "defaultMessage": "현재 비밀번호" + }, + "user.edit-profile": { + "defaultMessage": "프로필 편집" + }, + "user.full-name": { + "defaultMessage": "전체 이름" + }, + "user.login-as": { + "defaultMessage": "{name}으로 로그인" + }, + "user.logout": { + "defaultMessage": "로그아웃" + }, + "user.new-password": { + "defaultMessage": "새 비밀번호" + }, + "user.nickname": { + "defaultMessage": "닉네임" + }, + "user.set-password": { + "defaultMessage": "비밀번호 설정" + }, + "user.set-permissions": { + "defaultMessage": "{name}의 권한 설정" + }, + "user.switch-dark": { + "defaultMessage": "다크 모드로 전환" + }, + "user.switch-light": { + "defaultMessage": "라이트 모드로 전환" + }, + "username": { + "defaultMessage": "사용자 이름" + }, + "users": { + "defaultMessage": "사용자" + } +} diff --git a/frontend/src/locale/src/lang-list.json b/frontend/src/locale/src/lang-list.json index 8bbf0e97..a539a4cd 100755 --- a/frontend/src/locale/src/lang-list.json +++ b/frontend/src/locale/src/lang-list.json @@ -31,5 +31,8 @@ }, "locale-nl-NL": { "defaultMessage": "Nederlands" + }, + "locale-ko-KR": { + "defaultMessage": "한국어" } } From 3cb124d5a08190e49acb122f3fcc6b5ceb964ffe Mon Sep 17 00:00:00 2001 From: abinas <144870133+abinas-hdb@users.noreply.github.com> Date: Sat, 22 Nov 2025 00:14:45 +0900 Subject: [PATCH 02/14] Update Korean language support --- frontend/src/locale/IntlProvider.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend/src/locale/IntlProvider.tsx b/frontend/src/locale/IntlProvider.tsx index 5482f63c..9113df07 100755 --- a/frontend/src/locale/IntlProvider.tsx +++ b/frontend/src/locale/IntlProvider.tsx @@ -11,6 +11,7 @@ import langRu from "./lang/ru.json"; import langSk from "./lang/sk.json"; import langVi from "./lang/vi.json"; import langZh from "./lang/zh.json"; +import langKo from "./lang/ko.json"; // first item of each array should be the language code, // not the country code @@ -27,6 +28,7 @@ const localeOptions = [ ["sk", "sk-SK", langSk], ["vi", "vi-VN", langVi], ["zh", "zh-CN", langZh], + ["ko", "ko-KR", langKo], ]; const loadMessages = (locale?: string): typeof langList & typeof langEn => { @@ -47,7 +49,7 @@ const getFlagCodeForLocale = (locale?: string) => { const specialCases: Record = { ja: "jp", // Japan zh: "cn", // China - vi: "vn", // Vietnam + ko: "kr", // Korea }; if (specialCases[thisLocale]) { From 80cf4406d5849f9f740afac661bc40e0cf696a3a Mon Sep 17 00:00:00 2001 From: abinas <144870133+abinas-hdb@users.noreply.github.com> Date: Sat, 22 Nov 2025 00:15:08 +0900 Subject: [PATCH 03/14] Update Korean language support --- frontend/check-locales.cjs | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/check-locales.cjs b/frontend/check-locales.cjs index bd871169..31c970b6 100755 --- a/frontend/check-locales.cjs +++ b/frontend/check-locales.cjs @@ -18,6 +18,7 @@ const allLocales = [ ["sk", "sk-SK"], ["vi", "vi-VN"], ["zh", "zh-CN"], + ["ko", "ko-KR"], ]; const ignoreUnused = [ From c076ad145ce3195d760884473b3625ff6a431f86 Mon Sep 17 00:00:00 2001 From: abinas <144870133+abinas-hdb@users.noreply.github.com> Date: Sat, 22 Nov 2025 00:18:19 +0900 Subject: [PATCH 04/14] Add Korean translation --- frontend/src/locale/src/HelpDoc/ko/ProxyHosts.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 frontend/src/locale/src/HelpDoc/ko/ProxyHosts.md diff --git a/frontend/src/locale/src/HelpDoc/ko/ProxyHosts.md b/frontend/src/locale/src/HelpDoc/ko/ProxyHosts.md new file mode 100644 index 00000000..d94ae111 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/ko/ProxyHosts.md @@ -0,0 +1,7 @@ +## 프록시 호스트란? + +프록시 호스트는 외부에서 들어오는 웹 요청을 받아 지정한 전달 대상으로 전달하는 역할을 합니다. + +원래 SSL을 지원하지 않는 대상이라도, 프록시 호스트를 통해 SSL(HTTPS) 연결을 적용할 수 있습니다. + +프록시 호스트는 Nginx Proxy Manager에서 가장 일반적으로 사용되는 기능입니다. From 991bddf891e1096c000ae48c3d116c243204b10a Mon Sep 17 00:00:00 2001 From: abinas <144870133+abinas-hdb@users.noreply.github.com> Date: Sat, 22 Nov 2025 00:18:36 +0900 Subject: [PATCH 05/14] Add Korean translation --- .../src/locale/src/HelpDoc/ko/AccessLists.md | 11 ++++++++ .../src/locale/src/HelpDoc/ko/Certificates.md | 28 +++++++++++++++++++ .../src/locale/src/HelpDoc/ko/DeadHosts.md | 10 +++++++ .../src/locale/src/HelpDoc/ko/ProxyHosts.md | 1 + .../locale/src/HelpDoc/ko/RedirectionHosts.md | 7 +++++ frontend/src/locale/src/HelpDoc/ko/Streams.md | 7 +++++ frontend/src/locale/src/HelpDoc/ko/index.ts | 7 +++++ 7 files changed, 71 insertions(+) create mode 100644 frontend/src/locale/src/HelpDoc/ko/AccessLists.md create mode 100644 frontend/src/locale/src/HelpDoc/ko/Certificates.md create mode 100644 frontend/src/locale/src/HelpDoc/ko/DeadHosts.md create mode 100644 frontend/src/locale/src/HelpDoc/ko/RedirectionHosts.md create mode 100644 frontend/src/locale/src/HelpDoc/ko/Streams.md create mode 100644 frontend/src/locale/src/HelpDoc/ko/index.ts diff --git a/frontend/src/locale/src/HelpDoc/ko/AccessLists.md b/frontend/src/locale/src/HelpDoc/ko/AccessLists.md new file mode 100644 index 00000000..8e967012 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/ko/AccessLists.md @@ -0,0 +1,11 @@ +## 접근 정책이란? + +접근 정책은 특정 클라이언트 IP 주소를 허용하거나 거부할 수 있으며, +프록시 호스트에 기본 HTTP 인증(Basic Auth) 을 적용할 수 있는 기능입니다. + +하나의 접근 목록에 여러 클라이언트 규칙과 사용자 이름, 비밀번호를 추가한 뒤 +이를 하나 이상의 프록시 호스트에 적용할 수 있습니다. + +이 기능은 인증 기능이 없는 웹 서비스에 인증을 추가하거나, +알 수 없는 클라이언트로부터 서비스를 보호할 때 유용합니다. + diff --git a/frontend/src/locale/src/HelpDoc/ko/Certificates.md b/frontend/src/locale/src/HelpDoc/ko/Certificates.md new file mode 100644 index 00000000..660f3962 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/ko/Certificates.md @@ -0,0 +1,28 @@ +## 인증서 도움말 + +### HTTP 인증서 + +HTTP 검증 방식의 인증서는 Let's Encrypt 서버가 **HTTPS가 아닌 HTTP로** 해당 도메인에 접속을 시도해 응답이 확인되면 인증서를 발급하는 방식입니다. + +이 방식을 사용하려면 도메인에 대한 **프록시 호스트가 미리 생성되어 있어야 하며**, HTTP로 접근할 수 있어야 하고 Nginx Proxy Manager가 설치된 서버를 가리켜야 합니다. 인증서가 발급된 이후에는 해당 프록시 호스트에 HTTPS용 인증서를 적용할 수 있습니다. + +다만, **인증서 자동 갱신을 위해서는 HTTP 접근이 계속 필요합니다.** + +이 방식은 **와일드카드 도메인을 지원하지 않습니다.** + +--- + +### DNS 인증서 + +DNS 검증 방식의 인증서는 DNS 공급자 플러그인을 사용해야 합니다. 이 플러그인은 도메인에 임시 DNS 레코드를 생성하며, Let's Encrypt는 해당 레코드를 조회해 도메인 소유 여부를 확인합니다. 검증이 성공하면 인증서가 발급됩니다. + +이 방식은 인증서를 요청하기 전에 **프록시 호스트를 생성할 필요가 없으며**, 프록시 호스트에 HTTP 접근을 설정할 필요도 없습니다. + +이 방식은 **와일드카드 도메인을 지원합니다.** + +--- + +### 사용자 지정 인증서 + +이 옵션을 사용하면 직접 보유한 인증 기관(CA)에서 발급한 SSL 인증서를 직접 업로드하여 사용할 수 있습니다. + diff --git a/frontend/src/locale/src/HelpDoc/ko/DeadHosts.md b/frontend/src/locale/src/HelpDoc/ko/DeadHosts.md new file mode 100644 index 00000000..032a23c9 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/ko/DeadHosts.md @@ -0,0 +1,10 @@ +## 404 호스트란? + +404 호스트는 404 오류 페이지를 표시하도록 구성된 호스트입니다. + +이 기능은 도메인이 검색 엔진에 이미 색인되어 있을 때, +더 깔끔한 오류 페이지를 제공하거나 해당 페이지가 더 이상 존재하지 않음을 +검색 엔진에게 명확하게 알려야 할 때 유용합니다. + +또한 404 호스트를 사용하면 접근 로그를 확인하고, 어떤 경로(Referrer)를 통해 들어왔는지 추적할 수 있다는 장점도 있습니다. + diff --git a/frontend/src/locale/src/HelpDoc/ko/ProxyHosts.md b/frontend/src/locale/src/HelpDoc/ko/ProxyHosts.md index d94ae111..3212fde7 100644 --- a/frontend/src/locale/src/HelpDoc/ko/ProxyHosts.md +++ b/frontend/src/locale/src/HelpDoc/ko/ProxyHosts.md @@ -5,3 +5,4 @@ 원래 SSL을 지원하지 않는 대상이라도, 프록시 호스트를 통해 SSL(HTTPS) 연결을 적용할 수 있습니다. 프록시 호스트는 Nginx Proxy Manager에서 가장 일반적으로 사용되는 기능입니다. + diff --git a/frontend/src/locale/src/HelpDoc/ko/RedirectionHosts.md b/frontend/src/locale/src/HelpDoc/ko/RedirectionHosts.md new file mode 100644 index 00000000..7494885d --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/ko/RedirectionHosts.md @@ -0,0 +1,7 @@ +## 리다이렉션 호스트란? + +리다이렉션 호스트는 외부에서 들어오는 도메인 요청을 다른 도메인으로 자동 이동(리다이렉트)시키는 역할을 합니다. + +이 유형의 호스트는 주로 웹사이트의 도메인이 변경되었지만, +검색 엔진이나 다른 사이트에 이전 도메인 링크가 남아 있을 때 사용하면 가장 효과적입니다. + diff --git a/frontend/src/locale/src/HelpDoc/ko/Streams.md b/frontend/src/locale/src/HelpDoc/ko/Streams.md new file mode 100644 index 00000000..45107b2c --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/ko/Streams.md @@ -0,0 +1,7 @@ +## 호스트 스트림이란? + +호스트 스트림은 비교적 최근에 Nginx에 추가된 기능으로, +TCP/UDP 트래픽을 네트워크 내의 다른 컴퓨터로 직접 전달하는 데 사용됩니다. + +게임 서버나 FTP, SSH 서버 등을 운영할 때 유용하게 사용할 수 있습니다. + diff --git a/frontend/src/locale/src/HelpDoc/ko/index.ts b/frontend/src/locale/src/HelpDoc/ko/index.ts new file mode 100644 index 00000000..33e015cc --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/ko/index.ts @@ -0,0 +1,7 @@ +export * as AccessLists from "./AccessLists.md"; +export * as Certificates from "./Certificates.md"; +export * as DeadHosts from "./DeadHosts.md"; +export * as ProxyHosts from "./ProxyHosts.md"; +export * as RedirectionHosts from "./RedirectionHosts.md"; +export * as Streams from "./Streams.md"; + From e353a665569778c11af641e040ec64775696075a Mon Sep 17 00:00:00 2001 From: abinas <144870133+abinas-hdb@users.noreply.github.com> Date: Sat, 22 Nov 2025 00:33:27 +0900 Subject: [PATCH 06/14] Update IntlProvider.tsx --- frontend/src/locale/IntlProvider.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/locale/IntlProvider.tsx b/frontend/src/locale/IntlProvider.tsx index 9113df07..3377df2a 100755 --- a/frontend/src/locale/IntlProvider.tsx +++ b/frontend/src/locale/IntlProvider.tsx @@ -49,6 +49,7 @@ const getFlagCodeForLocale = (locale?: string) => { const specialCases: Record = { ja: "jp", // Japan zh: "cn", // China + vi: "vn", // Vietnam ko: "kr", // Korea }; From a1fb54c394a55db9d53f735421ef3adf19e6e71a Mon Sep 17 00:00:00 2001 From: Bare7a Date: Mon, 24 Nov 2025 18:04:50 +0200 Subject: [PATCH 07/14] Before Translating --- frontend/check-locales.cjs | 1 + frontend/src/locale/IntlProvider.tsx | 2 + .../src/locale/src/HelpDoc/bg/AccessLists.md | 7 + .../src/locale/src/HelpDoc/bg/Certificates.md | 32 + .../src/locale/src/HelpDoc/bg/DeadHosts.md | 10 + .../src/locale/src/HelpDoc/bg/ProxyHosts.md | 7 + .../locale/src/HelpDoc/bg/RedirectionHosts.md | 7 + frontend/src/locale/src/HelpDoc/bg/Streams.md | 6 + frontend/src/locale/src/HelpDoc/bg/index.ts | 6 + frontend/src/locale/src/bg.json | 683 ++++++++++++++++++ frontend/src/locale/src/lang-list.json | 3 + 11 files changed, 764 insertions(+) create mode 100644 frontend/src/locale/src/HelpDoc/bg/AccessLists.md create mode 100644 frontend/src/locale/src/HelpDoc/bg/Certificates.md create mode 100644 frontend/src/locale/src/HelpDoc/bg/DeadHosts.md create mode 100644 frontend/src/locale/src/HelpDoc/bg/ProxyHosts.md create mode 100644 frontend/src/locale/src/HelpDoc/bg/RedirectionHosts.md create mode 100644 frontend/src/locale/src/HelpDoc/bg/Streams.md create mode 100644 frontend/src/locale/src/HelpDoc/bg/index.ts create mode 100644 frontend/src/locale/src/bg.json diff --git a/frontend/check-locales.cjs b/frontend/check-locales.cjs index bd871169..6f133944 100755 --- a/frontend/check-locales.cjs +++ b/frontend/check-locales.cjs @@ -18,6 +18,7 @@ const allLocales = [ ["sk", "sk-SK"], ["vi", "vi-VN"], ["zh", "zh-CN"], + ["bg", "bg-BG"], ]; const ignoreUnused = [ diff --git a/frontend/src/locale/IntlProvider.tsx b/frontend/src/locale/IntlProvider.tsx index 5482f63c..aaefae84 100755 --- a/frontend/src/locale/IntlProvider.tsx +++ b/frontend/src/locale/IntlProvider.tsx @@ -11,6 +11,7 @@ import langRu from "./lang/ru.json"; import langSk from "./lang/sk.json"; import langVi from "./lang/vi.json"; import langZh from "./lang/zh.json"; +import langBg from "./lang/bg.json"; // first item of each array should be the language code, // not the country code @@ -27,6 +28,7 @@ const localeOptions = [ ["sk", "sk-SK", langSk], ["vi", "vi-VN", langVi], ["zh", "zh-CN", langZh], + ["bg", "bg-BG", langBg], ]; const loadMessages = (locale?: string): typeof langList & typeof langEn => { diff --git a/frontend/src/locale/src/HelpDoc/bg/AccessLists.md b/frontend/src/locale/src/HelpDoc/bg/AccessLists.md new file mode 100644 index 00000000..cef58263 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/bg/AccessLists.md @@ -0,0 +1,7 @@ +## What is an Access List? + +Access Lists provide a blacklist or whitelist of specific client IP addresses along with authentication for the Proxy Hosts via Basic HTTP Authentication. + +You can configure multiple client rules, usernames and passwords for a single Access List and then apply that to one or more _Proxy Hosts_. + +This is most useful for forwarded web services that do not have authentication mechanisms built in or when you want to protect from unknown clients. diff --git a/frontend/src/locale/src/HelpDoc/bg/Certificates.md b/frontend/src/locale/src/HelpDoc/bg/Certificates.md new file mode 100644 index 00000000..d79dd04b --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/bg/Certificates.md @@ -0,0 +1,32 @@ +## Certificates Help + +### HTTP Certificate + +A HTTP validated certificate means Let's Encrypt servers will +attempt to reach your domains over HTTP (not HTTPS!) and if successful, they +will issue your certificate. + +For this method, you will have to have a _Proxy Host_ created for your domains(s) that +is accessible with HTTP and pointing to this Nginx installation. After a certificate +has been given, you can modify the _Proxy Host_ to also use this certificate for HTTPS +connections. However, the _Proxy Host_ will still need to be configured for HTTP access +in order for the certificate to renew. + +This process _does not_ support wildcard domains. + +### DNS Certificate + +A DNS validated certificate requires you to use a DNS Provider plugin. This DNS +Provider will be used to create temporary records on your domain and then Let's +Encrypt will query those records to be sure you're the owner and if successful, they +will issue your certificate. + +You do not need a _Proxy Host_ to be created prior to requesting this type of +certificate. Nor do you need to have your _Proxy Host_ configured for HTTP access. + +This process _does_ support wildcard domains. + +### Custom Certificate + +Use this option to upload your own SSL Certificate, as provided by your own +Certificate Authority. diff --git a/frontend/src/locale/src/HelpDoc/bg/DeadHosts.md b/frontend/src/locale/src/HelpDoc/bg/DeadHosts.md new file mode 100644 index 00000000..ef4f3bc4 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/bg/DeadHosts.md @@ -0,0 +1,10 @@ +## What is a 404 Host? + +A 404 Host is simply a host setup that shows a 404 page. + +This can be useful when your domain is listed in search engines and you want +to provide a nicer error page or specifically to tell the search indexers that +the domain pages no longer exist. + +Another benefit of having this host is to track the logs for hits to it and +view the referrers. diff --git a/frontend/src/locale/src/HelpDoc/bg/ProxyHosts.md b/frontend/src/locale/src/HelpDoc/bg/ProxyHosts.md new file mode 100644 index 00000000..e9630d05 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/bg/ProxyHosts.md @@ -0,0 +1,7 @@ +## What is a Proxy Host? + +A Proxy Host is the incoming endpoint for a web service that you want to forward. + +It provides optional SSL termination for your service that might not have SSL support built in. + +Proxy Hosts are the most common use for the Nginx Proxy Manager. diff --git a/frontend/src/locale/src/HelpDoc/bg/RedirectionHosts.md b/frontend/src/locale/src/HelpDoc/bg/RedirectionHosts.md new file mode 100644 index 00000000..e57b1b80 --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/bg/RedirectionHosts.md @@ -0,0 +1,7 @@ +## What is a Redirection Host? + +A Redirection Host will redirect requests from the incoming domain and push the +viewer to another domain. + +The most common reason to use this type of host is when your website changes +domains but you still have search engine or referrer links pointing to the old domain. diff --git a/frontend/src/locale/src/HelpDoc/bg/Streams.md b/frontend/src/locale/src/HelpDoc/bg/Streams.md new file mode 100644 index 00000000..358f3e5a --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/bg/Streams.md @@ -0,0 +1,6 @@ +## What is a Stream? + +A relatively new feature for Nginx, a Stream will serve to forward TCP/UDP +traffic directly to another computer on the network. + +If you're running game servers, FTP or SSH servers this can come in handy. diff --git a/frontend/src/locale/src/HelpDoc/bg/index.ts b/frontend/src/locale/src/HelpDoc/bg/index.ts new file mode 100644 index 00000000..a9bb46ba --- /dev/null +++ b/frontend/src/locale/src/HelpDoc/bg/index.ts @@ -0,0 +1,6 @@ +export * as AccessLists from "./AccessLists.md"; +export * as Certificates from "./Certificates.md"; +export * as DeadHosts from "./DeadHosts.md"; +export * as ProxyHosts from "./ProxyHosts.md"; +export * as RedirectionHosts from "./RedirectionHosts.md"; +export * as Streams from "./Streams.md"; diff --git a/frontend/src/locale/src/bg.json b/frontend/src/locale/src/bg.json new file mode 100644 index 00000000..355d0db7 --- /dev/null +++ b/frontend/src/locale/src/bg.json @@ -0,0 +1,683 @@ +{ + "access-list": { + "defaultMessage": "Access List" + }, + "access-list.access-count": { + "defaultMessage": "{count} {count, plural, one {Rule} other {Rules}}" + }, + "access-list.auth-count": { + "defaultMessage": "{count} {count, plural, one {User} other {Users}}" + }, + "access-list.help-rules-last": { + "defaultMessage": "When at least 1 rule exists, this deny all rule will be added last" + }, + "access-list.help.rules-order": { + "defaultMessage": "Note that the allow and deny directives will be applied in the order they are defined." + }, + "access-list.pass-auth": { + "defaultMessage": "Pass Auth to Upstream" + }, + "access-list.public": { + "defaultMessage": "Publicly Accessible" + }, + "access-list.public.subtitle": { + "defaultMessage": "No basic auth required" + }, + "access-list.rule-source.placeholder": { + "defaultMessage": "192.168.1.100 or 192.168.1.0/24 or 2001:0db8::/32" + }, + "access-list.satisfy-any": { + "defaultMessage": "Satisfy Any" + }, + "access-list.subtitle": { + "defaultMessage": "{users} {users, plural, one {User} other {Users}}, {rules} {rules, plural, one {Rule} other {Rules}} - Created: {date}" + }, + "access-lists": { + "defaultMessage": "Access Lists" + }, + "action.add": { + "defaultMessage": "Add" + }, + "action.add-location": { + "defaultMessage": "Add Location" + }, + "action.allow": { + "defaultMessage": "Allow" + }, + "action.close": { + "defaultMessage": "Close" + }, + "action.delete": { + "defaultMessage": "Delete" + }, + "action.deny": { + "defaultMessage": "Deny" + }, + "action.disable": { + "defaultMessage": "Disable" + }, + "action.download": { + "defaultMessage": "Download" + }, + "action.edit": { + "defaultMessage": "Edit" + }, + "action.enable": { + "defaultMessage": "Enable" + }, + "action.permissions": { + "defaultMessage": "Permissions" + }, + "action.renew": { + "defaultMessage": "Renew" + }, + "action.view-details": { + "defaultMessage": "View Details" + }, + "auditlogs": { + "defaultMessage": "Audit Logs" + }, + "auto": { + "defaultMessage": "Auto" + }, + "cancel": { + "defaultMessage": "Cancel" + }, + "certificate": { + "defaultMessage": "Certificate" + }, + "certificate.custom-certificate": { + "defaultMessage": "Certificate" + }, + "certificate.custom-certificate-key": { + "defaultMessage": "Certificate Key" + }, + "certificate.custom-intermediate": { + "defaultMessage": "Intermediate Certificate" + }, + "certificate.in-use": { + "defaultMessage": "In Use" + }, + "certificate.none.subtitle": { + "defaultMessage": "No certificate assigned" + }, + "certificate.none.subtitle.for-http": { + "defaultMessage": "This host will not use HTTPS" + }, + "certificate.none.title": { + "defaultMessage": "None" + }, + "certificate.not-in-use": { + "defaultMessage": "Not Used" + }, + "certificate.renew": { + "defaultMessage": "Renew Certificate" + }, + "certificates": { + "defaultMessage": "Certificates" + }, + "certificates.custom": { + "defaultMessage": "Custom Certificate" + }, + "certificates.custom.warning": { + "defaultMessage": "Key files protected with a passphrase are not supported." + }, + "certificates.dns.credentials": { + "defaultMessage": "Credentials File Content" + }, + "certificates.dns.credentials-note": { + "defaultMessage": "This plugin requires a configuration file containing an API token or other credentials for your provider" + }, + "certificates.dns.credentials-warning": { + "defaultMessage": "This data will be stored as plaintext in the database and in a file!" + }, + "certificates.dns.propagation-seconds": { + "defaultMessage": "Propagation Seconds" + }, + "certificates.dns.propagation-seconds-note": { + "defaultMessage": "Leave empty to use the plugins default value. Number of seconds to wait for DNS propagation." + }, + "certificates.dns.provider": { + "defaultMessage": "DNS Provider" + }, + "certificates.dns.provider.placeholder": { + "defaultMessage": "Select a Provider..." + }, + "certificates.dns.warning": { + "defaultMessage": "This section requires some knowledge about Certbot and its DNS plugins. Please consult the respective plugins documentation." + }, + "certificates.http.reachability-404": { + "defaultMessage": "There is a server found at this domain but it does not seem to be Nginx Proxy Manager. Please make sure your domain points to the IP where your NPM instance is running." + }, + "certificates.http.reachability-failed-to-check": { + "defaultMessage": "Failed to check the reachability due to a communication error with site24x7.com." + }, + "certificates.http.reachability-not-resolved": { + "defaultMessage": "There is no server available at this domain. Please make sure your domain exists and points to the IP where your NPM instance is running and if necessary port 80 is forwarded in your router." + }, + "certificates.http.reachability-ok": { + "defaultMessage": "Your server is reachable and creating certificates should be possible." + }, + "certificates.http.reachability-other": { + "defaultMessage": "There is a server found at this domain but it returned an unexpected status code {code}. Is it the NPM server? Please make sure your domain points to the IP where your NPM instance is running." + }, + "certificates.http.reachability-wrong-data": { + "defaultMessage": "There is a server found at this domain but it returned an unexpected data. Is it the NPM server? Please make sure your domain points to the IP where your NPM instance is running." + }, + "certificates.http.test-results": { + "defaultMessage": "Test Results" + }, + "certificates.http.warning": { + "defaultMessage": "These domains must be already configured to point to this installation." + }, + "certificates.request.subtitle": { + "defaultMessage": "with Let's Encrypt" + }, + "certificates.request.title": { + "defaultMessage": "Request a new Certificate" + }, + "column.access": { + "defaultMessage": "Access" + }, + "column.authorization": { + "defaultMessage": "Authorization" + }, + "column.authorizations": { + "defaultMessage": "Authorizations" + }, + "column.custom-locations": { + "defaultMessage": "Custom Locations" + }, + "column.destination": { + "defaultMessage": "Destination" + }, + "column.details": { + "defaultMessage": "Details" + }, + "column.email": { + "defaultMessage": "Email" + }, + "column.event": { + "defaultMessage": "Event" + }, + "column.expires": { + "defaultMessage": "Expires" + }, + "column.http-code": { + "defaultMessage": "HTTP Code" + }, + "column.incoming-port": { + "defaultMessage": "Incoming Port" + }, + "column.name": { + "defaultMessage": "Name" + }, + "column.protocol": { + "defaultMessage": "Protocol" + }, + "column.provider": { + "defaultMessage": "Provider" + }, + "column.roles": { + "defaultMessage": "Roles" + }, + "column.rules": { + "defaultMessage": "Rules" + }, + "column.satisfy": { + "defaultMessage": "Satisfy" + }, + "column.satisfy-all": { + "defaultMessage": "All" + }, + "column.satisfy-any": { + "defaultMessage": "Any" + }, + "column.scheme": { + "defaultMessage": "Scheme" + }, + "column.source": { + "defaultMessage": "Source" + }, + "column.ssl": { + "defaultMessage": "SSL" + }, + "column.status": { + "defaultMessage": "Status" + }, + "created-on": { + "defaultMessage": "Created: {date}" + }, + "dashboard": { + "defaultMessage": "Dashboard" + }, + "dead-host": { + "defaultMessage": "404 Host" + }, + "dead-hosts": { + "defaultMessage": "404 Hosts" + }, + "dead-hosts.count": { + "defaultMessage": "{count} {count, plural, one {404 Host} other {404 Hosts}}" + }, + "disabled": { + "defaultMessage": "Disabled" + }, + "domain-names": { + "defaultMessage": "Domain Names" + }, + "domain-names.max": { + "defaultMessage": "{count} domain names maximum" + }, + "domain-names.placeholder": { + "defaultMessage": "Start typing to add domain..." + }, + "domain-names.wildcards-not-permitted": { + "defaultMessage": "Wildcards not permitted for this type" + }, + "domain-names.wildcards-not-supported": { + "defaultMessage": "Wildcards not supported for this CA" + }, + "domains.force-ssl": { + "defaultMessage": "Force SSL" + }, + "domains.hsts-enabled": { + "defaultMessage": "HSTS Enabled" + }, + "domains.hsts-subdomains": { + "defaultMessage": "HSTS Sub-domains" + }, + "domains.http2-support": { + "defaultMessage": "HTTP/2 Support" + }, + "domains.use-dns": { + "defaultMessage": "Use DNS Challenge" + }, + "email-address": { + "defaultMessage": "Email address" + }, + "empty-search": { + "defaultMessage": "No results found" + }, + "empty-subtitle": { + "defaultMessage": "Why don't you create one?" + }, + "enabled": { + "defaultMessage": "Enabled" + }, + "error.access.at-least-one": { + "defaultMessage": "Either one Authorization or one Access Rule is required" + }, + "error.access.duplicate-usernames": { + "defaultMessage": "Authorization Usernames must be unique" + }, + "error.invalid-auth": { + "defaultMessage": "Invalid email or password" + }, + "error.invalid-domain": { + "defaultMessage": "Invalid domain: {domain}" + }, + "error.invalid-email": { + "defaultMessage": "Invalid email address" + }, + "error.max-character-length": { + "defaultMessage": "Maximum length is {max} character{max, plural, one {} other {s}}" + }, + "error.max-domains": { + "defaultMessage": "Too many domains, max is {max}" + }, + "error.maximum": { + "defaultMessage": "Maximum is {max}" + }, + "error.min-character-length": { + "defaultMessage": "Minimum length is {min} character{min, plural, one {} other {s}}" + }, + "error.minimum": { + "defaultMessage": "Minimum is {min}" + }, + "error.passwords-must-match": { + "defaultMessage": "Passwords must match" + }, + "error.required": { + "defaultMessage": "This is required" + }, + "expires.on": { + "defaultMessage": "Expires: {date}" + }, + "footer.github-fork": { + "defaultMessage": "Fork me on Github" + }, + "host.flags.block-exploits": { + "defaultMessage": "Block Common Exploits" + }, + "host.flags.cache-assets": { + "defaultMessage": "Cache Assets" + }, + "host.flags.preserve-path": { + "defaultMessage": "Preserve Path" + }, + "host.flags.protocols": { + "defaultMessage": "Protocols" + }, + "host.flags.websockets-upgrade": { + "defaultMessage": "Websockets Support" + }, + "host.forward-port": { + "defaultMessage": "Forward Port" + }, + "host.forward-scheme": { + "defaultMessage": "Scheme" + }, + "hosts": { + "defaultMessage": "Hosts" + }, + "http-only": { + "defaultMessage": "HTTP Only" + }, + "lets-encrypt": { + "defaultMessage": "Let's Encrypt" + }, + "lets-encrypt-via-dns": { + "defaultMessage": "Let's Encrypt via DNS" + }, + "lets-encrypt-via-http": { + "defaultMessage": "Let's Encrypt via HTTP" + }, + "loading": { + "defaultMessage": "Loading…" + }, + "login.title": { + "defaultMessage": "Login to your account" + }, + "nginx-config.label": { + "defaultMessage": "Custom Nginx Configuration" + }, + "nginx-config.placeholder": { + "defaultMessage": "# Enter your custom Nginx configuration here at your own risk!" + }, + "no-permission-error": { + "defaultMessage": "You do not have access to view this." + }, + "notfound.action": { + "defaultMessage": "Take me home" + }, + "notfound.content": { + "defaultMessage": "We are sorry but the page you are looking for was not found" + }, + "notfound.title": { + "defaultMessage": "Oops… You just found an error page" + }, + "notification.error": { + "defaultMessage": "Error" + }, + "notification.object-deleted": { + "defaultMessage": "{object} has been deleted" + }, + "notification.object-disabled": { + "defaultMessage": "{object} has been disabled" + }, + "notification.object-enabled": { + "defaultMessage": "{object} has been enabled" + }, + "notification.object-renewed": { + "defaultMessage": "{object} has been renewed" + }, + "notification.object-saved": { + "defaultMessage": "{object} has been saved" + }, + "notification.success": { + "defaultMessage": "Success" + }, + "object.actions-title": { + "defaultMessage": "{object} #{id}" + }, + "object.add": { + "defaultMessage": "Add {object}" + }, + "object.delete": { + "defaultMessage": "Delete {object}" + }, + "object.delete.content": { + "defaultMessage": "Are you sure you want to delete this {object}?" + }, + "object.edit": { + "defaultMessage": "Edit {object}" + }, + "object.empty": { + "defaultMessage": "There are no {objects}" + }, + "object.event.created": { + "defaultMessage": "Created {object}" + }, + "object.event.deleted": { + "defaultMessage": "Deleted {object}" + }, + "object.event.disabled": { + "defaultMessage": "Disabled {object}" + }, + "object.event.enabled": { + "defaultMessage": "Enabled {object}" + }, + "object.event.renewed": { + "defaultMessage": "Renewed {object}" + }, + "object.event.updated": { + "defaultMessage": "Updated {object}" + }, + "offline": { + "defaultMessage": "Offline" + }, + "online": { + "defaultMessage": "Online" + }, + "options": { + "defaultMessage": "Options" + }, + "password": { + "defaultMessage": "Password" + }, + "password.generate": { + "defaultMessage": "Generate random password" + }, + "password.hide": { + "defaultMessage": "Hide Password" + }, + "password.show": { + "defaultMessage": "Show Password" + }, + "permissions.hidden": { + "defaultMessage": "Hidden" + }, + "permissions.manage": { + "defaultMessage": "Manage" + }, + "permissions.view": { + "defaultMessage": "View Only" + }, + "permissions.visibility.all": { + "defaultMessage": "All Items" + }, + "permissions.visibility.title": { + "defaultMessage": "Item Visibility" + }, + "permissions.visibility.user": { + "defaultMessage": "Created Items Only" + }, + "proxy-host": { + "defaultMessage": "Proxy Host" + }, + "proxy-host.forward-host": { + "defaultMessage": "Forward Hostname / IP" + }, + "proxy-hosts": { + "defaultMessage": "Proxy Hosts" + }, + "proxy-hosts.count": { + "defaultMessage": "{count} {count, plural, one {Proxy Host} other {Proxy Hosts}}" + }, + "public": { + "defaultMessage": "Public" + }, + "redirection-host": { + "defaultMessage": "Redirection Host" + }, + "redirection-host.forward-domain": { + "defaultMessage": "Forward Domain" + }, + "redirection-host.forward-http-code": { + "defaultMessage": "HTTP Code" + }, + "redirection-hosts": { + "defaultMessage": "Redirection Hosts" + }, + "redirection-hosts.count": { + "defaultMessage": "{count} {count, plural, one {Redirection Host} other {Redirection Hosts}}" + }, + "redirection-hosts.http-code.300": { + "defaultMessage": "300 Multiple Choices" + }, + "redirection-hosts.http-code.301": { + "defaultMessage": "301 Moved permanently" + }, + "redirection-hosts.http-code.302": { + "defaultMessage": "302 Moved temporarily" + }, + "redirection-hosts.http-code.303": { + "defaultMessage": "303 See other" + }, + "redirection-hosts.http-code.307": { + "defaultMessage": "307 Temporary redirect" + }, + "redirection-hosts.http-code.308": { + "defaultMessage": "308 Permanent redirect" + }, + "role.admin": { + "defaultMessage": "Administrator" + }, + "role.standard-user": { + "defaultMessage": "Standard User" + }, + "save": { + "defaultMessage": "Save" + }, + "setting": { + "defaultMessage": "Setting" + }, + "settings": { + "defaultMessage": "Settings" + }, + "settings.default-site": { + "defaultMessage": "Default Site" + }, + "settings.default-site.404": { + "defaultMessage": "404 Page" + }, + "settings.default-site.444": { + "defaultMessage": "No Response (444)" + }, + "settings.default-site.congratulations": { + "defaultMessage": "Congratulations Page" + }, + "settings.default-site.description": { + "defaultMessage": "What to show when Nginx is hit with an unknown Host" + }, + "settings.default-site.html": { + "defaultMessage": "Custom HTML" + }, + "settings.default-site.html.placeholder": { + "defaultMessage": "" + }, + "settings.default-site.redirect": { + "defaultMessage": "Redirect" + }, + "setup.preamble": { + "defaultMessage": "Get started by creating your admin account." + }, + "setup.title": { + "defaultMessage": "Welcome!" + }, + "sign-in": { + "defaultMessage": "Sign in" + }, + "ssl-certificate": { + "defaultMessage": "SSL Certificate" + }, + "stream": { + "defaultMessage": "Stream" + }, + "stream.forward-host": { + "defaultMessage": "Forward Host" + }, + "stream.forward-host.placeholder": { + "defaultMessage": "example.com or 10.0.0.1 or 2001:db8:3333:4444:5555:6666:7777:8888" + }, + "stream.incoming-port": { + "defaultMessage": "Incoming Port" + }, + "streams": { + "defaultMessage": "Streams" + }, + "streams.count": { + "defaultMessage": "{count} {count, plural, one {Stream} other {Streams}}" + }, + "streams.tcp": { + "defaultMessage": "TCP" + }, + "streams.udp": { + "defaultMessage": "UDP" + }, + "test": { + "defaultMessage": "Test" + }, + "update-available": { + "defaultMessage": "Update Available: {latestVersion}" + }, + "user": { + "defaultMessage": "User" + }, + "user.change-password": { + "defaultMessage": "Change Password" + }, + "user.confirm-password": { + "defaultMessage": "Confirm Password" + }, + "user.current-password": { + "defaultMessage": "Current Password" + }, + "user.edit-profile": { + "defaultMessage": "Edit Profile" + }, + "user.full-name": { + "defaultMessage": "Full Name" + }, + "user.login-as": { + "defaultMessage": "Sign in as {name}" + }, + "user.logout": { + "defaultMessage": "Logout" + }, + "user.new-password": { + "defaultMessage": "New Password" + }, + "user.nickname": { + "defaultMessage": "Nickname" + }, + "user.set-password": { + "defaultMessage": "Set Password" + }, + "user.set-permissions": { + "defaultMessage": "Set Permissions for {name}" + }, + "user.switch-dark": { + "defaultMessage": "Switch to Dark mode" + }, + "user.switch-light": { + "defaultMessage": "Switch to Light mode" + }, + "username": { + "defaultMessage": "Username" + }, + "users": { + "defaultMessage": "Users" + } +} diff --git a/frontend/src/locale/src/lang-list.json b/frontend/src/locale/src/lang-list.json index 8bbf0e97..1f1e9d5d 100755 --- a/frontend/src/locale/src/lang-list.json +++ b/frontend/src/locale/src/lang-list.json @@ -31,5 +31,8 @@ }, "locale-nl-NL": { "defaultMessage": "Nederlands" + }, + "locale-bg-BG": { + "defaultMessage": "Български" } } From 4712633568e2e3b5d209b05286f71e237106ab8e Mon Sep 17 00:00:00 2001 From: Bare7a Date: Mon, 24 Nov 2025 18:07:46 +0200 Subject: [PATCH 08/14] After Translate --- .../src/locale/src/HelpDoc/bg/AccessLists.md | 8 +- .../src/locale/src/HelpDoc/bg/Certificates.md | 33 +- .../src/locale/src/HelpDoc/bg/DeadHosts.md | 14 +- .../src/locale/src/HelpDoc/bg/ProxyHosts.md | 8 +- .../locale/src/HelpDoc/bg/RedirectionHosts.md | 10 +- frontend/src/locale/src/HelpDoc/bg/Streams.md | 8 +- frontend/src/locale/src/bg.json | 442 +++++++++--------- 7 files changed, 256 insertions(+), 267 deletions(-) diff --git a/frontend/src/locale/src/HelpDoc/bg/AccessLists.md b/frontend/src/locale/src/HelpDoc/bg/AccessLists.md index cef58263..8e7f2507 100644 --- a/frontend/src/locale/src/HelpDoc/bg/AccessLists.md +++ b/frontend/src/locale/src/HelpDoc/bg/AccessLists.md @@ -1,7 +1,7 @@ -## What is an Access List? +## Какво представлява Списъкът за достъп? -Access Lists provide a blacklist or whitelist of specific client IP addresses along with authentication for the Proxy Hosts via Basic HTTP Authentication. +Списъците за достъп предоставят черен или бял списък от конкретни клиентски IP адреси, както и удостоверяване за Прокси хостове чрез базова HTTP автентикация. -You can configure multiple client rules, usernames and passwords for a single Access List and then apply that to one or more _Proxy Hosts_. +Можете да конфигурирате множество клиентски правила, потребителски имена и пароли в един Списък за достъп и след това да го приложите към един или повече _Прокси хостове_. -This is most useful for forwarded web services that do not have authentication mechanisms built in or when you want to protect from unknown clients. +Това е най-полезно при препращани уеб услуги, които нямат вградени механизми за удостоверяване, или когато искате да защитите достъпа от неизвестни клиенти. diff --git a/frontend/src/locale/src/HelpDoc/bg/Certificates.md b/frontend/src/locale/src/HelpDoc/bg/Certificates.md index d79dd04b..c138a753 100644 --- a/frontend/src/locale/src/HelpDoc/bg/Certificates.md +++ b/frontend/src/locale/src/HelpDoc/bg/Certificates.md @@ -1,32 +1,21 @@ -## Certificates Help +## Помощ за сертификати -### HTTP Certificate +### HTTP сертификат -A HTTP validated certificate means Let's Encrypt servers will -attempt to reach your domains over HTTP (not HTTPS!) and if successful, they -will issue your certificate. +HTTP валидираният сертификат означава, че сървърите на Let’s Encrypt ще се опитат да достигнат вашите домейни по HTTP (не по HTTPS!) и ако успеят, ще издадат сертификата. -For this method, you will have to have a _Proxy Host_ created for your domains(s) that -is accessible with HTTP and pointing to this Nginx installation. After a certificate -has been given, you can modify the _Proxy Host_ to also use this certificate for HTTPS -connections. However, the _Proxy Host_ will still need to be configured for HTTP access -in order for the certificate to renew. +За този метод трябва да имате създаден _Прокси хост_ за вашия/вашите домейни, който да е достъпен по HTTP и да сочи към тази Nginx инсталация. След като бъде издаден сертификат, можете да промените _Прокси хоста_ така, че да използва сертификата и за HTTPS връзки. Въпреки това, _Прокси хостът_ трябва да остане конфигуриран за достъп по HTTP, за да може сертификатът да се подновява. -This process _does not_ support wildcard domains. +Този процес _не_ поддържа wildcard домейни. -### DNS Certificate +### DNS сертификат -A DNS validated certificate requires you to use a DNS Provider plugin. This DNS -Provider will be used to create temporary records on your domain and then Let's -Encrypt will query those records to be sure you're the owner and if successful, they -will issue your certificate. +DNS валидираният сертификат изисква използването на DNS Provider плъгин. Този DNS Provider ще бъде използван за временно създаване на записи във вашия домейн, след което Let’s Encrypt ще ги провери, за да се увери, че сте собственикът, и при успех ще издаде сертификата. -You do not need a _Proxy Host_ to be created prior to requesting this type of -certificate. Nor do you need to have your _Proxy Host_ configured for HTTP access. +Не е необходимо да имате _Прокси хост_, създаден предварително, за да заявите този тип сертификат. Нито е нужно вашият _Прокси хост_ да бъде конфигуриран за достъп по HTTP. -This process _does_ support wildcard domains. +Този процес _поддържа_ wildcard домейни. -### Custom Certificate +### Персонализиран сертификат -Use this option to upload your own SSL Certificate, as provided by your own -Certificate Authority. +Използвайте тази опция, за да качите собствен SSL сертификат, предоставен от ваша сертификатна агенция. diff --git a/frontend/src/locale/src/HelpDoc/bg/DeadHosts.md b/frontend/src/locale/src/HelpDoc/bg/DeadHosts.md index ef4f3bc4..79ad960b 100644 --- a/frontend/src/locale/src/HelpDoc/bg/DeadHosts.md +++ b/frontend/src/locale/src/HelpDoc/bg/DeadHosts.md @@ -1,10 +1,10 @@ -## What is a 404 Host? +## Какво представлява 404 хост? -A 404 Host is simply a host setup that shows a 404 page. +404 хост е просто конфигурация на хост, който показва страница с грешка 404. -This can be useful when your domain is listed in search engines and you want -to provide a nicer error page or specifically to tell the search indexers that -the domain pages no longer exist. +Това може да е полезно, когато вашият домейн е индексиран в търсачките и искате +да предоставите по-приятна страница за грешка или да уведомите индексиращите системи, +че страниците на домейна вече не съществуват. -Another benefit of having this host is to track the logs for hits to it and -view the referrers. +Допълнително предимство на този хост е възможността да проследявате логовете на заявките +към него и да виждате реферерите. diff --git a/frontend/src/locale/src/HelpDoc/bg/ProxyHosts.md b/frontend/src/locale/src/HelpDoc/bg/ProxyHosts.md index e9630d05..ef82c393 100644 --- a/frontend/src/locale/src/HelpDoc/bg/ProxyHosts.md +++ b/frontend/src/locale/src/HelpDoc/bg/ProxyHosts.md @@ -1,7 +1,7 @@ -## What is a Proxy Host? +## Какво представлява Прокси хост? -A Proxy Host is the incoming endpoint for a web service that you want to forward. +Прокси хост е входна точка за уеб услуга, която искате да препращате. -It provides optional SSL termination for your service that might not have SSL support built in. +Той предоставя възможност за SSL терминaция на услуга, която може да няма вградена поддръжка на SSL. -Proxy Hosts are the most common use for the Nginx Proxy Manager. +Прокси хостовете са най-често използваната функция в Nginx Proxy Manager. diff --git a/frontend/src/locale/src/HelpDoc/bg/RedirectionHosts.md b/frontend/src/locale/src/HelpDoc/bg/RedirectionHosts.md index e57b1b80..06890dc6 100644 --- a/frontend/src/locale/src/HelpDoc/bg/RedirectionHosts.md +++ b/frontend/src/locale/src/HelpDoc/bg/RedirectionHosts.md @@ -1,7 +1,7 @@ -## What is a Redirection Host? +## Какво представлява Хост за пренасочване? -A Redirection Host will redirect requests from the incoming domain and push the -viewer to another domain. +Хостът за пренасочване пренасочва заявките от входящия домейн и прехвърля +потребителя към друг домейн. -The most common reason to use this type of host is when your website changes -domains but you still have search engine or referrer links pointing to the old domain. +Най-честата причина за използване на този тип хост е, когато вашият уебсайт +промени домейна си, но все още има линкове от търсачки или реферери, които сочат към стария домейн. diff --git a/frontend/src/locale/src/HelpDoc/bg/Streams.md b/frontend/src/locale/src/HelpDoc/bg/Streams.md index 358f3e5a..4beb381d 100644 --- a/frontend/src/locale/src/HelpDoc/bg/Streams.md +++ b/frontend/src/locale/src/HelpDoc/bg/Streams.md @@ -1,6 +1,6 @@ -## What is a Stream? +## Какво представлява Потокът (Stream)? -A relatively new feature for Nginx, a Stream will serve to forward TCP/UDP -traffic directly to another computer on the network. +Относително нова функция за Nginx, Потокът позволява препращане на TCP/UDP +трафик директно към друг компютър в мрежата. -If you're running game servers, FTP or SSH servers this can come in handy. +Това е полезно, ако хоствате игрови сървъри, FTP или SSH сървъри. diff --git a/frontend/src/locale/src/bg.json b/frontend/src/locale/src/bg.json index 355d0db7..274eca1f 100644 --- a/frontend/src/locale/src/bg.json +++ b/frontend/src/locale/src/bg.json @@ -1,624 +1,624 @@ { "access-list": { - "defaultMessage": "Access List" + "defaultMessage": "Списък за достъп" }, "access-list.access-count": { - "defaultMessage": "{count} {count, plural, one {Rule} other {Rules}}" + "defaultMessage": "{count} {count, plural, one {правило} other {правила}}" }, "access-list.auth-count": { - "defaultMessage": "{count} {count, plural, one {User} other {Users}}" + "defaultMessage": "{count} {count, plural, one {потребител} other {потребители}}" }, "access-list.help-rules-last": { - "defaultMessage": "When at least 1 rule exists, this deny all rule will be added last" + "defaultMessage": "Когато съществува поне 1 правило, това правило за отказ се добавя последно" }, "access-list.help.rules-order": { - "defaultMessage": "Note that the allow and deny directives will be applied in the order they are defined." + "defaultMessage": "Обърнете внимание, че правилата Позволяване и Отказване се прилагат в реда, в който са зададени." }, "access-list.pass-auth": { - "defaultMessage": "Pass Auth to Upstream" + "defaultMessage": "Предаване на автентикация към Upstream" }, "access-list.public": { - "defaultMessage": "Publicly Accessible" + "defaultMessage": "Публичен достъп" }, "access-list.public.subtitle": { - "defaultMessage": "No basic auth required" + "defaultMessage": "Без базова автентикация" }, "access-list.rule-source.placeholder": { - "defaultMessage": "192.168.1.100 or 192.168.1.0/24 or 2001:0db8::/32" + "defaultMessage": "192.168.1.100 или 192.168.1.0/24 или 2001:0db8::/32" }, "access-list.satisfy-any": { - "defaultMessage": "Satisfy Any" + "defaultMessage": "Удовлетворяване на което и да е" }, "access-list.subtitle": { - "defaultMessage": "{users} {users, plural, one {User} other {Users}}, {rules} {rules, plural, one {Rule} other {Rules}} - Created: {date}" + "defaultMessage": "{users} {users, plural, one {потребител} other {потребители}}, {rules} {rules, plural, one {правило} other {правила}} - Създадено: {date}" }, "access-lists": { - "defaultMessage": "Access Lists" + "defaultMessage": "Списъци за достъп" }, "action.add": { - "defaultMessage": "Add" + "defaultMessage": "Добавяне" }, "action.add-location": { - "defaultMessage": "Add Location" + "defaultMessage": "Добавяне на маршрут" }, "action.allow": { - "defaultMessage": "Allow" + "defaultMessage": "Разрешаване" }, "action.close": { - "defaultMessage": "Close" + "defaultMessage": "Затваряне" }, "action.delete": { - "defaultMessage": "Delete" + "defaultMessage": "Изтриване" }, "action.deny": { - "defaultMessage": "Deny" + "defaultMessage": "Отказване" }, "action.disable": { - "defaultMessage": "Disable" + "defaultMessage": "Деактивиране" }, "action.download": { - "defaultMessage": "Download" + "defaultMessage": "Изтегляне" }, "action.edit": { - "defaultMessage": "Edit" + "defaultMessage": "Редактиране" }, "action.enable": { - "defaultMessage": "Enable" + "defaultMessage": "Активиране" }, "action.permissions": { - "defaultMessage": "Permissions" + "defaultMessage": "Права" }, "action.renew": { - "defaultMessage": "Renew" + "defaultMessage": "Подновяване" }, "action.view-details": { - "defaultMessage": "View Details" + "defaultMessage": "Преглед на детайли" }, "auditlogs": { - "defaultMessage": "Audit Logs" + "defaultMessage": "Журнали за одит" }, "auto": { - "defaultMessage": "Auto" + "defaultMessage": "Автоматично" }, "cancel": { - "defaultMessage": "Cancel" + "defaultMessage": "Отказ" }, "certificate": { - "defaultMessage": "Certificate" + "defaultMessage": "Сертификат" }, "certificate.custom-certificate": { - "defaultMessage": "Certificate" + "defaultMessage": "Сертификат" }, "certificate.custom-certificate-key": { - "defaultMessage": "Certificate Key" + "defaultMessage": "Ключ на сертификата" }, "certificate.custom-intermediate": { - "defaultMessage": "Intermediate Certificate" + "defaultMessage": "Междинен сертификат" }, "certificate.in-use": { - "defaultMessage": "In Use" + "defaultMessage": "Използва се" }, "certificate.none.subtitle": { - "defaultMessage": "No certificate assigned" + "defaultMessage": "Не е назначен сертификат" }, "certificate.none.subtitle.for-http": { - "defaultMessage": "This host will not use HTTPS" + "defaultMessage": "Този хост няма да използва HTTPS" }, "certificate.none.title": { - "defaultMessage": "None" + "defaultMessage": "Без сертификат" }, "certificate.not-in-use": { - "defaultMessage": "Not Used" + "defaultMessage": "Не се използва" }, "certificate.renew": { - "defaultMessage": "Renew Certificate" + "defaultMessage": "Подновяване на сертификат" }, "certificates": { - "defaultMessage": "Certificates" + "defaultMessage": "Сертификати" }, "certificates.custom": { - "defaultMessage": "Custom Certificate" + "defaultMessage": "Потребителски сертификат" }, "certificates.custom.warning": { - "defaultMessage": "Key files protected with a passphrase are not supported." + "defaultMessage": "Ключове, защитени с парола, не се поддържат." }, "certificates.dns.credentials": { - "defaultMessage": "Credentials File Content" + "defaultMessage": "Съдържание на файл с удостоверения" }, "certificates.dns.credentials-note": { - "defaultMessage": "This plugin requires a configuration file containing an API token or other credentials for your provider" + "defaultMessage": "Този плъгин изисква конфигурационен файл с API токен или други идентификационни данни." }, "certificates.dns.credentials-warning": { - "defaultMessage": "This data will be stored as plaintext in the database and in a file!" + "defaultMessage": "Тези данни ще бъдат съхранени като обикновен текст в базата и във файл!" }, "certificates.dns.propagation-seconds": { - "defaultMessage": "Propagation Seconds" + "defaultMessage": "Секунди за разпространение" }, "certificates.dns.propagation-seconds-note": { - "defaultMessage": "Leave empty to use the plugins default value. Number of seconds to wait for DNS propagation." + "defaultMessage": "Оставете празно, за да се използва стойността по подразбиране. Брой секунди за изчакване на DNS разпространение." }, "certificates.dns.provider": { - "defaultMessage": "DNS Provider" + "defaultMessage": "DNS доставчик" }, "certificates.dns.provider.placeholder": { - "defaultMessage": "Select a Provider..." + "defaultMessage": "Изберете доставчик..." }, "certificates.dns.warning": { - "defaultMessage": "This section requires some knowledge about Certbot and its DNS plugins. Please consult the respective plugins documentation." + "defaultMessage": "Този раздел изисква познания за Certbot и неговите DNS плъгини. Моля, консултирайте се с документацията." }, "certificates.http.reachability-404": { - "defaultMessage": "There is a server found at this domain but it does not seem to be Nginx Proxy Manager. Please make sure your domain points to the IP where your NPM instance is running." + "defaultMessage": "Сървър е намерен на този домейн, но не изглежда да е Nginx Proxy Manager. Уверете се, че домейнът сочи към IP адреса, където работи NPM." }, "certificates.http.reachability-failed-to-check": { - "defaultMessage": "Failed to check the reachability due to a communication error with site24x7.com." + "defaultMessage": "Неуспешна проверка поради грешка в комуникацията със site24x7.com." }, "certificates.http.reachability-not-resolved": { - "defaultMessage": "There is no server available at this domain. Please make sure your domain exists and points to the IP where your NPM instance is running and if necessary port 80 is forwarded in your router." + "defaultMessage": "Няма достъпен сървър на този домейн. Проверете, че домейнът съществува и сочи към IP-та, където се изпълнява NPM, и ако е необходимо, че порт 80 е пренасочен." }, "certificates.http.reachability-ok": { - "defaultMessage": "Your server is reachable and creating certificates should be possible." + "defaultMessage": "Вашият сървър е достъпен и създаването на сертификати е възможно." }, "certificates.http.reachability-other": { - "defaultMessage": "There is a server found at this domain but it returned an unexpected status code {code}. Is it the NPM server? Please make sure your domain points to the IP where your NPM instance is running." + "defaultMessage": "Намерен е сървър, но върна неочакван код {code}. Това NPM ли е? Уверете се, че домейнът сочи към вашия NPM сървър." }, "certificates.http.reachability-wrong-data": { - "defaultMessage": "There is a server found at this domain but it returned an unexpected data. Is it the NPM server? Please make sure your domain points to the IP where your NPM instance is running." + "defaultMessage": "Намерен е сървър, но върна неочаквани данни. Това NPM ли е? Уверете се, че домейнът сочи към вашия NPM сървър." }, "certificates.http.test-results": { - "defaultMessage": "Test Results" + "defaultMessage": "Резултати от теста" }, "certificates.http.warning": { - "defaultMessage": "These domains must be already configured to point to this installation." + "defaultMessage": "Тези домейни трябва вече да сочат към тази инсталация." }, "certificates.request.subtitle": { - "defaultMessage": "with Let's Encrypt" + "defaultMessage": "с Let's Encrypt" }, "certificates.request.title": { - "defaultMessage": "Request a new Certificate" + "defaultMessage": "Заявка за нов сертификат" }, "column.access": { - "defaultMessage": "Access" + "defaultMessage": "Достъп" }, "column.authorization": { - "defaultMessage": "Authorization" + "defaultMessage": "Автентикация" }, "column.authorizations": { - "defaultMessage": "Authorizations" + "defaultMessage": "Автентикации" }, "column.custom-locations": { - "defaultMessage": "Custom Locations" + "defaultMessage": "Персонализирани маршрути" }, "column.destination": { - "defaultMessage": "Destination" + "defaultMessage": "Дестинация" }, "column.details": { - "defaultMessage": "Details" + "defaultMessage": "Детайли" }, "column.email": { - "defaultMessage": "Email" + "defaultMessage": "Имейл" }, "column.event": { - "defaultMessage": "Event" + "defaultMessage": "Събитие" }, "column.expires": { - "defaultMessage": "Expires" + "defaultMessage": "Изтича" }, "column.http-code": { - "defaultMessage": "HTTP Code" + "defaultMessage": "HTTP код" }, "column.incoming-port": { - "defaultMessage": "Incoming Port" + "defaultMessage": "Входящ порт" }, "column.name": { - "defaultMessage": "Name" + "defaultMessage": "Име" }, "column.protocol": { - "defaultMessage": "Protocol" + "defaultMessage": "Протокол" }, "column.provider": { - "defaultMessage": "Provider" + "defaultMessage": "Доставчик" }, "column.roles": { - "defaultMessage": "Roles" + "defaultMessage": "Роли" }, "column.rules": { - "defaultMessage": "Rules" + "defaultMessage": "Правила" }, "column.satisfy": { - "defaultMessage": "Satisfy" + "defaultMessage": "Удовлетворяване" }, "column.satisfy-all": { - "defaultMessage": "All" + "defaultMessage": "Всички" }, "column.satisfy-any": { - "defaultMessage": "Any" + "defaultMessage": "Кое и да е" }, "column.scheme": { - "defaultMessage": "Scheme" + "defaultMessage": "Схема" }, "column.source": { - "defaultMessage": "Source" + "defaultMessage": "Източник" }, "column.ssl": { "defaultMessage": "SSL" }, "column.status": { - "defaultMessage": "Status" + "defaultMessage": "Статус" }, "created-on": { - "defaultMessage": "Created: {date}" + "defaultMessage": "Създадено: {date}" }, "dashboard": { - "defaultMessage": "Dashboard" + "defaultMessage": "Табло" }, "dead-host": { - "defaultMessage": "404 Host" + "defaultMessage": "404 хост" }, "dead-hosts": { - "defaultMessage": "404 Hosts" + "defaultMessage": "404 хостове" }, "dead-hosts.count": { - "defaultMessage": "{count} {count, plural, one {404 Host} other {404 Hosts}}" + "defaultMessage": "{count} {count, plural, one {404 хост} other {404 хостове}}" }, "disabled": { - "defaultMessage": "Disabled" + "defaultMessage": "Деактивиран" }, "domain-names": { - "defaultMessage": "Domain Names" + "defaultMessage": "Домейн имена" }, "domain-names.max": { - "defaultMessage": "{count} domain names maximum" + "defaultMessage": "Максимум {count} домейна" }, "domain-names.placeholder": { - "defaultMessage": "Start typing to add domain..." + "defaultMessage": "Започнете да въвеждате, за да добавите домейн..." }, "domain-names.wildcards-not-permitted": { - "defaultMessage": "Wildcards not permitted for this type" + "defaultMessage": "Wildcard не е разрешен за този тип" }, "domain-names.wildcards-not-supported": { - "defaultMessage": "Wildcards not supported for this CA" + "defaultMessage": "Wildcard не се поддържа от това CA" }, "domains.force-ssl": { - "defaultMessage": "Force SSL" + "defaultMessage": "Принудително SSL" }, "domains.hsts-enabled": { - "defaultMessage": "HSTS Enabled" + "defaultMessage": "HSTS активирано" }, "domains.hsts-subdomains": { - "defaultMessage": "HSTS Sub-domains" + "defaultMessage": "HSTS за поддомейни" }, "domains.http2-support": { - "defaultMessage": "HTTP/2 Support" + "defaultMessage": "Поддръжка на HTTP/2" }, "domains.use-dns": { - "defaultMessage": "Use DNS Challenge" + "defaultMessage": "Използване на DNS Challenge" }, "email-address": { - "defaultMessage": "Email address" + "defaultMessage": "Имейл адрес" }, "empty-search": { - "defaultMessage": "No results found" + "defaultMessage": "Няма резултати" }, "empty-subtitle": { - "defaultMessage": "Why don't you create one?" + "defaultMessage": "Защо не създадете един?" }, "enabled": { - "defaultMessage": "Enabled" + "defaultMessage": "Активиран" }, "error.access.at-least-one": { - "defaultMessage": "Either one Authorization or one Access Rule is required" + "defaultMessage": "Необходимо е поне една Автентикация или едно Правило за достъп" }, "error.access.duplicate-usernames": { - "defaultMessage": "Authorization Usernames must be unique" + "defaultMessage": "Потребителските имена за достъп трябва да са уникални" }, "error.invalid-auth": { - "defaultMessage": "Invalid email or password" + "defaultMessage": "Невалиден имейл или парола" }, "error.invalid-domain": { - "defaultMessage": "Invalid domain: {domain}" + "defaultMessage": "Невалиден домейн: {domain}" }, "error.invalid-email": { - "defaultMessage": "Invalid email address" + "defaultMessage": "Невалиден имейл адрес" }, "error.max-character-length": { - "defaultMessage": "Maximum length is {max} character{max, plural, one {} other {s}}" + "defaultMessage": "Максималната дължина е {max} знак{max, plural, one {} other {а}}" }, "error.max-domains": { - "defaultMessage": "Too many domains, max is {max}" + "defaultMessage": "Твърде много домейни, максимум {max}" }, "error.maximum": { - "defaultMessage": "Maximum is {max}" + "defaultMessage": "Максимум {max}" }, "error.min-character-length": { - "defaultMessage": "Minimum length is {min} character{min, plural, one {} other {s}}" + "defaultMessage": "Минималната дължина е {min} знак{min, plural, one {} other {а}}" }, "error.minimum": { - "defaultMessage": "Minimum is {min}" + "defaultMessage": "Минимум e {min}" }, "error.passwords-must-match": { - "defaultMessage": "Passwords must match" + "defaultMessage": "Паролите трябва да съвпадат" }, "error.required": { - "defaultMessage": "This is required" + "defaultMessage": "Това поле е задължително" }, "expires.on": { - "defaultMessage": "Expires: {date}" + "defaultMessage": "Изтича: {date}" }, "footer.github-fork": { - "defaultMessage": "Fork me on Github" + "defaultMessage": "Fork в GitHub" }, "host.flags.block-exploits": { - "defaultMessage": "Block Common Exploits" + "defaultMessage": "Блокиране на често срещани експлойти" }, "host.flags.cache-assets": { - "defaultMessage": "Cache Assets" + "defaultMessage": "Кеширане на ресурси" }, "host.flags.preserve-path": { - "defaultMessage": "Preserve Path" + "defaultMessage": "Запазване на пътя" }, "host.flags.protocols": { - "defaultMessage": "Protocols" + "defaultMessage": "Протоколи" }, "host.flags.websockets-upgrade": { - "defaultMessage": "Websockets Support" + "defaultMessage": "Поддръжка на WebSockets" }, "host.forward-port": { - "defaultMessage": "Forward Port" + "defaultMessage": "Препращане на порт" }, "host.forward-scheme": { - "defaultMessage": "Scheme" + "defaultMessage": "Схема" }, "hosts": { - "defaultMessage": "Hosts" + "defaultMessage": "Хостове" }, "http-only": { - "defaultMessage": "HTTP Only" + "defaultMessage": "Само HTTP" }, "lets-encrypt": { "defaultMessage": "Let's Encrypt" }, "lets-encrypt-via-dns": { - "defaultMessage": "Let's Encrypt via DNS" + "defaultMessage": "Let's Encrypt чрез DNS" }, "lets-encrypt-via-http": { - "defaultMessage": "Let's Encrypt via HTTP" + "defaultMessage": "Let's Encrypt чрез HTTP" }, "loading": { - "defaultMessage": "Loading…" + "defaultMessage": "Зареждане…" }, "login.title": { - "defaultMessage": "Login to your account" + "defaultMessage": "Вход в акаунта" }, "nginx-config.label": { - "defaultMessage": "Custom Nginx Configuration" + "defaultMessage": "Персонализирана Nginx конфигурация" }, "nginx-config.placeholder": { - "defaultMessage": "# Enter your custom Nginx configuration here at your own risk!" + "defaultMessage": "# Въведете вашата персонализирана Nginx конфигурация на собствен риск!" }, "no-permission-error": { - "defaultMessage": "You do not have access to view this." + "defaultMessage": "Нямате достъп до тази страница." }, "notfound.action": { - "defaultMessage": "Take me home" + "defaultMessage": "Към началната страница" }, "notfound.content": { - "defaultMessage": "We are sorry but the page you are looking for was not found" + "defaultMessage": "Страницата, която търсите, не беше намерена" }, "notfound.title": { - "defaultMessage": "Oops… You just found an error page" + "defaultMessage": "Упс… Намерихте грешка" }, "notification.error": { - "defaultMessage": "Error" + "defaultMessage": "Грешка" }, "notification.object-deleted": { - "defaultMessage": "{object} has been deleted" + "defaultMessage": "{object} беше изтрит" }, "notification.object-disabled": { - "defaultMessage": "{object} has been disabled" + "defaultMessage": "{object} беше деактивиран" }, "notification.object-enabled": { - "defaultMessage": "{object} has been enabled" + "defaultMessage": "{object} беше активиран" }, "notification.object-renewed": { - "defaultMessage": "{object} has been renewed" + "defaultMessage": "{object} беше подновен" }, "notification.object-saved": { - "defaultMessage": "{object} has been saved" + "defaultMessage": "{object} беше запазен" }, "notification.success": { - "defaultMessage": "Success" + "defaultMessage": "Успех" }, "object.actions-title": { - "defaultMessage": "{object} #{id}" + "defaultMessage": "{object} №{id}" }, "object.add": { - "defaultMessage": "Add {object}" + "defaultMessage": "Добавяне: {object}" }, "object.delete": { - "defaultMessage": "Delete {object}" + "defaultMessage": "Изтриване: {object}" }, "object.delete.content": { - "defaultMessage": "Are you sure you want to delete this {object}?" + "defaultMessage": "Сигурни ли сте, че искате да изтриете {object}?" }, "object.edit": { - "defaultMessage": "Edit {object}" + "defaultMessage": "Редактиране: {object}" }, "object.empty": { - "defaultMessage": "There are no {objects}" + "defaultMessage": "Няма налични {objects}" }, "object.event.created": { - "defaultMessage": "Created {object}" + "defaultMessage": "Създаден {object}" }, "object.event.deleted": { - "defaultMessage": "Deleted {object}" + "defaultMessage": "Изтрит {object}" }, "object.event.disabled": { - "defaultMessage": "Disabled {object}" + "defaultMessage": "Деактивиран {object}" }, "object.event.enabled": { - "defaultMessage": "Enabled {object}" + "defaultMessage": "Активиран {object}" }, "object.event.renewed": { - "defaultMessage": "Renewed {object}" + "defaultMessage": "Подновен {object}" }, "object.event.updated": { - "defaultMessage": "Updated {object}" + "defaultMessage": "Актуализиран {object}" }, "offline": { - "defaultMessage": "Offline" + "defaultMessage": "Офлайн" }, "online": { - "defaultMessage": "Online" + "defaultMessage": "Онлайн" }, "options": { - "defaultMessage": "Options" + "defaultMessage": "Опции" }, "password": { - "defaultMessage": "Password" + "defaultMessage": "Парола" }, "password.generate": { - "defaultMessage": "Generate random password" + "defaultMessage": "Генериране на случайна парола" }, "password.hide": { - "defaultMessage": "Hide Password" + "defaultMessage": "Скриване на паролата" }, "password.show": { - "defaultMessage": "Show Password" + "defaultMessage": "Показване на паролата" }, "permissions.hidden": { - "defaultMessage": "Hidden" + "defaultMessage": "Скрито" }, "permissions.manage": { - "defaultMessage": "Manage" + "defaultMessage": "Управление" }, "permissions.view": { - "defaultMessage": "View Only" + "defaultMessage": "Само преглед" }, "permissions.visibility.all": { - "defaultMessage": "All Items" + "defaultMessage": "Всички елементи" }, "permissions.visibility.title": { - "defaultMessage": "Item Visibility" + "defaultMessage": "Видимост на елементите" }, "permissions.visibility.user": { - "defaultMessage": "Created Items Only" + "defaultMessage": "Само създадените от потребителя" }, "proxy-host": { - "defaultMessage": "Proxy Host" + "defaultMessage": "Прокси хост" }, "proxy-host.forward-host": { - "defaultMessage": "Forward Hostname / IP" + "defaultMessage": "Хост/IP за препращане" }, "proxy-hosts": { - "defaultMessage": "Proxy Hosts" + "defaultMessage": "Прокси хостове" }, "proxy-hosts.count": { - "defaultMessage": "{count} {count, plural, one {Proxy Host} other {Proxy Hosts}}" + "defaultMessage": "{count} {count, plural, one {прокси хост} other {прокси хостове}}" }, "public": { - "defaultMessage": "Public" + "defaultMessage": "Публичен" }, "redirection-host": { - "defaultMessage": "Redirection Host" + "defaultMessage": "Хост за пренасочване" }, "redirection-host.forward-domain": { - "defaultMessage": "Forward Domain" + "defaultMessage": "Домейн за пренасочване" }, "redirection-host.forward-http-code": { - "defaultMessage": "HTTP Code" + "defaultMessage": "HTTP код" }, "redirection-hosts": { - "defaultMessage": "Redirection Hosts" + "defaultMessage": "Хостове за пренасочване" }, "redirection-hosts.count": { - "defaultMessage": "{count} {count, plural, one {Redirection Host} other {Redirection Hosts}}" + "defaultMessage": "{count} {count, plural, one {хост за пренасочване} other {хостове за пренасочване}}" }, "redirection-hosts.http-code.300": { "defaultMessage": "300 Multiple Choices" }, "redirection-hosts.http-code.301": { - "defaultMessage": "301 Moved permanently" + "defaultMessage": "301 Преместено постоянно" }, "redirection-hosts.http-code.302": { - "defaultMessage": "302 Moved temporarily" + "defaultMessage": "302 Преместено временно" }, "redirection-hosts.http-code.303": { "defaultMessage": "303 See other" }, "redirection-hosts.http-code.307": { - "defaultMessage": "307 Temporary redirect" + "defaultMessage": "307 Временно пренасочване" }, "redirection-hosts.http-code.308": { - "defaultMessage": "308 Permanent redirect" + "defaultMessage": "308 Постоянно пренасочване" }, "role.admin": { - "defaultMessage": "Administrator" + "defaultMessage": "Администратор" }, "role.standard-user": { - "defaultMessage": "Standard User" + "defaultMessage": "Обикновен потребител" }, "save": { - "defaultMessage": "Save" + "defaultMessage": "Запазване" }, "setting": { - "defaultMessage": "Setting" + "defaultMessage": "Настройка" }, "settings": { - "defaultMessage": "Settings" + "defaultMessage": "Настройки" }, "settings.default-site": { - "defaultMessage": "Default Site" + "defaultMessage": "Сайт по подразбиране" }, "settings.default-site.404": { - "defaultMessage": "404 Page" + "defaultMessage": "404 страница" }, "settings.default-site.444": { - "defaultMessage": "No Response (444)" + "defaultMessage": "Без отговор (444)" }, "settings.default-site.congratulations": { - "defaultMessage": "Congratulations Page" + "defaultMessage": "Страница поздравление" }, "settings.default-site.description": { - "defaultMessage": "What to show when Nginx is hit with an unknown Host" + "defaultMessage": "Какво да се показва при заявка към неизвестен хост" }, "settings.default-site.html": { - "defaultMessage": "Custom HTML" + "defaultMessage": "Персонализиран HTML" }, "settings.default-site.html.placeholder": { - "defaultMessage": "" + "defaultMessage": "" }, "settings.default-site.redirect": { - "defaultMessage": "Redirect" + "defaultMessage": "Пренасочване" }, "setup.preamble": { - "defaultMessage": "Get started by creating your admin account." + "defaultMessage": "Започнете, като създадете администраторски акаунт." }, "setup.title": { - "defaultMessage": "Welcome!" + "defaultMessage": "Добре дошли!" }, "sign-in": { - "defaultMessage": "Sign in" + "defaultMessage": "Вход" }, "ssl-certificate": { - "defaultMessage": "SSL Certificate" + "defaultMessage": "SSL сертификат" }, "stream": { - "defaultMessage": "Stream" + "defaultMessage": "Поток" }, "stream.forward-host": { - "defaultMessage": "Forward Host" + "defaultMessage": "Хост за препращане" }, "stream.forward-host.placeholder": { - "defaultMessage": "example.com or 10.0.0.1 or 2001:db8:3333:4444:5555:6666:7777:8888" + "defaultMessage": "example.com или 10.0.0.1 или 2001:db8:3333:4444:5555:6666:7777:8888" }, "stream.incoming-port": { - "defaultMessage": "Incoming Port" + "defaultMessage": "Входящ порт" }, "streams": { - "defaultMessage": "Streams" + "defaultMessage": "Потоци" }, "streams.count": { - "defaultMessage": "{count} {count, plural, one {Stream} other {Streams}}" + "defaultMessage": "{count} {count, plural, one {поток} other {потоци}}" }, "streams.tcp": { "defaultMessage": "TCP" @@ -627,57 +627,57 @@ "defaultMessage": "UDP" }, "test": { - "defaultMessage": "Test" + "defaultMessage": "Тест" }, "update-available": { - "defaultMessage": "Update Available: {latestVersion}" + "defaultMessage": "Налична актуализация: {latestVersion}" }, "user": { - "defaultMessage": "User" + "defaultMessage": "Потребител" }, "user.change-password": { - "defaultMessage": "Change Password" + "defaultMessage": "Смяна на парола" }, "user.confirm-password": { - "defaultMessage": "Confirm Password" + "defaultMessage": "Потвърждение на парола" }, "user.current-password": { - "defaultMessage": "Current Password" + "defaultMessage": "Текуща парола" }, "user.edit-profile": { - "defaultMessage": "Edit Profile" + "defaultMessage": "Редактиране на профил" }, "user.full-name": { - "defaultMessage": "Full Name" + "defaultMessage": "Пълно име" }, "user.login-as": { - "defaultMessage": "Sign in as {name}" + "defaultMessage": "Вход като {name}" }, "user.logout": { - "defaultMessage": "Logout" + "defaultMessage": "Изход" }, "user.new-password": { - "defaultMessage": "New Password" + "defaultMessage": "Нова парола" }, "user.nickname": { - "defaultMessage": "Nickname" + "defaultMessage": "Псевдоним" }, "user.set-password": { - "defaultMessage": "Set Password" + "defaultMessage": "Задаване на парола" }, "user.set-permissions": { - "defaultMessage": "Set Permissions for {name}" + "defaultMessage": "Настройка на права за {name}" }, "user.switch-dark": { - "defaultMessage": "Switch to Dark mode" + "defaultMessage": "Тъмна тема" }, "user.switch-light": { - "defaultMessage": "Switch to Light mode" + "defaultMessage": "Светла тема" }, "username": { - "defaultMessage": "Username" + "defaultMessage": "Потребителско име" }, "users": { - "defaultMessage": "Users" + "defaultMessage": "Потребители" } } From e8ca72fb6a5f12a3c8f90d2995c31bf7ac720431 Mon Sep 17 00:00:00 2001 From: Bare7a Date: Mon, 24 Nov 2025 18:14:16 +0200 Subject: [PATCH 09/14] Adds bg inside HelpDoc index.ts file --- frontend/src/locale/src/HelpDoc/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/src/locale/src/HelpDoc/index.ts b/frontend/src/locale/src/HelpDoc/index.ts index adb351a3..b7c9f373 100644 --- a/frontend/src/locale/src/HelpDoc/index.ts +++ b/frontend/src/locale/src/HelpDoc/index.ts @@ -8,8 +8,9 @@ import * as ru from "./ru/index"; import * as sk from "./sk/index"; import * as vi from "./vi/index"; import * as zh from "./zh/index"; +import * as bg from "./bg/index"; -const items: any = { en, de, ja, sk, zh, pl, ru, it, vi, nl }; +const items: any = { en, de, ja, sk, zh, pl, ru, it, vi, nl, bg }; const fallbackLang = "en"; From 1c6f54fa3c22b142afaa8c6360430ca3637e5518 Mon Sep 17 00:00:00 2001 From: Bare7a Date: Mon, 24 Nov 2025 18:23:40 +0200 Subject: [PATCH 10/14] Changed the port translation --- frontend/src/locale/src/bg.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/locale/src/bg.json b/frontend/src/locale/src/bg.json index 274eca1f..81cab598 100644 --- a/frontend/src/locale/src/bg.json +++ b/frontend/src/locale/src/bg.json @@ -363,7 +363,7 @@ "defaultMessage": "Поддръжка на WebSockets" }, "host.forward-port": { - "defaultMessage": "Препращане на порт" + "defaultMessage": "Порт" }, "host.forward-scheme": { "defaultMessage": "Схема" From 4ff402fff457c5a39bbec54414bdb42a3880cb8e Mon Sep 17 00:00:00 2001 From: Bare7a Date: Mon, 24 Nov 2025 18:28:49 +0200 Subject: [PATCH 11/14] Update Locale README.md to include HelpDoc/index.tsx --- frontend/src/locale/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/locale/README.md b/frontend/src/locale/README.md index 0a63cc18..7016cf62 100644 --- a/frontend/src/locale/README.md +++ b/frontend/src/locale/README.md @@ -40,6 +40,7 @@ not be complete by the time you're reading this: - frontend/src/locale/src/[yourlang].json - frontend/src/locale/src/lang-list.json - frontend/src/locale/src/HelpDoc/[yourlang]/* +- frontend/src/locale/src/HelpDoc/index.tsx - frontend/src/locale/IntlProvider.tsx - frontend/check-locales.cjs From 45bc44c6fac39c4504aad074073d02478e32aaae Mon Sep 17 00:00:00 2001 From: Ville Alatalo Date: Tue, 25 Nov 2025 07:46:32 +0200 Subject: [PATCH 12/14] Add Glesys certbot plugin --- backend/certbot/dns-plugins.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/backend/certbot/dns-plugins.json b/backend/certbot/dns-plugins.json index 102734d2..4eadd078 100644 --- a/backend/certbot/dns-plugins.json +++ b/backend/certbot/dns-plugins.json @@ -255,6 +255,14 @@ "credentials": "dns_gcore_apitoken = 0123456789abcdef0123456789abcdef01234567", "full_plugin_name": "dns-gcore" }, + "glesys": { + "name": "Glesys", + "package_name": "certbot-dns-glesys", + "version": "~=2.1.0", + "dependencies": "", + "credentials": "dns_glesys_user = CL00000\ndns_glesys_password = apikeyvalue", + "full_plugin_name": "dns-glesys" + }, "godaddy": { "name": "GoDaddy", "package_name": "certbot-dns-godaddy", From bf4eab541a936b4468c86f40b908673bd3f5e33d Mon Sep 17 00:00:00 2001 From: abinas <144870133+abinas-hdb@users.noreply.github.com> Date: Wed, 26 Nov 2025 11:57:05 +0900 Subject: [PATCH 13/14] Update index.ts Fix missing 'ko' in index.ts --- frontend/src/locale/src/HelpDoc/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/src/locale/src/HelpDoc/index.ts b/frontend/src/locale/src/HelpDoc/index.ts index b7c9f373..f70dff69 100644 --- a/frontend/src/locale/src/HelpDoc/index.ts +++ b/frontend/src/locale/src/HelpDoc/index.ts @@ -8,9 +8,10 @@ import * as ru from "./ru/index"; import * as sk from "./sk/index"; import * as vi from "./vi/index"; import * as zh from "./zh/index"; +import * as ko from "./ko/index"; import * as bg from "./bg/index"; -const items: any = { en, de, ja, sk, zh, pl, ru, it, vi, nl, bg }; +const items: any = { en, de, ja, sk, zh, pl, ru, it, vi, nl, bg, ko }; const fallbackLang = "en"; From fec8b3b083e825526ff35b1cda60584d983d4439 Mon Sep 17 00:00:00 2001 From: Jamie Curnow Date: Tue, 2 Dec 2025 07:09:54 +1000 Subject: [PATCH 14/14] Show full swagger validation errors in tests --- test/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/package.json b/test/package.json index 7af42dff..7e882e6d 100644 --- a/test/package.json +++ b/test/package.json @@ -24,7 +24,7 @@ "cypress": "HTTP_PROXY=127.0.0.1:8128 HTTPS_PROXY=127.0.0.1:8128 cypress open --config-file=cypress/config/ci.js", "cypress:headless": "HTTP_PROXY=127.0.0.1:8128 HTTPS_PROXY=127.0.0.1:8128 cypress run --config-file=cypress/config/ci.js", "cypress:dev": "cypress run --config-file=cypress/config/dev.js", - "swagger-lint": "vacuum lint -b -q -d -a -n=warn" + "swagger-lint": "vacuum lint -b -q -d -a --no-clip -n=warn" }, "author": "", "license": "ISC"