i18n.json je konfigurační soubor, který řídí Lingo.dev CLI a CI/CD integrace. Určuje, které jazyky se mají překládat, kde se nachází přeložitelný obsah a který překladový backend se použije.
Minimální příklad#
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.15",
"locale": {
"source": "en",
"targets": ["es", "fr", "ja"]
},
"buckets": {
"json": {
"include": ["locales/[locale].json"]
}
}
}Pole $schema umožňuje automatické doplňování a validaci v IDE. Pole version sleduje verzi schématu kvůli kompatibilitě s automatickými migracemi.
Jazyk#
Sekce locale definuje zdrojový a cílové jazyky:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja"]
}
}| Pole | Popis |
|---|---|
locale.source | Jazyk, ve kterém je napsaný váš zdrojový obsah. Všechny překlady vycházejí z tohoto jazyka. |
locale.targets | Pole cílových jazyků. Pro každý cílový jazyk vznikne samostatný soubor (nebo sekce) podle formátu bucketu. |
Kódy jazyků se řídí standardem BCP 47 — podporované jsou en, en-US, es-ES, zh-Hans i platformně specifické formáty, jako je Android en-rUS.
Dostupné kódy jazyků vypíšete takto:
npx lingo.dev@latest show locale sources # Available source languages
npx lingo.dev@latest show locale targets # Available target languagesBuckety#
Buckety určují vzory pro vyhledávání souborů i pravidla jejich zpracování. Každý klíč bucketu určuje formát souboru a jeho hodnota nastavuje, které soubory zahrnout nebo vynechat:
{
"buckets": {
"json": {
"include": ["locales/[locale].json"],
"exclude": ["locales/[locale]/internal.json"]
},
"markdown": {
"include": ["docs/[locale]/*.md"]
}
}
}| Pole | Popis |
|---|---|
include | Pole vzorů souborů se zástupným symbolem [locale]. Podporuje glob zástupné znaky (*). |
exclude | nepovinné. Pole vzorů, které se mají při zpracování přeskočit. |
lockedKeys | nepovinné. Klíče, jejichž hodnoty se zkopírují ze zdroje bez překladu. Viz Key Locking. |
ignoredKeys | nepovinné. Klíče zcela vyloučené z překladu — v cílových souborech se vůbec neobjeví. Viz Key Ignoring. |
preservedKeys | nepovinné. Klíče inicializované jednou ze zdroje a potom chráněné před automatickými aktualizacemi. Viz Key Preserving. |
injectLocale | nepovinné. Klíče, do kterých se automaticky vkládá kód cílového jazyka. |
Vzory zahrnutí#
Vzory zahrnutí používají zástupný symbol [locale], který se za běhu vyhodnotí podle nakonfigurovaných kódů jazyků:
locales/[locale].json→locales/en.json,locales/es.jsondocs/[locale]/*.md→docs/en/*.md,docs/es/*.md
Rekurzivní glob vzory (**/*.json) nejsou podporované. Místo nich použijte explicitní cesty k adresářům.
Vlastní oddělovače jazyků#
Ve výchozím nastavení používají kódy jazyků v názvech souborů jako oddělovač pomlčku (-): en-US.json. Pokud chcete místo ní používat podtržítka, předejte objekt s polem delimiter:
{
"include": [
"standard/[locale].json",
{ "path": "legacy/[locale].json", "delimiter": "_" }
]
}Výsledkem bude legacy/en_US.json místo legacy/en-US.json.
Notace cest ke klíčům#
Pole lockedKeys, ignoredKeys a preservedKeys používají notaci s lomítkem (/) pro vnořené klíče a hvězdičku (*) pro zástupné znaky:
{
"lockedKeys": ["brand/name", "config/*"]
}Úplný seznam podporovaných typů bucketů najdete v části Supported Formats.
Provider#
Sekce provider konfiguruje přímého LLM providera pro překlad. Tato sekce je nepovinné — pokud chybí, CLI použije lokalizační engine na Lingo.dev.
{
"provider": {
"id": "openai",
"model": "gpt-4o-mini",
"prompt": "Translate the provided text from {source} to {target}."
}
}| Pole | Popis |
|---|---|
provider.id | Identifikátor provideru: openai, anthropic, google, mistral, openrouter nebo ollama. |
provider.model | Název modelu od provideru (např. gpt-4o-mini, claude-3-haiku). |
provider.prompt | Systémový prompt. {source} a {target} se za běhu nahradí kódy jazyků. |
provider.baseUrl | nepovinné. Vlastní API endpoint (povinné pro Ollama: http://localhost:11434). |
Připojení k engine#
Pokud chcete směrovat překlady přes konkrétní lokalizační engine, přidejte pole engineId:
{
"engineId": "eng_SxjMwMsfOIsvV1wh"
}Když je nastavené engineId, každý požadavek na překlad automaticky použije hlas značky, glosář, instrukce a konfiguraci modelu vašeho engine. Pokud chybí a je nastavené LINGO_API_KEY, CLI použije výchozí engine ve vaší organizaci.
Kompletní návod k nastavení najdete v části Connect Your Engine.
Proměnné prostředí#
| Proměnná | povinné | Popis |
|---|---|---|
LINGO_API_KEY | Pro Lingo.dev Engine | Váš API klíč pro Lingo.dev. |
LINGO_API_URL | Ne | Vlastní základní URL API (pro self-hosted nebo staging). |
OPENAI_API_KEY | Pro provider OpenAI | API klíč OpenAI. |
ANTHROPIC_API_KEY | Pro provider Anthropic | API klíč Anthropic. |
GOOGLE_API_KEY | Pro provider Google | API klíč Google. |
MISTRAL_API_KEY | Pro provider Mistral | API klíč Mistral. |
OPENROUTER_API_KEY | Pro provider OpenRouter | API klíč OpenRouter. |
Kompletní příklad#
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.15",
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja"]
},
"buckets": {
"json": {
"include": ["locales/[locale].json"],
"lockedKeys": ["brand/name", "brand/tagline"],
"ignoredKeys": ["internal/*"]
},
"markdown": {
"include": ["docs/[locale]/*.md"]
}
},
"engineId": "eng_SxjMwMsfOIsvV1wh"
}Migrace verzí#
CLI automaticky migruje starší konfigurace i18n.json na nejnovější verzi schématu. Vytvoří zálohu aktuálního souboru, aktualizuje schéma a zachová všechna nastavení. Není potřeba žádný ruční zásah.
