|
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 Android aplikace pomocí strings.xml

Lingo.dev CLI překládá androidové string resources (strings.xml) přes nakonfigurovaný lokalizační engine. Ve formátu android CLI nativně rozumí prvkům <resources>, <string>, <string-array> a <plurals>, zachovává strukturu XML a generuje správné kategorie množného čísla pro každý cílový jazyk.

Tento návod vás provede lokalizací Android aplikace od začátku do konce: od konfigurace CLI přes lokální překlad až po automatizaci v CI, aby se překlady nasazovaly s každým pushem.

Ukázkový repozitář

Naklonujte nebo forkněte lingodotdev/android-app-localization-example a postupujte podle návodu. Repozitář obsahuje funkční projekt pro Android se string resources, konfigurací Lingo.dev CLI a uloženými překlady pro každý cílový jazyk.

Jak funguje lokalizace v Androidu#

Android používá konvenci resource adresářů, ve které má každý jazyk vlastní adresář values-[locale]/. Systém pak za běhu načte správný strings.xml podle nastavení jazyka zařízení.

text
app/src/main/res/
  values/              # Default (source) strings
    strings.xml
  values-es/           # Spanish
    strings.xml
  values-fr/           # French
    strings.xml
  values-ja/           # Japanese
    strings.xml

Typický strings.xml obsahuje tři typy prvků:

xml
<resources>
  <!-- Simple strings -->
  <string name="app_name">My App</string>
  <string name="welcome_message">Welcome back!</string>

  <!-- String arrays -->
  <string-array name="planets">
    <item>Mercury</item>
    <item>Venus</item>
    <item>Earth</item>
  </string-array>

  <!-- Plurals -->
  <plurals name="items_count">
    <item quantity="one">%d item</item>
    <item quantity="other">%d items</item>
  </plurals>
</resources>

CLI zpracuje všechny tři typy prvků, přeloží jejich obsah přes lokalizační engine a zapíše soubory pro jednotlivé jazyky do správných adresářů values-[locale]/.

Co budete potřebovat#

1

Vytvořte lokalizační engine

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 Lingo.dev dashboard.

2

Ověřte verzi Node.js

CLI vyžaduje Node.js 22 nebo novější:

bash
node -v
3

Nainstalujte CLI

Nainstalujte CLI globálně, čímž zpřístupníte příkaz lingo:

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

Přihlaste se

Přihlaste se pomocí jednorázového hesla:

bash
lingo login

Pro CI místo toho použijte API key — předejte --api-key nebo nastavte LINGO_API_KEY.

5

Připravte Android projekt

Váš projekt potřebuje výchozí strings.xml v app/src/main/res/values/. Android Studio tento soubor vytvoří při založení nového projektu. Jak nastavit resource adresáře popisuje průvodce lokalizací pro Android.

Nastavení CLI#

V kořenovém adresáři projektu spusťte lingo init. Tím vytvoříte .lingo/config.json se zdrojovým a cílovými jazyky i vzory souborů, pak spusťte lingo link a připojte organizaci a engine. Výsledek bude vypadat takto:

json
{
  "orgId": "org_...",
  "engineId": "eng_...",
  "sourceLocale": "en",
  "targetLocales": ["es", "fr", "de", "ja"],
  "files": [
    {
      "pattern": "app/src/main/res/values/strings.xml",
      "format": "android"
    }
  ]
}

Pattern míří na váš výchozí adresář resources – nekvalifikovaný values/, tedy přesně tam, kde Android očekává zdrojové řetězce. Neobsahuje žádný kód jazyka a ani ho nepotřebuje.

Proč je `format` nastavený explicitně

CLI většinu formátů rozpozná automaticky podle přípony souboru, ale .xml je nejednoznačné, takže soubory Android resources potřebují u položky files explicitně nastavené "format": "android".

Více resource souborů

Pokud váš projekt rozděluje řetězce do více souborů (například strings.xml a arrays.xml), přidejte položku files pro každý z nich:

json
{
  "files": [
    {
      "pattern": "app/src/main/res/values/strings.xml",
      "format": "android"
    },
    {
      "pattern": "app/src/main/res/values/arrays.xml",
      "format": "android"
    }
  ]
}

Commitněte .lingo/config.json do repozitáře.

Adresáře jazyků a kvalifikátory#

Android ukládá výchozí jazyk do nekvalifikovaného adresáře values/, takže zdrojová cesta neobsahuje žádný kód jazyka. CLI to rozpozná: bere samotné values/ jako zdrojový jazyk a ke každému dalšímu jazyku přidá cílový kvalifikátor.

JazykAdresář resources
en (zdroj)values/
esvalues-es/
pt-BRvalues-pt-rBR/
zh-Hansvalues-b+zh+Hans/

