import React, { type ReactNode } from 'react'
import { I18nextProvider } from 'react-i18next'
import { createInstance, type i18n as I18n, type Resource } from 'i18next'
export const newTranslationInstance = (resources: Resource): I18n => {
const isDebugMode =
typeof window !== 'undefined' &&
typeof localStorage !== 'undefined' &&
localStorage.getItem('debug-translations') === 'true'
return createInstance({
debug: isDebugMode,
appendNamespaceToCIMode: isDebugMode,
fallbackLng: isDebugMode ? 'cimode' : 'en',
interpolation: {
escapeValue: false, // not needed for react as it escapes by default
},
lng: isDebugMode ? 'cimode' : 'en',
resources,
})
}
export const TranslationProvider = ({
children,
i18nInstance,
}: {
children: ReactNode
i18nInstance: I18n
}) => (
{children}
)
export { Trans as Translate, useTranslation } from 'react-i18next'
/** @deprecated, use the tr function instead */
export const translate = (
namespaceAndKey: `${string}:${string}`,
i18nInstance: I18n,
) => i18nInstance.t(namespaceAndKey)
export const tr = (
namespaceAndKey: `${string}:${string}`,
i18nInstance: I18n,
values?: Record,
) => i18nInstance.t(namespaceAndKey, values)