Wimpel

Description

Wimpel makes a WordPress site multilingual without rebuilding WordPress for it. A translation is not a special construct here. It is an ordinary post or page with its own permalink. Wimpel only remembers which posts belong together and derives everything else from that: the hreflang links for search engines, the language switcher on the front end, and the language column in your post list.

That has a practical reason. Multilingual setups that rely on their own URL rules, a front-end proxy or a separate database structure tend to produce surprises with every theme change, every caching plugin and every migration. Wimpel does not touch your permalinks and registers no rewrite rules. If you uninstall Wimpel, every translation stays in place as normal content.

Wimpel is part of the Hafenstudios fleet. It works on its own and cooperates with the other fleet plugins once they are active.

What Wimpel does

  • Set up languages freely: code, display name, short label or flag, and hreflang code
  • Link translations directly in the meta box on the post, with a search
  • Create a translation draft with one click: Wimpel copies title, content and excerpt into a draft and links it
  • hreflang links in the page source, bidirectional, with self-reference and x-default
  • Language switcher as a block and as the shortcode [wimpel], with its own small stylesheet; compact with the short label only for a header
  • Language column and language filter in the post and page lists, including a “+ EN” link for missing translations
  • Home page per language: if a page has no translation, the switcher leads there instead of nowhere
  • “Source changed since the translation” on every translation, with a list of what changed, so you know where to look
  • You choose which content types all of this applies to
  • Right-to-left languages (Arabic, Hebrew, Persian, Urdu and more) get the right text direction per page, including the theme’s RTL stylesheet
  • Menu items follow the language of the page, in classic menus and in the Navigation block
  • Bulk action and REST route to create translation drafts for many pages at once

Optional: AI translation, and translations that follow the source

Everything above works without any external service and stays free. If you want, Wimpel can also translate for you. This is off by default and needs two things you set up yourself: an access (your own key with Anthropic or an OpenAI-compatible provider) and your explicit opt-in. Until then not a byte leaves your site.

With it switched on, the “wake” keeps translations in step with the source: change a page in your main language, and ten minutes after the last save Wimpel updates its translations. Only the sections that changed are translated; everything else stays, including anything you changed by hand in the translation. Each translation has one of three states: in the wake (follows automatically), pilot on board (changes land as a comparison draft first), or at anchor (never updated). Blocks with the CSS class wimpel-anker are never touched, and a monthly cap in words keeps the cost where you put it. Every automatic update leaves an ordinary WordPress revision.

hreflang that behaves

The hreflang links appear only once a group has at least two published translations. Drafts and private posts stay out, and a single post produces no output at all. If another plugin on your site already handles hreflang, one checkbox in the settings switches the output off.

Privacy

No tracking, no cookie, and without the optional AI translation no request to any other server, in the admin area or on the front end. Wimpel stores its settings and a few post meta values on the post: the language, the translation group, the mark as a language home page, and checksums of the sections of the source so it can tell what changed. No content is copied anywhere.

External services

Wimpel connects to an external service only if you set up an access under Wimpel > Settings > AI translation and switch the AI translation on. Nothing is sent before that, and nothing is sent without your opt-in.

Your own key: the text of the posts you translate (title, content, excerpt, without HTML structure) is sent directly to the provider you configure, either https://api.anthropic.com/ (Anthropic, https://www.anthropic.com/legal/terms, https://www.anthropic.com/legal/privacy) or the endpoint of an OpenAI-compatible provider you enter yourself, under that provider’s terms.

You should sign a data processing agreement with the provider before translating content that contains personal data.

Screenshots

Blocks

This plugin provides 1 block.

  • Language switcher (Wimpel)

Installation

  1. Upload the plugin and activate it. Wimpel comes with German and English preconfigured.
  2. Open the “Wimpel” menu and follow the setup checklist “Ready to set sail”: check the languages, link a first translation, place the language switcher.
  3. On a post, use the meta box “Language and translations”: choose the language, link an existing translation, or create a translation draft with one click.
  4. Add the language switcher with the block “Language switcher (Wimpel)” or the shortcode [wimpel].
  5. Optional: under Wimpel > Settings > AI translation, set up an access and switch on the AI translation and the wake.

FAQ

Does Wimpel send data to external services?

Not unless you set that up. Without an access and without your opt-in, everything runs on your own server and Wimpel makes no request to any other server. With the AI translation switched on, the text of the posts you translate goes to the service you chose; see “External services” above.

Do my translations get a URL like /en/?

Not automatically. Wimpel deliberately registers no rewrite rules and does not change your permalink structure. Each translation has the permalink you give it, for example /en/about-us/ as a normal page hierarchy. Search engines do not require a particular URL structure for multilingual sites; what matters are the hreflang links, and Wimpel sets those.

What happens to my translations when I uninstall Wimpel?

They stay. Translations are ordinary posts and pages and belong to you, not to the plugin. Nothing is deleted on uninstall unless you explicitly switch that on in the settings. Even then Wimpel removes only its own linking data and its settings.

I already use an SEO plugin. Will there be duplicate hreflang links?

Usually not: common SEO plugins do not output hreflang of their own without a multilingual plugin. After setting up, check the source of a translated page once for “rel=alternate”. If a line appears twice, switch the hreflang output off in the Wimpel settings.

Does Wimpel translate my texts automatically?

Only if you switch it on. New translations are always created as drafts and never published by Wimpel. Published translations are changed only by the wake, which you enable yourself, and even then only in the sections whose source changed; anything a person wrote or changed in the translation stays and is flagged for review instead.

