This is an automated email from the ASF dual-hosted git repository.

wu-sheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-horizon-ui.git


The following commit(s) were added to refs/heads/main by this push:
     new 0fb700f  fix(i18n): polish Korean locale follow-up (#31)
0fb700f is described below

commit 0fb700f2983ab7d2687f6eb2e70ebec725c686d7
Author: Daniel Jeong <[email protected]>
AuthorDate: Fri May 29 12:37:36 2026 +0900

    fix(i18n): polish Korean locale follow-up (#31)
---
 apps/ui/src/i18n/locales/ko.json | 32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/apps/ui/src/i18n/locales/ko.json b/apps/ui/src/i18n/locales/ko.json
index baa30dd..481270a 100644
--- a/apps/ui/src/i18n/locales/ko.json
+++ b/apps/ui/src/i18n/locales/ko.json
@@ -1,5 +1,5 @@
 {
-  "_comment": "한국어 번역. 고유명사 (SkyWalking, Horizon, Apache, LDAP, OAP, BFF)는 원문 
그대로 표기한다. {placeholder} 형식의 자리표시자는 번역하지 않는다.",
+  "_comment": "한국어 번역. 고유명사 (SkyWalking, Horizon, Apache, LDAP, OAP, BFF)는 원문 
그대로 표기한다. `placeholder` 형식의 자리표시자는 번역하지 않는다.",
   "Welcome to SkyWalking": "SkyWalking에 오신 것을 환영합니다",
   "Horizon": "Horizon",
   "SkyWalking Horizon": "SkyWalking Horizon",
@@ -257,7 +257,7 @@
   "what's live now (operator-edited)": "현재 라이브 (오퍼레이터 편집본)",
   "Reset to bundled": "빌드 포함본으로 재설정",
   "This overwrites": "다음을 덮어씁니다:",
-  "on OAP with the bundled JSON shown on the left. The operator's edits on OAP 
are lost. The bundle is considered the source of truth after this action.": 
"을(를) 왼쪽에 표시된 빌드 포함 JSON으로 OAP에서 덮어씁니다. OAP의 오퍼레이터 편집 내용은 사라집니다. 이 작업 이후 빌드 
포함본이 원본으로 간주됩니다.",
+  "on OAP with the bundled JSON shown on the left. The operator's edits on OAP 
are lost. The bundle is considered the source of truth after this action.": 
"을(를) OAP에서 왼쪽에 표시된 빌드 포함 JSON으로 덮어씁니다. OAP의 오퍼레이터 편집 내용은 사라집니다. 이 작업 이후 빌드 
포함본이 원본으로 간주됩니다.",
   "Type": "유형",
   "to arm the Reset button:": "을(를) 입력해 재설정 버튼을 활성화하세요:",
   "close": "닫기",
@@ -524,9 +524,9 @@
   "{n} selectors off": "{n}개 셀렉터 비활성",
   "reachable": "연결 가능",
   "Zipkin endpoint unreachable": "Zipkin 엔드포인트에 연결할 수 없음",
-  "Tried {url}. Confirm the OAP admin-server module is on 
(SW_ADMIN_SERVER=default) and the port is exposed on the network / k8s Service 
/ ingress.": "{url}을(를) 시도했습니다. OAP의 admin-server 모듈이 켜져 
있는지(SW_ADMIN_SERVER=default), 포트가 네트워크 / k8s Service / ingress 를 통해 노출되어 있는지 
확인하세요.",
+  "Tried {url}. Confirm the OAP admin-server module is on 
(SW_ADMIN_SERVER=default) and the port is exposed on the network / k8s Service 
/ ingress.": "{url}을(를) 시도했습니다. OAP의 admin-server 모듈이 켜져 
있는지(SW_ADMIN_SERVER=default), 포트가 네트워크 / k8s Service / ingress를 통해 노출되어 있는지 
확인하세요.",
   "OAP's Zipkin v2 endpoint, source for the OpenTelemetry & Zipkin trace menu 
(shown when a layer's trace source is zipkin or both). This is the only page 
affected — if it's unreachable, native traces and every other observability 
page keep working.": "OAP의 Zipkin v2 엔드포인트로, OpenTelemetry 및 Zipkin 트레이스 메뉴의 
데이터 소스입니다(레이어의 trace 소스가 zipkin 또는 both일 때 표시). 영향을 받는 페이지는 이 페이지뿐이며, 연결 불가 
상태여도 네이티브 트레이스와 다른 모든 옵저버빌리티 페이지는 정상 동작합니다.",
-  "Tried {url}. Confirm OAP's Zipkin receiver / query is enabled and the 
oap.zipkinUrl in horizon's config points at the right host:port (shared GraphQL 
port → <queryUrl>/zipkin; standalone → :9412/zipkin). Only the Zipkin trace 
menu is affected.": "{url}을(를) 시도했습니다. OAP의 Zipkin receiver / query가 활성화되어 있고, 
horizon 설정의 oap.zipkinUrl 이 올바른 host:port를 가리키는지 확인하세요(공유 GraphQL 포트 → 
<queryUrl>/zipkin, 독립 → :9412/zipkin). 영향을 받는 것은 Zipkin 트레이스 메뉴뿐입니다.",
+  "Tried {url}. Confirm OAP's Zipkin receiver / query is enabled and the 
oap.zipkinUrl in horizon's config points at the right host:port (shared GraphQL 
port → <queryUrl>/zipkin; standalone → :9412/zipkin). Only the Zipkin trace 
menu is affected.": "{url}을(를) 시도했습니다. OAP의 Zipkin receiver / query가 활성화되어 있고, 
horizon 설정의 oap.zipkinUrl이 올바른 host:port를 가리키는지 확인하세요(공유 GraphQL 포트 → 
<queryUrl>/zipkin, 독립 → :9412/zipkin). 영향을 받는 것은 Zipkin 트레이스 메뉴뿐입니다.",
   "Everything Studio does against the admin port. Without admin-server, the 
other three modules fail at boot with ModuleNotFoundException.": "Studio가 관리 
포트에서 수행하는 모든 작업입니다. admin-server가 없으면 나머지 세 모듈은 ModuleNotFoundException으로 부팅에 
실패합니다.",
   "DSL Management (Catalog, OAL catalog), Editor save/load, Cluster status 
rule matrix, Live debugger rule picker, and the Inspect drawer's source 
attribution.": "DSL 관리(Catalog, OAL catalog), 에디터 저장/불러오기, Cluster Status 규칙 
매트릭스, Live Debugger 규칙 선택기, Inspect 드로어의 소스 출처.",
   "Live debugger across MAL / LAL / OAL (start / poll / stop) and the 
DSL-debugging health pane on Cluster status.": "MAL / LAL / OAL 전반의 Live 
Debugger(시작 / 폴링 / 중지)와 Cluster Status의 DSL-debugging 상태 패널.",
@@ -814,7 +814,7 @@
   "for password hashes.": "비밀번호 해시용.",
   "function": "함수",
   "hidden": "숨김",
-  "in horizon.yaml to arm": "활성화하려면 horizon.yaml 에서",
+  "in horizon.yaml to arm": "활성화하려면 horizon.yaml에서",
   "in horizon.yaml. Edits to the file are picked up on hot-reload. Add users 
via the YAML +": "horizon.yaml. 파일 편집은 핫 리로드로 반영됩니다. YAML +",
   "in horizon.yaml. To add or remove a user, change their group in the 
directory — they'll appear here on next login. Local accounts shown below are 
break-glass only and ignored while LDAP is reachable.": "horizon.yaml. 사용자를 
추가하거나 제거하려면 디렉터리에서 해당 그룹을 변경하세요 — 다음 로그인 시 여기에 표시됩니다. 아래의 로컬 계정은 break-glass 용도 
전용이며 LDAP에 연결 가능한 동안에는 무시됩니다.",
   "inputs are browser-local · sent to OAP in": "입력은 브라우저 로컬 시간 · OAP로 전송 시 
단위:",
@@ -849,7 +849,7 @@
   "no entity for {metric} in this range": "이 범위에서 {metric}에 대한 엔터티 없음",
   "no metric matches the current filters": "현재 필터와 일치하는 메트릭이 없습니다",
   "no metrics on the board — use {action} to open the catalog drawer.": "보드에 
메트릭이 없습니다 — {action}으로 카탈로그 드로어를 여세요.",
-  "no metricsRules found in file": "파일에서 metricsRules 를 찾을 수 없습니다",
+  "no metricsRules found in file": "파일에서 metricsRules를 찾을 수 없습니다",
   "no node accepted": "수락한 노드 없음",
   "no peers reported": "보고된 피어 없음",
   "no records from this node": "이 노드의 레코드 없음",
@@ -860,8 +860,8 @@
   "node": "노드",
   "none": "없음",
   "normal": "보통",
-  "not": "not",
-  "not MQE-queryable · /inspect/entities accepts REGULAR_VALUE + 
LABELED_VALUE": "MQE 쿼리 불가 · /inspect/entities는 REGULAR_VALUE + LABELED_VALUE 만 
허용",
+  "not": "받지 않습니다",
+  "not MQE-queryable · /inspect/entities accepts REGULAR_VALUE + 
LABELED_VALUE": "MQE 쿼리 불가 · /inspect/entities는 REGULAR_VALUE + LABELED_VALUE만 
허용",
   "not allowed": "허용되지 않음",
   "note": "참고",
   "now": "지금",
@@ -932,7 +932,7 @@
   "username": "사용자 이름",
   "value": "값",
   "visible": "표시됨",
-  "where execExpression fires · resolved via /debugging/config/dump on the 
admin server": "execExpression 이 발화하는 위치 · admin 서버의 /debugging/config/dump를 통해 
해석",
+  "where execExpression fires · resolved via /debugging/config/dump on the 
admin server": "execExpression이 실행되는 위치 · admin 서버의 /debugging/config/dump를 통해 
해석",
   "which sidebar items each role sees · gated by the read verb in the last 
column (UI hides; the BFF enforces the same server-side)": "각 역할이 보는 사이드바 항목 · 
마지막 열의 읽기 권한으로 제어됨(UI에서 숨김 처리, BFF가 서버 측에서 동일하게 강제 적용)",
   "with": "with",
   "{field} is required for scope {scope}": "{field}은(는) 범위 {scope}에 필수입니다",
@@ -957,7 +957,7 @@
   "{n}m": "{n}분",
   "{n}m window": "{n}분 범위",
   "{shown} shown of {total} total · {ldap} from LDAP, {local} local · 
refreshed {when}": "전체 {total}개 중 {shown}개 표시 · LDAP {ldap}개, 로컬 {local}개 · 
{when}에 새로 고침",
-  "{triage} (alarms / traces / logs / live-debugger) own their own time range 
and always query at {sec} precision — they are {not} affected by this 
setting.": "{triage} (경보 / 트레이스 / 로그 / 라이브 디버거)는 자체 시간 범위를 가지며 항상 {sec} 정밀도로 
쿼리합니다 — 이 설정의 {not} 영향을 받습니다.",
+  "{triage} (alarms / traces / logs / live-debugger) own their own time range 
and always query at {sec} precision — they are {not} affected by this 
setting.": "{triage}(경보 / 트레이스 / 로그 / 라이브 디버거)는 자체 시간 범위를 가지며 항상 {sec} 정밀도로 
쿼리합니다 — 이 설정의 영향을 {not}.",
   "· narrow:": "· 좁히기:",
   "· over OAP cap ({cap})": "· OAP 상한 초과 ({cap})",
   "→ destination": "→ 대상",
@@ -998,7 +998,7 @@
   "Normal": "보통",
   "OAL hot-update is upstream-deferred. Each": "OAL 핫 업데이트는 업스트림에서 보류 중입니다. 각",
   "OAP doesn't expose a restore endpoint yet. Operators recover from a dump by 
looping {endpoint} over each YAML file in the archive. A restore upload 
affordance will land here when the upstream API ships — see Studio's 
deferred-features memory.": "OAP는 아직 복원 엔드포인트를 제공하지 않습니다. 운영자는 아카이브의 각 YAML 파일에 
대해 {endpoint}를 반복 호출하여 덤프에서 복구합니다. 복원 업로드 기능은 업스트림 API 출시 시 여기에 추가됩니다 — Studio의 
deferred-features 메모를 참조하세요.",
-  "OAP drops the existing measure’s data on BanyanDB and orphans rows on JDBC 
/ Elasticsearch.": "OAP는 BanyanDB에서 기존 measure의 데이터를 삭제하고, JDBC / Elasticsearch 
에서는 행을 고아 상태로 만듭니다.",
+  "OAP drops the existing measure’s data on BanyanDB and orphans rows on JDBC 
/ Elasticsearch.": "OAP는 BanyanDB에서 기존 measure의 데이터를 삭제하고, JDBC / 
Elasticsearch에서는 행을 고아 상태로 만듭니다.",
   "OAP runs the standard apply pipeline against the bundled YAML — this is a 
schema change.": "OAP는 번들 YAML에 대해 표준 apply 파이프라인을 실행합니다 — 이는 스키마 변경입니다.",
   "Observability Analysis Language": "Observability Analysis Language",
   "Operate · Data retention": "운영 · 데이터 보존",
@@ -1012,7 +1012,7 @@
   "Runtime config": "런타임 설정",
   "Runtime-only metrics that the bundled rule does not define will be dropped 
from BanyanDB.": "번들 규칙이 정의하지 않은 런타임 전용 메트릭은 BanyanDB에서 제거됩니다.",
   "Storage change required": "스토리지 변경 필요",
-  "Stream a {tar} snapshot of the runtime-rule rows currently in OAP. ACTIVE 
rows go under {active}, INACTIVE under {inactive}, and a top-level {manifest} 
records sha256 + status + updateTime per row.": "현재 OAP의 런타임 규칙 행을 {tar} 스냅샷으로 
스트리밍합니다. ACTIVE 행은 {active} 아래, INACTIVE는 {inactive} 아래에 들어가며, 최상위 {manifest}가 
행마다 sha256 + status + updateTime 을 기록합니다.",
+  "Stream a {tar} snapshot of the runtime-rule rows currently in OAP. ACTIVE 
rows go under {active}, INACTIVE under {inactive}, and a top-level {manifest} 
records sha256 + status + updateTime per row.": "현재 OAP의 런타임 규칙 행을 {tar} 스냅샷으로 
스트리밍합니다. ACTIVE 행은 {active} 아래, INACTIVE는 {inactive} 아래에 들어가며, 최상위 {manifest}가 
행마다 sha256 + status + updateTime을 기록합니다.",
   "The connected OAP's resolved configuration, read from the admin port's 
{endpoint} and grouped by module. Secret values (passwords, tokens, access 
keys) are masked to {mask} by OAP itself. Read-only — change config on the OAP 
side and restart.": "연결된 OAP의 확정된 구성으로, admin 포트의 {endpoint}에서 읽어 모듈별로 그룹화됩니다. 
비밀 값(비밀번호, 토큰, 액세스 키)은 OAP 자체에서 {mask}로 마스킹됩니다. 읽기 전용이며 — 설정을 변경하려면 OAP 측에서 수정한 
후 재시작하세요.",
   "The topbar {coldPill} pill swaps the read from {hotWarm} to {cold} — 
{note}, so only enable it when the time range you're looking at is older than 
the hot+warm boundary.": "상단의 {coldPill} 칩은 읽기 대상을 {hotWarm}에서 {cold}로 전환합니다 — 
{note}. 따라서 보고 있는 시간 범위가 hot+warm 경계보다 오래된 경우에만 활성화하세요.",
   "This deployment has no cold lifecycle stage configured — only the hot + 
warm window is queryable.": "이 배포에는 cold 라이프사이클 단계가 구성되어 있지 않습니다 — hot + warm 
범위만 쿼리할 수 있습니다.",
@@ -1066,7 +1066,7 @@
   "push a STRUCTURAL change to": "다음에 STRUCTURAL 변경 푸시:",
   "re-pull /runtime/oal/files": "/runtime/oal/files 다시 가져오기",
   "re-pull this catalog from OAP": "OAP에서 이 카탈로그 다시 가져오기",
-  "re-runs apply on byte-identical content (subsumes the old {fix} route). 
Requires {verb}.": "바이트 단위로 동일한 콘텐츠에 대해 apply 를 다시 실행합니다(이전 {fix} 경로를 포함). 
{verb} 권한 필요.",
+  "re-runs apply on byte-identical content (subsumes the old {fix} route). 
Requires {verb}.": "바이트 단위로 동일한 콘텐츠에 대해 apply를 다시 실행합니다(이전 {fix} 경로를 포함). 
{verb} 권한 필요.",
   "read-only · change on the OAP side": "읽기 전용 · OAP 측에서 변경",
   "records": "레코드",
   "recovery: {force} on save": "복구: 저장 시 {force}",
@@ -1103,13 +1103,13 @@
   "OAP has {count} OAL source classes registered across {files} .oal files. 
Browse them in {link} — every {syntax} line has a green ▶ that deep-links here 
with the picker pre-filled.": "OAP에는 {files}개의 .oal 파일에 걸쳐 {count}개의 OAL source 
클래스가 등록되어 있습니다. {link}에서 탐색할 수 있으며 — 모든 {syntax} 줄에는 녹색 ▶가 있어 선택기가 미리 채워진 채로 
이곳으로 딥링크됩니다.",
   "No saved captures yet — run a session in the {link}; finished sessions 
auto-save here.": "아직 저장된 캡처가 없습니다 — {link}에서 세션을 실행하세요; 완료된 세션은 여기에 자동 저장됩니다.",
   "Your sidebar adapts to your role: anything you can't use is simply not 
shown. The sections below group SkyWalking's capabilities by feature area. For 
each area you'll see {menuScope} (which sidebar entries fall in the area) and 
{actions} (the concrete things you can do, marked per role). Multiple roles add 
up — a user holding more than one role gets every permission any of their roles 
grant.": "사이드바는 역할에 맞춰 자동으로 조정됩니다: 사용할 수 없는 항목은 표시되지 않습니다. 아래 섹션은 SkyWalking의 
기능을 영역별로 분류합니다. 각 영역에서는 [...]
-  "This list is read-only. Roles are resolved from LDAP group membership via 
{groupMappings} in horizon.yaml. To add or remove a user, change their group in 
the directory — they'll appear here on next login. Local accounts shown below 
are break-glass only and ignored while LDAP is reachable.": "이 목록은 읽기 전용입니다. 
역할은 horizon.yaml 의 {groupMappings}를 통해 LDAP 그룹 멤버십에서 해석됩니다. 사용자를 추가하거나 제거하려면 
디렉터리에서 해당 그룹을 변경하세요 — 다음 로그인 시 여기에 표시됩니다. 아래의 로컬 계정은 break-glass 용도 전용이며 LDAP에 
연결 가능한 동안에는 무시됩니다.",
-  "This list mirrors {localUsers} in horizon.yaml. Edits to the file are 
picked up on hot-reload. Add users via the YAML + {hashCli} for password 
hashes.": "이 목록은 horizon.yaml 의 {localUsers}를 미러링합니다. 파일 편집은 핫 리로드로 반영됩니다. 비밀번호 
해시는 YAML + {hashCli}를 통해 사용자를 추가하세요.",
+  "This list is read-only. Roles are resolved from LDAP group membership via 
{groupMappings} in horizon.yaml. To add or remove a user, change their group in 
the directory — they'll appear here on next login. Local accounts shown below 
are break-glass only and ignored while LDAP is reachable.": "이 목록은 읽기 전용입니다. 
역할은 horizon.yaml의 {groupMappings}를 통해 LDAP 그룹 멤버십에서 해석됩니다. 사용자를 추가하거나 제거하려면 
디렉터리에서 해당 그룹을 변경하세요 — 다음 로그인 시 여기에 표시됩니다. 아래의 로컬 계정은 break-glass 용도 전용이며 LDAP에 
연결 가능한 동안에는 무시됩니다.",
+  "This list mirrors {localUsers} in horizon.yaml. Edits to the file are 
picked up on hot-reload. Add users via the YAML + {hashCli} for password 
hashes.": "이 목록은 horizon.yaml의 {localUsers}를 미러링합니다. 파일 편집은 핫 리로드로 반영됩니다. 비밀번호 
해시는 YAML + {hashCli}를 통해 사용자를 추가하세요.",
   "Last-seen & Active (24h) are tracked per BFF node (in-memory, not 
cluster-shared) — served by {node}. In a multi-replica deploy these reflect 
this node only.": "마지막 접속 및 활성(24시간)은 BFF 노드별로 추적됩니다(메모리 기반, 클러스터 간 공유 안 됨) — 
제공 노드: {node}. 다중 복제본 배포 환경에서는 이 값이 현재 노드에만 해당됩니다.",
   "See what each role can do → {link}": "각 역할이 할 수 있는 작업 보기 → {link}",
   "{title} {localUsers} is populated but the active backend is LDAP — local 
users are ignored except as a break-glass source.": "{title} {localUsers}이(가) 
채워져 있지만 활성 백엔드는 LDAP입니다 — 로컬 사용자는 break-glass 소스 외에는 무시됩니다.",
   "username {name}": "사용자 이름 {name}",
-  "add {key} in horizon.yaml to arm": "활성화하려면 horizon.yaml 에 {key}를 추가하세요",
+  "add {key} in horizon.yaml to arm": "활성화하려면 horizon.yaml에 {key}를 추가하세요",
   "section {key}": "섹션 {key}",
   "No user entry found for {username}": "{username}에 대한 사용자 항목을 찾을 수 없습니다",
   "{range} → {step} step (one bucket per minute)": "{range} → {step} 단계 (분당 버킷 
1개)",

Reply via email to