Contao-Camp 2024
Ergebnis 1 bis 12 von 12

Thema: Umsetzung der Mehrsprachigkeit

  1. #1
    Contao-Nutzer
    Registriert seit
    17.01.2020.
    Beiträge
    111

    Standard Umsetzung der Mehrsprachigkeit

    Guten Abend liebe Mitglieder!

    Ich habe ein mehrsprachiges Contaoprojekt und stehe jetzt vor der Erstellung aller Sprachen. Aktuell habe ich nur eine englische Version und würde dann daraus alle anderen Versionen erstellen.

    Meine Frage ist nun, wie man die Mehrsprachigkeit am einfachsten umsetzt. Zum Wechsel in die einzelnen Sprachen benutze ich den Sprachenwechsler und der funktioniert auch wie gewollt.

    Ich habe gesehen, dass Fehlermeldungen bei Formularen je nach Sprache schon angepasst ausgegeben werden. Wie ist es denn nun bei Texten/Wörtern, die innerhalb eines Templates sind. Muss ich dort mit if und elseif arbeiten (was bei vielen Sprachen unübersichtlich wird) oder kann neue Übersetzungen definieren, ähnlich wie bei den Fehlermeldungen in einem Formular und gebe dann im Template lediglich den Pfad zur Übersetzung ein und je nach Sprache stellt Contao dann den richtigen Ausdruck dar?

    Ich wäre sehr dankbar um jede Hilfe.

    Edit: bin auf folgendes gestoßen https://contao-academy.de/blog/sprac...-bereitstellen, denke das wird die Lösung sein, bei fragen melde ich mich nochmal
    Geändert von asfga (09.02.2021 um 21:56 Uhr)

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Zitat Zitat von asfga Beitrag anzeigen
    Muss ich dort mit if und elseif arbeiten (was bei vielen Sprachen unübersichtlich wird)
    Ja, könntest du. Einerseits mit PHP, andererseits mit dem {{iflng}} Insert-Tag.



    Zitat Zitat von asfga Beitrag anzeigen
    oder kann neue Übersetzungen definieren, ähnlich wie bei den Fehlermeldungen in einem Formular und gebe dann im Template lediglich den Pfad zur Übersetzung ein und je nach Sprache stellt Contao dann den richtigen Ausdruck dar?
    Auch das geht. Dafür gibt es verschiedene Möglichkeiten.

    Beispiel mit Contao Translations:

    PHP-Code:
    // contao/languages/en/default.php
    $GLOBALS['TL_LANG']['MSC']['myTranslationLabel'] = 'A wonderful serenity has taken possession of my entire soul.'
    PHP-Code:
    // contao/languages/de/default.php
    $GLOBALS['TL_LANG']['MSC']['myTranslationLabel'] = 'Eine wunderbare Heiterkeit hat meine ganze Seele eingenommen.'
    PHP-Code:
    <!-- templates/some_template.html5 -->
    <?= $this->trans('MSC.myTranslationLabel'?>

    Beispiel mit Symfony Translations:

    PHP-Code:
    # translations/messages.en.yaml
    my_translation_labelA wonderful serenity has taken possession of my entire soul
    PHP-Code:
    # translations/messages.de.yaml
    my_translation_labelEine wunderbare Heiterkeit hat meine ganze Seele eingenommen
    PHP-Code:
    <!-- templates/some_template.html5 -->
    <?= $this->trans('my_translation_label', [], 'messages'?>
    Geändert von Spooky (16.02.2021 um 09:42 Uhr)

  3. #3
    Contao-Nutzer
    Registriert seit
    17.01.2020.
    Beiträge
    111

    Standard

    Danke für die Antwort, das denkt sich ungefähr mit dem Link, den ich gestern noch gefunden hatten. Wenn ich deine Variante mit Contao Translations probiere, kommt bei mir folgende Fehlermeldung:

    Code:
    app.CRITICAL: An exception occurred. {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\UndefinedMethodException(code: 0): Attempted to call an undefined method named \"trans\" of class \"Contao\\InsertTags\".
    Liegt das an meiner Version (irgendwas mit 4.4.5 oder so) oder muss ich noch die Klasse in jedem Template einbinden, sofern ich Translations verwende?

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Wie hast du $this->trans benutzt? Das funktioniert nur direkt in einem Template.



    Zitat Zitat von asfga Beitrag anzeigen
    (irgendwas mit 4.4.5 oder so)
    Wenn das wirklich deine Contao Version ist, dann solltest du zuerst aktualisieren.

  5. #5
    Contao-Nutzer
    Registriert seit
    17.01.2020.
    Beiträge
    111

    Standard

    Eigentlich so wie du es angegeben hast. Ich habe mir meine Template-Datei geöffnet und dann im PHP-Code deine Variante kopiert sowie eingefügt und letztendlich mit meinen Übersetzungsdefinitionen ersetzt.

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Ja, aber wohin genau hast du das kopiert? . Das funktioniert wie gesagt nur in einem richtigen Contao Template, bspw. eines Inhaltselementes.

  7. #7
    Contao-Nutzer
    Registriert seit
    17.01.2020.
    Beiträge
    111

    Standard

    Achso, ich habe es z.B. im member_grouped_bs_custom Template unter templates eingefügt. Sprich die Originale Datei kopiert und und das _custom drangehangen und diese im Registrierungsmodul ausgewählt.

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Poste mal den Inhalt davon.

  9. #9
    Contao-Nutzer
    Registriert seit
    17.01.2020.
    Beiträge
    111

    Standard

    In der default.php habe ich z.B.
    PHP-Code:
    $GLOBALS['TL_LANG']['custom']['form']['firstname']['placeholder'] = 'Gib deinen Vornamen ein...'
    und im besagten Template dann
    PHP-Code:
    $this->trans('custom.form.firstname.placeholder'
    Ich habe jetzt jedoch gesehen, dass eine andere Fehlermeldung ausgespuckt wird:
    Code:
    app.CRITICAL: An exception occurred. {"exception":"[object] (InvalidArgumentException(code: 0): trans is not set or not a callable at C:\\xampp\\htdocs\\workspace\\mentupp\\vendor\\contao\\core-bundle\\src\\Resources\\contao\\library\\Contao\\Template.php:147)"} []

  10. #10
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Achso, du benutzt noch eine alte Contao Version. Da gibt es $this->trans in Templates noch nicht. Du solltest auf Contao 4.9.12 aktualisieren.

  11. #11
    Contao-Nutzer
    Registriert seit
    17.01.2020.
    Beiträge
    111

    Standard

    Ah okay, danke für die Hilfe. Eine Aktualisierung muss ich noch vornehmen, würde aber gerne erst einmal alles soweit von meiner To-Do Liste haben.

  12. #12
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Alternativ kannst du folgendes im Template schreiben:
    PHP-Code:
    <?= $GLOBALS['TL_LANG']['custom']['form']['firstname']['placeholder'?>
    Oder auch
    PHP-Code:
    {{label::custom:form:firstname:placeholder}} 

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •