Makrá v OpenOffice.org – jazykovo lokalizované dialógové okná

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.

Otvorenie okna pre správu jazykov

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é.

Prázdny výber jazykov

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.

Nastavenie prvého východzieho jazyka

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.

Výber ostatných jazykov pre lokalizáciu

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ť.

Zoznam jazykov a zmena východzieho jazyka

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ť.

Slovenská lokalizácia

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.

Anglická lokalizácia

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.

Spustené dialógové okno v českom prostredí

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

 

Neprehliadnite: