|
Dokumentace
Rezervovat demoPlatforma
PlatformaMCPCLIAPIWorkflows
Návody
Changelog

Lokalizace

  • Přehled
  • Translation API
  • Lokalizace webových aplikací
  • Lokalizace mobilních aplikací
  • iOS se String Catalogs
  • Android a strings.xml
  • Lokalizace e-mailů
  • Statický obsah (např. .md, .json)
  • Next.js s Markdoc
  • Rails s i18n

Workflowy

  • Nastavení engine pomocí MCP
  • Jira Triage
  • CI/CD

Lokalizace mobilních aplikací

Lingo.dev CLI překládá nativní resource soubory mobilních aplikací—Xcode .strings, Android XML, Flutter ARB a React Native JSON—pomocí nakonfigurovaného lokalizačního engine. CLI automaticky rozpozná formát každého souboru podle přípony, zachová jeho strukturu a nativně pracuje s plurály.

Přehled platforem#

PlatformaNativní formátTypická cesta ke zdrojovému souboru
iOS (Xcode).stringsen.lproj/Localizable.strings
iOS (Xcode).stringsdicten.lproj/Localizable.stringsdict
iOS (Xcode).xcstringsLocalizable.xcstrings
Androidstrings.xmlapp/src/main/res/values/strings.xml
Flutter.arblib/l10n/app_en.arb
React Native.jsonsrc/locales/en.json

Co budete potřebovat#

Při každém spuštění CLI se obsah odesílá přes lokalizační engine – konfiguraci, která určuje, jaký model LLM, glosář, hlas značky a pravidla se použijí. Vytvořte si ho v dashboardu Lingo.dev.

Nainstalujte CLI (Node.js 22+) a přihlaste se:

bash
npm install -g @lingo.dev/cli
lingo login

lingo login vás přihlásí pomocí jednorázového kódu. Pro CI přeskočte interaktivní přihlášení a předejte --api-key (nebo nastavte LINGO_API_KEY).

Nastavení pro vaši platformu#

Spusťte lingo init, tím vytvoříte .lingo/config.json (zdrojový/cílový jazyk a vzory souborů), a potom lingo link, kterým připojíte své orgId a engineId. Soubor .lingo/config.json commitněte do repozitáře. Níže uvedené příklady ukazují výslednou konfiguraci pro každou platformu.

Vzor vždy míří na váš zdrojový soubor a CLI z něj odvodí cestu ke každému cíli. Obvykle to znamená nahradit jazyk nalezený v cestě (en.lproj → de.lproj, app_en.arb → app_de.arb). Dvě platformy fungují jinak a o obě se postaráme za vás: String Catalog uchovává všechny jazyky v jednom souboru, takže cílová cesta je stejná jako zdrojová; a Android ukládá výchozí řetězce do nekvalifikovaného values/, kde v cestě vůbec není uveden jazyk, takže CLI k němu přidá cílový kvalifikátor (values/ → values-de/).

Xcode podporuje tři lokalizační formáty. Zvolte ten, který odpovídá nastavení vašeho projektu.

String Catalogs (.xcstrings)—moderní formát Xcode uvedený v Xcode 15. Jeden JSON soubor obsahuje všechny jazyky a Xcode ho automaticky aktualizuje, když přidáte nové řetězce. CLI tento soubor upravuje přímo, takže pattern míří na jediný katalog bez segmentu jazyka.

json
{
  "orgId": "org_...",
  "engineId": "eng_...",
  "sourceLocale": "en",
  "targetLocales": ["es", "fr", "de", "ja"],
  "files": [{ "pattern": "MyApp/Localizable.xcstrings" }]
}

Legacy soubory .strings—jeden soubor pro každý jazyk v adresářích [code].lproj/. Zdrojový jazyk je součástí cesty (en.lproj) a CLI zapíše každý cíl do jeho vlastního adresáře .lproj. Pokud váš projekt používá i .stringsdict pro plurály, přidejte druhou položku files.

json
{
  "orgId": "org_...",
  "engineId": "eng_...",
  "sourceLocale": "en",
  "targetLocales": ["es", "fr", "de", "ja"],
  "files": [
    { "pattern": "MyApp/en.lproj/Localizable.strings" },
    { "pattern": "MyApp/en.lproj/Localizable.stringsdict" }
  ]
}

Funguje i projekt, jehož bundle vývojového jazyka je Base.lproj místo en.lproj — CLI rozpozná Base.lproj jako zdrojový jazyk.

Jak nastavit lokalizační infrastrukturu v Xcode najdete v dokumentaci Applu k lokalizaci.

Spuštění překladů#

Přeložte všechny resource soubory jediným příkazem:

bash
lingo push

CLI načte soubory zdrojového jazyka, pomocí lockfile (.lingo/lock.json, který commitnete) spočítá, co se od posledního spuštění změnilo, přeloží jen rozdíl a výsledky zapíše do souborů cílového jazyka.

Při prvním spuštění—nebo kdykoli přidáte nový cílový jazyk—přeložte vše od nuly:

bash
lingo push --backfill-missing

Pokud váš projekt obsahuje více typů prostředků, zacilte na konkrétní platformu předáním globu (žádné příznaky --bucket ani --target-locale neexistují). Vzory se porovnávají se zdrojovými cestami, takže rozsah určujte podle zdrojového souboru, ne cílového:

bash
lingo push "app/src/main/res/values/strings.xml"
lingo push "MyApp/Localizable.xcstrings"

Pokud chcete načíst nejnovější překlady jinde (například na jiném počítači), spusťte lingo pull. Pokud chcete ověřit, že jsou překlady aktuální, aniž by se zapsaly změny—což se hodí jako kontrola před nasazením—spusťte lingo check.

Plurály a konvence jednotlivých platforem#

Každá mobilní platforma pracuje s plurály jinak – iOS používá .stringsdict nebo pravidla String Catalogs, Android používá XML prvky <plurals> a Flutter používá ICU MessageFormat v ARB souborech. CLI při překladu zachovává nativní strukturu plurálů každé platformy a generuje správné kategorie množného čísla pro každý cílový jazyk.

Poznámky pro překladatele

Mobilní řetězce bývají krátké a silně závislé na kontextu. Použijte poznámky pro překladatele v Xcode souborech .xcstrings a dejte lokalizačnímu enginu kontext, kde se řetězec zobrazuje – „popisek tlačítka v checkout flow“ se překládá jinak než „položka navigačního menu“.

Automatizace v CI#

Doporučený způsob, jak udržovat překlady aktuální, je Lingo.dev GitHub App. Běží na serveru, čte vaše commitnuté .lingo/config.json a engineId a automaticky otevírá aktualizace překladů—bez nutnosti spravovat runner, secrets nebo lockfile. Pokud raději spouštíte překlady ve vlastní pipeline, spusťte lingo push ve svém CI runneru a commitněte výsledky.

Detailní průvodci podle platforem#

iOS se String Catalogs
Kompletní průvodce pro Xcode .xcstrings s CLI a GitHub App
Android se strings.xml
Kompletní průvodce pro Android XML resources s CLI a GitHub App
Ukázkové projekty
Funkční repozitáře pro iOS, Android a Flutter s uloženou konfigurací a přeloženými texty

Další kroky#

Podporované formáty
Úplná Reference pro všechny formáty mobilních souborů
Glosáře
Zajistěte, aby se názvy značek a technické termíny nepřekládaly
GitHub App
Automatizujte překlady mobilních aplikací při každém pushi
Uzamykání klíčů
Zkopírujte konkrétní hodnoty bez překladu

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

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