zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Sprachumschalter für dreisprachige Site realisieren

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 21.04.2019, 19:54
Benutzerbild von AndreasB
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.11.2005
Beiträge: 1.391
AndreasB wird schon bald berühmt werden
Standard Sprachumschalter für dreisprachige Site realisieren

Moin.


Ich baue gerade eine einfache Website, die in 3 Sprachen (DE, EN, FR) verfügbar sein soll.
Es gibt pro Sprache 10 Unterseiten.

Das HTML für den Sprachumschalter für die Seite "/de/lage" soll so aussehen:

HTML-Code:
<nav id="sprachumschalter" aria-label="Sprachumschalter">
  <ol>
    <li><a href="/en/location" lang="en" title="This page in English">EN</a></li>
    <li><a href="/fr/emplacement" lang="fr" title="Cette page en Français">FR</a></li>
  </ol>
</nav>
Und für das Beispiel der Seite "/en/seminar-area":
HTML-Code:
<nav id="sprachumschalter" aria-label="Language Switcher">
  <ol>
    <li><a href="/de/seminarbereich" lang="de" title="Diese Seite in Deutsch">DE</a></li>
    <li><a href="/fr/zone-seminaires" lang="fr" title="Cette page en Français">FR</a></li>
  </ol>
</nav>
Es gibt ja sehr viele Wege um mehrsprachige Seiten bereitzustellen.

Ich suche in diesem Thread nur nach einem möglichst einfachen PHP-Skript, welches auf jeder Seite den passenden Sprachumschalter erzeugt.

Wenn ich es richtig verstehe muss man die 10 Tripletts aus URLs zunächst auflisten.

//URLs
de, en, fr

lage, location, emplacement
seminarbereich, seminar-area, zone-seminaires
...


Konzept also:
Wenn URL mit "/de" beginnt und gefolgt wird von "/lage", dann gebe Folgendes aus: ...

Eventuell ergänzt man noch das Triplet zu den Attributwerten?

//Attribute
de, en, fr

Sprachumschalter, Language Switcher, Sélecteur de Langue

Diese Seite in Deutsch, This page in English, Cette page en Français
...


Eine schöne Bereicherung wäre noch, wenn das Skript beim ersten Aufrufen einer URL die Sprache anhand des Rückgabewertes des Browsers wählt.
Ohne natürlich eine andere Wahl des Nutzers zu behindern.

Und eine Ergänzung des Head mit passenden Linkelementen ist laut Google auch sinnvoll:
https://support.google.com/webmaster...r/189077?hl=de

Also sowas wie

HTML-Code:
<link rel="alternate" hreflang="de" href="/de/lage" title="Deutsch" />
<link rel="alternate" hreflang="en" href="/en/location" title="English" />
<link rel="alternate" hreflang="fr" href="/en/emplacement" title="Français" />

Mit welcher Methode geht man da bitte am besten vor?

Hat jemand Lust mir ein Beispiel mit einem empfehlenswerten Skript zu empfehlen?
Das würde mich freuen.

Oder bin ich mit meinen "Konzept aus Triplets" auf dem völlig falschen Dampfer?


Danke.
...
__________________


Geändert von AndreasB (22.04.2019 um 07:59 Uhr)
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 23.04.2019, 16:55
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 30.01.2014
Beiträge: 2.247
cloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblick
Standard

Hier tue ich mir schwer dir mehr als einen Ansatz zu liefern, da es so eine breite Frage ist und ich mich auch mit PHP selbst nicht so gut auskenne. Für mich stellt sich aber trotzdem zuerst die erste Frage: Wo kommen deine Übersetzungen denn her? Werden die aus einer Datenbank geholt oder stehen die in einer Textdatei?
Eine einfache Möglichkeit so etwas umzusetzen wird in diesem stackoverflow Post erörtert https://stackoverflow.com/questions/...age-php-script, hier wird der Text aus einem php File je nach Sprache ausgelesen. Kann aber wie gesagt auch sein, dass du schon eine Datenbankstruktur hast dann lässt sich dieser verlinkte Ansatz natürlich nicht sinnvoll umsetzen.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 23.04.2019, 23:43
Benutzerbild von AndreasB
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.11.2005
Beiträge: 1.391
AndreasB wird schon bald berühmt werden
Standard

