Surcharge des fichiers de langues
Suite à r14012 et à r16012, on devrait pouvoir surcharger les codes modifiés d'un plugin en créant un fichier de lang homonyme dans le squelettes. Il semblerait que cela fonctionne anormalement : Les chaines de langues sont remplacées (via array_merge) lorsqu'un code de langue homonyme est trouvé dans les modules précédemment chargés. Mais inc/traduire charge les modules dans l'ordre du path, soit :
squelettes
plugin B dépendant du plugin A
plugin A
squelettes-dist
prive
ecrire
On peut constater cela en plaçant une surcharge d'un plugin dans squelettes/lang : la surcharge ne fonctionne pas. En la plaçant dans squelettes-dist/lang, la surcharge fonctionne, car la surcharge passe après. Si l'on conserve l'ordre du path pour charger les modules, il faudrait donc que le merge se fasse dans le sens inverse, c'est à dire une chaine déjà trouvée ne doit pas être écrasée.
En inversant le merge de surcharger_langue, on obtient presque le comportement souhaité :
if (is_array($surcharges[$fichier])) { $GLOBALS[$GLOBALS['idx_lang']] = array_merge( + $surcharges[$fichier], + $GLOBALS[$GLOBALS['idx_lang']] );
Mais dans ce cas, local ne fonctionne plus car il passe par surcharger_langue après chaque module. Traduire ne fonctionnerait-il pas mieux ainsi :
- La fusion du tableau écrase les nouvelles valeurs avec celles précédemment trouvées.
- On charge local en premier, une seule fois
- On charge les modules dans l'ordre du path (comme c'est le cas)
Il est probable que j'oublie quelque chose, mais il me semble bien qu'il y ait un soucis avec le fonctionnement actuel.