Skip to content

Latest commit

 

History

History
505 lines (378 loc) · 19.9 KB

File metadata and controls

505 lines (378 loc) · 19.9 KB

Lingo.dev

Lingo.dev - LLM سے چلنے والے لوکلائزیشن کے لیے اوپن سورس i18n ٹول کٹ


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 React ایپس کے لیے AI کی مدد سے i18n سیٹ اپ 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 i18n wrappers کے بغیر بلڈ ٹائم React لوکلائزیشن withLingo() plugin

Lingo.dev MCP

React apps میں i18n سیٹ اپ کرنا بدنام زمانہ طور پر خطا کا شکار ہے - یہاں تک کہ تجربہ کار ڈیولپرز کے لیے بھی۔ AI کوڈنگ اسسٹنٹس اسے مزید خراب کر دیتے ہیں: وہ غیر موجود APIs کے بارے میں فرضی باتیں کرتے ہیں، middleware configurations بھول جاتے ہیں، routing توڑ دیتے ہیں، یا گم ہونے سے پہلے آدھا حل implement کر دیتے ہیں۔ مسئلہ یہ ہے کہ i18n سیٹ اپ کے لیے متعدد فائلوں (routing، middleware، components، configuration) میں مربوط تبدیلیوں کی ایک درست ترتیب درکار ہوتی ہے، اور LLMs اس context کو برقرار رکھنے میں مشکل کا سامنا کرتے ہیں۔

Lingo.dev MCP اس مسئلے کو AI assistants کو framework-specific i18n علم تک structured رسائی فراہم کر کے حل کرتا ہے۔ اندازہ لگانے کی بجائے، آپ کا assistant Next.js، React Router، اور TanStack Start کے لیے تصدیق شدہ implementation patterns کی پیروی کرتا ہے۔

تعاون یافتہ IDEs:

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

تعاون یافتہ frameworks:

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

استعمال:

اپنے IDE میں MCP server کو configure کرنے کے بعد (quickstart guides دیکھیں)، اپنے assistant کو prompt کریں:

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

Assistant یہ کام کرے گا:

  1. Locale-based routing configure کرے گا (مثلاً /en، /es، /pt-BR)
  2. Language switching components سیٹ اپ کرے گا
  3. Automatic locale detection implement کرے گا
  4. ضروری configuration files generate کرے گا

نوٹ: AI-assisted code generation non-deterministic ہے۔ commit کرنے سے پہلے generated code کا جائزہ لیں۔

دستاویزات پڑھیں →


Lingo.dev CLI

تراجم کو synchronized رکھنا تھکا دینے والا ہے۔ آپ ایک نئی string شامل کرتے ہیں، اسے translate کرنا بھول جاتے ہیں، بین الاقوامی صارفین کو ٹوٹا ہوا UI بھیج دیتے ہیں۔ یا آپ مترجمین کو JSON فائلیں بھیجتے ہیں، دنوں انتظار کرتے ہیں، پھر ان کے کام کو دستی طور پر واپس merge کرتے ہیں۔ 10+ زبانوں تک scale کرنے کا مطلب سینکڑوں فائلوں کا انتظام ہے جو مسلسل sync سے باہر ہو جاتی ہیں۔

Lingo.dev CLI اسے خودکار بناتا ہے۔ اسے اپنی translation فائلوں کی طرف point کریں، ایک command چلائیں، اور ہر locale update ہو جاتا ہے۔ ایک lockfile track کرتی ہے کہ کیا پہلے سے translate ہو چکا ہے، تاکہ آپ صرف نئے یا تبدیل شدہ content کے لیے ادائیگی کریں۔ JSON، YAML، CSV، PO فائلوں، اور markdown کو support کرتا ہے۔

سیٹ اپ:

# Initialize project
npx lingo.dev@latest init

# Run translations
npx lingo.dev@latest run

یہ کیسے کام کرتا ہے:

  1. کنفیگر شدہ فائلوں سے قابل ترجمہ مواد نکالتا ہے
  2. ترجمے کے لیے مواد LLM فراہم کنندہ کو بھیجتا ہے
  3. ترجمہ شدہ مواد واپس filesystem میں لکھتا ہے
  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

تراجم وہ فیچر ہیں جو ہمیشہ "تقریباً مکمل" ہوتے ہیں۔ انجینئرز locales کو اپ ڈیٹ کیے بغیر کوڈ merge کر دیتے ہیں۔ QA staging میں غائب تراجم پکڑتا ہے - یا بدتر، صارفین انہیں production میں پکڑتے ہیں۔ بنیادی وجہ: ترجمہ ایک دستی مرحلہ ہے جسے ڈیڈ لائن کے دباؤ میں چھوڑنا آسان ہے۔

Lingo.dev CI/CD تراجم کو خودکار بناتا ہے۔ ہر push ترجمہ شروع کرتا ہے۔ غائب strings کوڈ کے 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. repository secrets میں LINGODOTDEV_API_KEY شامل کریں (Settings > Secrets and variables > Actions)
  2. PR workflows کے لیے: Settings > Actions > General میں "Allow GitHub Actions to create and approve pull requests" فعال کریں

Workflow کے اختیارات:

تراجم براہ راست commit کریں:

GitHub Actions workflow میں شامل کریں:

تراجم کے ساتھ pull requests بنائیں:

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

