- 4: volumeRange 기본 ±200㎥ 고정, 초과 시에만 확장 (B05·B06 공용) - 11: 진행단계 오버레이 최상단 대시보드(🏠) 버튼 — 항상 활성, B01 이동 - 6: 편집 버튼 방향색 — 올림(▲⇧) --color-danger, 내림(▼⇩) 파랑 #5b8def, hover 배경 포함 - 2: 구조물 목록 5개 높이 상한 + 내부 스크롤, 선택 항목 scrollIntoView - 5: 종단 렌더러 bottomInsetPx 옵션 신설 — B05만 X축·측점 라벨 17px 상향, ▼ 버튼과 오버랩 해소 (B06 무변화) - 1: 구조물 측점 열 기본값 미표기 — 측점 값 7행·곡선 2행 빈 셀, 선택 오버레이가 값 표시 - 8: B06 진입 stale 재계산을 측점별 순차 루프에서 일괄 프리뷰 1회로 교체 · preview API에 full_designs·rock_boundary_offsets 추가 · B05 세션 초안(readAlignmentDraft) 우선 사용해 두 화면 계획선 일치 - 7: 유토곡선을 1:1 분할에서 패널 바닥 오버레이 서브패널로 전환 · 종단도+테이블 배치 불변, 오버레이가 위를 덮음 · 높이는 공용 createPanelResizer(위 경계, 세션 보존), splitBar·MASS_SPLIT 제거 · 자체 가로 스크롤러 + 종단 스크롤러 양방향 동기화, 전용 ㎥ sticky Y축 · buildStickyYAxis 정의처를 MassHaul 모듈로 이동(Panel과 공용) typecheck·vite build·ruff 통과. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
106 lines
5.5 KiB
TypeScript
106 lines
5.5 KiB
TypeScript
/* =============================================================================
|
|
* ui_template_locale_common.ts
|
|
* 다국어 사전 — 공통 문구 (액션/상태/폼/네비게이션/워크플로우 라벨/앱 셸)
|
|
*
|
|
* 규칙 (frontend.md §3):
|
|
* - 모든 UI 문자열은 여기에 [한국어, 영어] 배열로 선(先) 등록.
|
|
* - 컴포넌트에서는 ui_locales.키값[currentLanguageIndex] 형태로만 참조.
|
|
* - 텍스트 하드코딩 절대 금지.
|
|
* - 신규 문구는 해당 섹션 최하단에 추가.
|
|
*
|
|
* 이 파일은 사전 데이터만 담는다. 합성·언어 전환·t() 헬퍼는 ui_template_locale.ts 참조.
|
|
* ========================================================================== */
|
|
|
|
/** [한국어, 영어] 배열 타입 */
|
|
export type LocaleEntry = readonly [ko: string, en: string];
|
|
|
|
export const ui_locales_common = {
|
|
/* ---------------------------------------------------------------------------
|
|
* 공통 — 액션 / 버튼
|
|
* ------------------------------------------------------------------------ */
|
|
Common_Btn_Confirm: ["확인", "Confirm"],
|
|
Common_Btn_Cancel: ["취소", "Cancel"],
|
|
Common_Btn_Save: ["저장", "Save"],
|
|
Common_Btn_Delete: ["삭제", "Delete"],
|
|
Common_Btn_Edit: ["수정", "Edit"],
|
|
Common_Btn_Add: ["추가", "Add"],
|
|
Common_Btn_Close: ["닫기", "Close"],
|
|
Common_Btn_Next: ["다음", "Next"],
|
|
Common_Btn_Prev: ["이전", "Previous"],
|
|
Common_Btn_Submit: ["제출", "Submit"],
|
|
Common_Btn_Reset: ["초기화", "Reset"],
|
|
Common_Btn_Download: ["다운로드", "Download"],
|
|
Common_Btn_Upload: ["업로드", "Upload"],
|
|
Common_Btn_Search: ["검색", "Search"],
|
|
Common_Btn_Apply: ["적용", "Apply"],
|
|
Common_Btn_Retry: ["다시 시도", "Retry"],
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
* 공통 — 상태 / 메시지
|
|
* ------------------------------------------------------------------------ */
|
|
Common_Status_Loading: ["불러오는 중...", "Loading..."],
|
|
Common_Status_Saving: ["저장 중...", "Saving..."],
|
|
Common_Status_Processing: ["처리 중...", "Processing..."],
|
|
Common_Status_Success: ["완료되었습니다", "Completed"],
|
|
Common_Status_Error: ["오류가 발생했습니다", "An error occurred"],
|
|
Common_Status_Empty: ["데이터가 없습니다", "No data available"],
|
|
Common_Msg_ConfirmDelete: ["정말 삭제하시겠습니까?", "Are you sure you want to delete?"],
|
|
Common_Msg_UnsavedChanges: ["저장되지 않은 변경사항이 있습니다", "You have unsaved changes"],
|
|
Common_Msg_RequiredField: ["필수 입력 항목입니다", "This field is required"],
|
|
Common_Msg_InvalidValue: ["올바르지 않은 값입니다", "Invalid value"],
|
|
Workflow_Progress_Title: ["진행단계", "Progress"],
|
|
Workflow_Step_Dashboard: ["대시보드", "Dashboard"],
|
|
Workflow_Overlay_Collapse: ["패널 접기", "Collapse panel"],
|
|
Workflow_Overlay_Expand: ["패널 펼치기", "Expand panel"],
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
* 공통 — 폼 / 검증
|
|
* ------------------------------------------------------------------------ */
|
|
Common_Form_Placeholder_Search: ["검색어를 입력하세요", "Enter search term"],
|
|
Common_Form_Placeholder_Select: ["선택하세요", "Select"],
|
|
Common_Validation_NumberRange: ["숫자 범위를 벗어났습니다", "Value out of range"],
|
|
Common_Validation_EmailFormat: ["이메일 형식이 올바르지 않습니다", "Invalid email format"],
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
* 글로벌 네비게이션 / 언어
|
|
* ------------------------------------------------------------------------ */
|
|
Nav_Home: ["홈", "Home"],
|
|
Nav_Login: ["로그인", "Login"],
|
|
Nav_Logout: ["로그아웃", "Logout"],
|
|
Nav_Register: ["회원가입", "Sign up"],
|
|
Nav_MyAccount: ["내 계정", "My Account"],
|
|
Lang_Korean: ["한국어", "Korean"],
|
|
Lang_English: ["영어", "English"],
|
|
Theme_Light: ["라이트 모드", "Light mode"],
|
|
Theme_Dark: ["다크 모드", "Dark mode"],
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
* 워크플로우 공통 (B04~B09 상단 진행 단계 라벨)
|
|
* ------------------------------------------------------------------------ */
|
|
WF_Step_Surface: ["전처리", "Preprocess"],
|
|
WF_Step_Route: ["종단설계", "Profile Design"],
|
|
WF_Step_ProfileCross: ["횡단설계", "Cross Design"],
|
|
WF_Step_DesignDetail: ["상세설계", "Detail Design"],
|
|
WF_Step_Quantity: ["수량산출", "Quantity"],
|
|
WF_Step_Estimation: ["설계도서", "Design Docs"],
|
|
WF_State_Stale: ["무효화됨 (하위 단계 변경)", "Stale (invalidated by downstream changes)"],
|
|
WF_State_Failed: ["실패", "Failed"],
|
|
WF_State_Complete: ["완료", "Complete"],
|
|
WF_State_InProgress: ["진행 중", "In Progress"],
|
|
WF_State_NotStarted: ["미실행", "Not Started"],
|
|
|
|
/* ---------------------------------------------------------------------------
|
|
* 앱 셸 — 헤더 / 푸터 (공통 네비게이션)
|
|
* ------------------------------------------------------------------------ */
|
|
App_BrandName: ["AISLO", "AISLO"],
|
|
App_Nav_Program: ["프로그램", "Program"],
|
|
App_Nav_Company: ["회사소개", "Company"],
|
|
App_Nav_News: ["소식", "News"],
|
|
App_Nav_Education: ["교육", "Education"],
|
|
App_Nav_Support: ["기술지원", "Support"],
|
|
App_Footer_Copyright: [
|
|
"© 2026 임도설계 및 견적 자동화. All rights reserved.",
|
|
"© 2026 Forest Road Design & Estimation. All rights reserved.",
|
|
],
|
|
} as const satisfies Record<string, LocaleEntry>;
|