I'm developing a website using the WPML plugin. And I would like to know which is the better option, or even the correct way to change classes or IDs between the languages.

Sample code:

<ul id="<?php _e('menu-topo'); ?>">

<ul id="<?php if ($lang = 'en') { echo "menu-topo-en"; } else { echo "menu-topo"; } ?>

I'm not sure that the _e function is supposed to be used this way so if someone could clarify this for me it would help me a lot, thanks.

1 Answer 1


_e() will translate the text passed as a argument to the language your site is currently set up to use (if the translation exists).

Anyway, don't do that. Use it for text visible on the website, not for IDs/classes etc. To create context based css rules, simply add the WPML language ID as a body class:

add_filter('body_class', 'wpml_body_class');
function wpml_body_class($classes){
  return array_push($classes, ICL_LANGUAGE_CODE);

then style the elements you need to using something like:

.en .menu-top{

It's faster, and you keep your code easy to maintain.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.