Fronted komponenta pre prekladateľa neprogramátora [Proof of concept]
- romiix.org
- Člen | 343
Preklad aplikácie má dodať prekladateľ neprogramátor. Najväčší
problém bežného spôsobu prekladov vidím v tom, že prekladateľ nemá 100%
predstavu, kde sa daný reťazec nachádza.
Zároveň, ak programátor pridá nový jazyk do zoznamu jazykov, prekladateľ
by si ho mal vedieť aktivovať a vytvárať preň slovníky bez toho aby
programátor vytváral prázdne slovníky pre všetky komponenty manuálne.
Koncept
Rozšírenie HTML
Ak bude modul aktívny, bude sa vracať HTML kód rozšírený o komentáre identifikujúce preložiteľný reťazec. Takýto kód sa môže generovať iba v HTML kontexte. V iných sa nevypisuje, ale na koniec webu sa vypíše zoznam nezobrazených reťazcov.
<html>
<!-- ... -->
<ul>
<li><!-- Translate: {original: "app.header.home", translate: "Domov"} -->Domov<!-- /EndOfTranslate --></li>
</ul>
<!-- ... -->
</html>
<!-- Translate: {original: "flashMessage.warning", translate: "Pozor!"} --><!-- /EndOfTranslate -->
Iba nahradením metódy translate
to nepôjde, pretože sa
preklady štandardne escapujú. Escapovanie obsahu prekladu má zostať
zachované, ale v komentároch sa môže escapovať iba original a
translate.
Nahradením makra translate
to asi nepôjde z dôvodu nemožnosti
vlastnej šablóny pre konkrétneho používateľa. Otázne je, nakoľko by
prekážalo v čase prekladu rozosielať takýto HTML kód všetkým klientom.
Zatiaľ jediné riešenie, i keď z ďaleka nie ideálne.
Nejaké iné nápady?
Alternatíva
Pridávanie data-translate
k zodpovedajúcim elementom – ak
jediné čo obsahujú je presne jeden preklad. Ale toto sa mi zdá
obmedzujúcejšie – zobrazilo by to asi menej vizuálnych vstupov. Ani neviem
či je to technicky nejak rozumne možné.
<html>
<!-- ... -->
<ul>
<li data-translate="app.header.home">Domov</li>
</ul>
<!-- ... -->
</html>
<!-- Translate: {original: "flashMessage.warning", translate: "Pozor!"} --><!-- /EndOfTranslate -->
Frontend
Na základe vložených komentárov JS identifikuje reťazce ktoré je
možné vizuálne upraviť do podoby <input>
elementov
napozicovaných presne cez reťazce.
Po opustení inputu sa nový preklad odošle do backendu.
Zároveň sa bude zobrazovať vysúvací prekladový panel s informáciami o všetkých prekladoch na stránke ako aj s prekladmi z načítaných slovníkov. Takto bude možné preložiť všetky flashMessages, alt atribúty a pod.
Backend
- Overí oprávnenie prekladateľa
- Nájde slovník pre daný jazyk. V prípade neexistencie ho vytvorí v priečinku kde sa nachádza daný slovník s iným jazykom.
- Upraví súbor slovníka.
Aktivácia modulu
Dostupnosť modulu ako takého bude musieť byť pravdepodobne nastavená cez config.neon. Mimo obdobia prekladu bude rozšírenie vypnuté.
Dostupnosť prekladateľského modulu pre konkrétneho používateľa obstará ACL, Authenticator a pod.
Ak máte nejakú spätnú väzbu, nápad, problémy na ktoré som zabudol, riešenia ktoré mi nenapadli alebo čokoľvek iné, sem s tým!
- ic
- Člen | 430
Taky jsem něco takového řešil a přišel jsem na to, že překladatelé většinou nechtějí při zakládání nového jazyka prázdný slovník, ale překládají to na základě již existujících textů z nějakého ‚výzhozího‘ jazyka, nebo z jazyka který také znají (většinou to bývá angličtina či čeština). Takže když se zakládá nový jazyk většinou je požadovaná prostě KOPIE již přeloženého souboru.
A pak taky to, že kontext se někdy špatně získává… když se má přeložit třeba nějaká flash zprávička, která je fyzicky definovaná v presenteru a zobrazí se jen někdy (v případě že při změně hesla obě hesla nejsou shodná, …). Je obtížné aby takhle překladatel prolézal celý web a všechny možné stavy a přikládal to přes nějaký frontend a javascript co dělá z textů formulářové prvky.
- romiix.org
- Člen | 343
@ic Flash správičky by sa tiež mali prekladať vrámci tohoto
modulu ale prostredníctvom bočného panelu. Ak by boli použité výrazy zo
slovníka articles.grid
, tak by sa v bočnom paneli mali zobraziť
všetky reťazce z daného slovníka – tzn. aj flash správičky. Pri tom by
nebolo potrebné uvádzať prekladateľa do kontextu, pretože by videl s akou
komponentou práve pracuje.