Sprachauswahlproblem bei mehrere Sprachen

Fragen zum Erstellen von Templates für webEdition.
Benutzeravatar
e-site
webEdition Partner
webEdition Partner
Beiträge: 75
Registriert: Fr 27. Mai 2016, 09:33
Kontaktdaten:

Sprachauswahlproblem bei mehrere Sprachen

Beitragvon e-site » Do 16. Sep 2021, 14:08

Hallo zusammen,

ich habe bisher immer folgende Listview für die Sprachauswahl genutzt:

Code: Alles auswählen

<we:listview type="languagelink" name="sprachen" pagelanguage="top" showself="false" order="de_DE,en_GB">
	<we:ifFound>
		<we:repeat>
			<a href="<we:field name="we_path"/>">
				<img src="/img/<we:field name="WE_TARGETLOCALE"/>.png"/>
			</a>
		</we:repeat>
		<we:else/>
		<we:a id="100" title="English">EN</we:a>
	</we:ifFound>
</we:listview>
Das funktioniert soweit mit 2 Sprachen gut. Wenn es keine korrespondierende Seite gibt, wird z.B. auf die englische Startseite verlinkt.

Das funktioniert bei 3 oder mehr Sprachen nicht mehr.
Z.B hat eine de-Seite noch eine korrespondierende en-Seite, dann wird nur die englische Seite verlinkt aber die französische Seite wird nicht angezeigt/verlinkt.

Wie kann man an einfachsten bei drei Sprachen eine Abfrage realisieren, wenn es für eine Sprache (z.B. fr) keine korrespondierende Seite gibt, dann gib einen Link für die französische Startseite aus?

Hat hier einer einen Tipp für mich?

Gruß
Heiko

NilSole
Senior Member
Beiträge: 303
Registriert: Mi 27. Mär 2019, 15:28

Re: Sprachauswahlproblem bei mehrere Sprachen

Beitragvon NilSole » Do 16. Sep 2021, 15:59

Hallo Heiko,

ich könnte mir vorstellen, dass du mit Sprachverknüpfungen auf dem jeweiligen übergeordneten Verzeichnis (oder dem Sprachroot) und dem Attribut recursive=true so etwas wie Fallbacks erzeugen könntest. Für jede Ebene ohne Default hättest du aber ein paar zusätzliche Queries am Laufen.

Schöne Grüße
Nils

Benutzeravatar
haydi
Senior Member
Beiträge: 645
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Hirschberg
Kontaktdaten:

Re: Sprachauswahlproblem bei mehrere Sprachen

Beitragvon haydi » Mi 22. Sep 2021, 07:52

Hola,

weiß jetzt nicht, wie es bei dir aufgebaut ist... könnte mir vorstellen, dass du im else-Zweig einfach nach dem "root"-Verzeichnis der Sprache fragst... also, falls du die Sprachen jeweils in eigenen Ordnern hast, bspw. /de /en /fr ... Verzeichnisse existieren, dann könntest du mit <we:ifWorkspace id=""> eine Abfrage machen, ob sich der User innerhalb eben bspw. fr befindet... wenn ja, dann leite auf dessen Fallback-Seite um...

Sonnige Grüße
Heidi
Heidi Wetzel
Internet-Applikationen & Webseiten-Erstellung
https://www.heidi-wetzel.de

Benutzeravatar
e-site
webEdition Partner
webEdition Partner
Beiträge: 75
Registriert: Fr 27. Mai 2016, 09:33
Kontaktdaten:

Re: Sprachauswahlproblem bei mehrere Sprachen

Beitragvon e-site » Di 5. Okt 2021, 09:02

Hallo zusammen,

ich habe mich jetzt für eine php-lastige Version entschieden, falls es andere interessiert hier der Code.

Zuerst lege ich ein Array für die Sprachen an, das kann nun beliebig mit Sprachen erweitert werden:

Code: Alles auswählen

<?php $sitelang = array(
	"en_GB" => array("name" => "Englisch", "link" => "", "fallbacklink" => "/en/index.html" ),
	"fr_FR" => array("name" => "Französisch", "link" => "", "fallbacklink" => "/fr/index.html" )
); ?>
In der Listview befülle ich den Link:

Code: Alles auswählen

