TypeScript-based internationalization (i18n) package for the React ecosystem, including but not limited to React, Next.js, and React Native.
- Auto-detection: Automatically detects user's language preferences.
- Namespace Support: Organize your translations using namespaces.
- Lightweight: Minimal overhead with efficient performance.
- Fallback Message: Fall back to default message if TranslationKey is not resolved.
Install the package via npm:
npm install @jereztech/i18n-react
Create an i18n.config.ts
file at the root of your project. See /examples/i18n.config.ts
for reference.
Field | Type | Default | Description |
---|---|---|---|
defaultLocale |
string |
'en' |
The default locale to use when no user preference is detected or for fallback translations. |
dictionaries |
Map |
{} |
A Map of translation dictionaries for supported locales. |
autodetectLanguage |
boolean |
true |
Automatically detect the user's language preferences. |
initializeWithDefault |
boolean |
true |
Initialize with the default locale if autodetection is disabled or fails. |
Note: The fields autodetectLanguage
and initializeWithDefault
default to true
. They can be disabled by setting them to undefined
in your configuration:
import { DictionaryMap, I18nConfig } from "@jereztech/i18n-react";
import en from './assets/dictionaries/en.json';
import es from './assets/dictionaries/es.json';
const dictionaries: DictionaryMap = { en, es };
const i18nConfig: I18nConfig = {
defaultLocale: 'en',
dictionaries,
autodetectLanguage: undefined,
};
export default i18nConfig;
Wrap your application with the I18nProvider
to provide localization context:
import { ReactNode } from 'react';
import { I18nProvider } from '@jereztech/i18n-react';
import i18nConfig from '../i18n.config';
export default async function RootLayout(
{ children, params }: { children: ReactNode; params: { locale: string };}
) {
const { locale } = await params;
return (
<html lang={locale}>
<body>
<I18nProvider config={i18nConfig}>
{children}
</I18nProvider>
</body>
</html>
);
};
Access translations within your components using the useI18n
hook:
"use client";
import { useI18n } from '@jereztech/i18n-react';
export default function Home() {
const { t } = useI18n();
return <div>{t('greeting', { name: 'John' }, 'fallbackTranslationKey')}</div>;
};
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
Copyright (C) 2025 Jerez Tech