Traduction label de champs personnalisés (anglais/francais)

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

J’ai un soucis dans la traduction de label pour des champs personnalisés de type user (créé via Administration » Configuration » Personnes » Paramètres de compte).

En effet, sur la page d'inscription de mon site, j'ai rajouté 2 champs :
- Un textarea avec un label et une description (pour que l'utilisateur rajoute quelques mot sur lui)
- Un booléen de type checkbox avec un label contenant un lien (pour l'acceptation des conditions générales du site).

J'ai mis l'anglais en langue par défault car j'ai lu que ça aidé pour les traduction.
J’ai aussi installé le mondule i18n.

J'ai tenté de traduire les label de ces 2 champs via la traduction de l’interface :
Administration » Configuration » Régionalisation et langue » Traduire l'interface (onglet traduire).
Cependant celà n'a pas marché, les label et les description des champs personnalisés reste en anglais.

En cherchant sur le net, j'ai trouvé une seconde solution qui consiste à exporter la traduction française (un fichier fr.po) :
Administration » Configuration » Régionalisation et langue » Traduire l'interface (onglet exporter)
Puis de modifier les champs personnalisés qui sont sous la forme :

: field:field_champperso:user:label (label) ou #: field:field_champperso:user:description (description)

msgctxt "field_champperso:user:label" (label) ou msgctxt "field_champperso:user:description" (description)
en renseignant :
- msgid pour le texte original en anglais
- et msgstr pour la traduction française
Après avoir renseigné cela pour les label de mes 2 champs personnalisés ainsi que la description j'ai importé de nouveau le fichier de traduction fr.po
Administration » Configuration » Régionalisation et langue » Traduire l'interface (onglet importer)

Lorsque je retourne sur ma page d'inscription, la traduction française s'opère pour le textarea : le label est traduit ainsi que la traduction

Cependant concernant la checkbox rien ne se passe. Le label reste désespérément en anglais.
J'ai testé en enlevant le lien contenu dans le label et le problème reste.

Peut-être qualqu'un à t'il une solution?

Forum : 
Version de Drupal : 

Bon j'ai finalement réussi à contourner le problème pour la checkbox.

Ce champ correspondant aux Conditions Générales du site j'ai cherché un module qui pouvait peut-être m'apporter la solution.
Je suis tombé sur l'excellent module Term of Use qui permet d’ajouter une case à cocher de type « [x] I agree with @link» et de lier @link à la node contenant le texte des Conditions Générales.

Ce module a résolu en partie mon problème puisque la seul le lien été traduit étant donné que la node avais une version française et une version anglaise. J’ai tenté de traduire le début du texte de la checkbox en recherchant les chaînes(Administration » Configuration » Régionalisation et langue » Traduire l'interface – Onglet Traduire) mais elles n’apparaissent. J’ai également essayé avec le fichier .po mais aucun résultat non plus.

J’ai alors opté pour une solution plus radicale : entrer en dur le texte dans le fichier terms_of_use.module

J’ai donc remplacé la ligne

53 : $checkbox_label = filter_xss_admin(variable_get('terms_of_use_checkbox_label', t('I agree with these terms')));

Par

53 : $checkbox_label = filter_xss_admin(t('I agree with the @link'));

Puis j’ai fait une recherche de chaîne, j’ai fait une traduction en français et vidé les caches et la miracle ça marche !!!

Voilà, j’ai un peu galéré à trouvé la solution donc si ça peu aider quelqu’un….