|Labs
Rezervovat demoPlatforma
React (Lingo Compiler)
Alpha
React (MCP)React (i18n)Legacy CLI (v0)
Zastaralé

Lingo.dev CLI

  • Jak to funguje
  • Nastavení
  • Rychlý start
  • Monorepa

Konfigurace

  • Podporované formáty
  • i18n.json
  • i18n.lock
  • Podporované jazyky

Funkce

  • Stávající překlady
  • Přidání jazyků
  • Přepsání
  • Poznámky pro překladatele
  • Překladové klíče
  • Přejmenování klíčů
  • Uzamykání klíčů
  • Ignorování klíčů
  • Zachování klíčů
  • Extrakce klíčů pomocí AI

Výkon

  • Velké projekty
  • Paralelní zpracování
  • Odhad nákladů

Opětovný překlad

  • Automatický opětovný překlad
  • Opětovný překlad
  • Odstranění překladů

Tato dokumentace se týká legacy CLI (v0) a je zastaralá. Aktuální CLI je v1. Zobrazit dokumentaci k aktuálnímu CLI

Monorepa

CLI podporuje monorepa nativně. Můžete použít jeden i18n.json v kořeni s rekurzivním globem ** pro automatické objevování balíčků, jednu kořenovou konfiguraci s explicitními cestami pro jednotlivé balíčky nebo samostatné soubory i18n.json v každém balíčku v kombinaci s GitHub Action s maticovou strategií.

Kdy který způsob použít#

ScénářZpůsobKonfigurační souboryGitHub Action
Všechny balíčky mají stejné rozvržení i jazyky a chcete, aby se nové balíčky přidávaly automatickyJedna rekurzivní konfiguraceJeden i18n.json v kořeni s globem **Jeden krok, výchozí working-directory
Všechny balíčky sdílejí zdrojový i cílové jazykyJedna konfiguraceJeden i18n.json v kořeniJeden krok, výchozí working-directory
Balíčky potřebují různé cílové jazykyKonfigurace pro jednotlivé balíčkyJeden i18n.json pro každý balíčekMaticová strategie s working-directory
Balíčky potřebují různé enginy (glosář, hlas značky)Konfigurace pro jednotlivé balíčky + samostatné enginyJeden i18n.json pro každý balíček, každý s vlastním engineIdMaticová strategie s working-directory

Způsob 1: Jedna rekurzivní konfigurace#

Když má každý balíček stejné rozvržení (např. apps/<name>/locales/[locale].json), použijte rekurzivní glob ** v jednom kořenovém i18n.json. Nové balíčky se budou zachytávat automaticky, pokud tomuto rozvržení odpovídají:

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

CLI ve výchozím nastavení ignoruje node_modules, .git, dist, build, .next a .turbo, takže rekurzivní vzory neprocházejí do vendorovaných nebo build stromů. Pro cokoli dalšího, co chcete přeskočit, přidejte vlastní položky exclude.

GitHub Action je stejná jako ve způsobu 2 níže – jeden krok, výchozí working directory.

Tohle použijte ve chvíli, kdy všechny balíčky sdílejí stejný zdrojový jazyk, cílové jazyky, rozvržení i lokalizační engine a nechcete upravovat i18n.json pokaždé, když přidáte nový balíček.

Způsob 2: Jedna konfigurace, sdílené jazyky#

Jeden i18n.json v kořeni repozitáře. Cesty bucketů míří explicitně do jednotlivých balíčků:

json
{
  "$schema": "https://lingo.dev/schema/i18n.json",
  "version": "1.15",
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de", "ja"]
  },
  "buckets": {
    "json": {
      "include": [
        "apps/web/locales/[locale].json",
        "apps/dashboard/locales/[locale].json"
      ]
    },
    "markdown": {
      "include": ["packages/docs/content/[locale]/*.md"]
    }
  }
}

GitHub Action – standardní jeden krok:

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

Tohle použijte ve chvíli, kdy všechny balíčky sdílejí stejný zdrojový jazyk, cílové jazyky i lokalizační engine, ale jejich rozvržení se liší natolik, že by rekurzivní glob byl příliš široký.

Způsob 3: Konfigurace pro jednotlivé balíčky, různé jazyky#

Každý balíček má vlastní i18n.json s nezávislými cílovými jazyky:

apps/web/i18n.json:

json
{
  "$schema": "https://lingo.dev/schema/i18n.json",
  "version": "1.15",
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de", "ja", "ko", "zh-Hans"]
  },
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"]
    }
  }
}

apps/marketing/i18n.json:

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

GitHub Action – maticová strategie s working-directory:

yaml
name: Translate
on:
  push:
    branches: [main]
permissions:
  contents: write
  pull-requests: write
jobs:
  translate:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        package: [apps/web, apps/marketing]
    steps:
      - uses: actions/checkout@v4
      - uses: lingodotdev/lingo.dev@main
        with:
          api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
          working-directory: ${{ matrix.package }}
          pull-request: true
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Každá položka matice spouští CLI v rozsahu i18n.json daného balíčku. Action překládá jen soubory, které daný balíček deklaruje.

Způsob 4: Konfigurace pro jednotlivé balíčky, samostatné enginy#

Stejná struktura jako u způsobu 3, ale každý balíček je připojený k jinému lokalizačnímu enginu. Díky tomu má každý balíček vlastní glosář, hlas značky a konfiguraci modelu.

apps/product/i18n.json:

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

apps/docs/i18n.json:

json
{
  "$schema": "https://lingo.dev/schema/i18n.json",
  "version": "1.15",
  "locale": {
    "source": "en",
    "targets": ["es", "fr"]
  },
  "buckets": {
    "markdown": {
      "include": ["content/[locale]/*.md"]
    }
  },
  "engineId": "eng_DocsEngine456"
}

GitHub Action YAML je stejný jako u způsobu 3 – engineId v každém i18n.json automaticky směruje překlady do správného enginu.

Jak funguje lockfile#

Každé umístění i18n.json vytváří ve stejném adresáři vlastní soubor i18n.lock. Lockfile sleduje, který zdrojový obsah už byl přeložen, a umožňuje přírůstkové aktualizace. Ve způsobech 1 a 2 je v kořeni jeden lockfile. Ve způsobech 3 a 4 má každý balíček vlastní lockfile.

FAQ#

Budou se nové balíčky přidávat automaticky?

Pouze u způsobu 1 (rekurzivní **). U způsobů 3 a 4 přidáte při přidání nového balíčku nový záznam do seznamu matrix.package ve workflow.

Můžu mít pro každý balíček jiné jazyky?

Ano. Použijte způsob 3 nebo 4. i18n.json každého balíčku deklaruje vlastní pole locale.targets nezávisle na ostatních.

Potřebuji jeden workflow soubor, nebo víc?

Jeden workflow soubor s maticovou strategií obslouží všechny balíčky. Každá položka matice běží proti jinému working-directory, takže CLI omezí jen na konfiguraci daného balíčku.

Můžou balíčky sdílet glosář, ale mít různé jazyky?

Ano. Nasměrujte oba balíčky na stejný engineId, ale v každém i18n.json nastavte jiné locale.targets. Glosář enginu se použije na všechny požadované dvojice jazyků.

Další kroky#

i18n.json
Kompletní Reference ke konfiguraci
GitHub Actions
Všechny workflow vzory a vstupy
Podporované formáty
25+ formátů souborů s příklady
Připojte svůj engine
Směrujte překlady přes svůj engine

Byla tato stránka užitečná?

Max PrilutskiyMax Prilutskiy·Aktualizováno před 5 dny·4 min čtení