Cache-Problem beim Sprachwechsel

Snuppel007
Beiträge: 86
Registriert: Mi 20. Apr 2005, 16:16
Kontaktdaten:

Cache-Problem beim Sprachwechsel

Beitrag von Snuppel007 »

Hallo zusammen,

kann mir jemand helfen?!

Contenido bzw. der IE kann sich nicht merken in welcher sprache ich mich befinde. Wenn ich einen anderen Artikel aufrufe wird mir dieser nicht in meiner gewählten Sprache angezeigt sondern wahllos zwischen den Sprachen gewechselt.

Hat jemand einen Rat für mich?

Gruß,
Snuppel
Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix »

verwendest du changelang = oder lang = ?
Gruß
Florian
Snuppel007
Beiträge: 86
Registriert: Mi 20. Apr 2005, 16:16
Kontaktdaten:

Beitrag von Snuppel007 »

... ich hätte jetzt gesagt changelang, aber..., Kuckst Du hier:

Code: Alles auswählen

<?php 

//Konfiguration... 
//Diese Zeilen konfigurieren das Modul... 
//Aufbau: $picture["Sprach-ID"] = "PFAD zur Flagge"; 
$picture["1"] = "images/deutsch.gif"; 
$picture["2"] = "images/englisch.gif"; 
//$picture["3"] = "images/fr_flagge.jpg"; 

//Alt-Tag, das angezeigt werden soll. Analog Sprach-ID [idlang] 
$alt["1"] = "Deutsch"; 
$alt["2"] = "Englisch"; 
//$alt["3"] = "Sprache 3"; 



//AB HIER NICHTS MEHR ÄNDERN... 
$mydb = new DB_Contenido; 

$sql = "SELECT ARTLANG.idlang, ARTLANG.online, CATLANG.visible FROM ".$cfg["tab"]["art_lang"]." "; 
$sql = $sql. "AS ARTLANG, ".$cfg["tab"]["cat_lang"]." "; 
$sql = $sql. "AS CATLANG WHERE ARTLANG.idart = $idart AND CATLANG.idcat = $idcat AND ARTLANG.idlang = CATLANG.idlang ORDER BY ARTLANG.idlang ASC"; 

$mydb ->query ($sql); 
// echo $sql; 



while ($mydb -> next_record()) 
{ 
  while(list($lang_id,$picture_pfad) = each($picture)) 
  { 
      
      if(strstr($REQUEST_URI,"changeview=edit") || $submit=="editcontent" || strstr($REQUEST_URI,"area=con_editcontent")) 
      { 
         if (($lang != ($mydb->f("idlang"))) and (($mydb->f("idlang")) == $lang_id)) 
         { 
            echo "<a href=".$sess->url("front_content.php?client=$client&idcat=$idcat&changelang=".($mydb->f("idlang"))."&idart=$idart"); 
            echo "><img src=".$picture_pfad." border='0' alt='".$alt[$mydb->f("idlang")]."'></a> "; 
         } 
      } 
      else 
      { 
         if (($lang != ($mydb->f("idlang"))) and (($mydb->f("idlang")) == $lang_id) and (($mydb->f("online")) == 1) and (($mydb->f("visible")) == 1)) 
         { 
             echo "<a href=".$sess->url("front_content.php?&idcat=$idcat&changelang=".($mydb->f("idlang"))."&idart=$idart"); 
             echo "><img src=".$picture_pfad." border='0'  alt='".$alt[$mydb->f("idlang")]."'></a> "; 
         } 
      } 
   } 
   reset($picture); 
} 
?> 
hast Du etwa eine Idee...?

Vieleicht hilft diese info auch: Habe die neue 4.6.8er benutzt

Gruß, Snuppel
Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix »

ja, da steht changelang drin, da weiß ich im Moment auch nicht weiter. Hast du cookies aktiviert, die werden meines Wissens nach benötigt.

Wenn der Firefox es richtig macht, dann könnte es daran liegen.
Gruß
Florian
Snuppel007
Beiträge: 86
Registriert: Mi 20. Apr 2005, 16:16
Kontaktdaten:

Beitrag von Snuppel007 »

Bei Firefox klappt es wunderbar, beim IE hab ich Cookies aktiviert!

Sch... IE, kann ja den Besuchern nicht vorschreiben mit welchen Browser Sie diese Seite besuchen sollen..., trotzdem Danke ich Dir für die Mühe.

Gruß, Snuppel
greven
Beiträge: 4
Registriert: Do 13. Apr 2006, 13:41
Kontaktdaten:

selbe Problem

Beitrag von greven »

Hallo ...

irgendwie scheint sich dieses Problem durch das Forum durchzuziehen.
Gibt es hierzu schon eine Lösung? Ich habe das gleiche Problem und habe bisher alle Module so abgeändert, dass immer changelang=<sprachid> mitgesendet wird.

