Hi!
Also, sagen wir Du willst den Titel des Plugins "Freie Artikel-Tags" sprachabhängig haben.
Dazu ist folgendes zu tun:
1. In der normalen s9y Pluginadministration das Plugin "Freie Artikel-Tags" konfigurieren. Als Titel trägst Du ein "MEIN_TAGTITEL".
2. Nun hast Du eine Sprachkonstante namens "MEIN_TAGTITEL" eingetragen und vorgesehen. Du musst nun für alle verfügbaren Sprachen diese Konstante definieren. Dazu erstellst Du in deinem Template-Verzeichnis jeweils eine lang_de.inc.php, lang_it.inc.php, lang_en.inc.php usw. (für jedes Sprachkürzel eine Datei). Dasselbe musst Du auch im UTF-8 Unterverzeichnis tun, so dass Du am Ende folgende Dateien für Deutsch und Englisch hättest:
templates/bulletproof/lang_de.inc.php
templates/bulletproof/lang_en.inc.php
templates/bulletproof/UTF-8/lang_de.inc.php
templates/bulletproof/UTF-8/lang_en.inc.php
In diese Datei trägst Du am Ende jeweils folgendes ein:
(lang_de.inc.php)
Code: Select all
@define('MEIN_TAGTITEL', 'Freie Artikel-Tags, Deutsch');
(lang_en.inc.php)
Code: Select all
@define('MEIN_TAGTITEL', 'Article tags, English');
Die Dateie im Stammverzeichnis müssen mit ISO-8859-1 Kodierung gespeichert sein, die Dateien in UTF-8/ müssen als UTF-8 Zeichensatz gespeichert sein.
Jetzt hat man seine Sprachkonstanten im Template und muss dafür sorgen, dass die auch ausgewertet werden.
3. Dazu nimmt man sich der Datei "sidebar.tpl" an. Da wird der Plugin-Seitenleistentitel immer ausgegeben. Im Bulletproof-Template sieht das so aus:
Code: Select all
<h3 class="serendipitySideBarTitle {$item.class}">{$item.title}</h3>
Standardmäßig landet in $item.title genau die Zeichenkette die man im Plugin eingetragen hat. Bei uns wäre das also "MEIN_TAGTITEL". Damit diese Variable brav aber als sprachabhängige Zeichenkette ausgegeben wird, muss man dafür sorgen dass nicht die ZEichenkette selbst dargestellt wird, sondern der Inhalt der so benannten Sprachkonstante.
Dazu ändert man die Abfrage wie folgt ab:
Code: Select all
<h3 class="serendipitySideBarTitle {$item.class}">{$item.title|serendipity_constant}</h3>
Das sorgt dafür, dass eine Smarty-Funktion namens "serendipity_constant" aufgerufen wird, als Parameter wird der Name der Konstanten übermittlet.
4. Diese Funktion gibt es aber noch nicht, daher müssen wir sie in der templates/config.inc.php erstellen/anpassen. Der folgende Code kann an beliebiger Stelle eingebunden werden, am sinnvollsten nach dem $serendipity['smarty']->assign(...) Befehl in Zeile 14:
Code: Select all
function serendipity_constant($zeichenkette) {
if (defined($zeichenkette)) {
return constant($zeichenkette);
} else {
return $zeichenkette;
}
}
$serendipity['smarty']->register_modifier('serendipity_constant', 'serendipity_constant');
Der Modifier (streng genommen ist es keine Smarty-Funktion) sorgt dann dafür, dass die Konstante geliefert wird wenn eine existiert.
Nun sollte beim Aufruf des Blogs also der Inhalt der vom Besucher abhängigen Sprache da stehen.
Analog kann man das ganze für die Navigation durchführen:
1. Namen einer Konstante als Menüpunktnamen hinterlegen.
2. Sprachkonstanten in Sprachvariablendateien einbauen.
3. Smarty-Modifier in der config.inc.php einbauen.
4. Diesmal die index.tpl statt sidebar.tpl bearbeiten, und dort bei der Navigationsausgabe anstelle von:
Code: Select all
{foreach from=$navlinks item="navlink" name=navbar}
<li class="{if $currpage==$navlink.href}currentpage{/if}{if $smarty.foreach.navbar.first} navlink_first{/if}{if $smarty.foreach.navbar.last} navlink_last{/if}"><a href="{$navlink.href}" title="{$navlink.title}">{$navlink.title}</a></li>
{/foreach}
lieber folgendes nutzen:
Code: Select all
{foreach from=$navlinks item="navlink" name=navbar}
<li class="{if $currpage==$navlink.href}currentpage{/if}{if $smarty.foreach.navbar.first} navlink_first{/if}{if $smarty.foreach.navbar.last} navlink_last{/if}"><a href="{$navlink.href}" title="{$navlink.title|@serendipity_constant}">{$navlink.title|@serendipity_constant}</a></li>
{/foreach}
Sprich, überall wo man eigentlich Sprachkonstanten eingibt muss der
|serendipity_constant modifier angehangen werden, damit eine Konstante in eine Zeichenkette umgewandelt wird.
Grüße,
Garvin