Je valide le plugin pour le rendre compatible avec WPCS
. une fonction qui contient gettext
placeholder renvoyant une erreur lorsque j’exécute la commande phpcs
. Le code source et la capture d'écran de l'erreur sont joints pour référence. Peut-être que je manque quelque chose ou le faire de manière incorrecte?
/**
* Add Error.
*
* @package Mypackage
* @since 0.1.0
*
* @param string $code Error Code.
* @param string $message Error Message.
* @return object WP_Error Returns Error Object.
*/
function mypackage_add_error( $code, $message ) {
/* translators: %s: Error Message */
return new WP_Error( $code, sprintf( esc_html__( '%s', 'mypackage' ), $message ) );
}
Il y a plusieurs problèmes avec votre code
Il n'y a pas besoin de traduction ici. Le message aurait dû être traduit avant d'être transmis à cette fonction. À cette fonction, il n'y a pas du tout de contexte pour créer une traduction différente de %s
L'échappement devrait se produire à la sortie. Vous devriez échapper au résultat de la variable sprintf
et de la traduction.
Et gardez à l'esprit que WPCS est un outil pour vous aider, pas la bible. Au moins à son stade actuel, il manque trop de fonctionnalités pour le suivre aveuglément tout le temps. Certaines des erreurs qu'il émet actuellement sont dues à une mauvaise analyse de PHP moderne ou à des fonctionnalités manquantes. Par conséquent, si vous êtes sûr à 100% que, dans votre cas particulier, %s
devrait pouvoir être traduit, allez-y.
Vous essayez de traduire un espace réservé %s
qui n'est pas un contenu traduisible et il sera remplacé par une variable ultérieurement. Il est préférable de transmettre le $message
traduit au lieu d'un $message
à traduire.
Vous devriez écrire la définition de la fonction de cette façon
function mypackage_add_error( $code, $message ) {
return new WP_Error( $code, $message );
}
Et la fonction mypackage_add_error()
devrait être utilisée de cette façon
mypackage_add_error( 'test-error', esc_html__( 'Test error message', 'text-domain' ) );