Files
office_translator/frontend/src/lib/i18n/messages/ko/dashboard.json
sepehr b4e873ad2c
Some checks failed
Deploy to Production / Build and Deploy (push) Failing after 2m14s
feat(review,teams): review foundation — segments, side-by-side editor, rebuild, XLIFF, team workspaces
Foundations:
- TranslationSegment model + migration f7e8d9c0b1a2 (segments, workspaces,
  workspace_members, glossaries.workspace_id)
- SegmentRecorder injected into all 4 translators: unique (source,
  translation) pairs captured per job and persisted (best-effort)
- set_segment_overrides: human-reviewed translations applied verbatim on
  rebuild — top priority over TM and provider, zero API calls

Review API (routes/review_routes.py):
- GET /translations/{id}/segments (owner or job token)
- PATCH /segments/{id} edit/approve — feeds the per-user TM so approved
  translations are reused in later jobs
- POST /translations/{id}/rebuild — rebuild document with reviewed text
- GET/POST /translations/{id}/xliff — XLIFF 1.2 export/import (edited
  segments export their reviewed text)

Review editor (frontend /dashboard/reviews/[jobId]):
- side-by-side source/translation table, inline edit, approve (single or
  all), rebuild & download (auth blob), XLIFF export/import, 13 locales
- 'Relire et corriger' link on the translation-complete screen

Team workspaces (routes/workspace_routes.py + /dashboard/teams):
- Workspace/WorkspaceMember models, roles owner/admin/member
- create (Business plan), list with seat usage, invite by email with
  seat-limit enforcement (Business=5, Enterprise unlimited), removal
- shared glossaries: workspace members can use a glossary shared to their
  workspace (access check extended)

Tests: 1184 passed / 0 failed (11 new: recorder, overrides, docx
capture->rebuild e2e, XLIFF structure/escaping, seats, workspace CRUD,
shared glossary access)
2026-08-29 19:04:32 +02:00

113 lines
7.4 KiB
JSON

