Forum Delphi.cz

Delphi => Obecné => Téma založeno: neo 07-12-2019, 21:22:59

Název: Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: neo 07-12-2019, 21:22:59
Má někdo tip případně praktickou zkušenost s vhodným nástrojem pro lokalizaci do jiného jazyka (konkrétně angličtina, němčina, maďarština, rumunština, bulharština......). Cena není v zásadě problém, preferuji řešení se zajištěnou podporou a vývojem. Před delším časem tady proběhlo několik příspěvků, ale čas pokročil a možná se objevily nové zkušenosti....
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: Stanislav Hruška 07-12-2019, 21:36:01
Toto si videl https://forum.delphi.cz/index.php/topic,16890.0.html (https://forum.delphi.cz/index.php/topic,16890.0.html) ?
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: vandrovnik 07-12-2019, 22:34:25
Dosud používám ten příšerný Translation Manager, co je k Delphi, a přecházím na Better Translation Manager (odkaz je ve vlákně, co odkazoval Stanislav). Použito na dva projekty, zhruba 700 a 550 .dfm souborů.
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: pf1957 08-12-2019, 10:06:22
Má někdo tip případně praktickou zkušenost s vhodným nástrojem pro lokalizaci do jiného jazyka (konkrétně angličtina, němčina, maďarština, rumunština, bulharština......).
My jsme pouzivali klasicky GNU gettext, ktery nekdo taky portoval do Delphi, pro ktery jsme to mely upravene a museli si napsat nejake tooly, ktere ty texty vytahaly z .dfm, reportu apod. A na vlastni editovani k tomu existuje POEdit. Aplikaci jsem delali primarne anglicky a lokalizovali do cestiny. V kodu se vsechny texty musely zabalit do volani
Kód: Delphi [Vybrat]
  1. _('....')
  2.  

