[B] Easy Translator

Multilingual WordPress — translated titles, hreflang, per-language sitemaps, and SEO audits. Without WPML database bloat.

Manual & Documentation

Requirements

  • WordPress 6.0 or higher
  • PHP 8.1 or higher
  • Pretty permalinks enabled (not ?p=123)
  • Capability: manage_options to access settings (Administrator)

Installation

  1. Go to Plugins → Add New in your WordPress admin.
  2. Click Upload Plugin and select the .zip file.
  3. Click Install Now, then Activate.

Initial Setup

After activation, the plugin automatically:

  • Registers the current language (cookie + ?lang= parameter).
  • Adds meta boxes to posts and pages for multilingual content.
  • Adjusts titles, descriptions, excerpts and categories per language.
  • Integrates menus and sitemaps with the language system.

Adding the Language Selector

Use the shortcode anywhere on your site:

[bdw_seletor_idioma]

Or the legacy shortcode (deprecated but still supported):

The selector displays buttons for each enabled language with flag and name.


Managing Languages

Go to Settings → Idiomas (Seletor) to:

  • Enable or disable languages.
  • Add custom languages with code, label and flag.
  • Upload custom flag images from the media library.

Default languages: Galician (GL), Spanish (ES), English (EN) — active by default.

Pre-defined inactive: French, German, Italian, Japanese, Chinese, Dutch — available but disabled by default.


Translating Post Content

When editing a post or page, use the meta boxes in the sidebar:

  • Títulos por idioma: Custom title for each language.
  • Descrições por idioma: Meta description for each language.
  • Excertos por idioma: Custom excerpt for each language.
  • Palavra-foco: Focus keyword per language for SEO audit.

If a translation is not provided, the original content is used.


Translating Categories

  1. Go to Posts → Categories.
  2. Edit a category.
  3. Fill in the Translations section with name and description for each language.
  4. Save the category.

Category names and descriptions will change based on the selected language.


Translating Menus

The plugin automatically translates menu items using:

  • Translated post/page titles when linked to content.
  • Labels separated by | for custom labels (e.g., Home|Inicio|Inicio for EN|ES|GL).

Menu links automatically receive the ?lang= parameter.


SEO Features

The plugin automatically generates:

  • Hreflang tags: Signals alternate language versions to search engines.
  • Canonical URLs: Respects the current language.
  • Open Graph tags: Language-specific og:title, og:description, og:locale.
  • Twitter Cards: Language-specific title and description.
  • SEO Audit Checklist: On-page SEO analysis per language in the post editor.

Multilingual Sitemaps

The plugin creates custom XML sitemaps per language:

  • /ml-sitemap-gl.xml — Galician sitemap
  • /ml-sitemap-es.xml — Spanish sitemap
  • /ml-sitemap-en.xml — English sitemap
  • /ml-sitemap-index.xml — Sitemap index

Go to Settings → Sitemaps por idioma to verify your sitemaps.


How Language Switching Works

When a visitor clicks a language button:

  1. A cookie (site_lang) is set with the selected language.
  2. A class is added to <body>: lang-gl, lang-es, or lang-en.
  3. The lang attribute on <html> is updated.
  4. Titles, excerpts and category names update instantly (client-side).
  5. Internal URLs receive the ?lang= parameter.

Roles & Permissions

  • Administrators (manage_options): Full access to language settings and sitemaps configuration.
  • Editors/Authors (edit_post): Can fill in multilingual meta boxes on their posts.
  • Visitors: Can switch languages using the selector.

Troubleshooting

Language selector not appearing

Cause: Shortcode not being processed.

Solution: Use a Shortcode block in Gutenberg or a shortcode widget in page builders. Verify the template calls the_content(). Test with a default theme to rule out conflicts.


Language buttons appear but nothing changes

Cause: Theme missing wp_head() or wp_footer(), or JavaScript errors.

Solution: Verify your theme includes <?php wp_head(); ?> before </head> and <?php wp_footer(); ?> before </body>. Check browser console (F12) for JS errors. Temporarily disable optimization plugins that minify scripts.


Translated titles/descriptions not showing

Cause: Language not changing, SEO plugin overriding, or meta not saved.

Solution: Inspect the <body> class to confirm language is changing. Re-edit the post and save again. Check if an SEO plugin (Yoast, Rank Math) is overriding the title — adjust its priority or settings.


Category names not translating

Cause: Translations not entered or theme using hardcoded labels.

Solution: Edit each category and fill in the Translations section. Ensure your theme uses WordPress template functions like the_category() or single_cat_title().


Sitemap URLs return 404

Cause: Rewrite rules not flushed.

Solution: Go to Settings → Permalinks and click ‘Save Changes’ to flush rewrite rules. Use the ‘Flush rewrite’ button on the Sitemaps page if available. Check for conflicts with other sitemap plugins.


Wrong language due to cache/CDN

Cause: Page cache ignoring the language cookie.

Solution: Configure your cache/CDN to vary by the site_lang cookie. The plugin sends Vary: Cookie header, but your CDN must respect it. Disable full page cache for multilingual pages if needed.


Access denied to Sitemaps settings

Cause: User lacks manage_options capability.

Solution: Log in with an Administrator account.


Privacy & Data

This plugin:

  • Sets a cookie (site_lang) to remember the selected language.
  • Does not collect personal data.
  • Does not send data to third parties.
  • Loads flag images from external CDNs (flagcdn.com, Wikimedia) by default — can be replaced with local images in settings.

The cookie is essential for functionality and does not track users.


Uninstallation

To remove the plugin:

  1. Deactivate the plugin.
  2. Delete it from Plugins → Installed Plugins.

Note: Post meta data (translated titles, descriptions, excerpts) remains in the database for potential future use. Language settings are removed on uninstall.


Frequently Asked Questions