@hua-labs/i18n-core 1.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.
Files changed (58) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +636 -0
  3. package/dist/components/MissingKeyOverlay.d.ts +33 -0
  4. package/dist/components/MissingKeyOverlay.d.ts.map +1 -0
  5. package/dist/components/MissingKeyOverlay.js +138 -0
  6. package/dist/components/MissingKeyOverlay.js.map +1 -0
  7. package/dist/core/debug-tools.d.ts +37 -0
  8. package/dist/core/debug-tools.d.ts.map +1 -0
  9. package/dist/core/debug-tools.js +241 -0
  10. package/dist/core/debug-tools.js.map +1 -0
  11. package/dist/core/i18n-resource.d.ts +59 -0
  12. package/dist/core/i18n-resource.d.ts.map +1 -0
  13. package/dist/core/i18n-resource.js +153 -0
  14. package/dist/core/i18n-resource.js.map +1 -0
  15. package/dist/core/lazy-loader.d.ts +82 -0
  16. package/dist/core/lazy-loader.d.ts.map +1 -0
  17. package/dist/core/lazy-loader.js +193 -0
  18. package/dist/core/lazy-loader.js.map +1 -0
  19. package/dist/core/translator-factory.d.ts +50 -0
  20. package/dist/core/translator-factory.d.ts.map +1 -0
  21. package/dist/core/translator-factory.js +117 -0
  22. package/dist/core/translator-factory.js.map +1 -0
  23. package/dist/core/translator.d.ts +202 -0
  24. package/dist/core/translator.d.ts.map +1 -0
  25. package/dist/core/translator.js +912 -0
  26. package/dist/core/translator.js.map +1 -0
  27. package/dist/hooks/useI18n.d.ts +39 -0
  28. package/dist/hooks/useI18n.d.ts.map +1 -0
  29. package/dist/hooks/useI18n.js +531 -0
  30. package/dist/hooks/useI18n.js.map +1 -0
  31. package/dist/hooks/useTranslation.d.ts +55 -0
  32. package/dist/hooks/useTranslation.d.ts.map +1 -0
  33. package/dist/hooks/useTranslation.js +58 -0
  34. package/dist/hooks/useTranslation.js.map +1 -0
  35. package/dist/index.d.ts +162 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +191 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/types/index.d.ts +162 -0
  40. package/dist/types/index.d.ts.map +1 -0
  41. package/dist/types/index.js +191 -0
  42. package/dist/types/index.js.map +1 -0
  43. package/dist/utils/default-translations.d.ts +20 -0
  44. package/dist/utils/default-translations.d.ts.map +1 -0
  45. package/dist/utils/default-translations.js +123 -0
  46. package/dist/utils/default-translations.js.map +1 -0
  47. package/package.json +60 -0
  48. package/src/components/MissingKeyOverlay.tsx +223 -0
  49. package/src/core/debug-tools.ts +298 -0
  50. package/src/core/i18n-resource.ts +180 -0
  51. package/src/core/lazy-loader.ts +255 -0
  52. package/src/core/translator-factory.ts +137 -0
  53. package/src/core/translator.tsx +1194 -0
  54. package/src/hooks/useI18n.tsx +595 -0
  55. package/src/hooks/useTranslation.tsx +62 -0
  56. package/src/index.ts +298 -0
  57. package/src/types/index.ts +443 -0
  58. package/src/utils/default-translations.ts +129 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translator.js","sourceRoot":"","sources":["../../src/core/translator.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { I18nConfig, I18nContextType, TranslationParams, TranslationError } from '../types';