A v Java/C# jsme to delali rucne vytahanim to resource a systematickym pojmenovanim textu, protoze jsme chteli uplnou kontrolu nad prekladem, kterou to automatizovane vytahani+sdileni textu neumoznuje a nemyslim si, ze treba nadpis na tlacitku ma mit vzdy stejny text jako napr. polozka v menu, kde je vic mista aj.





Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: geby 08-12-2019, 19:52:36
To já používám variantu dxgettext. To pravé umí vytahovat texty z dfm a umí to lokalizovat i resourcestring. Takže jsem si řekl, že všechny texty k lokalizaci budu mít buď  na formuláři, nebo jako konstantu v resourcestring. Takze to obalování podtrzitkovou funkci není potřeba.
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: neo 08-12-2019, 23:58:15
Já mám tisíce textů v resorcestring a samozejmě další ve formulářích. Před mnoha lety jsem používal lokalizátor od Zbyška Hlinky - fungoval dost dobře a přepínal jazyky i za chodu. Bohužel už není k dispozici.
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: JaroB 09-12-2019, 09:02:41
Stránky Zbyška Hlinky zmizely stejně jako localizator.com (anebo se přesunuly). A nefunguje zřejmě ani haes.cz :(
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: vandrovnik 09-12-2019, 09:15:18
Ten Better Translation Manager funguje obdobně - texty umí převzít z formulářů a resourcestringů (načte si je z .exe a .drc, myslím), vytvoří soubory .DEU, .HUN apod., přepínání za běhu je taky možné. Absolvoval jsem podobnou cestu - Lokalizátor, ETM, teď to bude BTM.
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: Stanislav Hruška 09-12-2019, 09:26:20
Vyzerá to na vašeho Zbyška Hlinku. Skúste ho osloviť http://www.pivovareni.cz/ (http://www.pivovareni.cz/)
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: paja666 09-12-2019, 10:17:56
Pár let zpátky jsem pro obrovský projekt použil https://www.tsilang.com/ (https://www.tsilang.com/) a šlo to poměrně dobře. Překlady jsem měl v extra souborech, které jsem dynamicky natahoval.
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: neo 09-12-2019, 17:52:26
Better Translation Manager vypadá zajímavě ale když to přestane autora bavit tak bude rychlý konec - podobně jako Localizator od Zbyška Hlinky. Na Tsilang jsem již narazil a jeví se mi trochu lepší - podpora + další vývoj.
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: vandrovnik 09-12-2019, 17:57:55
K Better Translation Manageru se dají stáhnout zdrojáky (ale pro kompilaci je potřeba DevExpress VCL). Říkám si, že i kdyby ten projekt teď hned opustil, bude použitelný dalších třeba 10 let (s nějakou stařičkou verzí Lokalizátoru jsem taky vystačil mnoho let), a především přechod na něj je pro mne teď zdaleka nejsnazší (slovník se dá přetáhnout mj. z ETM).
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: neo 09-12-2019, 20:31:31
DevExpres VCL mám a používám.  Pro upřesnění - jedná se o cca 1700 dfm souborů a 11 000 resourcestringů. Aplikace rozdělená samozřejmě do mnoha bpl knihoven, některé dynamicky načítané. Nedojde během práce s lokalizačními soubory k nějakému zpomalení aplikace ? Rychlost otevírání formulářů a obecně  "svižnost" aplikace je zcela zásadní. Už si nemohu vybavit zda nebyl v případě Hlinkova Localizátoru problém s lokalizací bpl knihoven.
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: vandrovnik 09-12-2019, 20:36:53
Zpomalení při práci s aplikací nepozoruji vůbec žádné - hádám, že je to načítání vlastně nastejno, buď se čte z .exe, nebo se čte z .deu. Rozdíl by mohl být při startu - já u .exe nastavuji příznaky, že se má celý soubor ze sítě stáhnout najednou, takže při použití překladu se uživateli stáhne celé .exe a k tomu se pak ještě jazyk, zatímco bez překladu by to byl jen .exe.

.bpl jsem překládal naposledy Lokalizátorem (fungovalo to), pak jsem .bpl přestal používat, přišlo mi, že je s tím víc starostí než užitku, takže mám místo toho jedno velké .exe a k němu ty jazykové soubory.
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: neo 09-12-2019, 20:44:17
V mém případě by jedno exe bez použití bpl bylo nesmyslně velké. Velká část formulářů je právě v bpl takže lokalizace knihoven bpl je pro mě velice důležitá.
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: vandrovnik 09-12-2019, 20:48:37
Zkoušel jsem v Better Translation Manageru načíst .bpl - funguje, načte.

Jinak k té velikosti - není to nakonec jedno, jestli je jeden veliký .exe, nebo jeden menší .exe a k němu další .bpl, takže celková velikost je stejně spíš větší? Normálně si Win natáhnou do paměti stejně jen tu část, která je potřeba.
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: neo 09-12-2019, 20:54:34
Tak to je dobrá zpráva.
Jinak v runtimu je to asi jedno ale během vývoje se nemusí kompilovat tolik řádků ... jedná se o cca 3 000 000 řádků.
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: neo 18-12-2019, 09:04:07
Zapátral jsem na netu a vychází mi čtyři varianty pro lokalizaci. Zajímají mě vaše názory, pokud se někdo něčímm podobným zabýval.
Vandrovnik doporučuje Better translation. Líbí se mi také - trochu se obávám ztráty další podpory. K dispozici jsou zdrojáky.
GNU gettext - do něj se mi moc nechce jít.
Další dva nástroje jsou komerční - cena není podstatná.

Samozřejmě se pustím do testování jednotlivých možností - úvodní názor více lídí může být zajímavé vodítko pro výběr.

https://bitbucket.org/anders_melander/better-translation-manager/src/master/  ... zajímavá varianta
nebo
GNU gettext
nebo
Tsilang    https://www.tsilang.com/
nebo
Sisulizer  https://www.sisulizer.com/

Apliace má přes 1700 dfm souboru a desítky tisíc řetězců k překladu. Požadované jazyky anlgličtina, němčina, maďarština, rumunština, bulharština.
Přepínání jazyků v runtimu. Překlad by probíhal průběžně, pokud by to bylo možné tak i za aktivní pomoci zákazníku.
Je potřeba mít spolehlivý a stabilní nástroj pro řízení a správu lokalizací.
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: vandrovnik 18-12-2019, 09:17:32
Když jsem chtěl laborovat s GetText a nějaký si tu nainstaloval, nešlo mi pak z GetIt instalovat JVCL. V poznámkách mám, že instalace JVCL pomocí GetIt selže (naprosto zahltí počítač), pokud je během jeho instalace dostupná složka C:\Program Files (x86)\dxgettext, protože si to z ní iniciativně spouští nějaký .exe (asi pro překlad textu), který ale nefunguje správně, takže za chvíli visí spuštěný tolikrát, že je počítač zralý na reset.
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: neo 19-12-2019, 08:55:43
Tak jsem zkusil Better translation ... ale lokalizaci to nenačte ... nechodí mi ani demo. Postup je tak jednoduchý, že se v něm snad nedá udělat chyba ... ale prostě to nechodí :-)
Další otázka je, jak přepínat jazyky za chodu ?
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: vandrovnik 19-12-2019, 10:26:44
Pro inspiraci - určitě by to šlo udělat i lépe. Nevím, jestli je ještě nutné to ScaleForPPI, v nějaké verzi to bez něj haprovalo a pak jsem to už znovu nezkoušel.
Unita ReInit byla kdysi převzatá z nějaké ukázky.

