diff --git a/A00_Common/design/design_leave.ts b/A00_Common/design/design_leave.ts index 345ba4168..ddb73bd98 100644 --- a/A00_Common/design/design_leave.ts +++ b/A00_Common/design/design_leave.ts @@ -1,7 +1,7 @@ /* ============================================================================= * A00_Common/design/design_leave.ts * B05 · B06 떠남 확인(346-4) — 저장 안 한 조작(초안 통)이 있으면 탭 닫기 · 다른 페이지로 갈 때 - * 공용 물음(`ui_template_leave_dialog` · [취소] [버리고 넘어감] [저장 후 넘어감]). + * 공용 물음(`ui_template_leave_dialog` · [취소] [폐기] [저장]). * * 고침 = 초안 통 칸 중 고침이 아닌 칸(고름 · 관 id 장부 · 종류 캐시 · 고른 구조물 넘김) · * 다른 페이지 칸(b08 · b09) · 저장 뒤에도 남기는 표준 횡단면(std-cross)을 뺀 것. @@ -24,7 +24,7 @@ import { } from "../b_page_state"; import { currentRoute, setLeaveGuard } from "../router"; -/** 초안 통이지만 고침으로 안 보는 칸 — 묻지 않고 [버리고 넘어감]에도 안 지움. */ +/** 초안 통이지만 고침으로 안 보는 칸 — 묻지 않고 [폐기]에도 안 지움. */ const NOT_EDITS = new Set([ "selection", "pipe-ids", @@ -81,7 +81,7 @@ export function designDirty(projectId: string): boolean { return cleanMarks.get(projectId) !== digest(signature); } -/** [버리고 넘어감] — 고침 칸만 지움(모든 노선). */ +/** [폐기] — 고침 칸만 지움(모든 노선). */ export function discardDesignEdits(projectId: string): void { editDraftNames().forEach((name) => clearState(name, projectId)); } diff --git a/A00_Common/spreadsheet/spreadsheet_actions.ts b/A00_Common/spreadsheet/spreadsheet_actions.ts index bf5dc6c13..a29be7fdc 100644 --- a/A00_Common/spreadsheet/spreadsheet_actions.ts +++ b/A00_Common/spreadsheet/spreadsheet_actions.ts @@ -23,7 +23,7 @@ const TEXT = { freezeAt: "지금 칸 기준 고정", unfreeze: "틀 고정 풀기", insert: "칸 넣기…(Ctrl+Shift++)", - remove: "칸 지우기…(Ctrl+-)", + remove: "칸 삭제…(Ctrl+-)", split: "텍스트 나누기…", dedupe: "중복된 항목 제거…", series: "연속 데이터 채우기…", diff --git a/A00_Common/spreadsheet/spreadsheet_condfmt.ts b/A00_Common/spreadsheet/spreadsheet_condfmt.ts index 625b7d7f6..a92a02de4 100644 --- a/A00_Common/spreadsheet/spreadsheet_condfmt.ts +++ b/A00_Common/spreadsheet/spreadsheet_condfmt.ts @@ -249,7 +249,7 @@ export function createCondFmtPanel(ctx: SpreadsheetContext): PartHandle { moveCondFmtRule(ctx, rule.id, 1); render(); }); - const del = createButton({ label: "지움", variant: "danger" }); + const del = createButton({ label: "삭제", variant: "danger" }); del.addEventListener("click", () => { removeCondFmtRule(ctx, rule.id); render(); diff --git a/A00_Common/spreadsheet/spreadsheet_condition.ts b/A00_Common/spreadsheet/spreadsheet_condition.ts index f53abb816..dd59f3476 100644 --- a/A00_Common/spreadsheet/spreadsheet_condition.ts +++ b/A00_Common/spreadsheet/spreadsheet_condition.ts @@ -44,7 +44,7 @@ const TEXT = { Then: ["→", "→"], Otherwise: ["아니면 →", "Otherwise →"], AddElseIf: ["+ 아니면 만약", "+ Else if"], - Remove: ["지움", "Remove"], + Remove: ["삭제", "Remove"], Make: ["만들기", "Make"], Cancel: ["취소", "Cancel"], Close: ["닫기", "Close"], diff --git a/A00_Common/spreadsheet/spreadsheet_format_dialog.ts b/A00_Common/spreadsheet/spreadsheet_format_dialog.ts index 66d199ee7..ce97d678d 100644 --- a/A00_Common/spreadsheet/spreadsheet_format_dialog.ts +++ b/A00_Common/spreadsheet/spreadsheet_format_dialog.ts @@ -66,7 +66,7 @@ const TEXT = { left: "왼", right: "오른", fillColor: "채움색", - clear: "지움", + clear: "삭제", protectNote: "칸 잠금 · 숨김은 자리만 둠(시트 보호 자체가 아직 없음)", lock: "잠금", hidden: "수식 숨김", diff --git a/A00_Common/spreadsheet/spreadsheet_names.ts b/A00_Common/spreadsheet/spreadsheet_names.ts index 7bd63780d..0849b2f9a 100644 --- a/A00_Common/spreadsheet/spreadsheet_names.ts +++ b/A00_Common/spreadsheet/spreadsheet_names.ts @@ -190,7 +190,7 @@ export function createNameManagerPanel(ctx: SpreadsheetContext): PartHandle { input.focus(); input.select(); }); - const del = createButton({ label: "지움", variant: "danger" }); + const del = createButton({ label: "삭제", variant: "danger" }); del.addEventListener("click", () => { deleteName(ctx, 이름); render(); diff --git a/A00_Common/spreadsheet/spreadsheet_sheet_extra.ts b/A00_Common/spreadsheet/spreadsheet_sheet_extra.ts index a254ed7dc..76aa7a80d 100644 --- a/A00_Common/spreadsheet/spreadsheet_sheet_extra.ts +++ b/A00_Common/spreadsheet/spreadsheet_sheet_extra.ts @@ -76,7 +76,7 @@ export function createSheetExtraPanel(ctx: SpreadsheetContext): PartHandle { colorInput.addEventListener("change", () => setSheetTabColor(ctx, sheet.id, colorInput.value), ); - const colorClear = createButton({ label: "색 지움", variant: "ghost" }); + const colorClear = createButton({ label: "색 삭제", variant: "ghost" }); colorClear.addEventListener("click", () => { setSheetTabColor(ctx, sheet.id, null); render(); diff --git a/A00_Common/spreadsheet/spreadsheet_text.ts b/A00_Common/spreadsheet/spreadsheet_text.ts index f5cad79f0..548238146 100644 --- a/A00_Common/spreadsheet/spreadsheet_text.ts +++ b/A00_Common/spreadsheet/spreadsheet_text.ts @@ -25,7 +25,7 @@ const TEXT = { Strike: ["취소선", "Strikethrough"], TextColor: ["글자색", "Text color"], FillColor: ["채움색", "Fill color"], - ColorClear: ["지움", "Clear"], + ColorClear: ["색 삭제", "Clear color"], HAlign: ["가로 정렬", "Horizontal align"], VAlign: ["세로 정렬", "Vertical align"], Align_general: ["일반", "General"], @@ -70,7 +70,7 @@ const TEXT = { ], SheetAdd: ["시트 추가", "Add sheet"], SheetRename: ["이름 바꾸기", "Rename"], - SheetDelete: ["지우기", "Delete"], + SheetDelete: ["삭제", "Delete"], SheetDuplicate: ["복사", "Duplicate"], SheetRenamePrompt: ["새 시트 이름", "New sheet name"], SheetDeleteConfirm: [ @@ -84,9 +84,9 @@ const TEXT = { MenuCopy: ["복사", "Copy"], MenuPasteHint: ["Ctrl+V 를 쓸 것", "Use Ctrl+V"], MenuInsertRow: ["행 넣기", "Insert row"], - MenuDeleteRow: ["행 지우기", "Delete row"], + MenuDeleteRow: ["행 삭제", "Delete row"], MenuInsertCol: ["열 넣기", "Insert column"], - MenuDeleteCol: ["열 지우기", "Delete column"], + MenuDeleteCol: ["열 삭제", "Delete column"], MenuHide: ["숨기기", "Hide"], MenuUnhide: ["숨김 취소", "Unhide"], MenuClearContent: ["내용 지우기", "Clear content"], diff --git a/A00_Common/spreadsheet/spreadsheet_validation.ts b/A00_Common/spreadsheet/spreadsheet_validation.ts index 51b376306..23a7137d1 100644 --- a/A00_Common/spreadsheet/spreadsheet_validation.ts +++ b/A00_Common/spreadsheet/spreadsheet_validation.ts @@ -183,7 +183,7 @@ export function createValidationPanel(ctx: SpreadsheetContext): PartHandle { const label = el("span", { text: `${rule.범위.map(rangeToA1).join(", ")} — ${kindText(rule.규칙)}(${rule.어기면})`, }); - const del = createButton({ label: "지움", variant: "danger" }); + const del = createButton({ label: "삭제", variant: "danger" }); del.addEventListener("click", () => { removeValidationRule(ctx, rule.id); render(); diff --git a/B01_Dashboard/B01_Dashboard_UI_AddressField.ts b/B01_Dashboard/B01_Dashboard_UI_AddressField.ts index 595a03116..a9850245d 100644 --- a/B01_Dashboard/B01_Dashboard_UI_AddressField.ts +++ b/B01_Dashboard/B01_Dashboard_UI_AddressField.ts @@ -58,7 +58,7 @@ export function buildAddressField(initial: string | null): AddressFieldHandle { placeholder: "도로명·지번·건물명 일부 (예: 판교역로 235)", }); const findBtn = createButton({ - label: "주소 찾기", + label: "주소 검색", variant: "ghost", onClick: () => void runSearch(), }); diff --git a/B01_Dashboard/B01_Dashboard_UI_AssetPicker.ts b/B01_Dashboard/B01_Dashboard_UI_AssetPicker.ts index 780028bec..3a1a36ced 100644 --- a/B01_Dashboard/B01_Dashboard_UI_AssetPicker.ts +++ b/B01_Dashboard/B01_Dashboard_UI_AssetPicker.ts @@ -70,7 +70,7 @@ export function createAssetField( const fallback = options.fallback ?? null; const reset = createButton({ - label: "기본으로", + label: "기본값 복원", variant: "ghost", onClick: () => { selected = null; @@ -173,7 +173,7 @@ function createSignaturePad(): { root: HTMLDivElement; toFile: () => Promise { context?.clearRect(0, 0, canvas.width, canvas.height); @@ -312,7 +312,7 @@ function openAssetPickerModal( ); const pad = kind === "SIGNATURE" ? createSignaturePad() : null; const add = createButton({ - label: "파일 올리고 이 프로젝트에 쓰기", + label: "파일 업로드", onClick: async () => { if (!label.input.value.trim()) return label.setError("이름을 넣어 주세요."); const chosen = file.input.files?.[0] ?? (await pad?.toFile()) ?? null; diff --git a/B01_Dashboard/B01_Dashboard_UI_Modals.ts b/B01_Dashboard/B01_Dashboard_UI_Modals.ts index 6a7766388..7ec8e65cf 100644 --- a/B01_Dashboard/B01_Dashboard_UI_Modals.ts +++ b/B01_Dashboard/B01_Dashboard_UI_Modals.ts @@ -461,7 +461,7 @@ export function openCreateCompanyModal(): void { const matches = document.createElement("div"); matches.className = "b01-dashboard__actions"; const findBtn = createButton({ - label: "이미 있는 회사인지 찾기", + label: "회사 검색", variant: "ghost", onClick: async function onB01_Company_Duplicate_Click() { matches.innerHTML = ""; @@ -589,7 +589,7 @@ export function openAddMemberModal( companyId?: number | null, ): void { const query = createInputField({ - label: "이름 또는 이메일로 찾기", + label: "이름 · 이메일 검색", placeholder: "두 글자 이상", }); const results = document.createElement("div"); @@ -632,7 +632,7 @@ export function openAddMemberModal( }); const invite = createButton({ - label: "가입 안내 메일 보내기", + label: "초대 메일 발송", variant: "ghost", onClick: async function onB01_Member_Invite_Click() { const text = query.input.value.trim(); diff --git a/B07_DesignDetail/openwebcad/src/commands/commands.view.ts b/B07_DesignDetail/openwebcad/src/commands/commands.view.ts index 044259c38..a0b287178 100644 --- a/B07_DesignDetail/openwebcad/src/commands/commands.view.ts +++ b/B07_DesignDetail/openwebcad/src/commands/commands.view.ts @@ -43,7 +43,7 @@ export const VIEW_COMMANDS: CadCommand[] = [ label: '범위 줌', aliases: ['Z'], glyph: '⛶', - hint: '범위(E) · 전체(A) · 이전(P) · 윈도우(W) · 2X — 오토캐드 ZOOM(⛶ 단추 = 바로 범위)', + hint: '범위(E) · 전체(A) · 이전(P) · 윈도우(W) · 2X — 오토캐드 ZOOM(⛶ 버튼 = 바로 범위)', run: () => { startZoomPrompt(); // 덧물음 — 명령 중 'Z 도 같은 길 return ''; diff --git a/B09_Estimation/B09_Estimation_UI_Popup.ts b/B09_Estimation/B09_Estimation_UI_Popup.ts index eb45a731f..23a9e791c 100644 --- a/B09_Estimation/B09_Estimation_UI_Popup.ts +++ b/B09_Estimation/B09_Estimation_UI_Popup.ts @@ -144,7 +144,7 @@ export function openRowPopup(o: PopupOpen): void { title.className = "b09-popup__title"; title.textContent = tabName(tab); const goButton = createButton({ - label: "탭으로", + label: "탭 이동", variant: "ghost", size: "sm", onClick: () => { diff --git a/B09_Estimation/B09_Estimation_UI_Tabs_Base_Quote.ts b/B09_Estimation/B09_Estimation_UI_Tabs_Base_Quote.ts index 6525253d6..8a28db2ef 100644 --- a/B09_Estimation/B09_Estimation_UI_Tabs_Base_Quote.ts +++ b/B09_Estimation/B09_Estimation_UI_Tabs_Base_Quote.ts @@ -59,7 +59,7 @@ export function openQuotes(key: string, label: string, onChange: (names: string[ onClick: () => void download(key, f.name).catch(fail), }), createButton({ - label: "지우기", + label: "삭제", variant: "danger", size: "sm", onClick: () => diff --git a/B09_Estimation/B09_Estimation_UI_Tabs_Bill_Level.ts b/B09_Estimation/B09_Estimation_UI_Tabs_Bill_Level.ts index aff2f53c6..f70f0cb37 100644 --- a/B09_Estimation/B09_Estimation_UI_Tabs_Bill_Level.ts +++ b/B09_Estimation/B09_Estimation_UI_Tabs_Bill_Level.ts @@ -28,7 +28,7 @@ const ACTS: [string, string][] = [ ["↓ 아래로", "아래로 ↓"], ]; -const GUIDE = "줄 누르고 단추 · 방향키 ←→ 레벨 · ↑↓ 자리 · 줄 끌기 · 더블클릭 · Enter · F2 입력"; +const GUIDE = "줄 누르고 버튼 · 방향키 ←→ 레벨 · ↑↓ 자리 · 줄 끌기 · 더블클릭 · Enter · F2 입력"; let picked: string | null = null; /** 242-1 이동해 온 범위 [첫 줄, 끝 줄] — 고름과 한때 하나 */ diff --git a/B09_Estimation/draft/B09_Draft_Print_Page.ts b/B09_Estimation/draft/B09_Draft_Print_Page.ts index 913f74859..1a818890f 100644 --- a/B09_Estimation/draft/B09_Draft_Print_Page.ts +++ b/B09_Estimation/draft/B09_Draft_Print_Page.ts @@ -178,7 +178,7 @@ export function renderB09Print(root: HTMLElement): MountedPage { }; const pdfBtn = createButton({ - label: "PDF 내려받기", + label: "PDF 다운로드", onClick: () => { if (!shown) return; const name = `${label()}.pdf`; @@ -190,7 +190,7 @@ export function renderB09Print(root: HTMLElement): MountedPage { }); pdfBtn.dataset.b09PrintPdf = ""; const xlsxBtn = createButton({ - label: "엑셀 내려받기", + label: "엑셀 다운로드", variant: "ghost", onClick: () => { const ids = picked(); @@ -205,7 +205,7 @@ export function renderB09Print(root: HTMLElement): MountedPage { }); xlsxBtn.dataset.b09PrintXlsx = ""; const back = createButton({ - label: "B09 로 돌아가기", + label: "B09 복귀", variant: "ghost", onClick: () => navigateTo(ROUTES.B09_ESTIMATION), }); diff --git a/M01_MasterData/M01_MasterData_UI_Logic_Text.ts b/M01_MasterData/M01_MasterData_UI_Logic_Text.ts index 6a7f7010a..9c69ff747 100644 --- a/M01_MasterData/M01_MasterData_UI_Logic_Text.ts +++ b/M01_MasterData/M01_MasterData_UI_Logic_Text.ts @@ -18,7 +18,7 @@ const TEXT = { List_New: ["새것", "New"], List_Deleted: ["지움", "Deleted"], Bar_Back: ["← 로직 목록", "← Logics"], - Bar_Delete: ["로직 지우기", "Delete logic"], + Bar_Delete: ["로직 삭제", "Delete logic"], Bar_Save: ["저장", "Save"], Bar_Discard: ["캐시 삭제", "Clear cache"], Bar_Pending: ["저장 안 한 로직 {n} 개", "{n} unsaved logics"], @@ -57,7 +57,7 @@ const TEXT = { Rounding: ["끝수", "Rounding"], Formula: ["식", "Formula"], AddRow: ["줄 추가", "Add line"], - DeleteRow: ["줄 지우기", "Delete line"], + DeleteRow: ["줄 삭제", "Delete line"], Calc_Title: ["시험 계산", "Test calculation"], Calc_Run: ["계산", "Calculate"], Calc_NoInputs: ["받을 값 없음", "No inputs"], diff --git a/M02_MasterTemplete/DataFlow/M02_DF_Diagram_Parts.ts b/M02_MasterTemplete/DataFlow/M02_DF_Diagram_Parts.ts index a81da8fbc..cbf1c78f3 100644 --- a/M02_MasterTemplete/DataFlow/M02_DF_Diagram_Parts.ts +++ b/M02_MasterTemplete/DataFlow/M02_DF_Diagram_Parts.ts @@ -60,7 +60,7 @@ export const TEXT = { ], LineOf: ["선 · {a} → {b}", "Line · {a} → {b}"], Hint: [ - "상자 머리를 끌어 옮김 · 가운데 단추(또는 Space + 끌기)로 판 옮김 · 휠로 확대", + "상자 머리를 끌어 옮김 · 가운데 버튼(또는 Space + 끌기)로 판 옮김 · 휠로 확대", "Drag a head to move · middle button (or Space + drag) to pan · wheel to zoom", ], Break: ["끊긴 곳", "Break"], diff --git a/M02_MasterTemplete/M02_MasterTemplete_CardHelp.ts b/M02_MasterTemplete/M02_MasterTemplete_CardHelp.ts index 9f34e5722..7e9821948 100644 --- a/M02_MasterTemplete/M02_MasterTemplete_CardHelp.ts +++ b/M02_MasterTemplete/M02_MasterTemplete_CardHelp.ts @@ -65,7 +65,7 @@ export const CARD_HELP: Record<"structure" | "labor" | "area", CardHelp> = { ["로직 줄 누름", "넣을 값 창 — 그 로직의 넣을 값 고침"], ["수량산출 칸", "수기 입력 · 면적산출 칸 고르기"], ["별칭 칸", "줄에 따로 이름 붙임"], - ["줄 끝 단추", "그 줄을 뺌"], + ["줄 끝 버튼", "그 줄을 뺌"], ["자재 추가", "자재를 골라 자재목록에 넣음"], FOLD, ], diff --git a/M02_MasterTemplete/M02_MasterTemplete_Labor_Diagram.ts b/M02_MasterTemplete/M02_MasterTemplete_Labor_Diagram.ts index 1d653f7a2..7dab24291 100644 --- a/M02_MasterTemplete/M02_MasterTemplete_Labor_Diagram.ts +++ b/M02_MasterTemplete/M02_MasterTemplete_Labor_Diagram.ts @@ -23,7 +23,7 @@ const TEXT = { Zoom_Out: ["작게", "Zoom out"], Fit: ["한눈에", "Fit"], Hint: [ - "가운데 단추 또는 Space + 끌기로 판 옮김 · Ctrl + 휠로 확대", + "가운데 버튼 또는 Space + 끌기로 판 옮김 · Ctrl + 휠로 확대", "Middle button or Space + drag to move · Ctrl + wheel to zoom", ], None: ["단가산출 로직이 없음", "No logics yet"], diff --git a/resources/help/B02/00_설명서.md b/resources/help/B02/00_설명서.md index ce3f51ea9..6b093ee97 100644 --- a/resources/help/B02/00_설명서.md +++ b/resources/help/B02/00_설명서.md @@ -4,6 +4,6 @@ ## 작업 순서 -## 단추 +## 버튼 ## 주의할 점 diff --git a/resources/help/B03/00_설명서.md b/resources/help/B03/00_설명서.md index bf1fc7923..2d7ae7e01 100644 --- a/resources/help/B03/00_설명서.md +++ b/resources/help/B03/00_설명서.md @@ -4,6 +4,6 @@ ## 작업 순서 -## 단추 +## 버튼 ## 주의할 점 diff --git a/resources/help/B04/00_설명서.md b/resources/help/B04/00_설명서.md index bcb9a433f..399e4ea5f 100644 --- a/resources/help/B04/00_설명서.md +++ b/resources/help/B04/00_설명서.md @@ -4,6 +4,6 @@ ## 작업 순서 -## 단추 +## 버튼 ## 주의할 점 diff --git a/resources/help/B05/00_설명서.md b/resources/help/B05/00_설명서.md index 52d74d9b4..89349f545 100644 --- a/resources/help/B05/00_설명서.md +++ b/resources/help/B05/00_설명서.md @@ -4,6 +4,6 @@ ## 작업 순서 -## 단추 +## 버튼 ## 주의할 점 diff --git a/resources/help/B06/00_설명서.md b/resources/help/B06/00_설명서.md index 0308a208e..e19d73653 100644 --- a/resources/help/B06/00_설명서.md +++ b/resources/help/B06/00_설명서.md @@ -4,6 +4,6 @@ ## 작업 순서 -## 단추 +## 버튼 ## 주의할 점 diff --git a/resources/help/B07/00_설명서.md b/resources/help/B07/00_설명서.md index 6fc3ddd3c..1a82be777 100644 --- a/resources/help/B07/00_설명서.md +++ b/resources/help/B07/00_설명서.md @@ -4,6 +4,6 @@ ## 작업 순서 -## 단추 +## 버튼 ## 주의할 점 diff --git a/resources/help/B08/00_설명서.md b/resources/help/B08/00_설명서.md index 291ac50b7..5b7df54e0 100644 --- a/resources/help/B08/00_설명서.md +++ b/resources/help/B08/00_설명서.md @@ -4,6 +4,6 @@ ## 작업 순서 -## 단추 +## 버튼 ## 주의할 점 diff --git a/resources/help/B09/00_설명서.md b/resources/help/B09/00_설명서.md index 4297e096b..6f6f854a6 100644 --- a/resources/help/B09/00_설명서.md +++ b/resources/help/B09/00_설명서.md @@ -4,6 +4,6 @@ ## 작업 순서 -## 단추 +## 버튼 ## 주의할 점 diff --git a/resources/tester/test_303_b09_row_popup.py b/resources/tester/test_303_b09_row_popup.py index 2012e4161..a6f1d1eb8 100644 --- a/resources/tester/test_303_b09_row_popup.py +++ b/resources/tester/test_303_b09_row_popup.py @@ -249,7 +249,7 @@ def test_창_열_제목_강조_줄_자리(): ) assert out["boxes"] == ["bill"] and out["n"] == 1 assert out["cls"] == "b09-estimation b09-popup ui-popup" # 창 안 = b09 표 꼴(빨강 테두리) - assert out["head"] == ["설계내역서", "탭으로", "×"] + assert out["head"] == ["설계내역서", "탭 이동", "×"] assert out["rows"] == ["b1", "b2", "b3"] # 그 줄 + 자손 assert out["rowCls"] == ["is-title is-pick is-pick-top", "is-pick", "is-pick is-pick-end"] assert out["columns"] is True and out["caption"] == "설계내역서" # 열 제목(머리 여러 줄) 그대로 @@ -291,7 +291,7 @@ def test_닫기_탭으로_새_누름_주소(): "\nconst a = boxes();" "\nopen(); tables[2].onCellClick(0, 'name'); open('b4');" # 화면 새 누름 = 있던 창 모두 닫고 새로 "\nconst b = [boxes(), rows(4)];" - "\nhead(0)[1].click();" # [탭으로] = 옮기고 모두 닫음 + "\nhead(0)[1].click();" # [탭 이동] = 옮기고 모두 닫음 "\nconst c = [boxes(), [...gone]];" "\nopen(); hashFns.forEach((f) => f());" "\nconst d = boxes();" diff --git a/resources/tester/test_m02_leave_dialog.py b/resources/tester/test_m02_leave_dialog.py index 594b1fc7e..2b8017c54 100644 --- a/resources/tester/test_m02_leave_dialog.py +++ b/resources/tester/test_m02_leave_dialog.py @@ -1,9 +1,9 @@ """저장 안 한 고침 3단추 물음(PLAN 86-1 · `ui_template_leave_dialog.ts`) — Node 로 TS 를 돌려 판정. 못박는 것 - - 단추 순서 [취소] [버리고 넘어감] [저장 후 넘어감] · 기본 초점 = 취소 · Esc = 취소. - - 저장 후 넘어감: 저장 성공 + 고침 없음 = saved / 저장 던짐 · 고침 남음 = stay(머묾). - - 버리고 넘어감: discard 갈고리 호출 · 취소: 아무것도 안 부름. + - 단추 순서 [취소] [폐기] [저장] · 기본 초점 = 취소 · Esc = 취소. + - 저장: 저장 성공 + 고침 없음 = saved / 저장 던짐 · 고침 남음 = stay(머묾). + - 폐기: discard 갈고리 호출 · 취소: 아무것도 안 부름. - M02 자리(UI_Main · Structure · ItemCards)가 이 물음을 씀. """ diff --git a/resources/tester/test_ui_loading.py b/resources/tester/test_ui_loading.py index f065511eb..f29688c0f 100644 --- a/resources/tester/test_ui_loading.py +++ b/resources/tester/test_ui_loading.py @@ -2,7 +2,7 @@ ① `delayedShow` 를 Node 로 가짜 시계로 돌림 — 0.3초 전에 끝나면 안 보임(깜빡임 없음) · 넘으면 보이고 끝나면 걷힘 · 끝낸 뒤 시계가 와도 안 보임. -② 실패 자리 = 까닭 글(「불러오지 못함 — 까닭」) + [다시 불러오기] · 화면 전체 잠금 안 씀. +② 실패 자리 = 까닭 글(「불러오지 못함 — 까닭」) + [새로고침] · 화면 전체 잠금 안 씀. ③ M02 나무 · 상세(표 · 도면) · 조합 목록 · 조합 상세 · 항목 카드가 이 부품을 씀. """ @@ -70,7 +70,7 @@ def test_실패_글과_다시_불러오기_M02_자리(): assert "clear: (id) => clearTimeout(id)," in src locale = _text(ROOT / "ui_template" / "ui_template_locale_common.ts") assert 'Common_Load_Failed: ["불러오지 못함"' in locale - assert 'Common_Reload: ["다시 불러오기"' in locale + assert 'Common_Reload: ["새로고침"' in locale tree = _text(M02 / "M02_MasterTemplete_TreePanel.ts") assert "const stop = showLoading(body);" in tree assert "loadingError(why(error), () => void refresh())" in tree diff --git a/ui_template/cad_host/cad_host_frame_edit.ts b/ui_template/cad_host/cad_host_frame_edit.ts index f82c54c09..ec2f12eba 100644 --- a/ui_template/cad_host/cad_host_frame_edit.ts +++ b/ui_template/cad_host/cad_host_frame_edit.ts @@ -93,7 +93,7 @@ export function createFrameTemplateEditor( * 되돌릴 길이 없으면 도각을 한 번 잘못 저장한 것만으로 도면이 열리지 않는다. */ const resetButton = createButton({ - label: "기본 도각으로", + label: "기본 도각 복원", variant: "ghost", onClick: () => void resetToDefault(), }); diff --git a/ui_template/cad_host/cad_host_tabs.ts b/ui_template/cad_host/cad_host_tabs.ts index 5e9ef481f..9140d49fc 100644 --- a/ui_template/cad_host/cad_host_tabs.ts +++ b/ui_template/cad_host/cad_host_tabs.ts @@ -72,10 +72,10 @@ export interface CadTabs { const TEXT = { add: "새 장", rename: "두 번 눌러 이름 바꾸기", - remove: "장 지우기", + remove: "장 삭제", close: "닫기", removeAsk: "「{name}」 장을 지울까요? 저장하면 되돌릴 수 없음", - removeOk: "지우기", + removeOk: "삭제", closeAsk: "「{name}」 에 저장 안 한 고침이 있음 — 버리고 닫을까요?", closeOk: "버리고 닫기", emptyName: "장 이름을 넣을 것", diff --git a/ui_template/sheet/ui_template_sheet_text.ts b/ui_template/sheet/ui_template_sheet_text.ts index b53aba30f..1c6966dea 100644 --- a/ui_template/sheet/ui_template_sheet_text.ts +++ b/ui_template/sheet/ui_template_sheet_text.ts @@ -7,7 +7,7 @@ import { currentLanguageIndex } from "@ui/ui_template_locale"; const TEXT = { Col_Add: ["열 추가", "Add column"], - Col_Delete: ["열 지우기", "Delete column"], + Col_Delete: ["열 삭제", "Delete column"], Col_New: ["새 열", "New column"], Row_Unit: ["단위", "Unit"], Row_Unit_Price: ["일위대가", "Unit price"], diff --git a/ui_template/ui_template_leave_dialog.ts b/ui_template/ui_template_leave_dialog.ts index cf0a72ccb..d3fecf6c8 100644 --- a/ui_template/ui_template_leave_dialog.ts +++ b/ui_template/ui_template_leave_dialog.ts @@ -1,6 +1,6 @@ /* ============================================================================= * ui_template_leave_dialog.ts - * 저장 안 한 고침이 있을 때 넘어가기 전 물음 — 단추 셋: [취소] [버리고 넘어감] [저장 후 넘어감](주 단추). + * 저장 안 한 고침이 있을 때 넘어가기 전 물음 — 버튼 셋: [취소] [폐기] [저장](주 버튼). * 기본 초점 = 취소 · Esc = 취소 · 저장이 실패하거나 고침이 남으면 머묾. * 몸은 공용 확인 창(`showConfirmDialog`)과 같은 틀(.ui-confirm). * ========================================================================== */ @@ -57,7 +57,7 @@ export interface LeaveHooks { save: () => Promise; /** 저장 뒤에도 고침이 남았나 — 남으면 머묾 */ stillDirty: () => boolean; - /** [버리고 넘어감] 때 */ + /** [폐기] 때 */ discard?: () => void | Promise; } diff --git a/ui_template/ui_template_locale_a.ts b/ui_template/ui_template_locale_a.ts index 1768a1835..59ac938b8 100644 --- a/ui_template/ui_template_locale_a.ts +++ b/ui_template/ui_template_locale_a.ts @@ -181,11 +181,11 @@ export const ui_locales_a = { A06_Login_Error_Email: ["이메일 형식이 올바르지 않습니다.", "Invalid email format."], A06_Login_Field_Otp: ["이메일 인증 코드", "Email verification code"], A06_Login_Field_Otp_Placeholder: ["6자리 코드를 입력하세요", "Enter the 6-digit code"], - A06_Login_Verify: ["인증하고 로그인", "Verify and sign in"], + A06_Login_Verify: ["인증", "Verify"], A06_Login_OtpSent: ["인증 코드를 이메일로 발송했습니다.", "A verification code was emailed."], A06_Login_OtpResend: ["인증 코드 재발송", "Resend verification code"], A06_Login_OtpResendCountdown: ["{seconds}초 후 재발송", "Resend in {seconds}s"], - A06_Login_OtpBack: ["이메일/비밀번호 다시 입력", "Re-enter email/password"], + A06_Login_OtpBack: ["재입력", "Re-enter"], A06_Login_Success: ["로그인되었습니다.", "Signed in."], A06_Login_Error_Request: ["로그인 요청에 실패했습니다.", "Sign-in request failed."], @@ -209,7 +209,7 @@ export const ui_locales_a = { A07_Register_Field_Phone: ["전화번호", "Phone number"], A07_Register_Field_Phone_Placeholder: ["010-1234-5678", "010-1234-5678"], A07_Register_Submit: ["회원가입", "Sign up"], - A07_Register_ToLogin: ["이미 계정이 있으신가요? 로그인", "Already have an account? Sign in"], + A07_Register_ToLogin: ["로그인", "Sign in"], A07_Register_Error_Required: [ "모든 필수 항목을 입력하세요.", "Please fill in all required fields.", diff --git a/ui_template/ui_template_locale_b1.ts b/ui_template/ui_template_locale_b1.ts index bd455c923..e87f4d8d6 100644 --- a/ui_template/ui_template_locale_b1.ts +++ b/ui_template/ui_template_locale_b1.ts @@ -21,7 +21,7 @@ export const ui_locales_b1 = { "프로젝트가 없어졌습니다 · 대시보드에서 다시 고르세요.", "This project no longer exists. Choose a project again on the dashboard.", ], - B_Project_Gone_ToDashboard: ["대시보드로", "Go to dashboard"], + B_Project_Gone_ToDashboard: ["대시보드", "Dashboard"], /* --- B01_Dashboard 계정 관리 공통 문구 --- */ B01_Account_Title: ["내 계정", "My Account"], @@ -62,7 +62,7 @@ export const ui_locales_b1 = { B01_Dashboard_Company: ["회사 정보", "Company"], B01_Dashboard_NoCompany: ["회사 미연결", "No company linked"], B01_Dashboard_CreateCompany: ["회사 생성", "Create company"], - B01_Dashboard_FindCompany: ["회사 찾기", "Find company"], + B01_Dashboard_FindCompany: ["회사 검색", "Find company"], B01_Dashboard_JoinCompany: ["가입 신청", "Request to join"], B01_Dashboard_Members: ["팀원 관리", "Team members"], B01_Dashboard_AddMember: ["팀원 추가", "Add member"], @@ -352,7 +352,7 @@ export const ui_locales_b1 = { 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_New_Button: ["새 파일", "New file"], B03_File_Overview_Complete: [ "필수 파일 업로드와 지표면 분석이 모두 완료된 프로젝트입니다. 파일을 다시 올리면 기존 결과가 교체됩니다.", "All required files are uploaded and surface analysis is complete. Re-uploading replaces existing results.", @@ -366,7 +366,7 @@ export const ui_locales_b1 = { "이 슬롯에는 이미 업로드된 파일이 있습니다. 새 파일을 올리면 기존 파일과 그에 따른 분석 결과(지표면 모델 등)가 교체됩니다. 계속하시겠습니까?", "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_Confirm: ["교체", "Replace"], B03_File_Replace_Cancel: ["취소", "Cancel"], B03_File_ServiceWorker_Ready: [ "백그라운드 업로드 준비가 완료되었습니다.", diff --git a/ui_template/ui_template_locale_b2.ts b/ui_template/ui_template_locale_b2.ts index d03d9a579..69df77e87 100644 --- a/ui_template/ui_template_locale_b2.ts +++ b/ui_template/ui_template_locale_b2.ts @@ -1031,9 +1031,9 @@ export const ui_locales_b2 = { "아직 확정된 지표면이 없습니다. 필수 파일을 올리면 지표면 분석이 자동으로 진행되고, 끝나면 이 화면이 자료를 준비합니다.", "No confirmed surface yet. Upload the required files — the surface analysis runs automatically, and this screen prepares the data once it finishes.", ], - B11_Loading_Btn_FileInput: ["파일 입력 화면으로", "Go to file input"], - B11_Loading_Btn_Continue: ["그래도 화면으로 이동", "Continue anyway"], - B11_Loading_Btn_Dashboard: ["대시보드로", "Back to dashboard"], + B11_Loading_Btn_FileInput: ["파일 입력", "File input"], + B11_Loading_Btn_Continue: ["계속", "Continue"], + B11_Loading_Btn_Dashboard: ["대시보드", "Dashboard"], B11_Status_Flow_Title: ["결재 진행 상태", "Payment Progress"], B11_Status_Step_Request: ["발행 요청", "Invoice Requested"], B11_Status_Step_Issue: ["세금계산서 발행", "Invoice Issued"], diff --git a/ui_template/ui_template_locale_b3.ts b/ui_template/ui_template_locale_b3.ts index 42ffcf80e..2c4bb7c53 100644 --- a/ui_template/ui_template_locale_b3.ts +++ b/ui_template/ui_template_locale_b3.ts @@ -32,7 +32,7 @@ export const ui_locales_b3 = { "사유는 아래 단계(수량·단가)가 낸 것을 그대로 옮김 — 여기서 새로 짓지 않음", "Reasons are passed through from the quantity/price step as-is", ], - B09_Sheet_Reload: ["다시 불러오기", "Reload"], + B09_Sheet_Reload: ["새로고침", "Reload"], B09_Sheet_Level: ["보이는 레벨", "Show levels"], B09_Sheet_Level_All: ["모두", "All"], B09_Sheet_Level_Upto: ["레벨까지", " level(s)"], @@ -145,7 +145,7 @@ export const ui_locales_b3 = { B01_Dashboard_PermCompanyRead: ["회사 읽기", "Company read"], B01_Dashboard_PermCompanyWrite: ["회사 수정", "Company edit"], B01_Dashboard_PermPersonalWrite: ["개인 수정", "Personal edit"], - B01_Dashboard_PickCompany: ["회사 고르기", "Pick company"], + B01_Dashboard_PickCompany: ["회사 선택", "Pick company"], B01_Dashboard_PickCompanyHint: ["회사 이름 · 사업자번호", "Company name · business number"], B01_Dashboard_PickCompanyCount: ["{count}곳", "{count} companies"], B01_Dashboard_PickCompanyMore: [ diff --git a/ui_template/ui_template_locale_m1.ts b/ui_template/ui_template_locale_m1.ts index e2be52e3e..6f6e4c761 100644 --- a/ui_template/ui_template_locale_m1.ts +++ b/ui_template/ui_template_locale_m1.ts @@ -10,7 +10,7 @@ export const ui_locales_m1 = { M01_AdminOnly: ["시스템 관리자만 볼 수 있음", "System administrators only"], M01_LoadFailed: ["마스터 요소를 못 읽음", "Failed to load master elements"], M01_PickFile: ["왼쪽에서 그룹과 파일을 고를 것", "Pick a group and a file on the left"], - M01_Search: ["이름 찾기", "Find by name"], + M01_Search: ["이름 검색", "Find by name"], M01_WideHint: ["표가 넓음 — 옆으로 밀어서 볼 것", "Wide table — swipe sideways"], M01_Prev: ["이전", "Prev"], M01_Next: ["다음", "Next"], @@ -18,7 +18,7 @@ export const ui_locales_m1 = { M01_Rows: ["줄", "rows"], M01_NoRows: ["줄 없음", "No rows"], M01_RowAdd: ["줄 추가", "Add row"], - M01_RowDelete: ["지우기", "Delete"], + M01_RowDelete: ["삭제", "Delete"], M01_RowRestore: ["되살리기", "Restore"], M01_RowRemove: ["빼기", "Remove"], M01_BackToTables: ["← 표 목록", "← Tables"], @@ -35,25 +35,25 @@ export const ui_locales_m1 = { "그 사이 파일이 바뀜({value}) — 고친 것을 버리고 다시 읽은 뒤 다시 고칠 것", "Files changed meanwhile ({value}) — discard and reload, then edit again", ], - M01_StaleReload: ["버리고 다시 읽기", "Discard and reload"], + M01_StaleReload: ["새로고침", "Reload"], M01_FileStale: [ "고치기 시작한 뒤 이 파일이 바뀜 — 저장하면 막힘", "This file changed after you started editing — saving will be refused", ], M01_CheckErrors: ["검사에 걸림", "Validation failed"], - M01_ProcureSearch: ["이름·규격 찾기", "Find by name or spec"], + M01_ProcureSearch: ["이름·규격 검색", "Find by name or spec"], M01_ProcureCut: ["연결 끊기", "Unlink"], M01_ProcureClose: ["닫기", "Close"], M01_PriceFind: ["가격 연결", "Link price"], M01_PriceTitle: ["가격 연결 고르기", "Pick price source"], M01_PriceCol: ["가격 연결", "Price link"], - M01_PriceCond: ["후보 조건으로 연결 (지역은 입력)", "Link by condition (region as input)"], + M01_PriceCond: ["조건 연결 (지역은 입력)", "Link by condition (region as input)"], M01_PriceCondName: ["이름", "Name"], M01_PriceCondSpec: ["규격", "Spec"], M01_PriceCondUsed: ["후보 조건", "Condition"], M01_Govt: ["관급", "Govt"], - M01_OnlyUnlinked: ["못 이은 줄만 보기", "Unlinked only"], - M01_JobFind: ["직종 고르기", "Pick job"], + M01_OnlyUnlinked: ["미연결만", "Unlinked only"], + M01_JobFind: ["직종 선택", "Pick job"], M01_JobTitle: ["준용 직종 고르기", "Pick substitute job"], M01_JobCol: ["준용", "Substitute"], M01_All: ["전체", "All"], diff --git a/ui_template/ui_template_locale_m2.ts b/ui_template/ui_template_locale_m2.ts index c568a2181..c0af92511 100644 --- a/ui_template/ui_template_locale_m2.ts +++ b/ui_template/ui_template_locale_m2.ts @@ -101,7 +101,7 @@ export const ui_locales_m2 = { M02_SourcePractice: ["실무문서", "Practice documents"], M02_PeopleEmpty: ["비어 있음", "empty"], M02_TreeEmptyEdit: [ - "항목이 없음 — 빈 자리 오른쪽 클릭 또는 층 단추 옆 「+」 로 폴더 · 항목을 더함", + "항목이 없음 — 빈 자리 오른쪽 클릭 또는 층 버튼 옆 「+」 로 폴더 · 항목을 더함", "No items — right-click an empty area or use + beside the layer buttons to add", ], M02_TreeAddTop: ["맨 위에 폴더 · 항목 추가", "Add folder or item at top"], @@ -155,8 +155,8 @@ export const ui_locales_m2 = { "저장 안 한 표 고침이 있음 — 나무를 고치기 전에 처리", "Unsaved table edits — settle them before changing the tree", ], - M02_TreeSaveGo: ["저장 후 넘어감", "Save and continue"], - M02_TreeDiscardGo: ["버리고 넘어감", "Discard and continue"], + M02_TreeSaveGo: ["저장", "Save"], + M02_TreeDiscardGo: ["폐기", "Discard"], M02_TreeDone: ["나무를 고침", "Tree updated"], M02_TreeRenamed: [ "나무를 고침 — 같은 이름이 있어 「{value}」 로 저장",