Treceți la conținut
Hono

Hono i18n

Un middleware detectează limba cererii și oferă un traducător fiecărui handler de rută. Mesajele vin din CDN, deci textele noi ajung live fără o nouă implementare.

Setup

Configurează Hono cu Better I18N

Instalează pachetele

Adaugă Hono și adaptorul de server. Nu mai este nevoie de nimic.

terminal
npm install hono @better-i18n/server

Creează singletonul i18n

Creează-l o singură dată la nivel de modul — cache-ul de mesaje este partajat între toate cererile.

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

Montează middleware-ul

După app.use, fiecare handler poate citi locale și t din context.

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

De ce echipele Hono aleg Better I18N

O linie de configurare: app.use('*', betterI18n(i18n))
Construit pe standarde web — anteturile cererii sunt citite direct, fără strat de adaptor
Rulează oriunde rulează Hono: Cloudflare Workers, Bun, Deno și Node
O instanță la nivel de modul își partajează cache-ul de mesaje între cereri
Mesajele noi ajung din CDN în aproximativ 60 de secunde, fără reimplementare
Variabile de context tipizate pentru locale și t
Example

O rută Hono localizată

Middleware-ul rulează primul, deci handlerul citește doar ce îi trebuie.

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;

Alte framework-uri

Get started

Lansează-ți API-ul Hono în fiecare limbă

Conectează un proiect, adaugă middleware-ul și tradu fără să atingi pipeline-ul de implementare.