Mehrsprachige Navigation

Fragen zur Implementierung und/oder Anpassung von ConPresso 4 werden in diesem Forum diskutiert.
radamazone
ConPresso-Checker
Beiträge: 101
Registriert: 01.01.1970 01:00
Hat sich bedankt: 6 Mal

Mehrsprachige Navigation

Beitrag von radamazone »

Hallo,

ich habe mich bzgl. Mehrsprachigkeit schon etwas umgesehen:
http://community.conpresso.de/viewtopic.php?t=3111, funktioniert soweit auch.

Nur das mit der Navigation bekomme ich nicht hin. Geht das mit ConPresso4 überhaupt, also ohne das Modul mod_menu?

Oder ist das nur mit mod_menu möglich? Ich möchte 3 Sprachen realisieren DE, EN, HU.

Vielleicht kann mir da jemand auf die Sprünge helfen?

Grüsse

Sandra
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 01:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal
Kontaktdaten:

Beitrag von Matthias V »

Das was du da verkinkt hast, das ist eine Mehrsprachigkeit mittels Template. Das heißt es gibt bei jedem Artikel deutsche, englische, ... Platzhalter.

Was du möchtest ist eine Mehrsprachigkeit mittels Rubriken. Da legst du in der Navigation 3 Hauptnavipunkte: DE, EN, HU an und hängst unter diese die einzelnen Rubriken, die jeweils nur Artikel dieser Sprachen enthalten.

Und das geht auch gut ohne mod_menü. Denn die Ausgabe ist sehr flexibel mit der Funkton printnavigation, die es mit Conpresso gibt.

Gruß Matthias V
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
radamazone
ConPresso-Checker
Beiträge: 101
Registriert: 01.01.1970 01:00
Hat sich bedankt: 6 Mal

Beitrag von radamazone »

Hallo Matthias,

ich habe die Mehrsprachigkeit mittels Template (so wie in dem Artikel beschrieben, mit CSS) hinbekommen, nur eben mit der Naviagtion bin ich ratlos.

Man könnte ja eine Nicht-Dynamische Naviagtion einbinden, aber evtl. geht es auch anders?

Gruß

Sandra
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 01:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal
Kontaktdaten:

Beitrag von Matthias V »

Hallo Sandra,

jetzt wo ich den anderen Beitrag etwas mehr überflogen habe, weiß ich was du meinst.

Es geht also um die Mehrsprachigkeit der Navigationspunkte innerhalb der Navigation.

Ich habe eine Idee, wie du das mit der printnavigation machen kannst.
Öffne _include/printnavigation.inc.php und Suche nach

Code: Alles auswählen

// print caption
Füge danach das ein:

Code: Alles auswählen

        $caption = split("#", $v['caption']);
        if count($caption) > 1 {
            $v['caption'] = '<span class="DE">'.$caption[0].'</span>';
            $v['caption'] .= '<span class="EN">'.$caption[1].'</span>';
            $v['caption'] .= '<span class="HU">'.$caption[2].'</span>';
        }
Es ist nicht getestet, sollte aber funktionieren.

