Překlady akcí do dalších jazyků
Překlady Flexideo akcí do dalších jazyků
Technická implementační dokumentace k vícejazyčným akcím ve Flexideo, jak docílit překladu akce do dalších jazyků, než-li je ten pro danou aplikaci výchozí.
1. Předpoklady pro vícejazyčnou aplikaci
1.1 Aktivace vícejazyčnosti instance
-
Aby bylo možné překlápět akce (a obecně rozhraní aplikace) do více jazyků, musí být samotná instance Flexidea nastavená jako vícejazyčná.
-
Toto se nastavuje v replikátoru, hned v úplně první volbě (A1).
-
Do konfigurace se přidávají další jazyky pomocí jazykových kódů (např. cs, en, sk atd.).
-
Po první replikaci s touto novou konfigurací se instance „přepne“ do režimu multilang:
-
Každá část aplikace (přehled, dokument, akce…) se pak dá překládat do kteréhokoli z definovaných jazyků.
-
Rozhraní aplikace se poté uživateli zobrazuje podle jazyku, který má na sobě nastavený
Poznámka: minimálně dvě aplikace na tento režim už čekají, takže jde o živou věc a je očekáváno, že se překlepy a detaily začnou ladit.
2. Co přesně se překládá u akce
V akci rozlišujeme dvě oblasti, které řešíme z pohledu překladu:
-
Hlavička akce (header)
-
Název akce (štítek)
-
Popis akce
-
Vstupní parametry akce (labely těch parametrů)
-
Tělo akce (obsah / logika / uzly v akci)
-
Texty pro uživatele (např. texty e-mailů)
-
Popisky větví, hlášky, texty chyb apod.
-
Jakékoliv další textové hodnoty, které akce generuje a posílá dál (např. e-mail klientovi)
Tyto dvě části (hlavička vs tělo) se překládají jinak. To je klíčové. Viz kapitola 7.
3. Překlad hlavičky akce
3.1 Přepnutí akce do režimu překladu
-
V editoru akce je nahoře přepínač jazyka (vlaječka).
-
Když přepnu na jiný jazyk (např. z cs na en), začnou se zvýrazňovat prvky, které očekávají překlad.
3.2 Jak to vypadá v UI při překladu
-
Všechny prvky, které chybí přeložit pro daný jazyk, se označí červeně.
-
Typicky:
-
Název akce
-
Popis akce
-
Popisy vstupních parametrů akce (labely polí, která COMEX uživateli ukazuje při spuštění akce)
3.3 Proč se překládá právě tohle
-
Když uživatel spustí akci z rozhraní (COMEX), zobrazí se mu dialog/modal:
-
Nadpis = název akce
-
Popis = text akce / instrukce
-
Vstupy = jednotlivé parametry, které má předat
-
Tyto informace musí být pro uživatele v jeho jazyce.
3.4 Validace překladu hlavičky
-
Dokud je prvek červený, překlad chybí.
-
Pokud není vyplněný popis ani v primárním jazyce (např. ani v češtině), editor by si překlad neměl vynucovat (poznámka zazněla: možná by to nemělo vyžadovat, pokud původní popis není vůbec vyplněný, takže to má Péťa K za úkol).
-
Po doplnění překladu se položka označí jako vyřešená.
4. Překlad těla akce
4.1 Co je „tělo akce“
-
Větve akce, uzly, logika, proměnné, sestavení obsahu e-mailu, apod.
-
Příklad: akce „Odeslat e-mail“ má:
-
Příjemce
-
Předmět
-
Tělo e-mailu („Dobrý den, toto je systém…“)
-
Další doplňující uzly
4.2 Princip: jazyková varianta obsahu
-
V těle akce se překládají konkrétní textové uzly (např. text e-mailu).
-
Pokud přepnu akci do jazyka en, všechny texty, které mají být vícejazyčné, zčervenají a čekají svou 'en' variantu.
4.3 Rozdíl proti hlavičce akce
-
Hlavička akce a parametry jsou čistě “UI pro člověka, který teď akci spouští”.
-
Tělo akce může být určeno jinému příjemci než aktuálně přihlášenému uživateli (např. klientovi v jiném jazyce).
-
To znamená, že výběr jazyka pro tělo akce nemusí vycházet z jazyka přihlášeného uživatele. Tohle je zásadní.
5. Řízení jazyka v těle akce pomocí proměnné (vlaječky)
Tady přichází ten hlavní mechanismus.
5.1 Logika „vlaječky“
-
V rámci akce si vytvoříme proměnnou (uzel s hodnotou), např. proLang.
-
Název proměnné je libovolný, důležitá je její funkce.
-
Na této proměnné zapneme speciální přepínač „určuje jazyk v překladu“.
-
V UI se to projeví ikonou vlaječky.
-
Po zapnutí tím říkáme: „Tahle proměnná definuje jazyk pro překlady všech potomků dané větve.“
5.2 Jak to funguje hierarchicky
-
Cokoliv, co je pod touto proměnnou (její přímí potomci v rámci akce), je potenciálně vícejazyčné.
-
Celý podstrom pod tímto bodem se tedy začne brát jako vícejazyčný kontext.
-
Tj. pokud je někde text „Dobrý den…“, Flexideo teď ví, že z toho musí být varianta cs, en, sk atd.
5.3 Co musí mít proměnná s vlaječkou za hodnotu
-
Do té proměnné se musí dostat jazykový kód, např. cs, en, sk…
-
Tenhle kód určuje, která jazyková mutace se má zrovna použít při běhu akce.
5.4 Odkud ten jazykový kód vezmeme
Varianty:
-
Jazyk aktuálního uživatele
-
Uživatel má ve své definici kolonku „jazyk“.
-
Ta je jednou z tzv. mapovaných kolonek (stejný typ jako login, heslo atd.).
-
Pokud tam má cs, použijeme cs.
-
Jazyk klienta / adresáta / smlouvy / kontextového dokumentu
-
Pokud posíláme upomínku klientovi, může se jazyk vzít ze smlouvy › z klienta › z pole „jazyk preferované komunikace“.
-
Tím docílíme toho, že třeba český obchodník posílá anglickému klientovi automaticky anglický text.
-
Ručně / logikou akce
-
Implementátor může jazyk určit i explicitně, třeba „v pondělí vždy posílám česky a v úterý slovensky“, prostě jak chce.
-
Systém nevnucuje, že jazyk musí být nutně „jazyk přihlášeného uživatele“.
5.5 Shrnutí chování při běhu akce
-
Akce se spustí.
-
Načte se hodnota proměnné označené vlaječkou (např. proLang = "en").
-
Pro všechny uzly pod touto proměnnou se použije varianta textu odpovídající "en".
-
Pokud mám přeložené cs, en, sk, ale aktuální hodnota proLang je "en", tak se vybere anglická varianta.
6. Zapínání a vypínání překladu na jednotlivých uzlech (zeměkoule)
V editoru akce vidím u uzlů ikonu „zeměkoule“ (glóbus). Ta určuje, jestli se
-
daný uzel překládá,
-
dědí režim překladu
-
nebo je překlad zakázaný.
6.1 Stav „modrá zeměkoule“
-
Význam: „překládáme“.
-
Uzel musí mít vyplněny jazykové varianty.
-
Pokud varianta chybí, editor na to „nadává“ (validace).
-
Modrá zeměkoule tedy vynucuje překlad.
6.2 Stav „šedivá zeměkoule“
-
Význam: „dělám to, co dělá rodič“.
-
Tzn. uzel dědí nastavení překladu z nejbližšího předka, který má modrou (překládáme) nebo přeškrtnutou (nepřekládáme).
-
Šedá je výchozí stav nově vytvořených uzlů.
-
V případě, že se nenajde předek s modrou nebo přeškrtnutou zeměkoulí, výchozí stav je "překládáme"
6.3 Stav „přeškrtnutá zeměkoule“ / vypnutý překlad
-
Význam: „nepřekládáme tento uzel ani jeho potomky“.
-
Prakticky tím říkám: obsah tady zůstává v jednom jazyce, varianta se nevytváří.
-
Všichni potomci to automaticky zdědí jako „nepřekládáme“, pokud si to někde níž znovu nevynutím.
6.4 Dědičnost
-
Pokud na nějakém uzlu nastavím „nepřekládáme“, všichni potomci se šedou zeměkoulí tuto hodnotu dědí.
-
Pokud pak u konkrétního potomka znovu ručně zapnu „modrá zeměkoule“, ten jeden potomek (a jeho podstrom) se zase stane „překládáme“, i když rodič překládání zakázal.
6.5 Typické použití
-
Chci přeložit jenom text e-mailu, ale nechci řešit překlady technických částí hlavičky dokumentu ›
-
Na kořen větve s technickými informacemi dám „nepřekládáme“.
-
Na větev s e-mailem dám „překládáme“ (modrá).
-
Nebo naopak: chci defaultně překládat všechno (modrá), ale konkrétní část dat (např. interní logy, ID, checksumy) nechci překládat › dám na ten uzel „nepřekládáme“.
7. Rozdíl mezi hlavičkou akce a tělem akce (zásadní)
Tohle je důležité pro všechny implementátory:
7.1 Hlavička akce
-
Obsahuje:
-
Název akce
-
Popis akce
-
Vstupní parametry (labely)
-
Použití:
-
Zobrazuje se v COMEXu v modalu při spouštění akce.
-
Je vždy v jazyce přihlášeného uživatele, který akci právě spouští.
-
Jazyk:
-
Jazyk se bere čistě z uživatele, který na to kouká.
-
Uživatel „česky mluvící“ = uvidí česky.
-
Uživatel „anglicky mluvící“ = uvidí anglicky.
-
Není potřeba specifikovat logiku přepínání jazyka – COMEX to řeší za nás jako součást UI.
7.2 Tělo akce
-
Obsahuje:
-
Samotné kroky/uzly akce
-
Vygenerované texty (e-mail klientovi, chybové hlášení, potvrzení apod.)
-
Použití:
-
Běží buď „z COMEXu“ (uživatelsky spuštěné), nebo může běžet úplně na pozadí (server-side).
-
Texty z těla akce typicky konzumuje někdo jiný než spouštějící uživatel – např. klient (e-mail), partner, externí systém.
-
Jazyk:
-
Není pevně dán přihlášeným uživatelem.
-
Určuje se podle logiky, kterou nastavíme pomocí proměnné s vlaječkou (viz kapitola 5).
-
Jazyk může jít z klienta, ze smlouvy, z příjemce mailu atd.
-
Výsledek:
-
Český obchodník může posílat e-mail anglicky mluvícímu klientovi › hlavička akce mu běží česky (on je Čech), ale e-mail odejde v angličtině (jazyk z klienta).
Tohle chování je úmyslné a je to správně.
8. Praktické scénáře
8.1 Posílám e-mail klientovi
-
Udělám akci „Odeslat e-mail“.
-
V akci mám proměnnou např. 'proLang' s vlaječkou.
-
Do proLang vložím jazyk klienta (např. z jeho karty).
-
V e-mailovém těle mám přepnuté uzly na „překládáme“ (modrá zeměkoule).
-
Pro jazyk en doplním anglickou verzi textu.
-
Akce se spustí -> klient dostane anglický obsah.
8.2 Upomínka ze smlouvy
-
Tvořím automatickou upomínku ve více jazycích.
-
Jazyk vezmu ne z uživatele, který akci spustil, ale přímo ze smlouvy/klienta (třeba klient má jazyk sk).
-
Do proměnné s vlaječkou uložím 'sk'.
-
Výstup e-mailu (tělo akce) vyjede slovensky.
8.3 Více jazykových logik v jedné akci
-
Akce může potřebovat dvě různé jazykové logiky najednou.
-
Například:
-
Část je „pro uživatele“ (interní instrukce, log), ta jede podle jazyka uživatele.
-
Část je „pro klienta“ (mailová textace), ta jede podle jazyka klienta.
-
Lze to vyřešit tak, že:
-
V kořenové větvi akce nastavím vlaječku na jazyk uživatele.
-
V jedné podvětvi (např. větev „komunikace klientovi“) nastavím znovu vlastní vlaječku, která bere jazyk z klienta.
-
Výsledek: různé části akce mohou překládat texty podle různých jazykových kontextů.
Pozor: pokud se někde snažím vložit víc vlaječek „nad sebe“ a není to dovoleno, editor mě na to má upozornit. Pokud by narazilo na limit/fail, eskalace vývojářům.
9. Co dělat, když nestačí standardní překladový mechanismus
Někdy nestačí jen „stejný text v jiném jazyce“. Potřebuju jiný slovosled, jinou skladbu vět, jiný pořadí proměnných. Typický příklad: tělo e-mailu se skládá z bloků:
-
text
-
číslo faktury
-
další text
-
jméno adresáta
-
datum
… a v angličtině to chci v jiném pořadí než v češtině.
Řešení je:
9.1 Vypnout překlad pro ten konkrétní obsahový uzel
-
Na daném uzlu dám „nepřekládáme“ (přeškrtnutá zeměkoule).
-
Tím říkám: tady nechci generický překlad po částech.
9.2 Sestavit jazykové varianty ručně
-
Udělám si uzel typu „varianta“, kde si podmínkami zajistím různé výstupy pro různé jazyky.
-
Prakticky: použiju logiku větvení / conditions, skoro jako kdyby překladový mechanismus vůbec neexistoval.
-
Tj. ručně si poskládám tělo e-mailu pro cs a ručně zvlášť pro en, i s jiným pořadím polí.
Tohle je doporučený postup pro složitější jazykové konstrukce.
10. Validace a hranice systému
-
Systém aktuálně validuje, jestli jsou vyplněné povinné překlady (červené prvky), ale ještě tam jsou některé nedodělky validací – tj. občas to „ještě úplně nefunguje“, ale to se bude ladit.
-
Pokud přepnu uzel do režimu „překládáme“ (modrá), ale nic tam pro daný jazyk nevyplním, systém má být na mě „naštvaný“ a hlásit, že překlad chybí.
-
Pokud nastavím „nepřekládáme“, tak se ten uzel tváří jako vyřešený a překlad se nevyžaduje.
11. Napojení na COMEX a XDS
11.1 Přehledy a akce v COMEXu
-
To, že akce, přehledy a dokumenty lze přeložit, je poslední dílek skládačky pro plně vícejazyčnou aplikaci – podle toho, kdo se dívá.
-
Přehledy, formuláře a akce se už dnes dají překlápět (hlavičky a obsahy).
11.2 Hlavičky dokumentů v XDS
-
Pokud mám dokument definovaný v XDS aplikaci, která má víc než jeden jazyk:
-
Do hlavičky dokumentu se dá přidat přeložený název.
-
Příklad: dokument faktura má v hlavičce cs="Faktura", en="Invoice".
-
Jakmile v hlavičce dokumentu uvedu přeloženou variantu, replikátor začne kontrolovat, jestli jsou přeložené i ostatní labely a popisy v dokumentu pro tento jazyk:
-
Labely polí
-
Popisy
-
Obsahy náhledů (form, preview, tisk)
-
Jinými slovy: pokud řeknu „tenhle dokument má i angličtinu“, tak tím zároveň říkám „musím mít angličtinu všude uvnitř toho dokumentu“.
11.3 Co všechno se překládá v rámci XDS/COMEX vrstvy
-
Formuláře (form)
-
Tiskové náhledy
-
Tabulky / přehledy
-
Akce
… a právě teď jsme řešili akce do této hloubky.
12. Postup implementátora krok za krokem (doporučený workflow)
-
V replikátoru (A1) přidej další jazyk(y) a proveď replikaci.
-
Ověř, že uživatelé a/nebo klienti mají vyplněný jazyk (pole „jazyk“ u uživatele/klienta).
-
V akci nahoře přepni vlaječku na nový jazyk a přelož:
-
Název akce
-
Popis akce
-
Labely vstupních parametrů
-
V těle akce:
-
Identifikuj části, které budou generovat text směrem ven (např. e-mail).
-
U kořene větve, která ty texty řeší, vlož proměnnou s vlaječkou › tahle proměnná musí obsahovat jazykový kód, který chceš v rámci této větve používat.
-
Nastav zeměkoule:
-
Kde potřebuji vícejazyčný obsah › modrá (překládáme).
-
Kde je to technické a nechci to překládat › přeškrtnout (nepřekládáme).
-
Pro každý jazyk doplň varianty textů (červené prvky musí „zezelenat“/odčervenat).
-
Pokud je potřeba úplně jiný slovosled nebo úplně jiná struktura obsahu:
-
Na takové větvi vypni překlad (přeškrtnout zeměkouli).
-
Udělej si ručně varianty pomocí podmínek podle jazyka.
-
Otestuj akci:
-
Scénář 1: spuštění jako já (můj jazyk)
-
Scénář 2: výstup klientovi s jiným jazykem
-
Scénář 3: případ, kde nechci překládat určitou část (má zůstat vždy stejná)