- 모든 요소·표·로직 줄의 열쇠 → 키(LB000123 꼴) · 옛 열쇠·원문 번호는 원문번호 칸 · 대장 _키대장.json (키 36,840 · 다음 번호)
- 변수 적는 법 키로 — 로직 식·연결·준용·통합·후보·조달 연결 일괄 변환 · {이름} 낀 참조는 ID:원문번호
- 인력 8 파일 → 인력.json(줄마다 조사 · 머리 조사 묶음) · 기계 2 파일 → 기계.json(세부분류)
- 소요량·계수·로직 파일 이름 = 그룹_원문_NN장_장 제목 · 머리 부문·차례
- 엔진(값 찾기 · 알림에 키 옆 이름) · check_master(키 모양·겹침·대장·끊긴 키 · 기계 요소 줄도 본문 결손 대조) · M01 서버(새 줄 키는 대장 다음 번호 · 키 못 고침) · 화면 칸 이름만 맞춤
- 로직 일괄 시험 계산 1,351 줄 — 옮기기 전후 줄마다 결과·금액 같음
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JgUhN55Z3BCYhUJTjwTNfj
101 lines
4.5 KiB
TypeScript
101 lines
4.5 KiB
TypeScript
/* =============================================================================
|
|
* M01_MasterData_UI_Logic_Text.ts
|
|
* 로직 화면 글자 — [한국어, 영어] · 공용 사전과 같은 모양 · 창끼리 공용 사전 줄이 겹치지 않게 따로 둠
|
|
* ========================================================================== */
|
|
|
|
import { currentLanguageIndex } from "@ui/ui_template_locale";
|
|
|
|
const TEXT = {
|
|
Title: ["일위대가 로직", "Unit-cost logic"],
|
|
List_Search: ["이름 찾기", "Search name"],
|
|
List_AllBooks: ["원문 모두", "All sources"],
|
|
List_AllChapters: ["장 모두", "All chapters"],
|
|
List_BlockedOnly: ["막힘만", "Blocked only"],
|
|
List_Count: ["{n} 개", "{n} items"],
|
|
List_Blocked: ["막힘", "Blocked"],
|
|
List_Edited: ["고침", "Edited"],
|
|
List_New: ["새것", "New"],
|
|
List_Deleted: ["지움", "Deleted"],
|
|
Bar_New: ["로직 새로 만들기", "New logic"],
|
|
Bar_Delete: ["로직 지우기", "Delete logic"],
|
|
Bar_Save: ["저장", "Save"],
|
|
Bar_Discard: ["고친 것 버리기", "Discard edits"],
|
|
Bar_Pending: ["저장 안 한 로직 {n} 개", "{n} unsaved logics"],
|
|
Empty: ["왼쪽 목록에서 로직을 고르세요", "Pick a logic from the list"],
|
|
Head_File: ["파일", "File"],
|
|
Head_Key: ["키", "Key"],
|
|
Head_Number: ["원문번호", "Source no."],
|
|
Head_Name: ["이름", "Name"],
|
|
Head_Unit: ["결과단위", "Result unit"],
|
|
Head_Source: ["출처", "Source"],
|
|
Head_Owner: ["소유", "Owner"],
|
|
Head_Note: ["비고", "Note"],
|
|
Head_Blocked: ["막힌 까닭", "Why blocked"],
|
|
Inputs_Title: ["설계에서 받을 값", "Values from design"],
|
|
Inputs_Unit: ["단위", "Unit"],
|
|
Inputs_Choices: ["고르기(쉼표로)", "Choices (comma)"],
|
|
Inputs_Range: ["범위", "Range"],
|
|
Ho_Title: ["호표", "Unit-cost lines"],
|
|
Ho_Kind: ["종류", "Kind"],
|
|
Ho_Element: ["요소", "Element"],
|
|
Ho_Name: ["이름·규격", "Name · spec"],
|
|
Ho_Unit: ["단위", "Unit"],
|
|
Ho_Qty: ["수량", "Qty"],
|
|
Ho_Price: ["단가", "Unit price"],
|
|
Ho_Amount: ["금액", "Amount"],
|
|
Ho_Cost: ["비목", "Cost item"],
|
|
Ho_Pick: ["찾기", "Find"],
|
|
Ho_PickTable: ["표", "Table"],
|
|
Ho_QtyNumber: ["수", "Number"],
|
|
Ho_QtyTable: ["표 찾기", "Table lookup"],
|
|
Ho_QtyFormula: ["식", "Formula"],
|
|
Ho_PriceLater: ["계산 때", "At calc"],
|
|
Ho_Missing: ["없는 요소", "Missing element"],
|
|
Middle_Title: ["중간 값", "Intermediate values"],
|
|
Result_Title: ["결과 식(돈 아닌 로직)", "Result formula (non-money)"],
|
|
Extra_Title: ["덧줄", "Extra lines"],
|
|
Rounding: ["끝수", "Rounding"],
|
|
Formula: ["식", "Formula"],
|
|
AddRow: ["줄 더하기", "Add line"],
|
|
DeleteRow: ["줄 지우기", "Delete line"],
|
|
Calc_Title: ["시험 계산", "Test calculation"],
|
|
Calc_Run: ["계산", "Calculate"],
|
|
Calc_NoInputs: ["받을 값 없음", "No inputs"],
|
|
Calc_Draft: ["고친 줄로 계산(저장 전)", "Using unsaved edits"],
|
|
Calc_Stopped: ["멈춤", "Stopped"],
|
|
Calc_Result: ["결과", "Result"],
|
|
Calc_Sum: ["계", "Total"],
|
|
Pick_Title: ["요소 찾기", "Find element"],
|
|
Pick_Search: ["이름·키·원문번호", "Name · key · source no."],
|
|
Pick_Total: ["{n} 개 중 앞 100 개", "first 100 of {n}"],
|
|
Pick_Close: ["닫기", "Close"],
|
|
Save_Done: ["저장했음", "Saved"],
|
|
Save_Stale: [
|
|
"그 사이 파일이 바뀜 — 고친 것을 버리고 다시 여세요: {v}",
|
|
"Files changed meanwhile — discard and reopen: {v}",
|
|
],
|
|
Save_Errors: ["검사에 걸려 저장 안 함", "Check failed — nothing saved"],
|
|
Save_Failed: ["저장 못 함", "Save failed"],
|
|
Save_Nothing: ["고친 것 없음", "Nothing to save"],
|
|
Load_Failed: ["불러오지 못함", "Load failed"],
|
|
Confirm_Delete: [
|
|
"로직 「{v}」 을 지울까요? [저장] 때 파일에서 빠짐",
|
|
"Delete logic “{v}”? Removed on save",
|
|
],
|
|
Confirm_Discard: ["고친 것을 모두 버릴까요?", "Discard all edits?"],
|
|
Confirm_Leave: [
|
|
"저장 안 한 로직이 있음 — 다른 로직을 열어도 고친 것은 남음",
|
|
"Unsaved logics stay in the draft",
|
|
],
|
|
New_Key: ["새 로직", "New logic"],
|
|
} as const satisfies Record<string, readonly [string, string]>;
|
|
|
|
export type TextKey = keyof typeof TEXT;
|
|
|
|
/** 공용 `t()` 와 같은 뜻 — `{n}`·`{v}` 는 채움 */
|
|
export function tx(key: TextKey, 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));
|
|
}
|