M02 면적산출 SA01010100 에서 도구 막대 · 데이터 메뉴 · 우클릭 · 셀 서식 여섯 탭 · 찾기 · 메모 · 이름 관리 · 조건부 서식 · 유효성 · 이동 · 틀 고정 · 칸 넣기/지우기 · 데이터 도구 · 윤곽 · 수식 분석 · 되돌리기/다시 · 저장 안 하고 떠나기 · 다시 열기를 빈 값 · 같은 이름 · 긴 이름 · 취소 · Esc · Enter · 밝은/어두운 테마 예외까지 돌려 찾은 흠. - 격자(C): 틀고정이 있으면 본문 판이 그릴 행열을 틀고정 폭만큼 덜 셈 — 아래 · 오른쪽 끝이 빈 칸으로 남던 것(29 행 고정 때 1 행만 그림) · visibleRange 도 같음 · reveal 은 바로 그림 - 도구 막대: 세로 정렬 기본 표시 「위」 → 「아래」(칸 실제와 맞춤) · 크기 409 넘으면 409 · 테두리 · 단위 판이 단추 위로 떠 머리까지 덮던 것 → 단추 아래 · ✕ · 수식 안내 · 확대 글 대비(흐림 투명도 없앰 · --color-text-secondary · 밝은 5.88 · 어두운 7.91) - 병합(도구 막대 · 우클릭): 왼위 밖 값이 말없이 지워지던 것 → 엑셀처럼 먼저 물음(confirmMerge) - 셀 서식 · 이동 · 칸 넣기/지우기 · 텍스트 나누기 · 중복 제거 · 연속 채우기 · 메모 창: 열 때 초점이 창 밖(BODY)이라 Esc · Enter 가 안 먹던 것 → dialogKeys(창 안 초점 · Esc 닫기 · Enter 실행) · 셀 서식 창 탭마다 높이가 널뛰던 것 → 본문 최소 높이 - 우클릭 메뉴(ui_template 공용): Esc 로 닫힘 · 화면 밖이면 안쪽으로 당김 · 데이터 ▾ 메뉴와 알약 우클릭 메뉴가 화면 좌표를 부품 기준 자리로 써 오른쪽 아래로 떨어지던 것 고침 · 행 · 열 머리 메뉴에 잘라내기 · 붙여넣기(안내) 더함 - 자동 필터 ▼ 가 칸 밑에 깔려 눌리지 않던 것(z-index) · 값 목록이 격자 아래 끝에서 잘리면 위로 뒤집음 - Σ: 여러 칸을 고르면 첫 칸에 =SUM() 편집을 열어 Enter 로 값을 덮던 것 → 엑셀처럼 열마다 바로 아래(또는 고름 끝 빈 칸)에 합계를 바로 넣음(autoSumCells) - 조건부 서식: 빈 값이 「보다큼 0」 규칙이 되던 것 · #RRGGBB 아닌 색 · 색 없는 규칙 → 안내 후 막음 - 이름 관리: 255 자 넘는 이름 막음 · 긴 이름에 창이 화면 끝까지 늘던 것 · 시트 id(s1) 대신 시트 이름 · 「이름 바꾸기」 가 브라우저 prompt(자동 취소됨)라 안 되던 것 → 줄 안에서 고침 - 표시 형식 「@」 를 수에 걸면 빈 칸이 되던 것 → 엑셀처럼 일반으로 보임 - 연속 데이터 채우기 · 텍스트 나누기가 칸 서식을 지우던 것 → 서식 유지 - 틀 고정 「지금 칸 기준」 을 먼 칸(Z1000)에서 하면 고정 판이 격자를 다 덮어 못 움직이던 것 → 화면 안쪽 칸에서만(안내) ORCA(IP http://100.72.32.27:5181 · 메인 폴더 탭 · 판정은 수치): 목록 80 항목 밝은 80/80 · 어두운 80/80 · 사각형 겹침 · 잘림 · 화면 밖 · 대비 3 미만 0 건. 시험 — test_stage3_autosum (여러 칸 넷 더함) · test_stage2_data_tools · test_stage2_format_code · spreadsheet_b_test_entry 197/197(@ 하나 더함) · test_spreadsheet_size(css gzip 3121 · 합 67403) 통과. 시험으로 바꾼 칸은 저장 안 하고 「다시 열기」 로 버림. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W9YEkMnYQnNnRZRPXoxFsw
133 lines
6.2 KiB
TypeScript
133 lines
6.2 KiB
TypeScript
/* =============================================================================
|
|
* spreadsheet_text.ts (주인 E)
|
|
* 도구 모음 · 시트 탭 · 우클릭 메뉴 · 클립보드 글자 — [한국어, 영어].
|
|
* ⚠ `@ui/ui_template_locale` 를 안 씀 — `currentLanguageIndex` 하나만 필요해도 그 파일이
|
|
* 앱 전체 사전(a · b1~4 · common · m1 · m2, 압축 뒤 약 45 KB)을 통째로 끌고 와 화면 예산(28 KB)을
|
|
* 넘김(2026-09-27 브레인 지시). 자기 언어 상태를 따로 둠 — `setSpreadsheetLanguage` 로만 바꿈.
|
|
* ========================================================================== */
|
|
|
|
let currentLanguageIndex = 0;
|
|
|
|
/** 앱 전역 언어 토글과 맞추고 싶으면 D(`spreadsheet.ts`) 가 부름 — 안 부르면 한국어 기본. */
|
|
export function setSpreadsheetLanguage(index: 0 | 1): void {
|
|
currentLanguageIndex = index;
|
|
}
|
|
|
|
const TEXT = {
|
|
Undo: ["되돌리기", "Undo"],
|
|
Redo: ["다시", "Redo"],
|
|
FontName: ["글꼴", "Font"],
|
|
FontSize: ["크기", "Size"],
|
|
Bold: ["굵게", "Bold"],
|
|
Italic: ["기울임", "Italic"],
|
|
Underline: ["밑줄", "Underline"],
|
|
Strike: ["취소선", "Strikethrough"],
|
|
TextColor: ["글자색", "Text color"],
|
|
FillColor: ["채움색", "Fill color"],
|
|
ColorClear: ["지움", "Clear"],
|
|
HAlign: ["가로 정렬", "Horizontal align"],
|
|
VAlign: ["세로 정렬", "Vertical align"],
|
|
Align_general: ["일반", "General"],
|
|
Align_left: ["왼쪽", "Left"],
|
|
Align_center: ["가운데", "Center"],
|
|
Align_right: ["오른쪽", "Right"],
|
|
Align_distributed: ["균등 분할", "Distributed"],
|
|
Align_centerContinuous: ["선택 영역 가운데", "Center across"],
|
|
VAlign_top: ["위", "Top"],
|
|
VAlign_center: ["가운데", "Middle"],
|
|
VAlign_bottom: ["아래", "Bottom"],
|
|
Wrap: ["줄 바꿈", "Wrap text"],
|
|
Merge: ["병합", "Merge"],
|
|
Unmerge: ["병합 해제", "Unmerge"],
|
|
MergeLoseConfirm: [
|
|
"왼위 칸 값만 남고 나머지 칸 값은 지워짐 — 병합할까?",
|
|
"Merging keeps only the upper-left value — merge anyway?",
|
|
],
|
|
Border: ["테두리", "Border"],
|
|
Border_none: ["없음", "None"],
|
|
Border_all: ["모두", "All"],
|
|
Border_outer: ["바깥", "Outer"],
|
|
Border_top: ["위", "Top"],
|
|
Border_bottom: ["아래", "Bottom"],
|
|
Border_left: ["왼", "Left"],
|
|
Border_right: ["오른", "Right"],
|
|
BorderLine: ["선", "Line"],
|
|
BorderColor: ["색", "Color"],
|
|
NumberFormat: ["숫자 형식", "Number format"],
|
|
NumberFormat_general: ["일반", "General"],
|
|
NumberFormat_integer: ["정수 0", "Integer"],
|
|
NumberFormat_decimal2: ["소수 0.00", "Decimal 0.00"],
|
|
NumberFormat_thousands: ["천 단위 #,##0", "Thousands"],
|
|
NumberFormat_thousands2: ["천 단위 #,##0.00", "Thousands 0.00"],
|
|
NumberFormat_percent: ["백분율 0%", "Percent"],
|
|
NumberFormat_accounting: ["회계", "Accounting"],
|
|
NumberFormat_text: ["글자 @", "Text"],
|
|
NumberFormat_placeholder: ["표시 형식", "Display format"],
|
|
NumberFormat_hint: [
|
|
"이름 골라 쓰거나 엑셀 형식 코드를 바로 침",
|
|
"Pick a preset or type an Excel format code",
|
|
],
|
|
SheetAdd: ["시트 더하기", "Add sheet"],
|
|
SheetRename: ["이름 바꾸기", "Rename"],
|
|
SheetDelete: ["지우기", "Delete"],
|
|
SheetDuplicate: ["복사", "Duplicate"],
|
|
SheetRenamePrompt: ["새 시트 이름", "New sheet name"],
|
|
SheetDeleteConfirm: [
|
|
"이 시트를 지울까요? 되돌릴 수 없습니다.",
|
|
"Delete this sheet? This cannot be undone.",
|
|
],
|
|
SheetDeleteLastError: ["마지막 시트는 지울 수 없음", "Cannot delete the last sheet"],
|
|
SheetHide: ["숨기기", "Hide"],
|
|
SheetUnhideMenu: ["숨긴 시트 보이기", "Show hidden sheets"],
|
|
MenuCut: ["잘라내기", "Cut"],
|
|
MenuCopy: ["복사", "Copy"],
|
|
MenuPasteHint: ["Ctrl+V 를 쓸 것", "Use Ctrl+V"],
|
|
MenuInsertRow: ["행 넣기", "Insert row"],
|
|
MenuDeleteRow: ["행 지우기", "Delete row"],
|
|
MenuInsertCol: ["열 넣기", "Insert column"],
|
|
MenuDeleteCol: ["열 지우기", "Delete column"],
|
|
MenuHide: ["숨기기", "Hide"],
|
|
MenuUnhide: ["숨김 취소", "Unhide"],
|
|
MenuClearContent: ["내용 지우기", "Clear content"],
|
|
MenuClearFormat: ["서식 지우기", "Clear format"],
|
|
MenuMerge: ["병합", "Merge"],
|
|
MenuUnmerge: ["병합 해제", "Unmerge"],
|
|
MenuCommentInsert: ["메모 삽입", "Insert comment"],
|
|
MenuCommentEdit: ["메모 편집", "Edit comment"],
|
|
MenuCommentDelete: ["메모 삭제", "Delete comment"],
|
|
ClipboardPasteFailed: ["붙여넣기를 읽지 못함", "Could not read paste content"],
|
|
ClipboardMergeBlocked: [
|
|
"병합된 셀의 일부를 바꿀 수 없습니다",
|
|
"Can't change part of a merged cell",
|
|
],
|
|
Unit: ["단위", "Unit"],
|
|
UnitGroup_area: ["넓이·부피·길이", "Area · volume · length"],
|
|
UnitGroup_weight: ["무게·부피(액체)", "Weight · liquid volume"],
|
|
UnitGroup_count: ["개수", "Count"],
|
|
UnitGroup_rate: ["속도·각도·비율", "Speed · angle · rate"],
|
|
UnitGroup_op: ["연산·비교", "Operators"],
|
|
UnitRecent: ["최근 씀", "Recently used"],
|
|
UnitAsFormat: ["숫자 형식으로 붙이기", "Attach as number format"],
|
|
FormulaHint_label: [
|
|
"엑셀 수식까지: 엑셀에서 Ctrl+` → 복사 → 여기 Ctrl+V · 끝나면 엑셀 Ctrl+` 다시",
|
|
"Formulas too: in Excel Ctrl+` → copy → paste here (Ctrl+V) · then Ctrl+` again in Excel",
|
|
],
|
|
FormulaHint_title: ["엑셀 수식까지 옮기는 법", "How to bring formulas along"],
|
|
FormulaHint_detail: [
|
|
"엑셀 Ctrl+` = 「수식 표시」 켜기 · 칸에 계산값 대신 「=...」 글이 그대로 보임. 그 상태로 복사해 " +
|
|
"여기 붙이면 수식까지 옮겨짐(그냥 복사하면 값만 옴 · 수식 없음). 붙인 뒤 엑셀에서 Ctrl+` 다시 " +
|
|
"눌러 원래대로.",
|
|
'Excel Ctrl+` turns on "Show Formulas" — cells show "=..." text instead of the computed ' +
|
|
"value. Copy in that state and paste here to bring the formulas along (a normal copy only " +
|
|
"brings values). Press Ctrl+` again in Excel afterward to switch back.",
|
|
],
|
|
ClipboardExcelNoFormula: [
|
|
"값만 들어왔음 — 수식까지는 엑셀 Ctrl+` 뒤 복사",
|
|
"Only values came in — for formulas too, copy after Ctrl+` in Excel",
|
|
],
|
|
} as const;
|
|
|
|
export function st(key: keyof typeof TEXT): string {
|
|
return TEXT[key][currentLanguageIndex] ?? TEXT[key][0];
|
|
}
|