Július Pastierik / 23. 03. 2010, 12:13
V ďalšom pokračovaní článkov o jazykovo lokalizovaných makrách si ukážeme, ako dokážeme pripraviť jazykovo lokalizované dialógové okná.
Pri vytváraní makier často pripravujeme dialógové okná. Ich tvorbe sme sa venovali už v niekoľkých dieloch, ale zatiaľ sme si neukázali, ako ich dokážete jazykovo lokalizovať podľa toho, aký jazyk je nastavený ako jazyk rozhrania OpenOffice.org.
Pravdaže, jedna z možností (o ktorej sa však budeme podrobnejšie zmieňovať až v ďalšom dieli) je, že príslušné texty budete nastavovať priamo v programe. Toto riešenie je niekedy nevyhnutné (ak sa text dynamicky mení počas priebehu makra), nie je však vždy potrebné – ak dialógové okno je statické.
V tomto prípade je preto výhodnejšie, ak ho budeme lokalizovať priamo počas jeho definície – programovací kód sa nezväčší ani o riadok a napriek tomu sa text dialógového okna bude automaticky meniť podľa nastaveného jazyka pracovného rozhrania OpenOffice.org.
Pre tento postup si najprv musíte pripraviť celé dialógové okno v jednom jazyku (napríklad v slovenčine). Pre vlastnú lokalizáciu musíte stlačiť tlačidlo „Správa jazykov“ v paneli nástrojov, alebo si v menu „Zobraziť – Panely nástrojov“ nastálo nastavte zobrazovanie panela nástrojov „Jazyk“, kde je k dispozícii tlačidlo s tou istou funkciou.
Po jeho stlačení sa zobrazí okno „Správa jazykov používateľského rozhrania“, kde pomocou tlačidla „Pridať“ môžete nastaviť všetky jazyky, do ktorých budete dialóg lokalizovať. Pri prvom stlačení tohto tlačidla môžete vybrať iba jeden jazyk, ktorý bude považovaný za východzí (toto sa však dá následne zmeniť) a až pri jeho druhom či ďalšom stlačení môžete vybrať jazyky ostatné. Význam ostatných tlačidiel („Odobrať“, „Východzí“) je zrejmý z ich názvov a preto si ich nemusíme bližšie popisovať.
Aj keď ste si nenastavili zobrazovanie panela nástrojov „Jazyky“, po pridaní jazyka sa zobrazí a v rozbaľovacom zozname uvidíte všetky jazyky, ktoré ste vybrali. Pravdaže, kedykoľvek počas práce môžete ďalšie jazyky pridávať či odoberať.
Vlastná lokalizácia je jednoduchá – v zozname vyberiete jazyk, do ktorého chcete dialógové okno lokalizovať a všetky zobrazené texty upravíte. Takto postupujete jazyk za jazykom, až kým neprevediete lokalizáciu do všetkých jazykov.
A pre praktický príklad si ukážeme prvú verziu makra pre zobrazovanie počtu znakov a slov priamo počas písania textu, ktorú nabudúce vylepšíme (čiže budeme v nej meniť text dialógového okna priamo počas behu programu). Teraz predpokladajme, že ste si pripravili dialóg, v ktorom budete počet znakov zobrazovať v popisnom poli „Label3“ a počet slov v popisnom poli „Label4“. V makre už uvidíte to, ako sa mení popisný názov tejto položky, ktorý teraz využijeme na zobrazovanie počtu, ale nabudúce ho budeme meniť podľa nastaveného jazyka pracovného rozhrania OpenOffice.org.
dim dialg as object ' Dialóg pre on-line zobrazovanie počtu znakov
REM Makro, ktoré zneviditeľní dialóg – t.j. nastaví, že sa má ukončiť čakací cyklus (volané stlačením klávesy "Koniec" v dialógu)
sub Koniec_Dialog_Initiated
dialg.setVisible(false )' Zneviditeľnenie dialógu
end sub
Rem Procedura priebežbe zobrazuje počet znakov a slov
Sub Znaky_online
dim dokument as object
Dokument=ThisComponent
DialogLibraries.LoadLibrary("JP_znaky")
dialg=CreateUnoDialog(DialogLibraries.JP_znaky.Dialog1)
' Počiatočné nastavenie zobrazovaného počtu
dialg.model.Label3.Label=str(dokument.CharacterCount) ' počet znakov
dialg.model.Label4.Label=str(dokument.WordCount) ' počet slov
dialg.setVisible(true) ' zviditeľnenie dialógu – namiesto dlg.Execute(), aby sa dalo paralelne pracovať s textom
on error goto Zatvoreny_dokument ' Ak počas behu makra zatvoríme dokument, vedie to ku chybe – skočíme na zatvorenie dialógu
while dialg.isVisible() ' Cyklus, ktorý čaká na stlačenie klávesy "Koniec" v dialógu (kým je dialóg viditeľný)
wait 500 ' Časová medzera 500 milisekúnd (0,5 sec) na to, aby sa dalo paralelne pracovať s dokumentom
' Výpis zmeneného počtu každú 0,5 sec
dialg.model.Label3.Label=str(dokument.CharacterCount) ' počet znakov
dialg.model.Label4.Label=str(dokument.WordCount) ' počet slov
wend
Zatvoreny_dokument:
dialg.dispose() ' Zatvorenie dialógu
end sub
Copyright © 2002 - 2013 inet.sk, s. r. o. | Všetky práva vyhradené | Neprešlo jazykovou úpravou | ISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Inet.sk