/* ============================================================================= * M01_MasterData_UI_LogicLab_New_Text.ts * 「식으로 새 로직 만들기」 글자 — [한국어, 영어] * ========================================================================== */ import { currentLanguageIndex } from "@ui/ui_template_locale"; const TEXT = { Open: ["식으로 새로 만들기", "New from formula"], Title: ["식으로 새 로직 만들기", "New logic from a formula"], Close: ["닫기", "Close"], Step1: ["① 식 적기", "① Write the formula"], Guide: [ "한 줄에 「이름 = 식」 · 마지막 줄 왼쪽이 이 로직의 결과 · 「#」 로 시작한 줄은 건너뜀", "One line each as “name = formula” · the last line's left side is the result · lines starting with # are skipped", ], Analyze: ["분석", "Analyze"], Stale: ["식이 바뀌었음 — 다시 [분석] 을 눌러 주세요", "Formula changed — press Analyze again"], Step2: ["② 변수 정하기", "② Decide each variable"], Step3: ["③ 이름·단위", "③ Name and unit"], Step4: ["④ 시험 계산 · 저장", "④ Trial calculation and save"], Problems: ["고칠 곳", "To fix"], Line: ["{n}번 줄", "Line {n}"], AllGood: ["검사에 걸린 것 없음", "No problems found"], Result: ["결과", "Result"], Undecided: ["아직 정하지 않은 칸이 있음", "Some cells are not decided yet"], Kind: ["무엇인가", "What is it"], K_master: ["마스터 요소", "Master element"], K_input: ["설계 입력", "Design input"], K_fixed: ["고정값", "Fixed value"], K_table: ["표 찾기", "Table lookup"], Pick: ["고르기", "Pick"], Repick: ["다시 고르기", "Pick again"], NotPicked: ["아직 안 골랐음", "Not picked"], Unit: ["단위", "Unit"], Cost: ["비목", "Cost item"], CostNone: ["넣지 않음", "None"], CostExtra: ["덧줄 비목", "Extra-line cost item"], Value: ["값", "Value"], Note: ["설명", "Note"], Derived: ["식으로 정해짐", "Set by the formula"], SumName: ["비목 합 — 덧줄에서만 쓰는 이름", "Cost total — only for extra lines"], Name: ["로직 이름", "Logic name"], ResultUnit: ["결과 단위", "Result unit"], Owner: ["소유", "Owner"], Save: ["저장", "Save"], Saved: ["저장했음 — 「{v}」", "Saved — “{v}”"], SaveBlocked: ["위 고칠 곳을 먼저 고치세요", "Fix the problems above first"], NeedHead: ["이름과 결과 단위를 적어야 시험 계산·저장이 됨", "Enter the name and result unit"], Group: ["종류", "Kind"], Sub: ["구분", "Group"], Detail: ["상세구분", "Detail"], All: ["(전체)", "(All)"], Search: ["이름 찾기", "Search name"], Count: ["{n} 개 중 앞 {m} 개", "first {m} of {n}"], TableTitle: ["표 찾기 — 표와 조건", "Table lookup — table and conditions"], TablePick: ["표 고르기", "Pick a table"], TableCol: ["값 칸", "Value column"], Cond: ["조건 — 표의 칸마다 식(설계 값 이름)", "Conditions — a formula per table column"], Ok: ["확인", "OK"], Cancel: ["취소", "Cancel"], Failed: ["못 함", "Failed"], } as const satisfies Record; export type NewTextKey = keyof typeof TEXT; export function tn(key: NewTextKey, fill: Record = {}): string { const entry = TEXT[key]; const text: string = entry[currentLanguageIndex as 0 | 1] ?? entry[0]; return text.replace(/\{(\w+)\}/g, (m, k: string) => (k in fill ? String(fill[k]) : m)); }