diff --git a/devfront/src/features/clients/ClientGeneralPage.tsx b/devfront/src/features/clients/ClientGeneralPage.tsx
index 964d4d55..6aeedfc0 100644
--- a/devfront/src/features/clients/ClientGeneralPage.tsx
+++ b/devfront/src/features/clients/ClientGeneralPage.tsx
@@ -305,11 +305,19 @@ function ClientGeneralPage() {
-
- {isCreate
- ? t("ui.dev.clients.general.title_create", "Create Client")
- : t("ui.dev.clients.general.title_edit", "Client Settings")}
-
+
+
+ {isCreate
+ ? t("ui.dev.clients.general.title_create", "Create Client")
+ : t("ui.dev.clients.general.title_edit", "Client Settings")}
+
+
+ {t(
+ "ui.dev.clients.general.subtitle",
+ "앱 정보, 권한 스코프, 보안 설정을 관리합니다.",
+ )}
+
+
{!isCreate && (
diff --git a/devfront/src/locales/en.toml b/devfront/src/locales/en.toml
index f6dc1fac..4090e8d5 100644
--- a/devfront/src/locales/en.toml
+++ b/devfront/src/locales/en.toml
@@ -337,8 +337,8 @@ delete_confirm = "Are you sure you want to delete this app? This action cannot b
empty = "No consents found."
load_error = "Error loading consents: {{error}}"
loading = "Loading consents..."
-showing = "Showing {{from}} to {{to}} of {{total}} users"
-subtitle = "Subtitle"
+showing = "Showing users {{from}}-{{to}} of {{total}}"
+subtitle = "Review and manage user consent grants for this OIDC relying party."
revoke_confirm = "Are you sure you want to revoke this user's permissions? After revocation, the user must consent again on next login."
[msg.dev.clients.details]
@@ -354,14 +354,14 @@ rotate_error = "Rotate Error"
save_error = "Save Error"
secret_rotated = "Secret Rotated"
secret_unavailable = "SECRET_NOT_AVAILABLE"
-subtitle = "Subtitle"
+subtitle = "Manage OIDC credentials and endpoints."
[msg.dev.clients.details.redirect]
-description = "Description"
+description = "List the allowed URLs to redirect users to after successful authentication. Separate multiple values with commas (,)."
[msg.dev.clients.details.security]
-footer = "Footer"
-note = "Note"
+footer = "For secret rotation, we recommend checking admin session TTL, rate limits, and notification integrations."
+note = "Keep endpoints read-only, and tie secret rotation/copy actions to audit logs."
[msg.dev.clients.general]
load_error = "Error loading client: {{error}}"
@@ -376,15 +376,15 @@ add_subtitle = "Connect an external OIDC provider."
empty = "No IdP configurations found."
[msg.dev.clients.general.identity]
-logo_help = "Logo Help"
-subtitle = "Subtitle"
+logo_help = "PNG or SVG URL shown on the consent and authentication screens."
+subtitle = "Set the application name, description, and logo."
[msg.dev.clients.general.redirect]
help = "Enter the redirect URIs. You can modify them in the Federation tab after creation."
[msg.dev.clients.general.scopes]
-empty = "Empty"
-subtitle = "Subtitle"
+empty = "No scopes registered."
+subtitle = "Define the permission scopes this application can request."
[msg.dev.clients.general.security]
private_help = "Server side App: For apps that can safely store a client secret, such as Node.js or Java servers."
@@ -1218,6 +1218,7 @@ env_badge = "Env: dev"
scope_badge = "Scoped to /dev"
[ui.dev.nav]
+audit_logs = "Audit Logs"
clients = "Connected Application"
logout = "Logout"
@@ -1329,6 +1330,7 @@ settings = "Settings"
[ui.dev.clients.general]
create = "Create Application"
display_new = "Add Connected Application"
+subtitle = "Manage application identity, permission scopes, and security settings."
title_create = "Create Client"
title_edit = "Client Settings"
diff --git a/devfront/src/locales/ko.toml b/devfront/src/locales/ko.toml
index 64580034..eaa5e8e2 100644
--- a/devfront/src/locales/ko.toml
+++ b/devfront/src/locales/ko.toml
@@ -334,19 +334,19 @@ loading = "Loading apps..."
showing = "Showing {{shown}} of {{total}} apps"
[msg.dev.clients.consents]
-empty = "No consents found."
-load_error = "Error loading consents: {{error}}"
-loading = "Loading consents..."
+empty = "조회된 동의 내역이 없습니다."
+load_error = "동의 내역을 불러오지 못했습니다: {{error}}"
+loading = "동의 내역을 불러오는 중..."
revoke_confirm = "정말로 이 사용자의 권한을 철회하시겠습니까? 철회 시 사용자는 다음 접속 시 다시 동의해야 합니다."
-showing = "Showing {{from}} to {{to}} of {{total}} users"
+showing = "총 {{total}}명 중 {{from}}-{{to}} 표시 중"
subtitle = "OIDC Relying Party 사용자 권한을 검토·관리합니다."
[msg.dev.clients.details]
copy_client_id = "Client ID가 복사되었습니다."
copy_client_secret = "Client Secret이 복사되었습니다."
copy_endpoint = "{{label}}가 복사되었습니다."
-load_error = "Error loading client: {{error}}"
-loading = "Loading client..."
+load_error = "클라이언트 정보를 불러오지 못했습니다: {{error}}"
+loading = "클라이언트 정보를 불러오는 중..."
missing_id = "Client ID가 필요합니다."
redirect_saved = "Redirect URIs가 저장되었습니다."
rotate_confirm = "경고: Client Secret을 재발급하면 기존 시크릿은 즉시 무효화됩니다.\n연동된 애플리케이션이 중단될 수 있습니다. 계속하시겠습니까?"
@@ -364,8 +364,8 @@ footer = "비밀키 재발행 작업에는 관리자 세션 TTL 확인과 레이
note = "엔드포인트는 읽기 전용으로 유지하고, 비밀키 재발행/복사는 감사 로그와 연계하세요."
[msg.dev.clients.general]
-load_error = "Error loading client: {{error}}"
-loading = "Loading client..."
+load_error = "클라이언트 정보를 불러오지 못했습니다: {{error}}"
+loading = "클라이언트 정보를 불러오는 중..."
save_error = "저장 실패: {{error}}"
saved = "설정이 저장되었습니다."
status_changed = "상태가 {{status}}로 변경되었습니다."
@@ -1218,6 +1218,7 @@ env_badge = "Env: dev"
scope_badge = "Scoped to /dev"
[ui.dev.nav]
+audit_logs = "감사 로그"
clients = "연동 앱"
logout = "로그아웃"
@@ -1262,37 +1263,37 @@ type_all = "모든 유형"
type_label = "유형:"
[ui.dev.clients.consents]
-export_csv = "Export CSV"
-revoke = "Revoke"
+export_csv = "CSV 내보내기"
+revoke = "철회"
revoked_at = "철회일: "
scope_label = "권한:"
search_placeholder = "사용자 ID, 이름, 이메일로 검색"
-status_label = "Status:"
-status_revoked = "Revoked"
-subject = "Subject"
-title = "User Consent Grants"
+status_label = "상태:"
+status_revoked = "철회됨"
+subject = "사용자"
+title = "사용자 동의 내역"
[ui.dev.clients.consents.breadcrumb]
-clients = "Clients"
-current = "User Consent Grants"
-home = "Home"
+clients = "연동 앱"
+current = "동의 및 사용자"
+home = "홈"
[ui.dev.clients.consents.filters]
-advanced = "Advanced Filters"
+advanced = "고급 필터"
[ui.dev.clients.consents.stats]
-active_grants = "Active Grants"
-avg_scopes = "Avg. Scopes per User"
-total_scopes = "Total Scopes Issued"
+active_grants = "활성 동의"
+avg_scopes = "사용자당 평균 스코프"
+total_scopes = "총 발급 스코프"
[ui.dev.clients.consents.table]
-action = "Action"
-first_granted = "First Granted"
-last_auth = "Last Authenticated"
-scopes = "Granted Scopes"
-status = "Status"
-tenant = "Tenant"
-user = "User"
+action = "작업"
+first_granted = "최초 동의 일시"
+last_auth = "마지막 인증"
+scopes = "허용 스코프"
+status = "상태"
+tenant = "테넌트"
+user = "사용자"
[ui.dev.clients.details]
@@ -1328,6 +1329,7 @@ settings = "설정"
[ui.dev.clients.general]
create = "앱 생성"
display_new = "연동 앱 추가"
+subtitle = "앱 정보, 권한 스코프, 보안 설정을 관리합니다."
title_create = "연동 앱 생성"
title_edit = "연동 앱 설정"
@@ -1337,30 +1339,30 @@ add_title = "Add Identity Provider"
add_btn = "Add Provider"
[ui.dev.clients.general.identity]
-description = "Description"
+description = "설명"
description_placeholder = "앱에 대한 간단한 설명을 입력하세요."
-logo = "App Logo URL"
+logo = "앱 로고 URL"
logo_placeholder = "https://example.com/logo.png"
-logo_preview = "Logo Preview"
+logo_preview = "로고 미리보기"
name = "앱 이름"
name_placeholder = "My Awesome Application"
-title = "Application Identity"
+title = "애플리케이션 정보"
[ui.dev.clients.general.redirect]
label = "Redirect URIs"
placeholder = "https://app.example.com/callback, http://localhost:3000/auth/callback (콤마로 구분)"
[ui.dev.clients.general.scopes]
-add = "Scope 추가"
+add = "스코프 추가"
description_placeholder = "권한에 대한 설명"
name_placeholder = "e.g. profile"
-title = "Scopes"
+title = "스코프"
[ui.dev.clients.general.scopes.table]
-description = "Description"
-mandatory = "Mandatory"
-name = "Scope Name"
-delete = "Delete"
+description = "설명"
+mandatory = "필수"
+name = "스코프 이름"
+delete = "삭제"
[ui.dev.clients.general.security]
private = "Server side App"
diff --git a/devfront/src/locales/template.toml b/devfront/src/locales/template.toml
index 00d6daa1..aa09aed6 100644
--- a/devfront/src/locales/template.toml
+++ b/devfront/src/locales/template.toml
@@ -1218,6 +1218,7 @@ env_badge = ""
scope_badge = ""
[ui.dev.nav]
+audit_logs = ""
clients = ""
logout = ""
@@ -1328,6 +1329,7 @@ settings = ""
[ui.dev.clients.general]
create = ""
display_new = ""
+subtitle = ""
title_create = ""
title_edit = ""