Kód: Delphi [Vybrat]
  1. uses ReInit;
  2.  
  3. procedure TMainForm.NastavJazyk(aIsoZkratka: string);
  4.  var Nacist: string;
  5.  begin
  6.  if JsouOtevrenaOkna then begin
  7.   Nahlas(xxNemuzePrepnoutJazyk);
  8.  end else begin
  9.   Nacist:=UpperCase(aIsoZkratka);
  10.   if Nacist='CS' then Nacist:='' else
  11.   if Nacist='PL' then Nacist:='PLK' else;
  12.   if Nacist='DE' then Nacist:='DEU';
  13.   MainForm.ScaleForPPI(96); // jinak se po reinicializaci nezobrazi spravne
  14.   LoadNewResourceModule(Nacist);
  15.   ReinitializeForms;
  16.   FormShow(self);
  17.  end;
  18. end;

Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: JaroB 19-12-2019, 11:04:36
Pořád ještě používám RxTranslator z RxLibrary na form pro jednoduché aplikace a je to adoptovaný kód Vladimira Gaitanoffa z vgLib a používá se to úplně stejně.
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: neo 19-12-2019, 11:12:54
Díky za tip ... ale jak jsem již psal ... tady se jedná o více než 1700 dfm a přes 11 000 resource stringu a přes 90 000 položek k překladu. Vše do několika jazyků. Vlastní překlad bude dost nákladný a proto hledám robustní řešení .. spíše komerční produkt.
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: neo 24-12-2019, 00:16:00
Tak jsem zkusil Better-translation-manager  - a opravdu funguje dobře. Lokalizuje jak EXE tak BPL. Metodicky funguje podobně jako localizátor od Zbyška Hlinky.
Rychlost lokalizované aplikace se subjektivně zdá stejná jako bez lokalizace. Zatím se jedná o první testy ale vše se jeví OK.

Zatím se mi nedaří zprovoznit přepínání jazyků v runtimu.
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: vandrovnik 24-12-2019, 09:08:32
Tady je ukázka, .exe v ní sice není, ale zkoušel jsem a přepnutí fungovalo.
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: neo 27-12-2019, 10:20:16
Díky, zkusím :-)
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: Slavomir 31-12-2019, 23:58:34
Úspešne používam už niekoľko rokov výborný český LangMan (http://www.regulace.org/index.php?cPath=26).
Název: Re:Jazyková lokalizace v rozsáhlé aplikaci
Přispěvatel: neo 06-01-2020, 20:49:14
Možná bude pro ostatní užitečné malé shrnutí. Po delším "výzkumu" se přikláním k použití SiSulizeru. Vzhledem k tomu, že se bude lokalizovat velice rozsáhlý komerční produkt tak cena nehraje roli. Je zde vyřešena distribuce a výměna překladových souborů pro jednotlivé jazyky (oddělený export a import překladových dat) a aplikace se jeví dostatečně robustní. Existuje podpora a je zajištěna kontinuita vývoje. Sice je to relativní ale u větších projektů důležité. Integrace do aplikace a run-time přepínání proběhlo bez potíži. Better translation je stejně použitelný ale dle mého méně robustní. V žádném případě to není chyba ale pro komerční projekt se mi zdá SiSulizer vhodnější. Případné další komentáře přivítám.