Seite 1 von 1
Problem mit dem Sprachwechsel und Template-Zuweisung!
Verfasst: Fr 25. Jun 2004, 00:52
von uups
Ich arbeite z.Zt. an einem mehrsprachigen Projekt. Damit der Sprachwechsel "richtig" funktioniert habe ich pro Sprache je ein Layout (inkl. Template) erstellt mit dem jeweils entsprechenden Sprachwechsel.
Auf der deutschen Seite:
<? echo '<a href="front_content.php?'."idcat=$idcat&idart=$idart&changelang=4".'">english</a>'; ?>
Auf der englischen Seite:
<? echo '<a href="front_content.php?'."idcat=$idcat&idart=$idart&changelang=1".'">deutsch</a>'; ?>
Damit das funktioniert weise ich in beiden Sprachen die verschiedenen Templates zu.
Jetzt habe ich mit grossem Schrecken festgestellt, dass keine sep., sprachabhängige Zuweisung von Templates möglich ist. Wenn ich ich in der deutschen Version das Template setze wird das ebenfalls ich der englischen Version geändert. Ist das ein Bug?? (In der Version 4.4.2 hats nämlich funktioniert...)
Oder gibts eine einfachere Möglichkeit einen Sprachwechsel zu realisieren (natürlich ohne "Umweg" über die Startseite)
uups..!
Verfasst: Fr 25. Jun 2004, 07:28
von Alex
Hi uups,
echt gesagt: Keine Ahnung, früher habe ich den Sprachwechsel auch mal so gemacht wie Du. Da lief es noch ohne Probleme mit den unterschiedlichen Templates...
Irgendwann habe ich dann mal ein Sprachmodul geschrieben, was du einfach einbinden musst. Dieses erkennt die derzeitige Sprache und bietet die anderen als Flagge an... Diese wird nur angezeigt, wenn die anderssprachige Kategorie online geschaltet ist...
Code: Alles auswählen
OUTPUT:
<?php
//Sprachmodul - Version 2.1
//für Contenido 4.4.x
//Alexander Zimmerhofer - alexander(at)zimmerhofer.org
//Konfiguration...
//Diese Zeilen konfigurieren das Modul...
//Aufbau $picture["Sprach-ID"] = "PFAD zur Flagge";
$picture["1"] = "upload/design/brd.gif";
$picture["3"] = "upload/design/gb.gif";
//AB HIER NICHTS MEHR ÄNDERN...
$mydb = new DB_Contenido;
$mydb ->query ("SELECT idlang, online FROM ".$cfg["tab"]["art_lang"]." WHERE idart=$idart ORDER BY idlang ASC");
while ($mydb -> next_record())
{
while(list($lang_id,$picture_pfad) = each($picture))
{
if (($lang != ($mydb->f("idlang"))) and (($mydb->f("idlang")) == $lang_id) and (($mydb->f("online")) == 1))
{
echo "<a href=".$sess->url("front_content.php?client=$client&changelang=".($mydb->f("idlang"))."&idart=$idart");
echo "><img src=".$picture_pfad." border='0'></a> ";
}
}
reset($picture);
}
?>
Viel Spaß damit
Alex
Verfasst: Fr 25. Jun 2004, 07:40
von uups
Ja, in der Version 4.4.2 lief es prima!! Der Bug scheint nur in der aktuellen Version (4.4.4) vorhanden zu sein!
Ich werde deine Lösung ausprobieren. Allerdings wäre für mein Projekt die Lösung mit den Templates besser, da pro Sprache ein anderer Logotext erscheinen soll undTextlinks wie "nach oben" und "zurück" in jedem Sprachlayout vorhanden sind!
Wie löst du das?
Z.Zt. vergebe ich PRO Artikel das entsprechende Template, was aber nicht so elegant (und eher zeitaufwändig ist...)
Verfasst: Fr 25. Jun 2004, 09:15
von Alex
Hi uups,
das mit dem Logo ist auch kein Problem, mache ich nämlich auch

