문헌(ANUDEM Hutchinson 1988/89, DEM 보간 비교연구)은 지형에 따라 우열이
갈려 단일 최적해가 없다고 본다. 방식을 하나로 고르지 않고 전부 만들어 두고
사용자가 눈으로 비교해 정하도록 했다(2026-08-30 사용자 지시).
신규 B04_PreProcess_Engine_SheetMethods.py — 거리비례 / TPS(박판, 감쇠
최소곡률 LSMR) / 라플라스 / TIN 선형 / TIN 곡면(Clough-Tocher) / IDW.
방식마다 dtm_sheet_{key}.npz + 프리뷰를 만들어 surface_models에
source_filter=sheet_{key}로 등록하므로 기존 뷰어·등고선·프리뷰 경로가 그대로
돈다. 폐합 링 안쪽 처리는 방식과 무관하게 똑같이 적용한다.
화면: 도엽등고 3D 서피스 컨테이너에 방식 전환 버튼과 '라이다 겹쳐 보기'
토글(반투명 파랑)을 달았다. 라이다는 같은 좌표계라 같은 자리에 겹친다.
실측(c1bb453f, 6종 65s): 평탄 셀 TPS 0.003% / 거리비례 0.014% /
TIN 곡면 0.026% / 라플라스 0.235% / TIN 선형 10.4% / IDW 69.1%.
LAS 대비 노선 |dz| 평균은 2.59~3.00m로 방식 간 차이가 작다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
669 lines
33 KiB
TypeScript
669 lines
33 KiB
TypeScript
/* =============================================================================
|
|
* 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_Progress: ["진행도", "Progress"],
|
|
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_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_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"],
|
|
B03_File_Select_Hint: [
|
|
"계획노선 CSV, LAS/LAZ 1개, PRJ, TFW를 선택하세요. TIF는 선택 사항입니다.",
|
|
"Select a planned-route CSV, one LAS/LAZ, PRJ, and TFW. TIF is optional.",
|
|
],
|
|
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_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"],
|
|
/* 지형 래스터만 선택 항목이라 계획노선·지형 자료를 한 묶음으로 둔다(2026-08-08). */
|
|
B03_File_Group_Inputs: ["입력 자료", "Input files"],
|
|
B03_File_Slot_PlannedRoute: ["계획노선 좌표", "Planned Route Coordinates"],
|
|
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: ["좌표계 정의", "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: [
|
|
"임시 보관함에서 불러오기",
|
|
"Load from temporary storage",
|
|
],
|
|
B03_Temp_None: ["선택된 보관 자료 없음", "No stored set selected"],
|
|
B03_Temp_Selected: ["선택됨:", "Selected:"],
|
|
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_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: [
|
|
"필수 파일(계획노선 CSV, LAS/LAZ, PRJ, TFW)을 모두 선택하세요.",
|
|
"Select all required files: planned-route CSV, LAS/LAZ, 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_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<string, LocaleEntry>;
|