Mathematics, philosophy, code, travel and everything in between. More about me…

I write about

O práci podruhé

Nabyl-li snad někdo po mých posledních zápiscích dojmu, že jsem tady na dovolené, hodlám jej vyvést z omylu. Aneb reflexe nejzajímavějších pracovních zkušeností za uplynulých 11 týdnů strávených před monitory. Varování: obsahuje stopové množství IT hantýrky a kritiky (sado-)masově užívaného software.

Začnu svým pracovním prostředím. Po nástupu do firmy jsem dostal k dispozici počítač s Windows (Vista nebo Seven, ani nevím :-)). Dokud jsem plnil obyčejné úkoly jako odpovídání na e-maily a drobné úpravy webů, docela mi to šlo. Jakmile jsem ale začal pořádně něco programovat a vyvíjet, už jsem to nemohl dál vydržet. Možná je to jen tím, že na Windows nejsem zvyklý, ale: je to pro mě systém s otřesnou ergonomií, nulovou přizpůsobitelností, směšnými omezeními a absencí kvalitních nástrojů pro vývoj (nejen) webových aplikací. Po čtyřech dnech jsem měl jasno: bez Linuxu to dál nepůjde.

Protože jsem k reinstalaci počítače neměl posvěcení administrátora Davida (t.č. na dovolené), přeformátoval jsem jeden ze svých externích disků a nainstaloval si kompletní distribuci Ubuntu 10.04. na něj. Své kompletní pracovní prostředí si tak mohu neustále nosit s sebou. Veškerou práci si navíc každý večer doma zálohuji na notebook.

pracovní stanice Duše celé mé pracovní stanice se skrývá v malém 320GB disku Western Digital.

Systém pro kolaborativní překlady

Nejzajímavější problematikou, kterou jsem byl pověřen, bylo bezpochyby překládání webů do mnoha jazyků. Shipito má řadu zákazníků, kteří jsou ochotni se podílet na jeho rozvoji, konkrétně pomáhat s překlady do svých rodných jazyků. John přede mne postavil asi takový problém: na jedné straně cca 850 textů (od frází jako „uživatelské jméno“ až po sáhodlouhé obchodní podmínky), na druhé straně stovky zákazníků, kteří by rádi pomohli s překladem do desítek jazyků. Někdo třeba přeloží jeden text, někdo 500. Navíc je nutné, aby překladatelé mezi sebou mohli spolupracovat, vylepšovat navzájem své návrhy atd. A konečně, vše musí probíhat „organicky“ v rámci komunity, bez toho, abychom my administrátoři museli překlady zkoumat, schvalovat nebo kontrolovat. Zkrátka, potřebovali jsme systém pro crowdsourced translation.

Facebook hrdě kráčí na scénu… a brzy s hanbou odchází

Své první řešení jsem založil na slibně vypadající službě Facebook Translations. (S programováním pro Facebook jsem získal zkušenosti již při drobnějším projektu na začátku stáže.) Teorie byla taková, že má aplikace předá nepřeložené texty Facebooku a ten svým uživatelům zpřístupní veškeré funkce nutné pro crowdsourced translation. Má aplikace si pak z Facebooku bude stahovat již hotové, zkontrolované a schválené překlady. Na papíře to bylo dokonalé řešení, ale již raná zkušební implementace ukázala, že praxe tak růžová nebude. Facebook Translations se ukázaly být značně nespolehlivé, ztrácely se texty, občas služba půl dne nefungovala, API bylo mizerné… (Chceš smazat jeden text? Musíš smazat všech 850 a pak znovu nahrát jen těch 849, které jsi chtěl zachovat.)

Hledání statečné náhrady

Rychle jsem tedy začal hledat jinou cestu. Dozvěděl jsem se hodně věcí o překládacích systémech a službách i o překladech obecně, prozkoumal řadu projektů a pročetl řadu manuálů. Chvíli jsem koketoval se službou Google Translator Toolkit, kterou, ač se pro naše potřeby nehodí, považuji za velmi zajímavý objev, který se bude hodit při jiné příležitosti. Od zkoumání služeb (SaaS) jsem brzy přešel ke hledání self-hosted řešení, ideálně takového, které bych mohl přizpůsobit našim specifickým potřebám. Novinka tr8n vypadala dobře, ale Davidovi se na serveru nechtělo rozbíhat Ruby on Rails, takže mi bohužel nebylo dáno utéct od PHP a naučit se další skriptovací jazyk :-)

Drupal zachraňuje princeznu situaci