دستیاب inputs:

Input Default Description
api-key (ضروری) Lingo.dev API key
pull-request false براہ راست commit کرنے کی بجائے PR بنائیں
commit-message "feat: update translations via @LingoDotDev" حسب ضرورت commit message
pull-request-title "feat: update translations via @LingoDotDev" حسب ضرورت PR title
working-directory "." جس ڈائریکٹری میں چلانا ہے
parallel false متوازی پروسیسنگ فعال کریں

دستاویزات پڑھیں →


Lingo.dev SDK

Static ترجمہ فائلیں UI labels کے لیے کام کرتی ہیں، لیکن صارف کے تیار کردہ مواد کا کیا؟ چیٹ پیغامات، پروڈکٹ کی تفصیلات، سپورٹ ٹکٹس - وہ مواد جو build time پر موجود نہیں ہوتا اس کا پہلے سے ترجمہ نہیں کیا جا سکتا۔ آپ غیر ترجمہ شدہ متن دکھانے یا حسب ضرورت ترجمہ pipeline بنانے پر مجبور ہیں۔

Lingo.dev SDK runtime پر مواد کا ترجمہ کرتا ہے۔ کوئی بھی متن، object، یا HTML پاس کریں اور مقامی ورژن واپس حاصل کریں۔ real-time چیٹ، dynamic notifications، یا کسی بھی مواد کے لیے کام کرتا ہے جو 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 مداخلت آمیز ہے۔ آپ ہر string کو t() functions میں wrap کرتے ہیں، ترجمہ keys ایجاد کرتے ہیں (home.hero.title.v2)، متوازی JSON فائلیں برقرار رکھتے ہیں، اور اپنے components کو localization boilerplate سے بھرا ہوا دیکھتے ہیں۔ یہ اتنا تکلیف دہ ہے کہ ٹیمیں internationalization کو اس وقت تک ملتوی کرتی ہیں جب تک یہ ایک بڑا refactor نہ بن جائے۔

Lingo.dev Compiler رسمی کاموں کو ختم کرتا ہے۔ سادہ انگریزی متن کے ساتھ React components لکھیں۔ Compiler build time پر قابل ترجمہ strings کا پتہ لگاتا ہے اور خودکار طور پر مقامی variants تیار کرتا ہے۔ کوئی keys نہیں، کوئی JSON فائلیں نہیں، کوئی wrapper functions نہیں - صرف React code جو متعدد زبانوں میں کام کرتا ہے۔

انسٹالیشن:

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

زبان switcher:

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

Development: npm run dev (pseudotranslator استعمال کرتا ہے، کوئی API calls نہیں)

Production: usePseudotranslator: false سیٹ کریں، پھر next build

.lingo/ directory کو version control میں commit کریں۔

اہم خصوصیات:

  • صفر runtime performance cost
  • کوئی translation keys یا JSON فائلیں نہیں
  • کوئی t() functions یا <T> wrapper components نہیں
  • JSX میں قابل ترجمہ متن کی خودکار شناخت
  • TypeScript سپورٹ
  • plurals کے لیے ICU MessageFormat
  • data-lingo-override attribute کے ذریعے دستی overrides
  • Built-in translation editor widget

Build modes:

  • pseudotranslator: placeholder translations کے ساتھ development mode (کوئی API costs نہیں)
  • real: LLMs استعمال کرتے ہوئے حقیقی تراجم تیار کریں
  • cache-only: CI سے پہلے سے تیار شدہ تراجم استعمال کرتے ہوئے production mode (کوئی API calls نہیں)

معاون frameworks:

  • Next.js (React Server Components کے ساتھ App Router)
  • Vite + React (SPA اور SSR)

اضافی framework سپورٹ منصوبہ بند ہے۔

دستاویزات پڑھیں →


تعاون

تعاون کی خوش آمدید۔ براہ کرم ان رہنما خطوط پر عمل کریں:

  1. مسائل: bugs کی اطلاع دیں یا features کی درخواست کریں
  2. Pull Requests: تبدیلیاں جمع کروائیں
    • ہر PR کے لیے changeset ضروری ہے: pnpm new (یا pnpm new:empty non-release تبدیلیوں کے لیے)
    • جمع کروانے سے پہلے یقینی بنائیں کہ tests پاس ہو جائیں
  3. Development: یہ pnpm + turborepo monorepo ہے
    • dependencies انسٹال کریں: pnpm install
    • tests چلائیں: pnpm test
    • Build کریں: pnpm build

سپورٹ: Discord community

Star History

اگر آپ کو Lingo.dev مفید لگے تو ہمیں star دیں اور 10,000 stars تک پہنچنے میں ہماری مدد کریں!

[

Star History Chart

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

مقامی دستاویزات

دستیاب ترجمے:

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

نئی زبان شامل کرنا:

  1. i18n.json میں BCP-47 format استعمال کرتے ہوئے locale code شامل کریں
  2. pull request جمع کروائیں

BCP-47 locale format: language[-Script][-REGION]

  • language: ISO 639-1/2/3 (lowercase): en, zh, bho
  • Script: ISO 15924 (title case): Hans, Hant, Latn
  • REGION: ISO 3166-1 alpha-2 (uppercase): US, CN, IN
  • مثالیں: en, pt-BR, zh-Hans, sr-Cyrl-RS