web-dev-qa-db-fra.com

Ignorer la traduction du thème parent sur le thème enfant

J'ai un thème parent qui utilise correctement load_theme_textdomain() pour charger toutes les chaînes traduites dans de nombreuses langues.

Ensuite, j'ai créé un thème enfant qui utilise load_child_theme_textdomain() pour obtenir la même chose pour ses chaînes.

Il existe certaines chaînes traduites pour une langue particulière sur le thème parent que j'aimerais remplacer/remplacer dans le thème enfant.

Je sais que s'ils se trouvaient dans un fichier de modèle, je pourrais remplacer le fichier et simplement changer le domaine de texte pour ces chaînes, mais malheureusement, celles dont je parle sont utilisées à de nombreux endroits et également dans le tableau de bord (donc à l'intérieur de certaines fonctions de filtre/action ).

Ma question est donc la suivante: existe-t-il un moyen de remplacer ces chaînes traduites dans le thème enfant sans avoir à remplacer les fichiers de modèle parent ou les fonctions?

Je ne sais pas, peut-être en ajoutant un parent-theme.mo fichier dans le dossier des langues du thème enfant avec uniquement ces chaînes traduites, ou quelque chose comme ça.

12
d79

Vous pouvez utiliser les fichiers de langue contenus dans votre dossier de thème enfant. Vous devez d’abord connaître le domaine de texte utilisé par le thème parent. Créez ensuite les fichiers .po et .mo avec uniquement votre langue comme nom de fichier (par exemple, de_DE.po/de_DE.mo ou nl_NL.po/nl_NL.mo) et mettez-les dans un dossier du répertoire de votre thème enfant, "langues". par exemple.

Vous pouvez ensuite initialiser le domaine de texte avec load_child_theme_textdomain():

load_child_theme_textdomain( 'the_text_domain', get_stylesheet_directory() . '/languages/' );

Notez que vous pouvez trouver le domaine de texte en recherchant des appels de fonction tels que __() ou _e() dans les fichiers du thème parent PHP. Le deuxième paramètre est le domaine de texte: __( 'Translated text string', 'text_domain' );

4
redelschaap

Une mise à jour 2019 pour Wordpress 5.0.1.

  1. Les fichiers ne doivent PAS contenir le parent ou l'enfant slug. Par exemple, la traduction mexicaine espagnole doit comporter les fichiers nom-thème-enfant/languages ​​/ es_MX.po et /child-theme-name/languages/es_MX.mo
  2. Le thème enfant functions.php devrait avoir le code suivant. Notez que le premier paramètre de la fonction load_child_theme_textdomain () est le slug du thème PARENT, pas celui de l'enfant:
function child_theme_slug_setup() {
    load_child_theme_textdomain( 'parent-theme-slug', get_stylesheet_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'child_theme_slug_setup' );
0
Cesar