hierbei ist natürlich das Problem, dass alle selbst eingegebenen Links nicht funktionieren. Es funktioniert ohne Probleme mit Firefox 1.5 aber mit keinem IE. Dieser wechselt willkürlich die Sprachen hin und her - selbst wenn ich lang=<sprachid> hinzugefügt habe.

Benutze die aktuelle Contentido version - muss ich noch Patches von irgendwo anders einspielen?

Danke

Greven
Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix »

Changlang dauert aber wesentlich länger, weil "eigentlich" viele Sachen intern umgestellt werden.

Gruß
Florian
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Ähm, changelang braucht nur beim ersten Mal eine Spur länger, da die Sprache in der Session gespeichert wird (in der DB), das ist aber vernachlässigbar.

Dass der IE die Sprache nicht umschaltet, dürfte ein Irrtum sein: Der IE cached nur viel dauerhafter. Drücke mal nach Umstellung auf F5 und die Seite wird in der geänderten Sprache erscheinen...

Willkürlich ist es auch nicht: Hat man eine Seite in D einmal aufgerufen (=im Cache) wird sie bei nächstem Aufruf wieder in D ausgegeben. Wird z.B. mit E eine Seite aufgerufen, die man vorher nicht in D gesehen hat, ist sie gleich in E.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
greven
Beiträge: 4
Registriert: Do 13. Apr 2006, 13:41
Kontaktdaten:

Caching scheint nicht der Grund zu sein

Beitrag von greven »

Hallo Forum,

vielen Dank für die Antworten.

Erst <STRG>+<F5> lädt die neue Seite. Gibt es hierfür eine Möglichkeit dem IE mitzuteilen die Seite zu aktualisieren ohne die Cache Funktion für beide Browser zu deaktivieren?!? Wie haben ANDERE User das Problem gelöst?

Weiterhin verstehe ich nicht, dass es bei mir _lokal_ ohne Probleme läuft. Hier kann auch der IE sauber zwischen den Sprachen hin und herschalten. Der einzige für mich erkennbare Unterschied ist aber das OS (Windows lokal und Linux online). Der Rest ist identisch.

Vielleicht habe ich etwas online falsch eingestellt?!? Aber da noch andere das Problem hatten würde eine Lösung uns vielleicht allen weiterhelfen.

Habt ihr vielleicht Hinweise was ich prüfen könnte?

Danke und frohe Ostern

Greven
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Na ja, man könnte im Layout gleich Code für den IE vorsehen, der ein Cachen der Seite verhindert (ich denke, http://de.selfhtml.org gibt da Hinweise, sowas wie pragma no-cache oder eine cache-Zeit von aktuelles Datum -1 Sekunde).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
greven
Beiträge: 4
Registriert: Do 13. Apr 2006, 13:41
Kontaktdaten:

Lösung funktioniert - aber nicht optimal

Beitrag von greven »

Hallo HerrB,

vielen Dank für den Hinweis. Leider war meine Frage etwas anders:

gibt es hierfür eine Möglichkeit dem IE mitzuteilen die Seite zu aktualisieren ohne die Cache Funktion für beide Browser zu deaktivieren?!?

Nachdem kein anderer User gepostet hat, bin ich einfach die Referenzen durchgegangen. Überraschend ist, dass unter den Nutzern mit über 1000 Seiten nur einer einen Sprachwechsel anbietet und dieser verwendet einfach zwei Verzeichnisse (de/ und en/).

Bei den Usern mit über 500 Seiten war es etwas erfolgreicher.
Einer hat den Sprachwechsel implementiert und konnte anscheinend auf das Caching verzichten...
Ein weiterer übermittelt immer changelang=<id> bei jedem Link.

Bei den Usern zwischen 100 und 500 wird dann lustig.
Einer schickt die ganze Seite einfach auf ein automatisches Übersetzungstool.
Bei einem anderen gibt es zwar "englisch" aber keinen Inhalt
Ein dritter verwendet einfach keinen Cache...
Andere Meldungen waren:

"Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.
* Dieses Problem kann manchmal auftreten, wenn Cookies deaktiviert
oder abgelehnt werden."


Fazit:
Contenido ist derzeit nicht in der Lage mehrsprachigkeit zu realisieren, wenn
a) Cookies deaktiviert sind oder
b) im IE der Cache nicht deaktiviert ist oder
c) nicht auf den Trick changelang=<id> zurückgegriffen wird.

Habe ich etwas übersehen?
Wie haben ANDERE User das Problem gelöst, die nicht bereit sind den Cache zu deaktivieren oder dem Endanwender zu erklären, wie er bei jedem Link immer brav changelang=<id> ergänzt?

Danke und frohe Ostern

Greven


* Gibt es eine Möglichkeit die Session ID als Fallback in der URL zu übergeben?
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag von stese »

