Skip to content

Latest commit

 

History

History
509 lines (382 loc) · 17.7 KB

File metadata and controls

509 lines (382 loc) · 17.7 KB

Lingo.dev

Lingo.dev - LLM destekli yerelleştirme için açık kaynaklı i18n araç seti


MCPCLICI/CDSDKCompiler

Release License Last Commit Product Hunt #1 DevTool of the Month Product Hunt #1 DevTool of the Week Product Hunt #2 Product of the Day Github trending


Hızlı başlangıç

Araç Kullanım alanı Hızlı komut
MCP React uygulamaları için AI destekli i18n kurulumu Prompt: Set up i18n
CLI JSON, YAML, markdown, CSV, PO dosyalarını çevir npx lingo.dev@latest run
CI/CD GitHub Actions'ta otomatik çeviri pipeline'ı uses: lingodotdev/lingo.dev@main
SDK Dinamik içerik için runtime çevirisi npm install lingo.dev
Compiler i18n wrapper'ları olmadan build-time React yerelleştirmesi withLingo() eklentisi

Lingo.dev MCP

React uygulamalarında i18n kurulumu, deneyimli geliştiriciler için bile hata yapmaya oldukça müsaittir. AI kodlama asistanları durumu daha da kötüleştirir: var olmayan API'ler hayal ederler, middleware yapılandırmalarını unuturlar, yönlendirmeyi bozarlar veya kaybolmadan önce yarım bir çözüm uygularlar. Sorun şu ki, i18n kurulumu birden fazla dosyada (yönlendirme, middleware, bileşenler, yapılandırma) koordineli değişikliklerin kesin bir sırasını gerektirir ve LLM'ler bu bağlamı korumakta zorlanır.

Lingo.dev MCP, AI asistanlarına framework'e özgü i18n bilgisine yapılandırılmış erişim sağlayarak bu sorunu çözer. Asistanınız tahmin yürütmek yerine Next.js, React Router ve TanStack Start için doğrulanmış uygulama kalıplarını takip eder.

Desteklenen IDE'ler:

  • Claude Code
  • Cursor
  • GitHub Copilot Agents
  • Codex (OpenAI)

Desteklenen framework'ler:

  • Next.js (App Router & Pages Router v13-16)
  • TanStack Start (v1)
  • React Router (v7)

Kullanım:

MCP sunucusunu IDE'nizde yapılandırdıktan sonra (hızlı başlangıç kılavuzlarına bakın), asistanınıza şu şekilde komut verin:

Set up i18n with the following locales: en, es, and pt-BR. The default locale is 'en'.

Asistan şunları yapacaktır:

  1. Yerel ayar tabanlı yönlendirmeyi yapılandırır (örn. /en, /es, /pt-BR)
  2. Dil değiştirme bileşenlerini kurar
  3. Otomatik yerel ayar tespitini uygular
  4. Gerekli yapılandırma dosyalarını oluşturur

Not: AI destekli kod üretimi deterministik değildir. Commit etmeden önce oluşturulan kodu gözden geçirin.

Dokümantasyonu okuyun →


Lingo.dev CLI

Çevirileri senkronize tutmak zahmetlidir. Yeni bir string eklersiniz, çevirmeyi unutursunuz, uluslararası kullanıcılara bozuk UI gönderirsiniz. Ya da JSON dosyalarını çevirmenlere gönderirsiniz, günlerce beklersiniz, sonra onların çalışmalarını manuel olarak geri birleştirirsiniz. 10+ dile ölçeklenmek, sürekli senkronizasyondan çıkan yüzlerce dosyayı yönetmek anlamına gelir.

Lingo.dev CLI bunu otomatikleştirir. Çeviri dosyalarınıza yönlendirin, bir komut çalıştırın ve her yerel ayar güncellenir. Bir lockfile neyin zaten çevrildiğini takip eder, böylece yalnızca yeni veya değiştirilmiş içerik için ödeme yaparsınız. JSON, YAML, CSV, PO dosyalarını ve markdown'ı destekler.

