Alfa
Compiler Lingo.dev je v alfaverzi. Je nestabilní, nedoporučuje se pro produkční nasazení a API se může mezi jednotlivými vydáními měnit.
Compiler Lingo.dev funguje ve dvou režimech sestavení, které určují, zda se během buildu generují nové překlady. Pochopení těchto režimů je zásadní pro nastavení spolehlivého development, CI i produkční pipeline.
Dva režimy#
| Režim | Chování | Kdy ho použít |
|---|---|---|
"translate" | Generuje chybějící překlady voláním nakonfigurovaného LLM providera. Překlady z cache znovu využívá. | Development a CI – když je potřeba přeložit nový nebo upravený text. |
"cache-only" | Používá pouze překlady z .lingo/metadata.json. Pokud některý překlad chybí, build selže. | Produkční buildy – deterministický výstup bez externích volání API. |
Jak funguje režim translate#
V režimu translate Compiler kontroluje každý přeložitelný řetězec vůči .lingo/metadata.json. Pokud překlad v cache existuje a zdrojový text se nezměnil, použije se verze z cache. Pokud je řetězec nový nebo upravený, Compiler zavolá nakonfigurovaného poskytovatele překladu, vygeneruje překlad a aktualizuje cache.
{
buildMode: "translate",
}Tento režim je výchozí. Funguje jak s pseudopřekladačem (pro okamžité testovací překlady), tak se skutečnými LLM providery.
Jak funguje režim cache-only#
V režimu cache-only Compiler načítá překlady výhradně z .lingo/metadata.json. Neprobíhají žádná volání LLM. Pokud v cache chybí jakýkoli přeložitelný řetězec, build skončí chybou se seznamem chybějících řetězců.
.lingo/metadata.json musí být commitnutý do správy verzí. Produkční buildy v režimu cache-only závisejí na tom, že je tento soubor přítomný v repozitáři – nestačí ho mít vygenerovaný jen lokálně.
{
buildMode: "cache-only",
}Tento režim vytváří deterministické buildy – stejný zdrojový kód a stejná cache vždy povedou ke stejnému výstupu. Zároveň eliminuje závislost na externích API během produkčních buildů.
Doporučený workflow#
Development – pseudopřekladač
Zapněte pseudopřekladač pro okamžitou zpětnou vazbu bez volání API:
{
buildMode: "translate",
dev: {
usePseudotranslator: true,
},
}Pseudopřeklady se zobrazují jako [!!! Welcome !!!], takže snadno odhalíte nepřeložené řetězce a otestujete rozložení při různých délkách textu.
CI – režim translate
Spusťte ho s buildMode: "translate" a skutečným LLM providerem. CI job vygeneruje překlady pro všechny nové nebo upravené řetězce a commitne aktualizované .lingo/metadata.json zpět do repozitáře.
# CI environment
LINGO_BUILD_MODE=translate npm run buildProdukce – režim cache-only
Nasazujte s buildMode: "cache-only", aby se používaly pouze předem vygenerované překlady. V produkčním prostředí nejsou potřeba žádné API klíče.
# Production environment
LINGO_BUILD_MODE=cache-only npm run buildPřepsání pomocí proměnné prostředí#
Proměnná prostředí LINGO_BUILD_MODE přepíše konfigurační volbu buildMode. Díky tomu můžete používat stejný konfigurační soubor napříč prostředími:
# Override in any environment
LINGO_BUILD_MODE=cache-only npm run buildProměnná prostředí má přednost před hodnotou v konfiguračním souboru.
Příklady pro CI#
# .github/workflows/translate.yml
name: Generate Translations
on:
push:
branches: [main]
jobs:
translate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npm run build
env:
LINGO_BUILD_MODE: translate
LINGODOTDEV_API_KEY: ${{ secrets.LINGODOTDEV_API_KEY }}
- uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "chore: update translations"
file_pattern: ".lingo/metadata.json"Soubor .lingo/metadata.json vždy commitujte do správy verzí. Produkční buildy v režimu cache-only jsou na tomto souboru závislé. Pokud chybí nebo není kompletní, build selže.
