WordPress met à jour les fichiers de traduction dans le dossier Langues de deux manières: 1. Mises à jour automatiques à chaque déclenchement. 2. Manuellement lorsque l'utilisateur le demande sur la page "Mises à jour".
Existe-t-il un moyen de désactiver les deux, afin qu'aucune modification ne puisse s'appliquer au dossier Langues?
Vous avez déjà donné la réponse en utilisant auto_update_translation
. Je ne savais pas que cela ne fonctionnait pas après les mises à jour manuelles (et je ne l'avais pas essayé), mais peut-être aussi regarder async_update_translation qui, selon la documentation "Met à jour de manière asynchrone les packs de langue après d'autres mises à jour fait ".
Indépendamment de ce qui précède, je recommande une approche différente dans laquelle les traductions de la communauté sont toujours installées, mais vos propres traductions personnalisées remplacent le moment où elles existent (et seulement quand).
Cela signifie que vous avez l’avantage d’améliorer les traductions que vous n’aimez pas, tout en bénéficiant des nouvelles traductions qui apparaissent avant que vous ne les connaissiez. (c'est-à-dire que les chaînes sources changent après les mises à jour du plugin).
Pour ce faire, vous aurez deux copies de chaque fichier de langue et obligerez WordPress à les charger l'une sur l'autre, la vôtre devenant prioritaire.
(1) imitez la structure de dossiers languages
dans un répertoire parallèle et déplacez vos propres fichiers de traduction personnalisés afin de disposer de chemins comme celui-ci, quelle que soit votre langue:
wp-content/my-translations/plugins/foo-en_GB.mo
(2) Ajoutez le code suivant sous forme de plug-in must-use afin de vous assurer qu'il est prêt avant toute autre tentative visant à amorcer ses traductions.
<?php
/*
Plugin Name: Custom Translations
Description: Merges translations under my-languages on top of those installed.
*/
function my_custom_load_textdomain_hook( $domain = '', $mofile = '' ){
$basedir = trailingslashit(WP_LANG_DIR);
$baselen = strlen($basedir);
// only run this if file being loaded is under WP_LANG_DIR
if( $basedir === substr($mofile,0,$baselen) ){
// Our custom directory is parallel to languages directory
if( $mofile = realpath( $basedir.'../my-languages/'.substr($mofile,$baselen) ) ){
load_textdomain( $domain, $mofile );
}
}
}
add_action( 'load_textdomain', 'my_custom_load_textdomain_hook', 10, 2 );
Notez que vos fichiers personnalisés doivent uniquement contenir les chaînes que vous souhaitez modifier. Cela repose sur la stratégie actuelle de fusion de WordPress. Dans le code ci-dessus, votre fichier se termine en premier, puis est fusionné avec le fichier installé.
J'ai cet extrait qui désactive la mise à jour de la traduction automatique:
if( function_exists('add_filter') ){add_filter( 'auto_update_translation', '__return_false' );}
C'est un problème résolu. Mais si je mets à jour les plugins manuellement, WordPress met à jour les traductions par la suite. Comment réparer cette partie aussi? Des idées?