@hua-labs/i18n-core-zustand 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -20
- package/README.md +249 -249
- package/dist/index.d.ts +43 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +399 -347
package/dist/index.js
CHANGED
|
@@ -23,6 +23,8 @@ import React from 'react';
|
|
|
23
23
|
import { createCoreI18n, useTranslation } from '@hua-labs/i18n-core';
|
|
24
24
|
/**
|
|
25
25
|
* Zustand 스토어에서 어댑터 생성
|
|
26
|
+
*
|
|
27
|
+
* @template L - 언어 코드 타입
|
|
26
28
|
*/
|
|
27
29
|
function createZustandAdapter(store) {
|
|
28
30
|
return {
|
|
@@ -30,6 +32,7 @@ function createZustandAdapter(store) {
|
|
|
30
32
|
setLanguage: (lang) => {
|
|
31
33
|
const currentLang = store.getState().language;
|
|
32
34
|
if (currentLang !== lang) {
|
|
35
|
+
// 어댑터는 string을 받지만, 스토어는 L 타입을 기대하므로 타입 단언 필요
|
|
33
36
|
store.getState().setLanguage(lang);
|
|
34
37
|
}
|
|
35
38
|
},
|
|
@@ -46,6 +49,14 @@ function createZustandAdapter(store) {
|
|
|
46
49
|
}
|
|
47
50
|
};
|
|
48
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Zustand 스토어와 i18n-core를 통합하는 Provider 생성
|
|
54
|
+
*
|
|
55
|
+
* @template L - 언어 코드 타입
|
|
56
|
+
* @param store - Zustand 스토어 (language와 setLanguage 메서드 필요)
|
|
57
|
+
* @param config - i18n 설정
|
|
58
|
+
* @returns I18nProvider 컴포넌트
|
|
59
|
+
*/
|
|
49
60
|
export function createZustandI18n(store, config) {
|
|
50
61
|
const adapter = createZustandAdapter(store);
|
|
51
62
|
// 하이드레이션 에러 방지: SSR과 동일한 초기 언어 사용
|
|
@@ -64,9 +75,19 @@ export function createZustandI18n(store, config) {
|
|
|
64
75
|
// BaseI18nProvider가 I18nProvider를 렌더링하므로, 그 자식으로 들어가면 useTranslation 사용 가능
|
|
65
76
|
function LanguageSyncWrapper({ children: innerChildren }) {
|
|
66
77
|
const debug = config?.debug ?? false;
|
|
78
|
+
const autoUpdateHtmlLang = config?.autoUpdateHtmlLang ?? false;
|
|
67
79
|
// useTranslation은 I18nProvider 내부에서만 사용 가능
|
|
68
80
|
// BaseI18nProvider가 I18nProvider를 렌더링하므로 여기서 사용 가능
|
|
69
81
|
const { setLanguage: setI18nLanguage, currentLanguage, isInitialized } = useTranslation();
|
|
82
|
+
// document.documentElement.lang 자동 업데이트
|
|
83
|
+
React.useEffect(() => {
|
|
84
|
+
if (autoUpdateHtmlLang && typeof document !== 'undefined') {
|
|
85
|
+
document.documentElement.lang = currentLanguage;
|
|
86
|
+
if (debug) {
|
|
87
|
+
console.log(`[ZUSTAND-I18N] Updated html[lang] to: ${currentLanguage}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}, [currentLanguage, autoUpdateHtmlLang, debug]);
|
|
70
91
|
const hydrationStateRef = React.useRef({
|
|
71
92
|
isComplete: false,
|
|
72
93
|
isInitialized: false,
|
|
@@ -226,6 +247,13 @@ export function createZustandI18n(store, config) {
|
|
|
226
247
|
* }
|
|
227
248
|
* ```
|
|
228
249
|
*/
|
|
250
|
+
/**
|
|
251
|
+
* Zustand 스토어와 i18n-core를 통합하는 Hook
|
|
252
|
+
*
|
|
253
|
+
* @template L - 언어 코드 타입
|
|
254
|
+
* @param store - Zustand 스토어
|
|
255
|
+
* @returns { language, setLanguage } - 언어 상태 및 변경 함수
|
|
256
|
+
*/
|
|
229
257
|
export function useZustandI18n(store) {
|
|
230
258
|
const adapter = React.useMemo(() => createZustandAdapter(store), [store]);
|
|
231
259
|
// 스토어의 언어 상태 구독
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hua-labs/i18n-core-zustand",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Zustand adapter for @hua-labs/i18n-core - Type-safe state management integration",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"sideEffects": false,
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@hua-labs/i18n-core": "
|
|
20
|
+
"@hua-labs/i18n-core": "2.0.0"
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {
|
|
23
23
|
"zustand": "^4.0.0",
|