Regionální varianty a jazyky se skriptem je tady dobré pochopit, protože resource qualifier není prostě jen syrový tag BCP 47. Android podporuje dva zápisy: starší formát jazyk-oblast (values-pt-rBR/) a formát BCP 47 s prefixem b+ (values-b+pt+BR/, od API 24 výš). Adresář pojmenovaný values-pt-BR/ Android zcela ignoruje – řetězce v něm sice budou existovat, ale nikdy se nenačtou.

Když nastavíte "format": "android", CLI za vás vygeneruje správný zápis: starší formát všude, kde jím lze jazyk vyjádřit, a b+ pro skripty, třípísmenné jazyky a číselné regiony.

Přechod ze staršího nastavení

Starší verze CLI vyžadovaly, aby se jazyk objevil ve zdrojové cestě, a tento průvodce dříve doporučoval symlink values-en -> values, který obě konvence propojil. Od verze @lingo.dev/cli 1.12.0 už to není potřeba – nasměrujte pattern na values/strings.xml a symlink smažte.

Překlad lokálně#

Spusťte CLI. Při prvním spuštění — nebo kdykoli přidáte nový cílový jazyk — použijte --backfill-missing, aby se přeložily všechny existující řetězce:

bash
lingo push --backfill-missing

CLI načte váš zdrojový soubor strings.xml, pomocí run state identifikuje nepřeložené položky, přeloží změny přes váš lokalizační engine a zapíše výsledky do cílových adresářů values-[locale]/. Otevřete libovolný cílový soubor a uvidíte přeložené řetězce.

Při dalších spuštěních lingo push překládá jen to, co se změnilo:

bash
lingo push

Pokud chcete běh omezit na konkrétní soubory, předejte glob. Patterny 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"

Chcete-li do svého pracovního stromu stáhnout překlady vytvořené jinde (například v CI), spusťte lingo pull.

Množné číslo#

Android používá prvky <plurals> s CLDR quantity strings (zero, one, two, few, many, other) pro práci s tvary množného čísla. Různé jazyky vyžadují různé kategorie množného čísla – angličtina potřebuje dvě (one a other), ruština čtyři a arabština šest.

CLI při překladu zachovává strukturu <plurals> a generuje správné quantity položky pro každý cílový jazyk. Zdrojová položka se dvěma kategoriemi:

xml
<plurals name="messages_count">
  <item quantity="one">%d new message</item>
  <item quantity="other">%d new messages</item>
</plurals>

Výsledkem jsou správné kategorie pro každý cílový jazyk. Lokalizační engine ví, která CLDR pravidla množného čísla platí pro jednotlivé jazyky, a generuje jen ty kategorie, které daný jazyk skutečně vyžaduje.

Zamykání klíčů#

Některé hodnoty řetězců by měly zůstat ve všech jazycích stejné – například názvy značek, API endpointy nebo formátovací vzory. Pomocí zamykání klíčů tyto hodnoty zkopírujete bez překladu:

json
{
  "files": [
    {
      "pattern": "app/src/main/res/values/strings.xml",
      "format": "android",
      "lockedKeys": ["app_name", "api_base_url"]
    }
  ]
}

Uzamčené klíče se zkopírují ze zdroje do všech cílových souborů, aniž by vstoupily do překladové pipeline.

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 runneru, bez uložených secretů a bez správy lockfile z vaší strany. Nainstalujte ji a propojte ji se svým repozitářem, aby překládala při každém pushi.

Pokud chcete CLI spouštět ve vlastní pipeline, přidejte workflow, které CLI nainstaluje a spustí lingo push:

yaml
name: Translate
on:
  push:
    branches: [main]
permissions:
  contents: write
jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
      - run: npm install -g @lingo.dev/cli
      - run: lingo push --backfill-missing
        env:
          LINGO_API_KEY: ${{ secrets.LINGO_API_KEY }}

Uložte svůj API key jako LINGO_API_KEY v Settings > Secrets and variables > Actions ve svém GitHub repozitáři a pak v navazujícím kroku commitněte aktualizované cílové soubory (nebo otevřete pull request).

Kontrola před nasazením#

Použijte lingo check jako podmínku nasazení, abyste měli jistotu, že se do produkce nedostanou žádné nepřeložené řetězce. Příkaz skončí s nenulovým stavovým kódem, pokud některé položky vyžadují překlad:

bash
lingo check

Přidejte to jako samostatný CI krok před build:

yaml
- name: Verify translations
  run: lingo check
  env:
    LINGO_API_KEY: ${{ secrets.LINGO_API_KEY }}

Další kroky#

Lokalizace mobilních aplikací
Přehled všech mobilních platforem – iOS, Android, Flutter, React Native
CI/CD Workflows
Osvědčené postupy pro GitHub Actions, GitLab CI a Bitbucket Pipelines
Glosáře
Uzamkněte názvy značek a technické termíny, aby se nepřekládaly
Zamykání klíčů
Zkopírujte konkrétní hodnoty bez překladu

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

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