web-dev-qa-db-fra.com

Comment réécrire JText pour obtenir mes traductions de texte personnalisées à partir de la base de données et non à partir de fichiers

J'ai réussi à réécrire le plugin système "Language Manager", il enregistre donc maintenant les textes de différentes langues dans Database (DB).

Maintenant, je ne sais pas comment réécrire JText (qui est présent dans tout le code de l'application), de sorte qu'il faut du texte pour chaque langue directement à partir de la base de données et non à partir des fichiers locaux. La même chose que je dois faire pour que "Gestionnaire de langues" ne prélève des données que dans une base de données.

J'apprécierais votre aide! Merci

2
Alex Ros

Au lieu d'écraser ou de modifier la classe JText, pourquoi ne pas simplement écrire une fonction d'appel de fonction dans votre modèle qui extrait votre traduction de la base de données et renvoie la chaîne?

Écho de la chaîne dans votre vue après avoir inclus votre modèle:

//INCLUDE AT THE TOP OF THE LAYOUT FILE
$mymodel= JModelLegacy::getInstance('ViewName','MyComponentNameModel');

//ECHO OUT TRANSLATION WHERE YOU NEED IT
echo $mymodel->getTranslation('MY_TRANSLATION_STRING');

Mettez ceci dans votre fichier de modèle:

public function getTranslation($string)
    $db = JFactory::getDBO();
    $query = $db->getQuery(true);
    $sql = "SELECT text FROM #__mycom_translations WHERE translation = '$string'";
    $db->setQuery($sql);
    $row = $db->getObject();
    return $row->text;
}
3
Terry Carter

Je ne peux pas vous donner une réponse complète, mais peut-être un couple d'indices pour vous aider à le résoudre.

La classe JText se trouve ici:

bibliothèques\joomla\language\text.php

Peut-être que vous pouvez remplacer la classe JText par la vôtre et utiliser une base de données à la place des fichiers de votre version.

Et chargez-le avant celui de base afin de ne pas le charger du tout.

vois ici:

http://www.informit.com/articles/article.aspx?p=1858258&seqNum=8

1
Piero Marsilio