/* ============================================================================= * ui_template_locale_b1.ts * 다국어 사전 — B 그룹 전반부 (B01_Dashboard ~ B04_PreProcess) * * 워크플로우 진행 단계 라벨은 ui_template_locale_common.ts 의 WF_Step_* 키를 * 재사용한다 (중복 등록 방지). * * 이 파일은 사전 데이터만 담는다. 합성·언어 전환·t() 헬퍼는 ui_template_locale.ts 참조. * ========================================================================== */ import type { LocaleEntry } from "./ui_template_locale_common"; export const ui_locales_b1 = { /* --- 공통: 콘텐츠 미구현 안내 (B03~B06 본문 자리표시) --- */ B_Content_Pending: [ "이 영역의 상세 기능은 준비 중입니다.", "The detailed features for this area are in preparation.", ], /* --- B01_Dashboard 계정 관리 공통 문구 --- */ B01_Account_Title: ["내 계정", "My Account"], B01_Account_Subtitle: [ "계정 정보와 소속 회사를 확인하고 수정할 수 있습니다.", "View and edit your account information and company.", ], B01_Account_Section_Profile: ["기본 정보", "Profile"], B01_Account_Section_Security: ["보안", "Security"], B01_Account_Field_Company: ["회사명", "Company"], B01_Account_Field_Name: ["이름", "Name"], B01_Account_Field_Email: ["이메일", "Email"], B01_Account_Field_Phone: ["연락처", "Phone"], B01_Account_Field_Phone_Placeholder: ["연락처를 입력하세요", "Enter phone number"], B01_Account_Field_CurrentPw: ["현재 비밀번호", "Current password"], B01_Account_Field_NewPw: ["새 비밀번호", "New password"], B01_Account_Field_ConfirmPw: ["새 비밀번호 확인", "Confirm new password"], B01_Account_Save_Profile: ["기본 정보 저장", "Save profile"], B01_Account_Save_Password: ["비밀번호 변경", "Change password"], B01_Account_Success_Profile: ["기본 정보가 저장되었습니다.", "Profile has been saved."], B01_Account_Success_Password: ["비밀번호가 변경되었습니다.", "Password has been changed."], B01_Account_Error_Required: ["필수 항목을 입력하세요.", "Please fill in required fields."], B01_Account_Error_PwMismatch: ["새 비밀번호가 일치하지 않습니다.", "New passwords do not match."], B01_Account_Error_PwLength: [ "비밀번호는 8자 이상이어야 합니다.", "Password must be at least 8 characters.", ], B01_Dashboard_Title: ["AISLO 대시보드", "AISLO Dashboard"], B01_Dashboard_Subtitle: [ "역할과 회사 상태에 맞춰 프로젝트, 조직, 보안 정보를 관리합니다.", "Manage projects, organization, and security by role and company status.", ], B01_Dashboard_Role_User: ["일반 사용자", "User"], B01_Dashboard_Role_Admin: ["회사 관리자", "Company Admin"], B01_Dashboard_Role_SystemAdmin: ["시스템 관리자", "System Admin"], B01_Dashboard_Projects: ["프로젝트", "Projects"], B01_Dashboard_NewProject: ["신규 프로젝트", "New project"], B01_Dashboard_Company: ["회사 정보", "Company"], B01_Dashboard_NoCompany: ["회사 미연결", "No company linked"], B01_Dashboard_CreateCompany: ["회사 생성", "Create company"], B01_Dashboard_FindCompany: ["회사 찾기", "Find company"], B01_Dashboard_JoinCompany: ["가입 신청", "Request to join"], B01_Dashboard_Members: ["팀원 관리", "Team members"], B01_Dashboard_AddMember: ["팀원 추가", "Add member"], B01_Dashboard_RemoveMember: ["제거", "Remove"], B01_Dashboard_JoinRequests: ["가입 요청", "Join requests"], B01_Dashboard_Approve: ["승인", "Approve"], B01_Dashboard_Reject: ["거절", "Reject"], B01_Dashboard_Resources: ["리소스 현황", "Resources"], B01_Dashboard_Resources_ChartCaption: [ "최근 7일 리소스 사용률 (2분 간격)", "Resource usage over the last 7 days (2-min interval)", ], B01_Dashboard_Resources_ChartAria: [ "CPU, 메모리, 디스크 사용률 시계열 그래프", "Time-series chart of CPU, memory, and disk usage", ], B01_Dashboard_Companies: ["회사 관리", "Companies"], B01_Dashboard_Users: ["사용자 관리", "Users"], B01_Dashboard_AuditLogs: ["시스템 로그", "Audit logs"], /* --- B01 임시 보관함 (프로젝트 생성 전 업로드, 2026-08-08) --- */ B01_Temp_Section: ["임시 보관함", "Temporary storage"], B01_Temp_Field_Name: ["보관 이름", "Storage name"], B01_Temp_Field_Name_Placeholder: ["예: 2026년 3공구 측량자료", "e.g. 2026 Section 3 survey"], B01_Temp_Field_Files: ["파일 선택 (계획노선·라이다·좌표계·래스터)", "Select files"], B01_Temp_Btn_Pick: ["파일 선택", "Choose files"], B01_Temp_Btn_Add: ["파일 추가", "Add files"], B01_Temp_Modal_Create: ["임시 자료 등록", "New stored set"], B01_Temp_Modal_Add: ["파일 추가", "Add files"], B01_Temp_Table_Type: ["종류", "Type"], B01_Temp_Table_Name: ["파일명", "File"], B01_Temp_Table_Size: ["크기", "Size"], B01_Temp_Table_Status: ["상태", "Status"], B01_Temp_Table_Action: ["작업", "Action"], B01_Temp_File_Status_Stored: ["저장 완료", "Stored"], B01_Temp_File_Status_Waiting: ["대기", "Waiting"], B01_Temp_File_Status_Uploading: ["업로드 중", "Uploading"], B01_Temp_File_Status_Paused: ["이어올리기 대기", "Resume pending"], B01_Temp_File_Status_Failed: ["실패", "Failed"], B01_Temp_File_Delete_Confirm: [ "이 파일을 보관함에서 삭제할까요?", "Delete this file from temporary storage?", ], B01_Temp_File_Delete_Success: ["파일을 삭제했습니다.", "File deleted."], B01_Temp_File_Delete_Failed: ["파일 삭제에 실패했습니다.", "Failed to delete the file."], /* 보관 기간은 섹션 제목 옆 태그로만 알린다(안내 문단 폐기, 2026-08-08). */ B01_Temp_Hint_Days: ["일 보관", " days retained"], B01_Temp_Status_Uploading: ["업로드 중", "Uploading"], B01_Temp_Status_Ready: ["사용 가능", "Ready"], B01_Temp_Status_Linked: ["프로젝트 연결됨", "Linked"], B01_Temp_Meta_FileCount: ["개 파일", " files"], B01_Temp_Meta_Expires: ["보관 만료", "Expires"], B01_Temp_Meta_Linked: ["프로젝트로 이동 완료", "Moved to project"], B01_Temp_Error_Name: ["보관 이름을 입력하세요.", "Enter a storage name."], B01_Temp_Error_Files: ["올릴 파일을 선택하세요.", "Select files to upload."], B01_Temp_Upload_Success: ["보관함에 저장했습니다.", "Saved to temporary storage."], B01_Temp_Upload_Failed: ["보관함 업로드에 실패했습니다.", "Failed to upload."], B01_Temp_Load_Failed: ["보관함을 불러오지 못했습니다.", "Failed to load storage."], B01_Temp_Delete_Confirm: [ "이 보관 자료를 삭제할까요? 되돌릴 수 없습니다.", "Delete this stored set? This cannot be undone.", ], B01_Temp_Delete_Success: ["보관 자료를 삭제했습니다.", "Stored set deleted."], B01_Temp_Delete_Failed: ["삭제에 실패했습니다.", "Failed to delete."], B01_Dashboard_Profile: ["기본정보", "Profile"], B01_Dashboard_SaveProfile: ["기본정보 저장", "Save profile"], B01_Dashboard_Table_Project: ["프로젝트명", "Project"], B01_Dashboard_Table_Region: ["지역", "Region"], B01_Dashboard_Table_Workflow: ["워크플로우", "Workflow"], B01_Dashboard_Table_Updated: ["수정일", "Updated"], B01_Dashboard_Table_Email: ["이메일", "Email"], B01_Dashboard_Table_Name: ["이름", "Name"], B01_Dashboard_Table_Position: ["직급", "Position"], B01_Dashboard_Table_Department: ["부서", "Department"], B01_Dashboard_Table_Role: ["역할", "Role"], B01_Dashboard_Table_Status: ["상태", "Status"], B01_Dashboard_Table_Company: ["회사명", "Company"], B01_Dashboard_Table_Requested: ["신청일", "Requested"], B01_Dashboard_Table_Action: ["관리", "Action"], B01_Dashboard_Table_Event: ["동작", "Event"], B01_Dashboard_Table_Target: ["대상", "Target"], B01_Dashboard_Table_Origin: ["접속 주소", "From"], B01_Dashboard_Table_When: ["일시", "When"], B01_Dashboard_Table_Owner: ["소유자", "Owner"], B01_Dashboard_Field_BusinessNumber: ["사업자등록번호", "Business number"], B01_Dashboard_Field_Address: ["주소", "Address"], B01_Dashboard_Field_Owner: ["대표자명", "Owner"], B01_Dashboard_Field_Search: ["검색어", "Search"], B01_Dashboard_Field_MemberEmail: ["팀원 이메일", "Member email"], B01_Dashboard_Field_Email: ["이메일", "Email"], B01_Dashboard_Metric_Cpu: ["CPU", "CPU"], B01_Dashboard_Metric_Memory: ["메모리", "Memory"], B01_Dashboard_Metric_Disk: ["디스크", "Disk"], B01_Dashboard_Metric_ActiveUsers: ["활성 사용자", "Active users"], B01_Dashboard_Metric_ActiveProjects: ["활성 프로젝트", "Active projects"], B01_Dashboard_Modal_CreateCompany: ["회사 생성", "Create company"], B01_Dashboard_Modal_FindCompany: ["회사 검색", "Find company"], B01_Dashboard_Modal_AddMember: ["팀원 추가", "Add member"], B01_Dashboard_Saved: ["저장되었습니다.", "Saved."], B01_Dashboard_LoadFailed: ["대시보드를 불러오지 못했습니다.", "Failed to load dashboard."], B01_Dashboard_RequestFailed: ["요청 처리에 실패했습니다.", "Request failed."], // 프로젝트 관리 B01_Dashboard_EditProject: ["프로젝트 수정", "Edit Project"], B01_Dashboard_DeleteProject: ["프로젝트 삭제", "Delete Project"], // 사용자 관리 B01_Dashboard_AddUser: ["사용자 추가", "Add User"], B01_Dashboard_EditUser: ["사용자 수정", "Edit User"], B01_Dashboard_DeleteUser: ["사용자 삭제", "Delete User"], B01_Dashboard_ChangeRole: ["역할 변경", "Change Role"], B01_Dashboard_SelectAvailableUsers: ["사용 가능한 사용자 선택", "Select Available Users"], // 확인 메시지 B01_Dashboard_Confirm_DeleteProject: [ "프로젝트를 삭제하시겠습니까? 되돌릴 수 없습니다.", "Delete this project? This cannot be undone.", ], // 하드 삭제 모드(PROJECT_DELETE_HARD_ENABLED=True) 전용 경고 B01_Dashboard_Confirm_DeleteProject_Hard: [ "[하드 삭제 모드] 업로드한 라이다 원본과 모든 계산 결과가 서버에서 영구 삭제됩니다. 복구할 수 없습니다. 삭제하시겠습니까?", "[Hard delete mode] The uploaded LiDAR source and every computed result will be permanently erased from the server. This cannot be recovered. Delete anyway?", ], B01_Dashboard_Confirm_DeleteUser: ["사용자를 삭제하시겠습니까?", "Delete this user?"], B01_Dashboard_Confirm_LastAdmin: [ "회사의 유일한 관리자는 삭제할 수 없습니다.", "Cannot delete the last admin of the company.", ], B01_Dashboard_CannotChangeToSystemAdmin: [ "시스템 관리자로 변경할 수 없습니다.", "Cannot change role to System Admin.", ], /* --- B02_ProjRegister 프로젝트 등록 --- */ B02_Proj_Title: ["프로젝트 등록", "Register Project"], B02_Proj_Subtitle: [ "새 임도 설계 프로젝트의 기본 정보를 입력하세요.", "Enter the basic information for a new forest road project.", ], B02_Proj_Field_Name: ["프로젝트명", "Project name"], B02_Proj_Field_Name_Placeholder: [ "예: 2025년 산불진화임도(기번8)", "e.g. 2025 Fire-suppression Road (No.8)", ], B02_Proj_Field_Region: ["사업 지역", "Region"], B02_Proj_Field_Region_Placeholder: ["예: 울진군 금강송면", "e.g. Uljin-gun"], B02_Proj_Field_RoadType: ["임도 종류", "Road type"], // 현행 「임도설치 및 관리 등에 관한 규정」의 3종 — 지선임도는 폐지(작업임도로 // 간주), 계류보전은 임도 종류가 아니라 사방사업 구분이라 뺐다(2026-08-19 확정). B02_Proj_RoadType_Main: ["간선임도", "Main forest road"], B02_Proj_RoadType_Fire: ["산불진화임도", "Fire-suppression forest road"], B02_Proj_RoadType_Work: ["작업임도", "Work forest road"], B02_Proj_Field_Year: ["사업 연도", "Project year"], B02_Proj_Field_Length: ["예상 연장 (m)", "Estimated length (m)"], B02_Proj_Field_Length_Placeholder: ["예상 노선 길이", "Estimated route length"], B02_Proj_Field_Memo: ["비고", "Notes"], B02_Proj_Field_Memo_Placeholder: ["추가 메모 (선택)", "Additional notes (optional)"], B02_Proj_Submit: ["프로젝트 생성", "Create project"], B02_Proj_Success: [ "프로젝트가 생성되었습니다. 파일 입력 단계로 이동합니다.", "Project created. Moving to the file input step.", ], B02_Proj_Error_Required: ["필수 항목을 입력하세요.", "Please fill in required fields."], /* --- B03_FileInput 파일 입력 --- */ B03_File_Title: ["파일입력", "File Input"], B03_File_Subtitle: [ "필수 계획노선과 지형·포인트클라우드 파일을 업로드하세요.", "Upload the required planned route, terrain, and point cloud files.", ], B03_File_Select_Label: ["입력 파일 선택", "Select input files"], /* --- 좌측 안내 패널 (2026-09-03) --- */ B03_Guide_Files_Title: ["필요한 파일", "Files you need"], B03_Guide_Files_Route: [ "계획노선 — shapefile 한 벌(.shp·.shx·.dbf·.cpg·.prj) 5개.", "Planned route — the five shapefile parts (.shp, .shx, .dbf, .cpg, .prj).", ], B03_Guide_Files_Terrain: [ "지형 — 포인트클라우드 LAS/LAZ 1개와 좌표계 PRJ, 래스터 기준 TFW.", "Terrain — one LAS/LAZ point cloud plus the PRJ projection and TFW world file.", ], B03_Guide_Files_Optional: [ "지형 TIF(DEM)는 선택 사항 — 없어도 지표면 분석이 진행됩니다.", "The terrain TIF (DEM) is optional — surface analysis runs without it.", ], B03_Guide_How_Title: ["고르는 방법", "How to pick"], B03_Guide_How_Drop: [ "여러 개를 한 번에 끌어 놓으면 확장자로 카드에 자동 배정됩니다.", "Drop several files at once — each is assigned to a card by its extension.", ], B03_Guide_How_Card: [ "카드의 [선택]으로 한 칸씩 지정하거나 ✕로 되돌릴 수 있습니다.", "Use a card's [Select] to set one slot, or ✕ to clear it.", ], B03_Guide_How_Temp: [ "[임시 보관함]은 대시보드에 미리 올려 둔 자료를 가져옵니다.", "[Temporary storage] pulls files you staged on the dashboard.", ], B03_Guide_Notes_Title: ["알아 둘 것", "Before you upload"], B03_Guide_Notes_Replace: [ "이미 완료된 프로젝트에 다시 올리면 기존 분석 결과가 교체됩니다.", "Uploading again to a finished project replaces the existing analysis.", ], B03_Guide_Notes_Crs: [ "작업 좌표계는 라이다 PRJ가 기준 — 노선 좌표계와 다르면 업로드가 막힙니다.", "The LiDAR PRJ sets the working CRS — a mismatched route CRS blocks the upload.", ], B03_Guide_Notes_LasFree: [ "라이다가 없으면 [LAS 없는 설계]를 켜고 도엽 등고선으로 진행합니다.", "With no LiDAR, turn on [Design without LAS] and work from sheet contours.", ], B03_File_Selected_Title: ["선택한 파일", "Selected files"], B03_File_Selected_Empty: ["선택한 파일이 없습니다.", "No files selected."], B03_File_Upload_Button: ["파일 업로드", "Upload files"], B03_File_Upload_Busy: ["업로드 중…", "Uploading…"], B03_File_Error_Project: [ "현재 프로젝트가 선택되지 않았습니다. 프로젝트를 먼저 생성하거나 선택하세요.", "No current project is selected. Create or select a project first.", ], B03_File_Error_Required: ["업로드할 파일을 선택하세요.", "Select files to upload."], B03_File_Error_Count: [ "한 번에 업로드할 수 있는 파일 수를 초과했습니다.", "Too many files were selected for one upload.", ], B03_File_Error_Las: [ "LAS 또는 LAZ 파일을 정확히 1개 선택하세요.", "Select exactly one LAS or LAZ file.", ], B03_File_Error_LasFreeBlocked: [ "LAS 없이 설계를 켠 상태에서는 LAS/LAZ 파일을 넣을 수 없습니다.", "LAS/LAZ files cannot be added while designing without LAS.", ], B03_File_Error_Extension: ["허용되지 않은 파일 형식입니다.", "Unsupported file type."], B03_File_Error_Size: ["파일 크기 제한을 초과했습니다.", "File size limit exceeded."], B03_File_Upload_Success: ["입력 파일 업로드를 완료했습니다.", "Input files uploaded."], B03_File_Upload_Failed: ["파일 업로드에 실패했습니다.", "File upload failed."], B03_File_Analysis_InProgress: [ "WF1 분석이 백그라운드에서 진행 중입니다. 완료되면 자동으로 이동합니다.", "WF1 analysis is running in the background. You will move automatically when it completes.", ], B03_File_Analysis_StillRunning: [ "분석이 계속 진행 중입니다. 잠시 후 다시 확인하세요.", "Analysis is still running. Check again shortly.", ], B03_File_Result_Path: ["저장 경로", "Stored path"], B03_File_Group_Required: ["필수 파일", "Required files"], B03_File_Group_Optional: ["선택 파일", "Optional files"], /* 자료 출처가 갈려 컨테이너를 둘로 나눈다 — 계획노선 / 지형(LAS)(2026-08-31). */ B03_File_Group_Inputs: ["입력 자료", "Input files"], B03_File_Group_Route: ["계획노선 자료", "Planned route files"], B03_File_Group_Terrain: ["지형 자료 (LAS)", "Terrain files (LAS)"], B03_File_Group_Terrain_Hint: [ "여기의 PRJ·TFW는 지형 자료의 좌표계입니다 — 노선 PRJ와 별개입니다.", "The PRJ and TFW here describe the terrain data, separate from the route PRJ.", ], B03_File_Slot_PlannedRoute: ["계획노선 도형", "Planned Route Geometry"], B03_File_Slot_RouteIndex: ["노선 도형 색인", "Route Shape Index"], B03_File_Slot_RouteAttribute: ["노선 속성", "Route Attributes"], B03_File_Slot_RouteEncoding: ["노선 속성 인코딩", "Route Attribute Encoding"], B03_File_Slot_RouteProjection: ["노선 좌표계", "Route Projection"], B03_File_Slot_PointCloud: ["포인트클라우드", "Point Cloud"], B03_File_LasFree_Toggle: [ "LAS 없이 설계 (도엽등고선 기반)", "Design without LAS (map sheet contours)", ], B03_File_LasFree_Hint: [ "포인트클라우드 없이 1:5,000 수치지형도 등고선으로 지형을 만듭니다.", "Terrain is built from 1:5,000 map sheet contours without a point cloud.", ], B03_File_Slot_Projection: ["지형 좌표계", "Terrain Projection"], B03_File_Slot_RasterCoord: ["래스터 좌표", "Raster Coord 1"], B03_File_Slot_TerrainDem: ["지형 래스터", "Terrain DEM"], B03_File_Slot_CadDrawing: ["CAD 도면", "CAD Drawing"], /* --- B03 임시 보관함 불러오기 (2026-08-08) --- */ B03_Temp_Btn_Open: ["임시 보관함", "Temporary storage"], B03_Temp_FileCount: ["개 파일", " files"], B03_Temp_Modal_Title: ["보관 자료 선택", "Select stored files"], B03_Temp_Modal_Empty: [ "사용할 수 있는 보관 자료가 없습니다. 대시보드 임시 보관함에서 필수 파일을 모두 올려 주세요.", "No usable stored set. Upload all required files in the dashboard temporary storage first.", ], B03_Temp_Select_Required: ["보관 자료를 선택하세요.", "Select a stored set."], B03_Temp_Load_Failed: ["보관 자료를 불러오지 못했습니다.", "Failed to load stored sets."], B03_Temp_Attach_Success: [ "보관 자료를 프로젝트로 옮겼습니다. 분석을 시작합니다.", "Stored files moved to the project. Analysis started.", ], B03_Temp_Attach_Failed: ["보관 자료 연결에 실패했습니다.", "Failed to attach stored files."], B03_Temp_Attach_NoAnalysis: [ "파일은 옮겼지만 라이다 파일이 없어 분석을 시작하지 못했습니다.", "Files moved, but analysis did not start (no point cloud file).", ], B03_File_Preview_Extent: ["자료 범위", "Data extent"], B03_File_Preview_Route: ["계획노선 형상", "Planned route shape"], B03_File_Preview_Outside: [ "계획노선이 지형 자료 범위를 벗어납니다.", "The planned route falls outside the terrain data extent.", ], B03_File_Preview_Inside: [ "계획노선이 지형 자료 범위 안에 있습니다.", "The planned route is inside the terrain data extent.", ], B03_File_Card_Select: ["파일 선택", "Select file"], B03_File_Card_Remove: ["파일 제거", "Remove file"], B03_File_Card_Optional: ["선택", "Optional"], B03_File_Error_DuplicateSlot: [ "같은 유형의 파일이 이미 선택되어 있습니다.", "A file for this slot is already selected.", ], B03_File_Error_RequiredSlots: [ "필수 카드를 모두 채우세요 — 계획노선(shapefile 한 벌 또는 CSV), LAS/LAZ, 지형 PRJ·TFW.", "Fill every required card: the planned route (a full shapefile set or a CSV), " + "LAS/LAZ, and the terrain PRJ and TFW.", ], B03_File_Error_SlotType: [ "선택한 파일 유형이 이 카드와 맞지 않습니다.", "The selected file type does not match this card.", ], B03_File_Progress_Bytes: ["진행", "Progress"], B03_File_Progress_Speed: ["속도", "Speed"], B03_File_Progress_Eta: ["예상 완료", "ETA"], B03_File_Status_Pending: ["대기", "Pending"], B03_File_Status_Uploading: ["업로드 중", "Uploading"], B03_File_Status_Completed: ["완료", "Completed"], B03_File_Status_Failed: ["실패", "Failed"], B03_File_Status_Detected: ["중단된 업로드 감지", "Paused upload detected"], B03_File_Restore_State: ["저장된 업로드/분석 상태 복구", "Restored upload/analysis state"], B03_File_Resume_Button: ["업로드 재개", "Resume upload"], B03_File_New_Button: ["새 파일로 시작", "Start new file"], B03_File_Overview_Complete: [ "필수 파일 업로드와 지표면 분석이 모두 완료된 프로젝트입니다. 파일을 다시 올리면 기존 결과가 교체됩니다.", "All required files are uploaded and surface analysis is complete. Re-uploading replaces existing results.", ], B03_File_Overview_Pending: [ "지점에서 중단된 업로드가 있습니다 — 같은 파일을 다시 선택하면 이어서 올립니다.", "upload was interrupted — reselect the same file to resume.", ], B03_File_Replace_Title: ["기존 파일 교체 확인", "Confirm file replacement"], B03_File_Replace_Message: [ "이 슬롯에는 이미 업로드된 파일이 있습니다. 새 파일을 올리면 기존 파일과 그에 따른 분석 결과(지표면 모델 등)가 교체됩니다. 계속하시겠습니까?", "This slot already has an uploaded file. Uploading a new one replaces the existing file and derived analysis results (surface model, etc.). Continue?", ], B03_File_Replace_Confirm: ["교체하고 계속", "Replace and continue"], B03_File_Replace_Cancel: ["취소", "Cancel"], B03_File_ServiceWorker_Ready: [ "백그라운드 업로드 준비가 완료되었습니다.", "Background upload is ready.", ], B03_File_ServiceWorker_Unavailable: [ "현재 브라우저에서는 백그라운드 업로드를 사용할 수 없습니다.", "Background upload is unavailable in this browser.", ], /* --- B04_PreProcess 지표면 모델 분석 --- */ B04_Surface_Title: ["전처리", "Preprocess"], B04_Surface_Field_InputId: ["입력 파일 ID", "Input File ID"], B04_Surface_Field_InputId_Placeholder: ["예: 1", "e.g. 1"], /* 지면 필터·서피스·스무딩은 함께 모델 하나를 결정하는 값이라 한 컨테이너에 둔다 (2026-08-01 사용자 지시). 그래서 예전 그룹 제목 대신 항목 라벨로 쓴다. */ B04_Surface_Group_Analysis: ["지표면 분석", "Surface Analysis"], B04_Surface_Group_Filters: ["지면 필터", "Ground filter"], B04_Surface_Group_Methods: ["서피스", "Surface"], B04_Surface_Group_Display: ["모델 표시 옵션", "Model display options"], B04_Surface_SheetSurface: ["도엽등고 3D 서피스", "Map-sheet contour 3D surface"], B04_Surface_SheetLidar: ["라이다 겹쳐 보기", "Overlay LiDAR"], B04_Surface_SheetLidar_Missing: [ "겹쳐 볼 라이다 지표면 모델이 없습니다.", "No LiDAR surface model available to overlay.", ], B04_Surface_Group_ViewControls: ["뷰어 시점 제어", "Viewer camera"], B04_Surface_Field_Smoothing: ["스무딩", "Smoothing"], B04_Surface_Smoothing_On: ["적용", "On"], B04_Surface_Smoothing_Off: ["미적용", "Off"], B04_Surface_Smoothing_Unsupported: [ "이 지표면 표현은 스무딩을 지원하지 않습니다.", "This surface method does not support smoothing.", ], B04_Surface_Opt_PointSize: ["점 크기", "Point size"], B04_Surface_Opt_Density: ["밀도", "Density"], B04_Surface_Field_Force: ["기존 결과 무시하고 재계산", "Force recompute"], B04_Surface_Btn_Analyze: ["지표면 분석 실행", "Run Surface Analysis"], B04_Surface_Btn_Refresh: ["목록 새로고침", "Refresh"], B04_Surface_InputFiles: ["입력 포인트클라우드", "Input point cloud"], B04_Surface_InputFiles_Empty: [ "분석 가능한 LAS/LAZ 파일이 없습니다.", "No LAS/LAZ file is available.", ], B04_Surface_Input_FileName: ["파일명", "File name"], B04_Surface_Input_Crs: ["좌표계", "CRS"], B04_Surface_Input_Size: ["크기(MB)", "Size (MB)"], B04_Surface_PointCloud_Title: ["포인트클라우드 미리보기", "Point cloud preview"], B04_Surface_Status_Unknown: ["상태 미확인", "Unknown"], B04_Surface_GroundStats_Title: ["지면 필터 통계", "Ground filter stats"], B04_Surface_GroundStats_Empty: ["표시할 지면 통계가 없습니다.", "No ground stats to display."], B04_Surface_GroundStats_Filter: ["필터", "Filter"], B04_Surface_GroundStats_SourcePoints: ["지면 포인트", "Ground points"], B04_Surface_Result_Title: ["생성된 지표면 모델", "Generated Surface Models"], B04_Surface_Result_Empty: [ "아직 생성된 지표면 모델이 없습니다.", "No surface models generated yet.", ], B04_Surface_Model_Resolution: ["해상도(m)", "Resolution (m)"], B04_Surface_Model_Path: ["파일 경로", "File path"], B04_Surface_Model_Filter: ["지면 필터", "Ground filter"], B04_Surface_Model_Representation: ["표현 방식", "Representation"], B04_Surface_Model_Confirmed: ["확정됨", "Confirmed"], B04_Surface_Btn_Confirm: ["이 모델 확정", "Confirm this model"], B04_Surface_Confirm_Success: [ "모델을 확정했습니다. 필터: {filter}, 기법: {method}, 스무딩/표현: {smoothing}", "Model confirmed. Filter: {filter}, method: {method}, smoothing/representation: {smoothing}", ], B04_Surface_Confirm_Failed: ["모델 확정에 실패했습니다.", "Failed to confirm model."], B04_Surface_Build_Confirm: [ "이 조합({filter} · {method})은 아직 만들어지지 않았습니다.\n지금 계산해 영구 저장할까요? 자료량에 따라 수 분이 걸립니다.", "This combination ({filter} · {method}) has not been built yet.\nBuild and store it now? This can take several minutes depending on data size.", ], B04_Surface_Build_Action: ["계산하기", "Build"], B04_Surface_Build_Running: [ "지표면 모델 계산 중… 창을 닫지 마세요.", "Building surface model… keep this window open.", ], B04_Surface_Build_Done: [ "계산 완료 — {filter} · {method} 모델을 저장했습니다.", "Build complete — stored the {filter} · {method} model.", ], B04_Surface_Build_Failed: [ "지표면 모델 계산에 실패했습니다.", "Failed to build the surface model.", ], B04_Surface_Map_Title: ["2D 배경 지도 및 GIS 레이어", "2D Basemap and GIS Layers"], B04_Surface_Map_Background: ["배경 지도", "Basemap"], B04_Surface_Map_GisLayer: ["국가 GIS 레이어", "National GIS Layer"], B04_Surface_Map_None: ["없음", "None"], B04_Surface_Map_PlannedRoute: ["계획선", "Planned route"], /* 배수유역 분석 오버레이(관리자 확인용) — 조작 문구만 다국어로 둔다. 결과 상세 판독문(regionSummary)은 진단용 원문이라 그대로 둔다. */ B04_Surface_Watershed_Btn: ["유역 분석", "Basin analysis"], B04_Surface_Watershed_Btn_Tip: [ "계획 노선(B03 업로드)과 도엽 등고선·세류선으로 배수유역을 처음부터 다시 분석합니다. 30초 안팎이 걸리며 결과는 영구저장소에 남습니다. 저장된 결과는 지도를 열 때 자동으로 표시되므로, 조건을 바꿨을 때만 누르면 됩니다.", "Re-runs the drainage analysis from scratch using the planned route (uploaded in B03) and the sheet contours and streams. It takes about 30 seconds and the result is stored permanently. A stored result is shown automatically when the map opens, so press this only after changing the inputs.", ], B04_Surface_Watershed_Btn_Analyzing: ["분석 중…", "Analyzing…"], B04_Surface_Watershed_Btn_Loading: ["불러오는 중…", "Loading…"], B04_Surface_Watershed_Part_Primary: ["1차 유역", "Primary region"], B04_Surface_Watershed_Part_Basin: ["2차 유역", "Full basin"], B04_Surface_Watershed_Part_Flow: ["유역 방향", "Flow cells"], B04_Surface_Watershed_Part_Arrows: ["평균 흐름", "Mean flow"], B04_Surface_Watershed_Status_Analyzing: [ "배수유역을 처음부터 다시 분석하는 중입니다. 30초 안팎 걸립니다…", "Re-running the drainage analysis from scratch. This takes about 30 seconds…", ], B04_Surface_Watershed_Status_Loading: [ "저장된 배수유역 분석을 불러오는 중…", "Loading the stored drainage analysis…", ], B04_Surface_Watershed_LoadFailed: [ "배수유역을 불러오지 못했습니다.", "Failed to load the drainage analysis.", ], /* {message}=원인 */ B04_Surface_Watershed_Failed: ["유역 분석 실패: {message}", "Basin analysis failed: {message}"], B04_Surface_Watershed_NoSaved: [ "저장된 배수유역 분석이 없습니다. [유역 분석]을 누르세요.", "No stored drainage analysis. Press [Basin analysis].", ], B04_Surface_Watershed_Origin_Cached: ["저장분", "Cached"], /* {seconds}=재산정에 걸린 시간(초) */ B04_Surface_Watershed_Origin_Recomputed: ["재산정 {seconds}초", "Recomputed in {seconds}s"], /* 도로 유입 흐름 강도 */ B04_Surface_Flow_Strength: ["흐름 강도", "Flow strength"], B04_Surface_Flow_Strength_Tip: [ "도로 1m 구간마다 그 자리로 모이는 상류 면적을 색으로 칠하고, 물이 특히 많이 모이는 자리를 마커로 찍습니다. 마커를 누르면 그 지점으로 들어오는 셀들의 외곽선을 보여 줍니다.", "Colors each 1m stretch of road by the upstream area draining into it, and marks the spots that collect the most. Click a marker to outline the cells that drain into it.", ], B04_Surface_Flow_Legend_Title: ["흐름강도", "Flow strength"], B04_Surface_Flow_Hotspots: ["집중유역", "Inflow hotspots"], B04_Surface_Flow_Hotspots_Tip: [ "노선 위에서 물이 특히 많이 모이는 자리(유입 집중점)를 마커로 표시합니다. 마커를 누르면 그 지점으로 들어오는 셀들의 외곽선을 보여 줍니다.", "Marks the spots along the route that collect the most water. Click a marker to outline the cells draining into it.", ], B04_Surface_Flow_Inflow_Loading: ["유입 셀을 불러오는 중…", "Loading the contributing cells…"], /* {index}=마커 번호, {chainage}=누가거리, {area}=유입면적, {cells}=셀 수, {path}=최장 유하장 */ B04_Surface_Flow_Inflow_Summary: [ "유입 집중점 {index} · 측점 {chainage}m — 유입면적 {area} · 셀 {cells}개 · 최장 유하장 {path}m", "Hotspot {index} · Station {chainage}m — Area {area} · {cells} cells · Longest path {path}m", ], B04_Surface_Flow_Inflow_Failed: [ "유입 셀을 불러오지 못했습니다.", "Failed to load the contributing cells.", ], /* 상세 배수유역 (관 매설 지점 편집 + 세부유역 분할) */ B04_Surface_Basin_Btn: ["상세유역 분석", "Detail basins"], B04_Surface_Basin_Btn_Busy: ["분석 중…", "Analyzing…"], B04_Surface_Basin_Btn_Tip: [ "관 매설 지점을 기준으로 세부 배수유역을 나눕니다. 계획선 위에서 우클릭하면 관을 추가하고, 마커 위에서 우클릭하면 삭제합니다. 마커를 끌면 계획선을 따라 옮겨집니다.", "Splits the basin per culvert. Right-click the route to add a culvert, right-click a marker to remove it, and drag a marker to slide it along the route.", ], B04_Surface_Basin_Part_Basins: ["세부유역", "Sub-basins"], B04_Surface_Basin_Menu_Add: ["관 매설 추가", "Add culvert"], B04_Surface_Basin_Menu_Delete: ["관 매설 삭제", "Remove culvert"], /* {pipes}=관 개수, {stream}=기본, {spacing}=자동 보충, {user}=수동, {basins}=세부유역 수, {source}=종단 Z 출처 */ B04_Surface_Basin_Summary: [ "관 {pipes}개(기본 {stream} / 자동 {spacing} / 수동 {user}) · 세부유역 {basins}개 · 종단 Z {source}", "{pipes} culverts ({stream} stream / {spacing} auto / {user} manual) · {basins} sub-basins · profile Z {source}", ], B04_Surface_Basin_Edited: [ "편집 중 — [상세유역 분석]을 눌러 다시 나눕니다.", "Edited — press [Detail basins] to re-split.", ], B04_Surface_Basin_TooClose: [ "관끼리 최소 간격 {min}m 안에는 넣을 수 없습니다.", "Culverts cannot be closer than {min}m.", ], /* {index}=유역 번호, {chainage}=관 측점, {area}=유역면적, {relief}=표고차, {flow}=유하장 */ B04_Surface_Basin_Selected: [ "선택 유역 {index} · 측점 {chainage}m — 면적 {area} · 표고차 {relief}m · 유하장 {flow}m", "Basin {index} · Station {chainage}m — Area {area} · Relief {relief}m · Path {flow}m", ], B04_Surface_Basin_Failed: [ "상세유역을 계산하지 못했습니다.", "Failed to compute the sub-basins.", ], B04_Surface_Basin_Saved: [ "관 매설 지점 {count}개를 저장했습니다.", "Saved {count} culvert points.", ], B04_Surface_Map_PlannedRouteEmpty: [ "B03에서 계획노선 파일을 올리면 표시됩니다.", "Shown after the planned route file is uploaded in B03.", ], B04_Surface_Map_Satellite: ["위성", "Satellite"], B04_Surface_Map_Hybrid: ["하이브리드", "Hybrid"], B04_Surface_Map_White: ["백지도", "White map"], B04_Surface_Map_Cadastral: ["연속지적도", "Cadastral map"], B04_Surface_Map_Water: ["수계망", "Water network"], B04_Surface_Map_Landslide: ["산사태위험등급", "Landslide risk"], B04_Surface_Map_Sigungu: ["시군구", "District boundary"], B04_Surface_Map_Eupmyeondong: ["읍면동", "Town boundary"], B04_Surface_Map_Contour: ["등고선", "Contour lines"], B04_Surface_Map_SheetContour: ["도엽 등고선", "Sheet contours"], B04_Surface_Map_ContourLabel: ["등고 라벨", "Contour labels"], B04_Surface_Map_SheetStream: ["세류(전체)", "Streams (all)"], B04_Surface_Map_SheetElevPoint: ["표고점", "Spot elevation"], B04_Surface_Map_SheetCutFill: ["성절토", "Cut/fill slope"], B04_Surface_Map_SheetWall: ["옹벽석축", "Retaining wall"], B04_Surface_Map_SheetFlowDir: ["유수방향", "Flow direction"], B04_Surface_Map_Reset: ["보기 초기화", "Reset view"], B04_Surface_Map_ImageAlt: ["VWorld 배경 지도", "VWorld basemap"], B04_Surface_Map_Empty: [ "배경 지도 또는 GIS 레이어를 선택하세요.", "Select a basemap or GIS layer.", ], B04_Surface_Map_Loading: ["지도 레이어를 불러오는 중입니다.", "Loading map layers."], B04_Surface_Map_Features: ["{count}개 객체 표시", "Showing {count} features"], B04_Surface_Map_LoadFailed: ["지도 레이어를 불러오지 못했습니다.", "Failed to load map."], B04_Surface_Error_Project: ["먼저 프로젝트를 선택하세요.", "Select a project first."], B04_Surface_Error_InputId: ["유효한 입력 파일 ID를 입력하세요.", "Enter a valid input file ID."], B04_Surface_Error_Selection: [ "지면 필터와 지표면 표현을 각각 1개 이상 선택하세요.", "Select at least one filter and one method.", ], B04_Surface_Analyze_Success: ["지표면 분석을 완료했습니다.", "Surface analysis complete."], B04_Surface_Analyze_Failed: ["지표면 분석에 실패했습니다.", "Surface analysis failed."], B04_Surface_Load_Failed: ["모델 목록을 불러오지 못했습니다.", "Failed to load models."], } as const satisfies Record;