2
+ /**
3
+ * I18n Provider 컴포넌트
4
+ */
5
+ export declare function I18nProvider({ config, children }: {
6
+ config: I18nConfig & {
7
+ autoLanguageSync?: boolean;
8
+ };
9
+ children: React.ReactNode;
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ /**
12
+ * I18n 훅
13
+ */
14
+ export declare function useI18n(): I18nContextType;
15
+ /**
16
+ * 간단한 번역 훅 (hua-api 스타일)
17
+ */
18
+ export declare function useTranslation(): {
19
+ t: (key: string, language?: string) => string;
20
+ tWithParams: (key: string, params?: TranslationParams, language?: string) => string;
21
+ currentLanguage: string;
22
+ setLanguage: (language: string) => void;
23
+ isLoading: boolean;
24
+ error: TranslationError | null;
25
+ supportedLanguages: import("../types").LanguageConfig[];
26
+ };
27
+ /**
28
+ * 언어 변경 훅
29
+ */
30
+ export declare function useLanguageChange(): {
31
+ currentLanguage: string;
32
+ changeLanguage: (language: string) => void;
33
+ supportedLanguages: import("../types").LanguageConfig[];
34
+ };
35
+ export declare function usePreloadTranslations(): {
36
+ preload: (namespaces: string[]) => Promise<void>;
37
+ };
38
+ export declare function useAutoLoadNamespace(namespace: string): void;
39
+ //# sourceMappingURL=useI18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useI18n.d.ts","sourceRoot":"","sources":["../../src/hooks/useI18n.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAEjB,MAAM,UAAU,CAAC;AAMlB;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,QAAQ,EACT,EAAE;IACD,MAAM,EAAE,UAAU,GAAG;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACpD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CA2cA;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,eAAe,CAiCzC;AAED;;GAEG;AACH,wBAAgB,cAAc;;;;;;;;EAY7B;AAED;;GAEG;AACH,wBAAgB,iBAAiB;;+BAiBe,MAAM;;EAcrD;AAGD,wBAAgB,sBAAsB;0BAGW,MAAM,EAAE;EAQxD;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,QAGrD"}
@@ -0,0 +1,531 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useState, useEffect, useCallback, useContext, createContext, useMemo } from 'react';
4
+ import { TranslatorFactory } from '../core/translator-factory';
5
+ import { validateI18nConfig } from '../types';
6
+ import { getDefaultTranslations } from '../utils/default-translations';
7
+ // React Context
8
+ const I18nContext = createContext(null);
9
+ /**
10
+ * I18n Provider 컴포넌트
11
+ */
12
+ export function I18nProvider({ config, children }) {
13
+ const [currentLanguage, setCurrentLanguageState] = useState(config.defaultLanguage);
14
+ const [isLoading, setIsLoading] = useState(true);
15
+ const [isInitialized, setIsInitialized] = useState(false);
16
+ const [error, setError] = useState(null);
17
+ // 번역 로드 완료 시 리렌더링을 위한 상태
18
+ const [translationVersion, setTranslationVersion] = useState(0);
19
+ // config.defaultLanguage가 변경되면 currentLanguage도 업데이트
20
+ // 단, 초기화 전에만 적용 (초기화 후에는 외부에서 언어 변경 가능)
21
+ useEffect(() => {
22
+ if (!isInitialized && config.defaultLanguage !== currentLanguage) {
23
+ setCurrentLanguageState(config.defaultLanguage);
24
+ }
25
+ }, [config.defaultLanguage, currentLanguage, isInitialized]);
26
+ // Translator 인스턴스 초기화 (메모이제이션)
27
+ const translator = useMemo(() => {
28
+ if (!validateI18nConfig(config)) {
29
+ throw new Error('Invalid I18nConfig provided to I18nProvider');
30
+ }
31
+ return TranslatorFactory.create(config);
32
+ }, [config]);
33
+ // 초기화는 한 번만 수행
34
+ useEffect(() => {
35
+ if (isInitialized) {
36
+ // 이미 초기화되어 있으면 언어만 변경
37
+ // 단, translator의 현재 언어와 다를 때만 변경 (무한 루프 방지)
38
+ const translatorLang = translator.getCurrentLanguage();
39
+ if (translatorLang !== currentLanguage) {
40
+ // translator의 언어를 currentLanguage로 변경
41
+ // 이는 외부에서 setLanguage를 호출했을 때 발생하는 정상적인 동기화
42
+ if (config.debug) {
43
+ console.log(`🔄 [USEI18N] Syncing translator language: ${translatorLang} -> ${currentLanguage} (already initialized)`);
44
+ }
45
+ translator.setLanguage(currentLanguage);
46
+ }
47
+ return;
48
+ }
49
+ if (config.debug) {
50
+ console.log('🔄 [USEI18N] useEffect triggered:', {
51
+ hasTranslator: !!translator,
52
+ currentLanguage,
53
+ debug: config.debug,
54
+ isInitialized
55
+ });
56
+ }
57
+ const initializeTranslator = async () => {
58
+ try {
59
+ setIsLoading(true);
60
+ setError(null);
61
+ if (config.debug) {
62
+ console.log('🚀 [USEI18N] Starting translator initialization...');
63
+ }
64
+ translator.setLanguage(currentLanguage);
65
+ // 모든 번역 데이터 미리 로드
66
+ await translator.initialize();
67
+ setIsInitialized(true);
68
+ if (config.debug) {
69
+ console.log('✅ [USEI18N] Translator initialization completed successfully');
70
+ }
71
+ }
72
+ catch (err) {
73
+ const initError = err;
74
+ setError(initError);
75
+ if (config.debug) {
76
+ console.error('❌ [USEI18N] Failed to initialize translator:', initError);
77
+ }
78
+ // 에러가 발생해도 초기화 완료로 표시 (기본 번역 사용)
79
+ setIsInitialized(true);
80
+ }
81
+ finally {
82
+ setIsLoading(false);
83
+ }
84
+ };
85
+ initializeTranslator();
86
+ }, [translator, currentLanguage, config.debug, isInitialized]);
87
+ // 번역 로드 완료 이벤트 감지 (리렌더링 트리거)
88
+ useEffect(() => {
89
+ if (!translator || !isInitialized) {
90
+ return;
91
+ }
92
+ const unsubscribe = translator.onTranslationLoaded(() => {
93
+ // 번역이 로드되면 상태를 업데이트하여 리렌더링 트리거
94
+ setTranslationVersion(prev => prev + 1);
95
+ if (config.debug) {
96
+ console.log('🔄 [USEI18N] Translation loaded, triggering re-render');
97
+ }
98
+ });
99
+ return unsubscribe;
100
+ }, [translator, isInitialized, config.debug]);
101
+ // Translator의 언어 변경 감지 (외부에서 translator.setLanguage() 호출 시 동기화)
102
+ useEffect(() => {
103
+ if (!translator || !isInitialized) {
104
+ return;
105
+ }
106
+ // 언어 변경 이벤트 구독
107
+ const unsubscribe = translator.onLanguageChanged((newLanguage) => {
108
+ if (newLanguage !== currentLanguage) {
109
+ if (config.debug) {
110
+ console.log(`🔄 [USEI18N] Language changed event: ${currentLanguage} -> ${newLanguage}`);
111
+ }
112
+ setCurrentLanguageState(newLanguage);
113
+ setTranslationVersion(prev => prev + 1); // 리렌더링 트리거
114
+ }
115
+ });
116
+ return unsubscribe;
117
+ }, [translator, isInitialized, currentLanguage, config.debug]);
118
+ // 자동 언어 전환 이벤트 처리
119
+ useEffect(() => {
120
+ if (!config.autoLanguageSync || typeof window === 'undefined') {
121
+ return;
122
+ }
123
+ const handleLanguageChange = (event) => {
124
+ const newLanguage = event.detail;
125
+ if (typeof newLanguage === 'string' && newLanguage !== currentLanguage) {
126
+ if (config.debug) {
127
+ console.log('🌐 Auto language sync:', newLanguage);
128
+ }
129
+ setLanguage(newLanguage);
130
+ }
131
+ };
132
+ // hua-i18n-sdk 언어 전환 이벤트 감지
133
+ window.addEventListener('huaI18nLanguageChange', handleLanguageChange);
134
+ // 일반적인 언어 변경 이벤트도 감지
135
+ window.addEventListener('i18nLanguageChanged', handleLanguageChange);
136
+ return () => {
137
+ window.removeEventListener('huaI18nLanguageChange', handleLanguageChange);
138
+ window.removeEventListener('i18nLanguageChanged', handleLanguageChange);
139
+ };
140
+ }, [config.autoLanguageSync, currentLanguage]);
141
+ // 언어 변경 함수 (메모이제이션)
142
+ const setLanguage = useCallback(async (language) => {
143
+ if (!translator) {
144
+ return;
145
+ }
146
+ // 현재 언어와 동일하면 스킵 (무한 루프 방지)
147
+ const currentLang = translator.getCurrentLanguage();
148
+ if (currentLang === language) {
149
+ if (config.debug) {
150
+ console.log(`⏭️ [USEI18N] Language unchanged, skipping: ${language}`);
151
+ }
152
+ return;
153
+ }
154
+ if (config.debug) {
155
+ if (config.debug) {
156
+ console.log(`🔄 [USEI18N] setLanguage called: ${currentLang} -> ${language}`);
157
+ }
158
+ }
159
+ setIsLoading(true);
160
+ try {
161
+ // 언어 변경 (translate 함수에서 이전 언어의 번역을 임시로 반환하므로 깜빡임 방지)
162
+ translator.setLanguage(language);
163
+ setCurrentLanguageState(language);
164
+ // 새로운 언어의 번역 데이터가 이미 로드되어 있는지 확인
165
+ // 로드되지 않은 네임스페이스는 자동으로 로드됨 (translator 내부에서 처리)
166
+ // 언어 변경 시 리렌더링 트리거 (번역 로드 완료 이벤트가 자동으로 발생)
167
+ await new Promise(resolve => setTimeout(resolve, 0)); // 다음 틱에서 리렌더링
168
+ if (config.debug) {
169
+ console.log(`✅ [USEI18N] Language changed to ${language}`);
170
+ }
171
+ }
172
+ catch (error) {
173
+ if (config.debug) {
174
+ console.error(`❌ [USEI18N] Failed to change language to ${language}:`, error);
175
+ }
176
+ }
177
+ finally {
178
+ setIsLoading(false);
179
+ }
180
+ }, [translator, config.debug]);
181
+ // parseKey 함수를 메모이제이션하여 성능 최적화
182
+ const parseKey = useCallback((key) => {
183
+ const parts = key.split(':');
184
+ if (parts.length >= 2) {
185
+ return { namespace: parts[0], key: parts.slice(1).join(':') };
186
+ }
187
+ return { namespace: 'common', key };
188
+ }, []);
189
+ // SSR 번역에서 찾기
190
+ const findInSSRTranslations = useCallback((key, targetLang) => {
191
+ if (!config.initialTranslations) {
192
+ return null;
193
+ }
194
+ const { namespace, key: actualKey } = parseKey(key);
195
+ // 현재 언어의 SSR 번역 확인
196
+ const ssrTranslations = config.initialTranslations[targetLang]?.[namespace];
197
+ if (ssrTranslations && ssrTranslations[actualKey]) {
198
+ const value = ssrTranslations[actualKey];
199
+ if (typeof value === 'string') {
200
+ return value;
201
+ }
202
+ }
203
+ // 폴백 언어의 SSR 번역 확인
204
+ const fallbackLang = config.fallbackLanguage || 'en';
205
+ if (targetLang !== fallbackLang) {
206
+ const fallbackTranslations = config.initialTranslations[fallbackLang]?.[namespace];
207
+ if (fallbackTranslations && fallbackTranslations[actualKey]) {
208
+ const value = fallbackTranslations[actualKey];
209
+ if (typeof value === 'string') {
210
+ return value;
211
+ }
212
+ }
213
+ }
214
+ return null;
215
+ }, [config.initialTranslations, config.fallbackLanguage, parseKey]);
216
+ // 기본 번역에서 찾기
217
+ const findInDefaultTranslations = useCallback((key, targetLang) => {
218
+ const { namespace, key: actualKey } = parseKey(key);
219
+ const defaultTranslations = getDefaultTranslations(targetLang, namespace);
220
+ const fallbackTranslations = getDefaultTranslations(config.fallbackLanguage || 'en', namespace);
221
+ return defaultTranslations[actualKey] || fallbackTranslations[actualKey] || null;
222
+ }, [config.fallbackLanguage, parseKey]);
223
+ // hua-api 스타일의 간단한 번역 함수 (메모이제이션)
224
+ // translationVersion과 currentLanguage에 의존하여 번역 로드 및 언어 변경 시 리렌더링 트리거
225
+ const t = useCallback((key, language) => {
226
+ // translationVersion과 currentLanguage를 참조하여 번역 로드 및 언어 변경 시 리렌더링 트리거
227
+ // 의존성 배열에 포함되어 있어서 값이 변경되면 함수가 재생성됨
228
+ void translationVersion;
229
+ void currentLanguage;
230
+ if (!translator) {
231
+ return key;
232
+ }
233
+ const targetLang = language || currentLanguage;
234
+ // 1단계: translator.translate() 시도
235
+ try {
236
+ const result = translator.translate(key, language);
237
+ if (result && result !== key && result !== '') {
238
+ return result;
239
+ }
240
+ }
241
+ catch (error) {
242
+ // translator.translate() 실패 시 다음 단계로 진행
243
+ }
244
+ // 2단계: SSR 번역 데이터에서 찾기
245
+ const ssrResult = findInSSRTranslations(key, targetLang);
246
+ if (ssrResult) {
247
+ return ssrResult;
248
+ }
249
+ // 3단계: 기본 번역 데이터에서 찾기
250
+ const defaultResult = findInDefaultTranslations(key, targetLang);
251
+ if (defaultResult) {
252
+ return defaultResult;
253
+ }
254
+ // 모든 단계에서 번역을 찾지 못한 경우
255
+ if (config.debug) {
256
+ return key; // 개발 환경에서는 키를 표시하여 디버깅 가능
257
+ }
258
+ return ''; // 프로덕션에서는 빈 문자열 반환하여 미싱 키 노출 방지
259
+ }, [translator, config.debug, currentLanguage, config.fallbackLanguage, translationVersion, findInSSRTranslations, findInDefaultTranslations]);
260
+ // 파라미터가 있는 번역 함수 (메모이제이션)
261
+ const tWithParams = useCallback((key, params, language) => {
262
+ if (!translator || !isInitialized) {
263
+ return key;
264
+ }
265
+ return translator.translateWithParams(key, params, language);
266
+ }, [translator, isInitialized]);
267
+ // 기존 비동기 번역 함수 (하위 호환성)
268
+ const tAsync = useCallback(async (key, params) => {
269
+ if (!translator) {
270
+ if (config.debug) {
271
+ console.warn('Translator not initialized');
272
+ }
273
+ return key;
274
+ }
275
+ setIsLoading(true);
276
+ try {
277
+ const result = await translator.translateAsync(key, params);
278
+ return result;
279
+ }
280
+ catch (error) {
281
+ if (config.debug) {
282
+ console.error('Translation error:', error);
283
+ }
284
+ return key;
285
+ }
286
+ finally {
287
+ setIsLoading(false);
288
+ }
289
+ }, [translator, config.debug]);
290
+ // 기존 동기 번역 함수 (하위 호환성)
291
+ const tSync = useCallback((key, namespace, params) => {
292
+ if (!translator) {
293
+ if (config.debug) {
294
+ console.warn('Translator not initialized');
295
+ }
296
+ return key;
297
+ }
298
+ return translator.translateSync(key, params);
299
+ }, [translator, config.debug]);
300
+ // 원시 값 가져오기 (배열, 객체 포함)
301
+ const getRawValue = useCallback((key, language) => {
302
+ if (!translator || !isInitialized) {
303
+ return undefined;
304
+ }
305
+ return translator.getRawValue(key, language);
306
+ }, [translator, isInitialized]);
307
+ // 개발자 도구 (메모이제이션)
308
+ const debug = useMemo(() => ({
309
+ getCurrentLanguage: () => {
310
+ try {
311
+ return translator?.getCurrentLanguage() || currentLanguage;
312
+ }
313
+ catch {
314
+ return currentLanguage;
315
+ }
316
+ },
317
+ getSupportedLanguages: () => {
318
+ try {
319
+ return translator?.getSupportedLanguages() || config.supportedLanguages?.map(l => l.code) || [];
320
+ }
321
+ catch {
322
+ return config.supportedLanguages?.map(l => l.code) || [];
323
+ }
324
+ },
325
+ getLoadedNamespaces: () => {
326
+ try {
327
+ const debugInfo = translator?.debug();
328
+ if (debugInfo && debugInfo.loadedNamespaces) {
329
+ return Array.from(debugInfo.loadedNamespaces);
330
+ }
331
+ // 번역 데이터가 있으면 네임스페이스 추정
332
+ if (debugInfo && debugInfo.allTranslations) {
333
+ const namespaces = new Set();
334
+ Object.values(debugInfo.allTranslations).forEach((langData) => {
335
+ if (langData && typeof langData === 'object') {
336
+ Object.keys(langData).forEach(namespace => {
337
+ namespaces.add(namespace);
338
+ });
339
+ }
340
+ });
341
+ return Array.from(namespaces);
342
+ }
343
+ return [];
344
+ }
345
+ catch (error) {
346
+ return [];
347
+ }
348
+ },
349
+ getAllTranslations: () => {
350
+ try {
351
+ return translator?.debug()?.allTranslations || {};
352
+ }
353
+ catch (error) {
354
+ return {};
355
+ }
356
+ },
357
+ isReady: () => {
358
+ try {
359
+ return translator?.isReady() || isInitialized;
360
+ }
361
+ catch {
362
+ return isInitialized;
363
+ }
364
+ },
365
+ getInitializationError: () => {
366
+ try {
367
+ return translator?.getInitializationError() || error;
368
+ }
369
+ catch {
370
+ return error;
371
+ }
372
+ },
373
+ clearCache: () => {
374
+ try {
375
+ translator?.clearCache();
376
+ }
377
+ catch {
378
+ // 무시
379
+ }
380
+ },
381
+ getCacheStats: () => {
382
+ try {
383
+ const debugInfo = translator?.debug();
384
+ if (debugInfo && debugInfo.cacheStats) {
385
+ return {
386
+ size: debugInfo.cacheSize || 0,
387
+ hits: debugInfo.cacheStats.hits || 0,
388
+ misses: debugInfo.cacheStats.misses || 0
389
+ };
390
+ }
391
+ return { size: 0, hits: 0, misses: 0 };
392
+ }
393
+ catch (error) {
394
+ return { size: 0, hits: 0, misses: 0 };
395
+ }
396
+ },
397
+ reloadTranslations: async () => {
398
+ if (translator) {
399
+ setIsLoading(true);
400
+ setError(null);
401
+ try {
402
+ await translator.initialize();
403
+ }
404
+ catch (err) {
405
+ setError(err);
406
+ }
407
+ finally {
408
+ setIsLoading(false);
409
+ }
410
+ }
411
+ },
412
+ }), [translator, currentLanguage, error, isInitialized, config.supportedLanguages]);
413
+ const value = useMemo(() => ({
414
+ currentLanguage,
415
+ setLanguage,
416
+ t,
417
+ tWithParams,
418
+ tAsync,
419
+ tSync,
420
+ getRawValue,
421
+ isLoading,
422
+ error,
423
+ supportedLanguages: config.supportedLanguages,
424
+ debug,
425
+ isInitialized, // 추가: 초기화 상태 직접 노출
426
+ translationVersion, // 번역 로드 완료 시 리렌더링 트리거
427
+ }), [currentLanguage, setLanguage, t, tWithParams, tAsync, tSync, getRawValue, isLoading, error, config.supportedLanguages, debug, isInitialized, translationVersion]);
428
+ // 의존성 배열은 이미 최적화되어 있음
429
+ // t, tWithParams, tAsync, tSync, getRawValue는 모두 useCallback으로 메모이제이션됨
430
+ return (_jsx(I18nContext.Provider, { value: value, children: children }));
431
+ }
432
+ /**
433
+ * I18n 훅
434
+ */
435
+ export function useI18n() {
436
+ const context = useContext(I18nContext);
437
+ if (!context) {
438
+ // Provider 밖에서 호출되면 기본값 반환
439
+ return {
440
+ currentLanguage: 'ko',
441
+ setLanguage: () => { },
442
+ t: (key) => key,
443
+ tWithParams: (key) => key,
444
+ tAsync: async (key) => key,
445
+ tSync: (key) => key,
446
+ getRawValue: () => undefined,
447
+ isLoading: false,
448
+ error: null,
449
+ supportedLanguages: [
450
+ { code: 'ko', name: 'Korean', nativeName: '한국어' },
451
+ { code: 'en', name: 'English', nativeName: 'English' },
452
+ ],
453
+ isInitialized: false,
454
+ debug: {
455
+ getCurrentLanguage: () => 'ko',
456
+ getSupportedLanguages: () => ['ko', 'en'],
457
+ getLoadedNamespaces: () => [],
458
+ getAllTranslations: () => ({}),
459
+ isReady: () => false,
460
+ getInitializationError: () => null,
461
+ clearCache: () => { },
462
+ getCacheStats: () => ({ size: 0, hits: 0, misses: 0 }),
463
+ reloadTranslations: async () => { },
464
+ },
465
+ };
466
+ }
467
+ return context;
468
+ }
469
+ /**
470
+ * 간단한 번역 훅 (hua-api 스타일)
471
+ */
472
+ export function useTranslation() {
473
+ const { t, tWithParams, currentLanguage, setLanguage, isLoading, error, supportedLanguages } = useI18n();
474
+ return {
475
+ t,
476
+ tWithParams,
477
+ currentLanguage,
478
+ setLanguage,
479
+ isLoading,
480
+ error,
481
+ supportedLanguages,
482
+ };
483
+ }
484
+ /**
485
+ * 언어 변경 훅
486
+ */
487
+ export function useLanguageChange() {
488
+ const context = useContext(I18nContext);
489
+ // Provider 밖에서 호출되면 기본값 반환
490
+ if (!context) {
491
+ return {
492
+ currentLanguage: 'ko',
493
+ changeLanguage: () => { },
494
+ supportedLanguages: [
495
+ { code: 'ko', name: 'Korean', nativeName: '한국어' },
496
+ { code: 'en', name: 'English', nativeName: 'English' },
497
+ ],
498
+ };
499
+ }
500
+ const { currentLanguage, setLanguage, supportedLanguages } = context;
501
+ const changeLanguage = useCallback((language) => {
502
+ const supported = supportedLanguages.find(lang => lang.code === language);
503
+ if (supported) {
504
+ setLanguage(language);
505
+ }
506
+ else {
507
+ console.warn(`Language ${language} is not supported`);
508
+ }
509
+ }, [setLanguage, supportedLanguages]);
510
+ return {
511
+ currentLanguage,
512
+ changeLanguage,
513
+ supportedLanguages,
514
+ };
515
+ }
516
+ // 기존 훅들 (하위 호환성을 위해 유지)
517
+ export function usePreloadTranslations() {
518
+ const context = useContext(I18nContext);
519
+ const preload = useCallback(async (namespaces) => {
520
+ if (!context)
521
+ return;
522
+ // 이미 초기화되어 있으므로 별도 로딩 불필요
523
+ console.warn('usePreloadTranslations is deprecated. Translations are now preloaded automatically.');
524
+ }, [context]);
525
+ return { preload };
526
+ }
527
+ export function useAutoLoadNamespace(namespace) {
528
+ // 이미 초기화되어 있으므로 별도 로딩 불필요
529
+ console.warn('useAutoLoadNamespace is deprecated. All namespaces are now loaded automatically.');
530
+ }
531
+ //# sourceMappingURL=useI18n.js.map