Zum Inhalt

12 - Internationalisierung (i18n)

Dokument: Mehrsprachigkeits-System Stand: 28.02.2026 Scope: next-intl Integration, Übersetzungen Status: Audit-ready


1. Konfiguration

Parameter Wert
Library next-intl v4.8.2
Unterstützte Sprachen Englisch (en), Deutsch (de)
Standard-Sprache Englisch (en)
Routing URL-basiert (/en/play, /de/play)

Dateien

Datei Zweck
i18n/config.ts Locale-Liste, DO_NOT_TRANSLATE
i18n/request.ts Server-seitige Locale-Auflösung
messages/en.json Englische Übersetzungen
messages/de.json Deutsche Übersetzungen
next.config.ts next-intl Plugin

2. Locale-Erkennung

Prioritätsreihenfolge (proxy.ts)

1. URL-Pfad     → /de/play → locale = de
2. Cookie       → NEXT_LOCALE = de → locale = de
3. Accept-Language → de-DE,de;q=0.9 → locale = de
4. Default      → locale = en

URL-Verhalten

Sprache URL Verhalten
Englisch (Default) /play URL bleibt clean, intern rewritten
Deutsch /de/play Expliziter Prefix

3. Provider-Integration

Datei: app/[locale]/layout.tsx

const messages = await import(`../../messages/${locale}.json`);

<NextIntlClientProvider messages={messages.default}>
  {children}
</NextIntlClientProvider>

Server-seitige Locale

// i18n/request.ts
export default getRequestConfig(async ({ requestLocale }) => {
  let locale = await requestLocale;
  if (!locale || !locales.includes(locale)) locale = 'en';
  return {
    locale,
    messages: (await import(`../messages/${locale}.json`)).default
  };
});

Static Params

export function generateStaticParams() {
  return locales.map((locale) => ({ locale }));
}

4. Nicht übersetzte Begriffe

Die folgenden Terme werden in allen Sprachen unverändert beibehalten:

Markennamen

  • ChainBETs, ChainBETs.win

Kryptowährungen & Blockchain

  • USDT, ETH, USDC, DAI
  • Arbitrum, Ethereum, L2
  • Gas, Gwei, Wei
  • MetaMask, Web3Auth, Wallet

Technische Begriffe

  • Merkle, Merkle Tree, Merkle Proof
  • RNG, VRF, API, EIP-712, ERC-20
  • Smart Contract

Spielbegriffe

  • Pari-Mutuel, Jackpot, Rollover

5. Übersetzungsdatei-Struktur

Schlüssel-Namenskonvention

Hierarchische Struktur nach Feature-Bereich:

{
  "common": {
    "loading": "Loading...",
    "error": "An error occurred",
    "retry": "Try again"
  },
  "play": {
    "title": "Play",
    "selectNumbers": "Select 6 numbers",
    "quickPick": "Quick Pick"
  },
  "dashboard": {
    "title": "Dashboard",
    "totalTickets": "Total Tickets"
  },
  "claim": { ... },
  "account": { ... },
  "auth": { ... }
}

6. Verwendung in Komponenten

Client-Komponenten

import { useTranslations } from 'next-intl';

function PlayPage() {
  const t = useTranslations('play');
  return <h1>{t('title')}</h1>;
}

Locale-Navigation

import { useLocale } from 'next-intl';
import { useRouter } from 'next/navigation';

const locale = useLocale();
router.push(`/${locale}/dashboard`);

Weiterführende Dokumente: - 03 - Seitenstruktur - 09 - UI Komponenten