Author Topic: WebsiteBaker 2.8.4 und die Mehrsprachigkeit  (Read 5119 times)

jacobi22

  • Guest
WebsiteBaker 2.8.4 und die Mehrsprachigkeit
« on: December 06, 2013, 07:19:18 PM »
WebsiteBaker 2.8.4 und die Mehrsprachigkeit

Grundsätzlich gilt bei diesem Thema immernoch, was im Designer-Handbuch geschrieben steht. Aufgezeigt wird nachfolgend eine davon abweichende Methode für die WebsiteBaker Version 2.8.4.
___________________ ___________________ _________

Mit der Version  WB 2.8.4. verbessert sich die Handhabung mehrsprachiger Projekte. Wichtigster Punkt dabei ist eine saubere Struktur des Projekts. Jede verwendete Sprache sollte einen eigenen Zweig im Seitenbaum bilden. Es ist zwingend erforderlich, das alle Unterseiten eines Zweiges der gleichen Sprache zugeordnet werden. Eine doppelte Verwendung der gleichen Sprache in zwei verschiedenen Hauptzweigen sollte vermieden werden.

Wie sieht das im Projekt aus?

Im Idealfall startet man mit dem Anlegen einer Seitenstruktur, das bedeutet, man legt für jeden Sprachzweig, den man verwenden möchte, eine Startdatei an. Bewährt haben sich dabei Seiten vom Typ "MENU-LINK", da diese lediglich eine Weiterschaltung zur Startseite der jeweiligen Sprache bedeuten. Es ist aber ohne weiteres möglich, auch mit Seiten eines anderen Typ's zu arbeiten.

Im gezeigtem Beispiel beschränke ich mit auf Dateien vom Typ "Menu-Link". Ich habe fünf verschiedene Sprachen eingerichtet, jede dieser Sprachen bildet einen eigenen Zweig im Seitenbaum. Alle Hauptseiten haben hier je eine Unterseite mit dem Namen "Home".



Nun legen wir für unsere Hauptsprache die gewünschten Unterseiten an, dies sollte immer über den Button "Seite hinzufügen" geschehen, denn die eingestellte Sprache der Elternseite (unsere 1. Seite in jedem Zweig) vererbt sich bei korrekter Bedienung auch auf jede Unterseite, die angelegt wird.
 

Beachte: Seiten, die nicht über den Button "Seite hinzufügen" angelegt werden, bekommen immer die Sprache, die unter OPTION für das System eingestellt wurde.

Sprachzweige, die noch nicht fertig gestellt sind, lassen sich durch eine Veränderung der Einstellung "SICHTBARKEIT" in den Seiteneinstellungen  jeder Seite vorübergehend ausblenden, z.b. mit Sichtbarkeit= Privat oder Sichtbarkeit=registriert. Um einen kompletten Sprachzweig auszublenden, ist es ausreichend, nur der Hauptseite eine andere Sichtbarkeit zuzuordnen.

Das Flaggenmenü
WebsiteBaker 2.8.4 liefert das überarbeitete und fest im Core verankerte Modul "MultiLingual" mit, ebenso die entsprechenden Flaggen der installierten Sprachen im *.png- und im*.svg-Format. Der Aufruf des Flaggenmenü's erfolgt mit diesem Code an der gewünschten Stelle im Template:

Code: [Select]
<?php if(function_exists('language_menu')){ echo language_menu(); } ?>
Mit diesem Aufruf werden im Normalfall die Flaggen im SVG-Format angezeigt, ein Wechsel zu den PNG-Grafiken wird mit einem erweitertem Aufruf des Menüs gestartet.

Code: [Select]
<?php if(function_exists('language_menu')){ echo language_menu($sExtension "png"); } ?>
Alternativ läßt sich das Menü auch per Droplet aufrufen.
[[iMultiLingual?ext=svg]] oder [[iMultiLingual?ext=png]] oder mit [[iMultiLingual?ext=auto]]

Die Größe der angezeigten Flaggen läßt sich in der Datei modules/MultiLingual/tpl/lang.html.twig einstellen, in dem man die Werte bei img style anpasst, z.b. so

img style="width:21px; height:15px"

Es sollte vielleicht noch erwähnt werden, das SVG-Dateien in bestimmten Grenzen verlustfrei skalierbar sind. Das Maximum für die aktuellen Flaggen liegt bei 640 x 480 Pixel.

Wer es vorzieht, statt der Flaggen lieber mit Buchstaben zu arbeiten, kann die erwähnte Datei lang.html.twig entsprechend anpassen, z.b. mit der Anzeige der Seitentitel der Hauptsprachseiten

