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 = ""