Nakonec jsem se rozhodl pro CMS/CMF Drupal spolu s několika moduly, které byly přímo dělané pro kolaborativní překlady. Toto řešení pohání například localize.drupal.org a je pěkně popsáno na blogu hlavního vývojáře Gábora Hojtsyho. Vrhl jsem se tedy na studium Drupalu a během tří dnů jsem do něj dopsal asi šest modulů, které ho upravily a doplnily přesně podle našich potřeb – hlasování překladatelů o jednotlivých překladech, automatické schvalování, integrace uživatelských účtů s naší databází zákazníků, zjednodušení rozhraní pro uživatele-neinformatiky, automatická synchronizace překladů s interními aplikacemi… Z hlediska vývojáře na mě Drupal udělal velmi, velmi dobrý dojem. Chvíli jsem sice skřípal zuby nad jeho striktně procedurálním návrhem, ale nakonec jsem si zvykl :-). Vlastně je Drupal skvělým příkladem toho, jak lze udělat čistý návrh software i bez objektově orientovaného programování.

Shipito Translations Shipito Translations

Po spuštění systému se během jediné noci objevilo přes 400 překladů. V současnosti máme v systému 28 jazyků a něco přes 1500 zákazníků, kteří se na překladu podílejí. Některé jazyky jsou tam zatím jen pro okrasu, ale jiné mají kolem sebe komunitu aktivních překladatelů, kteří překlad neustále udržují aktuální a úplný.

Celkově mi tento projekt přinesl opravdu hodně zkušeností a už mi v hlavě klíčí nápady, jak bych toto know-how mohl v budoucnu uplatnit. Možná z toho brzy něco bude… :-)

Překlady podruhé aneb klonování Joomly

Kromě překladu zákaznického rozhraní tu však byla ještě jedna výzva: kompletní překlady celého webu shipito.com. To už jsme však nechtěli nechávat na mase zákazníků, ale jen na vybraných důvěryhodných klientech, potenciálních budoucích partnerech. Web je postaven na CMS Joomla!, který jsem ještě před tímto létem normálně používal, ale tady jsem ho velmi rychle začal nenávidět. Věru, hrůzostrašné historky o kvalitě tohoto software bych mohl vyprávět po několik táborákových večerů. Nicméně, web už na Joomle závisí a nikomu se to nechce měnit. Takže jsem i přes svůj vřelý vztah k Joomle musel vyřešit, jak její obsah překládat do mnoha jazyků. Vyzkoušel jsem rozšíření Joomfish, ale to důvěru nevzbudilo. Joomla samotná funguje a drží pohromadě jen silou vůle, a mně připadalo, že Joomfish už svými hrubými zásahy do systému tuto křehkou rovnováhu dostává na hranici možností.

Když jsem řešení překladů rozebíral s Davidem a prohlásil jsem, že se odmítám starat o sebevražedný tandem Joomla+Joomfish, vymysleli jsme řešení na první pohled ještě šílenější. Místo složitého řešení překladů v rámci jedné instalace Joomly prostě vytvoříme nezávislou instalaci pro každý jazyk zvlášť. Kdo se stará o nějaký CMS, asi si umí představit, co obnáší instalace modulů, úpravy nastavení, update… v jednom jediném CMS. My jich potřebovali přes deset. Kromě obsahu muselo být synchronizované všechno.

Pro redukci takové administrační zátěže jsem tedy vyvinul pár skriptů a plug-inů do Joomly, které ji umožňují administrovat „zvenčí“. Dále jsem si napsal skripty (konečně došlo na Python! :-)), které umí jednotlivé instalace Joomly mezi sebou klonovat takovým způsobem, že se při tom používá jen jedna základní sada souborů. V současnosti tedy máme 20 samostatných instalací Joomla, které ve skutečnosti jedou z jediné fyzické instalace a navíc je lze (v omezené míře, ovšem) administrovat všechny najednou. Zprovoznit něco takového byl docela zajímavý akrobatický kousek.

Zaškolování Shipito Partners

Možná vás to překvapí, ale netrávím všechny své dny za sedmero programovacími jazyky v říši chrabrých programů a sličných databází, pod vládou krále Algoritma :-). Nedávno mi docela dalo zabrat školení uživatelů. Přiletěli k nám totiž na training noví partneři z Japonska, kteří již v těchto dnech doma rozbíhají naši pobočku. Většinu jejich výuky tvořily základní procesní věci, zákaznická podpora a bezpečnostní procedury, ale jedno odpoledne je John dal na starosti mně, ať je naučím pracovat se všemi těmi nástroji na překládání, které jsem vyvinul.

Ayaka i Masao byli sice sympatičtí, velmi chytří a chápaví, ale angličtina pro ně občas byl oříšek. John mě nabádal, ať mluvím jednoduchou angličtinou, ale ono je to těžší, než se zdá :-). Občas nás zachraňovaly jejich elektronické kapesní překladače, kam si prostě naťukali výraz v jednom jazyce a přečetli v tom druhém. Nezřídka se stalo, že mi nějakou větu odkývali a chvíli později se ukázalo, že ji pochopili špatně nebo vůbec. Některé složitější nuance našeho software jsem raději úplně vypustil. Nakonec ale všechno dopadlo dobře a podle přibývajících překladů od Ayaky se zdá, že jsme se i domluvili :-)

September 18, MMX — Programming, Los Angeles.