Die Übersetzungen stammen aus Textdateien und das Markup schreibe ich von Hand.



Mir geht es also wirklich nur um den Sprachumschalter.


Danke für Deinen Link zu dem Thread in Stackoverflow.



Edit:
Ich habe mir jetzt
https://github.com/BaseMax/LMPHP/blob/master/README.md
angesehen.


Wenn ich es richtig verstehe, ändert es Wörter abhängig von der Session-Sprache.


Ich benötige jedoch eine Änderung von URLs, abhängig von der Sprache und zusätzlich abhängig von der jeweiligen aktiven Seite.


Meine Vermutung ist, da ich jetzt schonmal mehrmals Arrays in PHP-Skripten rund um Mehrsprachigkeit gesehen habe, dass dieses Konstruktut wohl auch für meine Aufgabe passt.


Wir können den Aufgabenteil "Erkennen, was der Browser als Sprache anliefert" auch weglassen um die Aufgabe erstmal allein auf den Sprachumschalter zu fokussieren.


Nochmal in anderen Worten meine Idee (ob das vernünftig ist, weiß ich nicht):


Aus dem URL der aktiven Seite den Werte für die Sprache und den Wert für den Dateinamen auslesen.
Ergebnis als Beispiel:
$lang=de
$page=lage


Mit Hilfe dieser Werte sollen dann aus dem mehrdimensionalen Array (sagt man das so?) die dazugehörigen Werte für den Sprachumschalter ausgelesen werden.
__________________


Geändert von AndreasB (24.04.2019 um 07:25 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 27.05.2019, 12:51
Benutzerbild von AndreasB
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.11.2005
Beiträge: 1.391
AndreasB wird schon bald berühmt werden
Standard

Ich gebe das Ziel auf und werde den Code für die 30 Seiten von Hand schreiben.

Ein passendes Skript konnte ich leider nicht finden.


Zweidimensionales Arrays scheinen zudem in PHP selten eingesetzt zu werden.


Zum hreflang:
Statt der Bereitstellung über das Element "link" auf jeder Seite habe ich nun die zentrale Variante via sitemap.xml gewählt.


Dabei erstaunt es mich die extreme Redundanz, die von da von Google gefordert wird.


Anstatt ein Triplett inhaltsgleicher Übersetzungen nur ein einziges Mal anzugeben, muss es 3 mal angegeben werden. Und dann muss zusätzlich noch jedes Triplett 30mal mit der zu deklarierenden Seite "eingeleitet werden", obwohl im Tripplett selbst, die Seite schon aufgeführt wird.
Merkwürdig auch, dass der vollständige URL anstatt nur ein root-relativer angegeben werden muss.
Pech.

Schlank wäre sitemap.xml in so einer Form:

HTML-Code:
<?xml ...>
<pageset>
	<page hreflang="de" href="/de/agb"/>
	<page hreflang="en" href="/en/terms-and-conditions"/>
	<page hreflang="fr" href="/fr/conditions-generales"/>
</pageset>
<pageset>
	<page hreflang="de" href="/de/datenschutz"/>
	<page hreflang="en" href="/en/privacy"/>
	<page hreflang="fr" href="/fr/confidentialite"/>
</pageset>
__________________


Geändert von AndreasB (27.05.2019 um 13:29 Uhr)
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Site speed zählt nun doch bei Google JohnB Offtopic 7 23.04.2010 14:16
Formularweiterleitung von UTF-8 Site auf eine ISO Site. elTorito (X)HTML 11 22.09.2008 11:29
Wie würdet ihr folgendes realisieren? ChOpSueY! Offtopic 9 17.05.2008 13:23
JS: 360° View realisieren? Passi Javascript & Ajax 1 15.09.2007 11:37


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:39 Uhr.