Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PAdA5ThqmtVSsbzjusk1cJ
72 lines
3.5 KiB
TypeScript
72 lines
3.5 KiB
TypeScript
/* =============================================================================
|
|
* 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<string, readonly [string, string]>;
|
|
|
|
export type NewTextKey = keyof typeof TEXT;
|
|
|
|
export function tn(key: NewTextKey, fill: Record<string, string | number> = {}): 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));
|
|
}
|