Zweisprachigkeit: Navigationsleisten-Links
Zweisprachigkeit: Navigationsleisten-Links
Hallo,
ich verwende für einen Blog das Bullet-Proof-Template, damit über dem Banner eine Navigation angezeigt wird.
Im Blog erscheinen Inhalte in zwei Sprachen, mittels der Plugins Sprachauswahl und des HTML nuggets für Sprachen.
Gibt es eine Möglichkeit die Navigation über dem Banner auch in beiden Sprachversionen anzeigen zu lassen?
Nehmen wir als Beispiel den Punkt "Kontakt" / "Contact".
Und eine weitere Frage zur Zweisprachigkeit. Es gibt Elemente, die bei Sprachwechsel (Plugin:Sprachauswahl) ebenfalls auf die neue Sprache umstellen, aber eben auch Elemente, die sich davon nicht berühren lassen.
Ein Element, dass davon "unberührt" bleibt ist z.B. das Plugin "Artikel Tags" oder "Syndicate this Blog".
Wie kann man das steuern?
ich verwende für einen Blog das Bullet-Proof-Template, damit über dem Banner eine Navigation angezeigt wird.
Im Blog erscheinen Inhalte in zwei Sprachen, mittels der Plugins Sprachauswahl und des HTML nuggets für Sprachen.
Gibt es eine Möglichkeit die Navigation über dem Banner auch in beiden Sprachversionen anzeigen zu lassen?
Nehmen wir als Beispiel den Punkt "Kontakt" / "Contact".
Und eine weitere Frage zur Zweisprachigkeit. Es gibt Elemente, die bei Sprachwechsel (Plugin:Sprachauswahl) ebenfalls auf die neue Sprache umstellen, aber eben auch Elemente, die sich davon nicht berühren lassen.
Ein Element, dass davon "unberührt" bleibt ist z.B. das Plugin "Artikel Tags" oder "Syndicate this Blog".
Wie kann man das steuern?
-
garvinhicking
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Re: Zweisprachigkeit: Navigationsleisten-Links
Hi!
Leider nein, die Konfiguration des Bulletproof-Templates lässt sich so ohne weiteres nicht auf Sprachversionen ausweiten.
Du müsstest dafür vermutlich das index.tpl template selbst in einem Editor anpassen um dort die gerade aktive Sprachvariante zu prüfen (über Smarty If-Abfragen) und dann die korrekte Navigationsbezeichnung einzufügen.
Etwas sexier kann man das dann lösen indem man Sprachkonstanten einsetzt, die man in dem jeweiligen Sprach-Include definiert. Und dann gibt man die Konstanten im Template aus, ansteller von Begriffen die man in den Bulletproof-Optionen festlegt. Dort gibt man dann nur den Konstantennamen ein.
Da das etwas komplex ist, sag mir erstmal ob Du das machen willst. Wenn ja, kann ich das mit den Sprachkonstanten noch genauer erklären.
Geht also alles, ist nur nahe dran an Programmierung.
Grüße,
Garvin
Leider nein, die Konfiguration des Bulletproof-Templates lässt sich so ohne weiteres nicht auf Sprachversionen ausweiten.
Du müsstest dafür vermutlich das index.tpl template selbst in einem Editor anpassen um dort die gerade aktive Sprachvariante zu prüfen (über Smarty If-Abfragen) und dann die korrekte Navigationsbezeichnung einzufügen.
Etwas sexier kann man das dann lösen indem man Sprachkonstanten einsetzt, die man in dem jeweiligen Sprach-Include definiert. Und dann gibt man die Konstanten im Template aus, ansteller von Begriffen die man in den Bulletproof-Optionen festlegt. Dort gibt man dann nur den Konstantennamen ein.
Da das etwas komplex ist, sag mir erstmal ob Du das machen willst. Wenn ja, kann ich das mit den Sprachkonstanten noch genauer erklären.
Hier gilt dasselbe, Konfigurationswerte von Plugins und Templates speichern in der Datenbank fest einen Stringwert, da es für unterschiedliche Sprachen keine eigenen Felder gibt. Man kann das nur lösen indem man der Datenbank Konstantennamen vortäuscht die man dann definiert und über Template-Modifikationen ausliest.Ein Element, dass davon "unberührt" bleibt ist z.B. das Plugin "Artikel Tags" oder "Syndicate this Blog".
Wie kann man das steuern?
Geht also alles, ist nur nahe dran an Programmierung.
Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
-
garvinhicking
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Hi!
Mache ich gerne, gib mirallerdings bitte Zeit bis Montag, ich bin am Wochenende unterwegs
Viele Grüße,
Garvin
Mache ich gerne, gib mirallerdings bitte Zeit bis Montag, ich bin am Wochenende unterwegs
Viele Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
-
garvinhicking
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
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)
(lang_en.inc.php)
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:
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:
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:
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:
lieber folgendes nutzen:
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
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');
Code: Select all
@define('MEIN_TAGTITEL', 'Article tags, English');
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>
Dazu ändert man die Abfrage wie folgt ab:
Code: Select all
<h3 class="serendipitySideBarTitle {$item.class}">{$item.title|serendipity_constant}</h3>
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');
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}
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}
Grüße,
Garvin
Last edited by garvinhicking on Mon Jul 14, 2008 2:00 pm, edited 1 time in total.
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
-
garvinhicking
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Hi!
Eine weiße Seite heißt meist, dass PHP Parse Error vorliegen. Hast Du Zugriff auf deine PHP Errorlogs?
Wie sieht deine config.inc.php denn jetzt aus, wo hast Du da genau die serendipity_constant Funktion mit eingebaut?
Ab welchem Punkt erhälst Du die weiße Seite?
Grüße,
Garvin
Eine weiße Seite heißt meist, dass PHP Parse Error vorliegen. Hast Du Zugriff auf deine PHP Errorlogs?
Wie sieht deine config.inc.php denn jetzt aus, wo hast Du da genau die serendipity_constant Funktion mit eingebaut?
Ab welchem Punkt erhälst Du die weiße Seite?
Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Leider nicht.
Ich habe es hier eingebaut:
Kommentiere ich die Änderungen in der Config aus, steht folgendes da:
Ich habe es hier eingebaut:
Die weiße Seite erhalte ich, wenn ich die Sidebar.tpl bearbeitet habe und dann die Config.inc.php$serendipity['smarty']->assign(array('currpage'=> "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']));
function serendipity_constant($zeichenkette) {
if (defined($zeichenkette)) {
return constant($zeichenkette)
} else {
return $zeichenkette;
}
}
$serendipity['smarty']->register_modifier('serendipity_constant', 'serendipity_constant');
if ($serendipity['GET']['adminModule'] == 'templates') {
$css_files = glob(dirname(__FILE__) . '/*_style.css');
foreach($css_files AS $css_file) {
$css_file = str_replace('_style.css', '', basename($css_file));
if (!isset($colorsets[$css_file])) {
$colorsets[$css_file] = $css_file;
}
}
}
Kommentiere ich die Änderungen in der Config aus, steht folgendes da:
Fatal error: Smarty error: [in file:D:/blog/testblog2/templates/building-bridges/sidebar.tpl line 11]: [plugin] (secure mode) modifier 'serendipity_constant' is not allowed (core.load_plugins.php, line 118) in D:\blog\testblog2\bundled-libs\Smarty\libs\Smarty.class.php on line 1095
-
garvinhicking
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Hi!
Mach mal aus dem
ein
Also auf's Semikolon am Ende achten.
Grüße,
Garvin
Mach mal aus dem
Code: Select all
return constant($zeichenkette)
Code: Select all
return constant($zeichenkette);
Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Zweisprachigkeit bei Kategorien
Hallo,
kann man auch einzelne Kategoriepunkte in verschiedenen Sprachen anlegen?
Besten Dank!
kann man auch einzelne Kategoriepunkte in verschiedenen Sprachen anlegen?
Besten Dank!
-
garvinhicking
- Core Developer
- Posts: 30022
- Joined: Tue Sep 16, 2003 9:45 pm
- Location: Cologne, Germany
- Contact:
Re: Zweisprachigkeit bei Kategorien
Ja, dafür kann man meine Beschreibung auch nutzen. Man muss das Konzept dann nur auf die plugin_categories.tpl übertragen.kann man auch einzelne Kategoriepunkte in verschiedenen Sprachen anlegen?
Grüße,
Garvin
# Garvin Hicking (s9y Developer)
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
# Did I help you? Consider making me happy: http://wishes.garv.in/
# or use my PayPal account "paypal {at} supergarv (dot) de"
# My "other" hobby: http://flickr.garv.in/
Re: Zweisprachigkeit: Navigationsleisten-Links
Hallo zusammen,
ich habe das obige Beispiel für unsere Seitennavigation genutzt. Das heißt,
Ich bin ratlos. Hat jemand eine Idee?
Viele Grüße,
Katrin
ich habe das obige Beispiel für unsere Seitennavigation genutzt. Das heißt,
- 1. in der config.inc.php den Block
hinzugefügt
Code: Select all
function serendipity_constant($zeichenkette) { if (defined($zeichenkette)) { return constant($zeichenkette); } else { return $zeichenkette; } } $serendipity['smarty']->register_modifier('serendipity_constant', 'serendipity_constant');
- 2. In der index.tpl an allen Stellen, an denen vorkommt, durch
Code: Select all
title="{$navlink.title}">{$navlink.title}ersetzt.Code: Select all
title="{$navlink.title|@serendipity_constant}">{$navlink.title|@serendipity_constant}
- 3. Zwei Sprachdateien im Templateverzeichnis (neue_Vorlage) und neue_Vorlage/UTF-8 angelegt.
lang_de.inc.php:undCode: Select all
<?php @define('MENU_1', 'Start'); @define('MENU_1', 'Kultur'); @define('MENU_1', 'Tagebuch');
lang_en.inc.php:Code: Select all
<?php @define('MENU_1', 'Home'); @define('MENU_2', 'Culture'); @define('MENU_3', 'Diary');
Ich bin ratlos. Hat jemand eine Idee?
Viele Grüße,
Katrin
Re: Zweisprachigkeit: Navigationsleisten-Links
Zu Fragen ist: Hast du die CONSTANTS auch in die templates/bulletproof/lang_en.inc.php eingetragen? (Ich könnte mir vorstellen, dass eine en Datei im UTF-8 Ordner nichts bringt)
Liegt der eingefügte modifier |@serendipity_constant auch wirklich innerhalb von {if $template_option.sitenavpos == 'below'} ??
Beachte, dass deine Beispiel-Konstante MENU_1 im <de> nicht alteriert.
Da die Function is defined abfragt, muss der eingefügte Code unterhalb von
liegen
Liegt der eingefügte modifier |@serendipity_constant auch wirklich innerhalb von {if $template_option.sitenavpos == 'below'} ??
Beachte, dass deine Beispiel-Konstante MENU_1 im <de> nicht alteriert.
Da die Function is defined abfragt, muss der eingefügte Code unterhalb von
Code: Select all
include dirname(__FILE__) . '/lang_en.inc.php';
function serendipity_constant($zeichenkette) { ....Regards,
Ian
Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian
Ian
Serendipity Styx Edition and additional_plugins @ https://ophian.github.io/ @ https://github.com/ophian