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/serverCreează 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;Subiecte conexe
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.