export default {
  common: {
    appName: "Antdv Next Admin",
    add: "추가하다",
    edit: "편집하다",
    delete: "삭제",
    view: "보다",
    search: "찾다",
    reset: "다시 놓기",
    submit: "제출하다",
    cancel: "취소",
    confirm: "확인하다",
    save: "구하다",
    export: "내보내다",
    import: "수입",
    refresh: "새로 고치다",
    operate: "작동하다",
    more: "더",
    back: "뒤쪽에",
    expand: "확장하다",
    collapse: "무너지다",
    ok: "좋아요",
    close: "닫다",
    yes: "예",
    no: "아니요",
    loading: "로드 중...",
    noData: "데이터 없음",
    success: "성공",
    error: "오류",
    warning: "경고",
    info: "정보",
    copySuccess: "성공적으로 복사되었습니다",
    copyFailed: "복사 실패",
    actions: "행위",
    status: "상태",
    createTime: "시간 만들기",
    updateTime: "업데이트 시간",
    menu: "메뉴",
    navigate: "탐색",
    select: "선택하다",
    clear: "분명한",
    component: "요소",
    basicUsage: "기본 사용법",
    advancedUsage: "고급 사용법",
    preview: "시사",
    jsonContent: "JSON 콘텐츠",
    jsonPlaceholder: "유효한 JSON을 입력하세요...",
    jsonParseError: "잘못된 JSON 형식",
    invalidArray: "잘못된 배열 형식",
    formEdit: "양식 편집",
    rawEdit: "원시 편집",
    addField: "필드 추가",
    fieldName: "필드 이름",
    fieldExists: "필드가 이미 존재합니다.",
    pleaseInput: "입력해주세요",
    fieldOrder: "필드 순서",
    moveUp: "위로 이동",
    moveDown: "아래로 이동",
    enabled: "활성화됨",
    disabled: "장애가 있는",
    inputTags: "태그를 입력하고 Enter를 누르세요",
    addSuccess: "성공적으로 추가되었습니다",
    pleaseInputFieldName: "필드명을 입력해주세요",
    inputFieldName: "입력 필드 이름",
    selectFieldType: "필드 유형 선택",
    typeString: "끈",
    typeNumber: "숫자",
    typeBoolean: "부울",
    typeTags: "태그",
    typeArray: "정렬",
    typeObject: "물체",
    searchLabel: "{label} 검색",
  },
  codeEditor: {
    format: "포맷",
    minify: "압축",
    copy: "복사",
    formatSuccess: "포맷 성공",
    minifySuccess: "압축 성공",
    copySuccess: "복사 성공",
    copyFailed: "복사 실패",
    jsonError: "잘못된 JSON 형식",
  },
  menu: {
    dashboard: "계기반",
    organization: "조직",
    system: "체계",
    user: "사용자 관리",
    role: "역할 관리",
    permission: "메뉴 관리",
    dict: "사전",
    log: "시스템 로그",
    dept: "부서",
    config: "시스템 구성",
    file: "파일 관리",
    examples: "예시 허브",
    examplesQuickStart: "빠른 시작",
    examplesFormInput: "양식 및 입력",
    examplesContent: "콘텐츠 편집자",
    examplesInteraction: "기본 상호작용",
    examplesBusinessScaffold: "비즈니스 비계",
    examplesSecurityEngineering: "보안 및 엔지니어링",
    examplesIntegration: "통합 및 탐색",
    examplesExceptionPages: "예외 페이지",
    table: "테이블 예",
    icon: "아이콘 예",
    form: "양식 예",
    jsonInput: "JSON 입력",
    i18nInput: "I18n 입력",
    advancedFilter: "고급 필터 빌더",
    editor: "리치 텍스트 편집기",
    milkdown: "마크다운 편집기",
    modal: "모달 예",
    spin: "스핀 예시",
    watermark: "양수표",
    requestAuth: "요청/인증 흐름",
    rbacFlow: "RBAC 흐름",
    proTableAdvanced: "프로테이블 어드밴스드",
    complexForm: "복잡한 형태",
    uploadSystem: "업로드 시스템",
    importExport: "가져오기/내보내기 흐름",
    masterDetail: "마스터 세부정보",
    virtualTable: "가상 스크롤 테이블",
    stateCache: "상태 및 캐시",
    observability: "관찰 가능성",
    testing: "테스트",
    exception: "예외",
    exception403: "403",
    exception404: "404",
    exception500: "500",
    splitter: "스플리터",
    tour: "투어 가이드",
    qrcode: "QR 코드",
    segmented: "세그먼트",
    colorPicker: "색상 선택기",
    profile: "윤곽",
    about: "에 대한",
  },
  layout: {
    logout: "로그아웃",
    logoutConfirm: "정말로 로그아웃하시겠습니까?",
    profile: "윤곽",
    documentation: "선적 서류 비치",
    settings: "설정",
    theme: "주제",
    themeLight: "라이트 테마",
    themeDark: "어두운 테마",
    themeAuto: "팔로우 시스템",
    language: "언어",
    fullscreen: "전체 화면",
    exitFullscreen: "전체 화면 종료",
    notifications: "알림",
    markAllRead: "모두 읽은 것으로 표시",
    clearAll: "모두 지우기",
    noNotifications: "알림 없음",
    notificationsEmptyHint: "삭제하면 여기에 새 알림이 표시됩니다.",
    viewDetails: "세부정보 보기",
    viewAllNotifications: "모든 알림 보기",
    searchPlaceholder: "검색 메뉴...",
    noSearchResults: "일치하는 메뉴가 없습니다.",
    recentMenus: "최근 방문",
    aiCollabEnable: "AI 협업 켜기",
    aiCollabDisable: "AI 협업 끄기",
    aiAssistantTitle: "AI 협업",
    aiAssistantSubtitle: "현재 페이지 컨텍스트 기반으로 작업을 지원합니다",
    aiCurrentPage: "현재 페이지",
    aiQuickActions: "빠른 작업",
    aiInputPlaceholder: "질문 또는 명령을 입력하세요 (Shift+Enter 줄바꿈)",
    aiEnterHint: "Enter 전송, Shift+Enter 줄바꿈",
    aiEmptyTitle: "AI 협업 시작",
    aiEmptyDescription:
      "페이지 설명, 데이터 요약, 다음 작업 제안을 요청할 수 있습니다",
    aiActionExplain: "현재 페이지 설명",
    aiActionSummary: "현재 데이터 요약",
    aiActionRisk: "잠재 리스크 식별",
    aiActionNextStep: "다음 단계 제안",
    aiDemoReply:
      '요청을 받았습니다. "{page}" 페이지 컨텍스트를 바탕으로 제안을 생성하고 있습니다.',
    languages: {
      zhCN: "중국어(간체)",
      enUS: "영어",
      jaJP: "일본어",
      koKR: "한국어",
    },
    tabs: {
      refresh: "새로 고치다",
      close: "닫다",
      pin: "핀",
      unpin: "고정 해제",
      favorite: "즐겨찾기에 추가",
      unfavorite: "즐겨찾기에서 제거",
      closeOthers: "기타 닫기",
      closeAll: "모두 닫기",
      closeLeft: "왼쪽 닫기",
      closeRight: "오른쪽 닫기",
      moreActions: "추가 탭 작업",
    },
  },
  settings: {
    title: "환경설정",
    themeColor: "테마 색상",
    sidebarTheme: "사이드바 테마",
    light: "빛",
    dark: "어두운",
    layoutMode: "레이아웃 모드",
    vertical: "수직의",
    horizontal: "수평의",
    pageAnimation: "페이지 애니메이션",
    fade: "바래다",
    slideLeft: "왼쪽으로 슬라이드",
    slideRight: "오른쪽으로 슬라이드",
    slideUp: "슬라이드 업",
    slideDown: "아래로 슬라이드",
    zoom: "줌",
    zoomBig: "크게 확대",
    none: "없음",
    grayMode: "그레이 모드",
    grayModeHint: "전체 앱에 대해 회색조 모드 활성화",
    rememberTabState: "탭 상태 기억",
    rememberTabStateHint: "새로 고침 후 이전에 열었던 탭을 자동으로 복원",
    aiCollab: "AI 채팅 분할 보기",
    aiCollabHint: "상단 내비게이션 바에 AI 채팅 입구 아이콘을 표시합니다",
    aiCollabHintMobile: "모바일에서는 AI 채팅 분할 보기를 사용할 수 없습니다",
    reset: "재설정 설정",
    confirmReset: "모든 기본 설정을 재설정하시겠습니까?",
    colors: {
      blue: "데이브레이크 블루",
      green: "폴라 그린",
      purple: "골든 퍼플",
      red: "더스트 레드",
      orange: "선셋 오렌지",
      cyan: "청록색",
    },
  },
  login: {
    title: "사용자 로그인",
    username: "사용자 이름",
    password: "비밀번호",
    remember: "나를 기억해",
    login: "로그인",
    forgotPassword: "비밀번호를 잊으셨나요?",
    noAccount: "계정이 없나요?",
    register: "지금 등록하세요",
    usernamePlaceholder: "사용자 이름을 입력하세요",
    passwordPlaceholder: "비밀번호를 입력해주세요",
    usernameRequired: "사용자 이름을 입력하세요",
    passwordRequired: "비밀번호를 입력해주세요",
    loginSuccess: "로그인 성공",
    loginFailed: "로그인 실패",
    slideToVerify: "슬라이드하여 확인",
    verifySuccess: "확인됨",
  },
  dashboard: {
    welcome: "돌아온 것을 환영합니다",
    subtitle: "비즈니스 지표와 시스템 상태를 실시간으로 모니터링하세요",
    systemStable: "시스템 안정",
    todayFocus: "오늘의 초점",
    compareYesterday: "어제와 비교 ​​{value}",
    goodMorning: "좋은 아침이에요",
    goodAfternoon: "좋은 오후에요",
    goodEvening: "좋은 저녁이에요",
    goodNight: "안녕히 주무세요",
    totalUsers: "총 사용자",
    totalOrders: "총 주문",
    totalRevenue: "총 수익",
    conversionRate: "전환율",
    newUsers: "신규 사용자",
    returningUsers: "복귀 사용자",
    enterpriseUsers: "기업 사용자",
    salesTrend: "판매 동향",
    userDistribution: "사용자 분포",
    recentActivities: "최근 활동",
    quickActions: "빠른 작업",
    viewMore: "더 많이 보기",
    minutesAgo: "{value}분 전",
    hoursAgo: "{value} 시간 전",
    activities: {
      permissionUpdated: "관리자가 시스템 메뉴 권한 설정을 업데이트했습니다.",
      userCreated: "Sunny라는 사용자를 생성하고 운영 역할을 할당했습니다.",
      orderTaskDone: "오늘의 주문통계 작업이 완료되었습니다.",
      riskPolicyReleased: "위험 관리 전략 버전이 프로덕션으로 출시되었습니다.",
    },
    activityTags: {
      system: "체계",
      user: "사용자",
      task: "일",
      release: "풀어 주다",
    },
    months: {
      jan: "1월",
      feb: "2월",
      mar: "3월",
      apr: "4월",
      may: "5월",
      jun: "준",
      jul: "7월",
      aug: "8월",
    },
  },
  user: {
    title: "사용자 관리",
    username: "사용자 이름",
    email: "이메일",
    realName: "실명",
    phone: "핸드폰",
    gender: "성별",
    male: "남성",
    female: "여성",
    avatar: "화신",
    role: "역할",
    status: "상태",
    active: "활동적인",
    inactive: "비활성",
    createUser: "사용자 생성",
    editUser: "사용자 편집",
    deleteUser: "사용자 삭제",
    confirmDelete: "이 사용자를 삭제하시겠습니까?",
    usernameRequired: "사용자 이름을 입력하세요",
    usernameLength: "사용자 이름 길이는 3~20자 사이여야 합니다.",
    emailRequired: "이메일을 입력해주세요",
    selectRole: "역할을 하나 이상 선택하세요.",
    bio: "바이오",
    updateSuccess: "사용자가 업데이트되었습니다.",
    createSuccess: "사용자가 성공적으로 생성되었습니다.",
    resetPassword: "비밀번호 재설정",
    confirmResetPassword: "이 사용자의 비밀번호를 재설정하시겠습니까?",
    exportSuccess: "내보내기 성공",
    exportFailed: "내보내기 실패",
    importSuccess: "{count} 레코드를 성공적으로 가져왔습니다.",
    importFailed: "가져오기에 실패했습니다. 파일 형식을 확인하세요.",
    importEmpty: "파일이 비어 있거나 형식이 잘못되었습니다.",
    importFormatError:
      'CSV 형식이 잘못되었습니다. "사용자 이름", "이름", "이메일" 열을 포함해야 합니다.',
    age: "나이",
    tags: "태그",
    address: "주소",
    department: "부서",
    position: "위치",
    info: "사용자 정보",
    settings: "설정",
    theme: "주제",
    language: "언어",
  },
  role: {
    title: "역할 관리",
    name: "역할 이름",
    code: "역할 코드",
    description: "설명",
    permissions: "권한",
    createRole: "역할 생성",
    editRole: "역할 편집",
    deleteRole: "역할 삭제",
    confirmDelete: "이 역할을 삭제하시겠습니까?",
    assignPermissions: "권한 할당",
    codeRequired: "역할코드를 입력해주세요",
    codePattern: "역할 코드는 문자, 숫자, 밑줄, 하이픈만 지원합니다.",
    selectPermissions: "권한을 선택해주세요",
    updateSuccess: "역할이 업데이트되었습니다.",
    createSuccess: "역할이 성공적으로 생성되었습니다.",
  },
  permission: {
    title: "메뉴 관리",
    name: "메뉴명",
    code: "허가 코드",
    type: "유형",
    menu: "메뉴",
    button: "단추",
    api: "API",
    resource: "의지",
    action: "행동",
    createPermission: "메뉴 생성",
    editPermission: "메뉴 편집",
    deletePermission: "메뉴 삭제",
    confirmDelete: "이 메뉴와 해당 하위 메뉴를 삭제하시겠습니까?",
    expandAll: "모두 확장",
    collapseAll: "모두 축소",
    parentMenu: "학부모 메뉴",
    createChildMenu: "하위 메뉴 생성",
    visible: "보이는",
    show: "보여주다",
    hide: "숨다",
    routePath: "경로 경로",
    componentPath: "구성 요소 경로",
    sort: "종류",
    addChild: "자녀 추가",
    codeRequired: "허가코드를 입력해주세요",
    codePattern: "권한 코드는 문자, 숫자, 밑줄, 하이픈만 지원합니다.",
    menuRouteRequired: "메뉴 유형에는 경로 경로가 필요합니다.",
    icon: "상",
    iconPlaceholder: "예를 들어 사용자개요",
    visibleStatus: "시계",
    updateSuccess: "메뉴가 업데이트되었습니다.",
    createSuccess: "메뉴가 성공적으로 생성되었습니다",
  },
  dict: {
    title: "사전",
    dictType: "사전 유형",
    dictData: "사전 데이터",
    typeName: "유형 이름",
    typeCode: "유형 코드",
    description: "설명",
    dictLabel: "상표",
    dictValue: "값",
    sort: "종류",
    remark: "주목",
    enabled: "활성화됨",
    disabled: "장애가 있는",
    createType: "유형 생성",
    editType: "유형 편집",
    deleteType: "유형 삭제",
    createData: "데이터 생성",
    editData: "데이터 편집",
    deleteData: "데이터 삭제",
    confirmDeleteType: '"{name}" 사전 유형을 삭제하시겠습니까?',
    confirmDeleteData: '"{label}" 사전 데이터를 삭제하시겠습니까?',
    typeNamePlaceholder: "유형 이름을 입력하세요.",
    typeCodePlaceholder: "유형 코드를 입력하세요.",
    descriptionPlaceholder: "설명을 입력해주세요",
    labelPlaceholder: "라벨을 입력하세요.",
    valuePlaceholder: "값을 입력하세요",
    remarkPlaceholder: "비고를 입력해주세요",
    selectTypeHint: "왼쪽에서 사전 유형을 선택하세요.",
    requiredFields: "필수 항목을 입력해주세요",
    deleteSuccess: "삭제되었습니다.",
    deleteFailed: "삭제 실패",
    updateSuccess: "업데이트되었습니다.",
    createSuccess: "성공적으로 생성되었습니다",
    operateFailed: "작업 실패",
    loadTypeFailed: "사전 유형을 로드하지 못했습니다.",
    loadDataFailed: "사전 데이터를 로드하지 못했습니다.",
    dictDataTitle: "사전 데이터 - {name}",
    confirmDelete: "삭제 확인",
  },
  table: {
    title: "테이블 예",
    total: "총 {total} 항목",
    page: "페이지 {page}",
    pageSize: "{size} 페이지당 항목",
    goTo: "이동",
  },
  form: {
    title: "양식 예",
    basicInfo: "기본정보",
    advancedInfo: "고급정보",
    submit: "제출하다",
    reset: "다시 놓기",
    validateSuccess: "유효성 검사가 통과되었습니다.",
    validateFailed: "검증 실패",
  },
  exampleTable: {
    userList: "사용자 목록",
    subTitle: "ProTable 예시",
    createUser: "사용자 생성",
    editUser: "사용자 편집",
    deleteSuccess: "삭제되었습니다.",
    updateSuccess: "업데이트되었습니다.",
    createSuccess: "성공적으로 생성되었습니다",
  },
  notificationCenter: {
    kicker: "알림 허브",
    title: "알림 센터",
    subtitle:
      "빠른 필터링과 세부 추적을 통해 시스템 업데이트, 메시지, 작업 결과를 한 곳에서 추적하세요.",
    searchPlaceholder: "제목이나 내용으로 알림 검색",
    listTitle: "알림 목록",
    listSubtitle: "{count} 알림이 일치함",
    emptyFiltered: "일치하는 알림이 없습니다.",
    metrics: {
      total: "총 알림",
      unread: "읽히지 않는",
      today: "오늘",
    },
    filters: {
      allStatus: "모든 상태",
      unread: "읽히지 않는",
      read: "읽다",
      allTypes: "모든 유형",
      system: "시스템 업데이트",
      message: "메시지",
      security: "보안 경고",
      task: "작업 완료",
      error: "오류 경고",
    },
    status: {
      read: "읽다",
      unread: "읽히지 않는",
    },
    meta: {
      type: "유형",
      receivedAt: "수신 시간",
    },
    actions: {
      markAsRead: "읽음으로 표시",
      openRelated: "관련 페이지 열기",
      delete: "알림 삭제",
    },
    placeholder: {
      title: "세부정보를 보려면 알림을 선택하세요.",
      desc: "여기에서 전체 콘텐츠와 관련 작업을 보려면 왼쪽 목록에서 항목을 선택하세요.",
    },
  },
  exampleCaptcha: {
    title: "보안 문자 구성 요소 예",
    description:
      "사용자 정의 가능한 스타일과 콜백을 포함하는 일반적인 프런트엔드 보안 문자 상호 작용 구성 요소입니다.",
    slider: "슬라이더 보안문자",
    rotate: "보안 문자 회전",
    puzzle: "퍼즐 보안 문자",
    point: "포인트 보안 문자",
    success: "확인이 통과되었습니다!",
    fail: "확인에 실패했습니다. 다시 시도해 주세요.",
  },
  exampleSpin: {
    title: "스핀 예시",
    description:
      "기본 로딩, 크기, 사용자 정의 표시기, 진행률, 지연 및 전체 화면을 포함하여 Spin 구성 요소의 다양한 사용법을 보여줍니다.",
    basic: "기본 및 사이즈",
    tip: "맞춤 팁",
    nested: "카드 로딩",
    delay: "지연",
    customIndicator: "맞춤형 지표",
    percent: "진전",
    customStyle: "맞춤 스타일",
    fullscreen: "전체 화면",
    showFullscreen: "전체 화면 표시",
    loadingState: "로드 상태:",
  },
  exampleEditor: {
    title: "리치 텍스트 편집기 예",
    description:
      "이미지 업로드, 링크 삽입, 서식 지정 등을 지원하는 Tiptap 기반의 서식 있는 텍스트 편집기입니다.",
    basicUsage: "기본 사용법",
    placeholder: "내용을 입력하세요...",
    disabledState: "비활성화된 상태",
    customHeight: "사용자 정의 높이",
    contentPreview: "콘텐츠 미리보기",
    htmlOutput: "HTML 출력",
    noContent: "콘텐츠 없음",
    save: "콘텐츠 저장",
    clear: "콘텐츠 지우기",
    loadDemo: "데모 로드",
    savedMessage: "저장된 콘텐츠",
    clearedMessage: "콘텐츠가 삭제되었습니다.",
    demoLoadedMessage: "데모 콘텐츠가 로드되었습니다.",
  },
  exampleForm: {
    description: "다양한 양식 컨트롤을 보여주는 고급 ProForm 예제",
    age: "나이",
    ageRange: "연령은 1~150세 사이여야 합니다.",
    interests: "이해",
    birthDate: "생년월일",
    score: "점수",
    progress: "진전",
    bioPlaceholder: "약력을 입력해주세요",
    submitSuccess: "성공적으로 제출되었습니다!",
    roles: {
      admin: "관리자",
      user: "일반 사용자",
      guest: "손님",
    },
    interestOptions: {
      reading: "독서",
      sports: "스포츠",
      music: "음악",
      travel: "여행하다",
    },
  },
  exampleIcon: {
    title: "아이콘 쇼케이스",
    subtitle: "Icon 구성 요소 및 IconPicker에 대한 통합 데모",
    capabilities:
      "지원: 로컬 SVG, antdv-next 아이콘, Iconify(오프라인 세트 + 온라인 검색)",
    renderTitle: "세 가지 렌더링 모드",
    renderSubtitle: "샘플을 클릭하여 아래 IconPicker에 적용하세요.",
    pickerTitle: "아이콘 선택기 데모",
    pickerSubtitle:
      "온라인 검색을 실행하려면 2자 이상을 입력하세요. 오프라인 아이콘 세트는 카테고리별로 제공됩니다.",
    modelLabel: "아이콘 값",
    previewLabel: "실시간 미리보기",
    copy: "값 복사",
    copySuccess: "아이콘 값이 복사되었습니다.",
    copyEmpty: "먼저 아이콘을 선택해주세요",
    copyFailed: "복사하지 못했습니다. 수동으로 복사하세요.",
    reset: "기본값 재설정",
    sourceLabel: "원천",
    sourceSvg: "로컬 SVG 기호",
    sourceAntdv: "antdv-next 구성 요소 아이콘",
    sourceIconify: "아이콘화 아이콘",
    sourceOnline: "온라인 결과를 아이콘화",
    sourceUnknown: "알려지지 않은",
    guidesTitle: "통합 가이드",
    guidesSubtitle:
      "두 가지 일반적인 통합 경로: SVG Symbol 및 Iconify(온라인 + 오프라인)",
    svgGuideTitle: "SVG를 추가하고 사용하는 방법",
    iconifyGuideTitle: "Iconify를 사용하는 방법",
    guideStepSvg1:
      '앱 루트(또는 레이아웃 루트)에 <symbol id="..."> 정의를 삽입합니다.',
    guideStepSvg2:
      "svg:icon-id와 함께 아이콘 구성 요소를 사용하세요. svg:아이콘-데모-궤도.",
    guideStepSvg3:
      "IconPicker 로컬 SVG 감지의 경우 src/assets/icons 아래에 파일을 배치하고 svgIcons를 전달합니다.",
    guideStepIconify1:
      "iconify 이름을 직접 전달합니다: ri:home-line / mdi:account / ion:apps-outline.",
    guideStepIconify2:
      "IconPicker에는 네트워크 없이 사용할 수 있는 오프라인 세트(ri/mdi/ion)가 포함되어 있습니다.",
    guideStepIconify3:
      "All/Online 카테고리에 키워드(2자 이상)를 입력하시면 Iconify 온라인을 검색하실 수 있습니다.",
    modeSvg: "SVG 스프라이트",
    modeAntdv: "antdv-다음",
    modeIconify: "아이콘화하다",
    sampleHint: "신청하려면 클릭하세요",
  },
  exampleWatermark: {
    title: "워터마크 예",
    description:
      "글로벌 워터마크 기능 - 실시간으로 워터마크 효과 구성 및 미리보기",
    enableGlobal: "글로벌 워터마크 활성화",
    content: "워터마크 텍스트",
    fontSize: "글꼴 크기",
    rotate: "회전",
    opacity: "불투명",
    gapX: "수평 간격",
    gapY: "수직 간격",
    preview: "로컬 미리보기",
    previewText: "워터마크 효과를 미리보기 위한 영역입니다.",
  },
  exampleModal: {
    title: "프로모달 데모",
    description:
      "드래그, 전체 화면, 가장자리 크기 조정 및 뷰포트 제약 조건을 갖춘 antdv-next Modal에 대한 향상된 래퍼입니다.",
    openDefault: "기본 모달 열기",
    openWide: "오픈 와이드 모달",
    width: "모달 너비",
    dataCount: "데이터 크기",
    draggable: "제목 드래그",
    resizable: "가장자리 크기 조정",
    fullscreenable: "전체화면 버튼",
    mask: "마스크",
    maskClosable: "마스크 클릭 시 닫기",
    keyboard: "ESC로 닫기",
    modalTitle: "드래그 가능/크기 조정 가능 ProModal",
    hint: "오른쪽 상단 작업은 전체 화면 및 닫기를 제공합니다. 이동하려면 제목을 드래그하세요. 크기를 조정하려면 가장자리/모서리를 드래그하세요.",
    contentTitle: "기능 시연",
    contentDescription:
      "다음 긴 목록은 스크롤 및 뷰포트 경계 동작을 보여주기 위해 사용됩니다.",
    formKeyword: "예어",
    formKeywordPlaceholder: "키워드를 입력해주세요",
    formRemark: "주목",
    formRemarkPlaceholder: "비고를 입력해주세요",
    rowText: "데모 데이터 행 #{index}",
    confirmSuccess: "성공적으로 확인되었습니다",
  },
  exampleException: {
    "403title": "403",
    "403description":
      "죄송합니다. 이 페이지에 액세스할 수 있는 권한이 없습니다.",
    "404title": "404",
    "404description": "죄송합니다. 방문한 페이지가 존재하지 않습니다.",
    "500title": "500",
    "500description": "죄송합니다. 서버에서 오류를 보고하고 있습니다.",
  },
  editor: {
    insertLink: "링크 삽입",
    linkUrl: "링크 URL",
    linkText: "링크 텍스트",
    linkTextPlaceholder: "링크 텍스트",
    defaultPlaceholder: "내용을 입력하세요...",
    imageOnly: "이미지 파일만 허용됩니다.",
    imageSizeLimit: "이미지 크기는 5MB를 초과할 수 없습니다.",
    imageInsertSuccess: "이미지가 성공적으로 삽입되었습니다.",
    imageUploadFailed: "이미지 업로드 실패",
    enterLinkUrl: "링크 URL을 입력하세요.",
  },
  iconPicker: {
    selectIcon: "아이콘 선택",
    searchPlaceholder: "아이콘 이름 검색...",
    onlineSearchFailed: "온라인 검색 실패",
    onlineSearchFailedDetail: "온라인 검색 실패: {message}",
  },
  captcha: {
    clickInOrder: "순서대로 클릭하세요.",
    refresh: "새로 고치다",
  },
  about: {
    description:
      "Vue 3 + TypeScript + Ant Design Vue를 기반으로 구축된 최신 관리 프레임워크입니다. 프로덕션 준비가 되어 있고 기능이 풍부하며 확장이 쉽습니다.",
    projectInfo: "프로젝트 정보",
    projectName: "프로젝트 이름",
    version: "버전",
    license: "특허",
    author: "작가",
    email: "이메일",
    documentation: "선적 서류 비치",
    techStack: "기술 스택",
    features: "핵심 기능",
    feature1: "Vue 3 컴포지션 API",
    feature1Desc: "더 나은 로직 재사용, 코드 구성 및 반응 성능",
    feature2: "전체 TypeScript 엄격 모드",
    feature2Desc: "개발 시 오류를 포착하기 위한 완전한 유형 추론",
    feature3: "완전한 RBAC 권한 시스템",
    feature3Desc: "즉시 사용 가능한 페이지, 버튼, 필드 및 API 수준 액세스 제어",
    feature4: "동적 경로 및 메뉴 생성",
    feature4Desc: "사용자 역할에 따라 경로 및 사이드바 메뉴 자동 생성",
    feature5: "i18n 다국어 지원",
    feature5Desc: "쉬운 로캘 확장이 가능한 중국어 및 영어 내장",
    feature6: "밝은/어두운 테마 전환",
    feature6Desc:
      "자동 시스템 기본 설정 감지 기능을 갖춘 6가지 사전 설정된 테마 색상",
    feature7: "ProTable / ProForm 구성요소",
    feature7Desc:
      "일반적인 비즈니스 시나리오를 다루는 구성 기반 테이블 및 양식",
    feature8: "모의 데이터 개발 모드",
    feature8Desc: "병렬 프런트엔드 및 백엔드 개발을 위한 내장형 모의 시스템",
  },
  proForm: {
    enterPlaceholder: "{label}을 입력하세요.",
    selectPlaceholder: "{label}을 선택하세요.",
    uploadFile: "파일 업로드",
  },
  proUpload: {
    uploadFile: "파일 업로드",
    uploadImage: "이미지 업로드",
    dragHint: "업로드하려면 파일을 클릭하거나 이 영역으로 드래그하세요.",
    fileSizeExceed: "파일 크기는 {size}MB를 초과할 수 없습니다.",
    fileTypeNotAllowed: "허용되지 않는 파일 형식",
  },
  proStepForm: {
    prev: "이전의",
    next: "다음",
  },
  proTable: {
    total: "총 {total} 항목",
    density: "테이블 밀도",
    checkAll: "모두 선택",
    indexColumn: "인덱스 열",
    fixLeft: "왼쪽에 고정",
    fixRight: "오른쪽에 고정",
    densityLarge: "넓다",
    densityMiddle: "기본",
    densitySmall: "콤팩트",
    loadDataFailed: "데이터를 로드하지 못했습니다.",
  },
  profile: {
    title: "윤곽",
    basicInfo: "기본정보",
    security: "보안",
    username: "사용자 이름",
    email: "이메일",
    phone: "핸드폰",
    role: "역할",
    joinDate: "가입 날짜",
    changePassword: "비밀번호 변경",
    currentPassword: "현재 비밀번호",
    oldPassword: "이전 비밀번호",
    newPassword: "새 비밀번호",
    confirmPassword: "비밀번호 확인",
    enterCurrentPassword: "현재 비밀번호를 입력해주세요",
    enterNewPassword: "새로운 비밀번호를 입력해주세요",
    enterConfirmPassword: "새 비밀번호를 다시 입력해주세요",
    passwordMismatch: "비밀번호가 일치하지 않습니다.",
    passwordMinLength: "비밀번호는 6자 이상이어야 합니다.",
    passwordChangeSuccess: "비밀번호가 성공적으로 변경되었습니다.",
    passwordChangeFailed: "비밀번호를 변경하지 못했습니다.",
    passwordTip:
      "팁: 비밀번호는 6자 이상이어야 하며 문자, 숫자, 특수 문자를 포함하는 것이 좋습니다.",
    updateSuccess: "업데이트 성공",
    updateFailed: "업데이트 실패",
  },
  error: {
    "403": "접근금지",
    "404": "페이지를 찾을 수 없음",
    "500": "서버 오류",
    backHome: "홈으로 돌아가기",
    pageNotFound: "죄송합니다. 방문한 페이지가 존재하지 않습니다.",
    noPermission: "죄송합니다. 이 페이지에 액세스할 수 있는 권한이 없습니다.",
    serverError: "죄송합니다. 서버에서 오류를 보고하고 있습니다.",
  },
  validation: {
    required: "이 필드는 필수입니다",
    email: "유효한 이메일 주소를 입력하세요.",
    phone: "유효한 전화번호를 입력하세요.",
    idCard: "유효한 신분증 번호를 입력하세요.",
    url: "유효한 URL을 입력하세요.",
    minLength: "최소 길이는 {min} 문자입니다.",
    maxLength: "최대 길이는 {max} 문자입니다.",
    lengthRange: "길이는 {min}에서 {max} 사이여야 합니다.",
    numberRange: "값은 {min}에서 {max} 사이여야 합니다.",
    min: "최소값은 {min}입니다.",
    max: "최대값은 {max}입니다.",
    pattern: "잘못된 형식",
    usernamePattern: "사용자 이름에는 문자, 숫자, 밑줄만 포함할 수 있습니다.",
    passwordPattern:
      "비밀번호는 8자 이상이어야 하며 문자와 숫자를 포함해야 합니다.",
    confirmPassword: "두 비밀번호가 일치하지 않습니다.",
  },
  dept: {
    title: "부서 관리",
    organizationStructure: "조직",
    searchDept: "검색부서",
    deptName: "부서명",
    parentDept: "상위 부서",
    leader: "지도자",
    phone: "핸드폰",
    email: "이메일",
    sort: "종류",
    remark: "주목",
    status: "상태",
    enabled: "활성화됨",
    disabled: "장애가 있는",
    createDept: "부서 생성",
    editDept: "부서 편집",
    deleteDept: "부서 삭제",
    addChildDept: "하위 부서 추가",
    childDepts: "하위 부서",
    noneTopLevel: "없음(최상위 수준)",
    noneTopLevelDept: "없음(최상위 부서)",
    selectDeptNode: "왼쪽의 부서 노드를 선택하세요.",
    confirmDelete: "삭제 확인",
    confirmDeleteContent: '"{name}" 부서를 삭제하시겠습니까?',
    hasChildrenWarning:
      "이 부서에는 하위 부서가 있습니다. 먼저 하위 부서를 삭제하세요.",
    deleteSuccess: "삭제되었습니다.",
    deleteFailed: "삭제 실패",
    updateSuccess: "업데이트되었습니다.",
    createSuccess: "성공적으로 생성되었습니다",
    operateFailed: "작업 실패",
    pleaseEnterDeptName: "부서명을 입력해주세요",
    pleaseEnterLeader: "리더를 입력해주세요",
    pleaseEnterPhone: "전화번호를 입력해주세요",
    pleaseEnterEmail: "이메일을 입력해주세요",
    pleaseEnterRemark: "비고를 입력해주세요",
    loadDataFailed: "부서 데이터를 로드하지 못했습니다.",
    createTime: "시간 만들기",
    updateTime: "업데이트 시간",
  },
  config: {
    title: "시스템 구성",
    configGroups: "구성 그룹",
    configName: "구성 이름",
    configKey: "구성 키",
    configValue: "구성 값",
    valueType: "값 유형",
    group: "그룹",
    sort: "종류",
    description: "설명",
    builtIn: "원천",
    createConfig: "구성 만들기",
    editConfig: "구성 편집",
    deleteConfig: "구성 삭제",
    confirmDelete: "삭제 확인",
    confirmDeleteContent: '"{name}" 구성을 삭제하시겠습니까?',
    deleteSuccess: "삭제되었습니다.",
    deleteFailed: "삭제 실패",
    updateSuccess: "업데이트되었습니다.",
    createSuccess: "성공적으로 생성되었습니다",
    operateFailed: "작업 실패",
    requiredFields: "필수 항목을 입력해주세요",
    loadConfigFailed: "구성을 로드하지 못했습니다.",
    valueTypes: {
      string: "끈",
      number: "숫자",
      boolean: "부울",
      json: "JSON",
    },
    groups: {
      basic: "기본 구성",
      security: "보안 구성",
      upload: "구성 업로드",
      notification: "알림 구성",
    },
    builtInTypes: {
      builtIn: "내장",
      custom: "관습",
    },
    placeholders: {
      configName: "구성 이름을 입력하세요.",
      configKey: "예를 들어 사이트.이름",
      configValue: "구성 값을 입력하세요.",
      jsonFormat: "JSON 형식",
      description: "설명을 입력해주세요",
    },
  },
  file: {
    title: "파일 관리",
    fileName: "파일 이름",
    ext: "확대",
    size: "파일 크기",
    storage: "저장 유형",
    uploader: "업로더",
    uploadTime: "업로드 시간",
    action: "행동",
    delete: "삭제",
    confirmDelete: "삭제 확인",
    confirmDeleteContent: '"{name}" 파일을 삭제하시겠습니까?',
    deleteSuccess: "삭제되었습니다.",
    deleteFailed: "삭제 실패",
    loadFailed: "파일 목록을 로드하지 못했습니다.",
    storageType: {
      local: "현지의",
      oss: "OSS",
      cos: "코사인",
    },
    extType: {
      imageJpg: "이미지(jpg)",
      imagePng: "이미지(png)",
      pdf: "PDF",
      word: "단어",
      excel: "뛰어나다",
      zip: "보관소",
      video: "동영상",
      text: "텍스트",
      ppt: "피피티",
      svg: "SVG",
    },
  },
  log: {
    title: "시스템 로그",
    operationLog: "작업 로그",
    loginLog: "로그인 로그",
    clearLog: "로그 지우기",
    confirmClear: "확인 지우기",
    confirmClearOperation:
      "모든 작업 로그를 지우시겠습니까? 이 작업은 취소할 수 없습니다.",
    confirmClearLogin:
      "모든 로그인 로그를 지우시겠습니까? 이 작업은 취소할 수 없습니다.",
    clearSuccess: "성공적으로 삭제됨",
    clearFailed: "지우기 실패",
    operationUser: "연산자",
    operationModule: "기준 치수",
    operationType: "작업 유형",
    operationDescription: "설명",
    requestMethod: "방법",
    ipAddress: "IP 주소",
    duration: "지속",
    operationTime: "가동 시간",
    username: "사용자 이름",
    browser: "브라우저",
    os: "OS",
    message: "메시지",
    loginTime: "로그인 시간",
    success: "성공",
    fail: "실패한",
    actionTypes: {
      login: "로그인",
      logout: "로그아웃",
      create: "만들다",
      update: "업데이트",
      delete: "삭제",
      export: "내보내다",
      import: "수입",
      other: "다른",
    },
    modules: {
      userManagement: "사용자 관리",
      roleManagement: "역할 관리",
      menuManagement: "메뉴 관리",
      dictionary: "사전",
      systemLogin: "시스템 로그인",
      profile: "윤곽",
      dashboard: "계기반",
    },
    loadOperationLogFailed: "작업 로그를 로드하지 못했습니다.",
    loadLoginLogFailed: "로그인 로그를 로드하지 못했습니다.",
  },
  "menu.external": "외부 페이지",
  "menu.externalIframe": "아이프레임",
  "menu.externalLink": "외부 링크",
  "menu.externalTypescript": "타입스크립트",
  "menu.externalAntdvNext": "Antdv 다음",
  "menu.externalVite": "비테",
  "menu.externalVue": "Vue.js",
  "external.link.openedTitle": "새 탭에서 열림",
  "external.link.openedSubTitle":
    "브라우저에서 팝업을 차단한 경우 아래 버튼을 클릭하여 다시 열어주세요.",
  "external.link.openVite": "오픈 바이트",
  "external.link.openVue": "오픈뷰",
  examples: {
    scaffold: {
      stateCache: {
        title: "상태 및 캐시 예",
        description:
          "Pinia 지속성(새로 고침 후에도 유지) 및 연결 유지 로컬 캐싱(탭 전환 후에도 유지)을 보여줍니다.",
        piniaSection: "1. 피니아 지속 상태",
        keywordLabel: "예어",
        keywordPlaceholder: "페이지 새로 고침 후에도 지속됨",
        counterLabel: "계수기",
        notesLabel: "메모",
        notesPlaceholder: "여러 줄, 자동 지속 지원",
        resetButton: "상태 재설정",
        pinTabButton: "현재 탭 고정",
        lastPersistTime: "마지막 지속 시간:",
        keepAliveSection: "2. 연결 유지 로컬 캐시",
        panelA: "패널 A",
        panelB: "패널 B",
        panelADesc: "패널 A(전환 시 파괴되지 않음)",
        panelAInputPlaceholder:
          "콘텐츠 입력, B로 전환 후 다시 돌아가기 - 여전히 유지됨",
        localCountLabel: "지역 수:",
        panelBDesc: "패널 B(또한 연결 유지에 의해 캐시됨)",
        panelBTextPlaceholder: "콘텐츠 입력, 탭 전환 및 복귀 - 여전히 유지됨",
        pinTabSuccess: "탭 핀 상태가 전환됨",
      },
      uploadSystem: {
        title: "업로드 시스템 예시",
        description:
          "드래그 앤 드롭 업로드 + 진행 + 실패 시 재시도 + 이미지 미리보기, 비즈니스 통합 준비 완료.",
        uploading: "업로드 중",
        success: "성공",
        failed: "실패한",
        dragText: "업로드하려면 파일을 클릭하거나 이 영역으로 드래그하세요.",
        dragHint:
          "이미지와 문서를 지원합니다. 업로드 프로세스는 재시도 논리를 확인하기 위해 실패를 무작위로 시뮬레이션합니다.",
        retryButton: "재시도 실패",
        clearButton: "목록 지우기",
        failureRate: "실패율:",
        previewTitle: "파일 미리보기",
        uploadFailedError: "네트워크 변동으로 인해 업로드하지 못했습니다.",
        uploadSuccessMsg: "업로드 성공: {name}",
        uploadFailedMsg: "업로드 실패: {name}",
        retryMsg: "{count} 실패한 파일을 다시 시도하는 중",
        previewNotSupported: "이 파일 형식은 미리보기를 지원하지 않습니다.",
      },
      importExport: {
        title: "가져오기/내보내기 흐름 예",
        description:
          "템플릿 다운로드, CSV 가져오기 검증, 오류 영수증 내보내기 및 현재 데이터 내보내기를 보여줍니다.",
        downloadTemplate: "템플릿 다운로드",
        importCsv: "CSV 가져오기",
        exportCurrent: "현재 데이터 내보내기",
        exportErrorReceipt: "내보내기 오류 영수증",
        totalRows: "총 행",
        successRows: "성공한 행",
        updatedRows: "업데이트된 행",
        failedRows: "실패한 행",
        importHint:
          "헤더는 코드, 이름, 카테고리, 가격, 재고여야 합니다. 행은 코드에 의해 업데이트됩니다.",
        colCode: "암호",
        colName: "이름",
        colCategory: "범주",
        colPrice: "가격",
        colStock: "재고",
        errorRowNo: "행 번호",
        errorReason: "오류 이유",
        errorRaw: "원시 데이터",
        emptyFile: "파일이 비어 있거나 유효한 행이 없습니다.",
        invalidHeader: "헤더가 잘못되었습니다. 템플릿을 사용하세요.",
        errorRequired: "필수 입력란이 누락되었습니다(코드/이름/카테고리)",
        errorPrice: "가격은 0보다 크거나 같은 숫자여야 합니다.",
        errorStock: "재고는 0보다 크거나 같은 정수여야 합니다.",
        importDone: "가져오기 완료: {success} 성공, {failed} 실패",
        parseFailed: "CSV 구문 분석에 실패했습니다. 파일 형식을 확인하세요.",
      },
      testing: {
        title: "테스트 예",
        description:
          "새 모듈에 복사할 수 있는 단위 테스트 및 e2e 테스트용 권장 템플릿을 제공합니다.",
        alertMessage:
          "Vitest/Playwright 종속성은 아직 설치되지 않았습니다. 이 페이지에서는 구조와 예시를 제공합니다.",
        unitTestTitle: "단위 테스트 템플릿(Vitest)",
        e2eTestTitle: "엔드투엔드 테스트 템플릿(극작가)",
        implementationTitle: "구현 순서",
        step1Title: "먼저 단위 테스트를 추가하세요.",
        step1Description:
          "핵심 기능, 저장 계산 논리 및 엣지 케이스를 다룹니다.",
        step2Title: "그런 다음 e2e 테스트를 추가하세요.",
        step2Description:
          "로그인, 검색, 목록 작업과 같은 중요한 사용자 경로를 다룹니다.",
        step3Title: "CI와 통합",
        step3Description:
          "체인 유형 확인 + 유닛 + e2e를 파이프라인에 추가하고 병합하기 전에 자동으로 실행합니다.",
      },
      proTableAdvanced: {
        title: "ProTable 고급 예시",
        description:
          "서버측 페이지 매김 시뮬레이션 + 일괄 작업 + 인라인 편집 + 내보내기",
        selectedCount: "{count} 항목 선택됨",
        batchDisable: "일괄 비활성화",
        batchDelete: "일괄 삭제",
        export: "현재 데이터 내보내기",
        statusActive: "활동적인",
        statusInactive: "비활성",
        username: "사용자 이름",
        realName: "실명",
        email: "이메일",
        gender: "성별",
        status: "상태",
        createdAt: "생성 날짜",
        editSimulation: "편집 시뮬레이션: {username}",
        deleteConfirm: "이 행을 삭제하시겠습니까?",
        deleteSuccess: "삭제 성공",
        statusChangeSuccess: "{status} {username}",
        batchSetStatusSuccess: "{count} 항목에 대한 일괄 설정 상태",
        batchDeleteTitle: "일괄 삭제 확인",
        batchDeleteContent: "선택한 {count} 행을 삭제하시겠습니까?",
        batchDeleteSuccess: "일괄 삭제 완료",
        exportSuccess: "CSV를 성공적으로 내보냈습니다.",
      },
      complexForm: {
        title: "복잡한 형태의 예",
        description:
          "단계 양식 + 동적 정책 규칙 + 비동기 유효성 검사 + 초안 저장 + 서버 측 필드 오류 매핑.",
        step1Title: "기본 정보",
        step2Title: "정책 구성",
        step3Title: "게시 설정",
        projectNameLabel: "프로젝트 이름",
        projectNamePlaceholder: "프로젝트 이름을 입력하세요",
        projectNameRequired: "프로젝트 이름을 입력하세요.",
        projectNameExists: "프로젝트 이름이 이미 존재합니다. 변경하세요.",
        ownerLabel: "소유자",
        ownerPlaceholder: "소유자 입력",
        ownerRequired: "소유자를 입력하세요.",
        sceneLabel: "장면",
        scenePlaceholder: "장면 선택",
        sceneRequired: "장면을 선택해주세요",
        sceneGrowth: "사용자 성장",
        sceneRisk: "위험 통제",
        sceneStability: "안정성 모니터링",
        descriptionLabel: "설명",
        descriptionPlaceholder: "추가 설명을 입력하세요",
        addRuleButton: "정책 규칙 추가",
        currentRulesCount: "현재 {count} 규칙",
        metricPlaceholder: "측정항목 이름(예: error_rate)",
        deleteButton: "삭제",
        ruleListEmpty: "정책 규칙을 하나 이상 추가하세요.",
        ruleListIncomplete:
          "정책 규칙에 채워지지 않은 항목이 있습니다. 완료해 주세요.",
        publishTypeLabel: "게시 유형",
        publishTypeRequired: "게시 유형을 선택하세요.",
        publishImmediate: "즉각적인",
        publishSchedule: "예정됨",
        publishTimeLabel: "게시 시간",
        publishTimeRequired: "예약된 게시는 게시 시간을 선택해야 합니다.",
        notifyUsersLabel: "사용자에게 알림",
        notifyUsersPlaceholder: "사용자 이름을 입력하고 Enter를 누르세요",
        prevButton: "이전의",
        nextButton: "다음",
        submitButton: "제출하다",
        saveDraftButton: "초안 저장",
        resetButton: "다시 놓기",
        draftSaved: "초안이 저장되었습니다.",
        serverValidationError:
          '서버 유효성 검사 실패: 프로젝트 이름에 "fail"을 포함할 수 없습니다.',
        submitFailed: "제출 실패, 서버 필드 오류 매핑됨",
        submitSuccess: "제출 성공",
      },
      advancedFilter: {
        title: "고급 필터 빌더 예",
        description:
          "시각적 조건(AND/OR)으로 필터 규칙을 작성하고 재사용 가능한 필터 구성표를 저장하세요.",
        tips: "대부분의 목록 필터링 시나리오에 대해 문자열, 열거형, 숫자 및 날짜 필드를 지원합니다.",
        addCondition: "조건 추가",
        saveScheme: "구성표 저장",
        matchedCount: "{count} 일치함",
        emptyConditions: "필터 조건 없음",
        inputValue: "값을 입력하세요",
        selectValue: "값 선택",
        secondValue: "두 번째 값",
        savedSchemes: "저장된 구성표:",
        noSchemes: "없음",
        schemeNamePlaceholder: "구성표 이름을 입력하세요(최대 30자).",
        schemeNameRequired: "구성표 이름을 입력하세요.",
        saveSuccess: "필터 구성이 저장되었습니다.",
        score: "점수",
        statusActive: "활동적인",
        statusInactive: "비활성",
        statusPending: "보류 중",
        adminRole: "관리자",
        operatorRole: "연산자",
        auditorRole: "감사",
        opContains: "포함",
        opEquals: "같음",
        opNotEquals: "같지 않음",
        opIn: "~ 안에",
        opGt: "보다 큼",
        opGte: "크거나 같음",
        opLt: "미만",
        opLte: "작거나 같음",
        opBetween: "사이",
        opBefore: "전에",
        opAfter: "후에",
      },
      virtualTable: {
        title: "가상 스크롤 테이블 예",
        description:
          "기본 a-table 가상 스크롤을 사용하여 대규모 데이터 세트의 원활한 렌더링을 보여줍니다.",
        tipsNativeVirtual:
          "antdv-next 네이티브 a-table + 가상으로 구축되었으며 추가 가상 목록 라이브러리가 필요하지 않습니다.",
        datasetSize: "데이터 세트 크기",
        regenerate: "데이터 재생성",
        regenerateSuccess: "{count} 행이 생성되었습니다.",
        searchPlaceholder: "사용자 이름/이메일/부서 검색",
        allStatus: "모든 상태",
        totalRows: "합계 {count}",
        filteredRows: "필터링됨 {count}",
        renderedRowsTip: "보다 원활한 스크롤을 위해 보이는 행만 렌더링됩니다.",
        statusActive: "활동적인",
        statusInactive: "비활성",
        statusPending: "보류 중",
        colId: "ID",
        colUsername: "사용자 이름",
        colEmail: "이메일",
        colDepartment: "부서",
        colStatus: "상태",
        colUpdatedAt: "업데이트 날짜",
      },
      masterDetail: {
        title: "마스터-디테일 예",
        description:
          "티켓 마스터-슬레이브 페이지를 시뮬레이션합니다. 왼쪽 목록에서 선택하고 오른쪽 서랍에서 세부정보 및 작업 내역을 확인하세요.",
        drawerTitle: "티켓 세부정보",
        ticketNumber: "티켓번호",
        titleLabel: "제목",
        ownerLabel: "소유자",
        priorityLabel: "우선 사항",
        createdAtLabel: "생성 날짜",
        descTab: "설명",
        logsTab: "작업 로그",
        statusOpen: "열려 있는",
        statusProcessing: "처리",
        statusClosed: "닫은",
        ticketTitle: "주문 위험 경고 #{index}",
        ownerZhang: "장",
        ownerLi: "리",
        ticketDescription:
          "배경 정보, 영향 범위, 권장 조치를 포함하여 {index} 티켓에 대한 자세한 설명입니다.",
        actionCreate: "티켓 생성",
        operatorSystem: "체계",
        actionAssign: "소유자 지정",
        operatorDispatch: "파견센터",
        colTicketNumber: "티켓번호",
        colTitle: "제목",
        colOwner: "소유자",
        colPriority: "우선 사항",
        colStatus: "상태",
        colCreatedAt: "생성 날짜",
      },
      rbac: {
        title: "RBAC 풀체인 예시",
        description:
          "페이지 권한, 버튼 권한, 필드 권한, API 권한의 4가지 차원을 다룹니다. 관리자/사용자 간을 전환하여 차이점을 관찰하세요.",
        currentSession: "현재 세션",
        accountInfo: "계정: {username} | 역할: {role}",
        switchToAdmin: "관리자로 전환",
        switchToUser: "사용자로 전환",
        permissionTotal: "...총 {count} 항목",
        section1Title: "1. 페이지 권한 확인",
        checkUserManage: "사용자 관리 페이지 접속(system.user.view)",
        checkMenuManage: "메뉴 관리 페이지 접속(system.permission.view)",
        checkAdminRole: "관리자 역할 액세스(관리자)",
        passed: "합격",
        denied: "거부됨",
        section2Title: "2. 버튼 권한",
        createUserButton: "사용자 생성",
        editUserButton: "사용자 편집",
        deleteUserButton: "사용자 삭제",
        buttonPermissionHint:
          "힌트: 버튼 렌더링은 PermissionButton에 의해 제어됩니다.",
        section3Title: "3. 현장 허가(마스킹)",
        phoneLabel: "핸드폰:",
        emailLabel: "이메일:",
        realNameLabel: "실명:",
        section4Title: "4. API 권한 대체",
        callViewApi: "통화 보기 API",
        callExportApi: "내보내기 API 호출",
        callDeleteApi: "삭제 API 호출",
        viewUserAction: "사용자 목록 보기",
        exportUserAction: "사용자 내보내기",
        deleteUserAction: "사용자 삭제",
        switchSuccess: "{username}으로 전환됨",
        switchFailed: "전환 실패",
        missingPermission: "403: 권한 누락 {permission}",
        apiSuccess: "{action} 성공",
        apiFailed: "{action} 실패: {error}",
        noPermission: "허가 없음",
      },
      observability: {
        title: "관찰 가능성 및 예외 예",
        description:
          "오류 분류, 로깅 및 원클릭 재시도를 통해 로드, 비어 있음 및 오류 상태를 통합 처리합니다.",
        simulateSuccess: "성공 시뮬레이션",
        simulateEmpty: "빈 시뮬레이션",
        simulateNetwork: "네트워크 오류 시뮬레이션",
        simulateAuth: "인증 오류 시뮬레이션",
        simulateBusiness: "비즈니스 오류 시뮬레이션",
        requestStateTitle: "요청 상태 보기",
        emptyData: "표시할 데이터가 없습니다.",
        requestFailed: "요청 실패",
        retryButton: "다시 해 보다",
        clickToStart: "시뮬레이션을 시작하려면 위 버튼을 클릭하세요.",
        errorLogTitle: "오류 분류 및 이벤트 로그",
        networkError: "네트워크 오류",
        authError: "인증 오류",
        businessError: "비즈니스 오류",
        noEvents: "아직 이벤트가 없습니다",
        errorNetwork:
          "NetworkError: 요청 시간 초과입니다. 네트워크 연결을 확인하세요.",
        errorAuth: "AuthError: 토큰이 만료되었습니다. 다시 로그인해야 합니다.",
        errorBusiness:
          "BusinessError: 규칙 구성이 충돌하여 계산할 수 없습니다.",
        eventStart: "시뮬레이션 시나리오 시작: {scenario}",
        eventEmpty: "요청이 성공했지만 빈 데이터가 반환되었습니다.",
        eventSuccess: "요청 성공 및 반환된 데이터",
        unknownError: "알 수 없는 오류",
        eventError: "요청 실패({type}): {message}",
      },
      requestAuth: {
        title: "요청 및 인증 루프 예",
        description:
          "동시 요청이 401을 트리거할 때 대기 중인 새로 고침 메커니즘을 보여주고 새로 고침 실패 후 다시 로그인하도록 대체합니다.",
        refreshFailedAlert: "새로고침 실패, 재로그인 상태가 됨",
        refreshFailedDesc:
          '후속 요청은 계속 실패합니다. 새로운 요청을 하려면 "세션 재설정"을 클릭하세요.',
        accessToken: "액세스 토큰",
        refreshToken: "새로고침 토큰",
        refreshStatus: "상태 새로 고침",
        empty: "비어 있는",
        refreshing: "상쾌함",
        idle: "게으른",
        singleRequest: "단일 요청",
        concurrentRequest: "동시 요청 5개",
        expireToken: "토큰 만료",
        simulateRefreshFail: "새로 고침 실패 시뮬레이션",
        resetSession: "세션 재설정",
        logTitle: "이벤트 로그(최근 80개 항목)",
        clearLog: "로그 지우기",
        noLogs: "아직 로그가 없습니다.",
        tokenExpired: "[{apiName}] 토큰이 만료되었습니다.",
        apiSuccess: "[{apiName}] 요청이 성공했습니다.",
        refreshTokenInvalid: "새로고침 토큰이 잘못되었습니다.",
        logRefreshStart: "토큰 새로 고침 트리거(처음 401 요청만 실행됨)",
        logRefreshSuccess:
          "토큰 새로고침이 성공하여 대기 중인 요청을 해제했습니다.",
        logRefreshFailed:
          "토큰 새로 고침 실패: {message}, 재로그인 상태로 전환됨",
        logQueueWait: "새로 고침 진행 중이 감지되어 요청이 대기 중입니다.",
        logNon401Error: "[{apiName}] 401이 아닌 오류: {message}",
        log401Detected: "[{apiName}] 401이 감지되어 토큰 새로고침 준비 중",
        logTokenExpired: "액세스 토큰이 만료된 것으로 수동으로 표시됨",
        logSessionReset: "세션 재설정, 새로운 요청 준비 완료",
        singleRequestFailed: "단일 요청이 실패했습니다.",
        logConcurrentStart:
          "5개의 동시 요청을 시작하고 새로 고침 대기열 동작을 관찰합니다.",
        concurrentPartialFail: "동시 요청 완료, {count} 실패",
        concurrentAllSuccess: "모든 동시 요청이 성공했습니다.",
        logRefreshWillFail: "다음 새로 고침이 강제로 실패합니다.",
        refreshFailTriggered: "새로 고침 실패 시나리오가 트리거됨",
      },
    },
    jsonInput: {
      title: "JSON 입력 예",
      description: "설명",
      basicUsage: "기본 사용법",
      userConfig: "사용자 구성",
      clickToEdit: "JSON을 수정하려면 클릭하세요.",
      editUserConfig: "사용자 구성 편집",
      displayValue: "표시 값(displayKey 사용)",
      productName: "제품명",
      price: "가격",
      stock: "재고",
      selectProduct: "제품 선택",
      advancedUsage: "고급 사용법",
      withI18nKeys: "주요 국제화 지원",
      i18nKeysHint: "label-map prop을 사용하여 키에 대한 i18n 라벨 제공",
      withDisabledFields: "비활성화된 필드 포함",
      apiKey: "API 키",
      endpoint: "엔드포인트",
      timeout: "시간 초과(초)",
      systemConfig: "시스템 구성",
      nestedObject: "중첩 객체 지원",
      userInfo: "사용자 정보",
      name: "이름",
      settings: "설정",
      theme: "주제",
      language: "언어",
      nestedData: "중첩된 데이터 구조",
      emptyObject: "빈 개체(새로 만들기)",
      createNew: "새 구성 만들기",
    },
    i18nInput: {
      description:
        "다국어 컨텐츠 편집을 지원하는 국제화된 입력 구성요소입니다. JsonInput을 기반으로 구축되어 시스템 지원 언어를 기반으로 양식 필드를 자동으로 생성합니다.",
      productName: "제품명(다국어)",
      productDescription: "제품 설명(다국어)",
      editProductName: "제품 이름 편집",
      editProductDesc: "제품 설명 편집",
      clickToEdit: "다국어 콘텐츠를 편집하려면 클릭하세요.",
      stringFormat: "문자열 형식 값",
      stringFormatHint:
        "문자열 형식의 JSON을 지원하며 구성 요소가 자동으로 구문 분석 및 직렬화됩니다.",
      currentLocale: "표시 로케일 지정",
      currentLocaleHint:
        "입력에 표시할 언어 값을 지정하려면 locale prop을 사용하세요.",
      emptyValue: "빈 값(자동 초기화)",
      dataPreview: "데이터 미리보기",
      valueType: "값 유형 전환",
      showAsString: "문자열로 표시",
      showAsObject: "개체로 표시",
      stringValue: "문자열 형식",
      objectValue: "개체 형식",
    },
  },
};
