web-dev-qa-db-fra.com

Les constantes de langue ne sont pas remplacées dans JLayout

J'essaie d'utiliser Jlayout dans un plugin que j'écris et tout fonctionne bien sauf que les constantes de langue dans le fichier de mise en page ne sont pas remplacées.

Mon appel à rendre la mise en page est;

$layout = new JLayoutFile($layoutname, $layoutpath);
$body = $layout->render($data);

Dans mon fichier de mise en page, j'ai:

        <th><?php echo Jtext::_('COM_MEMBERSHIPS_FIELD_MEMBERSHIP_LABEL'); ?></th>
        <td><?php echo $displayData['membership']; ?></td>

Si je vide $ body après le rendu, j'obtiens:

COM_MEMBERSHIPS_FIELD_MEMBERSHIP_LABEL 911 

Le '911' est les données attendues pour l'appartenance au champ mais j'attends:

Membership: 911

Je poursuis ce problème depuis des heures maintenant et ne semble pas être en mesure de trouver quoi que ce soit qui me donne des indices sur ce qui se passe.

Ce que je peux partager, c'est que la constante se trouve dans le fichier .ini dans les fichiers de langue du site et d'administration, car la constante est correctement remplacée dans d'autres vues.

Mon hypothèse est que pour une raison quelconque, les fichiers de langue ne sont pas trouvés dans le processus Jlayout, comme je manque une ligne ou quelque chose qui doit l'inclure, mais je ne trouve aucun exemple qui montre que quoi que ce soit d'autre est nécessaire.

Merci d'avance,

Terry

1
Irata

Je viens de vérifier quelques éléments depuis que j'ai répondu. Veuillez voir ci-dessous le saut de ligne.

Appelez-vous l'appel $this->loadLanguage($this->_name, [path/to/language/directory]); dans votre plugin?

En un coup d'œil, je peux voir que vous semblez avoir une faute de frappe dans votre appel Jtext::_(). Essayez plutôt de le remplacer par JText::_().

Si cela ne fonctionne pas: avez-vous activé le débogage de la langue?

J'essaierai de le vérifier dans le plugin sur lequel je travaille et je publierai la mise à jour en conséquence.


** MISE À JOUR: ** Je peux confirmer qu'en appelant Jtext::_() ou JText::_(), mon PLG_MYPLUGIN_CONSTANTSsont traduit.

Je recommande donc de vérifier que:

  1. Vous avez les deux fichiers de langue spécifiés comme sous-éléments des langues élément du fichier manifeste de votre extension (.xml) avec les valeurs suivantes:
language/en-GB.plg_system_[your_plugin_name].ini
language/en-GB.plg_system_[your_plugin_name].sys.ini
  1. Vous chargez la langue à l'aide de la méthode $this->loadLanguage() susmentionnée dans la __construct() méthode
  2. Vous traduisez avec succès les constantes de votre plugin

J'espère que c'est utile!

Gez

0
JoomGuy