Archív Inet.sk Pôvodný autor: Július Pastierik
14. 04. 2010 o 00:00 2174x

Makrá v OpenOffice.org – programovo lokalizované dialógové okná (1)

V dnešnom pokračovaní návodov o jazykovo lokalizovaných makrách si ukážeme, ako dokážeme nastavovať jazyk nadpisov v dialógových oknách programovo, t. j. priamo v makrách.
Makrá v OpenOffice.org – programovo lokalizované dialógové okná (1)

V minulom dieli sme si ukázali spôsob, ako sa lokalizujú dialógové okná. Niekedy však potrebujete meniť ich obsah aj v makre, preto si dnes ukážeme, ako sa to dá naprogramovať. Samozrejme, tento postup sa dá aplikovať aj na iné jazykové lokalizácie, napríklad aj na správy vypisované pomocou príkazu msgbox a pod.

Ako príklad môžeme použiť zobrazovanie počtu znakov počas písania s tým, že budeme chcieť skloňovať vypisované slová znak/znaky/znakov a slovo/slová/slov.

Návrh dialógu

Prvý spôsob takejto lokalizácie, ktorý si ukážeme, bude spočívať v tom, že podľa jazyka pracovného rozhrania OpenOffice.org budeme pomocou prepínača (príkaz select case) nastavovať vlastné texty. Toto riešenie je jednoduché a postačuje pre menšie makrá, prípadne pre malý počet jazykov a vypisovaných textov. Akonáhle však v makre potrebujete jazykovo lokalizovať viac textov a to do pomerne veľkého množstva jazykov, programový kód sa zbytočne predlžuje (pre každý jazyk musíte vždy pridávať ďalšie a ďalšie voľby v príslušných prepínačoch), čím stráca aj na prehľadnosti.

Vlastný dialógTeraz si však ukážme makro, kde je lokalizácia prevedená priamo v ňom. Minule ukázané dialógové okno pre zobrazovanie počtu znakov a slov mierne upravíme – stačí, ak v ňom ponecháme dva textové oznamy, pretože počet znakov a slov môžeme pridávať priamo ku skloňovaným slovám znak/znaky/znakov a slovo/slová/slov. Makro je jazykovo lokalizované do slovenčiny, češtiny a angličtiny s tým, že pokiaľ bude mať OpenOffice.org nastavený iný jazyk pracovného rozhrania, použije sa angličtina.

dim dlg as object ' Dialóg pre on-line zobrazovanie počtu znakov
dim txt_znak0, txt_znak1, txt_znak2, txt_slovo0, txt_slovo1, txt_slovo2 as string ' Pre jazykovo lokalizované vypisovanie

function Jazyk_OOo as string
 dim ConfigProvider, MasterKey as object
 dim NodePath(0) as new com.sun.star.beans.PropertyValue
 dim jazyk as string
 
 NodePath(0).Name = "nodepath"
 NodePath(0).Value = "org.openoffice.Setup/L10N/"
 
 ConfigProvider = createUnoService("com.sun.star.configuration.ConfigurationProvider")
 MasterKey = ConfigProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess", NodePath())
 Jazyk_OOo = MasterKey.getByName("ooLocale") '"sk", "cs", ...
end function

sub Nastav_jazyk_text
 dim jazyk as string
 
 jazyk = Jazyk_OOo '"sk", "cs", ...
 
 select case jazyk ' Názov tlačidla Odkry/Vymaž budeme meniť podľa jazyka
  case "sk" ' Slovenčina
   txt_znak0="znak"
   txt_znak1="znaky"
   txt_znak2="znakov"
   txt_slovo0="slovo"
   txt_slovo1="slová"
   txt_slovo2="slov"
  case "cs" ' Čeština
   txt_znak0="znak"
   txt_znak1="znaky"
   txt_znak2="znaků"
   txt_slovo0="slovo"
   txt_slovo1="slova"
   txt_slovo2="slov"
  case else ' Ostatné jazyky budú anglicky
   txt_znak0="char"
   txt_znak1="chars"
   txt_znak2="chars"
   txt_slovo0="word"
   txt_slovo1="words"
   txt_slovo2="words"
 end select
end sub

function daj_text(cislo, i as long) as string
 dim pom as string
 select case cislo
  case 1
   select case i
    case 1
     pom=txt_znak0
    case else
     pom=txt_slovo0
   end select
  case 2, 3, 4
   select case i
    case 1
     pom=txt_znak1
    case else
     pom=txt_slovo1
   end select
  case else
   select case i
    case 1
     pom=txt_znak2
    case else
     pom=txt_slovo2
   end select
 end select
 daj_text=str(cislo)+" "+pom
end function

Sub Pocitanie_online
 rem Procedura priebežbe zobrazuje počet znakov a slov
 
 Nastav_jazyk_text ' Nastavenie textov podľa jazyka pracovného rozhrania
 
 DialogLibraries.LoadLibrary("JP_znaky")
 
 dlg=CreateUnoDialog(DialogLibraries.JP_znaky.Znaky_online)
 
 ' Počiatočné nastavenie zobrazovaného počtu
 
 dlg.model.Label1.Label=daj_text(ThisComponent.CharacterCount, 1) ' počet znakov
 dlg.model.Label2.Label=daj_text(ThisComponent.WordCount, 2) ' počet slov
 
 dlg.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 dlg.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
  dlg.model.Label1.Label=daj_text(ThisComponent.CharacterCount, 1) ' počet znakov
  dlg.model.Label2.Label=daj_text(ThisComponent.WordCount, 2) ' počet slov
 wend
 Zatvoreny_dokument:
 dlg.dispose() ' Zatvorenie dialógu
