TL; DR: si vous utilisez des chaînes qui sont dans le thème parent, exactement comment elles sont utilisées dans le thème parent, vous n'avez pas besoin d'avoir un domaine de texte pour votre thème enfant.
Mais si vous utilisez des chaînes qui ne sont pas utilisées dans le thème parent, pour les rendre traduisibles, vous aurez besoin d'un autre domaine de texte avec des .mo
fichiers de traduction ( ) associés .
Flux de travail de traduction
Lorsque WordPress rencontre une chaîne dans une fonction de traduction, cela:
- Vérifie si une traduction pour le domaine de texte requis a été chargée (via
load_plugin_textdomain
ou load_theme_textdomain
ou load_textdomain
), si c'est le cas, passez au point 3.
- Vérifie si le dossier de traductions (par défaut
wp-content/languages
) contient un fichier de domaine de texte correspondant. Fichier correspondant textdomain est "{$domain}-{$locale}.mo"
où $domain
est le domaine de texte de la chaîne à traduire et $locale
est le lieu actuel pour le site Web. Si ce fichier est introuvable, la chaîne d'origine est renvoyée, sinon il est chargé et WP passe au point suivant.
- Lorsque le domaine de texte est chargé, WP recherche si la chaîne requise est contenue dans ce fichier, sinon la chaîne d'origine est retournée, sinon WP passe au point suivant.
- Si la chaîne traduite trouvée a besoin d'une résolution singulière / plurielle (par exemple lors de l'utilisation
_n()
), cela est fait. Sinon, WP passe au point suivant.
- Les crochets de filtre sont appliqués sur la chaîne traduite (voir https://developer.wordpress.org/?s=gettext&post_type%5B%5D=wp-parser-hook ) et enfin le résultat est renvoyé.
Donc?
Lorsque vous utilisez le domaine de texte du thème parent dans la fonction de traduction à partir du thème enfant (en supposant que le thème parent expédie et charge le fichier de domaine de texte, ou qu'il a un fichier de traduction dans le dossier de traductions), WordPress arrivera au point 3. dans la liste ci-dessus, et donc si la chaîne est disponible dans le fichier (car utilisée dans le thème parent) elle sera traduite, sinon pas.
Cela signifie que les chaînes personnalisées dans le thème parent ont besoin de leur propre fichier de traduction.
En théorie, il est possible d'utiliser le domaine de texte parent dans un autre fichier de traduction, car WordPress est capable de charger plusieurs fois le même domaine de texte, en les "fusionnant", mais cela pose problème car un seul fichier peut exister au format "{$domain}-{$locale}.mo"
dans les dossiers de traduction ( voir point 2. dans la liste ci-dessus).
Donc, en conclusion, la seule façon viable de rendre un thème enfant traduisible, s'il contient des chaînes non utilisées dans le thème parent, est d'utiliser son propre domaine de texte et son propre fichier de traduction.
__('background-color', 'parent-text-domain')
vous pouvez utiliser le même dans le thème enfant sans avoir besoin de faire autre chose pour le faire traduire.Si votre thème enfant contient des chaînes différentes de celles du thème parent.
La bonne façon d'utiliser un domaine de texte différent dans un thème enfant est la
load_child_theme_textdomain()
fonction maintenant. Vous pouvez l'utiliser de la même manière que les autres fonctions de chargement du domaine de texte _..._.Il faut se méfier!
la source