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).
28 lines
770 B
JSON
28 lines
770 B
JSON
{
|
|
"extends": "@electron-toolkit/tsconfig/tsconfig.node.json",
|
|
"compilerOptions": {
|
|
"composite": true,
|
|
"outDir": "./out",
|
|
"baseUrl": ".",
|
|
"paths": {
|
|
"@d3ro/core": ["../../packages/core/src/index.ts"],
|
|
"@d3ro/core/*": ["../../packages/core/src/*"],
|
|
"@d3ro/ui": ["../../packages/ui/src/index.ts"],
|
|
"@d3ro/ui/*": ["../../packages/ui/src/*"],
|
|
"@d3ro/i18n": ["../../packages/i18n/src/index.tsx"]
|
|
},
|
|
"strict": true,
|
|
"noImplicitAny": true,
|
|
"strictNullChecks": true,
|
|
"noUnusedLocals": true,
|
|
"noUnusedParameters": true,
|
|
"resolveJsonModule": true,
|
|
"esModuleInterop": true,
|
|
"skipLibCheck": true
|
|
},
|
|
"include": [
|
|
"src/main/**/*",
|
|
"src/preload/**/*",
|
|
"electron.vite.config.ts"
|
|
]
|
|
}
|