Kurulum:

# Initialize project
npx lingo.dev@latest init

# Run translations
npx lingo.dev@latest run

Nasıl çalışır:

  1. Yapılandırılmış dosyalardan çevrilebilir içeriği çıkarır
  2. Çeviri için içeriği LLM sağlayıcısına gönderir
  3. Çevrilen içeriği dosya sistemine geri yazar
  4. Tamamlanan çevirileri takip etmek için i18n.lock dosyası oluşturur (gereksiz işlemlerden kaçınır)

Yapılandırma:

init komutu bir i18n.json dosyası oluşturur. Yerel ayarları ve bucket'ları yapılandırın:

{
  "$schema": "https://lingo.dev/schema/i18n.json",
  "version": "1.10",
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"]
    }
  }
}

provider alanı isteğe bağlıdır (varsayılan olarak Lingo.dev Engine kullanılır). Özel LLM sağlayıcıları için:

{
  "provider": {
    "id": "openai",
    "model": "gpt-4o-mini",
    "prompt": "Translate from {source} to {target}"
  }
}

Desteklenen LLM sağlayıcıları:

  • Lingo.dev Engine (önerilir)
  • OpenAI
  • Anthropic
  • Google
  • Mistral
  • OpenRouter
  • Ollama

Dokümantasyonu okuyun →


Lingo.dev CI/CD

Çeviriler her zaman "neredeyse bitti" durumunda olan özelliktir. Mühendisler yerel ayarları güncellemeden kodu birleştirir. QA, eksik çevirileri staging ortamında yakalar - ya da daha kötüsü, kullanıcılar production ortamında yakalar. Temel neden: çeviri, son teslim tarihi baskısı altında atlanması kolay olan manuel bir adımdır.

Lingo.dev CI/CD çevirileri otomatik hale getirir. Her push çeviriyi tetikler. Eksik string'ler kod production ortamına ulaşmadan doldurulur. Disiplin gerekmez - pipeline bunu halleder.

Desteklenen platformlar:

  • GitHub Actions
  • GitLab CI/CD
  • Bitbucket Pipelines

GitHub Actions kurulumu:

.github/workflows/translate.yml dosyasını oluşturun:

name: Translate
on:
  push:
    branches: [main]
permissions:
  contents: write
jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Lingo.dev
        uses: lingodotdev/lingo.dev@main
        with:
          api-key: ${{ secrets.LINGODOTDEV_API_KEY }}

Kurulum gereksinimleri:

  1. Repository secret'larına LINGODOTDEV_API_KEY ekleyin (Settings > Secrets and variables > Actions)
  2. PR workflow'ları için: Settings > Actions > General bölümünden "Allow GitHub Actions to create and approve pull requests" seçeneğini etkinleştirin

Workflow seçenekleri:

Çevirileri doğrudan commit edin:

uses: lingodotdev/lingo.dev@main
with:
  api-key: ${{ secrets.LINGODOTDEV_API_KEY }}

Çevirilerle pull request oluşturun:

uses: lingodotdev/lingo.dev@main
with:
  api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
  pull-request: true
env:
  GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Kullanılabilir girdiler:

Girdi Varsayılan Açıklama
api-key (gerekli) Lingo.dev API anahtarı
pull-request false Doğrudan commit yerine PR oluştur
commit-message "feat: update translations via @LingoDotDev" Özel commit mesajı
pull-request-title "feat: update translations via @LingoDotDev" Özel PR başlığı
working-directory "." Çalıştırılacak dizin
parallel false Paralel işlemeyi etkinleştir

Dokümantasyonu okuyun →


Lingo.dev SDK

Statik çeviri dosyaları UI etiketleri için işe yarar, ancak kullanıcı tarafından oluşturulan içerik ne olacak? Sohbet mesajları, ürün açıklamaları, destek talepleri - derleme zamanında mevcut olmayan içerik önceden çevrilemez. Çevrilmemiş metin göstermek veya özel bir çeviri pipeline'ı oluşturmak zorunda kalırsınız.

