Knowledge documents travel as source-text chunks; each surface embeds them with its own model, the server index is requested through embed-chunks, and documents from the phone are stored without a file and indexed from their chunks. Chunk text is now kept when local embedding fails, so reindexing no longer needs the original file. Recordings upload to the mobile storage contract (audio bucket under the user's folder plus an audio_files row, 50 MiB cap, a Settings > Cloud toggle) and are removed with their record. The history card gains a play button that uses the local file or, for phone recordings, a signed URL. Language (ko/en), system/light/dark theme, auto-polish and the active user command follow the phone's user_settings with its revision rule; changes that arrive from the phone reach the open window.
1943 lines
129 KiB
JSON
1943 lines
129 KiB
JSON
{
|
||
"app.name": "D3RO Voice",
|
||
"app.tagline": "로컬 AI 음성 어시스턴트",
|
||
"nav.dashboard": "대시보드",
|
||
"nav.history": "히스토리",
|
||
"nav.dictionary": "사전",
|
||
"nav.commands": "명령어",
|
||
"nav.settings": "설정",
|
||
"nav.meetings": "회의",
|
||
"nav.record": "녹음",
|
||
"nav.chat": "채팅",
|
||
"nav.knowledge": "지식 베이스",
|
||
"nav.actions": "액션",
|
||
"nav.teams": "팀",
|
||
"nav.billing": "결제",
|
||
"nav.logout": "로그아웃",
|
||
"login.subtitle": "AI 음성 어시스턴트",
|
||
"login.google": "Google로 로그인",
|
||
"login.apple": "Apple로 로그인",
|
||
"login.github": "GitHub로 로그인",
|
||
"login.or": "또는",
|
||
"login.email": "EMAIL",
|
||
"login.password": "PASSWORD",
|
||
"login.signIn": "로그인",
|
||
"login.noAccount": "계정이 없으신가요?",
|
||
"login.signUp": "회원가입",
|
||
"login.terms": "계속 진행하면 이용약관 및 개인정보 처리방침에 동의합니다.",
|
||
"dashboard.systemStatus": "시스템 상태",
|
||
"dashboard.sessionsToday": "오늘 세션",
|
||
"dashboard.pressToRecord": "{{key}}를 눌러 녹음 시작",
|
||
"dashboard.hotkeyNotSet": "핫키 미설정",
|
||
"dashboard.words": "단어",
|
||
"dashboard.total": "전체",
|
||
"dashboard.days": "일",
|
||
"dashboard.sessions": "세션",
|
||
"dashboard.recentTranscriptions": "최근 전사",
|
||
"dashboard.noHistory": "히스토리 없음 — 핫키를 눌러 녹음을 시작하세요",
|
||
"dashboard.entries": "{{count}}건",
|
||
"dashboard.heroIdle": "실시간 음성 인식 대기 중",
|
||
"dashboard.viewStats": "통계 보기",
|
||
"dashboard.systemSettings": "시스템 설정",
|
||
"dashboard.keySetup": "키 설정",
|
||
"dashboard.systemOk": "시스템 정상",
|
||
"dashboard.systemIssue": "점검 필요",
|
||
"dashboard.captionPlaceholder": "여기에 실시간 인식된 텍스트가 표시됩니다.",
|
||
"dashboard.captionStandby": "대기 중",
|
||
"dashboard.inputLevel": "입력 레벨",
|
||
"dashboard.recordingTime": "녹음 시간",
|
||
"dashboard.recognizedWords": "인식 단어 수",
|
||
"dashboard.streakUse": "연속 사용",
|
||
"dashboard.modelLabel": "모델",
|
||
"dashboard.statusLabel": "상태",
|
||
"dashboard.localConnected": "로컬 연결",
|
||
"dashboard.planFree": "무료 플랜",
|
||
"dashboard.planFeatureLocal": "로컬 백엔드 무제한",
|
||
"dashboard.planFeatureDaily": "일일 전사 무제한",
|
||
"dashboard.currentBackend": "현재 백엔드",
|
||
"dashboard.backendLocal": "로컬 (Ollama)",
|
||
"dashboard.backendPremium": "프리미엄 (Claude)",
|
||
"history.title": "전사 기록",
|
||
"history.search": "검색...",
|
||
"history.entries": "{{count}}건",
|
||
"history.noResults": "검색 결과 없음",
|
||
"history.noHistory": "히스토리 없음 — 녹음을 시작하세요",
|
||
"history.count": "{{count}}건",
|
||
"dictionary.title": "커스텀 사전",
|
||
"dictionary.words": "{{count}}개",
|
||
"dictionary.add": "추가",
|
||
"dictionary.search": "검색...",
|
||
"dictionary.noResults": "검색 결과 없음",
|
||
"dictionary.noWords": "단어 없음 — STT 정확도 향상을 위해 커스텀 단어를 추가하세요",
|
||
"dictionary.used": "{{count}}회 사용",
|
||
"dictionary.export": "내보내기",
|
||
"dictionary.import": "가져오기",
|
||
"dictionary.exported": "사전을 내보냈습니다.",
|
||
"dictionary.exportFailed": "사전 내보내기에 실패했습니다.",
|
||
"dictionary.importedCount": "가져오기 {{imported}}건, 건너뜀 {{skipped}}건, 오류 {{errors}}건.",
|
||
"dictionary.importFailed": "사전 가져오기에 실패했습니다.",
|
||
"dictionary.editTitle": "단어 편집",
|
||
"dictionary.addTitle": "단어 추가",
|
||
"dictionary.word": "단어",
|
||
"dictionary.pronunciation": "발음 (선택)",
|
||
"commands.title": "LLM 명령어",
|
||
"commands.count": "{{count}}개",
|
||
"commands.add": "추가",
|
||
"commands.activeCommand": "활성 명령어",
|
||
"commands.none": "없음",
|
||
"commands.noCommands": "명령어 없음 — 추가를 클릭하여 생성",
|
||
"commands.editTitle": "명령어 편집",
|
||
"commands.addTitle": "명령어 추가",
|
||
"commands.name": "이름",
|
||
"commands.description": "설명",
|
||
"commands.promptTemplate": "프롬프트 템플릿",
|
||
"commands.promptHelp": "{{text}}는 전사된 텍스트로 치환됩니다",
|
||
"commands.defaultPrompt": "{{text}}를 다듬어주세요.",
|
||
"settings.title": "설정",
|
||
"settings.tabs.general": "일반",
|
||
"settings.tabs.audio": "오디오",
|
||
"settings.tabs.stt": "STT",
|
||
"settings.tabs.llm": "LLM",
|
||
"settings.tabs.cloud": "클라우드",
|
||
"settings.tabs.about": "정보",
|
||
"settings.shortcuts": "단축키",
|
||
"settings.dictation": "받아쓰기",
|
||
"settings.dictation.desc": "누른 상태에서 말하기. 키를 놓으면 전사가 시작됩니다.",
|
||
"settings.agent": "Agent 모드",
|
||
"settings.agent.descWithKey": "{{key}}를 두 번 클릭하면 Agent 모드에 진입합니다.",
|
||
"settings.agent.descNoKey": "받아쓰기 핫키를 먼저 설정하세요.",
|
||
"settings.oneTouch": "원터치 모드",
|
||
"settings.oneTouch.desc": "눌러서 시작, 다시 눌러서 중지. 별도 단축키가 필요합니다.",
|
||
"settings.caption": "실시간 자막",
|
||
"settings.caption.desc": "핫키로 자막 모드를 토글합니다. 마이크 입력을 실시간 전사합니다.",
|
||
"settings.captionAudio": "자막 오디오 소스",
|
||
"settings.captionSource": "오디오 소스",
|
||
"settings.captionSource.mic": "마이크만",
|
||
"settings.captionSource.system": "시스템 오디오만 (데스크톱 소리)",
|
||
"settings.captionSource.both": "마이크 + 시스템 오디오",
|
||
"settings.key": "키",
|
||
"settings.notSet": "미설정",
|
||
"settings.enabled": "활성화됨",
|
||
"settings.disabled": "비활성화",
|
||
"settings.interface": "인터페이스",
|
||
"settings.theme": "테마",
|
||
"settings.theme.system": "시스템",
|
||
"settings.theme.light": "라이트",
|
||
"settings.theme.dark": "다크",
|
||
"settings.language": "언어",
|
||
"settings.appBehavior": "앱 동작",
|
||
"settings.closeToTray": "트레이로 최소화",
|
||
"settings.autoLaunch": "시스템 시작 시 자동 실행",
|
||
"settings.autoInsert": "전사 후 자동 텍스트 삽입",
|
||
"settings.soundEffects": "효과음",
|
||
"settings.microphone": "마이크",
|
||
"settings.inputDevice": "입력 장치",
|
||
"settings.deviceDefault": "(기본)",
|
||
"settings.textInsert": "텍스트 삽입",
|
||
"settings.insertMethod": "삽입 방식",
|
||
"settings.insertClipboard": "클립보드 (Ctrl+V)",
|
||
"settings.insertKeyboard": "키보드 타이핑",
|
||
"settings.sttProvider": "STT 음성 인식 엔진",
|
||
"settings.sttProvider.local": "Local Whisper (오프라인/무료)",
|
||
"settings.sttProvider.openai": "OpenAI Whisper (고품질 표준)",
|
||
"settings.sttProvider.groq": "Groq Whisper (LPU 초고속 ~200ms)",
|
||
"settings.sttProvider.deepgram": "Deepgram Nova-3 (최고 정확도)",
|
||
"settings.sttProvider.assemblyai": "AssemblyAI Universal-2 (음향 모델)",
|
||
"settings.sttProvider.google": "Google Gemini 2.0 Flash Audio",
|
||
"settings.sttProvider.custom": "커스텀 OpenAI 호환 엔드포인트",
|
||
"settings.sttFallbackToLocal": "로컬 Whisper 자동 폴백",
|
||
"settings.sttFallbackToLocalHint": "클라우드 STT 실패 시 오프라인 로컬 Whisper로 자동 전환",
|
||
"settings.whisperModel": "받아쓰기 모델",
|
||
"settings.model.tiny": "tiny (39 MB, 가장 빠름)",
|
||
"settings.model.base": "base (74 MB, 균형)",
|
||
"settings.model.small": "small (244 MB, 양호)",
|
||
"settings.model.medium": "medium (769 MB, 우수)",
|
||
"settings.model.large": "large-v3 (1.5 GB, 최고)",
|
||
"settings.model.largeTurbo": "large-v3-turbo (1.6 GB, 빠르고 정확)",
|
||
"settings.sttLanguage": "인식 언어",
|
||
"settings.sttLang.auto": "자동 감지",
|
||
"settings.ollamaServer": "Ollama 서버",
|
||
"settings.ollamaUrl": "Ollama 서버 URL",
|
||
"settings.ollamaHint": "Ollama가 실행 중이면 자동으로 연결됩니다. 모델은 Ollama에서 직접 pull하세요 (예: ollama pull gemma4:e4b).",
|
||
"settings.llmBackend": "LLM 엔진",
|
||
"settings.backend.local": "Local (Ollama, 무료)",
|
||
"settings.backend.premium": "Premium (Claude AI, 구독)",
|
||
"settings.backend.localHint": "로컬 Ollama 서버로 텍스트를 다듬습니다. 완전 무료, 인터넷 불필요.",
|
||
"settings.backend.premiumHint": "Anthropic Claude AI로 고품질 다듬기. 로그인 + 구독 필요. 네트워크 실패 시 Local로 자동 전환.",
|
||
"settings.conversationBackend": "음성 대화 엔진",
|
||
"settings.convBackend.local": "Local (STT→LLM→TTS, 무료)",
|
||
"settings.convBackend.realtime": "Live (OpenAI gpt-realtime, 구독)",
|
||
"settings.convBackend.localHint": "로컬 파이프라인으로 대화합니다. 완전 무료, 인터넷 불필요.",
|
||
"settings.convBackend.realtimeHint": "OpenAI Realtime 모델과 실시간 음성 대화. 1초 미만 응답 + 말 끊기 지원. 로그인 + Pro 구독 필요. 연결 실패 시 Local로 자동 전환.",
|
||
"settings.llmModel": "LLM 모델",
|
||
"settings.postProcess": "음성 후처리",
|
||
"settings.defaultAction": "기본 후처리 명령어",
|
||
"settings.action.none": "없음 (원본 텍스트 그대로)",
|
||
"settings.action.refine": "다듬기 (문법+자연스러움)",
|
||
"settings.action.translate": "번역",
|
||
"settings.action.summarize": "요약",
|
||
"settings.action.grammar": "문법 교정",
|
||
"settings.action.custom": "커스텀 프롬프트",
|
||
"settings.actionHint": "핫키로 녹음 후 전사된 텍스트에 선택한 LLM 후처리가 적용됩니다. Ollama가 연결되어 있을 때만 동작합니다.",
|
||
"settings.about.version": "버전",
|
||
"settings.about.techStack": "기술 스택",
|
||
"settings.about.techStackValue": "Electron + React 19 + MUI 7 + TypeScript",
|
||
"settings.about.voiceEngine": "음성 엔진",
|
||
"settings.about.voiceEngineValue": "STT: faster-whisper (로컬) / LLM: Ollama (로컬)",
|
||
"settings.about.description": "Speakly 리버스엔지니어링 노하우 기반 로컬 AI 음성 어시스턴트. 클라우드 의존성 없이 완전 로컬로 동작합니다.",
|
||
"settings.about.restartOnboarding": "초기 설정 안내 다시 보기",
|
||
"voice.error.modelMissing": "음성 인식 모델이 설치되지 않았습니다. 모델을 다운로드해 주세요.",
|
||
"voice.error.engine": "음성 인식 엔진을 시작하지 못했습니다. 잠시 후 다시 시도해 주세요.",
|
||
"voice.warning.llmSkipped": "Ollama에 연결할 수 없어 원문 그대로 삽입했습니다.",
|
||
"status.localTime": "로컬 시간",
|
||
"status.nudge.title": "Ollama가 실행되지 않고 있어요",
|
||
"status.nudge.desc": "LLM 후처리(번역, 요약 등)를 사용하려면 Ollama가 필요합니다.",
|
||
"status.nudge.guide": "설치 안내 보기 →",
|
||
"hotkey.title": "단축키 설정",
|
||
"hotkey.dictationTitle": "받아쓰기 단축키 설정",
|
||
"hotkey.oneTouchTitle": "원터치 모드 단축키 설정",
|
||
"hotkey.captionTitle": "실시간 자막 단축키 설정",
|
||
"hotkey.prompt": "키 조합을 눌러주세요...",
|
||
"hotkey.ready": "✓ {{keys}} — 저장을 눌러주세요",
|
||
"hotkey.noKey": "키를 입력해주세요",
|
||
"hotkey.reserved": "{{keys}}은 시스템 예약 단축키입니다",
|
||
"hotkey.current": "현재: {{keys}}",
|
||
"hotkey.hint": "조합키(예: Ctrl+Shift+Q) 또는 단일키(예: F5)를 입력하세요",
|
||
"hotkey.reset": "다시 입력",
|
||
"ollama.title": "OLLAMA SETUP GUIDE",
|
||
"ollama.step1.title": "STEP 1 — Ollama 설치",
|
||
"ollama.step1.desc": "Ollama는 로컬에서 LLM을 실행하는 무료 도구입니다.",
|
||
"ollama.step2.title": "STEP 2 — 모델 다운로드",
|
||
"ollama.step2.desc": "터미널에서 원하는 모델을 pull하세요. 한국어에 추천:",
|
||
"ollama.step2.alt": "또는 더 큰 모델: ollama pull gemma4:26b (더 정확, 더 느림)",
|
||
"ollama.step3.title": "STEP 3 — 자동 연결",
|
||
"ollama.step3.desc": "Ollama가 실행되면 D3RO-VOICE가 자동으로 감지합니다. 하단 상태 바의 LED가 빨간색에서 초록색으로 바뀌면 준비 완료!",
|
||
"service.sttEngine": "STT ENGINE",
|
||
"service.ollamaLlm": "OLLAMA LLM",
|
||
"service.hotkeyHook": "HOTKEY HOOK",
|
||
"service.audioInput": "AUDIO INPUT",
|
||
"service.ready": "READY",
|
||
"service.connected": "CONNECTED",
|
||
"service.offline": "OFFLINE",
|
||
"service.active": "ACTIVE",
|
||
"service.standby": "STANDBY",
|
||
"service.premiumLlm": "PREMIUM LLM",
|
||
"service.notConfigured": "NOT SET",
|
||
"common.cancel": "취소",
|
||
"common.back": "뒤로",
|
||
"common.edit": "편집",
|
||
"common.save": "저장",
|
||
"common.delete": "삭제",
|
||
"common.close": "닫기",
|
||
"common.confirm": "확인",
|
||
"common.loading": "로딩...",
|
||
"common.copy": "복사",
|
||
"common.test": "테스트",
|
||
"common.stop": "중지",
|
||
"memo.addTag": "태그 추가",
|
||
"memo.tagPlaceholder": "태그 입력 후 Enter",
|
||
"memo.export": "마크다운 내보내기",
|
||
"memo.clearFilter": "필터 해제",
|
||
"voiceCommand.title": "음성 명령어",
|
||
"voiceCommand.keywordPlaceholder": "키워드 입력 후 Enter",
|
||
"voiceCommand.noKeywords": "키워드 없음",
|
||
"chain.title": "LLM 체인",
|
||
"chain.add": "체인 추가",
|
||
"chain.editTitle": "체인 편집",
|
||
"chain.addTitle": "체인 추가",
|
||
"chain.name": "체인 이름",
|
||
"chain.steps": "단계",
|
||
"chain.addStep": "단계 추가",
|
||
"chain.inputSource": "입력 소스",
|
||
"chain.inputSource.original": "원본 텍스트",
|
||
"chain.inputSource.previous": "이전 단계 결과",
|
||
"chain.selectInstruction": "명령어 선택",
|
||
"chain.noChains": "체인 없음 — 여러 명령어를 순차 실행하는 파이프라인을 만들어 보세요",
|
||
"dashboard.caption": "실시간 자막",
|
||
"dashboard.captionStart": "자막 시작",
|
||
"dashboard.captionStop": "자막 종료",
|
||
"dashboard.captionActive": "자막 활성",
|
||
"settings.voiceCommands": "음성 명령어",
|
||
"settings.voiceCommands.desc": "전사된 텍스트에서 키워드를 감지하여 명령어를 자동 선택합니다.",
|
||
"settings.screenContext": "화면 컨텍스트",
|
||
"settings.screenContext.desc": "녹음 시 활성 앱 정보와 선택된 텍스트를 LLM에 함께 전달합니다.",
|
||
"date.today": "오늘",
|
||
"date.yesterday": "어제",
|
||
"license.title": "라이선스",
|
||
"license.currentTier": "현재 등급",
|
||
"license.free": "FREE",
|
||
"license.pro": "PRO",
|
||
"license.proPlus": "PRO+",
|
||
"license.subscribe": "구독하기",
|
||
"license.upgrade": "업그레이드",
|
||
"license.proPlan": "Pro 플랜",
|
||
"license.proPlusPlan": "Pro+ 플랜",
|
||
"license.quotaUsed": "{{used}}/{{limit}} 사용",
|
||
"license.tierComparison": "등급 비교",
|
||
"license.dailyUsage": "일일 사용량",
|
||
"license.feature.dictation": "받아쓰기",
|
||
"license.feature.llm_process": "LLM 처리",
|
||
"license.feature.live_caption": "실시간 자막",
|
||
"license.feature.screen_context": "화면 컨텍스트",
|
||
"license.feature.voice_command": "음성 명령어",
|
||
"license.feature.llm_chain": "LLM 체인",
|
||
"license.feature.voice_memo": "음성 메모",
|
||
"license.feature.history_unlimited": "무제한 히스토리",
|
||
"license.feature.history_export": "히스토리 내보내기",
|
||
"license.feature.custom_instruction_create": "커스텀 명령어 생성",
|
||
"license.feature.file_transcription": "파일 전사",
|
||
"license.feature.voice_conversation": "음성 대화",
|
||
"license.feature.dictation_template": "받아쓰기 템플릿",
|
||
"license.feature.meeting_summary": "회의 요약",
|
||
"license.feature.local_rag": "로컬 RAG",
|
||
"license.feature.os_automation": "OS 자동화",
|
||
"license.feature.llmProcess": "LLM 처리",
|
||
"license.feature.liveCaption": "실시간 자막",
|
||
"license.feature.screenContext": "화면 컨텍스트",
|
||
"license.feature.voiceCommand": "음성 명령어",
|
||
"license.feature.llmChain": "LLM 체인",
|
||
"license.feature.voiceMemo": "음성 메모",
|
||
"license.feature.historyUnlimited": "무제한 히스토리",
|
||
"license.feature.historyExport": "히스토리 내보내기",
|
||
"license.feature.customInstruction": "커스텀 명령어 생성",
|
||
"license.feature.fileTranscription": "파일 전사",
|
||
"license.feature.voiceConversation": "음성 대화",
|
||
"license.feature.dictationTemplate": "받아쓰기 템플릿",
|
||
"license.feature.meetingSummary": "회의 요약",
|
||
"license.feature.localRag": "로컬 RAG",
|
||
"license.feature.osAutomation": "OS 자동화",
|
||
"license.pro.required": "PRO 필요",
|
||
"license.quotaExceeded.title": "오늘의 {{feature}}을(를) 모두 사용했습니다",
|
||
"license.quotaExceeded.desc": "Pro로 업그레이드하면 무제한으로 사용할 수 있습니다",
|
||
"license.tierRequired.title": "{{feature}}은(는) {{tier}} 기능입니다",
|
||
"license.tierRequired.desc": "{{tier}}로 업그레이드하여 잠금을 해제하세요",
|
||
"license.loginRequired.title": "{{feature}}은(는) 로그인이 필요합니다",
|
||
"license.loginRequired.desc": "클라우드 기능을 사용하려면 로그인하세요. 로컬 기능은 로그인 없이도 계속 사용할 수 있습니다.",
|
||
"license.loginRequired.signIn": "로그인하기",
|
||
"license.tryTomorrow": "내일 다시 사용하기",
|
||
"license.learnMore": "알아보기",
|
||
"license.upgradeBenefits": "업그레이드 혜택",
|
||
"license.benefit.unlimitedDictation": "무제한 받아쓰기",
|
||
"license.benefit.unlimitedLLM": "무제한 AI 다듬기",
|
||
"license.benefit.liveCaption": "실시간 자막",
|
||
"license.benefit.unlimitedHistory": "히스토리 무제한 보존",
|
||
"license.usageToday": "오늘 사용량",
|
||
"license.unlimited": "무제한",
|
||
"license.nav": "라이선스",
|
||
"license.signInRequired": "구독을 관리하려면 로그인하세요",
|
||
"license.signInToUpgrade": "로그인 후 업그레이드",
|
||
"license.subscriptionManage": "구독 관리",
|
||
"license.upgradeToProDesc": "프리미엄 AI 모델, 클라우드 동기화 등 모든 기능을 사용하세요",
|
||
"license.currentPlanActive": "현재 구독 중",
|
||
"license.premiumQuota": "프리미엄 쿼터",
|
||
"license.modelHaiku": "Haiku",
|
||
"license.modelSonnet": "Sonnet",
|
||
"license.modelOpus": "Opus",
|
||
"license.quotaWeekly": "주간",
|
||
"license.quotaDaily": "일간",
|
||
"fileTranscription.title": "파일 전사",
|
||
"fileTranscription.dropZone": "오디오/비디오 파일을 여기에 드래그하세요",
|
||
"fileTranscription.dropZoneHint": "MP3, WAV, M4A, MP4, MKV, WEBM 지원",
|
||
"fileTranscription.converting": "변환 중...",
|
||
"fileTranscription.processing": "전사 중...",
|
||
"fileTranscription.progress": "청크 {{current}} / {{total}}",
|
||
"fileTranscription.complete": "전사 완료",
|
||
"fileTranscription.copyAll": "전체 복사",
|
||
"fileTranscription.cancel": "취소",
|
||
"fileTranscription.retry": "다시 시도",
|
||
"fileTranscription.error.invalidFormat": "지원하지 않는 파일 형식입니다",
|
||
"fileTranscription.error.unknown": "알 수 없는 오류",
|
||
"meetingSummary.title": "회의록 요약",
|
||
"meetingSummary.generating": "요약 생성 중...",
|
||
"meetingSummary.summary": "요약",
|
||
"meetingSummary.decisions": "핵심 결정사항",
|
||
"meetingSummary.actionItems": "할 일 목록",
|
||
"meetingSummary.exportMarkdown": "마크다운 내보내기",
|
||
"meetingSummary.noSummary": "요약이 없습니다",
|
||
"meetingSummary.generate": "요약 생성",
|
||
"template.title": "딕테이션 템플릿",
|
||
"template.create": "새 템플릿",
|
||
"template.edit": "템플릿 편집",
|
||
"template.delete": "삭제",
|
||
"template.name": "템플릿 이름",
|
||
"template.description": "설명",
|
||
"template.fields": "필드",
|
||
"template.addField": "필드 추가",
|
||
"template.fieldName": "필드명",
|
||
"template.fieldLabel": "라벨",
|
||
"template.fieldPrompt": "음성 안내",
|
||
"template.outputFormat": "출력 포맷",
|
||
"template.startSession": "시작",
|
||
"template.cancelSession": "세션 취소",
|
||
"template.empty": "템플릿이 없습니다",
|
||
"nav.conversation": "대화",
|
||
"conversation.title": "음성 대화",
|
||
"conversation.idle": "대기",
|
||
"conversation.listening": "듣는 중",
|
||
"conversation.thinking": "생각 중",
|
||
"conversation.speaking": "말하는 중",
|
||
"conversation.empty": "D3RO에게 말을 걸어보세요",
|
||
"conversation.emptyHint": "마이크 버튼을 누르거나 텍스트를 입력하세요",
|
||
"conversation.inputPlaceholder": "메시지 입력...",
|
||
"conversation.end": "종료",
|
||
"conversation.clearHistory": "대화 초기화",
|
||
"conversation.recording.hint": "말씀하세요 · ⏹로 전송",
|
||
"conversation.thinking.placeholder": "응답 대기 중…",
|
||
"conversation.state.recording": "녹음 중",
|
||
"conversation.error.phase.stt": "음성 인식",
|
||
"conversation.error.phase.llm": "응답 생성",
|
||
"conversation.error.phase.tts": "음성 재생",
|
||
"conversation.error.noSpeech": "음성이 감지되지 않았습니다. 마이크를 확인하고 다시 말씀해 주세요.",
|
||
"conversation.realtime.badge": "LIVE",
|
||
"conversation.realtime.connecting": "연결 중",
|
||
"conversation.realtime.fallback": "라이브 연결 실패 — 로컬 대화로 전환했습니다.",
|
||
"rag.title": "지식 베이스",
|
||
"rag.addDocument": "문서 추가",
|
||
"rag.documents": "문서",
|
||
"rag.noDocuments": "문서가 없습니다",
|
||
"rag.chunks": "청크",
|
||
"rag.indexed": "인덱싱 완료",
|
||
"rag.pending": "대기 중",
|
||
"rag.indexing": "인덱싱 중",
|
||
"rag.reindex": "재인덱싱",
|
||
"rag.askQuestion": "질문하기",
|
||
"rag.queryPlaceholder": "문서에 대해 질문하세요...",
|
||
"rag.searching": "검색 중...",
|
||
"rag.sources": "참조 문서",
|
||
"rag.adding": "추가 중...",
|
||
"rag.parsing": "문서 분석 중...",
|
||
"settings.theme.nord": "Nord",
|
||
"settings.theme.solarized": "Solarized",
|
||
"settings.theme.catppuccin": "Catppuccin",
|
||
"settings.theme.dracula": "Dracula",
|
||
"settings.sttLang.ko": "한국어",
|
||
"settings.sttLang.en": "English",
|
||
"settings.sttLang.ja": "日本語",
|
||
"settings.sttLang.zh": "中文",
|
||
"template.outputHelperText": "{{필드명}} 형식으로 플레이스홀더를 사용하세요",
|
||
"nav.meeting": "회의",
|
||
"meeting.title": "회의 모드",
|
||
"meeting.newMeeting": "새 회의",
|
||
"meeting.stopRecording": "녹음 종료",
|
||
"meeting.recording": "녹음 중",
|
||
"meeting.processing": "회의록 생성 중...",
|
||
"meeting.completed": "완료",
|
||
"meeting.error": "오류",
|
||
"meeting.memoPlaceholder": "메모 입력 (Enter로 추가)",
|
||
"meeting.noSessions": "회의 녹음이 없습니다",
|
||
"meeting.noSessionsDesc": "새 회의 버튼을 눌러 녹음을 시작하세요",
|
||
"meeting.transcript": "원문 전사",
|
||
"meeting.memos": "메모",
|
||
"meeting.sessions": "{{count}}건",
|
||
"meeting.duration": "{{minutes}}분",
|
||
"meeting.editTitle": "제목 편집",
|
||
"meeting.untitled": "무제 회의",
|
||
"meeting.processingStep.merging": "전사 텍스트 합산 중...",
|
||
"meeting.processingStep.generating": "LLM 회의록 생성 중...",
|
||
"meeting.processingStep.parsing": "회의록 파싱 중...",
|
||
"meeting.processingStep.saving": "저장 중...",
|
||
"meeting.processingStep.notifying": "완료 알림 중...",
|
||
"meeting.transcriptTab": "전사",
|
||
"meeting.addDocument": "문서 추가",
|
||
"meeting.selectTemplate": "템플릿 선택",
|
||
"meeting.generate": "생성",
|
||
"meeting.generating": "문서 생성 중...",
|
||
"meeting.editMode": "편집",
|
||
"meeting.previewMode": "미리보기",
|
||
"meeting.modified": "수정됨",
|
||
"meeting.originalText": "원본 보기",
|
||
"meeting.editedText": "수정본 보기",
|
||
"meeting.exportDocx": "DOCX 내보내기",
|
||
"meeting.exportTxt": "TXT 내보내기",
|
||
"meeting.exportFormat": "내보내기",
|
||
"meeting.customPrompt": "커스텀 프롬프트",
|
||
"meeting.templateName": "템플릿 이름",
|
||
"meeting.templatePrompt": "AI 프롬프트",
|
||
"meeting.downloadTranscript": "전사 다운로드",
|
||
"meeting.polish": "AI 다듬기",
|
||
"meeting.polishing": "AI가 전사를 다듬는 중...",
|
||
"meeting.chat": "AI 채팅",
|
||
"meeting.chatPlaceholder": "회의 내용에 대해 질문하세요...",
|
||
"meeting.chatClear": "대화 초기화",
|
||
"meeting.copyToClipboard": "클립보드 복사",
|
||
"meeting.chatCollapse": "채팅 접기",
|
||
"meeting.chatExpand": "채팅 펼치기",
|
||
"meeting.chatReasoning": "추론 중…",
|
||
"meeting.exportMd": "Markdown (.md)",
|
||
"meeting.exportPdfFmt": "PDF (.pdf)",
|
||
"meeting.polishFailed": "AI 다듬기에 실패했습니다",
|
||
"meeting.viewDetailError": "회의 상세 정보를 불러오지 못했습니다",
|
||
"meeting.startRecordingError": "녹음을 시작하지 못했습니다",
|
||
"meeting.diarize": "화자 구분",
|
||
"meeting.diarizing": "화자를 구분하는 중...",
|
||
"settings.hfToken": "HuggingFace 토큰",
|
||
"settings.hfTokenHint": "화자 구분을 위해 HuggingFace 토큰이 필요합니다",
|
||
"settings.diarization": "화자 구분",
|
||
"settings.diarizationHint": "녹음 종료 후 화자를 자동으로 구분합니다",
|
||
"theme.label": "테마",
|
||
"theme.dark": "다크",
|
||
"theme.light": "라이트",
|
||
"theme.auto": "자동 (시스템)",
|
||
"theme.nord": "노드",
|
||
"theme.solarized": "솔라라이즈드",
|
||
"theme.catppuccin": "카푸치노",
|
||
"theme.dracula": "드라큘라",
|
||
"mobile.dash.title": "D3RO-VOICE",
|
||
"mobile.dash.sessionOverview": "SESSION OVERVIEW",
|
||
"mobile.dash.today": "TODAY",
|
||
"mobile.dash.words": "WORDS",
|
||
"mobile.dash.streak": "STREAK",
|
||
"mobile.dash.rec": "REC",
|
||
"mobile.dash.min": "MIN",
|
||
"mobile.dash.backend": "BACKEND",
|
||
"mobile.dash.tier": "TIER",
|
||
"mobile.dash.free": "FREE",
|
||
"mobile.dash.tapToRecord": "REC 탭을 눌러 녹음 시작",
|
||
"mobile.dash.usage": "USAGE",
|
||
"mobile.dash.dictation": "받아쓰기",
|
||
"mobile.dash.llmProcess": "LLM 처리",
|
||
"mobile.dash.premiumQuota": "프리미엄 쿼터",
|
||
"mobile.dash.unlimited": "무제한",
|
||
"mobile.dash.sessions": "세션",
|
||
"mobile.dash.synced": "동기화됨",
|
||
"mobile.dash.syncError": "동기화 오류",
|
||
"mobile.dash.cloudSynced": "클라우드 동기화됨",
|
||
"mobile.dash.loading": "대시보드를 불러오고 있습니다...",
|
||
"mobile.dash.loadError": "대시보드 데이터를 불러오지 못했습니다. 기존 수치를 임의로 표시하지 않습니다.",
|
||
"mobile.dash.retry": "다시 시도",
|
||
"mobile.dash.rewardsTitle": "PRO 및 리워드",
|
||
"mobile.dash.paidSummary": "서버에서 확인된 유료 플랜입니다. 광고 없이 이용할 수 있습니다.",
|
||
"mobile.dash.freeSummary": "리워드 광고로 AI 크레딧을 받거나 광고 없는 플랜을 구독할 수 있습니다.",
|
||
"mobile.dash.openPlans": "요금제 및 리워드 열기 →",
|
||
"mobile.dash.usedToday": "오늘 {{count}}회",
|
||
"mobile.dash.rewardCredits": "리워드 크레딧",
|
||
"mobile.dash.recent": "최근 전사",
|
||
"mobile.dash.items": "{{count}}건",
|
||
"mobile.dash.noHistory": "완료된 전사 기록이 없습니다. 녹음 또는 파일 가져오기를 시작하세요.",
|
||
"mobile.status.cloudModel": "클라우드 AI",
|
||
"mobile.status.secureDataLink": "보안 데이터 연결",
|
||
"mobile.hist.title": "HISTORY",
|
||
"mobile.hist.all": "ALL",
|
||
"mobile.hist.saved": "SAVED",
|
||
"mobile.hist.processing": "PROC",
|
||
"mobile.hist.empty": "아직 기록이 없습니다. 녹음을 시작해보세요!",
|
||
"mobile.hist.emptySearch": "조건에 맞는 기록이 없습니다.",
|
||
"mobile.hist.searchPlaceholder": "제목과 전사 내용 검색",
|
||
"mobile.hist.entries": "{{count}}개 기록",
|
||
"mobile.hist.wordsShort": "{{count}}단어",
|
||
"mobile.hist.offline": "오프라인 — 암호화된 기기 캐시를 표시 중",
|
||
"mobile.hist.cachedAt": "마지막 동기화 {{time}}",
|
||
"mobile.hist.cacheWarning": "보안 캐시를 갱신하지 못했습니다. 온라인 데이터는 정상입니다.",
|
||
"mobile.hist.realtimeWaiting": "실시간 동기화 재연결 중 — 당겨서 새로고침은 계속 사용할 수 있습니다.",
|
||
"mobile.hist.loadError": "기록을 불러오지 못했습니다.",
|
||
"mobile.hist.retry": "다시 시도",
|
||
"mobile.hist.favorite": "즐겨찾기",
|
||
"mobile.hist.unfavorite": "즐겨찾기 해제",
|
||
"mobile.hist.delete": "삭제",
|
||
"mobile.hist.deleteTitle": "기록 삭제",
|
||
"mobile.hist.deleteBody": "이 기록을 삭제할까요? 연결된 원본 오디오 파일은 유지됩니다.",
|
||
"mobile.hist.deleteFailed": "서버에서 삭제를 확정하지 못해 기록을 복원했습니다.",
|
||
"mobile.hist.favoriteFailed": "서버에서 변경을 확정하지 못해 이전 상태로 되돌렸습니다.",
|
||
"mobile.hist.processingProgress": "처리 중 {{progress}}%",
|
||
"mobile.hist.loadMore": "이전 기록 불러오는 중",
|
||
"mobile.hist.detailTitle": "기록 상세",
|
||
"mobile.hist.back": "뒤로",
|
||
"mobile.hist.detailLoading": "기록을 불러오는 중입니다...",
|
||
"mobile.hist.notFound": "이 기록이 없거나 접근 권한이 없습니다.",
|
||
"mobile.hist.edit": "편집",
|
||
"mobile.hist.save": "저장",
|
||
"mobile.hist.saving": "저장 중...",
|
||
"mobile.hist.cancel": "취소",
|
||
"mobile.hist.titleLabel": "제목",
|
||
"mobile.hist.originalLabel": "원문",
|
||
"mobile.hist.polishedLabel": "교정문",
|
||
"mobile.hist.summaryLabel": "요약",
|
||
"mobile.hist.metadata": "메타데이터",
|
||
"mobile.hist.mode": "모드",
|
||
"mobile.hist.status": "상태",
|
||
"mobile.hist.language": "언어",
|
||
"mobile.hist.duration": "길이",
|
||
"mobile.hist.model": "모델",
|
||
"mobile.hist.created": "생성",
|
||
"mobile.hist.updated": "수정",
|
||
"mobile.hist.revision": "리비전",
|
||
"mobile.hist.audio": "원본 오디오",
|
||
"mobile.hist.audioNone": "연결된 오디오 파일이 없습니다.",
|
||
"mobile.hist.audioPlay": "재생",
|
||
"mobile.hist.audioPause": "일시정지",
|
||
"mobile.hist.audioResume": "계속 재생",
|
||
"mobile.hist.audioStop": "정지",
|
||
"mobile.hist.audioPending": "업로드 상태: {{status}}",
|
||
"mobile.hist.audioError": "오디오를 안전하게 열지 못했습니다.",
|
||
"mobile.hist.jobs": "처리 작업",
|
||
"mobile.hist.jobsNone": "연결된 처리 작업이 없습니다.",
|
||
"mobile.hist.share": "공유",
|
||
"mobile.hist.shareFailed": "공유 시트를 열지 못했습니다.",
|
||
"mobile.hist.editFailed": "서버에서 편집을 확정하지 못했습니다.",
|
||
"mobile.hist.conflict": "다른 기기에서 먼저 수정했습니다. 초안을 유지했으니 최신 내용을 확인하세요.",
|
||
"mobile.hist.reloadLatest": "서버 최신 내용 불러오기",
|
||
"mobile.hist.savedSuccess": "서버에 저장했습니다.",
|
||
"mobile.hist.validationTitle": "제목은 160자 이하여야 합니다.",
|
||
"mobile.hist.validationOriginal": "원문은 비워둘 수 없습니다.",
|
||
"mobile.dictionary.title": "CUSTOM DICTIONARY",
|
||
"mobile.dictionary.count": "{{count}}개 단어",
|
||
"mobile.dictionary.add": "단어 추가",
|
||
"mobile.dictionary.search": "단어 또는 발음 검색",
|
||
"mobile.dictionary.loading": "서버 사전을 불러오는 중...",
|
||
"mobile.dictionary.loadingMore": "이전 단어를 불러오는 중",
|
||
"mobile.dictionary.retry": "다시 시도",
|
||
"mobile.dictionary.empty": "등록된 단어가 없습니다. 자주 틀리는 고유명사나 기술 용어를 추가하세요.",
|
||
"mobile.dictionary.emptySearch": "검색 및 카테고리 조건에 맞는 단어가 없습니다.",
|
||
"mobile.dictionary.realtimeWaiting": "실시간 동기화 재연결 중 — 당겨서 새로고침은 계속 사용할 수 있습니다.",
|
||
"mobile.dictionary.category": "카테고리",
|
||
"mobile.dictionary.category.all": "전체",
|
||
"mobile.dictionary.category.user": "사용자",
|
||
"mobile.dictionary.category.technical": "기술 용어",
|
||
"mobile.dictionary.category.auto": "자동",
|
||
"mobile.dictionary.usage": "{{count}}회 사용",
|
||
"mobile.dictionary.addTitle": "새 단어 추가",
|
||
"mobile.dictionary.editTitle": "단어 편집",
|
||
"mobile.dictionary.word": "단어",
|
||
"mobile.dictionary.pronunciation": "발음 (선택)",
|
||
"mobile.dictionary.edit": "편집",
|
||
"mobile.dictionary.delete": "삭제",
|
||
"mobile.dictionary.deleting": "삭제 중...",
|
||
"mobile.dictionary.deleteTitle": "사전 단어 삭제",
|
||
"mobile.dictionary.deleteBody": "‘{{word}}’ 단어를 삭제할까요? 다른 기기에서도 삭제됩니다.",
|
||
"mobile.dictionary.cancel": "취소",
|
||
"mobile.dictionary.save": "서버에 저장",
|
||
"mobile.dictionary.saving": "저장 중...",
|
||
"mobile.dictionary.error.auth": "로그인 세션 또는 이 단어의 소유권을 확인할 수 없습니다.",
|
||
"mobile.dictionary.error.conflict": "다른 기기에서 이 단어를 먼저 수정하거나 삭제했습니다. 최신 목록을 확인하세요.",
|
||
"mobile.dictionary.error.duplicate": "같은 카테고리에 이미 등록된 단어입니다.",
|
||
"mobile.dictionary.error.network": "네트워크 연결을 확인하고 다시 시도하세요.",
|
||
"mobile.dictionary.error.notFound": "이 단어가 없거나 접근 권한이 없습니다.",
|
||
"mobile.dictionary.error.validation": "단어는 1~120자, 발음은 200자 이하로 입력하세요.",
|
||
"mobile.dictionary.error.server": "서버에서 사전 작업을 확정하지 못했습니다.",
|
||
"mobile.commands.title": "AI COMMANDS",
|
||
"mobile.commands.count": "{{count}}개 서버 실행 프리셋",
|
||
"mobile.commands.readOnlyBadge": "READ ONLY",
|
||
"mobile.commands.contractNotice": "현재 서버에는 사용자 명령 저장 스키마가 없습니다. 이 화면은 변경 가능한 목록으로 위장하지 않으며, 검증된 기본 명령을 인증된 Cloud AI에 실제로 실행하는 테스트 벤치만 제공합니다. 녹음 후 자동 실행과는 아직 연결되지 않았습니다.",
|
||
"mobile.commands.available": "AVAILABLE SERVER COMMANDS",
|
||
"mobile.commands.translate.name": "영문 번역",
|
||
"mobile.commands.translate.description": "입력 텍스트를 자연스러운 영어로 번역하고 번역문만 반환합니다.",
|
||
"mobile.commands.summarize.name": "핵심 요약",
|
||
"mobile.commands.summarize.description": "핵심 내용을 3줄 이내로 요약합니다.",
|
||
"mobile.commands.formal.name": "전문 리라이트",
|
||
"mobile.commands.formal.description": "원래 의미를 유지하며 격식 있는 비즈니스 문체로 다듬습니다.",
|
||
"mobile.commands.explain.name": "코드 설명",
|
||
"mobile.commands.explain.description": "코드의 역할과 주의점을 한국어로 설명합니다.",
|
||
"mobile.commands.testBench": "AUTHENTICATED TEST BENCH",
|
||
"mobile.commands.selected": "선택: {{name}}",
|
||
"mobile.commands.inputPlaceholder": "서버 명령으로 처리할 실제 텍스트를 입력하세요.",
|
||
"mobile.commands.run": "서버에서 실행",
|
||
"mobile.commands.running": "실행 중...",
|
||
"mobile.commands.cancel": "취소",
|
||
"mobile.commands.serverProcessing": "인증 및 사용량 확인 후 Cloud AI가 처리 중입니다.",
|
||
"mobile.commands.serverResult": "SERVER RESULT",
|
||
"mobile.commands.retry": "다시 실행",
|
||
"mobile.commands.error.auth": "로그인 세션이 만료됐습니다. 다시 로그인하세요.",
|
||
"mobile.commands.error.invalid": "입력 내용이 비어 있거나 허용 길이를 초과했습니다.",
|
||
"mobile.commands.error.quota": "오늘 사용할 수 있는 Cloud AI 한도를 모두 사용했습니다.",
|
||
"mobile.commands.error.model": "현재 요금제에서 선택한 AI 모델을 사용할 수 없습니다.",
|
||
"mobile.commands.error.provider": "AI 공급자가 설정되지 않았거나 잠시 사용할 수 없습니다.",
|
||
"mobile.commands.error.timeout": "AI 응답 시간이 초과됐습니다.",
|
||
"mobile.commands.error.network": "네트워크 연결을 확인하고 다시 시도하세요.",
|
||
"mobile.commands.error.response": "AI가 유효한 결과를 반환하지 않았습니다.",
|
||
"mobile.commands.error.cancelled": "명령 실행을 취소했습니다.",
|
||
"mobile.commands.error.notFound": "지원되지 않는 명령입니다.",
|
||
"mobile.commands.error.server": "서버 명령을 완료하지 못했습니다.",
|
||
"mobile.commands.syncedCount": "{{count}}개 동기화 명령",
|
||
"mobile.commands.add": "추가",
|
||
"mobile.commands.syncNotice": "기본 명령과 사용자 명령은 계정에 동기화됩니다. 활성 명령은 녹음 후 처리에 사용할 서버 정본입니다.",
|
||
"mobile.commands.loading": "서버 명령을 불러오는 중...",
|
||
"mobile.commands.active": "활성",
|
||
"mobile.commands.activate": "활성화",
|
||
"mobile.commands.deactivate": "비활성화",
|
||
"mobile.commands.deleteTitle": "사용자 명령 삭제",
|
||
"mobile.commands.deleteConfirm": "‘{{name}}’ 명령을 삭제할까요? 모든 기기에서 제거됩니다.",
|
||
"mobile.commands.noSelection": "실행할 명령을 선택하세요.",
|
||
"mobile.commands.addTitle": "사용자 명령 추가",
|
||
"mobile.commands.editTitle": "사용자 명령 편집",
|
||
"mobile.commands.name": "이름",
|
||
"mobile.commands.descriptionLabel": "설명",
|
||
"mobile.commands.prompt": "서버 프롬프트",
|
||
"mobile.commands.saving": "저장 중...",
|
||
"mobile.commands.save": "저장",
|
||
"mobile.commands.syncError.auth": "로그인 세션 또는 명령 소유권을 확인할 수 없습니다.",
|
||
"mobile.commands.syncError.validation": "이름 1~80자, 설명 240자 이하, 프롬프트 1~4000자로 입력하세요.",
|
||
"mobile.commands.syncError.duplicate": "같은 이름의 명령이 이미 있습니다.",
|
||
"mobile.commands.syncError.conflict": "다른 기기에서 먼저 수정했습니다. 최신 목록을 다시 불러왔습니다.",
|
||
"mobile.commands.syncError.notFound": "명령이 없거나 접근 권한이 없습니다.",
|
||
"mobile.commands.syncError.server": "서버에서 명령 변경을 확정하지 못했습니다.",
|
||
"mobile.knowledge.title": "KNOWLEDGE",
|
||
"mobile.knowledge.description": "모바일 파일과 텍스트를 지식 문서로 동기화하고 실제 검색을 실행합니다.",
|
||
"mobile.knowledge.count": "{{count}}개 문서",
|
||
"mobile.knowledge.import": "텍스트 파일 가져오기",
|
||
"mobile.knowledge.importing": "가져오는 중",
|
||
"mobile.knowledge.contractNotice": "UTF-8 TXT·Markdown 파일의 본문을 계정의 지식 청크로 저장한 뒤 서버 임베딩이 모든 청크를 확인해야 검색 준비 상태가 됩니다. PDF·DOCX를 텍스트로 가장하거나 원문을 검색 답변으로 대신 표시하지 않습니다.",
|
||
"mobile.knowledge.realtimeWaiting": "지식 문서 실시간 동기화에 다시 연결하는 중입니다. 아래로 당겨 서버 상태를 새로 확인할 수 있습니다.",
|
||
"mobile.knowledge.documentSearch": "문서 제목 검색",
|
||
"mobile.knowledge.searchDocuments": "목록 검색",
|
||
"mobile.knowledge.queryTitle": "시맨틱 검색",
|
||
"mobile.knowledge.queryNotice": "인증된 search-knowledge 서버가 실제 임베딩 검색을 완료한 결과만 표시합니다.",
|
||
"mobile.knowledge.queryPlaceholder": "지식 베이스에 질문하거나 검색어 입력",
|
||
"mobile.knowledge.query": "검색",
|
||
"mobile.knowledge.querying": "검색 중",
|
||
"mobile.knowledge.cancel": "취소",
|
||
"mobile.knowledge.resultCount": "검색 결과 {{count}}개",
|
||
"mobile.knowledge.queryEmpty": "유사도 기준을 통과한 지식 청크가 없습니다.",
|
||
"mobile.knowledge.importReady": "파일 저장과 전체 청크 인덱싱을 완료했습니다.",
|
||
"mobile.knowledge.importSavedPending": "파일과 청크는 저장됐지만 인덱싱은 완료되지 않았습니다. 문서의 인덱스 재시도를 사용하세요.",
|
||
"mobile.knowledge.cleanupWarning": "가져오기 임시 파일을 지우지 못했습니다. 앱 캐시는 운영체제에서 정리될 수 있습니다.",
|
||
"mobile.knowledge.indexReady": "서버가 모든 청크의 인덱싱 완료를 확인했습니다.",
|
||
"mobile.knowledge.deleteTitle": "지식 문서 삭제",
|
||
"mobile.knowledge.deleteBody": "‘{{title}}’ 문서와 모든 지식 청크를 계정에서 삭제할까요? 되돌릴 수 없습니다.",
|
||
"mobile.knowledge.delete": "삭제",
|
||
"mobile.knowledge.deleting": "삭제 중",
|
||
"mobile.knowledge.retry": "다시 불러오기",
|
||
"mobile.knowledge.library": "DOCUMENT LIBRARY",
|
||
"mobile.knowledge.loading": "서버 지식 문서를 불러오는 중",
|
||
"mobile.knowledge.empty": "저장된 지식 문서가 없습니다. UTF-8 TXT 또는 Markdown 파일을 가져오세요.",
|
||
"mobile.knowledge.emptySearch": "제목 검색 조건에 맞는 문서가 없습니다.",
|
||
"mobile.knowledge.noFileName": "파일 이름 없음",
|
||
"mobile.knowledge.chunkCount": "{{count}}개 청크",
|
||
"mobile.knowledge.teamShared": "팀에서 공유한 문서 · 소유자만 인덱싱하거나 삭제할 수 있습니다.",
|
||
"mobile.knowledge.indexing": "인덱싱 중",
|
||
"mobile.knowledge.retryIndex": "인덱스 재시도",
|
||
"mobile.knowledge.statusProcessing": "PROCESSING",
|
||
"mobile.knowledge.statusReady": "READY",
|
||
"mobile.knowledge.statusPending": "PENDING",
|
||
"mobile.knowledge.unknownDocument": "접근 가능한 문서",
|
||
"mobile.knowledge.error.auth": "지식 베이스를 사용하려면 다시 로그인해야 합니다.",
|
||
"mobile.knowledge.error.conflict": "다른 기기에서 문서가 먼저 변경되거나 삭제됐습니다. 최신 목록을 확인하세요.",
|
||
"mobile.knowledge.error.forbidden": "이 문서를 변경할 권한이 없습니다.",
|
||
"mobile.knowledge.error.indexUnavailable": "지식 임베딩 서버가 설정되지 않았습니다. 문서는 보류 상태로 유지됩니다.",
|
||
"mobile.knowledge.error.indexFailed": "서버가 모든 지식 청크의 임베딩을 완료하지 못했습니다. 준비 완료로 표시하지 않았습니다.",
|
||
"mobile.knowledge.error.response": "서버가 완전하고 검증 가능한 지식 결과를 반환하지 않았습니다.",
|
||
"mobile.knowledge.error.network": "네트워크 연결을 확인하고 다시 시도하세요.",
|
||
"mobile.knowledge.error.notFound": "문서를 찾을 수 없거나 접근 권한이 없습니다.",
|
||
"mobile.knowledge.error.timeout": "지식 서버 응답 시간이 초과됐습니다. 미완료 문서는 보류 상태로 유지됩니다.",
|
||
"mobile.knowledge.error.validation": "1MB 이하의 유효한 UTF-8 TXT·Markdown 파일과 올바른 입력을 사용하세요.",
|
||
"mobile.knowledge.error.cancelled": "지식 작업을 취소했습니다.",
|
||
"mobile.knowledge.error.server": "지식 서버가 작업 완료를 확인하지 못했습니다.",
|
||
"mobile.actions.title": "ACTIONS",
|
||
"mobile.actions.description": "자연어 명령을 안전한 모바일 작업으로 분석하고 확인 후 실행합니다.",
|
||
"mobile.actions.subtitle": "확인 후 실행하는 모바일 안전 액션",
|
||
"mobile.actions.confirmBadge": "CONFIRM FIRST",
|
||
"mobile.actions.contractNotice": "Cloud AI는 명령을 엄격한 JSON으로 파싱만 합니다. 회의 생성·지식 검색·회의 메모 저장만 모바일 허용 목록에 있으며 항상 사용자가 확인해야 실행됩니다. 팀 초대와 OS·외부 앱 부작용은 자동 실행하지 않습니다. 실행 기록은 현재 이 기기에 계정별로 저장되며 서버 감사 로그는 아직 없습니다.",
|
||
"mobile.actions.commandTitle": "자연어 명령",
|
||
"mobile.actions.inputPlaceholder": "실행하려는 작업을 구체적으로 입력하세요",
|
||
"mobile.actions.parse": "서버에서 분석",
|
||
"mobile.actions.parsing": "분석 중",
|
||
"mobile.actions.cancel": "취소",
|
||
"mobile.actions.serverParsing": "인증된 Cloud AI가 액션 계약을 분석하고 있습니다.",
|
||
"mobile.actions.executing": "실행 중",
|
||
"mobile.actions.reviewTitle": "실행 전 확인",
|
||
"mobile.actions.allowed": "ALLOWLISTED",
|
||
"mobile.actions.blocked": "BLOCKED",
|
||
"mobile.actions.type": "작업 유형",
|
||
"mobile.actions.arguments": "서버가 해석한 값",
|
||
"mobile.actions.rationale": "해석 근거",
|
||
"mobile.actions.confirmWarning": "확인을 누르면 표시된 계정 데이터 작업이 실제로 실행됩니다. 내용을 확인하세요.",
|
||
"mobile.actions.reject": "실행하지 않음",
|
||
"mobile.actions.confirmExecute": "확인하고 실행",
|
||
"mobile.actions.externalBlocked": "팀 초대는 외부 메시지 부작용과 권한 검증이 필요하므로 모바일 자동 실행 목록에서 차단했습니다.",
|
||
"mobile.actions.unknownBlocked": "필수 정보가 없거나 지원하지 않는 작업이므로 실행하지 않습니다.",
|
||
"mobile.actions.historyNotRecorded": "실패 결과를 이 기기의 실행 기록에 저장하지 못했습니다.",
|
||
"mobile.actions.resultTitle": "실제 실행 결과",
|
||
"mobile.actions.resultWithoutHistory": "작업은 완료됐지만 로컬 기록 저장에 실패했습니다. 중복 실행하지 말고 결과를 먼저 확인하세요.",
|
||
"mobile.actions.historyTitle": "이 기기의 실행 기록",
|
||
"mobile.actions.refreshHistory": "기록 새로고침",
|
||
"mobile.actions.historyEmpty": "이 계정으로 확인 후 실행한 모바일 액션이 없습니다.",
|
||
"mobile.actions.historySucceeded": "성공",
|
||
"mobile.actions.historyFailed": "실패",
|
||
"mobile.actions.type.createMeeting": "회의 공간 생성",
|
||
"mobile.actions.type.searchKnowledge": "지식 베이스 검색",
|
||
"mobile.actions.type.createMemo": "회의 메모 저장",
|
||
"mobile.actions.type.sendTeamInvite": "팀 초대",
|
||
"mobile.actions.type.unknown": "지원하지 않는 작업",
|
||
"mobile.actions.memoArgs": "회의 {{meetingId}} · {{content}}",
|
||
"mobile.actions.inviteArgs": "{{email}} · 권한 {{role}}",
|
||
"mobile.actions.noArguments": "실행 인자 없음",
|
||
"mobile.actions.meetingCreated": "‘{{title}}’ 회의 공간을 서버에 생성했습니다.",
|
||
"mobile.actions.knowledgeSearched": "서버 지식 검색에서 {{count}}개 결과를 확인했습니다.",
|
||
"mobile.actions.memoCreated": "회의 {{meetingId}}에 메모를 서버 저장했습니다.",
|
||
"mobile.actions.error.blocked": "이 작업은 모바일 안전 실행 목록에 없거나 사용자 확인을 거치지 않았습니다.",
|
||
"mobile.actions.error.auth": "액션을 사용하려면 다시 로그인해야 합니다.",
|
||
"mobile.actions.error.cancelled": "액션 요청을 취소했습니다.",
|
||
"mobile.actions.error.forbidden": "이 계정에는 요청한 데이터 작업을 실행할 권한이 없습니다.",
|
||
"mobile.actions.error.history": "이 기기의 액션 기록을 읽거나 저장하지 못했습니다.",
|
||
"mobile.actions.error.invalid": "명령 또는 실행 인자가 서버 계약 범위를 벗어났습니다.",
|
||
"mobile.actions.error.response": "Cloud AI가 엄격한 액션 JSON 계약을 반환하지 않아 실행을 차단했습니다.",
|
||
"mobile.actions.error.model": "현재 요금제에서 선택한 Cloud AI 모델을 사용할 수 없습니다.",
|
||
"mobile.actions.error.network": "네트워크 연결을 확인하고 다시 시도하세요.",
|
||
"mobile.actions.error.provider": "Cloud AI 또는 지식 임베딩 제공자를 현재 사용할 수 없습니다.",
|
||
"mobile.actions.error.quota": "오늘 사용할 수 있는 Cloud AI 한도를 초과했습니다.",
|
||
"mobile.actions.error.timeout": "서버 응답 시간이 초과됐습니다. 실행 결과를 확인한 뒤 재시도하세요.",
|
||
"mobile.actions.error.server": "서버가 액션 완료를 확인하지 못했습니다.",
|
||
"mobile.rec.title": "RECORDER",
|
||
"mobile.rec.session": "REC_SESSION",
|
||
"mobile.rec.ready": "READY",
|
||
"mobile.rec.recording": "RECORDING",
|
||
"mobile.rec.processing": "PROCESSING",
|
||
"mobile.rec.done": "DONE",
|
||
"mobile.rec.error": "ERROR",
|
||
"mobile.rec.start": "START RECORDING",
|
||
"mobile.rec.stop": "STOP",
|
||
"mobile.rec.cancel": "CANCEL",
|
||
"mobile.rec.newRecording": "NEW RECORDING",
|
||
"mobile.rec.listening": "LISTENING_",
|
||
"mobile.rec.realtime": "REAL-TIME TRANSCRIPT",
|
||
"mobile.rec.initLog": "> initializing voice recording protocol...",
|
||
"mobile.rec.micDenied": "마이크 권한이 거부되었습니다",
|
||
"mobile.rec.supabaseNotConfigured": "Supabase가 설정되지 않았습니다",
|
||
"mobile.rec.loginRequired": "로그인이 필요합니다",
|
||
"mobile.rec.stateSelecting": "오디오 파일 선택 중",
|
||
"mobile.rec.stateStarting": "녹음기 시작 중",
|
||
"mobile.rec.stateRecording": "녹음 중",
|
||
"mobile.rec.statePaused": "녹음 일시정지",
|
||
"mobile.rec.stateStopping": "녹음 마무리 중",
|
||
"mobile.rec.stateValidating": "오디오 확인 중",
|
||
"mobile.rec.stateUploading": "안전하게 업로드 중",
|
||
"mobile.rec.stateTranscribing": "전사 중",
|
||
"mobile.rec.stateSaving": "저장 및 동기화 중",
|
||
"mobile.rec.stateCancelling": "취소 중",
|
||
"mobile.rec.stateDone": "기록에 저장됨",
|
||
"mobile.rec.stateError": "처리 실패",
|
||
"mobile.rec.stateReady": "준비됨",
|
||
"mobile.rec.startFailed": "녹음을 시작하지 못했습니다.",
|
||
"mobile.rec.stateChangeFailed": "녹음 상태를 변경하지 못했습니다.",
|
||
"mobile.rec.processFailed": "녹음 파일을 처리하지 못했습니다.",
|
||
"mobile.rec.importFailed": "오디오 파일을 가져오지 못했습니다.",
|
||
"mobile.rec.sharedImportFailed": "공유된 오디오 또는 비디오를 가져오지 못했습니다.",
|
||
"mobile.rec.cancelFailed": "녹음을 취소하지 못했습니다.",
|
||
"mobile.rec.shareTitle": "D3RO Voice 전사",
|
||
"mobile.rec.shareDialogTitle": "전사 내용 공유",
|
||
"mobile.rec.shareFailed": "전사 내용을 공유하지 못했습니다.",
|
||
"mobile.rec.noSpeech": "이 오디오에서 음성을 감지하지 못했습니다.",
|
||
"mobile.rec.syncedCopy": "동기화된 사본",
|
||
"mobile.rec.paused": "일시정지됨",
|
||
"mobile.rec.importAudio": "오디오 파일 가져오기",
|
||
"mobile.rec.shareTranscript": "전사 내용 공유",
|
||
"mobile.rec.sharing": "공유 중...",
|
||
"mobile.rec.pause": "일시정지",
|
||
"mobile.rec.resume": "계속 녹음",
|
||
"mobile.rec.cancelling": "취소 중...",
|
||
"mobile.rec.cancelProcessing": "처리 취소",
|
||
"mobile.rec.stateQueued": "재시도 대기 중",
|
||
"mobile.rec.stateRecoverable": "복구된 녹음",
|
||
"mobile.rec.interrupted": "Android가 녹음을 일시정지했습니다: {{reason}}",
|
||
"mobile.rec.recoveredReason": "중단된 녹음을 복구했습니다: {{reason}}",
|
||
"mobile.rec.recoveryFailed": "중단된 녹음 상태를 확인하지 못했습니다.",
|
||
"mobile.rec.queuedRetry": "검증된 로컬 오디오는 안전하게 보관되며 네트워크와 세션이 준비되면 다시 처리됩니다.",
|
||
"mobile.rec.processingCancelled": "이 기기의 오디오 처리를 취소했습니다.",
|
||
"mobile.rec.meetingRecording": "회의 녹음",
|
||
"mobile.rec.recoveredHelp": "유효한 부분 WAV를 확인한 뒤 처리하거나 명시적으로 삭제하세요.",
|
||
"mobile.rec.queuedHelp": "업로드 진행 위치를 저장했습니다. 앱을 다시 열면 같은 파일부터 이어지며 완료를 거짓 표시하지 않습니다.",
|
||
"mobile.rec.viewMeeting": "회의 보기",
|
||
"mobile.rec.processRecovered": "복구 오디오 처리",
|
||
"mobile.rec.discardRecovered": "복구 오디오 삭제",
|
||
"mobile.rec.retryNow": "지금 다시 시도",
|
||
"mobile.talk.title": "TALK",
|
||
"mobile.talk.live": "LIVE",
|
||
"mobile.talk.you": "YOU",
|
||
"mobile.talk.claude": "CLAUDE",
|
||
"mobile.talk.placeholder": "입력하거나 말하세요...",
|
||
"mobile.talk.greeting": "안녕하세요! 무엇을 도와드릴까요?",
|
||
"mobile.talk.cloudEngine": "보안 클라우드 AI",
|
||
"mobile.talk.clear": "지우기",
|
||
"mobile.talk.empty": "새 대화를 시작해.",
|
||
"mobile.talk.thinking": "답변을 생성하고 있습니다...",
|
||
"mobile.talk.transcribing": "기기 또는 보안 클라우드에서 음성을 전사하고 있습니다...",
|
||
"mobile.talk.recording": "녹음 중",
|
||
"mobile.talk.releaseToSend": "손을 떼면 전사 후 전송해",
|
||
"mobile.talk.holdToTalk": "누르고 말하기",
|
||
"mobile.talk.pttHint": "마이크를 누른 채 말하고, 손을 떼면 전송해.",
|
||
"mobile.talk.cancel": "취소",
|
||
"mobile.talk.playSpeech": "이 답변 음성으로 재생",
|
||
"mobile.talk.stopSpeech": "음성 재생 중지",
|
||
"mobile.talk.phase.idle": "보안 클라우드 AI · 준비",
|
||
"mobile.talk.phase.recording": "마이크 · 녹음 중",
|
||
"mobile.talk.phase.transcribing": "음성 인식 중",
|
||
"mobile.talk.phase.thinking": "AI 스트리밍 중",
|
||
"mobile.talk.phase.speaking": "안드로이드 음성 · 재생 중",
|
||
"mobile.talk.send": "메시지 보내기",
|
||
"mobile.talk.retry": "다시 시도",
|
||
"mobile.talk.error.auth": "세션이 만료되었습니다. 다시 로그인해 주세요.",
|
||
"mobile.talk.error.invalid": "보낼 수 없는 메시지야. 내용을 줄여서 다시 시도해.",
|
||
"mobile.talk.error.quota": "오늘 사용할 수 있는 AI 대화 한도를 모두 사용했습니다.",
|
||
"mobile.talk.error.model": "현재 요금제에서 선택한 AI 모델을 사용할 수 없습니다.",
|
||
"mobile.talk.error.provider": "AI 공급자가 설정되지 않았거나 잠시 사용할 수 없습니다.",
|
||
"mobile.talk.error.timeout": "AI 응답 시간이 초과되었습니다.",
|
||
"mobile.talk.error.network": "네트워크 연결을 확인하고 다시 시도해.",
|
||
"mobile.talk.error.noSpeech": "음성이 인식되지 않았습니다. 마이크에 가까이에서 다시 말씀해 주세요.",
|
||
"mobile.talk.error.response": "AI가 유효한 답변을 반환하지 않았습니다.",
|
||
"mobile.talk.error.cancelled": "요청이 취소되었습니다.",
|
||
"mobile.talk.error.micPermission": "눌러서 말하려면 마이크 권한이 필요해.",
|
||
"mobile.talk.error.recording": "마이크 녹음을 완료하지 못했습니다.",
|
||
"mobile.talk.error.tooShort": "마이크를 조금 더 오래 누른 뒤 손을 떼 주세요.",
|
||
"mobile.talk.error.sttQuota": "오늘 사용할 수 있는 음성 전사 한도를 모두 사용했습니다.",
|
||
"mobile.talk.error.stt": "보안 클라우드와 기기 음성 인식이 모두 실패했습니다.",
|
||
"mobile.talk.error.ttsUnavailable": "안드로이드 음성 엔진이 없거나 이 언어를 지원하지 않아.",
|
||
"mobile.talk.error.tts": "안드로이드가 이 답변을 음성으로 재생하지 못했습니다.",
|
||
"mobile.talk.debugAudioE2e": "실제 오디오 E2E 실행",
|
||
"mobile.talk.error.server": "AI 요청을 처리하지 못했습니다.",
|
||
"mobile.report.action": "신고",
|
||
"mobile.report.title": "AI 응답 신고",
|
||
"mobile.report.body": "문제가 있는 응답을 D3RO Voice 운영팀에 안전하게 알려주세요.",
|
||
"mobile.report.selectedOutput": "신고에 포함되는 AI 응답",
|
||
"mobile.report.reason.harmful": "유해하거나 위험한 조언",
|
||
"mobile.report.reason.sexual": "성적 콘텐츠",
|
||
"mobile.report.reason.hateful": "혐오 또는 괴롭힘",
|
||
"mobile.report.reason.violent": "폭력적인 콘텐츠",
|
||
"mobile.report.reason.selfHarm": "자해 또는 자살 관련 콘텐츠",
|
||
"mobile.report.reason.misinformation": "명백히 잘못된 정보",
|
||
"mobile.report.reason.privacy": "개인정보 노출",
|
||
"mobile.report.reason.spam": "스팸 또는 무관한 응답",
|
||
"mobile.report.reason.other": "기타",
|
||
"mobile.report.commentLabel": "추가 설명(선택)",
|
||
"mobile.report.commentPlaceholder": "검토에 필요한 내용만 입력해 주세요. 개인정보는 넣지 마세요.",
|
||
"mobile.report.privacyNote": "선택한 AI 응답과 신고 사유만 전송합니다. 음성, 전체 대화와 질문 원문은 자동으로 포함하지 않습니다.",
|
||
"mobile.report.submit": "신고 보내기",
|
||
"mobile.report.submitting": "전송 중",
|
||
"mobile.report.cancel": "취소",
|
||
"mobile.report.done": "완료",
|
||
"mobile.report.successTitle": "신고를 접수했습니다",
|
||
"mobile.report.successBody": "운영팀이 정책과 안전 기준에 따라 검토합니다.",
|
||
"mobile.report.receipt": "접수 번호 {{id}}",
|
||
"mobile.report.error.auth": "로그인 상태를 확인한 뒤 다시 시도해 주세요.",
|
||
"mobile.report.error.invalid": "신고 사유를 선택하고 입력 내용을 확인해 주세요.",
|
||
"mobile.report.error.source": "이 AI 응답의 신고 가능 기간이 끝났거나 확인할 수 없습니다.",
|
||
"mobile.report.error.alreadyReported": "이 AI 응답은 이미 신고가 접수되었습니다.",
|
||
"mobile.report.error.rateLimited": "짧은 시간에 신고가 너무 많습니다. 잠시 후 다시 시도해 주세요.",
|
||
"mobile.report.error.conflict": "이 신고 요청의 재시도 정보를 확인할 수 없습니다. 창을 닫고 다시 시도해 주세요.",
|
||
"mobile.report.error.network": "신고를 전송하지 못했습니다. 연결을 확인하고 다시 시도해 주세요.",
|
||
"mobile.report.error.server": "서버가 신고 접수를 확인하지 못했습니다. 다시 시도해 주세요.",
|
||
"mobile.set.title": "설정",
|
||
"mobile.set.accountPlan": "ACCOUNT & PLAN",
|
||
"mobile.set.backendConfig": "BACKEND CONFIG",
|
||
"mobile.set.preferences": "PREFERENCES",
|
||
"mobile.set.llmModel": "LLM Model",
|
||
"mobile.set.llmDesc": "AI processing backend",
|
||
"mobile.set.cloudStt": "Cloud STT",
|
||
"mobile.set.cloudSttDesc": "Google Cloud Speech",
|
||
"mobile.set.language": "Language",
|
||
"mobile.set.autoPolish": "Auto Polish",
|
||
"mobile.set.haptic": "Haptic Feedback",
|
||
"mobile.set.logout": "LOGOUT",
|
||
"mobile.set.logoutConfirm": "정말 로그아웃 하시겠습니까?",
|
||
"mobile.set.loggingOut": "로그아웃 중...",
|
||
"mobile.set.openAccount": "계정 정보 열기",
|
||
"mobile.set.openAccountHint": "프로필, 로그인 방식, 비밀번호와 계정 삭제 설정으로 이동합니다.",
|
||
"mobile.set.openPlans": "요금제와 리워드 열기",
|
||
"mobile.set.openPlansHint": "구독 요금제와 리워드 충전 화면으로 이동합니다.",
|
||
"mobile.set.planAndRewards": "PRO 요금제와 리워드 토큰 충전",
|
||
"mobile.set.userFallback": "사용자",
|
||
"mobile.set.edit": "편집",
|
||
"mobile.set.appearance": "화면과 언어",
|
||
"mobile.set.theme": "테마",
|
||
"mobile.set.themeDesc": "시스템 설정을 따르거나 라이트·다크 테마를 고정합니다.",
|
||
"mobile.set.languageDesc": "앱의 주요 화면에 사용할 언어를 선택합니다.",
|
||
"mobile.set.autoPolishDesc": "전사 뒤 지원되는 문장 다듬기를 기본으로 사용합니다.",
|
||
"mobile.set.hapticDesc": "지원되는 조작에서 진동 피드백을 사용합니다.",
|
||
"mobile.set.automatic": "자동",
|
||
"mobile.set.cloudSttManagedDesc": "현재 모바일 전사는 계정의 서버 정책에 따라 안전하게 처리됩니다.",
|
||
"mobile.set.serverManaged": "서버 관리",
|
||
"mobile.set.replayTutorial": "튜토리얼 다시 보기",
|
||
"mobile.set.replayTutorialDesc": "녹음, 전사, 공유, 가져오기와 동기화 흐름을 다시 확인합니다.",
|
||
"mobile.set.replayTutorialHint": "초기 설정은 바꾸지 않고 안내 화면만 다시 엽니다.",
|
||
"mobile.set.statusFooter": "D3RO 모바일 설정",
|
||
"mobile.set.tools": "도구 및 자동화",
|
||
"mobile.dictionary.description": "고유명사와 기술 용어를 서버 사전에 추가하고 모든 기기에서 동기화합니다.",
|
||
"mobile.commands.description": "인증된 Cloud AI에서 검증된 명령을 실제 입력으로 실행합니다.",
|
||
"mobile.devices.title": "연결 기기",
|
||
"mobile.devices.description": "이 계정에 연결된 모바일 기기를 확인하고 원격 연결을 해제합니다.",
|
||
"mobile.devices.errorTitle": "기기 관리 오류",
|
||
"mobile.devices.loadError": "연결 기기 목록을 불러오지 못했습니다.",
|
||
"mobile.devices.retry": "다시 시도",
|
||
"mobile.devices.empty": "등록된 기기가 없습니다.",
|
||
"mobile.devices.current": "현재 기기",
|
||
"mobile.devices.active": "활성",
|
||
"mobile.devices.revoked": "연결 해제됨",
|
||
"mobile.devices.version": "앱 {{version}}",
|
||
"mobile.devices.lastSeen": "마지막 연결 {{time}}",
|
||
"mobile.devices.revokeTitle": "기기 연결 해제",
|
||
"mobile.devices.revokeConfirm": "{{name}} 기기의 세션과 동기화를 중단하시겠습니까?",
|
||
"mobile.devices.revoke": "연결 해제",
|
||
"mobile.devices.revoking": "해제 중...",
|
||
"mobile.devices.revokeError": "기기 연결을 해제하지 못했습니다.",
|
||
"mobile.devices.remove": "목록에서 제거",
|
||
"mobile.devices.removeError": "해제된 기기를 목록에서 제거하지 못했습니다.",
|
||
"mobile.set.adPrivacy": "광고 개인정보 설정",
|
||
"mobile.set.adPrivacyDesc": "Google UMP 동의 상태를 확인하고 맞춤 광고 선택을 변경합니다. 유료 요금제에는 광고를 요청하지 않습니다.",
|
||
"mobile.set.adPrivacyOpen": "광고 개인정보 옵션 열기",
|
||
"mobile.set.legal": "법률 및 개인정보",
|
||
"mobile.set.privacyPolicy": "개인정보처리방침",
|
||
"mobile.set.privacyPolicyHint": "D3RO Voice가 데이터를 처리하고 보호하는 방법을 확인합니다.",
|
||
"mobile.set.termsOfService": "이용약관",
|
||
"mobile.set.termsOfServiceHint": "서비스, 구독 및 사용자 콘텐츠 이용 조건을 확인합니다.",
|
||
"mobile.set.accountDeletion": "외부 계정 삭제 안내",
|
||
"mobile.set.accountDeletionHint": "앱을 사용할 수 없을 때 계정 삭제를 요청하는 방법을 엽니다.",
|
||
"mobile.set.adPrivacyRequired": "개인정보 선택 확인 필요",
|
||
"mobile.set.adPrivacyUnavailable": "현재 기기 또는 지역에서는 개인정보 옵션 양식을 열 수 없습니다.",
|
||
"mobile.theme.system": "시스템",
|
||
"mobile.theme.light": "라이트",
|
||
"mobile.theme.dark": "다크",
|
||
"mobile.preferences.syncTitle": "설정 동기화",
|
||
"mobile.preferences.statusLoading": "설정을 불러오는 중",
|
||
"mobile.preferences.statusLocal": "이 기기에 저장됨",
|
||
"mobile.preferences.statusSaving": "계정에 동기화 중",
|
||
"mobile.preferences.statusSynced": "계정과 동기화됨",
|
||
"mobile.preferences.statusOffline": "오프라인 저장됨",
|
||
"mobile.preferences.statusError": "설정 저장 확인 필요",
|
||
"mobile.preferences.notSyncedYet": "아직 서버 동기화 기록이 없습니다.",
|
||
"mobile.preferences.lastSynced": "마지막 동기화 {{time}}",
|
||
"mobile.preferences.retry": "동기화 다시 시도",
|
||
"mobile.preferences.retrying": "다시 시도 중...",
|
||
"mobile.preferences.saveFailedTitle": "설정을 저장하지 못했습니다",
|
||
"mobile.preferences.cacheReadError": "이 기기에 저장된 설정을 읽지 못했습니다. 기본값을 사용하며 다시 시도할 수 있습니다.",
|
||
"mobile.preferences.cacheWriteError": "이 기기에 설정을 저장하지 못했습니다. 저장 공간 상태를 확인하고 다시 시도해주세요.",
|
||
"mobile.preferences.syncError": "계정 설정 서버에 연결하지 못했습니다. 변경 내용은 이 기기에 보관되며 재시도할 수 있습니다.",
|
||
"mobile.preferences.conflictError": "다른 기기에서 설정이 연속으로 변경되었습니다. 최신 설정을 불러온 뒤 다시 시도해주세요.",
|
||
"mobile.preferences.syncWarning": "설정 동기화가 지연되고 있습니다. 변경 내용은 이 기기에 안전하게 보관됩니다.",
|
||
"mobile.preferences.offlineSaved": "네트워크가 복구되면 이 기기의 변경 내용을 계정과 다시 동기화합니다.",
|
||
"mobile.onboarding.accessibilityScreen": "D3RO Voice 시작 튜토리얼",
|
||
"mobile.onboarding.setupLabel": "첫 실행 설정",
|
||
"mobile.onboarding.replayLabel": "튜토리얼 다시 보기",
|
||
"mobile.onboarding.languageLabel": "튜토리얼 언어",
|
||
"mobile.onboarding.accountPathLabel": "계정 시작 방식",
|
||
"mobile.onboarding.stepWelcome": "01 · 시작",
|
||
"mobile.onboarding.stepPrivacy": "02 · 개인정보와 권한",
|
||
"mobile.onboarding.stepWorkflow": "03 · 녹음에서 공유까지",
|
||
"mobile.onboarding.stepExplore": "04 · 앱 둘러보기",
|
||
"mobile.onboarding.stepPersonalize": "05 · 내 환경에 맞추기",
|
||
"mobile.onboarding.welcomeTitle": "말한 순간부터, 쓸 수 있는 기록으로",
|
||
"mobile.onboarding.welcomeBody": "D3RO Voice는 모바일 녹음과 음성 파일을 전사하고 계정의 Web·데스크톱 데이터와 연결합니다.",
|
||
"mobile.onboarding.welcomeBulletRecord": "휴대전화에서 바로 녹음하거나 저장된 음성 파일을 선택합니다.",
|
||
"mobile.onboarding.welcomeBulletSync": "같은 계정으로 로그인하면 지원되는 기록과 설정을 기기 사이에서 동기화합니다.",
|
||
"mobile.onboarding.welcomeBulletAccount": "무료 계정으로 시작하고 설정에서 요금제와 계정을 관리합니다.",
|
||
"mobile.onboarding.existingUser": "기존 사용자",
|
||
"mobile.onboarding.existingUserDesc": "사용 중인 D3RO 계정으로 로그인하고 기존 데이터를 불러옵니다.",
|
||
"mobile.onboarding.newUser": "처음 사용",
|
||
"mobile.onboarding.newUserDesc": "Google 또는 이메일로 새 계정을 만들고 첫 녹음부터 시작합니다.",
|
||
"mobile.onboarding.privacyTitle": "권한과 클라우드 처리를 먼저 확인하세요",
|
||
"mobile.onboarding.privacyBody": "앱은 기능이 필요한 순간에만 권한을 요청합니다. 전사에 필요한 오디오와 결과는 로그인한 계정 범위에서 처리됩니다.",
|
||
"mobile.onboarding.privacyBulletPermission": "마이크 권한은 녹음을 시작할 때 요청하며, 거부해도 파일 가져오기는 별도로 사용할 수 있습니다.",
|
||
"mobile.onboarding.privacyBulletCloud": "클라우드 전사를 선택하면 오디오가 D3RO의 인증된 처리 경로로 전송됩니다.",
|
||
"mobile.onboarding.privacyBulletControl": "기록, 동기화 설정과 계정 데이터는 설정 화면에서 확인하고 관리할 수 있습니다.",
|
||
"mobile.onboarding.workflowTitle": "녹음하고, 확인하고, 공유하세요",
|
||
"mobile.onboarding.workflowBody": "REC에서 시작한 작업은 처리 상태를 거쳐 HISTORY에 저장됩니다. 결과는 확인한 뒤 다른 앱으로 공유할 수 있습니다.",
|
||
"mobile.onboarding.workflowBulletRecord": "REC에서 마이크 녹음 또는 음성 파일 가져오기를 선택합니다.",
|
||
"mobile.onboarding.workflowBulletTranscribe": "처리 상태와 오류를 확인하고, 실패한 작업은 원인을 확인한 뒤 다시 시도합니다.",
|
||
"mobile.onboarding.workflowBulletShare": "완료된 전사 화면에서 텍스트나 내보낸 파일을 공유합니다.",
|
||
"mobile.onboarding.exploreTitle": "필요한 기능은 탭과 설정에 정리되어 있습니다",
|
||
"mobile.onboarding.exploreBody": "DASH는 사용 현황, HISTORY는 기록, REC는 녹음과 가져오기, TALK는 대화, SET은 계정과 동기화를 담당합니다.",
|
||
"mobile.onboarding.exploreBulletTabs": "하단 탭으로 대시보드, 기록, 녹음, 대화와 설정을 이동합니다.",
|
||
"mobile.onboarding.exploreBulletImport": "REC에서 파일을 가져오고 HISTORY에서 동기화된 결과를 확인합니다.",
|
||
"mobile.onboarding.exploreBulletPlan": "SET에서 계정, 요금제, 결제 관리와 무료 리워드를 확인합니다.",
|
||
"mobile.onboarding.personalizeTitle": "화면을 고르고 바로 시작하세요",
|
||
"mobile.onboarding.personalizeBody": "시스템·라이트·다크 테마 중 하나를 선택하세요. 로그인 뒤에는 선택한 설정이 계정에 동기화됩니다.",
|
||
"mobile.onboarding.personalizeBulletSystem": "시스템 테마는 휴대전화의 밝은 화면·어두운 화면 변경을 자동으로 따릅니다.",
|
||
"mobile.onboarding.personalizeBulletSync": "네트워크가 끊기면 이 기기에 저장하고 연결이 복구된 뒤 다시 동기화합니다.",
|
||
"mobile.onboarding.personalizeBulletReplay": "설정에서 언제든지 이 튜토리얼을 다시 볼 수 있습니다.",
|
||
"mobile.onboarding.themeLabel": "앱 테마",
|
||
"mobile.onboarding.back": "이전",
|
||
"mobile.onboarding.next": "다음",
|
||
"mobile.onboarding.skip": "튜토리얼 건너뛰기",
|
||
"mobile.onboarding.saving": "저장 중...",
|
||
"mobile.onboarding.completeExisting": "로그인으로 계속",
|
||
"mobile.onboarding.completeNew": "회원가입으로 계속",
|
||
"mobile.onboarding.backHint": "이전 안내 단계로 이동합니다.",
|
||
"mobile.onboarding.nextHint": "다음 안내 단계로 이동합니다.",
|
||
"mobile.onboarding.completeHint": "선택한 설정을 저장하고 계정 화면으로 이동합니다.",
|
||
"mobile.onboarding.skipHint": "튜토리얼을 완료로 표시하고 로그인 화면으로 이동합니다. 설정에서 다시 볼 수 있습니다.",
|
||
"mobile.login.title": "D3RO-VOICE",
|
||
"mobile.login.subtitle": "PRECISION VOICE INTELLIGENCE",
|
||
"mobile.login.google": "Google로 로그인",
|
||
"mobile.login.apple": "Apple로 로그인",
|
||
"mobile.login.github": "GitHub로 로그인",
|
||
"mobile.login.or": "또는",
|
||
"mobile.login.email": "EMAIL",
|
||
"mobile.login.password": "PASSWORD",
|
||
"mobile.login.signIn": "로그인",
|
||
"mobile.login.noAccount": "계정이 없으신가요?",
|
||
"mobile.login.forgotPassword": "비밀번호를 잊으셨나요?",
|
||
"mobile.login.signUp": "회원가입",
|
||
"mobile.login.notConfigured": "Supabase가 설정되지 않았습니다. EXPO_PUBLIC_SUPABASE_URL을 .env에 설정하세요.",
|
||
"mobile.auth.backToLogin": "로그인으로 돌아가기",
|
||
"mobile.auth.notConfigured": "인증 서버가 설정되지 않았습니다.",
|
||
"mobile.auth.errorTitle": "요청 실패",
|
||
"mobile.auth.successTitle": "완료",
|
||
"mobile.auth.emailInvalid": "올바른 이메일 주소를 입력해주세요.",
|
||
"mobile.auth.passwordMin": "비밀번호는 8자 이상이어야 합니다.",
|
||
"mobile.auth.passwordMismatch": "비밀번호가 일치하지 않습니다.",
|
||
"mobile.auth.notConfiguredTitle": "설정 필요",
|
||
"mobile.auth.loginFailedTitle": "로그인 실패",
|
||
"mobile.auth.oauthUrlFailed": "OAuth 로그인 주소를 만들지 못했습니다.",
|
||
"mobile.auth.oauthFailed": "OAuth 로그인을 완료하지 못했습니다.",
|
||
"mobile.auth.credentialsRequired": "이메일과 비밀번호를 모두 입력해주세요.",
|
||
"mobile.auth.logoutFailed": "로그아웃을 안전하게 완료하지 못했습니다. 다시 시도해주세요.",
|
||
"mobile.auth.localDataCleanupTitle": "기기 데이터 보호가 필요합니다",
|
||
"mobile.auth.localDataCleanupBody": "이전 계정의 로컬 데이터를 완전히 삭제하지 못해 로그인과 앱 사용을 차단했습니다. 다시 시도해주세요.",
|
||
"mobile.auth.localDataCleanupRetry": "보호 데이터 정리 다시 시도",
|
||
"mobile.signup.title": "CREATE ACCOUNT",
|
||
"mobile.signup.subtitle": "Google 또는 이메일로 D3RO-VOICE 계정을 만드세요",
|
||
"mobile.signup.google": "Google로 가입",
|
||
"mobile.signup.googleLoading": "Google 연결 중...",
|
||
"mobile.signup.googleHint": "Google 계정으로 안전하게 가입하거나 기존 계정으로 로그인합니다.",
|
||
"mobile.signup.orEmail": "또는 이메일로 가입",
|
||
"mobile.signup.name": "이름",
|
||
"mobile.signup.namePlaceholder": "표시할 이름",
|
||
"mobile.signup.email": "이메일",
|
||
"mobile.signup.password": "비밀번호",
|
||
"mobile.signup.confirmPassword": "비밀번호 확인",
|
||
"mobile.signup.terms": "이용약관과 개인정보 처리방침을 읽었으며 이에 동의합니다.",
|
||
"mobile.signup.termsRequired": "회원가입을 계속하려면 약관에 동의해주세요.",
|
||
"mobile.signup.nameRequired": "이름은 2자 이상 입력해주세요.",
|
||
"mobile.signup.submit": "회원가입",
|
||
"mobile.signup.alreadyAccount": "이미 계정이 있으신가요?",
|
||
"mobile.signup.signIn": "로그인",
|
||
"mobile.signup.waitingTitle": "이메일을 확인해주세요",
|
||
"mobile.signup.waitingBody": "{{email}}로 확인 메일을 보냈습니다. 메일의 링크를 열어 계정을 활성화해주세요.",
|
||
"mobile.signup.resend": "확인 메일 다시 보내기",
|
||
"mobile.signup.resendIn": "{{seconds}}초 후 다시 보내기",
|
||
"mobile.signup.resendSuccess": "확인 메일을 다시 보냈습니다.",
|
||
"mobile.signup.editEmail": "이메일 수정",
|
||
"mobile.signup.created": "계정이 생성되어 로그인되었습니다.",
|
||
"mobile.signup.existing": "이미 가입된 이메일입니다. 로그인하거나 비밀번호 찾기를 이용해주세요.",
|
||
"mobile.signup.invalidResponse": "인증 서버에서 유효한 사용자 정보를 반환하지 않았습니다.",
|
||
"mobile.forgot.title": "RESET PASSWORD",
|
||
"mobile.forgot.subtitle": "비밀번호 재설정 링크를 받으세요",
|
||
"mobile.forgot.send": "재설정 메일 보내기",
|
||
"mobile.forgot.sentTitle": "메일을 확인해주세요",
|
||
"mobile.forgot.sentBody": "계정이 존재하면 {{email}}로 비밀번호 재설정 링크가 전송됩니다.",
|
||
"mobile.forgot.resend": "재설정 메일 다시 보내기",
|
||
"mobile.updatePassword.title": "NEW PASSWORD",
|
||
"mobile.updatePassword.subtitle": "계정에 사용할 새 비밀번호를 설정하세요",
|
||
"mobile.updatePassword.newPassword": "새 비밀번호",
|
||
"mobile.updatePassword.confirmPassword": "새 비밀번호 확인",
|
||
"mobile.updatePassword.submit": "비밀번호 변경",
|
||
"mobile.updatePassword.checking": "재설정 세션을 확인하는 중입니다...",
|
||
"mobile.updatePassword.invalidLink": "유효한 재설정 세션이 없습니다. 새 재설정 메일을 요청해주세요.",
|
||
"mobile.updatePassword.completed": "비밀번호가 변경되었습니다",
|
||
"mobile.updatePassword.completedBody": "새 비밀번호를 바로 사용할 수 있습니다.",
|
||
"mobile.updatePassword.continue": "계속",
|
||
"mobile.account.title": "ACCOUNT",
|
||
"mobile.account.profile": "PROFILE",
|
||
"mobile.account.accountInfo": "ACCOUNT INFO",
|
||
"mobile.account.displayName": "표시 이름",
|
||
"mobile.account.avatarUrl": "아바타 URL",
|
||
"mobile.account.avatarPlaceholder": "https://example.com/avatar.png",
|
||
"mobile.account.locale": "언어",
|
||
"mobile.account.save": "프로필 저장",
|
||
"mobile.account.saving": "저장 중...",
|
||
"mobile.account.refresh": "다시 불러오기",
|
||
"mobile.account.loading": "프로필을 불러오는 중입니다...",
|
||
"mobile.account.nameInvalid": "표시 이름은 2자 이상 80자 이하로 입력해주세요.",
|
||
"mobile.account.avatarInvalid": "아바타 URL은 비워두거나 https:// 또는 http://로 시작해야 합니다.",
|
||
"mobile.account.email": "이메일",
|
||
"mobile.account.provider": "로그인 제공자",
|
||
"mobile.account.joinedAt": "가입일",
|
||
"mobile.account.lastLogin": "최근 로그인",
|
||
"mobile.account.tier": "구독 등급",
|
||
"mobile.account.changePassword": "비밀번호 변경",
|
||
"mobile.account.logout": "로그아웃",
|
||
"mobile.account.logoutConfirm": "이 기기에서 로그아웃할까요?",
|
||
"mobile.account.dangerZone": "DANGER ZONE",
|
||
"mobile.account.deleteWarning": "계정을 삭제하면 클라우드 데이터가 영구 삭제되며 되돌릴 수 없습니다. 이용 중인 Google Play 구독은 자동 취소되지 않으므로 Google Play에서 별도로 취소해야 합니다.",
|
||
"mobile.account.deleteAcknowledge": "삭제의 영향을 이해했습니다.",
|
||
"mobile.account.delete": "계정 삭제",
|
||
"mobile.account.deleteConfirm": "계정을 영구 삭제할까요? Google Play 구독은 별도로 취소할 때까지 계속 유지됩니다.",
|
||
"mobile.account.deleteUnavailable": "계정 삭제 서버 기능이 아직 제공되지 않습니다. 계정은 삭제되지 않았습니다.",
|
||
"mobile.account.loginRequired": "계정 정보를 보려면 로그인이 필요합니다.",
|
||
"mobile.account.profileSaved": "프로필이 서버에 저장되었습니다.",
|
||
"mobile.account.profileMissing": "서버에서 프로필 정보를 받지 못했습니다.",
|
||
"mobile.account.profileUpdateMissing": "서버에서 수정된 프로필을 받지 못했습니다.",
|
||
"mobile.account.reauthenticationRequired": "보안을 위해 다시 로그인한 후 계정 삭제를 시도해주세요.",
|
||
"mobile.account.deleteFailed": "서버에서 계정 삭제를 확정하지 못했습니다.",
|
||
"mobile.account.defaultName": "사용자",
|
||
"mobile.account.avatarPreview": "{{name}}의 프로필 사진",
|
||
"mobile.account.languageKorean": "한국어",
|
||
"mobile.account.languageEnglish": "영어",
|
||
"mobile.account.identities": "연결된 로그인 수단",
|
||
"mobile.account.identitiesHint": "로그인 수단을 연결하면 계정 접근성을 높일 수 있습니다. 이메일과 현재 로그인 수단은 여기서 해제할 수 없습니다.",
|
||
"mobile.account.identitiesLoading": "로그인 수단을 확인하는 중입니다...",
|
||
"mobile.account.identitiesUnavailable": "연결된 로그인 수단을 안전하게 확인하지 못했습니다.",
|
||
"mobile.account.identityProviderUnavailable": "이 앱에서 사용할 수 있는 OAuth 제공자가 설정되지 않았습니다.",
|
||
"mobile.account.identityConnected": "연결됨",
|
||
"mobile.account.identityEmail": "이메일",
|
||
"mobile.account.identityGoogle": "Google",
|
||
"mobile.account.identityGitHub": "GitHub",
|
||
"mobile.account.identityApple": "Apple",
|
||
"mobile.account.identityEmailProtected": "이메일 로그인은 여기서 해제할 수 없습니다.",
|
||
"mobile.account.identityLastIdentityProtected": "마지막 로그인 수단은 해제할 수 없습니다.",
|
||
"mobile.account.identityLastLoginProtected": "현재 로그인에 사용한 수단은 해제할 수 없습니다.",
|
||
"mobile.account.identityUnlink": "연결 해제",
|
||
"mobile.account.identityUnlinkProvider": "{{provider}} 연결 해제",
|
||
"mobile.account.identityUnlinkTitle": "로그인 수단 연결 해제",
|
||
"mobile.account.identityUnlinkConfirm": "{{provider}} 로그인을 이 계정에서 해제할까요? 이 작업은 되돌릴 수 없습니다.",
|
||
"mobile.account.identityLinkProvider": "{{provider}} 로그인 연결",
|
||
"mobile.account.identityLinkCancelled": "로그인 수단 연결을 취소했습니다.",
|
||
"mobile.account.identityLinkContinue": "브라우저에서 연결을 완료한 뒤 이 화면으로 돌아오세요.",
|
||
"mobile.account.identityLinked": "{{provider}} 로그인을 연결했습니다.",
|
||
"mobile.account.identityUnlinked": "{{provider}} 로그인을 해제했습니다.",
|
||
"mobile.account.identityLinkFailed": "로그인 수단 연결을 완료하지 못했습니다. 계정은 변경되지 않았습니다.",
|
||
"mobile.account.identityUnlinkFailed": "로그인 수단 연결 해제를 완료하지 못했습니다. 계정은 변경되지 않았습니다.",
|
||
"mobile.account.identityReauthenticationRequired": "보안을 위해 다시 로그인한 후 로그인 수단을 관리해주세요.",
|
||
"mobile.account.identityAccountChanged": "계정이 변경되어 요청을 취소했습니다.",
|
||
"mobile.account.identityAlreadyLinked": "이 로그인 수단은 이미 연결되어 있습니다.",
|
||
"mobile.account.identityNotFound": "연결된 로그인 수단을 찾지 못했습니다. 다시 불러와주세요.",
|
||
"mobile.account.identityRequestFailed": "로그인 수단 요청을 안전하게 완료하지 못했습니다. 계정은 변경되지 않았습니다.",
|
||
"onboarding.title": "D3RO Voice 초기 설정",
|
||
"onboarding.subtitle": "음성 어시스턴트 사용에 필요한 모델을 다운로드합니다.",
|
||
"onboarding.llmModelMissing": "AI 모델({{model}})이 설치되어 있지 않습니다.",
|
||
"onboarding.llmModelSize": "크기: 약 9.6GB — 네트워크 속도에 따라 10~30분 소요",
|
||
"onboarding.download": "다운로드 시작",
|
||
"onboarding.cancel": "나중에",
|
||
"onboarding.close": "닫기",
|
||
"onboarding.downloading": "다운로드 중…",
|
||
"onboarding.status": "상태: {{status}}",
|
||
"onboarding.success": "설치 완료! 이제 사용할 수 있습니다.",
|
||
"onboarding.failed": "다운로드 실패: {{message}}",
|
||
"onboarding.retry": "재시도",
|
||
"onboarding.statusPreparing": "다운로드 준비 중…",
|
||
"onboarding.statusVerifying": "무결성 검증 중… (모델이 크면 몇 분 걸릴 수 있어요)",
|
||
"onboarding.statusFinalizing": "마무리 중…",
|
||
"onboarding.sttModelMissing": "음성 인식 모델({{model}})이 설치되어 있지 않습니다.",
|
||
"onboarding.sttModelSize": "크기: 약 1.6GB — 네트워크 속도에 따라 2~10분 소요",
|
||
"onboarding.step": "단계 {{current}}/{{total}}",
|
||
"onboarding.progressDetail": "{{downloaded}} / {{total}} MB",
|
||
"onboarding.ollamaNotRunning": "Ollama 서버가 실행되지 않았습니다. 잠시 후 다시 시도하세요.",
|
||
"popup.commandSelect": "명령어 선택",
|
||
"popup.hints.select": "↑↓ 선택",
|
||
"popup.hints.apply": "⏎ 적용",
|
||
"popup.hints.clear": "0 해제",
|
||
"popup.hints.close": "ESC ×",
|
||
"popup.noCommands": "명령어 없음",
|
||
"popup.noCommand": "없음 (원본 삽입)",
|
||
"popup.hints.selectEn": "↑↓ Select",
|
||
"popup.hints.paste": "⏎ Paste",
|
||
"popup.noHistory": "히스토리 없음",
|
||
"popup.time.justNow": "방금",
|
||
"popup.time.minutesAgo": "{{m}}분 전",
|
||
"popup.time.hoursAgo": "{{h}}시간 전",
|
||
"popup.time.daysAgo": "{{d}}일 전",
|
||
"popup.copy": "복사",
|
||
"popup.error.default": "오류가 발생했습니다",
|
||
"popup.caption.loading": "음성 모델 준비 중…",
|
||
"mobile.paywall.title": "D3RO PRO 및 리워드",
|
||
"mobile.paywall.close": "결제 화면 닫기",
|
||
"mobile.paywall.currentPlan": "현재 요금제",
|
||
"mobile.paywall.free": "FREE",
|
||
"mobile.paywall.pro": "PRO",
|
||
"mobile.paywall.proPlus": "PRO+",
|
||
"mobile.paywall.currentCredits": "Cloud AI 추가 크레딧",
|
||
"mobile.paywall.creditsUnit": "크레딧",
|
||
"mobile.paywall.rewardTitle": "무료 티어 광고 리워드",
|
||
"mobile.paywall.rewardDescription": "광고 시청 완료 후 Google의 서명된 서버 콜백이 확인된 경우에만 50 크레딧을 지급합니다.",
|
||
"mobile.paywall.watchReward": "리워드 광고 보기",
|
||
"mobile.paywall.rewardLoading": "광고 준비 중",
|
||
"mobile.paywall.rewardShowing": "광고 재생 중",
|
||
"mobile.paywall.rewardVerifying": "서버 지급 확인 중",
|
||
"mobile.paywall.rewardCredited": "서버에서 50 크레딧 지급을 확인했습니다.",
|
||
"mobile.paywall.rewardPending": "광고 시청은 확인됐으며 서버 콜백을 기다리고 있습니다.",
|
||
"mobile.paywall.rewardClosed": "광고 시청을 완료하지 않아 크레딧이 지급되지 않았습니다.",
|
||
"mobile.paywall.rewardUnavailable": "현재 리워드 광고를 사용할 수 없습니다.",
|
||
"mobile.paywall.rewardRetry": "광고 다시 준비",
|
||
"mobile.paywall.plans": "Google Play 구독",
|
||
"mobile.paywall.storeUnavailable": "Google Play에서 판매 가능한 요금제를 불러오지 못했습니다. 가격을 임의로 표시하지 않습니다.",
|
||
"mobile.paywall.storeInstallRequired": "구매와 복원은 Google Play에서 설치한 앱에서만 사용할 수 있습니다. 사이드로드 빌드에서는 결제 요청을 보내지 않습니다.",
|
||
"mobile.paywall.storeRetry": "스토어 다시 연결",
|
||
"mobile.paywall.subscribe": "{{plan}} 구독 시작 · {{price}}",
|
||
"mobile.paywall.changePlan": "{{plan}} 요금제로 변경 · {{price}}",
|
||
"mobile.paywall.current": "현재 사용 중",
|
||
"mobile.paywall.manage": "구독 관리 및 해지",
|
||
"mobile.paywall.restore": "이전 구매 복원 및 서버 재검증",
|
||
"mobile.paywall.processing": "Google Play 처리 중",
|
||
"mobile.paywall.pending": "결제가 보류 중입니다. 승인 후 서버가 자동으로 적용합니다.",
|
||
"mobile.paywall.success": "스토어 구매와 서버 권한 동기화를 완료했습니다.",
|
||
"mobile.paywall.cancelled": "결제를 취소했습니다.",
|
||
"mobile.paywall.error": "결제를 완료하지 못했습니다. 오류 코드: {{code}}",
|
||
"mobile.paywall.billingNotice": "구독은 Google Play 계정으로 결제되며 Play의 자동 갱신 및 취소 정책이 적용됩니다. 앱은 서버에서 검증·승인된 구매만 권한으로 반영합니다.",
|
||
"mobile.paywall.terms": "이용약관",
|
||
"mobile.paywall.privacy": "개인정보 처리방침",
|
||
"mobile.paywall.proFeature1": "광고 제거",
|
||
"mobile.paywall.proFeature2": "모바일·웹·데스크톱 기록 동기화",
|
||
"mobile.paywall.proFeature3": "확장된 Cloud AI 사용량",
|
||
"mobile.paywall.proFeature4": "회의 요약 및 다국어 전사",
|
||
"mobile.paywall.proPlusFeature1": "PRO의 모든 기능",
|
||
"mobile.paywall.proPlusFeature2": "최상위 Cloud AI 사용량",
|
||
"mobile.paywall.proPlusFeature3": "우선 처리 큐",
|
||
"mobile.paywall.proPlusFeature4": "고급 화자 분리 및 분석",
|
||
"mobile.meetings.title": "회의",
|
||
"mobile.meetings.description": "동기화된 회의, 전사, 메모와 문서를 관리합니다.",
|
||
"mobile.meetings.detail": "회의 상세",
|
||
"mobile.meetings.count": "{{count}}개 회의",
|
||
"mobile.meetings.search": "회의 제목 검색",
|
||
"mobile.meetings.create": "새 회의",
|
||
"mobile.meetings.createTitle": "회의 공간 만들기",
|
||
"mobile.meetings.createNotice": "동기화되는 회의 공간을 생성합니다. 오디오 녹음은 REC 화면과 연결된 뒤 시작해야 합니다.",
|
||
"mobile.meetings.editTitle": "회의 제목 편집",
|
||
"mobile.meetings.titleLabel": "회의 제목",
|
||
"mobile.meetings.titlePlaceholder": "회의 제목을 입력하세요",
|
||
"mobile.meetings.save": "저장",
|
||
"mobile.meetings.saving": "저장 중",
|
||
"mobile.meetings.edit": "편집",
|
||
"mobile.meetings.delete": "삭제",
|
||
"mobile.meetings.deleting": "삭제 중",
|
||
"mobile.meetings.deleteTitle": "회의 삭제",
|
||
"mobile.meetings.deleteBody": "이 회의와 연결된 전사, 메모, 문서를 모두 삭제합니다. 이 작업은 되돌릴 수 없습니다.",
|
||
"mobile.meetings.retry": "다시 시도",
|
||
"mobile.meetings.reloadLatest": "최신 내용 불러오기",
|
||
"mobile.meetings.loading": "회의를 불러오는 중",
|
||
"mobile.meetings.empty": "아직 동기화된 회의가 없습니다.",
|
||
"mobile.meetings.emptySearch": "검색 조건에 맞는 회의가 없습니다.",
|
||
"mobile.meetings.untitled": "제목 없는 회의",
|
||
"mobile.meetings.personal": "개인 회의",
|
||
"mobile.meetings.team": "팀 공유 회의",
|
||
"mobile.meetings.back": "뒤로",
|
||
"mobile.meetings.duration": "길이",
|
||
"mobile.meetings.statusRecording": "녹음 중",
|
||
"mobile.meetings.statusProcessing": "처리 중",
|
||
"mobile.meetings.statusCompleted": "완료",
|
||
"mobile.meetings.statusError": "오류",
|
||
"mobile.meetings.transcript": "전사",
|
||
"mobile.meetings.transcriptEmpty": "저장된 전사가 없습니다.",
|
||
"mobile.meetings.edited": "편집됨",
|
||
"mobile.meetings.summary": "요약 및 회의록",
|
||
"mobile.meetings.summaryEmpty": "생성된 요약이나 회의록이 없습니다.",
|
||
"mobile.meetings.generationUnavailable": "회의 문서 템플릿을 선택하면 전사 내용으로 문서를 생성할 수 있습니다.",
|
||
"mobile.meetings.memos": "메모",
|
||
"mobile.meetings.memosEmpty": "저장된 메모가 없습니다.",
|
||
"mobile.meetings.memoPlaceholder": "회의 메모를 입력하세요",
|
||
"mobile.meetings.memoAdd": "메모 저장",
|
||
"mobile.meetings.memoEditTitle": "메모 편집",
|
||
"mobile.meetings.memoDeleteTitle": "메모 삭제",
|
||
"mobile.meetings.memoDeleteBody": "이 메모를 삭제하시겠습니까?",
|
||
"mobile.meetings.documents": "문서",
|
||
"mobile.meetings.documentsEmpty": "생성된 회의 문서가 없습니다.",
|
||
"mobile.meetings.documentTemplateMissing": "선택된 회의 문서 템플릿이 없습니다.",
|
||
"mobile.meetings.documentTemplateSelected": "선택된 템플릿 · {{name}}",
|
||
"mobile.meetings.manageTemplates": "템플릿 관리",
|
||
"mobile.meetings.generateDocument": "문서 생성",
|
||
"mobile.meetings.generatingDocument": "문서 생성 중",
|
||
"mobile.meetings.documentEditTitle": "문서 편집",
|
||
"mobile.meetings.documentContent": "문서 내용",
|
||
"mobile.meetings.documentDeleteTitle": "문서 삭제",
|
||
"mobile.meetings.documentDeleteBody": "이 문서를 삭제하시겠습니까?",
|
||
"mobile.meetings.realtimeWaiting": "실시간 연결을 기다리는 중입니다. 아래로 당겨 서버 상태를 다시 확인할 수 있습니다.",
|
||
"mobile.meetings.conflictNotice": "다른 기기에서 내용이 변경됐습니다. 편집 창을 닫고 최신 내용을 불러온 뒤 다시 시도하세요.",
|
||
"mobile.meetings.loginRequired": "회의를 보려면 로그인해야 합니다.",
|
||
"mobile.meetings.errorConflict": "다른 기기에서 내용이 변경되거나 삭제됐습니다.",
|
||
"mobile.meetings.errorForbidden": "이 항목을 변경할 권한이 없습니다.",
|
||
"mobile.meetings.errorNetwork": "네트워크 연결을 확인하고 다시 시도하세요.",
|
||
"mobile.meetings.errorNotFound": "회의를 찾을 수 없거나 접근 권한이 없습니다.",
|
||
"mobile.meetings.errorValidation": "입력 내용을 확인하세요. 제목은 1~160자, 메모는 1~4000자여야 합니다.",
|
||
"mobile.meetings.errorServer": "회의 요청을 완료하지 못했습니다.",
|
||
"mobile.meetings.recordNow": "이 회의 녹음",
|
||
"mobile.meetings.recordAgain": "다시 녹음",
|
||
"mobile.meetings.processingAudio": "오디오 처리 중",
|
||
"mobile.meetings.export": "회의 내보내기",
|
||
"mobile.meetings.exportDescription": "전사, 회의록, 메모와 문서를 휴대 가능한 회의 파일로 공유합니다.",
|
||
"mobile.meetings.exportMarkdown": "MARKDOWN 공유",
|
||
"mobile.meetings.exportText": "텍스트 공유",
|
||
"mobile.meetings.exportPdf": "PDF 공유",
|
||
"mobile.meetings.exportDocx": "DOCX 공유",
|
||
"mobile.meetings.exporting": "준비 중...",
|
||
"mobile.meetings.exportShareTitle": "D3RO 회의 공유",
|
||
"mobile.meetings.exportFailed": "회의 내보내기 파일을 만들거나 공유할 수 없습니다.",
|
||
"common.retry": "다시 시도",
|
||
"common.saving": "저장 중",
|
||
"mobile.teams.title": "팀",
|
||
"mobile.teams.description": "팀 멤버, 초대와 공유 회의를 안전하게 관리합니다.",
|
||
"mobile.teams.detailTitle": "팀 상세",
|
||
"mobile.teams.create": "새 팀",
|
||
"mobile.teams.creating": "생성 중",
|
||
"mobile.teams.createTitle": "새 팀 만들기",
|
||
"mobile.teams.nameLabel": "팀 이름",
|
||
"mobile.teams.namePlaceholder": "팀 이름을 입력하세요",
|
||
"mobile.teams.loading": "팀을 불러오는 중",
|
||
"mobile.teams.empty": "가입한 팀이 없습니다. 새 팀을 만들거나 초대 링크를 열어보세요.",
|
||
"mobile.teams.openLabel": "{{name}} 팀 열기",
|
||
"mobile.teams.memberCount": "멤버 {{count}}명",
|
||
"mobile.teams.role.owner": "소유자",
|
||
"mobile.teams.role.admin": "관리자",
|
||
"mobile.teams.role.member": "멤버",
|
||
"mobile.teams.members": "멤버",
|
||
"mobile.teams.you": "(나)",
|
||
"mobile.teams.unnamedMember": "이름 없는 멤버",
|
||
"mobile.teams.invite": "멤버 초대",
|
||
"mobile.teams.inviteTitle": "멤버 초대",
|
||
"mobile.teams.emailLabel": "초대 이메일",
|
||
"mobile.teams.emailPlaceholder": "member@example.com",
|
||
"mobile.teams.adminInviteOwnerOnly": "관리자 초대는 팀 소유자만 만들 수 있습니다.",
|
||
"mobile.teams.createInvite": "초대 만들기",
|
||
"mobile.teams.inviteCreated": "초대 링크가 생성되었습니다.",
|
||
"mobile.teams.emailSent": "초대 이메일도 발송되었습니다.",
|
||
"mobile.teams.shareManually": "메일 발송이 설정되지 않았습니다. 아래 공유 버튼으로 링크를 전달하세요.",
|
||
"mobile.teams.share": "초대 링크 공유",
|
||
"mobile.teams.inviteShareTitle": "{{team}} 팀 초대",
|
||
"mobile.teams.inviteShareMessage": "{{team}} 팀에 초대합니다. 이 링크에서 초대를 수락하세요: {{url}}",
|
||
"mobile.teams.pendingInvites": "대기 중인 초대",
|
||
"mobile.teams.noPendingInvites": "대기 중인 초대가 없습니다.",
|
||
"mobile.teams.expires": "{{time}} 만료",
|
||
"mobile.teams.expired": "만료됨",
|
||
"mobile.teams.cancelInvite": "초대 취소",
|
||
"mobile.teams.makeAdmin": "관리자로 변경",
|
||
"mobile.teams.makeMember": "멤버로 변경",
|
||
"mobile.teams.remove": "내보내기",
|
||
"mobile.teams.removeTitle": "팀 멤버 내보내기",
|
||
"mobile.teams.removeBody": "{{name}} 님을 팀에서 내보내시겠습니까?",
|
||
"mobile.teams.sharedMeetings": "공유 회의",
|
||
"mobile.teams.noSharedMeetings": "팀과 공유된 회의가 없습니다.",
|
||
"mobile.teams.management": "팀 관리",
|
||
"mobile.teams.rename": "팀 이름 변경",
|
||
"mobile.teams.renameTitle": "팀 이름 변경",
|
||
"mobile.teams.leave": "팀 나가기",
|
||
"mobile.teams.leaving": "나가는 중",
|
||
"mobile.teams.leaveTitle": "팀 나가기",
|
||
"mobile.teams.leaveBody": "팀에서 나가면 공유 회의와 팀 자료에 접근할 수 없습니다.",
|
||
"mobile.teams.delete": "팀 삭제",
|
||
"mobile.teams.deleting": "삭제 중",
|
||
"mobile.teams.deleteTitle": "팀 영구 삭제",
|
||
"mobile.teams.deleteBody": "팀과 초대, 멤버 연결을 영구 삭제합니다. 공유 회의의 팀 연결도 해제됩니다. 이 작업은 되돌릴 수 없습니다.",
|
||
"mobile.teams.realtimeWaiting": "실시간 동기화 연결을 기다리는 중입니다. 아래로 당겨 최신 상태를 확인할 수 있습니다.",
|
||
"mobile.teams.activity": "활동",
|
||
"mobile.teams.activityPlaceholder": "팀에 메모를 남겨보세요...",
|
||
"mobile.teams.post": "등록",
|
||
"mobile.teams.posting": "등록 중...",
|
||
"mobile.teams.noActivity": "아직 활동이 없습니다.",
|
||
"mobile.teams.system": "시스템",
|
||
"mobile.teams.acceptTitle": "팀 초대",
|
||
"mobile.teams.inviteLoading": "초대 링크를 확인하는 중",
|
||
"mobile.teams.loginToAccept": "이 초대를 수락하려면 먼저 로그인하세요.",
|
||
"mobile.teams.inviteSavedSecurely": "로그인 뒤 이어갈 수 있도록 초대 정보를 이 기기에 안전하게 보관했습니다.",
|
||
"mobile.teams.acceptDescription": "초대를 수락하면 해당 팀의 공유 자료에 접근할 수 있습니다.",
|
||
"mobile.teams.acceptingAs": "현재 계정: {{email}}",
|
||
"mobile.teams.unknownAccount": "이메일 없음",
|
||
"mobile.teams.accept": "초대 수락",
|
||
"mobile.teams.accepting": "초대를 수락하는 중",
|
||
"mobile.teams.accepted": "{{role}} 역할로 팀에 가입했습니다.",
|
||
"mobile.teams.alreadyMember": "이미 이 팀의 멤버입니다.",
|
||
"mobile.teams.openTeam": "팀 열기",
|
||
"mobile.teams.wrongAccountHint": "현재 {{email}} 계정과 초대 대상 이메일이 다릅니다. 로그아웃 후 초대받은 계정으로 다시 로그인하세요.",
|
||
"mobile.teams.error.auth": "팀 기능을 사용하려면 로그인해야 합니다.",
|
||
"mobile.teams.error.conflict": "다른 기기에서 팀이 변경되었습니다. 최신 상태를 불러온 뒤 다시 시도하세요.",
|
||
"mobile.teams.error.duplicate": "이미 가입했거나 같은 이메일의 유효한 초대가 있습니다.",
|
||
"mobile.teams.error.emailMismatch": "이 초대는 현재 로그인한 계정으로 수락할 수 없습니다.",
|
||
"mobile.teams.error.expired": "이 초대 링크는 만료되었습니다. 팀 관리자에게 새 초대를 요청하세요.",
|
||
"mobile.teams.error.forbidden": "이 팀 작업을 수행할 권한이 없습니다.",
|
||
"mobile.teams.error.invalidToken": "유효하지 않은 팀 초대 링크입니다.",
|
||
"mobile.teams.error.network": "네트워크 연결을 확인하고 다시 시도하세요.",
|
||
"mobile.teams.error.notFound": "팀 또는 초대를 찾을 수 없거나 접근 권한이 없습니다.",
|
||
"mobile.teams.error.rateLimited": "초대를 너무 많이 만들었습니다. 잠시 후 다시 시도하세요.",
|
||
"mobile.teams.error.serverContract": "팀 서버 기능이 아직 배포되지 않았습니다. 임의로 성공 처리하지 않습니다.",
|
||
"mobile.teams.error.validation": "입력 내용을 확인하세요. 팀 이름은 1~80자이며 올바른 이메일이 필요합니다.",
|
||
"mobile.teams.error.server": "팀 요청을 완료하지 못했습니다.",
|
||
"mobile.notifications.title": "알림",
|
||
"mobile.notifications.description": "이 기기의 보안 알림 권한과 서버 등록 상태를 관리합니다.",
|
||
"mobile.notifications.delivery": "알림 전달",
|
||
"mobile.notifications.statusRegistered": "등록됨",
|
||
"mobile.notifications.statusConfigurationRequired": "서버 구성 필요",
|
||
"mobile.notifications.statusPermissionRequired": "권한 필요",
|
||
"mobile.notifications.statusBlocked": "시스템에서 차단됨",
|
||
"mobile.notifications.statusNotRegistered": "등록 대기",
|
||
"mobile.notifications.firebaseConfigured": "Firebase Cloud Messaging 구성이 확인되었습니다. 등록 ID는 현재 기기와 계정에만 연결됩니다.",
|
||
"mobile.notifications.firebaseMissing": "Firebase Android 구성 파일이 없어 실제 푸시 등록을 중단했습니다. 개발용 가짜 토큰이나 가짜 수신은 사용하지 않습니다.",
|
||
"mobile.notifications.fullSyncRequired": "기기가 오프라인인 동안 일부 메시지가 유실됐을 수 있습니다. 기록, 팀과 구독 상태를 서버에서 전체 동기화해야 합니다.",
|
||
"mobile.notifications.allow": "알림 허용",
|
||
"mobile.notifications.requestingPermission": "권한 요청 중",
|
||
"mobile.notifications.openSettings": "시스템 설정 열기",
|
||
"mobile.notifications.register": "이 기기 등록",
|
||
"mobile.notifications.registering": "등록 중",
|
||
"mobile.notifications.registeredAt": "마지막 서버 등록 {{time}}",
|
||
"mobile.notifications.privacyTitle": "개인정보 보호",
|
||
"mobile.notifications.privacyBody": "푸시에는 전사 내용, 팀 이름, 결제 상태 원문을 넣지 않습니다. 서버가 허용한 이벤트와 내부 화면 식별자만 받고 앱이 형식을 다시 검증합니다.",
|
||
"mobile.notifications.recentTitle": "이번 실행에서 받은 알림",
|
||
"mobile.notifications.recentEmpty": "앱을 연 뒤 받은 알림이 없습니다.",
|
||
"mobile.notifications.recentSessionOnly": "민감한 알림 내용을 별도 보관하지 않기 위해 이 목록은 앱을 닫으면 지워집니다.",
|
||
"mobile.notifications.event.transcription": "전사가 완료되었습니다",
|
||
"mobile.notifications.event.teamInvite": "새 팀 초대가 도착했습니다",
|
||
"mobile.notifications.event.billing": "구독 상태가 변경되었습니다",
|
||
"mobile.notifications.error.native": "기기의 알림 서비스가 올바른 데이터를 반환하지 않았습니다.",
|
||
"mobile.notifications.error.server-contract": "보안 푸시 등록 서버 기능이 배포되지 않았습니다.",
|
||
"mobile.notifications.error.server": "알림 등록 상태를 확인하지 못했습니다.",
|
||
"mobile.portability.title": "데이터 가져오기·내보내기",
|
||
"mobile.portability.description": "원본 오디오와 인증 정보를 제외한 계정 데이터를 다운로드·복원·공유합니다.",
|
||
"mobile.portability.securityTitle": "안전한 복원 원칙",
|
||
"mobile.portability.securityBody": "모든 보관 파일은 버전·소유자·SHA-256을 서버에서 다시 검증합니다. 복원은 없는 행만 만들며 클라우드 revision 충돌이 하나라도 있으면 전체를 되돌립니다.",
|
||
"mobile.portability.exportTitle": "계정 데이터 내보내기",
|
||
"mobile.portability.exportJson": "전체 JSON 보관 파일 공유",
|
||
"mobile.portability.exportDictionaryCsv": "사전 CSV 공유",
|
||
"mobile.portability.exportDictionaryTxt": "사전 TXT 공유",
|
||
"mobile.portability.exportHistoryCsv": "히스토리 CSV 공유",
|
||
"mobile.portability.exportSummaryTxt": "계정 요약 공유",
|
||
"mobile.portability.importTitle": "파일에서 클라우드 복원",
|
||
"mobile.portability.importBody": "D3RO JSON, 데스크톱 사전 JSON·CSV·TXT, 일반 TXT, 데스크톱 회의 Markdown을 지원합니다. 다른 계정 파일과 손상 파일은 쓰기 전에 거부합니다.",
|
||
"mobile.portability.importFile": "파일 선택 후 복원",
|
||
"mobile.portability.working": "서버에서 검증 중",
|
||
"mobile.portability.loginRequired": "계정 데이터를 내보내거나 복원하려면 로그인하세요.",
|
||
"mobile.portability.exportSuccess": "{{count}}개 행의 내보내기를 준비했습니다.",
|
||
"mobile.portability.importSuccess": "{{imported}}개 행을 복원하고 안전한 중복 {{skipped}}개를 건너뛰었습니다.",
|
||
"mobile.portability.importDuplicate": "같은 보관 파일을 이미 복원했습니다. 변경된 행이 없습니다.",
|
||
"mobile.portability.exclusions": "제외 항목: 원본 오디오, Storage 객체, 결제 인증 정보, 푸시 토큰.",
|
||
"mobile.portability.error.auth": "현재 세션과 계정이 일치하지 않습니다. 다시 로그인하세요.",
|
||
"mobile.portability.error.cancelled": "파일 선택을 취소했습니다.",
|
||
"mobile.portability.error.checksum": "파일 체크섬이 올바르지 않아 아무 데이터도 복원하지 않았습니다.",
|
||
"mobile.portability.error.conflict": "클라우드 데이터가 변경됐거나 보관 파일과 다릅니다. 전체 복원을 되돌렸습니다.",
|
||
"mobile.portability.error.file": "파일을 안전하게 읽거나 공유하지 못했습니다.",
|
||
"mobile.portability.error.format": "선택한 파일의 형식이나 스키마가 올바르지 않습니다.",
|
||
"mobile.portability.error.network": "인터넷에 연결한 뒤 다시 시도하세요. 오프라인에서는 클라우드에 쓰지 않습니다.",
|
||
"mobile.portability.error.owner": "이 파일은 다른 계정의 데이터입니다.",
|
||
"mobile.portability.error.server": "서버에서 데이터 가져오기·내보내기를 완료하지 못했습니다.",
|
||
"mobile.portability.error.size": "선택한 파일이 안전한 크기 또는 행 제한을 초과했습니다.",
|
||
"mobile.meetings.attendeesLabel": "참석자",
|
||
"mobile.meetings.attendeesPlaceholder": "참석자 이름 또는 이메일을 한 줄에 하나씩 입력",
|
||
"mobile.meetings.attendeesHint": "쉼표나 줄바꿈으로 구분하며 최대 50명까지 저장합니다.",
|
||
"mobile.meetings.languageLabel": "회의 언어",
|
||
"mobile.meetings.language.ko": "한국어",
|
||
"mobile.meetings.language.en": "영어",
|
||
"mobile.meetings.language.ja": "일본어",
|
||
"mobile.meetings.language.zh-cn": "중국어",
|
||
"mobile.meetings.templateLabel": "회의 문서 템플릿",
|
||
"mobile.meetings.templateLoading": "템플릿을 동기화하는 중",
|
||
"mobile.meetings.templateEmpty": "사용 가능한 회의 문서 템플릿이 없습니다. 템플릿 없이 회의를 시작할 수 있습니다.",
|
||
"mobile.meetings.templateLoadError": "회의 문서 템플릿을 불러오지 못했습니다.",
|
||
"mobile.meetings.templateCustom": "사용자 템플릿",
|
||
"mobile.templates.title": "템플릿",
|
||
"mobile.templates.description": "음성 입력과 회의 문서 형식을 모든 기기에서 동기화합니다.",
|
||
"mobile.templates.kind.dictation": "음성 입력",
|
||
"mobile.templates.kind.meetingDocument": "회의 문서",
|
||
"mobile.templates.search": "템플릿 검색",
|
||
"mobile.templates.add": "새 템플릿",
|
||
"mobile.templates.addTitle": "템플릿 만들기",
|
||
"mobile.templates.editTitle": "템플릿 수정",
|
||
"mobile.templates.name": "이름",
|
||
"mobile.templates.descriptionLabel": "설명",
|
||
"mobile.templates.fields": "입력 필드",
|
||
"mobile.templates.fieldNumber": "필드 {{number}}",
|
||
"mobile.templates.fieldId": "필드 키",
|
||
"mobile.templates.fieldLabel": "표시 이름",
|
||
"mobile.templates.fieldPrompt": "음성 안내 문구",
|
||
"mobile.templates.required": "필수 입력",
|
||
"mobile.templates.durationSeconds": "최대 초",
|
||
"mobile.templates.addField": "필드 추가",
|
||
"mobile.templates.removeField": "필드 제거",
|
||
"mobile.templates.outputFormat": "출력 형식 · {{field_key}}를 사용하세요",
|
||
"mobile.templates.systemPrompt": "문서 생성 지침",
|
||
"mobile.templates.builtin": "기본",
|
||
"mobile.templates.selected": "선택됨",
|
||
"mobile.templates.select": "선택",
|
||
"mobile.templates.selecting": "선택 중",
|
||
"mobile.templates.edit": "수정",
|
||
"mobile.templates.delete": "삭제",
|
||
"mobile.templates.deleteTitle": "템플릿 삭제",
|
||
"mobile.templates.deleteBody": "‘{{name}}’ 템플릿을 삭제할까요? 선택 중인 템플릿이면 안전한 기본 템플릿으로 돌아갑니다.",
|
||
"mobile.templates.fieldCount": "입력 필드 {{count}}개",
|
||
"mobile.templates.documentType": "문서 유형 · {{type}}",
|
||
"mobile.templates.loading": "클라우드 템플릿을 불러오는 중",
|
||
"mobile.templates.saving": "저장 중",
|
||
"mobile.templates.empty": "이 유형의 템플릿이 없습니다.",
|
||
"mobile.templates.emptySearch": "검색 조건과 일치하는 템플릿이 없습니다.",
|
||
"mobile.templates.realtimeWaiting": "실시간 동기화를 기다리는 중입니다. 아래로 당겨 서버 상태를 다시 확인할 수 있습니다.",
|
||
"mobile.templates.error.auth": "템플릿을 사용하려면 로그인하세요.",
|
||
"mobile.templates.error.builtin": "기본 템플릿은 수정하거나 삭제할 수 없습니다.",
|
||
"mobile.templates.error.conflict": "다른 기기에서 템플릿이 변경됐습니다. 최신 내용을 다시 불러왔는지 확인하세요.",
|
||
"mobile.templates.error.forbidden": "이 템플릿 작업을 수행할 권한이 없습니다.",
|
||
"mobile.templates.error.inProgress": "같은 문서 생성 요청이 이미 처리 중입니다.",
|
||
"mobile.templates.error.network": "네트워크 연결을 확인한 뒤 다시 시도하세요.",
|
||
"mobile.templates.error.notFound": "템플릿 또는 회의를 찾을 수 없거나 접근할 수 없습니다.",
|
||
"mobile.templates.error.provider": "문서 생성 서비스가 응답하지 않았습니다. 결과는 저장하거나 사용량으로 기록하지 않았습니다.",
|
||
"mobile.templates.error.quota": "오늘 사용할 수 있는 문서 생성 횟수를 모두 사용했습니다.",
|
||
"mobile.templates.error.validation": "이름, 필드, 출력 형식 또는 생성 지침을 확인하세요.",
|
||
"mobile.templates.error.server": "템플릿 작업을 완료하지 못했습니다.",
|
||
"mobile.memos.title": "메모 태그",
|
||
"mobile.memos.description": "히스토리를 태그로 정리하고 검색하거나 안전하게 공유합니다.",
|
||
"mobile.memos.search": "내용, 제목 또는 태그 검색",
|
||
"mobile.memos.allTags": "모든 태그",
|
||
"mobile.memos.tags": "메모 태그",
|
||
"mobile.memos.addTag": "태그 추가",
|
||
"mobile.memos.tagPlaceholder": "태그 이름",
|
||
"mobile.memos.removeTagLabel": "{{tag}} 태그 제거",
|
||
"mobile.memos.renameTagLabel": "{{tag}} 태그 이름 변경",
|
||
"mobile.memos.renameTitle": "태그 이름 변경",
|
||
"mobile.memos.renameBody": "‘{{tag}}’ 태그를 사용하는 내 모든 히스토리에 새 이름을 적용합니다. 중복 태그는 하나로 합칩니다.",
|
||
"mobile.memos.share": "공유",
|
||
"mobile.memos.shareTitle": "D3RO Voice 메모",
|
||
"mobile.memos.untitled": "제목 없는 메모",
|
||
"mobile.memos.loading": "메모 태그를 동기화하는 중",
|
||
"mobile.memos.saving": "저장 중",
|
||
"mobile.memos.empty": "태그를 붙일 히스토리가 없습니다.",
|
||
"mobile.memos.emptySearch": "검색 또는 태그 조건과 일치하는 메모가 없습니다.",
|
||
"mobile.memos.realtimeWaiting": "실시간 태그 동기화를 기다리는 중입니다. 아래로 당겨 최신 상태를 확인하세요.",
|
||
"mobile.memos.error.auth": "메모 태그를 사용하려면 로그인하세요.",
|
||
"mobile.memos.error.conflict": "다른 기기에서 태그가 변경됐습니다. 최신 상태를 불러온 뒤 다시 시도하세요.",
|
||
"mobile.memos.error.network": "네트워크 연결을 확인한 뒤 다시 시도하세요.",
|
||
"mobile.memos.error.notFound": "히스토리 또는 태그를 찾을 수 없습니다.",
|
||
"mobile.memos.error.validation": "태그는 공백을 제외하고 1~80자로 입력하세요.",
|
||
"mobile.memos.error.server": "메모 태그 작업 또는 공유를 완료하지 못했습니다.",
|
||
"mobile.admin.title": "모바일 관리자",
|
||
"mobile.admin.description": "현재 서버 역할: {{role}} · 모든 조회와 변경 권한을 서버에서 다시 확인합니다.",
|
||
"mobile.admin.forbiddenTitle": "관리자 권한이 없습니다",
|
||
"mobile.admin.forbiddenBody": "현재 계정의 서버 역할이 관리자 범위가 아닙니다. 권한이 변경됐다면 다시 로그인하세요.",
|
||
"mobile.admin.tab.users": "사용자",
|
||
"mobile.admin.tab.subscriptions": "구독",
|
||
"mobile.admin.tab.audit": "감사 로그",
|
||
"mobile.admin.searchUsers": "이름 또는 사용자 ID 검색",
|
||
"mobile.admin.loading": "서버에서 관리자 데이터를 확인하는 중",
|
||
"mobile.admin.empty": "표시할 실제 서버 데이터가 없습니다.",
|
||
"mobile.admin.loadingMore": "추가 항목 확인 중",
|
||
"mobile.admin.loadMore": "더 불러오기",
|
||
"mobile.admin.unnamedUser": "이름 없는 사용자",
|
||
"mobile.admin.userMeta": "{{tier}} · 가입 {{date}}",
|
||
"mobile.admin.userDetail": "사용자 관리",
|
||
"mobile.admin.accountSection": "계정",
|
||
"mobile.admin.name": "이름",
|
||
"mobile.admin.email": "이메일",
|
||
"mobile.admin.roleLabel": "역할",
|
||
"mobile.admin.locale": "언어",
|
||
"mobile.admin.createdAt": "가입 일시",
|
||
"mobile.admin.lastSignIn": "최근 로그인",
|
||
"mobile.admin.changeRole": "역할 변경",
|
||
"mobile.admin.subscriptionSection": "구독",
|
||
"mobile.admin.noSubscription": "활성 구독 행이 없습니다.",
|
||
"mobile.admin.tierLabel": "등급",
|
||
"mobile.admin.statusLabel": "상태",
|
||
"mobile.admin.provider": "결제 제공자",
|
||
"mobile.admin.overageCredits": "추가 크레딧",
|
||
"mobile.admin.periodEnd": "현재 기간 종료",
|
||
"mobile.admin.adminNote": "관리 메모",
|
||
"mobile.admin.createSubscription": "구독 만들기",
|
||
"mobile.admin.editSubscription": "구독 수정",
|
||
"mobile.admin.deleteSubscription": "구독 삭제",
|
||
"mobile.admin.paymentSection": "결제 감사 원장",
|
||
"mobile.admin.liveProviderUnavailable": "실시간 결제사 원문 조회는 안전한 서버 계약이 없어 제공하지 않습니다. 검증된 내부 이벤트와 작업 원장만 표시합니다.",
|
||
"mobile.admin.providerOperations": "결제 작업",
|
||
"mobile.admin.providerEvents": "결제 이벤트",
|
||
"mobile.admin.noPaymentEvents": "기록된 결제 항목이 없습니다.",
|
||
"mobile.admin.auditSection": "변경 감사",
|
||
"mobile.admin.noAudit": "기록된 관리자 변경이 없습니다.",
|
||
"mobile.admin.deleteSubscriptionWarning": "이 사용자의 구독 행과 연결된 등급을 원자적으로 제거합니다.",
|
||
"mobile.admin.mutationWarning": "이 작업은 서버에서 현재 권한을 다시 확인하고 감사 로그에 기록합니다.",
|
||
"mobile.admin.periodEndInput": "기간 종료(ISO 날짜, 선택)",
|
||
"mobile.admin.periodEndUpdateHint": "기존 날짜를 유지하려면 현재 값을 그대로 두세요. 이 서버 계약에서는 날짜만 단독으로 지울 수 없습니다.",
|
||
"mobile.admin.memo": "변경 사유(필수, 3자 이상)",
|
||
"mobile.admin.retrySameOperation": "응답을 받지 못한 작업은 같은 멱등 키로만 재시도합니다. 입력을 바꾸려면 닫고 새 작업을 시작하세요.",
|
||
"mobile.admin.closeFailedOperation": "이 오류는 안전하게 재시도할 수 없습니다. 닫은 뒤 최신 상태를 다시 확인하고 새 작업을 시작하세요.",
|
||
"mobile.admin.saving": "서버에서 원자적으로 적용 중",
|
||
"mobile.admin.confirmMutation": "확인하고 적용",
|
||
"mobile.admin.role.user": "사용자",
|
||
"mobile.admin.role.manager": "매니저",
|
||
"mobile.admin.role.admin": "관리자",
|
||
"mobile.admin.role.super_admin": "최고 관리자",
|
||
"mobile.admin.tier.free": "FREE",
|
||
"mobile.admin.tier.pro": "PRO",
|
||
"mobile.admin.tier.pro_plus": "PRO+",
|
||
"mobile.admin.status.active": "활성",
|
||
"mobile.admin.status.canceled": "취소됨",
|
||
"mobile.admin.status.past_due": "결제 지연",
|
||
"mobile.admin.status.expired": "만료됨",
|
||
"mobile.admin.error.auth": "관리자 세션을 확인할 수 없습니다. 다시 로그인하세요.",
|
||
"mobile.admin.error.forbidden": "서버가 현재 관리자 권한을 거부했습니다.",
|
||
"mobile.admin.error.notFound": "대상 사용자 또는 구독을 찾을 수 없습니다.",
|
||
"mobile.admin.error.conflict": "다른 관리자 작업과 충돌했거나 같은 멱등 키에 다른 요청이 사용됐습니다. 최신 상태를 확인하세요.",
|
||
"mobile.admin.error.validation": "입력값, 변경 사유 또는 기간 형식을 확인하세요.",
|
||
"mobile.admin.error.network": "네트워크 연결을 확인한 뒤 같은 작업을 다시 시도하세요.",
|
||
"mobile.admin.error.timeout": "서버 응답 시간이 초과됐습니다. 같은 멱등 키로 다시 시도할 수 있습니다.",
|
||
"mobile.admin.error.unavailable": "이 관리자 기능의 안전한 서버 계약이 아직 배포되지 않았습니다.",
|
||
"mobile.admin.error.server": "서버 응답을 안전하게 검증하지 못해 작업을 중단했습니다.",
|
||
"mobile.works.title": "WORKS",
|
||
"mobile.works.count": "기능 {{count}}개",
|
||
"mobile.works.searchPlaceholder": "기능 검색",
|
||
"mobile.works.pinned": "고정",
|
||
"mobile.works.pin": "고정",
|
||
"mobile.works.unpin": "고정 해제",
|
||
"mobile.works.emptySearch": "조건에 맞는 기능이 없습니다.",
|
||
"mobile.works.section.meetings": "회의 작업",
|
||
"mobile.works.section.team": "팀 · 지식",
|
||
"mobile.works.section.data": "데이터 · 알림",
|
||
"mobile.works.historyDescription": "녹음과 가져오기의 전사 기록을 검색하고 관리합니다.",
|
||
"mobile.meetings.templateNone": "템플릿 없이 시작",
|
||
"mobile.meetings.templateNoneDesc": "문서 생성 시점에 템플릿을 선택합니다",
|
||
"keybinding.mouse.left": "마우스 왼쪽 버튼",
|
||
"keybinding.mouse.right": "마우스 오른쪽 버튼",
|
||
"keybinding.mouse.middle": "마우스 가운데 버튼",
|
||
"keybinding.mouse.back": "마우스 뒤로 버튼",
|
||
"keybinding.mouse.forward": "마우스 앞으로 버튼",
|
||
"keybinding.group.mouse": "마우스",
|
||
"keybinding.group.modifier": "조합키",
|
||
"keybinding.group.function": "기능키",
|
||
"keybinding.group.letter": "문자",
|
||
"keybinding.group.digit": "숫자",
|
||
"keybinding.group.numpad": "숫자패드",
|
||
"keybinding.group.navigation": "탐색",
|
||
"keybinding.group.editing": "편집",
|
||
"keybinding.group.punctuation": "기호",
|
||
"keybinding.group.system": "시스템",
|
||
"keybinding.action.dictation": "받아쓰기",
|
||
"keybinding.action.dictation.desc": "누르고 있는 동안 녹음합니다.",
|
||
"keybinding.action.handsFree": "원터치 모드",
|
||
"keybinding.action.handsFree.desc": "두 번 눌러 토글합니다.",
|
||
"keybinding.action.command": "음성 명령어",
|
||
"keybinding.action.command.desc": "음성으로 명령을 실행합니다.",
|
||
"keybinding.action.caption": "실시간 자막",
|
||
"keybinding.action.caption.desc": "실시간 자막을 켜고 끕니다.",
|
||
"keybinding.action.historyPopup": "기록 팝업",
|
||
"keybinding.action.historyPopup.desc": "기록 팝업을 엽니다.",
|
||
"keybinding.action.commandPopup": "명령어 팝업",
|
||
"keybinding.action.commandPopup.desc": "명령어 팝업을 엽니다.",
|
||
"keybinding.reject.unknownKey": "지원하지 않는 키입니다",
|
||
"keybinding.reject.systemReserved": "시스템 예약 단축키입니다",
|
||
"keybinding.reject.modifierRequired": "조합키(Ctrl/Alt/Shift)와 함께 사용해야 합니다",
|
||
"keybinding.disabled.mouseLeft": "왼쪽 클릭은 모든 화면 조작에 쓰이므로 바인딩할 수 없습니다",
|
||
"keybinding.warning.mousePassthrough": "마우스 버튼은 원래 동작도 함께 실행됩니다",
|
||
"keybinding.ui.add": "추가",
|
||
"keybinding.ui.remove": "삭제",
|
||
"keybinding.ui.reset": "기본값으로",
|
||
"keybinding.ui.tabRecord": "직접 입력",
|
||
"keybinding.ui.tabList": "목록에서 선택",
|
||
"keybinding.ui.search": "키 검색",
|
||
"keybinding.ui.searchEmpty": "검색 결과가 없습니다",
|
||
"keybinding.ui.pressKeys": "원하는 키 또는 마우스 버튼을 누르세요",
|
||
"keybinding.ui.noBindings": "설정된 단축키 없음",
|
||
"keybinding.ui.conflictWith": "{{action}}와(과) 중복됩니다",
|
||
"keybinding.ui.modifiers": "조합키",
|
||
"keybinding.ui.selectedKey": "선택한 키",
|
||
"keybinding.ui.sectionVoice": "음성",
|
||
"keybinding.ui.sectionWindow": "창 / 팝업",
|
||
"keybinding.ui.duplicate": "이미 추가된 단축키입니다",
|
||
"keybinding.ui.holdMode": "누름 유지",
|
||
"keybinding.ui.doublePress": "두 번 누름",
|
||
"keybinding.ui.pickerTitle": "단축키 설정",
|
||
"keybinding.ui.pressToRecord": "눌러 녹음 시작",
|
||
"keybinding.ui.recordHint": "조합키(예: Ctrl+Shift+Q) 또는 단일키(예: F5)를 입력하세요",
|
||
"keybinding.ui.recordAgain": "다시 입력",
|
||
"keybinding.ui.saveFailed": "단축키를 저장하지 못했습니다",
|
||
"keybinding.ui.globalEnabled": "전역 단축키 사용",
|
||
"input.tab": "입력",
|
||
"input.consent.title": "입력 데이터 수집",
|
||
"input.consent.description": "선택 사항입니다. 키 입력과 클릭 횟수, 마우스 이동 거리를 세어 자신의 입력 패턴을 보여니다. 어떤 키를 눌렀는지는 저장하지 않습니다.",
|
||
"input.consent.collect": "키보드·마우스 통계 수집",
|
||
"input.consent.running": "수집 중입니다.",
|
||
"input.consent.stopped": "수집이 꺼져 있습니다. 아무것도 기록하지 않습니다.",
|
||
"input.consent.pause": "수집 일시정지",
|
||
"input.consent.learnText": "내가 친 텍스트 학습",
|
||
"input.consent.learnTextHint": "포커스된 입력창을 읽어 문장 습관을 학습합니다. 비밀번호 필드는 항상 건너뜁니다.",
|
||
"input.consent.excludedApps": "제외할 앱",
|
||
"input.consent.excludedAppsPlaceholder": "keepassxc.exe, 1password.exe",
|
||
"input.consent.excludedAppsHint": "쉼표로 구분한 실행 파일명입니다. 이 앱에서는 아무것도 읽거나 세지 않습니다.",
|
||
"input.consent.clearAll": "수집된 데이터 삭제",
|
||
"input.suggestion.title": "다음 문장 제안",
|
||
"input.suggestion.description": "앞으로 나올 문장을 예측해 커서 에 보여니다. 수락하면 그대로 삽입됩니다.",
|
||
"input.suggestion.enabled": "타이핑 중 제안 표시",
|
||
"input.suggestion.modelReady": "로컬 모델 준비됨.",
|
||
"input.suggestion.modelMissing": "로컬 모델이 실행 중이 아닙니다 — 제안이 꺼진 상태로 동작합니다.",
|
||
"input.suggestion.delay": "지연 (ms)",
|
||
"input.suggestion.minPrefix": "최소 글자 수",
|
||
"input.suggestion.modelDefault": "기본 모델 사용",
|
||
"input.suggestion.overlayInteractive": "제안 상자 클릭 허용",
|
||
"input.suggestion.overlayVisible": "제안이 화면에 표시됨",
|
||
"input.suggestion.keyHint": "수락·다음 후보·닫기는 전역 키바인딩입니다 — 설정 > 단축키에서 바 수 있습니다.",
|
||
"input.suggestion.requestNow": "지금 제안 받기",
|
||
"input.suggestion.usage": "오늘 {{requests}}/{{budget}}회 사용",
|
||
"input.suggestion.lastSkip": "마지막 건너 사유: {{reason}}",
|
||
"input.insights.title": "최근 {{days}}일",
|
||
"input.insights.keystrokes": "키 입력",
|
||
"input.insights.clicks": "클릭",
|
||
"input.insights.words": "작성한 단어",
|
||
"input.insights.sentences": "문장",
|
||
"input.insights.mouseDistance": "마우스 이동",
|
||
"input.insights.perDayMeters": " m/일",
|
||
"input.insights.phrases": "개인 문구",
|
||
"input.insights.empty": "아직 수집된 활동이 없습니다.",
|
||
"input.insights.topApps": "많이 입력한 앱",
|
||
"input.insights.appRow": "키 {{keystrokes}} · 클릭 {{clicks}}",
|
||
"input.insights.privacyNote": "이 기기에는 카운터와 거리만 저장됩니다. 키 내용은 저장되지 않습니다.",
|
||
"input.phrases.title": "개인 문구",
|
||
"input.phrases.description": "타이핑과 받아쓰기에서 학습한 문장입니다. 문체를 맞추는 데 사용합니다.",
|
||
"input.phrases.empty": "아직 학습된 문구가 없습니다.",
|
||
"input.phrases.delete": "문구 삭제",
|
||
"input.feedback.excludedSaved": "제외 목록을 저장했습니다.",
|
||
"input.feedback.cleared": "수집된 데이터를 삭제했습니다.",
|
||
"popup.suggestion.hintAccept": "수락",
|
||
"popup.suggestion.hintNext": "다음",
|
||
"popup.suggestion.hintDismiss": "닫기",
|
||
"popup.suggestion.hintMove": "이동",
|
||
"popup.suggestion.loading": "생성 중…",
|
||
"keybinding.ui.sectionInput": "입력 제안",
|
||
"keybinding.action.suggestionAccept": "제안 수락",
|
||
"keybinding.action.suggestionAccept.desc": "제안된 문장을 현재 앱에 삽입합니다.",
|
||
"keybinding.action.suggestionNext": "다음 제안",
|
||
"keybinding.action.suggestionNext.desc": "다음 제안 후보로 넘깁니다.",
|
||
"keybinding.action.suggestionDismiss": "제안 닫기",
|
||
"keybinding.action.suggestionDismiss.desc": "현재 제안을 숨깁니다.",
|
||
"input.suggestion.timeout": "응답 제한 (ms)",
|
||
"input.suggestion.latency": "마지막 응답: {{ms}}ms",
|
||
"input.suggestion.slowWarning": "타이 속도에 비해 느립니다 — 더 작은 모델을 쓰거나 후보 수를 줄여보세요.",
|
||
"input.diagnostics.title": "실시간 진단",
|
||
"input.diagnostics.app": "포커스 앱: {{app}}",
|
||
"input.diagnostics.unknownApp": "(알 수 없음)",
|
||
"input.diagnostics.noSnapshot": "아직 입력창을 읽지 못했습니다 — 글자 필드를 클릭하고 타이핑해 보세요.",
|
||
"input.diagnostics.readable": "입력창 읽기 가능 ({{source}}, {{length}}자) — 제안이 동작할 수 있습니다.",
|
||
"input.diagnostics.notReadable": "이 앱은 입력창 텍스트를 노출하지 않습니다 — 여기서 친 내용은 읽을 수 없어 제안이 만들어지지 않습니다.",
|
||
"input.diagnostics.password": "비밀번호 필드 — 설계상 읽기를 차단합니다.",
|
||
"input.diagnostics.caretFallback": "커서 위치를 알 수 없어 문서 끝을 입력 위치로 가정합니다.",
|
||
"input.diagnostics.composing": "IME 조합 중 — 제안이 조금 더 기다렸다가 뜹니다(차단되지 않습니다).",
|
||
"input.suggestion.onScreenLabel": "오버레이 상태",
|
||
"input.suggestion.onScreen": "표시 중",
|
||
"input.suggestion.offScreen": "없음",
|
||
"input.suggestion.generating": "생성 중…",
|
||
"input.kbView.knowledge": "지식 베이스",
|
||
"input.kbView.insights": "입력 인사이트",
|
||
"input.insights.tabs.overview": "요약",
|
||
"input.insights.tabs.keyboard": "키보드",
|
||
"input.insights.tabs.mouse": "마우스",
|
||
"input.insights.tabs.apps": "앱",
|
||
"input.insights.tabs.phrases": "문구 · 제안",
|
||
"input.insights.chars": "입력한 글자",
|
||
"input.insights.wordChars": "글자",
|
||
"input.insights.backspaces": "지우기",
|
||
"input.insights.shortcuts": "단축키",
|
||
"input.insights.doubleClicks": "더블클릭",
|
||
"input.insights.scrollTicks": "스크롤",
|
||
"input.insights.activeMinutes": "활성 시간",
|
||
"input.insights.activeDays": "기록한 날",
|
||
"input.insights.streak": "최장 연속",
|
||
"input.insights.peakDay": "최다 입력일",
|
||
"input.insights.perDayAverage": "일 평균",
|
||
"input.insights.mouseDistanceTotal": "이동 거리 합",
|
||
"input.insights.hourlyTitle": "시간대별 (0~23시)",
|
||
"input.insights.dailyTitle": "일별 추이",
|
||
"input.insights.wordsDailyTitle": "일별 단어",
|
||
"input.insights.distanceDailyTitle": "일별 마우스 이동",
|
||
"input.insights.topHoursHint": "가장 활발한 시간대: {{hours}}",
|
||
"input.insights.mouseNote": "마우스 이동은 축별 절대값 합(맨해튼)으로 계산합니다 — ActivityWatch와 같은 방식입니다.",
|
||
"input.insights.appsHint": "입력량 기준 상위 앱입니다. 막대는 전체 입력 대비 비중입니다.",
|
||
"input.insights.suggestions": "제안",
|
||
"input.insights.suggestionsTotal": "생성된 제안",
|
||
"input.insights.suggestionsAccepted": "수락",
|
||
"input.insights.acceptRate": "수락률",
|
||
"input.insights.avgLatency": "평균 응답",
|
||
"input.insights.suggestionHistory": "최근 제안 이력",
|
||
"input.insights.accepted": "수락",
|
||
"input.insights.notAccepted": "미수락",
|
||
"input.insights.noSuggestions": "아직 제안 이력이 없습니다.",
|
||
"input.insights.samplesNote": "학습 표본 {{count}}건.",
|
||
"input.insights.collectedAt": "마지막 수집 {{at}}",
|
||
"input.insights.rangeLabel": "기간",
|
||
"input.insights.rangeDays": "{{days}}일",
|
||
"input.insights.headerSummary": "최근 {{days}}일 · 키 입력 {{keys}} · 앱 {{apps}}개",
|
||
"input.insights.disabledHint": "입력 수집이 꺼져 있습니다. 설정 > 입력에서 켜면 여기에 통계가 쌓입니다.",
|
||
"input.insights.statsMovedHint": "상세 통계는 지식 베이스 > 입력 인사이트에서 볼 수 있습니다.",
|
||
"input.chart.max": "최대 {{value}}",
|
||
"input.chart.noData": "데이터가 아직 없습니다.",
|
||
"input.unit.perDay": "/일",
|
||
"input.unit.perDayMeters": "m/일",
|
||
"input.unit.meters": "m",
|
||
"input.unit.ms": "ms",
|
||
"input.unit.percent": "%",
|
||
"popup.suggestion.warming": "모델 준비 중…",
|
||
"popup.suggestion.hintGenerating": "생성 중…",
|
||
"popup.suggestion.hintGeneratingMore": "더 생성 중… (최대 {{max}}개)",
|
||
"keybinding.action.suggestionPrev": "이전 제안",
|
||
"keybinding.action.suggestionPrev.desc": "이전 제안 후보로 이동합니다.",
|
||
"input.insights.tabs.graph": "그래프",
|
||
"input.graph.description": "내 문장을 노드로, 문장 사이의 관계(무엇이 무엇 뒤에 오는지, 어떤 용어를 공유하는지)를 엣지로 저장해 제안에 개인 문맥을 끌어옵니다. 전부 로컬입니다.",
|
||
"input.graph.nodes": "문장 노드",
|
||
"input.graph.followsEdges": "이어쓰기 연결",
|
||
"input.graph.sharesEdges": "용어 공유 연결",
|
||
"input.graph.topEdges": "강한 연결",
|
||
"input.graph.recentNodes": "최근 노드",
|
||
"input.graph.searchLabel": "문장 검색",
|
||
"input.graph.searchPlaceholder": "예: 회의 일정",
|
||
"input.graph.searchAction": "검색",
|
||
"input.graph.neighbors": "연결된 문장",
|
||
"input.graph.empty": "그래프가 비어 있습니다. 설정 > 입력에서 \"내가 친 텍스트 학습\" 을 켜면 쌓입니다.",
|
||
"input.graph.kindFollows": "이어쓰기",
|
||
"input.graph.kindShares": "용어 공유",
|
||
"popup.suggestion.generating": "생성 중… ({{seconds}}초)",
|
||
"keybinding.ui.auditClear": "단축키 충돌과 유효하지 않은 설정이 없습니다.",
|
||
"keybinding.ui.auditIssues": "단축키 문제 {{count}}건",
|
||
"keybinding.ui.auditInvalid": "{{action}}: {{reason}}",
|
||
"keybinding.ui.auditConflict": "{{action}}: {{conflicts}}와 충돌",
|
||
"keybinding.ui.auditUnknown": "알 수 없는 문제",
|
||
"input.flow.title": "몰입 가능 시간대",
|
||
"input.flow.empty": "아직 시간대별 입력 데이터가 부족합니다.",
|
||
"input.flow.hour": "{{hour}}:00",
|
||
"input.flow.window": "점수 {{score}} · 하루 {{minutes}}분 활성 · 편집 {{friction}}%",
|
||
"input.friction.title": "편집 마찰",
|
||
"input.friction.value": "100자당 {{count}}회",
|
||
"input.friction.band.steady": "안정",
|
||
"input.friction.band.watch": "관찰",
|
||
"input.friction.band.high": "높음",
|
||
"input.appQuality.title": "앱별 제안 품질",
|
||
"input.appQuality.empty": "아직 앱별 제안 기록이 없습니다.",
|
||
"input.appQuality.row": "{{accepted}}/{{total}} 수락 · {{rate}}% · {{latency}}ms",
|
||
"input.phrases.metadata": "{{source}} · {{count}}회 · {{app}}",
|
||
"input.phrases.appUnknown": "공통",
|
||
"input.privacy.title": "로컬 데이터 영수증",
|
||
"input.privacy.localOnly": "이 데이터는 이 기기에만 저장됩니다.",
|
||
"input.privacy.rawKeys": "개별 키 입력 이벤트와 키 코드는 보존하지 않습니다. 학습용 입력 원문 표본은 아래 수량과 보존 기간으로 따로 표시합니다.",
|
||
"input.privacy.activityRetention": "활동 기록 보존",
|
||
"input.privacy.suggestionRetention": "제안 기록 보존",
|
||
"input.privacy.learnedRetention": "학습 문구 보존",
|
||
"input.privacy.activityBuckets": "활동 버킷",
|
||
"input.privacy.typingSamples": "입력 샘플",
|
||
"input.privacy.personalPhrases": "개인 문구",
|
||
"input.privacy.suggestions": "제안 기록",
|
||
"input.privacy.days": "{{days}}일",
|
||
"input.privacy.untilDeleted": "삭제할 때까지",
|
||
"input.exclusion.recommendation": "{{app}}에서 읽을 수 없는 입력이 {{samples}}번 반복되었습니다 ({{reason}}).",
|
||
"input.exclusion.reason.repeated-unreadable": "반복적으로 읽을 수 없음",
|
||
"input.exclusion.reason.repeated-empty": "반복적으로 비어 있음",
|
||
"input.exclusion.addButton": "{{app}}을(를) 제외 목록에 추가",
|
||
"input.feedback.recommendationSaved": "{{app}}을(를) 제외 목록에 추가했습니다.",
|
||
"popup.suggestion.sourceModel": "로컬 모델",
|
||
"popup.suggestion.sourceMemory": "로컬 기억",
|
||
"popup.suggestion.continuations": "다음 문장",
|
||
"popup.suggestion.related": "관련 문장",
|
||
"popup.suggestion.phrases": "개인 문구",
|
||
"popup.suggestion.appPhrases": "이 앱 문구",
|
||
"input.privacy.typingSamplesRetention": "입력 원문 표본 보존",
|
||
"input.privacy.unavailable": "지금은 로컬 데이터 영수증을 불러올 수 없습니다. 수량과 보존 기간은 표시하지 않습니다.",
|
||
"input.feedback.clearFailed": "수집된 데이터를 삭제하지 못했습니다.",
|
||
"input.feedback.excludedFailed": "제외 목록을 저장하지 못했습니다.",
|
||
"input.feedback.recommendationFailed": "{{app}}을(를) 제외 목록에 추가하지 못했습니다.",
|
||
"popup.caption.waiting": "듣는 중… 첫 자막까지 몇 초 걸릴 수 있어요",
|
||
"popup.caption.dragHint": "끌어서 이동 · 더블클릭하면 원위치",
|
||
"settings.captionRefine": "자막 문맥 다듬기",
|
||
"settings.captionRefine.desc": "확정된 자막을 로컬 AI가 앞뒤 문맥에 맞게 띄어쓰기·문장부호·잘못 들은 단어를 고칩니다.",
|
||
"settings.captionModel": "실시간 자막 모델",
|
||
"settings.captionModel.same": "받아쓰기와 같게",
|
||
"settings.captionModel.desc": "실시간 자막만 다른 모델로 인식합니다. 받아쓰기 모델과 함께 GPU 메모리에 올라갑니다.",
|
||
"history.favorite": "즐겨찾기",
|
||
"history.unfavorite": "즐겨찾기 해제",
|
||
"cloudSync.title": "클라우드 동기화",
|
||
"cloudSync.description": "기록·사전·회의·메모 태그·명령·템플릿을 모바일과 웹에 자동으로 맞춥니다. 어느 기기에서 지워도 다른 기기에서 함께 지워집니다.",
|
||
"cloudSync.signIn": "로그인",
|
||
"cloudSync.signedInAs": "{{email}} 계정으로 로그인됨",
|
||
"cloudSync.noEmail": "이메일 없음",
|
||
"cloudSync.lastSync": "마지막 동기화: {{time}}",
|
||
"cloudSync.never": "아직 없음",
|
||
"cloudSync.upToDate": "모든 변경이 올라갔습니다",
|
||
"cloudSync.pending": "올릴 변경 {{count}}건 대기 중",
|
||
"cloudSync.failed": "서버가 거부한 변경 {{count}}건 — \"지금 동기화\"로 다시 시도합니다",
|
||
"cloudSync.syncNow": "지금 동기화",
|
||
"cloudSync.syncing": "동기화 중…",
|
||
"cloudSync.signOut": "로그아웃",
|
||
"cloudSync.browserPending": "브라우저에서 로그인을 마쳐 주세요.",
|
||
"cloudSync.signedOut": "로그아웃했습니다. 이 컴퓨터의 기록은 그대로 남아 있습니다.",
|
||
"cloudSync.done": "동기화 완료 ({{count}}건 반영)",
|
||
"cloudSync.doneWithErrors": "동기화 완료 ({{count}}건 반영, {{errors}}건 실패 — 다음 동기화 때 다시 시도)",
|
||
"mobile.devices.platform.android": "Android",
|
||
"mobile.devices.platform.ios": "iPhone·iPad",
|
||
"mobile.devices.platform.web": "웹 브라우저",
|
||
"mobile.devices.platform.windows": "Windows 데스크톱 앱",
|
||
"mobile.devices.platform.macos": "macOS 데스크톱 앱",
|
||
"history.playAudio": "녹음 듣기",
|
||
"history.stopAudio": "재생 멈춤",
|
||
"history.audioUnavailable": "들을 수 있는 녹음이 없습니다 (다른 기기 녹음은 그 기기의 동기화가 끝나면 들을 수 있어요)",
|
||
"cloudSync.audio": "녹음 파일도 동기화",
|
||
"cloudSync.audioDesc": "녹음을 클라우드에 올려 모바일·웹에서 들을 수 있게 합니다. 50MB를 넘는 파일은 이 컴퓨터에만 둡니다."
|
||
}
|