GX3 LanguageTextmanager überladen

Thema wurde von Cyrus (LeGong), 7. Juni 2016 erstellt.

  1. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    Wie kann man bei GX3 die LanguageTextManager.inc.php überladen? Es soll eine neue Shipping-Modul.lang.inc.php Datei unter lang/german/user_sections/modules/shipping ablesen können.
     
  2. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.669
    Danke erhalten:
    1.264
    Danke vergeben:
    300
    Hi,

    Dateien im Ordner /lang/german/user_sections/ werden automatisch eingelesen, dafür muss der LanguageTextManager nicht überladen werden.

    Wenn du eine eigenes Versandmodul erstellst, kann du mit folgenden Befehlen die Texte auch aus deiner eigenen Datei direkt auslesen:

    PHP:
    $languageTextManager MainFactory::create('LanguageTextManager''Shipping-Modul');
    $meineTextVariable $languageTextManager->get_text('mein_text1');
    Wichtig ist dass der 2. Parameter der Name der Datei ohne Endungen ist.

    Die Befehle müssen im Versandmodul oder an der Stelle wo die Texte erscheinen sollen eingefügt werden.
     
  3. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.692
    Danke vergeben:
    903
  4. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    #4 Cyrus (LeGong), 7. Juni 2016
    Zuletzt bearbeitet: 8. Juni 2016
    Vielen Dank für die ausführliche Erklärung.
     
  5. Cyrus (LeGong)

    Cyrus (LeGong) Erfahrener Benutzer

    Registriert seit:
    21. Dezember 2011
    Beiträge:
    1.432
    Danke erhalten:
    342
    Danke vergeben:
    176
    Nachtrag:
    Wenn ich ein Shipping-Modul Namens "xy.php" in dem Ordner "includes/modules/shipping/" anlege und die passende Textdatei "xy.lang.inc.php" in dem Ordner "/lang/german/user_sections/" anlege (alte Methode), wird diese Text-Datei NICHT AUTOMATISCH eingelesen!
    Drastisch geänder ist die Namensvergabe. Nämlich muss man jetzt die Sprachdatei "modules.xy.lang.inc.php" nennen!!!
    Bleibt es jetzt bei dieser Variante? Oder wird die Methode wieder geändert?

    Bei der zweiten Varianten:
    finde ich nicht für so praktisch. Letztendlich man muss jede Textpharase in der Shipping-Modul mit einpacken! Oder habe ich das falsch verstanden?
     
  6. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    26. Oktober 2011
    Beiträge:
    967
    Danke erhalten:
    149
    Danke vergeben:
    130
    Genau das selbe problem hatte ich zuletzt ja auch gehabt.
    Da wurde mir aber nichts von
    PHP:
    $languageTextManager MainFactory::create('LanguageTextManager''Shipping-Modul');
    $meineTextVariable $languageTextManager->get_text('mein_text1');
    gesagt.
     
  7. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.692
    Danke vergeben:
    903
    Die Versandmodule, die im Standard enthalten sind, arbeiten noch mit Sprachkonstanten. Wenn man das in einem neuen Modul beibehalten möchte, was hier nicht cool aber ok ist, kann man am Anfang der Datei über dem class ... wie folgt die Sprachvariablen als Konstanten laden:
    PHP:
    $languageTextManager MainFactory::create_object('LanguageTextManager', array(), true);
    $languageTextManager->init_from_lang_file('SECTIONNAME'$_SESSION['languages_id']);
    An der Namensvergabe der Sprachdateien wird sich auf absehbare Zeit nichts mehr verändern.