feat(M01): 테스트 컨테이너 세 방식 첫 화면 안내 · B 하위 로직 줄·합계 표시 · 규격·단가 멈춤 글 쉬운 말
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016WRFJmmhPi4exAzHgPZHMT
This commit is contained in:
@@ -46,6 +46,26 @@ const TEXT = {
|
||||
"넣은 값에 맞는 표 줄이 없습니다 — 값을 바꿔 보세요",
|
||||
"No table row fits these values — try other values",
|
||||
],
|
||||
Stop_Spec: [
|
||||
"「{name}」 규격이 여럿이라 정하지 못함 — 위 「쓰이는 재료·기계」에서 하나를 골라 주세요",
|
||||
"「{name}」 has several specs — pick one in the materials list above",
|
||||
],
|
||||
Stop_NoPrice: [
|
||||
"「{name}」 단가가 자료에 비어 있어 셈하지 못함 — 자료를 채워야 함",
|
||||
"「{name}」 has no price in the data yet",
|
||||
],
|
||||
Guide_A: [
|
||||
"한 번에 하나씩 묻는 대로 답하면 끝에 결과 표가 나옴|값을 잘못 넣었으면 「이전」으로 돌아가 고침|재료·기계를 바꿔 보는 칸은 뒤쪽 단계에 있음",
|
||||
"Answer one question at a time; the result table comes last|Use Back to fix a value|Swap materials in a later step",
|
||||
],
|
||||
Guide_B: [
|
||||
"위쪽 칸에 값을 넣으면 아래 호표(재료·인력·기계 줄)의 수량과 금액이 바로 바뀜|줄을 누르면 오른쪽에 그 수량이 어디서 왔는지 나옴|맨 아래 「합계」가 최종 금액",
|
||||
"Type values above and the table below updates at once|Click a row to see where its quantity comes from|The last row is the total",
|
||||
],
|
||||
Guide_C: [
|
||||
"왼쪽 「설계 값」을 넣으면 오른쪽으로 수량 → 단가 → 합계 순으로 흐름이 이어짐|상자를 누르면 값과 출처가 펼쳐짐|빨간 글이 뜨면 그 까닭 그대로 값을 채우거나 바꿈",
|
||||
"Enter design values on the left; quantity, price and total follow to the right|Click a box for details|Red text says what is missing",
|
||||
],
|
||||
Enter_Value: ["값을 넣어 주세요", "Enter a value"],
|
||||
Result_Title: ["결과", "Result"],
|
||||
Result_Stopped: ["계산이 멈춤", "Calculation stopped"],
|
||||
@@ -63,9 +83,17 @@ export function plainReason(reason: string): string {
|
||||
const missing = /입력 「([^」]+)」 없음/.exec(reason);
|
||||
if (missing) return tt("Stop_Missing", { name: missing[1] });
|
||||
if (/맞는 줄 0개/.test(reason)) return tt("Stop_NoRow");
|
||||
const spec = /「([^」]+)」 후보 여럿/.exec(reason);
|
||||
if (spec) return tt("Stop_Spec", { name: spec[1] });
|
||||
const noPrice = /「([^」]+)」 값 없음/.exec(reason);
|
||||
if (noPrice) return tt("Stop_NoPrice", { name: noPrice[1] });
|
||||
return reason;
|
||||
}
|
||||
|
||||
/** 방식 첫 화면 「이 방식은 이렇게 씀」 — 줄 목록 */
|
||||
export const guideLines = (id: "A" | "B" | "C"): string[] =>
|
||||
tt(`Guide_${id}` as TestTextKey).split("|");
|
||||
|
||||
export function tt(key: TestTextKey, fill: Record<string, string | number> = {}): string {
|
||||
const entry = TEXT[key];
|
||||
const text: string = entry[currentLanguageIndex as 0 | 1] ?? entry[0];
|
||||
|
||||
Reference in New Issue
Block a user