web-dev-qa-db-fra.com

Impossible de faire fonctionner translate_user_role ()

J'ai cherché dans les archives wpse pour résoudre mon problème mais je n'arrive pas à faire une chose pareille. J'ai construit ce code:

$args = array('fields' => 'all_with_meta');
$users = get_users($args);
foreach ($users as $user) {
       echo esc_html( translate_user_role( ucfirst ( $user->roles[0] ) ) );
}

J'ai créé une print_r()pour voir ce que je reçois. Tout va bien, je veux dire, je saisis le rôle de l'utilisateur, mais cela ne se traduit pas par lui-même. Dois-je faire plus?

2
JMau

Je pense que votre fonction de nidification est légèrement confuse; appelez ucfirst après en traduisant, comme suit:

esc_html( ucfirst( translate_user_role( $user->roles[0] ) ) );

Mon mauvais, a complètement sauté un battement là. Vous devriez plutôt utiliser:

translate_user_role( $GLOBALS['wp_roles']->role_names[ $user->roles[0] ] );

Il n'est pas fiable de supposer que tous les noms d'affichage de rôle sont simplement ucfirst( $role key ). Si cela ne fonctionne toujours pas, êtes-vous sûr que les fichiers de langue que vous utilisez ont entièrement traduit WordPress?

3
TheDeadMedic

Veuillez noter que translate_user_role ne fonctionne pas dans le front-end pour le moment.

Voici une solution de contournement, vous pouvez la placer dans votre thème:

add_action( 'init', 'load_admin_textdomain_in_front' )
function load_admin_textdomain_in_front() {
    if ( ! is_admin() ) {
        load_textdomain( 'default', WP_LANG_DIR . '/admin-' . get_locale() . '.mo' );
    }
}
0
Jory Hogeveen