76 Nachrichten unter 21 Themen von 33 Mitgliedern
[SilverStripe Roadmap][Changelog]

Unterverzeichnis für Sprache

Seite: 1 1224 mal gelesen
  • whatever
    whatever Community Member
    1 Beitrag

    Unterverzeichnis für Sprache

    Hallo zusammen,

    wir wollen unseren Internetauftritt internationalisieren. Es gibt allerdings noch einige Probleme, bei denen ihr mir hoffentlich helfen könnt.

    Ich möchte, dass alle englischen Seiten im Unterverzeichnis en, spanische in es, etc stehen.
    Ein Unterverzeichnis einfach hinzufügen geht ja leider nicht.
    Meine Überlegung, dass alle Seiten im CMS wie folgt markiert werden: en-startsite | es-start | de-start
    Ein PHP Skript soll dann die ersten drei Zeichen auslesen und entsprechend eine URL mit Unterverzeichnis erzeugen. Jemand einen Vorschlag?

    So war es --> so wird es
    www.meineseite.de/en-startsite ---> www.meineseite.de/en/startseite

    Bisher hab ich wie im Buch beschrieben die Internationalisierung aktiviert und kann im CMS verschiedene Sprachen verwalten.

    Ich bin auch für jeden anderen Tipp offen. Kenn mich mit Silverstripe und leider auch mit PHP nicht besonders aus.

    Gruß whatever
  • suntrop
    suntrop Community Member
    7 Beiträge

    Re: Unterverzeichnis für Sprache

    Hast du in der Zwischenzeit ein Lösung gefunden?

    Die Aufteilung in /de/, /en/ etc. halte ich auch für eine der besten. Gibt es da vielleicht Neuigkeiten mit der Version 2.4 und Nested URL?

    Gruß
    suntrop
  • brokemeister
    brokemeister Community Member
    76 Beiträge

    Re: Unterverzeichnis für Sprache

    Hallo,

    das de/ und en/ müssten in der .htaccess ergänzt werden und auf die entsprechende Language-Variable gemappt werden.

    Anschließend nur noch den die Link-Funktion in der Page-Klasse erweitern.


    public function Link() {
    $lang = 'de'; //Hier muss natürlich eine Fallunterscheidung gemacht werden, aber prinzipell geht es so....
    return "/{$lang}".parent::Link();
    }



    Bei 2.4 sollte es keine Probleme geben...

    Gruß

    Malte

    EOS Uptrade GmbH - Komplexes einfach machen | Certified Silverstripe Partner | www.eos-uptrade.de

  • Ironcheese
    Community Member
    5 Beiträge

    Re: Unterverzeichnis für Sprache

    Blöde Frage am Rande:

    Wie aktiviere ich dieses Feature bei 2.4? Ich hab NestedUrls an. Wie bekomme ich die Sprache, wie oben beschrieben, in die URL?
  • brokemeister
    brokemeister Community Member
    76 Beiträge

    Re: Unterverzeichnis für Sprache

    Hi Ironcheese,

    du kannst dir einfach eine Funktion in Anlehnung die obige machen

    public function LangLink($lang = null) {
    if ($lang === NULL) {
    $lang = //getCurrentLang();
    }
    return "/{$lang}/".$this->Link();
    }

    In den Template musst du natürlich dann LangLink aufrufen

    Der Rest ist Konfiguration in der htaccess mit ModRewrite...

    Gruß

    Malte Jansen

    EOS Uptrade GmbH - Komplexes einfach machen | Certified Silverstripe Partner | www.eos-uptrade.de

  • suntrop
    suntrop Community Member
    7 Beiträge

    Re: Unterverzeichnis für Sprache

    Hallo brokemeister.

    Ich stehe jetzt aktuell vor der Situation :-) Brauche 7 Sprachversionen.
    Dem Code kann ich auch noch nicht ganz folgen. Wie die Sprachkürzel (en, de ...) in der .htaccess ergänzen? Woher weiß die .htaccess welche Sprache in die URL gehört?

    Viel grundlegender ist aber glaube ich, dass der Hack nicht mit den Nested URLs von v. 2.4 funktionieren wird. Da gerät doch alles durcheinander, oder? Schon einmal getestet?

    Grüße
    suntrop
  • brokemeister
    brokemeister Community Member
    76 Beiträge

    Re: Unterverzeichnis für Sprache

    Hallo suntrop,

    inzwischen haben wir zwei mehrsprachige Seiten mit 2.4 am Laufen. Ohne Probleme...


    ...
       #Rewrite en
       RewriteCond %{REQUEST_URI} ^/en/(.*)$
       RewriteCond %{REQUEST_FILENAME} !-f
       RewriteRule .* sapphire/main.php?locale=en_GB&url=%1&%{QUERY_STRING} [L]
    ...



       public function Link() {
          return substr($this->Locale, 0, 2).parent::Link();
       }



    Gruß

    Malte

    EOS Uptrade GmbH - Komplexes einfach machen | Certified Silverstripe Partner | www.eos-uptrade.de

  • suntrop
    suntrop Community Member
    7 Beiträge

    Re: Unterverzeichnis für Sprache

    Super. Vielen Dank für die Hilfe, es funktioniert einwandfrei.

    Habe leider nicht gesehen, dass du geantwortet hattest. Deshalb die späte Danksagung :-)

    Gibt es auch eine nette Lösung um die einzelnen Homepages (/de/ geht ja Out-of-the-box, aber /en/ geht nicht, da muss es /en/home/ heißen) ohne zusätzliche String in der URL unverändert zu lassen?
    Ich denke mal da müsste irgendwo eine Abfrage her, ob hinter dem /xx/ noch etwas kommt und wenn es nicht de ist, dann soll SS etwas unternehmen oder automatisch umwandeln.

    Dank und Gruß
    suntrop

Zur Zeit online: Zur Zeit ist leider niemand online.

Wir begrüßen unsere neuen Mitglieder: saerdna