Özellik

better-i18n REST API & SDK: Programatik Çeviri Yönetimi

Temiz, iyi belgelenmiş bir REST API aracılığıyla çeviriler, key'ler, diller ve projeler üzerinde tam programatik kontrol.

better-i18n REST API & SDK: Programatik Çeviri Yönetimi

better-i18n platformu, geliştiricilere çeviri yönetimi üzerinde tam programatik erişim sağlar — TypeScript SDK, REST API, CLI araçları ve yapay zeka asistanları için MCP server aracılığıyla. Key'leri, çevirileri, dilleri ve içerikleri kendi kodunuzdan ve CI pipeline'larınızdan yönetin.

İki API, Farklı Amaçlar

better-i18n, neyi geliştirdiğinize bağlı olarak iki farklı API sunar:

APIBase URLAuthKullanım Alanı
Translation APIdash.better-i18n.com/apiBearer tokenKey yönetimi, çeviriler, diller, sync'ler
Content APIcontent.better-i18n.comx-api-key headerHeadless CMS — blog yazıları, pazarlama sayfaları, yapılandırılmış içerik

Her iki API de JSON istek/yanıt gövdeleri kullanır ve REST kurallarına uyar.

Kimlik Doğrulama

Dashboard üzerindeki Settings → API Keys bölümünden API key'leri oluşturun.

# Translation API (key yönetimi, çeviriler)
curl -H "Authorization: Bearer bi18_live_abc123..." \
  https://dash.better-i18n.com/api/...

# Content API (headless CMS)
curl -H "x-api-key: bi-your-api-key" \
  https://content.better-i18n.com/v1/content/acme/web-app/models

API key'leri asla istemci tarafı kodda açığa çıkarmayın. Environment variable'lar ve sunucu tarafı proxy'ler kullanın.

Translation API

Translation API, temel i18n iş akışını yönetir: projeler, key'ler, çeviriler ve diller.

Projeler

listProjects()          → Erişiminiz olan tüm projeleri listeleyin
getProject(project)     → Proje detaylarını, dilleri ve namespace'leri alın

Her proje org/project formatıyla tanımlanır (örneğin acme/web-app). Bunu i18n.config.ts dosyanızda bulabilirsiniz.

Translation Key'leri

listKeys(project, options)    → Translation key'lerini arayın ve listeleyin
createKeys(project, keys)     → Kaynak metin ve çevirilerle key oluşturun
updateKeys(project, updates)  → Mevcut key'lerin çevirilerini güncelleyin
deleteKeys(project, keys)     → Translation key'lerini soft-delete yapın

Tek çağrıda çevirilerle birlikte key oluşturun:

{
  "project": "acme/web-app",
  "keys": [
    {
      "name": "auth.login.title",
      "namespace": "auth",
      "sourceText": "Sign in to your account",
      "translations": {
        "tr": "Hesabınıza giriş yapın",
        "de": "Melden Sie sich bei Ihrem Konto an"
      }
    },
    {
      "name": "auth.login.button",
      "namespace": "auth",
      "sourceText": "Sign in"
    }
  ]
}

Key'leri arayın ve filtreleyin:

{
  "project": "acme/web-app",
  "search": "login",
  "namespaces": ["auth"],
  "missingLanguage": "tr"
}

Çevirileri status ile güncelleyin:

{
  "project": "acme/web-app",
  "translations": [
    {
      "key": "auth.login.title",
      "language": "tr",
      "text": "Hesabınıza giriş yapın",
      "status": "approved"
    }
  ]
}

Diller

addLanguage(project, language)   → Yeni bir hedef dil ekleyin
getProject(project)              → Tüm aktif dilleri ve ilerlemeyi görün

Sync İşlemleri

getSyncs(project)    → Son sync işlemlerini listeleyin (GitHub, CDN, vb.)
getSync(project, id) → Belirli bir sync job'ının detaylarını alın

Content SDK

@better-i18n/sdk, Content API için bir TypeScript istemcisidir — blog yazıları, changelog girişleri ve pazarlama sayfaları gibi yapılandırılmış içerikler için headless CMS'imiz.

Kurulum

