feat(V2-1d): packages/i18n 추출 — Electron 독립 i18n 엔진
packages/i18n (@d3ro/i18n) 신규:
- src/locales/ 12개 JSON (ko/en/ja/zh/zh-TW/es/fr/de/pt/ru/vi/th)
- src/index.tsx: TFunction/Locale/LOCALE_META/resolveTranslation/
포맷 유틸(createFormatDate/Number/RelativeDate/Time)/
I18nContext/useI18n/I18nProvider
Electron 독립성 확보 (monorepo 원칙 준수):
- I18nStorage interface 신설 (load/save 어댑터 추상화)
- window.electronAPI.config 직접 호출 제거
- I18nProvider는 storage prop으로 영속화 어댑터 주입
- 기본값 noopStorage (메모리 한정, 세션 범위)
- 결과: packages/i18n은 React에만 의존, web/mobile에서 재사용 가능
apps/desktop 어댑터:
- App.tsx에 electronI18nStorage 구현 (config.get/set 래핑)
- <I18nProvider storage={electronI18nStorage}>로 주입
apps/desktop 설정:
- package.json: @d3ro/i18n '*' dep 추가
- tsconfig.node/web.json paths에 @d3ro/i18n 추가
- electron.vite.config.ts alias + externalize exclude 추가
- vitest.config.ts alias 추가
일괄 치환 (29 파일):
- ./i18n, ../i18n, ../../i18n → @d3ro/i18n
apps/desktop/src/renderer/i18n/ 디렉토리 완전 제거.
검증: typecheck + build + dev 런타임 모두 통과.
Phase V2-1 전체 완료 (a/b/c/d).
This commit is contained in:
parent
a041f1b6a9
commit
3524e958ba
51 changed files with 175 additions and 66 deletions
|
|
@ -6,10 +6,12 @@
|
|||
## 현재 단계
|
||||
|
||||
**V1 (Electron) 완료** → **V2 (Monorepo) 진행 중**
|
||||
- Phase V2-1a ✅ 완료 (Monorepo 구조 이동)
|
||||
- Phase V2-1b ✅ 완료 (packages/core 추출)
|
||||
- Phase V2-1c ✅ 완료 (packages/ui 추출)
|
||||
- 다음: Phase V2-1d (packages/i18n 추출)
|
||||
- Phase V2-1 (전체) ✅ 완료
|
||||
- V2-1a: Monorepo 구조 이동
|
||||
- V2-1b: packages/core 추출
|
||||
- V2-1c: packages/ui 추출
|
||||
- V2-1d: packages/i18n 추출
|
||||
- 다음: Phase V2-2 (Supabase 인프라)
|
||||
|
||||
## V1 완료 페이즈
|
||||
|
||||
|
|
@ -40,7 +42,28 @@
|
|||
| V2-1a | npm workspaces + apps/desktop으로 V1 이동 | ✅ 완료 |
|
||||
| V2-1b | packages/core 추출 (types, errors, ipc-channels, constants, utils) | ✅ 완료 |
|
||||
| V2-1c | packages/ui 추출 (DS 컴포넌트 + theme + theme-vars) | ✅ 완료 |
|
||||
| V2-1d | packages/i18n 추출 (locale JSON + 훅) | ⏸️ 대기 |
|
||||
| V2-1d | packages/i18n 추출 (locale JSON + 훅) | ✅ 완료 |
|
||||
|
||||
**V2-1d 완료 내역**
|
||||
- `packages/i18n/` (@d3ro/i18n) 신규 생성:
|
||||
- `src/locales/` 12개 JSON (ko/en/ja/zh/zh-TW/es/fr/de/pt/ru/vi/th)
|
||||
- `src/index.tsx`: TFunction, Locale, LOCALE_META, resolveTranslation, createFormatDate/Number/RelativeDate/Time, I18nContext, useI18n, I18nProvider
|
||||
- **Electron 독립성 확보**: `I18nStorage` interface 추가 (load/save 어댑터)
|
||||
- 기존 `window.electronAPI.config` 직접 호출 → `storage` prop 주입 패턴
|
||||
- 기본값은 noopStorage (메모리 한정)
|
||||
- `apps/desktop/src/renderer/App.tsx`에 `electronI18nStorage` 어댑터 구현 후 `<I18nProvider storage={electronI18nStorage}>`로 주입
|
||||
- apps/desktop 설정:
|
||||
- `@d3ro/i18n: "*"` dep 추가
|
||||
- tsconfig paths, vite alias, externalize exclude에 `@d3ro/i18n` 추가
|
||||
- **일괄 치환**: `./i18n`, `../i18n`, `../../i18n` → `@d3ro/i18n` (29 파일)
|
||||
- `apps/desktop/src/renderer/i18n/` 디렉토리 완전 제거
|
||||
|
||||
**V2-1d 검증**
|
||||
- typecheck ✅
|
||||
- build ✅
|
||||
- dev 런타임 ✅ (DB/핫키/Ollama/Main window 모두 정상)
|
||||
- Electron 의존이 완전히 apps/desktop에만 남아 monorepo 원칙 준수
|
||||
(packages/i18n은 React에만 의존, 웹/모바일에서 그대로 재사용 가능)
|
||||
|
||||
**V2-1c 완료 내역**
|
||||
- `packages/ui/` (@d3ro/ui) 신규 생성:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue