Naar inhoud gaan
Hono

Hono i18n

Eén middleware detecteert de taal van het verzoek en geeft elke route handler een vertaler. Berichten komen van de CDN, dus nieuwe teksten gaan live zonder opnieuw te deployen.

Setup

Hono instellen met Better I18N

Installeer de pakketten

Voeg Hono en de serveradapter toe. Meer is niet nodig.

terminal
npm install hono @better-i18n/server

Maak de i18n-singleton

Maak hem één keer op moduleniveau — de berichtencache wordt door alle verzoeken gedeeld.

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',
});

Koppel de middleware

Na app.use kan elke handler locale en t uit de context lezen.

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

Waarom Hono-teams voor Better I18N kiezen

Eén regel configuratie: app.use('*', betterI18n(i18n))
Gebouwd op webstandaarden — request headers worden direct gelezen, zonder adapterlaag
Draait overal waar Hono draait: Cloudflare Workers, Bun, Deno en Node
Eén instantie op moduleniveau deelt de berichtencache tussen verzoeken
Nieuwe berichten komen in ongeveer 60 seconden via de CDN binnen, zonder nieuwe deploy
Getypeerde contextvariabelen voor locale en t
Example

Een gelokaliseerde Hono-route

De middleware draait eerst, zodat de handler alleen leest wat hij nodig heeft.

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;

Andere frameworks

Get started

Lever je Hono-API in elke taal

Koppel een project, voeg de middleware toe en vertaal zonder de deploy-pipeline aan te raken.