๐ŸŽจ

I18nProvider

React Context Provider with cookie-based language persistence and SSR support

Key Features

๐Ÿช

Cookie persistence

Automatically save language selection

๐Ÿ”„

SSR Ready

Perfect Next.js compatibility

โšก

Zero Hydration

No layout shift on load

๐Ÿ“˜

TypeScript

Includes full type safety

Basic Setup

1Server Layout (app/layout.tsx)

import { I18nProvider } from "i18nexus";
import { cookies } from "next/headers";

export default function RootLayout({ children }) {
  const language = cookies().get("i18n-language")?.value || "ko";

  return (
    <html lang={language}>
      <body>
        <I18nProvider
          initialLanguage={language}
          languageManagerOptions={{
            defaultLanguage: "ko",
            availableLanguages: [
              { code: "ko", name: "ํ•œ๊ตญ์–ด", flag: "๐Ÿ‡ฐ๐Ÿ‡ท" },
              { code: "en", name: "English", flag: "๐Ÿ‡บ๐Ÿ‡ธ" },
            ],
          }}
          translations={{
            ko: { "ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค": "ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค" },
            en: { "ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค": "Welcome" },
          }}
        >
          {children}
        </I18nProvider>
      </body>
    </html>
  );
}

2Client Component (app/page.tsx)

"use client";

import { useTranslation, useLanguageSwitcher } from "i18nexus";

export default function HomePage() {
  const { t } = useTranslation();
  const { currentLanguage, changeLanguage } = useLanguageSwitcher();

  return (
    <div>
      <h1>{t("ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค")}</h1>
      <button onClick={() => changeLanguage("en")}>
        English
      </button>
    </div>
  );
}

Live Demo

Current Language

EN

English

Language Switcher

๐Ÿ’ก Try switching - it's saved in cookies!

Translation Example

t("Welcome")Welcome
t("Quick Start")Quick Start
t("Why i18nexus?")Why i18nexus?
t("Cookie persistence")Cookie persistence

API Reference

useTranslation()

const { t } = useTranslation();

// Simple usage
t("key")
t("ํ•œ๊ตญ์–ด ํ…์ŠคํŠธ")

Hook to access translation function in Client Components

useLanguageSwitcher()

const {
  currentLanguage,
  changeLanguage,
  availableLanguages,
} = useLanguageSwitcher();

changeLanguage("en")

Hook for language switching and state management