{
"dashboard.nav.translate": "번역",
"dashboard.nav.profile": "내 프로필",
"dashboard.nav.settings": "설정",
"dashboard.nav.context": "컨텍스트",
"dashboard.nav.services": "서비스",
"dashboard.nav.apiKeys": "API 키",
"dashboard.nav.glossaries": "용어집",
"dashboard.header.title": "대시보드",
"dashboard.header.subtitle": "번역 관리",
"dashboard.header.toggleMenu": "메뉴",
"dashboard.header.profileTitle": "내 프로필",
"dashboard.sidebar.theme": "테마",
"dashboard.sidebar.signOut": "로그아웃",
"dashboard.sidebar.backHome": "홈으로 돌아가기",
"dashboard.sidebar.upgradeToPro": "Pro로 업그레이드 →",
"dashboard.translate.pageTitle": "문서 번역",
"dashboard.translate.pageSubtitle": "파일을 가져오고 대상 언어를 선택하세요",
"dashboard.translate.errorNotificationTitle": "오류",
"dashboard.translate.dropzone.uploadAria": "파일 드롭 영역",
"dashboard.translate.dropzone.title": "여기에 파일을 드래그 앤 드롭하세요",
"dashboard.translate.dropzone.subtitle": "또는 클릭하여 선택 (DOCX, XLSX, PPTX, PDF)",
"dashboard.translate.dropzone.replaceFile": "파일 교체",
"dashboard.translate.language.source": "원본 언어",
"dashboard.translate.language.target": "대상 언어",
"dashboard.translate.language.loading": "언어 로딩 중…",
"dashboard.translate.language.autoDetect": "자동 감지",
"dashboard.translate.language.selectPlaceholder": "선택…",
"dashboard.translate.language.loadErrorPrefix": "언어 로딩 실패",
"dashboard.translate.provider.loading": "제공업체 로딩 중…",
"dashboard.translate.provider.noneConfigured": "구성된 제공업체 없음",
"dashboard.translate.provider.modelTitle": "모델",
"dashboard.translate.provider.sectionTitle": "제공업체",
"dashboard.translate.provider.llmDivider": "AI · 문맥 인식",
"dashboard.translate.provider.llmDividerPro": "AI · 문맥 인식 (Pro)",
"dashboard.translate.provider.upgrade": "Pro로 업그레이드",
"dashboard.translate.provider.upgradeSuffix": "AI 번역 잠금 해제",
"dashboard.translate.trust.zeroRetention": "데이터 미보관",
"dashboard.translate.trust.deletedAfter": "처리 후 파일 삭제",
"dashboard.translate.actions.uploading": "업로드 중…",
"dashboard.translate.actions.translate": "번역",
"dashboard.translate.actions.filePrefix": "파일: ",
"dashboard.translate.actions.cancel": "취소",
"dashboard.translate.actions.tryAgain": "다시 시도",
"dashboard.translate.steps.uploading": "파일 업로드 중…",
"dashboard.translate.steps.starting": "번역 시작 중…",
"dashboard.translate.complete.title": "번역 완료!",
"dashboard.translate.complete.descNamed": "파일 {name}의 번역이 성공적으로 완료되었습니다.",
"dashboard.translate.complete.descGeneric": "파일의 번역이 성공적으로 완료되었습니다.",
"dashboard.translate.complete.downloading": "다운로드 중…",
"dashboard.translate.complete.download": "다운로드",
"dashboard.translate.complete.newTranslation": "새 번역",
"dashboard.translate.complete.toastOkTitle": "성공",
"dashboard.translate.complete.toastOkDesc": "{name} 다운로드가 완료되었습니다.",
"dashboard.translate.complete.toastFailTitle": "실패",
"dashboard.translate.complete.toastFailDesc": "번역에 실패했습니다. 다시 시도해 주세요.",
"dashboard.translate.sourceDocument": "원본 문서",
"dashboard.translate.configuration": "설정",
"dashboard.translate.translating": "번역 진행 중",
"dashboard.translate.liveMonitor": "실시간 모니터",
"dashboard.translate.summary": "요약",
"dashboard.translate.engine": "엔진",
"dashboard.translate.confidence": "신뢰도",
"dashboard.translate.cancel": "취소",
"dashboard.translate.segments": "세그먼트",
"dashboard.translate.characters": "문자",
"dashboard.translate.elapsed": "경과",
"dashboard.translate.segPerMin": "세그/분",
"dashboard.translate.highQuality": "고품질",
"dashboard.translate.quality": "품질",
"dashboard.translate.completed": "번역 완료",
"dashboard.translate.replace": "교체",
"dashboard.translate.pdfMode.title": "PDF 번역 모드",
"dashboard.translate.pdfMode.preserveLayout": "레이아웃 유지",
"dashboard.translate.pdfMode.textOnly": "텍스트만",
"dashboard.translate.pdfMode.preserveLayoutDesc": "이미지, 표 및 서식을 유지합니다. 간단한 PDF에 적합.",
"dashboard.translate.pdfMode.textOnlyDesc": "모든 텍스트를 완벽하게 번역합니다. 깔끔한 출력, 레이아웃 문제 없음.",
"dashboard.translate.pipeline.upload": "업로드",
"dashboard.translate.pipeline.analyze": "분석",
"dashboard.translate.pipeline.translate": "번역",
"dashboard.translate.pipeline.rebuild": "재구성",
"dashboard.translate.pipeline.finalize": "완료",
"dashboard.translate.progress.processingFallback": "처리 중…",
"dashboard.translate.progress.connectionLost": "연결이 끊어졌습니다. 재시도 중…",
"dashboard.translate.progress.failedTitle": "번역 실패",
"dashboard.translate.error.unexpected": "예기치 않은 오류가 발생했습니다. 다시 시도해 주세요.",
"dashboard.translate.error.noResult": "번역 결과가 없습니다. 문서에 텍스트가 포함되어 있는지 확인하고 다시 시도하거나 다른 엔진을 선택하세요.",
"dashboard.translate.error.apiKey": "API 키가 유효하지 않거나 없습니다. 관리자에게 문의하여 API 키를 설정하세요.",
"dashboard.translate.error.quota": "사용 한도에 도달했습니다. 몇 분 후에 다시 시도하거나 다른 엔진을 선택하세요.",
"dashboard.translate.error.timeout": "번역 서비스 연결 시간이 초과되었습니다. 네트워크를 확인하고 다시 시도하세요.",
"dashboard.translate.error.sessionExpired": "세션이 만료되었습니다. 다시 시도를 클릭하여 번역을 재시작하세요.",
"dashboard.translate.error.empty": "문서가 비어 있거나 번역 가능한 텍스트가 없습니다 (스캔 PDF 이미지?).",
"dashboard.translate.error.unsupported": "지원되지 않는 파일 형식이거나 손상된 파일입니다.",
"dashboard.translate.error.connection": "연결이 끊겼습니다. 네트워크를 확인하고 다시 시도하세요.",
"dashboard.translate.error.generic": "번역 실패: {detail}",
"dashboard.translate.error.title": "번역 실패",
"dashboard.translate.retry": "번역 다시 시도",
"dashboard.translate.newFile": "새 파일",
"dashboard.translate.modeAI": "AI 모드",
"dashboard.translate.modeClassic": "클래식 모드",
"dashboard.translate.glossaryLLMHint": "AI 모드에서 용어집 사용 가능",
"dashboard.translate.submitting": "제출 중...",
"dashboard.translate.submit": "번역 시작",
"dashboard.translate.noFile": "먼저 파일을 업로드하세요",
"dashboard.translate.noTargetLang": "대상 언어를 선택하세요",
"dashboard.topbar.interfaceLabel": "번역 인터페이스",
"dashboard.topbar.premiumAccess": "프리미엄 액세스",
"dashboard.checkoutSyncError": "결제 동기화 오류.",
"dashboard.networkRefresh": "네트워크 오류. 페이지를 새로 고치세요.",
"dashboard.continueToTranslate": "번역으로 계속",
"dashboard.nav.teams": "팀"
}