Alpha
Compiler od Lingo.dev je v alpha verzi. Je nestabilní, není doporučený pro produkční nasazení a API se mezi jednotlivými releasy může měnit.
Compiler od Lingo.dev v kořenovém adresáři projektu vytváří a udržuje adresář .lingo/, který ukládá metadata překladů a cache. Když této struktuře porozumíte, snáz budete spravovat překlady ve správě verzí, ladit chybějící překlady a optimalizovat výkon buildů.
Adresář .lingo/#
Compiler tento adresář automaticky vytvoří při prvním buildu. Obsahuje všechna metadata překladů, která využívá build pipeline:
.lingo/
metadata.json # Translation cache and content hashes
locale-resolver.server.ts # Optional: custom server-side locale resolver
locale-resolver.client.ts # Optional: custom client-side locale resolvermetadata.json#
Jde o hlavní soubor v adresáři .lingo/. Ukládá:
- Hashe obsahu – stabilní identifikátory založené na hashi pro každý přeložitelný řetězec
- Překlady v cache – vygenerované překlady pro každou dvojici jazyků
- Snapshoty zdrojového textu – podobu zdrojového textu v okamžiku překladu, používanou k detekci změn
Compiler tento soubor čte na začátku každého buildu. Řetězce se shodným hashem znovu použijí překlady z cache. Řetězce se změněným nebo chybějícím hashem se odešlou nakonfigurovanému poskytovateli překladu.
Commitněte do správy verzí
Adresář .lingo/metadata.json vždy commitněte do repozitáře. Produkční buildy v režimu cache-only čtou překlady výhradně z tohoto souboru. Pokud nebude commitnutý, produkční buildy selžou.
Na co myslet v .gitignore#
Do .gitignore rozhodně nepřidávejte .lingo/. Tento adresář by měl být sledovaný ve správě verzí. Typický soubor .gitignore pro projekt používající Compiler:
# Do NOT ignore .lingo/ - it contains translation cache
node_modules/
dist/
.envsourceRoot#
Volba sourceRoot určuje, který adresář bude Compiler procházet při hledání přeložitelných React komponent:
{
sourceRoot: "./app", // Next.js App Router
// or
sourceRoot: "src", // Vite + React
}Compiler rekurzivně prochází všechny soubory .tsx, .ts, .jsx a .js v rámci sourceRoot a hledá v nich přeložitelný JSX obsah. Soubory mimo tento adresář nezpracovává.
| Hodnota sourceRoot | Co se prochází |
|---|---|
"./app" | Všechny soubory v adresáři app/ (konvence Next.js) |
"src" | Všechny soubory v adresáři src/ (konvence Vite) |
"." | Všechny soubory v kořenovém adresáři projektu (užitečné pro monorepa se sdílenými balíčky) |
Širší sourceRoot znamená procházení více souborů, a tedy delší build. Držte ho co nejužší. Pokud překlad potřebují jen některé soubory, použijte místo něj volbu useDirective.
Opt-in režim s „use i18n“#
Ve výchozím nastavení Compiler překládá všechen JSX text v sourceRoot. Pokud chcete přepnout do opt-in režimu, nastavte useDirective: true:
{
useDirective: true,
}V opt-in režimu se zpracovávají jen soubory, které začínají direktivou 'use i18n':
'use i18n';
export function Welcome() {
return <h1>Welcome to our app</h1>;
// This text IS translated
}Soubory bez této direktivy se přeskočí:
export function InternalAdmin() {
return <h1>Admin Dashboard</h1>;
// This text is NOT translated
}Kdy použít opt-in režim#
| Scénář | Doporučený režim |
|---|---|
| Malá aplikace, kde se má překládat veškerý obsah | Výchozí (useDirective: false) |
| Rozsáhlý kódový základ, kde jsou uživatelsky viditelné jen některé stránky | Opt-in (useDirective: true) |
| Monorepo se sdílenými interními i externími komponentami | Opt-in (useDirective: true) |
| Postupné zavádění – přidávání i18n do existující aplikace | Opt-in (useDirective: true) |
lingoDir#
Volba lingoDir mění umístění adresáře s metadaty:
{
lingoDir: ".lingo", // Default
// or
lingoDir: ".translations", // Custom location
}To se hodí, pokud je .lingo/ v konfliktu s existujícím adresářem ve vašem projektu.
