Quelle peut être la raison pour ne pas être en mesure d'installer des langues via admin?
Je reçois:
Il n'y a pas de langues disponibles à installer pour le moment. Veuillez sélectionner le bouton "Trouver les langues" pour rechercher des mises à jour sur le site Joomla! Serveur de langues. Vous aurez besoin d'une connexion Internet pour que cela fonctionne.
J'ai nettoyé les caches et j'ai certainement une connexion Internet.
Basé sur la réponse de Lodder, ci-dessous:
Tous mes sites de mise à jour sont activés dans l'administrateur.
Cependant, la méthode findLanguages()
a un avis différent:
En le modifiant un peu comme ci-dessous, les résultats que j’obtiens des 2 déclarations if sont: 1 & 2 en conséquence.
public function findLanguages($cache_timeout = 0)
{
if (!$this->enableUpdateSite())
{
var_dump('1');
//return false;
}else {
var_dump('2');
}
// *** This results to var_dump 1 ***
if (!$this->enGbExtensionId)
{
var_dump('1');
//return false;
}else {
var_dump('2');
}
// *** This results to var_dump 2 ***
À l'époque, je ne passais pas plus de temps à rechercher la cause et la résolution de ce problème, mais aujourd'hui, je devais travailler sur un site présentant le même problème: Aucune langue disponible sur le gestionnaire de langues et obligation imposée au propriétaire du site de résoudre le problème. cette.
Ainsi, après avoir fait le tour, j'ai découvert que pour ce nouveau site Web, le problème se trouvait dans la base de données.
Pour que Language Installer trouve les packs de langues, la base de données doit comporter les enregistrements suivants:
Table: #__extensions
Une extension de type de package portant le nom: English (en-GB) Language Pack
Table: #__update_sites
Un enregistrement pour ce site: Nom: Accredited Joomla! Translations
, Type: collection
, Emplacement: https://update.joomla.org/language/translationlist_3.xml
Table: #__update_sites_extensions
Un enregistrement qui joindra l’extension de la première table au site de mise à jour de la seconde table. Donc, cet enregistrement devrait avoir l'identifiant de l'extension English (en-GB) Language Pack
et l'identifiant du site de mise à jour Accredited Joomla! Translations
.
Dans mon cas, il s’agissait de l’extension de package English (en-GB) Language Pack
manquante dans les tables d’extensions. Vous ne savez pas comment cela s’est passé au début, car ce paquet est aussi une extension protégée, mais c’était vrai.
J'ai donc dû ajouter l'extension dans la base de données:
INSERT INTO `#__extensions` (`name`, `type`, `element`, `folder`, `client_id`, `enabled`, `access`, `protected`, `manifest_cache`, `params`, `custom_data`, `system_data`, `checked_out`, `checked_out_time`, `ordering`, `state`)
VALUES
('English (en-GB) Language Pack', 'package', 'pkg_en-GB', '', 0, 1, 1, 1, '{\"name\":\"English (en-GB) Language Pack\",\"type\":\"package\",\"creationDate\":\"December 2016\",\"author\":\"Joomla! Project\",\"copyright\":\"Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved.\",\"authorEmail\":\"[email protected]\",\"authorUrl\":\"www.joomla.org\",\"version\":\"3.6.5.1\",\"description\":\"en-GB language pack\",\"group\":\"\",\"filename\":\"pkg_en-GB\"}', '', '', '', 0, '0000-00-00 00:00:00', 0, 0);
Après avoir ajouté l'extension, j'ai découvert que la seule autre chose à faire était d'aller dans les Extensions: Update Sites et Rebuild the Update Sites. Cela s’occupe du reste, c’est-à-dire ajouter le site de mise à jour et joindre les 2 enregistrements.
Après cela, les langues sont devenues disponibles pour l'installation dans Language Installer dans le backend.
C'est un long coup, en essayant d'aller à:
Extensions >> Gérer >> Sites de mise à jour
Assurez-vous que les sites de mise à jour Joomla principaux sont activés.
Si elles sont déjà activées, alors (et ce n'est pas un correctif mais un test), allez à la ligne 237 de:
administrator\components\com_installer\models\languages.php
et ajouter:
var_dump('test');
juste avant le return false;
Ensuite, essayez de retrouver les langues. Si vous voyez le vidage de test
, faites le moi savoir et je regarderai cela plus loin.