Lokalizace

XLIFF a PO soubory - jak je porovnávat

26. ledna 2026
11 min čtení
XLIFFPO souborylokalizacepřekladi18ngettext

Překládal jsem pár projektů a vždycky jsem řešil - co se změnilo od minule? Které stringy jsou nové? Které někdo smazal? Tady je jak na to.

Co jsou XLIFF a PO soubory?

XLIFF (XML Localization Interchange File Format)

XLIFF je průmyslový standard pro výměnu lokalizačních dat. Soubor XLIFF obsahuje zdrojový text a jeho překlad ve strukturovaném XML formátu:

<?xml version="1.0" encoding="UTF-8"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
  <file source-language="en" target-language="cs" datatype="plaintext">
    <body>
      <trans-unit id="greeting">
        <source>Hello, World!</source>
        <target>Ahoj, světe!</target>
        <note>Uvítací zpráva aplikace</note>
      </trans-unit>
      <trans-unit id="button.save">
        <source>Save</source>
        <target>Uložit</target>
      </trans-unit>
    </body>
  </file>
</xliff>

Výhody XLIFF:

  • Standardizovaný formát (OASIS)
  • Podpora metadat (poznámky, stavy překladu)
  • Kompatibilita s CAT nástroji (SDL Trados, memoQ, OmegaT)
  • Verzování (XLIFF 1.2 a XLIFF 2.0)

PO/POT soubory (GNU Gettext)

PO (Portable Object) je formát používaný v open-source projektech, zejména těch postavených na GNU/Linux:

# Komentář pro překladatele
msgid "Hello, World!"
msgstr "Ahoj, světe!"

#: src/components/Button.js:42
msgid "Save"
msgstr "Uložit"

#, fuzzy
msgid "Cancel"
msgstr "Zrušit"

Struktura PO souborů:

  • POT (Portable Object Template) – šablona se zdrojovými texty
  • PO – soubor s překlady pro konkrétní jazyk
  • MO (Machine Object) – zkompilovaná binární verze pro produkci

Proč je porovnávání lokalizačních souborů důležité?

1. Sledování změn ve zdrojovém textu

Když vývojáři změní zdrojový text, překladatelé potřebují vědět:

  • Které řetězce se změnily
  • Které jsou nové
  • Které byly odstraněny

2. Kontrola kvality překladu

Porovnání umožňuje:

  • Kontrolu konzistence terminologie
  • Detekci neúplných překladů
  • Ověření formátovacích značek

3. Koordinace překladatelského týmu

Při spolupráci více překladatelů:

  • Kdo co přeložil
  • Merge konfliktů při sloučení
  • Revize a schvalování změn

4. Verzování a audit

Pro regulované odvětví:

  • Sledování historie změn
  • Audit trail pro certifikace
  • Obnovení předchozích verzí

Nástroje pro porovnání XLIFF souborů

Diff pro XML strukturu

Protože XLIFF je XML, můžete použít naše nástroje pro porovnání XML:

  1. Načtěte starší verzi XLIFF do levého panelu
  2. Načtěte novější verzi do pravého panelu
  3. Zobrazte strukturální změny

Tip: Před porovnáním naformátujte XML pro lepší čitelnost:

xmllint --format stary.xliff > stary_formatted.xliff
xmllint --format novy.xliff > novy_formatted.xliff

Specializované XLIFF nástroje

Okapi Framework (open-source):

# Instalace přes Java
java -jar okapi-apps/rainbow.jar

# Porovnání XLIFF souborů
tikal -x original.xliff -fc okf_xliff
tikal -x updated.xliff -fc okf_xliff

memoQ Diff:

  • Vestavěná funkce pro porovnání projektů
  • Vizuální zvýraznění změn
  • Export diff reportů

Online XLIFF diff

Pro rychlé porovnání bez instalace:

  1. Otevřete PorovnejText.cz/xml-diff
  2. Vložte obsah obou XLIFF souborů
  3. Analyzujte změny v jednotlivých <trans-unit> elementech

Nástroje pro porovnání PO/POT souborů

GNU msgcmp a msgmerge

Gettext nástroje nabízejí specializované příkazy:

# Porovnání PO souboru se šablonou POT
msgcmp preklad.po sablona.pot

# Sloučení změn z nové šablony
msgmerge -U preklad.po nova_sablona.pot

# Zobrazení statistik
msgfmt --statistics preklad.po

