
Delphi - Ako najjednoduchšie lokalizovať program do viac jazykov?
Kedysi za čias TP som to raz skúsil. Robil som to štýlom:
const
textzmazat = 1;
textpridat = textzmazat + 1;
A takto to pokračovalo ďalej. V externom súbore som mal texty a tie som uložil do poľa. K tomuto poľu som už potom pristupoval ako k normálnym reťazcom pomocou uvedených konštánt.
Teraz uvažujem nad podobným problémom v Delphi. Napadlo ma, že už vtedy som tie číselné konštanty mohol nahradiť vymenovaným typom a práca by bola jednoduchšia o to pričítanie jednotky. Viem, že v Delphi je nejaká takáto možnosť pomocou zdrojov *.res, ale mojou podmienkou je prehľadný textový súbor s lokalizovanými textami ako v Total Commanderi alebo v PSPade. K poľu by som pristupoval ako k inicializačnému súboru *.ini (ako je to v PSPade) a na začiatku načítal celé pole textov. Samozrejme pri inicializácii formulárov sa musia nastaviť všetky texty na formulári podľa zvolenej lokalizácie.
Je aj jednoduchší spôsob lokalizácie v Delphi alebo je práve táto cesta správna?
Nemohu si pomoci, ale nejlépe měl lokalizace vyřešen AmigaOS 3.0 a vyšší - v zásadě textové soubory s databázovým formátem s podporou napříč OS a aplikacemi. Bohužel implementace češtiny byla (kvůli konfliktům s některými řídicím znaky) docela problém.
Jinak správně -- základem je abstrakce od kódu. V závislosti na velikosti SW a tudíž i počtu lokalizovatelných stringů bych volil buď plaintext, nebo nějakou strukturu.
Takže sčasti v tom vidím aj odpoveď na otázku vyššie položenú. Ak je program rozsiahly, čo zatiaľ u mňa nehrozí, tak z konfiguračného súboru načítavať stringy postupne a keď malýá, tak na začiatku načítať všetko.
Ešte otázka: Ako to vlastne funguje v Delphi pomocou zdrojov? Tam sa dá tiež lokalizovať do viac jazykov, ale s tým, že nebudú lokalizované texty bežne prístupné a z hľadiska programového kódu sa pristupovať k lokalizovaným textom už jednoduchšie nedá. Mám pravdu?
Interni Delphi lokalizator dela vlastne DLL, ktere obsahuji nejen lokalizovane retezce, ale i pozice prvku na formulari. Tam si totiz muzes pohnout pri lokalizaci i s ovladacimi prvky, pokud by ti prekazely - male mito na text apod.
Ale operavdu to neni lokalizovatelne "zvenku"
Podivej se na priklad:
\Program Files\Borland\Delphi7\Demos\RichEdit\
Áno, ten program mám ešte teraz živý v pamäti.
Keď som ho upravoval minulý rok na inú aplikáciu, tak som lokalizácie odtiaľ vyhádzal. Takže som sa im ani nestačil porozumieť. Ale pozriem sa na to, hoci takto lokalizovať nikdy nebudem, keďže je to user unfriendly.