Sommaire
BuddyPress est le célèbre add-on permettant de transformer votre CMS WordPress en réseau social. Or, tout réseau social qui se respecte doit pouvoir être dispensé en plusieurs langues, sauf dans le cas de petit réseau de travail tourné vers une équipe restreinte par exemple. Si votre cible, c’est le monde entier, voyons ensemble quelle solution je préconise pour que votre site s’affiche en différentes langues.
Le plugin BuddyPress Multilingual couplé à WPML
Le plugin BuddyPress Multilingual fonctionne avec WPML, le plugin de traduction (payant) pour WordPress le plus populaire. BuddyPress Multilingual est donc un add-on qui se connecte à WPML. Il vous faudra donc acheter WPML pour utiliser BP Multilingual. Néanmoins, pas d’hésitations à avoir, WPML est ce qui se fait de mieux sur le marché des outils de traduction pour WordPress.
Etape 1 : traduire les pages génériques de BuddyPress
Une fois les deux plugins installés et activés (BuddyPress Multilingual n’a pas d’options à paramétrer dans le dashboard, il faut juste l’activer), vous n’avez plus qu’à publier les traductions des pages “Register”, “Members” et “Activate”, propres à BuddyPress dans les autres langues souhaitées.
Etape 2 : uploader les fichiers mo
Maintenant que vous avez indiqué à BuddyPress qu’il doit lancer ses pages dans différentes langues, il faut lui permettre de fournir les traductions génériques (par exemple les mentions “Changer d’avatar”, “Réglages”, etc…). Pour cela, rendez-vous sur GlotPress pour télécharger les fichiers de langages de BuddyPress. Cliquez sur la langue que vous voulez traduire pour votre communauté, descendez en bas de page et cliquez sur “Export > all current > .mo”.
Une fois le ou les fichiers .mo téléchargés sur votre ordinateur, uploadez-les sur votre serveur WordPress par FTP dans le dossier wp-content/languages/. Si ce dossier n’existe pas, vous pouvez le créer.
Une fois uploadé, vous pouvez normalement passer d’une langue à l’autre dans vos pages BuddyPress via le sélecteur de langues du plugin WPML. Ainsi, votre profil, la page membres, inscription, etc… s’affichent dans les langues que vous avez renseignées dans les paramètres de WPML.
Etape 3 : traduisez tout le reste
C’est là que ça se gâte, car l’aide de WPML est très obscure à ce sujet, notamment pour les “profile fields”. Après quelques recherches dans les bas-fonds des forums d’entraide de WPML et après moult tests, j’ai fini par trouver le process que je vous fait partager ici.
1) Editer le fichier /buddypress/bp-xprofile/bp-xprofile-template.php
Rechercher la fonction suivante : “function bp_get_the_profile_field_name()”, et remplacez le code qu’elle contient par ceci :
function bp_get_the_profile_field_name() {
global $field;
$f_name = __( $field->name, 'buddypress' );
return apply_filters( 'bp_get_the_profile_field_name', $f_name );
}
N’oubliez pas de le refaire à chaque MAJ de BuddyPress, en attendant que l’équipe de WPML trouve une solution plus propre.
2) Ajouter l’add-on String Translations
Il s’agit d’un autre add-on pour WPML, disponible depuis votre compte wpml directement sur leur site une fois que vous avez effectué l’achat de leur plugin, et qui va vous permettre de traduire à la volée des bouts de textes de votre site.
Une fois le plugin String Translations activé, rendez-vous dans ses paramètres (WPML >String translations, ou “Traduction de chaînes en Français), et cochez “Auto-register strings only when logged in as an administrator”.
Enfin, lancez les pages que vous souhaitez traduire à la volée. Je pense particulièrement aux profile fields personnalisés. Puis revenez à String translations, et décochez “Auto-register strings only when logged in as an administrator”.
Cette étape a servi a ajouter les chaînes de caractères personnalisées que vous souhaitez traduire, sur toutes les pages que vous avez “scannées”.
3) Traduire les chaînes de caractères
Toujours dans la page “String translations”, vous devez désormais avoir des phrases traduisibles. Vous pouvez les voir une à une ou effectuer la rechercher d’un terme précis. Cliquez sur “translations” pour proposer des traductions.
Attention : pour l’instant seules les Field titles sont traduisibles et pas encore les “Field descriptions” ni les valeurs des champs. Espérons que WPML propose une solution rapidement.
La traduction de votre thème WordPress/Buddypress
Outre les termes génériques de WordPress et de BuddyPress, constitués par exemple des phrases “publier un commentaire”, “connexion”, “inscription” ou encore “Profil”, qui sont traduisibles via les fichiers mo de WordPress d’une part, et les fichiers mo de BuddyPress d’autre part, votre thème peut être amené à contenir des expressions et des mots qui lui sont propres. Il vous revient alors de faire en sorte que votre thème soit disponible dans les différentes langues que vous voulez proposer aux visiteurs via WPML. Dans ce cas, nous avons deux hypothèses possibles :
1) Votre thème est déjà traduit en plusieurs langues, et il contient les fichiers mo dont vous avez besoin. Sinon, a minima, il est prédisposé à être traduit facilement en plusieurs langues via le logiciel PoEdit, qui vous permettra de traduire expression par expression les termes prédisposés à être traduits de votre thème. Enregistrez votre fichier au format .PO, puis au format .MO et uploadez le fichier .MO dans le dossier languages de votre thème.
2) Soit il n’a pas été codé pour être traduisible en plusieurs langues, et il va donc falloir soit retravailler le code (conseillé), soit traduire le thème via WPML et son fameux add-on “String translations”. Si vous choisissez de rebosser le code, je vous invite à consulter les très bons tutoriels ici ou ici pour apprendre à le faire.
Conclusion
Il ne s’agit que de pistes, et pas d’un tutoriel à suivre pas-à-pas. Pour ma part, je suis parvenu via WPML à traduire un réseau social décliné à 100% en 3 langues à tous les niveaux, que ce soit pour la page de présentation ou pour les pages de profil, de membres, d’inscription, etc…
Néanmoins, cette méthode a des limites, car dans la soupe interne de BuddyPress, seuls les titres de champs additionnels de profils (xProfile Fields) ont pu être traduits, mais pas les descriptions ni les valeurs personnalisées de ces champs.
Salut !
Je galère un peu sur la traduction des xprofile fields.
J’ai testé le code dont tu parles dans la fonction bp_get_the_profile_field_name(), mais sans résultat dans l’écran de WPML des traductions de chaines 🙁
Saurais-tu me dire comment traduire ces noms de champs ? (je parle pas des valeurs, là je commence à désespérer)
Merci beaucoup, en tout cas article très clair !!
Alain