Lingo.dev SDK içeriği çalışma zamanında çevirir. Herhangi bir metin, nesne veya HTML gönderin ve yerelleştirilmiş bir sürüm alın. Gerçek zamanlı sohbet, dinamik bildirimler veya dağıtımdan sonra gelen herhangi bir içerik için çalışır. JavaScript, PHP, Python ve Ruby için kullanılabilir.

Kurulum:

npm install lingo.dev

Kullanım:

import { LingoDotDevEngine } from "lingo.dev/sdk";

const lingoDotDev = new LingoDotDevEngine({
  apiKey: process.env.LINGODOTDEV_API_KEY,
});

// Translate objects (preserves structure)
const translated = await lingoDotDev.localizeObject(
  { greeting: "Hello", farewell: "Goodbye" },
  { sourceLocale: "en", targetLocale: "es" },
);
// { greeting: "Hola", farewell: "Adiós" }

// Translate text
const text = await lingoDotDev.localizeText("Hello!", {
  sourceLocale: "en",
  targetLocale: "fr",
});

// Translate to multiple languages at once
const results = await lingoDotDev.batchLocalizeText("Hello!", {
  sourceLocale: "en",
  targetLocales: ["es", "fr", "de"],
});

// Translate chat (preserves speaker names)
const chat = await lingoDotDev.localizeChat(
  [{ name: "Alice", text: "Hello!" }],
  { sourceLocale: "en", targetLocale: "es" },
);

// Translate HTML (preserves markup)
const html = await lingoDotDev.localizeHtml("<h1>Welcome</h1>", {
  sourceLocale: "en",
  targetLocale: "de",
});

// Detect language
const locale = await lingoDotDev.recognizeLocale("Bonjour le monde");
// "fr"

Kullanılabilir SDK'lar:

Dokümantasyonu okuyun →


Lingo.dev Compiler

Geleneksel i18n müdahaleci bir yaklaşımdır. Her string'i t() fonksiyonlarına sararsınız, çeviri anahtarları icat edersiniz (home.hero.title.v2), paralel JSON dosyaları yönetirsiniz ve bileşenlerinizin yerelleştirme boilerplate'i ile şiştiğini izlersiniz. O kadar sıkıcıdır ki ekipler uluslararasılaştırmayı büyük bir refactor haline gelene kadar erteler.

Lingo.dev Compiler tüm karmaşıklığı ortadan kaldırır. React bileşenlerini düz İngilizce metinle yazın. Derleyici, derleme zamanında çevrilebilir metinleri algılar ve yerelleştirilmiş varyantları otomatik olarak oluşturur. Anahtar yok, JSON dosyası yok, sarmalayıcı fonksiyon yok - sadece birden fazla dilde çalışan React kodu.

Kurulum:

pnpm install @lingo.dev/compiler

Kimlik doğrulama:

# Recommended: Sign up at lingo.dev and login
npx lingo.dev@latest login

# Alternative: Add API key to .env
LINGODOTDEV_API_KEY=your_key_here

# Or use direct LLM providers (Groq, OpenAI, Anthropic, Google)
GROQ_API_KEY=your_key

Yapılandırma (Next.js):

// next.config.ts
import type { NextConfig } from "next";
import { withLingo } from "@lingo.dev/compiler/next";

const nextConfig: NextConfig = {};

export default async function (): Promise<NextConfig> {
  return await withLingo(nextConfig, {
    sourceRoot: "./app",
    sourceLocale: "en",
    targetLocales: ["es", "fr", "de"],
    models: "lingo.dev",
    dev: { usePseudotranslator: true },
  });
}

Yapılandırma (Vite):

// vite.config.ts
import { lingoCompilerPlugin } from "@lingo.dev/compiler/vite";

export default defineConfig({
  plugins: [
    lingoCompilerPlugin({
      sourceRoot: "src",
      sourceLocale: "en",
      targetLocales: ["es", "fr", "de"],
      models: "lingo.dev",
      dev: { usePseudotranslator: true },
    }),
    react(),
  ],
});

Provider kurulumu:

// app/layout.tsx (Next.js)
import { LingoProvider } from "@lingo.dev/compiler/react";

export default function RootLayout({ children }) {
  return (
    <LingoProvider>
      <html>
        <body>{children}</body>
      </html>
    </LingoProvider>
  );
}

Dil değiştirici:

import { useLocale, setLocale } from "@lingo.dev/compiler/react";

export function LanguageSwitcher() {
  const locale = useLocale();
  return (
    <select value={locale} onChange={(e) => setLocale(e.target.value)}>
      <option value="en">English</option>
      <option value="es">Español</option>
    </select>
  );
}

Geliştirme: npm run dev (pseudotranslator kullanır, API çağrısı yok)

Üretim: usePseudotranslator: false ayarlayın, ardından next build

.lingo/ dizinini sürüm kontrolüne commit edin.

Temel özellikler:

  • Sıfır runtime performans maliyeti
  • Çeviri anahtarı veya JSON dosyası yok
  • t() fonksiyonu veya <T> sarmalayıcı bileşeni yok
  • JSX'te çevrilebilir metnin otomatik algılanması
  • TypeScript desteği
  • Çoğullar için ICU MessageFormat
  • data-lingo-override özniteliği ile manuel geçersiz kılmalar
  • Yerleşik çeviri düzenleyici widget'ı

Derleme modları:

  • pseudotranslator: Yer tutucu çevirilerle geliştirme modu (API maliyeti yok)
  • real: LLM'ler kullanarak gerçek çeviriler oluştur
  • cache-only: CI'dan önceden oluşturulmuş çevirileri kullanan üretim modu (API çağrısı yok)

Desteklenen framework'ler:

  • Next.js (React Server Components ile App Router)
  • Vite + React (SPA ve SSR)

Ek framework desteği planlanmaktadır.

Dokümantasyonu okuyun →


Katkıda bulunma

Katkılarınızı bekliyoruz. Lütfen şu yönergeleri izleyin:

  1. Sorunlar: Hata bildirin veya özellik isteyin
  2. Pull request'ler: Değişiklik gönderin
    • Her PR bir changeset gerektirir: pnpm new (veya yayınlanmayacak değişiklikler için pnpm new:empty)
    • Göndermeden önce testlerin geçtiğinden emin olun
  3. Geliştirme: Bu bir pnpm + turborepo monorepo'sudur
    • Bağımlılıkları yükleyin: pnpm install
    • Testleri çalıştırın: pnpm test
    • Build edin: pnpm build

Destek: Discord topluluğu

Yıldız geçmişi

Lingo.dev'i faydalı buluyorsanız, bize bir yıldız verin ve 10.000 yıldıza ulaşmamıza yardımcı olun!

[

Yıldız geçmişi grafiği

](https://www.star-history.com/#lingodotdev/lingo.dev&Date)

Yerelleştirilmiş dokümantasyon

Mevcut çeviriler:

English中文日本語한국어EspañolFrançaisРусскийУкраїнськаDeutschItalianoالعربيةעבריתहिन्दीPortuguês (Brasil)বাংলাفارسیPolskiTürkçeاردوभोजपुरीঅসমীয়াગુજરાતીमराठीଓଡ଼ିଆਪੰਜਾਬੀසිංහලதமிழ்తెలుగు

Yeni bir dil eklemek için:

  1. i18n.json dosyasına BCP-47 formatında yerel ayar kodu ekleyin
  2. Bir pull request gönderin

BCP-47 yerel ayar formatı: language[-Script][-REGION]

  • language: ISO 639-1/2/3 (küçük harf): en, zh, bho
  • Script: ISO 15924 (başlık harfi büyük): Hans, Hant, Latn
  • REGION: ISO 3166-1 alpha-2 (büyük harf): US, CN, IN
  • Örnekler: en, pt-BR, zh-Hans, sr-Cyrl-RS