Language String in Javascript mittels Joomla.Text._()

  • Hallo zusammen,

    ich baue gerade meine erste Komponente in der ich einiges über javascript realisiere. Nun möchte ich mittels Javascript einige Texte ausgeben, die mittels Language-Strings übersetzbar sein sollen. Ich habe gesehen, dass es innerhalb des Javascript mittels Joomla.Text._() funktionieren soll. Doch leider wird mir die Übersetzung nicht angezeigt.

    Ich habe zum Beispiel in der JS-Datei folgende Code-Zeile eingebaut

    JavaScript
    console.log(Joomla.Text._("JYES"))

    Die Ausgabe lautet dabei: "JYES" und nicht wie erwartet "JA" für Deutsch oder "Yes" für Englisch.

    In der joomla.asset.json habe ich bei Aufruf der Datei mit angegeben:

    JSON
        {
          "name": "com_userfiles.userfiles_upload",
          "type": "script",
          "uri": "com_userfiles/userfiles_upload.js",
          "dependencies": [
            "core"
          ]
        }

    Fehlt hier noch etwas?

    JS-Fehler werden keine angezeigt.

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.

  • Eventuell nützlich:

    manual.joomla.org/docs/general-concepts/javascript/core/#client-side-translations

    Wobei im manual die Ausgabe wohl fehlerhaft ist und bei dir richtig ist.

    Teste mal:

    Joomla.Text._('MESSAGE')

    Es geht wohl auch:

    Joomla.JText._('MESSAGE')

    und schaue im DOM unter

    Joomla ->Text -> Strings

    bzw.

    Joomla -> JText -> Strings

    ob der gewünschte String überhaupt zur Verfügung steht.

    Ich bin aber diesbezüglich nur ein Laie.

  • ob der gewünschte String überhaupt zur Verfügung steht

    Genau das war scheinbar das Problem. Ich habe mir das noch einmal angeschaut und Joomla.Text._() holt sich die Strings aus den Options, wo die natürlich nicht vorhanden waren. Ich habe das jetzt so gemacht, dass die benötigten Strings in der View in die Options geladen werden.

    PHP
    $app->getDocument()->addScriptOptions('joomla.jtext',
        array(
            'JYES' => Text::_('JYES'),
            'JNO' => Text::_('JNO'),
            'COM_USERFILES_USER_FILES_MANAGED_FILE_DELETE' => Text::_('COM_USERFILES_USER_FILES_MANAGED_FILE_DELETE'),
            'COM_USERFILES_USER_FILES_MANAGED_RETURN' => Text::_('COM_USERFILES_USER_FILES_MANAGED_RETURN'),
            'COM_USERFILES_USER_FILES_MANAGED_NEW_FOLDER_TITLE' => Text::_('COM_USERFILES_USER_FILES_MANAGED_NEW_FOLDER_TITLE')
    );
            

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.

  • ...Joomla.Text._() holt sich die Strings aus den Options...

    Sehe die Strings im DOM unter:

    optionsStorage -> joomla.jtext

    z.B.:

    optionsStorage Object { "joomla.jtext": {…}, "system.paths": {…}, "csrf.token": "6f47cf4ff70813001b823eae97f7c91e", … }
    csrf.token "6f47cf4ff70813001b823eae97f7c91e"
    joomla.jtext Object { PLG_SYSTEM_WEBAUTHN_ERR_CANNOT_FIND_USERNAME: "Das Feld für den Benutzernamen wurde im Login-Modul nicht gefunden. Die passwortlose Authentifizierung funktioniert auf dieser Website nicht, bitte ein anderes Login-Modul verwenden.", PLG_SYSTEM_WEBAUTHN_ERR_EMPTY_USERNAME: "Bitte nur den Benutzernamen (aber NICHT das Passwort) eingeben, bevor die Anmeldeschaltfläche für Passkeys ausgewählt wird.", PLG_SYSTEM_WEBAUTHN_ERR_INVALID_USERNAME: "Der angegebene Benutzername entspricht nicht einem Benutzerkonto, das eine passwortlose Anmeldung auf dieser Website ermöglicht hat.", … }
    ERROR "Fehler"
    JCLOSE "Schließen"
    JHIDEPASSWORD "Passwort ausblenden"
    JOK "OK"
    JOPEN "Öffnen"
    JSHOWPASSWORD "Passwort anzeigen"
    MESSAGE "Nachricht"
    NOTICE "Hinweis"
    PLG_SYSTEM_WEBAUTHN_ERR_CANNOT_FIND_USERNAME "Das Feld für den Benutzernamen wurde im Login-Modul nicht gefunden. Die passwortlose Authentifizierung funktioniert auf dieser Website nicht, bitte ein anderes Login-Modul verwenden."
    PLG_SYSTEM_WEBAUTHN_ERR_EMPTY_USERNAME "Bitte nur den Benutzernamen (aber NICHT das Passwort) eingeben, bevor die Anmeldeschaltfläche für Passkeys ausgewählt wird."
    PLG_SYSTEM_WEBAUTHN_ERR_INVALID_USERNAME "Der angegebene Benutzername entspricht nicht einem Benutzerkonto, das eine passwortlose Anmeldung auf dieser Website ermöglicht hat."
    WARNING "Warnung"