Co si z článku odnést
- Nová jazyková mutace nezačíná měsíci překládání: katalog se přeloží automaticky a dál se jen udržuje.
- Platíte za překlad změn, ne celého katalogu znovu; otisk každého textu pozná, co je nové.
- Glosář drží jednotné názvosloví napříč tisíci produkty a ruční úpravy automat nikdy nepřepíše.
Proč expanze narazí na překlady dřív než na logistiku
Upgates má vícejazyčné rozhraní i popisy produktů pro každý jazyk připravené. Co připravené není, je obsah. E-shop s kávovary a příslušenstvím, o kterém píšu, má produktový feed přes 200 MB a katalog se mění každý týden: nové produkty, upravené popisy, změny u výrobců. Překladatelská agentura zvládne první dávku, ale ne průběžné dohánění stovek změn měsíčně v několika jazycích.
Ruční kopírování textů z překladače do administrace má tři problémy. Nikdo neví, co už je přeložené a co ne. Terminologie se rozjíždí, protože každý překlad vzniká zvlášť. A HTML v popisech se při kopírování rozbíjí.
Zadání proto znělo jednoduše: jeden zdroj pravdy v češtině, automatický překlad všeho ostatního a kontrola tam, kde je potřeba.
Výsledek pro klienta je jednoduchý: nová jazyková mutace se dá spustit, jakmile je hotový glosář a projde kontrola vzorku. Průběžné změny češtiny se do ostatních jazyků propisují samy a lidé se věnují jen tomu, co automat označí ke kontrole.
Co umí Upgates
Jazykové mutace, popisy produktů pro každý jazyk, import a export produktů v XML a API pro zápis.
Co zůstává na vás
Samotné překlady, jejich aktualizace po každé změně češtiny a jednotné názvosloví napříč katalogem.
Co řeší aplikace
Detekci změn, frontu překladů, glosáře, kontrolu a návrat přeložených textů do e-shopu bez ručního kopírování.
| Situace | Bez aplikace | S aplikací |
|---|---|---|
| Spuštění nové mutace | Týdny až měsíce překládání a kopírování do administrace | Automatický překlad katalogu, lidská kontrola vzorku |
| Změna v českém popisu | Někdo si jí musí všimnout a přeložit ji do všech jazyků | Otisk změnu pozná, do fronty jde jen změněný text |
| Jednotné názvosloví | Závisí na paměti překladatele | Glosář pro každý jazyk vynutí stejný termín všude |
| HTML v popisech | Při kopírování se rozbíjí | Zachová se, balast z editoru se před exportem vyčistí |
| Náklady na překlad | Cena za slovo u každé dávky | DeepL účtuje jen změněné znaky, spotřeba je vidět v administraci |
| Přehled o stavu | Tabulky a e-maily | Stav každého překladu a log každé úlohy na jednom místě |
Jak aplikace funguje: od českého feedu po cizojazyčný e-shop
Aplikace je webová administrace v PHP nad MySQL a sada příkazů, které spouští plánovač. Nepřekládá v administraci Upgates, ale vedle ní. Stáhne exportní XML feed, uloží produkty do vlastní databáze, přeloží je a výsledek vrátí buď jako importní XML pro Upgates, nebo přímo přes Upgates API.
Každý krok je samostatný příkaz s vlastním záznamem v logu. Když něco selže, vidíte, který krok, kdy a s jakou chybou. Plánovač je také jen tabulka: název úlohy, typ, cron výraz, jazyk a limit. Klient si tak sám nastaví, že se slovenština překládá v noci po pěti stech produktech a maďarština jednou týdně.
| Krok | Co se stane | Kdy |
|---|---|---|
| Import českého feedu | XML se čte po produktech; uloží se název, krátký a dlouhý popis a výrobce. | Denně, plánovačem |
| Detekce změn | Každý text má otisk SHA-256; změna otisku zařadí text do fronty. | Při každém importu |
| Import hotových překladů | Existující cizojazyčné feedy se načtou, aby se už přeložené nepřekládalo znovu. | Při startu a podle potřeby |
| Překlad | Fronta se posílá po dávkách do DeepL s glosářem pro daný jazyk. | Několikrát denně, s limitem |
| Kontrola | Filtry podle stavu, ruční úprava, hledání a nahrazení v celém jazyce. | Průběžně |
| Export nebo odeslání | Vyčištěný XML feed pro import do Upgates, nebo zápis přes API jen u změněných produktů. | Denně |
Automatické překlady: fronta, dávky a jen to, co se změnilo
Základ je detekce změn. Při importu se z názvu, krátkého a dlouhého popisu spočítá otisk. Pokud se změní jen dlouhý popis, do fronty jde jen dlouhý popis. Název a krátký popis zůstanou z minulého překladu.
U katalogu s desítkami tisíc položek to rozhoduje o tom, zda měsíční limit DeepL stačí. Právě proto je detekce změn první věc, kterou bych u podobné aplikace řešil.
Překlad běží po dávkách přes DeepL API se zapnutým zpracováním HTML. DeepL vyjme text ze značek, přeloží ho a vrátí do stejné struktury, takže odrážky, tučné písmo a tabulky v popisech zůstanou. Každý překlad má stav: čeká, hotovo, ručně upraveno, chyba. Chybný překlad se zkusí znovu jen omezený počet pokusů, potom zůstane označený k ruční kontrole.
Aplikace zároveň hlídá spotřebu znaků DeepL od začátku měsíce. Limit je vidět v administraci dřív, než překlad zastaví chyba z API. Stejný princip platí pro zbytek aplikace: raději ukázat stav, než tiše selhat.
Glosáře: aby se konvička nepřekládala pokaždé jinak
Strojový překlad je konzistentní jen náhodou. Stejný český výraz se v jednom popisu přeloží jedním slovem a v dalším jiným, a zákazník v cizí zemi pak hledá dvě různé věci. DeepL na to má glosáře: seznam dvojic zdrojový výraz a požadovaný překlad, který se při překladu vynutí.
V aplikaci má každý projekt glosář pro každý jazyk zvlášť. Termíny se zadávají ručně nebo hromadným vložením z tabulky, dva sloupce oddělené tabulátorem. Tlačítko synchronizace nahraje glosář do DeepL, uloží si jeho identifikátor a od té chvíle ho každý překlad do daného jazyka používá. Po změně glosáře se v DeepL vytvoří nový a starý se smaže, aby nezůstaly dvě verze.
Jedna zkušenost z provozu: DeepL při kombinaci glosáře a zpracování HTML občas vrátí chybu serveru. Aplikace v takovém případě dávku zopakuje bez glosáře a zapíše to do logu, aby překlad neuvízl. Je to kompromis, o kterém je lepší vědět, než se divit, proč se u pár produktů termín nepropsal.
- Názvy kategorií a typů zboží, které mají být v cizím e-shopu jednotné (konvička, odklepávací box, kávovar).
- Značky, názvy řad a barevné varianty z názvů produktů, které se nemají překládat vůbec; zapisují se jako stejný výraz na obou stranách (black, green, splash).
- Materiály a odborné výrazy, kde má cílový trh zavedený jiný termín než doslovný překlad (konvička na šlehání mléka).
- Jednotky a zkratky, které překladač jinak přepisuje, například ks nebo bal.
- Slova, u kterých se první dávka překladů ukázala jako nejednotná; glosář je pak potřeba znovu synchronizovat.
konvička kanvička
konvička na šlehání mléka kanvička na napenenie mlieka
odklepávací box odklepávací box
distributor distribútor
black black
green green
Zdroj: DeepL: glosáře v API
Ruční kontrola: stavy, hledání a hromadné opravy
Automat nesmí přepsat práci člověka. Překlad, který někdo upraví v administraci, dostane stav „ručně upraveno“ a další import ani překlad ho nezmění, dokud se nezmění český zdroj. Stejně se chová import hotových překladů z feedu: nepřepíše dokončené ani ruční překlady a odmítne text, který je shodný s českým originálem.
Pro kontrolu slouží filtry podle jazyka, stavu a ručních úprav a vyhledávání v přeložených textech. Hledání a nahrazení funguje nad celým jazykem najednou, s náhledem před provedením. Když se ukáže, že DeepL přeložil název kategorie špatně u stovek produktů, oprava je jedna akce a zároveň nový řádek do glosáře.
Doporučuji kontrolovat vzorek, ne všechno. U prvního jazyka náhodný výběr produktů z každé kategorie, podle nálezů doplnit glosář a další jazyky spouštět už s ním. Kontrola se pak zúží na nejprodávanější položky a texty, které zákazník čte jako první.
Zpět do Upgates: vyčištěný XML feed, nebo rovnou API
Výstupem je XML ve formátu, který Upgates importuje: každý produkt s kódem a popisem pro cílový jazyk. Před exportem aplikace popisy vyčistí. Odstraní styly, skripty, vložené SVG a rámy, odkazy a tlačítka rozbalí na prostý text a zbytečné atributy zahodí. Popisy z editoru v původním e-shopu totiž nesou balast, který v cizojazyčné mutaci nechcete.
Několik voleb vzniklo až z provozu. Export umí vytvořit krátký popis z první věty dlouhého popisu tam, kde krátký chybí. Umí filtrovat produkty podle výrobce a zapsat výstup pod jiným jazykovým kódem, když má cílová mutace v Upgates vlastní označení. Druhou cestou je přímý zápis přes Upgates API: aplikace posílá jen překlady, které se od posledního odeslání změnily.
Zdroj: Upgates: dokumentace API
Jak aplikace vznikala: vibecoding po fázích
První verze vznikla během několika dní v lednu 2026: import feedu, fronta, překlad přes DeepL, glosáře a export XML. Od té doby přibylo několik fází podle toho, co provoz ukázal. Přišlo napojení na Upgates API, import výrobců a filtrování exportu, automatický krátký popis a generování popisů pro produkty, které žádný nemají. Dnes má aplikace zhruba devět tisíc řádků kódu ve dvaceti souborech.
AI asistent psal většinu kódu. Moje práce byla jinde: datový model se stavy překladů, pravidla, co se smí přepsat, seznam značek, které se mají z popisů odstranit, a hlavně testy nad skutečným feedem. Právě na reálných datech se ukázaly chyby, které v ukázkovém souboru nevidíte: velká písmena v HTML značkách, popisy s vloženým SVG, produkty bez českého názvu.
Vibecoding neznamená, že stačí zadat prompt. Platí, že dobře vymezená aplikace pro jednu firmu vznikne za zlomek času a rozpočtu, pokud někdo rozumí datům a umí říct, co je správný výsledek. Rozhodnutí o tom, co má být automatické a co ruční, nedělal ani DeepL, ani AI asistent. Pro klienta to znamenalo aplikaci na míru za zlomek ceny a času klasického vývoje, s možností ji dál rozvíjet podle provozu.
| Kdy | Co přibylo | Proč |
|---|---|---|
| Leden 2026 | Import feedu, fronta, překlad DeepL, glosáře, export XML, generování popisů z technických dat | Základní průchod a produkty bez popisu |
| Květen 2026 | Přímý zápis přes Upgates API | Odpadl ruční import feedu v administraci |
| Červenec 2026 | Import výrobců, filtr exportu podle výrobce, vlastní jazykový kód výstupu | Různé mutace potřebovaly různé výstupy |
| Červenec 2026 | Automatický krátký popis z první věty dlouhého | Část katalogu krátký popis neměla |
Pro koho to má smysl a jak vypadá nasazení pro váš e-shop
Aplikace dává smysl e-shopu na Upgates s tisíci a více produkty, který plánuje slovenskou, maďarskou, polskou, rumunskou nebo jinou mutaci a nechce překlady dělat ručně ani je pokaždé znovu objednávat. Je stavěná pro více projektů, takže nasazení pro další e-shop znamená nastavení a přizpůsobení, ne vývoj od nuly.
Nasazení začíná vaším feedem: projdu strukturu produktů, kvalitu češtiny a HTML v popisech a řeknu, co je potřeba uklidit dřív, než se začne překládat. Pak společně sestavíme glosář z kategorií, značek a materiálů, spustíme překlad prvního jazyka s limitem, zkontrolujeme vzorek a teprve potom nastavíme plánovač a zápis do Upgates. Zaškolím člověka, který bude kontrolu a glosáře spravovat.
Co získáte, je vlastní aplikace na vašem serveru, ne předplatné. Provozní náklady tvoří DeepL podle spotřeby znaků a běžný PHP hosting. Rozsah nasazení a úpravy pro vaše potřeby se odvíjí od stavu feedu a počtu jazyků, proto cenu stanovuji až po prohlídce dat.
- Analýza feedu a doporučení, co v češtině opravit před překladem.
- Nasazení aplikace, napojení na váš feed a Upgates API.
- Společná tvorba glosářů pro každý jazyk a jejich synchronizace do DeepL.
- Překlad prvního jazyka, kontrola vzorku a nastavení plánovače.
- Zaškolení vašeho člověka a předání dokumentace.
- Volitelně další úpravy podle provozu, stejně jako u tohoto klienta.
Co si z toho odnést, pokud expanzi plánujete
Nezáleží na tom, jestli si podobnou aplikaci necháte postavit, nebo překlady řešíte jinak. Pořadí kroků je stejné a většinu chyb dělají firmy ještě před prvním přeloženým slovem.
- Uklidit češtinu dřív, než ji začnete překládat: chybějící názvy a rozbité HTML se do všech jazyků jen namnoží.
- Sestavit glosář z názvů kategorií, značek a materiálů před prvním překladem.
- Určit, co je zdroj pravdy a co se nikdy automaticky nepřepíše.
- Překládat po dávkách s limitem a sledovat spotřebu znaků.
- Zkontrolovat vzorek z každé kategorie a nálezy vracet do glosáře.
- Testovat import do Upgates na kopii e-shopu, ne v ostrém provozu.
- Zapisovat, kdy se co přeložilo a odeslalo; bez toho nejde hledat chybu.
Časté otázky
Nahradí DeepL s glosářem překladatele?
U produktových popisů z větší části ano, u textů o značce, kategoriích a v marketingu ne. Rozumné nastavení je strojový překlad pro katalog, ruční kontrola vzorku a člověk pro texty, které zákazník čte jako první.
Můžu tuto aplikaci použít pro svůj e-shop na Upgates?
Ano. Aplikace podporuje více projektů a každý má vlastní feed, jazyky, glosáře a přístup k Upgates API. Nasazení pro nový e-shop znamená nastavit projekt, projít feed a sestavit glosář; vývoj od nuly není potřeba.
Jak rychle lze spustit první jazykovou mutaci?
Záleží na stavu feedu a velikosti katalogu. Samotný překlad běží po dávkách a limituje ho spíš kontrola vzorku a tvorba glosáře než technika. Přesnější odhad dám po prohlídce vašeho feedu.
Funguje to jen s Upgates?
Aplikace je stavěná na formát XML feedů a API Upgates. Princip, tedy feed, otisky změn, fronta, glosář a export, je přenositelný na jinou platformu s exportem a importem produktů, ale napojení by se muselo napsat znovu.
Kolik stojí provoz?
Hlavní položkou je DeepL API, které účtuje podle počtu přeložených znaků. Proto se překládají jen změny a spotřeba se sleduje po měsících. Hosting je běžný PHP server s databází.
Co s produkty, které nemají žádný popis?
Aplikace umí z názvu a technických dat vygenerovat český popis podle připravené šablony promptu. Ten se pak překládá stejně jako ostatní. Vygenerovaný text ale projde kontrolou dřív, než jde do e-shopu.
Je vibecoding vhodný pro aplikaci v ostrém provozu?
Ano, pokud má aplikace jasně vymezený rozsah, někdo rozumí datům a výsledek se testuje na skutečném feedu. Tato aplikace překládá katalog v provozu od ledna 2026 a všechny pozdější fáze vznikly stejným způsobem. Bez testů nad reálnými daty by ale první verze v provozu neobstála.