Zum Inhalt springen
Hono

Hono i18n

Eine Middleware erkennt die Sprache der Anfrage und übergibt jedem Route-Handler einen Übersetzer. Die Texte kommen aus dem CDN, neue Inhalte gehen also ohne erneutes Deployment live.

Setup

Hono mit Better I18N einrichten

Pakete installieren

Hono und den Server-Adapter hinzufügen. Mehr ist nicht nötig.

terminal
npm install hono @better-i18n/server

i18n-Singleton anlegen

Einmal auf Modulebene erzeugen — der Nachrichten-Cache wird von allen Anfragen geteilt.

src/i18n.ts
import { createServerI18n } from '@better-i18n/server';

// Module scope, not per request: the TtlCache is shared across requests.
export const i18n = createServerI18n({
  project: 'your-org/your-project',
  defaultLocale: 'en',
});

Middleware einbinden

Nach app.use kann jeder Handler locale und t aus dem Kontext lesen.

src/index.ts
import { Hono } from 'hono';
import { betterI18n } from '@better-i18n/server/hono';
import type { Translator } from '@better-i18n/server';
import { i18n } from './i18n';

const app = new Hono<{
  Variables: { locale: string; t: Translator };
}>();

app.use('*', betterI18n(i18n));

app.get('/users/:id', (c) => {
  const t = c.get('t');
  return c.json({ error: t('errors.notFound') }, 404);
});

export default app;
Capabilities

Warum Hono-Teams Better I18N wählen

Eine Zeile Setup: app.use('*', betterI18n(i18n))
Auf Webstandards gebaut — Request-Header werden direkt gelesen, ohne Adapterschicht
Läuft überall dort, wo Hono läuft: Cloudflare Workers, Bun, Deno und Node
Eine Instanz auf Modulebene teilt ihren Nachrichten-Cache über alle Anfragen
Neue Texte kommen in etwa 60 Sekunden aus dem CDN — ohne erneutes Deployment
Typisierte Kontextvariablen für locale und t
Example

Eine lokalisierte Hono-Route

Die Middleware läuft zuerst, der Handler liest also nur, was er braucht.

import { OpenAPIHono } from '@hono/zod-openapi';
import { betterI18n } from '@better-i18n/server/hono';
import type { Translator } from '@better-i18n/server';
import { i18n } from './i18n';

const app = new OpenAPIHono<{
  Variables: { locale: string; t: Translator };
}>();

// Detect locale + inject `locale` and `t` into every request context
app.use('*', betterI18n(i18n));

app.get('/greeting', (c) => {
  const t = c.get('t');
  const locale = c.get('locale');

  return c.json({
    locale,
    message: t('greeting.hello'),
  });
});

export default app;

Weitere Frameworks

Get started

Bringen Sie Ihre Hono-API in jede Sprache

Projekt verbinden, Middleware hinzufügen und übersetzen, ohne die Deploy-Pipeline anzufassen.