Ergebnis 1 bis 15 von 15

Thema: Langconfig und ein eigenes Modul für Sprachvariablen

  1. #1
    Contao-Fan
    Registriert seit
    11.10.2010.
    Beiträge
    379

    Frage Langconfig und ein eigenes Modul für Sprachvariablen

    Hi zusammen,

    habe mir schon diesen Thread durchgelesen und auch versucht, allerdings habe ich noch ein Verständnis-Problem.

    Betrachten wir mal dieses Beispiel von Nina aus der de/default.php
    PHP-Code:
    /* Modul: Mitglieder */
    $GLOBALS['TL_LANG']['tl_member']['gender']          = array('Anrede''Bitte wählen Sie die Anrede.');
    $GLOBALS['TL_LANG']['MSC']['male']                  = 'Herr';
    $GLOBALS['TL_LANG']['MSC']['female']                = 'Frau';
    $GLOBALS['TL_LANG']['tl_member']['city']            = array('Ort''Bitte geben Sie den Namen des Ortes ein.'); 
    $GLOBALS = globale Variable
    TL_LANG definiert denk ich mal eine Sprachvariable
    tl_member ist die Tabelle in der DB
    gender ist klar das Geschlecht, zeigt hier also auf eine Spalte in tl_member

    Was bedeutet MSC?

    Wenn es eine Auswahlmöglichkeit gibt, wie z.B. bei gender, dann ist es automatisch ein array, sonst, wenn es nur eine Übersetzung gibt, kommt MSC zum Einsatz?

    Wenn ich eine neue Tabelle habe, z.B. 123_wohnzimmer, dort gibt es mehrere Spalten, z.B.


    Interieur Elektronik
    Lampe Fernsehr
    Sofa Stereo-Anlage

    Wie müsste die Langconfig aussehen, um z.B. Fernsehr oder Sofa zu übersetzen?

  2. #2
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    MSC = miscellaneous
    bedeutet, diese Sprachvariabe (die durchaus auch ein Array sein könnte) ist keiner Tabelle zugeordnet sondern universell mehrfach einsatzbar bzw. dazu gedacht.
    Es soll ja nicht jede Erweiterung die Anreden beispielsweise neu definieren, was da ist kann genutzt werden.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  3. #3
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Das mit dem Array hat ne andere Bedeutung.
    Das erste Element ist die Überschrift über eine Formularfeld (Backend), das zweite kommt drunter als Erläuterung.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  4. #4
    Contao-Fan
    Registriert seit
    11.10.2010.
    Beiträge
    379

    HTML

    Okay, das erklärt schon mal etwas Besten Dank dafür.

    D.h. bei dem Beispiel "Sofa" müsste das so aussehen:

    PHP-Code:
    $GLOBALS['TL_LANG']['MSC']['Couch']                = 'Sofa'
    ?

  5. #5
    Contao-Fan
    Registriert seit
    11.10.2010.
    Beiträge
    379

    Frage Habe die Logik noch nicht ganz verstanden

    Sorry wenn ich nochmal nachfrag, aber ich habe das noch nicht so ganz verstanden.

    $GLOBALS['TL_LANG']['MSC'] -> ist mir klar.

    So wie ich das verstehe, ist ['loggedInAs'] eine Variable, die je nach Browsersprache mit dem richtigen Wort, bzw. Wert gefüllt wird. Aber diese Variable muss ja irgendwo definiert sein. Jetzt die Frage: Wo wird z.B. com_zusatztext definiert?

    PHP-Code:
    /* Sonstiges */
    $GLOBALS['TL_LANG']['MSC']['loggedInAs']    = 'Sie sind angemeldet als <strong>%s</strong>.';
    $GLOBALS['TL_LANG']['MSC']['confirmation']  = 'Pass.-Bestätigung';
    $GLOBALS['TL_LANG']['MSC']['com_zusatztext']  = '* Pflichtfelder (Ihre E-Mail-Adresse wird nicht veröffentlicht)'
    $GLOBALS['TL_LANG']['MSC']['com_headline']  = 'Kommentare';
    $GLOBALS['TL_LANG']['MSC']['backlink']  = 'Zurück'
    Ich habe immer noch das Prblem, dass ich, wie oben beschrieben, eine Tabelle habe in der ich je nach Sprache z.B. Couch durch Sofa ersetzen möchte, bräuchte aber evtl. noch ein kleinen Denkanstoß zur Logik hinter den Übersetzungen.

    Viele Grüße

  6. #6
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    so wie ich das verstehe geht das am einfachsten mit inserttags
    Da ist die langconfig nicht so ganz das richtige....

  7. #7
    Contao-Fan
    Registriert seit
    11.10.2010.
    Beiträge
    379

    Standard

    Du meinst bestimmt ifllng. Es gibt 3 Möglichkeiten, je nach dem geeignet wie viele Anpassungen man haben möchte. Nina macht das mit einem eigenen Modul, diese Variante ist für mich die beste. (Link zu diesem Thread steht ganz oben).

  8. #8
    Contao-Fan
    Registriert seit
    11.10.2010.
    Beiträge
    379

    Standard Noch jemand der das ein wenig beschreiben kann?

    Oder gibt es irgendwo evtl. ein Video oder ein Tutorial dazu ?

  9. #9
    Contao-Nutzer
    Registriert seit
    14.03.2012.
    Ort
    Berlin
    Beiträge
    225

    Standard

    Zitat Zitat von x4all Beitrag anzeigen
    Ich habe immer noch das Prblem, dass ich, wie oben beschrieben, eine Tabelle habe in der ich je nach Sprache z.B. Couch durch Sofa ersetzen möchte, bräuchte aber evtl. noch ein kleinen Denkanstoß zur Logik hinter den Übersetzungen.
    Ich würde an deiner Stelle Variablen in der Art erstellen:

    default.php
    PHP-Code:
    if ($GLOBALS['TL_LANGUAGE'] == 'de'){

       
    $GLOBALS['TL_LANG']['MSC']['projektname']['couch']  = 'Sofa';

    } else if(
    $GLOBALS['TL_LANGUAGE'] == 'fr'){

       
    $GLOBALS['TL_LANG']['MSC']['projektname']['couch']  = 'Canapé';

    } else {

       
    //fallback language (en)
       
    $GLOBALS['TL_LANG']['MSC']['projektname']['couch']  = 'Couch';



  10. #10
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Aber in der langconfig.php, nicht die default.php, denn die wird beim nächsten Contao Update überschrieben.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  11. #11
    Contao-Fan
    Registriert seit
    11.10.2010.
    Beiträge
    379

    Standard Lösung über langconfig.php

    Naja, wenn ich dass auf die Art umsetze, brauche ich ja das Modul von Nina nicht.

    Es werden eben recht viele Übersetzungen kommen... Würdet Ihr trotzdem die Anpassung in der Langconfig empfehlen?

  12. #12
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    achso, ja bei der Nina Lösung muss es dann die default.php sein.
    Der Vorteil von dieser Lösung als Modul ist, das du je Sprache eine Datei anlegen kannst/musst, diese werden ja durch die Verzeichnisse getrennt.
    Dann braucht man keine Logik mehr in den Sprachdateien selbst, was immer von Vorteil ist, wenn man mit dem internem Cache arbeitet. Der kommt leider gern aus dem Tritt wenn nicht alles korrekt ist.

    Sind das also viele Änderungen und auch jeweils für mehrere Sprachen, dann würde ich die Lösung von Nina vorziehen.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  13. #13
    Contao-Nutzer
    Registriert seit
    14.03.2012.
    Ort
    Berlin
    Beiträge
    225

    Standard

    @BugBuster:
    Das war auf Nina's Modul bezogen. Dort wird ne default.php genutzt ;-)

    Du kannst das aber ohne Modul genauso in die langconfig.php schreiben.

    Bei dem Modul hättest du den Vorteil, dass du auch nur die Bedingungen in die default.php schreiben & dort dann separate Dateien für eine Sprache inkludieren könntest (z.B. default_en.php, default_de.php, etc.)
    Geht natürlich auch in der langconfig.php, aber dann hat man dort noch weitere Dateien rum liegen.

  14. #14
    Contao-Fan
    Registriert seit
    11.10.2010.
    Beiträge
    379

    Information

    Ich hätte eben gerne diese Lösung:

    PHP-Code:
    /* Sonstiges */
    $GLOBALS['TL_LANG']['MSC']['loggedInAs']    = 'Sie sind angemeldet als <strong>%s</strong>.';
    $GLOBALS['TL_LANG']['MSC']['confirmation']  = 'Pass.-Bestätigung';
    $GLOBALS['TL_LANG']['MSC']['com_zusatztext']  = '* Pflichtfelder (Ihre E-Mail-Adresse wird nicht veröffentlicht)'
    $GLOBALS['TL_LANG']['MSC']['com_headline']  = 'Kommentare';
    $GLOBALS['TL_LANG']['MSC']['backlink']  = 'Zurück'
    Nur weiß ich eben nicht, was es mit der dritten [] Klammer auf sich hat.

    Lege ich in dieser Zeile die Variable fest? Wenn nein, wo dann?

    Wenn mir jemand ein Bsp. geben kann, wie ich oben gepostet habe, dass in einer DB Zelle "Couch" drin steht, aber in der Deutschen Sprache als "Sofa" angezeigt werden soll, damit wäre mir wirklich geholfen.

    Schon mal vielen Dank

  15. #15
    Contao-Nutzer
    Registriert seit
    14.03.2012.
    Ort
    Berlin
    Beiträge
    225

    Standard

    Ja, das letzte ist die Variable, bzw ist das ganze Teil dann die Variable.

    Du musst dich halt darum kümmern, das die Bezeichner (Variablen) keine Sonderzeichen wie Umlaute beinhalten.
    Dafür könntest du die Helper Funktion standardize benutzen.

    D.h. wenn du im Template, oder vorher die übersetzte Bezeichnung ausgeben willst, könntest du es so machen:

    PHP-Code:
    $strCouchStandardized strtolower(standardize($deinCouchStringAusDatenbank)); //ä -> ae etc, siehe system/helper/functions.php
    /* print_r($strCouchStandardized); //zum gucken, wie die Variable nun lautet, damit du sie anlegen kannst */

    $strLangCouch $GLOBALS['TL_LANG']['MSC'][$strCouchStandardized];

    if(
    $strLangCouch == ''){ //Fallback zum DB Eintrag, falls Sprachvariable nicht gesetzt ist.
      
    $strLangCouch $deinCouchStringAusDatenbank;
    }


    echo 
    '<p>Couch in deiner Sprache: '.$strLangCouch.'</p>'
    Ich hab keine Ahnung ob es eine bessere Möglichkeit gibt, aber es geht ;-)

    Ggf. könntest du auch noch eine weitere Ebene im Spracharray nur für dein Projekt machen.
    Ansonsten könntest du bereits von Contao genutzte Variablen überschreiben.


    PHP-Code:
    $GLOBALS['TL_LANG']['MSC']['deinprojektname']['couch']; 
    Geändert von jk1 (06.11.2013 um 19:46 Uhr)

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
  •