Výstup msgfmt --statistics:

245 přeložených zpráv, 12 fuzzy, 3 nepřeložené

Porovnání PO jako text

PO soubory jsou čitelný text, takže můžete použít běžné diff nástroje:

# Základní diff
diff stary.po novy.po

# Barevný diff
diff --color stary.po novy.po

# Side-by-side zobrazení
diff -y stary.po novy.po

PorovnejText.cz pro PO soubory

Náš textový diff nástroj je ideální pro:

  1. Rychlé porovnání dvou verzí PO souboru
  2. Vizuální kontrolu změn v překladu
  3. Detekci konfliktů před merge

Postup:

  1. Otevřete /
  2. Vložte starší PO soubor vlevo
  3. Vložte novější PO soubor vpravo
  4. Analyzujte barevně zvýrazněné změny

Praktické workflow pro překladatele

Workflow s Git a PO soubory

# Struktura projektu
projekt/
├── locale/
│   ├── template.pot        # Zdrojová šablona
│   ├── cs/
│   │   └── LC_MESSAGES/
│   │       ├── messages.po # Český překlad
│   │       └── messages.mo # Zkompilovaný
│   └── sk/
│       └── LC_MESSAGES/
│           ├── messages.po # Slovenský překlad
│           └── messages.mo

# Git workflow
git pull origin main
msgmerge -U locale/cs/LC_MESSAGES/messages.po locale/template.pot
# ... překlad nových řetězců ...
git add locale/cs/LC_MESSAGES/messages.po
git commit -m "Aktualizace českého překladu"
git push origin feature/czech-translation

Workflow s XLIFF a CAT nástroji

1. Vývojář exportuje nový XLIFF z aplikace
2. Překladatel importuje XLIFF do CAT nástroje
3. CAT nástroj porovná s překladovou pamětí (TM)
4. Překladatel pracuje pouze na změněných segmentech
5. Export aktualizovaného XLIFF
6. Vývojář importuje zpět do aplikace

Pokročilé techniky porovnávání

Ignorování metadat při porovnání

Někdy chcete porovnat pouze překladový obsah bez metadat:

Pro XLIFF – extrakce textů:

# Extrakce pouze source a target elementů
grep -E "<source>|<target>" dokument.xliff > texty.txt

Pro PO – pouze msgid a msgstr:

# Extrakce překladových párů
grep -E "^msgid|^msgstr" preklad.po > pary.txt

Detekce fuzzy překladů

Fuzzy překlad znamená, že zdrojový text se změnil, ale starý překlad může být stále částečně použitelný:

#, fuzzy
#| msgid "Save document"
msgid "Save document as..."
msgstr "Uložit dokument"

Vyhledání všech fuzzy:

grep -B1 "^#, fuzzy" preklad.po

Kontrola formátovacích značek

Důležité je ověřit, že překlad obsahuje stejné formátovací značky jako originál:

# Příklad kontrolního skriptu
import re

def check_format_strings(msgid, msgstr):
    """Kontrola %s, %d, {name} atd."""
    patterns = [
        r'%[sd]',           # printf style
        r'\{\w+\}',          # Python format
        r'%\(\w+\)[sd]'      # Python named
    ]

    for pattern in patterns:
        src_matches = re.findall(pattern, msgid)
        tgt_matches = re.findall(pattern, msgstr)
        if sorted(src_matches) != sorted(tgt_matches):
            return False
    return True

Integrace s překladatelskými nástroji

OmegaT (open-source CAT)

OmegaT podporuje XLIFF, PO a mnoho dalších formátů:

Projekt OmegaT/
├── source/           # Zdrojové soubory
├── target/           # Přeložené soubory
├── tm/               # Překladová paměť
└── omegat/
    └── project_save.tmx

Porovnání v OmegaT:

  1. Otevřete projekt
  2. Tools → Check Issues
  3. Zobrazí nekonzistence, fuzzy, nepřeložené

Poedit

Poedit je oblíbený editor PO souborů s vestavěnými diff funkcemi:

  • Zobrazení změn oproti uložené verzi
  • Kontrola konzistence terminologie
  • Statistiky překladu
  • Strojový překlad pro návrhy

Phrase (Memsource)

Cloudová platforma pro enterprise lokalizaci:

  • Verzování překladů
  • Workflow schvalování
  • Diff reporty pro klienty
  • API pro automatizaci

Časté problémy a jejich řešení

Problém 1: Kódování znaků

# Kontrola kódování
file preklad.po
# Výstup: preklad.po: UTF-8 Unicode text

# Konverze do UTF-8
iconv -f ISO-8859-2 -t UTF-8 stary.po > novy.po

Problém 2: Nekonzistentní zalomení řádků

Různé operační systémy používají různé znaky pro nový řádek:

# Normalizace na Unix (LF)
dos2unix preklad.po

# Před porovnáním
dos2unix stary.po novy.po
diff stary.po novy.po

Problém 3: Merge konflikty v PO souborech

<<<<<<< HEAD
msgid "Save"
msgstr "Uložit"
=======
msgid "Save"
msgstr "Ukládat"
>>>>>>> feature/new-translations

Řešení:

  1. Použijte msgcat pro automatické sloučení:
    msgcat --use-first verze1.po verze2.po > merged.po
    
  2. Nebo řešte ručně pomocí diff nástroje

Problém 4: Změna pořadí řetězců

Někdy se řetězce přeorganizují bez změny obsahu. Pro porovnání seřaďte:

# Seřazení PO souboru
msgsort stary.po -o stary_sorted.po
msgsort novy.po -o novy_sorted.po
diff stary_sorted.po novy_sorted.po

Automatizace v CI/CD

GitHub Actions pro kontrolu překladů

name: Translation Check

on: [push, pull_request]

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

      - name: Install gettext
        run: sudo apt-get install gettext

      - name: Check PO files
        run: |
          for po in locale/*/LC_MESSAGES/*.po; do
            msgfmt --check --statistics "$po"
          done

      - name: Check for fuzzy strings
        run: |
          fuzzy_count=$(grep -r "^#, fuzzy" locale/ | wc -l)
          echo "Fuzzy strings: $fuzzy_count"
          if [ $fuzzy_count -gt 10 ]; then
            echo "Warning: Too many fuzzy strings!"
          fi

Pre-commit hook

#!/bin/bash
# .git/hooks/pre-commit

# Kontrola syntaxe PO souborů
for po in $(git diff --cached --name-only | grep '\.po$'); do
    msgfmt --check "$po" 2>&1
    if [ $? -ne 0 ]; then
        echo "Error in $po"
        exit 1
    fi
done

Doporučené workflow pro různé týmy

Malý tým (1-3 překladatelé)

  1. Verzování: Git s PO soubory
  2. Editor: Poedit nebo VS Code s rozšířením
  3. Porovnání: PorovnejText.cz pro rychlé kontroly
  4. Komunikace: Slack/Discord pro koordinaci

Střední tým (4-10 překladatelů)

  1. Platforma: OmegaT nebo Crowdin
  2. Verzování: Git + překladová paměť (TMX)
  3. Workflow: Pull requesty s review
  4. Automatizace: CI/CD kontroly

Enterprise tým (10+ překladatelů)

  1. Platforma: Phrase, Lokalise nebo SDL Trados
  2. Workflow: Víceúrovňové schvalování
  3. Integrace: API napojení na vývoj
  4. Reporting: Automatické diff reporty pro PM

Shrnutí

Efektivní porovnávání lokalizačních souborů je základem kvalitního překladu:

Formát Nástroj pro diff Alternativa
XLIFF XML diff / CAT nástroje PorovnejText.cz/xml-diff
PO/POT msgcmp, diff PorovnejText.cz/
TMX XML diff Speciální CAT nástroje
JSON JSON diff PorovnejText.cz/json-diff

Klíčové tipy:

  • Používejte verzovací systém (Git)
  • Normalizujte formátování před porovnáním
  • Automatizujte kontroly v CI/CD
  • Zálohujte překladovou paměť

Investice do správného workflow pro lokalizaci se vrátí v podobě konzistentních překladů, rychlejší práce a menšího počtu chyb.


Potřebujete rychle porovnat dva překladové soubory? Vyzkoušejte náš nástroj pro porovnání textu pro PO soubory nebo XML diff pro XLIFF – vše funguje přímo v prohlížeči a vaše citlivá data zůstávají na vašem počítači.

Vyzkoušejte PorovnejText.cz zdarma

Nejrychlejší český nástroj pro porovnání textů. Vše probíhá ve vašem prohlížeči, žádná registrace není potřeba.

Porovnat texty nyní →