This is an old revision of the document!


Multilingual/Multidomain

Wie kann ich eine mehrsprachige Seite erstellen?

- Grundlagen :Ebenen (Level) und IDs - Navigation - Schalter für unterschiedliche Domains

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

Z.B.: 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 relativ adressiert. Wir brauchen das für die richtige Navigation.

Jede Sprache [en] & [de] hat einen eigenen Kategorienbaum (ADMIN → Seitenstruktur).

Und jede Spache [en] & [de] hat seine eigene Vorlage (Template).

<note> Bitte erstellen Sie als erstes die Vorlagen für die einzelnen Sprachen :!: </note>

Sprachschalter in der Vorlage

Wir benötigen zwei Links in jeder Vorlage, um auf die jeweils andere Sprache umschalten zu können.

Einfache Version:

<!-- ===== Spach-Schalter [en] //-->
<div id="language_switch">
  <a href="index.php?de" target="_self">Switch to german</a> | <a href="index.php?en" target="_self">enlish active</a>
</div>
<!-- ===== Ende Sprach-Schalter //-->
<!-- ===== Spach-Schalter [de] //-->
<div id="language_switch">
  <a href="index.php?de" target="_self">Deutsch aktiv</a> | <a href="index.php?en" target="_self">Englisch</a>
</div>
<!-- ===== Ende Sprach-Schalter //-->

In diesem Beispiel wird ein kleines Flaggenbild mit den Abmessungen 23x15px verwendet (CSS eingebunden).

In der Vorlage [en] kann verwendet werden z.B.:

<!-- ===== Spach-Schalter [en] //-->
<div id="language_switch">
<div id="flag_de"><a href="index.php?de" target="_self"><img src="img/leer.gif" border="0" vspace="0" hspace="0" alt="german" width="23" height="15" title="switch to german" /></a></div>
 
<div id="flag_en_act"><a href="index.php?en" target="_self"><img src="img/leer.gif" border="0" vspace="0" hspace="0" alt="english" width="23" height="15" title="enlish active" /></a></div>
</div>
<!-- ===== Ende Sprach-Schalter //-->

In der Vorlage [de] kann verwendet werden z.B.:

<!-- ===== Spach-Schalter [de] //-->
<div id="language_switch">
<div id="flag_de_act"><a href="index.php?de" target="_self"><img src="img/leer.gif" border="0" vspace="0" hspace="0" alt="deutsch" width="23" height="15" title="Deutsch aktiv" /></a></div>
 
<div id="flag_en"><a href="index.php?en" target="_self"><img src="img/leer.gif" border="0" vspace="0" hspace="0" alt="englisch" width="23" height="15" title="umschalten nach Englisch" /></a></div>
</div>
<!-- ===== End Language switch [de] //-->

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

E.g. Die horizontale Ausgabe:

+---------------------------------------------------------------------+
| [en_category_01] [en_category_02] [en_category_03] [en_category_04] |
+---------------------------------------------------------------------+
en: <div class="nlu_horiz1">{NAV_LIST_UL:F,01,1,act_path,active}</div>
de: <div class="nlu_horiz1">{NAV_LIST_UL:F,11,1,act_path,active}</div>

(Eine Ebene (Level) tief).

Z.B. Die vertikale Sub-Ausgabe für die aktive Kategorie en_category_02 bei der Verwendung von 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.
I nenne es Level-Lift. (Bitte auch hier schauen - NAV_LIST_UL (CSS) (am Ende).

[PHP]
if(isset($GLOBALS['LEVEL_ID'][1])) {
  $level_id = $GLOBALS['LEVEL_ID'][1];
  echo '<div class="nlu_navi1">'.LF;
  echo '{NAV_LIST_UL:F,'.$level_id.',,act_path,active,,,}';
  echo '</div>';
  }
[/PHP]

Wobei LEVEL_ID'[X] die Ebene (Level) ist.


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

<note> 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.

Mit LEVEL_ID[1] kennen sie immer die Startebenen-ID für die Menüs. </note>

Kopieren Sie den Programmteil in das Verzeichnis include/inc_script/frontend_init/

Bedingung:/config/phpwcms/conf.inc.php

  • $phpwcms['allow_ext_init'] = 1;


(Eine kurze Version diese Skipts finden Sie in: /template/inc_Script/frontend_init/disabled/domaincheck.php).

rt_domainswitch.php

<?php
// compare against current domain and redirect to correct if neccessary
// http://www.phpwcms.de/forum/viewtopic.php?p=73771
// Installation: Put this snippet into the folder /frontend_init/
// and switch at conf.inc.php: $phpwcms['allow_ext_init']    = 1;
// E.g.:
// Startpoint from mydomain1.com is the ID=01 -> $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');
            }
      }
}
?>
deutsch/phpwcms-system/admin/seitenstruktur/multilingual.1252742583.txt.gz · Last modified: 2018/06/03 18:06 (external edit)
www.planmatrix.de www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0