Sprachenwirrwar - Der Versuch einer Ordnung

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
gb
Regular
Posts: 10
Joined: Mon Mar 06, 2006 10:20 pm

Sprachenwirrwar - Der Versuch einer Ordnung

Post by gb »

Hi all!

Nach langem Suchen nach einem geeigneten blog script bin ich endlich auf s9y gestoßen. Meine Vorgaben waren grob:

- smarty basierend
- userinterface in mehreren sprachen
- artikel in mehreren sprachen
- einbindung in vorhandenes design

derzeit stehe ich vor einem problem und habe eine weitere frage.

ad problem:

Unsere Website gibt es in 3 Sprachen die jeweils in subdomains aufgerufen werden (de.domain.com, en.domain.com und fr.domain.com)

Abhängig von der jeweiligen Subdomain (wie praktisch) wollte ich jetzt automatisch die Sprache des Userinterfaces festlegen. Dazu dachte ich lege ich im template ordner eine Datei "config.inc.php" mit folgendem Inhalt:


Code: Select all

<?php 
if ($_SERVER['HTTP_HOST'] == 'fr.domain.com') {
 $serendipity['lang'] = 'fr'; 

} elseif ($_SERVER['HTTP_HOST'] == 'en.domain.com') {
 $serendipity['lang'] = 'en'; 

} elseif ($_SERVER['HTTP_HOST'] == 'de.domain.com') {
 $serendipity['lang'] = 'de'; 

} 

?>
Die variable $serendipity['lang'] dürfte aber so nicht stimmen oder doch? Wenn ja muß ich sonst noch etwas ändern?

ad Frage:
Habe schon einige Projekte mit smarty gemacht, allerdings finde ich die Option nicht um debugging einzuschalten. Primär hätte ich gerne das Pop up, welches mir alle verfügbaren smarty variablen anzeigt.

Bitte um Hilfe

lg
gb
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Re: Sprachenwirrwar - Der Versuch einer Ordnung

Post by garvinhicking »

Hi!

Grundsätzlich war Deine Idee schon nicht schlecht; jedoch fragt der Code den HTTP_HOST leider zu spät ab.

Die Sprachdatei muss nämlich recht früh im Serendipity Kontrollfluss eingebunden werden; nämlich noch bevor die 'config.inc.php' des Templates geladen wird.

Du hast nun mehrere möglichkeiten, wo Du Deinen Code unterbringst.

Die warhscheinlich portabelste und schönste Lösung wäre mittels eines ganz einfachen Plugins:

Code: Select all

<?php

class serendipity_event_langdetect extends serendipity_event {
    function introspect(&$propbag) {
        global $serendipity;

        $propbag->add('name',          'Language:Host detection');
        $propbag->add('description',   '');
        $propbag->add('stackable',     false);
        $propbag->add('author',        'Garvin Hicking');
        $propbag->add('requirements',  array('serendipity' => '0.8', 'smarty' => '2.6.7', 'php' => '4.1.0'));
        $propbag->add('groups',        array());
        $propbag->add('version',       '1.0');
        $propbag->add('event_hooks',   array());

        $newlang = null;
        if ($_SERVER['HTTP_HOST'] == 'fr.domain.com') {
            $newlang = 'fr';
        } elseif ($_SERVER['HTTP_HOST'] == 'en.domain.com') {
            $newlang = 'en';
        } elseif ($_SERVER['HTTP_HOST'] == 'de.domain.com') {
            $newlang = 'de';
        }
        
        if ($newlang) {
            // include/functions_config.inc.php, serendipity_getSessionLanguage() handles the variable below
            $serendipity['GET']['lang_selected'] = $newlang;
        }
    }

    function generate_content(&$title) {
        $title = $this->title;
    }

    function event_hook($event, &$bag, &$eventData, $addData = null) {
        global $serendipity;
        return false;
    }
}
Andere Lösungen beschreibe ich nicht im Detail, da diese entweder die zentrale serendipity_config.inc.php patchen würde oder mit .htaccess umleitungen zusammenhingen. Ich denke, das Plugin ist daher am sinnvollsten.

Was unser Smarty Framework angeht, da solltest Du Dir mal die Datei include/functions_smarty.inc.php ansehen, insbesondere die serendipity_smarty_init() Funktion, die für Debugging etc. Optionen zuständig ist.

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/
gb
Regular
Posts: 10
Joined: Mon Mar 06, 2006 10:20 pm

Post by gb »

Hallo Garvin!

Danke für die Erläuterungen und den Hinweis auf die serendipity_smarty_init() function.

Den Plugin Code habe ich soweit auch verstanden, nur wie installiere ich das update? Ich habe im Unterordner "plugins" einen Ordner "serendipity_event_langdetect" erstellt und darin ein php namens "serendipity_event_langdetect.php"

Im Installationsmenü erscheint es nun nicht. Was ist zu tun?

-----edit------
sorry, hab's gefunden (nach deinstallation von spartacus). teste jetzt...
-----------

lg
Gerwin
gb
Regular
Posts: 10
Joined: Mon Mar 06, 2006 10:20 pm

Post by gb »

Hi!
Scheint nicht zu funktionieren. Das plugin ist jetzt installiert und die Domains sind angepasst. Die Interfacesprache ändern sich leider allerdings noch nicht.

lg
Gerwin
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Leider hast Du recht, ich war mit dem Plugin wohl etwas zu voreilig und habe meinen eigenen TODO-Hinweis in der funktion nicht gelesen.

Das Plugin setzt die Variable leider auch zu spät. Die einzige Möglichkeit ist daher den Abfrage-Code in die Datei serendipity_config_local.inc.php zu setzen; dort kannst du auch beliebigen PHP Code nach der Zeile

Code: Select all

	// You can place your own special variables after here:
einfügen, auch deine HTTP-Host Abfrage.

Sorry für den Fehlhinweis

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/
gb
Regular
Posts: 10
Joined: Mon Mar 06, 2006 10:20 pm

Post by gb »

tausend dank. funktioniert wunderbar. ich habe an anderer stelle gefragt ob es jetzt schon sinn macht die beta 1.0 bei einer neusinstallation zu verwenden.

können in der 1.0 er Version solche Änderungen wir hier 1 zu 1 übernommen werden oder sind da grundlegende Dinge anders?

lg
Gerwin
garvinhicking
Core Developer
Posts: 30022
Joined: Tue Sep 16, 2003 9:45 pm
Location: Cologne, Germany
Contact:

Post by garvinhicking »

Hi!

Da wir bei Serendipity viel Wert auf Rückwärtskompatibilität achten kannst du diesen Patch auch 1:1 für die 1.0 oder 1.1 Version verwenden.

Die Datei die Du patchst ist auch versionsunabhängig, und Serendipity achtet beim umkonfigurieren auch darauf, dass die Zeilen nach "Insert your line here" beibehalten werden!

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/
Post Reply