From 547f29aa16279a826ff0c8597124c5ca4de31de9 Mon Sep 17 00:00:00 2001 From: seo Date: Sun, 7 Jun 2026 18:44:28 +0900 Subject: [PATCH] Simplify control language and theme labels --- README.md | 8 ++++---- public/assets/app.js | 14 +++----------- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index d0ed3b3..8831247 100644 --- a/README.md +++ b/README.md @@ -23,8 +23,8 @@ Control은 라즈베리파이/리눅스 호스트의 팬과 시스템 상태를 - WakeLock 버튼으로 대시보드 화면 꺼짐 방지 - Reboot 버튼으로 2단계 확인 후 시스템 재부팅 요청 - 기본 브라우저 alert/confirm/prompt 대신 대시보드 디자인에 맞춘 custom dialog 사용 -- Translate 버튼으로 `en`, `ko` UI 언어 토글 -- Theme 버튼으로 `dark`, `light` UI 테마 토글 +- Translate 버튼으로 `en`, `ko` UI 언어 토글. 버튼 표시는 상태 suffix 없이 고정 +- Theme 버튼으로 `dark`, `light` UI 테마 토글. 버튼 표시는 상태 suffix 없이 고정 ## 주요 API @@ -125,8 +125,8 @@ control-push-healthcheck.service 6. Push 등록은 권한 요청과 구독 저장이 끝나면 즉시 상태를 갱신합니다. 7. WakeLock 버튼은 활성 상태를 초록색 버튼으로 표시합니다. 8. Reboot 버튼은 `재부팅` 단어 입력과 관리자 암호 재입력을 모두 통과한 뒤 서버 API로 재부팅을 요청합니다. -9. Translate 버튼은 최초 접속 시 디바이스 언어를 기본값으로 사용하고, 변경값은 `localStorage`의 `controlLang`에 저장합니다. -10. Theme 버튼은 기본값 `dark`로 시작하고, 변경값은 `localStorage`의 `controlTheme`에 저장합니다. +9. Translate 버튼은 최초 접속 시 디바이스 언어를 기본값으로 사용하고, 변경값은 `localStorage`의 `controlLang`에 저장합니다. 라벨은 `Translate` 또는 `번역`으로만 표시합니다. +10. Theme 버튼은 기본값 `dark`로 시작하고, 변경값은 `localStorage`의 `controlTheme`에 저장합니다. 라벨은 `Theme` 또는 `테마`로만 표시합니다. 11. Push 발송, 수신, 표시, 클릭 이벤트를 기록하고 구독 DB의 건강 상태를 갱신합니다. ## 주요 함수/모듈 diff --git a/public/assets/app.js b/public/assets/app.js index c414ee5..03ae984 100644 --- a/public/assets/app.js +++ b/public/assets/app.js @@ -117,10 +117,6 @@ translateButton: 'Translate', themeButton: 'Theme', rebootButton: 'Reboot', - themeDark: 'Theme: Dark', - themeLight: 'Theme: Light', - langEn: 'Translate: EN', - langKo: 'Translate: KO', dialogAlert: 'Alert', dialogConfirm: 'Confirm', dialogInput: 'Input', @@ -254,10 +250,6 @@ translateButton: '번역', themeButton: '테마', rebootButton: '재부팅', - themeDark: '테마: 다크', - themeLight: '테마: 라이트', - langEn: '번역: EN', - langKo: '번역: KO', dialogAlert: '알림', dialogConfirm: '확인', dialogInput: '입력', @@ -372,7 +364,7 @@ if (themeMeta) { themeMeta.content = state.theme === 'light' ? '#f4f7fb' : '#0f1115'; } - els.themeBtn && (els.themeBtn.textContent = state.theme === 'dark' ? t('themeDark') : t('themeLight')); + els.themeBtn && (els.themeBtn.textContent = t('themeButton')); } function applyLang(lang) { @@ -382,8 +374,8 @@ document.querySelectorAll('[data-i18n]').forEach(node => { node.textContent = t(node.dataset.i18n); }); - els.translateBtn && (els.translateBtn.textContent = state.lang === 'ko' ? t('langKo') : t('langEn')); - els.themeBtn && (els.themeBtn.textContent = state.theme === 'dark' ? t('themeDark') : t('themeLight')); + els.translateBtn && (els.translateBtn.textContent = t('translateButton')); + els.themeBtn && (els.themeBtn.textContent = t('themeButton')); els.rebootBtn && (els.rebootBtn.textContent = t('rebootButton')); if (els.dmesgToggle) { els.dmesgToggle.textContent = state.dmesgOpen ? t('hide') : t('show');