B2B-88: add starter kit structure and elements

This commit is contained in:
devmc-ee
2025-06-08 16:18:30 +03:00
parent 657a36a298
commit e7b25600cb
1280 changed files with 77893 additions and 5688 deletions

View File

@@ -0,0 +1,47 @@
'use client';
import type { InitOptions, i18n } from 'i18next';
import { initializeI18nClient } from './i18n.client';
let i18nInstance: i18n;
type Resolver = (
lang: string,
namespace: string,
) => Promise<Record<string, string>>;
export function I18nProvider({
settings,
children,
resolver,
}: React.PropsWithChildren<{
settings: InitOptions;
resolver: Resolver;
}>) {
useI18nClient(settings, resolver);
return children;
}
/**
* @name useI18nClient
* @description A hook that initializes the i18n client.
* @param settings
* @param resolver
*/
function useI18nClient(settings: InitOptions, resolver: Resolver) {
if (
!i18nInstance ||
i18nInstance.language !== settings.lng ||
i18nInstance.options.ns?.length !== settings.ns?.length
) {
throw loadI18nInstance(settings, resolver);
}
return i18nInstance;
}
async function loadI18nInstance(settings: InitOptions, resolver: Resolver) {
i18nInstance = await initializeI18nClient(settings, resolver);
}