web-dev-qa-db-fra.com

Comment utiliser un fichier de langue backend à partir d'un composant personnalisé dans le frontend

il est ennuyeux de devoir créer beaucoup de code dans un composant Joomla pour le backend et le front-end. Je voudrais donc utiliser le fichier de langue administrateur de mon composant personnalisé pour mon frontal. J'ai trouvé ce morceau de code utile:

$language = JFactory::getLanguage();
$language->load('com_yourcomponentname', JPATH_ADMINISTRATOR, 'en-GB', true);

Mais où devrais-je inclure ce morceau de code? Je l'ai essayé dans le fichier index.html de mon modèle frontend. Mais ça ne marche pas!

J'ai aussi essayé au début des templates index.html:

$language = JFactory::getLanguage();
$extension = 'com_yourcomponentname';
$base_dir = JPATH_ADMINISTRATOR . DS . 'components' . DS . $extension;
$language_tag = $language->getTag(); // loads the current language-tag

$language->load($extension, $base_dir, $language_tag, true);
$paths = $language->getLanguagePath();

$ path me montre un tableau avec tous les composants chargés, y compris mon composant personnalisé. La dernière entrée du tableau de mon composant personnalisé renvoie correctement au fichier de langue d’administration de mon composant.

D:\htdocs\test\language\en-GB\en-GB.com_yourcomponentname
D:\htdocs\test\language\de-DE\de-DE.com_yourcomponentname
D:\htdocs\test\components\com_yourcomponentname\language\en-EN\en-EN.com_yourcomponentname
D:\htdocs\test\components\com_yourcomponentname\language\de-DE\de-DE.com_yourcomponentname
D:\htdocs\test\administrator\components\com_yourcomponentname\language\en-EN\en-EN.com_yourcomponentname
D:\htdocs\test\administrator\components\com_yourcomponentname\language\de-DE\de-DE.com_yourcomponentname

Mais la traduction des variables ne sont toujours pas faites. La traduction dans le backend fonctionne bien avec ce même fichier.

2
Perino

Définir les instructions dans le point d’entrée du site yourcomponent.php fera l'affaire!

Mettez ces commandes dans le yourcomponent.php:

$language = JFactory::getLanguage();
$extension = 'com_yourcomponentname';
$base_dir = JPATH_ADMINISTRATOR . DIRECTORY_SEPARATOR . 'components' . DIRECTORY_SEPARATOR . $extension;
$language_tag = $language->getTag(); // loads the current language-tag
$language->load($extension, $base_dir, $language_tag, true);

Si vous voulez charger de administrator/languages utilisez ce code:

$language = JFactory::getLanguage();
$extension = 'com_yourcomponentname';
$language_tag = $language->getTag(); // loads the current language-tag
$base_dir = JPATH_ADMINISTRATOR;
$language->load($extension, $base_dir, $language_tag, true);
1
Perino