WvdS Internationalization (i18n)
i18n naredi vsebino strani večjezično, ne da bi stran podvojili: oznaka kljuc na svojem mestu vstavi besedilo v trenutnem jeziku – iz preglednice CSV, iz nastavitve ali neposredno iz oznake. Paket je namenjen avtorjem, ki pripravljajo menije, gumbe in gradnike v več jezikih, in razvijalcem predlog, ki ista besedila potrebujejo v kodi PHP.
Prvi koraki
Hitri začetek: izpis enega besedila v dveh jezikih – najkrajša pot do prvega rezultata, v treh korakih.
Ustvarite preglednico prevodov → Vstavite oznako na stran → Preverite izbiro jezika
Pogosta opravila
| Kaj želite | Za koga | Kje to naredite | Navodilo |
|---|---|---|---|
| vstaviti prevedeno besedilo | avtorji | oznaka kljuc | Prevajalski ključ |
| napisati prevod brez preglednice | avtorji | oznaka z jezikovnimi pari | Prevod v oznaki |
| izsiliti besedilo v določenem jeziku | avtorji | oznaka z navedbo jezika | Izrecno izbran jezik |
| prikazati vrednost nastavitve | avtorji | oznaka, ki kaže na nastavitev | Vrednost nastavitve |
| vzdrževati prevode | avtorji | preglednica CSV | Oblika CSV |
| razumeti, kateri jezik se izbere | vsi | – | Zaznavanje jezika |
| uporabiti ista besedila v kodi PHP | razvijalci | – | Integracija v predloge |
Opredelitev
Vtičnik wki18n zagotavlja funkcije za internacionalizacijo večjezične vsebine:
- Prevajalski ključi – iz datoteke CSV
- Prevodi v oznaki –
de:Text|en:Text - Vrednosti nastavitev – z razčlenjevanjem večjezičnih vrednosti
- Vrednosti predloge – z razčlenjevanjem večjezičnih vrednosti
Primeri uporabe
- Večjezična navigacija – besedila menijev v različnih jezikih
- Prevedljivi elementi vmesnika – gumbi, napisi, namigi
- Vključitev v predloge – stranska vrstica, noga, glava
- Prevodi na enem mestu – vsa besedila v eni datoteki CSV
Sintaksa
Prevajalski ključ
Domov Kontakt
Naloži vrednost iz preglednice prevodov (glej Oblika CSV) za trenutni jezik.
Izrecno izbran jezik
Startseite Home
Vsili določen jezik ne glede na brskalnik.
Prevod v oznaki
de:Ja|en:Yes|sl:Da de:Speichern|en:Save|sl:Shrani
Prevod neposredno v oznaki, brez datoteke CSV.
Vrednost nastavitve
conf:title conf:tagline
Prebere nastavitev DokuWiki in razčleni večjezične vrednosti v njej.
Nastavitev predloge
tpl:footerText tpl:topSidebarTitle
Prebere nastavitev predloge in razčleni večjezične vrednosti v njej.
Oblika CSV
Lastni prevodi sodijo v data/wki18n/i18n.csv (natančneje: <savedir>/wki18n/i18n.csv). Datoteka je zunaj mape vtičnika, preživi vsako posodobitev, spletni strežnik pa je ne streže:
key,de,en,sl menu_home,Startseite,Home,Domov menu_contact,Kontakt,Contact,Kontakt button_save,Speichern,Save,Shrani
Vtičnik v lib/plugins/wki18n/i18n.csv prinese le nekaj splošnih ključev (menu_home, menu_contact, menu_back); to datoteko vsaka namestitev zamenja. Lastna preglednica se prebere za njo in prevlada za vsak ključ in jezik: vrstica v njej nadomesti priloženo vrednost v vsakem jeziku, ki ga izpolni, prazna celica pa jo pusti. Vrstica, ki se začne z #, je komentar.
| Stolpec | Opis |
|---|---|
key | enolični ključ |
de | nemški prevod |
en | angleški prevod |
| … | drugi jeziki |
Zaznavanje jezika
Jezik se določi v tem vrstnem redu (helper.php, detectLanguage()):
- Jezik, ki ga je obiskovalec izrecno izbral –
?lang=slv zahtevi, sicer izbira, zapomnjena iz ene od prejšnjih zahtev (piškotek). Velja šele po zavestnem kliku v izbiri jezika; kdor nikoli ne izbira, tega ne opazi. - Pot imenskega prostora –
de:start→ de - Jezik okna, iz katerega je bila stran odprta – okno, kot je pogovorno okno za predstavnostne datoteke, ohrani jezik, v katerem je bilo odprto; ta se ne zapomni
- Glava brskalnika –
Accept-Language: de-DE→ de - Jezik DokuWiki –
$conf['lang'] - Privzeta vrednost vtičnika – nastavitev
defaultLang
Vsaka vrednost se preveri s seznamom languages; oznaka jezika, ki je na njem ni, se preskoči.
Nastavitve
| Možnost | Privzeto | Opis |
|---|---|---|
enabled | 1 | vklopi vtičnik |
languages | de,en,sl,it,hr | razpoložljivi jeziki |
defaultLang | en | privzeti jezik (kadar ni drugega) |
langPosition | 0 | položaj jezika v imenskem prostoru (0 = prva raven) |
Privzeto je vrednost, ki jo vtičnik prinese s seboj. Na tej namestitvi je languages nastavljen na de,en,sl.
Primeri
Primer 1: navigacija
===== menu_navigation ===== * [[..:start|Domov]] * [[..:docs:index|Projektna dokumentacija]] * [[..:contact|Kontakt]]
Rezultat (brskalnik: sl):
- Domov
- Projektna dokumentacija
- Kontakt
Primer 2: prevod v oznaki na gumbu
<button>de:Absenden|en:Submit|sl:Pošlji</button>
Primer 3: noga z nastavitvijo predloge
<footer> tpl:footerText </footer>
Primer 4: izrecno izbran jezik za povezave
Jeziki: [[..:de:start|Startseite]] |
[[..:en:start|Home]] |
[[..:sl:start|Domov]]
Rezultat:
- Jeziki: Startseite | Home | Domov
Integracija v predloge
Uporaba v PHP
<?php // Naloži pomočnika (helper) $helper = plugin_load('helper', 'wki18n'); if ($helper) { // Prevod za ključ echo hsc($helper->get('menu_home')); // Izrecno izbran jezik echo hsc($helper->get('menu_home', 'en')); // Razčleni prevod v oznaki echo hsc($helper->parseMultilang('de:Ja|en:Yes')); // Nastavitev predloge echo hsc($helper->getTplConfig('footerText')); } ?>
Migracija iz wvdslang
Iskanje in zamenjava
Staro: {{wk:lang>
Novo: {{wk:i18n>
Staro: {{wk:lang:
Novo: {{wk:i18n:
Opombe k različicam
| Različica | Datum | Spremembe |
|---|---|---|
| 1.0.0 | 2026-01-29 | prva izdaja (naslednik vtičnika wvdslang) |
Glejte tudi
- WvdS.DokuWiki.Cond Plugin – pogojna vsebina in preusmeritve
- Snippet – izseki HTML za večkratno uporabo
- WvdS.DokuWiki.Flat Template – predloga s preklopnikom jezika
Tehnična referenca
Razred: syntax_plugin_wki18n
Datoteka: lib/plugins/wki18n/syntax.php
| Metoda | Opis |
|---|---|
getType() | vrne substition (tako način zapiše jedro DokuWiki) |
getSort() | vrne 1 – pred internalmedia (320), da se ... ne prebere kot povezava na predstavnostno datoteko |
connectTo($mode) | registrira vzorce i18n |
handle($match, …) | razčleni sintakso in izlušči vsebino |
render($mode, …) | vrne prevedeno besedilo |
Razred: helper_plugin_wki18n
Datoteka: lib/plugins/wki18n/helper.php
| Metoda | Opis |
|---|---|
get($key, $lang) | vrne prevod za ključ |
parseMultilang($value, $lang) | razčleni obliko de:X|en:Y |
getConfig($key, $lang) | vrne nastavitev DokuWiki z razčlenjevanjem |
getTplConfig($key, $lang) | vrne nastavitev predloge z razčlenjevanjem |
detectLanguage() | zazna trenutni jezik |
getLanguages() | vrne nastavljene jezike |
getContentDir() | vrne imenik lastne preglednice prevodov, <savedir>/wki18n |
<wk:audit stack=„doku“ title=„wki18n Plugin“>
<wk:include ref="code:qualitaet" critical="true">[x][x][x][x]</wk:include> <wk:include ref="stacks:dokuwiki-php">[x][x][x][x][x]</wk:include> <wk:include ref="sicherheit:kritis" critical="true">[x][x][x][x][x]</wk:include>
</wk:audit>
DISCUSSION
Podatki o paketu
Vtičnik: wki18n
Različica: 1.0.0
Imenski prostor: lib/plugins/wki18n/
Avtor: Wolfgang van der Stille Wolfgang.van.der.Stille@gmail.com (The White Knight Labs)
Licenca: GPL 2
wvdslang.
Preusmeritve so bile premaknjene v vtičnik wvdscond (ločitev odgovornosti).