Zum Inhalt springen

Sprachwechsel unterbinden?

Erstellt am 6. Oktober 2003 · 7 Antworten · letzte Antwort am 28. Januar 2004

Tags: Frage

sw-student ·

Hi!

Momentan ist bei mir Deutsch als Standard- und Englisch als Alternativsprache gesetzt. Nun ist es so, dass wenn ich über die Flagge auf Englisch wechsle und dann auf eine Seite klicke, welche nicht in Englisch verfügbar ist, die komplette Seite auf Deutsch zurückgesetzt wird (inkl. Menü). Hätte es gerne so, dass nur der Inhalt der Seite auf Deutsch angezeigt wird, das Menü in englischer Sprache bleibt. Ist das möglich?

dj.​picasso ·

Hi,

es gibt eine zusätzliche EXTENSION (irgendwas mit pk_limitmenu oder ähnlich, müßte ich erst nachsehen, aber die Faulheit siegt 😃 ), die die Anzeige von Seiten, die nicht in der Alternativ-Sprache vorhanden sind, einfach unterbindet.
Vorteil:
- nur Seiten (Links) in der Sprache werden angezeigt, falls vorhanden.
- es gibt kein Mischmasch.
Ciao
Der DJ

sw-student ·

Danke, DJ ... die Existenz der Extension war mir aber schon bekannt. Die Seiten sollen aber trotzdem verfügbar bleiben.
Habe unmassen an Unterseiten, die in Englisch als auch in Deutsch denselben Titel (&Inhalt) besitzen sollen. Jeweils eine alternative Seite anzulegen wäre zu zeitaufwendig!

saturn ·

hallo sw-student!

ich stehe eben so vor dem problem, dass sich das menü bei nichtvorahnden einer sprache auf die default language zurückstellt.

habe es mit dem fix versucht aber dann geht eigentlich gar nichts mehr! bleibt nur mehr auf deutsch! keine sprachen auswählbar

habe die codzeilen ersetz.

tslib/in class.tslib_fe.php find the function "settingLanguage(...)" (line
980 onwards...) and edit it. Find these lines:

if (!count($olRec)) {
$this->sys_language_uid=0;
} else {
$this->page = 
$this->sys_page->getPageOverlay($this->page,$this->sys_language_uid);
}

And change this into:

if (!count($olRec)) {
$not_translated=true;
} else {
$this->page = 
$this->sys_page->getPageOverlay($this->page,$this->sys_language_uid);
}

and put this line as the very last line of the same function:

if($not_translated) $this->sys_language_uid=0;

ist das noch was zu ändern???

läuft das bei dir ???

vielleicht kannst du noch mal kurz deine schritte erklären!

wäre super toll!!!!

ciao

sw-student ·

Hi!

Bei mir läuft das einwandfrei. Hab dir mal den kompletten Block rauskopiert. Vermutilich hast du etwas falsch ersetzt, bzw. ne } nicht beachtet.

        /**
         * Setting the language key that'll be used by the current page.
         * In this function it should be checked, 1) that this language exists, 2) that a page_overlay_record exists, .. and if not the default language, 0 (zero), should be set.
         */
        function settingLanguage()        {
                $this->sys_language_uid = intval($this->config["config"]["sys_language_uid"]);
                $olRec = $this->sys_page->getPageOverlay($this->id,$this->sys_language_uid);
             /* if (!count($olRec))        {
                        $this->sys_language_uid=0;
                } else {
                        $this->page = $this->sys_page->getPageOverlay($this->page,$this->sys_language_uid);
                }
            */

                if (!count($olRec)) {
                       $not_translated=true;
                } else {
                       $this->page = 
                       $this->sys_page->getPageOverlay($this->page,$this->sys_language_uid);
                }           
 
                $this->sys_page->sys_language_uid = $this->sys_language_uid;

                        // Updating content of the two rootLines IF the language key is set!
                if ($this->sys_language_uid && is_array($this->tmpl->rootLine))        {
                        reset($this->tmpl->rootLine);
                        while(list($rLk)=each($this->tmpl->rootLine))        {
                                $this->tmpl->rootLine[$rLk] = $this->sys_page->getPageOverlay($this->tmpl->rootLine[$rLk]);
                        }
                }
                if ($this->sys_language_uid && is_array($this->rootLine))        {
                        reset($this->rootLine);
                        while(list($rLk)=each($this->rootLine))        {
                                $this->rootLine[$rLk] = $this->sys_page->getPageOverlay($this->rootLine[$rLk]);
                        }
                }
                if($not_translated) $this->sys_language_uid=0;  // NEW
        }

Hope this helps, Gruß
🙂(SW)(: