{{indexmenu_n>10}} ====== Multilingual/Multidomain ====== **Wie kann ich eine mehrsprachige Seite erstellen?** * Für jede Sprache benötigen wir einen eigenen Kategorienbaum. * Jede Sprache bekommt eine eigene Vorlage //(Template)// mit Links //(Schalter)// in die anderen Sprachbäume hinein. * Die Navigation beginnt einfach mit der ersten //(root)// ID der jeweiligen Sprachkategorie. Version: V1.2.7 - 1.x.x Forum: [[http://forum.phpwcms.org/viewtopic.php?p=83791#p83791]] ===== Grundlagen: Level und IDs für eine mehrsprachige Seite ===== Ein Beispiel in dem die beiden Sprachen Englisch [en] und Deutsch [de] verwendet werden //(IDs sind frei erfunden)//. ------------------------------------ L E V E L -: : : : : -0 1 2 3 4 <- LEVEL-Nr.) -: : : : : -+ home : : ID=0 -+--+ en ID=01 -+--+--+ en_category_01 ID=02 -+--+--+ en_category_02 ID=03 -+--+--+--+ en_category_02_01 ID=05 -+--+--+--+--+ en_category_02_01_01 ID=07 -+--+--+--+--+ en_category_02_01_02 ID=08 -+--+--+--+ en_category_02_02 ID=06 -+--+--+--+ en_category_02_03 ID=09 -+--+--+ en_category_03 ID=04 -+--+--+ en_category_04 ID=10 -: : : : : -+--+ de ID=11 -+--+--+ de_Kategorie_01 ID=12 -+--+--+ de_Kategorie_02 ID=13 -+--+--+--+ de_Kategorie_02_01 ID=15 -+--+--+--+--+ de_Kategorie_02_01_01 ID=17 -+--+--+--+--+ de_Kategorie_02_01_02 ID=18 -+--+--+--+ de_Kategorie_02_03 ID=16 -+--+--+--+ de_Kategorie_02_03 ID=19 -+--+--+ de_Kategorie_03 ID=14 -+--+--+ de_Kategorie_04 ID=20 Kategorie -: : : : : -0 1 2 3 4 <- LEVEL Nr. ------------------------------------ **Ebenen basiert:** Die Ebenen //(Level)// werden bei Verwendung einer geteilten Navigation (z.B. horizontal und vertikal) relativ adressiert. Siehe "Level-Lift" unten. \\ Jede Sprache [en] & [de] hat einen eigenen Kategorienbaum //(ADMIN -> Seitenstruktur)//. Und jede Spache [en] & [de] hat ihre eigene Vorlage //(Template)//. **Bitte erstellen Sie zuerst die Vorlagen für die einzelnen Sprachen** :!: Erst danach werden die Sprachbäume angelegt. \\ Es hat sich als sinnvoll herausgestellt, die Seite in einer Sprache fertigzustellen und dann den kompletten Sprachbaum für die Verwendung anderer Sprachen zu kopieren. Danach werden den kopierten Kategorien die sprachspezifischen Überschriften und Aliasnamen gegeben. ~~UP~~ ===== Sprachschalter in der Vorlage ===== Wir benötigen zwei Links in jeder Vorlage, um auf die jeweils andere Sprache umschalten zu können. **Einfache Version:**
Switch to german | english active
Deutsch aktiv | umschalten nach Englisch
\\ In diesem Beispiel wird ein kleines Flaggenbild mit den Abmessungen 23x15px verwendet //(CSS eingebunden)//. **In der Vorlage [en] kann verwendet werden z.B.:**
german
english
**In der Vorlage [de] kann verwendet werden z.B.:**
deutsch
englisch
~~UP~~ ===== NAVIGATION ===== Eine einfache vertikale Navigation für die linke oder rechte Seite, die den Tag **{NAV_LIST_UL:F ........** verwendet. * **en:** {NAV_LIST_UL:F,**01**,,act_path,active,,,} * **de:** {NAV_LIST_UL:F,**11**,,act_path,active,,,} \\ ==== Kombination aus einer horizontalen & vertikalen Navigation ==== Z.B. Die horizontale Ausgabe: +---------------------------------------------------------------------+ | [en_category_01] [en_category_02] [en_category_03] [en_category_04] | +---------------------------------------------------------------------+ en:
{NAV_LIST_UL:F,01,1,act_path,active}
de:
{NAV_LIST_UL:F,11,1,act_path,active}
(Eine Ebene //(Level)// tief). Z.B. Die vertikale Sub-Ausgabe für die aktive Kategorie **en_category_02** bei der Verwendung von [[deutsch:navigationen:kleine-helfer:level-lift|Level-Lift]]. ##[en_category_01] **[en_category_02]** [en_category_03] [en_category_04]## +----------------------+ | [en_category_02_01] | | [en_category_02_02] | | [en_category_02_03] | +----------------------+ \\ Bitte kopieren Sie den Programmteil in jede Sprachvorlage. So wird eine ID basierte navigation zu einer Ebenen (Level)-basierten Navigation. \\ Ich nenne es [[deutsch:navigationen:kleine-helfer:level-lift|Level-Lift]]. (Bitte auch hier schauen - [[deutsch:navigationen:nav_list_ul|NAV_LIST_UL (CSS)]] (am Ende). [PHP] if(isset($GLOBALS['LEVEL_ID'][1])) { $level_id = $GLOBALS['LEVEL_ID'][1]; echo '
'.LF; echo '{NAV_LIST_UL:F,'.$level_id.',,act_path,active,,,}'; echo '
'; } [/PHP]
Wobei LEVEL_ID'[**X**] die Ebene //(Level)// ist. ~~UP~~ \\ ===== Schalter für verschiedene Domains ===== **Diese Schalter wird nur gebraucht, wenn jede Sprache über eine eigene Domain angesteuert wird.** :!: Forum: [[http://www.phpwcms.de/forum/viewtopic.php?p=73725#73725]] Hier ist ein Schalter, der mit zwei Domains **mydomain1.com** und **mydomain2.com** arbeit und folgenden HTTP Status Code generiert: \\ ##HTTP Status Code: HTTP/1.1 301 Moved Permanently## Bitte verwenden Sie ausschließlich diesen Eintrag in der config: \\ $phpwcms['site'] = 'http://'.$_SERVER['SERVER_NAME'].'/'; \\ **$_SERVER['SERVER_NAME']** should always contain the current called Domain. Kopieren Sie den Programmteil in das Verzeichnis **include/inc_script/frontend_init/ ** **Bedingung:** -> [[http://www.phpwcms-docu.de/confincphp_de.phtml|/config/phpwcms/conf.inc.php]] \\ * $phpwcms['allow_ext_init'] = 1; \\ **In das Skript müssen natürlich Ihre Domain- und Start-Aliasnamen eingetragen werden.** \\ //(Eine kurze Version diese Skipts finden Sie in: /template/inc_Script/frontend_init/disabled/domaincheck.php).// $LEVEL_ID[1] = 1 // Startpoint from mydomain2.com is the ID=11 -> $LEVEL_ID[1] = 11 // // PHPWCMS_URL -> http://mydomainX.com/ // returnGlobalGET_QueryString() -> ?alias // $aktion[0] == 0 -> pointer at the root level if(isset($LEVEL_ID[1])) { // Pointer behind the root level ? // Yes -> check active Domain behind root level if($LEVEL_ID[1] == 1 && strpos(PHPWCMS_URL, 'mydomain1.com') === false) { // E.g. Using the ID=1 (for maydomain1.com) but with the domain maydomain2.com, than switch back to .mydomain1.com // E.g. http://www.mydomain2.com/index.php?1-contact switch to http://www..mydomain1.com/index.php?1-contact headerRedirect('http://www.mydomain1.com/index.php'.returnGlobalGET_QueryString()); } else { // The same for the domain mydomain2.com if($LEVEL_ID[1] == 11 && strpos(PHPWCMS_URL, 'mydomain2.com') === false) { headerRedirect('http://www.mydomain2.com/index.php'.returnGlobalGET_QueryString()); } } } else { // check root level for active Domain if($aktion[0] == 0) { // pointer on the root level e.g. http://mydomain1.com/ ?? if(strpos(PHPWCMS_URL, 'mydomain1.com')) { // Yes, go to my startpage for the domain 1 header( "HTTP/1.1 301 Moved Permanently" ); headerRedirect('http:/www.mydomain1.com/index.php?mydomain1_start'); } elseif(strpos(PHPWCMS_URL, 'mydomain2.com')) { // The same for domain 2 header( "HTTP/1.1 301 Moved Permanently" ); headerRedirect('http://www.mydomain2.com/index.php?mydomain2_start'); } else { //redirect to "default" -> Fallback if there is an third domain or what ever header( "HTTP/1.1 301 Moved Permanently" ); headerRedirect('http://www.default.com/index.php?default_start'); } } } ?>