Hallo Gemeinde,
ich habe zur Zeit das Problem, dass ich bei einer mittelgroßen, drei sprachigen Webseite die Standardsprache ändern möchte.
Was ist die einfachste Möglichkeit, ohne irgendwelchen Content herumzukopieren?
Grüße,
Basti
Hallo,
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Einfach im Template die Startsprache setzen.. Das wäre für mich die beste Lösung.
Weg Nummer 1:
Danach die Ausgabe:
Oder komplett anders:
Weg Nummer 1:
Code: Alles auswählen
$article = OOArticle::getArticleById($REX['START_ARTICLE_ID'], 1);
// 1 steht für CLANG 1, kannst 0,1,2,3,4,5.... die entsprechende zahl steht dann für ne sprache
Code: Alles auswählen
echo $article->getArticle(1); // 1 = ctype, der ausgegeben wird
Oder komplett anders:
Code: Alles auswählen
$this->setCLang(1); // das selbe spiel... 0,1,2,3,4,5
$this->setArticleId(ID oder was auch immer);
echo $this->getArticle(1); // 1 = ctype, der ausgegeben wird
Die Abfrage der vom Browser übermittelten Sprache ist einfach über die PHP Variable $_SERVER['HTTP_ACCEPT_LANGUAGE']
Folgende Ergebnisse kannst du dabei bekommen
Spiel einfach mal rum, und schau, welche Ergebnisse du bekommst
Printe vorher einfach mal die gespeicherte variable mit
print oder echo $_SERVER['HTTP_ACCEPT_LANGUAGE']
Folgende Ergebnisse kannst du dabei bekommen
- de
de_DE
de,en_US
de,en-US;q=0.7,en-GB;q=0.3
Code: Alles auswählen
if($_SERVER['HTTP_ACCEPT_LANGUAGE'] == "de")
{
$this->setCLang(1);
} else {
$this->setCLang(2); // z.b. für english
}
Printe vorher einfach mal die gespeicherte variable mit
print oder echo $_SERVER['HTTP_ACCEPT_LANGUAGE']
Der Folgende Ansatz war leider nicht von Erfolg gekrönt:
Die Sprache wird soweit richtig erkannt, aber aber es wird immer noch die Defaultsprache 0 (de) angezeigt.
Code: Alles auswählen
echo($_SERVER['HTTP_ACCEPT_LANGUAGE']);
$language = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
if ( eregi('de', $language) ) {$start_lang= 0;}
elseif ( eregi('en', $language) ) {$start_lang= 1;}
elseif ( eregi('zh', $language) ) {$start_lang= 2;}
echo('START_LANG='.$start_lang);
$article = OOArticle::getArticleById($REX['START_ARTICLE_ID'], $start_lang);
Nach einigem probieren scheint der folgende Code mein Problem zu lösen. Fehlt nur noch eine bessere abfrage der language codes.
Code: Alles auswählen
$language = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
if ( eregi('de', $language) ) {$start_lang= 0;}
elseif ( eregi('en', $language) ) {$start_lang= 1;}
elseif ( eregi('zh', $language) ) {$start_lang= 2;}
if($REX['CUR_CLANG'] == ''){
//Beide muessen in meinem Fall gesetzt werden:
$REX['CUR_CLANG'] = $start_lang;
$this->setCLang($start_lang);
}
$article = OOArticle::getArticleById($REX['START_ARTICLE_ID'], $REX['CUR_CLANG']);
Hallo nochmal, leider musste ich feststellen, dass
nur zufällig funktioniert hatte um festzustellen ob eine Sprache schon in der URL angegeben wurde. Ich brauche also immer noch eine verlässlichere Methode um festzustellen das ein Nutzer die Startseite (http://domain.cn/) aufgerufen hat und nicht (http://domaim.cn/index.php?article_id=1&clang=0). Bei der zweiten ist die Sprache ja schon explizit mitgegeben und die Browsereinstellung soll ignoriert werden. Hat da noch jemand eine idee. Nötigenfalls auch mich cookies ... aber das wäre für mit eigentlich die schlechtere Wahl.
Das aufdröseln der Prioritäten und Sprachen habe ich mittlerweile gut gelöst bekommen.
Code: Alles auswählen
if($REX['CUR_CLANG'] == ''){ ... }
Das aufdröseln der Prioritäten und Sprachen habe ich mittlerweile gut gelöst bekommen.
Ich habe es mittlerweile mittels:Hbod hat geschrieben:$REX['CUR_CLANG'] gibt die Nummer (0,1,2,3) der aktuell gesetzten Sprache aus. Wird nirgends ne Sprache gesetzt, wird default die erste Sprache gewählt..
if($REX['CUR_CLANG'] == ""){
kann nicht funktionieren, da diese Variable nie leer ist.
Code: Alles auswählen
if($_GET['clang']=='')