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

Übersetzung von Templates

Seite: 1 1057 mal gelesen
  • snot
    snot Community Member
    9 Beiträge

    Übersetzung von Templates

    Hallo,
    ich bin jetzt seit gestern am suchen und lesen,
    vielleicht bin ich ja einfach zu dumm es zu finden ?

    Ich habe eine mehrsprachige Seite (Deutsch, Russisch, Arabisch),
    das übersetzten der Seiteninhalte ist kein Problem und funktioniert auch gut.

    Ich frage mich aber wie ich Templates übersetzten kann ?
    In den Templates stehen ein Paar Inhalte (z.B. Textlinks wie Home/Kontakt/Impressum etc.)

    Das muss doch zu übersetzten sein?
    Kann ich für jede Sprache ein eigenes Template anlegen?
    Oder kann ich die Sprache abfange und mit einem if/elseif/else die Inhalte ausgeben?

    Danke,
    Gruß Steffen
  • Izeroy
    Community Member
    211 Beiträge

    Re: Übersetzung von Templates

    Hallo,
    solltest du die Mehrsprachigkeit im CMS verwenden gibt es eine ziemlich einfach Lösung.

    Über language Dateien kannst du ohne Probleme, die eingefügten Texte im Template der Sprache nach ausgeben.

    Link dazu:
    http://doc.silverstripe.org/doku.php?id=i18n

    Das sollte dir schon weiterhelfen können.

    Sollten dennoch Fragen bestehen, werde ich gerne versuchen diese zu beantworten.

    Greetz
    Izzo

    Weitere Fragen?! Meld dich einfach! MSN: benjamin.buessenschuett@hotmail.de ICQ: 354 848 193 Webseite: www.silverstripe-hilfe.de

  • snot
    snot Community Member
    9 Beiträge

    Re: Übersetzung von Templates

    wusst ich doch, dass ich es nur nicht gefunden habe ;)
    vielen dank!
    bin gerade leider nicht daheim, um es auszuprobieren.

    habe ich es richtig verstanden?
    im template schreibe ich also:
    etwas wie:
    _t('Namespace.TITEL', 'Das ist der deutsche Titel');

    und dann brauch ich noch etwas wie:
    $lang['en_EN']['Namespace']['TITEL'] = 'and this the english one';

    wohin muss diese Zeile? in sapphire/lang/en_EN.php ?


    Gruß Steffen


  • Izeroy
    Community Member
    211 Beiträge

    Re: Übersetzung von Templates

    Silverstripe ist ja grundsätzlich in einzelne Module aufgebaut.

    D.h. fast jeder Ordner in deiner Struktur ist ein Modul, in den einzelnen Modul Ordnern ist oder sollte ein "lang" Ordner sein.
    Sollte dieser für dein Modul nicht bestehen, einfach erstellen und dort die Language Dateien also "en_US.php" und/oder "de_DE.php" erstellen und in diese Dateien kommen diese Zeilen.

    Im Normalfall dürfte dein Modul aktuell das "mysite"-Modul sein somit müsstest du im Ordner mysite einen "lang" - Ordner erstellen.


    Greetz
    Izzo

    Weitere Fragen?! Meld dich einfach! MSN: benjamin.buessenschuett@hotmail.de ICQ: 354 848 193 Webseite: www.silverstripe-hilfe.de

  • snot
    snot Community Member
    9 Beiträge

    Re: Übersetzung von Templates

    alles klar, danke!

    //edit jetzt hab ich es gerade getestet:

    in mysite/lang/ru_RU.php habe ich jetzt stehen:

    <?
    $lang['ru_RU']['Namespace']['TITEL'] = 'Russischer Titel';
    $lang['ru_RU']['Namespace']['UNTERTITEL1'] = 'Russischer Untertitel1';
    $lang['ru_RU']['Namespace']['UNTERTITEL2'] = 'Russischer Untertitel2';
    ?>


    im meiner Page.ss im theme/template ordner habe ich stehen

    <% _t('Namespace.TITEL', 'Deutscher Titel') %>


    danach habe ich ausgeführt:
    http://<mysite>/dev/tasks/i18nTextCollectorTask

    es wird jetzt aber auf allen seiten der Deutsche Titel angezeigt, auch wenn ich auf russisch umstelle?
    habe ich etwas vergessen?
  • Izeroy
    Community Member
    211 Beiträge

    Re: Übersetzung von Templates

    <?
    $lang['ru_RU']['Namespace']['TITEL'] = 'Russischer Titel';
    $lang['ru_RU']['Page.ss']['UNTERTITEL1'] = 'Russischer Untertitel1';
    $lang['ru_RU']['Namespace']['UNTERTITEL2'] = 'Russischer Untertitel2';
    ?>




    <% _t('Namespace.TITEL', 'Deutscher Titel') %>
    <% _t('TITEL', 'Deutscher Titel') %>


    So damit hätte man den Anfang.

    Ausserdem solltest du in deiner Page.php noch dieses einfügen

    if($this->dataRecord->hasExtension('Translatable')) {
             i18n::set_locale($this->dataRecord->Locale);
          }


    Der Code Schnipsel sorgt dafür das i18n auch erkennt um welche Sprache es sich handelt.
    Wenn ich jetzt nichts vergessen habe sollte es damit funktionieren.


    Weitere Fragen?! Meld dich einfach! MSN: benjamin.buessenschuett@hotmail.de ICQ: 354 848 193 Webseite: www.silverstripe-hilfe.de

  • snot
    snot Community Member
    9 Beiträge

    Re: Übersetzung von Templates

    vielen vielen dank, hat funktioniert!

Zur Zeit online: Zur Zeit ist leider niemand online.

Wir begrüßen unsere neuen Mitglieder: saerdna