diff --git a/src/shared/language/index.tsx b/src/shared/language/context/language-provider.tsx similarity index 73% rename from src/shared/language/index.tsx rename to src/shared/language/context/language-provider.tsx index b2daf9c..ebf9db9 100644 --- a/src/shared/language/index.tsx +++ b/src/shared/language/context/language-provider.tsx @@ -1,16 +1,9 @@ 'use client'; -import { Loader } from 'lucide-react'; -import { - createContext, - type ReactNode, - useContext, - useEffect, - useState, -} from 'react'; +import { createContext, type ReactNode, useEffect, useState } from 'react'; -import enTranslations from './locales/en.json'; -import ruTranslations from './locales/ru.json'; +import enTranslations from '../locales/en.json'; +import ruTranslations from '../locales/ru.json'; // Define available languages export const languages = { @@ -36,7 +29,7 @@ type LanguageContextType = { t: (key: string) => string; }; -const LanguageContext = createContext( +export const LanguageContext = createContext( undefined, ); @@ -80,17 +73,3 @@ export function LanguageProvider({ children }: { children: ReactNode }) { ); } - -// Create hook -export function useLanguage() { - const context = useContext(LanguageContext); - if (context === undefined) { - throw new Error('useLanguage must be used within a LanguageProvider'); - } - - if (typeof context.t !== 'function') { - throw new Error('Translation function (t) is not available'); - } - - return context; -} diff --git a/src/shared/language/hooks/use-language.ts b/src/shared/language/hooks/use-language.ts new file mode 100644 index 0000000..6473281 --- /dev/null +++ b/src/shared/language/hooks/use-language.ts @@ -0,0 +1,18 @@ +'use client'; + +import { useContext } from 'react'; + +import { LanguageContext } from '../context/language-provider'; + +export function useLanguage() { + const context = useContext(LanguageContext); + if (context === undefined) { + throw new Error('useLanguage must be used within a LanguageProvider'); + } + + if (typeof context.t !== 'function') { + throw new Error('Translation function (t) is not available'); + } + + return context; +} diff --git a/src/shared/language/index.ts b/src/shared/language/index.ts new file mode 100644 index 0000000..35d8d88 --- /dev/null +++ b/src/shared/language/index.ts @@ -0,0 +1,6 @@ +export { + LanguageProvider, + languages, + type Language, +} from './context/language-provider'; +export { useLanguage } from './hooks/use-language'; diff --git a/src/shared/providers/providers.tsx b/src/shared/providers/providers.tsx index d4fa91b..f2c02cd 100644 --- a/src/shared/providers/providers.tsx +++ b/src/shared/providers/providers.tsx @@ -2,11 +2,11 @@ import { Provider } from 'react-redux'; +import { LanguageProvider } from '../language'; import { store } from '../store'; import { ThemeProvider } from '../theme/theme-provider'; import { AosProvider } from './aos-provider'; import { Toaster } from './toaster'; -import { LanguageProvider } from '../language'; type ProvidersProps = { children: React.ReactNode;