web-dev-qa-db-fra.com

Comment traduire les éléments de menu?

Existe-t-il un moyen de traduire le menu lorsque je choisis la langue du site? Est-ce que quelqu'un a une solution pour le faire sans utiliser le plugin?

1
Code357

Vous pouvez créer un menu en utilisant une autre langue. Ensuite, vous utilisez un code conditionnel pour changer de menu. ou vous pouvez utiliser l'attribut title du menu.

if($language=='us'):
wp_nav_menu(menu1);
else:
wp_nav_menu(menu2);
endif;

enter image description here

1
Vincent Wong

Je viens d'écrire un simple crochet pour utiliser les fonctions de traduction normales, que je viens d'ajouter dans le fichier functions.php de mon thème.

/** Translate menu items. */
function translate_menu_item_frontend($item_output, $item) {
    if (property_exists($item, 'title')) {
        $parts = explode('|', $item->title);
        $context = count($parts) > 1 ? $parts[0] : null;
        $text = end($parts);

        return preg_replace(
            '/(<.*?>).*(<\/.*?>)/s', '$1' . _x($text, $context) . '$2', $item_output, 1);
    }

    return $item_output;
}
add_filter('walker_nav_menu_start_el', 'translate_menu_item_frontend', 20, 2);
add_filter('megamenu_walker_nav_menu_start_el', 'translate_menu_item_frontend', 20, 2);

Cela signifie que vous pouvez, par exemple, définir une étiquette de navigation d'élément de menu sur "Accueil" et qu'elle sera traduite avec les traductions de base intégrées. Vous pouvez également spécifier un contexte séparé par |. Ainsi, par exemple, 'Contenu du thème | Contact' utiliserait les traductions de base intégrées pour le mot 'Contact'.

Cela peut facilement être adapté pour prendre en charge des domaines personnalisés si vous souhaitez également fournir vos propres traductions.

0
Sam Bull

vous pouvez utiliser le plugin Polylang qui créera un modèle différent pour chaque langue et intégrera un menu différent pour chaque langue.

commencez à lire ici et à Dig/in: https://wordpress.org/plugins/polylang/

0
elicohenator