npm install @better-i18n/sdk

Başlatma

import { createClient } from "@better-i18n/sdk";

const client = createClient({
  project: "acme/web-app",
  apiKey: process.env.BETTER_I18N_API_KEY!,
});

Query Builder (Supabase tarzı)

SDK, zincirlenebilir ve immutable bir query builder sunar:

// Yayınlanmış blog yazılarını listeleyin
const { data: posts, total, hasMore } = await client
  .from("blog-posts")
  .eq("status", "published")
  .order("publishedAt", { ascending: false })
  .expand("author", "category")
  .limit(10);

// Fransızca tek bir entry alın
const { data: post } = await client
  .from("blog-posts")
  .language("fr")
  .single("getting-started");

console.log(post.title, post.body);

Kullanılabilir Metodlar

MetodAçıklama
.eq(field, value)Tam değere göre filtreleyin
.search(term)Başlıklarda tam metin arama
.language(code)Yerelleştirilmiş içerik için dil belirleyin
.order(field, opts)publishedAt, createdAt, updatedAt veya title'a göre sıralayın
.limit(n)Sayfa başına entry sayısı (1–100)
.page(n)Sayfa numarası
.expand(...fields)İlişki alanlarını satır içi genişletin
.select(...fields)Döndürülecek alanları seçin
.single(slug)Slug'a göre tek bir entry alın

REST Endpoint'leri (Arka Planda)

SDK bu endpoint'leri çağırır:

MetodEndpoint
GET/v1/content/{org}/{project}/models
GET/v1/content/{org}/{project}/models/{model}/entries
GET/v1/content/{org}/{project}/models/{model}/entries/{slug}

CLI Araçları

@better-i18n/cli, geliştirme iş akışınıza entegre olur:

# Kod tabanınızdaki hardcoded string'leri tespit edin
better-i18n scan

# Yerel key'leri bulut projesiyle karşılaştırın
better-i18n sync

# JSON çıktısıyla CI/CD entegrasyonu
better-i18n scan --ci --format json
better-i18n sync --format json

CLI, useTranslations() ve getTranslations() hook'larını otomatik olarak algılar, namespace'leri çıkarır ve eksik çevirileri raporlar — tipik kod tabanları için 100ms'nin altında.

Pre-commit & CI Entegrasyonu

# Pre-commit hook
npx @better-i18n/cli scan --staged --ci

# GitHub Actions
- run: npx @better-i18n/cli scan --ci --format json

Yapay Zeka Asistanları için MCP Server

better-i18n MCP (Model Context Protocol) server, Claude, Cursor ve Windsurf gibi yapay zeka asistanlarının doğrudan IDE'nizden çevirileri yönetmesine olanak tanır:

# MCP server'ı kurun
npm install @better-i18n/mcp

Yapay zeka asistanları şunları yapabilir:

  • Translation key'lerini listeleyin ve arayın
  • Çevirilerle birlikte yeni key'ler oluşturun
  • Mevcut çevirileri güncelleyin
  • Sync durumunu kontrol edin
  • Yeni diller ekleyin

Bu sayede "Auth namespace için Almanca çeviriler ekle" diyebilir ve yapay zeka asistanınız bunu API aracılığıyla halleder.

CDN Dağıtımı

Çeviriler, öngörülebilir bir URL deseniyle CDN aracılığıyla global olarak sunulur:

https://cdn.better-i18n.com/{org}/{project}/{locale}/{namespace}.json

Örneğin:

https://cdn.better-i18n.com/acme/web-app/de/common.json

Deploy gerekmez — çeviriler yayınlandığında CDN üzerinde otomatik olarak güncellenir.

Platform SDK'ları

PaketAmaç
@better-i18n/sdkContent API istemcisi (TypeScript)
@better-i18n/cliKod tarama & sync (CLI)
@better-i18n/nextNext.js runtime entegrasyonu
@better-i18n/use-intlReact çeviri hook'ları
@better-i18n/mcpYapay zeka asistanları için MCP server

Tüm paketler npm'de mevcuttur ve yerel fetch() ile herhangi bir JavaScript runtime'ında çalışır.

İlgili Kaynaklar