Aplikace pro firmy

Vibecoding v praxi: překladač, který e-shopu na Upgates otevírá další země

Expanze e-shopu do další země se často zasekne na obsahu. Platforma Upgates umí víc jazyků, ale desítky tisíc názvů a popisů produktů někdo musí přeložit a pak udržovat v souladu s češtinou. Pro klienta na Upgates jsem vibecodingem, tedy AI asistovaným vývojem, postavil aplikaci, která tuhle práci přebírá. Importuje český feed, překládá jen to, co se změnilo, drží názvosloví v glosářích a překlady vrací zpět do e-shopu. Stejný základ dokážu nasadit i pro váš e-shop.

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í.

Co se pro e-shop změní
SituaceBez aplikaceS aplikací
Spuštění nové mutaceTýdny až měsíce překládání a kopírování do administraceAutomatický překlad katalogu, lidská kontrola vzorku
Změna v českém popisuNě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řekladateleGlosář pro každý jazyk vynutí stejný termín všude
HTML v popisechPři kopírování se rozbíjíZachová se, balast z editoru se před exportem vyčistí
Náklady na překladCena za slovo u každé dávkyDeepL účtuje jen změněné znaky, spotřeba je vidět v administraci
Přehled o stavuTabulky a e-mailyStav 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ě.

Dashboard aplikace: 10 753 hotových překladů, 13 čeká, 2 chyby, spotřeba DeepL a pět aktivních úloh plánovače (překlady, export přes API, import, export HU a SK)
Dashboard aplikace: stav překladů, spotřeba DeepL od začátku měsíce a úlohy plánovače s výsledkem posledního běhu.
Průchod produktu aplikací
KrokCo se staneKdy
Import českého feeduXML se čte po produktech; uloží se název, krátký a dlouhý popis a výrobce.Denně, plánovačem
Detekce změnKaž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řekladFronta se posílá po dávkách do DeepL s glosářem pro daný jazyk.Několikrát denně, s limitem
KontrolaFiltry 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ě

Zdroj: Upgates: import a export produktů

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.

Zdroj: DeepL: překlad HTML se zachováním značek

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.
Správa glosářů: projekt a slovenština, deset položek glosáře s českým termínem a překladem, například konvička na šlehání mléka a kanvička na napenenie mlieka, stav synchronizováno s DeepL
Glosář pro slovenštinu po synchronizaci do DeepL. Barvy z názvů produktů zůstávají nepřeložené, odborné výrazy dostanou zavedený slovenský termín.
Ukázka glosáře pro slovenštinu: zdrojový výraz, tabulátor, překlad
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í.

Detail překladů produktu Kávovar Sage BES875BTR: maďarština a slovenština ve stavu completed, název, krátký popis a dlouhý popis v editoru se zachovaným formátováním
Překlady jednoho produktu do maďarštiny a slovenštiny. Dlouhý popis se upravuje v editoru, formátování z češtiny zůstalo zachované.

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.

Fáze vývoje aplikace
KdyCo přibyloProč
Leden 2026Import feedu, fronta, překlad DeepL, glosáře, export XML, generování popisů z technických datZákladní průchod a produkty bez popisu
Květen 2026Přímý zápis přes Upgates APIOdpadl ruční import feedu v administraci
Červenec 2026Import výrobců, filtr exportu podle výrobce, vlastní jazykový kód výstupuRůzné mutace potřebovaly různé výstupy
Červenec 2026Automatický 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.

Zdroje a další čtení

Chcete spustit další jazykovou mutaci bez měsíců ručního překládání?

Pošlete mi adresu e-shopu a jazyky, které plánujete. Projdu váš feed a do pár dnů řeknu, co je potřeba připravit a jak by nasazení vypadalo.

Probrat váš web