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

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

V ďalšom pokračovaní návodov o jazykovo lokalizovaných makrách si ukážeme, ako dokážeme jazykovo lokalizovať makro zo súborov, ktoré obsahuje definíciu príslušných textov.
Makrá v OpenOffice.org – programovo lokalizované dialógové okná (2)

 

Minule sme si ukázali, ako dokážeme jazykovo lokalizovať makro priamo v programovom kóde, pričom definícia príslušných jazykovo lokalizovaných textov bola súčasťou tohto makra. Iný spôsob jazykovej lokalizácie spočíva v tom, že príslušné preklady budeme mať v súboroch. Pokiaľ dodržíme rovnakú špecifikáciu názvov týchto súborov podľa jazyka, riešenie môže byť absolútne univerzálne s tým, že vopred nemusíme vôbec počítať s tým, aký preklad sa kedy urobí – pokiaľ bude existovať, načíta sa príslušný súbor, inak sa použije štandardný, povedzme anglický text.

Predpokladajme, že v adresári, kde máme makro sú (alebo budú) zároveň uložené súbory „jp_znaky_xx.txt“, pričom „xx“ označuje príslušný jazyk pracovného rozhrania. Pokiaľ súbor pre príslušný jazyk nebude existovať, nastavíme text priamo v makre. A aby sme makro dotiahli do čo najväčšej dokonalosti, budme predpokladať, že preklad nemusí byť úplný a preto v súbore budeme požadovať definíciu prekladu v tvare podobnom, ako je zápis v programe, t. j. ak niektorý zápis bude chýbať alebo bude nesprávny, ponecháme pri príslušnom texte štandardný text. Súbor „jp_znaky_sk.txt“ by mal v tomto prípade obsahovať nasledujúce záznamy:

txt_znak0=znak
txt_znak1=znaky
txt_znak2=znakov
txt_slovo0=slovo
txt_slovo1=slová
txt_slovo2=slov


Vlastné makro potom môže vyzerať nasledovne:

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 cesta as object
 dim kde, nazov as string
 dim subor, rovna as integer
 dim riadok, premenna, definicia as string
  
 txt_znak0="char"
 txt_znak1="chars"
 txt_znak2="chars"
 txt_slovo0="word"
 txt_slovo1="words"
 txt_slovo2="words"
 
 ' cesta=CreateUnoService("com.sun.star.util.PathSettings") ' Pokiaľ by sme mali súbor v adresári používateľských nastavení OO.o
 ' nazov=cesty.UserConfig+"/"+"jp_znaky_"+Jazyk_OOo+".txt"
 
 kde=basiclibraries.getLibraryLinkURL("JP_znaky") ' Pokiaľ máme makro nainštalované ako rozšírenie
 nazov=left(kde,len(kde)-10)+"jp_znaky_"+Jazyk_OOo+".txt"
  
 if fileexists(nazov) then ' Ak súbor existuje, tak načítame definície do premenných
  subor = Freefile
  open nazov for Input as #subor
  While not eof(subor)
   Line Input #subor, riadok
   rovna=instr(riadok,"=")
   if rovna<>0 then
    premenna=trim(left(riadok,rovna-1)) ' Budeme ignorovať medzery
    definicia=trim(right(riadok,len(riadok)-rovna))
    select case premenna
     case "txt_znak0"
      txt_znak0=definicia
     case "txt_znak1"
      txt_znak1=definicia
     case "txt_znak2"
      txt_znak2=definicia
     case "txt_slovo0"
      txt_slovo0=definicia
     case "txt_slovo1"
      txt_slovo1=definicia
     case "txt_slovo2"
      txt_slovo2=definicia
    end select
   end if
  wend
  close #subor
 end if
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í.

Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás? Oznamy
01. 10. 2026

Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás?

Google oznámil, že v januári 2027 zruší v Gmaile funkciu „Odoslať ako“ (Send as) pre e-mailové adresy od iných poskytovateľov. Ak ste si ...

Čítať viac
Večerná „prestávka“ pre server VIP033 Oznamy
25. 09. 2026

Večerná „prestávka“ pre server VIP033

Neustále pracujeme na tom, aby vaše weby bežali hladko, rýchlo a bezpečne. Technológie idú míľovými krokmi vpred a my v Inet.sk s nimi dr...

Čítať viac
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

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

Férová
cena

Cena pri obnove je rovnaká ako pri objednávke. Nezdražujeme po prvom roku a 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