Skip to content

Latest commit

 

History

History
507 lines (380 loc) · 18.5 KB

File metadata and controls

507 lines (380 loc) · 18.5 KB

Lingo.dev

Lingo.dev - ערכת כלים קוד פתוח ל-i18n עם תרגום מבוסס LLM


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


התחלה מהירה

כלי מקרה שימוש פקודה מהירה
MCP הגדרת i18n בסיוע AI עבור אפליקציות React Prompt: Set up i18n
CLI תרגום קבצי JSON, YAML, markdown, CSV, PO npx lingo.dev@latest run
CI/CD צינור תרגום אוטומטי ב-GitHub Actions uses: lingodotdev/lingo.dev@main
SDK תרגום בזמן ריצה לתוכן דינמי npm install lingo.dev
Compiler לוקליזציה של React בזמן build ללא wrappers של i18n תוסף withLingo()

Lingo.dev MCP

הגדרת i18n באפליקציות React ידועה לשמצה כמועדת לשגיאות - אפילו עבור מפתחים מנוסים. עוזרי קידוד AI מחמירים את המצב: הם מזיות APIs לא קיימים, שוכחים הגדרות middleware, שוברים routing, או מיישמים חצי פתרון לפני שהם מאבדים את ההקשר. הבעיה היא שהגדרת i18n דורשת רצף מדויק של שינויים מתואמים על פני קבצים מרובים (routing, middleware, קומפוננטות, הגדרות), ו-LLMs מתקשים לשמור על ההקשר הזה.

Lingo.dev MCP פותר זאת על ידי מתן גישה מובנית לעוזרי AI לידע i18n ספציפי לפריימוורק. במקום לנחש, העוזר שלך עוקב אחר דפוסי יישום מאומתים עבור Next.js, React Router ו-TanStack Start.

סביבות פיתוח נתמכות:

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

פריימוורקים נתמכים:

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

שימוש:

לאחר הגדרת שרת ה-MCP בסביבת הפיתוח שלך (ראה מדריכי התחלה מהירה), בקש מהעוזר שלך:

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

העוזר יבצע:

  1. הגדרת routing מבוסס locale (לדוגמה, /en, /es, /pt-BR)
  2. הגדרת קומפוננטות להחלפת שפה
  3. יישום זיהוי אוטומטי של locale
  4. יצירת קבצי הגדרות נדרשים

שים לב: יצירת קוד בעזרת AI אינה דטרמיניסטית. בדוק את הקוד שנוצר לפני ביצוע commit.

קרא את התיעוד ←


Lingo.dev CLI

שמירה על סנכרון תרגומים היא מייגעת. אתה מוסיף מחרוזת חדשה, שוכח לתרגם אותה, משגר UI שבור למשתמשים בינלאומיים. או שאתה שולח קבצי JSON למתרגמים, ממתין ימים, ואז ממזג ידנית את עבודתם בחזרה. הרחבה ל-10+ שפות משמעותה ניהול מאות קבצים שסוטים כל הזמן מסנכרון.

Lingo.dev CLI מבצע אוטומציה של זה. הפנה אותו לקבצי התרגום שלך, הרץ פקודה אחת, וכל locale מתעדכן. קובץ lockfile עוקב אחר מה כבר תורגם, כך שאתה משלם רק עבור תוכן חדש או ששונה. תומך ב-JSON, YAML, CSV, קבצי PO ו-markdown.

הגדרה:

# Initialize project
npx lingo.dev@latest init

# Run translations
npx lingo.dev@latest run

איך זה עובד:

  1. מחלץ תוכן הניתן לתרגום מקבצים מוגדרים
  2. שולח תוכן לספק LLM לתרגום
  3. כותב תוכן מתורגם חזרה למערכת הקבצים
  4. יוצר קובץ i18n.lock למעקב אחר תרגומים שהושלמו (נמנע מעיבוד מיותר)

הגדרות:

הפקודה init מייצרת קובץ i18n.json. הגדר locales ו-buckets:

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

השדה provider הוא אופציונלי (ברירת מחדל: Lingo.dev Engine). עבור ספקי LLM מותאמים אישית:

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

ספקי LLM נתמכים:

  • Lingo.dev Engine (מומלץ)
  • OpenAI
  • Anthropic
  • Google
  • Mistral
  • OpenRouter
  • Ollama

קרא את התיעוד ←


Lingo.dev CI/CD

תרגומים הם התכונה שתמיד "כמעט מוכנה". מהנדסים מבצעים merge לקוד מבלי לעדכן locales. QA מגלה תרגומים חסרים ב-staging - או גרוע מכך, משתמשים מגלים אותם ב-production. הסיבה העיקרית: תרגום הוא שלב ידני שקל לדלג עליו תחת לחץ של דדליינים.

Lingo.dev CI/CD הופך תרגומים לאוטומטיים. כל push מפעיל תרגום. מחרוזות חסרות מתמלאות לפני שהקוד מגיע ל-production. אין צורך במשמעת - ה-pipeline מטפל בזה.

פלטפורמות נתמכות:

  • GitHub Actions
  • GitLab CI/CD
  • Bitbucket Pipelines

הגדרת GitHub Actions:

צור .github/workflows/translate.yml:

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 }}

דרישות הגדרה:

  1. הוסף LINGODOTDEV_API_KEY ל-secrets של ה-repository (Settings > Secrets and variables > Actions)
  2. עבור workflows של PR: אפשר "Allow GitHub Actions to create and approve pull requests" ב-Settings > Actions > General

