WordPress : pourquoi la traduction ne fonctionne-t-elle pas sur le thème ?

Publié par Jean-Michel le

Arrière plan

J’utilise le thème Rookie de Sportpress.

J’ai créé un thème enfant.

Des fichiers de traduction existent, notamment en allemand dans mon cas.

WordPress est réglé sur la langue allemande.

Le problème

La traduction fonctionne bien partout, sauf sur les modèles fournis par les thèmes, comme le contenu de la page de résultats de recherche ou la pagination.

Sont concernés le titre SRP, le titre de la page rien trouvé et le contenu de la page rien trouvé. Ils restent juste dans la langue anglaise par défaut. La pagination est également affectée.

Le formulaire de recherche dans le contenu d’une page introuvable est bien traduit. Je suppose que c’est le modèle par défaut de WordPress.

Code

voici quelques lignes de code affectées du thème parent.

Titre de la recherche

<h1 class="page-title entry-title"><?php printf( __( 'Search Results for: %s', 'rookie' ), '<span>' . get_search_query() . '</span>' ); ?></h1>

Titre Rien trouvé :

<h1 class="page-title"><?php _e( 'Nothing Found', 'rookie' ); ?></h1>

Texte introuvable :

<p><?php _e( 'Sorry, but nothing matched your search terms. Please try again with some different keywords.', 'rookie' ); ?></p>

Pagination:

<?php if ( get_next_posts_link() ) : ?>
            <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Older posts', 'rookie' ) ); ?></div>
            <?php endif; ?>

            <?php if ( get_previous_posts_link() ) : ?>
            <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'rookie' ) ); ?></div>
            <?php endif; ?>

Résultats

J’ai vérifié que l’entrée .mo pour l’allemand existe avec le plugin de traduction Loco.

J’ai remplacé le titre du résultat de la recherche par le titre Search Results for: %sde la catégorie Category: %s, qui est traduit sur une page de catégorie (car le titre de l’archive de catégorie est fourni par WordPress), mais pas non plus sur le SRP !

Quelle pourrait être la raison de ce comportement ?

solution de contournement

le thème parent charge le domaine via
load_theme_textdomain( 'rookie', get_template_directory() . '/languages' );et pointe vers le bon emplacement où tous les fichiers de traduction (.pot, de_DE.po et de_DE.mo) sont existants.

J’ai copié les fichiers .po et .mo pertinents dans le répertoire wp-content/languages/themes/ et tout fonctionne maintenant.

Mais est-ce vraiment la meilleure solution ?

Solution n°1 trouvée

J’ai téléchargé le thème parent Rookie gratuit et je n’ai aucun problème à afficher les traductions de « Résultats de la recherche pour : %s » sur un écran de résultats de recherche réussi.

Cela fonctionne dans le dossier des langues de WordPress wp-content/languages/themes/rookie-de_DE.moainsi que dans le répertoire personnalisé de Loco Translate. Cela fonctionne là-bas si les fichiers sont nommés correctement car le thème parent charge correctement le domaine de texte « rookie » en utilisant « load_theme_textdomain ».

Vos fichiers sont-ils correctement nommés dans le répertoire des langues de WordPress ? Contrairement au fichier de_DE.mo dans le dossier du thème, l’emplacement du système nécessite le préfixe, les fichiers doivent donc être nommés rookie-de_DE.mo

Catégories : Wordpress

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *