Directory / plugin

Websel Multilingual

v0.5.1 · by webseldonusum

Leave WPML without losing your translated URLs. Imports into one post per page with /en/ /fr/ prefixes, hreflang and Yoast support.

About this plugin

Built for leaving WPML. WPML stores every translation as a separate post. Websel Multilingual imports those translations into the original post, keeps the translated URLs your visitors and search engines already know (/en/hotel-amenities/ stays /en/hotel-amenities/), and serves every language from a single source. Elementor pages are matched element by element, even when WPML gave the translated copy different element IDs. The importer has a dry-run mode and writes a JSON report, so you can check the result before switching.

It works just as well on a site that was never multilingual.

Websel Multilingual (Turkish name: Websel Çok Dil – “çok dil” means “many languages”) keeps one post per page and serves every language from it. Visitors get /en/, /fr/, /de/ … versions; you maintain a single source.

Translations live in a string table:

  • Page output translation – text nodes and alt / title / placeholder / aria-label attributes of the rendered page are translated, so page builders (Elementor and others), widgets and shortcodes work without special integrations.
  • gettext translation – theme and plugin strings, per text domain.
  • AI or manual – translate pending strings in bulk with the Claude API, or export / import CSV files and translate them yourself.

Features

  • Language prefixes without rewrite rules (works in subdirectory installs too).
  • Translated URLs per language (/en/hotel-amenities/ instead of /en/otel-olanaklari/); old source-slug URLs under a prefix redirect with 301.
  • Correct <html lang>, hreflang alternates, canonical and Yoast SEO title / description / schema per language; translated URLs in the Yoast sitemap.
  • Language switcher as shortcode ([websmu_language_switcher]), template function (websmu_language_switcher()) or as a menu item with flags.
  • Optional WordPress locale switching per language, so themes and plugins load their own language files.
  • Per-language shortcode attributes (for example a different contact form per language) and per-language post meta.
  • Elementor element cache is kept separately per language.
  • WPML importer (Tools tab, WP-CLI or REST): languages, translated slugs, Elementor and classic content, menus, terms, image alt texts, String Translation, per-language theme settings. Elementor elements are matched by element ID and by structure, unmatched rich-text fields are kept as element-level copies, nothing is overwritten silently and a detailed JSON report is produced.

Free and Pro

The free plugin manages one target language (two languages in total, with your source language) and includes every feature above. Nothing in it is time-limited, and languages you have set up are never switched off by the plugin.

Websel Multilingual Pro, a separate add-on sold on our site, lets you add more target languages and adds automatic updates and priority support. The WPML importer always imports the translations of every language, so they are ready when you add those languages.

WP-CLI

  • wp websmu scan – collect translatable strings from all public URLs.
  • wp websmu translate --lang=en – translate pending strings with the Claude API.
  • wp websmu export --lang=en --file=en.csv / wp websmu import --lang=en --file=en.csv
  • wp websmu status, wp websmu lang add|remove|list
  • wp websmu wpml-import [--dry-run] [--unpublish-translations] [--report=<file>]

External services

This plugin can connect to the Anthropic Claude API (https://api.anthropic.com/v1/messages) to translate texts automatically.

  • When: only when an administrator clicks “Translate with AI” on the Tools tab or runs wp websmu translate. Nothing is sent automatically, on page views or in the background.
  • What is sent: the source-language texts that are waiting for translation (page texts, attribute values, theme/plugin strings collected by the site scan), the target language and the model name, together with your API key.
  • Requirement: you must enter your own Anthropic API key (Settings tab, or the WEBSMU_AI_API_KEY constant). Without a key no request is made.

Anthropic terms: https://www.anthropic.com/legal/commercial-terms — Privacy policy: https://www.anthropic.com/legal/privacy

The site scan uses loopback requests to your own site only.

Credits

Flag icons: flag-icons by Panayiotis Lipiridis, MIT License (see assets/flags/LICENSE-flag-icons.txt).

Plugin tags