Le problème que vous rencontrez est très probablement lié à la montée de version de PHP entre Debian 11 et 12. En passant à PHP 8.x (présent sur Debian 12), PHP est devenu beaucoup plus strict sur le typage des variables. Là où PHP 7.x (Debian 11) était plus permissif et tentait de faire des conversions implicites, PHP 8.x signale ces problèmes de type via des erreurs explicites.
C’est pour cela que vous voyez l’erreur :
ltrim(): Argument #1 ($string) must be of type string, array given
Pour corriger le problème, il faut utiliser la fonction de traduction correctement en entourant le texte à traduire avec des accolades doubles :
Cette syntaxe garantira que la fonction reçoit bien une chaîne de caractères à traiter et évitera l’erreur de typage stricte de PHP 8.x.
Cette erreur était probablement déjà présente sur Debian 11 mais passait inaperçue grâce à la plus grande permissivité de PHP 7.x. La montée en version de PHP a simplement rendu le problème visible.
Effectivement, en regardant le code de plus près, je pense que le problème vient du preg_match_all().
C’est étonnant qu’on n’ait pas eu de retour sur cette erreur plus tôt ! D’habitude ce genre de problème est remonté assez rapidement, surtout sur des fonctions aussi utilisées que la traduction.
Est-ce que vous pourriez me partager le contenu du fichier de traduction que vous utilisez quand l’erreur se produit ? Ça nous aiderait à comprendre pourquoi ça ne pose problème qu’avec les autres langues que le français.
Cette manière de traduire les plugin, proposée par @Mips, reprend les principes de traduitjdm et les implémente directement dans le flux de traitement de github. De plus, il utilise « deepl.com » pour les traductions.