<we:field name="we_path" to="global" nameto="lang_link"/>
<we:field name="WE_TARGETLOCALE" to="global" nameto="lang_locale"/>
<?php $sitelang[$GLOBALS['lang_locale']]['link'] = $GLOBALS['lang_link']; ?>
In der Ausgabe prüfe ich, ob ein korrespondierender Link vorhanden ist, ansonsten Ausgabe des Fallbacklinks:

Code: Alles auswählen

<?php 
	foreach($sitelang AS $lang => $value) {
		$link = !EMPTY($value["link"]) ? $value["link"] : $value["fallbacklink"];
		$name = $value["name"];
		echo "<a href=\"$link\" title=\"$name\"><img src=\"/img/flags/$lang.png\" /></a>";
	}
?>
Vielleicht der eine oder andere eine andere/bessere Lösung oder kann den Sprachumschalter komplett mit webEdition-Tags aufbauen. Würde mich zumindest interessieren.

Gruß Heiko

Benutzeravatar
haydi
Senior Member
Beiträge: 645
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Hirschberg
Kontaktdaten:

Re: Sprachauswahlproblem bei mehrere Sprachen

Beitragvon haydi » Fr 25. Nov 2022, 10:55

Hallo Heiko,

ist schon ein bisschen her dein Eintrag, möchte es aber nochmal aufgreifen.
Zunächst kann ja über showself="true" die aktuelle Seite ebenfalls angezeigt werden.
Hier kann man ja noch ggf. eine Abfrage ergänzen, dass hier dann keine Verlinkung erscheint, sondern eine Art Aktiv-Darstellung.

Die Default-Geschichte wird doch dadurch realisiert, dass webEdition die Verzeichnisse hochgeht bis auf ein korrespondierendes Dokument gestoßen wird.
Will heißen, wird kein korrespondierendes/anzuzeigendes Dokument gefunden bis zur root-Ebene (=Sprachverzeichnis), dann sollte spätestens dort das Verzeichnis die korrespondierende Index-Seite angegeben werden - wäre dann ja die Homepage.
Und schon müsste es doch klappen... oder habe ich dich falsch verstanden? Oder gab es das in deiner verwendeten Version noch nicht? Habe es soeben in 9.1.3 ausprobiert.

Sonnige Grüße
Heidi
Heidi Wetzel
Internet-Applikationen & Webseiten-Erstellung
https://www.heidi-wetzel.de

ssommer
Junior Member
Beiträge: 12
Registriert: Di 15. Nov 2016, 11:13

Re: Sprachauswahlproblem bei mehrere Sprachen

Beitragvon ssommer » Mo 28. Nov 2022, 23:51

Was Heidi beschreibt, kann ich bestätigen, es funktioniert (aber nur?), wenn du
beim Verzeichnis(!) die Sprache de_DE auswählst und dort eine Sprachverknüpfung z.B. mit

Code: Alles auswählen

/en/index.html und /fr/index.html
anlegst.

Dann sollten diese Seiten jew. als Default-Sprachlink ausgegeben werden, falls z.B. in

Code: Alles auswählen

/de/xyz/index.html
keine entsprechende Seite in einer oder mehreren der anderen Sprachen verknüpft ist.
Du könntest also auf

Code: Alles auswählen

<we:else/>
	<we:a id="100" title="English">EN</we:a>
verzichten.

Man kann für ein Verzeichnis kein anderes Verzeichnis als Sprachverknüpfung auswählen, das muss ein Dokument sein. Dieses muss aber nicht zwingend in einem entsprechenden Verzeichnis liegen, bei mir hat es testweise auch mit einer Verknüpfung zu

Code: Alles auswählen

(root)/index_es.html 
zu einer weiteren Sprachseite funktioniert. Ein Problem sehe ich jetzt nur, wenn die "Default"-Sprachdokumente im Root liegen und nicht in einem Unterverzeichnis (also in meinem Beispiel in "/de")

(Und als ich zusätzlich die Dokumente /de/index.html mit /en/index.html etc. verknüpfte, kam es bei mir zu Konflikten, als ich weitere Sprachverknüpfungen anlegen wollte. Aber darauf kann man dann vermutlich sowieso verzichten bzw. diese entfernen.)

Stefan


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot], Bing [Bot] und 12 Gäste