Kann mit pi_getLL nicht auf locallang.php zugreifen [Gelöst]

  • monti monti
    R2-D2
    0 x
    69 Beiträge
    0 Hilfreiche Beiträge
    04. 08. 2006, 11:33

    Hallo alle zusammen,

    ich habe Probleme bei der Realisierung der Mehrsprachigkeit meiner Extention.

    Folgender PHP Code der class.ml_faireditor_pi2.php

    1. ...
    2. require_once(PATH_tslib.'class.tslib_pibase.php');
    3.  
    4. class tx_mlfaireditor_pi1 extends tslib_pibase {
    5. var $prefixId = 'tx_mlfaireditor_pi1'; // Same as class name
    6. var $scriptRelPath = 'pi1/class.tx_mlfaireditor_pi1.php'; // Path to this script relative to the extension dir.
    7. var $extKey = 'ml_faireditor'; // The extension key.
    8. var $pi_checkCHash = TRUE;
    9.  
    10. /**
    11. * The main method of the PlugIn
    12. *
    13. * @param string $content: The PlugIn content
    14. * @param array $conf: The PlugIn configuration
    15. * @return The content that is displayed on the website
    16. */
    17. function main($content,$conf) {
    18. global $TSFE, $LANG;
    19.  
    20. $this->conf=$conf;
    21. $this->pi_setPiVarDefaults();
    22. $this->pi_loadLL();
    23.  
    24. $fair_records = $this->getFairRecords();
    25. $sys_language_uid = $TSFE->sys_language_uid;
    26. $content = '';
    27.  
    28. $n = 0;
    29. print_r($this->pi_getLL('hall'));
    30. ...

    Um es zu testen wollte ich mir einen String der locellang.php, die im Ordner pi1 liegt, ausgeben lassen. Aber es pasiert nichts. ich vermute die Verbindung kommt gar nicht erst zu stande.

    Hier der Code der locallang.php

    1. ...
    2. $LOCAL_LANG = Array (
    3. 'default' => Array (
    4. 'hall' => 'Exhibition hall',
    5. 'booth' => 'Booth',
    6. 'div_name' => 'Division',
    7. 'division_0' => 'Sensor Division',
    8. 'division_1' => 'Thermography',
    9. ),
    10. ...

    Kann mir einer sagen was ich hier falsch mache? Ich sitze schon seit Tagen an dem Problem und eine Suche im Forum hat auch noch nicht die Lösung gebracht.

    Gruß, Micha.


  • 1
  • steffenk steffenk
    Obi-Wan Kenobi
    0 x
    4666 Beiträge
    0 Hilfreiche Beiträge
    04. 08. 2006, 11:41

    der Code ist korrekt, der Fehler liegt wohl woanders, z.B. in $this->getFairRecords()

    print_r ist auch für Arrays gedacht, in Typo3 gibt es bessere Methoden.

    Teste es einfach mal vor Deiner Funktion mit der Anweisung

    1. debug(array('hall'=>$this->pi_getLL('hall')));

    Du sprachst von pi2, ist aber pi1, nicht das Du da durcheinandergekommen bist.

  • monti monti
    R2-D2
    0 x
    69 Beiträge
    0 Hilfreiche Beiträge
    04. 08. 2006, 13:56

    Hallo steffenk,

    pi2 war ein schreibfehler. :o Ich arbeite die ganze Zeit in pi1. Wenn ich den Debug-Befehl ausführe, passiert gar nix. Muss ich dazu noch eine Klasse laden?

    Monti

  • monti monti
    R2-D2
    0 x
    69 Beiträge
    0 Hilfreiche Beiträge
    04. 08. 2006, 14:01

    Ich hab jetzt mal folgendes getestet:

    1. $test = t3lib_div::debug(array('hall'=>$this->pi_getLL('hall')));
    2. echo $test;

    Da bekomme ich "hall" als wert geliefert. Richtig ist das nicht.

    Micha

  • steffenk steffenk
    Obi-Wan Kenobi
    0 x
    4666 Beiträge
    0 Hilfreiche Beiträge
    04. 08. 2006, 15:27

    debug sollte eigentlich immer gehen, dann mach ein print_r raus :)

  • monti monti
    R2-D2
    0 x
    69 Beiträge
    0 Hilfreiche Beiträge
    04. 08. 2006, 15:55

    Hm, so richtig will das noch nicht klappen. Was soll den der Debug ausgeben? Ich muss mich mit dieser Funktion erstmal näher beschäftigen.

    Monti

  • steffenk steffenk
    Obi-Wan Kenobi
    0 x
    4666 Beiträge
    0 Hilfreiche Beiträge
    04. 08. 2006, 17:10

    debug gibt arrays aus am Anfang der Seite, also wie print_r, aber direkt als Tabelle formatiert.

    debug($array);

  • monti monti
    R2-D2
    0 x
    69 Beiträge
    0 Hilfreiche Beiträge
    08. 08. 2006, 16:33

    Hallo steffenk,

    die debug-Funktion hat mich nicht richtig weiter gebraucht. Es sieht so aus, als ob die locallang.php nicht geladen wird! Dabei wird sie durch $this->pi_loadLL(); initialisiert!

    Normalerweise funktioniert es immer, aber dbei dieser Extension nicht.

    HILFE!!

    Monti

  • steffenk steffenk
    Obi-Wan Kenobi
    0 x
    4666 Beiträge
    0 Hilfreiche Beiträge
    08. 08. 2006, 16:43

    ok, noch ein Hinweis:

    debug funktioniert nur ohne cache, hier hilft die Einstellung

    1. $TYPO3_CONF_VARS['EXT']['extCache']='0';

    in der localconf.php (aber nur für die Entwicklung !)

    Wenn Du meinst, das das nicht geladen wird, dann mach auch mal ein debug in der Funktion pi_loadLL in der class.tslib_pibase.php

  • monti monti
    R2-D2
    0 x
    69 Beiträge
    0 Hilfreiche Beiträge
    29. 08. 2006, 08:54

    Ich hab die Lösung inzwischen gefunden. Für alle die vor dem gleichen Problem stehen:

    Nach dem alle Versuche zum fixen des Problems fehlgeschlagen waren, habe ich einfache eine neue Extension mit Hilfe des Kickstarters erstellt und wollte das Ganze neu schreiben. Dabei ist mir aufgefallen, dass der aktuelle Kickstarter gar keine locallang.php mehr anlegt, sondern nur noch die locallang.xml.

    Die Lösung ist also, die verschiedenen Sprachversionen nicht in die locallang.php, sondern locallang.xml zu schreiben. Liegt im gleichen Ordner.

    Gruß, Micha.

  • 1