Das heißt, du erstellst Navigationspunkte und schreibst alle Sprachen in die "Beschriftung/Caption" getrennt von einer Raute (#).
Bsp: "Deutsch#english#Was ist eingentlich HU"

Es sollten dann alle Navigationspunkte alle Sprachen innerhalb von span-Tags enthalten, gekennzeichnet durch CSS-Klassen.

Gruß Mattthias V
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
radamazone
ConPresso-Checker
Beiträge: 101
Registriert: 01.01.1970 01:00
Hat sich bedankt: 6 Mal

Beitrag von radamazone »

Hallo Matthias,

danke :D
nur eines funzt noch nicht so ganz. Irgendwie werden die HTML Tags nicht richtig umgewandelt.

Die Navigation sieht nun so aus:
<span class="DE">Deutsch</span><span class="EN">english</span><span class="HU">Hungary</span>

Im Quelltext steht:

Code: Alles auswählen

<span class="DE">Deutsch</span><span class="EN">english</span><span class="HU">Hungary</span>
Wie kann man das noch beseitigen?

Grüsse

Sandra
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 01:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal
Kontaktdaten:

Beitrag von Matthias V »

Gut, da hatte ich noch die htmlspecialchars-Funktion vergessen.

Nimm mal dies hier:

Code: Alles auswählen

        // print caption 
		$caption = split("#", $v['caption']);
        if count($caption) > 1 {
            $v['caption'] = '<span class="DE">'.htmlspecialchars($caption[0]).'</span>';
            $v['caption'] .= '<span class="EN">'.htmlspecialchars($caption[1]).'</span>';
            $v['caption'] .= '<span class="HU">'.htmlspecialchars($caption[2]).'</span>';
        } else {
			$v['caption'] = htmlspecialchars($v['caption']);
		}
        if (empty($link)) echo $v['caption'];
        else {
            echo '<a ';
            echo 'href="'.htmlspecialchars($link).'"';
            if ($_target!='') echo ' target="'.htmlspecialchars($_target).'"';
            echo '>'.$v['caption'].'</a>';
        }
Und zwar musst du dies für den ganzen Abschnitt nehmen bis zur nächsten Leerzeile und dem folgenden Kommentar: // RECURSION!

Gruß Matthias V
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
radamazone
ConPresso-Checker
Beiträge: 101
Registriert: 01.01.1970 01:00
Hat sich bedankt: 6 Mal

Beitrag von radamazone »

Klasse!! Funzt...

Habe nur noch ein Klammernpaar um das count () hinzugefügt:

Code: Alles auswählen

if (count($caption) > 1 ) {
Danke :-)
Benutzeravatar
baluo
ConPresso-Experte
Beiträge: 607
Registriert: 14.11.2005 12:17
Hat sich bedankt: 216 Mal
Danksagung erhalten: 11 Mal

mehrsprachige navigation deutsch + russisch

Beitrag von baluo »

hallo matthias,

wuerde dies auch fuer russisch funktionieren ... auch wenn ich noch nicht so recht verstanden habe, wie ich das ueberhaupt korrekt umsetze kann ... aber das waere der naechster schritt ...

ciao und danke, gerhard


Matthias V hat geschrieben:Gut, da hatte ich noch die htmlspecialchars-Funktion vergessen.

Nimm mal dies hier:

Code: Alles auswählen

        // print caption 
		$caption = split("#", $v['caption']);
        if count($caption) > 1 {
            $v['caption'] = '<span class="DE">'.htmlspecialchars($caption[0]).'</span>';
            $v['caption'] .= '<span class="EN">'.htmlspecialchars($caption[1]).'</span>';
            $v['caption'] .= '<span class="HU">'.htmlspecialchars($caption[2]).'</span>';
        } else {
			$v['caption'] = htmlspecialchars($v['caption']);
		}
        if (empty($link)) echo $v['caption'];
        else {
            echo '<a ';
            echo 'href="'.htmlspecialchars($link).'"';
            if ($_target!='') echo ' target="'.htmlspecialchars($_target).'"';
            echo '>'.$v['caption'].'</a>';
        }
Und zwar musst du dies für den ganzen Abschnitt nehmen bis zur nächsten Leerzeile und dem folgenden Kommentar: // RECURSION!

Gruß Matthias V
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 01:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal
Kontaktdaten:

Re: mehrsprachige navigation deutsch + russisch

Beitrag von Matthias V »

Ja es würde auch für Russisch funktionieren, da dies nur um jeden einzelnen durch # getrennten Text ein <span> mit der entsprechenden CSS-Klasse packt.

Diese müssen dann eben mit CSS und Javascript wechselseitig angezeigt werden.

Du musst nur die folgenden Zeilen beachten und dort einfach RU für Russisch, oder was auch immer eintragen. Wenn du mehr als 3 Sprachen möchtest, dann fügst du dir noch eine dieser Zeilen hinzu und erhöhst die Zahl, die hinter $caption steht.

Code: Alles auswählen

            $v['caption'] = '<span class="DE">'.htmlspecialchars($caption[0]).'</span>';
            $v['caption'] .= '<span class="EN">'.htmlspecialchars($caption[1]).'</span>';
            $v['caption'] .= '<span class="HU">'.htmlspecialchars($caption[2]).'</span>';
Gruß Matthias V
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
KKuehne
ConPresso-Newbie
Beiträge: 4
Registriert: 01.08.2007 16:31

zweisprachige Navigation klappt bei mir nicht

Beitrag von KKuehne »

Hallo,
eine Frage zum bereits besprochenen Thema:
eine bisherige Website soll jetzt auch in Englisch angeboten werden.
Nach Vorgaben aus dem Forum habe ich die einzelnen Templates so gestaltet, dass alle Eingaben dort zweisprachig zu machen sind, d.h. Eingaben wie Untertitel, Teaser, … sind sowohl in deutsch als auch in englisch vorhanden.
Die Auswahl habe ich über zwei Button geregelt, d.h., es wird jeweils nur die Flagge der Sprache angezeigt, die nicht verwendet wird.
Soweit klappt alles ganz gut
Anzeige der Seite in Deutsch >> klick auf die engl. Fahne >> Anzeige der Seite in Englisch und umgekehrt (allerdings nur mit Firefox, IE nicht :roll: , liegt aber sicher am JavaScript)

Jetzt die Fragen:
- Darstellung der Navigation sollte natürlich auch in Englisch sein (die Ausgabe mit den verschiedenen $caption, die durch # getrennt sind, klappt irgendwie nicht)
- Und dann sollen die Seiten, wenn ich einmal im Englischen bin, auch die weiteren Seiten in dieser Sprache gezeigt werden (bisher wird sofort die deutsche Seite wieder angezeigt, sobald ich eine neue Seite aufrufe)

Vielleicht ist alles ganz simple, aber ich komme hier irgendwie nicht weiter.
Gibt es irgendwo ein Beispiel, besonders zur Umsetzung der zweisprachigen Navigation?
Besten Dank im Voraus
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 01:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal
Kontaktdaten:

Beitrag von Matthias V »

Ich habe mir den anderen Beitrag nicht so genau angesehen, aber da wird es dazu sicherlich eine Lösung geben, dass auch weiterhin englisch verwendet wird, wenn man diese Sprache einmal gewählt hat. Oder?
Da musst du eventuell noch einmal genau nachlesen.

Das mit der Navigation wird genauso funktionieren, wenn du die gleichen Class-Angaben bei der Navigation verwendest, wie du sie auch bei dem Template verwendest.
Pass dir doch einfach die Code-Zeilen an, die ich in meinem letzten Beitrag geschrieben habe. (Du brauchst davon auch nur 2).

Diesen gesamten Code, der hier in diesem Thread steht, den musst du natürlich noch in die _include/printnavigation.inc.php (nagel mich bitte nicht auf den genauen DAteinamen fest) einbauen.

Gruß Matthias
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Du kannst ja einfach ein Cookie schreiben lassen, in dem die aktuell gewählte Sprache gespeichert wird.

Beim Aufruf der nächsten Seite wird entsprechend der im Cookie gespeicherten Sprache unmittelbar die gewünschte Sprache angezeigt.

Da bei mir die englische Sprache nur ein Zusatz und nicht Alternative ist kommen folgende Codes zum Einsatz auf
http://www.manchester-terrier-deutschla ... /index.php

Code: Alles auswählen

<script type="text/javascript">
		<!--
		function englishText (boxID, link) {
			if(document.getElementById(link).innerHTML=='hide english version'){ 
			  document.getElementById(boxID).style.display = 'none';
			  document.getElementById(link).innerHTML='show english version';
			} else {
			  document.getElementById(boxID).style.display = '';
			  document.getElementById(link).innerHTML='hide english version';
			}
		}
		function engCookie () {
			var divs=document.getElementsByTagName("DIV");
			for (i=0;i<divs.length;i++)
			{
				if (divs[i].className=="engBox")
				{
					divs[i].style.display = '';
				}
			}
			var engLinks=document.getElementsByTagName("A");
			for (i=0;i<engLinks.length;i++)
			{
				if (engLinks[i].innerHTML=="show english version")
				{
					engLinks[i].innerHTML = 'hide english version';
				}
			}
			setEngCookie("ShowEng", true, 365);
			if ( count > 0 )
			{
				document.getElementById('AllEng').innerHTML = 'If you do not want english versions any more -> <a href="javascript:noEngCookie();"><img src="../_images/en_flag.gif" border="0"> Hide all english versions</a>';
			}
		}
		function noEngCookie () {
			var divs=document.getElementsByTagName("DIV");
			for (i=0;i<divs.length;i++)
			{
				if (divs[i].className=="engBox")
				{
					divs[i].style.display = 'none';
				}
			}
			var engLinks=document.getElementsByTagName("A");
			for (i=0;i<engLinks.length;i++)
			{
				if (engLinks[i].innerHTML=="hide english version")
				{
					engLinks[i].innerHTML = 'show english version';
				}
			}
			setEngCookie("ShowEng", true, -1);
			document.getElementById('AllEng').innerHTML = 'There are english language contents on this page -> <a href="javascript:engCookie();" name="AllEng"><img src="../_images/en_flag.gif" border="0"> Show all english versions</a>';
		}
		function setEngCookie(name, value, expdays) {   // gültig expdays Tage
		  var now = new Date();
		  var exp = new Date(now.getTime() + (1000*60*60*24*expdays));
		  document.cookie = name + "=" + escape(value) + ";" +
							"expires=" + exp.toGMTString() + ";" +
							"path=/";
		}
		 function readCookie(name) { 
			 var cookieValue = ""; 
			 var search = name + "="; 
			 if(document.cookie.length > 0) {  
				 offset = document.cookie.indexOf(search); 
				 if(offset != -1) {  
					 offset += search.length; 
					 end = document.cookie.indexOf(";", offset); 
					 if(end == -1) end = document.cookie.length; 
					 cookieValue = unescape(document.cookie.substring(offset, end)) 
				 } 
			 } 
			 return cookieValue; 
		 } 
		//-->
		</script>
Die Artikel selbst sehen so aus:

Code: Alles auswählen

<A NAME='1405'></A>
<table width='100%' border='0' cellpadding='0' cellspacing='0'>
<tr><td align="left" valign="top"><div class="mainbox" style="background: url('/_data/1-forum.jpg') no-repeat top left">
        <div class="text" style="padding-left:100px;">
            <div style="float:right;"><a id="link1405" href="javascript:void(0);" onclick="englishText('txt1405','link1405');">show english version</a>
            <a href="javascript:void(0);" onclick="englishText('txt1405','link1405');"><img src="/_images/en_flag.gif" border="0" alt="english version available" /></a>&nbsp;&nbsp;</div>
            <span class="htitel"><A target="_self" class="ahtitel" HREF="../forum/index.php">Das Manchester Terrier Forum</a></span> <BR><BR> 
            <div id="txt1405" class="engBox" name="engTxt" style="display:none;"><span class="text"><SPAN class=htitel>The manchester terrier forum</SPAN>&nbsp; 
<P>is the meeting point for all friends, owners and breeders discussing problems and daily life issues. Get immediate answers an share the knowledge about this extraordinary dogs.<BR>Although the forum language is german there are some english threads. Questions and answers will be translated if needed.</span></div>
            <span class="text"><P>Hier treffen sich Freunde und Besitzer&nbsp; und tauschen Informationen aus, stellen Fragen, geben Tipps, verabreden sich und sorgen für Klarheit rund um diese einzigartige Rasse. Die Zwinger stellen ihre Würfe vor und es wird über den Werdegang der keinen schwarzen Monster berichtet. Jeder kann hier nach Herzenslust schmökern und natürlich auch aktiv teilnehmen.</span> <BR> 
	</div>
        <div class="text" style="padding-left:100px;">
             <a href="../forum/index.php"><IMG SRC="../_data/move.jpg" width="107" height="45" align="right" border="0"></a><br /><span class="text"><A target="_self" HREF="../forum/index.php" class="link">Zum Forum »»</A></span>
	</div>
</div>
</td></tr></table>
Am Ende gibt es noch ein allgemeines:

Code: Alles auswählen

					<script language="JavaScript">
					var count=0;
					var divs=document.getElementsByTagName("DIV");
					for (i=0;i<divs.length;i++)
					{
						if (divs[i].className=="engBox")
						{
							count++;
						}
					}
					if ( count > 0 )
					{
						document.getElementById('AllEng').innerHTML = 'There are english language contents on this page -> <a href="javascript:engCookie();" name="AllEng"><img src="../_images/en_flag.gif" border="0"> Show all english versions</a>';
					}
					if (readCookie('ShowEng') == 'true')
					{
						 engCookie();
					}
					</script>
mit dem Global die Anzeige aktiviert oder deaktiviert werden kann, insofern es überhaupt englischsprachige Inhalte auf der Seite gibt.

Für "echte" Mehrsprachigkeit gibt es ja die neue mod_menu-Version...
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
KKuehne
ConPresso-Newbie
Beiträge: 4
Registriert: 01.08.2007 16:31

Beitrag von KKuehne »

Erst einmal Danke für die Hinweise!
Nach einer Pause hab ich mich wieder an die Seiten gesetzt und erstmal soweit hinbekommen, dass die Navigation ordentlich angezeigt (englisch,deutsch).
Nur mit dem Cookie klappts noch nicht sauber. Wähle ich eine Sprache aus, muss jede Hauptseite jeweils einmal in der ausgewählten Sprache geladen werden. Die Seiten der dazu gehörenden Unterpunkte wiederum kommen dann aber sofort in der ausgewählten Sprache.
Mhm, gibts irgendwo ne Denkblockade?
Gruß und Danke
KKühne
Benutzeravatar
MarkusR
Handbuchversteher
Beiträge: 7362
Registriert: 01.01.1970 01:00
Hat sich bedankt: 111 Mal
Danksagung erhalten: 934 Mal
Kontaktdaten:

Beitrag von MarkusR »

Geht mir doch genauso... ich kann mir gerade partout nicht vorstellen wie Deine URL und der Seitencode aussieht... volle Blockade!
Ciao Markus
ConPresso-Module

Kein Support per PN!!! Für Fragen und Diskussionen ist das Forum da!

Succi recentis officinalis
Hochwertige Kräutersäfte und -Öle
Benutzeravatar
Matthias V
Modul-Entwickler
Beiträge: 1251
Registriert: 01.01.1970 01:00
Wohnort: Sondershausen
Hat sich bedankt: 54 Mal
Danksagung erhalten: 147 Mal
Kontaktdaten:

Beitrag von Matthias V »

MarkusR hat geschrieben:Geht mir doch genauso... ich kann mir gerade partout nicht vorstellen wie Deine URL und der Seitencode aussieht... volle Blockade!
... oder auch fehlende Kreativität :wink:

... wir müssen einfach noch an unseren hellseherischen Fähigkeiten arbeiten
mod_Guestbook 4.1.0

Features:
- Einträge als ConPresso-Artikel
- benutzt Templates, Rubriken, ...
- Captcha
- BB-Code + Smilies + Zitieren
- Badwords
- Anonymisierung
Antworten