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/serverMaak 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;Gerelateerde onderwerpen
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.