Lingo.dev CLI používá typy bucketů k parsování a překladu různých formátů souborů. Každý typ bucketu je samostatný parser navržený pro konkrétní formát. V souboru i18n.json si nastavte jeden nebo více bucketů a určete, které soubory má CLI překládat.
Typy bucketů#
| Typ bucketu | Formát | Výstupní režim | [locale] povinné |
|---|---|---|---|
json | Soubory JSON | Samostatné soubory pro každý jazyk | Ano |
json5 | Soubory JSON5 | Samostatné soubory pro každý jazyk | Ano |
jsonc | Soubory JSONC (s komentáři) | Samostatné soubory pro každý jazyk | Ano |
json-dictionary | JSON slovník (ploché klíče a hodnoty) | Samostatné soubory pro každý jazyk | Ano |
yaml | Soubory YAML | Samostatné soubory pro každý jazyk | Ano |
yaml-root-key | YAML s kořenovými klíči jazyků | Upravuje zdrojový soubor | Ne |
markdown | Soubory Markdown | Samostatné soubory pro každý jazyk | Ano |
mdx | Soubory MDX | Samostatné soubory pro každý jazyk | Ano |
markdoc | Soubory Markdoc | Samostatné soubory pro každý jazyk | Ano |
html | Soubory HTML | Samostatné soubory pro každý jazyk | Ano |
mjml | E-mailové šablony MJML | Samostatné soubory pro každý jazyk | Ano |
android | Zdroje Android XML | Samostatné soubory pro každý jazyk | Ano |
xcode-strings | Soubory Xcode .strings | Samostatné soubory pro každý jazyk | Ano |
xcode-stringsdict | Soubory Xcode .stringsdict | Samostatné soubory pro každý jazyk | Ano |
xcode-xcstrings | Katalogy Xcode .xcstrings | Upravuje zdrojový soubor | Ne |
flutter | Soubory Flutter ARB | Samostatné soubory pro každý jazyk | Ano |
po | Soubory GNU gettext PO | Samostatné soubory pro každý jazyk | Ano |
properties | Soubory Java .properties | Samostatné soubory pro každý jazyk | Ano |
csv | Soubory CSV | Upravuje zdrojový soubor | Ne |
csv-per-locale | Soubory CSV (po jednom pro každý jazyk) | Samostatné soubory pro každý jazyk | Ano |
xml | Obecné soubory XML | Samostatné soubory pro každý jazyk | Ano |
xliff | Soubory XLIFF | Samostatné soubory pro každý jazyk | Ano |
srt | Soubory titulků SRT | Samostatné soubory pro každý jazyk | Ano |
vtt | Soubory titulků VTT | Samostatné soubory pro každý jazyk | Ano |
php | Lokalizační pole PHP | Samostatné soubory pro každý jazyk | Ano |
typescript | Soubory TypeScript | Samostatné soubory pro každý jazyk | Ano |
vue-json | JSON bloky Vue i18n | Samostatné soubory pro každý jazyk | Ano |
txt | Prosté textové soubory | Samostatné soubory pro každý jazyk | Ano |
Výstupní režimy#
Buckety fungují v jednom ze dvou výstupních režimů:
Samostatné soubory pro každý jazyk — CLI vytvoří samostatný soubor pro každý cílový jazyk. Vzory include musí obsahovat zástupný symbol [locale]:
{
"buckets": {
"json": {
"include": ["locales/[locale].json"]
}
}
}Tím vzniknou locales/en.json, locales/es.json, locales/fr.json atd.
Upravuje zdrojový soubor — CLI zapíše překlady zpět do stejného souboru, který obsahuje zdrojový obsah. Zástupný symbol [locale] se nepoužívá:
{
"buckets": {
"csv": {
"include": ["translations.csv"]
}
}
}Soubory CSV obvykle ukládají všechny jazyky do sloupců v rámci jednoho souboru. Podobně fungují i katalogy Xcode .xcstrings a YAML s kořenovými klíči.
Příklady konfigurace#
Webová aplikace s JSON#
{
"buckets": {
"json": {
"include": ["src/locales/[locale].json"],
"lockedKeys": ["brand/name"]
}
}
}Dokumentační web s Markdown#
{
"buckets": {
"markdown": {
"include": ["docs/[locale]/*.md"],
"exclude": ["docs/[locale]/drafts/*.md"]
}
}
}Mobilní aplikace (iOS + Android)#
{
"buckets": {
"xcode-xcstrings": {
"include": ["ios/Localizable.xcstrings"]
},
"android": {
"include": ["android/app/src/main/res/values-[locale]/strings.xml"]
}
}
}Monorepo s více formáty#
{
"buckets": {
"json": {
"include": ["apps/web/locales/[locale].json"]
},
"mdx": {
"include": ["packages/docs/content/[locale]/*.mdx"]
},
"flutter": {
"include": ["apps/mobile/lib/l10n/app_[locale].arb"]
}
}
}Funkce specifické pro buckety#
Některé buckety podporují i další funkce nad rámec vzorů include/exclude:
| Funkce | Podporované buckety | Popis |
|---|---|---|
| Uzamykání klíčů | Formáty klíč–hodnota (JSON, YAML atd.) | Zkopíruje zdrojové hodnoty bez překladu |
| Ignorování klíčů | Formáty klíč–hodnota | Úplně vynechá klíče z cílových souborů |
| Zachování klíčů | Formáty klíč–hodnota | Inicializuje jednou a pak chrání před aktualizacemi |
| Poznámky pro překladatele | JSONC, XCStrings | Pomáhají dodat kontext pomocí komentářů a zlepšit překlad |
Pravidla pro vzory include#
- Vzory jsou relativní k umístění souboru
i18n.json - Použijte
[locale]jako zástupný symbol pro kódy jazyků (povinné pro buckety se „samostatnými soubory“) - Hvězdička (
*) odpovídá libovolnému názvu souboru:locales/[locale]/*.json - Rekurzivní vzory (
**) odpovídají souborům v libovolné hloubce:src/**/[locale].json,config/locales/**/[locale].yml. Když vzor používá**,node_modules,.git,dist,build,.nexta.turbojsou ve výchozím nastavení vyloučené — podle potřeby nad ně přidejte vlastní položkyexclude(vyžaduje CLI 0.135.0+) - Přípony souborů nemají na parsování vliv — parser určuje typ bucketu
