Parfois, cela peut être assez difficile de traduire des chaînes dynamiques sous WordPress. Et ce pour deux raisons principales :
- ils proviennent d'une extension ou d'un thème qui n'utilise pas gettext pour leurs cordes ;
- ils sont créés par l'utilisateur et enregistrés dans les options du plugin ou du thème, dans les métadonnées utilisateur, ou dans une table personnalisée que le plugin de traduction ne connaît pas.
Des thèmes comme Hestia utilisez l'interface du Personnalisateur WordPress pour créer rapidement une belle page d'accueil contenant un diaporama, diverses colonnes d'information, une liste de Produits WooCommerce si c'est nécessaire ainsi qu'un formulaire de contact.
Beaucoup de contenu de cette page d'accueil n'est pas stocké dans wp_posts ou wp_postmeta. Alors que certains exprimeront des inquiétudes quant aux raisons pour lesquelles rompre avec la convention article/page est une mauvaise idée, J'aime personnellement la fluidité de l'expérience lors de la configuration de cette première page.
Cette flexibilité est formidable lorsque vous voulez faire les choses à votre manière, mais c'est aussi la principale raison la traduction d'un site WordPress Le 100% peut s'avérer un peu plus difficile à réaliser, surtout si vous n'êtes pas très à l'aise avec la technique.
Solutions actuelles

Chaque plugin de traduction WordPress a son propre flux de travail lors de la traduction de chaînes dynamiques.
- Les chaînes gettext sont traduites par extension/thème ou directement depuis https://translate.wordpress.org/;
- les chaînes générées par l'utilisateur provenant du plugin/thème doivent être marquées pour la traduction en utilisant l'API de traduction du plugin.
Ce que cette solution a de bon, c'est qu'elle fonctionne.
Le problème est que la traduction se fait hors contexte et nécessite le soutien des développeurs d'extensions et de thèmes pour fonctionner avec une variété de modules de traduction.
Le pire dans tout ça, c'est que si les développeurs de plugins et de thèmes ne prennent pas en charge le plugin de traduction, cela ne fonctionnera tout simplement pas du tout.
Traduire des chaînes dynamiques avec TranslatePress
Nous savions que la traduction de chaînes dynamiques serait un défi lorsque nous avons commencé le développement pour TranslatePress. Ce que nous considérions comme compliqué s'est avéré beaucoup plus compliqué une fois que nous avons réellement commencé à travailler sur le problème.
Ce que nous considerions compliqué s'est avéré beaucoup plus compliqué.
Pour rendre possible la traduction à la fois des champs gettext et des chaînes dynamiques ajoutées par les utilisateurs, nous avons mis en œuvre une interaction plus simple :
- si une extension ou un thème a déjà été traduit, nous conserverons la traduction, mais vous pourrez toujours la modifier si vous n'êtes pas d'accord ;
- les chaînes qui sont stockées dans la table des options et affichées sur le front-end peuvent être facilement traduites, ce qui évite d'avoir à chercher dans une table de traduction de chaînes complexe ;
- Vous utilisez la même interface pour traduire toutes les chaînes de votre site.

Un regard sur les particularités et les fonctionnalités
Puisque les champs ajoutés par gettext diffèrent des chaînes normales, il existe des différences petites mais perceptibles entre eux.
%1$s
Nous allons commencer par %1$s. Ceux-ci représentent des variables dynamiques qui dépendent de l'utilisateur actuel, du nombre d'achats, des paramètres du plugin, etc.
C'est la bonne manière de traduire ces chaînes de caractères et, en prime, si le plugin est déjà traduit dans une langue spécifique, nous pré-remplirons également ces champs avec la traduction correcte.
Chaîne d'origine
L'implémentation de gettext ne vous permet pas de définir dans quelle langue se trouvent les chaînes. Donc, si vous êtes un développeur de plugins français, vous êtes libre de développer votre plugin en français. C'est pourquoi vous verrez la “ chaîne d'origine ” et toutes les langues en dessous. Même l'anglais. Les chaînes que nous pouvons détecter sont mises en surbrillance à l'aide du bouton de modification vert.
Un effet secondaire sympa est que vous pouvez même modifier la chaîne par défaut en “traduisant” en anglais par exemple.
Un effet secondaire regrettable est que c'est différent de la langue originale → Flux de travail de langue traduit que nous avons disponible pour les chaînes normales. Vous devez donc faire un peu plus attention à la langue dans laquelle vous traduisez en attendant de trouver une meilleure façon de représenter cela dans l'interface.
Cordes cachées
Les chaînes Gettext qui sont ajoutées avec Javascript, ainsi que d'autres chaînes qui ne sont pas visibles sur le front-end du site (comme les e-mails WooCommerce ou les slugs d'URL par exemple) sont accessibles depuis le Chaîne de traduction interface. De cette façon, vous pouvez traduire du contenu qui n'est pas accessible depuis l'éditeur visuel.
Et enfin, il existe des flux de travail spécifiques (disons qu'un formulaire n'est affiché que pour les utilisateurs non connectés, de sorte qu'en tant qu'administrateur, vous ne le voyez pas) qui n'exposeront pas ces chaînes, vous ne pourrez donc pas les traduire. En utilisant le Naviguer en tant que Rôle add-on, vous pouvez parcourir le site Web depuis l'éditeur de traduction en tant que vous-même ou tout autre rôle (connecté) ou en tant qu'utilisateur non connecté. De cette façon, vous pourrez traduire des chaînes qui s'affichent dynamiquement en fonction du statut connecté/non connecté.
Si vous souhaitez en savoir plus, voici une courte vidéo expliquant comment traduire tout type de contenu dynamique ou variable avec TranslatePress :
TranslatePress facilite la traduction de toutes les chaînes dynamiques
Tu peux Télécharger TranslatePress gratuitement sur WordPress.org. Il a été conçu pour vous faciliter grandement la gestion de la traduction des chaînes dynamiques et rendre votre site multilingue.
Téléchargez-le, jouez avec et dites-le-nous ce dont vous avez besoin pour rendre votre expérience de traduction d'un site WordPress encore meilleure.
Si vous en êtes satisfait, vous pourriez envisager mise à niveau vers la version premium pour un nombre illimité de langues, fonctionnalités SEO avancées, et plus encore.
TranslatePress Multilingue
Un grand Merci à tous nos bêta-testeurs et Ionuț Neagu de CodeinWP pour leurs premiers commentaires.
Avez-vous encore des questions sur la façon de traduire des chaînes dynamiques ? Faites-le-nous savoir dans la section des commentaires ci-dessous !
Si vous avez trouvé ce message utile, consultez notre Chaîne YouTube, où nous téléchargeons constamment des tutoriels vidéo courts et faciles à suivre. Vous pouvez également nous suivre sur Facebook et Twitter pour être le premier à savoir chaque fois que nous publions.
Traduire des chaînes dynamiques dans WordPress – une nouvelle façon de traduire des chaînes dynamiques dans WordPress.