====== WvdS.DokuWiki.Lang Vticnik ====== **Vticnik:** wvdslang\\ **Verzija:** 1.0.0\\ **Imenski prostor:** ''lib/plugins/wvdslang/''\\ **Avtor:** Wolfgang van der Stille \\ **Licenca:** GPL 2 ---- ===== Definicija ===== Vticnik **wvdslang** omogoca vecjezicne prevode v DokuWiki straneh s centraliziranim upravljanjem. Rešuje problem raztresenih prevodov in ponuja varno alternativo PHP kodi v straneh. ===== Primeri uporabe ===== * **Vecjezicni meniji** - Stranska navigacija v razlicnih jezikih * **Lokalizirano besedilo** - Centralno upravljanje ponavljajocega besedila * **Integracija predlog** - Uporaba prevodov v predlogah * **Tehnicna dokumentacija** - Sklicevanje na izraze v vec jezikih * **Konfiguracijske vrednosti** - Branje vecjezicnih nastavitev wikija ---- ===== Sintaksa ===== {{wvds:lang>key}} ==== Variante sintakse ==== ^ Sintaksa ^ Opis ^ Primer ^ | ''{{wvds:lang>key}}'' | Prevod iz INI konfiguracije | ''{{wvds:lang>menu_home}}'' | | ''{{wvds:lang:CODE>key}}'' | Ekspliciten jezik | ''{{wvds:lang:en>menu_home}}'' | | ''{{wvds:lang>de:X|en:Y}}'' | Vgrajeni prevod | ''{{wvds:lang>de:Ja|en:Yes}}'' | | ''{{wvds:lang>conf:setting}}'' | DokuWiki konfiguracija | ''{{wvds:lang>conf:title}}'' | | ''{{wvds:lang>tpl:setting}}'' | Konfiguracija predloge | ''{{wvds:lang>tpl:footerText}}'' | ---- ===== Parametri ===== ==== Parametri sintakse ==== ^ Parameter ^ Tip ^ Opis ^ | **key** | string | Kljuc iz INI konfiguracije | | **CODE** | string | ISO 639-1 jezikovna koda (de, en, sl, itd.) | | **conf:** | predpona | Predpona za DokuWiki konfiguracijske vrednosti | | **tpl:** | predpona | Predpona za konfiguracijske vrednosti predloge | ==== Konfiguracijske nastavitve ==== Preko **Skrbnik → Konfiguracija → wvdslang**: ^ Nastavitev ^ Tip ^ Privzeto ^ Opis ^ | ''enabled'' | Vklop/Izklop | Vklop | Omogoci/onemogoci vticnik | | ''languages'' | Besedilo | de,en | Razpolozljivi jeziki (loceni z vejico) | | ''defaultLang'' | Besedilo | de | Privzeti jezik za nadomestno vrednost | | ''langPosition'' | Število | 0 | Polozaj jezika v poti imenskega prostora (0 = prva raven) | | ''translations'' | Textarea | //(prazno)// | Prevodi v INI formatu | ---- ===== Format prevodov ===== ==== INI struktura ==== Prevodi so shranjeni v INI formatu v konfiguraciji vticnika: [de] menu_home = Startseite menu_contact = Kontakt menu_back = Zurück site_welcome = Willkommen auf unserer Seite [en] menu_home = Home menu_contact = Contact menu_back = Back site_welcome = Welcome to our site [sl] menu_home = Domov menu_contact = Kontakt menu_back = Nazaj site_welcome = Dobrodošli na naši strani ==== Pravila formata ==== ^ Pravilo ^ Primer ^ | Odsek z jezikovno kodo | ''[de]'', ''[en]'', ''[sl]'' | | Kljuc = Vrednost | ''menu_home = Domov'' | | Narekovaji niso potrebni | ''text = Moje besedilo'' | | Presledki so dovoljeni | ''long_text = To je dolgo besedilo'' | | Vecvrsticno ni mogoce | Uporabite ''\\n'' za prelome vrstic | ---- ===== Primeri ===== ==== Primer 1: Enostaven prevod ==== **Zahteva:** Besedilo menija naj se prikaže v trenutnem jeziku. Dobrodošli na {{wvds:lang>menu_home}}! **Rezultat (pri sl:start):** * Izhod: "Dobrodošli na Domov!" **Rezultat (pri en:start):** * Izhod: "Dobrodošli na Home!" ==== Primer 2: Ekspliciten jezik za slovar ==== **Zahteva:** Prikazi angleški izraz v slovenski dokumentaciji. Zgoščena vrednost (angl.: {{wvds:lang:en>term_hash}}) je kriptografski prstni odtis. **Konfiguracija:** [sl] term_hash = Zgoščena vrednost [en] term_hash = Hash **Rezultat:** * Izhod: "Zgoščena vrednost (angl.: Hash) je kriptografski prstni odtis." ==== Primer 3: Vgrajeni prevod ==== **Zahteva:** Hiter prevod brez konfiguracijskega vnosa. {{wvds:lang>de:Weiter|en:Continue|sl:Naprej}} **Rezultat:** * Na nemški strani: "Weiter" * Na angleški strani: "Continue" * Na slovenski strani: "Naprej" ==== Primer 4: V HTML blokih ==== **Zahteva:** Prevodi v stranski vrstici s HTML strukturo. Vticnik deluje tudi znotraj ''...'' blokov, ker nadomešca pred obdelavo HTML. ==== Primer 5: Konfiguracijske vrednosti ==== **Zahteva:** Preberi vecjezicni naslov wikija iz konfiguracije. Dobrodošli v {{wvds:lang>conf:title}} **DokuWiki local.php:** $conf['title'] = 'de:Wissensdatenbank|en:Knowledge Base|sl:Baza znanja'; **Rezultat (na slovenski strani):** * Izhod: "Dobrodošli v Baza znanja" ---- ===== Kako deluje ===== ==== Procesni cevovod ==== 1. Zaznava sintakse └── Najde vse {{wvds:lang>...}} oznake na strani 2. Zaznava jezika └── Preveri pot imenskega prostora (npr. sl:stran → "sl") └── Ce ni najdeno: Brskalnikova Accept-Language glava └── Ce ni najdeno: Privzeti jezik iz konfiguracije 3. Razrešitev kljuca ├── conf:* → Bere iz $conf[...] ├── tpl:* → Bere iz tpl_getConf(...) ├── de:X|en:Y → Razcleni vgrajeni format └── key → Išce v INI prevodih 4. Ekstrakcija vrednosti └── Za format s crtami: Izvlece vrednost za trenutni jezik └── Za preprosto vrednost: Vrne vrednost neposredno └── Nadomestna vrednost: defaultLang ali sam kljuc 5. Zamenjava └── Zamenja oznako z najdeno vrednostjo ==== Zaznava jezika ==== Jezik je zaznan v naslednji prioriteti: ^ Prioriteta ^ Vir ^ Primer ^ | 1 | Pot imenskega prostora | ''sl:dokumenti:start'' → "sl" | | 2 | Accept-Language glava | ''sl,en;q=0.9,de;q=0.8'' → "sl" | | 3 | Privzeti jezik | ''defaultLang = sl'' → "sl" | Polozaj v imenskem prostoru je dolocen z ''langPosition''. Pri ''langPosition=0'' se uporabi prvi segment (npr. ''**sl**:dokumenti:start''). ---- ===== Konfiguracija ===== ==== Skrbniške nastavitve ==== Preko **Skrbnik → Konfiguracija → wvdslang**: === Osnovne nastavitve === ^ Nastavitev ^ Tip ^ Privzeto ^ Opis ^ | ''enabled'' | Vklop/Izklop | Vklop | Omogoci vticnik | | ''languages'' | Besedilo | de,en | Razpolozljivi jeziki | | ''defaultLang'' | Besedilo | de | Privzeti jezik | | ''langPosition'' | Število | 0 | Polozaj jezika v imenskem prostoru | === Prevodi === Textarea ''translations'' vsebuje vse prevode v INI formatu: [de] ; Navigacija menu_home = Startseite menu_docs = Dokumentation menu_contact = Kontakt menu_back = Zurück ; Splošno site_welcome = Willkommen site_footer = © 2025 Moje podjetje [en] ; Navigation menu_home = Home menu_docs = Documentation menu_contact = Contact menu_back = Back ; General site_welcome = Welcome site_footer = © 2025 My Company [sl] ; Navigacija menu_home = Domov menu_docs = Dokumentacija menu_contact = Kontakt menu_back = Nazaj ; Splošno site_welcome = Dobrodošli site_footer = © 2025 Moje podjetje ---- ===== Obravnava napak ===== ==== Vedenje pri manjkajocem kljucu ==== ^ Scenarij ^ Vedenje ^ | Kljuc ni najden | Vrne sam kljuc | | Jezik ni v INI | Nadomestna vrednost na ''defaultLang'' | | Nadomestna vrednost ni na voljo | Vrne kljuc | | Neveljaven format | Vrne original | ==== Razhroščevanje ==== Ce se pojavijo tezave, preverite: * Ali je vticnik omogocen? (Skrbnik → Vticniki) * Ali so prevodi pravilno formatirani? (INI sintaksa) * Ali je vrednost ''langPosition'' pravilna? * Ali jezik obstaja na seznamu ''languages''? ---- ===== Zmogljivost ===== ==== Priporocila ==== | Scenarij | Priporocilo | | Malo prevodov (<50) | Normalna uporaba | | Veliko prevodov (50-500) | Združite po podrocju | | Zelo veliko prevodov (>500) | Razdelite v wvdschunk | ==== Predpomnjenje ==== Strani z ''{{wvds:lang>...}}'' naj uporabljajo ''~~NOCACHE~~'', ce se mora vsebina spreminjati glede na jezik. ---- ===== Zgodovina verzij ===== ^ Verzija ^ Datum ^ Spremembe ^ | 1.0.0 | 2025-01-06 | Zacetna izdaja | ---- ===== Glej tudi ===== * [[wvdschunk]] - Veckratno uporabni HTML bloki * [[wvdsif]] - Pogojna vsebina po jeziku * [[flat]] - Predloga s preklopnikom jezika ---- ===== Tehnicna referenca ===== ==== Razred: syntax_plugin_wvdslang ==== **Datoteka:** ''lib/plugins/wvdslang/syntax.php'' ^ Metoda ^ Opis ^ | ''getType()'' | Vrne ''substition'' | | ''getSort()'' | Vrne ''305'' (pred wvdschunk) | | ''connectTo($mode)'' | Registrira vzorec ''\\{\\{wvds:lang[^}]*>[^}]+\\}\\}'' | | ''handle($match, ...)'' | Razcleni sintakso, izvlece kljuc in jezik | | ''render($mode, ...)'' | Zamenja oznako s prevedeno vrednostjo | ==== Razred: helper_plugin_wvdslang ==== **Datoteka:** ''lib/plugins/wvdslang/helper.php'' ^ Metoda ^ Parametri ^ Vrne ^ Opis ^ | ''getLang()'' | - | string | Doloci trenutni jezik | | ''get()'' | $key, $lang=null | string | Vrne prevod | | ''parseTranslations()'' | $ini | array | Razcleni INI v polje | | ''parseValue()'' | $value, $lang | string | Izvlece jezikovno vrednost iz formata s crtami | ==== Uporaba v predlogah ==== // V datotekah predlog (main.php, itd.) $helper = plugin_load('helper', 'wvdslang'); if ($helper) { $lang = $helper->getLang(); $homeText = $helper->get('menu_home'); echo "$homeText"; } ==== Uporaba v drugih vticnikih ==== // V drugih vticnikih $langHelper = plugin_load('helper', 'wvdslang'); if ($langHelper) { $translated = $langHelper->get('my_key'); } ---- {{wvds:snippet>wvds_audit_badge}} ~~DISCUSSION~~