Troubleshoot a language selector

Identify the surface, format, current locale, current URL, and expected language list before changing settings.

The selector is missing

  • Confirm POM Translate has enabled languages.
  • For a menu, confirm the Language Switcher placeholder remains in the assigned WordPress menu.
  • For a shortcode, confirm the host area executes shortcodes.
  • For floating output, enable it and confirm the theme calls wp_footer().
  • Check whether exclusions, base-language omission, and current-language hiding leave no entry.

One language is absent

Confirm it is enabled under Base setup. Then check whether the current post or term excludes that locale. For a menu item, also review Include base language in the list. For a shortcode, inspect include_base_language and include_current_language.

The dropdown does not open

For shortcode and floating dropdowns, confirm the public language-switcher script is loaded and no JavaScript error stops it. Preserve the generated data-pom-translate-switcher attributes when applying custom code.

For a navigation dropdown, investigate the theme's submenu CSS and JavaScript instead.

The label is empty or malformed

Review the markup for misspelled merge tags and unavailable values. Unknown tags disappear; country, flag, and custom-label values can be empty. Start again with:

{%local_label%}

Do not add anchors or outer list markup inside the label template.

A language points to the wrong page

Compare the current route with the equivalent base path. Check translated post or term slugs, hierarchy, prefix settings, and query parameters. The selector generates destinations from routing data; changing its visible slug tag does not change its href.

A browser fragment such as #pricing is not sent to WordPress in the HTTP request, so a server-rendered selector cannot recover that fragment from the current address. Use an explicit integration when switching languages must retain an in-page anchor.

The floating control overlaps another widget

Test the conflict at the exact viewport and zoom level. Reposition one component with site CSS while preserving the dropdown's top/bottom and left/right placement attributes.

After every correction, retest the base locale, an additional locale, an excluded context, and the longest label.