.
Auch da steht in meinem layout ein Switch-Befehl, der die Variable $lang überprüft. Schau dir einfach das mit dem Sprachmodul an...
Ich mache es heute so, dass ich das Template nur noch bei der Kategorie festlegen... Es gibt nur noch ein Layout, aber mit unterschiedlichen Templates
Alex
Verfasst: Fr 25. Jun 2004, 13:24
von uups
Das Sprachmodul ist super! Aber leider nur für zwei Sprachen...
Hat du auch eine Lösung für DREI Sprachen? Bzw. welche Änderungen müssten gemacht werden? Hab's probiert, aber ich krieg's nicht so richtig hin...
Und wie siet der Switch-Befehl für die Sprachabfrage des Logos usw. aus?
Wäre das sowas:
[code]
<?
switch ($l)
{
case 1: $start = "Zurück zur Startseite"; // deutsch
$logo = "images/logo_d.gif";
$suche = "Suche";
$zurück = "zurück";
$oben = "nach oben";
break;
case 3: $start = "Page de départ"; // franzoesisch
$logo = "images/logo_f.gif";
$suche = "Recherche";
$zurück = "zurück"; // weiss ich noch nicht...

$oben = "nach oben";
break;
case 4: $start = "Home"; // deutsch
$logo = "images/logo_e.gif";
$suche = "Search";
$zurück = "back";
$oben = "up";
break;
}
?>
[/code]
Verfasst: Fr 25. Jun 2004, 14:06
von Alex
Hi!
1.
Ich habe gerade ein erweitertes Modul veröffentlicht (
http://www.contenido.de/forum/viewtopic.php?p=25564). Schau mal rein... Damit müsstest du nur oben unter Konfiguration einen neuen Pfad als Array eintragen, mehr brauchst du dann nicht mehr anzupassen...
2.
Der Code ist okay, denke ich... Du hast ihn im Layout drin? Und fügst dann die einzelnen Übersetzungen per echo ein? Ja müsste gehen... Allerdings muss es switch ($lang) statt $l heißen...
Viele Grüße
Alex
Verfasst: Fr 25. Jun 2004, 20:08
von uups
Danke für den Tipp! Der Switch-Befehl funktioniert problemlos.
Ich habe dein Modul integriert. Klappt ganz gut!
Einzig das mit der dritten Sprache will nicht funzen. Wie muss ich das Modul ergänzen? Wie du siehst, ist PHP nicht meine Stärke...
Die Sprachen haben folgende Nummern
1 deutsch
3 französisch
4 englich
1 + 3 funktioniert gut! Einfach die zweite bzw. dritte Flagge wird nicht angezeigt...
Wäre froh, wenn du mir das mit dem Array kurz posten könntest...
uups...!?
Verfasst: Fr 25. Jun 2004, 21:56
von Alex
Hi!
ich habe es zwar nicht ausprobiert, denke aber...
müsste gehen... Die Zeile musst du nur oben einfügen...
Dabei meine ich es als Ergänzung von...
http://contenido.de/forum/viewtopic.php?t=4821
Das ist ja die neue Version des Skripts...
Funktioniert es dann?
Alex
Verfasst: Fr 25. Jun 2004, 22:07
von uups
Leider nein. Ich hatte es eben auch so eingetragen!
Es wird leider immer nur EINE Flagge angezeigt. Bei deutsch die französische und umgekehrt. Die englische Flagge fehlt...
Eine Idee?
Verfasst: Fr 25. Jun 2004, 22:10
von Alex
Mmh...
Der Artikel und die Kategorie ist online? Das wird nämlich kontrolliert, sonst wird die Flagge nicht angezeigt... Und der Pfad muss korrekt sein, kontrolliere das bitte auch.
Wenn alles so ist, muss ich mir morgen den Code nochmals vornehmen...
Ich habe ihn nur mit 2 Sprachen getestet...
Alex
Verfasst: Fr 25. Jun 2004, 22:28
von uups
Mensch bin ich doof!
Das war's...
Vlelen Dank!!!!
Gruss
Renato