Fronted komponenta pre prekladateľa neprogramátora [Proof of concept]

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
romiix.org
Člen | 343
+
0
-

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
+
+2
-

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.

akadlec
Člen | 1326
+
0
-

Tu front část bych asi nechal spíše na korekce překladů, tady by mě to dávalo větší smysl.

romiix.org
Člen | 343
+
0
-

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