naja die ganz billige lösung wäre am anfang der front_content.php abzufragen ob $lang in der url übergeben wurde und dann einfach $changelang = $lang; zu setzen. einen versuch ist es wert. was anderes mache ich mit meiner modRewrite engine auch nciht. und die funktioniert auch im IE mit deaktivierten cookies
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Ich würde steses Vorschlag mal ausprobieren, ich will nicht ausschließen, dass es da noch ein Problem gibt.
Contenido ist derzeit nicht in der Lage mehrsprachigkeit zu realisieren, wenn
a) Cookies deaktiviert sind oder
b) im IE der Cache nicht deaktiviert ist oder
c) nicht auf den Trick changelang=<id> zurückgegriffen wird.
Generell ist die Aussage nicht korrekt.

Zu a)
Sind Cookies deaktiviert, wird die Session-ID in der URL mitgegeben (entsprechend müssen die Navigations-Module gestaltet sein) - ob das auch so mit Links innerhalb von CMS_HTML-Elementen funktioniert, weiss ich gerade nicht.

Zu b)
Das ist ein IE-Problem, was soll Contenido daran ändern? Ich gebe aber zu, dass es evtl. noch ein Problem direkt nach der Sprachumstellung geben kann (hatte etwas seltsame Effekte direkt nach der Umschaltung).

Die Verwendung unterschiedlicher Verzeichnisse für unterschiedliche Sprachen sieht auf den ersten Blick gut aus, da auch hier der IE von unterschiedlichen Seiten ausgeht. Jedoch wird es dann vermutlich mit Dateiuploads schwieriger.

Dazu auch c)
Das ist eine Lösung, aber vermutlich löst es das nur, weil sich die URL damit unterscheidet (und der IE von einer neuen Seite ausgeht).

Den IE-Cache gänzlich zu umgehen (über Code im HTML), halte ich nach wie vor für eine Alternative, da heutzutage der Geschwindigkeitsvorteil vernachlässigbar ist und sich die interessanten Seiten sowieso regelmäßig ändern.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
#ayshe
Beiträge: 445
Registriert: Do 25. Mär 2004, 10:04
Kontaktdaten:

krise! sprachwechsel!

Beitrag von #ayshe »

Hallo,

hab grad eine Site online gestellt, und was lokal funktioniert geht nicht online, nämlich der Sprachwechsel. Ja, Leute, ich hab schon alles dazu gelesen :wink:

Ich brauch jetzt nur grad eine schnelle, unaufwändige Lösung und möchte die Links im Navigationsmodul entsprechend anpassen.

Das sieht momentan so aus:

Code: Alles auswählen

 /* 1. Navigation level */
   if (checkCatPermission($data['idcatlang'],$data['public'])) {
       $tpl->reset();
       $tpl->set('d', 'NAME',  $data['name']);
       $tpl->set('d', 'TARGET', $data['target']);
       $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat']));

       $tpl->next();
       if ($idcat == $data['idcat']) {
           $tpl->generate('templates/navfirst_on.html');
      }elseif(is_array($data['sub'])){
           $tpl->generate('templates/navfirst_open.html');
       } else {
           $tpl->generate('templates/navfirst_off.html');
       }
   } // end if
} // end foreach
Wie krieg ich das jetzt so hin, dass die aktuelle Sprache immer im Link mit übergeben wird?

Zu sehen hier: www.emc.biz

Viele Grüße,
Ayshe


P.S.: Caching ist sorgfältig deaktiviert, die Sprache wird aber auch im FF nicht korrekt übergeben, heißt: der Browser "springt" auf Deutsch zurück.
MichFress
Beiträge: 750
Registriert: Mo 5. Jan 2004, 22:32
Wohnort: Bochum
Kontaktdaten:

Re: krise! sprachwechsel!

Beitrag von MichFress »

#ayshe hat geschrieben:

Code: Alles auswählen

 /* 1. Navigation level */
   if (checkCatPermission($data['idcatlang'],$data['public'])) {
       $tpl->reset();
       $tpl->set('d', 'NAME',  $data['name']);
       $tpl->set('d', 'TARGET', $data['target']);
       $tpl->set('d', 'HREF',  $sess->url('front_content.php?idcat='.$data['idcat'].'&lang='.$lang));

       $tpl->next();
       if ($idcat == $data['idcat']) {
           $tpl->generate('templates/navfirst_on.html');
      }elseif(is_array($data['sub'])){
           $tpl->generate('templates/navfirst_open.html');
       } else {
           $tpl->generate('templates/navfirst_off.html');
       }
   } // end if
} // end foreach
Wie krieg ich das jetzt so hin, dass die aktuelle Sprache immer im Link mit übergeben wird?
indem du die lang-Variable immer mitlieferst... das funktioniert zumindest bei einer meiner Seiten. Nach dem Überfliegen dieses Threads könnte allerdings auch die $changelang vonnöten sein... mhm...
"Es wird keine Handlung geben, keine Geschichte mit ihrer Versprechung auf einen Anfang und ihrer Hoffnung auf ein Ende." (Andrzej Stasiuk)
Gesperrt