Hono
Hono i18n
Tek bir middleware isteğin dilini belirler ve her route handler'a bir çevirmen verir. Mesajlar CDN'den gelir, yani yeni metin yeni bir dağıtım gerektirmez.
Setup
Hono'yu Better I18N ile kurun
Paketleri kurun
Hono'yu ve sunucu adaptörünü ekleyin. Başka bir şey gerekmiyor.
terminal
npm install hono @better-i18n/serveri18n singleton'ını oluşturun
Modül kapsamında bir kez oluşturun — mesaj önbelleği tüm istekler arasında paylaşılır.
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'i bağlayın
app.use'dan sonra her handler, context'ten locale ve t değerlerini okuyabilir.
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
Hono ekipleri neden Better I18N seçiyor
Tek satırlık kurulum: app.use('*', betterI18n(i18n))
Web Standartları üzerine kurulu — istek başlıkları doğrudan okunur, adaptör katmanı yok
Hono nerede çalışıyorsa orada çalışır: Cloudflare Workers, Bun, Deno ve Node
Modül kapsamındaki tek örnek, mesaj önbelleğini istekler arasında paylaşır
Yeni mesajlar CDN'den yaklaşık 60 saniyede gelir, yeniden dağıtım gerekmez
locale ve t için tipli context değişkenleri
Example
Yerelleştirilmiş bir Hono route'u
Middleware önce çalışır, böylece handler yalnızca ihtiyacı olanı okur.
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;Diğer framework'ler
Get started
Hono API'nizi her dilde yayına alın
Bir proje bağlayın, middleware'i ekleyin ve dağıtım hattına dokunmadan çeviri yapın.