Version Joomla 3.4.2
Dans notre configuration actuelle, nous aimerions pouvoir ajouter le dossier de remplacement de langue au dossier de modèle actuel, puis nous pourrions réaliser 3 choses:
Je sais qu’il est possible de modifier manuellement le fichier ini via Language Manager, mais les étiquettes ne peuvent être modifiées que l’une après l’autre, ce qui entraîne un très long processus de mise à jour lorsque nous avons parfois 800 étiquettes provenant de l’agence de traduction.
De plus, notre implémentation actuelle ne nous permettra pas d’échanger des fichiers sur le serveur (serveur de production). Nous pouvons uniquement télécharger de nouveaux modèles et modifier des fichiers au sein des modèles (grâce à l'interface du gestionnaire de modèles d'administrateur).
Si j'ajoute le dossier des remplacements à l'intérieur du modèle, il ne me reste plus qu'à remplacer la fonction __construct à l'intérieur de\libraries\joomla\language\language.php, car c'est là que le chemin d'accès aux remplacements est défini.
Comment pourrais-je remplacer cette classe pour changer l'emplacement des substitutions de langue? Pouvez-vous penser à un meilleur moyen d'y parvenir avec les restrictions actuelles?
Je pense que vous compliquez trop cela. Créez simplement un dossier de langue de modèle. Vous pouvez y insérer toutes les chaînes de langage de votre choix, car elles ne doivent pas être utilisées uniquement dans votre modèle, et avoir un fichier pour chaque langue. Par exemple.
/templates/your-template/language/en-GB/en-GB.tpl_your-template.ini
/templates/your-template/language/de-DE/de-DE.tpl_your-template.ini
Vous devez charger les fichiers de langue de modèle dans le composant lui-même, car Joomla affiche le composant avant le modèle. Par conséquent, vous ne pouvez pas charger un remplacement de langage de composant dans le modèle (index.php).
Vous devez faire les choses suivantes:
Créer:
templates/your_template/language/fr-FR/fr-FR.com_votrecomponent.ini
Ensuite aller à
/components/your_component/yourcomponent.php
Insérer avant
$controller->execute(JRequest::getCmd('task'));
les commandes suivantes:
$language = JFactory::getLanguage();
$language->load('com_yourcomponent' , JPATH_SITE.'/templates/your_template', $language->getTag(), true);
Cela devrait fonctionner, je l'ai testé avec mon composant personnalisé il y a quelques minutes.
Non testé:
Vous pouvez utiliser les substitutions html/com_yourcomponent/viewname/default.php pour charger votre fichier de langue personnalisé, je suppose. Il suffit de mettre les commandes en haut du fichier (après _JEXEC).
Peut-être que cela fonctionnera aussi sans éditer le composant principal.
Comme je n'ai pas assez de réputation pour commenter Dennis Heiden , je choisis donc de donner moi-même une réponse, simplement pour dire que j'ai testé la deuxième solution donnée par Dennis Heiden = et cela fonctionne parfaitement. Merci.
Pour être clair, la solution donnée que je vous renvoie est la suivante:
$language = JFactory::getLanguage();
$language->load('com_eventgallery' , JPATH_SITE . '/templates/your_template', $language->getTag(), true);