web-dev-qa-db-fra.com

Traduire le contenu, pas l'instance, par poste

TL; DR: Je cherche un moyen de traduire uniquement le contenu d'un message spécifique dans une autre langue, mais tout ce qui est dit autour post (comme les champs "meta" et "search" comme cette solution semble faire ).

Version plus longue: J'administre actuellement un site Web au format HTML statique pour une petite entreprise qui se met à jour toutes les quelques semaines à l'aide d'un nouveau message. Certaines de ces publications sont écrites en français (langue par défaut) et en anglais, d'autres également en allemand ou même en espagnol. Actuellement, chaque version de chaque publication est d'abord chargée, tandis que toutes les versions non françaises sont masquées par display:none. Chaque publication comporte à sa droite un certain nombre de drapeaux correspondant aux traductions disponibles. L'utilisateur clique sur l'un de ces indicateurs et, avec un peu de magie jQuery, la propriété display est modifiée en conséquence, remplaçant le contenu de la publication par son équivalent localisé. Facile.

J'essaie maintenant de porter tout cela sur Wordpress, par exemple en confiant l'administration du site Web à quelqu'un d'autre, qui peut potentiellement être totalement illettré en informatique. J'essaie désespérément de trouver une solution élégante, à la fois légère en termes de code et facile à comprendre pour certains éditeurs. Si quelqu'un a une idée dans laquelle je peux creuser, ce serait très apprécié.

P.S .: il est important de noter que nous ne nous soucions pas du référencement, car la nature spécifique de notre activité ne l'exige pas.

3
Malcolm Isaacson

La solution la plus simple serait d’avoir des champs personnalisés sur la page d’édition: un champ de texte pour chaque langue que vous souhaitez utiliser (et peut-être différents champs de titre?) Pour cela, vous pouvez utiliser un plugin comme ACF . Cela fournirait une interface facile pour les éditeurs non techniques.

En construisant votre propre thème, vous pouvez intégrer les champs personnalisés dans votre modèle. Toujours afficher le texte français, vérifier si les champs des autres langues sont vides et les inclure également. Puis basculez avec jQuery comme vous en avez l'habitude.

Si vous utilisez un thème tiers, vous devez créer un thème enfant avec un filtre dans functions.php qui ajoute les champs personnalisés à un appel normal à the_content (et the_title) et inclut les fichiers css et jQuery permettant de basculer l'affichage. Comme ça:

$spanish_content = '<div class="spanish">' . get_field('spanish_content') . '</div>';
apply_filters('the_content',$spanish_content);

(note: l'appel get_field est spécifique au plugin ACF)

1
cjbj