Autor Téma: Jazyková lokalizace v rozsáhlé aplikaci  (Přečteno 2651 krát)

Offline neo

  • Plnoletý
  • ***
  • Příspěvků: 120
  • Karma: 2
    • Verze Delphi: Delphi 6, Delphi 10.3.3
Jazyková lokalizace v rozsáhlé aplikaci
« kdy: 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....

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5465
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1112
  • Karma: 47
    • Verze Delphi: 10.3
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #2 kdy: 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ů.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3011
  • Karma: 135
    • Verze Delphi: D2007, XE3, DX10
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #3 kdy: 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.






Offline geby

  • Plnoletý
  • ***
  • Příspěvků: 223
  • Karma: 16
    • Verze Delphi: 7, 2007, XE2, 10.2
    • Synapse
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #4 kdy: 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.

Offline neo

  • Plnoletý
  • ***
  • Příspěvků: 120
  • Karma: 2
    • Verze Delphi: Delphi 6, Delphi 10.3.3
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #5 kdy: 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.

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 1013
  • Karma: 29
    • Verze Delphi: XE8, Seattle
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #6 kdy: 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 :(

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1112
  • Karma: 47
    • Verze Delphi: 10.3
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #7 kdy: 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.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5465
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #8 kdy: 09-12-2019, 09:26:20 »
Vyzerá to na vašeho Zbyška Hlinku. Skúste ho osloviť http://www.pivovareni.cz/
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline paja666

  • Nováček
  • *
  • Příspěvků: 30
  • Karma: 0
    • Verze Delphi: 10.1.2 Berlin
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #9 kdy: 09-12-2019, 10:17:56 »
Pár let zpátky jsem pro obrovský projekt použil https://www.tsilang.com/ a šlo to poměrně dobře. Překlady jsem měl v extra souborech, které jsem dynamicky natahoval.

Offline neo

  • Plnoletý
  • ***
  • Příspěvků: 120
  • Karma: 2
    • Verze Delphi: Delphi 6, Delphi 10.3.3
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #10 kdy: 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.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1112
  • Karma: 47
    • Verze Delphi: 10.3
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #11 kdy: 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).

Offline neo

  • Plnoletý
  • ***
  • Příspěvků: 120
  • Karma: 2
    • Verze Delphi: Delphi 6, Delphi 10.3.3
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #12 kdy: 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.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1112
  • Karma: 47
    • Verze Delphi: 10.3
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #13 kdy: 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.

Offline neo

  • Plnoletý
  • ***
  • Příspěvků: 120
  • Karma: 2
    • Verze Delphi: Delphi 6, Delphi 10.3.3
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #14 kdy: 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á.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1112
  • Karma: 47
    • Verze Delphi: 10.3
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #15 kdy: 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.

Offline neo

  • Plnoletý
  • ***
  • Příspěvků: 120
  • Karma: 2
    • Verze Delphi: Delphi 6, Delphi 10.3.3
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #16 kdy: 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ů.

Offline neo

  • Plnoletý
  • ***
  • Příspěvků: 120
  • Karma: 2
    • Verze Delphi: Delphi 6, Delphi 10.3.3
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #17 kdy: 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í.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1112
  • Karma: 47
    • Verze Delphi: 10.3
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #18 kdy: 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.

Offline neo

  • Plnoletý
  • ***
  • Příspěvků: 120
  • Karma: 2
    • Verze Delphi: Delphi 6, Delphi 10.3.3
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #19 kdy: 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 ?

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1112
  • Karma: 47
    • Verze Delphi: 10.3
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #20 kdy: 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;


Offline JaroB

  • Guru
  • *****
  • Příspěvků: 1013
  • Karma: 29
    • Verze Delphi: XE8, Seattle
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #21 kdy: 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ě.

Offline neo

  • Plnoletý
  • ***
  • Příspěvků: 120
  • Karma: 2
    • Verze Delphi: Delphi 6, Delphi 10.3.3
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #22 kdy: 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.

Offline neo

  • Plnoletý
  • ***
  • Příspěvků: 120
  • Karma: 2
    • Verze Delphi: Delphi 6, Delphi 10.3.3
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #23 kdy: 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.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1112
  • Karma: 47
    • Verze Delphi: 10.3
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #24 kdy: 24-12-2019, 09:08:32 »
Tady je ukázka, .exe v ní sice není, ale zkoušel jsem a přepnutí fungovalo.

Offline neo

  • Plnoletý
  • ***
  • Příspěvků: 120
  • Karma: 2
    • Verze Delphi: Delphi 6, Delphi 10.3.3
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #25 kdy: 27-12-2019, 10:20:16 »
Díky, zkusím :-)

Offline Slavomir

  • Mladík
  • **
  • Příspěvků: 58
  • Karma: 0
    • Verze Delphi: XE2 + 10.3 Community Edition
    • RQ Money
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #26 kdy: 31-12-2019, 23:58:34 »
Úspešne používam už niekoľko rokov výborný český LangMan.
Lazarus, Delphi - RQ Money

Offline neo

  • Plnoletý
  • ***
  • Příspěvků: 120
  • Karma: 2
    • Verze Delphi: Delphi 6, Delphi 10.3.3
Re:Jazyková lokalizace v rozsáhlé aplikaci
« Odpověď #27 kdy: 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.