it-swarm.com.de

Sprachdateien in einem Plugin

Ich schreibe ein Plugin, das zur Laufzeit einige übersetzbare Zeichenfolgen benötigt, habe aber Probleme, meine Sprachdatei abzurufen.

Ich habe folgendes:

  • /language/en-GB/en-GB.plg_system_myplugin.sys.ini
    Dies enthält die Übersetzungen für die Konfigurationsseite des Plugins. Das funktioniert gut.

  • /language/en-GB/en-GB.plg_system_myplugin.ini
    Dies enthält die Übersetzungen für das zur Laufzeit zu verwendende Plugin. Das funktioniert nicht.

  • Und beide der oben in der XML-Datei des Plugins genannten:

    <languages>
        <language tag="en-GB">language/en-GB/en-GB.plg_system_myplugin.sys.ini</language>
        <language tag="en-GB">language/en-GB/en-GB.plg_system_myplugin.ini</language>
    </languages>
    

Wie bereits erwähnt, funktioniert die Datei .sys.ini einwandfrei. Die Konfigurationsseite meiner Plugins wird mit allen richtig geladenen Labels usw. angezeigt.

Die INI-Datei funktioniert jedoch nicht. Soweit ich weiß, wird die INI-Übersetzungsdatei in der Joomla-Debug-Konsole nicht geladen, auch wenn das Plugin verwendet wird.

Ich kann nicht sehen, was ich hier falsch mache. Ein ähnlicher Code in Modulen und Komponenten funktioniert einwandfrei, aber ich kann ihn in einem Plugin nicht zum Laufen bringen.

Kann mir jemand bitte sagen, wie eine Sprachdatei in einem Plugin funktioniert oder was mir fehlt?.

Vielen Dank.

2
Simba

Seit Joomla 3.1 ist es nicht mehr nötig, den Konstruktor zu erweitern, wie es Farahmands Antwort ist. Sie können leicht schreiben/setzen die $ autoloadLanguage like

 class myPlugin extends JPlugin
 {
    /**
    * Load the language file on instantiation.
    *
    * @var    boolean
    * @since  3.1
    */
    protected $autoloadLanguage = true;

    ...
3
Tom Kuschel

Laden Sie die Sprachdateien wie folgt in den Konstruktor des Plugins:

function __construct(&$subject, $config) {
    $lang = JFactory::getLanguage();
    $lang->load('plg_system_myplugin', dirname(__FILE__));

    parent::__construct($subject, $config);
}
2
Farahmand

Ich gehe davon aus, dass Sie Folgendes getan haben, aber nur um sicherzugehen:

  • lesen Sie https://docs.joomla.org/Creating_a_profile_plugin/en
  • stellen Sie sicher, dass die Sprachdatei vorhanden und im richtigen Ordner ist
  • (Doppel) Überprüfen Sie, ob die Sprachdatei mit der richtigen Syntax geschrieben ist und keine Rechtschreibfehler vorliegen

Das Problem kann in Ihrer Sprachdatei oder in Ihrem Skript liegen. Um dies festzustellen, können Sie versuchen, eine Konstante in Ihrer Sprachdatei zu überschreiben. Gehen Sie zu Erweiterungen -> Sprachen -> Überschreibungen und klicken Sie auf die grüne Schaltfläche Neu. Suchen Sie nach einem Wert, der in der Sprachdatei enthalten sein soll. Wenn Sie kein Ergebnis erhalten, ist es in Ihrer Datei. Wenn Sie ein Ergebnis erhalten, ist es in Ihrem Skript.

2
YolkNet