- Statut
- Résolue
- Type
- Bug
Aperçu de l’anomalie
Lorsque vous modifiez la locale d’une langue, par exemple, pour l’allemand de de_DE à de_DE_formal, vous remarquerez peut-être que la traduction des chaînes ne s’affiche plus.
Ce problème survient parce que WPML ne parvient plus à trouver de fichiers MO correspondant à la locale de la langue. Dans notre exemple, il rechercherait some-domain-de_DE_formal.mo, mais ce fichier n’existe pas. Au lieu de cela, WPML n’a enregistré que some-domain-de_DE.mo.
Solution de contournement
Pour résoudre ce problème, vous devez faire deux choses :
1. Si vous avez des chaînes traduites via la page WPML -> Traduction de chaînes, accédez à WPML -> Support -> Database & strings maintenance (sur WPML 5.0 et versions ultérieures, cet outil est fourni avec l’extension WPML Troubleshooting, installée depuis WPML → Activate & Update) et cliquez sur le bouton Show custom MO Files Pre-generation dialog box. Dans la boîte de dialogue qui s’affiche, cliquez sur le bouton bleu pour régénérer les fichiers MO personnalisés.
2. Il est fort probable que la première étape ne répare pas toutes les chaînes manquantes. Cela s’explique par le fait que certaines valeurs peuvent provenir de fichiers MO natifs manquants, fournis par d’autres extensions ou thèmes. Pour résoudre ce problème, vous devez trouver les fichiers MO manquants et en créer des copies en utilisant de nouveaux noms avec le nouveau code de langue.
Dans notre exemple, si une chaîne est normalement chargée à partir du fichier woocommerce-de_DE.mo, nous devons trouver ce fichier et en créer une copie en utilisant un nom qui correspond à la locale actuelle : woocommerce-de_DE_formal.mo. Vous devez copier tous les fichiers manquants qui sont utilisés par votre site.
Les emplacements typiques où vous pouvez trouver ces fichiers MO sont les suivants :
- ../wp-content/languages/
- ../wp-content/plugins/plugin-in-question/
- ../wp-content/plugins/plugin-in-question/languages/
Enfin, vous pouvez également trouver des chemins spécifiques dans la table wp_icl_mo_files_domains de votre base de données.