Files
Gnuboard7/plugins/_bundled/sirsoft-gdpr/lang/ko/messages.php
T
HeuJung 8328b1db77 docs(core,extensions): 확장 개발자 문서 9세트 집필과 생성기 정합 보강
S1 파일럿 3종(sirsoft-board · sirsoft-gdpr · sirsoft-admin_basic)에 이어
결제·본인인증 동형군 6종의 AGENTS.md · README.md · docs/ 5문서를 집필했다.
확장을 고치려는 쪽이 매번 src/ 를 훑어 구조를 재발견하지 않도록, 설계 의도와
확장점(발행·구독 훅)·수정 시 동반 의무·금지 패턴을 코드 근거로 서술했다.

생성기(ExtensionDocScaffolder)에서 표를 무의미하게 만들던 세 결함을 함께 고쳤다.
getLayoutExtensions 기본 구현이 돌려주는 절대경로가 파일 목록과 중복돼 로컬
머신 경로가 커밋 문서에 실리던 문제, getNotificationDefinitions 를 'key'/'event'
로 읽어 모든 행이 '-' 로 찍히던 문제, getSettingsLayout 절대경로가 정규화 없이
노출되던 문제다. 셋 다 예외를 남기지 않고 표만 조용히 망가뜨리므로
ExtensionDocContractTest 에 각각의 되돌림 red 를 확인한 단언을 두었다.
템플릿의 extensions/{id}/ 는 모듈·플러그인의 발행과 반대 방향(오버라이드)이라
별도 블록(template-overrides)으로 분리했다.

sirsoft-admin_basic 의 컴포넌트·핸들러·레이아웃 문서를 코어 docs/ 에서 그 템플릿
소유로 이관하고, 남은 참조 6축을 재는 가드를 추가했다. 이관 후 남은 옛 경로는
오류가 아니라 헛걸음으로만 나타나 드러나지 않는다. 의 상대 링크가
한 단계 얕아 공유 docs/ 대신 를 가리키던 문제도 함께 고쳤다.

README 상단의 확장명 이미지 배지를 평문 H1 로 바꿨다( 지시 2026-08-31).
루트 README.md · README.ko.md 도 같은 기준을 적용했다. 정보 배지는 유지한다.

sirsoft-gdpr: 회원탈퇴로 자동 철회된 동의가 관리자 동의 이력 화면의 출처 필터로
걸러지지 않던 문제를 고쳤다. Repository 가 'withdraw' 리터럴을 직접 UPDATE 에
싣는데 그 값이 ConsentSource enum 에 없어, 화면 필터 옵션·라벨 어느 쪽에도
도달하지 못했다. 어휘를 enum 단일 출처로 모으고 ko·en·ja 라벨과 필터 옵션을
함께 채웠으며, 어휘 대조 테스트의 모집단에 Repository 를 편입했다.
2026-08-31 15:57:44 +09:00

291 lines
18 KiB
PHP