Code: [Select]
<div id="langmenu">
{% for aTarget in aTargetList %}
        <a href="{{ aTarget.sTargetPageUrl }}" {% if aTarget.bCurrentLanguage %}class="current" {% endif %}title="{{ aTarget.sPageTitle }}">
                <span>{{ aTarget.sPageTitle }}
                </span>
        </a>
{% endfor %}
</div>

Ausgabe wäre dann ein geordnetes Menü in dieser Form  DE  EN  NL  FR  ES.
Durch eine Änderung der Menütitels lassen sich natürlich auch andere Textmenüs erstellen, z.b. so

deutsch | english | nederlands    usw

Das Design und die Anordnung des Sprachmenü's kann in der frontend.css des Moduls eingestellt werden.

 
Der Seitensprachcode
Das Prinzip der Sprachumschaltung ist recht einfach. Jeder Einzelseite einer "Nebensprache" wird dabei ein sogenannter Seitensprachcode zugeteilt. Alle Seiten mit gleichem Seitensprachcode bilden im Menü eine symbolische Gruppe. Wählt man im Flaggenmenü eine andere Sprache aus, wird die Seite gesucht, der in der gewählten Sprache der gleiche Seitensprachcode zugeteilt wurde.

In der Datenbank wird die jeweilige PAGE_ID verwendet, in den Seiteneinstellungen der Seitentitel der Hauptsprachenseiten . "Hauptsprache" ist die Sprache, die in der Seitenübersicht ganz oben steht.
Die Möglichkeit zur Einstellung des Seitensprachcodes in den Einstellungen wird nur sichtbar, wenn in den erweiterten OPTIONEN die Seitensprache auf "eingestellt" steht (ist Standardeinstellung), außerdem muß mindestens eine weitere Sprache im Seitenbaum vorhanden sein und zur Verfügung stehen. (Sichtbarkeit darf nicht auf "KEINE" oder auf "UNSICHTBAR" stehen.)

Beispiel
Man hat 5 verschiedene Sprachen im Projekt. Jede Sprache hat eine Seite "Home" bzw. den entsprechenden Namen in der jeweils anderen Sprache. Nun geht man auf jeder dieser Seiten in die Seiteneinstellungen und wählt im Feld "Seitensprachcode" den Titel der gewünschten Zielseite aus. Angezeigt wird in der Auswahl immer der Seitenbaum der Hauptseite. Wenn wir jetzt voraussetzen, das die PAGE-ID der deutschen "Home"-Seite mal die 10 wäre, bekommen alle weiteren "Home"-Seiten nach entsprechender Auswahl den Page-Code 10 eingetragen und werden dann im Flaggenmenü zusammen gefaßt. Damit ist es dann möglich, das immer zum passendem Inhalt einer anderen Sprache umgeschaltet wird, z.B. von Kontakt (de) auf Contact (en) usw

Der Link "Seitensprachcode" (Seiteneinstellungen)
Das Datenbank-Feld "page-code" wurde in früheren WB-Versionen nur angelegt, wenn ein zusätzliches Modul (easymultiLang oder multi_lingual) installiert war. Dieses Feld wird nun beim Upgrade oder bei der Neuinstallation in der Datenbanktabelle "pages" angelegt. Hatte man vorher nur ein einsprachiges Projekt, war  kein Sprach- bzw page-Code notwendig, darum werden diese Felder jeweils mit einer Null gefüllt.
Der Klick auf den Link "Seitensprachcode" in den Seiteneinstellungen bewirkt, das nun für alle Seite der Hauptsprache die entsprechende Page-ID eingetragen wird. Bereits gemachte Zuordnungen in anderen Sprachen bleiben bestehen. Sind die Voraussetzungen für Mehrsprachigkeit gegeben (Seitensprache eingeschaltet, mehr als eine Sprache im Projekt sichtbar), wird für jede neuanglegte Seite der Hauptsprache der Page-Code automatisch eingetragen.

 
SHOW_MENU2
Wer nach oben angeführter Seitenstruktur arbeitet, verzichtet dann sicher in seinem Hauptmenü auf diese erste Ebene. Hier startet man seinen Menüaufruf dann einfach eine Ebene höher.. Ein einfaches Beispiel eines Menüaufrufs. Startpunkt ist hier der Eintrag SM2_ROOT+1

Code: [Select]
<?php
ob_start
();
        
