@hua-labs/i18n-core 2.0.0 → 2.0.4
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/README.md +57 -597
- package/dist/chunk-F4PDBJLO.mjs +973 -0
- package/dist/chunk-F4PDBJLO.mjs.map +1 -0
- package/dist/index.d.mts +249 -0
- package/dist/index.d.ts +117 -30
- package/dist/index.js +1818 -177
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +845 -0
- package/dist/index.mjs.map +1 -0
- package/dist/server-4TeBq6hp.d.mts +367 -0
- package/dist/server-4TeBq6hp.d.ts +367 -0
- package/dist/server.d.mts +1 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.js +977 -0
- package/dist/server.js.map +1 -0
- package/dist/server.mjs +3 -0
- package/dist/server.mjs.map +1 -0
- package/package.json +42 -19
- package/src/__tests__/debug-tools.test.ts +359 -0
- package/src/__tests__/default-translations.test.ts +179 -0
- package/src/__tests__/i18n-resource.test.ts +137 -0
- package/src/__tests__/lazy-loader.test.ts +109 -0
- package/src/__tests__/missing-key-overlay.test.tsx +339 -0
- package/src/__tests__/translator-factory.test.ts +120 -0
- package/src/__tests__/translator.test.ts +442 -0
- package/src/__tests__/types.test.ts +211 -0
- package/src/__tests__/useI18n.test.tsx +181 -0
- package/src/__tests__/useTranslation.test.tsx +110 -0
- package/src/components/MissingKeyOverlay.tsx +1 -1
- package/src/core/lazy-loader.ts +2 -2
- package/src/core/translator.tsx +151 -62
- package/src/hooks/useI18n.tsx +96 -115
- package/src/hooks/useTranslation.tsx +12 -10
- package/src/index.ts +102 -5
- package/src/server.ts +9 -0
- package/src/types/index.ts +67 -12
- package/LICENSE +0 -21
- package/dist/components/MissingKeyOverlay.d.ts +0 -33
- package/dist/components/MissingKeyOverlay.d.ts.map +0 -1
- package/dist/components/MissingKeyOverlay.js +0 -138
- package/dist/components/MissingKeyOverlay.js.map +0 -1
- package/dist/core/debug-tools.d.ts +0 -37
- package/dist/core/debug-tools.d.ts.map +0 -1
- package/dist/core/debug-tools.js +0 -241
- package/dist/core/debug-tools.js.map +0 -1
- package/dist/core/i18n-resource.d.ts +0 -59
- package/dist/core/i18n-resource.d.ts.map +0 -1
- package/dist/core/i18n-resource.js +0 -153
- package/dist/core/i18n-resource.js.map +0 -1
- package/dist/core/lazy-loader.d.ts +0 -82
- package/dist/core/lazy-loader.d.ts.map +0 -1
- package/dist/core/lazy-loader.js +0 -193
- package/dist/core/lazy-loader.js.map +0 -1
- package/dist/core/translator-factory.d.ts +0 -50
- package/dist/core/translator-factory.d.ts.map +0 -1
- package/dist/core/translator-factory.js +0 -117
- package/dist/core/translator-factory.js.map +0 -1
- package/dist/core/translator.d.ts +0 -202
- package/dist/core/translator.d.ts.map +0 -1
- package/dist/core/translator.js +0 -912
- package/dist/core/translator.js.map +0 -1
- package/dist/hooks/useI18n.d.ts +0 -39
- package/dist/hooks/useI18n.d.ts.map +0 -1
- package/dist/hooks/useI18n.js +0 -531
- package/dist/hooks/useI18n.js.map +0 -1
- package/dist/hooks/useTranslation.d.ts +0 -55
- package/dist/hooks/useTranslation.d.ts.map +0 -1
- package/dist/hooks/useTranslation.js +0 -58
- package/dist/hooks/useTranslation.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -162
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -191
- package/dist/types/index.js.map +0 -1
- package/dist/utils/default-translations.d.ts +0 -20
- package/dist/utils/default-translations.d.ts.map +0 -1
- package/dist/utils/default-translations.js +0 -123
- package/dist/utils/default-translations.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,85 @@
|
|
|
1
|
+
import React$1 from 'react';
|
|
2
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
|
+
import { I as I18nConfig, a as I18nContextType, L as LanguageConfig, R as ResolveStringKey, T as TranslationParams, b as ResolvePluralKey, c as ResolveArrayKey, d as TranslationError } from './server-4TeBq6hp.js';
|
|
4
|
+
export { P as PluralCategory, e as PluralValue, f as Translator, g as TypedTranslationKeys, s as serverTranslate, h as ssrTranslate } from './server-4TeBq6hp.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* I18n Provider 컴포넌트
|
|
8
|
+
*/
|
|
9
|
+
declare function I18nProvider({ config, children }: {
|
|
10
|
+
config: I18nConfig & {
|
|
11
|
+
autoLanguageSync?: boolean;
|
|
12
|
+
};
|
|
13
|
+
children: React.ReactNode;
|
|
14
|
+
}): react_jsx_runtime.JSX.Element;
|
|
15
|
+
/**
|
|
16
|
+
* I18n 훅
|
|
17
|
+
*/
|
|
18
|
+
declare function useI18n(): I18nContextType;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* 간단한 번역 훅 (원본 SDK와 호환)
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```tsx
|
|
25
|
+
* import { useTranslation } from '@hua-labs/i18n-core';
|
|
26
|
+
*
|
|
27
|
+
* function MyComponent() {
|
|
28
|
+
* const { t, currentLanguage, setLanguage, isLoading, error } = useTranslation();
|
|
29
|
+
*
|
|
30
|
+
* return (
|
|
31
|
+
* <div>
|
|
32
|
+
* <h1>{t('welcome')}</h1>
|
|
33
|
+
* <p>Current language: {currentLanguage}</p>
|
|
34
|
+
* <button onClick={() => setLanguage('en')}>Switch to English</button>
|
|
35
|
+
* </div>
|
|
36
|
+
* );
|
|
37
|
+
* }
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
declare function useTranslation(): {
|
|
41
|
+
t: (key: ResolveStringKey, paramsOrLang?: TranslationParams | string, language?: string) => string;
|
|
42
|
+
tPlural: (key: ResolvePluralKey, count: number, params?: Record<string, unknown>, language?: string) => string;
|
|
43
|
+
tArray: (key: ResolveArrayKey, language?: string) => string[];
|
|
44
|
+
currentLanguage: string;
|
|
45
|
+
setLanguage: (language: string) => void | Promise<void>;
|
|
46
|
+
getRawValue: (key: string, language?: string) => unknown;
|
|
47
|
+
isLoading: boolean;
|
|
48
|
+
error: TranslationError | null;
|
|
49
|
+
supportedLanguages: LanguageConfig[];
|
|
50
|
+
debug: {
|
|
51
|
+
getCurrentLanguage: () => string;
|
|
52
|
+
getSupportedLanguages: () => string[];
|
|
53
|
+
getLoadedNamespaces: () => string[];
|
|
54
|
+
getAllTranslations: () => Record<string, Record<string, unknown>>;
|
|
55
|
+
isReady: () => boolean;
|
|
56
|
+
getInitializationError: () => TranslationError | null;
|
|
57
|
+
clearCache: () => void;
|
|
58
|
+
reloadTranslations: () => Promise<void>;
|
|
59
|
+
getCacheStats: () => {
|
|
60
|
+
size: number;
|
|
61
|
+
hits: number;
|
|
62
|
+
misses: number;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
isInitialized: boolean;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* 언어 변경 전용 훅
|
|
69
|
+
*/
|
|
70
|
+
declare function useLanguageChange(): {
|
|
71
|
+
currentLanguage: string;
|
|
72
|
+
changeLanguage: (language: string) => void;
|
|
73
|
+
supportedLanguages: LanguageConfig[];
|
|
74
|
+
};
|
|
75
|
+
|
|
1
76
|
/**
|
|
2
77
|
* @hua-labs/i18n-core - 핵심 기능 전용 엔트리포인트
|
|
3
78
|
*
|
|
4
79
|
* 이 모듈은 기본적인 번역 기능만 필요한 경우 사용합니다.
|
|
5
80
|
* 플러그인, 고급 기능, 디버깅 도구 없이 순수한 번역 기능만 제공합니다.
|
|
6
81
|
*/
|
|
7
|
-
|
|
8
|
-
import { I18nProvider, useI18n } from './hooks/useI18n';
|
|
9
|
-
import { useTranslation, useLanguageChange } from './hooks/useTranslation';
|
|
10
|
-
import { Translator, ssrTranslate, serverTranslate } from './core/translator';
|
|
11
|
-
import { I18nConfig } from './types';
|
|
82
|
+
|
|
12
83
|
declare global {
|
|
13
84
|
interface Window {
|
|
14
85
|
__I18N_DEBUG_MODE__?: boolean;
|
|
@@ -75,7 +146,7 @@ declare global {
|
|
|
75
146
|
* }
|
|
76
147
|
* ```
|
|
77
148
|
*/
|
|
78
|
-
|
|
149
|
+
declare function createCoreI18n(options?: {
|
|
79
150
|
defaultLanguage?: string;
|
|
80
151
|
fallbackLanguage?: string;
|
|
81
152
|
namespaces?: string[];
|
|
@@ -98,65 +169,81 @@ export declare function createCoreI18n(options?: {
|
|
|
98
169
|
* 형식: { [language]: { [namespace]: { [key]: value } } }
|
|
99
170
|
*/
|
|
100
171
|
initialTranslations?: Record<string, Record<string, Record<string, string>>>;
|
|
172
|
+
/**
|
|
173
|
+
* 지원 언어 목록 (LanguageConfig 배열 또는 언어 코드 문자열 배열)
|
|
174
|
+
* 기본값: ['ko', 'en']
|
|
175
|
+
*/
|
|
176
|
+
supportedLanguages?: Array<{
|
|
177
|
+
code: string;
|
|
178
|
+
name: string;
|
|
179
|
+
nativeName: string;
|
|
180
|
+
}> | string[];
|
|
101
181
|
/**
|
|
102
182
|
* 자동 언어 동기화 활성화 여부
|
|
103
183
|
* 기본값: false (Zustand 어댑터 등 외부에서 직접 처리하는 경우)
|
|
104
184
|
*/
|
|
105
185
|
autoLanguageSync?: boolean;
|
|
186
|
+
/**
|
|
187
|
+
* 서버사이드 렌더링 시 사용할 기본 URL
|
|
188
|
+
* 환경 변수보다 우선 적용됨
|
|
189
|
+
*/
|
|
190
|
+
baseUrl?: string;
|
|
191
|
+
/**
|
|
192
|
+
* 로컬 개발 환경 fallback URL
|
|
193
|
+
* 기본값: 'http://localhost:3010'
|
|
194
|
+
*/
|
|
195
|
+
localFallbackBaseUrl?: string;
|
|
106
196
|
}): ({ children }: {
|
|
107
|
-
children: React.ReactNode;
|
|
108
|
-
}) => React.FunctionComponentElement<{
|
|
197
|
+
children: React$1.ReactNode;
|
|
198
|
+
}) => React$1.FunctionComponentElement<{
|
|
109
199
|
config: I18nConfig & {
|
|
110
200
|
autoLanguageSync?: boolean;
|
|
111
201
|
};
|
|
112
|
-
children: React.ReactNode;
|
|
202
|
+
children: React$1.ReactNode;
|
|
113
203
|
}>;
|
|
114
204
|
/**
|
|
115
205
|
* 가장 기본적인 Provider (최소한의 설정)
|
|
116
206
|
*/
|
|
117
|
-
|
|
118
|
-
children: React.ReactNode;
|
|
119
|
-
}): React.FunctionComponentElement<{
|
|
207
|
+
declare function CoreProvider({ children }: {
|
|
208
|
+
children: React$1.ReactNode;
|
|
209
|
+
}): React$1.FunctionComponentElement<{
|
|
120
210
|
config: I18nConfig & {
|
|
121
211
|
autoLanguageSync?: boolean;
|
|
122
212
|
};
|
|
123
|
-
children: React.ReactNode;
|
|
213
|
+
children: React$1.ReactNode;
|
|
124
214
|
}>;
|
|
125
215
|
/**
|
|
126
216
|
* 언어별 Provider (언어만 지정)
|
|
127
217
|
*/
|
|
128
|
-
|
|
129
|
-
children: React.ReactNode;
|
|
130
|
-
}) => React.FunctionComponentElement<{
|
|
218
|
+
declare function createLanguageProvider(language: string): ({ children }: {
|
|
219
|
+
children: React$1.ReactNode;
|
|
220
|
+
}) => React$1.FunctionComponentElement<{
|
|
131
221
|
config: I18nConfig & {
|
|
132
222
|
autoLanguageSync?: boolean;
|
|
133
223
|
};
|
|
134
|
-
children: React.ReactNode;
|
|
224
|
+
children: React$1.ReactNode;
|
|
135
225
|
}>;
|
|
136
226
|
/**
|
|
137
227
|
* 네임스페이스별 Provider (네임스페이스만 지정)
|
|
138
228
|
*/
|
|
139
|
-
|
|
140
|
-
children: React.ReactNode;
|
|
141
|
-
}) => React.FunctionComponentElement<{
|
|
229
|
+
declare function createNamespaceProvider(namespaces: string[]): ({ children }: {
|
|
230
|
+
children: React$1.ReactNode;
|
|
231
|
+
}) => React$1.FunctionComponentElement<{
|
|
142
232
|
config: I18nConfig & {
|
|
143
233
|
autoLanguageSync?: boolean;
|
|
144
234
|
};
|
|
145
|
-
children: React.ReactNode;
|
|
235
|
+
children: React$1.ReactNode;
|
|
146
236
|
}>;
|
|
147
237
|
/**
|
|
148
238
|
* 커스텀 로더 Provider (사용자 정의 번역 로더 사용)
|
|
149
239
|
*/
|
|
150
|
-
|
|
151
|
-
children: React.ReactNode;
|
|
152
|
-
}) => React.FunctionComponentElement<{
|
|
240
|
+
declare function createCustomLoaderProvider(loadTranslations: (language: string, namespace: string) => Promise<Record<string, string>>): ({ children }: {
|
|
241
|
+
children: React$1.ReactNode;
|
|
242
|
+
}) => React$1.FunctionComponentElement<{
|
|
153
243
|
config: I18nConfig & {
|
|
154
244
|
autoLanguageSync?: boolean;
|
|
155
245
|
};
|
|
156
|
-
children: React.ReactNode;
|
|
246
|
+
children: React$1.ReactNode;
|
|
157
247
|
}>;
|
|
158
|
-
|
|
159
|
-
export { I18nProvider };
|
|
160
|
-
export { Translator, ssrTranslate, serverTranslate };
|
|
161
|
-
export type { I18nConfig };
|
|
162
|
-
//# sourceMappingURL=index.d.ts.map
|
|
248
|
+
|
|
249
|
+
export { CoreProvider, I18nConfig, I18nContextType, I18nProvider, ResolveArrayKey, ResolvePluralKey, ResolveStringKey, TranslationParams, createCoreI18n, createCustomLoaderProvider, createLanguageProvider, createNamespaceProvider, useI18n, useLanguageChange, useTranslation };
|