What does “in the wake”, “pilot on board” and “at anchor” mean?

They are the three states of a translation. In the wake: the translation follows its source automatically. Pilot on board: Wimpel prepares the update as a comparison draft and leaves the live translation alone until you take it over; the privacy policy page uses this by default. At anchor: the translation is never updated, Wimpel only tells you that the source changed.

Can I protect a single block from being updated?

Yes. Give the block in the translation the additional CSS class wimpel-anker. Wimpel then leaves that block and everything inside it alone, even if the source changed.

Does Wimpel also translate menus, categories and theme texts?

No. Wimpel handles posts, pages and the content types you select. Menus, tags, categories and theme texts stay untouched.

Does the language switcher work without JavaScript?

Yes. The switcher is a plain list of links and needs no JavaScript.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Wimpel” is open source software. The following people have contributed to this plugin.

Contributors

Translate “Wimpel” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.3.1

  • New: a compact language switcher. In the block settings, “Display” offers “Short label and name”, “Short label only” (for example DE EN, fits a header) and “Name only”. The shortcode does the same with [wimpel anzeige=”kuerzel”] or [wimpel anzeige=”name”]. With the short label only, the language name stays in the link for screen readers; a language without a short label shows its code.
  • Fixed: with Leadlotse active next to Wimpel 1.2.0 from the directory, submitting a form could fail, because the trimmed copy of the shared Hafenstudios Core in Wimpel could take over. Wimpel now ships Core 1.4.4: every bundled copy of the shared core registers itself and the newest one is used. If another Hafenstudios plugin brings a complete copy of the same version, that copy is used instead of the trimmed one in Wimpel, so the other plugins keep their images and translations. Classes a trimmed copy lacks are loaded from the other copies. An error during Wimpel’s start, for example caused by an older copy of the shared core in another Hafenstudios plugin, no longer takes the site down; it shows as a notice in the admin.
  • Version 1.3.0 was not released in the directory. Its changes ship with 1.3.1:
  • New: text direction per language. Arabic, Hebrew, Persian, Urdu and other right-to-left languages get dir=”rtl” on the html element, and WordPress switches its text direction for that page, so the theme loads its RTL stylesheet and body carries the rtl class. Detected from the language code, adjustable per language in the settings.
  • New: menu items follow the language of the page. On a translated page, entries that point to a page with a translation in that language take the link and current-item mark of that translation, and the label if it is the page title; a custom label stays. Works for classic menus and the Navigation block; can be switched off in the settings.
  • New: bulk action “Create translation draft: ” in the post lists, for many pages at once.
  • New: REST route wimpel/v1/translation. POST with post and language creates the translation draft (or returns the existing one), GET lists the translation group. For scripts and external translation tools; needs an account with the Wimpel capability. Drafts of child pages are re-parented as soon as the parent’s translation exists, whatever the order of the calls.
  • New: optional AI translation with your own key (Anthropic or an OpenAI-compatible provider). You switch it on yourself; until then nothing leaves your site. See “External services”.
  • New: the wake. Change a page in your main language and Wimpel updates its translations ten minutes after the last save, translating only the sections that changed. Hand-made changes in the translation stay and are flagged for review. Three states per translation (in the wake, pilot on board, at anchor), the CSS class wimpel-anker protects single blocks, a monthly cap in words limits the cost, every update leaves a revision.
  • New: glossary, budget and estimate settings for the AI translation.
  • The settings page now has a tab “AI translation” in every installation.

1.2.0

  • New: Wimpel tells you when a source page has changed after its translation was made. The note “Source changed since the translation” appears in the post list and in the meta box, for every translation, not only for a page in a particular language.
  • New: “What has changed?” lists the new and changed sections of the source in their current wording, so you can update the translation where it matters instead of comparing two pages by eye.
  • New: the button “Translation is up to date” records the current state of the source. Translations created before 1.2.0 or linked by hand show a short note and the same button; nothing is recorded until you click it.
  • Wimpel stores checksums only, one per section, as post meta on the translation. No content is copied and nothing leaves your site.
  • Fixed: a page that is set as the posts page (Settings > Reading) now gets hreflang links, its own lang attribute and a switcher that points to its translation.

1.1.2

  • Fixed: translated pages kept the site language in the lang attribute of the <html> element. A page in a non-default language now carries its own language there, so screen readers pronounce it correctly (WCAG 3.1.1) and automatic hyphenation follows the right rules. Pages in the default language and archives are unchanged.
  • Fixed: a translation draft now keeps the page template of its source.
  • Fixed: a translation draft of a child page is placed under the translation of its parent page, if that translation exists.

1.1.1

  • Fixed: the shared Hafenstudios stylesheet and script were loaded on every admin screen. They now load only on the Wimpel screens, and the colour variables sit on the components instead of the document root, so nothing of the plugin reaches the rest of the WordPress admin.
  • Hardened: the two array fields of the settings form are now sanitised value by value at the point of access, in addition to the existing field-by-field validation on save.

1.1.0

  • First release in the WordPress plugin directory.
  • Source strings are English; translations are handled through translate.wordpress.org.

1.0.1

  • Maintenance release of the edition distributed outside the directory. No change to the features in this package.

1.0.0

  • First version: language management, translation groups as post meta, translation drafts with one click, hreflang output, language switcher as block and shortcode, language column and language filter, home page per language, setup checklist. No rewrite rules.