<?php
return [
'consent' => [
'granted' => '동의가 저장되었습니다.',
'granted_again' => '동의가 갱신되었습니다.',
'rejected_saved' => '동의하지 않고 계속합니다. 선택 항목은 사용되지 않습니다.',
'revoked' => '동의가 철회되었습니다.',
'renew_all_success' => '활성 항목 {renewed} 개를 새 정책 버전으로 갱신했습니다.',
'granting' => '동의 중...',
'revoking' => '철회 중...',
'renewing' => '갱신 중...',
'already_same_state' => '이미 동일한 상태입니다.',
'required_cannot_revoke' => '필수 항목은 철회할 수 없습니다.',
'invalid_key' => '유효하지 않은 동의 항목입니다.',
'category_cookie_necessary' => '필수 쿠키',
'category_cookie_functional' => '기능 쿠키',
'category_cookie_analytics' => '분석 쿠키',
'category_cookie_marketing' => '마케팅 쿠키',
],
'blocked_domains' => [
'invalid_format' => '올바른 도메인 형식이 아닙니다. (FQDN 만 지원, *.example.com 와일드카드 가능)',
'invalid_format_functional' => '기능 카테고리 — 올바른 도메인 형식이 아닙니다. (FQDN 만 지원, *.example.com 와일드카드 가능)',
'invalid_format_analytics' => '분석 카테고리 — 올바른 도메인 형식이 아닙니다. (FQDN 만 지원, *.example.com 와일드카드 가능)',
'invalid_format_marketing' => '마케팅 카테고리 — 올바른 도메인 형식이 아닙니다. (FQDN 만 지원, *.example.com 와일드카드 가능)',
'too_long' => '도메인은 253자를 초과할 수 없습니다.',
'too_long_functional' => '기능 카테고리 — 도메인은 253자를 초과할 수 없습니다.',
'too_long_analytics' => '분석 카테고리 — 도메인은 253자를 초과할 수 없습니다.',
'too_long_marketing' => '마케팅 카테고리 — 도메인은 253자를 초과할 수 없습니다.',
'must_be_array' => '카테고리별 도메인 목록은 배열이어야 합니다.',
],
'settings' => [
'saved' => '설정이 저장되었습니다.',
'title' => 'GDPR 설정',
'description' => '쿠키 동의 배너와 마이페이지 동의 관리 카드의 동작을 운영자가 제어합니다.',
'section' => [
'operator' => '운영 주체 / 개인정보처리방침',
'operator_desc' => '쿠키 배너·정책 페이지에 표시될 운영 주체, 데이터 저장 위치, 정책 페이지 슬러그를 등록합니다. (GDPR Art.13 투명성 의무)',
'cookie_banner' => '쿠키 동의 배너',
'cookie_banner_desc' => '방문자에게 표시되는 쿠키 동의 배너의 노출/위치/카테고리/정책 버전을 한 곳에서 설정합니다.',
'cookie_banner_settings' => '배너 표시 설정',
'cookie_categories' => '쿠키 카테고리',
'cookie_policy_version' => '쿠키 정책 버전',
'auto_blocking' => '자동 차단 정책',
'auto_blocking_desc' => '쿠키 배너 노출이 ON 일 때 아래 카테고리별 차단 도메인 목록의 외부 추적 리소스가 사용자 동의 전까지 자동 차단됩니다. (별도 토글 없음 — 배너 노출과 함께 자동 작동)',
],
'nav' => [
'operator' => '운영 정보',
'cookie_banner' => '쿠키 배너',
'auto_blocking_policy' => '자동 차단 정책',
],
'status' => [
'enabled' => '활성',
'disabled' => '비활성',
'visible' => '노출',
'hidden' => '숨김',
],
'fields' => [
'cookie_policy_version' => [
'label' => '정책 버전',
'hint' => "운영자가 직접 입력하지 않고 시스템이 자동 관리합니다.\n• 카테고리 추가/삭제, 카테고리 의미 변경, 정책 페이지 변경 → 새 버전 자동 발행 + 모든 회원 재동의\n• 도메인 추가/삭제, 라벨 변경 등 단순 변경 → 발행 없음",
],
'privacy_policy_slug' => [
'label' => '개인정보처리방침 페이지 슬러그',
'hint' => '페이지 플러그인에 등록된 처리방침 페이지의 슬러그. 비어 있으면 쿠키 배너의 정책 링크가 표시되지 않습니다.',
'placeholder' => '예: privacy-policy',
],
'legal_entity_name' => [
'label' => '법인명 / 운영 주체',
'hint' => '쿠키 배너와 마이페이지에 표시되는 사이트 운영 주체 이름입니다.',
'placeholder' => '예: (주)회사명',
],
'data_storage_location' => [
'label' => '데이터 저장 위치',
'hint' => '사용자에게 안내할 데이터 저장 국가를 입력하세요. 예: "대한민국", "미국 (AWS)". IP 주소, 클라우드 리전 코드(예: ap-northeast-2), 데이터센터 주소는 보안상 입력하지 마세요.',
'placeholder' => '예: 대한민국 (자체 데이터센터) / 미국 (AWS)',
'sensitive_format' => '데이터 저장 위치에 IP 주소, CIDR, 클라우드 리전 코드(예: ap-northeast-2) 는 입력할 수 없습니다. 국가명(예: 대한민국, 미국) 으로 표기하세요.',
],
'banner_enabled' => [
'label' => '쿠키 배너 노출',
'hint' => '활성 시 쿠키 동의 배너 노출 + 동의 전 외부 추적 자동 차단이 함께 시작됩니다. (GDPR Art.6 "동의 전 처리 금지" 의 강제 메커니즘인 차단을 분리 토글로 끄지 못하도록 단일 토글로 통합) 마이페이지 동의 관리 카드는 이 토글과 무관하게 동의/철회 이력이 있는 회원에게 항상 노출됩니다.',
],
'banner_position' => [
'label' => '배너 위치',
'hint' => '쿠키 배너가 화면에 표시되는 위치를 선택합니다.',
'option_bottom_bar' => '하단 (전체 폭)',
'option_bottom_left_popup' => '좌하단 팝업',
'option_bottom_right_popup' => '우하단 팝업',
'option_centered_modal' => '중앙 모달',
],
'blocked_domains' => [
'warnings_title' => '안내',
'auto_blocking_off_hint' => '자동 차단은 쿠키 배너 노출이 ON 일 때만 작동합니다. 「쿠키 배너」 카드에서 쿠키 배너 노출 토글을 먼저 켜세요.',
'warning_visual_break' => '외부 폰트·스타일시트는 분류에 주의하세요. 잘못 차단하면 페이지가 조용히 깨질 수 있습니다.',
'warning_policy_bump' => '차단 도메인을 변경한 후 쿠키 정책 버전을 올리세요. 기존 동의자가 새 도메인에도 동의한 것으로 처리되는 문제를 막습니다.',
'warning_domain_format' => '도메인 형식: 점이 1개 이상 포함된 도메인. 와일드카드 *.example.com 가능. 단일 라벨(localhost) 및 한글 도메인(xn-- 변환) 미지원.',
'tag_input_placeholder' => '도메인 입력 후 Enter (예: google-analytics.com, *.hotjar.com)',
'tag_no_options' => '추천 도메인이 없습니다. 직접 입력하세요.',
'category' => [
'functional' => '기능 카테고리 차단 도메인',
'analytics' => '분석 카테고리 차단 도메인',
'marketing' => '마케팅 카테고리 차단 도메인',
],
],
'cookie_categories' => [
'description' => '쿠키 카테고리 4종의 용도와 차단 도구 예시는 각 카드의 [정보 펼치기] 에서 확인할 수 있습니다.',
'category_required_badge' => '필수',
'category_optional_badge' => '선택',
],
],
'save_success' => '설정이 저장되었습니다.',
'save_error' => '설정 저장 중 오류가 발생했습니다.',
'validation_error' => '입력 값을 확인해주세요.',
'policy_version' => [
'current_label' => '현재 버전',
'published_at_label' => '발행 일시',
'publisher_label' => '발행자',
'publisher_system' => '시스템',
'memo_label' => '변경 사유',
'publish_success' => '새 정책 버전이 발행되었습니다. 모든 회원이 다음 방문 시 재동의를 진행합니다.',
'publishing' => '발행 중...',
'change_type' => [
'material' => '재동의 트리거',
'non_material' => '단순 변경',
'initial' => '초기 발행',
],
'history_modal' => [
'title' => '정책 버전 발행 이력',
'empty' => '발행된 정책 버전이 없습니다.',
],
'history' => [
'col' => [
'version' => '버전',
'created_at' => '발행 일시',
'publisher' => '발행자',
'change_type' => '종류',
'memo' => '사유',
'snapshot_action' => '본문',
],
],
'history_page_summary' => '총 :total건 · :current / :last 페이지',
'history_prev' => '이전',
'history_next' => '다음',
'snapshot_view_short' => '보기',
'material_modal' => [
'title' => '정책 버전 발행 + 재동의 트리거',
'body' => '다음 변경은 정책 버전 자동 발행과 모든 회원의 재동의 트리거를 발생시킵니다.',
'effect_bump' => '정책 버전 자동 발행 (단조 증가)',
'effect_reconsent' => '모든 회원의 다음 방문 시 재동의 화면 노출',
'effect_history' => '이력 모달에 새 버전 row 추가',
'memo_label' => '변경 사유 (필수)',
'memo_placeholder' => '예: 분석 카테고리 신설 (Hotjar 도입)',
'confirm' => '새 버전 발행 후 저장',
],
'snapshot_modal' => [
'title' => '정책 버전 v:version 본문',
'description' => '발행 시점 settings 의 카테고리 목록·정책 본문 슬러그·차단 도메인 등 전체 본문입니다. DPO 가 동의 분쟁 시 입증 자료로 활용합니다.',
'section_categories' => '쿠키 카테고리',
'section_privacy_policy' => '정책 본문 슬러그',
'section_blocked_domains' => '차단 도메인 카탈로그',
'category_required_badge' => '필수',
'no_categories' => '등록된 카테고리가 없습니다.',
'no_blocked_domains' => '등록된 차단 도메인이 없습니다.',
'view_button' => 'v:version 본문 보기',
'close' => '닫기',
'open_policy_page' => '본문 페이지 열기',
'no_policy_slug' => '등록된 정책 본문 페이지가 없습니다.',
],
'not_found' => '해당 정책 버전을 찾을 수 없습니다.',
],
],
'admin' => [
'consent_log' => [
'title' => 'GDPR 동의 이력',
'description' => '회원·게스트의 동의·철회 변경 이력을 조회합니다. IP·User-Agent 등 감사 정보가 함께 노출됩니다.',
'refresh' => '새로고침',
'empty' => '조회된 동의 이력이 없습니다.',
'clear_filters' => '필터 초기화',
'guest_label' => '게스트',
'view_member_tooltip' => '회원 상세 페이지로 이동',
'search_placeholder' => '이메일 또는 세션 ID 로 검색',
'search_button' => '검색',
'search_type' => [
'email' => '이메일',
'session_id' => '세션 ID',
],
'filter' => [
'consent_key_label' => '동의 항목',
'action_label' => '액션',
'source_label' => '출처',
'option_all' => '전체',
],
'action' => [
'granted' => '동의',
'revoked' => '철회',
'rejected' => '거부',
],
'source' => [
'banner' => '배너',
'preference_center' => '환경설정',
'register' => '회원가입',
'mypage' => '마이페이지',
'mypage_renew_all' => '마이페이지 일괄 재동의',
'withdraw' => '회원탈퇴',
],
'col' => [
'created_at' => '시점',
'subject' => '주체',
'consent_key' => '동의 항목',
'action' => '액션',
'source' => '출처',
'policy_version' => '정책 버전',
'ip' => 'IP',
],
'detail' => [
'session_id_label' => '세션 ID',
'user_agent_label' => 'User-Agent',
'categories_label' => '카테고리 스냅샷',
'categories_hint' => '동의 시점에 회원이 카테고리별로 표시한 의사입니다. 정책 본문이 갱신되어도 이 기록은 불변으로 보존됩니다.',
'snapshot_granted' => '동의',
'snapshot_revoked' => '미동의',
],
],
],
'mypage' => [
'privacy' => [
'title' => '쿠키 동의 관리',
'description' => '사이트가 사용 중인 쿠키 항목에 대한 동의를 변경하거나 철회할 수 있습니다.',
'section_consents' => '내 동의 현황',
'section_consents_hint' => '동의/철회 시점에 따라 즉시 반영됩니다. 필수 항목은 철회할 수 없습니다.',
'col_consent_key' => '동의 항목',
'col_consented' => '상태',
'col_consented_at' => '동의일',
'col_revoked_at' => '철회일',
'col_policy_version' => '정책 버전',
'col_action' => '작업',
'consented' => '동의',
'revoked' => '철회',
'rejected_label' => '거부',
// 이슈 #430 — 각 동의 항목 상태별 표시 동사. Resource(status_label)가 status 로 골라 내려준다.
'status' => [
'granted' => '동의',
'consented' => '동의',
'revoked' => '철회',
'rejected' => '거부',
],
// 이슈 #430 (버튼 재설계) — 상태 배지 문구. Resource(status_badge_label).
'badge' => [
'required' => '항상 적용',
'consented' => '동의함',
'rejected' => '거부함',
'unset' => '미설정',
],
'revoke' => '철회',
'grant' => '동의',
'grant_again' => '다시 동의',
'required_label' => '필수',
'required_hint' => '서비스 제공에 필수적이라 철회할 수 없습니다.',
'revoke_confirm_title' => '동의 철회 확인',
'revoke_confirm_message' => '이 항목을 철회하시겠습니까? 동의를 철회하면 해당 카테고리 관련 기능이 제한될 수 있습니다.',
'no_consents' => '활성 동의 항목이 없습니다.',
'needs_renewal' => '쿠키 정책이 변경되었습니다. 동의를 갱신해주세요.',
'needs_renewal_with_version' => '쿠키 정책이 버전 {version} 으로 변경되었습니다. 선택 항목의 동의를 다시 확인해주세요.',
'needs_renewal_hint' => '필수 쿠키는 사이트 운영에 꼭 필요한 항목이므로 정책 변경과 무관하게 항상 적용됩니다.',
'btn_renew_all' => '현재 동의 갱신',
'btn_renew_this_item' => '정책 갱신',
'renew_all_success' => '활성 항목 {renewed} 개를 새 정책 버전으로 갱신했습니다.',
],
],
'common' => [
'loading' => '불러오는 중...',
'refresh' => '새로고침',
],
'banner' => [
're_appear_reason' => '쿠키 정책이 버전 :version 로 변경되어 동의를 다시 확인합니다.',
'consent_required_hint' => '거부한 항목과 관련된 기능이 제한될 수 있습니다.',
'btn_renew_consent' => '현재 동의 갱신',
'title' => '쿠키 사용 안내',
'description' => '본 사이트는 사용자 경험 개선과 분석을 위해 쿠키를 사용합니다. 항목별로 동의 여부를 선택할 수 있습니다.',
'accept_all' => '모두 동의',
'reject_continue' => '동의하지 않고 계속하기',
'preferences' => '선택 동의',
'save' => '선택 저장',
'policy_link' => '개인정보처리방침',
'preferences_title' => '쿠키 환경설정',
'preferences_description' => '카테고리별 쿠키 사용을 개별 동의/철회할 수 있습니다. 필수 카테고리는 끌 수 없습니다.',
'category_required_badge' => '필수',
'view_policy_label' => '변경된 정책 본문 보기',
],
];