אפשרויות workflow:

בצע commit לתרגומים ישירות:

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

יצירת pull requests עם תרגומים:

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

פרמטרים זמינים:

פרמטר ברירת מחדל תיאור
api-key (נדרש) מפתח API של Lingo.dev
pull-request false יצירת PR במקום commit ישיר
commit-message "feat: update translations via @LingoDotDev" הודעת commit מותאמת אישית
pull-request-title "feat: update translations via @LingoDotDev" כותרת PR מותאמת אישית
working-directory "." תיקייה להרצה
parallel false הפעלת עיבוד מקבילי

קרא את התיעוד ←


Lingo.dev SDK

קבצי תרגום סטטיים עובדים עבור תוויות UI, אבל מה לגבי תוכן שנוצר על ידי משתמשים? הודעות צ'אט, תיאורי מוצרים, פניות תמיכה - תוכן שלא קיים בזמן build לא ניתן לתרגם מראש. אתה נתקע בהצגת טקסט לא מתורגם או בבניית pipeline תרגום מותאם אישית.

Lingo.dev SDK מתרגם תוכן ב-runtime. העבר כל טקסט, אובייקט או HTML וקבל בחזרה גרסה מלוקלזת. עובד עבור צ'אט בזמן אמת, התראות דינמיות או כל תוכן שמגיע לאחר deployment. זמין עבור JavaScript, PHP, Python ו-Ruby.

התקנה:

npm install lingo.dev

שימוש:

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"

SDKs זמינים:

קרא את התיעוד ←


Lingo.dev Compiler

i18n מסורתי הוא פולשני. אתה עוטף כל מחרוזת בפונקציות t(), ממציא מפתחות תרגום (home.hero.title.v2), מתחזק קבצי JSON מקבילים, וצופה בקומפוננטות שלך מתנפחות עם boilerplate של לוקליזציה. זה כל כך מייגע שצוותים מדחים בינאום עד שזה הופך ל-refactor מסיבי.

Lingo.dev Compiler מבטל את הטקסיות. כתוב קומפוננטות React עם טקסט באנגלית פשוטה. הקומפיילר מזהה מחרוזות הניתנות לתרגום בזמן build ומייצר גרסאות מתורגמות באופן אוטומטי. ללא מפתחות, ללא קבצי JSON, ללא פונקציות עטיפה - רק קוד React שפשוט עובד במספר שפות.

התקנה:

pnpm install @lingo.dev/compiler

אימות:

# 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

הגדרות (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 },
  });
}

הגדרות (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:

// 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>
  );
}

מחליף שפה:

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>
  );
}

פיתוח: npm run dev (משתמש ב-pseudotranslator, ללא קריאות API)

ייצור: הגדר usePseudotranslator: false, ואז next build

בצע commit לתיקיית .lingo/ לבקרת גרסאות.

תכונות עיקריות:

  • ללא עלות ביצועים בזמן ריצה
  • ללא מפתחות תרגום או קבצי JSON
  • ללא פונקציות t() או קומפוננטות עטיפה <T>
  • זיהוי אוטומטי של טקסט הניתן לתרגום ב-JSX
  • תמיכה ב-TypeScript
  • ICU MessageFormat לריבוי
  • עקיפות ידניות באמצעות תכונת data-lingo-override
  • widget מובנה לעורך תרגומים

מצבי build:

  • pseudotranslator: מצב פיתוח עם תרגומי placeholder (ללא עלויות API)
  • real: יצירת תרגומים אמיתיים באמצעות LLMs
  • cache-only: מצב ייצור המשתמש בתרגומים שנוצרו מראש מ-CI (ללא קריאות API)

פריימוורקים נתמכים:

  • Next.js (App Router עם React Server Components)
  • Vite + React (SPA ו-SSR)

תמיכה בפריימוורקים נוספים מתוכננת.

קרא את התיעוד ←


תרומה לפרויקט

תרומות מתקבלות בברכה. אנא עקבו אחר ההנחיות הבאות:

  1. בעיות: דיווח על באגים או בקשת תכונות
  2. Pull Requests: שליחת שינויים
    • כל PR דורש changeset: pnpm new (או pnpm new:empty עבור שינויים שאינם לשחרור)
    • יש לוודא שהבדיקות עוברות לפני השליחה
  3. פיתוח: זהו monorepo של pnpm + turborepo
    • התקנת תלויות: pnpm install
    • הרצת בדיקות: pnpm test
    • בנייה: pnpm build

תמיכה: קהילת Discord

היסטוריית כוכבים

אם אתם מוצאים את Lingo.dev שימושי, תנו לנו כוכב ועזרו לנו להגיע ל-10,000 כוכבים!

[

תרשים היסטוריית כוכבים

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

תיעוד מתורגם

תרגומים זמינים:

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

הוספת שפה חדשה:

  1. הוסיפו קוד locale ל-i18n.json באמצעות פורמט BCP-47
  2. שלחו pull request

פורמט locale BCP-47: language[-Script][-REGION]

  • language: ISO 639-1/2/3 (אותיות קטנות): en, zh, bho
  • Script: ISO 15924 (אות ראשונה גדולה): Hans, Hant, Latn
  • REGION: ISO 3166-1 alpha-2 (אותיות גדולות): US, CN, IN
  • דוגמאות: en, pt-BR, zh-Hans, sr-Cyrl-RS