WebNews.cz - počítače, komunikace, mobily, internet, finance

Mapa serveru | Administrace

Delphi: Vytvoření vícejazyčné aplikace

Jiří Provazník - Profil - 17.03.2003
Chystáte se vytvářet vícejazyčné aplikace pomocí Delphi 6 Profesional a nevíte, jak na to? Následující článek vám přinese podrobný postup, vhodný i pro začátečníky, jak tuto aplikaci vytvořit.

Při hledání informací o vícejazyčných aplikacích narazíte v nápovědě na odkaz k demonstrační aplikaci „RichEdit“. Bohužel při prvním spuštění v prostředí CZ-Windows XP mě tento příklad příliš nefungoval. Proto jsem se rozhodl vytvořit vlastní jednoduchou aplikaci, na které bych možnosti vícejazyčnosti vyzkoušel.Pro jednoduchost jsem začal jednoduchým formulářem s tlačítkem a několika popiskami.

Vlastní vytvoření aplikace probíhá stejně jako ve všech ostatních případech. Pomocí menu File – New – Application.

nová aplikace

Pro rychlost nebudeme v tomto příkladu měnit automaticky vytvořené názvy komponent, přesto v závorce uvedu název a třídu právě vytvářených či měněných komponent.

Na automaticky vytvořený formulář předáme z palety Standart jedno klasické tlačítko (Button1: TButton), jeden ComboBox (ComboBox1: TComboBox) a jeden Label (Label1: TLabel). U posledně přidané komponenty změňte v design módu nastavení Caption na libovolný český text. V našem případě jsem použili řetězec „Vybraný jazyk: CZ“.

ComboBox1 nám bude sloužit k výběru vlastního jazyka. Naplníme tedy jeho položku Items řetězcem „CZ“ a „EN“. Pro dokonalost ještě změňte položku ItemIndex na hodnotu nula. Vlastnímu formuláři ještě změňte velikost na přijatelnou míru a první krok je hotov. Dosavadní výsledek naší práce by mohl vypadat např. následovně:

Formulář CZ

V tuto chvíli doporučuji celý projekt uložit.

Vlastní logika okna bude fungovat asi následujícím způsobem. Pomocí komponenty ComboBox1 vyberete příslušný jazyk a pak kliknutím na tlačítko Button1 provedeme výsledné přepnutí do vybraného jazyka.

Do obsluhy události OnClick zavedeme tedy novou proceduru Button1Click. V této proceduře provedeme vlastní nahrání nové jazykové mutace pomocí následujícího kódu.

procedure TForm1.Button1Click(Sender: TObject);
const
 ENGLISH = (SUBLANG_ENGLISH_US shl 10) or LANG_ENGLISH;
 CZECH = $0405;
begin
 if ComboBox1.ItemIndex = 0 then
 begin
  if LoadNewResourceModule(CZECH) <> 0 then
  begin
   ReinitializeForms;
  end;
 end;
 if ComboBox1.ItemIndex = 1 then
 begin
  if LoadNewResourceModule(ENGLISH) <> 0 then
  begin
   ReinitializeForms;
  end;
 end;
end;

Zajisté jste si zde všimli dvou dosud neznámých procedur ReinitializeForms a LoadNewResourceModule. Tyto procedury pocházejí ze souboru reinit.pas, který naleznete v již zmiňovaném příkladu „RichEdit“ nebo si jej můžete stáhnout s naším příkladem. Aby byly překladači tyto procedury známy, nezapomeňte jej uvést v v hlavní (úplně až nahoře) sekci uses. V našem příkladu tedy uses vypadají takto :

uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls, ReInit;

Opět proveďte uložení celého projektu a celkové přeložení. Doporučuji provést přeložení pomocí funkce „Build“ v menu „Project“. Pokud jste zatím postupovali podle pokynů měl by být druhý krok bez větších problému dokončen.

Build Project1

Pro vlastní funkci přepínání jazykových mutací vlastního programu, nyní potřebujeme vygenerovat formuláře ostatních mutací. Pod pojmem mutace, si představte vytvoření souboru v němž jsou vybrané textové řetězce a formuláře vhodné pro překlad do jiného jazyka. Pro vlastní generování použijeme zabudovaného průvodce. Přejděte tedy do menu File – New – Other.. a na záložce New naleznete Resource DLL Wizard

Resource DLL Wizard

Po spuštění průvodce vás úvodní obrazovka informuje o třech následujících krocích:

1. Vybrání projektu.
2. Výběr jazyka.
3. Automatické generování.

Pokračujte tlačítkem Next a průvodce vám nabídne aktuální projekt. Pokud nechcete přidat cokoliv dalšího, pokračujte opět tlačítkem „Next“. Na následující obrazovce vyberte jazyky, ve kterých chcete vlastní aplikaci provozovat. V našem příkladu vybereme jazyky Čeština a Angličtina (Spojené státy).

Language

Dalším krokem je kontrola vybraných jazyků, přidání dalších vybraných souborů a výsledný přehled všech prováděných kroků. V našem příkladu není třeba v těchto třech krocích cokoliv měnit, proto vždy pokračujte tlačítkem „Next“. Jako poslední krok je úplný přehled a informace o tom, co průvodce bude dělat. Automatické generování se spustí po opuštění této poslední stránky stisknutím tlačítka „Finish“. V některých případech vás ještě průvodce může vyzvat k uložení projektu. V tomto případě doporučuji povolit uložení projektu a pokračovat stisknutím tlačítka „Yes“. Po skončení generování se zobrazí okno s výsledky vlastních akcí.

Při generování došlo v adresáři kde máte uloženou naši pokusnou aplikaci k vytvoření dalších dvou adresářů (ENU a CSY). V každém z těchto adresářů jsou uloženy vlastní formuláře pro danou jazykovou mutaci. V tuto chvíli opět proveďte uložení projektu a to tentokrát pomocí „save all“. Uložíte tím i ProjektGroup, do kterého byly předány všechny potřebné nově vzniklé soubory.

Z projektu „Project1.ENU“ vyberte formulář Form1 který v tuto chvíli vypadá úplně stejně jako původní formulář.

Project Manager

U komponenty Label1 změňte v design módu nastavení Caption na libovolný anglický text. V našem případě jsem použili řetězec „Language USA“. U komponenty ComboBox1 ještě změňte položku ItemIndex na hodnotu jedna. Vlastní okno pak bude vypadat asi takto:

Formulář EN

V okně „ProjectManager“ se přepněte (aktivujte) na projekt se jménem „Project1.exe“. Znovu uložit pomocí „save all“ a všechno přeložit pomocí menu Project funkce Compile All Projects a Build All Projects.

Menu Project

Nyní je vše připraveno pro první spuštění. Nepřeložené soubory testovací aplikace si můžete stáhnout z adresy http://www.provaz.cz/sector02/download_id.php?id=42. Výsledná aplikace není žádným zázrakem ani nepředvádí žádnou efektní grafickou podívanou. Hlavním účelem bylo co nejpodrobněji popsat základní možnost tvorby vícejazyčné aplikace. Tento efekt však může v rukou zkušenějšího programátora proměnit i jednoduchou aplikaci v jazykově nezávislý software. A to se dnes žádá.

Hodně zdaru při vašem programování.

Tisk článku - Poslat článek - Zdroj článku - (4384 zobrazení)
Redakce | | | ISSN 1213-9335 | © 2005 Developed by terc.cz