diff --git a/packages/use-i18n/src/__tests__/usei18n.tsx b/packages/use-i18n/src/__tests__/usei18n.tsx index 8ffb5cc31..c2c874f33 100644 --- a/packages/use-i18n/src/__tests__/usei18n.tsx +++ b/packages/use-i18n/src/__tests__/usei18n.tsx @@ -186,7 +186,7 @@ describe('i18n hook', () => { jest.spyOn(window, 'navigator', 'get').mockImplementation(() => ({ language: 'en-US', languages: ['en-US', 'en'], - })) + }) as unknown as Navigator) const { result, waitForNextUpdate } = renderHook(() => useI18n(), { wrapper: wrapper({ defaultLocale: 'fr', @@ -201,7 +201,7 @@ describe('i18n hook', () => { jest.spyOn(window, 'navigator', 'get').mockImplementation(() => ({ language: 'en', languages: undefined, - })) + }) as unknown as Navigator) const { result, waitForNextUpdate } = renderHook(() => useI18n(), { wrapper: wrapper({ defaultLocale: 'fr', @@ -278,7 +278,7 @@ describe('i18n hook', () => { }), }) await waitForNextUpdate() - const identiqueTranslate = result.current.namespaceTranslation() + const identiqueTranslate = result.current.namespaceTranslation('') expect(identiqueTranslate('title')).toEqual(result.current.t('title')) const translate = result.current.namespaceTranslation('tests.test') diff --git a/packages/use-i18n/src/index.ts b/packages/use-i18n/src/index.ts index 274eb1be0..1a2e86589 100644 --- a/packages/use-i18n/src/index.ts +++ b/packages/use-i18n/src/index.ts @@ -1,5 +1,5 @@ -import usei18n from './usei18n' +import I18nContextProvider from './usei18n' export * from './usei18n' -export default usei18n +export default I18nContextProvider diff --git a/packages/use-i18n/src/usei18n.tsx b/packages/use-i18n/src/usei18n.tsx index e7d45c883..b6759cd64 100644 --- a/packages/use-i18n/src/usei18n.tsx +++ b/packages/use-i18n/src/usei18n.tsx @@ -120,16 +120,18 @@ const I18nContextProvider = ({ children, defaultLoad, loadDateLocale, + defaultDateLocale, defaultLocale, - defaultTranslations, - enableDefaultLocale, - enableDebugKey, - localeItemStorage, + defaultTranslations = {}, + enableDefaultLocale = false, + enableDebugKey = false, + localeItemStorage = LOCALE_ITEM_STORAGE, supportedLocales, }: { children: ReactNode, defaultLoad: LoadTranslationsFn, - loadDateLocale: LoadLocaleFn, + loadDateLocale?: LoadLocaleFn, + defaultDateLocale?: Locale, defaultLocale: string, defaultTranslations: TranslationsByLocales, enableDefaultLocale: boolean, @@ -142,10 +144,10 @@ const I18nContextProvider = ({ ) const [translations, setTranslations] = useState(defaultTranslations) const [namespaces, setNamespaces] = useState([]) - const [dateFnsLocale, setDateFnsLocale] = useState() + const [dateFnsLocale, setDateFnsLocale] = useState(defaultDateLocale ?? undefined) useEffect(() => { - loadDateLocale(currentLocale === 'en' ? 'en-GB' : currentLocale) + loadDateLocale?.(currentLocale === 'en' ? 'en-GB' : currentLocale) .then(setDateFnsLocale) .catch(() => loadDateLocale('en-GB').then(setDateFnsLocale)) }, [loadDateLocale, currentLocale]) @@ -340,21 +342,15 @@ const I18nContextProvider = ({ return {children} } -I18nContextProvider.defaultProps = { - defaultTranslations: {}, - enableDebugKey: false, - enableDefaultLocale: false, - localeItemStorage: LOCALE_ITEM_STORAGE, -} - I18nContextProvider.propTypes = { children: PropTypes.node.isRequired, + defaultDateLocale: PropTypes.shape({}), defaultLoad: PropTypes.func.isRequired, defaultLocale: PropTypes.string.isRequired, defaultTranslations: PropTypes.shape({}), enableDebugKey: PropTypes.bool, enableDefaultLocale: PropTypes.bool, - loadDateLocale: PropTypes.func.isRequired, + loadDateLocale: PropTypes.func, localeItemStorage: PropTypes.string, supportedLocales: PropTypes.arrayOf(PropTypes.string).isRequired, }