show_menu2(1SM2_ROOT+1SM2_ALLSM2_ALL|SM2_PRETTY'<li class="[class]"><a href="[url]" class="[class]"><span>[menu_title]</span></a>'"</li>"'<ul>''</ul>'true'<ul id="menu" class="navigation">');
        
$topmenu ob_get_contents();
        
ob_end_clean();
?>

 

 

 


 
« Last Edit: December 06, 2013, 10:15:47 PM by jacobi22 »

Offline Stefek

  • Posts: 6177
  • Gender: Male
  • ("ړ)
Re: WebsiteBaker 2.8.4 und die Mehrsprachigkeit
« Reply #1 on: December 06, 2013, 11:58:06 PM »
Gutes Tutorial.
Danke dafür.

Als kleiner Verbesserungsvorsch lag für den unteren show_menu2 Aufruf: indem Du den SM2_BUFFER verwendest, brauchst Du nicht den Aufruf selbst über die PHP output buffer functions ziehen: hier mehr dazu (die Parameter)

Gruß,
Stefek
"Gemeinsam schafft man mehr."

gemeinsam
1. mehreren Personen oder Dingen in gleicher Weise gehörend, eigen
2. in Gemeinschaft [unternommen, zu bewältigen]; zusammen, miteinander
#Duden

jacobi22

  • Guest
Re: WebsiteBaker 2.8.4 und die Mehrsprachigkeit
« Reply #2 on: December 07, 2013, 12:43:57 AM »
hab in all den Jahren noch kein Menü mit SM2_BUFFER hinbekommen und noch schlimmer: ich habe keine Ahnung, woran das liegt   :oops:

Offline DarkViper

  • Forum administrator
  • *****
  • Posts: 2999
  • Gender: Female
Re: WebsiteBaker 2.8.4 und die Mehrsprachigkeit
« Reply #3 on: December 07, 2013, 01:36:35 AM »
da brauchst nur beim letzten SM2-Parameter (vor den HTML-Tags) SM2_BUFFER dazuschreiben..
Code: [Select]
<?php

$topmeu 
show_menu2(1SM2_ROOT+1SM2_ALLSM2_ALL|SM2_PRETTY|SM2_BUFFER'<li ....

Der blaue Planet - er ist nicht unser Eigentum - wir haben ihn nur von unseren Nachkommen geliehen

"You have to take the men as they are… but you can not leave them like that !" :-P
Das tägliche Stoßgebet: Oh Herr, wirf Hirn vom Himmel !

Offline Luisehahne

  • WebsiteBaker Org e.V.
  • **
  • Posts: 4332
  • Gender: Male
    • Webdesign und Entwicklung WebsiteBaker
Re: WebsiteBaker 2.8.4 und die Mehrsprachigkeit
« Reply #4 on: December 07, 2013, 01:41:53 AM »
und anschliessend noch folgende regex der unnötige Kommentare entfernt

Code: [Select]
<?php
$topmeu 
preg_replace('/<\!--.*?-->/siu','',trim$topmeu ));


Dietmar
Immer nur von der Zukunft reden, die Gegenwart vergessen und auf die Vergangenheit schimpfen
Neues Unwort: Schnappatmung

jacobi22

  • Guest
Re: WebsiteBaker 2.8.4 und die Mehrsprachigkeit
« Reply #5 on: December 07, 2013, 01:54:26 AM »
Quote
da brauchst nur beim letzten SM2-Parameter (vor den HTML-Tags) SM2_BUFFER dazuschreiben..

ach nee?
Wer SM2_BUFFER an dieser Stelle mag, darf es gerne einsetzen. Stefek hat oben den Link zu weitergehenden Infos gepostet, alles andere in der Readme des Show_Menu2-Modul


der Beitrag ist eh vermurkst, was solls....
[OFFTOPIC] vielleicht mal etwas entspannen -> Musik-Tip: Philipp Poisel Markt & Fluß

oder das hier -> Philipp Poisel - Eiserner Steg[OFFTOPIC]

P.S.:
mein Menüaufruf im Originalem Round Template
<?php show_menu2(0, SM2_ROOT+1, SM2_ALL, SM2_ALL|SM2_PRETTY|SM2_BUFFER,'<li><span class="menu-default">[ac][menu_title]</a></span>','</li>','<ul>','</ul>');?> 

Ergebnis: kein Menü (siehe Anhang)
egal in welcher WB-Version, mit welchem Templete, mit welchem Code - ich hab noch nie eine Ausgabe bekommen, wenn ich SM2_BUFFER verwendet habe



« Last Edit: December 07, 2013, 02:42:32 AM by jacobi22 »