Hallo Oliver
Ich habe folgende Struktur:
-------------
ID1 = DEUTSCH
ID2 = FRANCAIS
ID3 = ENGLISH
ID4 = SHOP -->> Hier müssen die Shop-Sprachtemplates gezogen werden
-------------
Sobald ich mich in der Strukturebene 1, 2 oder 3 befinde, wird im Browser schön gerendert: <html lang="de">, <html lang="fr"> oder <html lang="en">. Wunderbar!
Doch der Shop (ID4) wird immer als <html lang="de"> ausgegeben. Dies ist die Standard-Definition in der conf.inc.php. Der Shop nimmt jetzt immer das "de.html"
Settings der conf.inc.php:
Code: Select all
$phpwcms['allowed_lang'] = array('de','fr','en');
$phpwcms['DOCTYPE_LANG'] = ' ';
$phpwcms['default_lang'] = 'de';
Dein Frontend Init Script habe ich angepasst:
Code: Select all
$phpwcms['id_lang'] = array(
// ID LANG
1 => 'de',
2 => 'fr',
3 => 'en'
);
Für den Sprachenwechsel habe ich das folgende Frontend-Renderscript im Einsatz:
Code: Select all
<?php
// ----------------------------------------------------------------
// obligate check for phpwcms constants
if (!defined('PHPWCMS_ROOT')) {
die("You Cannot Access This Script Directly, Have a Nice Day.");
}
// ----------------------------------------------------------------
// set allowed languages
// set $phpwcms['allowed_lang'] in conf.inc.php
// $phpwcms['allowed_lang'] = array('en', 'de', 'fr', 'es');
$language_default = 'de';
$language_current = $language_default;
$language_cookie_duration = 60*60*24*365; // 1 year
if(isset($_GET['lang'])) {
$language_current = strtolower( substr($_GET['lang'], 0, 2) );
$_SESSION['phpwcmsFrontendLanguage'] = $language_current;
setcookie('phpwcmsFrontendLanguage', $language_current, time()+$language_cookie_duration, '/' );
} elseif(isset($_SESSION['phpwcmsFrontendLanguage'])) {
$language_current = $_SESSION['phpwcmsFrontendLanguage'];
} elseif(isset($_COOKIE['phpwcmsFrontendLanguage'])) {
$language_current = $_COOKIE['phpwcmsFrontendLanguage'];
}
if(!in_array($language_current, $phpwcms['allowed_lang'])) {
$language_current = $language_default;
$_SESSION['phpwcmsFrontendLanguage'] = $language_current;
setcookie('phpwcmsFrontendLanguage', $language_current, time()+$language_cookie_duration, '/' );
}
// init language replacements
$language_regexp = array( 'search' => array(), 'replace' => array() );
// set all language replacements now
foreach($phpwcms['allowed_lang'] as $lang) {
$language_regexp['search'][$lang] = '/\['.$lang.'\](.*?)\[\/'.$lang.'\]/is';
$language_regexp['replace'][$lang] = $lang == $language_current ? '$1' : '';
}
$content['all'] = preg_replace($language_regexp['search'], $language_regexp['replace'], $content['all']);
$content["pagetitle"] = preg_replace($language_regexp['search'], $language_regexp['replace'], $content["pagetitle"]);
?>
Sollte ich grundsätzlich Sprachen anders managen als ich das bisher gemacht habe? Bisher habe ich ja 3 Sprachbäume im Einsatz. Ich habe gesehen, dass man für Seitenstruktur und Artikel auch Sprachen definieren kann. Und im Shop kann man auch die Produkte den Sprachen zuweisen. Was kannst Du mir empfehlen?