{
  "common": {
    "next": "다음",
    "prev": "이전",
    "finish": "완료",
    "cancel": "취소",
    "save": "저장",
    "loading": "로딩 중...",
    "confirm": "확인",
    "success": "성공",
    "error": "오류",
    "delete": "삭제",
    "edit": "편집",
    "add": "추가",
    "search": "검색",
    "clear": "지우기",
    "close": "닫기",
    "yes": "예",
    "no": "아니요",
    "submit": "제출",
    "reset": "초기화",
    "import": "가져오기",
    "export": "내보내기",
    "create": "생성",
    "update": "업데이트",
    "refresh": "새로 고침",
    "view": "보기",
    "name": "이름",
    "status": "상태",
    "operation": "작업",
    "description": "설명",
    "total": "총 {{count}}개 항목",
    "noData": "데이터 없음",
    "pleaseSelect": "선택해 주세요",
    "pleaseEnter": "입력해 주세요",
    "readOnly": "읽기 전용 모드",
    "none": "없음",
    "more": "더 보기"
  },
  "oobe": {
    "title": "SecScore에 오신 것을 환영합니다",
    "subtitle": "교육 포인트 관리 전문가",
    "step": "단계 {{current}}/{{total}}",
    "skip": "건너뛰기",
    "steps": {
      "entry": {
        "title": "시작하기",
        "description": "진행할 절차를 선택하세요",
        "enterOobe": "OOBE에 입장",
        "connectPostgresAutoSync": "PostgreSQL에 자동 동기화로 연결",
        "skipDirect": "OOBE 건너뛰고 바로 입장"
      },
      "postgresql": {
        "title": "PostgreSQL 연결",
        "description": "PostgreSQL 연결 문자열을 입력하세요. 시스템이 자동으로 연결되고 동기화됩니다.",
        "connectionPlaceholder": "postgresql://user:password@host:port/database?sslmode=require",
        "autoSyncAndEnter": "자동 연결 및 동기화 후 입장"
      },
      "language": {
        "title": "언어 선택",
        "description": "선호하는 언어를 선택해 주세요"
      },
      "theme": {
        "title": "테마 설정",
        "description": "인터페이스 모양을 선택하세요",
        "mode": "모드",
        "lightMode": "라이트",
        "darkMode": "다크",
        "primaryColor": "주요 색상",
        "backgroundGradient": "배경 그라데이션"
      },
      "password": {
        "title": "비밀번호 설정",
        "description": "데이터를 보호할 로그인 비밀번호를 설정하세요 (선택 사항)",
        "adminPassword": "관리자 비밀번호",
        "adminPasswordHint": "모든 기능 접근 가능, 6자리 숫자",
        "pointsPassword": "포인트 비밀번호",
        "pointsPasswordHint": "포인트 작업만 가능, 6자리 숫자",
        "passwordPlaceholder": "6자리 숫자 입력",
        "hint": "비워두면 건너뛰기, 나중에 설정에서 구성 가능"
      },
      "students": {
        "title": "학생 목록 가져오기",
        "description": "학생 목록을 추가하여 포인트 관리를 시작하세요",
        "import": "목록 가져오기",
        "manual": "수동 추가",
        "importHint": "Excel (.xlsx) 또는 JSON 파일 지원",
        "manualHint": "여러 줄을 붙여넣기, 한 줄에 하나의 학생 이름",
        "dragDrop": "여기에 파일을 드래그 앤 드롭하거나 클릭하여 선택",
        "supportedFormats": "지원되는 형식: .xlsx, .json",
        "studentName": "학생 이름",
        "addStudent": "학생 추가",
        "noStudents": "학생이 없습니다. 추가하거나 가져와 주세요",
        "studentCount": "{{count}}명의 학생이 추가되었습니다",
        "studentExists": "학생이 이미 존재합니다",
        "importSuccess": "{{count}}명의 학생을 성공적으로 가져왔습니다",
        "noNewStudents": "가져올 새로운 학생이 없습니다",
        "parseFailed": "파일 분석 실패",
        "unsupportedFormat": "지원되지 않는 파일 형식"
      },
      "reasons": {
        "title": "이유 설정",
        "description": "일반적인 포인트 변경 이유를 추가하세요",
        "addReason": "이유 추가",
        "reasonName": "이유 이름",
        "points": "포인트",
        "positive": "포인트 추가",
        "negative": "포인트 차감",
        "noReasons": "이유가 없습니다. 일반적인 이유를 추가해 주세요",
        "reasonCount": "{{count}}개의 이유가 추가되었습니다",
        "reasonExists": "이유가 이미 존재합니다"
      },
      "start": {
        "title": "사용 준비 완료",
        "description": "모든 준비가 완료되었습니다. SecScore를 사용해 봅시다!",
        "features": {
          "score": "학생 포인트를 쉽게 관리하세요",
          "history": "완전한 포인트 변경 이력",
          "settlement": "결제 및 보관 지원"
        },
        "startButton": "시작하기"
      }
    }
  },
  "settings": {
    "title": "시스템 설정",
    "tabs": {
      "appearance": "모양새",
      "security": "보안",
      "account": "계정",
      "database": "클라우드 동기화",
      "dataManagement": "데이터 관리",
      "urlProtocol": "URL 프로토콜",
      "about": "정보"
    },
    "language": "언어",
    "languageHint": "인터페이스 표시 언어 선택",
    "fontFamily": "글로벌 글꼴",
    "fontFamilyHint": "인터페이스 글꼴 선택 (새로 고침 필요)",
    "theme": "테마",
    "password": "비밀번호 설정",
    "themeMode": "모드",
    "lightMode": "라이트",
    "darkMode": "다크",
    "primaryColor": "주요 색상",
    "backgroundGradient": "배경 그라데이션",
    "searchKeyboard": {
      "title": "검색 키보드",
      "hint": "검색창 아래에 표시할 키보드 레이아웃 선택",
      "disableToggle": "검색 키보드 비활성화",
      "disableHint": "키보드가 검색창 아래에 표시되지 않습니다",
      "options": {
        "qwerty26": "26자 (QWERTY)",
        "t9": "9자 (T9)"
      }
    },
    "interfaceZoom": "인터페이스 확대/축소",
    "zoomOptions": {
      "small70": "작게 (70%)",
      "default100": "기본 (100%)",
      "large150": "크게 (150%)"
    },
    "general": {
      "saved": "저장됨",
      "saveFailed": "저장 실패"
    },
    "zoomHint": "인터페이스 전체 크기 조정",
    "mobile": {
      "navigationTitle": "페이지 진입",
      "bottomNav": {
        "label": "하단 네비게이션 기능",
        "hint": "모바일 하단 바에 표시할 기능을 선택하세요. 바는 최대 4개 항목을 표시하며, 나머지는 «더보기»로 이동합니다."
      },
      "dragHint": "드래그하여 재정렬. 처음 4개 항목이 하단 바에 표시되고, 나머지는 «더보기»에 있습니다.",
      "dropHere": "여기에 놓으세요",
      "bottomSection": "하단 바 (최대 4개)",
      "moreSection": "더보기",
      "moveToMore": "더보기로 이동",
      "moveToBottom": "하단으로 이동"
    },
    "zoomUpdated": "인터페이스 확대/축소가 업데이트되었습니다",
    "updateFailed": "업데이트 실패",
    "security": {
      "title": "비밀번호 보호 시스템",
      "adminPassword": "관리자 비밀번호",
      "pointsPassword": "포인트 비밀번호",
      "recoveryString": "복구 문자열",
      "set": "설정됨",
      "notSet": "설정되지 않음",
      "generated": "생성됨",
      "notGenerated": "생성되지 않음",
      "enterPassword": "6자리 숫자 입력 (비워두면 수정하지 않음)",
      "adminPasswordPlaceholder": "6자리 관리자 비밀번호 입력 (비워두면 수정하지 않음)",
      "pointsPasswordPlaceholder": "6자리 포인트 비밀번호 입력 (비워두면 수정하지 않음)",
      "recoveryPlaceholder": "복구 문자열 입력",
      "savePassword": "비밀번호 저장",
      "savePasswords": "비밀번호 저장",
      "generateRecovery": "복구 문자열 생성",
      "clearAllPasswords": "모든 비밀번호 지우기",
      "recoveryReset": "복구 문자열 초기화",
      "enterRecovery": "복구 문자열 입력",
      "resetPassword": "비밀번호 초기화",
      "resetHint": "초기화하면 관리자 및 포인트 비밀번호가 지워지고, 새로운 복구 문자열이 생성됩니다.",
      "confirmClear": "모든 비밀번호를 지우시겠습니까?",
      "clearHint": "지운 후 보호가 비활성화됩니다 (비밀번호 없음 = 기본 관리자 권한).",
      "saved": "비밀번호가 업데이트되었습니다",
      "saveFailed": "업데이트 실패",
      "generateFailed": "생성 실패",
      "resetFailed": "초기화 실패",
      "cleared": "지워짐",
      "clearFailed": "지우기 실패",
      "passwordClearedNewRecovery": "비밀번호가 지워졌습니다. 새로운 복구 문자열",
      "newRecoveryString": "새로운 복구 문자열 (저장해 주세요)"
    },
    "account": {
      "title": "SECTL Auth 계정",
      "notLoggedIn": "SECTL Auth에 로그인하지 않았습니다",
      "oauthHint": "SECTL Auth 계정으로 로그인하여 통합 인증 및 원격 로그아웃을 사용하세요",
      "loginButton": "SECTL Auth로 로그인",
      "loginSuccess": "로그인 성공",
      "logout": "로그아웃",
      "userId": "사용자 ID",
      "permission": "권한 수준"
    },
    "database": {
      "title": "데이터베이스 연결",
      "currentStatus": "현재 데이터베이스 상태",
      "sqliteLocal": "SQLite 로컬 데이터베이스",
      "postgresqlRemote": "PostgreSQL 원격 데이터베이스",
      "connected": "연결됨",
      "disconnected": "연결되지 않음",
      "postgresqlConnection": "PostgreSQL 원격 연결",
      "connectionHint": "PostgreSQL 연결 문자열을 입력하여 원격 데이터베이스에 연결하세요. 멀티 플랫폼 동기화를 지원합니다.",
      "testConnection": "연결 테스트",
      "switchToPostgreSQL": "PostgreSQL로 전환",
      "switchToSQLite": "SQLite 로컬로 전환",
      "connectionTestSuccess": "연결 테스트 성공",
      "connectionTestFailed": "연결 테스트 실패",
      "switchedTo": "{{type}} 데이터베이스로 전환되었습니다",
      "switchedToSQLite": "SQLite 로컬 데이터베이스로 전환되었습니다",
      "switchFailed": "전환 실패",
      "syncDescription": "멀티 플랫폼 동기화 지침",
      "syncPoint1": "PostgreSQL 원격 데이터베이스 사용 시 멀티 플랫폼 데이터 동기화가 가능합니다.",
      "syncPoint2": "내장된 작업 큐 메커니즘으로 동시 작업 시 데이터 일관성을 보장합니다.",
      "syncPoint3": "데이터베이스 전환 후 애플리케이션을 재시작해야 합니다.",
      "syncPoint4": "추천 클라우드 데이터베이스 서비스: Neon, Supabase, AWS RDS 등",
      "enterConnectionString": "PostgreSQL 연결 문자열을 입력해 주세요",
      "connectionExample": "예: postgresql://xxxxxx_xxxxx:xxxxxxxx@xx-xxx.xxx.neon.xxxx/xxxxdxx?sslmode=require",
      "uploadButton": "로컬 데이터를 원격 서버에 업로드",
      "uploadHint": "원격 데이터베이스에 연결한 후, 로컬 SQLite 이력을 원격 서버에 업로드하고 병합하세요.",
      "uploadNeedRemote": "먼저 PostgreSQL 원격 데이터베이스로 전환하고 연결해 주세요",
      "noNeedUpload": "로컬 및 원격 데이터가 이미 일치합니다",
      "uploadConfirmTitle": "로컬 데이터를 원격 서버에 업로드하시겠습니까?",
      "uploadConfirmContent": "동기화는 로컬 데이터를 우선시합니다. 감지됨: 로컬 전용 {{localOnly}}, 원격 전용 {{remoteOnly}}, 충돌 {{conflicts}}.",
      "uploadSuccess": "로컬 데이터가 원격 서버에 업로드되었습니다",
      "uploadFailed": "업로드 실패"
    },
    "cloudSync": {
      "title": "클라우드 동기화",
      "selectMethod": "동기화 방법 선택",
      "selectMethodHint": "데이터 동기화 방법을 선택하세요. 두 방법은 상호 배제적이며, 전환 시 새 동기화 채널을 사용합니다.",
      "postgresql": "자체 호스팅 PostgreSQL",
      "postgresqlDesc": "자체 PostgreSQL 데이터베이스에 연결하여 데이터를 완전히 제어합니다. 서버가 있는 사용자에게 적합합니다.",
      "sectlCloud": "SECTL 클라우드 동기화",
      "sectlCloudDesc": "SECTL 클라우드 플랫폼을 통해 데이터를 동기화합니다. 자체 데이터베이스 불필요, 즉시 사용 가능.",
      "loginRequired": "먼저 SECTL Auth에 로그인하세요",
      "loginHint": "SECTL 클라우드 동기화에는 SECTL Auth 계정이 필요합니다. '계정' 탭에서 로그인하세요.",
      "statusTitle": "동기화 상태",
      "configured": "준비 완료",
      "notConfigured": "준비 안 됨",
      "syncing": "동기화 중...",
      "lastSync": "마지막 동기화",
      "never": "동기화 안 됨",
      "syncActions": "동기화 작업",
      "syncDirection": "동기화 방향",
      "bidirectional": "양방향 동기화 (권장) — 로컬과 클라우드 데이터를 자동으로 병합",
      "pushOnly": "업로드만 — 로컬 데이터로 클라우드 데이터 덮어쓰기",
      "pullOnly": "다운로드만 — 클라우드 데이터로 로컬 데이터 덮어쓰기",
      "startSync": "동기화 시작",
      "uploadToCloud": "클라우드에 업로드",
      "downloadFromCloud": "클라우드에서 다운로드",
      "fullSync": "양방향 동기화",
      "syncInProgress": "동기화 진행 중, 잠시만 기다려주세요",
      "syncConfirm": "{{direction}}를 실행하시겠습니까?",
      "storageUsage": "저장소 사용량",
      "usedStorage": "사용됨",
      "table": "테이블",
      "records": "레코드 수",
      "size": "크기",
      "clickToLoadStats": "새로고침 버튼을 클릭하여 통계를 로드하세요",
      "description": "SECTL 클라우드 동기화 가이드",
      "descriptionPoint1": "SECTL 클라우드 서비스로 데이터를 동기화합니다. 자체 데이터베이스 불필요. 데이터는 SECTL Auth 계정으로 격리됩니다.",
      "descriptionPoint2": "KV 저장소 아키텍처 기반. 각 데이터 테이블은 키-값 쌍으로 저장되어 효율적인 읽기/쓰기를 지원합니다.",
      "descriptionPoint3": "양방향, 업로드만, 다운로드만 세 가지 모드를 지원합니다.",
      "descriptionPoint4": "데이터는 HTTPS로 전송되며 OAuth 2.0 인증으로 보안을 보장합니다."
    },
    "data": {
      "title": "데이터 관리",
      "settlement": "결제",
      "settlementAndRestart": "결제 및 재시작",
      "settlementHint": "미결제 레코드를 한 단계로 분류하고 모든 학생 포인트를 0으로 재설정합니다.",
      "importExport": "가져오기 / 내보내기",
      "exportJson": "JSON 내보내기",
      "importJson": "JSON 가져오기",
      "importHint": "가져오기는 기존 학생/이유/레코드/설정을 덮어씁니다 (보안 설정은 제외).",
      "logs": "로그",
      "logLevel": "로그 수준",
      "logOperation": "로그 작업",
      "viewLogs": "로그 보기",
      "exportLogs": "로그 내보내기",
      "clearLogs": "로그 지우기",
      "logsCleared": "로그가 지워졌습니다",
      "systemLogs": "시스템 로그 (최근 200개)",
      "noLogs": "로그 없음",
      "logLevelUpdated": "로그 수준이 업데이트되었습니다",
      "readLogsFailed": "로그 읽기 실패",
      "logsExported": "로그가 내보내졌습니다",
      "exportFailed": "내보내기 실패",
      "exportSuccess": "내보내기 성공",
      "importSuccess": "가져오기 성공, 새로 고치는 중",
      "importFailed": "가져오기 실패",
      "clearFailed": "지우기 실패",
      "confirmSettlement": "결제 및 재시작을 확인하시겠습니까?",
      "settlementConfirm1": "미결제 레코드를 한 단계로 보관하고 모든 학생 포인트를 0으로 재설정합니다.",
      "settlementConfirm2": "학생 목록은 변경되지 않습니다. 결제 이력은 «결제 이력» 페이지에서 조회할 수 있습니다.",
      "settlementSuccess": "결제 성공, 포인트가 재시작되었습니다",
      "settlementFailed": "결제 실패",
      "settle": "결제",
      "logLevels": {
        "debug": "DEBUG (디버그)",
        "info": "INFO (정보)",
        "warn": "WARN (경고)",
        "error": "ERROR (오류)"
      }
    },
    "url": {
      "title": "URL 프로토콜 (secscore://)",
      "protocol": "URL 프로토콜",
      "description": "URL을 통해 SecScore를 호출하여 작업을 수행할 수 있습니다. 예:",
      "register": "URL 프로토콜 등록",
      "registered": "URL 프로토콜이 등록되었습니다",
      "registerFailed": "등록 실패",
      "installerRequired": "설치된 SecScore 버전이 필요합니다. 개발 모드에서는 작동하지 않을 수 있습니다.",
      "checkStatus": "상태 확인",
      "reRegister": "재등록",
      "unregister": "등록 해제",
      "unregistered": "URL 프로토콜 등록이 해제되었습니다",
      "unregisterFailed": "등록 해제 실패",
      "statusRegistered": "등록됨",
      "statusNotRegistered": "등록되지 않음",
      "statusCheckFailed": "상태 확인 실패",
      "retrying": "재시도 중 ({{current}}/{{max}})",
      "retryFailed": "최대 재시도 횟수에 도달했습니다. 등록 실패",
      "retrySuccess": "재시도 #{{n}} 성공",
      "operationLog": "작업 로그",
      "logRegisterStart": "URL 프로토콜 등록 시작...",
      "logRegisterVerify": "등록 명령 실행됨, 확인 중...",
      "logRegisterSuccess": "등록 확인 성공",
      "logRegisterFailed": "등록 확인 실패",
      "logUnregisterStart": "등록 해제 중...",
      "logUnregisterSuccess": "등록 해제 성공",
      "logUnregisterFailed": "등록 해제 실패",
      "logMaxRetries": "최대 재시도 횟수 (7회) 도달"
    },
    "elevation": {
      "title": "관리자 권한",
      "description": "응용 프로그램이 관리자/root 권한으로 실행 중인지 확인합니다. 일부 기능(포트 리스닝, 시스템 수준 작업)에는 권한 상승이 필요합니다.",
      "elevated": "권한 상승됨",
      "notElevated": "권한 상승 안 됨",
      "request": "관리자 권한 요청",
      "requestSuccess": "관리자 권한이 요청되었습니다. 앱이 재시작됩니다",
      "requestFailed": "관리자 권한 요청 실패",
      "windowsHint": "Windows: UAC 프롬프트가 나타납니다. 확인 후 앱이 관리자로 재시작됩니다.",
      "macosHint": "macOS: 시스템 인증 대화 상자가 나타납니다. 관리자 비밀번호를 입력하여 앱을 재시작합니다.",
      "linuxHint": "Linux: pkexec를 사용하여 root 권한을 요청합니다. 비밀번호를 입력하여 앱을 재시작합니다."
    },
    "mcp": {
      "title": "MCP 서비스",
      "description": "외부 MCP 클라이언트를 위한 내장 MCP HTTP 서비스를 관리하세요.",
      "running": "실행 중",
      "stopped": "중지됨",
      "noUrl": "URL 없음",
      "host": "호스트",
      "port": "포트",
      "start": "시작",
      "stop": "중지",
      "refresh": "상태 새로 고침",
      "hint": "127.0.0.1에만 바인딩하는 것이 좋습니다. 시작 후 엔드포인트는 http://host:port/mcp입니다",
      "hostRequired": "MCP 호스트를 입력해 주세요",
      "portInvalid": "유효한 포트를 입력해 주세요 (1-65535)",
      "startSuccess": "MCP 서버가 시작되었습니다",
      "startFailed": "MCP 서버 시작 실패",
      "stopSuccess": "MCP 서버가 중지되었습니다",
      "stopFailed": "MCP 서버 중지 실패",
      "startTimeout": "MCP 서버 시작 시간 초과, 다시 시도해 주세요",
      "stopTimeout": "MCP 서버 중지 시간 초과, 다시 시도해 주세요"
    },
    "app": {
      "title": "애플리케이션 제어",
      "description": "애플리케이션을 빠르게 재시작하거나 종료하세요.",
      "restart": "애플리케이션 재시작",
      "quit": "애플리케이션 종료",
      "confirmRestartTitle": "애플리케이션을 재시작하시겠습니까?",
      "confirmRestartContent": "애플리케이션이 즉시 닫히고 재시작됩니다.",
      "confirmQuitTitle": "애플리케이션을 종료하시겠습니까?",
      "confirmQuitContent": "애플리케이션이 즉시 종료됩니다.",
      "restartFailed": "재시작 실패",
      "quitFailed": "종료 실패"
    },
    "about": {
      "title": "정보",
      "appName": "교육 포인트 관리",
      "version": "버전",
      "copyright": "저작권",
      "ipcStatus": "IPC 상태",
      "ipcConnected": "연결됨",
      "ipcDisconnected": "연결되지 않음 (사전 로드 실패)",
      "environment": "환경",
      "toggleDevTools": "개발자 도구 전환",
      "license": "SecScore는 GPL3.0 라이선스를 따릅니다",
      "copyRightText": "CopyRight © 2025-{{year}} SECTL"
    }
  },
  "sidebar": {
    "home": "홈",
    "students": "학생 관리",
    "score": "포인트 작업",
    "boards": "보드",
    "leaderboard": "순위표",
    "settlements": "결제 이력",
    "reasons": "이유 관리",
    "autoScore": "자동 포인트 추가",
    "rewardExchange": "보상 교환",
    "rewardSettings": "보상 설정",
    "settings": "시스템 설정",
    "remoteDb": "원격 데이터베이스",
    "refreshStatus": "상태 새로 고침",
    "syncNow": "지금 동기화",
    "syncSuccess": "동기화 성공",
    "syncFailed": "동기화 실패",
    "getDbStatusFailed": "데이터베이스 상태 가져오기 실패",
    "notRemoteMode": "원격 데이터베이스 모드가 활성화되지 않았습니다. 애플리케이션을 재시작해 주세요",
    "dbNotConnected": "데이터베이스가 연결되지 않았습니다"
  },
  "auth": {
    "unlock": "권한 잠금 해제",
    "unlockHint": "6자리 비밀번호를 입력하세요: 관리자 비밀번호 = 전체 접근, 포인트 비밀번호 = 포인트 작업만 가능.",
    "unlockButton": "잠금 해제",
    "unlocked": "권한이 잠금 해제되었습니다",
    "logout": "읽기 전용으로 전환되었습니다",
    "passwordPlaceholder": "예: 123456",
    "passwordError": "비밀번호가 잘못되었습니다",
    "enterPassword": "비밀번호 입력",
    "lock": "잠그기"
  },
  "languages": {
    "zh-CN": "简体中文",
    "en-US": "English",
    "ja-JP": "日本語",
    "fr-FR": "Français",
    "es-ES": "Español",
    "ko-KR": "한국어",
    "ru-RU": "Русский",
    "de-DE": "Deutsch",
    "pt-BR": "Português",
    "ar-SA": "العربية"
  },
  "theme": {
    "colorAndBackground": "색상 및 배경",
    "gradientLabels": {
      "blue": "청량한 파랑",
      "pink": "부드러운 핑크",
      "cyan": "청록",
      "purple": "보라"
    },
    "gradientDirections": {
      "vertical": "세로",
      "horizontal": "가로",
      "diagonal": "대각선"
    },
    "generate": "생성",
    "saved": "저장됨",
    "saveFailed": "저장 실패",
    "mode": "모드",
    "myTheme": "내 테마"
  },
  "permissions": {
    "admin": "관리자 권한",
    "points": "포인트 권한",
    "view": "읽기 전용"
  },
  "home": {
    "title": "학생 포인트 홈",
    "subtitle": "총 {{count}}명의 학생, 카드를 클릭하여 작업 수행",
    "searchPlaceholder": "이름/병음을 검색...",
    "sortBy": {
      "alphabet": "이름순 정렬",
      "surname": "성별 그룹",
      "group": "그룹순 정렬",
      "score": "포인트 순위"
    },
    "layoutBy": {
      "grouped": "그룹화된 목록",
      "squareGrid": "정사각형 그리드",
      "largeAvatar": "대형 아바타"
    },
    "noStudents": "학생 데이터가 없습니다. 학생 관리에서 추가해 주세요",
    "noMatch": "일치하는 학생이 없습니다",
    "clearSearch": "검색 지우기",
    "points": "포인트",
    "currentScore": "현재 포인트",
    "quickOptions": "빠른 옵션",
    "adjustPoints": "포인트 조정",
    "customPoints": "사용자 정의 포인트",
    "customPointsHint": "입력란에 원하는 값을 입력하세요",
    "reason": "이유",
    "reasonPlaceholder": "포인트 변경 이유 입력 (선택 사항)",
    "preview": "변경 미리보기",
    "noReason": "(이유 없음)",
    "ungrouped": "그룹화되지 않음",
    "category": {
      "others": "기타"
    },
    "scoreAdded": "{{name}}에게 {{points}}포인트 추가됨",
    "scoreDeducted": "{{name}}에게서 {{points}}포인트 차감됨",
    "submitFailed": "제출 실패",
    "pleaseSelectPoints": "포인트를 선택하거나 입력해 주세요",
    "reasonDefault": "{{action}} {{points}} 포인트",
    "studentCount": "{{count}}명의 학생",
    "operationTitle": "포인트 작업: {{name}}",
    "submitOperation": "작업 제출",
    "operationTitleBatch": "포인트 작업: {{count}}개 선택됨",
    "undoLastAction": "실행 취소",
    "undoLastHint": "마지막 작업 실행 취소: {{name}} {{delta}}",
    "undoUnavailable": "실행 취소할 포인트 작업이 없습니다",
    "undoLastSuccess": "마지막 포인트 작업이 실행 취소되었습니다",
    "multiSelect": "다중 선택",
    "batchMode": "배치 모드",
    "selectAll": "모두 선택",
    "clearSelected": "선택 지우기",
    "batchOperate": "배치 포인트",
    "selected": "선택됨",
    "selectedCount": "{{count}}개 선택됨",
    "batchSuccess": "{{count}}명의 학생 포인트가 제출되었습니다",
    "batchPartial": "{{success}}/{{total}}명의 학생이 성공적으로 제출되었습니다",
    "selectStudentFirst": "먼저 하나 이상의 학생을 선택해 주세요",
    "addPoints": "포인트 추가",
    "deductPoints": "포인트 차감",
    "pointsChange": "포인트 변경",
    "reasonLabel": "이유: "
  },
  "students": {
    "title": "학생 관리",
    "importList": "목록 가져오기",
    "addStudent": "학생 추가",
    "name": "이름",
    "group": "그룹",
    "avatar": "아바타",
    "currentScore": "현재 포인트",
    "tags": "태그",
    "noTags": "태그 없음",
    "editTags": "태그 편집",
    "editAvatar": "아바타 설정",
    "deleteConfirm": "이 학생을 삭제하시겠습니까?",
    "addTitle": "학생 추가",
    "addConfirm": "추가",
    "namePlaceholder": "학생 이름 입력",
    "groupPlaceholder": "그룹 이름 입력 (선택 사항)",
    "nameRequired": "이름을 입력해 주세요",
    "nameExists": "학생 이름이 이미 존재합니다",
    "addSuccess": "추가 성공",
    "addFailed": "추가 실패",
    "deleteSuccess": "삭제 성공",
    "deleteFailed": "삭제 실패",
    "tagSaveSuccess": "태그 저장 성공",
    "tagSaveFailed": "태그 저장 실패",
    "importTitle": "목록 가져오기",
    "importTextHint": "여러 줄을 붙여넣기, 한 줄에 하나의 학생 이름",
    "importTextPlaceholder": "예:\n홍길동\n김철수\n이영희",
    "importByText": "텍스트에서 가져오기",
    "importByXlsx": "xlsx로 가져오기",
    "importByBanyou": "반유에서 가져오기",
    "xlsxPreview": "xlsx 미리보기 및 가져오기",
    "file": "파일",
    "selectNameCol": "헤더를 클릭하여 이름 열 선택",
    "previewRows": "처음 50줄 미리보기",
    "importConfirm": "가져오기",
    "importComplete": "가져오기 완료: {{inserted}}개 추가, {{skipped}}개 건너뜀",
    "workerNotReady": "워커가 초기화되지 않았습니다",
    "parseXlsxFailed": "xlsx 분석 실패",
    "selectNameColFirst": "먼저 «이름 열»을 선택해 주세요",
    "noNamesFound": "선택한 열에 가져올 수 있는 이름이 없습니다",
    "importFailed": "가져오기 실패",
    "banyouCookieHint": "반유 웹에 로그인한 후, 전체 쿠키를 복사하여 아래에 붙여넣어 주세요.",
    "banyouCookiePlaceholder": "uid=...; accessToken=...; ...",
    "banyouCookieRequired": "먼저 쿠키를 붙여넣어 주세요",
    "banyouFetch": "클래스 목록 가져오기",
    "banyouFetchSuccess": "{{count}}개의 클래스를 가져왔습니다",
    "banyouFetchFailed": "반유 클래스 가져오기 실패",
    "banyouCreatedClasses": "내가 만든 클래스",
    "banyouJoinedClasses": "내가 가입한 클래스",
    "banyouNoClasses": "클래스 데이터가 없습니다"
  },
  "boards": {
    "title": "보드 관리",
    "addBoard": "보드 추가",
    "editBoard": "보드 편집",
    "deleteBoard": "보드 삭제",
    "name": "보드 이름",
    "description": "설명",
    "visibility": "가시성",
    "public": "공개",
    "private": "비공개",
    "studentsCount": "{{count}}명의 학생",
    "noBoards": "보드가 없습니다",
    "addTitle": "보드 추가",
    "editTitle": "보드 편집",
    "namePlaceholder": "보드 이름 입력",
    "descriptionPlaceholder": "설명 입력",
    "confirmDelete": "이 보드를 삭제하시겠습니까?",
    "saved": "저장됨",
    "saveFailed": "저장 실패",
    "deleted": "삭제됨",
    "deleteFailed": "삭제 실패",
    "boardExists": "보드가 이미 존재합니다"
  },
  "leaderboard": {
    "title": "순위표",
    "sortBy": "정렬 기준",
    "score": "포인트",
    "name": "이름",
    "rank": "순위",
    "student": "학생",
    "points": "포인트",
    "noData": "순위 데이터가 없습니다",
    "topStudents": "최고의 학생들",
    "rankChanged": "순위: {{rank}}"
  },
  "settlements": {
    "title": "결제 이력",
    "phase": "단계",
    "date": "날짜",
    "studentCount": "학생 수",
    "totalPoints": "총 포인트",
    "actions": "작업",
    "viewDetails": "세부 정보 보기",
    "noSettlements": "결제가 없습니다",
    "phaseDetail": "단계 {{phase}} 세부 정보",
    "settlementDate": "결제 날짜: {{date}}",
    "totalStudents": "총 학생 수: {{count}}",
    "totalPointsChange": "총 포인트 변경: {{points}}"
  },
  "reasons": {
    "title": "이유 관리",
    "addReason": "이유 추가",
    "editReason": "이유 편집",
    "name": "이유 이름",
    "points": "포인트",
    "positive": "긍정",
    "negative": "부정",
    "noReasons": "이유가 없습니다",
    "addTitle": "이유 추가",
    "editTitle": "이유 편집",
    "namePlaceholder": "이유 이름 입력",
    "pointsPlaceholder": "포인트 입력",
    "confirmDelete": "이 이유를 삭제하시겠습니까?",
    "saved": "저장됨",
    "saveFailed": "저장 실패",
    "deleted": "삭제됨",
    "deleteFailed": "삭제 실패",
    "reasonExists": "이유가 이미 존재합니다"
  },
  "autoScore": {
    "title": "자동 포인트 추가",
    "addRule": "규칙 추가",
    "editRule": "규칙 편집",
    "deleteRule": "규칙 삭제",
    "ruleName": "규칙 이름",
    "trigger": "트리거",
    "action": "작업",
    "interval": "간격",
    "enabled": "활성화",
    "noRules": "규칙이 없습니다",
    "addTitle": "규칙 추가",
    "editTitle": "규칙 편집",
    "namePlaceholder": "규칙 이름 입력",
    "triggerPlaceholder": "트리거 선택",
    "actionPlaceholder": "작업 선택",
    "intervalPlaceholder": "간격 선택",
    "confirmDelete": "이 규칙을 삭제하시겠습니까?",
    "saved": "저장됨",
    "saveFailed": "저장 실패",
    "deleted": "삭제됨",
    "deleteFailed": "삭제 실패",
    "ruleExists": "규칙이 이미 존재합니다"
  },
  "rewardExchange": {
    "title": "보상 교환",
    "rewards": "보상",
    "exchange": "교환",
    "history": "이력",
    "noRewards": "보상이 없습니다",
    "noHistory": "이력이 없습니다",
    "rewardName": "보상 이름",
    "cost": "비용",
    "stock": "재고",
    "exchangeSuccess": "교환 성공",
    "exchangeFailed": "교환 실패",
    "insufficientPoints": "포인트 부족",
    "outOfStock": "재고 없음"
  },
  "rewardSettings": {
    "title": "보상 설정",
    "addReward": "보상 추가",
    "editReward": "보상 편집",
    "deleteReward": "보상 삭제",
    "name": "이름",
    "cost": "비용",
    "stock": "재고",
    "noRewards": "보상이 없습니다",
    "addTitle": "보상 추가",
    "editTitle": "보상 편집",
    "namePlaceholder": "이름 입력",
    "costPlaceholder": "비용 입력",
    "stockPlaceholder": "재고 입력",
    "confirmDelete": "이 보상을 삭제하시겠습니까?",
    "saved": "저장됨",
    "saveFailed": "저장 실패",
    "deleted": "삭제됨",
    "deleteFailed": "삭제 실패",
    "rewardExists": "보상이 이미 존재합니다"
  },
  "recovery": {
    "title": "SecScore 복구 문자열",
    "saved": "저장했습니다",
    "export": "텍스트 파일 내보내기",
    "exportHint": "오프라인으로 저장하는 것이 좋습니다. 분실 시 복구할 수 없습니다.",
    "hint": "내보낸 후 오프라인으로 저장하는 것이 좋습니다. 분실 시 복구할 수 없습니다."
  }
}
