İçeriğe git
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/server

i18n 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.