Skip to main content

Priebežná lokalizácia bez systému TMS

Váš kód sa nasadzuje priebežne. Rovnako by sa mali priebežne nasadzovať aj Vaše preklady. Tu sa dozviete, ako automatizovať lokalizáciu vo svojom vývojovom procese.

Čo je priebežná lokalizácia?

Priebežná lokalizácia je postup, pri ktorom sa nové reťazce prekladajú automaticky v rámci vývojového procesu namiesto toho, aby sa preklady zhromažďovali do pravidelných vydaní. Keď vývojár pridá novú funkciu s reťazcami používateľského rozhrania, tieto reťazce sa preložia ešte pred vydaním funkcie.

Tradičný prístup

Väčšina tímov spracúva preklady hromadne: zhromaždí nové reťazce, exportuje ich do systému TMS, počká na prekladateľov, importuje výsledky a potom vydá novú verziu. Lokalizácia sa tak stáva prekážkou, ktorá odďaľuje medzinárodné vydania o niekoľko dní až týždňov.

1

Vývojár pridá nové reťazce do súboru zdrojového jazyka

2

Reťazce sa exportujú a nahrajú do platformy TMS

3

Prekladatelia dostanú upozornenie a začnú pracovať

4

Preklady sa skontrolujú a schvália

5

Preložené súbory sa stiahnu a opäť zlúčia s projektom

6

Funkcia sa vydá spolu s prekladmi (o niekoľko dní až týždňov neskôr)

Days to weeks

Prístup priamo v IDE

Pri preklade priamo v IDE vývojár prekladá reťazce v rámci svojho bežného pracovného postupu pri programovaní. Žiadny export, žiadne nahrávanie, žiadne čakanie — preklady vznikajú počas tej istej relácie ako samotný vývoj.

1

Vývojár pridá nové reťazce do súboru zdrojového jazyka

2

Vývojár požiada svojho asistenta AI o preklad súboru

3

Preložené súbory sa zapíšu priamo do projektu

4

Funkcia sa vydá spolu s prekladmi v tom istom commite

Same commit

Tradičný prístup

6 steps

Multiple tools and platforms

Days to weeks per cycle

Prístup priamo v IDE

4 steps

Inside your editor

Same commit

3

Nastavte svoj proces prekladu

Ak Váš tím požaduje automatizovaný preklad aj mimo IDE, pridajte krok CI/CD, ktorý pri každom odoslaní zmien do vetvy main preloží nové alebo zmenené reťazce. Tento postup funguje so službami GitHub Actions, GitLab CI aj s ľubovoľným systémom CI/CD.

V malých tímoch začnite s prekladom priamo v IDE. Automatizáciu CI/CD pridajte, keď má Váš tím viac ako 3-4 vývojárov alebo keď potrebujete zaručiť preklady pri každom zlúčení zmien do vetvy main.

Pridajte preklad ako krok do svojho existujúceho procesu CI/CD. Preklad sa spustí po úspešnom zostavení a pred nasadením, čím sa zabezpečí, že každé vydanie bude obsahovať aktuálne preklady.
.github/workflows/translate.yml
# .github/workflows/translate.yml
name: Translate
on:
  push:
    branches: [main]
    paths: ['locales/en/**']

jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Translate changed strings
        run: |
          npx i18n-agent translate locales/en.json \
            --to de,ja,es,fr,ko,zh-Hans \
            --api-key ${{ secrets.I18N_AGENT_API_KEY }}

      - name: Commit translations
        run: |
          git config user.name "github-actions"
          git config user.email "[email protected]"
          git add locales/
          git diff --cached --quiet || git commit -m "chore: update translations"
          git push
.gitlab-ci.yml
# .gitlab-ci.yml
translate:
  stage: deploy
  only:
    changes:
      - locales/en/**
  script:
    - npx i18n-agent translate locales/en.json
        --to de,ja,es,fr --api-key $I18N_AGENT_API_KEY
    - git add locales/ && git commit -m "chore: translations" && git push
4

Pridajte kontrolu kvality prekladov do CI

Automatizované kontroly vo Vašom procese CI odhalia chýbajúce preklady, poškodené zástupné symboly a neplatné formáty správ ICU skôr, než sa dostanú do produkcie. Ide o jednoduché skripty, ktoré porovnávajú súbor zdrojového jazyka so všetkými cieľovými jazykmi.

Bez overovania prekladov na úrovni CI sa chýbajúce preklady nepozorovane dostanú do produkcie. Používatelia namiesto preloženého textu uvidia napríklad nespracovaný kľúč "settings.title" alebo prázdne reťazce. Päťminútová kontrola v CI tomu úplne zabráni.
check-translations.sh
#!/bin/bash
# check-translations.sh — Run in CI to catch missing translations

SOURCE="locales/en.json"
LANGS=("de" "ja" "es" "fr")
EXIT_CODE=0

# Extract all keys from source
SOURCE_KEYS=$(jq -r '[paths(scalars)] | map(join(".")) | .[]' "$SOURCE" | sort)
SOURCE_COUNT=$(echo "$SOURCE_KEYS" | wc -l)

for lang in "${LANGS[@]}"; do
  TARGET="locales/$lang.json"
  if [ ! -f "$TARGET" ]; then
    echo "❌ Missing: $TARGET"
    EXIT_CODE=1
    continue
  fi

  TARGET_KEYS=$(jq -r '[paths(scalars)] | map(join(".")) | .[]' "$TARGET" | sort)
  MISSING=$(comm -23 <(echo "$SOURCE_KEYS") <(echo "$TARGET_KEYS"))

  if [ -n "$MISSING" ]; then
    COUNT=$(echo "$MISSING" | wc -l)
    echo "❌ $lang: $COUNT missing keys"
    echo "$MISSING" | head -5
    EXIT_CODE=1
  else
    echo "✅ $lang: all $SOURCE_COUNT keys present"
  fi
done

exit $EXIT_CODE
check-placeholders.sh
#!/bin/bash
# check-placeholders.sh — Validate placeholder consistency

SOURCE="locales/en.json"
LANGS=("de" "ja" "es")

for lang in "${LANGS[@]}"; do
  TARGET="locales/$lang.json"

  # Compare placeholders like {{name}}, {count}, %s, %d
  jq -r 'paths(scalars) as $p | [($p | join(".")), (getpath($p))]
    | @tsv' "$SOURCE" | while IFS=$'\t' read -r key value; do
    SOURCE_PH=$(echo "$value" | grep -oE '\{\{[^}]+\}\}|%[sd@]' | sort)
    TARGET_VAL=$(jq -r "getpath($(echo $key | jq -R 'split(".")'))" "$TARGET")
    TARGET_PH=$(echo "$TARGET_VAL" | grep -oE '\{\{[^}]+\}\}|%[sd@]' | sort)

    if [ "$SOURCE_PH" != "$TARGET_PH" ]; then
      echo "❌ $lang/$key: placeholder mismatch"
      echo "   Source: $SOURCE_PH"
      echo "   Target: $TARGET_PH"
    fi
  done
done

Overujte preklady v CI

Pridajte i18n-validate do svojho procesu CI, aby automaticky odhaľoval chýbajúce kľúče, poškodené zástupné symboly a problémy s množným číslom. Pomocou i18n-pseudo generujte simulované preklady na testovanie vizuálnych regresií.
5

Odhaľujte a riešte rozchádzanie prekladov

K rozchádzaniu prekladov dochádza vtedy, keď sa zdrojové reťazce zmenia, ale preklady sa neaktualizujú. V angličtine je uvedené "Save changes", no v nemčine zostáva starý text. Pri zisťovaní odchýlok sa porovnávajú časové pečiatky alebo hodnoty hash obsahu zdrojových a prekladových súborov.

Neaktuálne preklady sú horšie ako chýbajúce preklady. Chýbajúci preklad je očividne nesprávny — používatelia uvidia kľúč alebo záložný jazyk. Neaktuálny preklad však presvedčivo vyjadruje nesprávnu informáciu, čo môže používateľov zavádzať alebo spôsobovať problémy s podporou.
detect-drift.sh
#!/bin/bash
# detect-drift.sh — Find stale translations

SOURCE="locales/en.json"
SOURCE_HASH=$(md5sum "$SOURCE" | cut -d' ' -f1)
HASH_FILE=".translation-hashes"

# Compare current source hash with stored hash
if [ -f "$HASH_FILE" ]; then
  STORED_HASH=$(grep "^en:" "$HASH_FILE" | cut -d: -f2)
  if [ "$SOURCE_HASH" != "$STORED_HASH" ]; then
    echo "⚠️  Source strings changed since last translation"
    echo "   Run translations to update all locales"

    # Show which keys changed
    git diff HEAD~1 "$SOURCE" | grep '^[+-]' | grep -v '^[+-][+-]'
  fi
fi

# Update stored hash
echo "en:$SOURCE_HASH" > "$HASH_FILE"
6

Vyberte si spôsob prekladu

Nie každý obsah si vyžaduje rovnaký spôsob prekladu. Reťazce a označenia používateľského rozhrania sú veľmi vhodné na preklad pomocou AI. Marketingovým textom prospeje preklad pomocou AI doplnený ľudskou kontrolou. Právne texty a texty týkajúce sa dodržiavania predpisov by mali vždy prekladať profesionálni prekladatelia.

Preklad pomocou AI zvládne v produkčnej kvalite viac ako 80 % bežných reťazcov aplikácie. Ľudských prekladateľov využite na právne texty, zachovanie štýlu značky a kultúrne citlivý obsah, pri ktorom sú jemné významové rozdiely najdôležitejšie.
Cost Comparison
Translation Approach Comparison:

Content Type         | Approach          | Cost/word  | Quality
─────────────────────┼───────────────────┼────────────┼──────────
UI strings, labels   | AI/LLM            | $0.001-01  | Production
Tooltips, help text  | AI/LLM            | $0.001-01  | Production
Marketing copy       | AI + human review | $0.05-0.15 | High
Legal / compliance   | Human translator  | $0.15-0.40 | Certified
Brand voice content  | Human translator  | $0.20-0.50 | Premium
7

Pracovný postup Git pre preklady

Prekladajte vo svojej funkčnej vetve pred zlúčením zmien, nie až po ňom. Tak zabezpečíte, že každé zlúčenie zmien do vetvy main bude obsahovať úplné preklady. Pridajte kontrolu pred zlúčením, ktorá overí úplnosť prekladov pre všetky podporované jazyky.

Veľké súbory JSON s jazykovými údajmi spôsobujú časté konflikty pri zlučovaní, keď ich súčasne upravuje viacero vetiev. Zoraďte kľúče podľa abecedy a každý kľúč umiestnite na samostatný riadok, aby ste zmenšili rozsah rozdielov a uľahčili riešenie konfliktov.

Prekladové súbory sa nachádzajú vo Vašom repozitári spolu s kódom. Spravujú sa v systéme riadenia verzií, možno ich kontrolovať v požiadavkách na začlenenie zmien a nasadzujú sa rovnakým procesom ako všetko ostatné.
.gitattributes + package.json
# .gitattributes — reduce merge conflicts in locale files
locales/*.json merge=union

# Sort keys alphabetically to minimize diffs:
# package.json script:
"sort-locales": "node -e \"
  const fs = require('fs');
  const f = process.argv[1];
  const d = JSON.parse(fs.readFileSync(f));
  const s = (o) => Object.keys(o).sort().reduce((r,k) =>
    ({...r, [k]: typeof o[k]==='object' ? s(o[k]) : o[k]}), {});
  fs.writeFileSync(f, JSON.stringify(s(d), null, 2)+'\\n');
\""

Bežné úskalia

Odkladanie lokalizácie na obdobie po vývoji

Najväčšou chybou je čakať s prekladom až do skončenia vývoja. Vznikajú tak prekážky, vydania sa oneskorujú a prekladom sa venuje pozornosť až dodatočne. Prekladajte počas vývoja, nie až po ňom.

Chýbajúce overovanie prekladov na úrovni CI

Bez automatizovaných kontrol sa chýbajúce preklady, poškodené zástupné symboly a neplatné formáty dostanú do produkcie. Pridajte do svojho procesu CI overovanie úplnosti a formátu.

Zbytočne zložité riešenie so systémom TMS

Systém TMS bol navrhnutý na správu pracovných postupov ľudských prekladateľov. Ak používate preklad pomocou AI, dodatočnú réžiu systému TMS možno nepotrebujete. Začnite jednoducho — prekladajte v IDE alebo CI/CD — a systém TMS pridajte iba vtedy, keď potrebujete spravovať ľudských prekladateľov.

Nesledovanie aktuálnosti prekladov

Bez sledovania aktuálnosti neviete, ktoré preklady sú zastarané. Zdrojové reťazce sa menia, ale staré preklady zostávajú. Začleňte do svojho pracovného postupu zisťovanie odchýlok, aby ste neaktuálny obsah včas odhalili.

Vyskúšajte i18n Agent teraz

Potiahnite súbor na preklad sem

JSON, YAML, PO, XML, CSV, Markdown, Properties

alebo kliknite a vyberte súbor

Cieľové jazyky

Bez registrácieOkamžitý odhad

Často kladené otázky