end sub

 

Novinky a inšpirácie

Z nášho blogu

Prečítajte si novinky, inšpirácie a dôležité informácie zo sveta webhostingu a technológií.

Novinky na Inet.sk (09 / 2026) Novinky
09. 09. 2026

Novinky na Inet.sk (09 / 2026)

Posledné mesiace sme v Inet.sk nevenovali len stabilite serverov, ale najmä počúvaniu vašich reálnych skúseností z každodennej praxe. Výs...

Čítať viac
Plánovaná údržba v datacentre (20.09.2026) Oznamy
07. 09. 2026

Plánovaná údržba v datacentre (20.09.2026)

Stabilita a nepretržitá dostupnosť vašich webov je pre nás kľúčová. Aby sme tento štandard nielen udržali, ale neustále zvyšovali, naši p...

Čítať viac
Aktualizujte ihneď svoj Wordpress - Kritická zraniteľnosť (CVE-2026-63030) Oznamy
31. 08. 2026

Aktualizujte ihneď svoj Wordpress - Kritická zraniteľnosť (CVE-2026-63030)

Bezpečnostný tím WordPressu vydal núdzovú bezpečnostnú záplatu pre kritickú chybu označenú ako CVE-2026-63030. Táto zraniteľnosť dosiahla...

Čítať viac
Nespíme na vavrínoch, pozrite si našu úrodu nových webov Novinky
01. 07. 2026

Nespíme na vavrínoch, pozrite si našu úrodu nových webov

Prvých šesť mesiacov roka 2026 preverilo našu kreativitu aj technické nasadenie. Naše servery nezaznamenali len nárast prevádzky, ale aj ...

Čítať viac

Podpora klientom

Máte ďalšie otázky?

Nezúfajte, pripravili sme pre Vás jednoduché odpovede na najdôležitejšie otázky, ktoré od našich klientov dostávame.

Zistiť viac

Naše výhody

Prečo si nás vybrať?

Našim klientom ponúkame až 30-dňovú záruku vrátenia peňazí.

Sme skutočný slovenský webhosting

Slovenská
firma

Nepatríme pod žiadnu nadnárodnú spoločnosť, sme malá rodinná firma.

Na nás sa môžete kedykoľvek spoľahnúť

Dlhoročné
skúsenosti

Na slovenskom trhu pôsobíme už viac ako 20 rokov, sme overená značka.

Naši prví zákazníci sú stále s nami

Spokojní
zákazníci

Naši zákazníci sú ako naša rodina, preto nám verí už viac ako 1250 klientov.

Maximálna bezpečnosť

Maximálna
bezpečnosť

Chránime Vás pred útokmi i SPAMom. U nás sú Vaše dáta v bezpečí.

Prozákaznícka podpora

Ochotná
podpora

Zakladáme si na individuálnom prístupe, preto Vám vždy radi pomôžeme.

Kvalita a dobrá cena

Výborný pomer
cena / výkon

Ponúkame kvalitné a stabilné služby za rozumnú cenu bez skrytých poplatkov.

U nás sa Vám nič nestratí

Pravidelné
zálohovanie

Vaše dáta zálohujeme každý deň, dostupné sú aj zálohy z pred niekoľkých mesiacov.

Svižný Admin Panel nájdete len u nás

Prehľadný
Admin Panel

Máme rýchly a prehľadný Admin Panel, ktorý zvládne používať naozaj každý.

Správa používateľov

Správa
používateľov

Spravujte svoje projekty bez akýchkoľvek obáv s kolegami alebo externými partnermi.

Máme zľavy pre verných klientov

Vernostné
zľavy

Verní klienti u nás automaticky získavajú 15 % zľavu na každú ďalšiu objednávku.

My Vás nebudeme obmedzovať

Bez
obmedzení

Neobmedzujeme počet databáz, e-mailov, ftp a ani prenos dát.

Hosting pre WordPress

WordPress
na 1 klik

Nainštalujte si obľúbené redakčné systémy rýchlo a jednoducho.

Referencie

Spokojní zákazníci

Pozrite sa, čo o nás povedali naši klienti. Neváhajte a pridajte sa k nám ešte dnes.

Auto 100
Bystricoviny
eCall Slovakia
Filip Jančík
Frost
Merkury Broker
Mi:Su Design
Mesto Nitra
Pro Clienta
Schneider Lekáreň
Vego Marketing
Mesto Zlaté Moravce

Všetky ceny sú uvádzané bez DPH
© 2006 - 2026, Inet.sk, s. r. o., Všetky práva vyhradené

Na našej stránke používame "cookies". Vďaka nim sledujeme návštevnosť, prispôsobujeme reklamu a používateľské nastavenia, čo zlepšuje Váš zážitok z našej stránky. Súhlasíte s ich spracovaním?
Vlastné nastavenia cookies